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