      HED 12604 DIAGNOSTIC - TIME DELAY TEST ROUTINE
* 
*    TIME DELAY TEST ROUTINE
* 
TTEST NOP           ENTER 
      JSB DCIDE     HOW MANY CYCLES OF DELAY? 
      DEC -52       2114/2115 - 0.1 MSEC
      DEC -52       2114/2115 - 1.0 MSE 
      DEC -64       2116 - 0.1 MSEC 
      DEC -64       2116 - 1.0 MSEC 
      DEC -68       2100 - 0.1 MSEC 
      DEC -68       2100 - 1.0 MSEC 
      DEC -74       21MX - 0.1 MSEC 
      DEC -74       21MX - 1.0 MSEC 
      STA RCVR      SET RECOVERY TIME 
      JSB DCIDE 
      DEC -9        2114/2115 - 0.1 MSEC
      DEC -78       2114/2115 - 1.0 MSEC
      DEC -11       2116 - 0.1 MSEC 
      DEC -97       2116 - 1.0 MSEC 
      DEC -10       2100 - 0.1 MSEC 
      DEC -92       2100 - 1.0 MSEC 
      DEC -9        21MX - 0.1 MSEC 
      DEC -84       21MX - 1.0 MSEC 
      STA MIN       SET MINIMUM DELAY TIME
      JSB DCIDE 
      DEC -6        2114/2115 - 0.1 MSEC
      DEC -57       2114/2115 - 1.0 MSEC
      DEC -7        2116 - 0.1 MSEC 
      DEC -72       2116 - 1.0 MSEC 
      DEC -8        2100 - 0.1 MSEC 
      DEC -69       2100 - 1.0 MSEC 
      DEC -7        21MX - 0.1 MSEC 
      DEC -62       21MX - 1.0 MSEC 
      STA MAX       SET MAXIMUM DELAY TIME
      LIB 1         CHECK SWITCH REGISTER 
      SLB           HALT AT START?
      JMP P1          YES 
STC3  STC 0           NO - CLEAR PRINT
CLF6  CLF 0                  COMMAND FF 
      ISZ RCVR      RECOVERY
      JMP *-1         DELAY LOOP
CLC4  CLC 0         SET PRINT COMMAND FF
P34   ISZ MIN       CHECK FOR 
      JMP *+2         MINIMUM 
      JMP P35           DELAY WITH
SFS8  SFS 0               FLAG CHECK
      JMP P34               LOOP
      JMP P37       TOO SHORT!
P35   ISZ MAX       CHECK FOR 
      JMP *+2         MAXIMUM 
      JMP P36           DELAY WITH
SFS9  SFS 0               FLAG CHECK
      JMP P35               LOOP
      JMP P39       OK
P36   SSB           TOO LONG! - INHIBIT TTY?
      JMP P38                 YES 
      LDA ML12                NO
      LDB MAD12     PRINT 12TH MESSAGE
      JSB 102B,I      "DELAY TIME TOO LONG" 
      JMP P38 
P37   SSB           INHIBIT TTY?
      JMP P38         YES 
      LDA ML13        NO
      LDB MAD13     PRINT 13TH MESSAGE
      JSB 102B,I      "DELAY TIME TOO SHORT"
P38   HLT 55B       ERROR HALT
P39   JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP *+3         YES 
      HLT 0         HALT (BIT 1)
      JMP *+4 
      JSB TLOOP     SCOPE LOOP
      SSA           HALT? 
      HLT 0           YES 
      JSB DLY2
      JMP TTEST,I     NO - EXIT 
      HED 12604 DIAGNOSTIC - INPUT TEST ROUTINE 
* 
*    INPUT TEST ROUTINE 
* 
INTST NOP           ENTER 
      LDA INTRP     GET INTERRUPT LINKAGE 
      STA ADDR,I
NOW   STF 0         TURN ON INTERRUPT SYSTEM
      LDA ADATA     PREPARE COUNTERS FOR
      STA IDATA     CONVERTING THE DATA TO
      LDA M4        ASCII 
      STA CNT0
      LDA M2
      STA CNT20 
STCC3 STC 0,C       START PERIPHERAL DEVICE 
      JSB DLY2      WAIT FOR INTERRUPT
      JMP P46       TAKING TOO LONG 
LIB1  LIB 0         READ DATA (10^3,10^2,10^1,10^0) 
      JMP *+2 
      HLT 33B 
LIA1  LIA 0         READ DATA (RANGE,FUN,10^5,10^4) 
      JMP *+2 
      HLT 44B 
NDIG  ALF           OBTAIN EACH DATA BIT
      STA ATMP1 
      AND MSK17     CONVERT TO
      STA IDATA,I   ASCII CODE
      ADA M10       AND 
      SSA           STORE 
      JMP *+3       IN
      LDA ONE0      OUTPUT
      JMP *+2       BUFFER
      LDA BLK0
      ADA IDATA,I 
      STA IDATA,I 
      LDA ATMP1 
      ISZ IDATA 
      ISZ CNT0
      JMP NDIG
      LDA M4
      STA CNT0      RESTORE COUNTERS
      SWP           OBTAIN DATA IN B REGISTER 
      ISZ CNT20 
      JMP NDIG
      LDA D16 
      LDB ADATA 
      JSB 102B,I    OUTPUT THE DATA 
      NOP 
L20   JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP NOW         YES 
      HLT 0         HALT (BIT 1)
      CLF 0         TURN OFF INTERRUPT
      JMP INTST,I   EXIT
P46   LIB 1         READ SWITCH REGISTER
      SSB           INHIBIT TTY?
      JMP P48         YES 
      CLF 0           NO
      LDA ML14      PRINT 14TH MESSAGE
      LDB MAD14       "WAITING TOO LONG"
      JSB 102B,I
P48   HLT 66B       ERROR HALT
      CLC 0         RESET 
      JMP L20 
      HED 12604 DIAGNOSTIC - SERVICE ROUTINES 
*************************************************** 
***                                            **** 
***  SERVICE ROUTINES AND SPECIAL SCOPE LOOPS  **** 
***                                            **** 
*************************************************** 
* 
*    HOLD COMMAND SCOPE LOOP ROUTINE
* 
HTEST NOP           ENTER 
      JSB DCIDE     HOW MANY CYCLES OF DELAY? 
      DEC -30       2114/2115 - 0.1 MSEC
      DEC -30       2114/2115 - 1.0 MSEC
      DEC -38       2116 - 0.1 MSEC 
      DEC -38       2116 - 1.0 MSEC 
      DEC -41       2100 - 0.1 MSEC 
      DEC -41       2100 - 1.0 MSEC 
      DEC -45       21MX - 0.1 MSEC 
      DEC -45       21MX - 1.0 MSEC 
      STA CNT6
      JSB DCIDE 
      DEC -24       2114/2115 - 0.1 MSEC
      DEC -24       2114/2115 - 1.0 MSEC
      DEC -32       2116 - 0.1 MSEC 
      DEC -32       2116 - 1.0 MSEC 
      DEC -34       2100 - 0.1 MSEC 
      DEC -34       2100 - 1.0 MSEC 
      DEC -36       21MX - 0.1 MSEC 
      DEC -36       21MX - 1.0 MSEC 
      STA CNT7
STRT  LDA CNT6      SET 
      STA CNT8        CO
      LDA CNT7          UN
      STA CNT9            TERS
      ISZ CNT9      DELAY 
      JMP *-1         LOOP
CLC6  CLC 0         APPLY HOLD
      NOP 
STC5  STC 0         WAIT
      ISZ CNT8      DELAY 
      JMP *-1         LOOP
CLF8  CLF 0         REMOVE HOLD 
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP STRT        YES 
      HLT 0         HALT (BIT 1)
      CLC 0 
      JMP HTEST,I   EXIT
      SKP 
* 
*    ENCODE COMMAND SCOPE LOOP ROUTINE
* 
ETEST NOP           ENTER 
      JSB DCIDE     HOW MANY CYCLES OF DELAY? 
      DEC -15       2114/2115 - 0.1 MSEC
      DEC -15       2114/2115 - 1.0 MSEC
      DEC -18       2116 - 0.1 MSEC 
      DEC -18       2116 - 1.0 MSEC 
      DEC -20       2100 - 0.1 MSEC 
      DEC -20       2100 - 1.0 MSEC 
      DEC -22       21MX - 0.1 MSEC 
      DEC -22       21MX - 1.0 MSEC 
      STA CNT6
      JSB DCIDE 
      DEC -9        2114/2115 - 0.1 MSEC
      DEC -9        2114/2115 - 1.0 MSEC
      DEC -13       2116 - 0.1 MSEC 
      DEC -13       2116 - 1.0 MSEC 
      DEC -14       2100 - 0.1 MSEC 
      DEC -14       2100 - 1.0 MSEC 
      DEC -14       21MX - 0.1 MSEC 
      DEC -14       21MX - 1.0 MSEC 
      STA CNT7
STRT2 LDA CNT6      SET 
      STA CNT8        CO
      LDA CNT7          UN
      STA CNT9            TERS
      ISZ CNT9      DELAY 
      JMP *-1         LOOP
STC6  STC 0         ENCODE
      NOP 
      ISZ CNT8      DELAY 
      JMP *-1         LOOP
      NOP 
CLC7  CLC 0         REMOVE ENCODE IF NOT PULSED 
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP STRT2       YES 
      HLT 0         HALT (BIT 1)
STRT3!LDA CNT6      SET 
      STA CNT8        CO
      LDA CNT7          UN
      STA CNT9            TERS
      ISZ CNT9      DELAY 
      JMP *-1         LOOP
CLF9  CLF 0         ENCODE
      NOP 
      ISZ CNT8      DELAY 
      JMP *-1         LOOP
      NOP 
CLC8  CLC 0         REMOVE ENCODE IF NOT PULSED 
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP STRT3       YES 
      HLT 0         HALT (BIT 1)
      JMP ETEST,I   EXIT
      SKP 
* 
*    SWITCH REGISTER STORAGE ROUTINE - THREE
* 
MODE3 NOP           ENTER 
      STA ATMP1     SAVE A
      LIA 1         READ SWITCH REGISTER
      SLA           HALT AT START?
      JMP P1          YES 
      RAR,RAR         NO
      SLA           LOOP? 
      JMP L2          YES 
      ISZ MODE3       NO
      SSA           HALT? 
      JMP L2          YES 
      ISZ MODE3       NO
L2    LDA ATMP1     RESTORE A 
      JMP MODE3,I   EXIT
* 
*    DEVICE TIME-OUT DELAY ROUTINE
* 
DLY2  NOP           ENTER 
      STA ATMP1     SAVE A
      LDA CNT1      GET DELAY 
      STA CNT2      SET FIRST COUNTER 
      LDA ATMP1     RESTORE A 
P30   ISZ CNT2           DE 
      JMP *+2              LA 
      JMP DLY2,I    EXIT     Y
      LDA CNT1
      STA CNT4      SET SECOND COUNTER
      LDA ATMP1     RESTORE A 
      ISZ CNT4                 LO 
      JMP *-1                    OP 
      JMP P30 
      SKP 
* 
*    FLAG SCOPE LOOP ONE
* 
FLP1  NOP           ENTER 
P16   JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP P26         YES 
      NOP             NO
      JMP P17 
P26   CLC 0         CRS FOR SCOPE TRIGGER 
STF3  STF 0         SC
SFS4  SFS 0           O 
      NOP              P
CLF4  CLF 0             E 
SFS7  SFS 0               L 
      NOP                  O
      JMP P16               OP
P17   LDB FLP1      CHECK 
      ADB M6          FOR 
      LDA 1,I           FLAG
      AND MSK4            SET 
      CPA SFS0              ROUTINE 
STF4  STF 0         RETURN FLAG TO SET STATE
      LIA 1         RESTORE SWITCH REGISTER 
      RAR,RAR         TO A
      JMP FLP1,I    EXIT
* 
*    FLAG SCOPE LOOP TWO
* 
FLP2  NOP           ENTER 
P18   JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP P27         YES 
      NOP             NO
      JMP P19 
P27   CLC 0         CRS SIGNAL FOR SCOPE TRIGGER
STF5  STF 0         SC
SFC4  SFC 0           O 
      NOP              P
CLF5  CLF 0             E 
SFC5  SFC 0               L 
      NOP                  O
      JMP P18               OP
P19   LDB FLP2      CHECK 
      ADB M7          FOR 
      LDA 1,I           FLAG
      AND MSK4            SET 
      CPA SFC0              ROUTINE 
STF6  STF 0         RETURN FLAG TO SET STATE
      LIA 1         RESTORE SWITCH
      RAR,RAR         REGISTER TO A 
      JMP FLP2,I    EXIT
      SKP 
* 
*    TIME DELAY SCOPE LOOP ROUTINE
* 
TLOOP NOP           ENTER 
      JSB DCIDE     HOW MANY CYCLES OF DELAY? 
      DEC -46       2114/2115 - 0.1 MSEC
      DEC -465      2114/2115 - 1.0 MSEC
      DEC -58       2116 - 0.1 MSEC 
      DEC -582      2116 - 1.0 MSEC 
      DEC -62       2100 - 0.1 MSEC 
      DEC -613      2100 - 1.0 MSEC 
      DEC -67       21MX - 0.1 MSEC 
      DEC -663      21MX - 1.0 MSEC 
      STA DELY      SET DELAY TIME
      JSB DCIDE 
      DEC -10       2114/2115 - 0.1 MSEC
      DEC -152      2114/2115 - 1.0 MSEC
      DEC -12       2116 - 0.1 MSEC 
      DEC -187      2116 - 1.0 MSEC 
      DEC -14       2100 - 0.1 MSEC 
      DEC -198      2100 - 1.0 MSEC 
      DEC -12       21MX - 0.1 MSEC 
      DEC -212      21MX - 1.0 MSEC 
      STA RELY      SET RECOVERY TIME 
P42   LDA DELY
      LDB RELY
      STA DELY0 
      STB RELY0 
      ISZ RELY0     RECOVERY DELAY
      JMP *-1         LOOP
CLC5  CLC 0         SET PRINT COMMAND FF
      ISZ DELY0     DELAY TIME
      JMP *-1         LOOP
STC4  STC 0         CLEAR PRINT 
CLF7  CLF 0           COMMAND FF
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP P42         YES 
      NOP             NO
      JSB DLY2      TIME-OUT DEVICE 
      LIA 1         RESTORE SWITCH
      RAR,RAR         REGISTER TO A 
      JMP TLOOP,I   EXIT
      SKP 
* 
*    COMPUTER/DELAY DECISION ROUTINE
* 
DCIDE NOP           ENTER 
      LDA DCIDE,I   2114/2115 - 
      STA X1          0.1 MSEC
      ISZ DCIDE 
      LDA DCIDE,I   2114/2115 - 
      STA X2          1.0 MSEC
      ISZ DCIDE 
      LDA DCIDE,I   2116 -
      STA X3          0.1 MSEC
      ISZ DCIDE 
      LDA DCIDE,I   2116 -
      STA X4          1.0 MSEC
      ISZ DCIDE 
      LDA DCIDE,I   2100 -
      STA X5          0.1 MSEC
      ISZ DCIDE 
      LDA DCIDE,I   2100 -
      STA X6          1.0 MSEC
      ISZ DCIDE 
      LDA DCIDE,I   21MX -
      STA X7          0.1 MSEC
      ISZ DCIDE 
      LDA DCIDE,I   21MX -
      STA X8          1.0 MSEC
      ISZ DCIDE     SET RETURN POINT
      LDA COMP      GET COMPUTER INDICATOR
      LDB DELAY     GET DELAY INDICATOR 
      ALS           -4:21MX, -2:2100, 0:2114/2115, +2:2116
      SZB           WHICH DELAY?
      ADA EIGHT       1.0 MSEC
      ADA LOC         0.1 MSEC
      JMP 0,I       GO
      LDA X7
      JMP DCIDE,I 
      LDA X5         LOAD 
      JMP DCIDE,I     "A" 
LBL   LDA X1           REGISTER 
      JMP DCIDE,I       WITH
      LDA X3             APPROPRIATE
      JMP DCIDE,I         CONSTANT
      LDA X8               AND
      JMP DCIDE,I           RETURN
      LDA X6                 TO 
      JMP DCIDE,I             CALLER
      LDA X2
      JMP DCIDE,I 
      LDA X4
      JMP DCIDE,I 
LOC   DEF LBL 
EIGHT DEC 8 
      SKP 
* 
*    ADDRESS INCLUSION ROUTINE
* 
ADIN  NOP           ENTER 
      CLC 0,C       INTERRUPT SYSTEM OFF
      JSB INCLU     PUT ADDRESS 
SFS0  SFS 0           INTO SFS XX 
      STA SFS1
      STA SFS2
      STA SFS3
      STA SFS4
      STA SFS5
      STA SFS6
      STA SFS7
      STA SFS8
      STA SFS9
      JSB INCLU     PUT ADDRESS 
SFC0  SFC 0           INTO SFC XX 
      STA SFC1
      STA SFC2
      STA SFC3
      STA SFC4
      STA SFC5
      JSB INCLU     PUT ADDRESS 
      CLC 0           INTO CLC XX 
      STA CLC1
      STA CLC2
      STA CLC3
      STA CLC4
      STA CLC5
      STA CLC6
      STA CLC7
      STA CLC8
      JSB INCLU     PUT ADDRESS 
      STC 0           INTO STC XX 
      STA STC1
      STA STC2
      STA STC3
      STA STC4
      STA STC5
      STA STC6
      JSB INCLU     PUT ADDRESS 
      STC 0,C         INTO SRC XX,C 
      STA STCC1 
      STA STCC2 
      STA STCC3 
      JSB INCLU     PUT ADDRESS 
      CLF 0           INTO CLF XX 
      STA CLF1
      STA CLF2
      STA CLF3
      STA CLF4
      STA CLF5
      STA CLF6
      STA CLF7
      STA CLF8
      STA CLF9
      JSB INCLU     PUT ADDRESS 
      STF 0           INTO STF XX 
      STA STF1
      STA STF2
      STA STF3
      STA STF4
      STA STF5
      STA STF6
      JSB INCLU     PUT ADDRESS 
      LIA 0           INTO LIA XX 
      STA LIA1
      JSB INCLU     PUT ADDRESS 
      LIB 0           INTO LIB XX 
      STA LIB1
      JMP ADIN,I    EXIT
* 
*    INCLUSION ROUTINE
* 
INCLU NOP           ENTER 
      LDA INCLU,I   GET I/O INCTRUCTION 
      IOR ADDR        INCLUDE ADDRESS 
      ISZ INCLU     ADJUST RETURN POINT 
      JMP INCLU,I   EXIT
      SPC 3 
X     EQU *         FIRST WORD AVAIL MEM AFTER PROG 
                                                                                                                                                                                                                                                      