Trailing-Edge
-
PDP-10 Archives
-
klad_sources
-
klad.sources/dskam1.mac
There are no other files named dskam1.mac in the archive.
EXIT: DROPDV ;CLOSE LOGICAL OUTPUT FILE
EXIT
PGMNAM: ASCIZ %
DECSYSTEM 2020 BASIC INSTRUCTION DIAGNOSTIC [DSKAM]
BYTE/BLT/JFFO/MISC
%
;INITIALIZE SUBROUTINES
START: PGMINT
MOVE [ASCIZ/AM/]
MOVEM TLET
STARTA: JRST PART1 ;GO PERFORM DIAGNOSTIC
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
PART1: AC=5
SAVEAC (1,1)
G100: MOVSI AC+1,140600 ;SETUP PNTR WORD
MOVEI ,-1 ;SETUP BYTE WORD
SETZ AC, ;SETUP DEST AC
IBP ,<AC+1>&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 ,<AC+1>&17 ;INC BYTE PNTR
CAME ,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT BYTE PNTR
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNPR
TRZ AC+1,1 ;CREAR ADDRESS FIELD OF POINTER
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT BYTE PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT BYTE PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT BYTE PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT BYTE PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT BYTE PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT BYTE PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT BYTE PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INCREMENT PNTR
TRZ AC+1,1 ;CLEAR BIT 35
CAME AC+1,<AC-2>&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 ,<AC+1>&17 ;INC PNTR WORD
CAME AC+1,<AC-2>&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,<AC+1>&17 ;COMPARISON
HRLI AC+1,061000 ;SETUP BYTE
HRRI AC+1,AC&17 ;PNTR WORD
IBP ,<AC+1>&17 ;INCREMENT PNTR
CAME AC+1,<AC-2>&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,<AC+1>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&17 ;LOAD BYTE
CAME AC,<AC-2>&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,<AC+1>&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,<AC+1>&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,@<AC+1>&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,<AC+1>&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,<AC+1>&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,<AC+1>&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,<AC+1>&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,<AC+1>&17 ;INC AND LOAD BYTE
CAME AC+1,<AC-2>&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,<AC+1>&17 ;INC AND LOAD BYTE
CAME ,AC ;TEST BYTE=000000777777
ER12 ,6101 ;BYTE WORD FAILED
CAME AC+1,<AC-2>&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,<AC+1>&17 ;INC AND LOAD BYTE
CAIE AC,77 ;TEST BYTE
ER3 AC,6201 ;AC FAILED
CAME AC+1,<AC-2>&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,<AC+1>&17 ;DEPOSIT BYTE (AC0)
CAME ,<AC-2>&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,<AC+1>&17 ;DEPOSIT BYTE (AC0)
CAME ,<AC-2>&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,<AC+1>&17 ;DEPOSIT BYTE (AC0)
CAME ,<AC-2>&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,<AC+1>&17 ;DEPOSIT BYTE (AC0)
CAME ,<AC-2>&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,<AC+1>&17 ;DEPOSIT BYTE (AC0)
CAME ,<AC-2>&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,<AC+1>&17 ;DEPOSIT BYTE (AC0)
CAME ,<AC-2>&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,<AC+1>&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,<AC+1>&17 ;INC AND DEPOSIT BYTE
CAME AC+1,<AC-2>&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
G10000: REPEAT ^D5, ;TEST IBP
<SN=SN+1
XX=XX-020000
ZZ=ZZ-020000
MOVSI AC-2,XX ;SETUP FOR COMPARISON
MOVSI AC+1,ZZ ;SETUP PNTR WORD
IBP ,<AC+1>&17 ;INC BYTE PNTR
CAME AC+1,<AC-2>&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
G10100: REPEAT ^D5, ;TEST IBP
<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 ,<AC+1>&17 ;INC BYTE PNTR
CAME AC+1,<AC-2>&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
G10200: REPEAT ^D5, ;TEST IBP
<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 ,<AC+1>&17 ;INC BYTE PNTR
CAME AC+1,<AC-2>&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
G10300: REPEAT ^D5, ;TEST LDB
<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,<AC+1>&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
G10400: REPEAT ^D5, ;TEST LDB
<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,<AC+1>&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
G10500: REPEAT ^D5, ;TEST LOAD BYTE
<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,<AC+1>&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
G10600: REPEAT ^D5, ;TEST LDB INDEXED
<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
G10700: REPEAT ^D5, ;TEST LDB INDIRECTLY ADDRESSED
<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,@<AC+1>&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
G11000: REPEAT ^D3, ;TEST LDB INDEXED, INDIRECTLY ADDRESSED
<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
G11100: REPEAT ^D5, ;TEST LDB BYTE ADDR INDEXED
<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,<AC+1>&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
G11200: REPEAT ^D5, ;TEST LDB, BYTE INDIRECTLY ADDRESSED
<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,<AC+1>&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
G11300: REPEAT ^D3, ;TEST LDB, BYTE ADDR INDEXED AND INDIRECT
<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,<AC+1>&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
G11400: REPEAT ^D5, ;TEST ILDB
<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,<AC+1>&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
G11500: REPEAT ^D5, ;TEST ILDB
<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,<AC+1>&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,<AC+1>&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
G11700: REPEAT ^D5, ;TEST DPB
<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,<AC+1>&17 ;DEPOSIT BYTE (AC0)
CAME ,<AC-2>&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
G12000: REPEAT ^D5, ;TEST DPB
<SN=SN+1
XX=XX+6
ZZ=ZZ+060000
IFE ZZ,<ZZ=000600>
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,<AC+1>&17 ;DEPOSIT BYTE (AC0)
CAME ,<AC-2>&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
G12100: REPEAT ^D5, ;TEST IDPB
<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,<AC+1>&17 ;INC AND DEPOSIT BYTE
CAME 1,<AC-2>&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
REPEAT ^D5, ;TEST IDPB
<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,<AC+1>&17 ;INC AND DEPOSIT BYTE
CAME ,<AC-2>&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
G12210: REPEAT 2, ;TEST LDB
<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,<AC+1>&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
G12220: REPEAT 2, ;TEST DPB
<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,<AC+1>&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 <AC-2>&17 ;*IBP SHOULD PLACE 110600,,0 INTO PTR
CAME AC-2,<AC-1>&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,<AC-2>&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,<AC-4>&17
MOVE AC-3,<AC-2>&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,<AC-2>&17 ;DPB SHOULD PLACE 230702.103700 INTO BYTE WORD
CAME AC-2,<AC-3>&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,<AC-1>&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,<AC-2>&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,<AC-2>&17 ;DPB SHOULD PLACE 230702,,103700 INTO BYTE WORD
CAME AC-2,<AC-3>&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,<AC-4>&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,<AC-1>&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,<AC-4>&17
MOVE AC-3,<AC-2>&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,<AC-2>&17 ;IDPB SHOULD PLACE 230702,,103700 INTO BYTE WORD
CAME AC-2,<AC-3>&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,<AC-1>&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,<AC-2>&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,<AC-2>&17 ;IDPB SHOULD PLACE 230702,,103700 INTO
;BYTE WORD AND INCREMENT POINTER
CAME AC-2,<AC-3>&17 ;WAS POINTER INCREMENTED CORRECTED
ER12 AC-5,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,<AC-4>&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,<AC-1>&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,<AC-4>&17
MOVE AC-3,<AC-2>&17 ;POINTER FOR COMPARISON
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
SETZ AC, ;SETUP AC
MOVE AC-1,<AC-4>&17 ;BYTE WORD FOR COMPARISON
LDB AC,<AC-2>&17 ;LDB SHOULD PLACE 0,,36 INTO THE AC
CAME AC-2,<AC-3>&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,<AC-1>&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,<AC-2>&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,<AC-2>&17 ;LDB SHOULD PLACE 0,,36 INTO THE AC
CAME AC-2,<AC-3>&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,<AC-4>&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,<AC-1>&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,<AC-4>&17
MOVE AC-3,<AC-2>&17
HRLI AC-3,110600 ;POINTER FOR COMPARISON
MOVE AC-4,[230703,,603700] ;SETUP BYTE WORD
SETZ AC, ;SETUP AC
MOVE AC-1,<AC-4>&17 ;BYTE WORD FOR COMPARISON
ILDB AC,<AC-2>&17 ;ILDB SHOULD PLACE 0,,3 INTO THE AC
;AND INCREMENT POINTER
CAME AC-2,<AC-3>&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,<AC-1>&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,<AC-2>&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,<AC-2>&17 ;ILDB SHOULD PLACE 0,,3 INTO THE AC
;AND INCREMENT POINTER
CAME AC-2,<AC-3>&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,<AC-4>&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,<AC-1>&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,<AC-4>&17 ;SETUP POINTER
SETO AC, ;SETUP AC
HRRZI AC-4,10 ;SETUP BYTE WORD
LDB AC,<AC-4>&17 ;LDB SHOULD CLEAR THE AC
CAIE AC,0 ;WAS AC CLEARED?
ER3 AC,13201 ;FAILURE - AC WAS NOT CLEARED
CAIE AC-2,<AC-4>&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,<AC-4>&17 ;SETUP POINTER
SETO AC, ;SETUP AC
HRRZI AC-4,10 ;SETUP BYTE WORD
ILDB AC,<AC-4>&17 ;ILDB SHOULD CLEAR THE AC
CAIE AC,0 ;WAS AC CLEARED
ER3 AC,13211 ;FAILURE - AC WAS NOT CLEARED
CAIE AC-2,<AC-4>&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,<AC-4>&17 ;SETUP POINTER
SETO AC, ;SETUP AC
HRRZI AC-4,10 ;SETUP BYTE WORD
DPB AC,<AC-4>&17 ;DPB SHOULD NOT MODIFY ANYTHING
CAME AC,[-1] ;WAS AC MODIFIED?
ER3 AC,13221 ;FAILURE - AC WAS MODIFIED
CAIE AC-2,<AC-4>&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,<AC-4>&17 ;SETUP POINTER
SETO AC, ;SETUP AC
HRRZI AC-4,10 ;SETUP BYTE WORD
IDPB AC,<AC-4>&17 ;IDPB SHOULD NOT MODIFY ANYTHING
CAME AC,[-1] ;WAS AC MODIFIED?
ER3 AC,13231 ;FAILURE - AC WAS MODIFIED
CAIE AC-2,<AC-4>&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,<AC-4>&17 ;SETUP POINTER
SETO AC, ;SETUP AC
HRRZI AC-4,10 ;SETUP BYTE WORD
SKIPN KLFLG
IBP AC,<AC-4>&17 ;IBP SHOULD NOT MODIFY ANYTHING
SKIPE KLFLG
IBP 0,<AC-4>&17 ;KL10, DON'T DO ADJBP !
CAME AC,[-1] ;WAS AC MODIFIED?
ER3 AC,13241 ;FAILURE - AC WAS MODIFIED
CAIE AC-2,<AC-4>&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,<AC-4>&17 ;SETUP POINTER
MOVE AC-1,<AC-2>&17 ;POINTER FOR COMPARISON
HRROI AC,0 ;SETUP AC
HRLZI AC-4,-1 ;SETUP BYTE WORD
MOVE AC-3,<AC-4>&17 ;BYTE OWRD FOR COMPARISON
LDB AC,<AC-2>&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,<AC-1>&17 ;WAS POINTER MODIFIED?
ER5 AC-2,13302 ;FAILURE POINTER WAS MODIFIED
CAME AC-4,<AC-3>&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,<AC-4>&17 ;SETUP POINTER
MOVE AC-1,<AC-2>&17 ;POINTER FOR COMPARISON
HRROI AC,0 ;SETUP AC
HRLOI AC-4,0 ;SETUP BYTE WORD
MOVE AC-3,<AC-4>&17 ;BYTE WORD FOR COMPARISON
LDB AC,<AC-2>&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,<AC-1>&17 ;WAS POINTER MODIFIED
ER5 AC-2,13312 ;FAILURE - POINTER WAS MODIFIED
CAME AC-4,<AC-3>&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,<AC-4>&17 ;SETUP POINTER
MOVE AC-1,<AC-2>&17 ;POINTER FOR COMPARISON
HRROI AC,76 ;SETUP AC
MOVEM AC,<AC-5>&17 ;AC FOR COMPARISON
SETO AC-4, ;SETUP BYTE WORD
MOVE AC-3,[377777,,-1] ;BYTE WORD FOR COMPARISON
DPB AC,<AC-2>&17 ;DPB SHOULD PLACE 377777,,-1 INTO BYTE WORD
CAME AC,<AC-5>&17 ;WAS AC MODIFIED?
ER3 AC,13321 ;FAILURE - AC WAS MODIFIED
CAME AC-2,<AC-1>&17 ;WAS POINTER MODIFIED
ER5 AC-2,13322 ;FAILURE - POINTER WAS MODIFIED
CAME AC-4,<AC-3>&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,<AC-4>&17 ;SETUP POINTER
MOVE AC-1,<AC-2>&17 ;POINTER FOR COMPARISON
HRROI AC,76 ;SETUP AC
MOVEM AC,<AC-5>&17 ;AC FOR COMPARISON
SETO AC-4, ;SETUP BYTE WORD
MOVE AC-3,[-2] ;BYTE WORD FOR COMPARISON
DPB AC,<AC-2>&17 ;DPB SHOULD PLACE -1,,-2 INTO BYTE WORD
CAME AC,<AC-5>&17 ;WAS AC MODIFIED
ER3 AC,13331 ;FAILURE - AC WAS MODIFIED
CAME AC-2,<AC-1>&17 ;WAS POINTER MODIFIED
ER5 AC-2,13332 ;FAILURE - POINTER WAS MODIFIED
CAME AC-4,<AC-3>&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,430100 ;RESULT FOR COMPARISON
IBP <AC-2>&17 ;IBP SHOULD PLACE 430100,,0 INTO PTR
CAME AC-2,<AC-3>&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=<AC-6>&17 ;SOURCE BLOCK=AC-6
DEST=<AC-6>&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=<AC-6>&17 ;SOURCE BLOCK = AC-6
DEST=<AC-6>&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=<AC-6>&17 ;SOURCE BLOCK = AC-6
DEST=<AC-6>&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,<<AC-6>&17>,<<AC-3>&17>,0)
PAGE
;BOTH SOURCE AND DESTINATION BLOCKS HAVE AC ADDRESSES.
BLTM1 (23000,13,<<AC-6>&17>,<<AC-3>&17>,-1)
PAGE
;BOTH SOURCE AND DESTINATION BLOCKS HAVE AC ADDRESSES.
BLTM1 (23100,12,<<AC-6>&17>,<<AC-3>&17>,<230703,,603700>)
PAGE
;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS
BLTM1 (23200,14,<<AC-6>&17>,<BLTBLK+4>,0)
PAGE
;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS
BLTM1 (23300,13,<<AC-6>&17>,<BLTBLK+4>,-1)
PAGE
;SOURCE BLOCK HAS AC ADDRESS, DESTINATION BLOCK HAS NON-AC ADDRESS
BLTM1 (23400,12,<<AC-6>&17>,<BLTBLK+4>,<230703,,603700>)
PAGE
;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES
BLTM1 (23500,11,<BLTBLK+1>,<BLTBLK+4>,0)
PAGE
;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES
BLTM1 (23600,10,<BLTBLK+1>,<BLTBLK+4>,-1)
PAGE
;BOTH SOURCE AND DESTINATION BLOCKS HAVE NON-AC ADDRESSES
BLTM1 (23700,7,<BLTBLK+1>,<BLTBLK+4>,<230703,,603700>)
PAGE
;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS
BLTM1 (24000,14,<BLTBLK+1>,<<AC-6>&17>,0)
PAGE
;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS
BLTM1 (24100,13,<BLTBLK+1>,<<AC-6>&17>,-1)
PAGE
;SOURCE BLOCK HAS NON-AC ADDRESS, DESTINATION BLOCK HAS AC ADDRESS
BLTM1 (24200,12,<BLTBLK+1>,<<AC-6>&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=<AC-10>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-10>&17
DEST=<AC-10>&17 ;DESTINATION BLOCK STARTING ADDRESS=<AC-10>&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=<AC-10>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-10>&17
DEST=<AC-10>&17 ;DESTINATION BLOCK STARTING ADDRESS=<AC-10>&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=<AC-10>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-10>&17
DEST=<AC-10>&17 ;DESTINATION BLOCK STARTING ADDRESS=<AC-10>&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=<AC-10>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-10>&17
DEST=<AC-10>&17 ;DESTINATION BLOCK STARTING ADDRESS=<AC-10>&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 <AC-2>&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 <AC-2>&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 <AC-2>&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 <AC-2>&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 <AC-2>&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 <AC-2>&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 <AC-2>&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=<AC-12>&17 ;SOURCE BLOCK STARTING ADDRESS= <AC-12>&17
DEST=<AC-13>&17 ;DESTINATION BLOCK STARTING ADDRESS= <AC-13>&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=<AC-13>&17 ;SOURCE BLOCK STARTING ADDRESS= <AC-13>&17
DEST=<AC-12>&17 ;DESTINATION BLOCK STARTING ADDRESS= <AC-12>&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=<AC-13>&17 ;SOURCE BLOCK STARTING ADDRESS=<AC-13>&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=<AC-13>&17 ;DESTINATION BLOCK STARTING ADDRESS= <AC-13>&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
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=<AC+1>&17
SAVEAC (1,1)
SETZM AC ;CLEAR AC
SETOM <AC+1>&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 <AC+1>&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,<AC+1>&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 <AC+1>&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 <AC+1>&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,<AC-2>&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 <AC+1>&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,<AC-2>&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=<AC+1>&17
SAVEAC (1,1)
MOVSI AC,(1B<^O<AC>>) ;INITIALIZE AC
MOVEM AC,GSVAC# ;INITIALIZE FOR LATER COMPARISON
SETOM <AC+1>&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,<PURGE BYTBLK>
BYTBLK: BLOCK ^D50
IF1,<PURGE BLTBLK>
BLTBLK: BLOCK ^D200