      SKP 
* 
* THIS SECTION CHECKS THE MEMORY EXPANSION LOGIC ASSOCIATED 
* WITH MPT
* 
TST06 EQU * 
      NOP 
      LDA CPTO      GET COMPUTER TYPE.
      SSA,RSS       IS THIS A 2100? 
      JMP TST06,I   YES! DON'T EXECUTE TEST.
      LDA USSC      GET OPTIONS 
      AND BIT14     TEST FOR DMS
      SZA,RSS       IS DMS AVAIB. 
      JMP AUXME     NO! GO DO AUXILIARY TEST. 
      LDA JMP52     SET UP RETURN 
      STA MTRAP      IN TRAP CELL.
      CLA           CLEAR FOR MAPPING.
      STF 0         INTERRUPT SYSTEM ON.
      STC MPT       TURN ON MPT.
VIOLM XMA           MEM VIOLATION.
      HLT 27B       SHOULD FORCE INTERRUPT
ERR52 LIA VREG      GET VIOLATION ADDRESS.
      CPA MEMVL     VIOLATION IN RIGHT PLACE? 
      JMP MORME     YES! PROCESS FURTHER. 
      JSB ERMS,I    NO! REPORT ERROR
      DEF MS052     NO MEM VIOLATION. 
MORME SFS MPT       SHOULD SKIP ON MEM VIOLATION. 
      JMP ERR46     NO SKIP? REPORT ERROR.
      SFC MPT       SHOULD NOT SKIP.
      JMP NOSKP     NO SKIP? CONTINUE TEST. 
      JSB ERMS,I    SKIP? REPORT ERROR. 
      DEF MS047     SKF ON SFC 5 AFTER MEM VIOL.
NOSKP CLA           CLEAR 
      STA MTRAP       MPT TRAP CELL.
      STF 0         INTERRUPT SYSTEM ON.
      STC MPT       CLEAR MEM/MPT VIOLATION FF. 
      HLT 27B       FORCE INTERRUPT. MEM LOGIC CLEAR
      JMP AUXME     CONTINUE TESTING. 
ERR46 JSB ERMS,I    REPORT ERROR. 
      DEF MS046     NO SKF ON SFS 5 AFTER MEM VIOL. 
AUXME SFS MPT       SHOULD NOT SKIP.
      JMP SKPOK     DIDN'T SKIP. CHECK NEXT SKIP. 
      JSB ERMS,I    REPORT ERROR. 
      DEF MS050     ILLEGAL SKF ON SFS 5 - NO MEM 
SKPOK SFC MPT       SHOULD SKIP.
      RSS           DIDN'T SKIP. REPORT FAILURE 
      JMP TST06,I   SKIP OK! GO CONTINUE TEST.
      JSB ERMS,I    REPORT ERROR. 
      DEF MS051     NO SKF ON SFC 5 WITH NO MEM VIOL
      JMP TST06,I 
      SKP 
* 
* THIS SECTION TESTS THE VIOLATION AND FENCE REGISTERS
*  AND THE MEMORY VIOLATION LOGIC.
* 
TST07 EQU * 
      NOP 
      LDA MAXMT     GET MEMORY MODULE SIZE. 
      RAL           IS MEMORY > 16K?
      SSA           CHECK BIT 14 OF ADDR. 
      LDA BIT15     SET MEMORY TO 20K LIMIT.
      RAR           RESTORE MODULE VALUE. 
      STA MLIMT     SAVE IT.
      LDA RTNJS     SET UP TRAP 
      STA MTRAP      CELL RETURN. 
      LDA TS08D     SET UP INITIAL FENCE
      STA FENCE       REGISTER SETTING. 
TLOOP LDA FENCE     GET PRESENT FENCE.
      ADA LECOD     ADD LENGTH OF TEST MODULE.
      CPA MLIMT     END OF MEMORY?
      JMP EXITT     YES! REPLACE ORIGINAL DATA. 
      LDB NLNCD     NO! MOVE DATA OUT OF AREA 
      STB MCNTR     SAVE MOVE COUNT IN WORDS. 
      LDB BUFAD     GET ADDRESS OF SAVE BUFFER
      STB BUFPT     SAVE IT.
      ADA NLNCD     RESET FENCE VALUE.
      JSB MOVE      MOVE DATA BLOCK.
      LDA STCOD     MOVE TEST MODULE IN AREA
      LDB FENCE       JUST REMOVED. 
      STB BUFPT     SAVE MODULE ADDRESS.
      LDB NLNCD     GET MOVE COUNT. 
      STB MCNTR     SAVE IT.
      JSB MOVE      MOVE DATA BLOCK.
      JMP FENCE,I   TRANSFER CONTROL TO TEST. 
RLOOP LDA BUFAD     RESTORE DATA WHERE TEST MODULE
      LDB FENP1      IS RESIDING. 
      STB BUFPT     SAVE IT.
      LDB NLNCD     GET MOVE COUNT. 
      STB MCNTR     SAVE IT.
      JSB MOVE      MOVE DATA BLOCK.
      JMP TLOOP     CONTINUE TEST.
EXITT JMP TST06,I   CONTINUE TO NEXT TEST SECTION.
* 
* MOVE SUBROUTINE 
* 
MOVE  NOP 
MLOOP LDB A,I       GET A WORD. 
      STB BUFPT,I   STORE IT. 
      INA           MOVE
      ISZ BUFPT      POINTERS.
      ISZ MCNTR     DONE YET? 
      JMP MLOOP     NO! GO MOVE ANOTHER WORD. 
      JMP MOVE,I    YES! EXIT.
      SKP 
***************************************************************** 
* 
* TEST MODULE 
* 
STCOD DEF *+1 
BELOW LDA FENCE     GET OLD FENCE VALUE.
      STA FENP1     SAVE IT.
      INA           INCREMENT AND 
      STA FENCE       SAVE NEW VALUE. 
      OTA FENC      OUTPUT TO FENCE REGISTER. 
      ADA OFSTM     GET EXPECTED INTERRUPT ADDRESS. 
      STA EXPVR     SAVE IT.
      STF 0         INTERRUPT SYSTEM ON.
      STC MPT       TURN ON MPT.
      STA FENCE,I   STORE AT FENCE. NO INTERRUPT. 
MPTVL STA FENP1,I   STORE BELOW FENCE. INTERRUPT. 
      HLT 31B       FORCE INT IN CASE OF BAD FENCE. 
      JMP RLOOP     TRANSFER CONTROL BACK TO TEST.
***************************************************************** 
ENCOD EQU * 
LENCD EQU ENCOD-BELOW 
NLNCD ABS BELOW-ENCOD 
OFSET EQU MPTVL-BELOW-1 
OFSTM DEF OFSET 
BUFAD DEF *+1 
      BSS LENCD 
      SUP 
* 
* MESSAGES WHICH CANNOT BE ALTERED
*  BY THE TEST MODULE.
* 
MS030 ASC 16,E030 INVALID VIOLATION REGISTER
      OCT 6412
MX1   ASC 08,EXPECTED= XXXXXX 
      OCT 6412
MX2   ASC 09,ACTUAL =  XXXXXX/
MSP30 ASC 08,FENCE = XXXXXX/
MS032 ASC 16,E032 NO MEMORY PROTECT INTERRUPT 
      ASC 07, ON VIOLATING
      OCT 6412
MX3   ASC 16,INSTRUCTION AT ADDRESS  XXXXXX/
      SKP 
* 
* TEST ALL NON-VIOLATING INSTRUCTIONS 
* 
* 
TST08 EQU * 
      NOP 
      LDB FIVE      FENCE VALUE.
      LDA JSB51     TRAP CELL RETURN JSB. 
      JSB INTMP     INITIALIZE MPT. 
      STC MPT       TURN ON MPT.
* 
* TEST MEMORY REFERENCE INSTRUCTIONS. 
* 
      IOR B         NO INTERRUPT SHOULD OCCUR 
      ADA B          UNTIL HLT31 AT THE END OF
      ADB A           THIS LIST OF NON-VIOLATING
      AND B            INSTRUCTIONS.
      CPA A 
      CPB B 
      CLA 
      ISZ A 
      CLB 
      ISZ B 
      LDB B 
      LDB A 
      STA B 
      STB A 
      XOR B 
* 
* TEST SHIFT-ROTATE FUNCTIONS 
* 
      ALS,ALS 
      NOP 
      BLS,BLS 
      ARS,ARS 
      BRS,BRS 
      RAL,RAL 
      RBL,RBL 
      RAR,RAR 
      RBR,RBR 
      ALR,ALR 
      BLR,BLR 
      ERA,ERA 
      ERB,ERB 
      ELA,ELA 
      ELB,ELB 
      ALF,ALF 
      BLF,BLF 
* 
* TEST ALTER-SKIP FUNCTIONS 
* 
      CMA 
B7000 CMB 
      CME 
      CLE 
      CCE 
      INA 
      INB 
      CCA 
      CCB 
      RSS 
      NOP 
      SEZ 
      SLA 
      SLB 
      SSA 
      SSB 
      SZA 
      SZB 
* 
* TEST I/O INSTRUCTIONS 
* 
      CLO 
      SOS 
      STO 
      SOC 
      LIA 1 
      LIB 1 
      MIA 1 
      MIB 1 
      OTA 1 
      OTB 1 
IOSTC STC 1 
      CLC 1 
* 
* TEST EAU INSTRUCTIONS 
* 
      DIV FIVE
      DLD SAVEA 
      MPY FIVE
      ASL 5 
      ASR 5 
      LSL 5 
      LSR 5 
      RRL 5 
      RRR 5 
* 
* TEST EXTENDED INSTRUCTION GROUP 
* 
      LDA CPTO      GET COMPUTER TYPE.
      SSA,RSS       IS THIS A 2100? 
      JMP TOFLT     YES! SKIP EIG TEST. 
      ADX FIVE
      ADY FIVE
      CAX 
      CAY 
      CBX 
      CBY 
      CXA 
      CXB 
      CYA 
      CYB 
      DSX 
      DSY 
      ISX 
      ISY 
      LAX FIVE
      LAY FIVE
      LBX FIVE
      LBY FIVE
      LDX FIVE
      LDY FIVE
      XAX 
      XAY 
      XBX 
      XBY 
      LBT 
      SFB 
      NOP 
      OCT 105775    TBS 
      DEF BIT2
      DEF BIT2
      CLA,INA 
      CLB,INB 
      CMW FIVE      COMPARE WORDS 
      NOP 
      JMP FLTCK 
* 
* TEST FLOATING POINT INSTRUCTIONS
* 
TOFLT LDA CPTO      GET OPTIONS WORD. 
      AND BIT6      STRIP TO FLT PT BIT.
      SZA,RSS       FLOATING POINT AVAILABLE? 
      JMP JSBCK     NO! SKIP TEST FOR 2100. 
FLTCK OCT 105000    FAD 
      DEF BIT0
      OCT 105060    FDV 
      DEF BIT0
      OCT 105100    FIX 
      OCT 105120    FLT 
      OCT 105040    FMP 
      DEF BIT0
      OCT 105020    FSB 
      DEF BIT0
* 
* NOW TEST JSB 0 AND JSB 1
* 
JSBCK CLA 
      STA MTRAP     NOP MPT TRAP CELL.
      HLT 31B       FORCE INTERRUPT. MPC OFF. 
      LDB JARTN     SET UP RETURN IN CASE OF ERROR. 
      LDA JSB51     REINITIALIZE
      STA MTRAP      TRAP CELL. 
      STC MPT       MPC ON. 
      JSB A         SHOULD RETURN TO NEXT INST. 
      CLA 
      STA MTRAP     CLEAR TRAP AND
      HLT 31B        FORCE INTERRUPT. MPC OFF.
      LDA JBRTN     SET UP
      STA 2          RETURN.
      LDA JSB51     REINITIALIZE MPT
      STA MTRAP      TRAP CELL. 
      STC MPT       MPC TURNED ON.
      JSB B         SHOULD RETURN TO NEXT INST. 
      CLA           CLEAR MPT 
      STA MTRAP      TRAP CELL AND
      HLT 31B         SHUT OFF MPC. 
      JMP TST08,I   CONTINUE WITH NEXT TEST.
ERR51 NOP 
      CLE           FOR O2AS ROUTINE. 
      LIA VREG      GET VIOLATION ADDRESS.
      LDB MX53      GET DESTINATION BUFFER ADDRESS
      JSB O2AS,I    CONVERT A-REG TO ASCII
      LIB VREG      GET VIOLATION ADDRESS.
      LDA B,I       GET INSTRUCTION.
      JSB ERMS,I    REPORT ERROR. 
      DEF MS053     LEGAL INSTRUCTION CAUSED MPV
*                        A=VIOLATING LEGAL INSTRUCTION. 
*                        B=ADDRESS OF VIOLATING INSTRUCTION.
      LIA VREG      GET VIOLATING ADDRESS 
      INA           NEXT INSTRUCTION
      STA ERR51 
      STC MPT       TURN ON MPT 
      JMP ERR51,I   RETURN TO TEST
      SKP 
* TEST ALL VIOLATING INSTRUCTIONS 
* 
* 
*  IN THE 2100/21MX WHEN A MPT VIOLATION OCCURES WITH 
*  A "P-REG" MODIFING INSTRUCTION, THAT IS "JSB" "JMP" ETC. 
*  THE P-REG IS CARRIED TO THE INTERRUPT ROUTINE, HOWEVER,
*  IN A 21MX-E THE P-REG IS LOST AND THE TARGET ADDRESS 
*  OF THE VIOLATING INSTRUCTION IS STORED INTO THE
*  INTERRUPT ROUTINE.  IN A 21MX-E THE ADDRESS OF THE 
*  VIOLATING INSTRUCTION MUST BE OBTAIN FROM THE
*  VIOLATION REGISTER.. 
* 
TST09 EQU * 
      NOP 
      LDA RTNJS     TRAP CELL RETURN TO ERR 32. 
      STA SPTST     SPECIAL TEST MARKER.
      LDB FIVE      FENCE REGISTER WILL EQUAL FIVE
      JSB INTMP     INITIALIZE MPT. 
      LDA IPNTR     GET INSTRUCTION LIST POINTER. 
      STA INPNT     SAVE IT.
      LDA CPTO      GET COMPUTER TYPE.
      SSA,RSS       2100? 
      JMP NOEIG     YES! DON'T CLEAR INDEX REGISTERS. 
      CLA           CLEAR 
      CAX            INDEX
      CAY             REGISTERS.
NOEIG LDA HLT31     PUT 
      STA 2          HALTS IN 
      STA 3           VIOLATED MEMORY.
VILOP STF 0         TURN ON INTERRUPT SYSTEM. 
      LDA INPNT,I   GET AN INSTRUCTION. 
      CPA MIN1      END OF LIST?
      JMP EXT10     YES! GO TO END OF MPT TEST, 
      STA THT10     NO! PUT INSTRUCTION IN LINE.
      LDA CPTO      GET COMPUTER TYPE WORD. 
      SSA           2100? 
      JMP DOCHK     NO! GO DO TEST. 
      LDA INPNT,I   GET INSTRUCTION AGAIN.
      AND B7000     MASK TO IR 9-11.
      CPA B5000     EIG INSTRUCTION?
      JMP MOVLT     YES! SKIP IT. 
      CPA B1000     EIG INSTRUCTION?
      JMP MOVLT     YES! SKIP IT. 
DOCHK LDA EXA01     EXPECTED VIOLATION ADDRESS. 
      STA EXPVR     SAVE IT.
      LDA CPTO      TEST FOR 21MX-E 
      AND B170K       SEE NOTE ABOVE: 
      XOR B1512 
      SZA                *
      JMP CHK1           *
      LDA EXPVR          *
      INA                *
      STA CHKIN          *
      LDA RTNPJ          *
      LDB FIVE           *
      JSB INTMP          *
CHK1  LDA BIT1      GET VALUE = 2.
      STA THT10+1   STORE IT IN 
      STA THT10+2     LINE. 
      STC MPT       TURN ON MPT.
      LDA BIT2      SET A TO BYTE ADDR 4. 
      LDB BIT2      SET B TO BYTE ADDR 4. 
THT10 NOP           VIOLATION SHOULD OCCUR HERE.
      OCT 2         CONSTANT IF NEEDED BY INST. 
      OCT 2         CONSTANT IF NEEDED BY INST. 
      NOP           NOP IF NEEDED BY INST.
      HLT 31B       FORCE INT. IF NONE OCCURRED.
      NOP           SPACE FOR INSTRUCTIONS THAT 
      NOP            RETURN HERE. 
MOVLT ISZ INPNT     MOVE INSTRUCTION POINTER. 
      JMP VILOP     TEST MORE INSTRUCTIONS. 
EXT10 CLA           CLEAR SPECIAL 
      STA SPTST      TEST INDICATOR.
      JMP TST09,I 
      SPC 4 
* TEST PATTERNS FOR PE TEST 
* 
      ORG 1770B 
      NOP 
      OCT 125252
      OCT 52525 
      OCT 111111
      OCT 21444 
      OCT 156333
      OCT 66666 
      DEC -1
      HED DIAGNOSTIC CONTROL
      ORG 2000B 
ZSTEX CLC INTP,C    TURN INT SYSTEM OFF 
      CLA           CLEAR THE PE
      STA PTRAP       TRAP CELL.
      STA MFLAG     CLEAR MESSAGE FLAG
      STA XFLAG 
      STA HLT74     INSURE H74 FOR ANY RECONFIGURATION
      JSB MSGC,I    OUTPUT HEADER MESSAGE 
      DEF HDMS
      CLA           CLEAR PASS
      STA ZEOLC       COUNT 
      LDB B1000     CHECK FOR USER
      JSB SWRT,I       SELECTION REQUEST. 
      JMP ZUSR      YES? GO HALT. 
ZNUSR LDA STDA      GET STANDARD TEST 
      LDB STDB        SELECTION.
      JMP ZEXC
ZUSR  LIA SR        GET SW REG
      AND SRM       MASK OFF BIT 9
      OTA SR        OUTPUT TO SW REG
      LDA ZSINA     RETRIEVE PREVIOUS 
      LDB ZSINB       TEST SELECTION. 
      HLT 75B       WAIT FOR USER INPUT 
ZEXC  STA ZUINA     SAVE
      STB ZUINB       USER
      STA ZSINA         TEST
      STB ZSINB          SELECTION. 
      JSB CHPAR     CHANGE PARITY STATE.
      CLA           CLEAR TEST INDICATOR TO 
      STA TMODE      MPT TEST MODE. 
      CCA           SET TEST NUMBER 
      STA TSTN         =-1
      STA ZCFTT 
      CLA           CLEAR 
      STA ZTSTA      TEST RUN FLAG
ZEXCL LDA ZUINA     RESTORE A REG.
      LDB ZUINB     RESTORE B REG.
      ERA,RAL       ROTATE
      ERB             FIRST 
      ERA               TEST BIT
      STA ZUINA     SAVE POSITIONS
      STB ZUINB 
      ISZ TSTN      MOVE TEST UP ONE
      NOP 
ZXCL1 LDA TSTN      GET TEST NUMBER.
      ADA TSTP      GET IT'S
      LDA A,I         ADDRESS 
      CPA M1        IS IT THE END OF TESTS? 
      JMP ZEOL      YES! EXIT.
      LDB ZUINB     GET TEST INDICATOR. 
      SSB,RSS       SHOULD TEST BE RUN? 
      JMP ZEXCL     NO! CHECK NEXT TEST.
      STA ZTSTA     YES!  SAVE TEST ADDRESS 
      JSB ZITCH     INITIALIZE TRAP CELL HALTS
      CLC 0,C       CLEAR I-O.
      CLA           CLEAR MPT-PE
      STA PTRAP      TRAP CELL. 
      STF PERR      ENABLE PARITY ERROR LOGIC.
      JSB ZTSTA,I   GO DO TEST
      JSB ZITCH     INITIALIZE TRAP CELLS.
      CLF 0         TURN OFF INT SYSTEM 
      LDA TSTN      DISPLAY TEST NUMBER IF HALTED 
      LDB BIT15     CHECK FOR HALT AT 
      JSB SWRT,I      THE END OF TEST.
      HLT 76B       YES?  WAIT FOR OPERATOR 
      LDB B1000     CHECK FOR 
      JSB SWRT,I      USER SELECTION REQUEST. 
      JMP ZUSR      YES? GO HALT. 
      LDB BIT13     CHECK FOR LOOP ON 
      JSB SWRT,I       TEST SECTION.
      JMP ZXCL1     YES? GO LOOP. 
      JMP ZEXCL     NO? CONTINUE. 
ZEOL  CLA           CLEAR 
      STA PECHG      TEST 
      LDA ZTSTA     CHECK IF ANY TESTS
      SZA,RSS        WERE RUN.
      JMP ZNUSR     NO?  PICK UP STANDARD RUN 
      LDA ZEOLC     UPDATE
      INA            PASS 
      STA ZEOLC       COUNT.
      CCE 
      LDB ZPSCA     GET PASS COUNT
      ADB BIT1        ADDRESS 
      JSB O2AS,I    CONVERT IT TO ASCII 
      JSB MSGC,I    CALL PRINT ROUTINE
ZPSCA DEF ZPSC
      LDB BIT12     CHECK FOR LOOP
      JSB SWRT,I       ON DIAGNOSTIC. 
      JMP ZEOL1     YES? GO LOOP. 
      JSB CHPAR     NO? INITIALIZE PARITY.
      JSB JMG       TELL OPERATOR TO CHANGE JUMPERS 
      LDA ZEOLC     GET PASS COUNT. 
      HLT 77B       HALT AND DISPLAY PASS COUNT 
ZEOL1 LDA ZSINA     RESTORE ORIGINAL
      LDB ZSINB       PROGRAM 
      JMP ZEXC      GO DO ANOTHER PASS. 
* 
JMG   NOP 
      LDA MFLAG     HAS TEST(S) 11,12,13 BEEN EXECUTED ?
      SZA,RSS 
      JMP JMG,I     NO! EXIT
      CLA           YES! CLEAR
      STA MFLAG       FLAG
      STA XFLAG 
      LIA SR        GET SW-REG
      STA SAVSR     STORE SW-REG
      LDA RTNJY     PUT RETURN JUMP 
      STA PFCNT       PFAR TRAP CELL
      JSB MSGC,I    PRINT 
      DEF MS062       MESSAGE 
      HLT 62B       HALT FOR OPERATOR 
RTNY  LDA SAVSR     RESTORE 
      OTA 1           SW-REG
      STC PFCNT     SET CNTL 4 FF 
      JMP JMG,I     EXIT
* 
*         MESSAGE OUTPUT WITH OUT HALT
* 
ZMSGC NOP           ENTRY 
      JSB ZMSG      OUTPUT MESSAGE
      OCT 2000      SWITCH REG 10 CHECK 
      JMP ZMSGC,I   RETURN TO CALLER
      SKP 
* 
*     ERROR MESSAGE WITH HALT 
* 
ZERMS NOP 
      JSB ZMSG      OUTPUT MESSAGE
      OCT 4000      SWITCH REG 11 CHECK 
      CLA 
      LDB BIT14     CHECK SWR BIT 14 TO 
      JSB SWRT,I       SUPPRESS HALT. 
      STA *+3       NO? PUT HALT IN PLACE 
      LDA ZSAVA     RESTORE A & B 
      LDB ZSAVB 
ZHLT  NOP           WAIT FOR OPERATOR.
      JMP ZERMS,I   RETURN TO CALLER
ZMSG  NOP 
      STA ZSAVA     SAVE A AND
      STB ZSAVB       B-REG 
      CLA 
      SFS 0 
      CCA 
      STA HOLDI 
      CLF 0         TURN OFF INT SYSTEM 
      LDB ZMSG,I    GET SWITCH REGISTER BIT 
      LDA ZMSG
      ADA M2        DECREMENT RETURN ADDRESS
      STA ZMSG
      JSB SWRT,I    CHECK TO SUPPRESS MESSAGE 
      JMP ZMSG0     YES? DON'T PRINT. 
      LDA ZMSG,I    CHECK IF ERROR
      LDA A,I         MESSAGE 
      LDA A,I           IS HEADED 
      ALF,ALF             BY AN 
      AND Z.177            EXXX.
      CPA ZA.E      IS IT?
      JSB ZCFTN     YES! OUTPUT TEST NUMBER 
      LDA ZMSG,I    NO!  RETRIEVE FORMAT
      LDB A,I         ADDRESS 
      CLA,CLE 
      JSB FMTR,I    PRINT MESSAGE 
ZMSG0 LDA ZMSG,I    CONVERT HALT CODE 
      LDB A,I         FROM ASCII STRING 
      CCA,CCE 
      JSB AS2N,I
      STA ZEXTA     SAVE RESULT 
      AND Z.300     DECODE
      LDB ZH2         HALT CODE 
      CPA BIT6
      LDB ZH6 
      CPA Z.200 
      LDB STCOV 
      CPA Z.300 
      LDB ZH7 
      LDA ZEXTA     GET HALT NUMBER 
      AND Z.77
      IOR B 
      STA ZHLT      SAVE IT 
      ISZ ZMSG,I    ADJUST RETURN POINTERS
      ISZ ZMSG
      ISZ ZMSG
      ISZ ZMSG
      LDA HOLDI 
      SZA,RSS 
      STF 0 
      LDA ZSAVA     RESTORE A AND B REGISTERS 
      LDB ZSAVB 
      JMP ZMSG,I    RETURN. 
ZCFTN NOP 
      LDA TSTN      GET TEST NUMBER 
      CPA ZCFTT     IS IT THE SAME ONE? 
      JMP ZCFTN,I   YES!  SKIP OUTPUT 
      STA ZCFTT     NO!  THEN UPDATE IT 
      CLE 
      LDB ZBUFI 
      JSB I2AS,I
      LDB ZBUF1 
      STB ZTSTN 
      CLA           DO A CRLF 
      JSB SLOP,I
      CLA,CLE       INDICATE START OF FORMAT
      LDB ZTSTF 
      JSB FMTR,I    PRINT TEST NUMBER.
      JMP ZCFTN,I   RETURN
                                                                                                