      JMP WTGP1     YES-REPORT ERROR
      JSB LPCK      CHECK FOR LP CLEAR
      JMP WTGAP,I   EXIT
WTGP1 EQU * 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT ERROR
      DEF E036      -GAP FAILED 
      JMP WTGAP,I   EXIT
* 
* 
* 
*     ROUTINE  TO BACK SPACE FILE 
* 
BSFWF NOP 
      LDB BSF       BACK SPACE FILE 
      JSB OCMMD     OUTPUT COMMAND
      JSB FLGWT     WAIT FOR OPERATION TO FINISH
      JSB EFCK      CHECK FOR EF MARK 
      JMP BSFWF,I   EXIT
* 
*     ROUTINE  TO FOREWARD SPACE FILE 
* 
FSFWF NOP 
      LDB FSF       LOAD FORWARD SPACE FILE 
      JSB OCMMD     OUTPUT COMMAND
      JSB FLGWT     WAIT FOR OPERATION TO FINISH
      JSB LPCK      CHECK FOR LP CLEAR
      JSB EFCK      CHECK FOR EF MARK 
      JMP FSFWF,I   EXIT
* 
* 
*     WRITE FILE MARK ROUTINE 
* 
WRTFM NOP 
      JSB FPCK      CHECK FOR NO WRITE RING 
      LDB WFM       LOAD WRITE FILE MARK
      JSB OCMMD     OUTPUT COMMAND
      JSB FLGWT     WAIT FOR OPERATION TO FINISH
      JSB EFCK      CHECK EF SET
      JSB LPCK      CHECK FOR LP CLEAR
      JMP WRTFM,I   EXIT
*     CHECK FILE MARK AT END OF READ
*     SEE TEST 34 7970/181 P33
* 
*     ROUTINE TO CHECK FOR EOT
*     CALL: 
*     JSB EOTCK 
*     JMP <EOT BIT SET> 
*         <NORMAL RETURN> (EOT BIT NOT SET) 
*         . 
*         . 
* 
EOTCK NOP 
      LDA MSKET     LOAD EOT MASK 
      JSB BITCK     IS IT SET?
      JMP EOT01     YES-GO CHECK LP NOT SET 
      ISZ EOTCK     NO-ADJUST RETURN
      JMP EOTCK,I   EXIT
EOT01 EQU * 
      JSB LPCK      CHECK LP NOT SET
      JMP EOTCK,I   EXIT
* 
* 
*     ROUTINE TO CHECK EOT AND REWIND IF EOT BIT IS SET 
*     CALL: 
*     JSB EOTRW 
* 
EOTRW NOP 
      JSB EOTCK     IS EOT BIT SET? 
      JSB LPREW     YES-REWIND UNIT 
      JMP EOTRW,I   EXIT
* 
* 
*                   ROUTINE TO
*                     SETUP COMPARISON BUFFER 
FLUXX NOP 
      LDA .1        SINGLE PATTERN SEQUENCE 
      LDB HLFRQ     PATTERN S.A.(1600 FLUX REVERSALS) 
      JSB FILL,I
      DEF FLUX1 
      DEC 100       BUFFER LENGTH 
      DEF FLUX2     ERROR RETURN
FLUX1 EQU * 
FLUX2 EQU *         ERROR RETURN
      JMP FLUXX,I   EXIT
HLFRQ DEF HALFQ 
HALFQ OCT 125125
* 
*    BUFFER COMPARE ROUTINE    *
* 
COMPR NOP 
*     NEED A ROUTINE TO GIVE BAD AND GOOD WORD AND WORD COUNT 
      LDA BUFLG     SET THE COMPARE WORD COUNTER
      LDB INBFL     GET INPUT BUFFER LENGTH 
      CPA B         ARE THEY EQUAL? 
      JMP COMP6     YES-CONTINUE
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    NO-REPORT ERROR 
      DEF E050
      JMP COMP6 
E050  EQU * 
      ASC 11,E050 REC LENGTH ERROR/ 
COMP6 EQU * 
      LDA BUFLG     LOAD BUFFER LENGTH
      CMA,INA       MAKE IT NEGATIVE
      STA COUNT     STORE IT IN COUNT 
      LDA FWAM      SET THE BUFFER POINTER
      STA TMP1       -FOR THE OUT PUT BUFFER
      LDB INBUF     SET THE POINTER FOR THE 
      STB TMP2      -INPUT BUFFER 
ENT05 LDA TMP1,I     GET THE OUTPUT WORD AND
      CPA TMP2,I    -COMPARE IT TO INPUT
      JMP ENT04 
      LDB BUFLG     GET RECORD LENGTH 
      ADB COUNT     GET WORD COUNT
      INB           GET CORRECT WORD COUNT
*     NOTE NUMBER WILL PRINT OUT IN OCTAL 
      RBL           MULTIPLY BY 2 FOR BYTE COUNT
      STB COMP3 
      JSB MS,I      REPORT BYTE IN ERROR
      DEF COMP7     RETURN
      DEF H101      POINTER TO MESSAGE
COMP3 NOP           BYTE IN ERROR 
H101  EQU * 
      ASC 12,H101 TAPE BYTE COUNT #/
COMP7 EQU * 
* 
      LDB TMP2,I    GET BAD WORD
      STB COMP2 
      LDA TMP1,I     LOAD GOOD WORD 
      STA COMP1 
      JSB MS,I      ERROR MESSAGE 
      DEF COMP5     RETURN
      DEF H067      POINTER TO MESSAGE
COMP2 NOP           BAD WORD
COMP1 NOP           GOOD WORD 
H067  EQU * 
      ASC 19,H067 DATA WORD IS= # AND SHOULD BE= #/ 
COMP5 EQU * 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT DATA TRANSFER ERROR
      DEF E062
      JSB ERRCK     CHECK FOR READ AND WRITE ERRORS 
COMP4 EQU * 
      JMP COMPR,I   EXIT
ENT04 ISZ TMP1       ADVANCE THE BUFFER POINTERS
      ISZ TMP2
      ISZ COUNT     INCREMENT THE WORD COUNTER
      JMP ENT05     COMPARE THE NEXT LOCATIONS
      JMP COMP4     EXIT
E062  EQU * 
      ASC 08,E062 DATA ERROR/ 
* 
*    RANDOM NUMBER GENERATOR    * 
RAND  NOP 
      LDA BASE      LOAD THE BASE 
      ADA PRIME     SUBTRACT THE PRIME
      SSA           SKIP IF IT'S STILL POSITIVE 
      LDA BASE      THE BASE ISN'T BIG ENOUGH 
      CLE,ELA       DOUBLE THE BASE OR REMAINDER
      STA BASE      -FOR THE NEXT TRY 
      JMP RAND,I
 SPC 1
PRIME DEC -31069
BASE  ABS 034512B 
      SKP 
* 
*         ROUTINE TO FILL OUTPUT BUFFER WITH BIT PATTERN
* 
*         CALLING SEQUENCE    (NOTE VARIABLE BUFFER LENGTH) 
*         JSB FILL,I
*  "A" CONTAINS THE NUMBER OF PATTERNS IN THE SEQUENCE
*  "B" CONTAINS THE S.A. OF THE PATTERN SEQUENCE
*         DEF <RETN>  RETURN TO USER
*         DEF <BUFLG> BUFFER LENGTH 
*         DEF <ERROR> ERROR RETURN
*          .
*          .
*     RTN EQU       * 
*         LIMITATIONS:
*         NOTE BUFFER STARTING ADDRESS = FWA
*         MAXIMUM LENGTH OF BUFFER=1/2(LWA-FWA) 
* 
.FILL NOP           BEGIN 
      STB .PATT     STORE ADDRESS OF BIT PATTERN
      STB TMP1
      CMA,INA       GET NEG OF BIT PATTERN REPEAT # 
      STA AREG      SAVE THE NUMBER OF PATTERNS 
      STA CNT1      SET THE PATTERN SEQUENCE COUNT
      LDA .FILL 
      INA           SETUP LOCATION OF BUFFER LENGTH 
      LDB A,I       GET BUFFER LENGTH 
      STB TMP2      STORE IT
      INA 
      LDB A,I       GET ERROR RETURN
      STB ERRRT     STORE IT
      LDA .FILL,I 
      STA .FILL     ADJUST USER RETURN
      LDB TMP2      LOAD BUFFER LENGTH
      SSB           IS IT POSITIVE? 
      JMP FILL2     NO-REPORT BUFFER TOO LONG 
      LDA BFMAX     GET MAX BUFFER SIZE 
      INA           ADD ONE 
      CMA,INA       GET NEG OF LWA
      ADB A         ADD A TO B REG. 
      SSB,RSS       IS IT POSITIVE ?
      JMP FILL2     YES-ERROR 
*                   NO  OK CONTINUE 
      LDA TMP2      GET BUFFER
      STA BUFLG     AND SETUP BUFFER LENGTH 
      CMA,INA       MAKE IT NEGATIVE
      STA COUNT     SETUP COUNTER 
      LDA FWAM      GET BUFFER STARTING LOCATION
MORE  EQU * 
      LDB TMP1,I
      STB A,I       START FILLING 
      ISZ TMP1       INCREMENT BIT PATTERN LOCATION 
      INA           INCREMENT BUFFER ADDRESS
      ISZ CNT1      INCREMENT PATTERN COUNTER 
      JMP ENT00 
      LDB AREG      GET NUMBER OF PATTERNS IN SEQUENCE
      STB CNT1      RESET # OF PATTERN IN SEQUENCE
      LDB .PATT     RELOAD BIT PATTERN ADDRESS
      STB TMP1       SETUP TEMPORARY ADDRESS
ENT00 ISZ COUNT     IS BUFFER FULL? 
      JMP MORE      NO- GO GET NEXT PATTERN 
      JMP .FILL,I   YES-RETURN TO USER
.PATT NOP           POINTER TO BIT PATTERN
CNT1  NOP           BIT PATTERN SEQUENCE COUNTER
ERRRT NOP           ERROR RETURN
FILL2 EQU * 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT ERROR
      DEF E061
      JMP ERRRT,I   ERROR RETURN
E061  EQU * 
      ASC 11,E061 BUFFER TOO LONG/
* 
* 
*             **  DATA BIT PATTERNS  ** 
 SPC 1
*     SINGLE ROTATING BIT PATTERN 
TSRB  DEF *+1 
      OCT 002001
      OCT 010000
      OCT 020100
      OCT 100002
      OCT 004004
      OCT 000420
      OCT 000040
      OCT 040200
      OCT 001010
*     TRACK SAWTOOTH PATTERN
TSAW  DEF *+1 
      OCT 177773
      OCT 175352
      OCT 145212
      OCT 005010
      OCT 000000
*     CHANNEL SAWTOOTH PATTERN
CSAW  DEF *+1 
      OCT 177577
      OCT 037437
      OCT 007407
      OCT 001401
      OCT 000377
*     POINTER TO ALL 1'S
ALL1  DEF *+1 
      OCT 177777
*     POINTER TO ALL 2'S
ALL2  DEF *+1 
      OCT 022222
* 
*     UNISL- ROUTINE TO SELECT TAPE UNIT
* 
* CALL: 
*     A REG. UNIT # 
*     JSB UNISL 
*         <UNIT OFF-LINE RETURN>
*         <NORMAL RETURN> 
* IE: 
*     JMP OFF 
*      .
*      .
*      .
*OFF  EQU * 
* 
UNISL NOP 
      STA AREG      SAVE A REG.=UNIT #
      LDB AREG
      ADB ATSEL     GET ADDRESS OF SELECT COMMAND 
      LDA B,I       GET COMMAND 
      JSB AOTA      OUTPUT COMMAND
      JSB STATS     GET STATUS
      AND MSKCR     IS COMMAND REJECT BIT SET?
      SZA,RSS 
      JMP UNI03     NO-CONTINUE 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    YES-REPORT ERROR
      DEF E027
      JMP UNI04 
UNI03 EQU * 
      LDA RECNO     GET THE CURRENT RECORD #
      LDB .RECU     LOAD POINTER TO RECORD TABLE
      ADB UNIT      COMPUTE POSITION IN TABLE 
      STA B,I       SAVE RECORD COUNT 
      LDA AREG      GET CURRENT UNIT #
      STA UNIT      SAVE IT 
      LDB .RECU     GET POINTER TO RECORD TABLE 
      ADB UNIT      COMPUTE TABLE ADDRESS 
      LDA B,I       GET NEW RECORD COUNT
      STA RECNO     SAVE IT FOR NEXT TEST 
UNI04 EQU * 
      JSB STATS     GET STATUS
      AND MSKOL     CHECK OFFLINE BIT 
      SZA           IS IT ZERO? 
      JMP UNI02     NO- EXIT OFFLINE
      ISZ UNISL     YES-ADJUST RETURN FOR ON-LINE 
UNI02 EQU * 
      JMP UNISL,I   EXIT ROUTINE
* 
* 
*     RECORD NUMBER TABLE-CONTAINS CURRENT RECORD BY UNIT 
* 
.RECU DEF *+1       POINTER TO TABLE
RECU0 NOP           RECORD COUNT FOR UNIT 0 
RECU1 NOP           RECORD COUNT FOR UNIT 1 
RECU2 NOP           RECORD COUNT FOR UNIT 2 
RECU3 NOP           RECORD COUNT FOR UNIT 3 
* 
* 
* 
*     SUBROUTINE VARBF - FILLS OUTPUT WITH RANDOM DATA
*                      - BUFFER LENGTH IS ALSO RANDOM 
*CALL:
*     JSB VARBF 
*         <NORMAL RETURN> 
* 
VARBF NOP 
      JSB RANLG     GET RANDOM BUFFER LENGTH
      JSB RADBF     FILL BUFFER WITH RANDOM DATA
      JMP VARBF,I   EXIT
* 
* 
*     SUBROUTINE ERRCK - CHECKS READ AND WRITE ERROR FLAGS
*CALL:
*     JSB ERRCK 
*         <NORMAL RETURN> 
* 
ERRCK NOP 
      LDA RDERR     CHECK READ AND WRITE FLAGS
      ADA WRERR 
      SZA,RSS       IS IT ZERO? 
      JMP ERRCK,I   YES-EXIT
      LDA RDERR     CHECK READ ERROR FLAG 
      SZA,RSS       IS IT NON ZERO? 
      JMP ERK05     NO-GO CHECK WRITE ERROR FLAG
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT READ ERROR 
      DEF E066      POINTER TO MESSAGE
ERK05 EQU * 
      LDA WRERR     CHECK WRITE ERROR FLAG
      SZA,RSS       IS IT NON ZERO? 
      JMP ERK11     NO-CONTINUE 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    YES-REPORT WRITE ERROR
      DEF E065      POINTER TO MESSAGE
ERK11 EQU * 
      JMP ERRCK,I   EXIT
* 
E065  EQU * 
      ASC 09,E065 WRITE ERROR/
E066  EQU * 
      ASC 08,E066 READ ERROR/ 
* 
* 
* 
*     SUBROUTINE RADBF-FILLS BUFFER WITH RANDOM  #S 
*                     -BUFFER LENGTH IS VARIBLE 
*                     -LENGTH=BUFLG 
*CALL:
*     JSB RADBF 
*         <NORMAL RETURN> 
* 
RADBF NOP 
      LDA FWAM      SETUP START OF BUFFR
      STA TMP1
      LDA BUFLG     GET BUFFER LENGTH 
      CMA,INA       MAKE IT NEGATIVE
      STA CNTR      SETUP LOOP COUNTER
RADB1 EQU * 
      JSB RAND      GET RANDOM NUMBER 
      STA TMP1,I
      ISZ TMP1       INCREMENT STORAGE ADDRESS
      ISZ CNTR      INCREMENT COUNTER 
      JMP RADB1     LOOP IF COUNTER NOT = 0 
      JMP RADBF,I   EXIT
* 
* 
*     SUBROUTINE RANLG- SETUP TO MAKE BUFLG  VARIABLE 
* 
*CALL:
*     JSB RANLG 
*         <NORMAL RETURN> 
* 
RANLG NOP 
RANG1 EQU * 
      JSB RAND      GET RANDOM LENGTH 
      SSA           IS IT POSITIVE? 
      CMA           NO-MAKE IT POSITIVE 
      STA BUFLG     SETUP BUFFER LENGTH 
      CMA,INA       MAKE A NEGATIVE 
      LDB BFMAX     GET MAX BUFFER
      ADB A         SUBTRACT
      SSB           IS IT POSITIVE? 
      JMP RANG1     NO-GO GET A NEW RANDOM #
      JMP RANLG,I   EXIT
* 
* 
*     SUBROUTINE DATFG- REPORTS ERROR WHEN CONTROLLER LOSES 
*                     - DATA FLAG.
*CALL:                - NOTE ALSO CLEARS CONTROLLER 
*     JSB DATFG 
*         <NORMAL RETURN> 
* 
DATFG NOP 
      JSB CLEAR     CLEARS CONTROLLER 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I
      DEF E144
      JMP DATF3 
E144  EQU * 
      ASC 10,E144 LOST DATA FLAG/ 
DATF3 EQU * 
      JMP DATFG,I   EXIT
* 
* 
*     SUBROUTINE BITCK - USES MASK IN A REGISTER
*CALL:                 - TO CHECK BIT/OR BITS IN STATUS 
*     LDA MASK
*     JSB BITCK 
*     JMP <RETURN IF BIT SET> 
*         <RETURN IF BIT RESET> 
* 
BITCK NOP 
      STA MASK      SAVE A REG. MASK
      JSB STATS     GET STATUS
      AND MASK      CHECK BIT PATTERN 
      CPA MASK      ARE THE BITS SET? 
      JMP BTCK1     YES-GO TO BIT SET RETURN
      ISZ BITCK     NO- ADJUST RETURN ADDRESS 
BTCK1 EQU * 
      JMP BITCK,I   EXIT
* 
* 
* 
*     KCORE ROUTINE- DETERMINES MAX BUFFER LENGTH 
* 
KCORE NOP 
      LDA LWAM      GET LAST WORD AVAILABLE 
      ADA .M1 
      LDB FWAM      GET FIRST WORD AVAILABLE
      CMB,INB       NEG NEGATIVE IN B REG 
      ADA B         ADD THEM
      AND MSK77 
      ARS           DIVIDE A BY 2 
      STA BFMAX     STORE MAX BUFFER SIZE 
      ADA FWAM      ADD ADDRESS OF FWAM 
      STA DBDI      SAVE INPUT STARTING ADDRESS 
      JMP KCORE,I   RETURN
* 
* 
*     DMAC1         ROUTINE TO CHECK COMPUTER FOR DMA 
*                   -DMAFG=0  NO DMA
*                   -DMAFG=1  1 CHANNEL DMA 
*                   -DMAFG=2  2 CHANNEL DMA 
DMACK NOP 
      CLA 
      STA DMAFG     CLEAR DMA FLAG
      LDA CPTO      LOAD COMPUTER TYPE AND OPTIONS
      AND .200      MASK OUT DMA1 ONLY
      SZA,RSS       IS IT ZERO? 
      JMP DMA11     YES-EXIT
      LDA .1        NO
      STA DMAFG     SET DMA FLAG
DMA11 EQU * 
* 
*     DMAC2         ROUTINE TO CHECK COMPUTER FOR 
*                   -DMA 2 CHANNELS 
* 
      LDA CPTO      LOAD COMPUTER TYPE AND OPTIONS
      AND .4        MASK OUT 2 CHANNEL DMA
      SZA,RSS       IS IT ZERO? 
      JMP DMA21     YES-EXIT
      LDA .2        NO
      STA DMAFG     SETUP DMA FLAG
DMA21 EQU * 
      JMP DMACK,I   RETURN
* 
* 
*         CHECK SWITCH REGISTER ROUTINE 
* 
*     CALL
*     LDB <SWITCH REG. MASK>
*     JSB SWRC,I
*         <RETURN IF BIT IS SET>       P+1
*         <RETURN IF BIT IS NOT SET>   P+2
* 
.SWRG NOP 
      LDA SKPSW     LOAD SKIP SWITCH REG FLAG 
      SZA           IS IT ZERO? 
      JMP .SWR1     NO-FLAG SET-SKIP OVER 
      LIA SW        LOAD SWITCH REGISTER
      AND B         MASK OUT UNWANTED BITS
      SZA,RSS       ANY BITS SET? 
.SWR1 EQU * 
      ISZ .SWRG     NO RETURN P+2 
      JMP .SWRG,I   YES- EXIT 
* 
* 
* 
*                   LPCK- CHECKS LP BIT IN STATUS 
*                   WORD IS NOT SET AFTER A FORWORD 
*CALL:              MOTION COMMAND HAS BEEN EXECUTED
*     JSB LPCK
*         <NORMAL RETURN> 
* 
LPCK  NOP 
      LDA MSKLP 
      JSB BITCK     IS UNIT STILL AT LP?
      JMP LPCK1     YES-REPORT ERROR
LPCK2 JMP LPCK,I    NO-EXIT 
LPCK1 EQU * 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT ERROR
      DEF E103
      JMP LPCK2 
E103  EQU * 
      ASC 06,E103 LP SET/ 
* 
* 
*                   IBTB-CHECKS THAT IB BIT IS SET. 
*CALL:
*     JSB IBTB
*         <NORMAL RETURN> 
* 
IBTB  NOP 
      LDA MSKIB     LOAD INTERFACE BUSY BIT 
      JSB BITCK     IS THE BIT SET? 
      JMP IBTB1     YES-EXIT
      LDB MSKIB     NO-REPORT ERROR 
      JSB ERMS,I    REPORT ERROR
      DEF E164
* 
IBTB1 EQU * 
      JMP IBTB,I    EXIT
* 
* 
*     FPCK-REPORTS ERROR IS FILE PROTECT BIT IS 
*          SET (NO WRITE RING). 
* 
*CALL:
*     JSB FPCK
*     <NORMAL RETURN> 
* 
FPCK  NOP 
      LDA MSKFP 
      JSB BITCK     IS FILE PROTECT BIT SET?
      JMP FPCK1     YES-REPORT NO WRITE RING
FPCK2 EQU * 
      JMP FPCK,I    EXIT
FPCK1 EQU * 
      CLB           SETUP EXPECTED STATUS 
      JSB ERMS,I    REPORT NO WRITE RING
      DEF E042
      JMP FPCK2     EXIT
* 
* 
*                   WRITES A RECORD USING A SINGLE DATA PATTERN 
*CALL:
*     LDA <RECORD LENGTH> 
*     LDB <PATTERN> 
*     JSB WT00
*         <NORMAL RETURN> 
* 
WT00  NOP 
      STA WT002 
      LDA .1        SINGLE PATTERN SEQUENCE 
      JSB FILL,I    GO FILL OUTPUT BUFFER 
      DEF WT001     NORMAL RETURN 
WT002 NOP           BUFFER LENGTH 
      DEF WT001     ERROR RETURN
WT001 EQU * 
      JSB SIOW,I    WRITE A RECORD
      JSB BSRWF     BACKSPACE THE RECORD
      LDA WT00      RETURN ADDRESS
      CPA .T15      IS CALL FROM ST 5/6 IN TEST15?
      RSS           YES 
      JMP WT003     NO - SKIP 31 MS DELAY 
      LDA .37       MAX DELAY FOR BS REC TO STOP
      JSB TMRR,I
WT003 JSB SIOR,I    READ THE RECORD 
      JSB COMPR     IS IT CORRECT-
      JMP WT00,I    EXIT SUBROUTINE 
.T15  DEF T15RT     RET ADD IN TEST15(DEC)
* 
HDMS1 EQU * 
      ASC 09,7970-13181 DIAG./
ENDBP EQU *         END OF BASE PAGE
* 
* 
* 
* 
* 
      SKP 
      ORG PAG06 
*        SKIP TO NEXT PAGE OF MEMORY ******************************** 
* 
* 
* 
HDMS2 EQU * 
      ASC 09,7970-13183 DIAG./
* 
IOID  EQU * 
      DEF STA1      COMMAND CHANNEL  STATS
      DEF OCMD1     COMMAND CHANNEL  OCMMD
      DEF OCMD2     COMMAND CHANNEL  OCMMD
      DEF CLEA1     COMMAND CHANNEL  CLEAR
      DEF FLGW1     COMMAND CHANNEL  FLGWT
      DEF .RD06     COMMAND CHANNEL  .READ
      DEF .WR06     COMMAND CHANNEL  .WRIT
      DEF CMD       COMMAND CHANNEL 
      DEF RWSL1     COMMAND CHANNEL  RWSLO-T49
      DEF CLRC2     COMMAND CHANNEL  CLRCH
      DEF AOTA1     COMMAND CHANNEL  AOTA 
      DEF LON14     COMMAND CHANNEL  LONGW
      DEF LOR15     COMMAND CHANNEL  LONGR
      DEF FGCK1     COMMAND CHANNEL  CH CHECK 
      DEF OTCD5     COMMAND CHANNEL  OUTCD
      DEF T0205     COMMAND CHANNEL  TEST 02
      DEF T1002     COMMAND CHANNEL  TEST 10
      DEF WTDM4     COMMAND CHANNEL  WTDMA
      DEC -1
IOID2 EQU * 
      DEF DTA       DATA CHANNEL
      DEF .RD01     DATA CHANNEL  .READ 
      DEF .RD02     DATA CHANNEL  .READ 
      DEF .RD03     DATA CHANNEL  .READ 
      DEF .RD04     DATA CHANNEL  .READ 
      DEF .RD14     DATA CHANNEL  .READ 
      DEF .WR17     DATA CHANNEL  .WRIT 
      DEF .WR01     DATA CHANNEL  .WRIT 
      DEF .WR02     DATA CHANNEL  .WRIT 
      DEF .WR04     DATA CHANNEL  .WRIT 
      DEF .WR05     DATA CHANNEL  .WRIT 
      DEF RGP01     DATA CHANNEL  RDGAP 
      DEF RGP02     DATA CHANNEL  RDGAP 
      DEF RGP03     DATA CHANNEL  RDGAP 
      DEF RGP06     DATA CHANNEL  RDGAP 
      DEF RGP07     DATA CHANNEL  RDGAP 
      DEF DMP09     DATA CHANNEL  DMAUP 
      DEF CWDMA     DATA CHANNEL  DMA CONTROL 
      DEF T0406     DATA CHANNEL  TEST 04 
      DEF T0408     DATA CHANNEL  TEST 04 
      DEF CLRC1     DATA CHANNEL  CLRCH 
      DEF T0404     DATA CHANNEL  TEST 04 
      DEF T0603     DATA CHANNEL  TEST 6
      DEF T0604     DATA CHANNEL  TEST 6
      DEF T1005     DATA CHANNEL  TEST 10 
      DEF T1007     DATA CHANNEL  TEST 10 
      DEF T1009     DATA CHANNEL  TEST 10 
      DEF T1104     DATA CHANNEL  TEST 11 
      DEF LONG1     DATA CHANNEL  LONGW 
      DEF LONG3     DATA CHANNEL  LONGW 
      DEF LONG4     DATA CHANNEL  LONGW 
      DEF LON12     DATA CHANNEL  LONGW 
      DEF LOR01     DATA CHANNEL  LONGR 
      DEF LOR03     DATA CHANNEL  LONGR 
      DEF LOR04     DATA CHANNEL  LONGR 
      DEF LOR14     DATA CHANNEL  LONGR 
      DEF CRC1      DATA CHANNEL  CRCC
      DEF FGCK3     DATA CHANNEL  CH CHECK
      DEF SIO27     DATA CHANNEL  SIOCR 
      DEF SIO29     DATA CHANNEL  SIOCR 
      DEF T1503     DATA CHANNEL  TEST 15 
      DEF T1508     DATA CHANNEL  TEST 15 
      DEC -1
TSTD  EQU * 
      DEF TST.0     BASIC I/O ( DATA + COMMAND CH)
      DEF TST01     INITIAL CLEAR CONTROLLER + UNIT 
      DEF TST02     BEGINING OF TAPE (BOT) CHECK
      DEF TST03     COMMAND REJECT TEST 
      DEF TST04     REWIND AND WRITE COMMAND EXECUTE
      DEF TST05     GAP COMMAND TEST
      DEF TST06     FILE MARK COMMAND TEST
      DEF TST07     MULTI-FILE MARK TEST
      DEF TST08     INITIAL WRITE-READ TEST 
      DEF TST09     125125   WRITE-READ TEST
      DEF TST10     FORCE DATA AND TIMING ERROR STAT
      DEF TST11     RECORD SPACING TEST 
      DEF TST12     FILE SPACING TEST 
      DEF TST13     CLEAR TIME CHECK DURING MOTION
      DEF TST14     INTERRCORD GAP TEST 
  