      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 
                                                                                                      