      HED 12604 DIAGNOSTIC - BASIC TIMING TEST ROUTINES 
* 
*    BASIC TIMING TEST ROUTINE
* 
BTEST NOP           ENTER 
      CLB           INITIALIZE
      STB ERR1        ERROR NUMBER
CLC1  CLC 0         SET PRINT COMMAND FF AND
      JSB DLY         WAIT FOR FLAG TO SET
CLF1  CLF 0         CLEAR FLAG AND TEST 
      JSB STAF1       WITH SFS AND SFC
STF1  STF 0         SET FLAG AND TEST 
      JSB STAF2       WITH SFS AND SFC
STCC1 STC 0,C       CLR PRINT COMMAND FF & FLAG FF
      JSB DLY1      WAIT FOR DELAY CKTS TO RECOVER
CLC2  CLC 0         SET PRINT COMMAND FF
      JSB STAF3     TEST FLAG OPERATION 
STCC2 STC 0,C       REPEAT
      JSB DLY1        USING 
      CLC 0             A CRS 
      JSB STAF3           SIGNAL
      JSB DLY2      INSURE THAT DEVICE IS TIMED OUT 
      SPC 1 
**   TEST INTERRUPT OPERATION   **
      SPC 1 
      LDA ERJMP     SET ILLEGAL 
      STA ADDR,I      INTERRUPT COMMAND 
P12   CLC 0,C       CLEAR 
CLF2  CLF 0           I/O CARD
      STF 0         LOOK FOR INTERRUPT
STC1  STC 0           WITH FLAG CLEARED 
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP P12         YES 
      HLT 0         HALT (BIT 1)
      ISZ ERR1      INCREMENT ERROR 
      LDA SBOK      SET LEGAL 
      STA ADDR,I      INTERRUPT COMMAND 
P13   STF 0         LOOK
CLC3  CLC 0          FOR
CLF3  CLF 0           INTERRUPT 
STC2  STC 0            WITH 
STF2  STF 0             FLAF
      NOP                SET
      NOP 
      JSB ERROR     SHOULD SKIP IN INTERRUPT
INTR  JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP P13         YES 
      HLT 0         HALT (BIT 1)
      CLC 0,C       CLEAR I/O 
      LDA HLT1      RESTORE 
      IOR ADDR        ILLEGAL 
      STA ADDR,I        INTERRUPT 
      JSB DLY2
      JMP BTEST,I   EXIT
      SKP 
* 
*    STATUS FLAG CHECK ROUTINE - CLEAR
* 
STAF1 NOP           ENTER 
SFS5  SFS 0         CHECK FLAG
      JMP *+2         WITH SFS
      JSB ERROR     FLAG NOT CLEAR
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP *+3         YES 
      HLT 0         HALT (BIT 1)
      JMP *+4 
      JSB FLP1      SCOPE LOOP
      SSA           HALT? 
      HLT 0           YES 
      ISZ ERR1        NO - INCREMENT ERROR
SFC2  SFC 0         CHECK FLAG WITH SFC 
      JSB ERROR     FLAG NOT CLEAR
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP *+3         YES 
      HLT 0         HALT (BIT 1)
      JMP *+4 
      JSB FLP2      SCOPE LOOP
      SSA           HALT? 
      HLT 0           YES 
      ISZ ERR1        NO - INCREMENT ERROR
      JMP STAF1,I   EXIT
* 
*    STATUS FLAG CHECK ROUTINE - SET
* 
STAF2 NOP           ENTER 
SFS6  SFS 0         CHECK FLAG WITH SFS 
      JSB ERROR     FLAG NOT SET
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP *+3         YES 
      HLT 0         HALT (BIT 1)
      JMP *+4 
      JSB FLP1      SCOPE LOOP
      SSA           HALT? 
      HLT 0           YES 
      ISZ ERR1        NO - INCREMENT ERROR
SFC3  SFC 0         CHECK FLAG
      JMP *+2         WITH SFC
      JSB ERROR     FLAG NOT SET
      JSB MODE3     CHECK SWITCH REGISTER - LOOP? 
      JMP *+3         YES 
      HLT 0         HALT (BIT 1)
      JMP *+4 
      JSB FLP2      SCOPE LOOP
      SSA           HALT? 
      HLT 0           YES 
      ISZ ERR1        NO - INCREMENT ERROR
      JMP STAF2,I   EXIT
      SKP 
* 
*    STATUS FLAG CHECK ROUTINE - DYNAMIC
* 
STAF3 NOP           ENTER 
SFS2  SFS 0         CHECK FLAG
      JMP P43       OK
      JSB ERROR     FLAG NOT CLEAR
      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 
P43   ISZ ERR1        NO - INCREMENT ERROR
      JSB DLY       WAIT FOR FLAG DELAY 
SFS3  SFS 0         CHECK FLAG
      JSB ERROR     FLAG NOT SET
      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 
      ISZ ERR1        NO - INCREMENT ERROR
      JMP STAF3,I   EXIT
* 
*    READ DELAY ROUTINE - 0.2 OR 2.0 MSEC 
* 
DLY   NOP           ENTER 
      STA ATMP1     SAVE A
      STB BTMP1     SAVE B
      JSB DCIDE     HOW MANY CYCLES OF DELAY? 
      DEC -9        2114/2115 - 0.1 MSEC
      DEC -285      2114/2115 - 1.0 MSEC
      DEC -16       2116 - 0.1 MSEC 
      DEC -362      2116 - 1.0 MSEC 
      DEC -25       2100 - 0.1 MSEC 
      DEC -392      2100 - 1.0 MSEC 
      DEC -26       21MX - 0.1 MSEC 
      DEC -424      21MX - 1.0 MSEC 
      STA CNT4      SET COUNTER 
      LDA ATMP1     RESTORE A 
      LDB BTMP1     RESTORE B 
      ISZ CNT4      DELAY 
      JMP *-1         LOOP
      JMP DLY,I     EXIT
* 
*    RECOVERY DELAY ROUTINE - 50 OR 300 MICROSEC
* 
DLY1  NOP           ENTER 
      LDA CNT3
      STA CNT4      SET COUNTER 
      ISZ CNT4      DELAY 
      JMP *-1         LOOP
      JMP DLY1,I    EXIT
      SKP 
* 
*    BASIC TIMING TEST ERROR ROUTINE
* 
ERROR NOP           ENTER 
      LIB 1         CHECK 
      RBR,RBR         FOR 
      SLB               LOOPING 
      JMP ERROR,I   EXIT
      CLF 0 
      LDA ERR1      GET ERROR NUMBER
      AND MSK3      INSURE ISOLATION OF BITS 0-5
      RBL,RBL       CHECK FOR 
      SSB             TTY INHIBIT 
      JMP P15           YES 
      JSB .2NUM         NO - PACK 2 ASCII NOS.
      STB MES8      STORE ERROR NO. IN MESSAGE
      LDA ML8       PRINT 8TH MESSAGE 
      LDB MAD8        "ERROR XX"
      JSB 102B,I
P15   LDA ERR1      GET ERROR 
      AND MSK3        NUMBER
      CLB 
      HLT 0         ERROR HALT
      JMP ERROR,I   EXIT
* 
*    PACK 2 ASCII NUMBERS ROUTINE 
* 
.2NUM NOP           ENTER 
      STA ATMP1     SAVE NUMBER 
      RAR,RAR       FORMAT
      RAR             FIRST 
      AND MSK2         NUMBER 
      IOR C1             AND STORE
      ALF,ALF              IT IN B
      STA 1                  REGISTER 
      LDA ATMP1     FORMAT
      AND MSK2        SECOND
      IOR C1            NUMBER
      IOR 1         PACK BOTH 
      STA 1           NUMBERS INTO B
      LDA ATMP1     RESTORE NUMBER TO A 
      JMP .2NUM,I   EXIT
                                                                                                                                                                                                                  