* 
*  MODIFY I/O INSTRUCTIONS
* 
SETIO NOP           ENTRY POINT.
      STA CHAN      SAVE I/O CHANNEL NUMBER.
      LDB SETIO,I   GET ADDR.-1 OF CONFIG. TABLE. 
      LDA B,I       GET ADDR.+1 OF TABLE END
      STA LSTND      AND SAVE IT. 
      ISZ SETIO     SET FOR RETURN VIA (P+2). 
SET1  INB           INCR. POINTER IN CONFIG. TABLE. 
      CPB LSTND     IF DONE,
      JMP SETIO,I    RETURN.
      LDA B,I       GET ADDRESS OF I/O INSTRUCTION
      STA IOINS      AND SAVE IT. 
      LDA IOINS,I   GET I/O INSTRUCTION.
      AND M64       MASK OFF SELECT CODE. 
      IOR CHAN      PUT ON NEW SELECT CODE. 
      STA IOINS,I   REPLACE INSTRUCTION.
      JMP SET1      REPEAT. 
* 
*  GET I/O SLOT # FROM KEYBOARD 
* 
GETSL NOP           ENTRY POINT 
      JSB READ      READ FROM TTY INTO INPUT BUFF.
      JMP GETSL,I   NO DATA ENTERED, TRY AGAIN. 
      JSB BICON     GET DATA AND CONVERT TO BINARY. 
      JMP GETSL,I   NONE FOUND, TRY AGAIN.
      STA STORA     SAVE CONSTANT.
      AND M8        IF N NOT GREATER
      SZA,RSS        THAN SEVEN,
      JMP GETSL,I     TRY AGAIN.
      AND M64       IF N GREATER
      SZA,RSS        THAN 64B, TRY AGAIN. 
      ISZ GETSL     SET FOR "SUCCESS" EXIT (P+2). 
      LDA STORA     RECOVER CONSTANT N. 
      JMP GETSL,I   RETURN. 
* 
* PUNCH ABSOLUTE BLOCK
* 
PNCHA NOP           ENTRY POINT.
      STA END       SAVE BLOCK END AND
      STB BUFAD      START ADDRESSES. 
PNCH1 CMB,INB       COMPUTE BLOCK 
      ADA B          LENGTH AND 
      STA B           SAVE IN A.
      ADB M64       IF NUMBER OF CHARS. REMAINING 
      SSB,RSS        IN BLOCK < 65, SET FOR 
      LDA B100        64 WORD RECORD LENGTH.
      LDB BUFAD     GET STARTING ADDRESS OF RECORD. 
      JSB POUT      PUNCH RECORD LENGTH CHARACTER.
      CMA,INA       SET RECORD LENGTH COUNTER 
      STA RECL       TO NEG. OF RECORD LENGTH.
      CLA           PUNCH NULL
      JSB POUT       CHARACTER. 
      LDA B         PUNCH STARTING ADDRESS
      JSB 103B,I     OF RECORD. 
PNCH4 LDA BUFAD,I   PUNCH ONE WORD
      JSB 103B,I     OF RECORD. 
      ADB A         UPDATE CHECKSUM REGISTER. 
      ISZ BUFAD     INCREMENT BUFFER POINTER. 
      ISZ RECL      INCREMENT RECORD LENGTH COUNTER.
      JMP PNCH4     GO PUNCH NEXT WORD. 
      LDA B         RECORD DONE.
      JSB 103B,I    PUNCH CHECKSUM. 
      CLA           PUNCH 
      JSB 103B,I     FOUR 
      JSB 103B,I      NULL CHARACTERS.
PNCH5 CLC PNC,C     RESET PUNCH I/O.
      LDA END       IF DONE WITH
      LDB BUFAD      ENTIRE BLOCK 
      CPB END         EXIT FROM 
      JMP PNCHA,I      PUNCH ROUTINE. 
      JMP PNCH1     MORE TO PUNCH.
* 
* PUNCH TWO-CHARACTER WORD
* 
PUN   NOP           ENTRY POINT.
      STA STORA     SAVE A REGISTER.
      ALF,ALF       ROTATE FIRST CHAR. INTO POSITION
      JSB POUT       AND PUNCH. 
      LDA STORA     RETRIEVE WORD AND 
      JSB POUT       PUNCH SECOND CHARACTER.
      LDA STORA     RESTORE A REGISTER. 
      JMP PUN,I     RETURN. 
* 
* PUNCH ONE CHARACTER IN A
* 
POUT  NOP           ENTRY POINT 
      AND B377      MASK OFF EXTRA BITS.
POUT1 OTA PNC       OUTPUT CHARACTER
POUT2 STC PNC,C      TO PUNCH.
POUT3 SFS PNC       WAIT FOR PUNCH
      JMP POUT3      TO FINISH. 
      JMP POUT,I    RETURN. 
* 
* PUNCH LEADER/TRAILER
* 
LDR   NOP           ENTRY POINT.
      LDA M70       SET TO PUNCH
      STA CTR        14 INCH LEADER/TRAILER.
      CLA           PUNCH TWO 
      JSB 103B,I     NULL CHARACTERS. 
      ISZ CTR       PUNCH 
      JMP *-2        TWO MORE.
      JMP LDR,I     DONE, RETURN. 
* 
*  CONVERT ASCII OCTAL # TO BINARY INTEGER
* 
BICON NOP           ENTRY POINT.
      CLB             
      STB NUMBR     INITIALIZE
      STB STORB      STORAGE. 
BIC1  JSB GETCR     GET CHAR. FROM ASCII INPUT BUFF.
      RSS           NO MORE CHARACTERS. 
      LDB A         
      ADB M48       ASCII 60B 
      SSB            OR GREATER?
      JMP BIC2      NO, MAY BE END OF CONSTANT. 
      ADB M10       ASCII 72B 
      SSB,RSS        OR LESS? 
      JMP BIC2      NO, MAY BE END OF CONSTANT. 
      AND .15       MASK OFF EXTRA BITS.
      LDB A 
      AND B7        TEST IF 
      CPA B          OCTAL
      RSS             DIGIT.
      JMP BICON,I   NOT OCTAL, RETURN VIA (P+1),
      ISZ STORB     INDICATE NUMBER FOUND.
      STA STORA     SAVE DIGIT. 
      LDA NUMBR     ROOM FOR
      ADA MS0        ONE MORE DIGIT?
      SSA,RSS 
      JMP BICON,I   NO, RETURN VIA (P+1). 
      LDA NUMBR     MULTIPLY
      ALS,ALS        PARTIAL CONSTANT 
      ALS             BY EIGHT. 
      ADA STORA     ADD ON
      STA NUMBR      NEXT DIGIT.
      JMP BIC1      GO LOOK FOR NEXT DIGIT. 
BIC2  LDB STORB 
      LDA NUMBR     NUMBER, IF ANY, IN A. 
      SZB           WAS NUMBER FOUND? 
      ISZ BICON     YES, SET "SUCCESS EXIT" (P+2).
      JMP BICON,I   RETURN. 
* 
* POWER FAIL SUBROUTINE 
* 
PFAIL JSB ZERO       PROGRAM ZERO 
      HLT 4,C 
      JMP 100B      RETURN TO MAIN PROGRAM. 
* 
FWAM1 EQU *         END OF BASE PAGE SECTION. 
      ORG 2000B 
      SKP 
      HED TEST ROUTINES 
* 
*   TEST 1
* 
T.01  JSB CHRIN      SET TTY INTERRUPT RETURN POINT 
      JSB PRINT      PRINT TITLE
      DEF MES5
      CLA            INITIALIZE FAIL FLAG 
      STA FAIL1 
      JSB ZERO       PROGRAM ZERO X1, 20V LIMIT 
      LDB .5MA
      JSB OUTP       PROGRAM 5 MA       
      LDB TIMA       GET TIMING CONSTANT ADDRESS
      LDA B,I        GET TIMING CONSTANT
      INA,SZA,RSS    TIMING LOOP FOR 50U SEC
      JMP NOF1       FLAG DIDN'T RETURN ON TIME 
      SFS PSI        CHECK FLAG 
      JMP *-3        FLAG NOT SET, LOOP 
      INB            FLAG RETURNED,CHECK
      ADA B,I          RETURNING TIME 
      SSA               
      JSB TS1.1      FLAG RETURN TOO SOON 
TS1.0 JSB PRINT      DOES THE UNIT PROGRAM? 
      DEF MES14 
      JSB READ       READ FROM TTY
      JMP TS1.0 
      JSB YCHEK      IS THE ANSWER YES? 
      JSB TS1.2      NO,GO SET FAIL FLAG
      LDB TIMA       YES, SET UP FOR 2M SEC 
      ADB .2           RANGE CHANGE FLAG TEST 
      STB TEMP
      LDB .5MA       PROGRAM 50 MA ON 
      LDA .4           X10 RANGE
      IOR UNIT
      JSB OUTP
      LDB TEMP
      LDA B,I 
      INA,SZA,RSS    2M SEC WAITING LOOP
      JMP NOF2       NO FLAG RETURN 
      SFS PSI 
      JMP *-3        FLAG NOT SET,LOOP
      INB            FLAG RETURNED
      ADA B,I        CHECK TIMING 
      SSA 
      JSB TS1.3      FLAG TOO SOON
TS1.7 JSB PRINT      DOES DCS PROGRAM?
      DEF MES15 
      JSB READ       READ ANSWER
      JMP *-3 
      JSB YCHEK      IS ANSWER YES? 
      JSB TS1.4      NO,SET FAIL FLAG 
SUM1  LDB FAIL1      LOAD B WITH FAIL FLAG
      SZB            IF B IS 0, TEST PASSED 
      JMP TS1.5      IF NOT LOAD A WITH FAIL ADDRESS
      JSB OK         PRINT "TEST OK"
      LDA A11        LOAD PASS ADDRESS
      INA 
TS1.6 LDB STAR       STORE A STAR AT PROPER 
      STB A,I          POSITION IN TEST TABLE 
      LDB BLANK      STORE A BLANK AT "NOT PERFORMED" 
      LDA A13          POSITION 
      STB A,I 
      JSB ZERO       PROGRAM ZERO 
      LDA GO         CHECK GO FLAG
      SZA            IF SET, GO TO TEST 2 
      JMP T.02
      JMP TEST       OTHERWISE, GO TO "TEST #?" 
TS1.5 LDA A12        LOAD FAIL ADDRESS
      JMP TS1.6 
NOF1  JSB PRINT      TIMED OUT ON 50U SEC FLAG
      DEF MES13 
      ISZ FAIL1      SET FAIL FLAG
      JMP TS1.0 
NOF2  JSB PRINT      TIMED OUT ON 2M SEC FLAG 
      DEF MES18 
      ISZ FAIL1      SET FAIL FLAG
      JMP TS1.7 
TS1.1 NOP            50U SEC FLAG TOO SOON
      JSB PRINT 
      DEF MES16 
      ISZ FAIL1 
      JMP TS1.1,I 
TS1.2 NOP 
      JSB NCHEK     IF THE REPLY WAS N
      JMP TS1.0       X1 RANGE WAS NOT
      JSB PRINT          RESPONDING 
      DEF MES17 
      ISZ FAIL1      SET FAIL FLAG
      JMP TS1.2,I 
TS1.3 NOP 
      JSB PRINT      2M SEC FLAG RETURN TOO SOON
      DEF MES19 
      ISZ FAIL1 
      JMP TS1.3,I 
TS1.4 NOP            IF THE ANSWER WAS N
      JSB NCHEK        X10 RANGE WASN'T RESPONDING
      JMP TS1.7 
      JSB PRINT 
      DEF MES20 
      ISZ FAIL1      SET FAIL FLAG
      JMP TS1.4,I 
* 
*   TEST 2
* 
T.02  JSB CHRIN      SET TTY INTERRUPT RETURN ADDR. 
      JSB PRINT      PRINT TITLE
      DEF MES21 
      CLA            CLEAR FAIL FLAG
      STA FAIL2 
      JSB ZERO       PROGRAM ZERO 
      STA TEMP       SAVE OUTPUT WORD II
      JSB PRINT      SET A-METER TO 16MA RANGE
      DEF MES22 
      JSB READ       READ FROM TTY
      JMP *-3 
      JSB YCHEK 
      JMP *-5 
      LDB .10MA      PROGRAM 10 MA    
      LDA TEMP
      JSB OUTP
TS2.1 JSB PRINT      METER READING? 
      DEF MES23 
      JSB READ       READ FROM TTY
      JMP *-3 
      JSB CONST      CONVERT INTO NUMBER
      JMP TS2.1 
      ADA M11        CHECK IS THE READING 
      SZA             WITHIN +- 1 MA
      INA,SZA,RSS        IF NOT,SET FAIL FLAG 
      JMP *+3 
      INA,SZA 
      JSB TS2.3 
      LDB .10MA      PROGRAM -10 MA   
      CMB,INB 
      LDA TEMP
      JSB OUTP
TS2.2 JSB PRINT      METER READING? 
      DEF MES23 
      JSB READ       READ FROM TTY
      JMP *-3        NO DATA TRY AGAIN
      JSB CONST      CONVERT INTO NUMBER
      JMP TS2.2 
      ADA P9         CHECK ACCURACY 
      SZA              IF NOT WITHIN +-1
      INA,SZA,RSS        FAIL TEST
      JMP *+3 
      INA,SZA 
      JSB TS2.3 
      JSB ZERO       PROGRAM ZERO 
      JSB PRINT      SET DCS VOLTMETER TO 20 VOLT RANGE 
      DEF MES69 
      JSB PRINT      SET AMMETER BACK TO 160 MA RANGE,
      DEF MES75       SO IT DOESN'T PEG 
WHAT  JSB PRINT      SHORT SENSING RES. 
      DEF MES26 
      JSB READ       READ REPLY 
      JMP *-3 
      JSB YCHEK      YES? 
      JMP WHAT
      LDB .10MA      OUTPUT 100MA 
      LDA .4         X10 RANGE, 20V LIMIT 
      IOR UNIT
      STA TEMP       SAVE CONTROL CODE
      JSB OUTP       CALL UNIT
      JSB PRINT      VOLTMETER READING? 
      DEF MES27 
      JSB READ       READ FROM TTY
      JMP *-3 
      JSB CONST      CONVERT TO NUMBER
      JMP *-5        NO #,TRY AGAIN 
      ADA M11        CHECK IF READING +-1 
      SZA             VOLT OF 
      INA,SZA,RSS      10 VOLTS 
      JMP *+3     
      INA,SZA 
      JMP TS2.4      FAIL 
TS2.5 LDB .10MA      PROGRAM -100 MA
      CMB,INB 
      LDA TEMP       X10 RANGE, 20VLIMIT
      JSB OUTP
TS2.6 JSB PRINT      VOLTMETER READING? 
      DEF MES27 
      JSB READ       READ FROM TTY
      JMP *-3 
      JSB CONST      CONVERT INTO NUMBER  
      JMP TS2.6 
      ADA P9         CHECK IF READING 
      SZA             +-1 VOLT
      INA,SZA,RSS       OF 10 VOLTS                         
      JMP *+3 
      INA,SZA 
      JMP TS2.7      PASS 
SUM2  LDB FAIL2      LOAD B WITH FAIL FLAG
      SZB            IF B=0,TEST OK 
      JMP TS2.8      IF NOT,LOAD FAIL ADDR. 
      JSB OK         PRINT "TEST OK"
      LDA A21        LOAD PASS ADDR.
      INA 
TS2.9 LDB STAR       STORE A STAR AT PROPER 
      STB A,I          ADDRESS  
      LDB BLANK      STORE A BLANK AT 
      LDA A23          "NOT PERFORMED"
      STB A,I 
      JSB ZERO       PROGRAM ZERO 
      JSB PRINT      SET DCS VOLTMETER TO 100 VOLT RANGE
      DEF MES80 
      JSB PRINT      REMOVE SHORT FROM 10 OHMS
      DEF MES74 
      JSB READ
      JMP *-3 
      JSB YCHEK 
      JMP *-5 
SKIP2 LDA GO         CHECK GO FLAG
      SZA            IF SET, GOT TO TEST 3
      JMP T.03         IF NOT GO TO "TEST #?" 
      JMP TEST
TS2.3 NOP            PRINT MESSAGE
      JSB PRINT        "AMMETER NOT ACCURATE" 
      DEF MES28 
      ISZ FAIL2      SET FAIL FLAG
      JMP TS2.3,I 
TS2.4 JSB PRINT      PRINT MESSAGE
      DEF MES24        "VOLTMETER NOT ACCURATE" 
      ISZ FAIL2      SET FAIL FLAG
      JMP TS2.5 
TS2.7 JSB PRINT      SAME AS TS2.4 WITH 
      DEF MES24        DIFFERENT RETURNING
      ISZ FAIL2          ADDRESS
      JMP SUM2
TS2.8 LDA A22        LOAD FAIL ADDRESS
      JMP TS2.9 
* 
*   TEST 3
* 
T.03  JSB CHRIN      SET TTY INTERRUPT RETURN ADDR. 
      JSB PRINT      PRINT TITLE
      DEF MES29 
      CLA            CLEAR FAIL FLAG
      STA FAIL3 
      STA AMPS       SET ZERO BIT PATTERN 
      INA 
      STA RANGE 
TS3.0 JSB ZERO1      PROGRAM 0 MA,X10,20V LIMIT 
      LDA .4         OUTPUT WORD II 
      IOR UNIT         X10 RANGE, 20V LIMIT 
      STA TEMP       SAVE OUTPUT WORD II
      JSB PRINT      REQUEST DVM READING
      DEF MES67 
      JSB READ       READ FROM TTY
      JMP *-3        TRY AGAIN
      LDA M2         INITIALIZE FOR 
      STA MAG         INTEGER PACK
      JSB RNDOF,I    CHECK ZERO MA
      JMP *-7        TRY AGAIN
      SZB,RSS        SKIP IF BAD
      JMP TS3.2      PASS ZERO CHECK
      JSB PRINT      REQUEST FOR ZERO ADJUST
      DEF MES31 
      JSB READ       READ FROM TTY
      JMP *-3        TRY AGAIN
      JSB YCHEK      CHECK RESPONSE 
      JMP *-5        ASK AGAIN
      JMP TS3.0      START OVER 
TS3.2 LDA MESA       INITIALIZE MESSAGE ADDRESS 
      STA MSG        SAVE IT
      LDB M15        INITIALIZE COUNTER 
      STB CNT        SAVE IT
      CCB            SET B TO 
      BLS             1111111111111110
TS3.1 STB AMPS       SAVE IT
      LDA TEMP       LOAD OUTPUT WORD II
      JSB OUTP       OUTPUT TO UNIT 
      JSB PRINT      REQUEST DVM READING
      DEF MES67 
      JSB READ       READ FROM TTY
      JMP *-3 
      LDB M2         INITIALIZE FOR 
      STB MAG         INTEGER PACK
      JSB RNDOF,I    EVALUATE 
      JMP *-7        TRY AGAIN
      SZB,RSS        SKIP IF NEGATIVE 
      JMP  TS3.4     PASSED 
      JSB PRNTT      PRINT ERROR MESSAGE
      DEF MSG,I 
      ISZ FAIL3      SET FAIL FALG
TS3.4 ISZ CNT        DECREASE COUNTER 
      JMP TS3.7      LOOP 
      LDB FAIL3      LOAD B WITH FAIL FLAG
      SZB            IF B=0 TEST OK 
      JMP TS3.5      GO LOAD FAIL ADRESS  
      JSB OK         PRINT "TEST OK"
      LDA A31        LOAD PASS ADDRESS
      INA 
TS3.6 LDB STAR       STORE A STAR AT PROPER 
      STB A,I          POSSITION
      LDB BLANK      STORE A BLANK AT 
      LDA A33          "NOT PERFORMED" POSITION 
      STB A,I 
      JSB ZERO
      LDA GO         CHECK GO FLAG
      SZA            IF SET 
      JMP T.04         GO TO TEST 4 
      JMP TEST          IF NOT GO TO "TTST #?"
TS3.5 LDA A32        LOAD FAIL ADDRESS
      JMP TS3.6 
TS3.7 LDB AMPS       SET NEXT PROGRAM CURRENT 
      RBL              BIT PATTERN
      ISZ MSG        SET NEXT MESSAGE ADDRESS 
      JMP TS3.1 
MESA  DEF *+1        MESSAGE TABLE
      DEF MES46 
      DEF MES45 
      DEF MES44 
      DEF MES43 
      DEF MES42 
      DEF MES41 
      DEF MES40 
      DEF MES39 
      DEF MES38 
      DEF MES37 
      DEF MES36 
      DEF MES35 
      DEF MES34 
      DEF MES33 
      DEF MES32 
* 
*   TEST 4
* 
T.04  JSB CHRIN      SET TTY INTERRUPT RETURN ADDRESS 
      JSB PRINT      PRINT TITLE
      DEF MES48 
      LDA M1         GET -1 FOR TEST 4 X1 RANGE CHECK 
      STA T4X1       STORE -1 FOR USE IN FLOATING POINT ROUTINES
      CLA 
      STA FAIL4      CLEAR FAIL FLAG
      STA RANGE 
      LDA M4         SET  
      STA CNT         COUNTER 
      LDA MESA1      INITIALIZE MESSAGE ADDRESS 
      STA MSG        SAVE IT
      LDA P3277 
      STA AMPS
      LDB INF1A      OUTPUT WORD I
      LDA .12X1      OUTPUT WORD II 
      IOR UNIT        X1, 20V LIMIT 
      STA TEMP         SAVE IT
TS4.1 JSB OUTP       CALL UNIT
      JSB PRINT      REQUEST DVM READING
      DEF MES67 
      JSB READ       READ FROM TTY
      JMP *-3        NO  INTEGER, TRY AGAIN 
      LDA M2
      STA MAG 
      JSB RNDOF,I    CALL CONVERSION ROUTINE
      JMP TS4.1+1    TRY AGAIN
      SZB,RSS 
      JMP TS4.4      PASS 
      JSB PRINT 
      DEF MES52 
      JSB PRNTT      FAIL 
      DEF MSG,I 
      ISZ FAIL4      SET FAIL FLAG
TS4.4 ISZ CNT        INCREMENT COUNTER
      JMP TS4.7      GET NEXT VALUE 
      LDB FAIL4      LOAD B WITH FAIL FLAG
      SZB            WERE ALL TESTS PASSED? 
      JMP TS4.5      NO, GET FAIL ADDRESS 
      JSB OK         YES, PRINT "TEST OK" 
      LDA A41        LOAD PASS ADDRESS
      INA 
TS4.6 LDB STAR       STORE A STAR AT PROPER 
      STB A,I         POSTITION 
      LDB BLANK      STORE A BLANK AT 
      LDA A43         "NOT PERFORMED" POSITION
      STB A,I 
      JSB ZERO
      LDA GO         CHECK GO FLAG
      SZA            IF SET 
      JMP T.05        GO TO TEST 5
      JMP TEST         IF NOT GO TO "TEST #?" 
TS4.5 LDA A42        LOAD FAIL ADDRESS
      JMP TS4.6 
TS4.7 ISZ MSG        SET NEXT MESSAGE ADDRESS 
      LDA CNT        GET COUNT
      CPA M2         IS X10 POS NEXT?   
      JMP MX10P 
      CPA M1         IS X10 NEG NEXT? 
      JMP MX10N 
      LDB P3277 
      CMB 
      STB AMPS
      LDB INF1A 
      CMB            COMPLIMENT 
      LDA TEMP       GET LAST OUTPUT WORD II
      JMP TS4.1      DO IT AGAIN
MX10P LDB INF1A      GET LAST OUTPUT WORD I 
      STB AMPS       SAVE IT
      CLA,INA 
      STA RANGE 
      LDA .4         MAKE NEW OUTPUT WORD II
      IOR UNIT        X10,20V LIMIT 
      STA TEMP       SAVE IT
      JMP TS4.1      DO IT AGAIN
MX10N CLA            CLEAR T4X1 FOR TEST 4 X10 RANGE CHECK
      STA T4X1       IN FLOATING POINT ROUTINES 
      LDA M1         RESTORE MINUS 1 TO "A" REGISTER
      LDB AMPS       GET LAST OUTPUT WORD I 
      CMB            COMPLIMENT IT
      STB AMPS       SAVE IT
      LDA TEMP       GET LAST OUTPUT WORD II
      JMP TS4.1      DO IT AGAIN
MESA1 DEF *+1 
      DEF MES4
      DEF MES51 
      DEF MES59 
      DEF MES68 
* 
*   TEST 5
* 
T.05  JSB CHRIN      SET TTY INTERRUPT RETURN ADDRESS 
      JSB PRINT      PRINT TITLE  
      DEF MES53 
      LDA M4         SET COUNTER
      STA CNT 
      CLA            CLEAR FAIL FLG 
      STA FAIL5 
      LDA MODEL      GET PROGRAM CURRENT ADDRESS
      ADA .2           FOR VOLTAGE LIMIT TEST 
      STA MA         SAVE IT IN MA
      LDA MESSA      INITIALIZE MESSAGE ADDRESS 
      STA MSG 
      CLB,INB 
      LDA UNIT       INITIALIZE STATS,FOR CHECKING
      INA              STATUS WORD FROM DVS CARD
      CMA,INA 
      INA,SZA,RSS 
      JMP *+3 
      BLS 
      JMP *-3 
      STB STATS 
      LDA CLADR      LOAD THE VOLTAGE LIMIT CODE
      STA CLADD      STORE IT IN CLADD
      JSB PRINT      SHORT SENSING RESISTOR 
      DEF MES26 
      JSB READ
      JMP *-3 
      JSB YCHEK 
      JMP *-5   
TS5.0 JSB ZERO1      INITIALIZE THE UNIT TO ZERO
      LDA M1600       BEFORE EACH TEST. 
      INA, SZA
      JMP *-1 
      LDA CLADD,I    GET VOLTAGE LIMIT CODE 
      IOR UNIT       OR IN THE UNIT 
      STA TEMP       SAVE THE WORD II 
      LDB MA,I       GET PROGRAM CURRENT
      JSB OUTP       OUTPUT 
      LDA M1600       WAITING LOOP FOR THE
      INA,SZA         CURRENT TO COME UP
      JMP *-1 
      LIA PSI        READ STATUS
      AND STATS      CHECK AGAINST THE MASK 
      SZA            NO UNIT SHOULD BE LATCHED
      JMP TS5.1      IF LATCHED, PRINT MESS.
      ISZ MA         PROGRAM NEXT CURRENT 
      LDB MA,I        THIS SHOULD CAUSE THE UNIT
      LDA TEMP          TO LATCH
      JSB OUTP       OUTPUT TO DCS
      LDA M1600 
      INA,SZA        WAITING LOOP FOR THE 
      JMP *-1         CURRENT TO COME UP
      LIA PSI        READ STATUS
      AND STATS      CHECK AGAINST MASK 
      SZA,RSS        THE UNIT SHOULD BE LATCHING
      JMP TS5.2        IF NOT PRINT ERROR MESS. 
TS5.3 ISZ MA         GO TO NEXT VOLTAGE LIMIT CODE
      ISZ MSG 
      ISZ CLADD 
      ISZ CNT 
      JMP TS5.0      LOOP 
      JSB ZERO1      PROGRAM ZERO 
      LDB FAIL5      CHECK FAIL FLAG
      SZB 
      JMP TS5.4      FAILED,GO LOAD FAIL ADDRESS
      JSB OK         PASSED 
      LDA A51        LOAD PASS ADDRESS  
      INA 
TS5.5 LDB STAR       STORE A STAR AT PROPER POSITION
      STB A,I 
      LDB BLANK      STORE A BLANK AT 
      LDA A53          "NOT PERFORMED" POSITION 
      STB A,I 
      JSB ZERO       PROGRAM ZERO 
      JSB PRINT      REMOVE SHORT FROM 10 OHMS
      DEF MES74 
      JSB READ
      JMP *-3 
      JSB YCHEK 
      JMP *-5 
SKIP5 LDA GO         CHECK GO FLAG
      SZA            IF SET 
      JMP T.06         GO TO TEST 6 
      JMP TEST           IF NOT GO TO "TEST #?" 
TS5.4 LDA A52        LOAD FAIL ADDRESS
      JMP TS5.5 
TS5.1 JSB PRINT      MESSAGE FOR LATCHED AT 
      DEF MES55        TOO LOW VOLTAGE
      JSB PRNTT      PRINT CORRESPOND LATCH 
      DEF MSG,I        CODE 
      ISZ MA
      ISZ FAIL5 
      JMP TS5.3 
TS5.2 JSB PRINT      MESSAGE FOR NOT LATCHED
      DEF MES56        AT PROPER VOLTAGE
      JSB PRNTT      PRINT CORRESPOND LATCH 
      DEF MSG,I        CODE 
      ISZ FAIL5      SET FAIL FLAG
      JMP TS5.3 
MESSA DEF *+1        TABLE FOR MESSAGES OF  
      DEF MES70        4 LATCH CODES
      DEF MES71 
      DEF MES72 
      DEF MES73 
* 
*   TEST 6
* 
T.06  JSB CHRIN      SET TTY INTERRUPT RETURN ADDRESS 
      JSB PRINT      PRINT TITLE
      DEF MES47 
      CLA            CLEAR FAIL FLAG
      STA FAIL6 
      JSB PRINT      PRESS RUN IF HLT 
      DEF MES58 
      CLC PSI        REQUEST TIMING MODE INTERRUPT
      OTA PSI 
      LDA .8X1       PROGRM A CURRENT 
      IOR UNIT
      STA TEMP
      LDB MODEL     PROGRAM  CURRENT  OF
      ADB P4          FIFTH ENTRY OF SPEC. TABLE
      LDB B,I 
      STB AMPS      SAVE IT 
      STF 00         ENABLE INTERUPT SYSTEM 
TS6.4 CLC PSI,C 
      STC PSI        SET CONTROL ON DVS CARD
      OTB PSI        OUTPUT TO DVS
      OTA PSI 
      SFS PSI        WAIT FOR FLAG
      JMP *-1 
TS6.6 JSB PRINT     DID COMPUTER HLT? 
      DEF  MES60
      JSB READ
      JMP *-3 
      JSB YCHEK 
      JSB TS6.0      NO,PRINT ERROR MESSAGE 
      JSB PRINT      PRESS RUN IF HLT 
      DEF MES58 
TS6.5 CLC PSI        REQUEST ALARM MODE INTERRUPT 
      LIA PSI 
      LDB .10MA      OUTPUT A CURRENT 
      LDA UNIT
      CLC PSI,C 
      STC PSI 
      OTB PSI 
      OTA PSI 
      SFS PSI        WAIT FOR FLAG
      JMP *-1 
TS6.7 JSB PRINT     DID COMPUTER HLT? 
      DEF MES60 
      JSB READ
      JMP *-3 
      JSB YCHEK      IF YES TEST OK 
      JSB TS6.1      IF NOT ALARM MODE INTERRUPT NOT
TS6.8 JSB ZERO1        FUNCTIONING PROGRAM ZERO 
      JSB PRINT      SET DCS VOLTMETER TO 20 VOLT RANGE 
      DEF MES69 
      JSB PRINT      SHORT SENSING RES. 
      DEF MES26 
      