      DEF TST15     INTERRCORD GAP CREEP TEST 
      DEF TST16     WRITE-READ SINGLE ROTATING BIT
      DEF TST17     WRITE-READ CHANNEL SAW-TOOTH
      DEF TST18     WRITE-READ TRACK SAW-TOOTH
      DEF TST19     WRITE-READ RANDOM DATA
      DEF TST20     DMA CHANNEL 1 WRITE-READ RANDOM DATA
      DEF TST21     DMA CHANNEL 2 WRITE-READ RANDOM DATA
      DEF TST22     RAPID WRITE TEST
      DEF TST23     ECHO CHECK ON ALL UNITS ON-LINE 
      DEF TST24     CONTROLLER CHECK FOR MULTI-UNIT OPERATION 
      DEF TST25     INTER-UNIT COMPATIBILITY (REEL  EXCHANGE) 
      DEF TST26     WRITE RING ENABLE TEST
      DEF TST27     REWIND OFF-LINE CHECK 
      DEF TST28     WRITE ALL ONES RECORD 
      DEF TST29     READ ALL ONES RECORD
      DEF TST30     OPERATOR SERVICE ROUTINES 
      DEF OPDSN     OPERATOR DESIGN 
      DEC -1
* 
* 
* 
*         SETUP- THIS ROUTINE IS USED WHENEVER DIAGNOSTIC 
*                IS RESTARTED AT 2000.
* 
.SETU NOP 
* 
      JSB INTOF,I   TURN OFF I/O SYSTEM 
* 
*                   CHECK SWITCH 9 FOR ABORT
      LIA SW        LOAD SWITCH REGISTER
      AND SW09      MASK FOR BIT 9
      SZA           IS BIT 9 SET? 
      JMP .ZUSR,I   YES-EXIT TO TCP 
      LDA .M1 
      STA .ZCFT,I   CORECTION TO TCP*********** 
      CLA           CLEAR CONTANTS
      STA UNICT     CLEAR UNIT #,RESET=0
      STA UNIT      CLEAR UNIT #
      STA OLDTN     CLEAR OLD TEST #
      STA SUBTS     CLEAR SUBTEST COUNTER 
      STA ERSKP     CLEAR ERROR MESSAGE SKIP FLAG 
      STA TSTN      CLEAR TEST NUMBER 
      STA TST0F     CLEAR TEST 0 FLAG 
      JSB UNISL     GO SELECT A TAPE UNIT 
      NOP 
      JSB CLEAR     CLEAR THE CONTROLLER
      JSB .ALRW,I   REWIND ALL UNITS
      JMP .SETU,I   GO TO 2000
.ZCFT DEF ZCFTT     POINTER TO ZCFTT IN TCP *********** 
* 
* 
*     EXECUTIVE EXTENSION MODULE
* 
*     EXECUTIVE CONTROL FOR TAPE UNIT SELECTION 
*     *** NOTE: THE JSB .EXEC,I CALL MUST BE THE FIRST STATEMENT
*               AFTER TSTXX NOP IN EVERY TEST.
*     CURRENT TAPE UNIT UNDER TEST=UNIT 
*     COUNTER WHICH KEEPS UNIT NUMBER UPDATE=UNICT
*     BASIC OPERATION OF THIS SECTION 
*     1. UNICT IS INCREMENTED AFTER EACH PASS 
*     2. UNICT IS INCREMENTED IF CURRENT UNIT IS OFF-LINE 
*     3. IF THERE IS NO TAPE SELECTED BY SWITCH REG. ALL
*        TAPES ARE CYCLED (4 PASSES IF 4 UNITS UP)IN SEQUENCE.
*     4. IF SWITCH REG. SELECTION IS MADE,ONLY THOSE UNITS
*        WILL BE CYCLED.
*     5. IF UNIT IS SELECTED BY SWITCH REG.AND NOT ON-LINE, 
*        AN ERROR MESSAGE WILL RESULT.
*     6. THE NUMBER OF TAPES REQUESTED IS EQUAL TO THE NUMBER OF
*        PASSES.
*     7. TAPE UNITS ARE SELECTED IN NUMERICAL ORDER I.E. 0,1,2,3
*        IF 2 WERE NOT SELECTED THE SEQUENCE WOULD BE 0,1,3 (3 PASSES)
* 
* 
EXE01 NOP 
      JSB INTOF,I   TURN OFF INTERRUPT SYSTEM 
      CLA 
      STA TST0F     CLEAR TEST 0 FLAG 
      STA RDERR     CLEAR READ AND
      STA WRERR     WRITE ERROR FLAG
      STA SKPSW     CLEAR SKIP SW REG CHECK FLAG
      STA ERSKP     CLEAR ERROR MESSAGE SKIP FLAG 
      STA SUBTS     CLEAR THE SUBTEST COUNTER 
      JSB KCORE     GET MAX BUFFER LENGTH 
      LDA BFMAX 
      ADA .MPAG 
      SSA           IS THE MAXIMUM BUFFER>2048? 
      JMP TAP24     NO-OK TO CONTINUE 
      LDA .PAGE     YES-TOO LARGE 
      STA BFMAX     RESET MAX BUFFER TO 2048 BYTES
TAP24 EQU * 
* 
      LDA ORGSC     LOAD ORGINAL SELECT CODE
      STA SC        SETUP CURRENT SELECT CODE 
* 
*                   CHECK SWITCH 4 FOR DMA CH 1 
      LDA FG183      IS IT A 13183? 
      SZA,RSS 
      JMP TAP25     NO-GO CLEAR DMA FLAG
      CPA .1        IS IT A 13183-NO DMA? 
      JMP TAP25     YES-GO CLEAR DMA FLAG 
      LDA DMAFG     NO-RESTORE DMA FLAG 
      STA FGDMA 
      JMP TAP19     SKIP DMA FLAG CLEAR 
* 
TAP25 EQU * 
      CLA 
      STA FGDMA     CLEAR DMA FLAG
TAP19 EQU * 
      LIA SW        LOAD SWITCH REGISTER
      AND SW04      MASK OUT BIT 4
      SZA,RSS       IS BIT 4 SET? 
      JMP TAP13     NO-EXIT 
      LDA DMAFG     CHECK DMA FLAG
      SZA,RSS       IS IT ZERO? 
      JMP TAP14     YES-EXIT
      LDA .2        YES-SET UP DMA FLAG 
      STA FGDMA     SET DMA FLAG
TAP13 EQU * 
* 
*                   CHECK SWITCH 5 FOR DMA CH2
* 
      LIA SW        LOAD SWITCH REGISTER
      AND SW05      MASK FOR BIT 5
      SZA,RSS       IS BIT 5 SET? 
      JMP TAP14     NO-EXIT 
      LDA DMAFG     CHECK DMA FLAG
      CPA .2        IS THERE A 2ND DMA CHANNEL? 
      JMP *+2       YES-CONTINUE
      JMP TAP14     NO-EXIT 
      LDA .3        YES-SET UP DMA FLAG 
      STA FGDMA     SET DMA FLAG
TAP14 EQU * 
* 
*                   CHECK FOR SWITCH 7-CRCC SUPPRESS
* 
      LIA SW        LOAD THE SWITCH REGISTER
      AND SW07      ISOLATE SWITCH 7
      SZA           IS SWITCH 7 SET?
      CCA           YES-SET CRCC SKIP FLAG
      STA CRCFG     SET CRCC FLAG 
* 
* 
* 
*                   THIS SECTION SELECTS THE NEXT ON-LINE TAPE
*                   UNIT IF THE PASS COUNTER HAS INCREMENTED. 
*                   THE CURRENT TEST NUMBER (TSTN) IS COMPARED
*                   TO THE TEST NUMBER USED DURING THE LAST 
*                   PASS THRU THIS ROUTINE.IF THE NEW TEST NUMBER 
*                   IS SMALLER THAN THE OLD TEST # (OLDTN), THE 
*                   ASSUMPTION IS A PASS WAS COMPLETED AND THEREFORE, 
*                   THE NEXT ON LINE UNIT IS SELECTED.
* 
      LDA TSTN      LOAD CURRENT TEST NUMBER
      LDB OLDTN     LOAD OLD TEST # 
      CMB,INB       MAKE IT NEGATIVE
      ADA B         TSTN-OLDTN
      SSA           IS IT POSTIVE?
      JMP TAP15     NO-JMP TO NEW PASS SETUP
TAP17 EQU *         YES-NOT A NEW PASS
      LDA TSTN      GET TEST# 
      STA OLDTN     SET OLD TEST #= TO CURRENT #
      JMP TAPUP     CONTINUE
TAP15 EQU * 
      ISZ UNICT     GOTO NEXT UNIT
      NOP 
      LDA UNICT     LOAD THE NEXT UNIT #
      ADA .M4       SUBTRACT 4
      SSA           IS IT POSITIVE? 
      JMP TAP17     NO-NOT = TO OR GREATER THAN 4 
      CLA           YES-CLEAR UNICT 
      STA UNICT     CLEAR UNIT #
      JMP TAP17 
* 
* 
TAPUP EQU * 
* 
*                   CHECK SWITCH 9 FOR ABORT
      LIA SW        LOAD SWITCH REGISTER
      AND SW09      MASK FOR BIT 9
      SZA,RSS       IS BIT 9 SET? 
      JMP TAP26     NO-CONTINUE 
      LDA TSTN      LOAD TEST NUMBER
      CPA .37       IS IT OP DESIGN?
      JMP .IRQ,I    YES-EXIT TO OP DESIGN 
      JMP .ZUSR,I   NO-EXIT TO TCP
TAP26 EQU * 
* 
      JSB UNIUP     CHECKS IF ANY UNITS ARE ON-LINE 
      LIA SW        LOAD SWITCH REGISTER
      AND .17       LOAD BITS 0-3 (TAPE UNITS)
      SZA           IS THERE A SWITCH REG.SELECTION 
      JMP TAPU1     YES- GOTO SWITCH REG CHECK
      LDA UNICT     LOAD UNIT COUNTER 
      JSB UNISL     GO SELECT TAPE UNIT 
      JMP TAPU2     OFF-LINE RETURN 
      JMP TAPU3     ON-LINE- EXIT 
TAPU2 EQU * 
      ISZ UNICT     GO TO NEXT UNIT 
      LDA UNICT 
      CPA .4        IS IT LOGICAL UNIT 4
      JMP TAPU4     YES. GO RESET IT
      JMP TAPUP     NO- GO TRY NEW SELECTION
TAPU4 EQU * 
      CLA 
      STA UNICT     SET TAPE UNIT =0
      JMP TAPUP     GO CHECK SWITCH REGISTER
* 
* 
*                   BEGIN SWITCH REG. CHECK FOR UNIT SELECTION
* 
TAPU1 EQU * 
      STA TMP1       SAVE SWITCH REG.SETINGS
      AND .1
      SZA,RSS       IS BIT 0 SET? (UNIT=0)
      JMP TAPU5     NO-TRY NEXT BIT 
      CLA 
      CPA UNICT     IS IT UNIT 0
      JMP TAPU9     YES 
TAPU5 LDA TMP1
      AND .2
      SZA,RSS       IS BIT 1 SET? (UNIT=1)
      JMP TAPU6     NO-TRY NEXT BIT 
      LDA .1        IS IT UNIT 1
      CPA UNICT 
      JMP TAPU9     YES 
TAPU6 LDA TMP1
      AND .4
      SZA,RSS       IS BIT 2 SET?  (UNIT=2) 
      JMP TAPU7     NO-TRY NEXT BIT 
      LDA .2
      CPA UNICT     IS IT UNIT 2
      JMP TAPU9     YES 
TAPU7 LDA TMP1
      AND .10 
      SZA,RSS       IS BIT 3 SET?  (UNIT=3) 
      JMP TAPU2     GO TRY NEXT UNIT
      LDA .3
      CPA UNICT     IS IT UNIT3?
      JMP TAPU9     YES 
      JMP TAPU2     NO-GO INCREMENT UNITCT
* 
*                   A MATCH HAS BEEN FOUND BETWEEN
*                   UNICT(UNIT #) AND SWITCH REGISTER 
* 
TAPU9 EQU *         A REG HAS TAPE UNIT # 
      JSB UNISL     GO SELECT UNIT
      JMP TAP12     <OFF-LINE RETURN> GO REPORT ERROR 
      JMP TAPU3     UNIT ON-LINE- EXIT
*                   ERROR- UNIT SELECTED BY SWITCH REG. 
*                   BUT UNIT IS OFF-LINE
TAP12 EQU * 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    SELECTED UNIT IS OFF-LINE 
      DEF E033
      JMP TAPUP 
TAPU3 EQU * 
      JSB CLEAR     CLEAR THE CONTROLLER
      LDA MSKRW 
      JSB BITCK     IS THE UNIT REWINDING?
      JMP TAP27     YES-GO CHECK TAPE BUSY BIT
      JSB EOTCK     CHECK FOR EOT 
      JMP TAP18     SET-GO REWIND THE UNIT
TAP21 EQU *         YES-EXIT
*                   END OF EXECUTIVE TAPE SELECTION 
      JMP EXE01,I 
* 
TAP18 EQU * 
      JSB MSGC,I    REPORT EOT DETECTED 
      DEF H037      POINTER TO MESSAGE
      JMP TAP22     JUMP OVER MESSAGE 
H037  EQU * 
      ASC 05,H037 EOT/
TAP22 EQU * 
      JSB WTGAP     WRITE A GAP 
      JSB CLEAR     TRY TO CLEAR EOT BIT
      JSB EOTCK     IS EOT BIT STILL ON?
      JMP TAP23     YES-CONTINUE
      LDB MSKET     SETUP EXPECTED STATUS 
      JSB ERMS,I    NO REPORT ERROR 
      DEF E056      POINTER TO MESSAGE
      JMP TAP23     JUMP OVER MESSAGE 
E056  EQU * 
      ASC 10,E056 EOT BIT CLEAR/
TAP23 EQU * 
      LDB REW 
      JSB OCMMD     GO REWIND THE UNIT
      JSB FLGWT     WAIT FOR COMMAND TO FINISH
      LDA MSKRT 
      JSB BITCK     IS TAPE BUSY AND REW BITS SET?
      JMP TAP27     YES-GO WAIT 
TAP28 EQU * 
      LDB MSKRT     SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT REWIND FAILURE 
      DEF E035
      JMP TAP15     GO SELECT THE NEXT UNIT 
TAP27 EQU * 
      LDA MSKRT     LOAD REWIND AND T BUSY BITS 
      JSB BITCK     IS IT SET?
      JMP TAP27     YES - WAIT TILL DONE
      JMP TAP21     NO - DONE SO CONTINUE 
* 
* 
*         TEST 00 
*         USE TST00 TO CHECK COMMAND AND DATA CHANNEL 
* 
TST.0 EQU * 
* 
      NOP 
      CCA 
      STA TST0F     SET TEST 0 FLAG 
      LDA ORGSC     LOAD COMMAND SC 
      STA SC        SETUP CURRENT SELECT CODE 
      STA USSC      ********************
      JSB .TST0,I   CALL
      JSB MSGC,I    REPORT DATA CH COMPLETE 
      DEF T.001     POINTER TO MESSAGE
      LDA ORGSC     LOAD COMMAND SC 
      INA           CONVERT IT TO DATA SC 
      STA SC        SETUP CURRENT SELECT CODE 
      STA USSC      ********************
      JSB .ZBIO,I   GO REPEAT BASIC I/O 
      JSB MSGC,I    REPORT CMND CH COMPLETE 
      DEF T.002     POINTER TO MESSAGE
      CLA 
      STA TST0F     CLEAR TEST 0 FLAG 
      JMP TST.0,I   EXIT
T.001 ASC 09,H025 FOR DATA CH/
T.002 ASC 09,H025 FOR CMND CH/
* 
*     END OF TEST 0 
* 
*         TEST 01   INITIAL CLEAR CONTROLLER + UNIT SELECTON
* 
TST01 NOP 
* 
* 
*         SUBTEST 1 
* 
      LDA .1
      STA SUBTS     SETUP SUBTEST # 
      JSB CLEAR     GO CLEAR CONTROLLER 
* 
*         SUBTEST 2 
* 
      LDA .2
      STA SUBTS     SETUP SUBTEST # 
* 
*                   CHECK UNIT 0
      CLA           LOAD UNIT# 0
      JSB UNICK     GO CHECK UNIT 
*                   END OF SELECT UNIT 0
* 
*                   CHECK UNIT=1
* 
      LDA .1        LOAD UNIT # 1 
      JSB UNICK     GO CHECK UNIT 
* 
*                   END OF SELECT UNIT=1
* 
* 
*                   CHECK UNIT =2 
* 
      LDA .2        LOAD UNIT # 
      JSB UNICK     GO CHECK UNIT 
* 
*                   END OF SELECT UNIT=2
* 
* 
*                   CHECK UNIT=3
* 
      LDA .3        LOAD UNIT # 
      JSB UNICK     GO CHECK UNIT 
* 
*                   END OF SELECT UNIT=3
      JMP T0101     GOTO NEXT SECTION 
* 
* 
*                   UNICK- OUTPUTS MESSAGE IF UNIT
*                   IS ON-LINE OR OFF-LINE. 
*CALL:              ALSO,CHECK UNIT ID IF 13183 
*     LDA <UNIT #>
*     JSB UNICK 
*         <NORMAL RETURN
UNICK NOP 
      STA AREG      SAVE A REGISTER 
      STA UNCK4     PUT UNIT # IN OUTPUT MESSAGE
      JSB MS,I      OUTPUT MESSAGE
      DEF UNCK5     RETURN
      DEF H154      POINTER TO MESSAGE
UNCK4 NOP           UNIT #
UNCK5 EQU * 
      LDA AREG      RESTORE A REGISTER
      JSB UNISL     IS UNIT ON-LINE?
      JMP UNCK1     NO-REPORT OFF-LINE
      JSB MSGC,I    YES-REPORT ON-LINE
      DEF H034
      JMP UNCK2 
H034  EQU * 
      ASC 09,H034 UNIT ON-LINE/ 
UNCK1 EQU * 
      JSB MSGC,I    REPORT OFF/LINE 
      DEF H0340 
      JMP UNCK2 
H0340 EQU * 
      ASC 10,H034 UNIT OFF-LINE/
UNCK2 EQU * 
      LDA FG183 
      SZA,RSS       IS IT A 13183 DIAG.?
      JMP UNCK7     NO-EXIT 
      LDA MSKDN 
      JSB BITCK     IS 1600 DENSITY BIT ON? 
      RSS           YES-SKIP OVER NEXT INSTRUCTION
      JMP UNCK8     NO-REPORT ERROR 
      JSB STATS     YES-GET STATUS
      AND MSKSL     GET UNIT SELECT ID
      ALF,RAR       ROTATE BIT 14+13 TO 1+0 
      XOR UNIT      IS IT THE CORRECT UNIT? 
      SZA,RSS 
      JMP UNCK3     YES- EXIT 
UNCK8 EQU * 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    NO- ERROR MESSAGE 
      DEF E031
      JMP UNCK3     EXIT
E031  EQU * 
      ASC 07,E031 ID ERROR/ 
UNCK7 EQU * 
      JSB STATS     GET STATUS
      LDB MSKSL     SETUP DENSITY AND ID MASK 
      ADB MSKDN 
      AND B         DOES 13181 HAVE AN ID?
      SZA 
      JMP UNCK8     YES-REPORT ERROR
UNCK3 EQU * 
      LDA STATU     LOAD A WITH STATUS
      JSB .FMT3,I   GO OUTPUT MESSAGE 
      DEF H155      POINTER TO MESSAGE
      JMP UNICK,I   EXIT
* 
* 
T0101 EQU * 
* 
*                   SUBTEST # 3 
      LDA .3
      STA SUBTS     SETUP SUB TEST #
*                   ROUTINE TO COMPARE UNIT(S) UP 
*                   TO SWITCH REG. SETTING(S).
*                   O,1,2,3 ARE USED FOR TAPE SELECTION 
* 
      LIA SW        LOAD SWITCH REG.
      AND SWALL     MASK OF BITS O,1,2,3
      SZA,RSS       ARE THEY ALL ZERO 
      JMP T0120     YES-EXIT
*                   NO-BEGIN SW REG. CHECK
* 
      LDB SW00      CK SW=0 
      JSB SWRC,I    IS IT SET?
      RSS           YES-SWITCH ON 
      JMP T0102     NO-SWITCH OFF GOTO NEXT UNIT
      CLA           SETUP FOR UNIT 0
      JSB UNISL     GO SELECT THE UNIT
      JSB SWON      GO REPORT ERROR 
T0102 EQU *         OK TO CONTINUE
* 
      LDB SW01      CK SW=1 
      JSB SWRC,I    IS IT SET?
      RSS           YES-SWITCH ON 
      JMP T0103     NO-SWITCH OFF GOTO NEXT UNIT
      LDA .1        SETUP FOR UNIT 1
      JSB UNISL     GO SELECT THE UNIT
      JSB SWON      GO REPORT ERROR 
T0103 EQU *         OK TO CONTINUE
* 
      LDB SW02      CK SW=2 
      JSB SWRC,I    IS IT SET?
      RSS           YES-SWITCH ON 
      JMP T0104     NO-SWITCH OFF GOTO NEXT UNIT
      LDA .2        SETUP FOR UNIT 2
      JSB UNISL     GO SELECT THE UNIT
      JSB SWON      GO REPORT ERROR 
T0104 EQU *         OK TO CONTINUE
* 
      LDB SW03      CK SW=3 
      JSB SWRC,I    IS IT SET?
      RSS           YES-SWITCH ON 
      JMP T0105     NO-SWITCH OFF GOTO NEXT UNIT
      LDA .3        SETUP FOR UNIT 3
      JSB UNISL     GO SELECT THE UNIT
      JSB SWON      GO REPORT ERROR 
T0105 EQU *         OK TO CONTINUE
* 
T0120 EQU * 
      JSB MSGC,I    OUTPUT A CR/LF
      DEF FMTCR     POINTER TO MESSAGE
      JMP TST01,I 
* 
SWON  NOP 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT UNIT OFF-LINE
      DEF E033       AND SWITCH ON
      JMP SWON,I    EXIT
E033  EQU * 
      ASC 11,E033 UNIT OFF-LINE-SW/ 
* 
* 
* 
*                   END OF TEST 01
* 
* 
*         TEST 02   BEGINING OF TAPE (BOT) CHECK
* 
TST02 NOP 
      JSB .EXEC,I   GO SELECT A TAPE UNIT 
      LDB SW06
      JSB SWRC,I    IS SWITCH REG. #6 SET?
      JMP TST02,I   YES-EXIT TEST 
* 
* 
*                   SUBTEST # 1 
* 
      LDA .1
      STA SUBTS     SETUP SUB TEST #
      JSB LPREW     SETUP TEST AT LP (BOT)
* 
*                   SUBTEST # 2 
* 
      LDA .2
      STA SUBTS     SETUP SUBTEST # 
      JSB WTGAP     WRITE A GAP 
      JSB CLEAR     CLEAR CONTROLLER
      LDA MSKLP     GET LP MASK 
      JSB BITCK     CHECK IF SET
      JMP T0201     RETURN IF BIT SET 
* 
*                   SUBTEST #3
* 
      LDA .3
      STA SUBTS     SETUP SUBTEST # 
      JSB REWND     REWIND
* 
*                   SUBTEST # 4 
* 
      LDA .4
      STA SUBTS     SETUP SUBTEST # 
      LDB REW       RETURN IF BIT RESET 
      JSB OCMMD     OUTPUT REWIND 
      LDA RWTIM     LOAD MIXIMUM REWIND TIME
      JSB TMRR,I
T0205 EQU * 
      SFC CMMD      IS FLAG SET?
T0204 EQU * 
      JMP TST02,I   YES-EXIT
T0202 EQU *         NO-REPORT ERROR 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I
      DEF E040
      JMP T0204 
E040  EQU * 
      ASC 09,E040 REW TOO LONG/ 
T0201 EQU * 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT GAP FAILED 
      DEF E036      ERROR MESSAGE ADDRESS 
      JMP T0204     EXIT
E036  EQU * 
      ASC 08,E036 GAP FAILED/ 
* 
*                   END OF TEST 02
* 
*         TEST 03   COMMAND REJECT TEST 
* 
TST03 NOP 
      JSB .EXEC,I   GO SELECT A TAPE UNIT 
      LDB SW06
      JSB SWRC,I    IS SWITCH REG. #6 SET?
      JMP TST03,I   YES - EXIT TEST 
* 
* 
*                   SUBTEST #1
* 
      LDA .1
      STA SUBTS     SETUP SUBTEST # 
      JSB LPREW     SET UP TEST AT LP 
* 
*                   SUBTEST #2
* 
      LDA .2
      STA SUBTS     SETUP SUBTEST # 
      LDA BSR 
      JSB AOTA      OUTPUT THE COMMAND
      LDA MSKCR     CHECK FOR COMMAND REJECT
      JSB BITCK 
      JMP T0301     CR BIT SET
      LDB MSKCR     SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT ERROR
      DEF E041
T0301 EQU * 
* 
*                   SUBTEST # 3 
* 
      LDA .3
      STA SUBTS     SETUP SUBTEST#
      LDA BSF 
      JSB AOTA
      LDA MSKCR 
      JSB BITCK 
      JMP T0302     EXIT
      LDB MSKCR     SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT ERROR
      DEF E041
T0302 EQU * 
      JMP TST03,I   EXIT
E041  EQU * 
      ASC 12,E041 CMND REJECT ERROR/
* 
*                   END OF TEST 03
* 
* 
*         TEST 04   WRITE EXECUTION TIME TEST 
* 
TST04 NOP 
      JSB .EXEC,I   GO SELECT A TAPE UNIT 
*                   BEGIN WRITE START UP TIME 
* 
*                   SUBTEST # 1 
* 
      LDA .1
      STA SUBTS     SETUP SUBTEST # 
      JSB WTGAP     MOVE TAPE OFF LOAD POINT
      LDB WCC 
      JSB OCMMD     OUTPUT A WRITE COMMAND
T0404 STC DATA,C
      LDA WRTIM     LOAD WRITE TIME 
      JSB TMRR,I    WAIT DELAY TIME 
T0406 SFC DATA      IS DATA FLAG CLEAR? 
      JMP T0409     NO-REPORT ERROR 
T0407 EQU *         YES-OK TO EXIT
* 
*                   SUBTEST #2
* 
* 
      LDA .2
      STA SUBTS     SETUP SUBTEST # 
      LDA WRTIM     LOAD WRITE TIME 
      ARS,ARS       COMPUTE TOLERANCE(/BY 4)
      JSB TMRR,I    WAIT DELAY TIME 
T0408 SFS DATA      IS DATA FLAG SET? 
      JMP T0409     NO-REPORT ERROR 
T0410 EQU * 
      JSB CLEAR     CLEAR CONTROLLER
      JSB CLRCH     CLEAR DATA CHANNEL
      JMP TST04,I   EXIT
T0409 EQU * 
      JSB CLEAR     CLEAR CONTROLLER
      JSB ERMS,I
      DEF E047
      JMP T0410 
E047  EQU * 
      ASC 11,E047 WRITE START TIME/ 
* 
*                   END OF TEST 04
* 
* 
*         TEST 05   GAP AND GAP-FILE MARK TIME AND MOTION CHECK 
* 
TST05 NOP 
      JSB .EXEC,I   GO SELECT A TAPE UNIT 
* 
*                   SUBTEST #1
* 
      LDA .1
      STA SUBTS     SETUP SUBTEST # 
*                   SETUP GAP TOLERANCE=1/4*(GAP TIME)
      LDA GAPTM     SET GAP TIME
      ARS,ARS       DIVIDE BY 4 
      STA DELTA     STORE TOLERANCE 
*                   BEGIN TIME CHECK
      JSB WTGAP     MOVE TAPE OFF BOT 
* 
*                   SUBTEST #2
* 
      LDA .2        SETUP SUBTEST # 
      STA SUBTS 
      JSB FPCK      CHECK FOR NO WRITE RING 
      LDB GAP       LOAD GAP COMMAND
      JSB OCMMD     OUTPUT THE COMMAND
      LDA GAPTM     LOAD GAP TIME (MIN) 
      JSB TMRR,I    GO WAIT 
      LDA MSKIB     MASK FOR UNIT BUSY
      JSB BITCK     IS IT SET?
      JMP T0501     YES-OK TO CONTINUE
      JMP T0502     NO-REPORT ERROR 
T0501 EQU * 
* 
*                   SUBTEST #3
* 
      LDA .3
      STA SUBTS 
      LDA DELTA     CHECK MAX TIME
      JSB TMRR,I    GO WAIT 
      LDA MSKIB     MASK FOR UNIT BUSY
      JSB BITCK 
      JMP T0503     YES-REPORT ERROR
  