ASMB,A,B,L,C
      HED HP 21MX MEMORY DIAGNOSTIC  (DSN 102104) 
      ORG 0         OCT. 25, 1976   DATE CODE 1644
      SUP 
*     GENERAL OPERATING PROCEDURE 
* 
*         A.   IF MEMORY PROTECT IS PRESENT,THEN PLACE PARITY 
*              ERROR/MEMORY PROTECT SWITCH A1S1 TO INT/IGNORE. IF 
*              MEMORY PROTECT IS NOT PRESENT,THEN PLACE PARITY
*              ERROR/MEMORY PROTECT SWITCH A1S1 TO HALT.
* 
*         B.   LOAD DIAGNOSTIC PROGRAM. 
* 
*         C.   LOAD SWITCH-REGISTER WITH DESIRED PROGRAM OPTIONS: 
*                   IF SET =: 
*                   15 = HALT AT END OF EACH TEST SECTION. A=TEST #.
*                   14 = SUPPRESS ERROR HALTS.
*                   13 = LOOP ON LAST TEST SECTION. 
*                   12 = LOOP ON DIAGNOSTIC. TESTS REQUIRING
*                        OPERATOR INTERVENTION ARE SKIPPED. 
*                   11 = RESERVED 
*                   10 = RESERVED 
*                   9  = GO TO USER SELECTION AT END OF PRESENT 
*                        TEST SECTION.
*                   8  = SUPPRESS OPERATOR INTERVENTION 
*                   7  = RESERVED 
*                   6  = RESERVED 
*                   5  = STORE NONFATAL ERRORS ABOVE 8K IN ERROR
*                        TABLE INSTEAD OF HALTING.
*                   4  = RESERVED 
*                   3  = RESERVED 
*                   2  = EXECUTE PROGRAM CHECK INSTEAD OF MAIN
*                        PROGRAM. 
*                   1  = RESERVED 
*                   0  = ABORT CURRENT EXECUTION AND HALT TO ENTER
*                        NEW MEMORY TEST LIMITS IN A & B OR LEAVE 
*                        A & B UNCHANGED TO KEEP CURRENT TEST 
*                        LIMITS. PRESS PRESET,RUN TO RESTART PASS.
* 
*     ****NOTE-CLEAR SWITCH-REGISTER WILL EXECUTE THE DEFAULT SET OF
*              TESTS (TST00 THRU TST10) HALTING ON ERRORS AND 
*              THE END OF THE PASS. 
* 
*         D.   SET P-REGISTER TO 100. PRESS PRESET AND THEN RUN.
* 
*         E.   RESTART-GO TO STEP C.
* 
      SKP 
* 
*     PROGRAM CHECK PROCEDURE 
* 
*              IF MEMORY FAILURES IN THE INITIALIZATION AREA WON'T
*              ALLOW EXECUTION OF THE MAIN PROGRAM,THEN FOLLOW THESE
*              STEPS TO RUN THE PROGRAM AREA CHECK ON ADDRESSES 
*              1000 TO 7777.
* 
*         A.   RELOAD DIAGNOSTIC PROGRAM. 
*         B.   SET SWITCH-REGISTER BIT 2. 
*         C.   SET P-REGISTER TO 100. PRESS PRESET AND THEN RUN.
* 
*     ERROR TABLE 
*         MODULE #  ERROR TABLE LOCATIONS  ERROR TABLE LOCATIONS
*         IN BASE   FOR BASE MEMORY ONLY   FOR BASE MEMORY + DMS
*         MEMORY**
*         2**            1600-1604             1600-1623
*         3**            1624-1627             1624-1647
*         4**            1650-1653             1650-1673
*         5**            1674-1677             1674-1717
*         6**            1720-1723             1720-1743
*         7**            1744-1747             1744-1767
* 
*     ERROR TABLE ENTRY FORMAT
* 
*         M    ERROR ADDRESS(15 BIT IN BASE OR 10 BIT IN DMS) 
*         M+1  DATA WRITTEN 
*         M+2  DATA READ
*         M+3  ONES IF ERROR IS IN BASE MEMORY OR PAGE # IF IN DMS
*         M+4  NUMBER OF TIMES AN ERROR OCCURRED AT THIS ADDRESS
* 
*     ERROR TABLE SUMMARY 
* 
*         BASE MEMORY    ADDRESS CONTAINING THE NUMBER OF ERRORS
*         MODULE #**     (MAXIMUM OF 4 PER MODULE) IN THE MODULE
*         2**            1770 
*         3**            1771 
*         4**            1772 
*         5**            1773 
*         6**            1774 
*         7**            1775 
* 
*     **NOTE-ERRORS MAY BE ENTERED IN ANY ORDER IF DMS IS PRESENT.
*     ****NOTE-IN SOME PHASES OF TESTING,THE PROGRAM OR SEGMENTS OF 
*              THE PROGRAM ARE MOVED TO TEST THE PROGRAM AREA. THIS 
*              MAY CAUSE DATA PATTERNS TO BE IN THE ERROR TABLE OR
*              LOCATION 126 AND THE PROGRAM TO NOT BE RESTARTABLE.
* 
      HED TRAP CELL HALTS AND INTERRUPT LINK FOR 5
      ORG 2 
      OCT 106077
      DEF PARCK     INITIALLY ASSUME FATAL PE 
      OCT 106077
      JSB 3,I       INITIALLY ASSUME MP IS PRESENT
* 
*     UNL 
*     REP 72B 
*     OCT 106077    TRAP CELL HALLTS
* 
      UNL 
      REP 72B 
      OCT 106077    TRAP CELL HALTS 
      LST 
*         CONFIGURATOR LINKAGE TABLE
* 
*     ****NOTE-THE CONFIGURATOR IS NOT USED IN THIS DIAGNOSTIC. 
*              THE PROGRAM WILL NOT,HOWEVER,DESTROY THE CONFIGURATOR
*              IF ALREADY IN MEMORY.
* 
A     EQU 0         A-REGISTER
INT   EQU 0         INTERRUPT SYSTEM
B     EQU 1         B-REGISTER
SWREG EQU 1         SWITCH-REGISTER 
MP    EQU 5         MEMORY PROTECT/PARITY ERROR 
PAGE  EQU 4000B 
* 
      ORG 100B      GO TO INITIALIZATION SECTION OR 
JMP05 JMP PJMP,I    IF RESTART TO 2000
      ORG 105B
      DEF PEND      FIRST WORD AVAILABLE MEMORY 
      BSS 1         LAST WORD AVAILABLE MEMORY
      ORG 126B
      OCT 102104    DIAGNOSTIC SERIAL NUMBER
      ORG 130B
PJMP  DEF INIT      POINT TO INITIALIZATION FOR NOW 
      HED PROGRAM CHECK 
*     PERFORMS THE FOLLOWING TESTS ON ADDRESSES 1000 TO 7777: 
* 
*     ONES AND ZEROS/MARCHING ONES AND ZEROS
*     ADDRESS PARITY
*     ADDRESS 
*     CHECKERBOARD
* 
*     ASSUMES MEMORY PROTECT IS PRESENT. DESTROYS ANY PROGRAMS
*     RESIDING IN TEST AREA 1000 TO 7777(INCLUDING COMOD AND THE
*     CONFIGURATOR IF 4K MEMORY). 
* 
ALT   LDA PAPAR     POINT INTERRUPT TO 5
      STA 3          INTO APAR
      LDA A1000     SET TEST
      STA ASADR      LIMITS OF
      LDB A7777       1000 TO 
      STB AEADR        7777 
*     MARCHING ONES AND ZEROS 
      CLA,CLE       TEST PATTERN OF 
      STA ATPAT      ZEROS.CLEAR E
      CCA           BACKGROUND PATTERN
      STA ABPAT      OF ONES
LP306 JSB ABLOC     WRITE TEST AREA TO DATA IN A
      LDB ASADR     START AT 1000 
LP305 STO           SET READING FLAG
      CPA B,I       BACKGROUND STILL THERE? 
      RSS           YES 
      JMP AEROR     NO.ERROR IN MODULE 0
      CLO           SET WRITING FLAG
      LDA ATPAT     GET TEST PATTERN
      STA B,I       WRITE IT
      CPA B,I       READ AND CHECK IT 
      RSS           OK
      JMP AEROR     ERROR IN MODULE 0 
      CPB AEADR     DONE? 
      JMP AL300     YES 
      INB           NO.BUMP POINTER 
      LDA ABPAT     GO BACK TO BACKGROUND 
      JMP LP305     CONTINUE
AL300 STO           SET READING FLAG
      CPA B,I       TEST PATTERN STILL THERE? 
      RSS           YES 
      JMP AEROR     NO.ERROR IN MODULE 0
      CLO           SET WRITING FLAG
      LDA ABPAT     NOW USE BACKGROUND PATTERN
      STA B,I       WRITE IT
      CPA B,I       READ AND CHECK IT 
      RSS           OK
      JMP AEROR     ERROR IN MODULE 0 
      CPB ASADR     DONE? 
      JMP AL301     YES.GO CHECK FOR OTHER PATTERNS 
      ADB AM1       DECREMENT POINTER 
      LDA ATPAT     GO BACK TO TEST PATTERN 
      JMP AL300     CONTINUE
AL301 JSB ACKPT     DO ANOTHER PATTERN? 
      JMP LP306     YES 
      SKP 
*     ADDRESS PARITY TESTS
* 
LP308 CLO           SET WRITING FLAG
LP309 LDB ASADR     START AT 1000 
LP313 LDA A.M16     SET COUNTER 
      STA ATEMP      =-16 DECIMAL 
      STB A         ADDRESS IN A
      CLE           CLEAR BIT FLAG
LP307 RAR,SLA       ADDRESS BIT SET?
      CME           YES.TOGGLE BIT FLAG 
      ISZ ATEMP     DONE? 
      JMP LP307     NO
      SEZ           EVEN # OF BITS? 
      JMP AL305     NO.ODD #
      LDA ABPAT     YES USE BACKGROUND PATTERN
AL307 SOS           WRITING?
      STA B,I       YES 
      CPA B,I       NO.CHECK DATA 
      RSS           OK
      JMP AEROR     ERROR IN MODULE 0 
      CPB AEADR     DONE? 
      JMP AL309     YES 
      INB           NO.BUMP POINTER 
      JMP LP313     CONTINUE
AL305 LDA ATPAT     USE TEST
      JMP AL307      PATTERN
AL309 SOC           JUST FINISH WRITING?
      JMP AL308     NO.GO CHECK FOR MORE PATTERNS 
      STO           YES.GO BACK AND 
      JMP LP309      READ THIS TIME 
AL308 JSB ACKPT     DO ANOTHER PATTERN? 
      JMP LP308     YES 
      SKP 
*     ADDRESS TESTS 
* 
LP312 CLO           SET WRITING FLAG
LP311 LDB ASADR     START AT 1000 
LP310 LDA ATPAT     USE ADDRESS OR
      SZA            COMPLEMENT ADDRESS?
      JMP AL311     COMPLEMENT ADDRESS
      LDA B         USE ADDRESS 
      JMP AL310 
AL311 LDA B         GET ADDRESS 
      CMA           COMPLEMENT IT 
AL310 SOS           WRITING?
      STA B,I       YES 
      CPA B,I       NO.CHECK DATA 
      RSS           OK
      JMP AEROR     ERROR IN MODULE 0 
      CPB AEADR     DONE? 
      JMP AL312     YES 
      INB           NO.BUMP POINTER 
      JMP LP310     CONTINUE
AL312 SOC           JUST FINISH WRITING?
      JMP AL313     NO.GO SEE IF DONE 
      STO           YES.GO BACK AND 
      JMP LP311      READ THIS TIME 
AL313 LDA ATPAT     DONE BOTH ADDRESS AND 
      INA,SZA,RSS    COMPLEMENT ADDRESS TESTS?
      JMP AL314     YES 
      CCA           NO.SET ATPAT TO USE 
      STA ATPAT      COMPLEMENT ADDRESS 
      JMP LP312     GO BACK & DO COMPLEMENT ADDRESS 
AL314 STA ATPAT     RESTORE TEST PATTERN TO ZEROS 
      SKP 
*     CHECKERBOARD TESTS
* 
      LDA PATBL     POINT TO
      STA PTBL2      PATTERN TABLE
LP318 LDA PTBL2,I   GET PATTERN ENTRY 
      STA APATT     PUT IT IN PATTERN VALUE 
LP315 CLO           SET WRITING FLAG
LP314 LDB ASADR     START AT 1000 
LP319 STB A         GET ADDRESS IN A
      AND APATT     ARE EITHER OF THE 
      SZA,RSS        PATTERN BITS SET?
      JMP AL315     NO
      CPA APATT     YES.ARE BOTH BITS SET?
      JMP AL315     YES 
      LDA ATPAT     NO.USE TEST 
      JMP AL316      PATTERN
AL315 LDA ABPAT     USE BACKGROUND PATTERN
AL316 SOS           WRITING?
      STA B,I       YES 
      CPA B,I       NO.CHECK DATA 
      RSS           OK
      JMP AEROR     ERROR IN MODULE 0 
      CPB AEADR     DONE? 
      JMP AL317     YES 
      INB           NO.BUMP POINTER 
      JMP LP319     CONTINUE
AL317 SOC           JUST FINISH WRITING?
      JMP AL318     NO.GO CHECK FOR MORE PATTERNS 
      STO           YES.GO BACK 
      JMP LP314      AND READ DATA
AL318 JSB ACKPT     DO ANOTHER PATTERN? 
      JMP LP315     YES 
      ISZ PTBL2     ANY MORE ENTRIES
      LDB PTBL2,I    IN THE PATTERN 
      INB,SZB         TABLE FOR VARIOUS VENDORS?
      JMP LP318     YES.GO BACK AND DO THAT PATTERN 
      LIA SWREG     IS BIT
      ALF,SLA        12 SET?
      JMP ALT       YES.DO ANOTHER PASS 
      RAR,SLA       IS BIT 13 SET?
      JMP ALT       YES.DO ANOTHER PASS 
H167  OCT 106067    END OF ALTERNATE TESTS
      JMP ALT       DO ANOTHER PASS OF ALT TESTS
      HED ACKPT 
* 
*     SETS UP BACKGROUND AND TEST PATTERNS IN ABPAT AND ATPAT 
*     RESPECTIVELY,BASED ON THE DATA IN ABPAT.
* 
*     ENTRY VALUE OF ABPAT    EXIT VALUES OF ABPAT,ATPAT & RETURN 
* 
*     177777                  000000,177777,P+1 
*     000000                  000001,177777,P+1 
*     000001                  000003,177776,P+1 
*     000003                  177777,000000,P+2 
* 
ACKPT NOP 
      LDA ABPAT     GET BACKGROUND IN A 
      INA,SZA       JUST DO A BACKGROUND OF ONES? 
      JMP AL302     NO.MUST BE 0,1 OR 3 
      STA ABPAT     YES.MAKE IT ZEROS 
      CCA           MAKE TEST 
      STA ATPAT      PATTERN ONES 
      CLA           EXIT WITH BACKGROUND
      JMP ACKPT,I    IN A 
AL302 SLA,RSS       JUST DO 000000? 
      JMP AL303     NO.MUST BE 1 OR 3 
      STA ABPAT     USE BACKGROUND=000001. TEST=1'S 
      JMP ACKPT,I 
AL303 CPA AB4       JUST DO 3?
      JMP AL304     YES 
      CCA           NO.TEST 
      ADA AM1        PATTERN
      STA ATPAT       =177776 
      LDA AB3       BACKGROUND
      STA ABPAT      =000003
      JMP ACKPT,I 
AL304 CLA           ALL DONE.SET
      STA ATPAT      TEST=000000
      CCA           AND BACKGROUND
      STA ABPAT      =177777
      ISZ ACKPT     RETURN
      JMP ACKPT,I    P+2
      HED ABLOC,AEROR 
* 
*     WRITE TEST AREA TO DATA IN A. 
*     VERIFIES DATA WRITTEN 
* 
ABLOC NOP 
      CLO           SET WRITING FLAG
LP317 LDB ASADR     START AT 1ST ADDRESS
LP316 SOS           WRITING?
      STA B,I       YES 
      CPA B,I       NO.CHECK DATA 
      RSS           OK
      JMP AEROR     ERROR IN MODULE 0 
      CPB AEADR     DONE LOOP?
      JMP AL319     YES.GO CHECK IF DONE
      INB           NO.BUMP POINTER 
      JMP LP316 
AL319 SOC 
      JMP ABLOC,I 
      STO 
      JMP LP317 
* 
*     PROCESSES ERRORS FOR AEROR
* 
AEROR EQU * 
      STB ATEMP     SAVE ADDRESS
      LDB B,I       GET BAD DATA IN B 
E104C OCT 106004    MODULE 0 HAS FAILURE
      LDA ATEMP     GET FAILING ADDRESS 
      LDB ATEMP      IN A & B 
E105C OCT 106005    FATAL MODULE 0 ERROR
      JMP *-1       IRRECOVERABLE 
      HED APAR
* 
*     PROCESSES PARITY ERROR INTERRUPTS FOR ALTERNATE TEST
* 
APAR  EQU * 
      NOP 
      STA ATEMP     SAVE A
      CLF INT       RE-DISABLE INTERRUPTS 
      LIA MP        GET VIOLATION REGISTER
      CLF MP        TURN OFF PARITY ERROR 
      SSA           BIT 15 OF VIOLATION REG SET?
      JMP AL320     YES.PE-OK 
E102A OCT 106002    NO.ERRONEOUS MP VIOLATION 
      JMP *-1       IRRECOVERABLE 
AL320 AND A.32K     MASK OFF VR BIT 15
      STA ASTOR     SAVE ADDRESS
      CMA,INA       MAKE IT - 
      ADA A777      IS THE FAILING ADDRESS
      SSA            BELOW 1000?
      JMP AL323     NO.OK 
AL321 LDA ASTOR     YES.PROGRAM AREA FAILURE
      LDB ASTOR      ADDRESS IN A & B 
E101C OCT 106001    PARITY AREA IN MODULE 0 
      JMP *-1       IRRECOVERABLE 
AL323 LDA ATEMP     RESTORE A 
      LDB ASTOR,I   GET BAD DATA
E116A OCT 106016    PARITY ERROR DURING ALT TEST
      JMP AL321     GO SHOW ADDRESS 
      HED CONSTANTS,LINKS AND STORAGE FOR ALT 
AB3   OCT 3 
AB4   OCT 4 
PAPAR DEF APAR      LINK TO PARITY ERROR ROUTINE
PATBL DEF ATBL      LINK TO TABLE OF VENDOR PATTERNS
A1000 OCT 1000
A777  OCT 777 
A7777 OCT 7777
A.32K DEC 32767 
A.M16 DEC -16 
AEADR BSS 1         LAST ADDRESS IN TEST AREA 
ABPAT BSS 1         BACKGROUND PATTERN
APATT BSS 1         STORAGE FOR CHECKERBOARD PATTERN
ASADR BSS 1         STARTING ADDRESS OF TEST AREA 
ASTOR BSS 1         STORAGE 
ATEMP BSS 1          FOR ALT TESTS
ATPAT BSS 1         TEST PATTERN
PTBL2 BSS 1         PATTERN POINTER 
* 
*     CHECKERBOARD PATTERN TABLE
* 
ATBL  EQU * 
      OCT 101       M0 EOR M6(TI 4030,4050) 
AM1   OCT 177777
      HED PROGRAM CONSTANTS,LINKS & STORAGE 
      ORG 700B
TSTNO BSS 1         CURRENT TEST NUMBER 
.1    DEC 1 
BIT0  EQU .1
B2    OCT 2 
B3    OCT 3 
B4    OCT 4 
B7    OCT 7 
B10   OCT 10
BIT3  EQU B10 
B14   OCT 14
B16   OCT 16
B24   OCT 24
SWAP  DEC 24        UP TO 32K ADDRESSABLE MEMORY
B40   OCT 40
BIT5  EQU B40 
B131  OCT 131 
B400  OCT 400 
PTST  DEF TSTNO     LINK TO TEST #
PETBL DEF ETABL     LINK TO START OF ERROR TABLE
PSTBL OCT 1770      LINK TO START OF SUMMARY TABLE
B1777 OCT 1777
PL073 DEF L073      LINK TO L073 IN TST07 
PL100 DEF L100      LINK TO L100 IN TST10 
PL140 DEF L140      LINK TO L140
PWCNT DEF WDCNT     LINK TO WORK COUNT IN MOVE
PMOVE DEF IMOVE     LINK TO MOVE ROUTINE
PENTR DEF ENTRY     LINK TO ERROR TABLE ROUTINE 
PDBNC DEF DEBNC     LINK TO S-REG DEBOUNCE RTN. 
B7777 OCT 7777
B10K  OCT 10000 
BIT12 EQU B10K
MASK2 OCT 10400 
B40K  OCT 40000 
BIT14 EQU B40K
B70K  OCT 70000 
B76K  OCT 76000 
.32K  DEC 32767 
B100K OCT 100000
BIT15 EQU B100K 
HLT00 HLT 0 
TRAP  OCT 106075    HALT PLACED IN UNUSED MEMORY
M10K  OCT -10000
.M64  DEC -64 
MASK1 EQU .M64
.M16  DEC -16 
M10   OCT -10 
M5    OCT -5
M3    OCT -3
.M1   DEC -1
AERR  BSS 1         STORAGE FOR A & B 
AP.E. BSS 1         STORAGE FOR A & B 
BACKP OCT 177777    DEFAULT OF 1'S
BERR  BSS 1          DURING ERROR ROUTINES
BP.E. BSS 1          DURING P.E. ROUTINE
CNTR1 BSS 1         COUNTER 
LOWER BSS 1         LOWER LIMIT OF TESTING
MERR  BSS 1         ONES OR PAGE #
PASS  BSS 1         PASS COUNT
PERR  BSS 1         BASE MEMORY OR PAGE ADDRESS 
SAVAD BSS 1         ADDRESS OF VIOLATION
TEMP2 BSS 1         STORAGE 
TEMP3 BSS 1         STORAGE 
TEMP4 BSS 1         STORAGE 
TEMP5 BSS 1         STORAGE 
TEMP6 BSS 1         STORAGE 
TEMP7 BSS 1         STORAGE 
MODUL EQU TEMP7     1ST ADDRESS IN CURRENT 4K MODULE
PDIAG EQU TEMP7     POINTER TO DIAGONAL ADDRESS 
TEMP9 BSS 1         STORAGE FOR ERROR ROUTINE 
TESTP NOP           DEFAULT OF 0'S
TESTS OCT 777       DEFAULT SET OF TESTS(TST00-10)
UPPER BSS 1         UPPER LIMIT OF TESTING
      HED INIT
*     INITIALIZATION SECTION
* 
*     A.  DETERMINES MEMORY SIZE & DISPLAYS SIZE IN SWITCH-REGISTER 
*         FOR OPERATOR VERIFICATION.
*     B.  DETERMINES IF MEMORY PROTECT IS PRESENT OR NOT. 
*     C.  PLACES 106075 IN UNUSED MEMORY LOCATIONS AFTER SAVING THE 
*         CONFIGURATOR IN LOCATIONS 6500-7677.
*     D.  MOVES A COPY OF THE MODULE 0 CHECK ROUTINE TO LOCATIONS 
*         131-677 AND SETS IT TO CHECK ADDRESSES 4000-7777. 
*     E.  JUMPS TO ADDRESS 4131 TO RUN A CHECK ON MEMORY MODULE 0.
* 
*     THE DEF TO INIT IN ADDRESS 130 IS OVERLAYED UPON COMPLETION 
*     OF A. & B. AND THEN INIT IS OVERLAYED AND CANNOT BE REUSED. 
* 
      ORG 1000B 
INIT  EQU * 
      LIA SWREG     RUN PROGRAM 
      RAR,RAR        CHECK INSTEAD OF 
      SLA             MAIN PROGRAM? 
      JMP ALT       YES 
      LDB I70K      START WITH 32K
LP202 CCA           TRY TO WRITE
      STA B,I        ONES THERE 
      CPA B,I       SUCCESSFUL? 
      JMP FOUND     YES.MEMORY IS THERE 
      CLA           NO.SHOULD BE
      CPA B,I        ZEROS THEN 
      RSS           OK
      JMP UH.OH     NOT ZEROS.GO DECIDE IF CONTINUE 
      ADB IM10K     DROP POINTER DOWN 4K
      SZB           DID POINTER BOTTOM OUT? 
      JMP LP202     NO. TRY NEXT MODULE 
E111  OCT 106011    YES.SOMETHING IS AMISS
      JMP *-1       FIX PROBLEM BEFORE PROCEEDING 
FOUND LDA PATT3     CAN 125252
      STA B,I        BE STORED
      CPA B,I         THERE?
      RSS           OK
      JMP UH.OH     NO. GO DECIDE TO CONTINUE 
      ADB I7777     FORM MEMORY SIZE
GOTIT STB MSIZE     SAVE IT 
      LIA SWREG     SAVE
      STA TEMP1      SW REG 
      CLA 
LP203 OTA SWREG     OUTPUT A TO SW REG
      LIB SWREG     READ IT BACK INTO B 
      CPB A         DATA CHECK? 
      JMP *+3       YES 
E113  OCT 106013    NO.CAN'T
      JMP *-1        PROCEED
      INA,SZA       DONE? 
      JMP LP203     NO
      LDA MSIZE     YES.OUTPUT LAST WORD OF 
      OTA SWREG      MEMORY ADDRESS TO SW REG 
      LDB I.M10     DELAY 
      INA,SZA        FOR
      JMP *-1         APPROXIMATELY 
      INB,SZB          3 SECONDS
      JMP *-3 
      LDA TEMP1     RESTORE 
      OTA SWREG      SW REG 
      LDB PHNDL     PUT DEF TO
      STB 3          HANDL IN 3 
      LDA I.3       SET UP
      OTA MP         FENCE=3
      CLC INT       CLEAR ANY I/O INTERRUPTS
      STF INT       TURN ON INTERRUPT SYSTEM
      STC MP        TURN ON MEMORY PROTECT
      CLA           TRY TO
VIOLI STA 2          VIOLATE MP 
      NOP           SHOULD INT HERE IF MP PRESENT 
      CLF INT       DISABLE INTERRUPTS
      CPA 2         MP NOT THERE. DID 2 GET STORED? 
      RSS           YES 
      JMP BADMP     NO.SOMETHING IS WRONG 
      LDA SHALT     PUT SPECIAL HALT IN 5 FOR 
      STA MP         ERRONEOUS INT TO 5 W/OUT MP
      JMP GONE      GO TO QUICK TESTS 
HANDL NOP           RETURN PT FOR MP INT
      CLF INT       DISABLE INT'S 
      LIA MP        GET VIOLATION REGISTER
      SSA           WAS THERE A PARITY ERROR? 
      JMP PARCK     YES.GO DECIDE WHAT TO DO
      LDB A,I       GET VIOLATING INSTRUCTION 
      CPB VIOLI     IS IT RIGHT?
      RSS           YES 
      JMP BADMP     NO.SOMETHING IS WRONG 
      LDA PVIOL     DID JSB IN 5 CAPTURE
      CPA HANDL      RETURN ADDRESS CORRECTLY?
      RSS           YES 
      JMP BADMP     NO.SOMETHING IS WRONG 
      LDA JMP01     INTERRUPTS NOW
      STA MP         ARE ERRORS 
      LDA 2         WERE CONTENTS OF LOC 2
      CPA THALT      PROTECTED? 
      RSS           YES 
      JMP BADMP     NO.SOMETHING IS WRONG 
      CLC INT       CLEAR ANY I/O INTERRUPTS
      STF INT       TURN INT SYSTEM BACK ON 
      CCA           IS MP 
      STA 2          TURNED OFF?
      NOP 
      CLF INT       YES.DISABLE INT'S 
                                                                                                                                                                                                                                                  