DEF MS042 HED IAL TEST * ** IAL TEST * * * 1. GENERATE A LIST ADDRESS * 2. CLEAR THE DESTINATION AREA * 3. EXECUTE MICROPROGRAM * 4. CHECK RESULTS * * TST02 NOP JSB MSGC,I ANNOUNCE TEST DEF MS060 LDA M500 STA IALCT * IAL00 JSB RNDGN GET LENGTH AND .+37B SZA,RSS JMP *-3 STA IALSZ SAVE LENGTH STA IALCK * * GET SOURCE LIST ADDRESS * JSB RNDGN SZA ELA,CLE,ERA STA IALLS SAVE IT STA IALRS * * CLEAR DESTINATION AREA * LDA .-32 STA IALCC CLA STA IALI * IAL10 CLA LDB IALBP => TO DESTINATION AREA ADB IALI INDEX STA B,I ISZ IALI ISZ IALCC DONE? JMP IAL10 NO * * * EXECUTE MICROPROGRAM * JSB RNDGN SET (B) TO A RANDOM STA B VALUE JSB RANEO PUT RANDOM VALUES INTO E/O * LDA IALLS ADDR OF UNIQUE STORAGE AREA JSB SAVRG RECORD REGISTER VALUES ABS 105000B+IAL =RAM IAL DEF IALBF IALSZ DEC 0 LENGTH OF LIST SET ABOVE * * CHECK RESULTS * JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST AND .+7 B,E AND O SHOULD BE UNCHANGED SZA,RSS ALL REGISTERS RESTORED? JMP *+4 YES JSB ERMS,I DEF MS063 JMP TST02,I LDA IALCK # OF WORDS MOVED CMA,INA STA IALCC CLA STA IALI LDB IALRS * IAL20 LDA IALBP => DESTINATION BUFFER ADA IALI INDEX LDA A,I GET WORD CPA B SHOULD BE EQUAL JMP *+4 JSB ERMS,I BAD INDIRECT ADDRESS DEF MS061 LIST GENERATED JMP TST02,I INB ISZ IALI BUMP ENDEX ISZ IALCC DONE? JMP IAL20 NO, CONTINUE COMPARE * LDA IALBP THE NEXT WORD ADA IALI IN THE DESTINATION LDA A,I LIST SHOULD BE ZERO SZA,RSS JMP *+4 JSB ERMS,I INDIRECT ADDRESS LONGER DEF MS062 THAN REQUESTED JMP TST02,I * * * * * ISZ IALCT DONE? JMP IAL00 NO, CONTINUE * JMP TST02,I * * * IALCT BSS 1 IALCC BSS 1 IALI BSS 1 IALCK BSS 1 * IALBP DEF IALBF IALBF BSS 32 DESTINATION AREA * IALLS BSS 1 IALRS BSS 1 HED INS, READF, SAVE AND RESTR TESTS * ** INS, READF, SAVE AND RESTR TESTS * * * 1. SET STACK POINTER AND CHECK STACK POINTER * 2. SAVE REGISTERS AND CHECK STACK POINTER * 3. SAVE REGISTERS AND CHECK STACK POINTER * 4. RESTORE REGISTERS AND CHECK STACK POINTER * 5. RESTORE REGISTERS AND CHECK STACK POINTER * * TST03 NOP JSB MSGC,I ANNOUNCE TEST DEF MS110 LDA INSP IFN OTA 5 SET STACK POINTER XIF IFZ JSB RANEO PUT RANDOM 5ALUES INTO E/O JSB SAVRG RECORD REGISTER VALUES ABS 105000B+INS INITIALIZE STACK POINTER JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST SZA,RSS ALL REGISTERS RESTORED JMP *+4 YES JSB ERMS,I DEF MS115 JMP TST03,I XIF CLA ABS 105000B+READF READ STACK POINTER CPA INSP SHOULD BE EQUAL JMP *+4 JSB ERMS,I INS/READF ERROR DEF MS111 JMP TST03,I ABORT TESTS * * SAVE REGISTERS * CLA CLEAR CLB ALL CLO REGISTERS CLE JSB SAVRG RECORD REGISTER VALUES ABS 105000B+SAVE SAVE REGISTERS JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST SZA,RSS ALL REGISTERS RESTORED? JMP *+4 YES JSB ERMS,I DEF MS117 JMP TST03,I * * * CHECK STACK POINTER (F) * JSB RNDGN SET (B) TO A RANDOM STA B VALUE JSB RANEO PUT RANDOM VALUES INTO E/O CLA JSB SAVRG RECORD REGISTER VALUES ABS 105000B+READF READ F STA REDFP SAVE STACK POINTER JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST AND .+7 B, E AND O SHOULD BE UNCHANGED SZA,RSS ALL REGISTERS RESTORED? JMP *+4 YES JSB ERMS,I DEF MS116 JMP TST03,I LDA REDFP RETRIEVE STACK POINTER ADA .-3 CPA INSP JMP *+4 JSB ERMS,I STACK POINTER BAD DEF MS113 AFTER A SAVE JMP TST03,I * * SAVE REGISTERS * CLA,INA SET (A) TO 1 CCB SET (B) TO -1 STO SET (O) CLE CLEAR (E) JSB SAVRG RECORD REGISTER VALUES ABS 105000B+SAVE SAVE REGISTERS JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST SZA,RSS ALL REGISTERS RESTORED? JMP *+4 YES JSB ERMS,I DEF MS117 JMP TST03,I * * CHECK STACK POINTER (F) * CLA ABS 105000B+READF READ F ADA .-6 CPA INSP JMP *+4 JSB ERMS,I STACK POINTER BAD DEF MS113 AFTER A SAVE JMP TST03,I * * * TEST RESTORE * CLA CLB CLO CLE ABS 105000B+RESTR RESTORE REGISTERS CPA .+1 (A) SHOULD BE 1 RSS JMP RES10 SAVE OR RESTORE ERROR CPB .-1 (B) SHOULD BE -1 RSS JMP RES10 SAVE OR RESTORE ERROR SOC (O) SHOULD BE SET SEZ (E) SHOULD HAVE BEEN CLEARED JMP RES10 SAVE OR RESTORE ERROR * * CHECK STACK POINTER (F) * CLA ABS 105000B+READF READ F ADA .-3 CPA INSP RSS JMP RES20 STACK POINTER BAD AFTER RESTORE * * RESTORE REGISTERS * CCA CLB,INB STO CCE ABS 105000B+RESTR RESTORE REGISTERS SZA (A) SHOULD BE ZERO JMP RES10 SAVE OR RESTORE ERROR SZB (B) SHOULD BE ZERO JMP RES10 SAVE OR RESTORE ERROR SEZ (E) SHOULD HAVE BEEN CLEARED JMP RES10 SAVE OR RESTORE ERROR SOC (O) SHOULD HAVE BEEN CLEARED JMP RES10 SAVE OR RESTORE ERROR * * CHECK STACK POINTER (F) * CLA ABS 105000B+READF READ F CPA INSP RSS JMP RES20 STACK POINTER BAD AFTER RESTORE * JMP TST03,I * * RES10 JSB ERMS,I SAVE OR RESTORE DEF MS112 ERROR JMP TST03,I RES20 JSB ERMS,I STACK POINTER BAD AFTER RESTORE DEF MS114 JMP TST03,I * INSP DEF *+1 BSS 10 STACK REDFP BSS 1 * HED LAI AND SAI TESTS ORG 4000B * * ** LAI AND SAI TESTS * * 1. CLEAR TWO BUFFERS (ONE FOR PROG AND ONE FOR MICROPROG) * 2. GET A NUMBER * 3. GET AN INDEX * 4. DO SAI WITH PROGRAM AND MICROPROGRAM * 5. COMPARE BUFFER AFTER STORES * * 1. GET AN INDEX * 2. DO LAI WITH PROGRAM AND MICROPROGRAM * 3. COMPARE RESULTS * 4. COMPARE BUFFERS AS FINAL CHECK * * TST04 NOP JSB MSGC,I ANNOUNCE TEST DEF MS120 LDA LSBF => TO BUFFERS STA LSIP LDB N64 CLA LSIT1 STA LSIP,I CLEAR THE 32 ISZ LSIP WORD BUFFERS ISZ B JMP LSIT1 * * * TEST SAI BY STORING INTO THE BUFFERS RANDOM * NUMBERS WITH RANDOM INDICES * LDA M500 STA LSICT * LSIT5 JSB RNDGN GET A RANDOM NUMBER AND .+37B CONVERT IT TO ADA .-16 AN INDEX STA LAISI SAVE IT * * CONFIGURE THE MICROINSTRUCTION * ADA SAIUI GET THE UNCONFIGURED INSTR STA SAIMI PUT INTO PROGRAM * * STORE VIA PROGRAM * JSB RNDGN GET A RANDOM NUM TO STORE STA SAICH LDB LSBFP => TO ITS BUFFER JSB SAIS STORE * * STORE VIA MICROPROGRAM * JSB RANEO PUT RANDOM VALUES INTO E/O LDA SAICH LDB LSBFM => TO ITS BUFFER JSB SAVRG RECORD REGISTER VALUES SAIMI ABS 101000B+SAI THIS INSTR CONFIGD ABOVE JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST SZA,RSS ALL REGISTERS RESTORED? JMP *+4 YES JSB ERMS,I DEF MS125 JMP TST04,I * * ISZ LSICT DONE? JMP LSIT5 NO, DO MORE STORES * * * COMPARE BUFFERS AFTER STORES * LDA .-32 32 WORDS STA LSICT PER BUFFER CLA STA LSIP INDEX LST10 LDA LSBF => TO PROGRAM BUFFER ADA LSIP INDEX INTO IT LDA A,I GET AN ELEMENT LDB LSBB => TO MICROPROG BUFFER ADB LSIP INDEX CPA B,I SHOULD BE EQUAL JMP *+4 OK JSB ERMS,I SAI ERROR DEF MS121 JMP TST04,I ISZ LSIP BUMP INDEX ISZ LSICT DONE WITH COMPARE? JMP LST10 NO * * SAI TESTING NOW COMPLETE * * * * START LAI TESTS * LDA M500 STA LSICT * LST20 JSB RNDGN GET A RANDOM NUMBETR AND .+37B CONVERT IT TO ADA .-16 AN INDEX STA LAISI SAVE IT * * CONFIGURE THE LAI MICROPROGRAM INSTRUCTION * ADA LAIUI GET THE UNCONFIGD LAI INSTR STA LAIMI PUT INTO PROGRAM * * * LOAD VIA PROGRAM * LDB LSBFP JSB LAIS STA LSAIR SAVE WORD RETRIEVED * * LOAD VIA MICROPROGRAM * CLA LDB LSBFM => TO BUFFER JSB RANEO PUT RANDOM VALUES INTO E/O JSB SAVRG RECORD REGISTER VALUES LAIMI ABS 105000B+LAI THIS INSTR CONFIGD ABOVE * * COMPARE RESULTS OF LOADS * CPA LSAIR COMPARE JMP *+4 OK JSB ERMS,I LAI ERROR DEF MS122 JMP TST04,I * JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST AND .+7 B, E AND O SHOULD BE UNCHANGED SZA,RSS ALL REGISTERS RESTORED? JMP *+4 YES JSB ERMS,I DEF MS124 JMP TST04,I ISZ LSICT DONE WITH LOADS? JMP LST20 NO * * * COMPARE BUFFERS AS FINAL CHECK * LDA .-32 32 WORDS STA LSICT PER BUFFER CLA STA LSIP LST30 LDA LSBF PROGRAM BUFFER ADA LSIP INDEX LDA A,I GET AN ELEMENT LDB LSBB MICROPROG BUF ADB LSIP INDEX CPA B,I SHOULD BE THE SAME JMP *+4 OK JSB ERMS,I LAI ALTERS DATA DEF MS123 READ JMP TST04,I ISZ LSIP BUMP INDEX ISZ LSICT DONE? JMP LST30 NO * JMP TST04,I * * * LSICT BSS 1 LSIP BSS 1 LSAIR BSS 1 SAICH BSS 1 LAIUI ABS 105000B+LAI =RAM LAI IFZ SAIUI ABS 101000B+SAI XIF IFN SAIUI ABS 105000B+100B XIF N64 DEC -64 * LSBFP DEF LSBFA+16 LSBFM DEF LSBFB+16 LSBF DEF LSBFA LSBB DEF LSBFB LSBFA BSS 32 BUFFER USED BY PROGRAM FOR TESTS LSBFB BSS 32 BUFFER USED BY MICROPROG FOR TEST