SUBTTL DIAGNOSTIC SECTION EXIT: DROPDV ;CLOSE LOGICAL OUTPUT FILE EXIT PGMNAM: ASCIZ/ PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (13) [DAKAM] / ;INITIALIZE SUBROUTINES START: PGMINT MOVE [ASCIZ/AM/] MOVEM TLET ;INITIALIZE TEST LETTER STARTA: JRST G00 ;GO PERFORM DIAGNOSTIC ; GENERAL DESCRIPTION ;PART IA -BTYE LOGIC TESTS ;PART IB -GENERAL BYTE TEST ;PART II -GENERAL BLOCK TRANSFER TEST ;PART III -GENERAL JFFO TEST SUBTTL PART IA - BYTE MANIPULATION ;PART IA - BYTE LOGIC TESTS ;INST-IBP ;TEST ABILITY TO FCE PSE AND DECODE ;PFIELD=14 ;SFIELD=6 ;BYTEWORD=0,-1 ;DESTAC=0 ;AN ERROR WILL OCCUR IF AC DIFFERS FROM 0 ;FOLLOWING IBP G00: AC=5 SAVEAC (1,1) G100: MOVSI AC+1,140600 ;SETUP PNTR WORD MOVEI ,-1 ;SETUP BYTE WORD SETZ AC, ;SETUP DEST AC IBP ,&17 ;INC PNTR WORD SKIPE AC&17 ;TEST AC DIFFERS FROM 0 ER3 AC,101 ;FCE PSE FAILED JUMPL AC+2,G100 ;LOOP ON ERROR SWITCH ;INST-IBP ;TEST ABILITY TO INCREMENT BYTE PNTR ;WITHOUT AFFECTING BYTE WORD ;PFIELD=14 ;SFIELD=6 ;BYTE ADDRESS=AC0 ;AN ERROR WILL OCCUR IF C(AC0) DIFFERS ;FROM ORIGINAL FOLLOWING IBP AC=14 SAVEAC (1,1) G200: SETO AC-2, ;SETUP FOR COMPARISON MOVSI AC+1,140600 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD (AC0) IBP ,&17 ;INC BYTE PNTR CAME ,&17 ;TEST BYTE WORD ER12 ,201 ;BYTE WORD FAILED JUMPL AC+2,G200 ;LOOP ON ERROR SWITCH ;INST-IBP ;PFIELD=22 ;SFIELD=6 ;AN ERROR WILL OCCUR IF POINTER IS NOT INCREMENTED AC=13 SAVEAC (1,1) G300: MOVSI AC-2,060600 ;SETUP FOR COMPARISON MOVSI AC+1,140600 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT PNTR CAME AC+1,&17 ;TEST PNTR INC ER5 AC+1,301 ;POINTER FAILED JUMPL AC+2,G300 ;LOOP ON ERROR SWITCH ;INST - IBP ;PFIELD=16 ;SFIELD=6 AC=12 SAVEAC (1,1) G400: MOVSI AC-2,100600 ;SETUP FOR COMPARISON MOVSI AC+1,160600 ;SETUP PNTR IBP ,&17 ;INCREMENT PNTR CAME AC+1,&17 ;TEST PFIELD ER5 AC+1,401 ;POINTER FAILED JUMPL AC+2,G400 ;LOOP ON ERROR SWITCH ;INST-IBP ;TEST ABILITY TO TRANSFER INCREMENTED ;PFIELD ;TEST JAM-ZERO'S ;PFIELD=77 ;SFIELD=1,2,4,10,20,40 ;TEST JAM-ONE'S ;PFIELD=6,14,30,60,40 ;SFIELD=3,6,14,30,20 AC=10 SAVEAC (1,1) SN=600 ZZ=40 YY=4000 G600: REPEAT ^D6,< SN=SN+1 ZZ=ZZ+ZZ YY=YY+YY MOVSI AC-2,770000+ZZ-YY ;SETUP FOR COMPARISON MOVSI AC+1,770000+ZZ ;SETUP PNTR WORD IBP ,&17 ;INCREMENT BYTE PNTR CAME AC+1,&17 ;TEST PFIELD ER5 AC+1,SN ;BIT UNDER TEST FAILED JUMPL AC+2,.-5 ;LOOP ON ERROR SWITCH > AC=11 SAVEAC (1,1) ;TEST AR1(1) G700: MOVSI AC-2,202000 ;SETUP FOR COMPARISON MOVSI AC+1,402000 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT PNTR CAME AC+1,&17 ;TEST PFIELD ER5 AC+1,701 ;POINTER FAILED TO INCREMENT CORRECTLY JUMPL AC+2,G700 ;LOOP ON ERROR SWITCH ;TEST AR2(1) G1000: MOVSI AC-2,303000 ;SETUP FOR COMPARISON MOVSI AC+1,603000 ;SETUP PNTR IBP ,&17 ;INCREMENT PNTR CAME AC+1,&17 ;TEST PFIELD ER5 AC+1,1001 ;POINTER FAILED TO INCREMENT CORRECTLY JUMPL AC+2,G1000 ;LOOP ON ERROR SWITCH G1100: MOVSI AC-2,141400 ;SETUP FOR COMPARISON MOVSI AC+1,301400 ;SETUP PNTR IBP ,&17 ;INCREMENT PNTR CAME AC+1,&17 ;TEST PFIELD ER5 AC+1,1101 ;POINTER FAILED TO INCREMENT CORRECTLY JUMPL AC+2,G1100 ;LOOP ON ERROR SWITCH ;TEST AR4(1) G1200: MOVSI AC-2,060600 ;SETUP FOR COMPARISON MOVSI AC+1,140600 ;SETUP PNTR IBP ,&17 ;INCREMENT PNTR CAME AC+1,&17 ;TEST PFIELD ER5 AC+1,1201 ;POINTER FAILED TO INCREMENT CORRECTLY JUMPL AC+2,G1200 ;LOOP ON ERROR SWITCH ;TEST AR5(1) G1300: MOVSI AC-2,030300 ;SETUP FOR COMPARISON MOVSI AC+1,060300 ;SETUP PNTR IBP ,&17 ;INCREMENT PNTR CAME AC+1,&17 ;TEST P FIELD ER5 AC+1,1301 ;POINTER FAILED TO INCREMENT CORRECTLY JUMPL AC+2,G1300 ;LOOP ON ERROR SWITCH ;INST-IBP ;PFIELD=5 ;SFIELD=10 AC=5 SAVEAC (1,1) G1400: MOVSI AC-2,341000 ;SETUP FOR COMPARISON MOVSI AC+1,051000 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT PNPR TRZ AC+1,1 ;CREAR ADDRESS FIELD OF POINTER CAME AC+1,&17 ;TEST P FIELD ER5 AC+1,1401 ;POINTER FAILED JUMPL AC+2,G1400 ;LOOP ON ERROR SWITCH PAGE ;INST - IBP ;TEST ABILITY TO TRANSFER PFIELD ;PRELIMINARY - TEST FOR PRESENCE ; OF PULSE ;PFIELD=16 ;SFIELD=6 AC=5 SAVEAC (1,1) G1500: MOVSI AC-2,100600 ;SETUP FOR COMPARISON MOVSI AC+1,160600 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT BYTE PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST PFIELD ER5 AC+1,1501 ;POINTER FAILED JUMPL AC+2,G1500 ;LOOP ON ERROR SWITCH ;INST-IBP ;TEST ABILITY TO TRANSFER PFIELD ;TEST ABILITY TO SET INDIVIDUAL ;SC BITS 3-8 ;PFIELD=1,2,4,10,20,40 ;SFIELD=1,2,4,10,20,40 AC=14 SAVEAC (1,1) ;TEST SC BIT 8 SET G1600: MOVSI AC-2,000100 ;SETUP FOR COMPARISON MOVSI AC+1,010100 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT BYTE PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST BIT 8 ER5 AC+1,1601 ;POINTER FAILED JUMPL AC+2,G1600 ;LOOP ON ERROR SWITCH ;TEST SC BIT 7 SET G1700: MOVSI AC-2,000200 ;SETUP FOR COMPARISON MOVSI AC+1,020200 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT BYTE PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST BIT 7 ER5 AC+1,1701 ;POINTER FAILED JUMPL AC+2,G1700 ;LOOP ON ERROR SWITCH ;TEST SC BIT 6 SET G2000: MOVSI AC-2,000400 ;SETUP FOR COMPARISON MOVSI AC+1,040400 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT BYTE PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST BIT 6 ER5 AC+1,2001 ;POINTER FAILED JUMPL AC+2,G2000 ;LOOP ON ERROR SWITCH ;TEST SC BIT 5 SET G2100: MOVSI AC-2,001000 ;SETUP FOR COMPARISON MOVSI AC+1,101000 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT BYTE PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST BIT 5 ER5 AC+1,2101 ;POINTER FAILED JUMPL AC+2,G2100 ;LOOP ON ERROR SWITCH ;TEST SC BIT 4 SET G2200: MOVSI AC-2,002000 ;SETUP FOR COMPARISON MOVSI AC+1,202000 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT BYTE PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST BIT 4 ER5 AC+1,2201 ;POINTER FAILED JUMPL AC+2,G2200 ;LOOP ON ERROR SWITCH ;TEST SC BIT 3 SET G2300: MOVSI AC-2,004000 ;SETUP FOR COMPARISON MOVSI AC+1,404000 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT BYTE PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST BIT 3 ER5 AC+1,2301 ;POINTER FAILED JUMPL AC+2,G2300 ;LOOP ON ERROR SWITCH ;INST-IBP ;TEST ABILITY TO SET SC BITS 3,6 ;PFIELD=6 ;SFIELD=10 ;FAILURE OF BIT 3 TO SET RESULTS IN A ;PFIELD=74 ;FAILURE OF BIT 6 TO SET RESULTS IN ;A PFEILD=30 ;SC BIT2 IS NOT TESTED-FAILURE TO SET ;BIT 2 RESULTS IN LOOPING AC=13 SAVEAC (1,1) G2400: MOVSI AC-2,341000 ;SETUP FOR COMPARISON MOVSI AC+1,061000 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST SC3 (1) ER5 AC+1,2401 ;POINTER FAILED JUMPL AC+2,G2400 ;LOOP ON ERROR SWITCH ;INST-IBP ;TEST ABILITY TO CLEAR INDIVIDUAL ;SC BITS ;PFIELD=20,10,2,1 ;SFIELD=21,11,3,2 ;FAILURE TO CLEAR SC BITS 4,5,7 ;OR 8 RESULTS IN A PFIELD=43 ;FAILURE TO CLEAR SC BITS 3 OR 6 ;WILL NOT BE APPARENT AC=11 SAVEAC (1,1) ;TEST SC4 CLEARING G2600: MOVSI AC-2,232100 ;SETUP FOR COMPARISON MOVSI AC+1,202100 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST PFIELD=43 ER5 AC+1,2601 ;POINTER FAILED JUMPL AC+2,G2600 ;LOOP ON ERROR SWITCH ;TEST SC5 CLEARING G2700: MOVSI AC-2,331100 ;SETUP FOR COMPARISON MOVSI AC+1,101100 ;SETUP PNTR WORD IBP ,&17 ;INCREMENT PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST PFIELD=45 ER5 AC+1,2701 ;POINTER FAILED JUMPL AC+2,G2700 ;LOOP ON ERROR SWITCH ;TEST SC 7 CLEARING G3000: MOVSI AC-2,410300 ;SETUP FOR COMPARISON MOVSI AC+1,020300 ;SETUP PNTR IBP ,&17 ;INCREMENT PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST PFIELD=43 ER5 AC+1,3001 ;POINTER FAILED JUMPL AC+2,G3000 ;LOOP ON ERROR SWITCH ;TEST SC8 CLEARING G3100: MOVSI AC-2,420200 ;SETUP FOR COMPARISON MOVSI AC+1,010200 ;SETUP PNTR IBP ,&17 ;INCREMENT PNTR TRZ AC+1,1 ;CLEAR BIT 35 CAME AC+1,&17 ;TEST PFIELD=43 ER5 AC+1,3101 ;POINTER FAILED JUMPL AC+2,G3100 ;LOOP ON ERROR SWITCH ;INST-IBP ;TEST ABILITY TO INCREMENT ADDRESS ;FIELD OF PNTR WORD ;PFIELD=6 ;SFIELD=10 ;LOSS OF THE SFIELD AND AN ADDRESS=1 AC=12 SAVEAC (1,1) G3200: MOVSI AC-2,341000 ;SETUP AC-2 AOJ AC-2,.+1 ;FOR COMPARISON MOVSI AC+1,061000 ;SETUP PNTR WORD IBP ,&17 ;INC PNTR WORD CAME AC+1,&17 ;TEST FOR ERROR PNTR ER5 AC+1,3201 ;POINTER FAILED JUMPL AC+2,G3200 ;LOOP ON ERROR SWITCH ;INST-IBP ;TEST ABILITY TO INCREMENT ;ADDRESS FIELD OF PNTR WORD ;PFIELD=6 ;SFIELD=10 AC=11 SAVEAC (1,1) G3300: HRLI AC-2,341000 ;SETUP AC-2 FOR HRRI AC-2,&17 ;COMPARISON HRLI AC+1,061000 ;SETUP BYTE HRRI AC+1,AC&17 ;PNTR WORD IBP ,&17 ;INCREMENT PNTR CAME AC+1,&17 ;TEST ADDRESS ER5 AC+1,3301 ;POINTER FAILED JUMPL AC+2,G3300 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST ABILITY TO FCE (2ND PART) ;FAILURE TO FCE RESULTS IN LOSS ;OF DATA WORD ;PFIELD=0 ;SFIELD=6 ;BYTE WORD=0,777777 ;DEST AC=0 AC=14 SAVEAC (1,1) G3400: HRLI AC+1,000600 ;SETUP BYTE HRRI AC+1,5 ;PNTR WORD MOVEI 5,-1 ;SETUP BYTE WORD SETZ AC, ;CLEAR DEST AC LDB AC,&17 ;LOAD BYTE CAIE AC,77 ;TEST DEST AC=0,,77 ER3 AC,3401 ;AC FAILED JUMPL AC+2,G3400 ;LOOP ON ERROR SWITCH ;INST-LDB ;P FIELD =14 ;S FIELD =6 ;BYTE WORD =-1 AC=11 SAVEAC (1,1) G3500: HRRZI AC-2,77 ;SETUP FOR COMPARISON MOVSI AC+1,140600 ;SETUP PNTR SETO ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE=0,,77 ER3 AC,3501 ;AC FAILED JUMPL AC+2,G3500 ;LOOP ON ERROR SWITCH ;INST-LDB ;PFIELD=14 ;SFIELD=6 ;BYTE WORD = 777777 AC=6 SAVEAC (1,1) G3600: MOVSI AC+1,140600 ;SETUP PNTR WORD MOVEI ,-1 ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE CAIE AC,77 ;TEST DEST AC ER3 AC,3601 ;AC FAILED JUMPL AC+2,G3600 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST ABILITY TO TRANSFER 2'S COMP ;SFIELD ;TEST ABILITY TO SET INDIVIDUAL ;BITS OF SC ;PFIELD=0 ;SFIELD=40,20,10,4,2,1 ;BYTE WORD=-1 AC=5 SAVEAC (1,1) ;TEST SC 1,2,3 SET G3700: HRLOI AC-2,37777 ;SETUP FOR COMPARISON MOVSI AC+1,4000 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE=37777,,777777 ER3 AC,3701 ;AC FAILED JUMPL AC+2,G3700 ;LOOP ON ERROR SWITCH ;TEST SC4 SET G4000: HRRZI AC-2,177777 ;SETUP FOR COMPARISON MOVSI AC+1,2000 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE=0,,177777 ER3 AC,4001 ;AC FAILED JUMPL AC+2,G4000 ;LOOP ON ERROR SWITCH ;TEST SC5 SET G4100: MOVEI AC-2,377 ;SETUP FOR COMPARISON MOVSI AC+1,1000 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE = 0,,377 ER3 AC,4101 ;AC FAILED JUMPL AC+2,G4100 ;LOOP ON ERROR SWITCH ;TEST SC6 SET G4200: MOVEI AC-2,17 ;SETUP FOR COMPARISON MOVSI AC+1,400 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE=0,,17 ER3 AC,4201 ;AC FAILED JUMPL AC+2,G4200 ;LOOP ON ERROR SWITCH ;TEST SC 7 SET G4300: MOVEI AC-2,3 ;SETUP FOR COMPARISON MOVSI AC+1,200 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE=0,,3 ER3 AC,4301 ;AC FAILED JUMPL AC+2,G4300 ;LOOP ON ERROR SWITCH ;TEST SC 8 SET G4400: MOVEI AC-2,1 ;SETUP FOR COMPARISON MOVSI AC+1,100 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE=0,,1 ER3 AC,4401 ;AC FAILED JUMPL AC+2,G4400 ;LOOP ON ERROR SWITCH ;INST-LDB ;PFIELD=6 ;SFIELD=14 ;BYTE WORD=000000007700 AC=14 SAVEAC (1,1) G4600: MOVEI AC-2,77 ;SETUP FOR COMPARISON MOVSI AC+1,061400 ;SETUP PNTR WORD MOVEI ,7700 ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE =77 ER3 AC,4601 ;AC FAILED JUMPL AC+2,G4600 ;LOOP ON ERROR SWITCH ;INST-LDB ;PFIELD=6 ;SFIELD=6 ;BYTEWORD=-1 AC=13 SAVEAC (1,1) G4700: MOVEI AC-2,77 ;SETUP FOR COMPARISON MOVSI AC+1,060600 ;SETUP PNTR SETO ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE CAME AC,&17 ;TEST BYTE=0,,77 ER3 AC,4701 ;AC FAILED JUMPL AC+2,G4700 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST IR 134-7 ;PFIELD=14 ;SFIELD=6 ;BYTE WORD=-1 ;AN ERROR WILL OCCUR IF PC IS INCREMENTED ;TWICE DURING EXECUTION OF LDB AC=10 SAVEAC (1,1) G5000: MOVSI AC+1,140600 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE JRST ,.+2 ;PC+1 INH ASSERTED ER3 AC,5001 ;AC FAILED JUMPL AC+2,G5000 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST ABILITY TO CLEAR BYF6 ;PFIELD=14 ;SFIELD=6 ;BYTE WORD=-1 ;AN ERROR WILL OCCUR IF BYF6(1) WHEN STORED ;BY JSP AC=7 SAVEAC (1,1) G5100: MOVSI AC+1,140600 ;SETUP PNTR WORD SETO ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE JSP AC,.+1 ;STORE FLAGS TLNE AC,020000 ;TEST BIT 4 ER3 AC,5101 ;AC FAILED JUMPL AC+2,G5100 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST ABILITY TO DEFER (INDIRECT) BYTE ;PNTR ADDRESS ;FAILURE TO INDIRECTLY ADDRESS BYTE ;PNTR RESULTS IN AN ERROR BYTE ;PFIELD=0 ;SFIELD=6 ;ERROR BYTE=14 ;CORRECT BYTE=44 ;AN ERROR WILL OCCUR IF DEST AC=14 ;FOLLOWING LOAD BYTE INDIRECTLY ADDRESSED AC=6 SAVEAC (1,1) G5200: MOVSI AC+1,600 ;SETUP PNTR WORD HRLI ,600 ;SETUP INDIRECT ADDRESS HRRI ,14 ;PNTR WORD (AC0) MOVEI AC+6,44 ;SETUP CORR BYTE WORD LDB AC,@&17 ;LOAD BYTE INDIRECTLY CAIE AC,44 ;TEST FOR CORR BYTE ER3 AC,5201 ;INDIRECT ADDRESSING FAILED JUMPL AC+2,G5200 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST IR RT CLR AT6 ;FURTHER TEST OF IR 134-7 ;TEST ABILITY TO CLEAR IR BITS 13-17 FOLLOWING ;DEFERRING OR INDEXING OF BYTE PNTR ADDR ;PFIELD=6 ;SFIELD=14 ;CORR BYTE WORD=222222 ;DEST AC=4 ;AN ERROR WILL OCCUR IF DEST AC ;EQUALS 5555 FOLLOWING LOAD BYTE AC=7 SAVEAC (1,1) G5300: MOVSI AC+5,061400 ;SETUP INDEXED PNTR WORD MOVEI AC,4 ;SETUP INDEX AC MOVEI ,222222 ;SETUP CORR BYTE WORD MOVEI AC-3,555555 ;SETUP CORR BYTE WORD LDB AC,&17(AC) ;LOAD BYTE INDEXED CAIE AC,2222 ;TEST FOR CORR BYTE ER3 AC,5301 ;AC FAILED JUMPL AC+2,G5300 ;LOOP ON ERROR SWITCH ;INST-LDB ;FURTHER TEST OF IR 134-7 ;TEST ABILITY TO INDEX BYTE WORD ADDRESS ;P FIELD=0 ;S FIELD=6 ;FAILURE RESULTS IN IR14-17=0, ;NO INDEX, ERROR BYTE=55 AC=10 SAVEAC (1,1) G5400: HRLI AC+1,000607 ;SETUP BYTE HRRI AC+1,5 ;PNTR WORD MOVEI 7,10 ;SETUP INDEX AC MOVEI 5,55 ;SETUP NON INDEX BYTE WORD MOVEI 15,77 ;SETUP INDEXED BYTE WORD LDB AC,&17 ;LOAD BYTE CAIE AC,77 ;TEST BYTE=0,,77 ER3 AC,5401 ;AC FAILED JUMPL AC+2,G5400 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST ABILITY TO INDEX BYTE WORD ADDRESS ;P FIELD=0 ;S FIELD=6 ;FAILURE RESULTS IN A BYTE WORD ;ADDRESS EQUAL TO CONTENTS OF ;INDEX AC(=AC) AC=10 SAVEAC (1,1) G5500: HRLI AC+1,000607 ;SETUP BYTE HRRI AC+1,5 ;PNTR WORD SETZB AC,5 ;CLEAR DEST AC'S MOVEI 7,10 ;SETUP INDEX AC MOVEI 15,77 ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE CAIE AC,77 ;TEST FOR BYTE ER3 AC,5501 ;AC FAILED JUMPL AC+2,G5500 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST ABILITY TO INDEX BYTE WORD ADDRESS ;P FIELD=0 ;S FIELD=6 ;FAILURE RESULTS IN AN INDEX AC EQUAL ;TO INDEX AC+AC(AC7+AC10=AC17) AC=10 SAVEAC (1,1) G5600: HRLI AC+1,000607 ;SETUP BYTE HRRI AC+1,5 ;PNTR WORD MOVEI 6,10 ;SETUP INDEX AC MOVEI 15,15 ;SETUP BYTE WORD MOVEI 16,5 ;SETUP ERROR INDEX AC MOVEI 14,14 ;SETUP ERROR BYTE WORD LDB AC,&17 ;LOAD BYTE CAIE AC,15 ;TEST BYTE=15 ER3 AC,5601 ;AC FAILED JUMPL AC+2,G5600 ;LOOP ON ERROR SWITCH ;INST-LDB ;TEST ABILITY TO INDEX BYTE WORD ADDRESS ;P FIELD=0 ;S FIELD=6 ;FAILURE RESULTS IN INDEXING BY C(AC0) AC=10 SAVEAC (1,1) G5700: HRLI AC+1,000607 ;SETUP BYTE HRRI AC+1,5 ;PNTR WORD MOVEI 7,10 ;SETUP INDEX AC MOVEI 15,15 ;SETUP BYTE WORD MOVEI ,7 ;SETUP ERROR INDEX AC MOVEI 14,33 ;SETUP ERROR BYTE WORD LDB AC,AC+1 ;LOAD BYTE CAIE AC,15 ;TEST BYTE=0,,15 ER3 AC,5701 ;AC FAILED JUMPL AC+2,G5700 ;LOOP ON ERROR SWITCH ;INST-ILDB ;TEST ABILITY TO ASSERT BYTE PTRINC ;P FIELD=16 ;S FIELD=6 ;FAILURE TO ASSERT MAY RESULT IN A HALT ;AT ET0 ;AN ERROR WILL OCCUR IF PNTR WORD ;EQUALS ORIGINAL FOLLOWING ILDB AC=5 SAVEAC (1,1) G6000: MOVSI AC-2,100600 ;SETUP FOR COMPARISON MOVSI AC+1,160600 ;SETUP PNTR WORD ILDB AC,&17 ;INC AND LOAD BYTE CAME AC+1,&17 ;TEST PNTR=ORIGINAL ER4 AC+1,6001 ;PNTR FAILED TO INCREMENT JUMPL AC+2,G6000 ;LOOP ON ERROR SWITCH ;INST-ILDB ;TEST LB BYTE LOAD ;TEST BYF5 SET ;P FIELD=22 ;S FIELD=22 ;BYTE WORD=000000777777 ;FAILURE RESULTS IN A BYTE EQUAL ;TO BYTE WORD. AC=14 SAVEAC (1,1) G6100: MOVSI AC-2,002200 ;SETUP FOR COMPARISON MOVSI AC+1,222200 ;SETUP PNTR WORD MOVEI ,-1 ;SETUP BYTE WORD ILDB AC,&17 ;INC AND LOAD BYTE CAME ,AC ;TEST BYTE=000000777777 ER12 ,6101 ;BYTE WORD FAILED CAME AC+1,&17 ;TEST PNTR WORD ER5 AC+1,6101 ;POINTER FAILED JUMPL AC+2,G6100 ;LOOP ON ERROR SWITCH ;INST-ILDB ;P FIELD=22 ;S FIELD=6 ;BYTE WORD=0000007700000 ;FAILURE RESULTS IN A BYTE ;=0 AC=13 SAVEAC (1,1) G6200: MOVSI AC-2,140600 ;SETUP FOR COMPARISON MOVSI AC+1,220600 ;SETUP PNTR WORD MOVEI ,770000 ;SETUP BYTE WORD (AC0) ILDB AC,&17 ;INC AND LOAD BYTE CAIE AC,77 ;TEST BYTE ER3 AC,6201 ;AC FAILED CAME AC+1,&17 ;TEST PNTR WORD ER5 AC+1,6201 ;POINTER FAILED JUMPL AC+2,G6200 ;LOOP ON ERROR SWITCH ;INST-DPB ;TEST ABILITY TO ASSERT BYF5 SET ;P FIELD ;P=14 ;S=6 ;BYTE WORD=000000000077 ;DEST WORD=000000000000 AC=12 SAVEAC (1,1) G6300: MOVEI AC-2,770000 ;SETUP FOR COMPARISON MOVSI AC+1,140600 ;SETUP PNTR WORD MOVEI AC,77 ;SETUP BYTE SETZ ;SETUP DEST WORD DPB AC,&17 ;DEPOSIT BYTE (AC0) CAME ,&17 ;TEST DEST=0,,770000 ER12 ,6301 ;BYTE W0RD FAILED JUMPL AC+2,G6300 ;LOOP ON ERROR SWITCH ;INST-DPB ;TEST ABILITY TO ASSERT DPBYTE DEP ;P FIELD=14 ;S FIELD=6 ;BYTE WORD=55 ;DEST WORD=-1 ;FAILURE OF MQ TO SHIFT RESULTS IN A ;DEPOSIT BYTE=777777777700 AC=7 SAVEAC (1,1) G6400: HRROI AC-2,557777 ;SETUP AC-2 FOR COMPARISON MOVSI AC+1,140600 ;SETUP PNTR WORD MOVEI AC,55 ;SETUP BYTE WORD SETO ;SETUP DEST WORD DPB AC,&17 ;DEPOSIT BYTE (AC0) CAME ,&17 ;TEST DEST=-1,,557777 ER12 ,6401 ;BYTE WORD FAILED JUMPL AC+2,G6400 ;LOOP ON ERROR SWITCH ;INST-DPB ;TEST ABILITY TO AND MASK, BYTE ;P FIELD=14 ;S FIELD=6 ;BYTE WORD=5555 ;DEST WORD=0 ;FAILURE RESULTS IN A DEPOSIT ;BYTE=000055550000 AC=5 SAVEAC (1,1) G7000: HRRZI AC-2,550000 ;SETUP AC-2 FOR COMPARISON HRRI AC-2,550000 ;FOR COMPARISON MOVSI AC+1,140600 ;SETUP PNTR WORD MOVEI AC,5555 ;SETUP BYTE WORD SETZ ;SETUP DEST WORD DPB AC,&17 ;DEPOSIT BYTE (AC0) CAME ,&17 ;TEST DEST WORD=0,,550000 ER12 ,7001 ;BYTE WORD FAILED JUMPL AC+2,G7000 ;LOOP ON ERROR SWITCH ;INST-DPB ;P FIELD = 6 ;S FIELD = 14 ;BYTE WORD=55 ;DEST WORD = -1 ;FAILURE OF ANY ONE RESULTS IN A ;BYTE = 777777 000077 AC=14 SAVEAC (1,1) G7100: HRROI AC-2,5577 ;SETUP FOR COMPARISON MOVSI AC+1,061400 ;SETUP PNTR WORD MOVEI AC,55 ;SETUP BYTE WORD SETO ;SETUP DEST WORD DPB AC,&17 ;DEPOSIT BYTE (AC0) CAME ,&17 ;TEST BYTE=777777 005577 ER12 ,7101 ;BYTE WORD FAILED JUMPL AC+2,G7100 ;LOOP ON ERROR SWITCH ;INST-DPB ;P FIELD=14 ;S FIELD=6 ;BYTE WORD=55 ;DEST WORD=0 ;FAILURE RESULTS IN A DEPOSIT ;BYTE=777777557777 AC=13 SAVEAC (1,1) G7200: HRRZI AC-2,550000 ;SETUP FOR COMPARISON MOVSI AC+1,140600 ;SETUP PNTR WORD MOVEI AC,55 ;SETUP BYTE WORD SETZ ;SETUP DEST WORD DPB AC,&17 ;DEPOSIT BYTE (AC0) CAME ,&17 ;TEST DEST WORD=0,,550000 ER12 ,7201 ;BYTE WORD FAILED JUMPL AC+2,G7200 ;LOOP ON ERROR SWITCH ;INST-DBP ;P FIELD=22 ;S FIELD=6 ;BYTE WORD=5555 ;DEST WORD=-1 ;FAILURE RESULTS IN A DEPOSIT ;BYTE=005455777777 AC=11 SAVEAC (1,1) G7400: HRLOI AC-2,777755 ;SETUP FOR COMPARISON MOVSI AC+1,220600 ;SETUP PNTR WORD MOVEI AC,5555 ;SETUP BYTE WORD SETO ;SETUP DEST WORD DPB AC,&17 ;DEPOSIT BYTE (AC0) CAME ,&17 ;TEST DEST WORD=777755,,-1 ER12 ,7401 ;BYTE WORD FAILED JUMPL AC+2,G7400 ;LOOP ON ERROR SWITCH ;INST-DPB ;TEST ABILITY TO CLEAR BYF6 ;P FIELD=14 ;S FIELD=6 ;BYTE WORD=55 ;DEST WORD=0 ;AN ERROR WILL OCCUR IF BYF6(1) WHEN ;STORED BY JSP AC=7 SAVEAC (1,1) G7600: MOVSI AC+1,140600 ;SETUP PNTR WORD MOVEI AC,55 ;SETUP BYTE WORD SETZ ;SETUP DEST WORD DPB AC,&17 ;DEPOSIT BYTE JSP AC,.+1 ;STORE FLAGS TLNE AC,020000 ;TEST BIT 4 ER13 AC,7601 ;BYF6 FAILED TO CLEAR JUMPL AC+2,G7600 ;LOOP ON ERROR SWITCH ;INST-IDPB ;TEST ABILITY TO ASSERT BYTE PTRINC ;TEST ABILITY TO ASSERT DB BYTE DEP ;FAILURE TO ASSERT BYTE PTR INC ;MAY CAUSE A HALT AT ET0 ;FAILURE TO ASSERT DB BYTE DEP PREVENTS ;ARMQSHLT SCT3 (2ND PART) ;P FIELD=22 ;S FIELD=6 ;DEST WORD=0 ;BYTE WORD=77 ;AN ERROR WILL OCCUR IF BYTE PNTR ;WORD EQUALS ORIGINAL ;AN ERROR WILL OCCUR IF DEST WORD ;EQUALS BYTE WORD AC=5 SAVEAC (1,1) G7700: MOVSI AC-2,140600 ;SETUP FOR COMPARISON MOVSI AC+1,220600 ;SETUP PNTR WORD MOVEI AC,77 ;SETUP BYTE WORD SETZ ;SETUP DEST WORD (AC0) IDPB AC,&17 ;INC AND DEPOSIT BYTE CAME AC+1,&17 ;TEST FOR INCREMENTED PNTR ER5 AC+1,7701 ;BYTE PTR INC FAILED CAIE ,770000 ;TEST DEST WORD ER12 ,7701 ;DB BYTE DEP FAILED JUMPL AC+2,G7700 ;LOOP ON ERROR SWITCH SUBTTL PART IB-GENERAL BYTE TEST ;PART IA- GENERAL BYTE TEST ;INST-IBP ;DECREASING P FIELD ;P FIELD=22,20,16,14,12 ;S FIELD=6 ;RESULTANT P FIELDS=14,12,10,6,4 ;AN ERROR WILL OCCUR ON AN ;INCORRECT INCREMENTED PNTR WORD AC=5 SAVEAC (1,1) SN=10000 XX=160600 ZZ=240600 ;TEST IBP G10000: REPEAT ^D5,< SN=SN+1 XX=XX-020000 ZZ=ZZ-020000 MOVSI AC-2,XX ;SETUP FOR COMPARISON MOVSI AC+1,ZZ ;SETUP PNTR WORD IBP ,&17 ;INC BYTE PNTR CAME AC+1,&17 ;TEST INC PNTR ER5 AC+1,SN ;IBP FAILED JUMPL AC+2,.-5 ;LOOP ON ERROR SWITCH > PAGE ;INST-IBP ;DECREASING S FIELD ;P FIELD=22 ;S FIELD=14,12,10,6,4 ;RESULTANT P FIELDS=6,10,12,14,16 ;AN ERROR WILL OCCUR ON AN ;INCORRECT INCREMENTED PNTR WORD AC=14 SAVEAC (1,1) SN=10100 XX=040000 WW=001600 ZZ=221600 ;TEST IBP G10100: REPEAT ^D5,< SN=SN+1 XX=XX+020000 WW=WW-000200 ZZ=ZZ-000200 MOVSI AC-2,XX+WW ;SETUP FOR COMPARISON MOVSI AC+1,ZZ ;SETUP PNTR WORD IBP ,&17 ;INC BYTE PNTR CAME AC+1,&17 ;TEST INC PNTR ER5 AC+1,SN ;IBP FAILED JUMPL AC+2,.-5 ;LOOP ON ERROR SWITCH > ;INST-IBP ;OVERFLOW AND INC ADDRESS ;P FIELD=0 ;S FIELD=14,12,10,6,4 ;RESULTANT P FIELDS=30,32,34,36,40 ;ADDRESS FIELD INCREMENTED BY ONE ;AN ERROR WILL OCCUR ON AN INCORRECT ;INCREMENTED PNTR WORD AC=13 SAVEAC (1,1) SN=10200 XX=260000 ZZ=001600 ;TEST IBP G10200: REPEAT ^D5,< SN=SN+1 XX=XX+020000 ZZ=ZZ-000200 MOVSI AC-2,XX+ZZ ;SETUP AC-2 AOJ AC-2, ;FOR COMPARISON MOVSI AC+1,ZZ ;SETUP PNTR WORD IBP ,&17 ;INC BYTE PNTR CAME AC+1,&17 ;TEST INC PNTR ER5 AC+1,SN ;IBP FAILED JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH > PAGE ;INST-LDB ;INCREASING S FIELD ;P FIELD=22 ;S FIELD=1,2,3,4,5 ;BYTE WORD=777777000000 ;AN ERROR WILL OCCUR IF AN ;IN CORRECT BYTE IS LOADED ;INTO AC AC=12 SAVEAC (1,1) SN=10300 XX=220000 ZZ=0 ;TEST LDB G10300: REPEAT ^D5,< SN=SN+1 XX=XX+000100 ZZ=ZZ*2+1 MOVSI AC+1,XX ;SETUP PNTR WORD HRLZI ,-1 ;SETUP BYTE WORD (AC0) LDB AC,&17 ;LOAD BYTE CAIE AC,ZZ ;TEST DEST AC ER3 AC,SN ;LDB FAILED JUMPL AC+2,.-5 ;LOOP ON ERROR SWITCH > ;INST-LDB ;INCREASING BYTE WORD ;INCREASING P FIELD ;P FIELD=14,17,22,25,33 ;S FIELD=3 ;BYTE WORD=000000070000 SHIFTING ;LEFT BY 3 ;AN ERROR WILL OCCUR IF DEST AC ;DIFFERS FROM 7 AC=11 SAVEAC (1,1) SN=10400 XX=0 ZZ=110300 ;TEST LDB G10400: REPEAT ^D5,< SN=SN+1 XX=XX+3 ZZ=ZZ+030000 MOVSI AC+1,ZZ ;SETUP PNTR WORD MOVEI ,7000 ;SETUP BYTE WORD ROT ,XX ;ROTATE LEFT BY 3 LDB AC,&17 ;LOAD BYTE CAIE AC,7 ;TEST DEST AC=7 ER3 AC,SN ;LDB FAILED JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH > ;INST-LDB ;VARY BYTE ADDRESS ;P FIELD=22 ;S FIELD=3 ;BYTE WORD=AC NUMBER ;BYTE PNTR ADDR=AC 6,5,4,3,2 ;AN ERROR WILL OCCUR IF C(DEST AC) ;DIFFERS FROM AC UNDER TEST AC=7 SAVEAC (1,1) SN=10500 ZZ=7 ;TEST LOAD BYTE G10500: REPEAT ^D5,< SN=SN+1 ZZ=ZZ-1 HRLI AC+1,220300 ;SETUP BYTE HRRI AC+1,ZZ ;PNTR WORD MOVSI ZZ,ZZ ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE CAIE AC,ZZ ;TEST DEST AC=AC NUMBER ER3 AC,SN ;LDB FAILED JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH > PAGE ;INST-LDB ;BYTE PNTR INDEXED ;P FIELD=0 ;S FIELD=3 ;BYTE WORD=PNTR WORD ;AN ERROR WILL OCCUR IF LOADED ;BYTE DIFFERS FROM CURRENT ;AC NUMBER AC=10 SAVEAC (1,1) SN=10600 ZZ=0 ;TEST LDB INDEXED G10600: REPEAT ^D5,< SN=SN+1 ZZ=ZZ+1 MOVSI ,000300 ;SETUP NON IND PNTR WORD HRLI ZZ,000300 ;SETUP INDEXED HRRI ZZ,ZZ ;PNTR WORD LDB AC,(ZZ) ;LOAD BYTE INDEXED CAIE AC,ZZ ;TEST FOR AC NUMBER ER3 AC,SN ;LDB FAILED JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH > ;INST-LDB ;BYTE PNTR INDIRECTLY ADDRESSED ;P FIELD=0 ;S FIELD=3 ;BYTE WORD=PNTR WORD ;AN ERROR WILL OCCUR IF LOADED ;BYTE DIFFERS FROM CURRENT ;AC NUMBER AC=7 SAVEAC (1,1) SN=10700 ZZ=0 ;TEST LDB INDIRECTLY ADDRESSED G10700: REPEAT ^D5,< SN=SN+1 ZZ=ZZ+1 MOVSI AC+1,440300 ;SETUP DIRECTLY ADDRESSED PNTR WORD HRRI AC+1,ZZ ;SETUP INDIRECT ADDRESS HRLI ZZ,000300 ;SETUP INDIRECTLY ADDRESSED HRRI ZZ,ZZ ;PNTR WORD SETZ ;SETUP DIRECTLY ADDRESSED BYTE WORD LDB AC,@&17 ;LOAD BYTE INDIRECTLY ADDRESSED CAIE AC,ZZ ;TEST FOR AC NUMBER ER3 AC,SN ;LDB INDIRECTLY ADDRESSED FAILED JUMPL AC+2,.-10 ;LOOP ON ERROR SWITCH > ;INST-LDB ;PNTR INDEXED AND INDIRECTLY ADDRESSED ;P FIELD=0 ;S FIELD=6 ;PNTR WORD IS IN AC 12,13,14 ;BYTE WORD=PNTR WORD ;LOADED BYTE SHOULD EQUAL ;12,13,14 AC=10 SAVEAC (1,1) SN=11000 VV=3 WW=6 XX=11 ZZ=3 ;TEST LDB INDEXED, INDIRECTLY ADDRESSED G11000: REPEAT ^D3,< SN=SN+1 VV=VV+1 WW=WW+1 XX=XX+1 ZZ=ZZ+1 MOVEI VV,WW ;SETUP INDEX AC MOVEI WW,XX ;SETUP INDIRECT AC HRLI XX,000600 ;SETUP INDEXED AND HRRI XX,XX ;INDIRECT PNTR WORD LDB AC,@(ZZ) ;LOAD BYTE INDEXED, INDIRECTLY ADDRESSED CAIE AC,XX ;TEST LOAD BYTE=12,13,14 ER3 AC,SN ;LDB INDEXED, INDIRECTLY ADDRESSEDD FAILED JUMPL AC+2,^D8 ;LOOP ON ERROR SWITCH > ;INST-LDB ;INDEX BYTE ADDRESS ;P FIELD=0 ;S FIELD=6 ;INDEX AC=AC7 ;BYTE WORD ADDRESS=AC 7,10,11,12,13 ;AN ERROR WILL OCCUR IF LOADED BYTE ;DIFFERS CURRENT AC AC=4 SAVEAC (1,1) SN=11100 ZZ=6 ;TEST LDB BYTE ADDR INDEXED G11100: REPEAT ^D5,< SN=SN+1 ZZ=ZZ+1 MOVSI AC+1,000607 ;SETUP PNTR WORD MOVEI AC+3,ZZ ;SETUP INDEX AC MOVEI ZZ,ZZ ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE CAIE AC,ZZ ;TEST BYTE=7,10,11,12,13 ER3 AC,SN ;LDB FAILED JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH > PAGE ;INST-LDB ;BYTE INDIRECTLY ADDRESSED ;P FIELD=0 ;S FIELD=6 ;BYTE WORD ADDRESS=AC7,10,11,12,13 ;AN ERROR WILL OCCUR IF LOADED ;BYTE DIFFERS FROM CURRENT AC AC=4 SAVEAC (1,1) SN=11200 ZZ=6 ;TEST LDB, BYTE INDIRECTLY ADDRESSED G11200: REPEAT ^D5,< SN=SN+1 ZZ=ZZ+1 MOVSI AC+1,000620 ;SETUP PNTR WORD MOVEI ,ZZ ;SETUP DEFER ADDRESS MOVEI ZZ,ZZ ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE CAIE AC,ZZ ;TEST BYTE=7,10,11,12,13 ER3 AC,SN ;LDB FAILED JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH > ;INST-LDB ;BYTE ADDRESS INDEXED AND INDIRECT ;P FIELD=0 ;S FIELD=6 ;BYTE ADDRESS=AC13,14,15 ;BYTE WORD=13,14,15 ;AN ERROR WILL OCCUR IF LOADED ;BYTE DIFFERS FROM CURRENT AC AC=4 SAVEAC (1,1) SN=11300 XX=12 ZZ=7 ;TEST LDB, BYTE ADDR INDEXED AND INDIRECT G11300: REPEAT ^D3,< SN=SN+1 XX=XX+1 ZZ=ZZ+1 MOVSI AC+1,000627 ;SETUP PNTR WORD MOVEI AC+3,ZZ ;SETUP INDEX AC MOVEI ZZ,XX ;SETUP INDIRECT ADDR MOVEI XX,XX ;SETUP BYTE WORD LDB AC,&17 ;LOAD BYTE CAIE AC,XX ;TEST BYTE=13,14,15 ER3 AC,SN ;LDB FAILED JUMPL AC+2,.-7 ;LOOP ON ERROR SWITCH > ;INST-ILDB ;DECREASING P FIELD ;P FIELD=44,36,30,22,14 ;S FIELD=6 ;BYTE ADDRESS=AC0 ;AN ERROR WILL OCCUR IF AC DIFFERS ;FROM 77 AC=5 SAVEAC (1,1) SN=11400 XX=520600 ZZ=0 ;TEST ILDB G11400: REPEAT ^D5,< SN=SN+1 XX=XX-060000 ZZ=ZZ-6 MOVSI AC+1,XX ;SETUP PNTR WORD MOVEI ,77 ;SETUP BYTE WORD ROT ,ZZ ;ROTATE RIGHT ILDB AC,&17 ;INC AND LOAD BYTE CAIE AC,77 ;TEST AC=77 ER3 AC,SN ;ILDB FAILED JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH > PAGE ;INST-ILDB ;INCREASING S FIELD ;CALCULATE NEW P FIELD, INCREMENT ;BYTE WORD ADDRESS ;P FIELD=0 ;S FIELD=6,14,22,30,36 ;AN ERROR WILL OCCUR IF AC ;DIFFERS FROM 77 AC=14 SAVEAC (1,1) SN=11500 XX=0 ZZ=0 ;TEST ILDB G11500: REPEAT ^D5,< SN=SN+1 XX=XX+600 ZZ=ZZ-6 MOVSI AC+1,XX ;SETUP PNTR WORD MOVEI 1,77 ;SETUP BYTE WORD ROT 1,ZZ ;ROTATE RIGHT BYTE WORD ILDB AC,&17 ;INC AND LOAD BYTE CAIE AC,77 ;TEST AC=77 ER3 AC,SN ;ILDB FAILED JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH > ;INST-ILDB ;TESTING SPECIAL POINTER ;WHICH SETS AC TO ZERO ;PFIELD=20 ORIG,64 AFTER ;SFIELD=60 ORIG,60 AFTER ;AN ERROR WILL OCCUR IF AC IS NOT ZEROED XX=206000 G11600: MOVSI AC+1,XX ;SETUP PNTR WORD SETOB 0,1 ;SETUP BYTE WORD SETOM AC ;SETUP AC FOR TEST ILDB AC,&17 ;THIS SHOULD ZERO AC SKIPE AC ;TEST AC=0 ER3 AC,11601 ;ILDB FAILED JUMPL AC+2,G11600 ;LOOP ON ERROR SWITCH PAGE ;INST-DPB ;INCREASING P FIELD ;P FIELD=6,14,22,30,36 ;S FIELD=6 ;BYTE WORD=55 ;AN ERROR WILL OCCUR IF DPB ;FAILS TO DEPOSIT CORRECTLY AC=13 SAVEAC (1,1) SN=11700 XX=0 ZZ=000600 ;TEST DPB G11700: REPEAT ^D5,< SN=SN+1 XX=XX+6 ZZ=ZZ+60000 MOVEI AC-2,55 ;SETUP AC-2 ROT AC-2,XX ;FOR COMPARISON MOVSI AC+1,ZZ ;SETUP PNTR WORD SETZ ;SETUP DEST WORD MOVEI AC,55 ;SETUP BYTE WORD DPB AC,&17 ;DEPOSIT BYTE (AC0) CAME ,&17 ;TEST DEST WORD ER12 ,SN ;DPB FAILED JUMPL AC+2,.-^D8 ;LOOP ON ERROR SWITCH > ;INST-DPB ;INCREASING P FIELD ;P FIELD = 0,6,14,22,30 ;S FIELD = 6 ;BYTE WORD=55 (SHIFTING LEFT 6 PLACES) ;AN ERROR WILL OCCUR IF DPB FAILS ;TO DEPOSIT CORRECTLY AC=12 SAVEAC (1,1) SN=12000 XX=0 ZZ=-60000 ;TEST DPB G12000: REPEAT ^D5,< SN=SN+1 XX=XX+6 ZZ=ZZ+060000 IFE ZZ, MOVSI AC-2,550000 ;SETUP AC=2 ROT AC-2,XX ;FRO COMPARISON MOVSI AC+1,ZZ ;SETUP PNTR WORD MOVEI AC,55 ;SETUP BYTE WORD SETZ ;SETUP DEST WORD DPB AC,&17 ;DEPOSIT BYTE (AC0) CAME ,&17 ;TEST DEST WORD ER12 ,SN ;DPB FAILED JUMPL AC+2,.-^D8 ;LOOP ON ERROR SWITCH > ;INST-IDPB ;INCREASING S FIELD ;CALCULATE NEW P FIELD, INCREMENT ;BYTE WORD ADDRESS ;P FIELD=0 ;S FIELD=6,14,22,30,36 ;BYTE WORD=77 ;AN ERROR WILL OCCUR IF IDPB FAILS ;TO DEPOSIT CORRECTLY AC=11 SAVEAC (1,1) SN=12100 XX=0 ZZ=000000 ;TEST IDPB G12100: REPEAT ^D5,< SN=SN+1 XX=XX-6 ZZ=ZZ+600 MOVEI AC-2,77 ;SETUP AC-2 ROT AC-2,XX ;FOR COMPARISON MOVSI AC+1,ZZ ;SETUP PNTR WORD MOVEI AC,77 ;SETUP BYTE WORD SETZ 1, ;SETUP DEST WORD IDPB AC,&17 ;INC AND DEPOSIT BYTE CAME 1,&17 ;TEST DEST WORD ER12 1,SN ;IDPB FAILED JUMPL AC+2,.-^D8 ;LOOP ON ERROR SWITCH > ;INST-IDPB ;P FIELD=44 ;S FIELD=6 ;BYTE WORD=55 ;DEST WORD=-1 ;AN ERROR WILL OCCUR IF IDPB ;FAILS TO DEPOSIT CORRECTLY AC=10 SAVEAC (1,1) SN=12200 ZZ=0 G12200: MOVSI AC+1,440600 ;SETUP PNPR WORD ;TEST IDPB REPEAT ^D5,< SN=SN+1 ZZ=ZZ-6 HRLI AC-2,-1 ;SETUP AC-2 HRRI AC-2,-23 ;FOR COMPARISON ROT AC-2,ZZ ;ROTATE RIGHT BY 6 MOVEI AC,55 ;SETUP BYTE WORD SETO ;SETUP DEST WORD (AC0) IDPB AC,&17 ;INC AND DEPOSIT BYTE CAME ,&17 ;TEST DEST WORD ER12 ,SN ;IDPB FAILED JUMPL AC+2,.-^D8 ;LOOP ON ERROR SWITCH > ;INST-LDB-SPECIAL CASE-S GREATER THAN 44 ;P FIELD=7 ;S FIELD=60,40 ;VERIFY THAT THE BYTE PROCESSED IS, AT MOST, 44 BITS IF S GREATER THAN 44 AC=13 SAVEAC (1,1) SN=12210 XX=100000 ;TEST LDB G12210: REPEAT 2,< SN=SN+1 XX=XX-2000 SETOB 0,2 MOVE 1,[525252,,525377] ;SETUP BYTE WORD SETZM AC ;CLEAR DEST WORD MOVE AC+1,[XX,,1] ;SETUP POINTER LDB AC,&17 ;LOAD BYTE CAME AC,[002525,,252525] ;TEST DEST WORD ER3 AC,SN ;LDB FAILED CAME AC+1,[XX,,1] ;CHECK POINTER ER4 AC+1,SN ;POINTER WAS MODIFIED JUMPL AC+2,.-^D9 ;LOOP ON ERROR SWITCH > PAGE ;INST-DPB-SPECIAL CASE-S GREATER THAN 44 ;P FIELD=7 ;S FIELD=60,40 ;VERIFY THAT THE BYTE PROCESSED IS, AT MOST, 44 BITS IF S GREATER THAN 44 SN=12220 XX=100000 ;TEST DPB G12220: REPEAT 2,< SN=SN+1 XX=XX-2000 SETOB 0,2 MOVE 1,[707070,,707070] ;SETUP DEST WORD MOVE AC,[323232,,232323] ;SETUP BYTE WORD MOVE AC+1,[XX,,1] ;SETUP POINTER DPB AC,&17 ;DEPOSIT BYTE MOVEI AC-2,[ASCIZ/C(C(E)-1) FAILED/] MOVE AC-2,SPDES ;FAILURE DESCRIPTOR CAME 0,[-1,,-1] ;CHECK DEST WORD -1 ER2 0,SN ;DPB FAILED CAME 1,[646446,,464670] ;CHECK DEST WORD ER12 1,SN ;DPB FAILED MOVEI AC-2,[ASCIZ/C(C(E)+1) FAILED/] MOVEM AC-2,SPDES ;FAILURE DSCRIPTOR CAME 2,[-1,,-1] ;CHECK DEST WORD +1 ER2 2,SN ;DPB FAILED JUMPL AC+2,.-^D15 ;LOOP ON ERROR SWITCH > ;VERIFY THAT THE POINTER IS NOT INCREMENTED BY "ILDB" OR "IDPB" IF 'BIS' ;IS SET; AND THAT THE SECOND PART OF THE BYTE INSTRUCTION CLEARS 'BIS' AC=13 SAVEAC (1,1) G12300: MOVE AC+1,[220600,,AC-1] ;SETUP BYTE POINTER MOVE AC,[707070,,707070] ;SETUP AC MOVE AC-1,[112233,,445566] ;SETUP BYTE WORD JRSTF @[BIS,,.+1] ;SET 'BIS' FLAG ILDB AC,AC+1 JSP AC-2,.+1 ;SAVE FLAGS CAIE AC,33 ;TEST DEST WORD ER3 AC,12301 ;INCORRECT BYTE WAS LOADED CAME AC+1,[220600,,AC-1] ;TEST POINTER ER4 AC+1,12301 ;POINTER WAS INCREMENTED TLNE AC-2,BIS ;EXAMINE 'BIS' ER13 AC-2,12301 ;'BIS' WAS NOT CLEARED JUMPE AC+2,G12300 ;LOOP ON ERROR SWITCH G12400: MOVE AC+1,[220600,,AC-1] ;SET-UP BYTE POINTER MOVE AC,[707070,,707070] ;SET-UP AC MOVE AC-1,[112233,,445566] ;SETUP BYTE WORD JRSTF @[BIS,,.+1] ;SET 'BIS' FLAG IDPB AC,AC+1 JSP AC-2,.+1 ;SAVE FLAGS CAME AC+1,[220600,,AC-1] ;TEST POINTER ER4 AC+1,12401 ;POINTER WAS INCREMENTED CAME AC-1,[112270,,445566] ;TEST BYTE WORD ER12 AC-1,12401 ;INCORRECT BYTE WAS DEPOSITED TLNE AC-2,BIS ;EXAMINE 'BIS' ER13 AC-2,12401 ;'BIS' WAS NOT CLEARED JUMPL AC+2,G12400 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - IBP ;VERIFY THAT IBP WORKS WHEN THE POINTER IS IN AN AC AC=7 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12500: MOVSI AC-2,170600 ;SETUP POINTER MOVSI AC-1,110600 ;RESULT FOR COMPARISON IBP &17 ;*IBP SHOULD PLACE 110600,,0 INTO PTR CAME AC-2,&17 ;IS PTR = 110600,,0 ? ER5 AC-2,12501 ;POINTER FAILURE JUMPL AC+2,G12500 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - IBP ;VERIFY THAT IBP WORKS WHEN THE POINTER IS IN CORE MEMORY AC=6 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12510: MOVSI AC-2,170600 MOVEM AC-2,BYTBLK ;SETUP POINTER MOVSI AC-2,110600 ;RESULT FOR COMPARISON SETZ AC-1, ;INITIALIZE FOR RESULT IBP BYTBLK ;*IBP SHOULD PLACE 110600,,0 INTO PTR MOVE AC-1,BYTBLK CAME AC-1,&17 ;IS PTR = 110600,,0 ? ER5 AC-1,12511 ;POINTER FAILURE JUMPL AC+2,G12510 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - DPB ;VERIFY THAT DPB WORKS WHEN BOTH POINTER AND BYTE ;ARE IN AC'S AC=5 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12600: MOVSI AC-2,170600 ;SETUP POINTER HRRI AC-2,&17 MOVE AC-3,&17 ;POINTER FOR COMPARISON MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD MOVEI AC,654321 ;SETUP AC MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON DPB AC,&17 ;DPB SHOULD PLACE 230702.103700 INTO BYTE WORD CAME AC-2,&17 ;WAS POINTER MODIFIED ? ER5 AC-2,12601 ;FAILURE - POINTER WAS MODIFIED CAIE AC,654321 ;WAS AC MODIFIED? ER3 AC,12602 ;FAILURE - AC WAS MODIFIED CAME AC-4,&17 ;WAS BYTE DEPOSITED CORRECTLY? ER12 AC-4,12603 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY JUMPL AC+2,G12600 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - DPB ;VERIFY THAT DPB WORKS WHEN POINTER IS IN AN AC AND ;BYTE IS IN CORE MEMORY AC=14 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12610: MOVSI AC-2,170600 ;SETUP POINTER HRRI AC-2,BYTBLK MOVE AC-3,&17 ;POINTER FOR COMPARISON MOVE AC,[230703,,603700] ;SETUP BYTE WORD MOVEM AC,BYTBLK MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON MOVEI AC,654321 ;SETUP AC DPB AC,&17 ;DPB SHOULD PLACE 230702,,103700 INTO BYTE WORD CAME AC-2,&17 ;WAS POINTER MODIFIED? ER5 AC-2,12611 ;FAILURE - POINTER WAS MODIFIED CAIE AC,654321 ;WAS AC MODIFIED? ER3 AC,12612 ;FAILURE - AC WAS MODIFIED MOVE AC-5,BYTBLK CAME AC-1,BYTBLK ;WAS BYTE DEPOSITED CORRECTLY? ER12 AC-5,12613 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY JUMPL AC+2,G12610 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - DPB ;VERIFY THAT DPB WORKS WHEN BYTE IS IN AN AC AND ;POINTER IS IN CORE MEMORY AC=13 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12620: MOVSI AC-2,170600 HRRI AC-2,&17 ;POINTER FOR COMPARISON MOVEM AC-2,BYTBLK ;SETUP POINTER MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON MOVEI AC,654321 ;SETUP AC DPB AC,BYTBLK ;DPB SHOULD PLACE 230702,,103700 INTO BYTE WORD MOVE AC-3,BYTBLK CAME AC-2,BYTBLK ;WAS POINTER MODIFIED? ER5 AC-3,12621 ;FAILURE - POINTER WAS MODIFIED CAIE AC,654321 ;WAS AC MODIFIED? ER3 AC,12622 ;FAILURE - AC WAS MODIFIED CAME AC-4,&17 ;WAS BYTE DEPOSITED CORRECTLY? ER12 AC-4,12523 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY JUMPL AC+12,G12620 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - DPB ;VERIFY THAT DPB WORKS WHEN BOTH POINTER AND BYTE WORD ARE IN CORE MEMORY AC=12 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12630: MOVSI AC-2,170600 HRRI AC-2,BYTBLK+3 ;POINTER FOR COMPARISON MOVEM AC-2,BYTBLK ;SETUP POINTER MOVE AC-4,[230703,,603700] MOVEM AC-4,BYTBLK+3 ;SETUP BYTE WORD MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON MOVEI AC,654321 ;SETUP AC DPB AC,BYTBLK ;DPB SHOULD PLACE 230702,,103700 INTO BYTE WORD MOVE AC-4,BYTBLK CAME AC-2,BYTBLK ;WAS POINTER MODIFIED? ER5 AC-4,12631 ;FAILURE - POINTER WAS MODIFIED MOVE AC-3,BYTBLK+3 CAME AC-1,BYTBLK+3 ;WAS BYTE DEPOSITED CORRECTLY? ER12 AC-3,12632 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY CAIE AC,654321 ;WAS AC MODIFIED? ER3 AC,12633 ;FAILURE - AC WAS MODIFIED JUMPL AC+2,G12630 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - IDPB ;VERIFY THAT IDPB WORKS WHEN BOTH POINTER AND BYTE ;ARE IN AC'S AC=11 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12700: MOVSI AC-2,250600 ;SETUP POINTER HRRI AC-2,&17 MOVE AC-3,&17 HRLI AC-3,170600 ;POINTER FOR COMPARISON MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD MOVEI AC,654321 ;SETUP AC MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON IDPB AC,&17 ;IDPB SHOULD PLACE 230702,,103700 INTO BYTE WORD CAME AC-2,&17 ;WAS POINTER INCREMENTED CORRECTLY ER5 AC-2,12701 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY CAIE AC,654321 ;WAS AC MODIFIED ER3 AC,12700 ;FAILURE - AC WAS MODIFIED CAME AC-4,&17 ;WAS BYTE DEPOSITED CORRECTLY? ER12 AC-4,12703 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY JUMPL AC+2,G12700 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - IDPB ;VERIFY THAT DPB WORKS WHEN POINTER IS IN AN AC AND ;BYTE IS IN CORE MEMORY AC=10 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12710: MOVSI AC-2,250600 ;SETUP POINTER HRRI AC-2,BYTBLK MOVE AC-3,&17 HRLI AC-3,170600 ;POINTER FOR COMPARISON MOVE AC,[230703,,603700] ;SETUP BYTE WORD MOVEM AC,BYTBLK MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON MOVEI AC,654321 ;SETUP AC IDPB AC,&17 ;IDPB SHOULD PLACE 230702,,103700 INTO ;BYTE WORD AND INCREMENT POINTER CAME AC-2,&17 ;WAS POINTER INCREMENTED CORRECTED ER12 AC-2,12713 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY JUMPL AC+2,G12710 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - IDPB ;VERIFY THAT IDPB WORKS WHEN BYTE IS IN AN AC AND ;POINTER IS IN CORE MEMORY AC=7 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12720: MOVSI AC-2,250600 HRRI AC-2,&17 MOVEM AC-2,BYTBLK ;SETUP POINTER HRLI AC-2,170600 ;POINTER FOR COMPARISON MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON MOVEI AC,654321 ;;SETUP AC IDPB AC,BYTBLK ;IDPB SHOULD PLACE 230702,,103700 INTO ;BYTE WORD AND INCREMENT POINTER MOVE AC-3,BYTBLK CAME AC-2,BYTBLK ;WAS POINTER INCREMENTED CORRECTLY ER5 AC-3,12721 ;FAILURE - POINTER WAS NOT INCREMENTED CORRECTLY CAIE AC,654321 ;WAS AC MODIFIED? ER3 AC,12722 ;FAILURE - AC WAS MODIFIED CAME AC-4,&17 ;WAS BYTE DEPOSITED CORRECTLY ER12 AC-4,12723 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY JUMPL AC+2,G12720 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - IDPB ;VERIFY THAT IDPB WORKS WHEN BOTH POINTER AND BYTE WORD ARE IN CORE MEMORY AC=6 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G12730: MOVSI AC-2,250600 HRRI AC-2,BYTBLK+3 MOVEM AC-2,BYTBLK ;SETUP POINTER HRLI AC-2,170600 ;POINTER FOR COMPARISON MOVE AC-4,[230703,,603700] MOVEM AC-4,BYTBLK+3 ;SETUP BYTE WORD MOVE AC-1,[230702,,103700] ;BYTE WORD FOR COMPARISON MOVEI AC,654321 ;SETUP AC IDPB AC,BYTBLK ;IDPB SHOULD PLACE 230702,,103700 INTO ;BYTE WORD AND INCREMENT POINTER MOVE AC-4,BYTBLK CAME AC-2,BYTBLK ;WAS POINTER MODIFIED? ER5 AC-4,12731 ;FAILURE - POINTER WAS MODIFIED MOVE AC-3,BYTBLK+3 CAME AC-1,BYTBLK+3 ;WAS BYTE DEPOSITED CORRECTLY ER12 AC-3,12732 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY CAIE AC,654321 ;WAS AC MODIFIED ER3 AC,12733 ;FAILURE - AC WAS MODIFIED JUMPL AC+2,G12730 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - LDB ;VERIFY THAT LDB WORKS WHEN BOTH POINTER AND BYTE ;ARE IN AC'S AC=5 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13000: MOVSI AC-2,170600 ;SETUP POINTER HRRI AC-2,&17 MOVE AC-3,&17 ;POINTER FOR COMPARISON MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD SETZ AC, ;SETUP AC MOVE AC-1,&17 ;BYTE WORD FOR COMPARISON LDB AC,&17 ;LDB SHOULD PLACE 0,,36 INTO THE AC CAME AC-2,&17 ;WAS POINTER MODIFIED? ER5 AC-2,13001 ;FAILURE - POINTER WAS MODIFIED CAIE AC,36 ;WAS BYTE LOADED CORRECTLY? ER3 AC,13002 ;FAILURE - BYTE NOT LOADED CORRECTLY. CAME AC-4,&17 ;WAS BYTE WORD MODIFIED ER12 AC-4,13003 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13000 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - LDB ;VERIFY THAT LDB WORKS WHEN POINTER IS IN AN AC AND ;BYTE IS IN CORE MEMORY AC=14 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13010: MOVSI AC-2,170600 ;SETUP POINTER HRRI AC-2,BYTBLK MOVE AC-3,&17 ;POINTER FOR COMPARISON MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON MOVEM AC-1,BYTBLK ;SETUP BYTE WORD SETZ AC, ;SETUP AC LDB AC,&17 ;LDB SHOULD PLACE 0,,36 INTO THE AC CAME AC-2,&17 ;WAS POINTER MODIFIED? ER5 AC-2,13011 ;FAILURE - POINTER WAS MODIFIED CAIE AC,36 ;WAS BYTE LOADED CORRECTLY? ER3 AC,13012 ;FAILURE - BYTE NOT LOADED CORRECTLY MOVE AC-5,BYTBLK CAME AC-1,BYTBLK ;WAS BYTE WORD MODIFIED? ER12 AC-5,13013 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13010 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - LDB ;VERIFY THAT LDB WORKS WHEN BYTE IS IN AN AC AND ;POINTER IS IN CORE MEMORY. AC=13 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13020: MOVSI AC-2,170600 HRRI AC-2,&17 ;POINTER FOR COMPARISON MOVEM AC-2,BYTBLK ;SETUP POINTER MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON SETZ AC, ;SETUP AC LDB AC,BYTBLK ;LDB SHOULD PLACE 20,,36 INTO THE AC MOVE AC-3,BYTBLK CAME AC-2,BYTBLK ;WAS POINTER MODIFIED? ER5 AC-3,13021 ;FAILURE - POINTER WAS MODIFIED CAIE AC,36 ;WAS BYTE LOADED CORRECTLY? ER3 AC,13022 ;FAILURE - BYTE NOT LOADED CORRECTLY CAME AC-4,&17 ;WAS BYTE WORD MODIFIED? ER12 AC-4,13023 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13020 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - LDB ;VERIFY THAT LDB WORKS WHEN BOTH POINTER AND BYTE WORD ARE IN CORE MEMORY. AC=12 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13030: MOVSI AC-2,170600 HRRI AC-2,BYTBLK+3 ;POINTER FOR COMPARISON MOVEM AC-2,BYTBLK ;SETUP POINTER MOVE AC-4,[230703,,603700] MOVEM AC-4,BYTBLK+3 ;SETUP BYTE WORD MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON SETZ AC, ;SETUP AC LDB AC,BYTBLK ;LDB SHOULD PLACE 20,,36 INTO THE AC MOVE AC-4,BYTBLK CAME AC-2,BYTBLK ;WAS POINTER MODIFIED? ER5 AC-4,13031 ;FAILURE - POINTER WAS MODIFIED MOVE AC-3,BYTBLK+3 CAME AC-1,BYTBLK+3 ;WAS BYTE WORD MODIFIED? ER12 AC-3,13032 ;FAILURE - BYTE WORD WAS MODIFIED CAIE AC,36 ;WAS BYTE LOADED CORRECTLY? ER3 AC,13033 ;FAILURE - BYTE NOT LOADED CORRECTLY JUMPL AC+2,G13030 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - ILDB ;VERIFY THAT ILDB WORKS WHEN BOTH POINTER AND BYTE ;ARE IN AC'S. AC=11 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13100: MOVSI AC-2,170600 ;SETUP POINTER HRRI AC-2,&17 MOVE AC-3,&17 HRLI AC-3,110600 ;POINTER FOR COMPARISON MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD SETZ AC, ;SETUP AC MOVE AC-1,&17 ;BYTE WORD FOR COMPARISON ILDB AC,&17 ;ILDB SHOULD PLACE 0,,3 INTO THE AC ;AND INCREMENT POINTER CAME AC-2,&17 ;WAS POINTER INCREMENTED CORRECTLY? ER5 AC-2,3101 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY CAIE AC,3 ;WAS BYTE LOADED CORRECTLY? ER3 AC,13102 ;FAILURE - BYTE NOT LOADED CORRECTLY CAME AC-4,&17 ;WAS BYTE WORD MODIFIED? ER12 AC-4,13103 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13100 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - ILDB ;VERIFY THAT ILDB WORKS WHEN POINTER IS IN AN AC AND ;BYTE IS IN CORE MEMORY AC=10 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13110: MOVSI AC-2,170600 ;SETUP POINTER HRRI AC-2,BYTBLK MOVE AC-3,&17 HRLI AC-3,110600 ;POINTER FOR COMPARISON MOVE AC-1,[230703,,603700] ;BYTEWORD FOR COMPARISON MOVEM AC,BYTBLK ;SETUP BYTE WORD SETZ AC, ;SETUP AC ILDB AC,&17 ;ILDB SHOULD PLACE 0,,3 INTO THE AC ;AND INCREMENT POINTER CAME AC-2,&17 ;WAS POINTER INCREMENTED CORRECTLY? ER5 AC-2,13111 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY CAIE AC,3 ;WAS BYTE LOADED CORRECTLY? ER3 AC,13012 ;FAILURE - BYTE NOT LOADED CORRECTLY MOVE AC-5,BYTBLK CAME AC-1,BYTBLK ;WAS BYTE WORD MODIFIED? ER12 AC-5,13113 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13110 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - ILDB ;VERIFY THAT ILDB WORKS WHEN BYTE IS IN AN AC AND ;POINTER IS IN CORE MEMORY AC=7 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13120: MOVSI AC-2,170600 HRRI AC-2,&17 MOVEM AC-2,BYTBLK ;SETUP POINTER HRLI AC-2,110600 ;POINTER FOR COMPARISON MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON SETZ AC ;SETUP AC ILDB AC,BYTBLK ;ILDB SHOULD PLACE 0,,3 INTO THE AC ;AND INCREMENT POINTER MOVE AC-3,BYTBLK CAME AC-2,BYTBLK ;WAS POINTER INCREMENTED CORRECTLY? ER5 AC-3,13121 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY CAIE AC,3 ;WAS BYTE LOADED CORRECTLY? ER3 AC,13122 ;FAILURE - BYTE NOT LOADED CORRECTLY CAME AC-4,&17 ;WAS BYTE WORD MODIFIED? ER12 AC-4,13123 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13120 ;LOOP ON ERROR SWITCH ;MSCL BYTE TESTS - ILDB ;VERIFY THAT ILDB WORKS WHEN BOTH POINTER AND BYTE WORD ARE IN CORE MEMORY AC=6 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13130: MOVSI AC-2,170600 HRRI AC-2,BYTBLK+3 MOVEM AC-2,BYTBLK ;SETUP POINTER HRLI AC-2,110600 ;POINTER FOR COMPARISON MOVE AC-4,[230703,,603700] MOVEM AC-4,BYTBLK+3 ;SETUP BYTE WORD MOVE AC-1,[230703,,603700] ;BYTE WORD FOR COMPARISON SETZ AC, ;SETUP AC ILDB AC,BYTBLK ;ILDB SHOULD PLACE 0,,3 INTO THE AC ;AND INCREMENT THE POINTER MOVE AC-4,BYTBLK CAME AC-2,BYTBLK ;WAS POINTER INCREMENTED CORRECTLY? ER5 AC-4,13131 ;FAILURE - POINTER NOT INCREMENTED CORRECTLY MOVE AC-3,BYTBLK+3 CAME AC-1,BYTBLK+3 ;WAS BYTE WORD MODIFIED? ER12 AC-3,13132 ;FAILURE - BYTE WORD WAS MODIFIED CAIE AC,3 ;WAS BYTE LOADED CORRECTLY? ER3 AC,13133 ;FAILURE - BYTE NOT LOADED CORRECTLY JUMPL AC+2,G13130 ;LOOP ON ERROR SWITCH ;TEST LDB WHEN SIZE OF BYTE IS ZERO BITS ;THE AC SHOULD BE CLEARED AC=5 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13200: MOVEI AC-2,&17 ;SETUP POINTER SETO AC, ;SETUP AC HRRZI AC-4,10 ;SETUP BYTE WORD LDB AC,&17 ;LDB SHOULD CLEAR THE AC CAIE AC,0 ;WAS AC CLEARED? ER3 AC,13201 ;FAILURE - AC WAS NOT CLEARED CAIE AC-2,&17 ;WAS POINTER MODIFIED? ER5 AC-2,13202 ;FAILURE - POINTER WAS MODIFIED CAIE AC-4,10 ;WAS BYTE WORD MODIFIED ER12 AC-4,13203 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13200 ;LOOP ON ERROR SWITCH ;TEST ILDB WHEN SIZE OF BYTE IS ZERO BITS ;THE AC SHOULD BE CLEARED AC=14 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13210: MOVEI AC-2,&17 ;SETUP POINTER SETO AC, ;SETUP AC HRRZI AC-4,10 ;SETUP BYTE WORD ILDB AC,&17 ;ILDB SHOULD CLEAR THE AC CAIE AC,0 ;WAS AC CLEARED ER3 AC,13211 ;FAILURE - AC WAS NOT CLEARED CAIE AC-2,&17 ;WAS POINTER MODIFIED ER5 AC-2,13212 ;FAILURE - POINTER WAS MODIFIED CAIE AC-4,10 ;WAS BYTE WORD MODIFIED? ER12 AC-4,13213 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13210 ;LOOP ON ERROR SWITCH ;TEST DPB WHEN SIZE OF BYTE IS ZERO BITS ;THE AC SHOULD NOT BE AFFECTED AC=13 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13220: MOVEI AC-2,&17 ;SETUP POINTER SETO AC, ;SETUP AC HRRZI AC-4,10 ;SETUP BYTE WORD DPB AC,&17 ;DPB SHOULD NOT MODIFY ANYTHING CAME AC,[-1] ;WAS AC MODIFIED? ER3 AC,13221 ;FAILURE - AC WAS MODIFIED CAIE AC-2,&17 ;WAS POINTER MODIFIED? ER5 AC-2,13222 ;FAILURE - POINTER WAS MODIFIED CAIE AC-4,10 ;WAS BYTE WORD MODIFIED? ER12 AC-4,13223 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13220 ;LOOP ON ERROR SWITCH ;TEST IDPB WHEN SIZE OF BYTE IS ZERO BITS ;TITE AC SHOULD NOT BE AFFECTED AC=12 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13230: MOVEI AC-2,&17 ;SETUP POINTER SETO AC, ;SETUP AC HRRZI AC-4,10 ;SETUP BYTE WORD IDPB AC,&17 ;IDPB SHOULD NOT MODIFY ANYTHING CAME AC,[-1] ;WAS AC MODIFIED? ER3 AC,13231 ;FAILURE - AC WAS MODIFIED CAIE AC-2,&17 ;WAS POINTER MODIFIED ER5 AC-2,13232 ;FAILURE - POINTER WAS MODIFIED CAIE AC-4,10 ;WAS BYTE WORD MODIFIED ER12 AC-4,13233 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13230 ;LOOP ON ERROR SWITCH ;TEST IBP WHEN SIZE OF BYTE IS ZERO BITS ;THE AC SHOULD NOT BE AFFECTED AC=11 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13240: MOVEI AC-2,&17 ;SETUP POINTER SETO AC, ;SETUP AC HRRZI AC-4,10 ;SETUP BYTE WORD SKIPN KLFLG IBP AC,&17 ;IBP SHOULD NOT MODIFY ANYTHING SKIPE KLFLG IBP 0,&17 ;KL10, DON'T DO ADJBP ! CAME AC,[-1] ;WAS AC MODIFIED? ER3 AC,13241 ;FAILURE - AC WAS MODIFIED CAIE AC-2,&17 ;WASPOINTER MODIFIED? ER5 AC-2,13242 ;FAILURE - POINTER WAS MODIFIED CAIE AC-4,10 ;WAS BYTE WORD MODIFIED ER12 AC-4,13243 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13240 ;LOOP ON ERROR SWITCH ;TEST LDB WHEN SIZE OF BYTE IS ONE BIT AC=10 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13300: MOVSI AC-2,430100 HRRI AC-2,&17 ;SETUP POINTER MOVE AC-1,&17 ;POINTER FOR COMPARISON HRROI AC,0 ;SETUP AC HRLZI AC-4,-1 ;SETUP BYTE WORD MOVE AC-3,&17 ;BYTE OWRD FOR COMPARISON LDB AC,&17 ;LDB SHOULD PLACE 0,,1 INTO THE AC CAIE AC,1 ;LOOP ON ERROR SWITCH ER3 AC,13301 ;FAILURE - BYTE NOT LOADED CORRECTLY CAME AC-2,&17 ;WAS POINTER MODIFIED? ER5 AC-2,13302 ;FAILURE POINTER WAS MODIFIED CAME AC-4,&17 ;WAS BYTE WORD MODIFIED? ER12 AC-4,13303 ;FAILURE - BYTE OWRD WAS MODIFIED JUMPL AC+2,G13300 ;LOOP ON ERROR SWITCH ;TEST LDB WHEN SIZE OF BYTE IS ONE BIT AC=7 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13310: MOVSI AC-2,100 HRRI AC-2,&17 ;SETUP POINTER MOVE AC-1,&17 ;POINTER FOR COMPARISON HRROI AC,0 ;SETUP AC HRLOI AC-4,0 ;SETUP BYTE WORD MOVE AC-3,&17 ;BYTE WORD FOR COMPARISON LDB AC,&17 ;LDB SHOULD PLACE 0,,1 INTO THE AC CAIE AC,1 ;LOOP ON ERROR SWITCH ER3 AC,13311 ;FAILURE - BYTE NOT LOADED CORRECTLY CAME AC-2,&17 ;WAS POINTER MODIFIED ER5 AC-2,13312 ;FAILURE - POINTER WAS MODIFIED CAME AC-4,&17 ;WAS BYTE WORD MODIFIED ER12 AC-4,13313 ;FAILURE - BYTE WORD WAS MODIFIED JUMPL AC+2,G13310 ;LOOP ON ERROR SWITCH ;TEST DPB WHEN SIZE OF BYTE IS ONE BIT AC=6 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13320: MOVSI AC-2,430100 HRRI AC-2,&17 ;SETUP POINTER MOVE AC-1,&17 ;POINTER FOR COMPARISON HRROI AC,76 ;SETUP AC MOVEM AC,&17 ;AC FOR COMPARISON SETO AC-4, ;SETUP BYTE WORD MOVE AC-3,[377777,,-1] ;BYTE WORD FOR COMPARISON DPB AC,&17 ;DPB SHOULD PLACE 377777,,-1 INTO BYTE WORD CAME AC,&17 ;WAS AC MODIFIED? ER3 AC,13321 ;FAILURE - AC WAS MODIFIED CAME AC-2,&17 ;WAS POINTER MODIFIED ER5 AC-2,13322 ;FAILURE - POINTER WAS MODIFIED CAME AC-4,&17 ;WAS BYTE DEPOSITED CORRECTLY ER12 AC-4,13323 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY JUMPL AC+2,G13320 ;LOOP ON ERROR SWITCH ;TEST DPB WHEN SIZE OF BYTE IS ONE BIT AC=5 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13330: MOVSI AC-2,100 HRRI AC-2,&17 ;SETUP POINTER MOVE AC-1,&17 ;POINTER FOR COMPARISON HRROI AC,76 ;SETUP AC MOVEM AC,&17 ;AC FOR COMPARISON SETO AC-4, ;SETUP BYTE WORD MOVE AC-3,[-2] ;BYTE WORD FOR COMPARISON DPB AC,&17 ;DPB SHOULD PLACE -1,,-2 INTO BYTE WORD CAME AC,&17 ;WAS AC MODIFIED ER3 AC,13331 ;FAILURE - AC WAS MODIFIED CAME AC-2,&17 ;WAS POINTER MODIFIED ER5 AC-2,13332 ;FAILURE - POINTER WAS MODIFIED CAME AC-4,&17 ;WAS BYTE DEPOSITED CORRECTLY ER12 AC-4,13333 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY JUMPL AC+2,G13330 ;LOOP ON ERROR SWITCH ;TEST IBP WHEN S IS GREATER THAN P AND THE ADDRESS FIELD OF THE POINTER IS 777777 ;IBP SHOULD CAUSE THE ADDRESS FIELD TO CLEAR AND P SHOULD BECOME 44-S AC=4 SAVEAC (1,1) JRSTF @[.+1] ;CLEAR ALL FLAGS G13400: HRLOI AC-2,000100 ;SETUP POINTER HRLZI AC-3,430101 ;RESULT FOR COMPARISON (KA) IBP &17 ;IBP SHOULD PLACE 430100,,0 INTO PTR CAME AC-2,&17 ;PASS IF POINTER UPATED CORRECTLY ER5 AC-2,13400 ;POINTER NOT UPDATED CORRECTLY JUMPL AC+2,G13400 ;LOOP ON ERROR SWITCH SUBTTL PART II - GENERAL BLOCK TRANSFER TEST MOVEI [ASCIZ/BLT FAILED/] MOVEM SPDES ;INITIALIZE SPECIAL FAILURE DESCRIPTOR ;VERFIY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF ZEROS ;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME ;AND WITHIN THE AC ADDRESS RANGE. AC=7 SAVEAC (1,1) SN=22100 SRCE=&17 ;SOURCE BLOCK=AC-6 DEST=&17 ;DESTINATION BLOCK=AC-6 SIZ=1 ;BLOCK SIZE = 1 OWRD G22100: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST SETOB SRCE-1,SRCE+1 ;PRELOAD SRCE-1 AND SRCE+1 WITH ONES SETZM SRCE ;LOAD SRCE WITH ZEROS BLT AC,DEST+SIZ-1 ;*BLT SHOULD CLEAR DEST BLOCK SN=SN+1 CAME DEST-1,[-1] ;WAS DEST-1 CLOBBERRED? ER2 DEST-1,SN ;DEST -1 WAS CLOBBERRED SN=SN+1 SKIPE DEST ;DID BLT LOAD DEST FROM SRCE? ER2 DEST,SN ;FAIL IF C(DEST) NON-ZERO SN=SN+1 CAME DEST+1,[-1] ;WAS DEST+1 CLOBBERRED? ER2 DEST+1,SN ;DEST +1 WAS CLOBBERRED JUMPL AC+2,G22100 ;LOOP ON ERROR SWITCH PAGE ;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF ONES ;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME ;AND WITHIN THE AC ADDRESS RANGE. AC=14 SAVEAC (1,1) SN=22200 SRCE=&17 ;SOURCE BLOCK = AC-6 DEST=&17 ;DESTINATION BLOCK = AC-6 SIZ=1 ;BLOCK = 1 WORD G22200: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST SETZB SRCE-1,SRCE+1 ;PRELOAD SRCE-1 AND SRCE+1 WITH ZEROS SETOM SRCE ;LOAD SRCE WITH ONES BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DEST WITH ONES SN=SN+1 SKIPE DEST-1 ;WAS DEST-1 CLOBBERRED? ER2 DEST-1,SN ;DEST-1 WAS CLOBBERRED SN=SN+1 CAME DEST,[-1] ;DID BLT LOAD DEST FROM SRCE? ER2 DEST,SN ;FAIL IF C(DEST) NOT ALL ONES SN=SN+1 SKIPE DEST+1 ;WAS DEST+1 CLOBBERRED? ER2 DEST+1,SN ;DEST+1 WAS CLOBBERRED JUMPL AC+2,G22200 ;LOOP ON ERROR SWITCH ;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF DATA ;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME ;AND WITHIN THE AC ADDRESS RANGE. AC=14 SAVEAC (1,1) SN=22300 SRCE=&17 ;SOURCE BLOCK = AC-6 DEST=&17 ;DESTINATION BLOCK = AC-6 SIZ=1 ;BLOCK SIZE = 1 WORD G22300: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF ARCE AND DEST SETZB SRCE-1,SRCE+1 ;CLEAR SRCE-1 AND SRCE+1 MOVE SRCE,[230703,,603700] ;PRELOAD SOURCE BLOCK BLT AC,DEST+SIZ-1 ;*BLT SHOULD PLACE C(SRCE) INTO DEST SN=SN+1 SKIPE DEST-1 ;WAS DEST-1 CLOBBERRED? ER2 DEST-1,SN ;DEST-1 WAS CLOBBERRED SN=SN+1 CAME DEST,[230703,,603700] ;DID BLT LOAD DEST FROM SRCE ER2 DEST,SN ;FAIL IF C(DEST) NOT 230703,,603700 SN=SN+1 SKIPE DEST+1 ;WAS DEST+1 CLOBBERRED? ER2 DEST+1,SN ;DEST+1 WAS CLOBBERRED JUMPL AC+2,G22300 ;LOOP ON ERROR SWITCH PAGE ;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF ZEROS ;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME ;AND BEYOND THE AC ADDRESS RANGE. AC=14 SAVEAC (1,1) SN=22400 SRCE=BLTBLK+1 ;SOURCE BLOCK = BLTBLK+1 DEST=BLTBLK+1 ;DEST BLOCK = BLTBLK+1 SIZ=1 ;BLOCK SIZE = 1 WORD G22400: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST SETOM SRCE-1 ;PRELOAD SRCE-1 WITH ONES SETZM SRCE ;LOAD SRCE WITH ZEROS SETOM SRCE+1 ;PRELOAD SRCE+1 WITH ONES BLT AC,DEST+SIZ-1 ;*BLT SHOULD CLEAR DEST BLOCK SN=SN+1 MOVE AC-1,DEST-1 CAME AC-1,[-1] ;WAS DEST-1 CLOBBERRED? ER2 AC-1,SN ;DEST-1 WAS CLOBBERRED SN=SN+1 MOVE AC-1,DEST SKIPE AC-1 ;DID BLT LOAD DEST FROM SRCE? ER2 AC-1,SN ;FAIL IF C(DEST) NOT ZERO SN=SN+1 MOVE AC-1,DEST+1 CAME AC-1,[-1] ;WAS DEST+1 CLOBBERRED? ER2 AC-1,SN ;DEST+1 WAS CLOBBERRED JUMPL AC+1,G22400 ;LOOP ON ERROR SWITCH ;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF ONES ;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME ;AND BEYOND THE AC ADDRESS RANGE. AC=13 SAVEAC (1,1) SN=22500 SRCE=BLTBLK+1 ;SOURCE BLOCK = BLTBLK+1 DEST=BLTBLK+1 ;DEST BLOCK = BLTBLK+1 SIZ=1 ;BLOCK SIZE = 1 WORD G22500: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST SETZM SRCE-1 ;PRELOAD SRCE-1 WITH ZEROS SETOM SRCE ;LOAD SRCE WITH ONES SETZM SRCE+1 ;PRELOAD SRCE+1 WITH ZEROS BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DEST BLOCK WITH ONES SN=SN+1 MOVE AC-1,DEST-1 SKIPE AC-1 ;WAS DEST-1 CLOBBERRED? ER2 AC-1,SN ;DEST-1 WAS CLOBBERRED SN=SN+1 MOVE AC-1,DEST CAME AC-1,[-1] ;DID BLT LOAD DEST FROM SRCE? ER2 AC-1,SN ;FAIL IF C(DEST) NOT ALL ONES SN=SN+1 MOVE AC-1,DEST+1 SKIPE AC-1 ;WAS DEST+1 CLOBBERRED? ER2 AC-1,SN ;DEST+1 WAS CLOBBERRED JUMPL AC+2,G22500 ;LOOP ON ERROR SWITCH PAGE ;VERIFY THAT BLT WILL TRANSFER A 1 - WORD BLOCK OF DATA ;WHERE BOTH SOURCE AND DESTINATION BLOCKS ARE THE SAME ;AND BEYOND THE AC ADDRESS RANGE. AC=12 SAVEAC (1,1) SN=22600 SRCE=BLTBLK+1 ;SOURCE BLOCK = BLTBLK+1 DEST=BLTBLK+1 ;DEST BLOCK = BLTBLK+1 SIZ=1 ;BLOCK SIZE = 1 WORD G22600: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH ADR OF SRCE AND DEST SETZM SRCE-1 ;PRELOAD SRCE-1 WITH ZEROS MOVE AC+1,[230703,,603700] ;LOAD SRCE BLOCK MOVEM AC+1,SRCE SETZM SRCE+1 ;PRELOAD SRCE+1 WITH ZEROS BLT AC,DEST+SIZ-1 ;*BLT SHOULD PLACE C(SRCE) INTO DEST SN=SN+1 MOVE AC-1,DEST-1 SKIPE AC-1 ;WAS DEST-1 CLOBBERRED? ER2 AC-1,SN ;DEST-1 WAS CLOBBERRED SN=SN+1 MOVE AC-1,DEST CAME AC-1,[230703,,603700] ;DID BLT LOAD DEST FROM SRCE? ER2 AC-1,SN ;FAIL IF C(DEST) NOT 230703,,603700 SN=SN+1 MOVE AC-1,DEST+1 SKIPE AC-1 ;WAS DEST+1 CLOBBERRED? ER2 AC-1,SN ;DEST+1 WAS CLOBBERRED JUMPL AC+1,G22600 ;LOOP ON ERROR SWITCH ;BOTH SOURCE AND DESTINATION BLOCKS HAVE AC ADDRESSES. BLTM1 (22700,14,<&17>,<&17>,0) PAGE ;BOTH SOURCE AND DESTINATION BLOCKS HAVE AC ADDRESSES. BLTM1 (23000,13,<&17>,<&17>,-1) PAGE ;BOTH SOURCE AND DESTINATION BLOCKS HAVE AC ADDRESSES. BLTM1 (23100,12,<&17>,<&17>,<230703,,603700>) PAGE ;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS BLTM1 (23200,14,<&17>,,0) PAGE ;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS BLTM1 (23300,13,<&17>,,-1) PAGE ;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS BLTM1 (23400,12,<&17>,,<230703,,603700>) PAGE ;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES BLTM1 (23500,11,,,0) PAGE ;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES BLTM1 (23600,10,,,-1) PAGE ;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES BLTM1 (23700,7,,,<230703,,603700>) PAGE ;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS BLTM1 (24000,14,,<&17>,0) PAGE ;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS BLTM1 (24100,13,,<&17>,-1) PAGE ;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS BLTM1 (24200,12,,<&17>,<230703,,603700>) ;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS ;- AC RANGE - ZEROS AC=14 SAVEAC (1,1) SN=20100 SRCE=&17 ;SOURCE BLOCK STARTING ADDRESS=&17 DEST=&17 ;DESTINATION BLOCK STARTING ADDRESS=&17 SIZ=5 ;BLOCK SIZE=5 WORDS G20100: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF SOURCE ;AND DESTINATION BLOCKS SETOB SRCE-1,SRCE+SIZ ;PRELOAD SOURCE BLOCK -1 AND LAST WORD OF ;SOURCE BLOCK +1 WITH ONES SETZB SRCE,SRCE+1 ;PRELOAD ALL WORDS OF SOURCE BLOCK WITH ZEROS SETZB SRCE+2,SRCE+3 SETZM SRCE+4 BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 CAME DEST-1,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 SKIPE DEST ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 SKIPE DEST+1 ;WAS SECOND WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 SKIPE DEST+2 ;WAS THIRD WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 SKIPE DEST+3 ;WAS FOURTH WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 SKIPE DEST+4 ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+SIZ,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK WAS CLOBBERED JUMPL AC+2,G20100 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS ;- AC RANGE - ONES AC=14 SAVEAC (1,1) SN=20200 SRCE=&17 ;SOURCE BLOCK STARTING ADDRESS=&17 DEST=&17 ;DESTINATION BLOCK STARTING ADDRESS=&17 SIZ=5 ;BLOCK SIZE=5 WORDS G20200: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF SOURCE ;AND DESTINATION BLOCKS SETZB SRCE-1,SRCE+SIZ ;PRELOAD SOURCE BLOCK -1 AND LAST WORD OF SOURCE ;BLOCK +1 WITH ZEROS SETOB SRCE,SRCE+1 ;PRELOAD ALL WORDS OF SOURCE BLOCK WITH ONES SETOB SRCE+2,SRCE+3 SETOM SRCE+4 BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 SKIPE DEST-1 ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 CAME DEST,[-1,,-1] ;WAS FIRST WORD OF DESTINATION BLOCK LOAED CORRECTLY ;FROM SOURCE? ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+1,[-1,,-1] ;WAS SECOND WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+2,[-1,,-1] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+3,[-1,,-1] ;WAS FOURTH WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+4,[-1,,-1] ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 SKIPE DEST+SIZ ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK WAS CLOBBERED JUMPL AC+2,G20200 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS ;- AC RANGE - SINGLE PATTERN AC=14 SAVEAC (1,1) SN=20300 SRCE=&17 ;SOURCE BLOCK STARTING ADDRESS=&17 DEST=&17 ;DESTINATION BLOCK STARTING ADDRESS=&17 SIZ=5 ;BLOCK SIZE=5 WORDS G20300: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS SETOB SRCE-1,SRCE+SIZ ;PRELOAD SOURCE BLOCK -1 AND LAST WORD OF SOURCE ;BLOCK +1 WITH ONES MOVE SRCE,[230703,,603700] ;PRELOAD ALL WORDS OF SOURCE BLOCK WITH ;230703,,603700 MOVE SRCE+1,[230703,,603700] MOVE SRCE+2,[230703,,603700] MOVE SRCE+3,[230703,,603700] MOVE SRCE+4,[230703,,603700] BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 CAME DEST-1,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 CAME DEST,[230703,,603700] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+1,[230703,,603700] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+2,[230703,,603700] ;WAS THIRD WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+3,[230703,,603700] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+4,[230703,,603700] ;WAS FIFTH WORD OF DESTINATION BLOCK ;NOT LOADED CORRECTLY FROM SOURCE ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+SIZ,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK WAS CLOBBERED JUMPL AC+2,G20300 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS ;- AC RANGE - MULTIPLE PATTERN AC=14 SAVEAC (1,1) SN=20400 SRCE=&17 ;SOURCE BLOCK STARTING ADDRESS=&17 DEST=&17 ;DESTINATION BLOCK STARTING ADDRESS=&17 SIZ=5 ;BLOCK SIZE=5 WORDS G20400: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS MOVE SRCE-1,[230703,,603700] ;PRELOAD WORD PRECEEDING FIRST WORD ;OF SOURCE BLOCK WITH 230703,,603700 MOVE SRCE,[252525,,252525] ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH ;252525,,252525 MOVE SRCE+1,[146314,,631463] ;PRELOAD SECOND WORD OF SOURCE BLOCK ;WITH 146314,,631463 MOVE SRCE+2,[070707,,070707] ;PRELOAD THIRD WORD OF SOURCE BLOCK ;WITH 070707,,070707 MOVE SRCE+3,[036074,,170360] ;PRELOAD FOURTH WORD OF SOURCE BLOCK ;WITH 036074,,170360 MOVE SRCE+4,[017407,,603701] ;PRELOAD FIFTH WORD OF SOURCE BLOCK ;WITH 017407,,603701 MOVE SRCE+SIZ,[007603,,607062] ;PRELOAD WORD FOLLOWING LAST WORD ;OF SOURCE BLOCK WITH 007603,,607062 BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 CAME DEST-1,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 CAME DEST,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+1,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+1,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+3,[036074,,170360] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+4,[017407,,603701] ;WAS FIFTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+SIZ,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK WAS CLOBBERED JUMPL AC+2,G20400 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS ;- NON-AC RANGE - ZEROS AC=13 SAVEAC (1,1) SN=20500 SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS=BLTBLK+1 DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1 SIZ=5 ;BLOCK SIZE=5 WORDS G20500: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS SETOM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WITH ONES SETZM SRCE ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK WITH ;ZEROS SETZM SRCE+1 SETZM SRCE+2 SETZM SRCE+3 SETZM SRCE+4 SETOM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WITH ONES BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 MOVE AC-2,DEST-1 CAME AC-2,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 MOVE AC-2,DEST SKIPE &17 ;WAS FIRST WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+1 SKIPE &17 ;WAS SECOND WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+2 SKIPE &17 ;WAS THIRD WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+3 SKIPE &17 ;WAS FOURTH WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+4 SKIPE &17 ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+SIZ CAME AC-2,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WAS CLOBBERED JUMPL AC+2,G20500 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS ;- NON-AC RANGE - ONES AC=12 SAVEAC (1,1) SN=20600 SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS=BLTBLK+1 DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1 SIZ=5 ;BLOCK SIZE=5 WORDS G20600: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS SETZM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WITH ZEROS SETOM SRCE ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK WITH ;ONES SETOM SRCE+1 SETOM SRCE+2 SETOM SRCE+3 SETOM SRCE+4 SETZM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WITH ZEROS BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 MOVE AC-2,DEST-1 SKIPE &17 ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 MOVE AC-2,DEST CAME AC-2,[-1,,-1] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+1 CAME AC-2,[-1,,-1] ;WAS SECOND WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+2 CAME AC-2,[-1,,-1] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+3 CAME AC-2,[-1,,-1] ;WAS FOURTH WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+4 CAME AC-2,[-1,,-1] ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED CORRECTLY ;FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+SIZ SKIPE &17 ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WAS CLOBBERED JUMPL AC+2,G20600 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS ;- NON-AC RANGE - SINGLE PATTERN AC=11 SAVEAC (1,1) SN=20700 SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS=BLTBLK+1 DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1 SIZ=5 ;BLOCK SIZE=5 WORDS G20700: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS SETOM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WITH ONES MOVE [230703,,603700] MOVEM SRCE ;PRELOAD ALL WORDS OF SOURCE BLOCK WITH 230703,,603700 MOVEM SRCE+1 MOVEM SRCE+2 MOVEM SRCE+3 MOVEM SRCE+4 SETOM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WITH ONES BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 MOVE AC-2,DEST-1 CAME AC-2,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 MOVE AC-2,DEST CAME AC-2,[230703,,603700] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+1 CAME AC-2,[230703,,603700] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+2 CAME AC-2,[230703,,603700] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+3 CAME AC-2,[230703,,603700] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FOURTH WORD OF DESTINATION BLOCK NOT LOADED CORRECTLY ;FROM SOURCE SN=SN+1 MOVE AC-2,DEST+4 CAME AC-2,[230703,,603700] ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+SIZ CAME AC-2,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 AC+2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WAS CLOBBERED JUMPL AC+2,G20700 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE AND DESTINATION BLOCKS HAVE SAME STARTING ADDRESS ;- NON-AC RANGE - MULTIPLE PATTERN AC=10 SAVEAC (1,1) SN=21000 SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS=BLTBLK+1 DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1 SIZ=5 ;BLOCK SIZE=5 WORDS G21000: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS MOVE [230703,,603700] MOVEM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WITH 230703,,603700 MOVE [252525,,252525] MOVEM SRCE ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH 252525,,252525 MOVE [146314,,631463] MOVEM SRCE+1 ;PRELOAD SECOND WORD OF SOURCE BLOCK ;WITH 146314,,631463 MOVE [070707,,070707] MOVEM SRCE+2 ;PRELOAD THIRD WORD OF SOURCE BLOCK WITH 070707,,070707 MOVE [036074,,170360] MOVEM SRCE+3 ;PRELOAD FOURTH WORD OF SOURCE BLOCK ;WITH 036074,,170360 MOVE [017407,,603701] MOVEM SRCE+4 ;PRELOAD FIFTH WORD OF SOURCE BLOCK WITH 017407,,603701 MOVE [007603,,607062] MOVEM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WITH 007603,,607062 BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 MOVE AC-2,DEST-1 CAME AC-2,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 MOVE AC-2,DEST CAME AC-2,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+1 CAME AC-2,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+2 CAME AC-2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+3 CAME AC-2,[036074,,170360] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+4 CAME AC-2,[017407,,603701] ;WAS FIFTH WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+SIZ CAME AC-2,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WAS CLOBBERED JUMPL AC+2,G21000 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING ;ADDRESS MINUS ONE - AC RANGE - MULTIPLE PATTERN AC=14 SAVEAC (1,1) SN=21100 SRCE=&17 ;SOURCE BLOCK STARTING ADDRESS= &17 DEST=&17 ;DESTINATION BLOCK STARTING ADDRESS= &17 SIZ=5 ;BLOCK SIZE=5 WORDS G21100: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS SETOM DEST-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WITH ONES MOVE DEST,[230703,,603700] ;PRELOAD FIRST WORD OF DESTINATION BLOCK ;WITH 230703,,603700 MOVE SRCE,[252525,,252525] ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH ;252525,,252525 MOVE SRCE+1,[146314,,631463] ;PRELOAD SECOND WORD OF SOURCE BLOCK ;WITH 146314,,631463 MOVE SRCE+2,[070707,,070707] ;PRELOAD THIRD WORD OF SOURCE BLOCK ;WITH 070707,,070707 MOVE SRCE+3,[036074,,170630] ;PRELOAD FOURTH WORD OF SOURCE BLOCK ;WITH 036074,,170630 MOVE SRCE+4,[017407,,603701] ;PRELOAD FIFTH WORD OF SOURCE BLOCK ;WITH 017407,,603701 MOVE SRCE+SIZ,[007603,,607062] ;PRELOAD WORD FOLLOWING LAST WORD ;OF SOURCE BLOCK WITH 007603,,607062 BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 CAME DEST-1,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 CAME DEST,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+1,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+3,[036074,,170630] ;WAS FOURTH WORD OF DESTINATION ;BLOCK LOADED CORRECTLY FROM SOURCE? ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+4,[017407,,603701] ;WAS LAST WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+4,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+SIZ,[017407,,603701] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+SIZ,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF SOURCE ;BLOCK CLOBBERED? ER2 SRCE+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WAS CLOBBERED JUMPL AC+2,G21100 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING ;ADDRESS MINUS ONE - NON-AC RANGE - MULTIPLE PATTERN AC=6 SAVEAC (1,1) SN=21200 SRCE=BLTBLK+2 ;SOURCE BLOCK STARTING ADDRESS= BLTBLK+2 DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS= BLTBLK+1 SIZ=5 ;BLOCK SIZE=5 WORDS G21200: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS SETOM DEST-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WITH ONES MOVE [230703,,603700] MOVEM DEST ;PRELOAD FIRST WORD OF DESTINATION BLOCK ;WITH 230703,,603700 MOVE [252525,,252525] MOVEM SRCE ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH 252525,,252525 MOVE [146314,,631463] MOVEM SRCE+1 ;PRELOAD SECOND WORD OF SOURCE BLOCK ;WITH 146314,,631463 MOVE [070707,,070707] MOVEM SRCE+2 ;PRELOAD THIRD WORD OF SOURCE BLOCK WITH 070707,,070707 MOVE [036074,,170630] MOVEM SRCE+3 ;PRELOAD FOURTH WORD OF SOURCE BLOCK ;WITH 036074,,170630 MOVE [017407,,603701] MOVEM SRCE+4 ;PRELOAD FIFTH WORD OF SOURCE BLOCK WITH 017407,,603701 MOVE [007603,,607062] MOVEM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WITH 007603,,607062 BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK ;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING ;ADDRESS MINUS ONE - NON-AC RANGE - MULTIPLE PATTERN (CONTINUED) SN=SN+1 MOVE AC-2,DEST-1 CAME AC-2,[-1,,-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 MOVE AC-2,DEST CAME AC-2,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+1 CAME AC-2,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+2 CAME AC-2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+3 CAME AC-2,[036074,,170630] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+4 CAME AC-2,[017407,,603701] ;WAS LAST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+SIZ CAME AC-2,[017407,,603701] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WAS CLOBBERED SN=SN+1 MOVE AC-2,SRCE+SIZ CAME AC-2,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF SOURCE ;BLOCK CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF SOURCE BLOCK WAS ;CLOBBERED JUMPL AC+2,G21200 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING ;ADDRESS PLUS ONE - AC RANGE - MULTIPLE PATTERN AC=14 SAVEAC (1,1) SN=21300 SRCE=&17 ;SOURCE BLOCK STARTING ADDRESS= &17 DEST=&17 ;DESTINATION BLOCK STARTING ADDRESS= &17 SIZ=5 ;BLOCK SIZE=5 WORDS G21300: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS MOVE SRCE-1,[230703,,603700] ;PRELOAD WORD PRECEEDING FIRST WORD ;OF SOURCE BLOCK WITH 230703,,603700 MOVE SRCE,[252525,,252525] ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH ;252525,,252525 MOVE SRCE+1,[146314,,631463] ;PRELOAD SECOND WORD OF SOURCE BLOCK ;WITH 146314,,631463 MOVE SRCE+2,[070707,,070707] ;PRELOAD THIRD WORD OF SOURCE BLOCK ;WITH 070707,,070707 MOVE SRCE+3,[036074,,170630] ;PRELOAD FOURTH WORD OF SOURCE BLOCK ;WITH 036074,,170630 MOVE SRCE+4,[017407,,603701] ;PRELOAD FIFTH WORD OF SOURCE BLOCK ;WITH 017407,,603701 MOVE SRCE+SIZ,[007603,,607062] ;PRELOAD WORD FOLLOWING LAST WORD ;OF SOURCE BLOCK WITH 007603,,607062 SETOM DEST+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WITH ONES BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK SN=SN+1 CAME SRCE-1,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF SOURCE ;BLOCK CLOBBERED? ER2 SRCE-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WAS CLOBBERED SN=SN+1 CAME SRCE,[252525,,252525] ;WAS FIRST WORD OF SOURCE BLOCK CLOBBERED ER2 SRCE,SN ;FAIL IF FIRST WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME DEST,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+1,[252525,,252525] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+2,[252525,,252525] ;WAS THIRD WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+3,[252525,,252525] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+4,[252525,,252525] ;WAS LAST WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+4,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+SIZ,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK WAS CLOBBERED JUMPL AC+2,G21300 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING ;ADDRESS PLUS ONE - NON-AC RANGE - MULTIPLE PATTERN AC=4 SAVEAC (1,1) SN=21400 SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS= BLTBLK+1 DEST=BLTBLK+2 ;DESTINATION BLOCK STARTING ADDRESS= BLTBLK+2 SIZ=5 ;BLOCK SIZE=5 WORDS G21400: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS MOVE [230703,,603700] MOVEM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WITH 23703,,603700 MOVE [252525,,252525] MOVEM SRCE ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH 252525,,252525 MOVE [146314,,146314] MOVEM SRCE+1 ;PRELOAD SECOND WORD OF SOURCE BLOCK ;WITH 146314,,631463 MOVE [070707,,070707] MOVEM SRCE+2 ;PRELOAD THIRD WORD OF SOURCE BLOCK WITH 070707,,070707 MOVE [036074,,170630] MOVEM SRCE+3 ;PRELOAD FOURTH WORD OF SOURCE BLOCK ;WITH 036074,,170630 MOVE [017407,,603701] MOVEM SRCE+4 ;PRELOAD FIFTH WORD OF SOURCE BLOCK WITH 017407,,603701 MOVE [007603,,607062] MOVEM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WITH 007603,,607062 SETOM DEST+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WITH ONES BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK ;DO A BLT WHERE DESTINATION STARTING ADDRESS EQUALS SOURCE STARTING ;ADDRESS PLUS ONE - NON-AC RANGE - MULTIPLE PATTERN (CONTINUED) SN=SN+1 MOVE AC-2,SRCE-1 CAME AC-2,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF SOURCE ;BLOCK CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WAS CLOBBERED SN=SN+1 MOVE AC-2,SRCE CAME AC-2,[252525,,252525] ;WAS FIRST WORD OF SOURCE BLOCK CLOBBERED ER2 AC-2,SN ;FAIL IF FIRST WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC-2,DEST CAME AC-2,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+1 CAME AC-2,[252525,,252525] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+2 CAME AC-2,[252525,,252525] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+3 CAME AC-2,[252525,,252525] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+4 CAME AC-2,[252525,,252525] ;WAS LAST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC-2,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC-2,DEST+SIZ CAME AC-2,[-1,,-1] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;CLOBBERED? ER2 AC-2,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WAS CLOBBERED JUMPL AC+2,G21400 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE BLOCK HAS AC ADDRESS AND DESTINATION BLOCK ;HAS NON-AC ADDRESS- MULTIPLE PATTERN AC=14 SAVEAC (1,1) SN=21500 SRCE=&17 ;SOURCE BLOCK STARTING ADDRESS=&17 DEST=BLTBLK+1 ;DESTINATION BLOCK STARTING ADDRESS=BLTBLK+1 SIZ=^D10 ;BLOCK SIZE=10 WORDS G21500: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS MOVE SRCE-1,[230703,,603700] ;PRELOAD WORD PRECEEDING FIRST WORD ;OF SOURCE BLOCK WITH 230703,,603700 MOVE SRCE,[252525,,252525] ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH ;252525,,252525 MOVE SRCE+1,[146314,,631463] ;PRELOAD SECOND WORD OF SOURCE BLOCK ;WITH 146314,,631463 MOVE SRCE+2,[070707,,070707] ;PRELOAD THIRD WORD OF SOURCE BLOCK ;WITH 070707,,070707 MOVE SRCE+3,[036074,,170630] ;PRELOAD FOURTH WORD OF SOURCE BLOCK ;WITH 036074,,170630 MOVE SRCE+4,[017407,,603701] ;PRELOAD FIFTH WORD OF SOURCE BLOCK ;WITH 017407,,603701 MOVE SRCE+5,[007700,,770077] ;PRELOAD SIXTH WORD OF SOURCE BLOCK ;WITH 007700,,770077 MOVE SRCE+6,[003760,,077401] ;PRELOAD SEVENTH WORD OF SOURCE BLOCK ;WITH 003760,,077401 MOVE SRCE+7,[001774,,007760] ;PRELOAD EIGHTH WORD OF SOURCE BLOCK ;WITH 001774,,007760 MOVE SRCE+^D8,[000777,,000777] ;PRELOAD NINTH WORD OF SOURCE BLOCK ;WITH 000777,,000777 MOVE SRCE+^D9,[000377,,600077] ;PRELOAD TENTH WORD OF SOURCE BLOCK ;WITH 000377,,600077 MOVE SRCE+SIZ,[007603,,607062] ;PRELOAD WORD FOLLOWING LAST WORD ;OF SOURCE BLOCK WITH 007603,,607062 MOVEM GSVAC0# HRROI DEST-1 MOVEM DEST-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WITH DEST-1 HRROI DEST MOVEM DEST ;PRELOAD FIRST WORD OF DESTINATION BLOCK WITH DEST HRROI DEST+1 MOVEM DEST+1 ;PRELOAD SECOND WORD OF DESTINATION BLOCK WITH DEST+1 HRROI DEST+2 MOVEM DEST+2 ;PRELOAD THIRD WORD OF DESTINATION BLOCK WITH DEST+2 HRROI DEST+3 MOVEM DEST+3 ;PRELOAD FOURTH WORD OF DESTINATION BLOCK WITH DEST+3 HRROI DEST+4 MOVEM DEST+4 ;PRELOAD FIFTH WORD OF DESTINATION BLOCK WITH DEST+4 HRROI DEST+5 MOVEM DEST+5 ;PRELOAD SIXTH WORD OF DESTINATION BLOCK WITH DEST+5 HRROI DEST+6 MOVEM DEST+6 ;PRELOAD SEVENTH WORD OF DESTINATION BLOCK WITH DEST+6 HRROI DEST+7 MOVEM DEST+7 ;PRELOAD EIGHTH WORD OF DESTINATION BLOCK WITH DEST+7 HRROI DEST+^D8 MOVEM DEST+^D8 ;PRELOAD NINTH WORD OF DESTINATION BLOCK WITH DEST+8 HRROI DEST+^D9 MOVEM DEST+^D9 ;PRELOAD TENTH WORD OF DESTINATION BLOCK WITH DEST+9 HRROI DEST+SIZ MOVEM DEST+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WITH DEST+SIZ MOVE GSVAC0 BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK ;DO A BLT WHERE SOURCE BLOCK HAS AC ADDRESS AND DESTINATION BLOCK ;HAS NON-AC ADDRESS- MULTIPLE PATTERN (CONTINUED) SN=SN+1 CAME SRCE-1,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF SOURCE ;BLOCK CLOBBERED? ER2 SRCE-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WAS CLOBBERED SN=SN+1 CAME SRCE,[252525,,252525] ;WAS FIRST WORD OF SOURCE BLOCK CLOBBERED ER2 SRCE,SN ;FAIL IF FIRST WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+1,[146314,,631463] ;WAS SECOND WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+1,SN ;FAIL IF SECOND WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+2,[070707,,070707] ;WAS THIRD WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+2,SN ;FAIL IF THIRD WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+3,[036074,,170630] ;WAS FOURTH WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+3,SN ;FAIL IF FOURTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+4,[017407,,603701] ;WAS FIFTH WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+4,SN ;FAIL IF FIFTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+5,[007700,,770077] ;WAS SIXTH WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+5,SN ;FAIL IF SIXTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+6,[003760,,077401] ;WAS SEVENTH WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+6,SN ;FAIL IF SEVENTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+7,[001774,,007760] ;WAS EIGHTH WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+7,SN ;FAIL IF EIGHTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+^D8,[000777,,000777] ;WAS NINTH WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+^D8,SN ;FAIL IF NINTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+^D9,[000377,,600077] ;WAS LAST WORD OF SOURCE BLOCK CLOBBERED? ER2 SRCE+^D9,SN ;FAIL IF LAST WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 CAME SRCE+SIZ,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF SOURCE ;BLOCK CLOBBERED? ER2 SRCE+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WAS CLOBBERED ;DO A BLT WHERE SOURCE BLOCK HAS AC ADDRESS AND DESTINATION BLOCK ;HAS NON-AC ADDRESS- MULTIPLE PATTERN (CONTINUED) SN=SN+1 MOVE AC+1,DEST-1 CAME AC+1,[-1,,DEST-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 MOVE AC+1,DEST CAME AC+1,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+1 CAME AC+1,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+2 CAME AC+1,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+3 CAME AC+1,[036074,,170630] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+4 CAME AC+1,[017407,,603701] ;WAS FIFTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+5 CAME AC+1,[007700,,770077] ;WAS SIXTH WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF SIXTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+6 CAME AC+1,[003760,,077401] ;WAS SEVENTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF SEVENTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+7 CAME AC+1,[001774,,007760] ;WAS EIGHTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF EIGHTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+^D8 CAME AC+1,[000777,,000777] ;WAS NINTH WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF NINTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+^D9 CAME AC+1,[000377,,600077] ;WAS LAST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 AC+1,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 MOVE AC+1,DEST+SIZ CAME AC+1,[-1,,DEST+SIZ] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION BLOCK ;WAS CLOBBERED JUMPL AC+2,G21500 ;LOOP ON ERROR SWITCH ;DO A BLT WHERE SOURCE BLOCK HAS NON-AC ADDRESS AND DESTINATION BLOCK ;HAS AC ADDRESS - MULTIPLE PATTERN AC=14 SAVEAC (1,1) SN=21600 SRCE=BLTBLK+1 ;SOURCE BLOCK STARTING ADDRESS= BLTBLK+1 DEST=&17 ;DESTINATION BLOCK STARTING ADDRESS= &17 SIZ=^D10 ;BLOCK SIZE=10 WORDS G21600: MOVE AC,[SRCE,,DEST] ;PRELOAD AC WITH STARTING ADDRESSES OF ;SOURCE AND DESTINATION BLOCKS MOVE [230703,,603700] MOVEM SRCE-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WITH 230703,,603700 MOVE [252525,,252525] MOVEM SRCE ;PRELOAD FIRST WORD OF SOURCE BLOCK WITH 252525,,252525 MOVE [146314,,631463] MOVEM SRCE+1 ;PRELOAD SECOND WORD OF SOURCE BLOCK ;WITH 146314,,631463 MOVE [070707,,070707] MOVEM SRCE+2 ;PRELOAD THIRD WORD OF SOURCE BLOCK WITH 070707,,070707 MOVE [036074,,170630] MOVEM SRCE+3 ;PRELOAD FOURTH WORD OF SOURCE BLOCK ;WITH 036074,,170630 MOVE [017407,,603701] MOVEM SRCE+4 ;PRELOAD ;FIFTH WORD OF SOURCE BLOCK WITH 017407,,603701 MOVE [007700,,770077] MOVEM SRCE+5 ;PRELOAD SIXTH WORD OF SOURCE BLOCK WITH 007700,,770077 MOVE [003760,,077401] MOVEM SRCE+6 ;PRELOAD SEVENTH WORD OF SOURCE BLOCK ;WITH 003760,,077401 MOVE [001774,,007760] MOVEM SRCE+7 ;PRELOAD EIGHTH WORD OF SOURCE BLOCK ;WITH 001774,,007760 MOVE [000777,,000777] MOVEM SRCE+^D8 ;PRELOAD NINTH WORD OF SOURCE BLOCK WITH 000777,,000777 MOVE [000377,,600077] MOVEM SRCE+^D9 ;PRELOAD TENTH WORD OF SOURCE BLOCK WITH 000377,,600077 MOVE [007603,,607062] MOVEM SRCE+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF SOURCE BLOCK ;WITH 007603,,607062 HRROI DEST-1,DEST-1 ;PRELOAD WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WITH DEST-1 HRROI DEST,DEST ;PRELOAD FIRST WORD OF DESTINATION BLOCK WITH DEST HRROI DEST+1,DEST+1 ;PRELOAD SECOND WORD OF DESTINATION BLOCK ;WITH DEST+1,DEST+1 HRROI DEST+2,DEST+2 ;PRELOAD THIRD WORD OF DESTINATION BLOCK WITH DEST+2 HRROI DEST+3,DEST+3 ;PRELOAD FOURTH WORD OF DESTINATION BLOCK WITH DEST+3 HRROI DEST+4,DEST+4 ;PRELOAD FIFTH WORD OF DESTINATION BLOCK WITH DEST+4 HRROI DEST+5,DEST+5 ;PRELOAD SIXTH WORD OF DESTINATION BLOCK WITH DEST+5 HRROI DEST+6,DEST+6 ;PRELOAD SEVENTH WORD OF DESTINATION BLOCK WITH DEST+6 HRROI DEST+7,DEST+7 ;PRELOAD EIGHTH WORD OF DESTINATION BLOCK WITH DEST+7 HRROI DEST+^D8,DEST+^D8 ;PRELOAD NINTH WORD OF DESTINATION BLOCK WITH DEST+8 HRROI DEST+^D9,DEST+^D9 ;PRELOAD TENTH WORD OF DESTINATION BLOCK WITH DEST+9 HRROI DEST+SIZ,DEST+SIZ ;PRELOAD WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK WITH DEST+SIZ BLT AC,DEST+SIZ-1 ;*BLT SHOULD LOAD DESTINATION BLOCK FROM SOURCE BLOCK ;DO A BLT WHERE SOURCE BLOCK HAS NON-AC ADDRESS AND DESTINATION BLOCK ;HAS AC ADDRESS - MULTIPLE PATTERN (CONTINUED) SN=SN+1 MOVE AC+1,SRCE-1 CAME AC+1,[230703,,603700] ;WAS WORD PRECEEDING FIRST WORD OF SOURCE ;BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF SOURCE BLOCK ;WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE CAME AC+1,[252525,,252525] ;WAS FIRST WORD OF SOURCE BLOCK CLOBBERED ER2 AC+1,SN ;FAIL IF FIRST WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+1 CAME AC+1,[146314,,631463] ;WAS SECOND WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF SECOND WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+2 CAME AC+1,[070707,,070707] ;WAS THIRD WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF THIRD WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+3 CAME AC+1,[036074,,170630] ;WAS FOURTH WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF FOURTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+4 CAME AC+1,[017407,,603701] ;WAS FIFTH WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF FIFTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+5 CAME AC+1,[007700,,770077] ;WAS SIXTH WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF SIXTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+6 CAME AC+1,[003760,,077401] ;WAS SEVENTH WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF SEVENTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+7 CAME AC+1,[001774,,007760] ;WAS EIGHTH WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF EIGTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+^D8 CAME AC+1,[000777,,000777] ;WAS NINTH WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF NINTH WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+^D9 CAME AC+1,[000377,,600077] ;WAS LAST WORD OF SOURCE BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF LAST WORD OF SOURCE BLOCK WAS CLOBBERED SN=SN+1 MOVE AC+1,SRCE+SIZ CAME AC+1,[007603,,607062] ;WAS WORD FOLLOWING LAST WORD OF SOURCE ;BLOCK CLOBBERED? ER2 AC+1,SN ;FAIL IF WORD FOLLOWING LAST WORD OF SOURCE BLOCK WAS ;CLOBBERED ;DO A BLT WHERE SOURCE BLOCK HAS NON-AC ADDRESS AND DESTINATION BLOCK ;HAS AC ADDRESS - MULTIPLE PATTERN (CONTINUED) SN=SN+1 CAME DEST-1,[-1,,DEST-1] ;WAS WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST-1,SN ;FAIL IF WORD PRECEEDING FIRST WORD OF DESTINATION ;BLOCK WAS CLOBBERED? SN=SN+1 CAME DEST,[252525,,252525] ;WAS FIRST WORD OF DESTINATION BLOCK LOADED ;CORRECTLY FROM SOURCE? ER2 DEST,SN ;FAIL IF FIRST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+1,[146314,,631463] ;WAS SECOND WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+1,SN ;FAIL IF SECOND WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+2,[070707,,070707] ;WAS THIRD WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+2,SN ;FAIL IF THIRD WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+3,[036074,,170630] ;WAS FOURTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+3,SN ;FAIL IF FOURTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+4,[017407,,603701] ;WAS FIFTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+4,SN ;FAIL IF FIFTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+5,[007700,,770077] ;WAS SIXTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+5,SN ;FAIL IF SIXTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+6,[003760,,077401] ;WAS SEVENTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+6,SN ;FAIL IF SEVENTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+7,[001774,,007760] ;WAS EIGHTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+7,SN ;FAIL IF EIGHTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+^D8,[000777,,000777] ;WAS NINTH WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+^D8,SN ;FAIL IF NINTH WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+^D9,[000377,,600077] ;WAS LAST WORD OF DESTINATION BLOCK ;LOADED CORRECTLY FROM SOURCE? ER2 DEST+^D9,SN ;FAIL IF LAST WORD OF DESTINATION BLOCK NOT LOADED ;CORRECTLY FROM SOURCE SN=SN+1 CAME DEST+SIZ,[-1,,DEST+SIZ] ;WAS WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK CLOBBERED? ER2 DEST+SIZ,SN ;FAIL IF WORD FOLLOWING LAST WORD OF DESTINATION ;BLOCK WAS CLOBBERED JUMPL AC+2,G21600 ;LOOP ON ERROR SWITCH ;TEST BLT WITH 'E' LESS THAN RH(AC) ;SUCH THAT THE BLT INSTR. TRANSFERS ONLY ONE WORD, THEN STOPS. AC=10 SAVEAC (1,1) SN=21700 BLTSRC=END+2 BLTDST=END+6 G21700: MOVE AC,[252525,,252525] ; PRELOAD FOR SRC-1 MOVEM AC,BLTSRC-1 MOVE AC,[707070,,707070] ; PRELOAD FOR SRC MOVEM AC,BLTSRC MOVE AC,[525252,,525252] ;PRELOAD FOR SRC+1 MOVEM AC,BLTSRC+1 MOVE AC,[123456,,654321] ;PRELOAD FOR DST-1 MOVEM AC,BLTDST-1 MOVE AC,[070707,,070707] ;PRELOAD FOR DST MOVEM AC,BLTDST MOVE AC,[112233,,445566] ;PRELOAD FOR DST+1 MOVEM AC,BLTDST+1 MOVE AC,[BLTSRC,,BLTDST] ;SETUP BLT PTR=FROM,,TO BLT AC,BLTDST-1 ;*BLT SHOULD XFER ONE WORD AND STOP SN=SN+1 CAME AC,[BLTSRC,,BLTDST] ;SEE IF PTR CHANGED ER2 AC,SN ;YES, REPORT SN=SN+1 MOVE AC,[252525,,252525] ;GET PRELOAD FOR SRC-1 CAME AC,BLTSRC-1 ;SEE IF OK ER2 AC,SN ;REPORT ERROR SN=SN+1 MOVE AC,[707070,,707070] ;GET PRELOAD FOR SRC CAME AC,BLTSRC ;SEE IF SRC OK ER2 AC,SN ; REPORT ERR SN=SN+1 MOVE AC,[525252,,525252] ;GET PRELOAD FOR SRC+1 CAME AC,BLTSRC+1 ;SEE IF OK ER2 AC,SN ;REPORT ER SN=SN+1 MOVE AC,[123456,,654321] ;GET PRELOAD FOR DST-1 CAME AC,BLTDST-1 ;SEE IF OK ER2 AC,SN ;REPORT ERR SN=SN+1 MOVE AC,[707070,,707070] ;GET PRELOAD FOR SRC*** CAME AC,BLTDST ;SEE IF IT XFERED A WORD ER2 AC,SN ;REPORT ER SN=SN+1 MOVE AC,[112233,,445566] ;GET PRELOAD FOR DST+1 CAME AC,BLTDST+1 ;SEE IF XFERED ONLY ONE WORD ER2 AC,SN ;REPORT ERR JUMPL AC+2,G21700 ;LOOP ON ERROR SWITCH SUBTTL PART III - GENERAL JFFO TEST ;VERIFY THAT JFFO WILL CLEAR AC+1 AND NOT JUMP WHEN C(AC)=0 G30000: SN=30100 AC=-1 MOVEI [ASCIZ/JFFO NO-JUMP FAILED/] MOVEM SPDES ;INITIALIZE SPECIAL FAILURE DESCRIPTOR G30100: REPEAT ^D13,< ;VERIFY THAT JFFO WILL CLEAR AC+1 AND NOT JUMP WHEN C(AC)=0. ;THIS TEST IS REPEATED 13 TIMES, ONCE FOR EACH USABLE AC. SN=SN+1 AC=&17 SAVEAC (1,1) SETZM AC ;CLEAR AC SETOM &17 ;INITIALIZE AC+1 JFFO AC,.+2 ;*JFFO SHOULD CLEAR AC+1 AND NOT JUMP JRST .+2 ;PASS IF JFFO DOES NOT JUMP ER2 AC,SN ;ERROR IF JFFO JUMPED SKIPE AC ;EXAMINE AC ER3 AC,SN ;C(AC) WAS CLOBBERED SKIPE &17 ;EXAMINE AC+1 ER4 AC+1,SN ;AC+1 WAS NOT CLEARED JUMPL AC+2,-^D9 ;LOOP ON ERROR SWITCH > PAGE ;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING ;ZEROS IN AC WHEN C(AC) IS NON-ZERO MOVEI [ASCIZ/JFFO JUMP FAILED/] MOVEM SPDES ;INITIALIZE SPECIAL FAILURE DESCRIPTER G30200: SETOB AC,&17 ;INITIALIZE AC AND AC+1 JFFO AC,.+2 ER2 AC,30201 ;ERROR IF JFFO DID NOT JUMP CAME AC,[-1,,-1] ;EXAMINE AC ER3 AC,30201 ;C(AC) WAS CLOBBERED SKIPE &17 ;EXAMINE AC+1 ER4 AC+1,30201 ;C(AC+1) NOT = TO NO OF LEADING ZEROS IN AC JUMPL AC+2,G30200 ;LOOP ON ERROR SWITCH ;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING ;ZEROS IN AC WHEN C(AC) IS NON-ZERO ;RIPPLE A ONE THROUGH A FIELD OF ZEROS IN THE AC TO TEST JFFO SN=30300 XX=1000000 ZZ=-1 G30300: REPEAT ^D18,< ;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING ;ZEROS IN AC WHEN C(AC) IS NON-ZERO ;RIPPLE A ONE THROUGH A FIELD OF ZEROS IN THE AC TO TEST JFFO SN=SN+1 XX=XX/2 ZZ=ZZ+1 MOVSI AC,XX ;INITIALIZE AC MOVE AC-2,AC ;INITIALIZE AC-2 FOR COMPARISON SETOM &17 ;INITIALIZE AC+1 JFFO AC,.+2 ;*JFFO SHOULD PLACE ZZ INTO AC+1 AND JUMP ER2 AC,SN ;ERROR IF JFFO DID NOT JUMP CAME AC,&17 ;EXAMINE AC ER3 AC,SN ;C(AC) WAS CLOBBERED CAIE AC+1,ZZ ;EXAMINE AC+1 ER4 AC+1,SN ;C(AC+1) NOT = NO. OF LEADING ZEROS IN AC JUMPL AC+2,.-^D9 ;LOOP ON ERROR SWITCH > PAGE SN=30400 XX=1000000 G30400: REPEAT ^D18,< ;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING ;ZEROS IN AC WHEN C(AC) IS NON-ZERO ;RIPPLE A ONE THROUGH A FIELD OF ZEROS IN THE AC TO TEST JFFO SN=SN+1 XX=XX/2 ZZ=ZZ+1 MOVEI AC,XX ;INITIALIZE AC MOVE AC-2,AC ;INITIALIZE AC-2 FOR LATER COMPARISON SETOM &17 ;INITIALIZE AC+1 JFFO AC,.+2 ;*JFFO SHOULD PLACE ZZ INTO AC+1 AND JUMP ER2 AC,SN ;ERROR IF JFFO DID NOT JUMP CAME AC,&17 ;EXAMINE AC ER3 AC,SN ;C(AC) WAS CLOBBERED CAIE AC+1,ZZ ;EXAMINE AC+1 ER4 AC+1,SN ;C(AC+1) NOT = NO. OF LEADING ERRORS IN AC JUMPL AC+2,.-^D9 ;LOOP ON ERROR SWITCH > ;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING ;ZEROS IN AC WHEN C(AC) IS NON-ZERO. ;THIS TEST IS REPEATED 13 TIMES, ONCE FOR EACH USABLE AC. SN=30500 AC=-1 G30500: REPEAT ^D13,< ;VERIFY THAT JFFO WILL JUMP AND SET AC+1 TO THE NO. OF LEADING ;ZEROS IN AC WHEN C(AC) IS NON-ZERO. ;THIS TEST IS REPEATED 13 TIMES, ONCE FOR EACH USABLE AC. SN=SN+1 AC=&17 SAVEAC (1,1) MOVSI AC,(1B<^O>) ;INITIALIZE AC MOVEM AC,GSVAC# ;INITIALIZE FOR LATER COMPARISON SETOM &17 ;INITIALIZE AC+1 JFFO AC,.+2 ;*JFFO SHOULD PLACE AC INTO AC+1 AC+1 AND JUMP ER2 AC,SN ;ERROR IF JFFO DID NOT JUMP CAME AC,GSVAC ;EXAMINE AC ER3 AC,SN ;C(AC) WAS CLOBBERED CAIE AC+1,AC ;EXAMINE AC+1 ER4 AC+1,SN ;C(AC+1) NOT = NO. OF LEADING ZEROS IN AC JUMPL AC+2,-^D9 ;LOOP ON ERROR SWITCH > LAST1: JRST BEGEND ;REPEAT DIAGNOSTIC IF1, BYTBLK: BLOCK ^D50 IF1, BLTBLK: BLOCK ^D200