HED BYTE MOVE TEST IFN ** BYTE MOVE TEST * * * 1. BUILD SOURCE BUFFER (2 COPIES) * 2. GET A RANDOM LENGTH * 3. MOVE VIA MICROPROGRAM * 4. CHECK RESULTS * 5. CHECK IF SOURCE BUFFER HAS BEEN ALTERED * * * BMV00 LDA .-16 STA BMVCT STRING CLA ZERO STA BMVI INDEX BMV10 JSB RNDGN GET A RANDOM NUMBER LDB BMVBS => SOURCE BUFFER ADB BMVI INDEX STA B,I LDB BMVBR => REFERENCE STRING ADB BMVI INDEX STA B,I ISZ BMVI BUMP INDEX ISZ BMVCT DONE? JMP BMV10 NO * LDA M500 STA BMVCT * BMV15 LDA .-16 CLEAR STA BMVC1 DESTINATION CLA AREA STA BMVI BMV20 LDB BMVBD ADB BMVI STA B,I ISZ BMVI BUMP INDEX ISZ BMVC1 DONE? JMP BMV20 NO * JSB RNDGN AND .+37B ADA .-1 STA BMVSL STA BMVSR * CLA INITIALIZE INTERRUPT STA INTFG FLAG LDA TBGSC SZA,RSS TBG? JMP BMVNI NONE LDA BMVSR INTERRUPT ONLY ADA .-10 IF BUF LENGTH IS SSA GREATER THAN 9 JMP BMVNI LDA BMVII GET JSB TO TBGIC STA BMVIN PUT INTO PROGRAM JMP *+3 BMVNI CLA DONT INTERRUPT STA BMVIN THIS TIME * LDA BMVBS CLE,ELA LDB BMVCT SLB INA STA BMVSA SAVE SOURCE ADDR LDB BMVBD => TO DESTINATION ADDR CLE,ELB CONVERT TO BYTE ADDR JSB RANEO PUT RANDOM VALUES INTO E/O SEZ INB STB BMVDA SAVE DESTINATION ADDR LDA BMVSA JSB SAVRG RECORD REGISTER CONTENTS * * MOVE BYTES VIA MICROPROGRAM * BMVIN NOP MAY CONTAIN JSB TBGIC BMVAD ABS 105000B+BMVE DEF BMVSL => TO COUNT OCT 0 * * CHECK RESULTS * CLF 0 JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST AND .+3 E AND O SHOULD BE UNCHANGED SZA,RSS ALL REGISTERS RESTORED? JMP *+4 YES JSB ERMS,I DEF MS243 JMP TST08,I * LDA BMVIN TESTING SZA,RSS INTERRUPTIBILITY? JMP BMV33 NO LDA INTFG CPA .+1 INTERRUPTED? JMP *+4 YES JSB ERMS,I NO, ERROR DEF MS245 JMP TST08,I * BMV33 LDB BMVSR GET # OF BYTES MOVED SSB NEGATIVE? JMP *+3 YES SZB ZERO? JMP BMV35 NO LDA BMVBD,I GET 1ST WORD OF DESTINATION BUF SZA,RSS ZERO? JMP *+4 YES JSB ERMS,I NO, ERROR DEF MS242 JMP TST08,I JMP BMV50 * BMV35 CMB,INB NEGATE #OF BYTES MOVED STB BMVC1 CLA STA BMVI BMV40 LDB BMVSA => SOURCE ADDR USED IN MOVE ADB BMVI INDEX JSB GBYTE GET BYTE IN (A) STA BMVRT SAVE IT LDB BMVDA ADB BMVI JSB GBYTE CPA BMVRT JMP *+4 JSB ERMS,I DEF MS241 JMP TST08,I ISZ BMVI BUMP INDEX ISZ BMVC1 DONE? JMP BMV40 NO * LDB BMVDA ADB BMVI JSB GBYTE SZA,RSS BETTER BE ZERO JMP *+4 OK JSB ERMS,I MORE BYTES MOVED THAN REQUESTED DEF MS242 JMP TST08,I * BMV50 ISZ BMVCT DONE WITH MOVES? JMP BMV15 NO * * CHECK IF THE SOURCE BUFFER HAS BEEN ALTERED * LDA .-32 STA BMVCT CLA STA BMVI BMV60 LDA BMVBS => SOURCE BUFFER ADA BMVI INDEX LDA A,I LDB BMVBR => REFERENCE BUFFER ADB BMVI INDEX CPA B,I SAME? JMP *+4 YES JSB ERMS,I NO, ERROR DEF MS244 JMP TST08,I ISZ BMVC1 BUMP INDEX ISZ BMVCT DONE? JMP BMV60 NO * JMP TST08,I DONE, EXIT * * * BMVII JSB TBGIC BMVCT BSS 1 BMVC1 BSS 1 BMVI BSS 1 BMVSA BSS 1 BMVDA BSS 1 BMVSR BSS 1 BMVRT BSS 1 BMVSL BSS 1 BMVBR DEF *+1 REFERENCE BUFFER BSS 16 BMVBS DEF *+1 SOURCE BUFFER BSS 16 BMVBD DEF *+1 DESTINATION BUFFER BSS 16 * * * XIF HED WORD MOVE TEST IFN ORG 10000B ** WORD MOVE TEST * * * 1. BUILD A SOURCE LIST * 2. CLEAR DESTINATION AREA * 3. MOVE * 4. CHECK RESULTS * 5. CHECK IF LIST HAS BEEN ALTERED * * TST09 NOP JSB MSGC,I ANNOUNCE TEST DEF MS230 * LDA .-32 STA WMVCT CLA CLEAR STA WMVI INDEX WMV00 JSB RNDGN GET A RANDOM NUMBER LDB WMBFS => SOURCE BUFFER ADB WMVI INDEX STA B,I SAVE LDB WMBFR ANOTHER ADB WMVI COPY STA B,I ISZ WMVI BUMP INDEX ISZ WMVCT DONE? JMP WMV00 NO * LDA M500 STA WMVCT WMV05 LDA .-32 STA WMVC1 CLA STA WMVI WMV10 LDB WMBFD DESTINATION ADDRESS ADB WMVI INDEX STA B,I CLEAR ISZ WMVI BUMP INDEX ISZ WMVC1 DONE? JMP WMV10 NO * JSB RNDGN GET # OF WORDS AND .+37B TO MOVE STA WMVNM STA WMVCK * CLA INITIALIZE INTERRUPT STA INTFG FLAG LDA TBGSC SZA,RSS TBG? JMP WMVNI NONE LDA WMVCK INTERRUPT ONLY IF ADA .-16 BUF LENGTH IS SSA GREATER THAN 15 JMP WMVNI LDA WMVII GET JSB TO TBGIC STA WMVIN STORE IN PROGRAM JMP *+3 WMVNI CLA DON'T INTERRUPT STA WMVIN THIS TIME * * MOVE WORD VIA MICRO PROGRAM * LDA WMBFS SOURCE ADDRESS LDB WMBFD DESTINATION ADDRESS JSB RANEO PUT RANDOM VALUES INTO E/O JSB SAVRG RECORD REGISTER VALUES WMVIN NOP MAY CONTAIN JSB TBGIN MVEAD ABS 105000B+MOVE DEF WMVNM => TO COUNT OCT 0 * * CHECK RESULTS * CLF 0 JSB REGCK CHECK IF REGS HAVE CHANGED LDA REGST AND .+3 E OR O SHOULD BE UNCHANGED SZA,RSS ALL REGISTERS RESTORED? JMP *+4 YES JSB ERMS,I DEF MS233 JMP TST09,I * LDA WMVIN TESTING SZA,RSS INTERRUPTIBILITY? JMP WMV15 NO LDA INTFG YES CPA .+1 INTERRUPTED? JMP *+4 YES JSB ERMS,I NO, ERROR DEF MS234 JMP TST09,I * WMV15 LDA WMVCK CMA,INA NEGATE # OF WORDS STA WMVC1 MOVED SZA ZERO? JMP WMV20 NO LDA WMBFD,I YES SZA,RSS BETTER BE ZERO JMP *+4 JSB ERMS,I DEF MS231 JMP TST09,I JMP WVM40 * WMV20 CLA STA WMVI WMV30 LDA WMBFD DESTINATION ADDRESS ADA WMVI INDEX LDA A,I LDB WMBFR ADB WMVI CPA B,I SHOULD BE EQUAL JMP *+4 JSB ERMS,I DEF MS232 JMP TST09,I ISZ WMVI BUMP INDEX ISZ WMVC1 DONE? JMP WMV30 NO * LDA WMBFD THE NEXT ADA WMVI WORD SHOULD LDA A,I BE ZERO SZA,RSS IS IT? JMP *+4 YES JSB ERMS,I DEF MS231 JMP TST09,I * WVM40 ISZ WMVCT DONE? JMP WMV05 NO * * * AS A FINAL TEST CHECK IF SOURCE STRING * HAVE BEEN ALTERED * LDA .-32 STA WMVCT CLA STA WMVI WMV50 LDA WMBFR REFERENCE STRING ADA WMVI INDEX LDA A,I LDB WMBFS SOURCE STRING ADB WMVI INDEX CPA B,I COMPARE JMP *+4 JSB ERMS,I DEF MS236 JMP TST09,I ISZ WMVI ISZ WMVCT JMP WMV50 * JMP TST09,I * * WMVII JSB TBGIC WMVNM BSS 1 WMBFD DEF *+1 BSS 32 WMBFS DEF *+1 BSS 32 WMBFR DEF *+1 BSS 32 * WMVCT BSS 1 WMVC1 BSS 1 WMVI BSS 1 WMVCK BSS 1 XIF HED MESSAGES SUP MS030 ASC 7,H030 CRC TEST/ MS031 ASC 8,E031 CRC ERROR/ MS032 ASC 19,E032 REGISTER(S) NOT RESTORED IN CRC/ MS040 ASC 15,H040 ENQ, DEQ AND PENQ TESTS/ MS041 ASC 18,E041 EMPTY QUEUE RETURN TAKEN ON AN OCT 6412 ASC 8,NON-EMPTY QUEUE/ MS042 ASC 18,E042 EMPTY QUEUE RETURN NOT TAKEN ON OCT 6412 ASC 8,AN EMPTY QUEUE/ MS043 ASC 19,E043 QHEAD NOT ZERO IN AN EMPTY QUEUE/ MS044 ASC 19,E044 QTAIL DOES NOT POINT TO ITSELF IN OCT 6412 ASC 8,AN EMPTY QUEUE/ MS045 ASC 10,E045 ENQ-PENQ ERROR/ MS046 ASC 9,E046 DEQUE ERROR/ MS047 ASC 19,E047 REGISTER(S) NOT RESTORED IN ENQ/ MS051 ASC 17,E051 A,E OR O NOT RESTORED IN DEQ/ MS060 ASC 7,H060 IAL TEST/ MS061 ASC 19,E061 BAD INDIRECT ADDRESS LIST GENERAT ASC 2,ED/ MS062 ASC 19,E062 INDIRECT ADDRESS LIST LONGER THAN OCT 6412 ASC 5,REQUESTED/ MS063 ASC 18,E063 B, E OR O NOT RESTORED IN IAL/ IFN MS110 ASC 17,H110 READF, SAVE AND RESTR TESTS/ XIF IFZ MS110 ASC 19,H110 INS,READF, SAVE AND RESTR TESTS/ XIF MS111 ASC 11,E111 INS-READF ERROR/ MS112 ASC 11,E112 SAVE-RESTR ERROR/ MS113 ASC 17,E113 STACK POINTER BAD AFTER SAVE/ MS114 ASC 19,E114 STACK POINTER BAD AFTER RESTORE/ MS115 ASC 19,E115 REGISTER(S) NOT RESTORED IN INS/ MS116 ASC 19,E116 B, E OR O NOT RESTORED IN READF/ MS117 ASC 19,E117 REGISTER(S) NOT RESTORED IN SAVE/ MS120 ASC 12,H120 LAI AND SAI TESTS/ MS121 ASC 8,E121 SAI ERROR/ MS122 ASC 8,E122 LAI ERROR/ MS123 ASC 13,E123 LAI ALTERS DATA READ/ MS124 ASC 18,E124 B, E OR O NOT RESTORED IN LAI/ MS125 ASC 19,E125 REGISTER(S) NOT RESTORED IN SAI/ MS130 ASC 8,H130 PFREX TEST/ MS131 ASC 13,E131 PFREX TRANSFER ERROR/ MS132 ASC 15,E132 ENTRY POINT NOT CLEARED/ MS133 ASC 19,E133 A, B OR E NOT RESTORED IN PFREX/ MS140 ASC 8,H140 PFREI TEST/ MS141 ASC 13,E141 PFREI TRANSFER ERROR/ MS142 ASC 12,E142 I-O NOT PERFORMED/ MS143 ASC 14,E143 SOFTWARE FLAG NOT SET/ MS144 ASC 15,E144 ENTRY POINT NOT CLEARED/ MS145 ASC 19,E145 A, B OR E NOT RESTORED IN PFREI/ MS150 ASC 8,H150 PFRIO TEST/ MS151 ASC 14,E151 SOFTWARE FLAG NOT SET/ MS152 ASC 12,E152 I-O NOT PERFORMED/ MS153 ASC 19,E153 A, B OR E NOT RESTORED IN PFRIO/ IFN MS160 ASC 14,H160 STORE-LOAD BYTE, TRSLT OCT 6412 ASC 10,AND BYTE MOVE TEST/ XIF IFZ MS160 ASC 8,H160 TRSLT TEST/ XIF MS161 ASC 12,E161 TRANSLATION ERROR/ MS162 ASC 16,E162 TRANSLATION TABLE ALTERED/ MS163 ASC 15,E163 REGISTER(S) NOT RESTORED/ MS165 ASC 15,E165 TRSLT NOT INTERRUPTIBLE/ MS211 ASC 18,E211 B NOT BUMPED AFTER STORE BYTE/ MS212 ASC 19,E212 REGISTER(S) NOT RESTORED IN STORE OCT 6412 ASC 3,BYTE/ MS213 ASC 11,E213 STORE BYTE ERROR/ MS221 ASC 17,E221 B NOT BUMPED AFTER LOAD BYTE/ MS222 ASC 19,E222 E OR O NOT RESTORED IN LOAD BYTE/ MS223 ASC 11,E223 LOAD BYTE ERROR/ MS224 ASC 16,E224 LOAD BYTE ALTERS DATA READ/ MS230 ASC 10,H230 WORD MOVE TEST/ MS231 ASC 19,E231 MORE WORDS MOVED THAN REQUESTED/ MS232 ASC 11,E232 WORD MOVE ERROR/ MS233 ASC 19,E233 E OR O NOT RESTORED IN WORD MOVE/ MS234 ASC 17,E234 WORD MOVE NOT INTERRUPTIBLE/ MS236 ASC 18,E236 SOURCE STRING ALTERED IN MOVE/ MS241 ASC 11,E241 MOVE BYTE ERROR/ MS242 ASC 19,E242 MORE BYTES MOVED THAN REQUESTED/ MS243 ASC 19,E243 E OR O NOT RESTORED IN MOVE BYTE/ MS244 ASC 18,E244 MOVE BYTE ALTERS SOURCE BUFFER/ MS245 ASC 17,E245 BYTE MOVE NOT INTERRUPTIBLE/ * * FWAA EQU * * * * * * END