3738 lines
108 KiB
Text
3738 lines
108 KiB
Text
SUBTTL DIAGNOSTIC SECTION
|
|
|
|
EXIT: DROPDV ;CLOSE LOGICAL OUTPUT FILE
|
|
EXIT
|
|
|
|
PGMNAM: ASCIZ/
|
|
PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (13) [DAKAM]
|
|
/
|
|
|
|
;INITIALIZE SUBROUTINES
|
|
|
|
START: PGMINT
|
|
MOVE [ASCIZ/AM/]
|
|
MOVEM TLET ;INITIALIZE TEST LETTER
|
|
|
|
STARTA: JRST G00 ;GO PERFORM DIAGNOSTIC
|
|
|
|
; GENERAL DESCRIPTION
|
|
;PART IA -BTYE LOGIC TESTS
|
|
;PART IB -GENERAL BYTE TEST
|
|
;PART II -GENERAL BLOCK TRANSFER TEST
|
|
;PART III -GENERAL JFFO TEST
|
|
SUBTTL PART IA - BYTE MANIPULATION
|
|
|
|
|
|
;PART IA - BYTE LOGIC TESTS
|
|
;INST-IBP
|
|
;TEST ABILITY TO FCE PSE AND DECODE
|
|
;PFIELD=14
|
|
;SFIELD=6
|
|
;BYTEWORD=0,-1
|
|
;DESTAC=0
|
|
;AN ERROR WILL OCCUR IF AC DIFFERS FROM 0
|
|
;FOLLOWING IBP
|
|
|
|
G00: AC=5
|
|
SAVEAC (1,1)
|
|
|
|
G100: MOVSI AC+1,140600 ;SETUP PNTR WORD
|
|
MOVEI ,-1 ;SETUP BYTE WORD
|
|
SETZ AC, ;SETUP DEST AC
|
|
IBP ,<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
|
|
|
|
;TEST IBP
|
|
G10000: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX-020000
|
|
ZZ=ZZ-020000
|
|
MOVSI AC-2,XX ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
IBP ,<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
|
|
|
|
;TEST IBP
|
|
G10100: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+020000
|
|
WW=WW-000200
|
|
ZZ=ZZ-000200
|
|
MOVSI AC-2,XX+WW ;SETUP FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
IBP ,<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
|
|
|
|
;TEST IBP
|
|
G10200: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+020000
|
|
ZZ=ZZ-000200
|
|
MOVSI AC-2,XX+ZZ ;SETUP AC-2
|
|
AOJ AC-2, ;FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
IBP ,<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
|
|
|
|
;TEST LDB
|
|
G10300: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+000100
|
|
ZZ=ZZ*2+1
|
|
MOVSI AC+1,XX ;SETUP PNTR WORD
|
|
HRLZI ,-1 ;SETUP BYTE WORD (AC0)
|
|
LDB AC,<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
|
|
|
|
;TEST LDB
|
|
G10400: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+3
|
|
ZZ=ZZ+030000
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
MOVEI ,7000 ;SETUP BYTE WORD
|
|
ROT ,XX ;ROTATE LEFT BY 3
|
|
LDB AC,<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
|
|
|
|
;TEST LOAD BYTE
|
|
G10500: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ-1
|
|
HRLI AC+1,220300 ;SETUP BYTE
|
|
HRRI AC+1,ZZ ;PNTR WORD
|
|
MOVSI ZZ,ZZ ;SETUP BYTE WORD
|
|
LDB AC,<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
|
|
|
|
;TEST LDB INDEXED
|
|
G10600: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ+1
|
|
MOVSI ,000300 ;SETUP NON IND PNTR WORD
|
|
HRLI ZZ,000300 ;SETUP INDEXED
|
|
HRRI ZZ,ZZ ;PNTR WORD
|
|
LDB AC,(ZZ) ;LOAD BYTE INDEXED
|
|
CAIE AC,ZZ ;TEST FOR AC NUMBER
|
|
ER3 AC,SN ;LDB FAILED
|
|
JUMPL AC+2,.-6 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-LDB
|
|
;BYTE PNTR INDIRECTLY ADDRESSED
|
|
;P FIELD=0
|
|
;S FIELD=3
|
|
;BYTE WORD=PNTR WORD
|
|
;AN ERROR WILL OCCUR IF LOADED
|
|
;BYTE DIFFERS FROM CURRENT
|
|
;AC NUMBER
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
SN=10700
|
|
ZZ=0
|
|
|
|
;TEST LDB INDIRECTLY ADDRESSED
|
|
G10700: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ+1
|
|
MOVSI AC+1,440300 ;SETUP DIRECTLY ADDRESSED PNTR WORD
|
|
HRRI AC+1,ZZ ;SETUP INDIRECT ADDRESS
|
|
HRLI ZZ,000300 ;SETUP INDIRECTLY ADDRESSED
|
|
HRRI ZZ,ZZ ;PNTR WORD
|
|
SETZ ;SETUP DIRECTLY ADDRESSED BYTE WORD
|
|
LDB AC,@<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
|
|
|
|
;TEST LDB INDEXED, INDIRECTLY ADDRESSED
|
|
G11000: REPEAT ^D3,<
|
|
SN=SN+1
|
|
VV=VV+1
|
|
WW=WW+1
|
|
XX=XX+1
|
|
ZZ=ZZ+1
|
|
MOVEI VV,WW ;SETUP INDEX AC
|
|
MOVEI WW,XX ;SETUP INDIRECT AC
|
|
HRLI XX,000600 ;SETUP INDEXED AND
|
|
HRRI XX,XX ;INDIRECT PNTR WORD
|
|
LDB AC,@(ZZ) ;LOAD BYTE INDEXED, INDIRECTLY ADDRESSED
|
|
CAIE AC,XX ;TEST LOAD BYTE=12,13,14
|
|
ER3 AC,SN ;LDB INDEXED, INDIRECTLY ADDRESSEDD FAILED
|
|
JUMPL AC+2,^D8 ;LOOP ON ERROR SWITCH
|
|
>
|
|
|
|
;INST-LDB
|
|
;INDEX BYTE ADDRESS
|
|
;P FIELD=0
|
|
;S FIELD=6
|
|
;INDEX AC=AC7
|
|
;BYTE WORD ADDRESS=AC 7,10,11,12,13
|
|
;AN ERROR WILL OCCUR IF LOADED BYTE
|
|
;DIFFERS CURRENT AC
|
|
|
|
AC=4
|
|
SAVEAC (1,1)
|
|
|
|
SN=11100
|
|
ZZ=6
|
|
|
|
;TEST LDB BYTE ADDR INDEXED
|
|
G11100: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ+1
|
|
MOVSI AC+1,000607 ;SETUP PNTR WORD
|
|
MOVEI AC+3,ZZ ;SETUP INDEX AC
|
|
MOVEI ZZ,ZZ ;SETUP BYTE WORD
|
|
LDB AC,<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
|
|
|
|
;TEST LDB, BYTE INDIRECTLY ADDRESSED
|
|
G11200: REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ+1
|
|
MOVSI AC+1,000620 ;SETUP PNTR WORD
|
|
MOVEI ,ZZ ;SETUP DEFER ADDRESS
|
|
MOVEI ZZ,ZZ ;SETUP BYTE WORD
|
|
LDB AC,<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
|
|
|
|
;TEST LDB, BYTE ADDR INDEXED AND INDIRECT
|
|
G11300: REPEAT ^D3,<
|
|
SN=SN+1
|
|
XX=XX+1
|
|
ZZ=ZZ+1
|
|
MOVSI AC+1,000627 ;SETUP PNTR WORD
|
|
MOVEI AC+3,ZZ ;SETUP INDEX AC
|
|
MOVEI ZZ,XX ;SETUP INDIRECT ADDR
|
|
MOVEI XX,XX ;SETUP BYTE WORD
|
|
LDB AC,<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
|
|
|
|
;TEST ILDB
|
|
G11400: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX-060000
|
|
ZZ=ZZ-6
|
|
MOVSI AC+1,XX ;SETUP PNTR WORD
|
|
MOVEI ,77 ;SETUP BYTE WORD
|
|
ROT ,ZZ ;ROTATE RIGHT
|
|
ILDB AC,<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
|
|
|
|
;TEST ILDB
|
|
G11500: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+600
|
|
ZZ=ZZ-6
|
|
MOVSI AC+1,XX ;SETUP PNTR WORD
|
|
MOVEI 1,77 ;SETUP BYTE WORD
|
|
ROT 1,ZZ ;ROTATE RIGHT BYTE WORD
|
|
ILDB AC,<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
|
|
|
|
;TEST DPB
|
|
G11700: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX+6
|
|
ZZ=ZZ+60000
|
|
MOVEI AC-2,55 ;SETUP AC-2
|
|
ROT AC-2,XX ;FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
SETZ ;SETUP DEST WORD
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
DPB AC,<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
|
|
|
|
;TEST DPB
|
|
G12000: REPEAT ^D5,<
|
|
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
|
|
|
|
;TEST IDPB
|
|
G12100: REPEAT ^D5,<
|
|
SN=SN+1
|
|
XX=XX-6
|
|
ZZ=ZZ+600
|
|
MOVEI AC-2,77 ;SETUP AC-2
|
|
ROT AC-2,XX ;FOR COMPARISON
|
|
MOVSI AC+1,ZZ ;SETUP PNTR WORD
|
|
MOVEI AC,77 ;SETUP BYTE WORD
|
|
SETZ 1, ;SETUP DEST WORD
|
|
IDPB AC,<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
|
|
;TEST IDPB
|
|
REPEAT ^D5,<
|
|
SN=SN+1
|
|
ZZ=ZZ-6
|
|
HRLI AC-2,-1 ;SETUP AC-2
|
|
HRRI AC-2,-23 ;FOR COMPARISON
|
|
ROT AC-2,ZZ ;ROTATE RIGHT BY 6
|
|
MOVEI AC,55 ;SETUP BYTE WORD
|
|
SETO ;SETUP DEST WORD (AC0)
|
|
IDPB AC,<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
|
|
|
|
;TEST LDB
|
|
G12210: REPEAT 2,<
|
|
SN=SN+1
|
|
XX=XX-2000
|
|
SETOB 0,2
|
|
MOVE 1,[525252,,525377] ;SETUP BYTE WORD
|
|
SETZM AC ;CLEAR DEST WORD
|
|
MOVE AC+1,[XX,,1] ;SETUP POINTER
|
|
LDB AC,<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
|
|
|
|
;TEST DPB
|
|
G12220: REPEAT 2,<
|
|
SN=SN+1
|
|
XX=XX-2000
|
|
SETOB 0,2
|
|
MOVE 1,[707070,,707070] ;SETUP DEST WORD
|
|
MOVE AC,[323232,,232323] ;SETUP BYTE WORD
|
|
MOVE AC+1,[XX,,1] ;SETUP POINTER
|
|
DPB AC,<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-2,12713 ;FAILURE - BYTE NOT DEPOSITED CORRECTLY
|
|
JUMPL AC+2,G12710 ;LOOP ON ERROR SWITCH
|
|
;MSCL BYTE TESTS - IDPB
|
|
;VERIFY THAT IDPB WORKS WHEN BYTE IS IN AN AC AND
|
|
;POINTER IS IN CORE MEMORY
|
|
|
|
AC=7
|
|
SAVEAC (1,1)
|
|
|
|
JRSTF @[.+1] ;CLEAR ALL FLAGS
|
|
|
|
G12720: MOVSI AC-2,250600
|
|
HRRI AC-2,<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,430101 ;RESULT FOR COMPARISON (KA)
|
|
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
|
|
;TEST BLT WITH 'E' LESS THAN RH(AC)
|
|
;SUCH THAT THE BLT INSTR. TRANSFERS ONLY ONE WORD, THEN STOPS.
|
|
|
|
AC=10
|
|
SAVEAC (1,1)
|
|
SN=21700
|
|
|
|
BLTSRC=END+2
|
|
BLTDST=END+6
|
|
|
|
G21700: MOVE AC,[252525,,252525] ; PRELOAD FOR SRC-1
|
|
MOVEM AC,BLTSRC-1
|
|
MOVE AC,[707070,,707070] ; PRELOAD FOR SRC
|
|
MOVEM AC,BLTSRC
|
|
MOVE AC,[525252,,525252] ;PRELOAD FOR SRC+1
|
|
MOVEM AC,BLTSRC+1
|
|
MOVE AC,[123456,,654321] ;PRELOAD FOR DST-1
|
|
MOVEM AC,BLTDST-1
|
|
MOVE AC,[070707,,070707] ;PRELOAD FOR DST
|
|
MOVEM AC,BLTDST
|
|
MOVE AC,[112233,,445566] ;PRELOAD FOR DST+1
|
|
MOVEM AC,BLTDST+1
|
|
|
|
MOVE AC,[BLTSRC,,BLTDST] ;SETUP BLT PTR=FROM,,TO
|
|
BLT AC,BLTDST-1 ;*BLT SHOULD XFER ONE WORD AND STOP
|
|
|
|
SN=SN+1
|
|
CAME AC,[BLTSRC,,BLTDST] ;SEE IF PTR CHANGED
|
|
ER2 AC,SN ;YES, REPORT
|
|
SN=SN+1
|
|
MOVE AC,[252525,,252525] ;GET PRELOAD FOR SRC-1
|
|
CAME AC,BLTSRC-1 ;SEE IF OK
|
|
ER2 AC,SN ;REPORT ERROR
|
|
SN=SN+1
|
|
MOVE AC,[707070,,707070] ;GET PRELOAD FOR SRC
|
|
CAME AC,BLTSRC ;SEE IF SRC OK
|
|
ER2 AC,SN ; REPORT ERR
|
|
SN=SN+1
|
|
MOVE AC,[525252,,525252] ;GET PRELOAD FOR SRC+1
|
|
CAME AC,BLTSRC+1 ;SEE IF OK
|
|
ER2 AC,SN ;REPORT ER
|
|
SN=SN+1
|
|
MOVE AC,[123456,,654321] ;GET PRELOAD FOR DST-1
|
|
CAME AC,BLTDST-1 ;SEE IF OK
|
|
ER2 AC,SN ;REPORT ERR
|
|
SN=SN+1
|
|
MOVE AC,[707070,,707070] ;GET PRELOAD FOR SRC***
|
|
CAME AC,BLTDST ;SEE IF IT XFERED A WORD
|
|
ER2 AC,SN ;REPORT ER
|
|
SN=SN+1
|
|
MOVE AC,[112233,,445566] ;GET PRELOAD FOR DST+1
|
|
CAME AC,BLTDST+1 ;SEE IF XFERED ONLY ONE WORD
|
|
ER2 AC,SN ;REPORT ERR
|
|
|
|
JUMPL AC+2,G21700 ;LOOP ON ERROR SWITCH
|
|
SUBTTL PART III - GENERAL JFFO TEST
|
|
|
|
;VERIFY THAT JFFO WILL CLEAR AC+1 AND NOT JUMP WHEN C(AC)=0
|
|
|
|
G30000: SN=30100
|
|
AC=-1
|
|
|
|
MOVEI [ASCIZ/JFFO NO-JUMP FAILED/]
|
|
MOVEM SPDES ;INITIALIZE SPECIAL FAILURE DESCRIPTOR
|
|
|
|
G30100: REPEAT ^D13,<
|
|
;VERIFY THAT JFFO WILL CLEAR AC+1 AND NOT JUMP WHEN C(AC)=0.
|
|
;THIS TEST IS REPEATED 13 TIMES, ONCE FOR EACH USABLE AC.
|
|
|
|
SN=SN+1
|
|
AC=<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
|
|
|