Google
 

Trailing-Edge - PDP-10 Archives - klad_sources - klad.sources/dakahm.mac
There are no other files named dakahm.mac in the archive.
SUBTTL	DIAGNOSTIC SECTION

	LALL

PGMNAM:	ASCIZ	/
PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC # 8 [DAKAH]
/
START:	SETZM	USER#		;CLEAR USER CONTROL WORD
	JSP	0,.+1		;GET FLAGS
	TLNE	USERF		;IN USER MODE?
	SETOM	USER		;YES, SET USER CONTROL WORD
	SKIPN	USER
	JRST	STARTA
	TTCALL	3,PGMNAM	;MENTION OUR NAME
	OUTSTR	[ASCIZ	/
?EXEC MODE DIAGNOSTIC ONLY
/]				;TELL USER
	HALT	.		;AND DIE...

STARTA:
ST:	SETZM	MATPOF#		;CLR MA TRAP OFFSET FLAG.
MOD:	SKIPE 1,SAV40		;RESTORE THESE LOC IF PROG
	MOVEM 1,10040			;IF PROG MODIFIED
	SKIPE 1,SAV41
	MOVEM 1,10041
	SKIPE 1,SAV42
	MOVEM 1,10042
	SKIPE 1,SAV43
	MOVEM 1,10043
	CONI CPSAV#
	CONI PI,PISAV#

	DATAI			;DO WE HAVE FP
	SKIPGE	MONCTL		;MONITR CONTROL ?
	MOVE	0,MONCTL	;YES
	ORCM [1B35]
	SETCAM FPTRAP#
	SETOM PI7SYS#

	DATAI			;IS THIS MACH WITH USER
	SKIPGE	MONCTL		;MONITR CONTROL ?
	MOVE	0,MONCTL	;YES
	ORCM [1B34]
	SETCAM USMOD#

	SKIPE	MATPOF#		;START AT 3776?
	JRST	MOD200		;YES. GO CK MA 29 SET.

;MACH/OPTION DEPENDENT
;TEST UU0

	RETURN MOD1		;TEST UUO FOR NOT GOING TO 60
	MOVE	1,[JRST .+4]	;IF THIS ROUT STOPS THE
	MOVE	2,[JSP MOD1+1]	;TRAP WAS TO 60. IF UU0 HANG
	MOVEM	2,61		;THE MACH, CHECK XCTF0 AND
	0			;UU0F0 FLAGS FOR NOT SETING
MOD1:	SKIPA			;CHECK MA 31 SET
	STOP			;IR 1XX GATE FAIL
MOD2:	RETURN	MOD3		;TEST 40 TO MA LOGIC (UU0)
	MOVE	1,[JRST .+3]	;IF 40 WAS NOT (J) TO MA
	0			;THIS UU0 WILL STORE IN LOC 0
MOD3:	SKIPA			;CHECK MA-30 SET
	STOP			;ON THE MA1 PRINT

MOD4:	RETURN	MOD5		;IF THE MA FROM AR
	MOVE	2,[JSP MOD5+1]	;INHIBIT (AT6) FAILED THE
	MOVEM	61		;UU0 WOULD STORE IN E ORED
	20			;WITH 40 RATHER THAN C(40)
MOD5:	SKIPA			;MA FM AR(J) CAME UP  CHECK
	STOP			;AND OF AT6-IR UU0 ON MA1 PRINT

MOD6:	RETURN	MOD7		;TEST UU0 ABILITY TO STORE
	0			;IF C(40) UNCHANGED SCE FAIL
MOD7:	CAMN	2,40		;CK IR UU0 INPUT TO SCE
	STOP			;ON S2 PRINT

MOD8:	RETURN	MOD9		;TEST SACINH FOR UU0
	SETO			;IF FAIL WILL MODIFY AC
	0			;SACINH THE IR UU0 INPUT
MOD9:	CAME	[-1]		;ON S2 PRINT FAILED
	STOP

MOD10:	RETURN	MOD11		;TEST UU0 FACINH, IF THE
	MOVEI	-1		;UU0 FETCHES A AC THE
	0			;AC WILL BE STORED
MOD11:	CAMN	40		;FAC INH THE IR UU0 INPUT
	STOP			;ON F2 PRINT FAIL

MOD12:	RETURN	MOD13		;TEST UU0 IR TO ARLT
	XWD	077740,0	;THE AND OF (ET0,IR UU0)
MOD13:	SKIPN	40		;ON ARC-2 PRINT FAILED
	STOP

MOD14:	RETURN	MOD15		;UU0 FAIL
	XWD	000740,0		;CHECK ARLT FM FLAGS (J) B
MOD15:	SKIPN	40		;THE PA ON ARC-2 PRINT
	STOP

MOD16:	RETURN	MOD17		;UU0 FAIL
	XWD	077000,0		;CHECK ARLT FM FLAGS (J) A
MOD17:	SKIPN	40		;THE PA ON ARC-2 PRINT
	STOP
	ZZ=40
MOD18:	REPEAT	^D10,
<	RETURN .+4		;TEST IRLT TO AR
	XWD	ZZ,0
	SKIPN	40
	STOP
	ZZ=ZZ+ZZ
>
MOD19:	RETURN	MOD19A		;TEST PROPER STORAGE
	0			;OF UU0
MOD19A:	SKIPE	40
	STOP

MOD20:	RETURN	MOD20A		;CK FOR STORING OF E
	XWD	0,-1		;ON A UU0
MOD20A:	MOVE	40
	CAIE	-1
	STOP

MOD21:	RETURN	MOD21A		;CK FOR STORING OF E
	XWD	077740,0	;ON A UU0
MOD21A:	MOVE	40
	CAME	[XWD 077740,0]
	STOP

MOD22:	RETURN	MOD22A		;CK FOR STORING OF
	XWD	077740,-1	;E AND IR ON UU0
MOD22A:	MOVE	40
	CAME	[XWD 077740,-1]
	STOP

MOD23:	RETURN	MOD23A		;UU0 TEST THE PC+1
	0			;INHIBIT FEATURE LOC 41
MOD23A:	ANDI	2,-1		;CONTAINS TSP 2,X
	CAIN	2,.		;PC+1 INH THE IR UU0 INPUT
	STOP			;FAILED. SEE PC1 PRINT

MOD24:	RETURN	MOD24A		;PC STORED IN CORRECTLY
	XWD	0,-1		;FROM THE JSP AT 41
MOD24A:	ANDI 2,-1		;ON A UUO INST
	CAIE	2,.-1
	STOP

MOD25:	;SET PRIVILEGE TO FLAG
	;SET UU0 TRAP
	;TEST IOT INST FOR
	;NOT TRAPING. SEE IR-2
	;PRINT IR UU0 CAME UP
MOD26:	;CK AND OF IR IOTA, NOT ALLOW, ETC

MOD27:	SFLAG	0		;MAKE SURE EX IOT USER=0
	RETURN	MOD28		;CK FOR NOT TRAP ON IOT
	CONI			;IF IOTS TRAP NOW THE
	CAI			;AND GATE EX USER (0), EX IOT USER
	SKIPA			;DID NOT RESPOND TO EX USER (0)
MOD28:	STOP			;SEE EX ALLOW IOTS ON EX PRINT

MOD29:	SETO	1,		;THE IOTS FAIL TO STORE C(E)
	DATAI	1		;CHECK IR IOT ON IR2 PRINT
	CONI	1		;LOOKS LIKE IR DECODE FAILED
	CAMN	1,[-1]
	STOP

MOD30:	MOVE	1,[123456654321]	;CHECK SCE FOR DATAI
	DATAI	1		;THE CONTENTS OF LOC1
	CAMN	1,[123456654321]	;WERE NOT MODIFIED. SEE
	STOP			;S1 PRINT SCE AND DECODE ON IOT

MOD31:	MOVE	1,[123456654321]	;CHECK SCE FOR CONI.  THE
	CONI	1		;CONTENTS OF LOC1 WERE NOT
	CAMN	1,[123456654321]	;MODIFIED.  SEE S2 PRINT SCE
	STOP			;AND DECODE ON IOT PRINT

MOD32:	SETO			;SACINH FAIL FOR INST
	CONI	1		;CONI FAILED. CHECK
	CAME	[-1]		;IR IOT INPUT TO SACINH
	STOP			;ON THE S2 PRINT

MOD33:	CONO	ME,0		;CLEAR LAST DEVICE
	CONI	ME,2		;AR CLEAR AT(ET0)FAILED
	CAIN	2,2		;ON INST CONT CK AR
	STOP			;CLEAR ETO, CONI ON ARC-2 PRINT

MOD34:	DATAO	ME,[0]		;AR CLR ON A DATAI
	DATAI	ME,3		;INST FAILED CHECK
	CAIN	3,3		;IOT DATAI INPUT ON THE
	STOP			;OR GATE TO AR CLR. SEE ARC-2 PRINT

	SETZ			;CONSZ FAIL TO SKIP. CK
	CONSZ			;PC+1 AT AND OF AD=0, IOT CONSZ,
	STOP			;IOT T5 ON PC1 PRINT

	CONO	ME,0		;CONSZ FAIL TO SKIP CK
	CONSZ	ME,700000		;FOR NO AR CLR AT (ETO). SEE ARC-2
	STOP			;PRINT THE IOT CONSX INPUT

	CONO	ME,0		;CONSO SKIPED.  CHECK PC+1
	CONSO	ME,0		;(IOT T5,AD=0,IOT CONSO,IOT CONSZ
	SKIPA			;AND GATES) ON PC1 PRINT
	STOP

MOD35:	SETZ	1,		;CHECK POINTER INC ON IOT BLK
	BLKO	ME,1		;IF C(1)=0 THEN AR FM AD(J) (ET0)
	CAI			;ON ARC-3 PRINT, OR AD+1 BOTH (FT9)
	CAI			;ON AD2 PRINT FAILED
	CAME	1,[XWD 1,1]	;IF IR 12 FAIL TO SET, PROG
	STOP			;BLOWS UP
MOD36:	SETZ	1,		;PC+1 INH FOR BLK FAILED
	BLKO	ME,1		;CHECK IOT BLK INPUT TO
	CAI			;PC+1 INH ON THE PC1 PRINT
	SKIPA
	STOP
MOD37:	SETZ	1,		;BLKO PC+1 AT ET0 TIME
	BLKO	ME,1		;FAILED. CHECK THE AND GATE
	STOP			;BLK, CYC(0) CRY(0) ON PC1 PRINT
MOD38:	SETO	1,		;BLKO PERFORMED A SKIP WHEN
	BLKO	ME,1		;END CRY0 SHOULD=1
	SKIPA			;CK PC+1,SEE ABOVE ROUTINE
	STOP
MOD39:	CONO PI,10000		;JUST IN CASE 
	CONO	435447		;SET SOME CPA FLAGS
	CONI	0		;(1) DID FLAGS SET? NO CONO FAIL
	SKIPN	0		;YES: CONI FAIL CK IOB TO AR
	STOP			;AND MANY OTHERS.  IE SINGLE STEP
MOD40:	CONO			;PIA 35 FAIL TO SET (CPU)
	CONO	1		;OR READ SINGLE STEP
	CONI			;SEE CPA PRINT
	TRNN	1
	STOP
MOD41:	CONO			;PIA 3+(CFU) FAIL TO SET
	CONO	2		;OR READ.  SEE CPA PRINT
	CONI			;SINGLE STEP
	TRNN	2
	STOP

MOD42:	CONO			;PIA 33 (CPU) FAIL TO SET
	CONO	4		;OR READ.  SEE CPA PRINT
	CONI			;SINGLE STEP
	TRNN	4
	STOP

MOD43:	CONO	1		;PIA 35 (CPU) FAIL TO CLEAR
	CONO			;OR READ INCORRECT
	CONI			;SEE CPA PRINT
	TRNE	1		;SINGLE STEP
	STOP

MOD44:	CONO	2		;PIA 34 (CPU) FAIL TO CLEAR
	CONO			;OR READ INCORRECTLY
	CONI			;SEE CPA PRINT
	TRNE	2		;SINGLE STEP
	STOP

MOD45:	CONO	4		;PIA 33 (CPU) FAIL TO CLEAR
	CONO			;OR READ INCORRECTLY
	CONI			;SEE CPA PRINT
	TRNE	4		;SINGLE STEP
	STOP

MOD46:	CONO	7		;SET SOME CP FLAGS
	CONSO			;CONSO FAILED  CK
	SKIPA
	STOP
MOD47:	CONO	7		;CONSO FAILED
	CONSO	7
	STOP
MOD48:	CONO	7		;CONSZ FAIL
	CONSZ	7		;CHECK PC+1 AT AND
	SKIPA			;OF AD=0, CONSZ, IOT T5
	STOP			;ON PC1 PRINT
MOD50:	CONO	40		;CPU AROV ENABLE
	CONO	20		;TRY TO SET
	CONSO	20
	STOP			;IOB OR FLOP
	CONO	20		;SET AROV EN
	CONO			;CK FOR NOT CLEARING
	CONSO	20
	STOP
	CONO	20		;SET AROV EN
	CONO	40		;TRY TO CLEAR
	CONSZ	20
	STOP
	CONO	40		;CLEAR AROV EN
	CONO			;CK FOR NOT SETTING
	CONSZ	20
	STOP
MOD51:	CONO	400		;FOV EN CLEAR
	CONO	200		;TRY TO SET
	CONSO	200
	STOP

	CONO	200		;SET FOV EN
	CONO			;CK FOR NOT CLEARING
	CONSO	200
	STOP

	CONO	200		;SET FOV EN
	CONO	400		;TRY TO CLEAR
	CONSZ	200
	STOP

	CONO	400		;CLEAR FOV EN
	CONO			;CK FOR NOT SETTING
	CONSZ	200
	STOP
MOD52:	CONO	4000		;CLEAR CLK EN
	CONO	2000		;TRY TO SET
	CONSO	2000
	STOP

	CONO	2000		;SET CLK EN
	CONO			;CK FOR NOT CLEARING
	CONSO	2000
	STOP

	CONO	2000		;SET CLK EN
	CONO	4000		;TRY TO CLEAR
	CONSZ	2000
	STOP

	CONO	4000		;CLEAR CLK EN
	CONO			;TEST FOR NOT SETTING
	CONSZ	2000
	STOP

MOD53:	CAM	-1		;SET NON-EX VIA F(CE)
	CONO	10000		;TRY TO CLEAR
	CONSZ	10000
	STOP			;FAIL TO CLEAR

	CONO	10000		;CLEAR NON-EX
	CAM	-1		;TRY TO SET VIA F(CE)
	CONSO	10000		;FAIL TO SET
	STOP			;CK MEM CNTL, CPA

	CONO	10000		;CLEAR NON-EX
	MOVEM	-1		;TRY TO SET VIA S(CE)
	CONSO	10000		;FAIL TO SET
	STOP

	CONO	10000		;CLEAR NON-EX
	ADDM	-1		;TRY TO SET VIA PSE
	CONSO	10000		;FAIL TO SET
	STOP

	CAM	-1		;SET NON EX
	CONO			;TEST FOR NOT CLEARING
	CONSO	10000		;ON CONO 0
	STOP
	CONO	10000
MOD54:	CONO	400000		;CLEAR PDL OV
	SETO			;TRY TO SET
	PUSH			;VIA PUSH
	CONSO 200000		;TEST FOR SET
	STOP			;CPA PRINT

	SETO
	PUSH			;SET PDL OV
	CONO 400000		;TRY TO CLEAR .CK
	CONSZ 200000		;CPA PDL OV SET (ET0) POP GATE
	STOP			;FLOP/IOB CPA PRINT

	SETO
	PUSH			;SET PDL OV
	CONO			;CK FOR NOT CLEARING
	CONSO 200000
	STOP

	CONO	400000		;TEST FOR NOT
	SETO			;SETTING PDL-OV
	AOS			;CPA PDL OV SET FAIL
	CONSZ 200000		;IR PUSH CRY(0) (1) AT ET0
	STOP			;AND GATE.  THE PUSH INPUT

MOD55:	CONO	400000		;CK PDL FLAG
	SETZ			;CPA PDL OV SET
	PUSH			;CK AND GATE OK
	CONSZ 200000		;ET0 IR PUSH,ADCRY0 (1)
	STOP			;THE CRY FLAG SHOULD PREVENT

	CONO	400000		;TRY TO SET PDL-OV
	SETO			;VIA PUSHJ
	PUSHJ	.+1		;THE AND GATE OF
	CONSO 200000		;PUSH,PUSHJ TO FROM
	STOP			;CPA PDL OV SET FAILED. SEE CPA PRINT

	CONO	400000		;TRY TO SET VIA POPS
	MOVEI	1		;CHECK AND GATE OF
	POP			;IR POPS, ET0, AD CRY 0(0)
	CONSO 200000		;TO CPA PDL OV SET
	STOP

	CONO	400000		;CHECK POPS FOR NOT
	MOVE	[XWD 1,1]		;SETTING PDL-OV
	POP			;AD CRY0(0) SHOULD PREVENT
	CONSZ 200000		;SEE ABOVE
	STOP
MOD56:	MOVSI	400000		;SET AROV FLAG
	ADD	[XWD 400000,0]	;CK IOB INPUT IOB1
	CONSO	10		;PRINT FOR MISSING
	STOP			;IOB BIT 32

	JFCL	17,.+1		;CHECK AROV STATUS
	CONSZ	10		;BIT 32 ON IOB
	STOP			;SEE IOB1 PRINT

	CONSZ	404440		;STATUS BITS NOT USED
	STOP			;SHOULD BE 0  IOB1 PRINT

	CONO	200000		;CLEAR THE WORLD
	SETZ			;ON IOT THE
	BLKI			;AND GATE OF IOT BLKI
	CAI			;BLKO WHICH MAKES IOT BLK
	CAME	[XWD 1,1]		;FAILED LOOK AT THE
	STOP			;BLKI INPUT

MOD57:	MOVSI	400000		;SET AROV FLAG
	ADD	[XWD 400000,0]	;A CONO WITH OUT
	CONO			;BIT 32 CLEARED IT
	JFCL	10,.+2		;SEE ARF PRINT CPA CONO
	STOP			;AND BIT 32

	MOVSI	400000		;SET AROV FLAG
	ADD	[XWD 400000,0]	;TRY TO CLEAR WITH
	CONO	10		;A CONO
	JFCL	10,.+2		;IT FAILED TO CLEAR
	SKIPA			;CHECK ARF PRINT
	STOP			;CPA CONO AND BIT 32

	MOVSI	1,40000
	JFCL	17,.+1		;SET FOV FLAG
	JRST	2,.+1(1)		;VIA RESET FLAGS
	CONO			;CONO WITHOUT BIT29
	JFCL	1,.+2		;CLEARED IT.  SEE ARF PRINT
	STOP			;CPA CONO SET AND IOB 29

MOD58:	MOVSI	1,40000
	JFCL	17,.+1		;SET FOV FLAG
	JRST	2,.+1(1)		;VIA RESET FLAGS
	CONO	100		;CONO FAIL TO CLEAR FOV
	JFCL	1,.+2		;SEE ARF PRINT
	SKIPA			;CONO CPU AND IOB
	STOP			;BIT 29

	JFCL	1,.+1		;AR FOV FLAG TO IOB
	CONSZ	100		;FAIL SEE IOB1 PRINT
	STOP			;AND CPA STATUS, AR FOV (1)

	MOVSI	1,40000
	JFCL	17,.+1		;SET FOV VIA
	JRST	2,.+1(1)		;RESTOR FLAGS
	CONSO	100		;FOV TO IOB FAIL
	STOP			;SEE IOB1 PRINT

	CONO	40000		;CPA ADDR BREAK
	CONSZ 40000		;STATUS FAIL
	STOP			;SEE CPA OR IOB1 PRINT

MOD59:	CONO	7		;A CONO TO P1 MODIFIED
	CONO	PI,0		;CPU AS A DEVICE.  BIO
	CONSO	7		;CPA SEL IS CONFUSED
	STOP

	CONO	10000		;JUST CHECKING FOR
	CAM .			;NOT NONEX AGAIN
	CONSZ	10000
	STOP

	CONO	PI,200000	;SEE IF PAR ERR
	CONSZ	PI,200000	;IS A ZERO
	STOP

	CONO	PI,400000	;SEE IF POWER FAIL
	CONSZ	PI,400000	;IS A ZERO
	STOP

	MOVEI	-1		;WAIT FOR CLOCK
	CONSZ	1000		;FLAG TO SET
	JRST	.+3
	SOJG	.-2
	STOP			;NO CLOCK FLAG

MOD60:	CONO	PI,100000	;CLEAR CPA PARITY ENB
	CONO PI,40000		;TRY TO SET IT
	CONSO	PI,100000	;ALSO PI AS DEVICE
	STOP

	CONO	PI,40000	;SET CPA PAR ENB
	CONO	PI,		;CK FOR NOT CLEAR
	CONSO	PI,100000
	STOP

	CONO	PI,40000	;SET CPA PAR ENB
	CONO	PI,100000	;TRY TO CLEAR
	CONSZ PI,100000
	STOP

	CONO	PI,100000	;CLEAR CPA PAR ENB
	CONO	PI,		;CK FOR NOT SET
	CONSZ	PI,100000	;ON CONO
	STOP

MOD70:	CLEAN			;SEE IOB1
	CONI	PI,0		;READ PI STATUS
	TRNE	77400		;A PI HOLD FLOP FAIL TO
	STOP			;CLEAR OR IOB PI INPUT
	MOVE	1,[MOVEI 40]	;STORE A MOVIT IN
	MOVEM	1,(1)		;LOCATIONS 40 TO 60
	CAME	1,[MOVEI 57]
	AOJA	1,.-2

DEFINE	BLURB<
;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
;INSTRUCTION
>
DEFINE	PIO	(A)
<	CLEAN
	CONO	PI,PIOSET+A	;PIO FAIL TO SET IF LIGHT OUT
	CONSO	PI,A		;OTHERWISE FAIL TO READ
	STOP			;STATUS SE P12-IOB1 PRINT

	CLEAN			;CHECK PIO CLEAR
	CONO	PI,PIOSET+A	;SET PIO
	CONO	PI,PIOCLR+A	;TRY TO CLEAR
	CONSZ	PI,A		;LIGHT=FAIL TO CLEAR PI2 PRINT
	STOP			;NO LIGHT=STATUS FAIL IOB1 PRINT

	CLEAN			;CHECK FOR PI RESET
	CONO	PI,PIOSET+A	;ABILITY TO CLEAR PIO FLAG
	CONO	PI,10000	;SEE PI2 PRINT, PI RESET
	CONSZ	PI,A		;TO PIO FLAGS
	STOP

	CLEAN			;TEST PIO SET
	CONO	PI,PIOSET	;SEE PI2 PRINT
	CONSZ	PI,A		;IT SET FLOP WITHOUT
	STOP			;A IOB BIT

	CLEAN			;TEST PIO CLR
	CONO	PI,PIOSET+A	;PERHAPS PI RESET OCCURED (NO IOB-23)
	CONO	PI,PIOCLR	;THE FLOP CLEARED
	CONSO	PI,A		;WITH OUT A IOB BIT
	STOP			;SEE PI2 PRINT
>
MOD71:	CLEAN			;CHECK PIO SET
	CONO	PI,PIOSET+177	;THE PI CHANNEL FLOPS
	CONSO	PI,177		;FAILED TO SET
	STOP			;CHECK PI1 PRINT

MOD72:	PIO 100
	PIO 40

MOD73:	CHANEL	MOD75
	PIO 20
	PIO 10

MOD74:	PIO 4
	PIO 2
	PIO 1
MOD75:	CLEAN
MOD76:	CLEAN
	CONO	PI,PIOSET+100	;PI RESET OCCURED
	CONO	PI,0		;WITH OUT IOB-23
	CONSO	PI,100		;SEE PI1 PRINT
	STOP

	CLEAN			;PI RESET OCCURED
	CONO	PI,PIOSET+100	;WITH OUT PI SEL
	CONO	ME,1000		;SEE PI1 PRINT
	CONSO	PI,100
	STOP

	CLEAN
	CONO	PI,PIOSET+100	;CHECK SELECTION
	CONO	ME,PIOCLR+100	;ON CONO SETL. SEE
	CONSO	PI,100		;PI1 PRINT  CONO ME
	STOP			;SHOULD NOT EFFECT PI
MOD77:	CLEAN
	CONO	PI,ACT		;SET ACTIVE THEN
	CONO	PI,10000	;TRY TO CLEAR VIA PI RESET
	CONSZ	PI,200		;FAIL TO CLEAR  SEE P11 PRINT
	STOP			;THE PI ACT FLAG
	CLEAN
	CONO	PI,ACT		;SET ACTIVE THEN
	CONO	PI,400		;TRY TO CLEAR VIA CONO
	CONSZ	PI,200		;AND BIT27 SEE PI1
	STOP			;PRINT ACTIVE FLAG
	CLEAN
	CONO	PI,ACT		;SEE ACT VIA CONO BIT 28
	CONSO	PI,200		;LIGHT=0 FAIL TO SET
	STOP			;LIGHT=(1) FAIL TO READ PI1-IOB1
	CLEAN
	CONO	PI,ACT		;SEE ABOVE
	CONO	PI,ACT
	CONSO	PI,200
	STOP			;PI ACT FAIL

DEFINE	NOTPIR	(A)<
	CLEAN			;ENABLE PRIORITY, EXPECT NO INTERRUPTS
	CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
	CONSZ	PI,A		;PIR (1) INPUT TO AND GATE OF PIH (0)
	STOP			;BOTTEM OF PAGE.  ALSO PIR-FLOP
>
MOD78:	BLURB
;CHECK CHANNEL 1, PIR1 FLOP OR RI REQ1 LEVEL
	NOTPIR	40000
;CHECK CHANNEL 2, PIR2  FLOP OR PI REQ2 LEVEL
	NOTPIR	20000
;CHECK CHANNEL 3, PIR3 FLOP OR PI REQ3 LEVEL
	NOTPIR	10000
;CHECK CHANNEL 4, PIR4 FLOP OR PI REQ4 LEVEL
	NOTPIR	4000
;CHECK CHANNEL 5, PIR5 FLOP OR PI REQ5 LEVEL
	NOTPIR	2000
;CHECK CHANNEL 6, PIR6 FLOP OR PI REQ6 LEVEL
	NOTPIR	1000
;CHECK CHANNEL 7, PIR 7 FLOP OR PI REQ7 LEVEL
	NOTPIR	400

DEFINE	NOTREQ	(A,B)<
	CLEAN			;A TEST OF PI OK TO PREVENT INTERRUPT
	CONO	PI,PIREQ+A	;ACTIVE CLEARED, REQUEST FLAG SET
	CONSZ	PI,B		;INTR OCCURED PIOK INPUT, PIOK TO PI
	STOP			;REQ FAIL.  SEE BOTTEM PI2 PRINT
>

MOD79:	BLURB
;TEST PI ACT ABILITY TO PREVENT PI REQ1, INTERRUPT VIA ACTIVE
	NOTREQ	100,40000
;TEST PIOK2 ABILITY TO PREVENT PI REQ2, INTERRUPT
	NOTREQ	40,20000
;TEST PIOK3 ABILITY TO PREVENT PI REQ3, INTERRUPT
	NOTREQ	20,10000
;TEST PIOK4 ABILITY TO PREVENT PI REQ4, INTERRUPT
	NOTREQ	10,4000
;TEST PIOK5 ABILITY TO PREVENT PI REQ5, INTERRUPT
	NOTREQ	4,2000
;TEST PIOK6 ABILITY TO PREVENT PI REQ6, INTERRUPT
	NOTREQ 2,1000
;TEST PIOK7 ABILITY TO PREVENT PI REQ7, INTERRUPT
	NOTREQ	1,400
DEFINE	PIRCLR	(A)<
	CLEAN
	CONO	PI,PIREQ+A	;SET REQUEST FLOP BUT
	SETZ			;NOT ACTIVE THEN CLEAR
	CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
	SKIPE			;PI RESET FAILED TO CLEAR
	STOP			;THE PIR FLAG.`SEE PI2 PRINT
>

ZZ=100				;CHECK CLEAR TO PIR FLAGS
	REPEAT	7,<
	PIRCLR	ZZ
	ZZ=ZZ/2>

DEFINE	FILAC<
	MOVE	17,[MOVEI 17]	;FILL ACS WITH
	MOVEM	17,(17)		;MOVEI TO AC 0
	CAME	17,[MOVEI 0]	;THE CURRENT LOC
	SOJA	17,.-2
	MOVE	17,[MOVEI 17]
>

	FILAC

	CLEAN			;CHECK PC+1 INHIBIT ON INTERRUPT
	MOVE	[MOVEI]
	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
	SKIPA			;PC+1 INH ON PC1 PRINT FAIL
	STOP			;SEE P1 CYC(1) INPUT
	BLURB
MOD80:	CLEAN
	MOVE	[MOVEI]		;IF LOC 0 EXECUTED C(0)=0
	CONO PI,ACT+PIREQ+100	;CAUSE AN INTERRUPT
	SKIPN	0		;MA FM PICH (1) PULSE FAIL
	STOP			;SEE MA1 PRINT
	CLEAN
	MOVE	[MOVEI]
	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT IF MA
	CAIN	40		;34 SET FAIL C(0)=40
	STOP			;SEE MA1 PRINT
	CLEAN
	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
	CAIN	2		;MA 30 SET FAILED
	STOP			;SEE MA1 PRINT
	CLEAN
	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
	CAIN	46		;MA 33 SET OUCCRED ON CH1
	STOP			;SEE MA1 PRINT
MOD81:	CLEAN
	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
	CAIN	52		;MA 32 SET OCCURED ON CH1
	STOP			;SEE MA1 PRINT

	CLEAN
	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
	CAIN	43		;MA 35 SET OUCCURED ON CH1
	STOP			;SEE MA1 PRINT

	CLEAN
	CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT
	CAIN	40		;MA 33 SET FAILED ON CH2
	STOP			;SEE MA1 PRINT

	CLEAN
	CONO	PI,ACT+PIREQ+20	;CAUSE INTERRUPT
	CAIN	40		;MA 32 SET FAILED ON CH4
	STOP			;SEE MA1 PRINT

	CLEAN
	CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT
	CAIN	46		;MA 34 SET OCCURED ON CH2
	STOP			;SEE MA1 PRINT

	BLURB
MOD82:	CLEAN			;CHECK IF AN INTERRUPT OCCURES
	SETZ	0		;C(0) FILLED BY XCT OF MOVEI
	CONO	PI,ACT+PIREQ+177	;ACTIVATE ALL INTERRUPTS
	SKIPN	0		;CK PIR FM IOB [1] PI1 PRINT
	STOP			;AND PIRQ LEVEL PI1 PRINT

	CLEAN
	SETZ	0		;ON INTERRUPT NO PI HOLDS
	CONO	PI,ACT+PIREQ+177	;WERE SET CHECK PIH
	CONSO	PI,77400		;FM PICHRQ PULSE ON
	STOP			;PI1 PRINT
DEFINE	PIHCLR	(A,B)<
	CLEAN
	CONO	PI,PIREQ+ACT+A	;CAUSE INTERRUPT TO SET HOLD
	CONO PI,10000		;TRY TO CLEAR WITH PI RESET
	CONSZ	PI,B		;FAIL TO CLEAR SEE PI2
	STOP
>

ZZ=100
YY=40000				;CHECK RESET TO PIH FLOPS
MOD83:	REPEAT	7,<
	PIHCLR	ZZ,YY
	ZZ=ZZ/2
	YY=YY/2
>

	BLURB
DEFINE	OFFPIR	(A,B)<
	CLEAN
	CONO	PI,PIREQ+ACT+A	;SETS PIH. THEN CLR
	JRST 10,.+1		;PIR TURNED BACK ON
	CONSZ PI,B		;PIR TURNED BACK ON.PIH(1) CLR PIR
	STOP
>

ZZ=100
YY=40000			;TEST THE RESET TO PIR
MOD85:	REPEAT	7,<
	OFFPIR	ZZ,YY
	ZZ=ZZ/2
	YY=YY/2
>
DEFINE	TSTREQ	(A)<
	CLEAN			;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
	CONO PI,ACT+PIREQ+A	;INTERRUPT SETS PIH IF SECOND
	SETZ			;INTERRUPT OCCURED PIH (0)
	CONO	PI,ACT+PIREQ+A	;FAILED TO INHIBIT PIREQ
	SKIPE			;SEE BOTTOM OF PI2 PRINT
	STOP
>

	BLURB
ZZ=100
MOD86:	REPEAT	7,<
	TSTREQ	ZZ
	ZZ=ZZ/2
>

DEFINE	PIHOK	(A,B)<
	CLEAN
	CONO	PI,ACT+PIREQ+A	;INTERRUPT SHOULD SET HOLD(PIH)
	SETZ			;IF SECOND INTERRUPT OCCURS PIH
	CONO	PI,ACT+PIREQ+B	;FAILED TO PREVENT PIOK THUS
	SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
	STOP			;OF PI2 PRINT
>
	BLURB

ZZ=100
YY=40				;TEST PRIORITY CHAIN
MOD87:	REPEAT	6,<
	PIHOK	ZZ,YY
	ZZ=ZZ/2
	YY=YY/2
>

DEFINE	SETPIH	(A,B)<
	CLEAN			;CHECK REQ AND PIH FLOPS
	CONO	PI,ACT+PIREQ+A	;CAUSE INTERRUPT, SHOULD SET
	CONSO	PI,B		;HOLD (PIH) SEE PI2 PRINT
	STOP			;BOTH PIR+PIH SHOULD BE SET
>
MOD88:	SETPIH	100,40000	;CH 1
	SETPIH	40,20000	;CH 2
	CHANEL	MOD90
MOD89:	SETPIH	20,10000	;CH 3
	SETPIH	10,4000		;CH 4
	SETPIH	4,2000		;CH 5
	SETPIH	2,1000		;CH 6
	SETPIH	1,400		;CH 7
MOD90:	CLEAN

DEFINE	PIADDR	(A,B)<
	CLEAN			;CHECK ABILITY TO INTERRUPT TO
	SETZ			;LOC 40-60 SHOULD SEE MOVEI
	CONO	PI,ACT+PIREQ+A	;ACTIVATE AN INTERRUPT. IF C(0)=0
	CAIE	B		;NO INTERRUPT OCCURED, C(0)=ADDR
	STOP			;OF INTERRUPT EXECUTED
>

	BLURB
MOD91:	PIADDR	100,42		;CH 1 TO LOC 42
	PIADDR	40,44		;CH 2 TO LOC 44
	CHANEL	MOD93
MOD92:	PIADDR	20,46		;CH 3 TO LOC 46
	PIADDR	10,50		;CH 4 TO LOC 50
	PIADDR	4,52		;CH 5 TO LOC 52
	PIADDR	2,54		;CH 6 TO LOC 54
	PIADDR	1,56		;CH 7 TO LOC 56

MOD93:	CLEAN

DEFINE	TWOPIR	(A,B)<
	CLEAN			;CK PIR(0) ABILITY TO PREVENT INTERRUPT
	SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
	CONO	PI,ACT+PIREQ+A	;TURN ON 2 PIR FLOPS. CHECK INT LOC
	CAIN B			;PIR (0) INPUT TO PIOK
	STOP
>
	BLURB
MOD94:	TWOPIR	100,46		;CH 1+2
	TWOPIR	40,46		;CH 2+3
	CHANEL MOD96
MOD95:	TWOPIR	20,56		;CH 3+4
	TWOPIR	10,52		;CH 4+5
	TWOPIR	4,56		;CH 5+6
	TWOPIR	2,56		;CH 6+7
MOD96:	CLEAN
DEFINE	MULPIR	(A,B)<
	CLEAN
	SETZ			;TEST MULTI REQUEST BREAK ON
	CONO	PI,ACT+PIREQ+A	;CORRECT CHANNEL TO CORRECT
	CAIE B			;LOC C(0)=INTERRUPTED ADDR
	STOP
>

	BLURB
MOD97:	MULPIR	100,42
	MULPIR	40,44
	CHANEL	MOD99
MOD98:	MULPIR	20,46
	MULPIR	10,50
	MULPIR	4,52
	MULPIR	2,54
	MULPIR	1,56
MOD99:	CLEAN

DEFINE	JENOK	(A,B)<
	CLEAN
	CONO	PI,ACT+PIREQ+A	;SET THE PIH FLOP THEN REMOVE
	CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
	JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
	CONSO	PI,B		;EFFECT PIH FLOP UNLESS AND
	STOP
>

MOD100:	JENOK	100,40000	;PIH 1
	JENOK	40,20000	;PIH 2
	CHANEL	MOD102
MOD101:	JENOK	20,10000	;PIH 3
	JENOK	10,4000		;PIH 4
	JENOK	4,2000		;PIH 5
	JENOK	2,1000		;PIH 6
	JENOK	1,400		;PIH 7
MOD102:	CLEAN

DEFINE	ONEPIH	(A,B)<
	CLEAN
	CONO	PI,ACT+PIREQ+A	;CHECK FOR REDUNDANT
	CONSZ PI,B		;PIH FLAGS.SEE TOP PI2 PRINT
	STOP
>

WW=20000
ZZ=100
YY=37400
MOD103:	REPEAT	7,<
	ONEPIH	ZZ,YY
	YY=YY+WW
	WW=WW/2
	ZZ=ZZ/2
>

DEFINE	FASTPIH	(A,B,C)<
	CLEAN
	CONO	PI,ACT+PIREQ+B	;SET PIH AND PIH ON
	CONO	PI,ACT+PIREQ+A	;NEXT HIGHER CHANNEL
	JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
	CONSO PI,C		;CHECK FOR FAST TURN OFF (PIH)
	STOP
>

MOD104:	FASTPIH	100,40,20000
	CHANEL	MOD106
MOD105:	FASTPIH	40,20,10000
	FASTPIH	20,10,4000
	FASTPIH	10,4,2000
	FASTPIH	4,2,1000
	FASTPIH	2,1,400
MOD106:	CLEAN

ZZ=100
YY=40000
MOD107:	REPEAT	7,<
	CLEAN
	CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
	CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
	STOP			;OF PIR STB, IOB PIRQ, PIO
	ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
	YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT>
DEFINE	CPINTR	(A)<		;PROVIDE AN INTERRUPT TO PI
	MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
	ADD			;AND OTHER SOURCES
	CONO	42220+A>

DEFINE	IOBRQ	(A,B,C)<
	CLEAN			;CLEAR THE WORLD EXCEPT CP
	CPINTR	A
	CONO	PI,PIOSET+ACT+B	;TURN ON CK FLOP TO ALLOW
	CONSO	PI,C		;INTERRUPT. CK INPUT TO PIR FLOP
	STOP
>

ZZ=1
YY=40000
MOD108:	REPEAT	7,<		;TEST FOR NO INTERRUPT FROM BUSS
	CLEAN			;CLEAR WORLD
	CPINTR ZZ		;INTERRUPT TO BUSS INPUT TO PIR
	CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
	STOP
	ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
	YY=YY/2
>

MOD109:	IOBRQ	1,100,77400
	IOBRQ	2,40,77400
	CHANEL	MOD111
MOD110:	IOBRQ	3,20,77400
	IOBRQ	4,10,77400
	IOBRQ	5,4,77400
	IOBRQ	6,2,77400
	IOBRQ	7,1,77400
MOD111:	CLEAN

MOD115:	CLEAN			;TEST CP FOR NO INTERRUPT
	CONO	1		;ASSIGN A CHANNEL TO
	CONO	PI,PIG0		;PROCESSOR, ENABLE PI. IF
	CONSZ	PI,77400	;INTERRUPT PROCESS PUT BIT ON PI BUSS
	STOP			;CHECK TOB IPRQ ON CPA PRINT

	BLURB

MOD116:	CLEAN
	CPINTR	1		;ENABLE PROCESSOR INTERRUPT
	SETZ
	CONO	PI,PIG0		;PROCESSOR DECODE TO PI BUSS
	CAIE	42		;FAIL, SEE TOP RIGHT OF CPU
	STOP			;PRINT C(0)=ADDR OF XCT INST

MOD117:	CLEAN
	CPINTR	2		;ENABLE PROCESSOR INTERRUPT
	SETZ			;WILL BE FILLED BY ADDR OF XCT INST
	CONO	PI,PIG0		;ACTIVATE PI SYS
	CAIE	44		;EXPECT CHANNEL 2
	STOP			;IF C(0)=0 NO INTERRUPT. SEE CPA PRINT
	CHANEL	MOD120
MOD118:	CLEAN
	CPINTR	4		;ENABLE PROCESSOR INTERRUPT
	SETZ			;WILL BE FILL BY ADDR OF XCT INST
	CONO	PI,PIG0		;ACT PI SYS
	CAIE	50		;EXPECT CHANNEL 4
	STOP			;IF C(0)=0 NO INTERRUPT. SEE CPA PRINT
	BLURB
MOD119:	CLEAN			;ENABLE AN INTERRUPT ON CHANNEL 1-7
	CPINTR	7		;CHECK PROCESSOR INTERRUPT
	CONO	PI,PIG0
	CAIE	56
	STOP			;CH 7 FAIL TO INTERRUPT
	CONO	6
	CAIE	54
	STOP			;CH 6 FAIL TO INTERRUPT
	CONO	5
	CAIE	52
	STOP			;CH 5 FAIL TO INTERRUPT
	CONO	4
	CAIE	50
	STOP			;CH 4 FAIL TO INTERRUPT
	CONO	3
	CAIE	46
	STOP			;CH 3 FAIL TO INTERRUPT
	CONO	2
	CAIE	44
	STOP			;CH 2 FAIL TO INTERRUPT
	CONO	1
	CAIE	42
	STOP			;CH 1 FAIL TO INTERRUPT
MOD120:	CLEAN

	BLURB
MOD121:	CLEAN
	SETZ			;C(0) MODIFIED IF INTERRUPT
	CONO	PI,PIG0		;ENABLE PI
	JFCL	10,.+1		;CLEAR AROV
	CONO	20+1		;ENABLE AROV CH1
	SKIPE			;INTERRUPT OCCURED SEE CPA PRINT
	STOP			;CPA AROV EN(1) AND GATE TO PIRQ

MOD122:	CLEAN
	SETZ
	CONO	PI,PIG0
	MOVSI	400000
	ADD			;SET AROV
	CONO	1		;AROV CNT NO ENABLE
	SKIPE			;INT OCCURED SEE CPU PRINT
	STOP

MOD123:	CLEAN
	SETZ
	CONO	PI,PIG0		;ENABLE PI
	MOVSI	400000		;SET AROV
	ADD			;FLOP
	CONO	21		;FLOP AND AROV (EN)
	CAIE	42		;NO INTERRUPT CHECK AND GATE
	STOP			;TO PIRQ ON CPU PRINT
MOD124:	CLEAN
	SETZ
	CONO	PI,PIG0		;ENABLE PI
	CONSO	1000
	JRST	.-1		;WAIT IF CLK=0
	CONO	2001		;SET CLOCK ENABLE
	CAIE	42		;SHOULD INTERRUPT TO LOC 42
	STOP			;SEE CPU PRINT AND CLK ENABLE

	BLURB
MOD125:	CLEAN
	CONO	PI,PIG0		;ENABLE PISYS
	CONO	1		;TRY TO SET NONEX MEM
	SETZ			;NO INTERRUPT SET
	CAM	-1		;NONEX INPUT TO
	CAIE	42		;PIRQ ON CPA
	STOP			;PRINT

MOD127:	CLEAN
	CONO	PI,PIG0		;ENABLE PI
	CONO	1		;CPU TO CHANNEL 1
	SETO			;SET THE
	PUSHJ	.+1		;PDL FLAG
	CAIE	42		;IT FAILED TO INTERRUPT
	STOP			;SEE ITS INPUT TO PIRQ ON CPA PRINT

MOD128:	CLEAN
	CONO	PI,PIG0		;ENABLE PI
	CONO	1
	SETZ
	CONO	PI,40000	;ENABLE PAR
	SKIPE			;INTERRUPT OCCURED
	STOP			;CHECK CPU PIRQ INPUT

MOD129:	CLEAN
	JFCL	1,.+1		;CLEAR FOV
	CONO	PI,PIG0		;ENABLE PI
	SETZ
	CONO	PI,201		;FOV ENABLE. INTERRUPT
	SKIPE			;OCCURED CK PIRQ INPUTS
	STOP			;ON CPU PRINT

MOD130:	CLEAN
	SFLAG 40000		;SET FOV FLAG
	SETZ
	CONO	PI,PIG0		;ENABLE PI
	CONO	1		;CH1 TO PROCESSOR
	SKIPE			;FOV ENABLE FAIL TO PREVENT
	STOP			;INTERRUPT SEE CPU PRINT
	BLURB
MOD131:	CLEAN
	SFLAG 40000		;SET FOV FLAG
	CONO	PI,PIG0		;ENABLE PI
	SETZ
	CONO	201		;ENABLE FOV+CH1
	CAIE	42		;FAIL TO INTERRUPT SEE
	STOP			;PIRQ INPUTS ON CPA PRINT
MOD132:	CLEAN
	CONO	PI,ACT+PIREQ+100	;INTERRUPT
	REPEAT	^D10,
<	JRST .+1>
	CONSO	PI,40000	;PIH WAS RESET BY JRST (NO BIT 9)
	STOP			;SEE PI RESTORE LOGIC ON PI1 PRINT
MOD133:	CLEAN
	CONO	PI,ACT+PIREQ+100	;INTERRUPT
	REPEAT	^D10,
<	CAI 10,0>
	CONSO	PI,40000	;PIH WAS RESET BY BIT9(NO JRST)
	STOP			;SEE PI RESTORE LOGIC ON PI1 PRINT
MOD134:	CLEAN			;TEST PI CYC(1) INPUT TO PI OV
	SETO			;PROVIDE ALL CONDITIONS TO SET
	BLKI			;PI OV EXCEPT PI CYC(1)
	CONO	PI,ACT+PIREQ+100	;IF C(0)=43 REPLACE THE B137
	CAIE	42		;AND GATE TO PI OV SEE
	STOP			;PI1 PRINT
MOD135:	CLEAN
	MOVE	[BLKO ME,0]	;PUT A BLKI IN
	MOVEM	42		;LOC 42
	SETZ			;PROVIDE FOR NO OVERFLOW
	CONO	PI,ACT+PIREQ+100	;INTERRUPT. IF C(0)=43
	CAIN	43		;AND GATE TO PIOU THE AD
	STOP			;CRY0(1) INPUT FAILED. SEE PI1 PRINT
	JRST	MOD136
;HOLE LEFT FOR RELOCATION TEST


MOD136:	CLEAN
	MOVE	[AOS]		;PUT AN AOS IN LOC 42
	MOVEM	42		;PROVIDE ALL INPUTS TO
	SETO			;PIOU EXCEPT IOT BLK
	CONO	PI,ACT+PIREQ+100	;CANT TEST GATE
	SKIPE			;THINK UNNECESSARY
	STOP			;BUT DO IT ANYWAY

MOD137:	CLEAN
	MOVE	[BLKO ME,0]	;SETUP A BLKO TO SET
	MOVEM	42		;THE PI OV FLOP
	SETO
	CONO	PI,ACT+PIREQ+100	;CAUSE FIRST INTERRUPT
	SETZ			;PI SHOULD SET AT THIS
	CLEAN			;TIME, IF PI OV IS NOT
	CONO	PI,ACT+PIREQ+100	;CLEARED AT ST1 NEXT INTERRUPT
	CAIN	43		;WILL OCCUR AT LOC 43
	STOP			;SET PI 1 PRINT.

MOD140:	CLEAN
	MOVE	[BLKO ME,0]	;PUT A BLKO IN LOC 42
	MOVEM	42		;WHEN EXECUTED THIS SHOULD
	SETO			;SET PIOV. IF PI OV IS NOT
	CONO	PI,ACT+PIREQ+100	;CONNECTED TO MA REGISTER
	ANDI	-1		;42 WILL BE EXECUTED TWICE
	CAIN	1		;SEE MA 35 SET AT IT0
	STOP			;AND PI OV(1) ON MA1 PRINT

MOD141:	CLEAN			;CHECK BLKO NOT RESET PIH
	MOVE	[MOVEI 42]	;RESTORE LOC 42
	MOVEM	42		;TO MOVEI
	CONO	PI,PIREQ+ACT+100	;SET PIH VIA INTERRUPT
	SETZ			;IF PIH1(0) THEN PI CYC(1)
	BLKO	ME,0		;INPUT TO PI RESTORE FAILED

	CAI
	CONSO	PI,40000		;SET PI1 PRINT
	STOP

MOD142:	CLEAN			;CHECK PI RESTORE LOGIC
	MOVE	[DATAO ME,0]	;DATAO AND PIOV SHOULD PRODUCE
	MOVEM	42		;PI RESTORE. CHECK THIS INPUT
	CONO	PI,PIREQ+ACT+100	;TO PI RESTORE ON PI1 PRINT
	CONSZ	PI,40000		;ALSO CHECK PI CYC(1) INPUT
	STOP			;ON SAME PAGE

MOD143:	CLEAN
	MOVE	[DATAI ME,0]	;IF MACHINE HANGS OR
	MOVEM	42		;PIH(1) CHECK DATAO/DATAI
	CONO	PI,PIREQ+ACT+100	;INPUT TO PRIORITY SYSTEM
	CONSZ	PI,40000		;SEE PI1 PRINT (LOWER LEFT)
	STOP

MOD144:	CLEAN
	MOVE	[BLKO ME,0]	;INTERRUPT TO A BLKO WHOS
	MOVEM	42		;POINTER SHOULD SET PIOV. THE
	SETO			;INST AT LOC 43 A (MOVEI 43)
	CONO	PI,PIREQ+ACT+100	;SHOULD BE EXECUTED. CHECK
	CONSO	PI,40000	;PI OV AND ASSOCIATED LOGIC
	STOP			;ON PI1 PRINT

MOD145:	CLEAN
	MOVE	[BLKO ME,0]	;INTERRUPT TO A BLKO WHOS
	MOVEM	42		;POINTER SHOULD SET PIOV. THE
	SETO			;INST AT LOC 43 A (MOVEI 43)
	CONO	PI,PIREQ+ACT+100	;SHOULD BE EXECUTED. CHECK
	CAIE	43		;CHECK PI OV INPUT TO MA35
	STOP			;SET ON MA1 PRINT

MOD147:	CLEAN			;TEST PI CYC(0) GET TO PIR STB
	MOVE	[BLKO ME,0]	;PUT A BLKO WITH POINTER TO
	MOVEM	44		;SET PI OV IN CHANNEL 2 BLKO
	MOVE	[MOVEI 1,42]	;WILL SET NONEX MEM CAUSING
	MOVEM	42		;INTERRUPT ON CH1 THE INSTRUCTION
	HRROI	-2		;AT LOC 45 MUST BE EXECUTED
	CONO PI,PIOSET+100
	CONO	1		;OR PI CYC(0) GATE TO PIR STB FAILED
	CONO PI,PIREQ+ACT+40
	CAIE	45		;AND OF MC RQ PULSE PICYC(0)
	STOP
	CAIE	1,42
	STOP			;NONEX FAIL TO INTERRUPT CH1

MOD148:	CLEAN			;PUT A SKIPA IN THE
	MOVE	[SKIPA]		;INTERRUPT SPOT
	MOVEM	42
	CONO	PI,PIREQ+ACT+100
	STOP

MOD149:	CLEAN
	MOVE	[JSR .+4]
	MOVEM	42
	CONO	PI,PIREQ+ACT+100
	STOP
	0

MOD150:	CLEAN			;INTERRUPT TO A PUSHJ
	MOVE	[PUSHJ .+4]
	MOVEM	42
	MOVSI	-1
	CONO	PI,ACT+PIREQ+100
	ANDI	1,-1
	CAIE	1,.-1
	STOP			;PC STORED INCORRECTLY
	CAIE	1		;THE PUSHJ
	STOP			;POINTER WORD IN ERROR
	CLEAN
MOD151:	CLEAN
	MOVE [MOVEI 43]		;TEST CLEAR MA ON INTERRUPT
	MOVEM 43
	MOVE [BLKO ME,4]
	MOVEM 42
	SETOB 4
	HRRI 4,4
	CONO PI,PIREQ+ACT+100
	CAIE 43
	STOP


MOD152:	SETZM	60		;TEST TRAP TO 60
	MOVE	[JSP MOD153]	;GO HERE IF TRAP TO 40
	MOVEM	41		;ERROR
	MOVE	[JSP MOD153+1]
	MOVEM	61		;OK TRAP
	XWD	100000,0	;OP CODE 100-127
	STOP
MOD153:	STOP
	SKIPN	60		;NOTHING STORED IN C(60)
	STOP

MOD154:	SKIPN	USMOD#		;TEST RELOC IF SPECIFIED
	JRST	MOD195

DEFINE	UMON<
	CONO	634440		;PREPARE TO TURN ON USER
	CONO	PI,10000	;MODE. CL PI, IOB, RELOC
	DATAO	[XWD -1,0]>

DEFINE	UMOFF<
	MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
	MOVEM	41		;UUO. PROG RETURNS TO END
	XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
>

DEFINE	HOLD<
	JUMPA	.		;MACH ERROR. HALT MAY TRAP
	JUMP	.+1		;SO WAITING FOR OPERATOR
>

MOD160:	JRST	2,@[XWD 0,.+1]	;CLEAR EX IOT USER, IF LIGHT
	JSP	.+1		;OUT FLAG TRANSFER TO AR FAIL

	TLNE UMIOT		;BIT 6. OR FLOP FAIL TO CLEAR
	STOP

	JRST	2,@[XWD UMIOT,.+1]	;SET THEN CLEAR EX IOT USER
	JRST	2,@[XWD 0,.+1]	;CK AND GATE ARF FLAGS FM BR (J),
	JSP	.+1		;BR6(0) FAIL TO CLEAR

	TLNE UMIOT		;EX IOT USER ON EX PRINT
	STOP

	JRST	2,@[XWD 0,.+1]	;CLEAR THEN SET EX IOT USER
	JRST	2,@[XWD UMIOT,.+1]	;IF LIGHT=1 FLAGS TO AR FAIL
	JSP	.+1		;IF LIGHT=0 FLOP FAIL TO SET. CK
	TLNN	UMIOT		;BR6(1), EX USER(0), ARF FLAGS(J), EX PRINT
	STOP

	JRST	2,@[XWD 0,.+1]	;CLEAR USER. IOB1 PRINT
	CONSZ	1B20		;READ PROCESSOR STATUS
	STOP

	JRST	2,@[XWD UMIOT,.+1]	;SET USER IOB1 PRINT
	CONSO	1B20		;CPA STATUS FAIL
	STOP

MOD161:	UMOFF
	TLNE	USERF		;FLAGS TO AR BIT5 (USER MODE) FAIL
	HOLD

;TRY TO TURN ON USER MODE VIA RESTORE FLAGS THEN
;TURN OFF VIA UU0. SEE EX PRINT

MOD162:	MOVE	[JSP	MD162A]
	MOVEM	41
	UMON
	JRST	2,@[XWD USERF+UMIOT,MD162B]	;ALSO PRIVI IO

MD162A:	HOLD			;TRAP HERE, NO MEMORY ACCESS, USER MODE

MD162B:	UMOFF
	TLNN	USERF		;JSP STORED FLAGS IN C(0)
	HOLD

;TEST UUO TURN OFF OF USER MODE. PRIVI I/O ALLOWS
;IOT TO OCCUR IN CASE USER STILL ON. SEE EX PRINT

MOD163:	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	UMOFF
	UMOFF
	TLNE	USERF		;FLAGS STORED VIA JSP AT 41
	HOLD

MOD164:	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]	;SET USER+PRIV I/O
	MOVE	[JUMPA .+3]	;SET RETURN FOR THE
	MOVEM	41		;UUO. EX ILL OP SHOULD
	XWD	40000,0		;NOT TURN OFF USER FLAG
	JSP	.+1		;BECAUSE AR FM PC(J)(ET0)
	TLNN	USERF		;PULSE IF NOT PRESENT. SEE EX
	HOLD
	UMOFF
;PERFORM A UUO. THE PURPOSE OF THIS IS TO SET THE
;EX ILL OP FLOP.  THE FLOP SHOULD BE CLEARED BY THE
;JSP AT 41. IF HOWEVER THIS DID NOT OCCUR, ANY
;STORE PC INSTRUCTION IN USER MODE WOULD CLEAR
;USER MODE.  THIS TEST THEREFORE TEST THE CLEAR
;TO EX ILL OP VIA AR FM PC(J) (ET0) ON EX PRINT

MOD165:	UMOFF
	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	JSP	.+1		;DONT FORGET FAIL TO CLEAR
	JSP	.+1		;MAY BE PHONEY SET EX ILL OP
	TLNN	USERF		;OR PHONEY CLEAR EX-USER
	HOLD
	UMOFF

MOD166:	UMOFF
	UMON
	JRST	1,.+1		;SET USER MODE VIA ET0
	JSP	.+1		;IR JRST, IR12(1). IT FAILED
	TLNN	USERF		;REPLACE B135 ON EX PRINT
	HOLD
	UMOFF

;THIS TEST WILL TRY TO SET THE PRIV I/O BIT WHEN IN
;USER MODE. IF THE EX IOT USER FLOP SETS EX USER (0) INPUT
;TO THE FLAG FAILED  SEE EX PRINT

MOD167:	UMON
	JRST	2,@[XWD USERF,.+1]	;SET USER
	JRST	2,@[XWD USERF+UMIOT,.+1]	;TRY TO SET PRIV I/O
	JSP	.+1
	TLNE	UMIOT
	HOLD
	UMOFF

MOD170:	UMON
	JRST	2,@[XWD USERF,.+1]	;SET USER MODE
	MOVE	[JSP .+4]		;SET TRAP RETURN
	MOVEM	41			;1 PAST THE IOT INST
	SETZM	40			;FAIL TO TRAP. EX ALLOW IOT
	XWD	700000,0		;ALLOWED THE IOT IN USER
	SKIPN	40			;MODE. SEE EX PRINT
	HOLD
	UMOFF

MOD171:	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]	;SET PRIVI+USER
	MOVE	[JSP .+4]		;SET TRAP RETURN 1 PAST
	MOVEM	41			;THE TRAP INST
	SETZB	40			;THE EX IOT USER FLOP
	XWD	700000,0		;SHOULD ALLOW THE IOT
	CAI
	SKIPE	40			;CHECK EX ALLOW IOT. EX PRINT
	HOLD
	UMOFF

MOD172:	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]	;USER AND PRIV I/O
	MOVE	[JSP .+3]		;THEN CAUSE A PI REQUEST
	MOVEM	42			;PI CYC(1) SHOULD SET EX PI SYNC
	CONO	PI,ACT+PIREQ+100	;WHICH SHOULD CLEAR EX USER
	JSP	.+1			;AT ET1 OF JSP AT 42. IT
	TLNE	USERF			;FAILED. SEE EX PRINT
	HOLD

;THIS TEST WILL INSURE THAT EX ILL OP IS CLEARED
;BY IOT BLK.  THIS LOGIC IS NECESSARY FOR RETURNING TO
;THE PROPER RELOCATION WHEN A UUO IS INTERRUPTED AND
;MUST BE RE EXECUTED.


MOD173:	MOVE [JUMPA .+3]
	MOVEM 41
	XWD 040000,0		;PERHAPS TURN OFF USER MODE
	SETZ			;PREVIOUS UUO SET EX ILL OP
	BLKI			;THIS IOT SHOULD CLEAR IT
	CAI
	JRST 2,@[XWD USERF,.+1]	;NOW ENTER USER MODE IF
	JSP	.+1		;EX ILL OP SET JSP WILL CLEAR
	JSP	.+1		;EX USER FLAG.  SEE EX PRINT
	TLNN	USERF
	HOLD
	UMOFF

MOD174:	UMON
	JRST	2,@[XWD USERF,.+1]
	MOVE	[JSP .+4]	;SET RETURN
	MOVEM	41		;SEE IR2 PRINT
	SETZM	40		;IR JRST A IR10(1)
	HALT	.		;THIS HALT SHOULD TRAP
	SKIPN	40		;BUT DID NOT
	HOLD
	UMOFF

MOD175:	UMON
	JRST	2,@[XWD USERF,.+1]
	MOVE	[JSP .+4]	;SET RETURN
	MOVEM	41		;SEE IR2 PRINT
	SETZM	40		;THE ENABLE PI SHOULD
	JEN	.+1		;TRAP TO 40
	SKIPN	40		;BUT DID NOT
	HOLD
	UMOFF

MOD176:	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	MOVE	[JSP .+4]	;SET PRIVI IO BIT
	MOVEM	41		;THIS SHOULD PREVENT JRST IO,
	SETZM	40		;FROM TRAPPING. SEE IR UUO
	JRST	10,.+1		;ON IR2 PRINT
	SKIPE	40
	HOLD
	UMOFF

MOD177:	UMON
	JRST	1,.+1		;SEE IF JUST A PLAIN
	MOVE	[JSP .+4]	;JRST WILL TRAP
	MOVEM	41		;SEE IR2 PRINT FOR
	SETZM	40		;DECODE IR-UUO
	JRST	.+1
	SKIPE	40
	HOLD
	UMOFF

MOD178:	UMON
	JRST	1,.+1		;SEE IF IR 9+10 WITH OUT
	MOVE	[JSP .+4]	;A JRST WILL TRAP
	MOVEM	41		;SEE IR UUO ON IR-2 PRINT
	SETZM	40
	JFCL	14,.+1
	SKIPE	40
	HOLD
	UMOFF

;CHECK THAT AN IOT AT INTERRUPT LEVEL WILL NOT LOOK
;LIKE A UUO SEE IR-2 PRINT

MOD179:	UMON
	CONO	1
	MOVE	[BLKI]
	MOVEM	42
	MOVE	[JSP M179+1]
	MOVEM	41
	SETZB	40
	MOVE [JSP M179]
	MOVEM 43
	SETO
	CONO	PI,ACT+PIOSET+100
	JRST	1,.+1
	CAM	-1
M179:	SKIPE	40
	HOLD
	UMOFF

MODXX1:	UMON			;TEST TRAP (60) TURN OFF OF
	MOVE	[JSP .+5]	;USER MODE
	MOVEM	61
	JRST	1,.+1
	XWD	100000,0	;OP CODE 100
	HOLD			;IT FAILED TO TRAP
	JSP	.+1		;IT SHOULD ALSO
	TLNE	USERF		;TURN OFF USER MODE
	HOLD

MODXX2:	UMON
	MOVE	[JSP .+4]	;TEST IR TO C(40)
	MOVEM	41		;FOR BITS 1,2,3
	JRST 2,@[XWD USERF,.+1]
	XWD	700000,0	;AN IOT
	MOVE	40
	CAME	[XWD 700000,0]
	HOLD

MOD180:	UMON
	DATAO	[0]		;GET RID OF PROTECT REG

	CONO 1
	CONO PI,ACT+PIOSET+100
	MOVE [JSP M180]
	MOVEM 42
	MOVE [JSP .+4]
	MOVEM 41
	JRST	2,@[XWD USERF+UMIOT,.+1]	;ENABLE USER
	JUMPA .			;THIS INST SHOULD SET PROT
M180:	CONSO	PROT		;HERE IF FLAG FAIL
	HOLD
	CONSZ	NONEX		;NEVER NON EX WITH PROT
	HOLD
	CONO	1B22		;FAIL TO CLEAR PROT
	CONSZ	PROT		;FLAG SEE CPA PRINT
	HOLD
DEFINE	EXCT	(A) <
	MOVE	[JSP .+3]	;EXECUTE A UUO
	MOVEM	41		;AND STORE FLAGS
	XWD	A,0		;IN AC0.
>
;CHECK UUO 0 TRAPING TO EXEC MODE AND UUO 1-37
;NOT TRAPING TO EXEC MODE...1P19 ON EX CONTROL PRINT.

MOD18A:	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	EXCT	0
	EXCT	0
	TLNE	USERF		;USER MODE ON?..CK 1P19 EX CONT PNT.
	HOLD

	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	EXCT	1000
	TLNN	USERF		;CK BIT 8 INPUT TO 1P19 EX CONTROL PRINT.
	HOLD



	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	EXCT	2000
	TLNN	USERF		;CK BIT 7 INPUT TO 1P19 EX CONTROL PNT.
	HOLD

	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	EXCT	4000
	TLNN	USERF		;CK BIT 6 INPUT TO 1P19 EX CONTROL PNT.
	HOLD

	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	EXCT	10000
	TLNN	USERF		;CK BIT 5 INPUT TO 1P19 EX CONTROL PNT.
	HOLD


	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	EXCT	20000
	TLNN	USERF		;CK BIT 4 INPUT TO 1P19 EX CONTROL PNT.
	HOLD

	UMON
	JRST	2,@[XWD USERF,.+1]
	MOVE	0,[JSP .+3]
	MOVEM	0,41
	XWD 700000,0		;XCT AN IOT.
	JSP	.+1		;GET FLAGS.
	TLNE	0,USERF		;USER MODE STILL ON?
	HOLD			;YES. CK EX NON REL UUO
				;EX PRINT.

MOD181:	MOVE 10040		;SAVE THESE LOC
	SKIPN SAV40
	MOVEM SAV40
	MOVE 10041
	SKIPN SAV41
	MOVEM SAV41
	MOVE 10042
	SKIPN SAV42
	MOVEM SAV42
	MOVE 10043
	SKIPN SAV43
	MOVEM SAV43
	JRST	.+5
SAV40:	0
SAV41:	0
SAV42:	0
SAV43:	0
;TEST THE SETTING OF PROTECT FLAG BY MOVING A
;TWO INST PROG TO AC 1+2 PROG IS CAM X AND UU0
;WITH TRAP SET TO REAL WORLD THE CAM SHOULD TEST
;THE PROT FLAG

X=2000

DEFINE	LAC	(A)<
	UMON
	DATAO	[0]
	MOVE	1,[CAM A]
	MOVSI	2,40000
	
	CONO PI,ACT+PIOSET+100
	CONO 1
	MOVE [JSP .+5]
	MOVEM 42
	MOVE	[JSP .+3]
	MOVEM	41		;SET TRAP RETURN
	JRST	1,1		;TURN ON USER MODE
	CONSO	PROT		;THE PROT FLAG SHOULD BE SET
	HOLD
	CONSZ	NONEX
	HOLD
>
MOD182:	REPEAT	10,<
	LAC	X
	X=X+X>

MOD185:	SETZM	40		;TEST FOR TRAP TO REAL LOC 40
	MOVE	[JSP MOD186-1]	;NOT RELOCATED 40
	MOVEM	41		;SETUP TRAP FOR OK
	DATAO	[XWD -1,10000]
	MOVE	[JSP MOD186]	;SETUP TRAP FOR ERR
	MOVEM	10041
	JRST	1,.+1-10000	;IF THE UUO TRAPS TO
	XWD	40000,0		;RELOCATED 40 PROG WILL HOLD
	SKIPN	40		;AT THIS POINT

MOD186:	HOLD
	JSP	.+1		;IF USER MODE STILL ON
	TLNE	USERF		;THEN WAIT HERE
	HOLD

;TEST FOR INTERRUPT TO REAL PI (NOT RELOCATED)
MOD190:	UMON
	MOVE	[JSP MOD191]	;SET ERROR PI RET
	MOVEM 10042
	MOVE	[JSP MOD191+1]	;SET OK PI
	MOVEM 42
	DATAO [XWD -1,10000]
	JRST 2,@[XWD USERF+UMIOT,.+1-10000]
	CONO	PI,ACT+PIREQ+100	;SHOULD INTERRUPT
	HOLD
MOD191:	HOLD
	UMOFF
;TEST FOR NOT RELOCATION OF AC'S
MOD192:	SETZM	5
	UMON
	MOVE [JSP M192]
	MOVEM 41
	DATAO [XWD -1,10000]
	JRST 1,.+1-10000
	MOVEI	5,12345
	XWD 040000,0		;UUO TO TERM USER MODE
M192:	CAIE	5,12345
	HOLD
MOD195:	SKIPE	FPTRAP		;SEE IF SWITCH SAYS FP
	JRST MOD196
	MOVE [JSP .+3]		;TEST THE ABILITY TO
	MOVEM 61		;TRAP A FP INST
	FADRI -1		;THIS INST SHOULD TRAP
	MOVE 2,.-1		;FAIL TO TRAP PROPERLY
	CAME 2,60
	STOP
	JRST MOD197		;WHAT ABOUT SWITCHS
MOD196:	MOVE [JSP .+4]		;TEST FOR FP NOT TRAP
	SETZM 60
	MOVEM 61		;SET RETURN
	FADRI -1
	SKIPE 60		;DOES MACH HAVE FP
	STOP
;CHECK BYT7A SETING BYF6.
MOD19X:	CONO	635550		;CLR THE WORLD.
	MOVE	[JSP MOD19B]
	MOVEM	42		;SETUP FOR INT ON CH # 1.
	CONO	PI,12300	;SETUP PI.
	MOVE	1,POINTR	;PUT POINTER INTO AC1.
	CONO	1000		;CLR CLOCK FLAG.
	CONSO	1000		;WAIT FOR
	JRST	.-1		;CLOCK FLAG.
	CONO	3001		;SET INT ENABLE AND PI 35 AND CLR CLK FLG.
	ILDB	0,1		;SHOULD STAY IN INDIRECT LOOP.
MOD19B:	CONSO	1000		;CLK FLG INT?
	HOLD
	TLNN	0,20000		;BYF6 FLAG SET? NO..CK BYT7A ON BYTE PRINT.
	HOLD
	JSP	.+1		;CAUSE ARLT FM FLAGS(J)A.
	TLNE	0,20000		;CK BYTE PRINT.
	HOLD

	JRST	MOD197

POINTR:	XWD 440720,1
;CK TO SEE THAT UUO 0 TRAPS TO 141.
MOD200:	UMON
	JRST	2,@[XWD USERF+UMIOT,.+1]
	MOVE	[JSP .+5]
	MOVEM	41
	AOJ
	MOVEM	141
	0
	HOLD			;UUO 0 TRAPED TO 40. CK 2L44 ON MA CONTROL PRINT.
	TLNN	USERF		;USER MODE GET CLR?..CK 1P19 ON EX CONT PNT.
	HOLD
;CK TO SEE THAT UUO 37 TRAPS TO 41.

	UMON
	JRST	2,@[XWD USERF + UMIOT, .+1]
	MOVE	[JSP .+5]
	MOVEM	141
	AOJ
	MOVEM	41
	037000000000
	HOLD			;UUO 37 TRAPPED TO 141, CK 2L44 ON MA CONTROL PRINT.


;CK TO SEE THAT AN INTERRUPT ON CH # 1 TRAPS TO 142.

	MOVE	[MOVEI 142]
	MOVEM	142
	CONO	634440		;CLR THE WORLD.
	SETZ	0,
	CONO	PI,10000	;CLR PI.
	CONO	PI,ACT+PIREQ+100;CAUSE INT.
	CAIE	0,142		;CK 2K44 ON MA CONTROL PRINT.
	HALT

	SETOM	MATPOF		;SET FLG SO KNOW IN THIS ROUTINE.


MOD197:	JRST	BEGEND		;REPEAT DIAGNOSTIC

;DIAGNOSTIC STORAGE

	LIT

	VAR

LAST:	JRST	4,BEGIN