ASMB,A,B,L,C
      HED 2100 OR 12892A/B MEMORY PROTECT-PARITY ERROR DIAGNOSTIC 
      ORG 0    DSN 102305  20 JANUARY   77   REV 1705 
      SUP 
*     GENERAL OPERATING PROCEDURE 
* 
*         A. LOAD THE DIAGNOSTIC CONFIGURATOR AND CONFIGURE IT. 
*         B. LOAD THE DIAGNOSTIC MAIN PROGRAM 
*         C. LOAD ADDRESS 100B. 
*         D. LOAD THE SWITCH REG. WITH SELECT CODE & OPTIONS
*         E. PRESS RUN AND WAIT FOR HALT 102074.
*         F. LOAD SWITCH REGISTER 
*                IF SET, BIT
*                   15 = HALT AT END OF EACH TEST SECTION 
*                   14 = SUPPRESS ERROR HALTS 
*                   13 = LOOP ON LAST TEST SECTION
*                   12 = LOOP ON DIAGNOSTIC 
*                        (SUPPRESS ALL OPERATOR INTERVENTION) 
*                   11 = SUPPRESS ERROR MESSAGES
*                   10 = SUPPRESS NON-ERROR MESSAGES
*                    9 = GO TO USER TEST SELECTION
*                          AT END OF PRESENT TEST 
*                    8 = SUPPRESS OPERATOR INTERVENTION TESTS 
*                  7-0 = RESERVED 
* 
* 
* 
*         G. PRESS RUN. 
*         H. TO RESTART - LOAD ADDRESS 2000B
*         I. TO RECONFIGURE  - LOAD ADDRESS 100B
*                               AND GO TO STEP D. 
* 
*         GENERAL COMPUTER HALTS
* 
*         1020XX    E OR H  000 TO 060
*         1060XX    E OR H  100 TO 115
**        1070XX    E OR H  300 TO 314
* 
*         CONTROL PROGRAM HALT MESSAGES 
* 
*         102077    END OF DIAG (A = PASS COUNT)
*         102076    END OF TEST (A = TEST #)
*         102075    USER TEST SELECTION REQUEST 
*         102074    SELECT CODE INPUT COMPLETE
*         102073    USER SELECT CODE ERROR
*         102072    RESERVED
*         102071    RESERVED
*         102070    RESERVED
* 
*         106077    TRAP CELL HALT
* 
*         106070 -
*           106076  CONFIGURATOR HALTS.  SEE DIAG CONFIG. MANUAL. 
      HED CONFIGURATOR LINKAGE AREA 
A     EQU 0         A REGISTER REFERENCE
INTP  EQU 0 
B     EQU 1         B REGISTER REFERENCE
SR    EQU 1         SWITCH REGISTER REFERENCE 
DMAIN EQU 2 
PFCNT EQU 4 
VREG  EQU 5 
MPT   EQU 5 
PERR  EQU 5 
FENC  EQU 5 
MTRAP EQU 5 
PTRAP EQU 5 
DMACH EQU 6 
CH    EQU 10B 
      SPC 2 
      ORG 100B
      JMP CFIG,I    GO TO CONFIGURATION SECTION 
      BSS 1         FAST INPUT (PHOTO READER) 
SLOP  BSS 1         SLOW OUTPUT (LIST)
      BSS 1         FAST OUTPUT (DUMP OR PUNCH) 
      BSS 1         SLOW INPUT (KEYBOARD) 
      DEF FWAA      FIRST WORD OF AVBL. MEMORY
      BSS 1         LAST WORD OF AVBL. MEMORY 
      BSS 1         NOT USED (MAG TAPE) 
      BSS 1         1 MILL SEC TIME OUT COUNT 
      BSS 4         SELECT CODES FOR I/O
CPTO  BSS 1         COMPUTER TYPE/OPTIONS 
USSC  NOP           USER CARD TYPE AND SELECT CODE
MEMO  BSS 1         MEMORY SIZE AND TYPE
      BSS 1         INTERNAL SWITCH REGISTER
      BSS 1         1 MILL SEC TIMER
      BSS 1         CONFIGURATOR SWITCH CK PTR
I2AS  BSS 1         INTEGER TO ASCII CONVERSION 
O2AS  BSS 1         OCTAL TO ASCII CONVERSION 
AS2N  BSS 1         ASCII CONVERSION
DSN   OCT 102305    DIAGNOSTIC SERIAL NUMBER
FMTR  BSS 1         FORMATTER 
* 
*         CONTROL LINKAGE AND DATA REFERENCES 
* 
CFIG  DEF ZCONF     CONFIGURATION SECTION 
MSGC  DEF ZMSGC     MESSAGE WITH NO HALT
ERMS  DEF ZERMS     ERROR MESSAGE 
SWRT  DEF SWRTX 
TSTN  OCT 0         CURRENT TEST NUMBER 
IOIP  DEF IODP
TSTP  DEF TSTD
STDA  OCT 033777    STANDARD TEST RUN 
STDB  OCT 0 
      HED DIAGNOSTIC DATA 
TSTD  DEF TST00 
      DEF TST01 
      DEF TST02 
      DEF TST03 
      DEF TST04 
      DEF TST05 
      DEF TST06 
      DEF TST07 
TS08D DEF TST08 
      DEF TST09 
      DEF TST10 
      DEF TST11 
      DEF TST12 
      DEF TST13 
M1    DEC -1
      SPC 3 
RTNPJ JMP CHKIN+1 
RTNJS JSB CHKIN 
JMP35 JMP ERR35 
JMP37 JMP ERR37 
JMP42 JMP E42 
JMP43 JMP E43 
JSB51 JSB ERR51 
JMP52 JMP ERR52 
JS102 JMP JX102,I 
JX102 DEF ER102 
      DEF ER103 
      DEF ER104 
      DEF ER105 
      DEF ER106 
JS107 JMP JX107,I 
JX107 DEF ER107 
      DEF ER110 
JS112 JMP JX112,I 
JX112 DEF ER112 
JS113 JMP JX113,I 
JX113 DEF ER113 
JS301 JMP JX301,I 
JX301 DEF ER301 
JS302 JMP JX302,I 
JX302 DEF ER302 
JS305 JMP JX305,I 
JX305 DEF ER305 
      DEF ER306 
JS307 JMP JX307,I 
JX307 DEF ER307 
JS313 JMP JX313,I 
JX313 DEF ER313 
JS314 JMP JX314,I 
JX314 DEF ER314 
GOD12 JMP RTN12,I 
RTN12 DEF RET12 
VIJSB DEF VAJSB 
VIJSX DEF VIJS2 
INLN2 DEF LINE2 
MPX30 DEF MSP30+4 
MXPTR DEF MX2+8 
SAVEA NOP 
SAVEB NOP 
SAVED BSS 2 
ADMOD NOP 
LASTA OCT 77777 
SPSP  ASC 1,
RTLF  ASC 1,//
HOLDI NOP 
MCNTR NOP 
EXPVR NOP 
TMODE NOP 
INPNT NOP 
BUFPT NOP 
FENCE NOP 
USRSC NOP 
PTRIN NOP 
MLIMT NOP 
PECHG NOP 
SAVSR NOP 
SAVS2 NOP 
B5000 OCT 5000
BIT0  OCT 1 
BIT1  OCT 2 
BIT2  OCT 4 
BIT6  OCT 100 
B1777 OCT 1777
B4000 OCT 4000
BIT12 OCT 10000 
BIT13 OCT 20000 
BIT14 OCT 40000 
BIT15 OCT 100000
B1512 OCT 110000
B170K OCT 170000
M2    DEC -2
M10   DEC -10 
M100  DEC -100
STCOV OCT 103000
SAVA  BSS 2 
CFMEM OCT 6000
MOMSK OCT 70000 
ZS812 OCT 10400 
FIVE  OCT 5 
JARTN JMP A,I 
SPTST NOP 
JBRTN JMP B,I 
IPNTR DEF VILST 
FENP1 NOP 
B1000 OCT 1000
MAXMT NOP 
RTNJP JMP PETST,I 
RTNJX JMP PFAR1,I 
RTNJY JMP PFAR2,I 
PFAR1 DEF RTNX
PFAR2 DEF RTNY
VIINS DEF VIOLT 
PETST DEF PECON 
MBX1  DEF MX1+5 
MBX2  DEF MX2+5 
MBX3  DEF MX3+12
MX53  DEF MS053+17
PX103 DEF MX103 
MEMVL DEF VIOLM 
LECOD DEF LENCD 
TPNT1 DEF PETD1 
TPNT2 DEF PETD2 
TPNT6 DEF PETD6 
EA001 DEF TH001 
EA002 DEF TH002 
EA003 DEF TH003 
EXA01 DEF THT10 
EXT20 JMP TSI20,I 
TSI20 DEF RET20 
J4    JSB *+1,I 
      DEF INT4
      SPC 3 
IODP  DEF IO.01 
      DEF IO.02 
      DEF IO.03 
      DEC -1
* 
BUF   DEF *+1       BUFFER FOR DMA
      BSS 20          TRANSFER IN TEST 12 
      SKP 
* 
* VIOLATING INSTRUCTION LIST
* 
VILST ISZ 2 
      JSB 2 
      JMP 2 
      STA 2 
      STB 2 
      OCT 104400    DST 
      OCT 101740    SAX 
      OCT 101750    SAY 
      OCT 105740    SBX 
      OCT 105750    SBY 
      OCT 105743    STX 
      OCT 105753    STY 
      OCT 105772    JPY 
      OCT 105762    JLY 
      OCT 105774    CBS 
      OCT 105773    SBS 
      OCT 105777    MVW 
      OCT 105765    MBT 
      OCT 105764    SBT 
VIOLT CLC 2 
      CLF 2 
      LIA 2 
      LIB 2 
      MIA 2 
      MIB 2 
      OTA 2 
      OTB 2 
      SFC 2 
      SFS 2 
      STC 2 
      STF 2 
MIN1  DEC -1        END OF LIST 
      SPC 3 
* PARITY TEST ADDRESSES 
INPTR DEF *+1 
      DEF PEAD1 
      DEF PEAD2 
      DEF CHKP1 
      DEF INHLT 
      DEC -1
      HED DIAGNOSTIC SUBROUTINES
********************************************************************
*  *CHKIN* CHECKS MEMORY PROTECT AND PARITY ERROR 
*   INTERRUPT INFORMATION TO DETERMINE IF THE 
*    VIOLATION REGISTER CONTENTS IS CORRECT.
* 
*        PARAMETERS PASSED: 
* 
*          A-REG = EXPECTED VIOLATION REGISTER
*                   (BIT 15 ALWAYS CLEAR).
* 
CHKIN NOP 
      CLF 0         TURN OFF INTERRUPT SYSTEM.
      DST SAVA      SAVE A AND B REG
      LDB TMODE     TMODE=0 IF MPT TEST.
      LDA EXPVR     GET EXPECTED VIOLATION REG. 
      CLE,SZB       IS THIS THE MPT TEST? 
      IOR BIT15     NO! SET BIT 15 FOR PE VR CHECK. 
      LIB VREG      GET ACTUAL VIOLATION REGISTER.
      CPB A         ACTUAL VR = EXPECTED VR?
      JMP CHKRN     YES! GO SETUP RETURN ADDRESS. 
      DST SAVEA     NO! SAVE EXPECTED/ACTUAL VR.
      LDB SPSP      GET ASCII DOUBLE SPACE. 
      CLE,SSA       MPT VIOLATION?
      LDB RTLF      NO! FORM CR-LF. 
      STB MXPTR,I   PUT ASCII IN MESSAGE. 
      SSA           PARITY ERROR EXPECTED?
      JMP SETBF     YES! GO PRINT VR DATA.
      LDB SAVEB     NO! GET 
      LDB B,I         VIOLATING INSTRUCTION.
      CPB HLT31     WAS IT A HLT 31B ?
      JMP NOMPV     YES! GO PRINT NO MPV. 
      LDA FENCE     NO! GET FENCE VALUE AND 
      LDB MPX30           CONVERT IT TO 
      JSB O2AS,I            ASCII.
SETBF LDA SAVEA     GET EXPECTED VR.
      LDB MBX1      BUFFER ADDRESS IN ERROR MESSAGE.
      JSB O2AS,I    CONVERT EXPECTED VR TO BUFFER 
      LDA SAVEB     GET ACTUAL VR VALUE 
      LDB MBX2      BUFFER ADDR IN ERROR MESSAGE. 
      JSB O2AS,I    CONVERT ACTUAL VR INTO BUFFER.
      DLD SAVEA     RESTORE EXPECTED-ACTUAL VR. 
E030  JSB ERMS,I    PRINT MESSAGE WITH
      DEF MS030      RESPECTIVE HALT CODE.
      SSA           EXPECT MPT VIOLATION? 
      JMP NOMPT     NO! SKIP FENCE HALT.
DOFEN LDA FENCE     GET FENCE REG SETTING.
      LDB B4000     SUPPRESS ERROR
      JSB SWRT,I        MESSAGES? 
      RSS           YES! CHECK SUPPRESS.
      JMP NOMPT     NO! SKIP HALT 
      LDB BIT14     SUPPRESS
      JSB SWRT,I      ERROR HALTS?
      RSS           YES! DON'T HALT.
E060  HLT 60B       NO! HALT(A=FENCE) 
NOMPT LDA SAVEA     SETUP 
      SSA            PARITY ERROR TEST MODE?
      JMP NOINC     YES! DON'T ALTER CHKIN RETURN.
      AND LASTA     NO! SETUP RETURN
      INA                  ADDRESS. 
      STA CHKIN     SAVE IT.
CHKRN LDB SPTST     GET SPECIAL TEST INDICATOR. 
      SZB           IS THIS A SPECIAL TEST? 
      JMP INCRT     YES! GO UPDATE RETURN.
      SSA,RSS       PARITY ERROR TEST?
      ISZ CHKIN     NO! INC CHKIN PAST HLT 31.
      JMP NOINC     YES! GO RETURN. 
INCRT LDA CHKIN     GET RETURN NOP CONTENTS.
      ADA BIT2      ADD 4 TO GET PAST INST. CONSTANTS.
      STA CHKIN     SAVE NEW NOP VALUE. 
NOINC DLD SAVA      RESTORE A AND B REGISTERS.
      JMP CHKIN,I   RETURN TO TESTING.
NOMPV LDB MBX3      BUFFER POINTER IN MESSAGE.
      JSB O2AS,I    CONVERT A-REG TO ASCII. 
      LDA SAVEA     GET EXPECTED VIOLATION ADDR.
      JSB ERMS,I    PRINT ERROR MESSAGE FOR 
      DEF MS032      NO MPT INTERRUPT.
*                       A=EXPECTED VIOLATION ADDRESS
      JMP DOFEN     RETURN TO TESTING 
****************************************************************
*  *INTMP* INITIALIZES MEMORY PROTECT BY SETTING THE
*    FENCE REGISTER AND RETURN JUMP IN THE TRAP CELL. 
* 
*      PARAMETERS PASSED: 
* 
*        A-REG = DESIRED MEMORY PROTECT TRAP
*                 CELL CONTENTS.
* 
*        B-REG = FENCE VALUE TO BE OUTPUT.
* 
* 
INTMP NOP 
      CLC 0,C       CLEAR I-O.
      OTB FENC      OUTPUT TO FENCE REGISTER. 
      STA MTRAP     SET UP MP TRAP CELL.
      STB FENCE     SAVE ACTUAL FENCE VALUE.
      STF 0         TURN ON INTERRUPT SYSTEM. 
      JMP INTMP,I   RETURN TO TEST. 
* 
********************************************************************
      SKP 
****************************************************************
* 
* INITIALIZE MEMORY LOCATIONS USED IN 
*  THE PARITY ERROR TEST. 
* 
CHPAR NOP 
      CLA           CLEAR PE
      STA PTRAP      TRAP CELL. 
      LDA PEBUF     GET INITIAL ADDRESS.
DSLOP LDB A,I       GET A DATA WORD.
      STB A,I       STORE CURRENT PARITY. 
      CPA B1777     END OF TEST BLOCK?
      JMP DSBLK-1   YES! GO STORE INDIVIDUAL DATA 
      INA           NO! MOVE ADDRESS POINTER AND
      JMP DSLOP       UPDATE MORE DATA. 
      INA 
DSBLK ADA B1000     MOVE TO NEXT HALF PAGE. 
      LDB A,I       GET A DATA WORD.
      STB A,I       STORE CURRENT PARITY. 
      CPA MAXMT     END OF CONSTANTS? 
      RSS           YES! GO CHANGE INDIVIDUAL WORDS.
      JMP DSBLK     NO! CHANGE MORE ADDRESSES.
      LDA INPTR     GET INDIVIDUAL LIST PNTR. 
      STA PTRIN     SAVE IT.
INLOP LDA PTRIN,I   GET A WORD FOR PARITY CHANGE. 
      CPA MIN1      END OF LIST?
      JMP CHPAR,I   YES! RETURN TO TESTING. 
      LDB A,I       GET WORD TO BE INITIALIZED. 
      STB A,I       STORE CURRENT PARITY. 
      ISZ PTRIN     MOVE POINTER. 
      JMP INLOP     GO CHANGE ANOTHER WORD. 
*************************************************************** 
CHKDO NOP 
      LDA CPTO      GET COMPUTER TYPE 
      SSA,RSS       SKIP IF 2100
      JMP CHKDO,I   EXIT CURRENT TEST 
      LDA USSC      IS THIS A 
      SSA             12892B UNDER TEST?
      ISZ CHKDO     INCR RTN ADDR 
      JMP CHKDO,I   RETURN TO TEST. 
      SKP 
*   TONIO CALLING FORMAT- 
* 
*       A=I-O SELECT CODE 
*       JSB TONIO 
* 
TONIO NOP 
      STA USRSC,I   SET UP I-O TRAP CELL. 
IO.01 STC CH        TURN ON I-O 
IO.02 STF CH         TO INTERRUPT.
      STF 0         TURN ON INTERRUPT SYSTEM. 
      JMP TONIO,I   RETURN. 
* 
IO.03 CLF CH
* 
* EXIT CURRENT TEST IF SR 8 OR 12=1 
* 
CHKSW NOP 
      LDB ZS812     YES! CHECK IF OPERATOR NEEDED.
      JSB SWRT,I    IS SW.REG. 8 OR 12 SET? 
      JMP CHKSW,I   YES! EXIT P+1 
      ISZ CHKSW     NO! INCR RTN ADDR 
      JMP CHKSW,I   RTN P+2 
***************************************************************** 
PEBUF DEF *+1 
PETD1 NOP 
PETD2 NOP 
PETD3 NOP 
PETD4 NOP 
PETD5 NOP 
PETD6 OCT 100644    INDIRECT POINTER. 
* END OF PARITY ERROR TESTS CONSTANTS.
      HED MEMORY PROTECT TESTS
      SKP 
* 
*  TEST THAT A HALT IS NOT ALLOWED BY MPT.
* 
TST00 EQU * 
      NOP 
      CLB           FENCE WILL BE ZERO. 
      LDA RTNJS     PREPARE TRAP CELL INSTRUCTION.
      JSB INTMP     INITIALIZE MPT. 
      LDA EA001     GET EXPECTED VIOLATION ADDRESS. 
      STA EXPVR     SAVE IT.
STC5  STC MPT       TURN ON MPT.
      NOP           SHOULD NOT INTERRUPT HERE.
      LDB BIT14     SUPPRESS
      JSB SWRT,I      ERROR HALTS?
      RSS           YES! DON'T HALT.
TH001 HLT 26B       MPT SHOULD NOT ALLOW HALT HERE. 
      CLC 0,C       TRY INT HERE IF NO MPV ON HALT. 
      JMP TST00,I 
      SKP 
* 
* TRY TO STORE AT AND BELOW FENCE.
* 
TST01 EQU * 
      NOP 
      LDA 3         SAVE CONTENTS OF ADDR 3 
      STA SAVED         FOR TEST COMPARISON.
      LDA RTNJS     PREPARE TRAP CELL JSB.
      LDB BIT2      FENCE WILL BE SET TO 4
      JSB INTMP     INITIALIZE MPT. 
      LDA EA002     GET EXPECTED VIOLATION ADDRESS. 
      STA EXPVR     SAVE IT.
      LDB 4         TEST PATTERN IN B-REG.
      STC MPT       TURN ON MPT.
      STB 4         NO VIOLATION SHOULD OCCUR HERE. 
TH002 STB 3         VIOLATION OCCURS HERE.
HLT31 HLT 31B       SHOULD NEVER HALT HERE. 
      LDB 3         GET ADDR 3 DATA.
      CPB SAVED     WAS ADDRESS STORED? 
      JMP TST01,I   NO! GO DO NEXT TEST 
      LDA EA002     YES! GET STB LOCATION.
      JSB ERMS,I    REPORT FAILURE. 
      DEF MS033     MEMORY ALTERED BY ILLEGAL STB.
*                       A=VIOLATION ADDRESS.
      JMP TST01,I 
      SKP 
* 
* INSURE AN I/O INSTRUCTION (NOT A HALT) IS NOT ALLOWED.
* 
TST02 EQU * 
      NOP 
      LDA RTNJS     GET JSB TO CHKIN. 
      JSB INTMP     GO INITIALIZE MPT.
      LDA EA003     GET EXPECTED VIOLATION ADDRESS. 
      STA EXPVR     SAVE IT.
      CCB           PREPARE FOR TEST. 
      STF 0         TURN ON INT SYSTEM. 
      STC MPT       TURN ON MPT.
TH003 LIB 0         SHOULD CAUSE INTERRUPT. 
      HLT 31B       SHOULD NEVER HALT HERE. 
      SZB,RSS       WAS B-REG ALTERED?
      JMP TST02,I   YES! CONTINUE TESTING.
      LDA EA003     NO! GET LIB ADDRESS.
      JSB ERMS,I    REPORT ERROR. 
      DEF MS034     B-REG ALTERED BY ILLEGAL LIB. 
*                       A=LIB ADDRESS.
      JMP TST02,I 
      SKP 
      SKP 
* 
* INSURE NO VIOLATION OCCURS WITHOUT A STC 5 AND
*  VERIFY SELECT CODE 5 IS DECODED PROPERLY.
* 
TST03 EQU * 
      NOP 
      CLB           FENCE WILL BE ZERO. 
      LDA JMP35     ERROR RETURN JSB. 
      JSB INTMP     INITIALIZE MPT. 
      LIA 0         NO INTERRUPT - MPT OFF. 
      SZA           DID LIA 0 EXECUTE.
      JMP ERR36      NO! REPORT ERROR.
      JMP CON03      YES! START SC 5 TEST.
ERR35 JSB ERMS,I    REPORT ERROR. 
      DEF MS035     INTERRUPT WITH MPT OFF. 
      JMP CON03     CONTINUE TEST.
ERR36 JSB ERMS,I    REPORT ERROR. 
      DEF MS036     LIA NOT ALLOWED WITH MPT OFF. 
CON03 CLC 0,C       CLEAR I-O.
      CLA           CLEAR 
      OTA 6           DMA 
      OTA 7             SELECT CODES
      STF 0         INTERRUPT SYSTEM ON.
      LDA JMP37     SET UP MPT
      STA MTRAP       TRAP CELL.
      DLD IOSTC     GET STC AND CLC INSTRUCTIONS. 
      DST INLIN     PUT THEM IN LINE. 
      LDB STCOV     SET UP COMPLETION INDICATOR.
SCLOP LDA INLIN     GET STC INSTRUCTION.
      CPA STC5      IS IT A STC 5?
      JMP INCIO      YES! SKIP TO NEXT SELECT CODE. 
INLIN STC 1          NO! EXECUTE TO VERIFY NO SC5.
INLI2 CLC 1         INTERRUPT IF ILLEGAL SC 5.
INCIO ISZ INLIN     MOVE TO NEXT SELECT CODE
      ISZ INLI2      FOR STC AND CLC. 
      CPB INLIN     WAS THAT THE LAST SELECT CODE?
      JMP TST03,I    YES! GO TO NEXT TEST.
      JMP SCLOP      NO! CONTINUE SC TEST.
ERR37 LDA INLIN     GET INSTRUCTION THAT TURNED ON
      JSB ERMS,I     MPT LIKE A STC 5.
      DEF MS037     ILLEGAL DECODE OF SELECT CODE 5.
*                       A=STC INSTRUCTION THAT ENABLED MPT. 
      JMP TST03,I 
      SKP 
* 
* TEST ABILITY OF AN I/O INSTRUCTION IN A TRAP
*  CELL NOT TO SHUT OFF MPC 
* 
TST04 EQU * 
      NOP 
      CLC 0,C       TURN OFF I-O
      LDA J4        SET UP JSB
      STA MTRAP       IN MPT TRAP CELL
      LDA TSTD      SET 
      OTA FENC       UP 
      STA FENCE       FENCE 
      LDA IO.03     CLF CH
      JSB TONIO     TURN ON I-O DEVICE
      STC MTRAP     TURN ON MPT 
      NOP 
      NOP 
CLF0  CLF 0         MPT SHOULD OCCUR HERE 
      JMP E054      CLF 0 DID'NT CAUSE MPT VIOLATION
      SPC 3 
INT4  NOP           MPT ROUTINE 
      CLF 0         TURN OFF INTP SYST
      CLC 0,C       TURN OFF I-O
      LIA MTRAP     READ VIOLATION REG
      LDA A,I       GET VIOLATING INSTR 
      CPA CLF0      COMPARE WITH EXPECTED VIOLATING INSTR 
      JMP TST04,I   OK - EXIT TEST
E054  JSB ERMS,I    REPORT ERR
      DEF MS054 
      JMP TST04,I   EXIT TEST 
      SKP 
* 
* 
* THIS SECTION VERIFIES A MULTI-LEVEL INDIRECT
*  INSTRUCTION WILL BE INTERRUPTED DURING THE 
*   THIRD LEVEL.
* 
TST05 EQU * 
      NOP 
      LDA JMP43     I-O TRAP CELL VALUE 
      JSB TONIO     TURN ON I-O.
      JMP *+1,I     START MULTI-LEVEL 
      DEF *+1         INDIRECT. NO INTERRUPT. 
      CLC 0,C       CLEAR INT SYSTEM. 
      LDA JMP42     I-O TRAP CELL VALUE.
      JSB TONIO     TURN ON I-O.
      JMP *+1,I     MULTI-LEVEL INDIRECT
      DEF *+1,I      (TWO LEVELS-NO INTERRUPT). 
      DEF *+1 
      CLC 0,C       CLEAR INT. SYSTEM.
      LDA EXIT6     I-O TRAP CELL VALUE.
      JSB TONIO     TURN ON I-O.
      JMP *+1,I     THREE 
      DEF *+1,I      LEVEL
      DEF *+1,I       INDIRECT. 
      DEF *+1          INTERRUPT HERE.
      CLC 0,C       NO INTERRUPT OCCURRED.
      JSB ERMS,I    PRINT ERROR MESSAGE.
      DEF MS044     NO I/O INT ON INDIRECT CHAIN. 
      JMP TST05,I   GO DO NEXT TEST.
E42   JSB ERMS,I    REPORT ERROR. 
      DEF MS042     INT AFTER 2ND LEVEL INDIRECT. 
      JMP TST05,I 
E43   JSB ERMS,I    REPORT ERROR. 
      DEF MS043     INT AFTER 1ST LEVEL INDIRECT. 
EXIT6 JMP TST05,I 
                                                                                                                                                        