Google
 

Trailing-Edge - PDP-10 Archives - klad_sources - klad.sources/dakamm.mac
There are no other files named dakamm.mac in the archive.
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