PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

DEC PDP-10 KA10 Basic Instruction Diagnostic #8

The PDP-10 KA10 Basic Instruction Diagnostic #8 (MAINDEC-10-DAKAH) test code has been extracted from DAKAHM.MAC [original] and DAKAHT.MAC [original] for use with the PDP-10 Test Machine with Debugger below.

This diagnostic “TESTS THE PI SYSTEM, INTERRUPTS, LUUO’S AND INPUT/OUTPUT.”

Resources for this diagnostic include:

[PCjs Machine "testka10"]

Waiting for machine "testka10" to load....

The Debugger’s assemble (“a”) command can be used to test the new built-in MACRO-10 Mini-Assembler, which supports a subset of the MACRO-10 assembly language.

This command:

a 30724 DAKAH.MAC

will automatically read the DAKAH.MAC source file (a slightly modified copy of DAKAHM.MAC), assemble it, and then load the binary output at the specified address.


DAKAH.TXT

MAINDEC-10-DAKAH.TXT






 
			IDENTIFICATION
			--------------

	PRODUCT CODE:   MAINDEC-10-DAKAH-B-D

	PRODUCT NAME:   DECSYSTEM10 PDP-10 KA10 BASIC
	                INSTRUCTION DIAGNOSTIC (8)

	FUNCTION:       PI, INTERRUPTS, LUUO'S, I/O

	VERSION:        0.2

	DATE RELEASED:  JANUARY 1977

	MAINTAINED BY:  DIAGNOSTIC ENGINEERING GROUP

	AUTHOR:         JOHN R. KIRCHOFF

COPYRIGHT(C) 1976,1977
DIGITAL EQUIPMENT CORPORATION
MARLBORO, MASS. 01752

THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,
OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
MADE AVAILABLE TO ANY OTHER PERSON EXECPT FOR USE ON SUCH SYSTEM
AND TO ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE TO AND
OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.

THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
EQUIPMENT CORPORATION.

DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

							MAINDEC-10-DAKAH.TXT
							PAGE 2


			TABLE OF CONTENTS
			-----------------

1.0	ABSTRACT

2.0	REQUIREMENTS

2.1	EQUIPMENT

2.2	STORAGE

2.3	PRELIMINARY PROGRAMS

3.0	PROGRAM PROCEDURES

3.1	LOADING PROCEDURE

3.2	STARTING PROCEDURE

3.3	OPERATING PROCEDURE

4.0	ERRORS

5.0	ITERATION COUNTER

6.0	CYCLE TIME

7.0	OPERATIONAL VARIATIONS

8.0	MISCELLANEOUS

9.0	LISTING

							MAINDEC-10-DAKAH.TXT
							PAGE 3


1.0	ABSTRACT

	THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
	EIGHTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
	THE DIAGNOSTIC TESTS THE PI SYSTEM, INTERRUPTS, LUUO'S
	AND INPUT/OUTPUT.

2.0	REQUIREMENTS

2.1	EQUIPMENT

	A PDP-10 KA10 WITH A MINIMUM OF 32K OF MEMORY

	PAPER TAPE READER 
	DECTAPE (OPTIONAL)
	CONSOLE TELETYPE

2.2	STORAGE

	THE PROGRAM RUNS WITHIN 32K OF MEMORY.

2.3	PRELIMINARY PROGRAMS

	CONSOLE FUNCTIONS WORKING PROPERLY
	PAPER TAPE OR DECTAPE READ-IN WORKING PROPERLY 
	PREVIOUS PROCESSOR DIAGNOSTICS
	
							MAINDEC-10-DAKAH.TXT
							PAGE 4


3.0	PROGRAM PROCEDURES

3.1	LOADING PROCEDURE

	PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104)
	DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320)

3.2	STARTING PROCEDURE

	STAND-ALONE STARTING ADDRESS IS 30000.

	IF THE DIAGNOSTIC FAILS TO START CORRECTLY TRY STARTING AT THE
	FIRST TEST INSTEAD OF AT THE BEGINNING OF THE CONTROL SEQUENCE.
	(SEE LISTING).

3.3	OPERATING PROCEDURE

	ONCE STARTED THE PROGRAM WILL CYCLE CONTINUALLY UNTIL STOPPED
	OR AN ERROR OCCURS.

4.0	ERRORS

	ERRORS ARE IN THE FORM OF HALT INSTRUCTIONS.  THE LISTING
	SHOULD BE CONSULTED TO DETERMINE THE CAUSE OF THE ERROR.  A
	NO OPERATION (JUMP) INSTRUCTION FOLLOWS EACH HALT.  THIS
	MAY BE USEFUL IN CONSTRUCTING A SCOPE LOOP TO CYCLE ON THE
	FAILING INSTRUCTION.

5.0	ITERATION COUNTER

	THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEM-
	ORY INDICATORS (MI).  THIS COUNT IS A DECREMENTING COUNT AND
	INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION.

6.0	CYCLE TIME

	THE CYCLE TIME OF THE PROGRAM IS IN THE MILLISECOND RANGE AND
	IS THEREFORE SUITABLE FOR TAKING MARGINS, VIBRATION TESTS, ETC.

							MAINDEC-10-DAKAH.TXT
							PAGE 5


7.0	OPERATIONAL VARIATIONS

	A.  DIAGNOSTIC MONITOR

	    THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PRO-
	    VIDE RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PRO-
	    VIDE A QUICK METHOD OF ISOLATION OF A FAULT TO A PARTICULAR
	    AREA OF THE PROCESSOR.  CERTAIN PROCEDURES ARE USED WHEN
	    THE PROGRAM IS USED IN THIS MANNER.  THEY ARE:

	    1.  THE DIAGNOSTIC MONITOR TRANSFERS CONTROL TO THE PRO-
		GRAM AND STARTS IT AT LOCATION 30002.

	    2.  MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MON-
		ITOR CONTROL FLAG WORD.

	B.  USER MODE

	    THE PROGRAM WILL OPERATE IN USER MODE AND AS SUCH PROVIDES
	    ASSURANCE THAT THE PROCESSOR IS PERFORMING ALL FUNCTIONS
	    CORRECTLY.  USER MODE STARTING ADDRESS IS 30000.

	C.  SYSTEM EXERCISER

	    STARTING ADDRESS IS 30003.  NO DATA SWITCHES ARE USED BY
	    THIS PROGRAM.

8.0	MISCELLANEOUS

	NONE

9.0	LISTING

DAKAH.HST

    THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAH

************************************************************************

PRODUCT CODE:       MAINDEC-10-DAKAH

PRODUCT NAME:       BASIC INSTRUCTION DIAGNOSTIC #8

DATE RELEASED:      JANUARY 1977

VERSION:            0.2

UPDATE AUTHOR:      JOHN R. KIRCHOFF
                    EDWARD G. PRENTICE

CHANGES MADE:

    1. UPGRADE TO ALLOW COMPATABILITY WITH THE SUBROUTINE PACKAGE.

************************************************************************

ORIGINAL VERSION:   0.1

ORIGINAL AUTHOR:    RICHARD MALISKA

ORIGINAL RELEASE:   16-MAR-72

************************************************************************

DAKAH.MAC

[Download]

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