* 
*        ADDRESS DEFINITIONS
* 
ANULL DEF NULL
ACR   DEF CR
IN1   DEF IN1I
ADDR1 DEF INT1+1
ADDR2 DEF INT2+1
AIJ5  DEF IJ5 
AM41A DEF M41A
AM41B DEF M41B
AM40A DEF M40A
AM40B DEF M40B
ARTN1 DEF RTN1
ARTN2 DEF RTN2
AM46A DEF M46A
AM45B DEF M45B
AILC1 DEF ILOC1 
AM45A DEF M45A
AM44A DEF M44A
AM47B DEF M47B
AILC2 DEF ILOC2 
AM47A DEF M47A
AM54C DEF M54C
AM54B DEF M54B
AM54A DEF M54A
AM51C DEF M51C
AM51B DEF M51B
AM51A DEF M51A
AM67B DEF M67B
AM67A DEF M67A
AWRD  DEF WRD 
AM73A DEF M73A
AM71B DEF M71B
AM71A DEF M71A
AM73B DEF M73B
A115A DEF M115A 
A115B DEF M115B 
AM76B DEF M76B
AM76A DEF M76A
AM75B DEF M75B
AM75A DEF M75A
IN2   DEF IN2I
APWS  DEF PWS 
A104B DEF M104B 
A104A DEF M104A 
A102B DEF M102B 
A102A DEF M102A 
A101B DEF M101B 
A101A DEF M101A 
A106A DEF M106A 
A106B DEF M106B 
AL77  DEF L77 
AIT.1 DEF INT.1 
AIN   DEF IN
ARTR1 DEF RTRN1 
ARTR2 DEF RTRN2 
APWRD DEF PWRD      ADDR OF PACKED WORD 
AM0   DEF M0
LM0   DEF L0
CFR   DEF CFGR
CHECK DEF CHCKI 
DATA  DEF DATAI 
FLG.1 DEF FLGI1 
FLG.2 DEF FLGI2 
ERROR DEF ERRI
H/L   DEF H/LI
AM77  DEF M77 
OUT1  DEF OUT1I 
OUT2  DEF OUT2I 
SAVAD DEF SAVAI 
SHORT DEF SHRTI 
DT.6  DEF T.6 
TTSK  DEF TTSKI 
      SKP 
* 
*        PTND DETERMINES WHETHER IT IS NECESSARY TO 
*             USE A 15/16 WORD COUNT OR 00A/L.G.
*             WORD COUNT SHOULD BE USED 
* 
*          RETURN:  P+1  00A + L.G. 
*                   P+2  14 + 15 + 16 
* 
      SPC 3 
PTND  NOP 
      LDB IOFG
      SZB,RSS       IS FLAG SET ? 
      ISZ PTND      NO
      JMP PTND,I    YES 
      SPC 3 
* 
*        CTPD DETERMINES IF A ONE CHANNEL DMA 
*             IS BEING TESTED 
* 
*          RETURN:  P+1  DMA1 ONLY
*                   P+2  DMA1 & DMA2
* 
* 
CTPD  NOP 
      LDB OCFG
      SZB,RSS       TEST FOR FLAG SET 
      ISZ CTPD
      JMP CTPD,I
      SPC 3 
*        PKFD DETERMINES WHETHER PACK/UNPACK
*             TESTING IS PERFORMED (T.17/T.20)
*             AND DETERMINES PATTERN TO USE IN T.15/T.16
*          RETURNS  P+1  14 + OOA + L.G.
*                   P+2  15 + 16
* 
PKFD  NOP 
      LDB PKFG
      SZB,RSS       IS FLAG SET ? 
      ISZ PKFD
      JMP PKFD,I
      HED           *** CONFIGURATION *** 
CFGR  CLC 0,C       CLEAR ALL DEVICES, INT SYS OFF
* 
* CHECK AND STORE MEMORY SIZE 
* 
      LDA MSIZE     FORM
      AND MSMK           MAX
      ADA A7777              MEMORY 
      STA MEMAX                     ADDRESS 
      LDA E0
      JSB PTND
      CLA 
      STA EOS       SAVE WD CT
      CLA 
      STA PKFG      CLEAR 
      STA IOFG            TYPE
      STA L0FG
      LDA CTO 
      AND BT7 
      STA OCFG
      LDA CTO 
      AND P0
      ALF 
      CPA A5        IS IT 14A ? 
      RSS 
      JMP *+3 
      STA PKFG
      NOP 
      CPA A6        IS IT 14B ? 
      RSS 
      JMP *+3 
      STA OCFG
      STA PKFG
      CPA A7        IS IT OOA ? 
      RSS 
      JMP *+3 
      STA PKFG
      STA IOFG
      CPA A10       IS IT L.G. ?
      RSS 
      JMP *+4 
      STA PKFG
      STA IOFG
      STA L0FG
* 
* INPUT & CHECK MCR (OR TTY) SELECT CODE
* 
SC    LIA 1 
      AND A77       MASK OFF SELECT CODE
      JSB CHECK,I   CHECK SELECT CODE 
      JMP VALID     VALID SELECT CODE 
      JMP SC        INVALID. TRY AGAIN
VALID STA CHA       STORE SELECT CODE 
* 
      CLB 
      LDA LSTO
      SZA,RSS       TTY PRESENT ? 
      CCB           NO
      STB NTTY      YES 
      SPC 1 
      HLT 74B       ENTER PROGRAM OPTIONS IN SW REG 
      SPC 1 
      HED INITIALIZATION
START CLC 0,C       TURN EVERYTHING OFF 
* 
      LDB A2        TRAP CELL LOCATION
      LDA THLT      TRAP CELL HALT (INIT.--106002)
LP    STA B,I 
      INB 
      INA 
      CPB A100      TRAP CELL HALTS COMPLETE? 
      RSS             YES 
      JMP LP          NO, REPEAT
* 
      LDB BT10
      JSB CHKSW,I   SUPPRESS NON-ERROR MESSAGES?
      JMP MOD         YES 
      JSB TTSK,I    NO
      LDA CRL 
      LDB ACR 
      JSB TTY.O,I   OUTPUT CR, LF 
      JSB TTSK,I
      LDA LM0 
      LDB AM0 
      JSB TTY.O,I   START DIAGNOSTIC
* 
SCC   LDB BT6 
      JSB CHKSW,I   HALT FOR SELECT CODE CHANGE?
      JMP *+2       YES 
      JMP MOD       NO
H113  HLT 13B,C    * ENTER SC TO SWITCH REGISTER AND
*                                           PUSH RUN
      LIA 1 
      AND A77 
      JSB CHECK,I   CHECK SELECT CODE 
      JMP *+2       VALID SELECT CODE 
      JMP H113+1    INVALID. TRY AGAIN
      STA CHA       STORE SELECT CODE 
H114  HLT 14B,C   * SELECT OPTIONS & PRESS RUN
* 
* MODIFY I/O INSTRUCTIONS 
* 
MOD   LDB FIRST 
      STB CTBLA 
L     LDB CTBLA,I 
      LDA B,I 
      AND P7700 
      IOR CHA 
      STA B,I 
      CPB LAST,I    MODIFICATION COMPLETE?
      JMP *+3         YES 
      ISZ CTBLA       NO
      JMP L 
* 
      CCA           INITIALIZE DMA1 & 2 TO -1 WORD
      STC 2          COUNT, 0 DEVICE SELECT CODE
      OTA 2 
      CLA 
      OTA 6 
      JSB CTPD
      JMP *+6 
      CCA 
      STC 3 
      OTA 3 
      CLA 
      OTA 7 
* 
      LDB BT7 
      JSB CHKSW,I   SHORT TEST? 
      JMP SHORT,I   YES 
      HED BASIC I/O 
* T.1 -- TEST ABILITY TO SET AND CLEAR THE DMA FLAGS
      SPC 3 
T.1   EQU * 
BI/O  JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLC 0,C       CLEAR ALL DEVICES, INT SYS OFF
      LDA HLTA      TRAP CELL HALTS 
      LDB HLTB
      STF 6 
      CLF 6         CLEAR DMA-1 FLAG
      SFS 6 
      RSS 
E1    JSB ERROR,I * DMA1--CLF DID NOT CLR FLG OR SFS
*                                    CAUSED SKIP WITH FLG CLR 
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      STF 6 
      CLF 6 
      SFC 6 
E2    JSB ERROR,I * DMA1--CLF DID NOT CLR FLG OR SFC
*                                   CAUSED NO SKIP WITH FLG CLR 
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLF 6 
      STF 6 
      SFC 6 
      RSS 
E3    JSB ERROR,I * DMA1--STF DID NOT SET FLG OR SFC
*                                   CAUSED SKIP WITH FLG SET
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLF 6 
      STF 6 
      SFS 6 
E4    JSB ERROR,I * DMA1--STF DID NOT SET FLG OR SFS
*                                    CAUSED NO SKIP WITH FLG SET
      JSB H/L,I     CHECK FOR LOOP ON TEST
      CLF 6 
      SPC 2 
      JSB CTPD
      JMP T.2 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      STF 7 
      CLF 7         CLEAR DMA-2 FLAG
      SFS 7 
      RSS 
E5    JSB ERROR,I * DMA2--CLF DID NOT CLR FLG OR SFS
*                                   CAUSED SKIP WITH FLG CLR
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      STF 7 
      CLF 7 
      SFC 7 
E6    JSB ERROR,I * DMA2--CLF DID NOT CLR FLG OR SFC
*                                   CAUSED NO SKIP WITH FLG CLR 
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLF 7 
      STF 7 
      SFC 7 
      RSS 
E7    JSB ERROR,I * DMA2--STF DID NOT SET FLG OR SFC
*                                   CAUSED SKIP WITH FLG SET
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLF 7 
      STF 7 
      SFS 7 
E10   JSB ERROR,I * DMA2--STF DID NOT SET FLG OR SFS
*                                    CAUSED NO SKIP WITH FLG SET
      JSB H/L,I     CHECK FOR LOOP ON TEST
      CLF 7 
      SKP 
* T.2 -- TEST ABILITY TO ENABLE AND DISABLE INTERRUPT SYSTEM
      SPC 3 
T.2   EQU * 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      STF 0         ENABLE INT SYS
      CLF 0         DISABLE INT SYS 
      SFS 0         IS INT SYS ON?
      JMP E11+1     NO, OK
      LDB BT14      YES, ERROR
      JSB CHKSW,I   SUPPRESS ERROR HALTS? 
      RSS           YES 
E11   HLT 11B     * CLF 0 DID NOT DISABLE INT SYS OR
*                                   SFS 0 CAUSED BAD SKIP 
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLF 0 
      SFC 0         IS INT SYS ON?
      RSS           YES, ERROR
      JMP E12+1     NO
      LDB BT14
      JSB CHKSW,I   SUPPRESS ERROR HALTS? 
      RSS           YES 
E12   HLT 12B     * CLF 0 DID NOT DISABLE INT SYS OR
*                                   SFC 0 DID NOT SKIP
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLF 0 
      STF 0 
      SFC 0         IS INT SYS ON?
      RSS 
E13   JSB ERROR,I * STF 0 DID NOT ENABLE INT SYS OR 
*                                   SFC 0 CAUSED BAD SKIP 
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLF 0 
      STF 0 
      SFS 0         IS INT SYS ON?
E14   JSB ERROR,I * STF 0 DID NOT ENABLE INT SYS OR 
*                                   SFS 0 DID NOT SKIP
      JSB H/L,I     CHECK FOR LOOP ON TEST
      CLF 0 
* 
* 
      LDA JSB.1     STORE JSB TO INT.1 IN 
      STA 6          TRAP CELL
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      LDA HLTA
      LDB HLTB
      CLF 0         DISABLE INT SYS 
      STC 6 
      STF 6 
      NOP           SHOULD NOT INTERRUPT
      RSS 
E116  JSB ERROR,I * DMA1 INTPT AFTER CLF 0
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      LDA HLT6
      STA 6         RESTORE TRAP CELL HALT
      CLF 6 
      CLC 6 
      JSB CTPD
      JMP T3
      SPC 2 
T2B   LDA JSB.1     TEST DMA2 
      STA 7 
* 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      LDA HLTA
      LDB HLTB
      CLF 0 
      STC 7 
      STF 7 
      NOP 
      RSS 
E117  JSB ERROR,I * DMA2 INTPT AFTER CLF 0
      JSB H/L,I     CHECK FOR LOOP ON TEST
* 
      LDA HLT7
      STA 7 
      CLF 7 
      CLC 7 
      SKP 
* T.3 -- TEST INTERRUPT CAPABILITY
      SPC 3 
T3    EQU * 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      LDA JSB1      SET INTERRUPT TRAP CELL 
      STA 6 
      LDA HLTA      TRAP CELL HALTS 
      LDB HLTB
      STC 6         DMA1 INTERRUPT REQUEST
      STF 6 
      STF 0         ENABLE INT SYS
      STC 1           INTERRUPTS
      STF 1            SHOULD 
      CLC 1            BE 
      CLF 1            DELAYED
      JMP *+1,I        UNTIL
      DEF *+1            .
      JSB *+1,I          .
      DEF *+1            .
      NOP                .
INT1  NOP              HERE 
E15   JSB ERROR,I * DMA1 DID NOT INTERRUPT
      JSB H/L,I     CHECK FOR LOOP ON TEST
      SPC 2 
TI2   JSB SAVAD,I   SAVE LOOP ADDRESS 
      LDA JSB2      SET INTERRUPT TRAP CELL 
      STA 7 
      LDA HLTA      TRAP CELL HALTS 
      LDB HLTB
      STC 7         DMA2 INTERRUPT REQUEST
      STF 7 
      STF 0         ENABLE INT SYS
      STC 1           INTERRUPTS
      STF 1            SHOULD 
      CLC 1            BE 
      CLF 1            DELAYED
      JMP *+1,I        UNTIL
      DEF *+1            .
      JSB *+1,I          .
      DEF *+1            .
      NOP                .
INT2  NOP              HERE 
E16   JSB ERROR,I * DMA2 DID NOT INTERRUPT
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JMP T.4 
      SPC 2 
RTRN1 NOP           DMA1 INTERRUPT SUBROUTINE 
      CLF 0         DISABLE INT SYS 
      SFS 6 
E100  JSB ERROR,I * IAK CLEARED DMA1 FLAG 
      LDA J1        IJ1 INTERRUPT ROUTINE 
      STA 6 
      STF 0         TEST INTERRUPT ACKNOWLEDGE
      NOP           SHOULD NOT
      NOP            INTERRUPT HERE 
      CLC 0,C 
      LDA RTRN1     DID INTERRUPT OCCUR AT THE
      CPA ADDR1      CORRECT MEM LOCATION?
      RSS 
E17   JSB ERROR,I * DMA1--RETURN ADDR IS INCORRECT
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JSB CTPD
      JMP T.4 
      JMP TI2 
      SPC 2 
RTRN2 NOP           DMA2 INTERRUPT SUBROUTINE 
      CLF 0         DISABLE INT SYS 
      SFS 7 
E103  JSB ERROR,I * IAK CLEARED DMA2 FLAG 
      LDA J5        IJ5 INTERRUPT ROUTINE 
      STA 7 
      STF 0         TEST INTERRUPT ACKNOWLEDGE
      NOP           SHOULD NOT
      NOP            INTERRUPT HERE 
      CLC 0,C 
      LDA RTRN2     DID INTERRUPT OCCUR AT THE
      CPA ADDR2      CORRECT MEM LOCATION?
      RSS 
E20   JSB ERROR,I * DMA2--RETURN ADDR IS INCORRECT
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JMP T.4 
      SPC 2 
IJ1   NOP 
      CLF 0 
E21   JSB ERROR,I * DMA1--IAK DID NOT WORK. 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JMP IJ1,I 
      SPC 2 
IJ5   NOP 
      CLF 0 
E22   JSB ERROR,I * DMA2--IAK DID NOT WORK. 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JMP IJ5,I 
      SKP 
* T.4 -- TEST CONTROL RESET 
      SPC 3 
T.4   EQU * 
      LDA JSB.1     INT.1 INTPT IN DMA1 TRAP CELL 
      STA 6 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      LDA HLTA
      LDB HLTB
      STC 6 
      STF 6 
      CLC 0         SHOULD CLEAR ALL CONTROL BITS 
      STF 0         ENABLE INT SYS
      NOP           SHOULD NOT
      RSS            INTERRUPT HERE 
E23   JSB ERROR,I * DMA1--CLC 0 DID NOT CLEAR 
*                                   CONTROL 
      CLF 0         DISABLE INT SYS 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      SPC 1 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      LDA HLTA
      LDB HLTB
      STC 6 
      STF 6 
      CLC 6         CLEAR DMA1 CONTROL
      STF 0         ENABLE INT SYS
      NOP           SHOULD NOT
      RSS            INTERRUPT HERE 
E24   JSB ERROR,I * DMA1--CLC 6 DID NOT CLEAR 
*                                   CONTROL 
      CLF 0         DISABLE INT SYS 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      SPC 2 
      LDA HLT6
      STA 6 
      JSB CTPD
      JMP T.5 
      LDA JSB.1     INT.1 INTPT IN DMA2 TRAP CELL 
      STA 7 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      LDA HLTA
      LDB HLTB
      STC 7 
      STF 7 
      CLC 0         SHOULD CLEAR ALL CONTROL BITS 
      STF 0         ENABLE INT SYS
      NOP           SHOULD NOT
      RSS            INTERRUPT HERE 
E25   JSB ERROR,I * DMA2--CLC 0 DID NOT CLEAR 
*                                   CONTROL 
      CLF 0         DISABLE INT SYS 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      SPC 1 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      LDA HLTA
      LDB HLTB
      STC 7 
      STF 7 
      CLC 7         CLEAR DMA2 CONTROL
      STF 0 
      NOP 
      RSS            INTERRUPT HERE 
E26   JSB ERROR,I * DMA2--CLC 7 DID NOT CLEAR 
*                                   CONTROL 
      CLF 0         DISABLE INT SYS 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      LDA HLT7
      STA 7 
      SKP 
* T.5 -- PRESET TEST
      SPC 3 
T.5   EQU * 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLC 0,C 
      LDB BT8 
      JSB CHKSW,I   OMIT PRESET TEST? 
      JMP DT.6,I
      CLF 6 
      CLF 7 
      SPC 1 
H27   HLT 27B     * PRESS PRESET THEN PRESS RUN 
      SPC 1 
* 
      SFS 6 
      RSS 
      JMP E31+1 
      LDB BT14
      JSB CHKSW,I   SUPPRESS ERROR HALTS? 
      RSS           YES 
E31   HLT 31B     * DMA1--PRESET DID NOT SET FLAG 
      JSB CTPD
      JMP LT7,I 
* 
      SFS 7 
      RSS 
      JMP E32+1 
      LDB BT14
      JSB CHKSW,I   SUPPRESS ERROR HALTS? 
      RSS           YES 
E32   HLT 32B     * DMA2--PRESET DID NOT SET FLAG 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      SKP 
                                                