Home of the original IBM PC emulator for browsers.
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.
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
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
************************************************************************
[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