*DECK,T6X 
*** T6X  - 66X TAPE TEST -
*** OVERVIEW
**
* 
*   AUTHOR   - MAINTENANCE SOFTWARE ENGINEERING 
*              ENGINEERING SERVICES 
* 
*   DATE     - 77/06/10 
* 
*   OVERVIEW - T6X IS A REPLACEMENT FOR T6X ON THE CML
*              TAPE.
* 
*            T6X TESTS THE TAPE ASSIGNED VIA THE *ASSIGN* 
*            DIRECTIVE. 
* 
*            PARAMETERS SELECTED VIA THE *PARAM* DIRECTIVE
*            ARE USED TO DETERMINE THE TAPE SPEED, DENSITY, 
*            ASSEMBLY/DISASSEMBLY MODE, TRANSLATION MODE, 
*            EVEN/ODD PARTY, AND RECORD LENGTH. THESE PARAM-
*            ETERS MUST BE SPECIFIED.  OTHER OPTIONAL PARAM-
*            ETERS INCLUDE THE FOLLOWING - BYPASS RECORD
*            NUMBERING, COMPARE DATA,  MAINTENANCE MODE, BY-
*            PASS WAIT NOT BUSY, POLYNOMIAL CONTROLLER, FILE
*            AND RECORD COUNTS,ETC. 
* 
*            MODULE CALL -  (EXAMPLE) 
* 
*              - ALL DIAGNOSTIC MODULES (01-20) 
* 
*                      RUN T6X
* 
*              - SELECTED MODULES 
* 
*                      RUN T6X(01,03,06)
* 
* 
*            MESSAGES -   (EXAMPLE) 
* 
*              - MODULE CURRENTLY RUNNING 
* 
*                      T6X06 - BACKSPACE -
* 
*              - MODULE ERRORS
* 
*                      --T6X06  ERROR(S) IN MODULE  0003
* 
* 
*            CONTROLWARE LEVEL -
* 
*                T6X TESTED FOR LEVEL A10 
* 
* 
*            ABBREVIATIONS -
* 
*              AC    =  ACTUAL
*              ADDR  =  ADDRESS 
*              A/D   =  ASSEMBLY/DISASSEMBLY
*              BOT   =  BEGINNING OF TAPE 
*              BC    =  BUFFER CONTROLLER 
*              BSY   =  BUSY
*              CHAR  =  CHARACTER 
*              CNT   =  COUNT 
*              CONTRL=  CONTROL 
*              DECR  =  DECREMENT 
*              DIFF  =  DIFFERENCE
*              EOF   =  END OF FILE 
*              EOT   =  END OF TAPE 
*              ERCNT =  ERROR COUNT 
*              ERR   =  ERROR 
*              EX    =  EXPECTED
*              FM/TM =  FILE MARK OR TAPE MARK
*              FWD   =  FORWARD 
*              GSTAT1=  GENERAL STATUS 1
*              GSTAT2=  GENERAL STATUS 2
*              G1    =  GENERAL STATUS 1
*              G2    =  GENERAL STATUS 2
*              INCR  =  INCREMENT 
*              LC    =  LOOP COUNT
*              LNGH  =  LENGTH
*              LP    =  LOAD POINT
*              POS   =  POSITION
*              PTR   =  POINTER 
*              PTRN  =  PATTERN 
*              REC(S)=  RECORD(S) 
*              RESP  =  RESPONSE
*              REV   =  REVERSE 
*              RNG   =  RING
*              RTC   =  REAL TIME CLOCK 
*              SELCT =  SELECT OR SELECTED
*              STAT  =  STATUS
*              STS   =  STATUS
*              SUB   =  SUBROUTINE
*              VAL   =  VALUE 
*              WDCNT =  WORD COUNT
*              WDS   =  WORDS 
* 
* 
* 
*** MODULES 
* 
**
*   1.0   MODULES 
* 
*   1.1   PART ONE - DIAGNOSTIC MODULES 
* 
*         T6X01 - MAINTENANCE WRITE 
* 
*         T6X02 - MAINTENANCE READ
* 
*         T6X03 - READ FORWARD/REVERSE
* 
*         T6X04 - WRITE FILEMARK/TAPEMARK 
* 
*         T6X05 - READ FILEMARK/TAPEMARK
* 
*         T6X06 - BACKSPACE 
* 
*         T6X07 - CONTROLLED BACKSPACE
* 
*         T6X08 - LONG BACKSPACE
* 
*         T6X09 - ERASE 
* 
*         T6X10 - WRITE REPOSITION TO ERASE 
* 
*         T6X11 - WRITE REPOSITION TO ERASE, CONTROLLED BACKSPACE 
* 
*         T6X12 - RANDOM WRITE
* 
*         T6X13 - RANDOM READ FORWARD/REVERSE 
* 
*         T6X14 - WRITE REPOSITION
* 
*         T6X15 - WRITE REPOSITION, INCREMENT LENGTH
* 
*         T6X16 - WRITE REPOSTION,CONTROL BACKSPACE 
* 
*         T6X17 - POSTIONING TEST 
* 
*         T6X18 - POLYNOMIAL TEST 
* 
*         T6X19 - CANNED POLYNOMIAL TEST
* 
*         T6X20 - LADDER TEST 
* 
* 
*   1.2   PART TWO - MAINTENANCE MODULES
* 
*         T6X30 - IRG MAP 
* 
*         T6X31 - TAPE PATH DAMAGE
* 
*         T6X32 - CREEP 
* 
*         T6X80 - COMPATIBILITY TEST
* 
*         T6X81 - COMPATIBILITY TAPE CLEAN-UP 
* 
*         T6X82 - KILLER PATTERN
*** MODULE DESCRIPTIONS 
* 
**
*   2.0   MODULE DESCRIPTIONS 
* 
*                      T6X01 -  MAINTENANCE WRITE 
*                      -------------------------- 
* 
*              THIS MODULE WILL CAUSE RECORDS TO BE WRITTEN ON TAPE AT
*         A DENSITY AND PATTERN SELECTED BY THE PARAM DIRECTIVE.   THE
*         DURATION  OF  THE MODULE IS CONTROLLED BY THE PARAMETERS SET
*         IN FILE MAX AND/OR RECORD MAX.
* 
*            THE MODULE WILL WRITE THE RECORD SPECIFIED, MASK  GENERAL
*         STATUS   WITH   LOGICAL  PRODUCT  7474B.   ANY  STATUS  BITS
*         REMAINING WILL BE  REPORTED  AS  ERROR  200.   FILE  CURRENT
*         NUMBER  (B0)  AND  RECORD CURRENT NUMBER (B1) WILL REFERENCE
*         THE APPROXIMATE LOCATION OF THE ERROR. THE MODULE WILL  ALSO
*         MASK  DETAILED STATUS WORD 3 WITH LOGICAL PRODUCT 4140B.  IF
*         ANY BITS REMAIN, ONE OF THE CONDITIONS LISTED IN  ERROR  204
*         HAVE OCCURRED.
* 
*            WRITING  WILL  CONTINUE UNTIL FILE MAX AND/OR RECORD MAX,
*         OR EOT,(IF FILE MAX IS SET  TO  ZERO),  IS  ENCOUNTERED.  IF
*         REPEAT  MODULE  IS SET, MODULE WILL RESTART WITHOUT OPERATOR
*         INTERVENTION.  IF THIS  BIT  IS  NOT  SET  THE  MODULE  WILL
*         ENTER A NORMAL TERMINATION. 
* 
* 
* 
*                       T6X02  -  MAINTENANCE READ
*                       --------------------------
* 
*               *** TAPE MUST BE T6X01 GENERATED FOR COMPARE ***
* 
*            THIS MODULE CAUSES A  FORWARD  READ  OF  RECORDS  ON  THE
*         TAPE.   IT  READS THE FIRST RECORD, WAIT NOT BUSY IF P3 .NE.
*         XX2X, MASK GENERAL STATUS WITH LOGICAL  PROCUCT  7474B,  AND
*         REPORTS THE FOLLOWING ERRORS. 
* 
*                   1.  ERRORS  203 AND 206 IF ANY STATUS BITS REMAIN.
*                   2.  ERROR 207 IF P4 = 4XXX IS SET AND FM/TM NOT 
*                       EXPECTED. 
* 
*             IF DETAIL STATUS WORD 3 IS NON-ZERO, ERROR 204 IS 
*         GENERATED.
* 
*            NEXT, THE DENSITY INDICATED IN DETAIL STATUS WORD 5 IS 
*         COMPARED TO THE SELECTED DENSITY DECLARED IN -P1- AND ERROR 
*         201 IS GENERATED ON A NON-COMPARE.
* 
*            THE MODULE CONTINUES UNTIL FILE MAX, AND/OR  RECORD  MAX,
*         OR EOT (IF P8 = 0) IS ENCOUNTERED.  IF  REPEAT   MODULE   IS
*         SET, THE MODULE  WILL RESTART WITHOUT OPERATOR INTERVENTION.
*         IF THIS BIT IS NOT SET, THE MODULE WILL ENTER NORMAL TERMIN-
*         ATION.   IF  THE  TAPE  USED BY THIS MODULE WAS GENERATED BY
*         T6X, AND P3 = XXX2, A COMPARE OF THE  FIRST  500B  WORDS  IS
*         DONE. 
* 
*            IF THE TAPE  WAS  NOT  GENERATED  BY  T6X01,  THE  MODULE
*         PERFORMS  AS  DESCRIBED  EXCEPT  THAT A COMPARE OF THE FIRST
*         500B WORD IS NOT POSSIBLE.  FILE MAX AND RECORD  MAX  SHOULD
*         BE SET TO ZERO TO ALLOW THE TAPE TO BE READ TO EOT. 
* 
*            NOTE THAT IF  P3 = XXX2  IS  SET  A  105  ERROR  WILL  BE
*         REPORTED IF A COMPARE OF THE 500B WORDS FAILS.
* 
* 
*                   T6X03 - READ FORWARD/READ REVERSE 
*                   --------------------------------- 
* 
*               *** TAPE MUST BE T6X01 GENERATED FOR COMPARE ***
* 
*              THIS MODULE WILL PERFORM A READ FORWARD FROM LOAD POINT
*         AND  WAIT  NOT  BUSY,  IF P3.NE.  XX2X, BETWEEN EACH RECORD.
*         MASK GENERAL STATUS WITH 7474 AND IF ANY  BITS  REMAIN  THEY
*         ARE  REPORTED  AS AN ERROR 203 OR 204.  YOU ARE TO NOTE THAT
*         EACH RECORD/ FILE IS CHECKED FOR A FM/TM. ALSO NOTE THAT  IF
*         P4  =  4XXX  IS  SET,  THE FM/TM DETECTION WILL RESULT IN AN
*         ERROR 207 BEING LOGGED AND IF FM/TM NOT EXPECTED.  WHEN FILE
*         MAX  AND/OR  RECORD MAX OR EOT (IF P8 = 0) IS ENCOUNTERED, A
*         REVERSE READ IS INITIATED. THE MODULE WILL WAIT NOT BUSY  IF
*         P3  .NE. XX2X BETWEEN EACH RECORD READ.  MASK GENERAL STATUS
*         WITH 7474 AND IF ANY BITS REMAINING ARE THEN REPORTED AS  AN
*         ERROR  202 OR 204. A FM/TM IS REPORTED AS AN ERROR 207 IF P4
*         = 4XXX IS SET AND FM/TM IS NOT EXPECTED.
* 
*            THE   READ   REVERSE   CONTINUES   UNTIL  LOAD  POINT  IS
*         ENCOUNTERED.  IF REPEAT  MODULE  IS  SET,  THE  MODULE  WILL
*         RESTART  WITHOUT  OPERATOR INTERVENTION.  IF THIS BIT IS NOT
*         SET, THE MODULE WILL ENTER NORMAL TERMINATION.
* 
*            IF THE TAPE  WAS  NOT  GENERATED  BY  T6X01,  THE  MODULE
*         PERFORMS  AS  DESCRIBED  EXCEPT  THAT A COMPARE OF THE FIRST
*         500B WORD IS NOT POSSIBLE.  FILE MAX AND RECORD  MAX  SHOULD
*         BE SET TO ZERO TO ALLOW THE TAPE TO BE READ TO EOT. 
* 
*            NOTE THAT IF  P3 = XXX2  IS  SET  A  105  ERROR  WILL  BE
*         REPORTED IF A COMPARE OF THE 500B WORDS FAILS.
* 
* 
* 
*                       T6X04 - WRITE FILE MARK/TAPE MARK 
*                       --------------------------------- 
* 
*              THIS MODULE ISSUES A WRITE FM/TM, WAIT NOT BUSY  IF  P3
*         .NE.   XX2X,  THEN CHECKS GENERAL STATUS FOR A FM/TM.  IF NO
*         FM/TM IS PRESENT, AN ERROR OF 122 IS REPORTED.   THE  MODULE
*         RE-INITIALIZES  AND  CONTINUES TO WRITE FM/TM UNTIL FILE MAX
*         OR  EOT  ,  (IF FILE MAX IS SET TO ZERO), IS ENCOUNTERED. IF
*         REPEAT MODULE  IS  SET,  THE  MODULE  WILL  RESTART  WITHOUT
*         OPERATOR  INTERVENTION.   IF  REPEAT   MODULE  IS  NOT  SET,
*         THE MODULE WILL ENTER NORMAL TERMINATION. 
* 
* 
*         N O T E - THIS MODULE WRITES  ONLY  FM/TM  ON  THE  TAPE. 
* 
* 
*                    T6X05 - READ FILE MARK/TAPE MARK 
*                    -------------------------------- 
* 
*              THIS  MODULE  MAY  NOT BE PERFORMED UNLESS THE MAGNETIC
*         TAPE MOUNTED WAS GENERATED BY T6X MODULE, WRITE FM/TM.  WHEN
*         THE ABOVE PREREQUISITE HAS BEEN MET, THE MODULE WILL BEGIN A
*         FM/TM FORWARD, WAIT NOT BUSY IF  P3.NE.   XX2X,  THEN  CHECK
*         STATUS.   IF  NO  FM/TM  IS PRESENT,  ERROR 252 IS REPORTED.
*         THE MODULE WILL CONTINUE TO READ FM/TM  FORWARD  UNTIL  FILE
*         MAX OR  EOT , (IF FILE MAX IS SET TO ZERO) IS ENCOUNTERED.
* 
*            AT   EOT ,  THE  MODULE  BEGINS READ FM/TM REVERSE, AGAIN
*         CHECKING STATUS FOR FM/TM.  IF FM/TM IS NOT PRESENT,   ERROR
*         252  IS  REPORTED.   READ  FM/TM REVERSE WILL CONTINUE UNTIL
*         LOAD POINT IS ENCOUNTERED.  IF REPEAT  MODULE  IS  SET,  THE
*         MODULE  WILL  RESTART  WITHOUT  OPERATOR  INTERVENTION.   IF
*         REPEAT MODULE IS NOT  SET,  THE  MODULE  WILL  ENTER  NORMAL
*         TERMINATION.
* 
* 
*                          T6X06 - BACKSPACE
*                          -----------------
* 
*              THIS  MODULE WILL WRITE THREE (3) RECORDS AT THE LENGTH
*         SPECIFIED IN  P2 .  IT IS RECOMMENDED THAT AN EVEN NUMBER OF
*         PPU  BYTES  BE  USED  THUS  ALLOWING ODD RECORD DETECTION ON
*         READ.  THESE RECORDS WILL CONTAIN UNIQUE DATA, 1.E.,  RECORD
*         1=1111,  RECORD  2=2222, AND RECORD 3=3333.  THE MODULE WILL
*         WRITE, MASK GENERAL STATUS WITH LOGICAL PRODUCT  7474B,  AND
*         CHECK  FOR  ANY  REMAINING BITS.  IF ANY STATUS BITS REMAIN,
*          ERROR 200 WILL BE REPORTED.   IF  SUCH  ERRORS  OCCUR,  THE
*         MODULE  WILL CONTINUE DOWN THE TAPE AND ATTEMPT TO WRITE THE
*         RECORDS ERROR FREE. 
* 
*            WHEN THE RECORDS HAVE BEEN WRITTEN CORRECTLY, THE  MODULE
*         WILL  WAIT  UNCONDITIONAL  NOT  BUSY  AND  ISSUE A BACKSPACE
*         FUNCTION, WAIT UNCONDITIONAL NOT BUSY, AND MASK STATUS.   IF
*         ANY  BITS  REMAIN THEY ARE REPORTED AS AN  ERROR 253.  IF NO
*         ERROR OCCURS, THE MODULE BEGINS A  REVERSE  READ,  WAIT  NOT
*         BUSY IF P3 .NE.  XX2X BETWEEN RECORDS, AND MASKS STATUS WITH
*         LOGICAL  PRODUCT  7474B.   ANY  STATUS  BITS  REMAINING  ARE
*         REPORTED  AS  AN   ERROR  254.   IF  NO  ERRORS OCCUR, WC IS
*         COMPARED WITH  P2  FOR PROPER LENGTH.  IF WC AND P2 ARE  NOT
*         EQUAL,  AN  ERROR 255 IS REPORTED.  IF NO ERROR OCCURS B1 IS
*         COMPARED WITH 2222.  IF B1 DOES NOT EQUAL  2222,  AN   ERROR
*         256 IS REPORTED.
* 
*            IF  NO  ERRORS  OCCUR,  THE MODULE WILL RE-INITIALIZE AND
*         CONTINUE UNTIL FILE MAX OR  EOT , (IF FILE MAX EQUALS  ZERO)
*         IS  ENCOUNTERED.  IF REPEAT MODULE IS SET, THE  MODULE  WILL
*         RESTART WITHOUT OPERATOR  INTERVENTION.   IF  REPEAT  MODULE
*         IS NOT SET, THE MODULE ENTER NORMAL TERMINATION.
* 
* 
* 
*                  T6X07 -  CONTROLLED BACKSPACE, FIND GAP
*                  ---------------------------------------
* 
*            THIS  MODULE USES THE FUNCTION CONTROLLED BACKSPACE, FIND
*         GAP DURING REPOSITIONING.  PRIOR TO  DESCRIBING  THE  ACTUAL
*         MODULE, WE WILL FIRST DEFINE THIS FUNCTION. 
* 
*            AS IN CONTROLLED BACKSPACE, THE LENGTH IN  P2  IS USED TO
*         DEFINE THE DISTANCE (LENGTH) OF  THE  CONTROLLED  BACKSPACE,
*         FIND  GAP.  HOWEVER, WHEN THIS DISTANCE (LENGTH IN  P2 ) HAS
*         BEEN TRAVERSED, CONTROLLER BACKSPACE, FIND GAP MAY  MAKE  AN
*         ADDITIONAL MOVE IN REVERSE PRIOR TO TERMINATING.  IF DATA IS
*         STILL PRESENT AFTER THE CONTROLLED BACKSPACE PORTION OF THIS
*         FUNCTION  IS  COMPLETED,  THE  TAPE WILL CONTINUE TO MOVE IN
*         REVERSE  UNTIL  AN  ERASED  AREA  (GAP)  IS  DETECTED.   THE
*         FUNCTION  WILL  THEN TERMINATE AT THIS GAP.  THIS ADDITIONAL
*         MOVE IN REVERSE IS THE FIND GAP PORTION  OF  THIS  FUNCTION.
*         THE MODULE IS AS FOLLOWS. 
* 
*            THE MODULE WRITES THREE (3) RECORDS OF A LENGTH SPECIFIED
*         IN  P2 .  (IT IS RECOMMENDED THAT  AN  EVEN  NUMBER  OF  PPU
*         BYTES  BE  USED THUS ALLOWING ODD RECORD DETECTION ON READ).
*         THESE RECORDS WILL  CONTAIN  UNIQUE  DATA,  THAT  IS  RECORD
*         1=1111,  RECORD  2=2222, AND RECORD 3=3333.  THE MODULE WILL
*         WRITE, MASK GENERAL STATUS WITH LOGICAL PRODUCT  7474B,  AND
*         CHECK  FOR  ANY  REMAINING  BITS.   ANY  BITS  REMAINING ARE
*         REPORTED AS AN ERROR 200.  IF AN ERROR  OCCURS,  THE  MODULE
*         WILL  CONTINUE DOWN THE TAPE ATTEMPTING TO WRITE THE RECORDS
*         ERROR FREE.  WHEN THE RECORDS HAVE BEEN WRITTEN, THE  MODULE
*         WAITS  AN  UNCONDITIONAL  NOT  BUSY  AND ISSUES A CONTROLLED
*         BACKSPACE, FIND GAP FUNCTION.  THE LENGTH OF THE  CONTROLLED
*         BACKSPACE, FIND GAP IS THE LENGTH CONTAINED IN  P2 .
* 
*            ERRORS  OCCURRING  ON  THE CONTROLLER BACKSPACE, FIND GAP
*         ARE REPORTED AS ERROR 216 AND 217.  IF NO ERRORS OCCUR,  THE
*         MODULE  WAITS  AN  UNCONDITIONAL  NOT BUSY AND ISSUES A READ
*         REVERSE.  UPON COMPLETION OF THE READ  REVERSE,  THE  MODULE
*         WAITS  NOT  BUSY,  AND  MASKS  STATUS  WITH  LOGICAL PRODUCT
*         7474B.  IF ANY BITS REMAIN, AN ERROR 214 IS REPORTED.  IF NO
*         ERRORS  OCCUR,  THE  LENGTH  IN   P2   IS  COMPARED WITH THE
*         CONTENTS OF WT FOR EQUALITY.  IF THE  COMPARISON  FAILS,  AN
*         ERROR  222  IS REPORTED.  IF NO ERRORS OCCUR THE CONTENTS OF
*         B1 (RECORD CURRENT NUMBER) ARE COMPARED WITH THE VALUE  2222
*         FOR  EQUALITY.   IF  THE  COMPARISON  FAILS, AN ERROR 221 IS
*         REPORTED.  IF NO ERROR OCCURS, THE MODULE WILL  RE-NITIALIZE
*         AND  CONTINUE  UNTIL  FILE  MAX,  OR  EOT  (IF  P8  =  0) IS
*         ENCOUNTERED.  IF   REPEAT   MODULE   IS   SET,   THE  MODULE
*         RESTARTS WITHOUT OPERATOR INTERVENTION.   IF  REPEAT  MODULE
*         IS NOT SET, THE MODULE ENTERS NORMAL TERMINATION. 
* 
* 
* 
*                         T6X08 - LONG BACKSPACE
*                         ----------------------
* 
*            THIS MODULE WRITES FIVE (5) RECORDS OF A LENGTH SPECIFIED
*         IN  P2 , (IT IS RECOMMENDED THAT AN EVEN NUMBER OF PPU BYTES
*         BE  USED THUS ALLOWING ODD RECORD DETECTION ON READ).  THESE
*         RECORDS WILL CONTAIN UNIQUE DATA,  THAT  IS  RECORD  1=1111,
*         RECORD  2=2222,  RECORD  3=3333,  RECORD  4=4444, AND RECORD
*         5=5555 IT SHOULD BE NOTED THAT, OF THE  FIVE  RECORDS,  ONLY
*         RECORD  4  MUST  BE ERROR FREE.  THE MODULE WILL WRITE, WAIT
*         NOT BUSY IF P3.NE.  XX2X, MASK STATUS WITH  LOGICAL  PRODUCT
*         7474B, AND CHECK FOR ANY REMAINING STATUS BITS.  IF AN ERROR
*         OCCURS, IT WILL BE REPORTED AS AN  ERROR 200.  IF  AN  ERROR
*         OCCURS, THE MODULE WILL CONTINUE DOWN THE TAPE, WRITTING ALL
*         FIVE RECORDS UNTIL RECORD 4 IS ERROR FREE.  WHEN THE RECORDS
*         HAVE   BEEN   WRITTEN   CORRECTLY,   THE  MODULE  WILL  WAIT
*         UNCONDITIONAL NOT BUSY AND ISSUE A LONG BACKSPACE  FUNCTION,
*         WAITS  AN  UNCONDITIONAL NOT BUSY, AND MASKS GENERAL STATUS.
*         IF ANY BITS REMAIN, AN   ERROR 223 IS REPORTED. 
* 
*            IF NO ERROR OCCURS, THE MODULE WILL THEN ISSUE A  FORWARD
*         READ,  WAITS UNCONDITIONAL NOT BUSY AND MASKS GENERAL STATUS
*         WITH LOGICAL PRODUCT 7474B.  IF ANY STATUS  BITS  REMAIN  AN
*         ERROR  224 IS REPORTED.  IF NO ERROR OCCURS, THE CONTENTS IN
*         B1 IS COMPARED WITH 4444.  IF B1 DOES NOT EQUAL 4444,  ERROR
*         225  IS  REPORTED.   IF  NO  ERRORS  OCCUR,  THE  MODULE RE-
*         INITIALIZES  AND  CONTINUES UNTIL FILE MAX,OR EOT , (IF FILE
*         MAX IS SET TO ZERO) IS ENCOUNTERED. IF  REPEAT   MODULE   IS
*         SET, THE MODULE WILL RESTART  WITHOUT OPERATOR INTERVENTION.
*         IF REPEAT MODULE IS NOT SET, THE MODULE  WILL  ENTER  NORMAL
*         TERMINATION.
* 
* 
*                              T6X09 - ERASE
*                              -------------
* 
*              THIS MODULE WILL CAUSE AN ERASE FUNCTION TO OCCUR, THEN
*         WAIT NOT BUSY IF P3 .NE.  XX2X AND CHECKS GENERAL STATUS FOR
*         ALERT.  IF ALERT IS SET, AN  ERROR 246 WILL BE REPORTED.  IF
*         NO  ALERT IS SET, THE MODULE WILL RE-INITIALIZE AND CONTINUE
*         UNTIL FILE MAX OR  EOT  IF FILE MAX IS SET  TO  ZERO.   NOTE
*         THAT  A  FM/TM  IS  WRITTEN  AT THE TERMINATION OF THE ERASE
*         ROUTINE.  THE TAPE WILL REWIND TO LOAD  POINT  AND  BEGIN  A
*         READ  FORWARD.  THE READ FORWARD WILL CONTINUE UNTIL THE FM/
*         TM WRITTEN AT  THE  TERMINATION  OF  THE  ERASE  ROUTINE  IS
*         ENCOUNTERED.   IF ANY DATA/RECORD IS ENCOUNTERED DURING THIS
*         READ OVER THE ERASED AREA, AN ERROR 231 WILL BE REPORTED. IF
*         REPEAT MODULE IS SET, THE MODULE  WILL  RESTART  FROM   LOAD
*         POINT.   IF  REPEAT MODULE IS NOT SET, THE MODULE WILL ENTER
*         NORMAL TERMINATION. 
* 
* 
*         N O T E - A FM/TM WILL BE WRITTEN WHEN FILE MAX  OR  EOT IS 
*         ENCOUNTERED TO TERMINATE TAPE.
* 
* 
*                       T6X10 - WRITE REPOSITION TO ERASE 
*                       --------------------------------- 
* 
*              THE  MODULE  WILL ISSUE ONE ERASE FUNCTION TO MOVE AWAY
*         FROM THE LOAD POINT AND THEN CONTINUE  AS  DESCRIBED  BELOW.
*         THE  MODULE  WILL  WRITE ONE RECORD OF A LENGTH SPECIFIED IN
*         P2 , WAIT UNCONDITIONAL NOT BUSY, AND MASK  GENERAL  STATUS 
*         FOR  AN ALERT  STATUS  BIT.   ANY STATUS BITS  REMAINING ARE
*         REPORTED AS AN  ERROR 200.  THE MODULE THEN ISSUES  A  WRITE
*         REPOSITION  TO ERASE FUNCTION, WAITS UNCONDITIONAL NOT BUSY,
*         AND MASK GENERAL STATUS FOR AN ALERT.  IF ALERT  IS  SET  AN
*         ERROR  216  OR  ERROR 217 WILL BE REPORTED.  THE MODULE THEN
*         ISSUES AN ERASE FUNCTION, AND WAITS NOT BUSY.  IF  ALERT  IS
*         SET  AFTER  THE  ERASE  OPERATION  WAS DONE, AN ERROR 246 IS
*         REPORTED.  IF NO ALERT IS SET, THE MODULE WILL RE-INITIALIZE
*         AND  CONTINUE  UNTIL  FILE MAX OR EOT (IF FILE MAX IS SET TO
*         ZERO) IS ENCOUNTERED.  IF REPEAT MODULE IS SET,  THE  MODULE
*         WILL  RESTART  WITHOUT  OPERATOR  INTERVENTION.   IF  REPEAT
*         MODULE IS NOT SET, THE MODULE WILL ENTER NORMAL TERMINATION.
* 
* 
*         N O T E -  A FM/TM WILL BE WRITTEN AT FILE MAX OR EOT TO THE
*         TERMINATE TAPE.  THE LENGTH OF THE WRITE REPOSITION TO ERASE
*         WILL BE CONTAINED IN  P2 .
* 
* 
*           T6X11 - WRITE REPOSITION TO ERASE W/ CONTROLLED BACKSPACE 
*           --------------------------------------------------------- 
* 
*              THE MODULE WILL ISSUE ONE ERASE FUNCTION TO  MOVE  TAPE
*         AWAY FROM THE LOAD POINT MARKER, WAIT NOT BUSY AND WRITE ONE
*         RECORD  OF  A  LENGTH SPECIFIED IN P2 , WAITS  UNCONDITIONAL
*         NOT BUSY, AND MASK  GENERAL  STATUS  WITH  LOGICAL   PRODUCT
*         7474B.   ANY  STATUS BITS REMAINING ARE REPORTED AS AN ERROR
*         200.  THE MODULE THEN ISSUES A  CONTROLLED  BACKSPACE  FUNC-
*         TION, WAITS UNCONDITIONAL NOT BUSY, AND MASK GENERAL STATUS.
*         ANY STATUS BITS REMAINING ARE REPORTED AS AN ERROR 216 OR AN
*         ERROR  217.   THE  MODULE  THEN ISSUES AN ERASE FUNCTION AND
*         WAITS NOT BUSY . IF ANY STATUS BITS REMAIN AN ERROR  246  IS
*         REPORTED.   IF  NO  ERRORS OCCUR THE MODULE WILL REINTIALIZE
*         AND CONTINUE THIS SEQUENCE UNTIL FILE MAX OR  EOT  (IF  FILE
*         MAX IS ZERO) IS ENCOUNTERED.  THE MODULE THEN WRITES A FM/TM
*         TO TERMINATE THE ROUTINE.  IF  REPEAT  MODULE  IS  SET,  THE
*         MODULE  WILL  RESTART  WITHOUT  OPERATOR  INTERVENTION.   IF
*         REPEAT MODULE IS NOT  SET,  THE  MODULE  WILL  ENTER  NORMAL
*         TERMINATION.
* 
* 
*                         T6X12 - RANDOM WRITE
*                         --------------------
* 
*              THIS MODULE WILL WRITE RANDOM LENGTH RECORDS FROM  0004
*         TO  7777  BY  READING THE REAL TIME CLOCK.  EACH RECORD WILL
*         CONTAIN UNIQUE ADDRESSING  INFORMATION  (RECORD,  FILE,  AND
*         LENGTH),  THAT  WILL BE UTILIZED IN RANDOM READ TO DETERMINE
*         IF ALL DATA WRITTEN IS READ.  FILE MAX AND  RECORD  MAX  ARE
*         USED  TO  CONTROL  THE  DURATION  OF THE MODULE AND THE FILE
*         SIZE. 
* 
*            WRITE WILL BEGIN USING THE REAL TIME CLOCK FOR LENGTH AND
*         THEN  WAIT  NOT  BUSY  IF  P3.NE.  XX2X .  GENERAL STATUS IS
*         MASKED  WITH  LOGICAL  PRODUCT  7474B.   ANY   STATUS   BITS
*         REMAINING WILL BE REPORTED AS AN ERROR 200.  THE MODULE ALSO
*         CHECKS DETAILED STATUS WORD 3 WITH A LOGICAL PRODUCT MASK OF
*         4140B.   IF  ANY  BITS  REMAIN,  ERROR 204.  WRITE CONTINUES
*         UNTIL FILE MAX AND/OR RECORD MAX OR  EOT  (IF  FILE  MAX  IS
*         SET TO ZERO) IS ENCOUNTERED. IF REPEAT MODULE IS  SET,   THE
*         MODULE  WILL  RESTART  WITHOUT  OPERATOR  INTERVENTION.   IF
*         REPEAT MODULE IS NOT SET,  THE  MODULE  WILL  ENTER   NORMAL
*         TERMINATION.   IT SHOULD BE NOTED  THAT  WHEN  THE  VALUE IN
*         P9 IS REACHED, A FM/TM IS WRITTEN TO INDICATE THE COMPLETION
*         OF  A FILE.  NOTE THAT ERROR  204  WILL  BE  REPORTED  IF  A
*         MARGINAL CONDITION, AS DESCRIBED IN THE ERROR 204 WRITE  UP,
*         IS SENSED.
* 
* 
*                         T6X13 - RANDOM READ 
*                         ------------------- 
* 
*              THIS MODULE  MAY  NOT  BE  PERFORMED  UNLESS  THE  TAPE
*         MOUNTED  WAS  CREATED  BY  T6X  MODULE RANDOM WRITE.  IF THE
*         ABOVE PREREQUISITE HAS BEEN MET, THE MODULE WILL  PERFORM  A
*         READ FORWARD FROM LOAD POINT.  EACH RECORD/FILE  IS  CHECKED
*         FOR  A  FM/TM IN GENERAL STATUS, REPORTED AS AN ERROR 207 IF
*         P4 = 4XXX IS SET AND IF FM/TM NOT EXPECTED, AND  FOR  ALERT,
*         REPORTED  AS  AN  ERROR  203  OR  204.   NO ERRORS, B0 (FILE
*         CURRENT) IS COMPARED WITH THE COUNT RECORDED IN DATA.  IF B0
*         AND  THE FILE RECORDED ARE NOT EQUAL, ERROR 211 IS REPORTED.
*         IF NO ERROR OCCURS, B1 IS COMPARED WITH THE  RECORDED  DATA.
*         IF  B1  AND THE RECORDED DATA DO NOT COMPARE, THEN ERROR 212
*         IS REPORTED INDICATING AN INCORRECT RECORD. 
* 
*            IF NO ERROR OCCURS, WC IS COMPARED WITH THE RECORDED DATA
*         FOR LENGTH.  IF LENGTH COMPARED DOES NOT EQUAL, ERROR 213 IS
*         REPORTED.  WHEN FILE MAX AND/OR RECORD MAX OR  EOT  (IF FILE
*         MAX IS SET TO ZERO) IS ENCOUNTERED, A REVERSE  READ  BEGINS.
*         NO  ADDRESS VERIFICATION IS DONE IN REVERSE.  EACH RECORD IS
*         PARITY CHECK AND ANY ERRORS ARE REPORTED AS 202 OR  204.   A
*         FM/TM WILL BE REPORTED IF -P4 = 4XXX- IS SET AND FM/TM NOT
*         EXPECTED. 
* 
*         N O T E - THAT  P3 = XXX2  IS  SET  AN  ERROR  105 WILL BE
*         REPORTED IF A COMPARE OF THE FIRST 500B WORDS FAILS.
* 
* 
*                        T6X14 - WRITE REPOSITION 
*                        ------------------------ 
* 
*              THIS MODULE WILL WRITE THREE (3) RECORDS AT THE  LENGTH
*         SPECIFIED IN  P2 .  IT IS RECOMMENDED THAT AN EVEN NUMBER OF
*         PPU BYTES BE USED THUS  ALLOWING  ODD  RECORD  DETECTION  ON
*         READ.   THESE RECORDS WILL CONTAIN UNIQUE DATA, I.E., RECORD
*         1=1111, RECORD 2=2222, AND RECORD 3=3333.  THE  MODULE  WILL
*         WRITE,  MASK  GENERAL STATUS WITH LOGICAL PRODUCT 7474B, AND
*         CHECK FOR ANY REMAINING BITS.  IF ANY  STATUS  BITS  REMAIN,
*          ERROR  200  WILL  BE  REPORTED.   IF SUCH ERRORS OCCUR, THE
*         MODULE WILL CONTINUE DOWN THE TAPE AND ATTEMPT TO WRITE  THE
*         RECORDS ERROR FREE. 
* 
*            WHEN  THE RECORDS HAVE BEEN WRITTEN CORRECTLY, THE MODULE
*         WILL  WAIT  UNCONTITIONAL  NOT  BUSY  AND  ISSUES  A   WRITE
*         REPOSITION  FUNCTION.   THE  MODULE THEN WAITS UNCONDITIONAL
*         NOT  BUSY  AND  MASKS  GENERAL  STATUS.   ANY  STATUS   BITS
*         REMAINING ARE REPORTED AS AN  ERROR 217.
* 
*            THE  MODULE  THEN  BEGINS  A REVERSE READ OPERATION.  THE
*         MODULE WILL WAIT NOT  BUSY  IF  P3.NE.   XX2X,  BETWEEN  THE
*         BLOCKS  READ IN REVERSE AND MASK GENERAL STATUS WITH LOGICAL
*         PRODUCT 7474B.  IF ANY STATUS BITS REMAIN, AN  ERROR 235  IS
*         REPORTED.   IF NO ERROR OCCURS, WC IS COMPARED WITH  P2  FOR
*         PROPER RECORD LENGTH.  IF B1 AND   P2   ARE  NOT  EQUAL,  AN
*         ERROR  237 IS REPORTED.  IF NO ERRORS OCCUR, B1 IS COMPARED 
*         WITH 2222.  IF B0 DOES NOT EQUAL  2222,  AN   ERROR  236  IS
*         REPORTED. 
* 
*            IF  NO  ERRORS  OCCUR,THE  MODULE  WILL RE-INITIALIZE AND
*         CONTINUE UNTIL FILE MAX OR  EOT , (IF FILE MAX EQUALS  ZERO)
*         IS ENCOUNTERED. IF REPEAT MODULE IS SET, THE   MODULE   WILL
*         RESTART WITHOUT OPERATOR  INTERVENTION.   IF  REPEAT  MODULE
*         IS NOT  SET,  THE  MODULE  WILL  ENTER  NORMAL  TERMINATION.
* 
* 
* 
*                  T6X15 - WRITE REPOSITION, INCREMENT LENGTH 
*                  ------------------------------------------ 
* 
*            THIS  MODULE  WILL  WRITE THREE (3) RECORDS OF 10B 12 BIT
*         BYTES.  THESE RECORDS WILL CONTAIN UNIQUE DATA, I.E., RECORD
*         1=1111,  RECORD  2=2222, AND RECORD 3=3333.  THE MODULE WILL
*         WRITE, WAIT NOT BUSY IF P3 .NE.XX2X, AND MASK GENERAL STATUS
*         WITH  LOGICAL PRODUCT 7474B.  IF ANY STATUS BITS REMAIN THEY
*         ARE REPORTED AS AN ERROR 200.  IF SUCH AN ERROR  OCCURS  THE
*         MODULE  WILL CONTINUE DOWN THE TAPE AND ATTEMPT TO WRITE THE
*         RECORDS CORRECTLY.  WHEN THE RECORDS HAVE BEEN WRITTEN ERROR
*         FREE  THE  MODULE  WILL  WAIT  AN UNCONDITIONAL NOT BUSY AND
*         ISSUE A WRITE REPOSITION FUNCTION.  THE  MODULE  THEN  WAITS
*         UNCONDITIONAL  NOT  BUSY AND MASKS STATUS.  ANY BITS REMAING
*         ARE REPORTED AS AN ERROR 216 OR ERROR 217.
* 
*            THE MODULE THEN BEGINS A  READ  REVERSE  OPERATION.   THE
*         MODULE  WILL  WAIT  NOT  BUSY  IF P3.NE.  XX2X, BETWEEN EACH
*         RECORD READ IN REVERSE AND MASK GENERAL STATUS WITH  LOGICAL
*         PRODUCT   7474B.   IF  ANY  BITS  REMAIN  AN  ERROR  235  IS
*         REPORTED.  IF NO ERRORS OCCUR, WC IS COMPARED WITH  P2   FOR
*         PROPER RECORD LENGTH.  IF WC AND  P2  ARE NOT EQUAL AN ERROR
*         237 IS REPORTED.  IF NO  ERROR  OCCURS  B1  IS  COMPARED  TO
*         2222.   IF  B1  DOES  NOT  EQUAL  2222  AN ERROR 236 IS THEN
*         REPORTED. 
* 
*            IF NO ERRORS OCCUR, THE MODULE WILL INCREMENT THE  RECORD
*         LENGTH  BY  10B  12 BIT BYTES AND RE-INITIALIZE.  THE MODULE
*         CONTINUES UNTIL THE MODULE ITERATIONS EQUAL THE CONTENTS  OF
*         P8 , (FILE MAX). IF REPEAT MODULE IS SET  THE  MODULE  WILL 
*         RESTART  WITHOUT  OPERATOR   INTERVENTION.     IF    REPEAT 
*         MODULE  IS NOT SET THE MODULE WILL ENTER NORMAL TERMINATION.
* 
* 
* 
*              T6X16 - WRITE REPOSITION WITH CONTROLLED BACKSPACE 
*              -------------------------------------------------- 
* 
*              THIS MODULE WILL WRITE THREE (3) RECORDS  AT  A  LENGTH
*         SPECIFIED IN  P2 .  IT IS RECOMMENDED THAT AN EVEN NUMBER OF
*         PPU BYTES BE USED THUS  ALLOWING  ODD  RECORD  DETECTION  ON
*         READ.  THE RECORDS WILL CONTAIN UNIQUE DATA, I.E., RECORD 1=
*         1111, RECORD 2=2222, AND RECORD  3=3333.   THE  MODULE  WILL
*         WRITE  THEN  WAIT  NOT  BUSY  IF  P3.NE.  XX2X, MASK GENERAL
*         STATUS  WITH  LOGICAL  PRODUCT  7474B  AND  CHECK  FOR   ANY
*         REMAINING  STATUS  BITS.   IF ANY BITS REMAIN, AN  ERROR 200
*         WILL BE REPORTED.   IF  SUCH  ERRORS  OCCUR  THE  TEST  WILL
*         CONTINUE  DOWN  THE  TAPE  AND  ATTEMPT TO WRITE THE RECORDS
*         ERROR FREE. 
* 
*            WHEN THE RECORDS HAVE BEEN WRITTEN CORRECTLY, THE  MODULE
*         WILL  WAIT  AN UNCONDITIONAL NOT BUSY AND ISSUE A CONTROLLED
*         BACKSPACE FUNCTION.  THE MODULE WAITS AN  UNCONDITIONAL  NOT
*         BUSY  AND  MASK  GENERAL  STATUS.  ANY STATUS BITS REMAINING
*         WILL BE REPORTED AS AN  ERROR 216 OR 217.  THE  MODULE  THEN
*         BEGINS  A  REVERSE READ OPERATION.  THE MODULE WILL WAIT NOT
*         BUSY IF P3.NE.  XX2X, BETWEEN EACH RECORD  READ  IN  REVERSE
*         AND  MASK GENERAL STATUS WITH LOGICAL PRODUCT 7474B.  IF ANY
*         REMAINING, AN ERROR 235 IS REPORTED.  IF NO ERROR OCCURS, WC
*         IS  COMPARED  WITH  P2  FOR PROPER RECORD LENGTH.  IF WC AND
*         P2  ARE NOT EQUAL AN ERROR 237 IS REPORTED.   IF  NO  ERROR 
*         OCCURS, B1 IS COMPARED WITH 2222.  IF B1 DOES NOT EQUAL 2222
*         AN ERROR 236 IS REPORTED. 
* 
*            IF NO ERRORS OCCUR  THE  MODULE  WILL  RE-INITIALIZE  AND
*         CONTINUE  UNTIL FILE MAX OR  EOT , (IF FILE MAX EQUALS ZERO)
*         IS ENCOUNTERED. IF  REPEAT MODULE IS  SET  THE  MODULE  WILL
*         RESTART WITHOUT ANY OPERATOR INTERVENTION.  IF REPEAT MODULE
*         IS NOT SET THE TEST WILL ENTER NORMAL TERMINATION.
* 
* 
* 
*                         T6X17 - POSITION TEST 
*                         --------------------- 
* 
*              THIS MODULE WILL WRITE TWO  (2)  RECORDS  OF  A  UNIQUE
*         LENGTH AND OF UNIQUE DATA.  THE  DATA  WRITTEN   IN   RECORD
*         1=1111  AND THAT  IN  RECORD  2= 2222.  THE MODULE WILL WAIT
*         NOT BUSY IF P3.NE.  XX2X, BETWEEN THE WRITE OF RECORD 1  AND
*         RECORD  2  AND MASK  GENERAL  STATUS  WITH  LOGICAL  PRODUCT
*         7474B.  IF ANY STATUS BITS  REMAIN  AN  ERROR  200  IS  THEN
*         REPORTED.   IF  SUCH  AN   ERROR   OCCURS   THE  MODULE WILL
*         RESTART FROM ITS PRESENT POSITION  ON TAPE  AND  ATTEMPT  TO
*         PERFORM  THIS  SEQUENCE UNTIL IT IS DONE CORRECTLY OR END OF
*         TAPE IS REACHED.
* 
*            AT THE END OF THE WRITE OF RECORD 2 THE MODULE WILL  WAIT
*         AN  UNCONDITIONAL  NOT  BUSY  AND  ISSUE  A WRITE REPOSITION
*         OPERATION OVER RECORD 2 AND WAIT ANOTHER  UNCONDITIONAL  NOT
*         BUSY.   GENERAL  STATUS IS MASKED AND ANY BITS REMAINING ARE
*         REPORTED AS AN ERROR 216 OR AN ERROR 217.   IF  SUCH  ERRORS
*         ARE  REPORTED  THE  MODULE  WILL  RESTART  FROM  ITS PRESENT
*         POSITION ON TAPE WITH THE BEGINNING OF  THE  MODULE,  (WRITE
*         RECORD   1)  AND  WILL  CONTINUE  UNTIL  ALL  SEQUENCES  ARE
*         COMPLETED CORRECTLY OR UNTIL END OF TAPE IS REACHED.
* 
*            IF  NO  ERRORS  OCCUR  THE  MODULE WILL INITIATE AN ERASE
*         OPERATION, (WHICH ERASES RECORD 2), WAIT NOT BUSY IF P3 .NE.
*         XX2X,  AND  MASKS GENERAL STATUS.  IF ANY STATUS BITS REMAIN
*         AN ERROR 246 WILL BE REPORTED.  IF SUCH AN ERROR IS REPORTED
*         THE  MODULE  RESTART  FROM ITS PRESENT POSITION ON TAPE WITH
*         THE BEGINNING OF THE MODULE,  (WRITE  RECORD  1),  AND  WILL
*         CONTINUE  UNTIL  ALL  SEQUENCES  ARE  COMPLETED CORRECTLY OR
*         UNTIL END OF TAPE IS REACHED.  IF NO ERRORS OCCUR THE MODULE
*         WILL  WRITE  RECORD  3.   IT IS TO BE NOTED THAT THE DATA IN
*         RECORD 3=3333.  AT THE END OF THE  WRITE  OF  RECORD  3  THE
*         MODULE  WILL  WAIT  AN  UNCONDITIONAL NOT BUSY, MASK GENERAL
*         STATUS WITH LOGICAL PRODUCT 7474B,  AND  REPORT  ANY  STATUS
*         BITS  THAT  REMAIN  AS AN ERROR 200.  IF AN ERROR OCCURS THE
*         MODULE WILL RESTART FROM THE BEGINNING  AND  CONTINUE  UNTIL
*         ALL  SEQUENCES  ARE  COMPLETED  CORRECTLY  OR END OF TAPE IS
*         REACHED.  IF NO ERROR OCCURS  THE  MODULE  WILL  INITIATE  A
*         WRITE  REPOSITION  TO  ERASE FUNCTION, WAIT AN UNCONDITIONAL
*         NOT BUSY, AND MASK STATUS.  ANY BITS REMAINING ARE  REPORTED
*         AS AN ERROR 216 OR AN ERROR 217.
* 
* 
*            IF AN ERROR OCCURS, THE MODULE WILL  AGAIN  RESTART  FROM
*         THE  BEGINNING.  IF NO ERRORS OCCUR THE MODULE WILL ISSUE AN
*         ERASE FUNCTION, (WHICH ERASES RECORD 3), WAIT  NOT  BUSY  IF
*         P3.NE.   XX2X,  AND MASK GENERAL STATUS.  ANY BITS REMAINING
*         ARE REPORTED AS AN ERROR  246.   IF  AN  ERROR  OCCURS,  THE
*         MODULE RESTARTS FROM THE BEGINNING.  IF NO ERROR OCCURS  THE
*         MODULE  WILL  WRITE  RECORD  4 AND WAIT AN UNCONDITIONAL NOT
*         BUSY.  IT IS TO BE NOTED THAT THE  DATA  IN  RECORD  4=4444.
*         GENERAL STATUS IS MASKED WITH  LOGICAL  PRODUCT  7474B.  ANY
*         STATUS  BITS  REMAINING ARE REPORTED AS AN ERROR 200.  IF AN
*         ERROR OCCURS THE MODULE WILL RESTART FROM THE BEGINNING  AND
*         CONTINUE  UNTIL ALL SEQUENCES ARE COMPLETED CORRECTLY OR END
*         OF TAPE IS REACHED.  IF NO  ERROR  OCCURS  THE  MODULE  WILL
*         ISSUE  A  READ  REVERSE OPERATION OVER RECORD 4. THE  MODULE
*         WILL WAIT NOT BUSY IF P3.NE. XX2X, AND MASK GENERAL  STATUS.
*         ANY  BITS REMAINING WILL BE REPORTED AS AN ERROR 240.  IF AN
*         ERROR OCCURS THE MODULE WILL RESTART FROM THE BEGINNING.  IF
*         NO ERROR OCCURS THE MODULE WILL ISSUE ANOTHER  READ  REVERSE
*         FUNCTION WHICH WILL CAUSE THE TEST TO  MOVE  OVER  THE  AREA
*         PREVIOUSLY  ERASED  AND  THEN OVER RECORD 1.   AT THE END OF
*         THIS REVERSE READ THE MODULE WILL WAIT AN UNCONDITIONAL  NOT
*         BUSY AND MASK STATUS. ANY BITS REMAINING WILL BE REPORTED AS
*         AN ERROR 241. 
* 
* 
*            IF  AN  ERROR  OCCURS  THE  MODULE  WILL RESTART FROM THE
*         BEGINNING OF THE TEST.  IF NO ERROR OCCURS THE  MODULE  WILL
*         BEGIN A READ FORWARD OPERATION OVER RECORD 1.  AT THE END OF
*         THIS READ THE MODULE WILL WAIT NOT BUSY IF P3.NE.  XX2X, AND
*         MASK  GENERAL STATUS.  ANY BITS THAT REMAIN WILL BE REPORTED
*         AS AN ERROR 242.  IF AN ERROR OCCURS THE MODULE WILL RESTART
*         FROM THE BEGINNING.  IF NO ERROR OCCURS, THE CONTENTS OF THE
*         RECORD IS COMPARED WITH 1111.   IF  THIS  COMPARE  FAILS  AN
*         ERROR  243  WILL  BE REPORTED.  IF NO ERROR OCCURS WC AND P2
*         ARE COMPARED FOR PROPER  RECORD  LENGTH.   IF  THIS  COMPARE
*         FAILS AN ERROR 244 IS REPORTED. 
* 
*            IF  NO  ERROR  OCCURS  THE  MODULE  BEGINS A READ FORWARD
*         OPERATION OVER THE ERASED AREA AND OVER RECORD  4.   AT  THE
*         END  OF  THIS  OPERATION THE MODULE WAIT NOT BUSY IF P3 .NE.
*         XX2X AND MASKS  GENERAL  STATUS.   ANY  BITS  REMAINING  ARE
*         REPORTED  AS  AN  ERROR  245.  IF NO ERROR OCCURS THE MODULE
*         COMPARES THE CONTENTS  OF  THE  RECORD  TO  4444.   IF  THIS
*         COMPARE FAILS AN ERROR 247 IS REPORTED.  IF NO ERROR OCCURS,
*         WC IS COMPARED WITH P2 FOR PROPER  RECORD  LENGTH.  IF  THIS
*         COMPARE FAILS AN ERROR 250 IS REPORTED. 
* 
*            IF NO ERRORS OCCUR  THE  MODULE  WILL  RESTART  FROM  ITS
*         PRESENT  POSITION ON TAPE UNTIL THE SUBTEST ITERATIONS EQUAL
*         THE CONTENTS  OF   P8 , (FILE MAX).  IF  REPEAT  MODULE  THE
*         MODULE  WILL RESTART FROM LOAD POINT WITHOUT OPERATOR INTER-
*         VENTION. IF  REPEAT  MODULE  IS  NOT  SET  THE  MODULE  WILL
*         ENTER NORMAL TERMINATION. 
* 
* 
* 
* 
*                        T6X18 - POLYNOMIAL TEST
*                        -----------------------
* 
*              THIS MODULE IS DESIGNED TO CHECK/VERIFY THE POLYNOMIALS
*         GENERATED  DURING  DATA  TRANSFER.   THE   POLYNOMIALS   ARE
*         GENERATED FROM RANDOM DATA PATTERNS WRITTEN/READ DURING THIS
*         MODULE.  THE MODULE IS AS FOLLOWS - 
* 
*            THE MODULE WILL WRITE RECORD 1 AT A LENGTH  SPECIFIED  IN
*          P2 .   THE  DATA WRITTEN IN THIS RECORD WILL BE RANDOM.  AT
*         THE TERMINATION OF THE WRITE OF RECORD  1  THE  MODULE  WILL
*         WAIT  NOT BUSY IF P3.NE.  XX2X, AND MASK GENERAL STATUS WITH
*         LOGICAL PRODUCT 7474B.  ANY STATUS BITS  REMAINING  WILL  BE
*         REPORTED  AS  AN   ERROR 200.  IF AN ERROR OCCURS THE MODULE
*         WILL RESTART FROM ITS PRESENT  POSITION  ON  TAPE  WITH  THE
*         WRITE OF RECORD 1.  IF NO ERROR OCCURS THE MODULE WILL WRITE
*         RECORD 2, THEN WAIT FOR AN UNCONDITIONAL NOT BUSY.  (AS WITH
*         RECORD  1, THE LENGTH OF RECORD 2 IS EQUAL TO THAT SPECIFIED
*         IN  P2  AND THE DATA PATTERN IS RANDOM).  GENERAL STATUS  IS
*         MASKED   WITH   LOGICAL  PRODUCT  7474B.   ANY  STATUS  BITS
*         REMAINING WILL BE REPORTED AS AN  ERROR 200.
* 
*            IF AN ERROR OCCURS THE MODULE WILL RESTART WITH THE WRITE
*         OF  RECORD  1.   IF NO ERROR OCCURS, THE MODULE WILL ISSUE A
*         BACKSPACE FUNCTION, WAIT NOT BUSY IF P3.NE.  XX2X, AND  MASK
*         GENERAL  STATUS.   IF ANY ERROR BITS REMAIN AN  ERROR 253 IS
*         REPORTED.  IF AN ERROR OCCURS THE MODULE WILL  RESTART  WITH
*         THE  WRITE  OF RECORD 1.  IF NO ERROR OCCURS THE MODULE WILL
*         ISSUE ANOTHER BACKSPACE  FUNCTION,  WAIT  UNCONDITIONAL  NOT
*         BUSY,  AND  MASK GENERAL STATUS.  IF ANY STATUS BITS REMAIN,
*         AN  ERROR 253 IS REPORTED.  IF AN ERROR  OCCURS  THE  MODULE
*         WILL RESTART WITH THE WRITE OF RECORD 1.
* 
*            IF  NO  ERROR OCCURS THE MODULE WILL ISSUE A READ FORWARD
*         OVER RECORD 1, WAIT  NOT  BUSY  IF  P3  .NE.XX2X  ,AND  MASK
*         GENERAL  STATUS.  IF ANY STATUS BITS REMAIN AN  ERROR 203 IS
*         REPORTED.  IF AN ERROR OCCURS THE MODULE WILL  RESTART  WITH
*         THE  WRITE  OF  RECORD  1.   IF  NO ERROR OCCURS THE CURRENT
*         RECORD NUMBER IN B1 IS CHECKED TO ENSURE THE RECORD READ WAS
*         RECORD 1.  IF THIS CHECK FAILS AN ERROR 232 IS REPORTED  AND
*         THE MODULE RESTARTS WITH THE WRITE OF RECORD 1.  IF NO ERROR
*         OCCURS, THE LENGTH IN P2 IS COMPARED WITH THE RECORD LENGTH.
*         IF  THIS  COMPARE  FAILS  AN  ERROR  233 IS REPORTED AND THE
*         MODULE WILL RESTART FROM ITS PRESENT POSITION ON  TAPE  WITH
*         THE WRITE OF RECORD 1.
* 
*            IF NO ERROR OCCURS THE POLYNOMIAL THAT WAS  GENERATED  ON
*         THE WRITE OF RECORD 1 IS COMPARED TO THE POLYNOMIAL THAT WAS
*         GENERATED  ON THE READ OF RECORD 1.  IF THE COMPARE FAILS AN
*         ERROR 234 IS REPORTED. (NOTE THAT THE ORIGINAL POLYNOMIAL IS
*         DISPLAYED IN GENERAL STATUS WORD 2).  IF NO ERRORS OCCUR THE
*         MODULE WILL ISSUE A READ FORWARD OVER  RECORD  2,  WAIT  NOT
*         BUSY  IF  P3.NE.   XX2X  ,AND  MASK  GENERAL STATUS.  STATUS
*         CHECKING AND ERROR REPORTING FOR RECORD 2  IS  IDENTICAL  TO
*         THAT  OF  RECORD  1  AND WILL NOT BE REITERATED HERE FOR THE
*         SAKE OF CLARITY.
* 
*            IF NO ERRORS OCCUR THE MODULE WILL RESTART WITH THE WRITE
*         OF RECORD 1 AND CONTINUES WITH THE SEQUENCE  JUST  DESCRIBED
*         UNTIL FILE MAX OR EOT , (IF P8 = 0), IS DETECTED. IF  REPEAT
*         MODULE  IS  SET  THE  MODULE  WILL  RESTART WITHOUT OPERATOR
*         INTERVENTION.  IF REPEAT MODULE IS NOT SET,  THE  TEST  WILL
*         ENTER NORMAL TERMINATION. 
* 
* 
*                             NOTE
* 
* 
*            A.   THIS  TEST  WILL  BE RUN ON MTS CONTROLLERS THAT ARE
*         EQUIPPED TO UTILIZE THE POLYNOMIALS.  IF AN  MTS  CONTROLLER
*         IS  NOT CAPABLE OF PERFORMING THE POLYNOMIAL FUNCTIONS, THIS
*         TEST WILL NOT BE UTILIZED IN EITHER THE MAINTENANCE  OR  THE
*         DIAGNOSTIC SECTIONS.
* 
*            B.  DURING THE DIAGNOSTIC SECTION OF T6X THIS MODULE WILL
*         BE INTERNALLY DEFAULTED TO COMPLETE 100 ITERATIONS  (PASSES)
*         OF THE SEQUENCE DESCRIBED.
* 
* 
*                    T6X19 - CANNED POLYNOMIAL TEST 
*                    ------------------------------ 
* 
*              THIS   MODULE   WILL   GENERATE  AND  VERIFY  10  OCTAL
*         POLYNOMIALS.  THIS IS ACCOMPLISHED BY  GENERATING  10  OCTAL
*         GROUPS, (EACH GROUP REPRESENTING A DIFFERENT POLYNOMIAL), OF
*         100 OCTAL RECORDS EACH. THE  RANDOM  DATA  PATTERN  USED  TO
*         WRITE THE 100 RECORDS IS KNOWN AND REFERENCED TO THE APPLIC-
*         ABLE POLYNOMIAL.  DUE TO THE NATURE  OF  THE  TEST,  CERTAIN
*         ADDRESSES WILL BE INTERNALLY DEFAULTED TO SPECIFIC VALUES BY
*         THE MODULE WHICH WILL OVERRIDE/SUPERCEDE ANY VALUE  MANUALLY
*         PLACED  IN  THOSE  ADDRESSES.  THESE DEFAULTS INCLUDE BOTH 7
*         AND 9 TRACK VALUES AND PARAMETERS. THE MODULE WILL  GENERATE
*         PATTERN 0, ( P2 =0400), THROUGH PATTERN 7, ( P2 =0407). EACH
*         PATTERN IS THE EQUIVALENT OF A FILE OF  100  OCTAL  RECORDS,
*         WHICH  HAS BEEN STATED, OR A TOTAL OF 1000 OCTAL RECORDS FOR
*         ALL TEN PATTERNS. THE MODULE  IS  AS  FOLLOWS  -
* 
* 
*            SELECT PATTERN 0, ( P2 =0400), AND WRITE RECORD 1 THROUGH
*         RECORD 100 WITH THE SAME RANDOM PATTERN, WAIT NOT BUSY IF P3
*         .NE.   XX2X,  BETWEEN  EACH  RECORD, AND MASK GENERAL STATUS
*         WITH LOGICAL PRODUCT 7474B.  ANY STATUS BITS REMAINING  WILL
*         BE REPORTED AS AN  ERROR 200. 
* 
*            IF  AN  ERROR  OCCURS  THE  MODULE  WILL RESTART FROM ITS
*         PRESENT POSITION ON TAPE AND ATTEMPT  TO  WRITE  THE  RECORD
*         ERROR  FREE.   THIS SEQUENCE CONTINUES UNTIL ALL 100 RECORDS
*         HAVE BEEN  WRITTEN  ERROR  FREE  AND  THE  RECORD  COUNT  IS
*         CORRECT.   IF  ANY ERROR OCCURS THE MODULE WILL RESTART FROM
*         ITS PRESENT POSITION AND ATTEMPT TO WRITE  ALL  100  RECORDS
*         CORRECTLY.   THIS  SEQUENCE  CONTINUES  FOR ALL 10 PATTERNS.
*         AFTER PATTERN 0 RECORDS HAVE  BEEN  GENERATED/WRITTEN  ERROR
*         FREE  THE MODULE WILL WAIT NOT BUSY IF P3.NE.  XX2X, DEFAULT
*          P2 =0401, (THIS IS PATTERN 1), AND START THE 100  WRITE  OF
*         PATTERN 1.  THE GENERATION OF PATTERN 1 FILE IS IDENTICAL TO
*         THAT OF PATTERN 0.  THE WRITE SEQUENCE CONTINUES  UNTIL  ALL
*         10  PATTERNS  HAVE  BEEN  CORRECTLY  GENERATED.   (NOTE THAT
*          P2 =0407 IS THE LAST PATTERN, THAT IS, PATTERN 7). 
* 
*            THE MODULE THEN WAIT NOT BUSY IF P3 .NE.  XX2X, WRITES  A
*         FILE  MARK/TAPE  MARK,  WAITS  UNCONDITIONAL NOT BUSY, MASKS
*         STATUS AND REPORTS ANY ERRORS, RESETS PARAM -P3-, PRESETS P2
*          =0400, (PATTERN 0), CLEARS FILE CURRENT AND RECORD CURRENT,
*         AND ISSUES A REWIND FUNCTION. 
* 
*            AT LOAD POINT THE MODULE WILL ISSUE  A  READ  FORWARD  OF
*         RECORD  1  IN  FILE  1, (PATTERN 0), WAIT NOT BUSY IF P3.NE.
*         XX2X, AND MASK GENERAL STATUS.  ANY  STATUS  BITS  REMAINING
*         WILL  BE  REPORTED AS AN ERROR 203 OR 206.  IF AN  ERROR 203
*         OCCURS THE MODULE WILL NOT DO A COMPARE  OF  THE  WRITE  AND
*         READ POLYNOMIALS,  OR CHECK RECORD LENGTH, OR RECORD NUMBER.
*         THIS IS DUE TO THE PARITY ERROR NEGATING  FURTHER  CHECKING.
*         IF  A  206  ERROR  OCCURS, (ON-THE- FLY ERROR CORRECTION HAS
*         OCCURRED), THE MODULE WILL COMPARE THE POLYNOMIAL  GENERATED
*         ON THE WRITE TO THE POLYNOMIAL GENERATED ON THE READ FOR THE
*         RECORD BUT WILL NOT CHECK RECORD NUMBER OR RECORD LENGTH. 
* 
*            IF THE COMPARE OF THE POLYNOMIALS  FAILS,  AN  ERROR  215
*         WILL  BE  REPORTED  AND  THE  POLYNOMIAL EXPECTED WILL BE IN
*         -FILE- AND THE ACTUAL IN -G2-. IF NO 203 OR 206  ERRORS  ARE
*         REPORTED  THE  MODULE WILL CHECK B1 FOR PROPER RECORD COUNT.
*         IF THE CHECK FAILS AN ERROR 232 IS  REPORTED.  IF  NO  ERROR
*         OCCURS  P2  IS  COMPARED  WITH  WC FOR PROPER LENGTH. IF THE
*         COMPARE FAILS AN ERROR 233 IS REPORTED. 
* 
*            THIS READ SEQUENCE CONTINUES  FOR  EACH  RECORD  IN  EACH
*         FILE.   (NOTE THAT THE MODULE WAIT NOT BUSY IF P3 .NE.  XX2X
*         BETWEEN EACH RECORD) UNTIL DETECTION OF THE  FILE  MARK/TAPE
*         MARK  WRITTEN  AT THE END OF THE LAST FILE. IF REPEAT MODULE
*         IS SET THE MODULE  WILL  RESTART  FROM  LOAD  POINT  WITHOUT
*         OPERATOR  INTERVENTION.   IF  REPEAT  MODULE  IS NOT SET THE
*         MODULE WILL ENTER NORMAL TERMINATION. 
* 
*                             NOTE
* 
*              THIS  MODULE  WILL  BE  RUN ON MTS CONTROLLERS THAT ARE
*         EQUIPPED TO UTILIZE POLYNOMIALS.  IF AN  MTS  CONTROLLER  IS
*         NOT  CAPABLE  OF  PERFORMING  THE  POLYNOMIAL  FUNCTION, THE
*         MODULE WILL NOT BE UTILIZED BY  THE  DIAGNOSTIC  SECTION  OF
*         T6X.
* 
* 
*                          T6X20 - LADDER TEST
*                          -------------------
* 
*              THIS  MODULE WILL WRITE ASCENDING AND DECENDING RECORDS
*         IN LENGTH FROM 0001 TO 7777 AND BACK TO 0001 UNTIL  EOT   IS
*         ENCOUNTERED.  EACH WRITE WILL WAIT NOT BUSY IF P3.NE.  XX2X,
*         BETWEEN RECORDS AND MASK GENERAL STATUS.  ANY BITS REMAINING
*         WILL  BE  REPORTED  AS  AN   ERROR 200 OR AN ERROR 204.  THE
*         PATTERN TO BE GENERATED WILL  BE  SPECIFIED  IN   P4 .   THE
*         WRITE SEQUENCE CONTINUES UNTIL  EOT  IS ENCOUNTERED.
* 
*            THE  MODULE  WILL WAIT UNCONDITIONAL NOT BUSY AND BEGIN A
*         READ REVERSE OPERATION.  THE MODULE WILL WAIT NOT BUSY IF P3
*         .NE.   XX2X  BETWEEN  EACH  BLOCK  READ IN REVERSE AND CHECK
*         STATUS.  ANY BITS REMAINING AFTER THE MASK OF STATUS WILL BE
*         REPORTED  AS AN ERROR 202 OR AN ERROR 204.  THE REVERSE READ
*         CONTINUES UNTIL LOAD POINT IS ENCOUNTERED.  THE MODULE  WILL
*         CHECK THE VALUE OF RECORD CURRENT (B1) AND FILE CURRENT (B0)
*         FOR ZERO (0).  IF EITHER ARE A NON-ZERO VALUE, AN ERROR  267
*         IS REPORTED.
* 
*         THE MODULE NOW BEGINS A READ FORWARD OPERATION TO  EOT .  AS
*         WAS THE CASE  IN  THE  REVERSE  READ,  GENERAL   STATUS   IS
*         MASKED  BETWEEN  EACH  RECORD  READ AND ANY BITS THAT REMAIN
*         WILL BE REPORTED AS AN ERROR 203 OR  AN  ERROR  204.   IF  A
*         ERROR  204  OCCURS DURING EITHER FORWARD OR REVERSE, YOU ARE
*         TO REFERENCE DETAILED STATUS WORD 3 FOR  ADDITIONAL  INFORM-
*         ATION.  FORWARD AND REVERSE READ WILL CONTINUE UNTIL TERMIN-
*         ATED. 
* 
*         NOTE - APPROXIMATE RUN TIME ON A 667-3 AT 800 BPI IS -
* 
*                650' REEL - 3 MINUTES
*               1200' REEL - 6 MINUTES, 30 SECONDS
*               2400' REEL - 13 MINUTES, 30 SECONDS 
* 
*                    T6X30 - INTER RECORD GAP TIMING MAP
*                    -----------------------------------
* 
*              THIS  MAINTENANCE  TEST  WILL SKIP P9 RECORDS THEN READ
*         TAPE NON-STOP FOR 50 OCTAL RECORDS TIMING THE  INTER  RECORD
*         GAP  (IRG)  COUNTING  THE  FRAMES AND TAKING STATUS OF EVERY
*         RECORD AND POSITIONING ALL OF THESE IN  THE  OUTPUT  BUFFER.
*         EVERY  50  OCTAL RECORDS, THE TAPE WILL STOP, THE CHANNEL IS
*         RELEASED, AND THE DATA FROM  THE  RECORDS  CHECKED  WILL  BE
*         PLACED  IN  THE  OUTPUT  BUFFER FOR PLOTTING. THIS WILL MEAN
*         THAT EVERY 50TH OCTAL RECORD GAP CANNOT BE CHECKED BUT,  THE
*         FRAME COUNT AND STATUS WILL BE CHECKED. 
* 
* 
*                        T6X31 - TAPE PATH DAMAGE 
*                        ------------------------ 
* 
*              THIS  MODULE IS DESIGNED TO DETECT PROBLEMS IN THE TAPE
*         PATH THAT COULD CAUSE DAMAGE TO MAGNETIC TAPE MOUNTED ON THE
*         TRANSPORT.  THE MODULE WRITES ONE RECORD (RECOMMEND EVEN PPU
*         BYTES FOR ODD RECORD DETECTION ON READ) OF A LENGTH THAT  IS
*         CONTAINED IN  P2 , WAIT NOT BUSY IF P3.NE.  XX2X, THEN MASKS
*         GENERAL STATUS WITH LOGICAL PRODUCT 7474B.   IF  ANY  STATUS
*         BITS  REMAIN,  ERROR  200  WILL  BE  REPORTED.  IF THE ERROR
*         OCCURS A RE-WRITE WILL BE  INITIATED  TO  WRITE  THE  RECORD
*         ERROR  FREE IN THE SAME POSITION ON TAPE.  (IF THE 200 ERROR
*         PERSIST, IT IS RECOMMENDED THAT  A  MORE  SUITABLE  MAGNETIC
*         TAPE BE USED AND THE MODULE RERUN.) 
* 
*            WHEN  THE  RECORD  HAS BEEN WRITTEN CORRECTLY, THE MODULE
*         WILL WAIT UNCONDITIONAL NOT BUSY, DO A READ REVERSE OVER THE
*         RECORD,  WAIT  UNCONDITIONAL  NOT  BUSY, MASK GENERAL STATUS
*         WITH LOGICAL PRODUCT 7474B.  ANY STATUS BITS REMAINING  WILL
*         BE  REPORTED  AS  ERROR  227.   THE  MODULE  WILL  DO A READ
*         FORWARD, WAIT UNCONDITIONAL NOT BUSY,  MASK  GENERAL  STATUS
*         WITH  LOGICAL PRODUCT 7474B.  ANY STATUS BITS REMAINING WILL
*         BE REPORTED AS ERROR 226.  B0 (FILE CURRENT) AND B1  (RECORD
*         CURRENT) ARE COUPLED TO PRODUCE A 24 BIT PASS COUNT REGISTER
*         WITH B1 BEING THE LOWER 12 BITS AND B0 THE  UPPER  12  BITS.
*         THE  NUMBER  OF  READ  PASSES COMPLETED WILL BE INDICATED IN
*         THIS PASS COUNT REGISTER.  WHEN  57,777  (OCTAL)  OR  20,480
*         (DECIMAL)  PASSES HAVE BEEN COMPLETED, THE MODULE WILL ENTER
*         NORMAL TERMINATION. 
* 
*                             NOTE
* 
*              YOU WILL NOTE THAT THE AMOUNT OF TAPE MOVED IN THE TAPE
*         PATH  DURING  THIS  TEST  IS  DEPENDENT ON THE RECORD LENGTH
*         SPECIFIED IN  P2  TIMES 100.  WITH  THIS  CONTROL  OVER  THE
*         DISTANCE  THAT TAPE WILL MOVE WE CAN NOW SET A RECORD LENGTH
*         IN  P2  THAT WILL CAUSE TAPE TO MOVE THROUGH THE  TAPE  PATH
*         AND  LOOP  COLUMNS BUT WILL NOT BE LARGE ENOUGH TO ALLOW THE
*         TAPE REELS TO MOVE.  THE ADVANTAGE HERE  IS  THAT  ONLY  THE
*         COMPONENTS  FROM  THE  MIDDLE OF THE LEFT LOOP COLUMN TO THE
*         MIDDLE OF THE RIGHT LOOP COLUMN WILL BE CHECKED FOR DAMAGING
*         TAPE.  SINCE THE COMPONENTS IN THIS AREA, ( EOT /BOT, BLOCK,
*         HEAD, SCRAPPERS, CERAMIC GUIDES) ARE RATHER  CLOSE  TO  EACH
*         OTHER, THE DISTANCE TAPE SHOULD MOVE IS RATHER SHORT. 
* 
*                   FOR THIS TEST,  P2  SHOULD BE SET TO =0050. 
* 
*                   IF  THE  RECORD  LENGTH  IN  P2 IS LARGE ENOUGH TO
*         CAUSE THE TAPE REELS TO MOVE, IT WILL BE  NEARLY  IMPOSSIBLE
*         TO  ISOLATE  THE COMPONENT THAT IS DAMAGING TAPE BECAUSE THE
*         DAMAGED AREA OVERLAPS SEVERAL COMPONENTS.  YOU SHOULD SET  A
*         LENGTH  IN  P2  THAT IS LARGE ENOUGH TO CAUSE THE TAPE REELS
*         TO MOVE IF YOU ARE CHECKING FOR TAPE DAMAGE IN THE  AREA  OF
*         THE  AIR  BEARINGS,  LOOP COLUMNS, TAPE SHUTES, AND THE TAPE
*         REELS AND HUBS. 
* 
*            FOR THIS TEST,  P2  SHOULD BE SET TO =0600.
* 
* 
*                             T6X32 - CREEP 
*                             ------------- 
* 
*              THIS MODULE WILL WRITE THE FIRST 77 OCTAL RECORDS AT  A
*         LENGTH  OF 4000B, THEN WRITE RECORD 100 (OCTAL) AT A  LENGTH
*         OF 5000B, AND THEN RECORD 101 OCTAL AT THE LENGTH  SPECIFIED
*         IN  P2  .   THE MODULE THEN BACKSPACES, WAITS  UNCONDITIONAL
*         NOT BUSY,  THEN  RE-WRITES  RECORD  101, A   TOTAL  OF  1000
*         TIMES.  AFTER  THE  LAST  BACKSPACE  OVER RECORD 101 AT  THE
*         COMPLETION OF THE  WRITE  ROUTINE,  THE  MODULE  WILL  DO  A
*         REVERSE  READ OVER RECORD 100.  THE MODULE WILL WAIT UNCOND-
*         ITIONAL  NOT  BUSY,  MASK   GENERAL   STATUS   WITH  LOGICAL
*         PRODUCT  7474B, AND CHECK FOR ANY REMAINING STATUS BITS.  IF
*         ANY REMAIN, AN ERROR 263 WILL BE REPORTED.
* 
*            IF  NO  ERROR  OCCURS,  THE  LENGTH OF RECORD 100 (WC) IS
*         COMPARED WITH 5000B.  IF WC DOES NOT EQUAL 5000B, ERROR  264
*         IS  REPORTED.   IF  NO  ERRORS  OCCUR,  THE  MODULE WILL RE-
*         INITIALIZE AND CONTINUE UNTIL FILE MAX OR  EOT  (IF FILE MAX
*         IS  SET  TO ZERO) IS ENCOUNTERED.  THE TAPE WILL THEN REWIND
*         TO LOAD POINT.  IF REPEAT MODULE IS  SET,  THE  MODULE  WILL
*         RESTART  WITHOUT OPERATOR INTERVENTION.  IF REPEAT MODULE IS
*         NOT SET, THE MODULE WILL ENTER NORMAL TERMINATE.
* 
* 
*                 T6X80 - COMPATIBILITY TEST
*                 --------------------------
* 
*           THIS MODULE CAN BE USED TO TEST THE COMPATIBILITY OF 66X
*         TRANSPORTS AMONG THEMSELVES OR WITH 60X, 65X OR 67X UNITS 
*         WHEN USED WITH THE COMPATIBILITY TESTS IN T5X AND T7X.
*         FOR A FULL DESCRIPTION OF THIS TEST, REFER TO THE MODULE
*         OVERVIEW AND DESCRIPTIONS IN T6X80. 
* 
* 
*              T6X81 - COMPATIBILITY TAPE CLEAN-UP
*              -----------------------------------
* 
*           THIS MODULE IS USED IN CONJUNCTION WITH MODULE T6X80, 
*         COMPATIBILITY TEST.  IT IS USED TO PROPERLY TERMINATE A 
*         COMPATIBILITY TAPE WITH DOUBLE END-OF-FILES.  REFER TO THE
*         MODULE OVERVIEW AND DESCRIPTIONS IN T6X81.
*         THIS MODULE ALLOWS THE USER TO TAKE A SNAPSHOT OF HOW WELL
*         A UNIT IS WRITING TAPES WITH A CANNED DATA PATTERN THAT IS
*         KNOWN TO CREATE PEAK SHIFT PROBLEMS ON 200 IPS UNITS. REFER 
*         TO THE MODULE OVERVIEW AND DESCRIPTIONS IN T6X82. 
*** PARAMETERS
* 
**
*   3.0   PARAMETERS
* 
* 
*                   P0 =  TAPE SPEED VALUE INDICATES AS FOLLOWS 
* 
*                                  100B = 100 IPS 
*                                  150B = 150 IPS 
*                                  200B = 200 IPS 
* 
*                   P1 = PCAD 
* 
*                        XXXD - DENSITY 
* 
*                        XXX0 =  556 BPI
*                        XXX1 =  800 BPI
*                        XXX2 = 1600 FCI
*                        XXX3 =  200  BPI 
* 
*                        XXAX - ASSEMBLY/DISASSEMBLY
* 
*                        XX0X =  A/D 6 BIT MODE 
*                        XX1X =  A/D PACKED MODE
*                        XX2X =  A/D CPU MODE 
* 
*                        XCXX - CODE TRANSLATION
* 
*                        X0XX =  NO CODE TRANSLATION
*                        X1XX =  USE CODE TRANSLATION TABLE 1 
*                        X2XX =  USE CODE TRANSLATION TABLE 2 
*                        X3XX =  USE CODE TRANSLATION TABLE 3 
*                        X7XX =  INTERNAL TO EXTERNAL TRANSLATION 
*                                IF EVEN PARITY AND 7 TRACK 
* 
* 
*                        PXXX - PARITY
* 
*                        0XXX =  ODD PARITY 
*                        1XXX =  EVEN PARITY
* 
* 
*                   P2 = RECORD LENGTH
* 
* 
*                   P3 = SCFF = FLAG BITS /MARGINS
* 
*                        XXFF = FLAG BITS 
* 
*                        XXX1 = BYPASS RECORD NUMBERING 
*                               IF THIS BIT IS NOT SET, POSITION
*                               DATA IS PLACED IN THE OUTPUT BUFFER 
*                               DURING WRITE AS FOLLOWS - 
*                                  OB(1) = CURRENT FILE NUMBER
*                                  OB(2) = CURRENT RECORD NUMBER
*                                  OB(3) = RECORD LENGTH
* 
*                        XXX2 = COMPARES THE FIRST 500 OCTAL WORDS
*                               OF THE INPUT BUFFER EVEN IF NO ERRORS 
*                               OCCUR (FORWARD READS ONLY). 
* 
*                        XXX4 = LOCK TO BASE NUMBER,IF RANDOM 
*                               DATA PATTERN IS SELECTED, 
*                               P7 WILL CONTAIN THE BASE
* 
*                        XX1X = THIS BIT MUST BE SET IF YOU HAVE A
*                               POLYNOMIAL CONTROLLER 
* 
*                        XX2X = BYPASS WAIT NOT BUSY IF SET 
* 
*                        XX4X = MAINTENANCE MODE
* 
*                               USED BY MODULES - 
* 
*                               4,5,6,7,8,9,10,11,14,15,16,17,18,32 
* 
*                               IF = 0 DEFAULT VALUES ARE USED
*                               INSTEAD OF P8 AND P9, OTHERWISE P8 AND
*                               P9 DEFINE FILE AND RECORD COUNTS. 
* 
*                        XCXX - CLIP LEVEL
* 
*                        X0XX =  NORMAL CLIP
*                        X1XX =  HIGH READ CLIP 
*                        X2XX =  LOW READ CLIP
*                        X3XX =  HYPER READ CLIP
* 
* 
*                        SXXX - SPROCKET DELAY
* 
*                        0XXX =  NOMINAL READ SPROCKET DELAY
*                        1XXX =  INCREASE READ SPROCKET DELAY 
*                        2XXX =  DECREASE READ SPROCKET DELAY 
* 
* 
* 
*                   P4 = DATA PATTERN GENERATION CONTROL
* 
* 
*                        0XXX = SELECT FIXED PATTERN XXX
*                               XXX IS A 6 OR 8 BIT PATTERN DEPENDING 
*                               ON DRIVE TYPE(7 OR 9 TRACK).
* 
*                        1XXX = SELECT ALTERNATE PATTERN XXX
*                               PATTERN XXX IS STORED IN THE 1ST,3RD, 
*                               5TH,ETC 6 OR 8 BIT BYTES OF THE OUTPUT
*                               BUFFER.  THE COMPLEMENT OF XXX IS 
*                               STORE IN  THE 2ND, 4TH, 6TH ETC BYTES.
* 
*                        2XXX = SELECT RANDOM PATTERN 
* 
*                               THE RANDOM PATTERN GENERATED IS 
*                               DETERMINED BY THE BASE RANDOM 
*                               NUMBER(P7) AND THE LOCK TO BASE 
*                               NUMBER BIT(P3=XXX4) 
* 
*                        4XXX = REPORT FM/TM ERRORS 
* 
* 
*                   P5 = RANDOM MILLISECOND DELAY MASK (BETWEEN RELEASE 
*                        AND RESERVE).
* 
*                        0000 = DISABLES USE OF RT CLOCK FOR
*                               GENERATION OF RANDOM DELAYS.
*                               WITH P5=0000 ANY VALUE ENTERED IN P6
*                               BECOMES A FIXED MILLISECOND DELAY.
* 
*                        XXXX = LOGICAL PRODUCT OF XXXX AND THE RT
*                               CLOCK PRODUCES THE VALUE USED FOR 
*                               THE MILLISECOND DELAY.
* 
* 
*                   P6 = FIXED MILLISECOND DELAY (BETWEEN RELEASE AND 
*                        RESERVE).
* 
*                        XXXX = IF P5=0000, P6 WILL BE USED AS FIXED
*                               DELAY OF XXXX MILLISECONDS. 
* 
* 
*                   P7 = BASE RANDOM NUMBER 
* 
*                        0000 = THE RANDOM NUMBER SEED WILL BE
*                               OBTAINED FROM THE RT CLOCK. 
* 
* 
* 
*                        XXXX    XXXX IS THE RANDOM NUMBER SEED 
* 
* 
*                   P8 = FILE COUNT 
* 
*                        0000 = INFINITE FILE COUNT 
*                               RESULTS IN COMPLETE USE OF TAPE 
*                               BETWEEN BOT AND EOT 
* 
*                        XXXX = MAXIMUM NUMBER OF FILES TO WRITE
*                               READ PER MODULE.
* 
* 
*                   P9 = RECORD COUNT 
* 
*                        0000 = INFINITE RECORD COUNT 
*                               RESULTS IN COMPLETE USE OF TAPE 
*                               BETWEEN BOT AND EOT 
* 
*                        XXXX = MAXIMUM NUMBER OF RECORDS PER FILE
* 
*                       SSSS = SYSTEM ID (MODULE T6X80 ONLY)
* 
* 
*** STATUS ANALYSIS MESSAGES
* 
**
* 
*   4.0   STATUS ANALYSIS MESSAGES
* 
*         AFTER AN ERROR OCCURS AND THE ERROR OUTPUT DISPLAY HAS BEEN 
*         CONSTRUCTED, A FINAL LINE OF OUTPUT IS ADDED TO THE DISPLAY 
*         INDICATING THE MOST SERIOUS PROBLEM INDICATED IN DETAILED 
*         STATUS AT THE TIME OF THE ERROR.  THIS STATUS ANALYSIS
*         PROCESS CAN PRODUCE THE FOLLOWING MESSAGES; 
* 
*           DDLT=0300 TAPE UNIT NOT CONNECTED - SHOULD BE 
*           DDLT=0301 TAPE UNIT TEMPERATURE MDI 
*           DDLT=0314 TAPE UNIT LOOP FAULT MOVING FORWARD 
*           DDLT=0315 TAPE UNIT LOOP FAULT MOVING REVERSE 
*           DDLT=0322 TAPE UNIT LOAD FAULT
*           DDLT=0325 TAPE UNIT AIR PRESSURE MDI
*           DDLT=0328 NOT READY 
*           DDLT=0334 TAPE UNIT SEVERE START ERROR ON WRITE 
*           DDLT=0337 TAPE UNIT ACCESS ERROR-NOT UP TO SPEED
*           DDLT=0338 TAPE UNIT VELOCITY ERROR ON WRITE 
*           DDLT=0359 TAPE UNIT ERASE CURRENT MDI 
*           DDLT=0380 TAPE UNIT SINGLE FRAME ERR ON NRZI WRITE
*           DDLT=0381 TAPE UNIT FRAME CNT. ERR 1- CAPSTAN SLIP
*           DDLT=0382 TAPE UNIT FRAME CNT. ERR 2- NOISE 
*           DDLT=0383 TAPE UNIT FRAME CNT. ERR 3- LOST FRAMES 
*           DDLT=0500 TAPE PARITY - ERASE ERROR 
*           DDLT=0503 TAPE PARITY - 4 FRAME SKEW IN PHASE 
*           DDLT=0504 TAPE PARITY - SINGLE FRAME SKEW IN PHASE
*           DDLT=0505 TAPE PARITY - FALSE END OF OP 
*           DDLT=0507 TAPE PARITY - VERTICAL PARITY ERROR 
*           DDLT=0508 TAPE PARITY - LONGITUDINAL PARITY ERROR 
*           DDLT=0509 TAPE PARITY - CRC ERROR 
*           DDLT=0512 UNEXPLAINED TAPE PARITY ERROR 
*           DDLT=0520 TAPE PARITY - 2/4 FRAME SKEW IN PHASE 
*           DDLT=0521 TAPE PARITY - POSTAMBLE ERROR 
*           DDLT=0522 TAPE PARITY - LRC ERROR 
*           DDLT=0600 TAPE PARITY - LOST DATA ON WRITE
*           DDLT=0604 TAPE PARITY - LATE DATA ON WRITE
*           DDLT=0610 NOISE IN GAP
*           DDLT=0611 NOISE FAULT 
*           DDLT=0612 LOST DATA ON READ 
*       **  DDLT=1X00 SINGLE TRACK ERROR-NO TRACK CORRECTED 
*           DDLT=1X0Y SINGLE TRACK ERROR- LAST DIGIT= DATA BIT
*           DDLT=2X00 MULTI-TRACK ERROR - NO TRACK CORRECTED
*           DDLT=2X0Y MULTI-TRACK ERROR - LAST DIGIT= DATA BIT
*           DDLT=3X00 CRC DETECTED ERROR-NO TRACK CORRECTED 
*           DDLT=3X0Y CRC DETECTED ERROR- LAST DIGIT= DATA BIT
* 
*           ** - X = MODE OF OPERATION  - 0 = NRZI READ 
*                                         1 = PHASE WRITE 
*                                         4 = NRZI READ 
*                                         5 = PHASE READ
* 
*                Y = DATA BIT IN ERROR  (0 - 8) 
* 
* 
*           IN ADDITION TO THE DDLT ERROR MESSAGES ABOVE, THE FOLLOWING 
*           CONTROLWARE ERROR MESSAGES MAY ALSO BE POSTED.
* 
*           CW ERROR 4001 CONNECT REJECT, NO UNIT DIALED
*           CW ERROR 4002 CON. REJ, UNIT RESERVED OTHER ACCESS
*           CW ERROR 4004 FUNCTION REJECT, UNIT NOT READY 
*           CW ERROR 4005 UNIT NOT READY DURING LAST OP.
*           CW ERROR 4006 WRITE ATTEMPTED WITHOUT WRITE RING
*           CW ERROR 4010 25 FEET OF BLANK TAPE READ
*           CW ERROR 4011 STOP MOTION FUNCTION EXECUTED.
*           CW ERROR 4012 UNABLE TO WRITE FROM BOT, BAD TAPE
*           CW ERROR 4014 SHORT READ-ACCESS 
*           CW ERROR 4015 PERMANENT ERASE ERROR FOR 30 INCHES 
*           CW ERROR 4020 INCORRECT CONTROLWARE LOADED
*           CW ERROR 4021 UNABLE TO LOAD CONTROLWARE FROM 7TK 
*           CW ERROR 4022 TOO FEW WORDS ON CONTROLWARE LOAD 
*           CW ERROR 4023 PARITY ERROR IN CONTROLWARE BLOCK 
*           CW ERROR 4024 TAPE UNIT FAILED TO REWIND
*           CW ERROR 4030 BACKWARD MOTION ATTEMPTED AT BOT
*           CW ERROR 4032 MOTION ATTEMPTED ON REWINDING UNIT
*           CW ERROR 4033 ATTEMPTED READ FWD AFTER A WRITE
*           CW ERROR 4034 ATTEMPTED REV. RECOVERY AFTER BKSP
*           CW ERROR 4035 ILLEGAL WRITE RECOVERY AT 200 CPI 
*           CW ERROR 4036 WRITE ATTEMPTED AT 200 CPI
*           CW ERROR 4040 NO WRITE PERMIT STATUS IN 34 MSEC 
*           CW ERROR 4044 UNIT FAILED TO STOP IN 34 MSEC
*           CW ERROR 4045 STILL AT BOT AFTER 34 MSEC OF MOTION
*           CW ERROR 4046 BLOCK WRITTEN BUT NO FRAMES READ
*           CW ERROR 4047 MISCELLANEOUS UNIT ERROR
*           CW ERROR 4050 UNRECOGNIZABLE FUNCTION CODE
*           CW ERROR 4051 FUNCTION REJ-UNIT ON HOLD 
*           CW ERROR 4052 FUNCTION PARAMS. NOT SENT IN 1 MSEC 
*           CW ERROR 4053 ALL FUNCTION PARAMETERS NOT SENT
*           CW ERROR 4054 CHANNEL PARITY ERROR ON DATA
*           CW ERROR 4055 CHANNEL PARITY ERROR ON FUNCTION
*           CW ERROR 4056 ILLEGAL FORMAT PARAMETERS 
*           CW ERROR 4057 ILLEGAL PARAMETERS ON FUNCTION
*           CW ERROR 4060 TIMING PROBLEM ON REPEAT READ FUNCT.
*           CW ERROR 4061 NO WRITE DATA WITHIN 34 MSEC
*           CW ERROR 4062 PP NOT READY TO READ IN 1.4 MSEC
*           CW ERROR 4066 FUNCTION REJ-UNIT NOT CONNECTED 
*           CW ERROR 40XX UNRECOGNIZED CW ERROR CODE
* 
* 
   MODULE T6X01,66X(42,52),LOCK  - MAINTENANCE WRITE -
*** MAINTENANCE WRITE 
* 
** EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -    RECORDS ARE WRITTEN ON TAPE AT THE DENSITY
*                 AND PATTERN SELECTED BY THE *PARAM* DIREC-
*                 TIVE. 
*                 WRITING CONTINUES UNTIL *RECORD MAX* OR 
*                 *FILE MAX* OR *EOT* IS REACHED. 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS - 
* 
*                 1. RESERVE UNIT ACCORDING TO HARDWARE DEF-
*                    INTION AND MARGINS 
*                 2. REWIND 
*                 3. FILL OUTPUT BUFFER WITH SPECIFIED PATTRN 
*                 4. RELEASE-DELAY-RESERVE
*                 5. WRITE
*                 6. GET STATUS 
*                 7. CHECK FOR ERROR
*                 8. IF NO ERROR, CHECK FOR RECORD MAX OR EOT 
*                 9. WRITE EOF IF RECORD MAX
*                10. LOOP TO 4 IF FILE MAX OR EOT NOT REACHED 
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF 
*                  OPERATION, AFTER A WRITE FM/TM.
* 
* 
*         -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE- OPERATION. 
* 
*         -EC 204- DETAILED STATUS WORD 3 HAS ONE OF THE FOLLOWING SET- 
*                   A. SEVERE START ERROR 
*                   B. SINGLE FRAME SKEW
*                   C. ILLEGAL CHARACTER SET
* 
*** INTERNAL DOCUMENTATION
* 
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B2 = RANDOM SEED 
*        FOR PATTERN GENERATOR
*     = BUFFER LIMIT FOR DUP (7 OR 9 TRK) 
* 
*  B3 = PATTERN FOR STORING 
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X01 - MAINTENANCE WRITE - 
/ 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 30  *RANDOM PATTERN SELECTED
   B0 = 10
   B1 = 500 
   IF(DC.AND.10.NE.0)GOTO 21   *IF 9 TRACK TAPE.
   B0 = 6                      *TRACK SIZE (6 OR 8) 
* 
*         FILL BUFFER 
* 
21 B3 = P4.XOR.7777B
   IF(P4.AND.3000.NE.1000)B3 = P4   *ALTERNATE PTRN SELCT 
   DUP B0 BITS OF P4/B3 TO OB FOR B1
   GOTO 40
/ 
30 IF(P3.AND.4.NE.0)GOTO 31  *USE RANDOM SEED 
   B2=1                      *SET FLAG FOR REAL TIME CLOCK
   GOTO 40
31 RANDOM TO OB FOR 500 , START P7   *GENERATE PATTERN
/ 
40 B0 = P3 RS 6              *MARGIN BITS TO B0 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   WC = P2                   *RECORD LENGTH TO WC REG 
   CALL 98P                  *CHECK PARAMETERS
/ 
   EXIT TO 011               *EXIT TO NEXT MODULE 
/ 
   END 20 
COMPILE  - T6X01 -
   MODULE T6X011,66X(42,52),LOCK   - MAINTENANCE WRITE -
 1 FORMAT T6X01 - MAINTENANCE WRITE - 
 2 FORMAT T6X01 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X01 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T6X01 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T6X01 - ABORT ON .RES. COMMAND -
10 FORMAT T6X01 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X01 - ABORT ON .REL. COMMAND -
12 FORMAT T6X01 - ABORT ON .WAITNB. COMMAND - 
13 FORMAT T6X01 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X01 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X01 ERROR(S) IN MODULE = *DEC 
   EQUATE DETAIL3 TO 4140, EOT TO 10, ERROR TO 7474 
   EQUATE FILEMK TO 20
* 
*         REWIND TAPE 
* 
20 B0=0                      *CLEAR FILE COUNT
   B1=0                      *CLEAR RECORD COUNT
   B7 = 6 
   RES P1, ABT 74            *RESERVE 
   B7 = 10
   REWIND,ABT 74             *REWIND
30 B1 = B1 + 1               *INCREMENT RECORD COUNT
   IF(B2.EQ.0) GOTO 40       *RANDM PTRN NOT SELECTED 
   RANDOM TO OB FOR 500 , START RT
* 
*         ADDRESS CODING
* 
40 IF(P3.AND.1.NE.0)GOTO 44  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
44 GOSUB 60 
* 
*         WRITE .WC. SPECIFIED BY *P2*
* 
   B7 = 5 
   WRITE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 46  *BYPASS WAIT NOT BUSY 
   B7 = 12
   WAITNB, ABT 74 
46 B7 = 13
   STATUS DETAIL, ABT 74      *GET DETAIL STATUS
   IF(SB(1).AND.EOT.NE.0)GOTO 55      *EOT DETECTED 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 50    *NO ERROR DETECTED
   ERROR 2/200 , GOSUB 70 
   GOTO 52
50 IF(SB(5).AND.DETAIL3.NE.0)ERROR 2/204,GOSUB 70 
52 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 53  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
53 IF(P9.EQ.0)GOTO 30         *WRITE TO EOT IF P9 ZERO
   IF(B1.LT.P9)GOTO 30        *P9 RECORDS NOT DONE
   B1 = 0                     *ZERO RECORD COUNT
   B0 = B0 + 1                *INCREMENT FILE COUNT 
   GOSUB 60 
   B7 = 12
   WAITNB, ABT 74 
* 
*         WRITE .EOF. 
* 
   B7 = 4 
   ENDFILE , ABT 74 
* 
*     CHECK FOR FILEMARK STATUS FOLLOWING *ENDFILE* 
* 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/122 , GOSUB 70
   IF (P8.EQ.0) GOTO 30    *LOOP IF INFINITE FILE COUNT 
   IF(B0.LT.P8)GOTO 30      *P8 FILES NOT PROCESSED 
55 IF(ES.AND.CM.NE.0)GOTO 20          *REPEAT MODULE SELECTD
   IF(BA.EQ.0)GOTO 57                 *NO ERRORS
56 MSG 15 (BA) TO DAYFILE             *REPORT ERRORS
57 EXIT                               *NORMAL TERMINATION 
* 
*         RESERVE,DELAY, AND RELEASE
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 11
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X011 - 
   MODULE T6X02,66X(42,52),LOCK   - MAINTENANCE READ -
*** MAINTENANCE READ
* 
** EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW - RECORDS ARE READ FROM TAPE ACCORDING TO THE
*              DENSITY AND PATTERN SPECIFIED BY THE *PARAM* 
*              DIRECTIVE. 
*              READING CONTINUES IN THE FORWARD DIRECTION 
*              UNTIL RECORD MAX OR FILE MAX OR -EOT- IS 
*              REACHED. 
* 
*              THE MAIN PORTION OF THE TEST IS IN -T6X021-
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS - 
* 
*              1. RESERVE UNIT SPECIFIED BY THE *ASSIGN*
*                 DIRECTIVE ACCORDING TO THE HARDWARE 
*                 IDENTIFICATION AND MARGINS
*              2. REWIND
*              3. FILL OUTPUT BUFFER ACCORDING TO PATTERN 
*                 SPECIFIED 
*              4. RELEASE-DELAY-RESERVE 
*              5. READ
*              6. GET DETAILED STATUS 
*              7. CHECK FOR ERROR 
*              8. CHECK DENSITY INDICATED IN DETAIL STATUS. 
*              9. COMPARE DATA IF SELECTED
*             10. IF NO ERROR, READ UNTIL RECORD MAX
*                 OR EOT
*             11. CHECK EOF STATUS IF SELECTED *P4* 
*             12. LOOP TO 4 UNTIL RECORD MAX, FILE MAX
*                 OR EOT IS REACHED 
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         -PRODUCT OVERLAY ERRORS 
* 
*         -EC 105- DATA COMPARE ERROR 
* 
*         -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE- OPERATION. 
* 
*         -EC 201- DENSITY IN DETAIL STATUS WORD 5 DOES NOT COMPARE 
*                  WITH SELECTED DENSITY. 
* 
*         -EC 203- THE ALERT BIT IN GENERAL STATUS WAS SET DURING A 
*                  READ OPERATION.  *LAST FUNCTION* FIELD CONTAINS THE
*                  LAST MAJOR FUNCTION THAT WAS ISSUED.  IF THE 
*                  OPERATION WAS A -READ REVERSE- THE -R- COLUMN IN 
*                  THE PRINTOUT CONTAINS THE ONLY PERTINENT DATA. 
* 
* 
*         -EC 204- DETAILED STATUS WORD 3 HAS ONE OF THE FOLLOWING SET- 
*                   A. SEVERE START ERROR 
*                   B. SINGLE FRAME SKEW
*                   C. ILLEGAL CHARACTER SET
* 
*         -EC 206- PHASE ON-THE-FLY ERROR CORRECTION
* 
*         -EC 207- FM/TM ENCOUNTER AND NOT EXPECTED.
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B3 = FM/TM FLAG
* 
*  B5 = NO OF DATA WORDS TO COMPARE 
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
* 
*     = 0 - ABORT FLAG
* 
*  B10= NUMBER OF BITS FOR PATTERN GENERATION 
* 
*  B11= DATA PATTERN FOR STORING
* 
*  B12= DATA PATTERN FOR STORING
* 
*  BA = ERROR COUNT 
* 
* 
/ 
/         TAPE MUST BE *T6X01* GENERATED FOR COMPARE
/ 
 1 FORMAT T6X02 - MAINTENANCE READ -
/ 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   B10 = 6                   *SET B10 = NUMBER OF DATA BITS 
   IF(DC.AND.10.NE.0) B10 = 8 
   B11 = P4                  *SET B11/B12 TO DATA PATTERN 
   B12 = P4 
   IF(P4.AND.1000.NE.0) B12 = B12.XOR.7777   *COMPLEMENT B12
40 B0 = P3 RS 6              *MARGIN BITS TO B7 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   WC=P2
   CALL 98P                  *CHECK PARAMETERS
/ 
   EXIT TO 021               *EXIT TO NEXT MODULE 
/ 
   END 20 
COMPILE   - T6X02 - 
   MODULE T6X021,66X(42,52),LOCK   - MAINTENANCE READ - 
/ 
/         TAPE MUST BE *T6X01* GENERATED FOR COMPARE
/ 
 1 FORMAT T6X02 - MAINTENANCE READ -
 2 FORMAT T6X02 - ERROR CODE = *OCT AT LINE (EA) = *OCT 
 4 FORMAT T6X02 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T6X02 - ABORT ON .READ FWD. COMMAND - 
 6 FORMAT T6X02 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X02 - ABORT ON .REL. COMMAND -
10 FORMAT T6X02 - ABORT ON .WAITNB. COMMAND - 
11 FORMAT T6X02 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X02 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X02 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, DETAIL3 TO 4140, EOT TO 10 
   EQUATE FILEMK TO 20
* 
*         REWIND TAPE 
* 
20 B0=0 
   B1=0 
   B3=0 
   B7 = 6 
   RES P1, ABT 74            *RESERVE 
   B7 = 4 
   REWIND,ABT 74             *REWIND
25 B1 = B1 + 1               *INCREMENT RECORD COUNT
   IF(P5+P6.LT.20D) GOTO 26  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
26 B7 = P6
   IF(P5.EQ.0) GOTO 27       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
27 DELAY B7 MSEC            *DELAY
   B7 = 6 
   RES P1, ABT 74           *RESERVE
* 
*         READ
* 
   B7 = 5 
   READ FWD , ABT 74        *READ FORWARD 
   IF(P3.AND.20.NE.0)GOTO 30  *BYPASS WAIT NOT BUSY 
   B7 = 10
   WAITNB, ABT 74 
* 
*         DETAILED STATUS 
* 
30 B7 = 11
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.EOT.NE.0)GOTO 55      *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 31   *NO FILEMARK DETECTED 
   IF(B3.NE.0) GOTO 52                *EOF EXPECTED 
   IF(P4.AND.4000.NE.0)ERROR 2/207, GOSUB 70  *REPORT ERROR 
   GOTO 52
31 IF(SB(1).AND.ALERT.EQ.0)GOTO 40    *NO ALERT DETECTED
   IF(SB(3).NE.0)GOTO 32               *NO DETAIL (1) ERROR 
   ERROR 2/206,GOSUB 70 
   GOTO 52
32 ERROR 2/203,GOSUB 70  *DETAIL (1) ERROR
   GOTO 42
* 
*         TEST DENSITY
* 
40 B7=SB(7).RS.6.AND.3       *WORD 5
   IF(P1.AND.3.EQ.B7) GOTO 41   *DENSITY CORRECT
   B7=B7+3                   *TEST 200 BPI
   IF(P1.AND.3.NE.B7) ERROR 2/201, GOSUB 70 
* 
*         COMPARE DATA
* 
41 IF(P3.AND.2.EQ.0)GOTO 50  *DO NOT COMPARE DATA 
42 B5=WC
   IF(WC.LE.500)GOTO 43      *WORD COUNT LARGER THAN BUFFER 
   B5=500 
43 IF(P4.AND.3000.EQ.2000) RANDOM TO OB FOR B5, START IB
   IF(P4.AND.2000.EQ.0)DUP B10 BITS OF B11/B12 TO OB FOR B5 
44 IF(P3.AND.1.NE.0)GOTO 45  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
45 IF(P1.AND.30.NE.10) GOTO 46
   IF(B5.AND.1.EQ.0) GOTO 46
   B7=B5-1
   OB(B7)=OB(B7).AND.7760 
   OB(B7)=IB(B7).AND.17+OB(B7)
46 COMPARE IB TO OB FOR B5 , ABT 47 
   GOTO 50
47 ERROR 2/105 , GOSUB 70   *DATA COMPARE ERROR 
* 
*         CHECK DETAIL
* 
50 IF(SB(5).AND.DETAIL3.NE.0)ERROR 2/204 , GOSUB 70 
52 IF(B3.EQ.0)GOTO 53       *NOT AN FM/TM READ
   B3 = 0 
   B1 = B1 - 1              *DECREMENT RECORD COUNT 
* 
*         END MODULE
* 
53 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 54  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
54 IF(P9.EQ.0)GOTO 25       *IF P9 ZERO GO TO EOT 
   IF(B1.LT.P9)GOTO 25      *MORE RECORDS TO BE WRITTEN 
   B1 = 0                   *ZERO RECORD COUNT
   B3 = 1                   *FM/TM FLAG 
   B0 = B0 + 1              *INCREMENT FILE COUNT 
   IF(P8.EQ.0)GOTO 25       *INFINITE FILE COUNT GO TIL EOT 
   IF(B0.LT.P8)GOTO 25      *P8 FILES NOT PROCESSED 
55 IF(ES.AND.CM.NE.0)GOTO 20           *REPEAT MODULE 
   IF(BA.EQ.0)GOTO 57       *NO ERRORS
56 MSG 15 (BA) TO DAYFILE   *REPORT ERRORS
57 EXIT                     *NORMAL TERMINATION 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X021 - 
   MODULE T6X03,66X(42,52),LOCK   - READ FWD/REV
*** READ FORWARD/REVERSE (FWD PORTION)
* 
**
*   OVERVIEW - RECORDS ARE READ FROM TAPE ACCORDING TO THE
*         DENSITY AND PATTERN SPECIFIED BY THE *PARAM*
*         DIRECTIVE.  RECORDS ARE READ IN THE FORWARD 
*         DIRECTION UNTIL RECORD MAX OR FILE MAX OR EOT IS
*         REACHED.
* 
*         AT THIS POINT A REVERSE READ IS INITIATED WHICH 
*         IS PROVIDED BY AN EXIT TO *T6X031* AND READING
*         CONTINUES UNTIL LOADPOINT IS REACHED. 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS - 
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            FICATION *P1* AND MARGINS *P3* 
*         2. REWIND 
*         3. DETERMINE 7 OR 9 TRACK 
*         4. FILL OUTPUT BUFFER ACCORDING TO PATTERN
*            SPECIFIED *P4* 
*         5. RELEASE-DELAY-RESERVE
*         6. READ FORWARD 
*         7. GET DETAILED STATUS
*         8. CHECK FOR ERRORS 
*         9. COMPARE DATA IF SELECTED *P3*
*        10. CHECK FOR FM/TM AND REPORT ERRORS ACCORDING TO 
*            *P4* 
*        11. IF NO ERROR , READ UNTIL RECORD MAX OR FILE MAX
*            OR EOT IS DETECTED 
*        12. WHEN FILE MAX OR EOT IS REACHED ,A REVERSE 
*            READ IS INITIATED   (T6X031) 
*        13. READING CONTINUES IN THE REVERSE DIRECTION 
*            UNTIL LOADPOINT IS REACHED 
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 105- DATA COMPARE ERROR.  THE FIRST 500B WORDS (OR THE
*                  WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED
*                  DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE 
*                  REPORTED.
* 
*                                  --- NOTE --- 
* 
*                  IF RUNNING CONVERSION MODE, ERRORS 105, 211, 212 
*                  AND 213 SHOULD BE EXAMINED VERY CLOSELY TO ENSURE
*                  THE ERROR IS A TRUE ERROR AND NOT THE RESULT OF
*                  ONE CHARACTER BEING WRITTEN AND CONVERTED TO A 
*                  DIFFERENT CHARACTER BY THE HARDWARE (CONTROLWARE)
*                  WHEN READ BACK. CERTAIN CHARACTERS ARE CHANGED ON
*                  THE READ BECAUSE THE CHARACTER WRITTEN IS AN ILLEGAL 
*                  CHARACTER WITHIN THE CHARACTER SUBSET BEING USED.
* 
* 
*            EXAMPLE..
*               WRITE   READ   T6X PARAMETERS 
*                00      33    7 TRACK AND CODE TRANSLATION TABLE 3 
*                12      00    7 TRACK AND CODE TRANSLATION TABLE 7 
* 
* 
*         -EC 202-A STATUS ERROR OCCURRED ON A READ REVERSE.
* 
* 
*         -EC 203- THE ALERT BIT IN GENERAL STATUS WAS SET DURING A 
*                  READ OPERATION. *LAST FUNCTION* FIELD CONTAINS THE 
*                  LAST MAJOR FUNCTION THAT WAS ISSUED. 
* 
*         -EC 204- DETAILED STATUS WORD 3 HAS ONE OF THE FOLLOWING SET- 
*                   A. SEVERE START ERROR 
*                   B. SINGLE FRAME SKEW
*                   C. ILLEGAL CHARACTER SET
* 
* 
*         -EC 207- A FM/TM WAS DETECTED DURING A MAINTENANCE READ. YOU
*                  ARE TO NOTE THAT THIS ERROR IS DEPENDENT ON THE
*                  CONFIRMED PRESENCE OF A FM/TM. NOTE THAT IF *P4* = 
*                  4XXX IS SET, THIS ERROR WILL BE REPORTED.
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B3 = FM/TM FLAG
* 
*  B5 = NO OF DATA WORDS TO COMPARE 
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  B10= NUMBER OF BITS FOR PATTERN GENERATION 
* 
*  B11= DATA PATTERN FOR STORING
* 
*  B12= DATA PATTERN FOR STORING
* 
*  BA = ERROR COUNT 
* 
* 
/ 
/         TAPE MUST BE *T6X01* GENERATED FOR COMPARE
/ 
 1 FORMAT T6X03 - READ FORWARD/REVERSE -
/ 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   B10 = 6                   *SET B10 = NUMBER OF DATA BITS 
   IF(DC.AND.10.NE.0) B10 = 8 
   B11 = P4                  *SET B11/B12 TO DATA PATTERN 
   B12 = P4 
   IF(P4.AND.1000.NE.0) B12 = B12.XOR.7777   *COMPLEMENT B12
40 B0 = P3 RS 6              *MARGIN BITS TO B7 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   WC=P2
   CALL 98P                  *CHECK PARAMETERS
/ 
42 EXIT TO 031               *EXIT TO NEXT MODULE 
/ 
   END 20 
COMPILE   - T6X03 - 
   MODULE T6X031,66X(42,52),LOCK   - READ FWD/REV(FORWARD PORTION) -
/ 
/         TAPE MUST BE *T6X01* GENERATED FOR COMPARE
/ 
 1 FORMAT T6X03 - READ FORWARD -
 2 FORMAT T6X03 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X03 - ABORT ON .READ FWD. COMMAND - 
 5 FORMAT T6X03 - ABORT ON .RES. COMMAND -
 6 FORMAT T6X03 - ABORT ON .REL. COMMAND -
 7 FORMAT T6X03 - ABORT ON .REWIND. COMMAND - 
10 FORMAT T6X03 - ABORT ON .WAITNB. COMMAND - 
11 FORMAT T6X03 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X03 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X03 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, DETAIL3 TO 4140, EOT TO 10 
   EQUATE FILEMK TO 20
* 
*         REWIND
* 
20 MSG 1 TO DISPLAY         *MODULE MESSAGE TO DISPLAY
21 B0=0 
   B1=0 
   B3=0 
   B7 = 5 
   RES P1, ABT 74           *RESERVE
   B7 = 7 
   REWIND,ABT 74            *REWIND 
26 B1 = B1 +1               *INCREMENT RECORD COUNT 
   IF(P5+P6.LT.20D) GOTO 27  *BYPASS REL ON SHORT DELAY 
   B7 = 6 
   REL, ABT 74              *RELEASE
27 B7 = P6
   IF(P5.EQ.0) GOTO 30      *USE FIXED DELAY FROM P6
   B7 = RT.AND.P5           *USE RT CLOCK AND MASK
30 DELAY B7 MSEC
   B7 = 5 
   RES P1, ABT 74                   *RESERVE
* 
*         READ FORWARD
* 
31 B7 = 4 
   READ FWD , ABT 74
   IF(P3.AND.20.NE.0)GOTO 32  *BYPASS WAIT NOT BUSY 
   B7 = 10
   WAITNB, ABT 74 
* 
*         DETAILED STATUS 
* 
32 B7 = 11
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.EOT.NE.0)GOTO 55       *EOT DETECTED
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 34    *NO FM/TM
   IF(B3.NE.0) GOTO 50                 *FM/TM EXPECTED
   IF(P4.AND.4000.NE.0)ERROR 2/207, GOSUB 70  *REPORT ERROR 
   GOTO 50
34 IF(SB(1).AND.ALERT.EQ.0)GOTO 36     *NO ALERT DETECTED 
   ERROR 2/203 , GOSUB 70 
   GOTO 40
36 IF(SB(5).AND.DETAIL3.NE.0)ERROR 2/204 , GOSUB 70 
* 
*         COMPARE 
* 
   IF(P3.AND.2.EQ.0)GOTO 50            *DO NOT COMPARE DATA 
40 B5=WC
   IF(WC.LE.500)GOTO 41     *WORD COUNT GREATER THAN BUFFER 
   B5=500 
41 IF(P4.AND.3000.EQ.2000) RANDOM TO OB FOR B5, START IB
   IF(P4.AND.2000.EQ.0)DUP B10 BITS OF B11/B12 TO OB FOR B5 
42 IF(P3.AND.1.NE.0)GOTO 43  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
43 IF(P1.AND.30.NE.10) GOTO 45
   IF(B5.AND.1.EQ.0) GOTO 45
   B7=B5-1
   OB(B7)=OB(B7).AND.7760 
   OB(B7)=IB(B7).AND.17+OB(B7)
45 COMPARE IB TO OB FOR B5 , ABT 46    *COMPARE I/O BUFFERS 
   GOTO 50
46 ERROR 2/105 , GOSUB 70 
* 
*         END LOOP
* 
50 IF(B3.EQ.0)GOTO 51                  *NOT A FM/TM READ
   B3 = 0 
   B1 = B1 - 1                         *DECREMENT RECORD CNT
* 
*         END MODULE
* 
51 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 53  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
53 IF(P9.EQ.0)GOTO 26       *LOOP IF RECORD MAX IS ZERO 
   IF(B1.LT.P9)GOTO 26      *P9 RECORDS NOT PROCESSED 
   B3 = 1                   *FM/TM FLAG 
   B1 = 0                   *ZERO RECORD COUNT
   B0 = B0 + 1              *INCREMENT FILE COUNT 
   IF(P8.EQ.0)GOTO 26       *INFINITE FILE COUNT GO TIL EOT 
   IF(B0.LT.P8)GOTO 26      *P8 FILES NOT PROCESSED 
   B0=B0-1                  *CORRECT FILE/RECORD COUNT
   B1=P9
55 IF(ES.AND.RC.NE.0) GOTO 21 
57 EXIT TO 032              *EXECUTE REVERSE PORTION OF TEST
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   MSG 15 (BA) TO DAYFILE     *MODULE ERROR COUNT TO DAYFILE
   EXIT                       *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X031 - 
   MODULE T6X032,66X(42,52),LOCK   - READ FWD/REV(REV PORTION) -
/ 
/         TAPE MUST BE *T6X01* GENERATED FOR COMPARE
/ 
 1 FORMAT T6X03 - READ REVERSE -
 2 FORMAT T6X03 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X03 - ABORT ON .READ REV. COMMAND - 
 5 FORMAT T6X03 - ABORT ON .RES. COMMAND -
 6 FORMAT T6X03 - ABORT ON .REL. COMMAND -
 7 FORMAT T6X03 - ABORT ON .REWIND. COMMAND - 
10 FORMAT T6X03 - ABORT ON .WAITNB. COMMAND - 
11 FORMAT T6X03 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X03 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X03 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, DETAIL3 TO 4140, FILEMK TO 20
   EQUATE LOADPT TO 4, EOT TO 10
* 
*         RELEASE, DELAY, RESERVE 
* 
20 MSG 1 TO DISPLAY         *MODULE MESSAGE TO DISPLAY
21 B3=0 
22 GOSUB 60                 *RELEASE, DELAY, RESERVE
* 
*         READ REVERSE
* 
   B7 = 4 
   READ REV , ABT 74
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT NOT BUSY 
   B7 = 10
   WAITNB, ABT 74 
* 
*         DETAILED STATUS 
* 
40 B7 = 11
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.LOADPT.NE.0)GOTO 46   *LOAD POINT DETECTED
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 41   *FILE MARK DETECTED 
   IF(B3.NE.0)GOTO 43              *DO NOT EXPECT FM/TM 
   IF(P4.AND.4000.NE.0)ERROR 2/207,GOSUB 70  *REPORT ERROR
41 IF(SB(1).AND.ALERT.EQ.0)GOTO 42    *NO ALERT DETECTED
   ERROR 2/202 , GOSUB 70 
   GOTO 43
42 IF(SB(5).AND.DETAIL3.NE.0)ERROR 2/204,GOSUB 70  *DETAIL
* 
*         END LOOP
* 
43 IF(B3.EQ.0)GOTO 44                 *NOT A FM/TM READ 
   B3 = 0 
   B1 = B1 + 1                        *INCREMENT RECORD CNT 
* 
*         END MODULE
* 
44 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 45  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
45 GOTO 22 WHILE (B1-1.GT.0)          *MORE RECORDS IN FILE 
   B3 = 1                             *FM/TM FLAG 
   B1 = P9
   B0 = B0 - 1                        *DECREMENT FILE COUNT 
   GOTO 22
* 
*         REPOSITION TO END OF DATA ON REPEAT CONDITION 
* 
46 IF(ES.AND.RC.EQ.0) GOTO 54 
   B0=0 
   B1=0 
50 GOSUB 60 
   FSPACE,ABT 74
   B1=B1+1
   IF(SB(1).AND.EOT.NE.0) GOTO 21 
   IF(P9.EQ.0) GOTO 50
   IF(B1.LT.P9) GOTO 50 
   B1=0 
   B0=B0+1
   IF(P8.EQ.0) GOTO 50
   IF(B0.LT.P8) GOTO 50 
   B0=B0-1
   B1=P9
   GOTO 21
54 IF(ES.AND.RM.EQ.0) GOTO 55 
   EXIT TO 031
55 IF(BA.EQ.0)GOTO 57       *NO ERRORS
56 MSG 15 (BA) TO DAYFILE   *REPORT ERRORS
57 EXIT                               *NORMAL TERMINATION 
* 
*         RELEASE, DELAY, RESERVE 
  
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 6 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 5 
   RES P1, ABT 74             *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X032 - 
   MODULE T6X04,66X(42,52),LOCK   - WRITE FM/TM - 
*** WRITE FILEMARK/TAPEMARK 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - WRITE  FILEMARK/TAPEMARK UNTIL FILE MAX 
*             OR EOT IS ENCOUNTERED 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. WAIT NOT BUSY IF SELECTED
*         5. WRITE FILEMARK/TAPEMARK
*         6. CHECK FOR ERROR
*         7. IF EOT OR FILE MAX NOT REACHED REPEAT TO 3.
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED 
* 
*         -PRODUCT OVERLAY ERRORS 
* 
*         -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF 
*                  OPERATION, AFTER A WRITE FM/TM.
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B2 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X04 - WRITE FILEMARK/TAPEMARK - 
 2 FORMAT T6X04 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X04 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T6X04 - ABORT ON .RES.COMMAND - 
 6 FORMAT T6X04 - ABORT ON .REL.COMMAND - 
 7 FORMAT T6X04 - ABORT ON .REWIND.COMMAND -
10 FORMAT T6X04 - ABORT ON .WAITNB. COMMAND - 
11 FORMAT T6X04 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X04 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X04 ERROR(S) IN MODULE = *DEC 
   EQUATE EOT TO 10, FILEMK TO 20 
* 
*         REWIND
* 
20 MSG 1 TO DISPLAY,PRINT   *RUNNING MESSAGE
   BA=0                     *CLEAR ERROR COUNTER
   B0 = P3 RS 6             *MARGIN BITS TO B7
   MARGINS B0               *SELECT MARGINS PER PARAM P3
   CALL 98P                 *CHECK PARAMETERS 
21 B0=0 
   B7 = 5 
   RES P1, ABT 74           *RESERVE
   B7 = 7 
   REWIND, ABT 74 
   WC = P2                  *RECORD LENGTH TO WC REG
   B2 = P8                  *FILE MAX MAINT MODE
   IF(P3.AND.40.NE.0)GOTO 24  *MAINTENANCE MODE SELECTED
   B2 = 100                 *FILE MAX DIAG MODE 
24 IF(P5+P6.LT.20D)GOTO 25  *BYPASS REL ON SHORT DELAY
   B7 = 6 
   REL, ABT 74              *RELEASE
25 B7 = P6
   IF(P5.EQ.0) GOTO 26      *USE FIXED DELAY FROM P6
   B7 = RT.AND.P5           *USE RT CLOCK AND MASK
26 DELAY B7 MSEC
   B7 = 5 
   RES P1, ABT 74           *RESERVE
   B0 = B0 + 1              *INCREMENT FILE COUNT 
   IF(P3.AND.20.NE.0)GOTO 30  *BYPASS WAIT NOT BUSY 
   B7 = 10
   WAITNB, ABT 74 
* 
*         WRITE FILEMARK/TAPEMARK 
* 
30 B7 = 4 
   ENDFILE , ABT 74 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/122, GOSUB 70  *NO FM/TM
   IF(SB(1).AND.EOT.NE.0)GOTO 55      *EOT DETECTED 
* 
*         END MODULE
* 
   B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 31  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
31 IF(B2.EQ.0)GOTO 24       *INFINITE FILE COUNT
   IF(B0.LT.B2)GOTO 24      *FILE COUNT NOT EXHAUSTED 
55 IF(ES.AND.CM.NE.0)GOTO 21         *REPEAT MODULE 
   IF(BA.EQ.0)GOTO 57       *NO ERRORS
56 MSG 15 (BA) TO DAYFILE   *REPORT ERRORS
57 EXIT                     *NORMAL TERMINATION 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X04 -
   MODULE T6X05,66X(42,52),LOCK   - READ FM/TM -
*** READ FILEMARK/TAPEMARK
* 
**
*   OVERVIEW - THIS MODULE IS DEPENDENT ON THE TAPE 
*         BEING CREATED BY *T6X04*. 
* 
*         READ FORWARD AND CHECK FOR FM/TM SEQUENCE IS
*         INITIATED. THIS SEQUENCE CONTINUES UNTIL EOT OR 
*         FILE MAX IS ENCOUNTERED.
* 
*         READ REVERSE IS THEN INITIATED WHICH CONTINUES
*         UNTIL LOADPOINT IS ENCOUNTERED. 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS - 
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3*
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. READ FORWARD 
*         5. WAIT NOT BUSY IF SELECTED *P3* 
*         6. REPORT FM/TM ERRORS IF STATUS NOT RECEIVED 
*            IF *P4* SELECTS OPTION 
*         7. IF EOT, EXIT LOOP TO 9.
*         8. IF NO ERRORS AND NOT EOT LOOP TO 3.
*         9. IF EOT WAIT UNCONDITIONAL NOT BUSY 
*        10. RELEASE-DELAY-RESERVE
*        11. READ REVERSE 
*        12. WAIT NOT BUSY IF SELECTED *P3* 
*        13. IF LOADPOINT, TERMINATE
*        14. REPORT FM/TM ERROR IF STATUS NOT RECEIVED
*        15. LOOP TO 10. UNTIL BOT
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
*   ERRORS DETECTED - 
* 
*         -PRODUCT OVERLAY ERRORS 
* 
*         -EC 252- FILE MARK STATUS IS MISSING AT END-OF-OPERATION
*                  DURING READ FILE MARK TEST.
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B6 = LOOP COUNT
* 
*  B2 = FILE LIMIT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X05 - READ FILEMARK/TAPEMARK -
 2 FORMAT T6X05 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X05 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T6X05 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T6X05 - ABORT ON .READ FWD. COMMAND - 
 7 FORMAT T6X05 - ABORT ON .RES. COMMAND -
10 FORMAT T6X05 - ABORT ON .REL. COMMAND -
11 FORMAT T6X05 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T6X05 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X05 ERROR(S) IN MODULE = *DEC 
   EQUATE EOT TO 10, FILEMK TO 20, LOADPT TO 4
* 
*         REWIND TAPE 
* 
20 MSG 1 TO DISPLAY,PRINT   *RUNNING MESSAGE
   BA=0                     *CLEAR ERROR COUNTER
   B0 = P3 RS 6             *MARGIN BITS TO B7
   MARGINS B0               *SELECT MARGINS PER PARAM P3
   CALL 98P                 *CHECK PARAMETERS 
21 B0=0 
   B7 = 7 
   RES P1, ABT 74           *RESERVE
   B7 = 4 
   REWIND,ABT 74
   B2 = P8                  *FILE MAX MAINT MODE
   IF(P3.AND.40.NE.0)GOTO 24  *MAINTENANCE MODE SELECTED
   B2 = 100                 *FILE MAX DIAG MODE 
24 GOSUB 60                 *RESERVE
* 
*         READ FORWARD
* 
   B7 = 6 
   READ FWD , ABT 74
   B0 = B0 + 1                        *INCREMENT FILE COUNT 
   IF(P3.AND.20.NE.0)GOTO 30          *BYPASS WAIT NOT BUSY 
   B7 = 11
   WAITNB, ABT 74 
30 IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/252, GOSUB 70  *FM/TM 
   IF(SB(1).AND.EOT.NE.0)GOTO 33      *EOT DETECTED 
   IF(B2.EQ.0)GOTO 24       *INFINITE FILE COUNT
   IF(B0.LT.B2)GOTO 24      *FILE COUNT NOT EXHAUSTED 
33 GOSUB 60                 *RESERVE
   B7 = 11
   WAITNB, ABT 74 
* 
*         READ REVERSE
* 
34 GOSUB 60                           *RESERVE
   B7 = 5 
   READ REV , ABT 74
   IF(P3.AND.20.NE.0)GOTO 40          *BYPASS WAIT NOT BUSY 
   B7 = 11
   WAITNB, ABT 74 
40 IF(SB(1).AND.LOADPT.NE.0)GOTO 52   *LOAD POINT DETECTED
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/252, GOSUB 70  *NO FM/TM
   B0 = B0 - 1                        *DECREMENT FILE COUNT 
   GOTO 34
52 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 53  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
53 IF(ES.AND.CM.NE.0)GOTO 21           *REPEAT MODULE 
   IF(BA.EQ.0)GOTO 57       *NO ERRORS
56 MSG 15 (BA) TO DAYFILE   *REPORT ERRORS
57 EXIT                               *NORMAL TERMINATION 
* 
*         RELEASE - DELAY - RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 10
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 7 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X05 -
   MODULE T6X06,66X(42,52),LOCK   - BACKSPACE - 
*** BACKSPACE 
* 
**
*   OVERVIEW -
*         WRITES 3 RECORDS AT THE LENGTH SPECIFIED
*         IN *P2*.
*         (RECOMMEND THAT P2 CONTAINS AN EVEN NO OF 
*         PPU BYTES FOR ODD RECORD DETECTION ON A READ.)
*         UNIQUE DATA IS WRITTEN- RECORD 1 = 1111,RECORD
*         2 = 2222, RECORD 3 = 3333.
* 
*           IF AN ERROR OCCURS THE PROCESS IS REPEATED
*         UNTIL AN ERROR FREE WRITE OCCURS. A BACKSPACE 
*         AND A REVERSE READ IS THEN PERFORMED. A CHECK 
*         FOR PROPER WORD COUNT AND RECORD 2 CONTENT(2222)
*         IS MADE.
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERE THE UNIT SPECIFIED BY THE *ASSIGN*
*            DIRECTIVE ACCORDING TO THE HARDWARE DEFINI-
*            TION *P1* AND MARGINS *P3* 
*         2. REWIND 
*         3. CHECK FOR A/D MODE AND MAINTENANCE/DIAGNOSTIC
*            MODE 
*         4. RELEASE-DELAY-RESERVE
*         5. UNCONDITIONAL WAIT NOT BUSY
*         6. FILL OUTPUT BUFFER WITH PATTERN FOR THIS RECORD
*         7. RELEASE-DELAY-RESERVE
*         8. WRITE
*         9. IF EOT, EXIT 
*        10. CHECK FOR ERROR, IF ERROR REPEAT TO 4. 
*        11. REPEAT TO 6. UNTIL 3 RECORDS WRITTEN 
*        12. UNCONDITIONAL WAIT NOT BUSY
*        13. RELEASE-DELAY-RESERVE
*        14. BACKSPACE
*        15. CHECK FOR ERROR
*        16. IF NO ERROR, RELEASE-DELAY-RESERVE 
*        17. READ REVERSE 
*        18. CHECK FOR GENERAL STATUS ERROR 
*        19. P2 WORD COUNT EQUALITY 
*        20. CHECK IF RECORD 2 = 2222 
*        21. REPEAT TO 4., UNTIL FILE MAX REACHED 
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN A GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE- OPERATION. 
* 
*         -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE OPERATION.
* 
*         -EC 254- THE ALERT BIT WAS SET IN GENERAL STATUS FOLLOWING
*                  THE FIRST READ REVERSE OPERATION AFTER A BACKSPACE 
*                  OPERATION. 
* 
* 
*         -EC 255- AN INCORRECT RECORD LENGTH WAS DETECTED DURING A 
*                  BACKSPACE OPERATION. 
* 
* 
*         -EC 256- AN INCORRECT RECORD HAS BEEN DETECTED FOLLOWING A
*                  BACKSPACE OPERATION. (B1) WILL CONTAIN THE 
*                  ACTUAL RECORD DETECTED.
* 
* 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD CONTENTS 
* 
*  B2 = 0 - SHIFT COUNT FOR PACKED MODE 
*     = 1 - SHIFT COUNT WHEN NOT PACKED MODE
* 
*  B3 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X06 - BACKSPACE - 
 2 FORMAT T6X06 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X06 - ABORT ON .BKSP. COMMAND - 
 5 FORMAT T6X06 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T6X06 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T6X06 - ABORT ON .RES. COMMAND -
10 FORMAT T6X06 - ABORT ON .REL. COMMAND -
11 FORMAT T6X06 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T6X06 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T6X06 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X06 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 7474 
* 
*         REWIND
* 
20 MSG 1 TO DISPLAY,PRINT   *RUNNING MESSAGE
   BA=0                     *CLEAR ERROR COUNTER
   B0 = P3 RS 6             *MARGIN BITS TO B7
   MARGINS B0               *SELECT MARGINS PER PARAM P3
   WC=P2
   CALL 98P                 *CHECK PARAMETERS 
21 B0=0 
   B7 =7
   RES P1, ABT 74           *RESERVE
   B7 = 11
   REWIND,ABT 74
   IF(P1.AND.30.NE.10) GOTO 22  *A/D PACKED MODE SELECTED 
   B2=1 
   IF(WC.AND.1.EQ.0) GOTO 22
   B2=13
22 B3 = 100                 *FILE MAX DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8                  *FILE MAX MAINT MODE
24 B0 = B0 + 1              *INCREMENT FILE COUNT 
   GOSUB 60                 *RELEASE-DELAY-RESERVE
   B7 = 12
   WAITNB, ABT 74 
   B1 = 1111                *SET RECORD CONTENTS
* 
*         WRITE 3 RECORDS WITH UNIQUE DATA
* 
30 DUP B1 TO OB FOR 500      *STORE DATA PATTERN
32 GOSUB 60                  *RELEASE-DELAY-RESERVE 
34 B7 = 6 
   WRITE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35          *BYPASS WAIT NOT BUSY 
   B7 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 55      *EOT DETECTED 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 36
   ERROR 2/200,GOSUB 70 
   GOTO 24                            *WRITE ERROR FREE 
36 GOTO 30 WHILE(B1 + 1111.NE.4444)   *WRITE 3 RECORDS
* 
*         BACKSPACE 
* 
   B7 =12 
   WAITNB, ABT 74 
   GOSUB 60                 *RELEASE-DELAY-RESERVE
   B7 = 4 
   BKSP , ABT 74
   IF(P3.AND.20.NE.0)GOTO 40          *BYPASS WAIT NOT BUSY 
   B7 = 12
   WAITNB, ABT 74 
40 IF(SB(1).AND.ALERT.NE.0)ERROR 2/253, GOSUB 70  *ALERT
* 
*         READ REVERSE
* 
   GOSUB 60 
   B7 = 5 
   READ REV , ABT 74
   IF(SB(1).AND.ALERT.EQ.0)GOTO 41
   ERROR 2/254,GOSUB 70 
   GOTO 45                              *GENERAL STS ERR
41 B5=WT
   IF(P1.AND.30.NE.10) GOTO 42
   IF(SB(1).AND.40.EQ.0) GOTO 42
   B5=B5-1
42 IF(B5.EQ.WC)GOTO 43             *NOT WORD COUNT ERROR
   ERROR 2/255,GOSUB 70 
   GOTO 45
43 B1=IB(0) 
   IF(B1.LS.B2.NE.2222)ERROR 2/256 , GOSUB 70 
* 
*         END MODULE
* 
45 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 46  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
46 IF(B3.EQ.0)GOTO 24       *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 24      *LOOP FILE MAX TIMES
55 IF(ES.AND.CM.NE.0)GOTO 21          *REPEAT MODULE SELECTD
   IF(BA.EQ.0)GOTO 57       *NO ERRORS
56 MSG 15 (BA) TO DAYFILE   *REPORT ERRORS
57 EXIT                     *NORMAL TERMINATION 
* 
*         RELEASE,DELAY,RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 10
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 7 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X06 -
   MODULE T6X07,66X(42,52),LOCK   - CONTROL BACKSPACE, FINDGAP -
*** CONTROL BACKSPACE, FIND GAP 
* 
**
*   OVERVIEW -
* 
*         THIS MODULE USES THE FUNCTION *CONTROLLED 
*         BACKSPACE, FIND GAP* DURING REPOSITIONING.
*         THE RECORD LENGTH *P2* IS USED TO DETERMINE 
*         THE DISTANCE OF THE MOVE. MOTION IS IN THE
*         REVERSE DIRECTION UNTIL AN ERASED AREA (GAP)
*         IS DETECTED.
* 
*           THREE RECORDS OF UNIQUE DATA ARE WRITTEN
*         (1111,2222,3333) ERROR FREE. THEN THE *CONTROL
*         BACKSPACE,FIND GAP* FUNCTION IS ISSUED. 
*         FOLLOWING THIS A REVERSE READ IS ISSUED. WORD 
*         COUNT IS THEN COMPARED WITH THE WORDS TRANSMITTED.
*         NEXT THE RECORD CONTENTS ARE CHECKED TO DETERMINE 
*         IF THEY ARE EQUAL TO 2222.
* 
*         THIS PROCESS CONTINUES UNTIL FILE MAX OR EOT. 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECFIED BY THE *ASSIGN*
*            DIRECTIVE ACCORDING TO THE HARDWARE DEFINITION 
*            *P1* AND MARGINS SPECIFIED *P3*. 
*         2. REWIND 
*         3. CHECK FOR A/D MODE*P1* AND MAINTENANCE MODE*P3*
*         4. RELEASE-DELAY-RESERVE
*         5. FILL OUTPUT BUFFER WITH UNIQUE PATTERN 
*         6. WRITE
*         7. IF EOT , EXIT
*         8. IF ERROR DETECTED, LOOP TO 4.
*         9. IF NO ERROR, INCREMENT RECORD CONTENTS AND LOOP
*            TO 4 UNTIL 3 RECORDS WRITTEN 
*        10. RELEASE-DELAY-RESERVE
*        11. CONTROLLED BACKSPACE, FIND GAP 
*        12. CHECK FOR ERROR
*        13. READ REVERSE 
*        14. CHECK FOR ERROR
*        15. CHECK IF WORDS TRANSMITTED EQUAL WORD COUNT
*        16. CHECK IF RECORD CONTENTS EQUAL 2222
*        17. REPEAT TO 4 UNTIL FILE MAX OR EOT REACHED
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE- OPERATION. 
* 
*         -EC 214- A STATUS ERROR HAS OCCURRED ON A READ REVERSE
*                  FOLLOWING A -CONTROLLED BACKSPACE, FIND GAP- 
*                  OPERATION. 
* 
* 
*         -EC 217- ALERT IS SET AFTER THE OUTPUT OF THE PARAMETER 
*                  WORDS. NOTE THAT THIS ERROR OCCURS ONLY WHEN 
*                  FUNCTIONS REQUIRING THE PARAMETER WORDS HAVE BEEN
*                  ISSUED.
* 
* 
*         -EC 220- A STATUS ERROR OCCURRED ON THE READ BACKWARDS
*                  FOLLOWING A CONTROLLED BACKSPACE OPERATION.
* 
*         -EC 221- AN INCORRECT RECORD HAS BEEN DETECTED FOLLOWING A
*                  CONTROLLED BACKSPACE. (B1) WILL CONTAIN THE
*                  ACTUAL RECORD DETECTED.
* 
*         -EC 222- IMPROPER RECORD LENGTH WAS DETECTED ON A CONTROLLED
*                  BACKSPACE. 
* 
* 
*** INTERNAL DOCUMENTATION
* 
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD CONTENTS 
* 
*  B2 = SHIFT COUNT FOR COMPARE ON REV READ 
* 
*  B3 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X07 - CONTROL BACKSPACE, FIND GAP - 
 2 FORMAT T6X07 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X07 - ABORT ON .BKSP. COMMAND - 
 5 FORMAT T6X07 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T6X07 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T6X07 - ABORT ON .RES. COMMAND -
10 FORMAT T6X07 - ABORT ON .REL. COMMAND -
11 FORMAT T6X07 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T6X07 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T6X07 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X07 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 7474 
* 
*         REWIND
* 
20 MSG 1 TO DISPLAY,PRINT   *RUNNING MESSAGE
   BA=0                     *CLEAR ERROR COUNTER
   B0 = P3 RS 6             *MARGIN BITS TO B7
   MARGINS B0               *SELECT MARGINS PER PARAM P3
   WC=P2
   CALL 98P                 *CHECK PARAMETERS 
21 B0=0 
   B7 = 7 
   RES P1, ABT 74           *RESERVE
   B7 = 11
   REWIND,ABT 74
   IF(P1.AND.30.NE.10)GOTO 22  *A/D PACKED MODE NOT SELECTED
   B2 = 1                   *B2 IS SHIFT CNT FOR REC COMPARE
   IF(WC.AND.1.EQ.0) GOTO 22
   B2=13
22 B3 = 100                 *FILE COUNT DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8                  *FILE COUNT MAINT MODE
* 
*         WAIT NOT BUSY 
* 
24 GOSUB 60 
   B0 = B0 + 1              *INCREMENT FILE COUNT 
   B7 = 12
   WAITNB, ABT 74 
   B1 = 1111
* 
*         WRITE 3 RECORDS 
* 
30 DUP 14 BITS OF B1 TO OB FOR 500
32 GOSUB 60 
34 B7 = 6 
   WRITE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35          *BYPASS WAIT NOT BUSY 
   B7 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 55      *EOT DETECTED 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 36
   ERROR 2/200,GOSUB 70 
   GOTO 24                            *WRITE NOT ERROR FREE 
36 GOTO 30 WHILE(B1 + 1111.NE.4444)   *ALL RECS NOT WRITTEN 
   B7 = 12
   WAITNB, ABT 74 
   GOSUB 60                           *RELEASE-DELAY-RESERVE
* 
*        ISSUE CONTROLLED BACKSPACE, FOR CORRECT POSITIONING
* 
   WC = WT
   B7 = 4 
   BKSP C , ABT 74
   IF(SB(1).AND.ALERT.EQ.0)GOTO 37     *NOT ALERT 
   ERROR 2/217,GOSUB 70 
   GOTO 45
37 B7 = 12
   WAITNB, ABT 74 
   IF(SB(1).AND.ERROR.NE.0)ERROR 2/214 , GOSUB 70 
* 
*         READ REVERSE
* 
   GOSUB 60 
   B7 = 5 
   READ REV , ABT 74
   IF(SB(1).AND.ALERT.EQ.0)GOTO 41
   ERROR 2/220,GOSUB 70 
   GOTO 45
41 B5=WT
   IF(P1.AND.30.NE.10) GOTO 42
   IF(SB(1).AND.40.EQ.0) GOTO 42
   B5=B5-1
42 IF(B5.EQ.WC)GOTO 43             *NOT WORD COUNT ERROR
   ERROR 2/222,GOSUB 70 
   GOTO 45
43 B1=IB(0) 
   IF(B1.LS.B2.NE.2222)ERROR 2/221 , GOSUB 70 
* 
*         END MODULE
* 
45 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 46  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
46 IF(B3.EQ.0)GOTO 24       *INFINITE FILE COUNT
   IF(B0.LT.B3)GOTO 24      *MORE FILES TO BE WRITTEN 
55 IF(ES.AND.CM.NE.0)GOTO 21          *REPEAT MODULE SELECTD
   IF(BA.EQ.0)GOTO 57       *NO ERRORS
56 MSG 15 (BA) TO DAYFILE   *REPORT ERRORS
57 EXIT 
* 
*         RELEASE,DELAY RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 10
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 7 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X07 -
   MODULE T6X08,66X(42,52),LOCK   - LONG BACKSPACE -
*** LONG BACKSPACE
* 
**
*   OVERVIEW -
* 
*         THIS MODULE WRITES 5 UNIQUE RECORDS (1111,2222, 
*         3333,4444,5555) OF THE LENGTH SPECIFIED IN *P2*.
*         WHEN RECORD 4 IS WRITTEN ERROR FREE A *LONG 
*         BACKSPACE* FUNCTION IS ISSUED.
* 
*         A FORWARD READ IS THEN INITIATED. CONTENTS OF 
*         THE RECORD ARE CHECKED FOR EQUALITY WITH 4444.
*         THE PROCESS IS REPEATED UNTIL EOT OR FILE MAX IS
*         REACHED.
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS - 
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORIDNG TO THE HARDWARE DEFINTION
*            *P1* AND MARGINS *P3* SPECIFIED
*         2. REWIND 
*         3. CHECK FOR MAINTENANCE MODE 
*         4. RELEASE-DELAY-RESERVE
*         5. FILL OUTPUT BUFFER WITH UNIQUE PATTERN 
*         6. WRITE
*         7. IF EOT, EXIT 
*         8. CHECK FOR ERROR, IF NO ERROR LOOP TO 4 UNTIL 
*            5 RECORDS WRITTEN
*         9. RELEASE-DELAY-RESERVE
*        10. LONG BACKSPACE 
*        11. CHECK FOR ERROR
*        12. RELEASE-DELAY-RESERVE
*        13. READ FORWARD 
*        14. CHECK FOR ERROR
*        15. CHECK FOR RECORD CONTENTS EQUAL TO 4444
*        16. REPEAT TO 4 UNTIL FILE MAX WRITTEN 
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         -PRODUCT OVERLAY ERRORS 
* 
*         -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE- OPERATION. 
* 
* 
*         -EC 223-THE ALERT BIT WAS SET IN GENERAL STATUS AFTER A 
*                 LONG BACKSPACE OPERATION. 
* 
* 
* 
*         -EC 224- A STATUS ERROR OCCURRED ON THE FIRST FORWARD READ
*                  OPERATION FOLLOWING A LONG BACKSPACE OPERATION.
* 
*         -EC 225- INCORRECT RECORD DETECTED FOLLOWING A LONG BACKSPACE.
* 
*** INTERNAL DOCUMENTATION
* 
* 
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD CONTENTS 
* 
*  B3 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X08 - LONG BACKSPACE -
 2 FORMAT T6X08 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X08 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T6X08 - ABORT ON .BKSP. COMMAND - 
 6 FORMAT T6X08 - ABORT ON .READ FWD. COMMAND - 
 7 FORMAT T6X08 - ABORT ON .WRITE. COMMAND -
10 FORMAT T6X08 - ABORT ON .RES. COMMAND -
11 FORMAT T6X08 - ABORT ON .REL. COMMAND -
12 FORMAT T6X08 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T6X08 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X08 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 7474 
* 
*         REWIND TAPE 
* 
20 MSG 1 TO DISPLAY,PRINT   *RUNNING MESSAGE
   BA=0                     *CLEAR ERROR COUNTER
   B0 = P3 RS 6             *MARGIN BITS TO B7
   MARGINS B0               *SELECT MARGINS PER PARAM P3
   WC=P2
   CALL 98P                 *CHECK PARAMETERS 
21 B0=0 
   B7 = 10
   RES P1, ABT 74           *RESERVE
   B7 = 4 
   REWIND,ABT 74
   B3 = 100                 *FILE MAX FOR DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8                  *FILE MAX FOR MAINT MODE
24 B0 = B0 + 1              *INCREMENT FILE COUNT 
   B1 = 1111                *SET RECORD COUNT 
30 DUP 14 BITS OF B1 TO OB FOR 500
   IF(P3.AND.1.NE.0)GOTO 32  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
32 GOSUB 60 
* 
*         WRITE 5 RECORDS (RECORD 4444 ERROR FREE)
* 
34 B7 = 7 
   WRITE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35          *BYPASS WAIT NOT BUSY 
   B7 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 55      *EOT DETECTED 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 36    *NO ERROR DETECTED
   ERROR 2/200 , GOSUB 70 
   GOTO 24                            *TRY AGAIN IF ERROR 
36 GOTO 30 WHILE(B1 + 1111.NE.6666)    *WRITE 5 RECORDS 
   B7 = 12
   WAITNB, ABT 74 
   GOSUB 60                 *RELEASE-DELAY-RESERVE
* 
*         BACKSPACE - LONG
* 
   B7 = 5 
   BKSP L, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 40          *BYPASS WAIT NOT BUSY 
   B7 = 12
   WAITNB, ABT 74 
40 IF(SB(1).AND.ALERT.NE.0)ERROR 2/223,GOSUB 70  *ALERT 
   GOSUB 60                 *RELEASE-DELAY-RESERVE
* 
*         READ FORWARD
* 
   B7 = 6 
   READ FWD , ABT 74
   IF(P3.AND.20.NE.0)GOTO 44          *BYPASS WAIT NOT BUSY 
   B7 = 12
   WAITNB, ABT 74 
44 IF(SB(1).AND.ALERT.EQ.0)GOTO 45
   ERROR 2/224,GOSUB 70 
   GOTO 50
45 B1 = 4444
   IF(IB(0).NE.4444)ERROR 2/225 , GOSUB 70
* 
*         END MODULE
* 
50 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 51  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
51 IF(B3.EQ.0)GOTO 24       *INFINITE FILE COUNT
   IF(B0.LT.B3)GOTO 24      *MORE FILES TO BE WRITTEN 
55 IF(ES.AND.CM.NE.0)GOTO 21          *REPEAT MODULE SELECTD
   IF(BA.EQ.0)GOTO 57       *NO ERRORS
56 MSG 15 (BA) TO DAYFILE   *REPORT ERRORS
57 EXIT                     *NORMAL TERMINATION 
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 11
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 10
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X08 -
   MODULE T6X09,66X(42,52),LOCK   - ERASE - 
*** ERASE 
* 
**
*   OVERVIEW - AN ERASE FUNCTION IS ISSUED, THEN GENERAL
*         STATUS IS CHECKED FOR AN *ALERT*. THIS PROCESS
*         CONTINUES UNTIL FILE MAX OR EOT IS REACHED. 
* 
*         A FILE MARK/TAPE MARK IS THEN WRITTEN AND TAPE
*         IS REWOUND TO LOADPOINT. A FORWARD READ IS THEN 
*         INITIATED AND IS REPEATED UNTIL FM/TM OR EOT
*         IS ENCOUNTERED. ANY DATA ENCOUNTERED IS REPORTED
*         AS AN ERROR.
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS - 
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE DEFINITION 
*            *P1* AND MARGINS *P3*
*         2. REWIND 
*         3. CHECK FOR MAINTENANCE MODE 
*         4. ERASE
*         5. IF *EOT* WRITE AN *EOF*
*         6. CHECK FOR *ALERT*
*         7. LOOP TO 4 UNTIL FILE MAX WRITTEN 
*         8. REWIND 
*         9. READ FORWARD 
*        10. IF *EOT* TERMINATE 
*        11. IF DATA IS ENCOUNTERED REPORT AN ERASE ERROR 
*        12. REPEAT TO 9 UNTIL *EOT* OR *FM/TM* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
*   ERRORS DETECTED - 
* 
*         -PRODUCT OVERLAY ERRORS - 
* 
*         -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT
*                  END OF OPERATION, AFTER A WRITE FM/TM
* 
*         -EC 231- DATA ENCOUNTEREDIN AN ERASED AREA ON A 
*                  READ FORWARD FOLLOWING AN ERASE OF TAPE
* 
*         -EC 245- AN ALERT STATUS OCCURRED AFTER AN ERASE               T6X004J
*                  OPERATION. 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B3 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
/ 
 1 FORMAT T6X09 - ERASE - 
 2 FORMAT T6X09 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X09 - ABORT ON .ERASE. COMMAND -
 5 FORMAT T6X09 - ABORT ON .ENDFILE. COMMAND -
 6 FORMAT T6X09 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X09 - ABORT ON .REL. COMMAND -
10 FORMAT T6X09 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X09 - ABORT ON .WAITNB. COMMAND - 
12 FORMAT T6X09 - ABORT ON .READ FWD. COMMAND - 
14 FORMAT T6X09 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X09 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
*         REWIND
* 
20 MSG 1 TO DISPLAY, PRINT  *RUNNING MESSAGE
   BA=0                     *CLEAR ERROR COUNTER
   B0 = P3 RS 6             *MARGIN BITS TO B7
   MARGINS B0               *SELECT MARGINS PER PARAM P3
   CALL 98P                 *CHECK PARAMETERS 
21 B0=0 
   B1=0 
   B7 =6
   RES P1, ABT 74           *RESERVE
   B7 = 10
   REWIND, ABT 74 
   B3 = 100                 *FILE MAX FOR DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8                  *FILE MAX FOR MAINT MODE
24 GOSUB 60                *RELEASE-DELAY-RESERVE 
* 
*         ERASE 
* 
   B7 = 4 
   ERASE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 30          *BYPASS WAIT NOT BUSY 
   B7 = 11
   WAITNB, ABT 74 
30 IF(SB(1).AND.EOT.NE.0)GOTO 33      *EOT DETECTED 
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/245, GOSUB 70  *ALERT
   IF(B3.EQ.0)GOTO 24                 *LOOP IF FILE MAX IS 0
   GOTO 24 WHILE(B0 + 1.LT.B3)        *LOOP FILEMAX TIMES 
33 B1 = 0                             *ZERO RECORD COUNT
   B0 = B0 + 1                        *INCREMENT FILE COUNT 
   GOSUB 60                           *RESERVE
   B7 = 11
   WAITNB, ABT 74                     *UNCONDITIONAL WAIT 
* 
*         WRITE FILEMARK/TAPEMARK 
* 
   B7 = 5 
   ENDFILE , ABT 74 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/122, GOSUB 70  *NO FM/TM
   GOSUB 60                           *RESERVE
   IF(P3.AND.20.NE.0)GOTO 40          *BYPASS WAIT NOT BUSY 
   B7 = 11
   WAITNB, ABT 74 
40 B7 = 10
   REWIND, ABT 74 
* 
*         READ TO DETECT ERASE ERROR
* 
42 GOSUB 60 
   B7 = 12
   READ FWD,ABT 74
   IF(SB(1).AND.FILEMK.NE.0)GOTO 54   *FM/TM DETECTED 
   IF(SB(1).AND.EOT.NE.0)GOTO 54      *EOT DETECTED 
   IF(IB(0).NE.0)ERROR 2/231,GOSUB 70  *DATA FRAGMENT ERROR 
   GOTO 42
* 
*         END MODULE
* 
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 55  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
55 IF(ES.AND.CM.NE.0)GOTO 21          *REPEAT MODULE SELECTD
   IF(BA.EQ.0)GOTO 57       *NO ERRORS
56 MSG 15 (BA) TO DAYFILE   *REPORT ERRORS
57 EXIT                     *NORMAL TERMINATION 
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T6X09 -
   MODULE T6X10,66X(42,52),LOCK   -WRITE REPOSITION TO ERASE- 
*** WRITE REPOSITION TO ERASE 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - THIS MODULE PERFORMS A TEST IN THE FOLLOWING
*            MANNER. AN -ERASE- IS ISSUED TO MOVE TAPE FROM 
*            LOADPOINT. A WRITE OF ONE RECORD IS THEN FOLLOW- 
*            ED BY A -WRITE REPOSITION TO ERASE- (BKSP WRE).
*            AN ERASE IS THEN ISSUED. THIS SEQUENCE CONTINUES 
*            UNTIL FILE/RECORD MAX OR -EOT-, WHEN A FM/TM IS
*            WRITTEN TO TERMINATE OPERATIONS. 
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. ERASE
*         5. WAIT NOT BUSY
*         6. WRITE
*         7. WAIT NOT BUSY
*         8. RELEASE-DELAY-RESERVE
*         9. WRITE REPOSTION TO ERASE 
*        10. WAIT NOT BUSY
*        11. RELEASE-DELAY-RESERVE
*        12. ERASE
*        13. WAIT NOT BUSY
*        14. IF EOT OR FILE MAX NOT REACHED REPEAT TO 6.
*        15. ENDFILE
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         -PRODUCT OVERLAY ERRORS - 
* 
* 
*         -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT
*                  END OF OPERATION, AFTER A WRITE FM/TM
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
* 
* 
*         -EC 217- ALERT IS SET AFTER THE OUTPUT OF THE 
*                  PARAMETER WORDS. NOTE THAT THIS ERROR
*                  OCCURS ONLY WHEN FUNCTIONS REQUIRING THE 
*                  PARAMETER WORDS HAVE BEEN ISSUED.
* 
* 
*         -EC 246- AN ALERT STATUS OCCURRED AFTER AN ERASE
*                  OPERATION. 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B2 = BUFFER LIMIT FOR DUP (7 OR 9 TRK) 
* 
*  B3 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X10 - WRITE REPOSITION TO ERASE - 
/ 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 30  *RANDOM PATTERN SELECTED
   B0 = 10
   B1 = 500 
   IF(DC.AND.10.NE.0)GOTO 21   *IF 9 TRACK TAPE.
   B0 = 6                      *TRACK SIZE (6 OR 8) 
* 
*         FILL BUFFER 
* 
21 B3 = P4.XOR.7777B
   IF(P4.AND.3000.NE.1000)B3 = P4   *ALTERNATE PTRN SELCT 
   DUP B0 BITS OF P4/B3 TO OB FOR B1
   GOTO 40
/ 
30 IF(P3.AND.4.NE.0)GOTO 31  *USE RANDOM SEED 
   B2=1                      *SET FLAG FOR REAL TIME CLOCK
   GOTO 40
31 RANDOM TO OB FOR 500 , START P7   *GENERATE PATTERN
/ 
40 B0 = P3 RS 6              *MARGIN BITS TO B7 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   WC = P2                   *RECORD LENGTH TO WC REG 
   CALL 98P                  *CHECK PARAMETERS
/ 
   EXIT TO 101               *EXIT TO NEXT MODULE 
/ 
   END 20 
COMPILE   - T6X10 - 
   MODULE T6X101,66X(42,52),LOCK   -WRITE REPOSITION TO ERASE-
 1 FORMAT T6X10 - WRITE REPOSITION TO ERASE - 
 2 FORMAT T6X10 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X10 - ABORT ON .ERASE. COMMAND -
 5 FORMAT T6X10 - ABORT ON .BKSP WRE. COMMAND - 
 6 FORMAT T6X10 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X10 - ABORT ON .REL. COMMAND -
10 FORMAT T6X10 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X10 - ABORT ON .WAITNB. COMMAND - 
12 FORMAT T6X10 - ABORT ON .ENDFILE. COMMAND -
13 FORMAT T6X10 - ABORT ON .WRITE. COMMAND -
14 FORMAT T6X10 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X10 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* 
*         REWIND
20 B0=0 
   B1=0 
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   B7 = 10
   REWIND,ABT 74            *REWIND 
30 IF(B2.EQ.0) GOTO 31       *RANDM PTRN NOT SELECTED 
   RANDOM TO OB FOR 500 , START RT
31 B3 = 100 
   IF(P3.AND.40.EQ.0)GOTO 32  *DIAGNOSTIC MODE SELECTED 
   B3 = P8                    *FILE MAX MAINT MODE
32 GOSUB 60 
* 
*         ERASE TO MOVE AWAY FROM -BOT- 
* 
   B7 = 4 
   ERASE, ABT 74                      *ERASE
   B7 = 11
   WAITNB, ABT 74 
33 GOSUB 60 
   B0 = B0 +1                *INCREMENT FILE COUNT
   IF(P3.AND.1.NE.0)GOTO 35  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
* 
*         WRITE  1  RECORD OF -P2- LENGTH 
* 
35 B7 = 13
   WRITE, ABT 74                      *WRITE
   B7 = 11
   WAITNB, ABT 74 
   IF(SB(1).AND.EOT.NE.0)GOTO 40   * -EOT- DETECTED 
   IF(SB(1) AND ALERT NE 0)ERROR 2/200 , GOSUB 70 
   GOSUB 60 
* 
*         BACKSPACE (WRITE REPOSITION TO ERASE) 
* 
   B7 = 5 
   BKSP WRE, ABT 74                   *BACKSPACE
   IF(SB(1).AND.ALERT.EQ.0)GOTO 36    *NO ALERT 
   ERROR 2/217, GOSUB 70
   GOTO 30
36 B7 = 11
   WAITNB, ABT 74 
   GOSUB 60 
* 
*         ERASE 
* 
37 B7 = 4 
   ERASE, ABT 74                      *ERASE
   B7 = 11
   WAITNB, ABT 74 
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/246 , GOSUB 70 
   IF(SB(1).AND.EOT.NE.0)GOTO 40   * -EOT- DETECTED 
   IF(B3.EQ.0)GOTO 33           *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 33          *LOOP FILEMAX TIMES 
* 
*         WRITE (EOF) 
* 
40 B7 = 12
   ENDFILE, ABT 74
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/122 , GOSUB 70
* 
*         END MODULE
* 
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 55  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
55 IF (ES.AND.CM.NE.0) GOTO 20
   IF(BA.EQ.0)GOTO 57                   *NO ERRORS
56 MSG 15 (BA) TO DAYFILE 
57 EXIT                               *NORMAL EXIT
* 
*         RELEASE-DELAY-RESERVE 
* 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X101 -
   MODULE T6X11,66X(42,52),LOCK  -WRITE REPOSITION TO ERASE,CTRL BKSP-
*** WRITE REPOSITION TO ERASE, CONTROL BACKSPACE
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - THIS MODULE PERFORMS A TEST IN THE FOLLOWING
*            MANNER. AN -ERASE- IS ISSUED TO MOVE TAPE FROM 
*            LOADPOINT. A WRITE OF ONE RECORD IS THEN FOLLOW- 
*            ED BY A -WRITE REPOSITION TO ERASE, CONTROLLED 
*            BACKSPACE- (BKSP WREC). AN ERASE IS THEN ISSUED. 
*            THIS SEQUENCE CONTINUES UNTIL FILE/RECORD MAX
*            OR -EOT-, WHEN A FM/TM IS WRITTEN TO TERMINATE 
*            OPERATIONS.
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. ERASE
*         5. WAIT NOT BUSY
*         6. WRITE
*         7. WAIT NOT BUSY
*         8. RELEASE-DELAY-RESERVE
*         9. WRITE REPOSTION TO ERASE, CONTROLLED BACKSPACE 
*        10. WAIT NOT BUSY
*        11. RELEASE-DELAY-RESERVE
*        12. ERASE
*        13. WAIT NOT BUSY
*        14. IF EOT OR FILE MAX NOT REACHED REPEAT TO 6.
*        15. ENDFILE
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         -PRODUCT OVERLAY ERRORS - 
* 
* 
*         -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF 
*                  OPERATION, AFTER A WRITE FM/TM.
* 
* 
*         -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE- OPERATION. 
* 
*         -EC 217- ALERT AFTER THE OUTPUT OF PARAMETER WORDS
* 
*         -EC 246- STATUS ERROR DURING READ FORWARD OF ERASED AREA
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B2 = RANDOM SEED 
*        FOR PATTERN GENERATOR
*     = BUFFER LIMIT FOR DUP (7 OR 9 TRK) 
* 
*  B4 = PATTERN FOR STORING 
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X11 - WRITE REPOSITION TO ERASE, CONTROL BKSP - 
/ 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 30  *RANDOM PATTERN SELECTED
   B0 = 10
   B1 = 500 
   IF(DC.AND.10.NE.0)GOTO 21   *IF 9 TRACK TAPE.
   B0 = 6                      *TRACK SIZE (6 OR 8) 
* 
*         FILL BUFFER 
* 
21 B3 = P4.XOR.7777B
   IF(P4.AND.3000.NE.1000)B3 = P4   *ALTERNATE PTRN SELCT 
   DUP B0 BITS OF P4/B3 TO OB FOR B1
   GOTO 40
/ 
30 IF(P3.AND.4.NE.0)GOTO 31  *USE RANDOM SEED 
   B2=1                      *SET FLAG FOR REAL TIME CLOCK
   GOTO 40
31 RANDOM TO OB FOR 500 , START P7   *GENERATE PATTERN
/ 
40 B0 = P3 RS 6              *MARGIN BITS TO B7 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   WC = P2                   *RECORD LENGTH TO WC REG 
   CALL 98P                  *CHECK PARAMETERS
/ 
   EXIT TO 111
/ 
   END 20 
COMPILE   - T6X11 - 
   MODULE T6X111,66X(42,52),LOCK   -WRT REPOS TO ERASE,CB 
 1 FORMAT T6X11 - WRITE REPOSITION TO ERASE, CONTROL BKSP - 
 2 FORMAT T6X11 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T6X11 - ABORT ON .ENDFILE. COMMAND -
 4 FORMAT T6X11 - ABORT ON .ERASE. COMMAND -
 5 FORMAT T6X11 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T6X11 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X11 - ABORT ON .REWIND. COMMAND - 
10 FORMAT T6X11 - ABORT ON .REL. COMMAND -
11 FORMAT T6X11 - ABORT ON .BKSP WREC. COMMAND -
12 FORMAT T6X11 - ABORT ON .WAITNB. COMMAND - 
13 FORMAT T6X11 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X11 - LC=*DEC,ERCNT=*DEC
15 FORMAT T6X11 ERROR(S) IN MODULE = *DEC 
   EQUATE DETAIL3 TO 4140, EOT TO 10, ERROR TO 7474 
   EQUATE ALERT TO 4000, FILEMK TO 20 
* 
*         REWIND
* 
20 B0=0 
   B1=0 
   B7=6 
   RES P1,ABT 74
   B7=7 
   REWIND,ABT 74
22 B3 = 100 
   IF(P3.AND.40.EQ.0)GOTO 30  *DIAGNOSTIC MODE SELECTED 
   B3 = P8
* 
*         GENERATE PATTERN
* 
30 IF(B2.EQ.0) GOTO 31       *RANDM PTRN NOT SELECTED 
   RANDOM TO OB FOR 500 , START RT
31 GOSUB 60 
* 
*         ERASE TO POSITION AWAY FROM -BOT- 
* 
   B7 = 4 
   ERASE , ABT 74                     *ERASE
   B7 = 12
   WAITNB, ABT 74 
33 GOSUB 60 
   B0 = B0 +1                         *INCREMENT FILE COUNT 
   IF(P3.AND.1.NE.0)GOTO 36           *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
* 
*         WRITE  1  RECORD OF *P2* LENGTH 
* 
36 B7 = 5 
   WRITE , ABT 74                     *WRITE
   B7 = 12
   WAITNB, ABT 74 
   IF(SB(1).AND.EOT.NE.0)GOTO 44   * -EOT- DETECTED 
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/200 , GOSUB 70 
   GOSUB 60 
* 
*         BACKSPACE /USING WRITE REPOSITION TO ERASE/ 
*                   /WITH CONTROLLED BACKSPACE       /
* 
   B7 = 11
   BKSP WREC , ABT 74                 *BACKSPACE
   IF(SB(1).AND.ALERT.EQ.0)GOTO 37    *NO ALERT ON BKSP WREC
   ERROR 2/217, GOSUB 70
   GOTO 31
37 B7 = 12
   WAITNB, ABT 74 
   GOSUB 60 
* 
*         ERASE 
* 
40 B7 = 4 
   ERASE , ABT 74                      *ERASE 
   B7 = 12
   WAITNB, ABT 74 
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/246 , GOSUB 70 
   IF(SB(1).AND.EOT.NE.0)GOTO 44
   IF(B3.EQ.0)GOTO 33       *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 33      *LOOP FILEMAX TIMES 
* 
*         WRITE -EOF- 
* 
44 B7 = 3 
   ENDFILE , ABT 74                     *WRITE -EOF-
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/122 , GOSUB 70
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 55  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
55 IF (ES.AND.CM.NE.0) GOTO 20
   IF (BA.EQ.0) GOTO 57 
56 MSG 15 (BA) TO DAYFILE 
57 EXIT                                 *NORMAL EXIT
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 10
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X111 -
   MODULE T6X12,66X(42,52),LOCK   -RANDOM WRITE-
*** RANDOM WRITE
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - CREATES THE TAPE USED FOR RANDOM READ IN
*            MODULE -T6X13- 
* 
*              THIS MODULE WILL WRITE RANDOM LENGTH RECORDS FROM  0004
*         TO  7777  BY  READING THE REAL TIME CLOCK.  EACH RECORD WILL
*         CONTAIN UNIQUE ADDRESSING  INFORMATION  (RECORD,  FILE,  AND
*         LENGTH),  THAT  WILL BE UTILIZED IN RANDOM READ TO DETERMINE
*         IF ALL DATA WRITTEN IS READ.  FILE MAX AND  RECORD  MAX  ARE
*         USED  TO  CONTROL  THE  DURATION  OF THE MODULE AND THE FILE
*         SIZE. 
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. WAIT NOT BUSY IF SELECTED
*         5. WRITE
*         6. WAIT NOT BUSY
*         7. GO TO 3 IF ALL RECORDS NOT DONE
*         8. ENDFILE
*         9. GO TO 3 IF ALL FILES NOT DONE
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF 
*                  OPERATION, AFTER A WRITE FM/TM.
* 
* 
*         -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE- OPERATION. 
* 
*         -EC 204- DETAILED STATUS WORD 3 HAS ONE OF THE FOLLOWING SET- 
*                   A. SEVERE START ERROR 
*                   B. SINGLE FRAME SKEW
*                   C. ILLEGAL CHARACTER SET
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B2 = RANDOM SEED FOR PATTERN GENERATOR 
*     = BUFFER LIMIT FOR DUP (7 OR 9 TRK) 
* 
*  B3 = FILE MAX
* 
*  B4 = PATTERN FOR STORING 
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
 1 FORMAT T6X12 - RANDOM WRITE -
/ 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 30  *RANDOM PATTERN SELECTED
   B0 = 10
   B1 = 500 
   IF(DC.AND.10.NE.0)GOTO 21   *IF 9 TRACK TAPE.
   B0 = 6                      *TRACK SIZE (6 OR 8) 
* 
*         FILL BUFFER 
* 
21 B3 = P4.XOR.7777B
   IF(P4.AND.3000.NE.1000)B3 = P4   *ALTERNATE PTRN SELCT 
   DUP B0 BITS OF P4/B3 TO OB FOR B1
   GOTO 40
/ 
30 IF(P3.AND.4.NE.0)GOTO 31  *USE RANDOM SEED 
   B2=1                      *SET FLAG FOR REAL TIME CLOCK
   GOTO 40
31 RANDOM TO OB FOR 500 , START P7   *GENERATE PATTERN
/ 
40 B0 = P3 RS 6              *MARGIN BITS TO B7 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   CALL 98P                  *CHECK PARAMETERS
/ 
   EXIT TO 121
/ 
   END 20 
COMPILE   - T6X12 - 
   MODULE T6X121,66X(42,52),LOCK   -RANDOM WRITE- 
 1 FORMAT T6X12 - RANDOM WRITE -
 2 FORMAT T6X12 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X12 - ABORT ON .WRITE. COMMAND -
 5 FORMAT T6X12 - ABORT ON .ENDFILE. COMMAND -
 6 FORMAT T6X12 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X12 - ABORT ON .REL. COMMAND -
10 FORMAT T6X12 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X12 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T6X12 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X12 ERROR(S) IN MODULE = *DEC 
   EQUATE DETAIL3 TO 4140, ERROR TO 7474
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
*         REWIND TAPE 
* 
20 B0=0 
   B1=0 
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   B7 = 10
   REWIND,ABT 74            *REWIND 
30 IF(B2.EQ.0) GOTO 31       *RANDM PTRN NOT SELECTED 
   RANDOM TO OB FOR 500 , START RT
31 GOSUB 60 
* 
*         GENERATE LENGTH 
* 
32 WC = RT                  *GET REAL TIME CLOCK, WORD COUNT
   IF (WC.LT.5) GOTO 32     *IF LT 5 GET RTC AGAIN
* 
*         ADDRESS CODING ALWAYS WRITTEN 
* 
42 B1 = B1 + 1
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
* 
*         WRITE RANDOM LENGTH RECORDS (4-7777)
* 
   B7 = 4 
   WRITE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 46  *BYPASS WAIT NOT BUSY 
   B7 = 11
   WAITNB, ABT 74 
46 IF(SB(1).AND.EOT.NE.0)GOTO 54   * -EOT- DETECTED 
   IF(SB(1).AND.ERROR.NE.0)ERROR 2/200 , GOSUB 70 
   IF(SB(5).AND.DETAIL3.NE.0)ERROR 2/204 , GOSUB 70 
   IF(P9.EQ.0)GOTO 30              *LOOP IF REC MAX IS ZERO 
   IF(B1.LT.P9)GOTO 30             *LOOP REC MAX TIMES
   B1 = 0                          *ZERO REC COUNT
   B0 = B0 + 1                     *INCR FILE COUNT 
* 
*         WRITE -EOF- 
* 
   GOSUB 60                 *RESERVE
   B7 = 5 
   ENDFILE , ABT 74 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/122 , GOSUB 70
   IF(P8.EQ.0)GOTO 30       *INFINITE FILE COUNT
   IF(B0.LT.P8)GOTO 30      *LOOP FILE MAX TIMES
* 
* 
* 
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 55  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
55 IF (ES.AND.CM.NE.0) GOTO 20
   IF(BA.EQ.0) GOTO 57      *NO ERRORS
56 MSG 15 (BA) TO DAYFILE 
57 EXIT                     *NORMAL EXIT
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X121 -
   MODULE T6X13,66X(42,52),LOCK   -RANDOM READ- 
*** RANDOM READ (FORWARD PORTION) 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - *THE TAPE USED BY THIS MODULE MUST BE CREATED 
*            BY -T6X12-.
*            A READ FORWARD IS INITIATED FOLLOWING WHICH THE
*            CURRENT RECORD (B1), CURRENT FILE (B0), AND -WT- 
*            ARE COMPARED WITH THE ADDRESS CODING INFORMATION 
*            CONTAINED IN THE RECORD READ.  THIS SEQUENCE 
*            CONTINUES UNTIL RECORD/FILE MAX OR -EOT- IS
*            ENCOUNTERED. AT TIME THIS AN EXIT TO -T6X131- IS 
*            EXECUTED AND A REVERSE READ IS ISSUED. 
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. READ FORWARD 
*         5. WAIT NOT BUSY IF SELECTED
*         6. STATUS DETAIL
*         7. GO TO 3 IF ALL RECORDS NOT DONE
*         8. GO TO 3 IF ALL FILES NOT DONE
*         9. RELEASE-DELAY-RESERVE
*        10. READ REVERSE 
*        11. WAIT NOT BUSY IF SELECTED
*        12. STATUS DETAIL
*        13. GO TO 9 IF ALL RECORDS NOT DONE
*        14. GO TO 9 IF ALL FILES NOT DONE
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 105- COMPARE ERROR
* 
*         -EC 202- STATUS ERROR ON READ REVERSE 
* 
*         -EC 203- ALERT IN GENERAL STATUS DURING A READ
*                  OPERATION
* 
*         -EC 204- DETAILED STATUS WORD 3 HAS ONE OF THE FOLLOWING SET- 
*                   A. SEVERE START ERROR 
*                   B. SINGLE FRAME SKEW
*                   C. ILLEGAL CHARACTER SET
* 
*         -EC 207-  FM/TM DETECTED DURING A READ
* 
*         -EC 211-  INCORRECT FILE DETECTED DURING A READ 
* 
*         -EC 212-  INCORRECT RECORD DETECTED DURING A READ 
* 
*         -EC 213-  INCORRECT RECORD LENGTH DETECTED DURING 
*                   A READ
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
* 
*  B3 = FILE MAX
* 
*  B5 = FM/TM FLAG
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  B10= NUMBER OF BITS FOR PATTERN GENERATION 
* 
*  B11= DATA PATTERN FOR STORING
* 
*  B12= DATA PATTERN FOR STORING
* 
*  BA = ERROR COUNT 
* 
* 
* 
 1 FORMAT T6X13 - RANDOM READ - 
* 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   B10 = 6                   *SET B10 = NUMBER OF DATA BITS 
   IF(DC.AND.10.NE.0) B10 = 8 
   B11 = P4                  *SET B11/B12 TO DATA PATTERN 
   B12 = P4 
   IF(P4.AND.1000.NE.0) B12 = B12.XOR.7777   *COMPLEMENT B12
40 B0 = P3 RS 6              *MARGIN BITS TO B7 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   CALL 98P                  *CHECK PARAMETERS
/ 
   EXIT TO 131               *EXIT TO NEXT MODULE 
/ 
   END 20 
COMPILE   - T6X13 - 
   MODULE T6X131,66X(42,52),LOCK  -RANDOM READ(FWD PORTION)-
 1 FORMAT T6X13 - RANDOM READ (FORWARD) - 
 2 FORMAT T6X13 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X13 - ABORT ON .READ FWD. COMMAND - 
 6 FORMAT T6X13 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X13 - ABORT ON .REL. COMMAND -
10 FORMAT T6X13 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X13 - ABORT ON .WAITNB. COMMAND - 
12 FORMAT T6X13 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X13 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X13 ERROR(S) IN MODULE = *DEC 
   EQUATE DETAIL3 TO 4140, ERROR TO 7434
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
*         REWIND TAPE 
* 
20 MSG 1 TO DISPLAY         *MODULE MESSAGE TO DISPLAY
21 B0=0 
   B1=0 
   B3=0 
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   B7 = 10
   REWIND,ABT 74            *REWIND 
30 GOSUB 60                 *RELEASE-RESERVE
   B1 = B1 + 1              *INCREMENT RECORD COUNT 
* 
*         READ FORWARD
* 
   WC=500 
   B7 = 4 
   READ FWD , ABT 74
   IF(P3.AND.20.NE.0)GOTO 31       *BYPASS WAIT NOT BUSY
   B7= 11 
   WAITNB, ABT 74 
* 
*         DETAIL STATUS 
* 
31 B7 = 12
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.EOT.NE.0)GOTO 54     *-EOT- DETECTED
   IF(B3.NE.0)GOTO 50           *FM/TM EXPECTED 
   IF(P4.AND.4000.EQ.0)GOTO 32  *DO NOT REPORT FM/TM ERRORS 
   IF(SB(1).AND.FILEMK.NE.0)ERROR 2/207, GOSUB 70 
32 WC=WT
   IF(SB(5).AND.DETAIL3.NE.0)ERROR 2/204, GOSUB 70
   IF(P1.AND.30.NE.10) GOTO 33   *NOT PACKED OR CPU 
   IF(SB(1).AND.40.EQ.0) GOTO 33   *NOT ODD READ
   WC=WC-1                     *CORRECT WORD COUNT
33 IF(SB(1).AND.ALERT.NE.0)ERROR 2/203,GOTO 37
   IF(IB(1).NE.B0)ERROR 2/211,GOTO 37  *NO FILE ERROR 
   IF(IB(2).NE.B1)ERROR 2/212,GOTO 37  *NO RECORD ERROR 
   IF(IB(3).EQ.WC)GOTO 40 
   ERROR 2/213
37 GOSUB 70 
   GOTO 41
* 
*         COMPARE DATA
* 
40 IF(P3.AND.2.EQ.0)GOTO 50  *DO NOT COMPARE DATA 
41 B5=WC
   IF(B5.LE.500)GOTO 42      *WORD COUNT LARGER THAN BUFFER 
   B5=500 
42 IF(P4.AND.3000.EQ.2000) RANDOM TO OB FOR B5, START IB
   IF(P4.AND.2000.EQ.0)DUP B10 BITS OF B11/B12 TO OB FOR B5 
43 OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
44 IF(P1.AND.30.NE.10) GOTO 45
   IF(B5.AND.1.EQ.0) GOTO 45
   B5=B5-1
45 COMPARE IB TO OB FOR B5 , ABT 47 
   GOTO 50
47 ERROR 2/105 , GOSUB 70   *DATA COMPARE ERROR 
* 
*         END LOOP
* 
50 IF(B3.EQ.0)GOTO 53                *NOT A FM/TM READ
   B3 = 0                            *CLEAR FM/TM FLAG
   B1 = B1 - 1                       *DECREMENT RECORD CNT
53 IF(P9.EQ.0)GOTO 30       *LOOP IF RECORD MAX IS ZERO 
   IF(B1.LT.P9)GOTO 30      *LOOP RECORD MAX TIMES
   B3 = 1                   *FM/TM FLAG 
   B1 = 0                   *ZERO RECORD COUNT
   B0 = B0 + 1              *INCREMENT FILE COUNT 
   IF(P8.EQ.0)GOTO 30       *FILE COUNT ZERO
   IF(B0.LT.P8)GOTO 30      *LOOP FILEMAX TIMES 
   B0=B0-1                  *CORRECT FILE/RECORD COUNT
   B1=P9
* 
*         END MODULE
* 
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 55  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
55 IF (ES.AND.RC.NE.0) GOTO 21
   EXIT TO 132              *EXIT TO READ (REV) 
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   MSG 15 (BA) TO DAYFILE     *ABNORMAL TERMINATION 
   EXIT 
   END 20 
COMPILE   - T6X131 -
   MODULE T6X132,66X(42,52),LOCK   -RANDOM READ(REV PORTION)- 
 1 FORMAT T6X13 - RANDOM READ (REVERSE) - 
 2 FORMAT T6X13 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X13 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T6X13 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X13 - ABORT ON .REL. COMMAND -
10 FORMAT T6X13 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X13 - ABORT ON .WAITNB. COMMAND - 
12 FORMAT T6X13 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X13 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X13 ERROR(S) IN MODULE = *DEC 
   EQUATE DETAIL3 TO 4140, ERROR TO 7434, FILEMK TO 20
   EQUATE LOADPT TO 4, ALERT TO 4000, EOT TO 10 
* 
*         READ REVERSE
* 
20 MSG 1 TO DISPLAY         *MODULE MESSAGE TO DISPLAY
21 B3=0 
22 GOSUB 60 
   B7 = 4 
   READ REV , ABT 74
   IF(P3.AND.20.NE.0)GOTO 30  *BYPASS WAIT NOT BUSY 
   B7 = 11
   WAITNB, ABT 74 
* 
*         DETAIL STATUS 
* 
30 B7 = 12
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.LOADPT.NE.0)GOTO 47   * -BOT- DETECTED
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 31   *NO -FM/TM- DETECTED
   IF (B3.NE.0) GOTO 33               *FM EXPECTED
   IF(P4.AND.4000.NE.0) ERROR 2/207, GOSUB 70 
31 IF(SB(1).AND.ALERT.EQ.0)GOTO 32    *NO GENERAL STATUS ERR
   ERROR 2/202 , GOSUB 70 
   GOTO 33
32 IF(SB(5).AND.DETAIL3 NE 0)ERROR 2/204 , GOSUB 70 
33 IF (B3.EQ.0) GOTO 40 
   B3=0 
   B1=B1+1
* 
*         END MODULE
* 
40 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 41  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
41 GOTO 22 WHILE (B1-1.GT.0)
   B3=1 
   B1=P9
   B0=B0-1
   GOTO 22
* 
*         REPOSITION TO END OF DATA IF REPEAT CONDITION 
* 
47 IF(ES.AND.RC.EQ.0) GOTO 54 
   B0=0 
   B1=0 
50 GOSUB 60 
   FSPACE,ABT 74
   B1=B1+1
   IF(SB(1).AND.EOT.NE.0) GOTO 21 
   IF(P9.EQ.0) GOTO 50
   IF(B1.LT.P9) GOTO 50 
   B1=0 
   B0=B0+1
   IF(P8.EQ.0) GOTO 50
   IF(B0.LT.P8) GOTO 50 
   B0=B0-1
   B1=P9
   GOTO 21
54 IF(ES.AND.RM.EQ.0) GOTO 55 
   EXIT TO 131
55 IF(BA.EQ.0) GOTO 57      *NO ERRORS
56 MSG 15 (BA) TO DAYFILE 
57 EXIT                     *NORMAL EXIT
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X131 -
   MODULE T6X14,66X(42,52),LOCK   -WRITE REPOSITION-
*** WRITE REPOSITION
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
*              THIS MODULE WILL WRITE THREE (3) RECORDS AT THE  LENGTH
*         SPECIFIED IN  P2 .  IT IS RECOMMENDED THAT AN EVEN NUMBER OF
*         PPU BYTES BE USED THUS  ALLOWING  ODD  RECORD  DETECTION  ON
*         READ.   THESE RECORDS WILL CONTAIN UNIQUE DATA, I.E., RECORD
*         1=1111, RECORD 2=2222, AND RECORD 3=3333.  IF  AN  ERROR ON 
*         THE WRITE OCCURS, THE MODULE WILL CONTINUE DOWN THE TAPE AND
*         AND ATTEMPT TO WRITE  THE RECORDS ERROR FREE. 
* 
*            WHEN  THE RECORDS HAVE BEEN WRITTEN CORRECTLY,  A -WRITE 
*         REPOSITION- FUNCTION IS ISSUED.  THE MODULE THEN ISSUES A 
*         -REVERSE READ- OPERATION. 
*            IF NO GENERAL STATUS ERROR OCCURS, WC IS COMPARED WITH P2
*         FOR PROPER RECORD LENGTH.  IF WT AND   WC   ARE  COMPARED,
*         AND NO ERRORS OCCUR, IB(0) IS COMPARED  WITH 2222.  THIS
*         PROCESS CONTINUES UNTIL FILE MAX OR -EOT- IS REACHED. 
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. WAIT NOT BUSY
*         4. RELEASE-DELAY-RESERVE
*         5. WRITE
*         6. WAIT NOT BUSY IF SELECTED
*         7. GO TO 4 FOR RECORD OF 1111,2222,AND 3333 
*         8. WAIT NOT BUSY
*         9. WRITE REPOSTION
*        10. WAIT NOT BUSY
*        11. READ REVERSE 
*        12. IF EOT OR FILE MAX NOT REACHED REPEAT TO 3.
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
* 
* 
*         -EC 217- ALERT IS SET AFTER THE OUTPUT OF THE 
*                  PARAMETER WORDS. NOTE THAT THIS ERROR
*                  OCCURS ONLY WHEN FUNCTIONS REQUIRING THE 
*                  PARAMETER WORDS HAVE BEEN ISSUED.
* 
* 
*         -EC 235- AN ALERT WAS DETECTED IN GENERAL STATUS
*                  FOLLOWING THE READ IN REVERSE AFTER A
*                  WRITE REPOSITION.
* 
* 
*         -EC 236- AN INCORRECT RECORD NUMBER WAS DETECTED ON 
*                  RECORD READ IN REVERSE AFTER A WRITE 
*                  REPOSITION.
* 
* 
*         -EC 237- AN INCORRECT RECORD LENGTH WAS DETECTED ON 
*                  RECORD READ IN REVERSE AFTER A WRITE 
*                  REPOSITION.
* 
* 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B2 = 0 - SHIFT COUNT FOR PACKED MODE 
*     = 1 - SHIFT COUNT NOT PACKED MODE 
* 
*  B3 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
* 
 1 FORMAT T6X14 - WRITE REPOSITION -
 2 FORMAT T6X14 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X14 - ABORT ON .WRITE. COMMAND -
 5 FORMAT T6X14 - ABORT ON .BKSP WR. COMMAND -
 6 FORMAT T6X14 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X14 - ABORT ON .REL. COMMAND -
10 FORMAT T6X14 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X14 - ABORT ON .WAITNB. COMMAND - 
12 FORMAT T6X14 - ABORT ON .READ REV. COMMAND - 
14 FORMAT T6X14 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X14 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 7474 
* 
*         REWIND
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B0 = P3.RS.6               *MARGIN BITS TO B7
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   WC = P2                    *SET WORD COUNT 
   CALL 98P                   *CHECK PARAMETERS 
21 B0=0 
   B7 = 6 
   RES P1, ABT 74             *RESERVE
   B7 = 10
   REWIND, ABT 74              *REWIND
   IF(P1.AND.30.NE.10)GOTO 22  *A/D PACKED MODE NOT SELECTED
   B2 = 1 
   IF(WC.AND.1.EQ.0) GOTO 22
   B2=13
22 B3 = 100                   *FILE MAX FOR DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8
24 GOSUB 60 
   B0 = B0 + 1                *INCREMENT FILE COUNT 
   B1 = 1111                  *SET RECORD NUMBER FOR SEED 
   B7 = 11
   WAITNB, ABT 74 
30 DUP B1 TO OB FOR 500       *STORE DATA PATTERN 
* 
*         WRITE 3 RECORDS OF UNIQUE DATA (1111,2222,3333) 
* 
32 GOSUB 60 
34 B7 = 4 
   WRITE, ABT 74
   IF(P3.AND.20.NE.0)GOTO 35         *BYPASS WAIT NOT BUSY
   B7 = 11
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 55       *-EOT- DETECTED
   IF(SB(1).AND.ERROR.EQ.0)GOTO 37   *NO GENERAL STATUS ERR 
   ERROR 2/200 , GOSUB 70 
   GOTO 24
37 GOTO 30 WHILE(B1 + 1111.NE.4444)  *ALL RECORDS NOT WRITTN
   B7 = 11
   WAITNB, ABT 74 
   GOSUB 60 
* 
*         BACKSPACE (WRITE REPOSITION)
* 
   B7 = 5 
   BKSP WR , ABT 74 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 40    *NO ALERT ON .BKSP WR.
   ERROR 2/217 , GOSUB 70 
   GOTO 53
40 B7 = 11
   WAITNB, ABT 74 
   GOSUB 60 
* 
*         READ REVERSE
* 
   B7 = 12
   READ REV , ABT 74                  *READ REVERSE 
* 
*         CHECK FOR ERROR(S)
* 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 41    *NO GENERAL STATUS ERR
   ERROR 2/235 , GOSUB 70 
   GOTO 53
41 B1=IB(0) 
   IF(B1.LS.B2.EQ.2222)GOTO 42     *NO RECORD CONTENT ERR 
   ERROR 2/236 , GOSUB 70 
   GOTO 53
42 B5=WT
   IF(P1.AND.30.NE.10) GOTO 43
   IF(SB(1).AND.40.EQ.0) GOTO 43
   B5=B5-1
43 IF(B5.NE.WC)ERROR 2/237, GOSUB 70    *WORD COUNT ERROR 
* 
*         END MODULE
* 
53 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 54  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
54 IF(B3.EQ.0)GOTO 24         *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 24        *LOOP FILE MAX TIMES
55 IF (ES.AND.CM.NE.0) GOTO 21
   IF(BA.EQ.0) GOTO 57        *NO ERRORS
56 MSG 15 (BA) TO DAYFILE 
57 EXIT                       *NORMAL EXIT
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X14 - 
   MODULE T6X15,66X(42,52),LOCK   -WRITE REPOSITION, INCREMENT -
*** WRITE REPOSITION, INCREMENT LENGTH
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
*            THIS  MODULE  WILL  WRITE THREE (3) RECORDS OF 10B 12 BIT
*         BYTES.  THESE RECORDS WILL CONTAIN UNIQUE DATA, I.E., RECORD
*         1=1111,  RECORD  2=2222, AND RECORD 3=3333.  THE MODULE WILL
*         WRITE, WAIT NOT BUSY IF P3 .NE.XX2X, AND MASK GENERAL STATUS
*         WITH  LOGICAL PRODUCT 7474B.  IF ANY STATUS BITS REMAIN THEY
*         ARE REPORTED AS AN ERROR 200.  IF SUCH AN ERROR  OCCURS  THE
*         MODULE  WILL CONTINUE DOWN THE TAPE AND ATTEMPT TO WRITE THE
*         RECORDS CORRECTLY.  WHEN THE RECORDS HAVE BEEN WRITTEN ERROR
*         FREE  THE  MODULE  WILL  WAIT  AN UNCONDITIONAL NOT BUSY AND
*         ISSUE A WRITE REPOSITION FUNCTION.  THE  MODULE  THEN  WAITS
*         UNCONDITIONAL  NOT  BUSY AND MASKS STATUS.  ANY BITS REMAING
*         ARE REPORTED AS AN ERROR 216 OR ERROR 217.
* 
*            THE MODULE THEN BEGINS A  READ  REVERSE  OPERATION.   THE
*         MODULE  WILL  WAIT  NOT  BUSY  IF P3.NE.  XX2X, BETWEEN EACH
*         RECORD READ IN REVERSE AND MASK GENERAL STATUS WITH  LOGICAL
*         PRODUCT   7474B.   IF  ANY  BITS  REMAIN  AN  ERROR  235  IS
*         REPORTED.  IF NO ERRORS OCCUR, WC IS COMPARED WITH  P2   FOR
*         PROPER RECORD LENGTH.  IF WC AND  P2  ARE NOT EQUAL AN ERROR
*         237 IS REPORTED.  IF NO  ERROR  OCCURS  B1  IS  COMPARED  TO
*         2222.   IF  B1  DOES  NOT  EQUAL  2222  AN ERROR 236 IS THEN
*         REPORTED. 
* 
*            IF NO ERRORS OCCUR, THE MODULE WILL INCREMENT THE  RECORD
*         LENGTH  BY  10B  12 BIT BYTES AND RE-INITIALIZE.  THE MODULE
*         CONTINUES UNTIL THE MODULE ITERATIONS EQUAL THE CONTENTS  OF
*         P8  ,  (FILE  MAX).  IF REPEAT MODULE IS SET THE MODULE WILL
*         RESTART WITHOUT OPERATOR INTERVENTION.  IF REPEAT MODULE  IS
*         NOT SET THE MODULE WILL ENTER NORMAL TERMINATION. 
* 
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. SET WORD COUNT TO 10 
*         4. WAIT NOT BUSY
*         5. RELEASE-DELAY-RESERVE
*         6. WRITE
*         7. WAIT NOT BUSY IF SELECTED
*         8. GO TO 4 FOR RECORD OF 1111,2222,AND 3333 
*         9. WAIT NOT BUSY
*        10. WRITE REPOSTION
*        11. WAIT NOT BUSY
*        12. READ REVERSE 
*        13. BUMP WORD COUNT BY 10
*        14. IF EOT OR FILE MAX NOT REACHED REPEAT TO 4.
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
*                  OPERATION. 
* 
* 
*         -EC 217- ALERT IS SET AFTER THE OUTPUT OF THE 
*                  PARAMETER WORDS. NOTE THAT THIS ERROR
*                  OCCURS ONLY WHEN FUNCTIONS REQUIRING THE 
*                  PARAMETER WORDS HAVE BEEN ISSUED.
* 
* 
*         -EC 235- AN ALERT WAS DETECTED IN GENERAL STATUS
*                  FOLLOWING THE READ IN REVERSE AFTER A
*                  WRITE REPOSITION.
* 
* 
*         -EC 236- AN INCORRECT RECORD LENGTH WAS DETECTED ON 
*                  RECORD READ IN REVERSE AFTER A WRITE 
*                  REPOSITION.
* 
* 
*         -EC 237- AN INCORRECT RECORD NUMBER WAS DETECTED ON 
*                  RECORD READ IN REVERSE AFTER A WRITE 
*                  REPOSITION.
* 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B2 = 0 - SHIFT COUNT FOR PACKED MODE 
*     = 1 - SHIFT COUNT NOT PACKED MODE 
* 
*  B3 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
* 
 1 FORMAT T6X15 - WRITE REPOSITION, INC LENGTH -
 2 FORMAT T6X15 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X15 - ABORT ON .WRITE. COMMAND -
 5 FORMAT T6X15 - ABORT ON .BKSP WR. COMMAND -
 6 FORMAT T6X15 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X15 - ABORT ON .REL. COMMAND -
10 FORMAT T6X15 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X15 - ABORT ON .WAITNB. COMMAND - 
12 FORMAT T6X15 - ABORT ON .READ REV. COMMAND - 
14 FORMAT T6X15 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X15 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 7474 
* 
*         REWIND TAPE 
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B0 = P3.RS.6               *MARGIN BITS TO B7
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   CALL 98P                   *CHECK PARAMETERS 
21 WC = 10                    *SET WORD COUNT 
   B0=0 
   B7 = 6 
   RES P1, ABT 74             *RESERVE
   B7 = 10
   REWIND, ABT 74              *REWIND
   IF(P1.AND.30.NE.10)GOTO 22  *A/D PACKED MODE NOT SELECTED
   B2 = 1 
   IF(WC.AND.1.EQ.0) GOTO 22
   B2=13
22 B3 = 100                   *FILE MAX FOR DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8
24 GOSUB 60 
   B0 = B0 + 1                *INCREMENT FILE COUNT 
   B1 = 1111                  *SET RECORD NUMBER FOR SEED 
25 GOTO 25 WHILE (WC+10.EQ.0)  *BUMP WORD COUNT 
   B7 = 11
   WAITNB, ABT 74 
30 DUP B1 TO OB FOR 500       *STORE DATA PATTERN 
* 
*         WRITE 3 RECORDS OF UNIQUE DATA (1111,2222,3333) 
* 
32 GOSUB 60 
34 B7 = 4 
   WRITE, ABT 74
   IF(P3.AND.20.NE.0)GOTO 35         *BYPASS WAIT NOT BUSY
   B7 = 11
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 55       *-EOT- DETECTED
   IF(SB(1).AND.ERROR.EQ.0)GOTO 37   *NO GENERAL STATUS ERR 
   ERROR 2/200 , GOSUB 70 
   GOTO 24
37 GOTO 30 WHILE(B1 + 1111.NE.4444)  *ALL RECORDS NOT WRITTN
   B7 = 11
   WAITNB, ABT 74 
   GOSUB 60 
* 
*         BACKSPACE (WRITE REPOSITION)
* 
   B7 = 5 
   BKSP WR , ABT 74 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 40    *NO ALERT ON .BKSP WR.
   ERROR 2/217 , GOSUB 70 
   GOTO 53
40 B7 = 11
   WAITNB, ABT 74 
   GOSUB 60 
* 
*         READ REVERSE
* 
   B7 = 12
   READ REV , ABT 74                  *READ REVERSE 
* 
*         CHECK FOR ERROR(S)
* 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 41    *NO GENERAL STATUS ERR
   ERROR 2/235 , GOSUB 70 
   GOTO 53
41 B1=IB(0) 
   IF(B1.LS.B2.EQ.2222)GOTO 42     *NO RECORD CONTENT ERR 
   ERROR 2/236 , GOSUB 70 
   GOTO 53
42 B5=WT
   IF(P1.AND.30.NE.10) GOTO 43
   IF(SB(1).AND.40.EQ.0) GOTO 43
   B5=B5-1
43 IF(B5.NE.WC)ERROR 2/237 , GOSUB 70 
* 
*         END MODULE
* 
53 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 54  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
54 IF(B3.EQ.0)GOTO 24         *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 24        *LOOP FILE MAX TIMES
55 IF (ES.AND.CM.NE.0) GOTO 21
   IF(BA.EQ.0) GOTO 57        *NO ERRORS
56 MSG 15 (BA) TO DAYFILE 
57 EXIT                       *NORMAL EXIT
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X15 - 
   MODULE T6X16,66X(42,52),LOCK   -WRITE REPOSITION, CONT BKSP -
*** WRITE REPOSITION, CONTROL BACKSPACE 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
*              T6X16 - WRITE REPOSITION WITH CONTROLLED BACKSPACE 
* 
* 
*              THIS MODULE WILL WRITE THREE (3) RECORDS  AT  A  LENGTH
*         SPECIFIED IN  P2 .  IT IS RECOMMENDED THAT AN EVEN NUMBER OF
*         PPU BYTES BE USED THUS  ALLOWING  ODD  RECORD  DETECTION  ON
*         READ.  THE RECORDS WILL CONTAIN UNIQUE DATA, I.E., RECORD 1=
*         1111, RECORD 2=2222, AND RECORD  3=3333.   THE  MODULE  WILL
*         WRITE  THEN  WAIT  NOT  BUSY  IF  P3.NE.  XX2X, MASK GENERAL
*         STATUS  WITH  LOGICAL  PRODUCT  7474B  AND  CHECK  FOR   ANY
*         REMAINING  STATUS  BITS.   IF ANY BITS REMAIN, AN  ERROR 200
*         WILL BE REPORTED.   IF  SUCH  ERRORS  OCCUR  THE  TEST  WILL
*         CONTINUE  DOWN  THE  TAPE  AND  ATTEMPT TO WRITE THE RECORDS
*         ERROR FREE. 
* 
*            WHEN THE RECORDS HAVE BEEN WRITTEN CORRECTLY, THE  MODULE
*         WILL  WAIT  AN UNCONDITIONAL NOT BUSY AND ISSUE A CONTROLLED
*         BACKSPACE FUNCTION.  THE MODULE WAITS AN  UNCONDITIONAL  NOT
*         BUSY  AND  MASK  GENERAL  STATUS.  ANY STATUS BITS REMAINING
*         WILL BE REPORTED AS AN  ERROR 216 OR 217.  THE  MODULE  THEN
*         BEGINS  A  REVERSE READ OPERATION.  THE MODULE WILL WAIT NOT
*         BUSY IF P3.NE.  XX2X, BETWEEN EACH RECORD  READ  IN  REVERSE
*         AND  MASK GENERAL STATUS WITH LOGICAL PRODUCT 7474B.  IF ANY
*         REMAINING, AN ERROR 235 IS REPORTED.  IF NO ERROR OCCURS, WC
*         IS  COMPARED  WITH  P2  FOR PROPER RECORD LENGTH.  IF WC AND
*          P2  ARE NOT EQUAL AN ERROR 237 IS REPORTED.   IF  NO  ERROR
*         OCCURS, B1 IS COMPARED WITH 2222.  IF B1 DOES NOT EQUAL 2222
*         AN ERROR 236 IS REPORTED. 
* 
*            IF  NO  ERRORS  OCCUR  THE  MODULE WILL RE-INITIALIZE AND
*         CONTINUE UNTIL FILE MAX OR EOT , (IF FILE MAX  EQUALS  ZERO)
*         IS  ENCOUNTERED.  IF   REPEAT  MODULE IS SET THE MODULE WILL
*         RESTART WITHOUT ANY OPERATOR INTERVENTION.  IF REPEAT MODULE
*         IS NOT SET THE TEST WILL ENTER NORMAL TERMINATION.
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. WAIT NOT BUSY
*         4. RELEASE-DELAY-RESERVE
*         5. WRITE
*         6. WAIT NOT BUSY IF SELECTED
*         7. GO TO 4 FOR RECORD OF 1111,2222,AND 3333 
*         8. WAIT NOT BUSY
*         9. WRITE REPOSTION, CONTROLLED BACKSPACE
*        10. WAIT NOT BUSY
*        11. READ REVERSE 
*        12. IF EOT OR FILE MAX NOT REACHED REPEAT TO 3.
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
*                  OPERATION. 
* 
* 
*         -EC 217- ALERT IS SET AFTER THE OUTPUT OF THE 
*                  PARAMETER WORDS. NOTE THAT THIS ERROR
*                  OCCURS ONLY WHEN FUNCTIONS REQUIRING THE 
*                  PARAMETER WORDS HAVE BEEN ISSUED.
* 
* 
*         -EC 235- AN ALERT WAS DETECTED IN GENERAL STATUS
*                  FOLLOWING THE READ IN REVERSE AFTER A
*                  WRITE REPOSITION.
* 
* 
*         -EC 236- AN INCORRECT RECORD LENGTH WAS DETECTED ON 
*                  RECORD READ IN REVERSE AFTER A WRITE 
*                  REPOSITION.
* 
* 
*         -EC 237- AN INCORRECT RECORD NUMBER WAS DETECTED ON 
*                  RECORD READ IN REVERSE AFTER A WRITE 
*                  REPOSITION.
* 
* 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B2 = 0 - SHIFT COUNT FOR PACKED MODE 
*     = 1 - SHIFT COUNT NOT PACKED MODE 
* 
*  B3 = FILE MAX
* 
*  B6 = LOOP COUNT
* 
*  B7 = TRACK SIZE (6 OR 8) 
*     = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*     = DELAY VALUE 
*        FOR REL/RES
*     = 0 - ABORT FLAG
* 
*  BA = ERROR COUNT 
* 
* 
* 
 1 FORMAT T6X16 - WRITE REPOSITION, CNTRL BKSP -
 2 FORMAT T6X16 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X16 - ABORT ON .WRITE. COMMAND -
 5 FORMAT T6X16 - ABORT ON .BKSP WRC. COMMAND - 
 6 FORMAT T6X16 - ABORT ON .RES. COMMAND -
 7 FORMAT T6X16 - ABORT ON .REL. COMMAND -
10 FORMAT T6X16 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T6X16 - ABORT ON .WAITNB. COMMAND - 
12 FORMAT T6X16 - ABORT ON .READ REV. COMMAND - 
14 FORMAT T6X16 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X16 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 7474 
* 
*         REWIND TAPE 
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B0 = P3.RS.6               *MARGIN BITS TO B7
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   WC = P2                    *SET WORD COUNT 
   CALL 98P                   *CHECK PARAMETERS 
21 B0=0 
   B7 = 6 
   RES P1, ABT 74             *RESERVE
   B7 = 10
   REWIND, ABT 74              *REWIND
   IF(P1.AND.30.NE.10)GOTO 22  *A/D PACKED MODE NOT SELECTED
   B2 = 1 
   IF(WC.AND.1.EQ.0) GOTO 22
   B2=13
22 B3 = 100                   *FILE MAX FOR DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8
24 GOSUB 60 
   B0 = B0 + 1                *INCREMENT FILE COUNT 
   B1 = 1111                  *SET RECORD NUMBER FOR SEED 
   B7 = 11
   WAITNB, ABT 74 
30 DUP B1 TO OB FOR 500       *STORE DATA PATTERN 
* 
*         WRITE 3 RECORDS OF UNIQUE DATA (1111,2222,3333) 
* 
32 GOSUB 60 
34 B7 = 4 
   WRITE, ABT 74
   IF(P3.AND.20.NE.0)GOTO 35         *BYPASS WAIT NOT BUSY
   B7 = 11
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 55       *-EOT- DETECTED
   IF(SB(1).AND.ERROR.EQ.0)GOTO 37   *NO GENERAL STATUS ERR 
   ERROR 2/200 , GOSUB 70 
   GOTO 24
37 GOTO 30 WHILE(B1 + 1111.NE.4444)  *ALL RECORDS NOT WRITTN
   B7 = 11
   WAITNB, ABT 74 
   GOSUB 60 
* 
*         BACKSPACE (WRITE REPOSITION)
* 
   B7 = 5 
   BKSP WRC , ABT 74
   IF(SB(1).AND.ALERT.EQ.0)GOTO 40    *NO ALERT ON .BKSP WR.
   ERROR 2/217 , GOSUB 70 
   GOTO 53
40 B7 = 11
   WAITNB, ABT 74 
   GOSUB 60 
* 
*         READ REVERSE
* 
   B7 = 12
   READ REV , ABT 74                  *READ REVERSE 
* 
*         CHECK FOR ERROR(S)
* 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 41    *NO GENERAL STATUS ERR
   ERROR 2/235 , GOSUB 70 
   GOTO 53
41 B1=IB(0) 
   IF(B1.LS.B2.EQ.2222)GOTO 42     *NO RECORD CONTENT ERR 
   ERROR 2/236 , GOSUB 70 
   GOTO 53
42 B5=WT
   IF(P1.AND.30.NE.10) GOTO 43
   IF(SB(1).AND.40.EQ.0) GOTO 43
   B5=B5-1
43 IF(B5.NE.WC)ERROR 2/237 , GOSUB 70 
* 
*         END MODULE
* 
53 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 54  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
54 IF(B3.EQ.0)GOTO 24         *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 24        *LOOP FILE MAX TIMES
55 IF (ES.AND.CM.NE.0) GOTO 21
   IF(BA.EQ.0) GOTO 57      *NO ERRORS
56 MSG 15 (BA) TO DAYFILE 
57 EXIT                     *NORMAL EXIT
* 
*         RELEASE-DELAY-RESERVE 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 7 
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B7 = 6 
   RES P1, ABT 74           *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X16 - 
   MODULE T6X17,66X(42,52),LOCK   -POSITIONING TEST-
*** POSITION TEST 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
* 
* 
*              THIS  MODULE  WILL  WRITE  TWO  (2) RECORDS OF A UNIQUE
*         LENGTH AND OF UNIQUE DATA.  THE  DATA  WRITTEN   IN   RECORD
*         1=1111  AND THAT  IN  RECORD  2= 2222.  THE MODULE WILL WAIT
*         NOT BUSY IF P3.NE.  XX2X, BETWEEN THE WRITE OF RECORD 1  AND
*         RECORD  2  AND MASK  GENERAL  STATUS  WITH  LOGICAL  PRODUCT
*         7474B.  IF ANY STATUS BITS  REMAIN  AN  ERROR  200  IS  THEN
*         REPORTED.   IF  SUCH  AN   ERROR   OCCURS   THE  MODULE WILL
*         RESTART FROM ITS PRESENT POSITION ON  TAPE  AND  ATTEMPT  TO
*         PERFORM THIS SEQUENCE UNTIL IT  IS  DONE  CORRECTLY  OR  END
*         OF TAPE IS REACHED. 
* 
*            AT THE END OF THE WRITE OF RECORD 2 THE MODULE WILL  WAIT
*         AN  UNCONDITIONAL  NOT  BUSY  AND  ISSUE  A WRITE REPOSITION
*         OPERATION OVER RECORD 2 AND WAIT ANOTHER  UNCONDITIONAL  NOT
*         BUSY.   GENERAL  STATUS IS MASKED AND ANY BITS REMAINING ARE
*         REPORTED AS AN ERROR 216 OR AN ERROR 217.   IF  SUCH  ERRORS
*         ARE  REPORTED  THE  MODULE  WILL  RESTART  FROM  ITS PRESENT
*         POSITION ON TAPE WITH THE BEGINNING OF  THE  MODULE,  (WRITE
*         RECORD   1)  AND  WILL  CONTINUE  UNTIL  ALL  SEQUENCES  ARE
*         COMPLETED CORRECTLY OR UNTIL END OF TAPE IS REACHED.
* 
* 
*            IF  NO  ERRORS  OCCUR  THE  MODULE WILL INITIATE AN ERASE
*         OPERATION, (WHICH ERASES RECORD 2), WAIT NOT BUSY IF P3 .NE.
*         XX2X,  AND  MASKS GENERAL STATUS.  IF ANY STATUS BITS REMAIN
*         AN ERROR 246 WILL BE REPORTED.  IF SUCH AN ERROR IS REPORTED
*         THE  MODULE  RESTART  FROM ITS PRESENT POSITION ON TAPE WITH
*         THE BEGINNING OF THE MODULE,  (WRITE  RECORD  1),  AND  WILL
*         CONTINUE  UNTIL  ALL  SEQUENCES  ARE  COMPLETED CORRECTLY OR
*         UNTIL END OF TAPE IS REACHED.  IF NO ERRORS OCCUR THE MODULE
*         WILL  WRITE  RECORD  3.   IT IS TO BE NOTED THAT THE DATA IN
*         RECORD 3=3333.  AT THE END OF THE  WRITE  OF  RECORD  3  THE
*         MODULE  WILL  WAIT  AN  UNCONDITIONAL NOT BUSY, MASK GENERAL
*         STATUS WITH LOGICAL PRODUCT 7474B,  AND  REPORT  ANY  STATUS
*         BITS  THAT  REMAIN  AS AN ERROR 200.  IF AN ERROR OCCURS THE
*         MODULE WILL RESTART FROM THE BEGINNING  AND  CONTINUE  UNTIL
*         ALL  SEQUENCES  ARE  COMPLETED  CORRECTLY  OR END OF TAPE IS
*         REACHED.  IF NO ERROR OCCURS  THE  MODULE  WILL  INITIATE  A
*         WRITE  REPOSITION  TO  ERASE FUNCTION, WAIT AN UNCONDITIONAL
*         NOT BUSY, AND MASK STATUS. ANY BITS REMAINING  ARE  REPORTED
*         AS AN ERROR 216 OR AN ERROR 217.
* 
*            IF AN ERROR OCCURS, THE MODULE WILL  AGAIN  RESTART  FROM
*         THE BEGINNING.  IF NO ERRORS OCCUR THE MODULE WILL ISSUE  AN
*         ERASE  FUNCTION,  (WHICH  ERASES RECORD 3), WAIT NOT BUSY IF
*         P3.NE.  XX2X, AND MASK GENERAL STATUS.  ANY  BITS  REMAINING
*         ARE  REPORTED  AS  AN  ERROR  246.   IF AN ERROR OCCURS, THE
*         MODULE RESTARTS FROM THE BEGINNING.  IF NO ERROR OCCURS  THE
*         MODULE  WILL  WRITE  RECORD  4 AND WAIT AN UNCONDITIONAL NOT
*         BUSY.  IT IS TO BE NOTED THAT THE  DATA  IN  RECORD  4=4444.
*         GENERAL  STATUS  IS  MASKED WITH LOGICAL PRODUCT 7474B.  ANY
*         STATUS BITS REMAINING ARE REPORTED AS AN ERROR 200.   IF  AN
*         ERROR  OCCURS THE MODULE WILL RESTART FROM THE BEGINNING AND
*         CONTINUE UNTIL ALL SEQUENCES ARE COMPLETED CORRECTLY OR  END
*         OF  TAPE  IS  REACHED.   IF NO ERROR OCCURS THE MODULE  WILL
*         ISSUE A READ REVERSE OPERATION OVER RECORD 4.THE MODULE WILL
*         WAIT  NOT  BUSY  IF  P3.NE.  XX2X, AND MASK GENERAL  STATUS.
*         ANY BITS REMAINING WILL BE REPORTED AS AN ERROR 240.  IF  AN
*         ERROR  OCCURS  THE  MODULE WILL RESTART FROM THE  BEGINNING.
*         IF NO ERROR  OCCURS  THE  MODULE  WILL  ISSUE  ANOTHER  READ
*         REVERSE  FUNCTION WHICH WILL CAUSE THE TEST TO MOVE OVER THE
*         AREA PREVIOUSLY ERASED AND THEN OVER RECORD 1. AT THE END OF
*         THIS REVERSE READ THE MODULE WILL WAIT AN UNCONDITIONAL  NOT
*         BUSY AND MASK STATUS. ANY BITS REMAINING WILL  BE  REPORTED 
*         AS AN ERROR 241 
* 
* 
*            IF  AN  ERROR  OCCURS  THE  MODULE  WILL RESTART FROM THE
*         BEGINNING OF THE TEST.  IF NO ERROR OCCURS THE  MODULE  WILL
*         BEGIN A READ FORWARD OPERATION OVER RECORD 1.  AT THE END OF
*         THIS READ THE MODULE WILL WAIT NOT BUSY IF P3.NE.  XX2X, AND
*         MASK  GENERAL STATUS.  ANY BITS THAT REMAIN WILL BE REPORTED
*         AS AN ERROR 242.  IF AN ERROR OCCURS THE MODULE WILL RESTART
*         FROM  THE BEGINNING.  IF NO ERROR OCCURS, THE CONTENTS OF B1
*         IS COMPARED WITH 1111.  IF THIS COMPARE FAILS AN  ERROR  243
*         WILL  BE  REPORTED.   IF  NO  ERROR  OCCURS  WC AND  P2  ARE
*         COMPARED FOR PROPER RECORD LENGTH.  IF THIS COMPARE FAILS AN
*         ERROR 244 IS REPORTED.
* 
*            IF  NO  ERROR  OCCURS  THE  MODULE  BEGINS A READ FORWARD
*         OPERATION OVER THE ERASED AREA AND OVER RECORD  4.   AT  THE
*         END  OF  THIS  OPERATION THE MODULE WAIT NOT BUSY IF P3 .NE.
*         XX2X AND MASKS  GENERAL  STATUS.   ANY  BITS  REMAINING  ARE
*         REPORTED  AS  AN  ERROR  245.  IF NO ERROR OCCURS THE MODULE
*         COMPARES THE CONTENTS OF B1 TO 4444.  IF THIS COMPARE  FAILS
*         AN  ERROR  247  IS  REPORTED.   IF  NO  ERROR  OCCURS, WC IS
*         COMPARED WITH   P2   FOR  PROPER  RECORD  LENGTH.   IF  THIS
*         COMPARE FAILS AN ERROR 250 IS REPORTED. 
* 
*            IF  NO  ERRORS  OCCUR  THE  MODULE  WILL RESTART FROM ITS
*         PRESENT POSITION ON TAPE UNTIL THE SUBTEST ITERATIONS  EQUAL
*         THE  CONTENTS  OF  P8  ,  (FILE  MAX).  IF REPEAT MODULE THE
*         MODULE WILL RESTART FROM LOAD POINT WITHOUT OPERATOR  INTER-
*         VENTION.  IF  REPEAT MODULE IS NOT SET THE MODULE WILL ENTER
*         NORMAL TERMINATION. 
* 
* 
* 
* 
*         OPERATIONAL DIAGRAM-
* 
*         WREC=1  WREC=2
*          .....   .....
*                 WREP
*                 ******
*                         ERASE     WREC=3
*                 ................   .....
*                                   WREPE 
*                                   ******
*                                          ERASE      WREC=4
*                                   ................   .....
*         (REC=1)                RDRV                  RDRV 
*         ******************************************   *****
*          RDFD                  RDFD 
*          .....   .........................................
*         (REC=1)                                     (REC=4) 
* 
* 
*         LEGEND- 
*                ....  INDICATES FORWARD MOTION 
*                ****  INDICATES REVERSE MOTION 
*                WREC  WRITE RECORD 
*                WREP  WRITE REPOSITION 
*                WREPE WRITE REPOSITION TO ERASE
*                ERASE ERASE
*                RDFD  READ FORWARD 
*                RDRV  READ REVERSE 
*              (REC=X) RECORD POSITION
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. WRITE 1111 
*         5. RELEASE-DELAY-RESERVE
*         6. WRITE 2222 
*         7. WRITE REPOSITION 
*         8. ERASE
*         9. WRITE 3333 
*        10. WRITE REPOSITION TO ERASE
*        11. ERASE
*        12. WRITE 4444 
*        13. READ REVERSE 
*        15. READ REVERSE 
*        16. READ FORWARD 
*        17. CHECK FOR RECORD 1111
*        18. READ FORWARD 
*        19. CHECK FOR RECORD 4444
*        20. IF NOT FILE LIMIT GO TO 3
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
*                  OPERATION. 
* 
* 
*         -EC 217- ALERT IS SET AFTER THE OUTPUT OF THE 
*                  PARAMETER WORDS. NOTE THAT THIS ERROR
*                  OCCURS ONLY WHEN FUNCTIONS REQUIRING THE 
*                  PARAMETER WORDS HAVE BEEN ISSUED.
* 
* 
*         -EC 240- A STATUS ERROR HAS OCCURRED DURING THE 
*                  READ REVERSE OF RECORD 4 IN THE -POSITION
*                  TEST-. 
* 
* 
*         -EC 241- A STATUS ERROR HAS OCCURRED DURING THE 
*                  READ REVERSE OF THE ERASED AREA AND RECORD 
*                  1 IN THE -POSITION TEST-.
* 
* 
*         -EC 242- A STATUS ERROR HAS OCCURRED DURING THE 
*                  READ FORWARD OF RECORD 1 IN THE -POSITION
*                  TEST-. 
* 
* 
*         -EC 243- B1 (CURRENT RECORD) AND 1111 HAVE FAILED 
*                  TO COMPARE INDICATING THAT RECORD 1 WAS
*                  NOT DETECTED IN THE -POSITION TEST-. 
* 
* 
*         -EC 244- RECORD LENGTH AND P2 FAILED TO COMPARE 
*                  DURING THE -POSITION TEST. 
* 
*         -EC 245- AN ALERT STATUS OCCURRED AFTER AN ERASE. 
* 
*         -EC 246- A STATUS ERROR HAS OCCURRED DURING THE 
*                  READ FORWARD OF THE ERASED AREA AND RECORD 
*                  4 IN THE -POSITION TEST-.
* 
* 
*         -EC 247- B1 AND 4444 HAVE FAILED TO COMPARE 
*                  INDICAT- ING THAT RECORD 4 WAS NOT 
*                  DETECTED IN THE -POSITION TEST-. 
* 
* 
*         -EC 250- P2(RECORD 4 LENGTH) AND -WORDS 
*                  TRANSMITTED- FAILED TO COMPARE DURING THE
*                  -POSITION TEST-. 
* 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE
* 
*  B1 = RECORD NUMBER(1111,2222,ETC)
* 
*  B2 = FILE MAX
* 
*  B5 = USED FOR CONSTANT ZERO IN MSG PROCESSOR 
* 
*  B7 = MSG NUMBER FOR MSG PROCESSOR
* 
 1 FORMAT T6X17 - POSITIONING TEST -
/ 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B0 = P3.RS.6               *MARGIN BITS TO B7
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   WC = P2                    *SET WORD COUNT 
   CALL 98P                   *CHECK PARAMETERS 
   EXIT TO 171
   END 20 
COMPILE   - T6X17 - 
   MODULE T6X171,66X(42,52),LOCK   -POSITIONING TEST- 
 1 FORMAT T6X17 - POSITIONING TEST -
 2 FORMAT T6X17 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X17 - ABORT ON .RES. COMMAND -
 5 FORMAT T6X17 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T6X17 ERROR(S) IN MODULE = *DEC 
 7 FORMAT T6X17 - LC=*DEC, ERCNT=*DEC 
* 
*         REWIND TAPE 
* 
20 B0=0 
   B1=0 
   B7 =4
   RES P1, ABT 74             *RESERVE
   B7 =5
   REWIND, ABT 74             *REWIND 
22 B3 = 100                   *FILE MAX FOR DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8
24 IF(P1.AND.30.NE.10) GOTO 26
   B2=1 
26 EXIT TO 172
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 7 (B6,BA) TO DISPLAY   *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   MSG 6 (BA) TO DAYFILE      *ABNORMAL TERMINATION 
   EXIT 
   END 20 
COMPILE   - T6X171 -
   MODULE T6X172,66X(42,52),LOCK   -POSITIONING TEST- 
 1 FORMAT T6X17 - POSITIONING TEST -
 2 FORMAT T6X17 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X17 - ABORT ON .RES. COMMAND -
 6 FORMAT T6X17 - ABORT ON .BKSP WR. COMMAND -
 7 FORMAT T6X17 - ABORT ON .BKSP WRE. COMMAND - 
10 FORMAT T6X17 - ABORT ON .READ REV. COMMAND - 
11 FORMAT T6X17 - ABORT ON .READ FWD. COMMAND - 
12 FORMAT T6X17 - ABORT ON .ERASE. COMMAND -
13 FORMAT T6X17 - ABORT ON .REL. COMMAND -
14 FORMAT T6X17 - ABORT ON .WRITE. COMMAND -
15 FORMAT T6X17 - LC=*DEC, ERCNT=*DEC 
16 FORMAT T6X17 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000,ERROR TO 7474,EOT TO 10 
* 
*         WRITE TWO RECORDS 
* 
30 B0 = B0 + 1
31 B1=1111                  *DATA FOR RECORD
   GOSUB 50                 *WRITE RECORD 1 
   GOSUB 50                 *WRITE RECORD 2 
* 
*  BACKSPACE AND ERASE RECORD 2222
* 
   B7= 6
   BKSP WR,ABT 74           *BACKSPACE OVER RECORD 2
   IF(SB(1).AND.ALERT.NE.0) ERROR 2/217, GOSUB 70 
   GOSUB 60                 *ERASE RECORD 2 
* 
*  WRITE RECORD 3333 BACKSPACE AND ERASE IT 
* 
   GOSUB 50                 *WRITE RECORD 3 
   B7 = 7 
   BKSP WRE,ABT 74          *BACKSPACE OVER RECORD 3
   IF(SB(1).AND.ALERT.NE.0) ERROR 2/217, GOSUB 70 
   GOSUB 60                 *ERASE RECORD 3 
* 
*  WRITE RECORD 4444 AND READ REVERSE 2 TIMES 
* 
   GOSUB 50                 *WRITE RECORD 4 
   B7 = 10
   READ REV, ABT 74         *READ REC 4 REVERSE 
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/240, GOTO 37 
   B7 = 10
   READ REV, ABT 74         *READ ERASES AND REC 1
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/241, GOTO 37 
* 
*  READ FORWARD 
* 
   B7 = 11
   READ FWD, ABT 74         *READ REC 1 FORWARD 
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/242, GOTO 37 
   IF(IB.NE.1111)ERROR 2/243, GOTO 37 
   B5=SB(1).RS.5.AND.B2 
   IF(WT-B5.NE.WC)ERROR 2/244, GOTO 37
* 
*  READ FORWARD 
* 
   B7 = 11
   READ FWD, ABT 74         *READ REC 1 FORWARD 
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/246, GOTO 37 
   IF(IB.NE.4444)ERROR 2/247, GOTO 37 
   B5=SB(1).RS.5.AND.B2 
   IF(WT-B5.EQ.WC)GOTO 40 
   ERROR 2/250
37 GOSUB 70 
* 
*  END MODULE 
* 
40 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.NE.0)GOSUB 71   *IF SCOPE LOOP
41 IF(B3.EQ.0)GOTO 30         *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 30        *LOOP FILE MAX TIMES
42 IF (ES.AND.CM.EQ.0) GOTO 44
43 EXIT TO 171
44 IF(BA.EQ.0) GOTO 46        *NO ERRORS
45 MSG 16 (BA) TO DAYFILE 
46 EXIT                       *NORMAL EXIT
* 
*  WRITE SUBROUTINE 
* 
  
50 DUP B1 TO OB FOR 500      *STORE DATA PATTERN
   GOSUB 64 
   IF(P3.AND.1.NE.0)GOTO 51  *BYPASS POS DATA 
   OB(1)=B0 
   OB(2)=B1 
   OB(3)=WC 
51 B7 = 14
   WRITE ,ABT 74
   IF(SB(1).AND.EOT.NE.0) GOTO 42    *IF END OF TAPE
   IF(SB(1).AND.ERROR.EQ.0) GOTO 52  *IF NO STATUS ERROR
   ERROR 2/200,GOSUB 70 
   ENDSUB, GOTO 31
52 B1=B1+1111 
   RETURN 
* 
*  ERASE SUBROUTINE 
* 
60 GOSUB 64 
   B7 = 12          *SUBROUTINE TO ERASE A RECORD 
   ERASE,ABT 74 
   IF(SB(1).AND.ERROR.NE.0)ERROR 2/245,GOTO 70
   RETURN 
* 
*         REL,DELAY,RES 
* 
64 IF(P5+P6.LT.20D) GOTO 65  *BYPASS REL ON SHORT DELAY 
   B7 = 13
   REL, ABT 74
65 B7 = P6
   IF(P5.EQ.0) GOTO 66       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
66 DELAY B7 MSEC
   B7 = 4 
   RES P1,ABT 74
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 72   *SCOPE LOOP NOT SELECTED 
71 MSG 15 (B6,BA) TO DISPLAY   *ERROR MESSAGE 
   RETURN                     *RETURN 
72 MSG EM(EC,EA) TO LINE 0     *ERROR CODE MESSAGE
   B4=2                       *SET MESSAGE LINE NUMBER
   CALL 98A 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   GOSUB 71 
   GOTO 30                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 43         *NOT SECOND TRY 
   GOTO 45                    *ABNORMAL TERMINATION 
   END 30 
COMPILE   - T6X172 -
   MODULE T6X18,66X(42,52),LOCK   -POLYNOMIAL TEST- 
*** POLYNOMIAL TEST 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
*              THIS MODULE IS DESIGNED TO CHECK/VERIFY THE POLYNOMIALS
*         GENERATED  DURING  DATA  TRANSFER.   THE   POLYNOMIALS   ARE
*         GENERATED FROM RANDOM DATA PATTERNS WRITTEN/READ DURING THIS
*         MODULE.  THE MODULE IS AS FOLLOWS - 
* 
*            THE MODULE WILL WRITE RECORD 1 AT A LENGTH  SPECIFIED  IN
*          P2 .   THE  DATA WRITTEN IN THIS RECORD WILL BE RANDOM.  AT
*         THE TERMINATION OF THE WRITE OF RECORD  1  THE  MODULE  WILL
*         WAIT  NOT BUSY IF P3.NE.  XX2X, AND MASK GENERAL STATUS WITH
*         LOGICAL PRODUCT 7474B.  ANY STATUS BITS  REMAINING  WILL  BE
*         REPORTED  AS  AN   ERROR 200.  IF AN ERROR OCCURS THE MODULE
*         WILL RESTART FROM ITS PRESENT  POSITION  ON  TAPE  WITH  THE
*         WRITE OF RECORD 1.  IF NO ERROR OCCURS THE MODULE WILL WRITE
*         RECORD 2, THEN WAIT FOR AN UNCONDITIONAL NOT BUSY.  (AS WITH
*         RECORD  1, THE LENGTH OF RECORD 2 IS EQUAL TO THAT SPECIFIED
*         IN  P2  AND THE DATA PATTERN IS RANDOM).  GENERAL STATUS  IS
*         MASKED   WITH   LOGICAL  PRODUCT  7474B.   ANY  STATUS  BITS
*         REMAINING WILL BE REPORTED AS AN  ERROR 200.
* 
*            IF AN ERROR OCCURS THE MODULE WILL RESTART WITH THE WRITE
*         OF  RECORD  1.   IF NO ERROR OCCURS, THE MODULE WILL ISSUE A
*         BACKSPACE FUNCTION, WAIT NOT BUSY IF P3.NE.  XX2X, AND  MASK
*         GENERAL  STATUS.   IF ANY ERROR BITS REMAIN AN  ERROR 253 IS
*         REPORTED.  IF AN ERROR OCCURS THE MODULE WILL  RESTART  WITH
*         THE  WRITE  OF RECORD 1.  IF NO ERROR OCCURS THE MODULE WILL
*         ISSUE ANOTHER BACKSPACE  FUNCTION,  WAIT  UNCONDITIONAL  NOT
*         BUSY,  AND  MASK GENERAL STATUS.  IF ANY STATUS BITS REMAIN,
*         AN  ERROR 253 IS REPORTED.  IF AN ERROR  OCCURS  THE  MODULE
*         WILL RESTART WITH THE WRITE OF RECORD 1.
* 
*            IF  NO  ERROR OCCURS THE MODULE WILL ISSUE A READ FORWARD
*         OVER RECORD 1, WAIT  NOT  BUSY  IF  P3  .NE.XX2X  ,AND  MASK
*         GENERAL  STATUS.  IF ANY STATUS BITS REMAIN AN  ERROR 203 IS
*         REPORTED.  IF AN ERROR OCCURS THE MODULE WILL  RESTART  WITH
*         THE  WRITE  OF  RECORD  1.   IF  NO ERROR OCCURS THE CURRENT
*         RECORD NUMBER IN B1 IS CHECKED TO ENSURE THE RECORD READ WAS
*         RECORD 1.  IF THIS CHECK FAILS AN  ERROR 232 IS REPORTED AND
*         THE MODULE RESTARTS WITH THE WRITE OF RECORD 1.  IF NO ERROR
*         OCCURS,  THE LENGTH IN P2 IS COMPARED WITH THE RECORD LENGTH
*         . IF THIS COMPARE FAILS AN ERROR 233  IS  REPORTED  AND  THE
*         MODULE  WILL  RESTART FROM ITS PRESENT POSITION ON TAPE WITH
*         THE WRITE OF RECORD 1.
* 
*            IF NO ERROR OCCURS THE POLYNOMIAL THAT WAS  GENERATED  ON
*         THE WRITE OF RECORD 1 IS COMPARED TO THE POLYNOMIAL THAT WAS
*         GENERATED ON THE READ OF RECORD 1 AND IF THE  COMPARE  FAILS
*         AN ERROR 234 IS REPORTED. (NOTE THAT THE ORIGINAL POLYNOMIAL
*         IS DISPLAYED IN  GENERAL  STATUS  WORD  2).   IF  NO  ERRORS
*         OCCUR  THE  MODULE  WILL ISSUE A READ FORWARD OVER RECORD 2,
*         WAIT NOT BUSY IF P3.NE.   XX2X  ,AND  MASK  GENERAL  STATUS.
*         STATUS  CHECKING  AND ERROR REPORTING FOR RECORD 2 IS IDENT-
*         ICAL TO THAT OF RECORD 1 AND WILL NOT BE REITERATED HERE FOR
*         THE SAKE OF CLARITY.
* 
*            IF NO ERRORS OCCUR THE MODULE WILL RESTART WITH THE WRITE
*         OF RECORD 1 AND CONTINUES WITH THE SEQUENCE  JUST  DESCRIBED
*         UNTIL FILE MAX OR EOT , (IF  P8  =  0),  IS  DETECTED.   THE
*         MODULE  WILL  THEN  WAIT  UNCONDITIONAL  NOT BUSY. IF REPEAT
*         MODULE IS SET  THE  MODULE  WILL  RESTART  WITHOUT  OPERATOR
*         INTERVENTION.   IF  REPEAT  MODULE IS NOT SET, THE TEST WILL
*         ENTER NORMAL TERMINATION. 
* 
*                             NOTE
* 
* 
*            A.   THIS  TEST  WILL  BE RUN ON MTS CONTROLLERS THAT ARE
*         EQUIPPED TO UTILIZE THE POLYNOMIALS.  IF AN  MTS  CONTROLLER
*         IS  NOT CAPABLE OF PERFORMING THE POLYNOMIAL FUNCTIONS, THIS
*         TEST WILL NOT BE UTILIZED IN EITHER THE MAINTENANCE  OR  THE
*         DIAGNOSTIC SECTIONS.
* 
*            B.  DURING THE DIAGNOSTIC SECTION OF T6X THIS MODULE WILL
*         BE INTERNALLY DEFAULTED TO COMPLETE 100 ITERATIONS  (PASSES)
*         OF THE SEQUENCE DESCRIBED.
* 
* 
*         OPERATION DIAGRAM-
* 
*         WREC=1  WREC=2
*          .....   .....
*           BS      BS
*         ******  ******
*         RDFD=1  RDFD=2                                   (1ST PASS) 
*          .....   .....
*                         WREC=1  WREC=2
*                          .....   .....
*                           BS      BS
*                         ******  ******
*                         RDFD=1  RDFD=2                   (2ND PASS) 
*                          .....   .....
* 
*                                        // RDFD=X        (LAST PASS) 
*                                        //  .....
*                          REW           // 
*         *******************************//*******
*          LP 
*         ----
* 
* 
*         LEGEND- 
*                .... =INDICATES FORWARD MOTION 
*                **** =INDICATES REVERSE MOTION 
*                WREC =WRITE RECORD 
*                RDFD =READ FORWARD 
*                  BS =BACKSPACE
*                 REW =REWIND 
*                  // =UNDEFINED DISTANCE OR TIME 
*                  LP =LOAD POINT (BOT) 
*                ---- =REFLECTIVE MARKER (BOT OR EOT) 
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. GENERATE DATA PATTERN
*         5. WRITE RECORD 1.
*         6. SAVE POLY
*         7. RELEASE-DELAY-RESERVE
*         8. WRITE RECORD 2.
*         9. SAVE POLY
*        10. BACKSPACE OVER RECORD 1 AND 2. 
*        11. READ RECORD 1. 
*        12. READ RECORD 2. 
*        13. COMPARE RECORD 1 AND 2 POLYS 
*        14. IF EOT OR FILE MAX NOT REACHED REPEAT TO 3.
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 105- COMPARE ERROR
* 
*         -EC 200- UNEXPECTED BIT APPEARED IN GENERAL STATUS. 
* 
*         -EC 203- ALERT BIT IN GENERAL STATUS WAS SET DURING 
*                  A READ OPERATION. THE LAST MAJOR FUNCTION
*                  ISSUED IS LISTED.
* 
*         -EC 232- THE RECORD COUNT IS IN ERROR DURING A
*                  -READ FORWARD- IN THE POLYNOMIAL SUBTEST.
* 
* 
*         -EC 233- THE RECORD LENGTH IS IN ERROR DURING A 
*                  -READ FORWARD- IN THE POLYNOMIAL SUBTEST.
* 
* 
*         -EC 234- THE WRITE POLYNOMIAL AND THE READ POLYNOM- 
*                  NOMIAL  HAVE FAILED TO COMPARE DURING THE
*                  -POLYNOMIAL TEST-. 
* 
* 
*         -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE.
* 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B3 = RECORD 2 WRITE POLLY SAVED HERE 
* 
*  B4 = WRITE POLLY FOR CURRENT RECORD
* 
*  B7 = MESSAGE NUMBER FOR MSG PROCESSOR
* 
*  B10= NUMBER OF BITS FOR PATTERN GENERATION 
* 
*  B11= DATA PATTERN FOR STORING
* 
*  B12= DATA PATTERN FOR STORING
* 
 1 FORMAT T6X18 - POLYNOMIAL TEST - 
/ 
20 IF (P3.AND.10.NE.0) GOTO 21
   EXIT 
21 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   B10 = 6                   *SET B10 = NUMBER OF DATA BITS 
   IF(DC.AND.10.NE.0) B10 = 8 
   B11 = P4                  *SET B11/B12 TO DATA PATTERN 
   B12 = P4 
   IF(P4.AND.1000.NE.0) B12 = B12.XOR.7777   *COMPLEMENT B12
40 B0 = P3 RS 6              *MARGIN BITS TO B0 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   WC = P2                   *RECORD LENGTH TO WC REG 
   CALL 98P                  *CHECK PARAMETERS
/ 
   EXIT TO 181               *EXIT TO NEXT MODULE 
   END 20 
COMPILE   - T6X18 - 
   MODULE T6X181,66X(42,52),LOCK   -POLYNOMIAL TEST - 
 1 FORMAT T6X18 - POLYNOMIAL TEST - 
 2 FORMAT T6X18 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X18 - ABORT ON .RES. COMMAND -
 5 FORMAT T6X18 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T6X18 ERROR(S) IN MODULE = *DEC 
 7 FORMAT T6X18 - LC=*DEC, ERCNT=*DEC 
* 
*         REWIND TAPE 
* 
20 B0=0 
   B1=0 
   B7 =4
   RES P1, ABT 74             *RESERVE
   B7 =5
   REWIND, ABT 74             *REWIND 
22 B3 = 100                   *FILE MAX FOR DIAG MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8
24 IF(P1.AND.30.NE.10) GOTO 26
   B2=1 
26 EXIT TO 182
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 7 (B6,BA) TO DISPLAY   *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   MSG 6 (BA) TO DAYFILE      *ABNORMAL TERMINATION 
   EXIT                       *ABNORMAL EXIT
   END 20 
COMPILE   - T6X181 -
   MODULE T6X182,66X(42,52),LOCK
 1 FORMAT T6X18 - POLYNOMIAL TEST - 
 2 FORMAT T6X18 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X18 - ABORT ON .RES. COMMAND -
 6 FORMAT T6X18 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T6X18 - ABORT ON .BKSP. COMMAND - 
10 FORMAT T6X18 - ABORT ON .READ FWD. COMMAND - 
11 FORMAT T6X18 - ABORT ON .REL. COMMAND -
14 FORMAT T6X18 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X18 ERROR(S) IN MODULE = *DEC 
   EQUATE EOT TO 10,ERROR TO 7434,ALERT TO 4000 
* 
*  WRITE RECORD 1 AND 2 AND SAVE POLYS
* 
20 GOSUB 40                   *WRITE RECORD 1 
   B4 = SB(2)                 *SAVE RECORD 1 POLYNOMIAL 
   GOSUB 40                   *WRITE RECORD 2 
   B5 = SB(2)                 *SAVE RECORD 2 POLYNOMIAL 
* 
*  BACKSPACE OVER 2 RECORDS 
* 
   GOSUB 44                   *BACKSPACE OVER RECORD 2
   GOSUB 44                   *BACKSPACE OVER RECORD 1
* 
*  READ RECORD ONE AND COMPARE POLYS
* 
  
   GOSUB 50                   *READ REC 1(B4 = POLYNOMIAL)
* 
*  READ RECORD TWO AND COMPARE POLYS
* 
  
   B4 = B5
   GOSUB 50                   *READ REC 2(B4 = POLYNOMIAL)
* 
*  END MODULE 
* 
30 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 31  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
31 IF(B3.EQ.0)GOTO 20         *LOOP IF FILE MAX ZERO
   GOTO 20 WHILE (B0+1.LT.B3)  *LOOP FILE MAX TIMES 
32 IF (ES.AND.CM.EQ.0) GOTO 33
   EXIT TO 181
33 IF(BA.EQ.0) GOTO 35        *NO ERRORS
34 MSG 15 (BA) TO DAYFILE 
35 EXIT                       *NORMAL EXIT
* 
*  GENERATE DATA AND WRITE SUBROUTINE 
* 
40 B1 = B1 + 1                *WRITE SUBROUTINE 
   GOSUB 64                   *RELEASE AND RESERVE
   IF(P4.AND.3000.EQ.2000) RANDOM TO OB FOR 500,START RT
   IF(P4.AND.2000.EQ.0)DUP B10 BITS OF B11/B12 TO OB FOR 500
41 OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
42 B7 = 6                   *MSG NUMBER FOR WRITE 
   WRITE ,ABT 74            *WRITE THE RECORD 
   IF(SB(1).AND.EOT.EQ.0)GOTO 43
   ENDSUB,GOTO 32                      *END OF TAPE 
43 IF(SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70 
   RETURN 
* 
*  BACKSPACE SUBROUTINE 
* 
44 GOSUB 64                 *RELEASE,DELAY,RESERVE
   B7 = 7                   *MSG NO FOR BACKSPACE 
   BKSP ,ABT 74             *BACKSPACE RECORED
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/253, GOSUB 70 
   B1 = B1 - 1              *DECR RECORD COUNT
   RETURN 
* 
*  READ FOWARD AND COMPARE POLYS SUBROUTINE 
* 
50 GOSUB 64                 *READ SUBROUTINE
   B1 = B1 + 1              *INCR RECORD COUNT
   B7 = 10                  *READ MSG NO
   READ FWD, ABT 74 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 62
   ERROR 2/203, GOSUB 70
* 
*         COMPARE DATA
* 
   B5=WC-1
   IF(WC.LE.500)GOTO 52      *WORD COUNT LARGER THAN BUFFER 
   B5=477 
52 IF(P4.AND.3000.EQ.2000) RANDOM TO OB FOR B5, START IB
   IF(P4.AND.2000.EQ.0)DUP B10 BITS OF B11/B12 TO OB FOR B5 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
55 COMPARE IB TO OB FOR B5 , ABT 56 
   GOTO 62
56 ERROR 2/105 , GOSUB 70   *DATA COMPARE ERROR 
* 
*         TEST RECORD NUMBER
* 
62 IF(IB(2).NE.B1) ERROR 2/232, GOSUB 70
* 
*         TEST WORD COUNT 
* 
   B7=WT
   IF(P1.AND.30.NE.10)GOTO 63 
   IF(SB(1).AND.40.EQ.0)GOTO 63 
   B7=B7-1
63 IF(B7.NE.WC.) ERROR 2/233, GOSUB 70
* 
*         TEST POLY 
* 
   IF(B4.NE.SB(2)) ERROR 2/234, GOSUB 70
   RETURN 
* 
*  RELEASE,DELAY AND RESERVE
* 
64 B7 = 11
   REL, ABT 74              *RELEASE,DELAY,RESERVE SUB
   B7 = P6                  *DELAY PARAM TO B7
   IF(P5.EQ.0) GOTO 65      *USE FIXED DELAY FROM P6
   B7 = RT.AND.P5           *USE RT CLOCK AND MASK
65 DELAY B7 MSEC
   B7 = 4 
   RES P1, ABT 74 
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   GOTO 34                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X181 -
   MODULE T6X19,66X(42,52),LOCK   -CANNED POLYNOMIAL TEST-
*** CANNED POLYNOMIAL TEST
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
*              THIS MODULE WILL GENERATE AND  VERIFY  10  OCTAL  POLY-
*         NOMIALS.   THIS  IS  ACCOMPLISHED  BY  GENERATING  10  OCTAL
*         GROUPS, (EACH GROUP REPRESENTING A DIFFERENT POLYNOMIAL), OF
*         100  OCTAL  RECORDS  EACH.   THE RANDOM DATA PATTERN USED TO
*         WRITE THE 100 RECORDS IS KNOWN AND REFERENCED TO THE APPLIC-
*         ABLE  POLYNOMIAL.   DUE  TO  THE NATURE OF THE TEST, CERTAIN
*         ADDRESSES WILL BE INTERNALLY DEFAULTED TO SPECIFIC VALUES BY
*         THE  MODULE WHICH WILL OVERRIDE/SUPERCEDE ANY VALUE MANUALLY
*         PLACED IN THOSE ADDRESSES.  THESE DEFAULTS  INCLUDE  BOTH  7
*         AND  9 TRACK VALUES AND PARAMETERS. THE MODULE WILL GENERATE
*         PATTERN 0, ( P2 =0400), THROUGH PATTERN 7, ( P2 =0407). EACH
*         PATTERN  IS  THE  EQUIVALENT OF A FILE OF 100 OCTAL RECORDS,
*         WHICH HAS BEEN STATED, OR A TOTAL OF 1000 OCTAL RECORDS  FOR
*         ALL TEN PATTERNS. THE MODULE IS AS FOLLOWS -
* 
*            SELECT PATTERN 0, ( P2 =0400), AND WRITE RECORD 1 THROUGH
*         RECORD 100 WITH THE SAME RANDOM PATTERN, WAIT NOT BUSY IF P3
*         .NE.   XX2X,  BETWEEN  EACH  RECORD, AND MASK GENERAL STATUS
*         WITH LOGICAL PRODUCT 7474B.  ANY STATUS BITS REMAINING  WILL
*         BE REPORTED AS AN  ERROR 200. 
* 
*            IF  AN  ERROR  OCCURS  THE  MODULE  WILL RESTART FROM ITS
*         PRESENT POSITION ON TAPE AND ATTEMPT  TO  WRITE  THE  RECORD
*         ERROR  FREE.   THIS SEQUENCE CONTINUES UNTIL ALL 100 RECORDS
*         HAVE BEEN  WRITTEN  ERROR  FREE  AND  THE  RECORD  COUNT  IS
*         CORRECT.   IF  ANY ERROR OCCURS THE MODULE WILL RESTART FROM
*         ITS PRESENT POSITION AND ATTEMPT TO WRITE  ALL  100  RECORDS
*         CORRECTLY.   THIS  SEQUENCE  CONTINUES  FOR ALL 10 PATTERNS.
*         AFTER PATTERN 0 RECORDS HAVE  BEEN  GENERATED/WRITTEN  ERROR
*         FREE  THE MODULE WILL WAIT NOT BUSY IF P3.NE.  XX2X, DEFAULT
*          P2 =0401, (THIS IS PATTERN 1), AND START THE 100  WRITE  OF
*         PATTERN 1.  THE GENERATION OF PATTERN 1 FILE IS IDENTICAL TO
*         THAT OF PATTERN 0.  THE WRITE SEQUENCE CONTINUES  UNTIL  ALL
*         10  PATTERNS  HAVE  BEEN  CORRECTLY  GENERATED.   (NOTE THAT
*          P2 =0407 IS THE LAST PATTERN, THAT IS, PATTERN 7). 
* 
*            THE MODULE THEN WAIT NOT BUSY IF P3 .NE.  XX2X, WRITES  A
*         FILE  MARK/TAPE  MARK,  WAITS  UNCONDITIONAL NOT BUSY, MASKS
*         STATUS AND REPORTS ANY ERRORS, RESETS PARAM -P3-, PRESETS P2
*          =0400, (PATTERN 0), CLEARS FILE CURRENT AND RECORD CURRENT,
*         AND ISSUES A REWIND FUNCTION. 
* 
*            AT LOAD POINT THE MODULE WILL ISSUE  A  READ  FORWARD  OF
*         RECORD  1  IN  FILE  1, (PATTERN 0), WAIT NOT BUSY IF P3.NE.
*         XX2X, AND MASK GENERAL STATUS.  ANY  STATUS  BITS  REMAINING
*         WILL  BE  REPORTED AS AN ERROR 203 OR 206.  IF AN  ERROR 203
*         OCCURS THE MODULE WILL NOT DO A COMPARE  OF  THE  WRITE  AND
*         READ POLYNOMIALS,  OR CHECK RECORD LENGTH, OR RECORD NUMBER.
*         THIS IS DUE TO THE PARITY ERROR NEGATING  FURTHER  CHECKING.
*         IF  A  206  ERROR  OCCURS, (ON-THE- FLY ERROR CORRECTION HAS
*         OCCURRED), THE MODULE WILL COMPARE THE POLYNOMIAL  GENERATED
*         ON THE WRITE TO THE POLYNOMIAL GENERATED ON THE READ FOR THE
*         RECORD BUT WILL NOT CHECK RECORD NUMBER OR RECORD LENGTH. 
* 
*            IF THE COMPARE OF THE POLYNOMIALS FAILS,  AN   ERROR  215
*         WILL  BE  REPORTED  AND  THE  POLYNOMIAL  EXPECTED   WILL BE
*         LOCATED IN -FILE- AND THE ACTUAL POLYNOMIAL WILL BE IN -G2-.
* 
*            THIS READ SEQUENCE CONTINUES  FOR  EACH  RECORD  IN  EACH
*         FILE.   (NOTE THAT THE MODULE WAIT NOT BUSY IF P3 .NE.  XX2X
*         BETWEEN EACH RECORD).  UPON DETECTION OF THE FILE  MARK/TAPE
*         MARK  WRITTEN  AT THE END OF THE LAST FILE. IF REPEAT MODULE
*         IS SET THE MODULE  WILL  RESTART  FROM  LOAD  POINT  WITHOUT
*         OPERATOR  INTERVENTION.   IF  REPEAT  MODULE  IS NOT SET THE
*         MODULE WILL ENTER NORMAL TERMINATION. 
* 
* 
*                             NOTE
* 
*              THIS  MODULE  WILL  BE  RUN ON MTS CONTROLLERS THAT ARE
*         EQUIPPED TO UTILIZE POLYNOMIALS.  IF AN  MTS  CONTROLLER  IS
*         NOT  CAPABLE  OF  PERFORMING  THE  POLYNOMIAL  FUNCTION, THE
*         MODULE WILL NOT BE UTILIZED BY  THE  DIAGNOSTIC  SECTION  OF
*         T6X.
* 
*  OPERATIONAL DIAGRAM- 
* 
* 
*          (PATTERN -0-)               (PATTERN -1-)  (PATTERN 7) 
* WREC=1 WREC=2  WREC=3 // WREC=100  WREC=1  WREC=2 // WREC=100 
* .....  .....   .....     .....     .....   .....     .....
*                           REW 
* **********************//**************************//********
* RDRF=1 RDRF=2  RDRF=3 // RDRF=100  RDRF=1  RDRF=2 // RDRF=100 
* .....  .....   ..... //  .....     .....   ..... //  .....
*                           REW 
* **********************//**************************//********
*  LP 
* ----
* 
* 
*        LEGEND-
*              .... =INDICATES FORWARD MOTION 
*              **** =INDICATES REVERSE MOTION 
*              WREC =WRITE RECORD 
*              RDRF =READ FORWARD 
*               REW =REWIND 
*                LP =LOAD POINT (BOT) 
*                // =UNDEFINED DISTANCE OR TIME 
*              ---- =REFLECTIVE MARKER (BOT OR EOT) 
* 
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. WAIT NOT BUSY IF SELECTED
*         5. SET RECORD LENGTH AT 400 
*         6. WRITE 100 RECORDS
*         7. INCREMENT RECORD LENGTH BY 1 
*         8. IF RECORD NOT 411 GO TO 6 (IE, 1000 RECORDS) 
*         9. ENDFILE
*        10. REWIND 
*        11. READ AND COMPARE POLYS AGAINST CANNED ANSWERS. 
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 105- DATA COMPARE ERROR.
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
*                  OPERATION. 
* 
* 
*         -EC 203- ALERT BIT IN GENERAL STATUS WAS SET DURING 
*                  A READ OPERATION. THE LAST MAJOR FUNCTION
*                  ISSUED IS LISTED.
* 
*         -EC 205- POLYNIMIAL -ON-THE-FLY- ERROR CORRECTION.
* 
*         -EC 215- THE WRITE AND READ POLYNOMIAL HAVE FAILED
*                  TO COMPARE DURING THE -CANNED POLYNOMIAL 
*                  TEST-. 
* 
* 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = POINTER TO POLY CONSTANTS IN OB(450-477)
* 
*  B1 = CURRENT RECORD
* 
*  B2 = RANDOM NUMBER SEED FOR CURRENT RECORD 
* 
*  B3 = EXPECTED POLYNOMIAL(GSTAT2=POLYNOMIAL READ) 
* 
*  B6 = NUMBER OF BUFFER WDS TO COMPARE ON POLY ERROR 
* 
 1 FORMAT T6X19 - CANNED POLYNOMIAL TEST -
 2 FORMAT T6X19 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X19 - ABORT ON .RES. COMMAND -
 5 FORMAT T6X19 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T6X19 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T6X19 - ABORT ON .WAITNB. COMMAND - 
10 FORMAT T6X19 - ABORT ON .ENDFILE. COMMAND -
11 FORMAT T6X19 - ABORT ON .READ FWD. COMMAND - 
12 FORMAT T6X19 - ABORT ON .STATUS DETAIL. COMMAND -
13 FORMAT T6X19 - ABORT ON .REL. COMMAND -
14 FORMAT T6X19 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X19 ERROR(S) IN MODULE = *DEC 
   DATA (OB(450),CON)1767,4321,0652,5515,3045,0235,7404,1173
   DATA (OB(460),CON)7750,7510,0420,4540,5210,2150,2250,5660
   DATA (OB(470),CON)0060,5610,0730,7130,6770,3040,2720,1020
* 
*         REWIND TAPE 
* 
20 IF(P3 AND 10 EQ 0)GOTO 57   EXIT,NOT POLY CONTRL 
   MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B0 = P3.RS.6               *MARGIN BITS TO B7
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   CALL 98P                   *CHECK PARAMETERS 
21 B0=0 
   B1=0 
   B7 = 4 
   RES P1, ABT 74           *RESERVE
   B7 = 5 
   REWIND, ABT 74           *REWIND 
30 WC = 400                 *RECORD LENGTH STARTS AT 400
* 
*  GENERATE DATA
* 
31 B1 = 1                   *SET RECORD COUNT 
   RANDOM TO OB FOR WC , START OB(WC+50)
* 
*  WRITE 100 RECORDS OF CURRENT LENGTH
* 
32 GOSUB 60                 *REL/RES
   B7 = 6                   *WRITE ERROR MESSAGE NUMBER 
   WRITE , ABT 74           *WRITE RECORD 
   IF(P3 AND 20 NE 0)GOTO 33
   B7 = 7 
   WAITNB,ABT 74            *WAIT NOT BSY IF BYPASS NOT ON
33 IF(SB(1).AND.7474.NE.0) ERROR 2/200 , GOSUB 70 
   GOTO 32 WHILE (B1+1.LT.101)  *DO 100 RECORDS 
* 
*  BUMP LENGTH
* 
   GOTO 31 WHILE (WC+1.LT.410)  *DO 10 BLOCKS(1000 RECORDS) 
* 
*  ENDFILE AND REWIND 
* 
   B7 = 10
   ENDFILE, ABT 74          *WRITE END OF FILE
   B7 = 5 
   REWIND, ABT 74           *REWIND TAPE
* 
*  READ AND COMPARE POLYS WITH CANNED ANSWERS 
* 
   WC = 400                 *RESET RECORD LENGTH
40 B1 = 1                   *RESET RECORD COUNTER 
   B0 = DC.AND.10 + WC      *SET PTR TO 7 OR 9 TRK POLY 
   B0 = OB(B0+60)           *GET POLY 
41 GOSUB 60                 *REL/RES
   B7 = 11                  *READ ERROR MSG NUMBER
   READ FWD, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 42  *SKIP WAIT NOT BUSY IF ON 
   B7 = 7 
   WAITNB, ABT 74           *WAIT NOT BSY 
42 B7 = 12
   STATUS DETAIL,ABT 74     *GET ALL THE STATUS 
   IF(SB(1).AND.7434.EQ.0)GOTO 44 
   IF(SB(3).EQ.0) GOTO 43 
   ERROR 2/203, GOSUB 70    *ALERT STATUS DURING READ 
   GOTO 47
43 ERROR 2/205, GOSUB 70     *ON THE FLY CORRECTION 
44 IF(SB(2).NE.B0) ERROR 2/215, GOSUB 70
* 
*         COMPARE DATA
* 
   IF(P3.AND.2.EQ.0) GOTO 47
   RANDOM TO OB FOR WC, START OB(WC+50) 
   B5=WC
   IF(DC.AND.10.EQ.0) GOTO 45    *7 TRACK TAPE
   IF(B5.AND.1.EQ.0) GOTO 45
   B5=B5-1
45 COMPARE IB TO OB FOR B5, ABT 46
   GOTO 47
46 ERROR 2/105, GOSUB 70
47 GOTO 41 WHILE (B1+1.LT.101)   *DO 100 RECORDS
   GOTO 40 WHILE (WC+1.LT.410)   *DO 10 BLOCKS
* 
*  END MODULE 
* 
53 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 55  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
55 IF (ES.AND.CM.NE.0) GOTO 21
   IF(BA.EQ.0) GOTO 57        *NO ERRORS
56 MSG 15 (BA) TO DAYFILE 
57 EXIT                       *NORMAL EXIT
* 
*  RELEASE,DELAY AND RESERVE  SUBROUTINE
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B7 = 13
   REL, ABT 74
61 B7 = P6
   IF(P5.EQ.0) GOTO 62       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
62 DELAY B7 MSEC
   B3 = P1.AND.7007         *REMOVE MODE,CODE BITS
   B3 = DC.AND.10 + B3      *SELECT PACK MODE FOR 9TRK
   B7 = 4 
   RES B3,ABT 74            *RESERVE
   RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X19 - 
   MODULE T6X20,66X(42,52),LOCK     -LADDER TEST(WRITE MODULE)- 
*** LADDER TEST 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
* 
* 
*              THIS  MODULE WILL WRITE ASCENDING AND DECENDING RECORDS
*         IN LENGTH FROM 0001 TO 7777 AND BACK TO 0001 UNTIL  EOT   IS
*         ENCOUNTERED.  EACH WRITE WILL WAIT NOT BUSY IF P3.NE.  XX2X,
*         BETWEEN RECORDS AND MASK GENERAL STATUS.  ANY BITS REMAINING
*         WILL  BE  REPORTED  AS  AN   ERROR 200 OR AN ERROR 204.  THE
*         PATTERN TO BE GENERATED WILL  BE  SPECIFIED  IN   P4 .   THE
*         WRITE SEQUENCE CONTINUES UNTIL  EOT  IS ENCOUNTERED.
* 
*            THE  MODULE  WILL  WAIT  UNCONDITION NOT BUSY AND BEGIN A
*         READ REVERSE OPERATION.  THE MODULE WILL WAIT NOT BUSY IF P3
*         .NE.   XX2X  BETWEEN  EACH  BLOCK  READ IN REVERSE AND CHECK
*         STATUS.  ANY BITS REMAINING AFTER THE MASK OF STATUS WILL BE
*         REPORTED  AS  AN   ERROR  202 OR AN  ERROR 204.  THE REVERSE
*         READ CONTINUES UNTIL LOAD POINT IS ENCOUNTERED.  THE  MODULE
*         WILL CHECK THE VALUE OF RECORD CURRENT (B1) AND FILE CURRENT
*         (B0) FOR ZERO (0).  IF  EITHER  ARE  A  NON-ZERO  VALUE,  AN
*         ERROR 267 IS REPORTED.
* 
*            THE  MODULE BEGINS A READ FORWARD OPERATION TO  EOT .  AS
*         WAS THE CASE  IN  THE  REVERSE  READ,  GENERAL   STATUS   IS
*         MASKED  BETWEEN  EACH  RECORD  READ AND ANY BITS THAT REMAIN
*         WILL BE REPORTED AS AN ERROR 203 OR AN  ERROR   204.   IF  A
*         ERROR  204  OCCURS DURING EITHER FORWARD OR REVERSE, YOU ARE
*         TO REFERENCE DETAILED STATUS WORD 3 FOR  ADDITIONAL  INFORM-
*         ATION.  FORWARD AND REVERSE READ WILL CONTINUE UNTIL TERMIN-
*         ATED .
* 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. WAIT NOT BUSY IF SELECTED
*         5. GENERATE DATA
*         6. SET WORD COUNT TO 1
*         7. WRITE
*         8  INCREMENT WORD COUNT BY 1
*         9. IF WORD COUNT NOT 7777 AND NOT EOT GO TO 7 
*        10. WRITE
*        11. DECREMENT WORD COUNT BY 1
*        12. IF WORD COUNT NOT 0 AND NOT EOT GO TO 10 
*        13. READ TAPE REVERSE TO LOAD POINT CHECKING ERRORS
*        14. READ TAPE FORWARD TO END OF DATA CHECKING ERRORS 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 105- DATA COMPARE ERROR 
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
*                  OPERATION. 
* 
* 
*         -EC 202- A STATUS ERROR OCCURRED ON A READ REVERSE. 
* 
* 
*         -EC 203- ALERT BIT SET DURING A READ OPERATION. 
* 
*         -EC 204- DETAIL STATUS WORD 3 HAS ONE OF THE
*                  FOLLOWING SET- 
* 
*                     A. SEVERE START ERROR ..... 4XXX
*                     B. SINGLE FRAME SKEW ...... X1XX
*                     C. ILLEGAL CHARACTER SET .. XX4X
* 
*         -EC 267- NUMBER OF RECORDS READ FORWARD AND THE 
*                  NUMBER OF RECORDS READ IN REVERSE DO NOT 
*                  COMPARE. 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B7 = TRACK SIZE(6 OR 8)
*        FOR MESSAGE PROCESSOR
* 
*  B4 = K/L DISPLAY LINE COUNTER
* 
*  B5 = POINTER TO OB/IB
* 
*  B6 = NO OF DATA WORDS TO COMPARE (SET BEFORE ENTRY)
* 
*  B7 = MSG NUMBER(SET BEFORE ENTRY)
*      FOR REL/RES SUBROUTINE 
* 
*  B7 = DELAY VALUE 
* 
*  B10= NUMBER OF BITS FOR PATTERN GENERATION 
* 
*  B11= DATA PATTERN FOR STORING
* 
*  B12= DATA PATTERN FOR STORING
* 
 1 FORMAT T6X20 - LADDER TEST - 
/ 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B0 = P3.RS.6               *MARGIN BITS TO B7
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   CALL 98P                   *CHECK PARAMETERS 
   EXIT TO 201
   END 20 
COMPILE   - T6X20 - 
   MODULE T6X201,66X(42,52),LOCK     -LADDER TEST(WRITE MODULE)-
 1 FORMAT T6X20 - LADDER TEST, WRITE -
 2 FORMAT T6X20 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X20 - ABORT ON .RES. COMMAND -
 5 FORMAT T6X20 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T6X20 - ABORT ON .REL. COMMAND -
 7 FORMAT T6X20 - ABORT ON .WRITE. COMMAND -
10 FORMAT T6X20 - ABORT ON .WAITNB. COMMAND - 
11 FORMAT T6X20 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X20 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X20 ERROR(S) IN MODULE = *DEC 
   EQUATE EOT TO 10,ERROR TO 7474, DETAIL3 TO 4140
   EQUATE LOADPT TO 4 
* 
*         REWIND TAPE 
* 
20 IF(ES.AND.SL.NE.0) GOTO 21 
   MSG 1 TO DISPLAY          *DISPLAY RUN MESSAGE 
21 B0=0 
   B1=0 
   B2=0 
   B7 = 4 
   RES P1, ABT 74             *RESERVE
   B7 = 5 
   REWIND, ABT 74             *REWIND 
* 
*         GENERATE PATTERN
* 
22 IF(P4 AND 3000 EQ 2000)GOTO 25 
   B10 = 6                   *SET B10 = NUMBER OF DATA BITS 
   IF(DC.AND.10.NE.0) B10 = 8 
   B11 = P4                  *SET B11/B12 TO DATA PATTERN 
   B12 = P4 
   IF(P4.AND.1000.NE.0) B12 = B12.XOR.7777   *COMPLEMENT B12
   DUP B10 BITS OF B11/B12 TO OB FOR 500
   GOTO 30
25 IF(P3 AND 4 NE 0)GOTO 26 
   B2=1 
   GOTO 30
26 RANDOM TO OB FOR 500 , START P7
* 
*         RELEASE, DELAY,AND RESERVE
* 
30 WC = 1 
   B3=1 
33 IF(P5+P6.LT.20D) GOTO 34  *BYPASS REL ON SHORT DELAY 
   B7 = 6 
   REL, ABT 74
34 B7 = P6
   IF(P5.EQ.0)GOTO 35       *USE FIXED DELAY (P6) 
   B7 = RT AND P5           *USE RT CLOCK AND MASK
35 DELAY B7 MSEC
   B7 = 4 
   RES P1, ABT 74           *RESERVE
* 
*         BUMP RECORD COUNTER 
* 
   GOTO 36 WHILE (B1+1.NE.0)  *INCR 24 BIT COUNTER B0+B1
   B0 = B0 + 1
* 
*         GENERATE RANDOM REAL TIME CLOCK COUNTER 
* 
36 IF(B2 EQ 0) GOTO 40
   RANDOM TO OB FOR 500 , START RT
* 
*         WRITE RECORD
* 
40 IF(P3.AND.1.NE.0)GOTO 41  *BYPASS ADDR CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
41 B7 = 7 
   WRITE ,ABT 74              *WRITE RECORD 
   IF(P3.AND.20.NE.0)GOTO 42  *SKIP WAITNB IF BYPASS SET
   B7 = 10
   WAITNB, ABT 74 
* 
*         CHECK FOR ERRORS
* 
42 B7 = 11
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.EOT.NE.0) GOTO 53  *TERMINATE WRITE AT EOT
   IF(SB(1).AND.ERROR.EQ.0) GOTO 43 
   ERROR 2/200 , GOSUB 70 
   IF(SB(5).AND.DETAIL3.NE.0) ERROR 2/204, GOSUB 70 
* 
*         INCREMENT OR DECREMENT WORD COUNT 
* 
43 WC = WC+ B3              *INCR/DECR WORD COUNT 
   IF(WC.NE.0) GOTO 33
   IF(B3.NE.1) GOTO 30
   WC=7776                  *START DESCENDING 
   B3=7777
   GOTO 33
* 
*         END MODULE
* 
53 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 55  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
55 IF (ES.AND.RC.NE.0) GOTO 21
   EXIT TO 202
* 
*         PROCESS ERROR 
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   MSG 15 (BA) TO DAYFILE 
   END 20 
COMPILE   - T6X201 -
   MODULE T6X202,66X(42,52),LOCK  -LADDER TEST(READ REV MODULE)-
 1 FORMAT T6X20 - LADDER TEST, READ REV - 
 2 FORMAT T6X20 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X20 - ABORT ON .REL. COMMAND -
 5 FORMAT T6X20 - ABORT ON .RES. COMMAND -
 6 FORMAT T6X20 - ABORT ON .WAITNB. COMMAND - 
 7 FORMAT T6X20 - ABORT ON .STATUS DETAIL. COMMAND -
10 FORMAT T6X20 - ABORT ON .READ REV. COMMAND - 
14 FORMAT T6X20 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X20 ERROR(S) IN MODULE = *DEC 
   EQUATE ERROR TO 7474,DETAIL3 TO 4140,LOADPT TO 4 
   EQUATE ALERT TO 4000 
* 
*         PRESET
* 
20 IF(ES.AND.SL.NE.0) GOTO 21 
   MSG 1 TO DISPLAY          *DISPLAY RUN MESSAGE 
21 B7 = P3 RS 6             *MARGIN BITS TO B7
   MARGINS B7               *SEL MARGINS PER PARAM P3 
   WC = 500 
* 
*         RELEASE, DELAY, AND RESERVE 
* 
30 IF(P5+P6.LT.20D) GOTO 31  *BYPASS REL ON SHORT DELAY 
   B7 = 4 
   REL, ABT 74
31 B7 = P6
   IF(P5.EQ.0)GOTO 32       *USE FIXED DELAY(P6)
   B7 = RT AND P5           *USE RT CLOCK AND MASK
32 DELAY B7 MSEC
   B7 = 5 
   RES P1, ABT 74             *RESERVE
   IF(P3 AND 20 NE 0)GOTO 34  *SKIP WAITNB IF BYPASS SET
   B7 = 6 
   WAITNB, ABT 74 
* 
*         READ REVERSE
* 
34 B7 = 10
   READ REV, ABT 74 
* 
*         CHECK ERRORS
* 
40 IF(P3 AND 20 NE 0)GOTO 42
   B7 = 6 
   WAITNB, ABT 74 
42 B7 = 7 
   STATUS DETAIL, ABT 74
   IF(SB(1) AND LOADPT NE 0) GOTO 46  *GO READ FWD
   IF(SB(1) AND ALERT EQ 0) GOTO 43 
   ERROR 2/202, GOSUB 70
   GOTO 44
43 IF(SB(5) AND DETAIL3 NE 0)ERROR 2/204, GOSUB 70
* 
*         DECREMENT RECORD COUNTER
* 
44 IF(B1-1.LT.0) GOTO 45     *UNDERFLOW 
   B1=B1-1                   *DECREMENT 
   GOTO 30
45 B1 = 7777                 *CORRECT FOR UNDERFLOW 
   B0 = B0-1                 *DECREMENT 
   GOTO 30
* 
*         CHECK COUNTER SHOULD BE 0 AT LP 
* 
46 IF(B0+B1.NE.0)ERROR 2/267 , GOSUB 70 
   EXIT TO 203              *GO DO READ FORWARD 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 30                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 30         *NOT SECOND TRY 
   MSG 15 (BA) TO DAYFILE     *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T6X202 -
   MODULE T6X203,66X(42,52),LOCK  -LADDER TEST(READ FWD MODULE)-
 1 FORMAT T6X20 - LADDER TEST, READ FWD - 
 2 FORMAT T6X20 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X20 - ABORT ON .REL. COMMAND -
 5 FORMAT T6X20 - ABORT ON .RES. COMMAND -
 6 FORMAT T6X20 - ABORT ON .READ FWD. COMMAND - 
 7 FORMAT T6X20 - ABORT ON .WAITNB. COMMAND - 
10 FORMAT T6X20 - ABORT ON .STATUS DETAIL. COMMAND -
14 FORMAT T6X20 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X20 ERROR(S) IN MODULE = *DEC 
   EQUATE EOT TO 10,DETAIL3 TO 4140,ALERT TO 4000 
* 
*         PRESET
* 
20 IF(ES.AND.SL.NE.0)GOTO 21
   MSG 1 TO DISPLAY         *MODULE MESSAGE TO DISPLAY
21 B3 = 1                   *INCR/DECR VALUE
   B7 = P3 RS 6             *MARGIN BITS TO B7
   MARGINS B7               *SELECT MARGINS PER PARAM P3
   B0 = 0 
   B1 = 0 
* 
*         RELEASE,DELAY,AND RESERVE 
* 
27 IF(P5+P6.LT.20D) GOTO 30  *BYPASS REL ON SHORT DELAY 
   B7 = 4 
   REL, ABT 74
30 B7 = P6
   IF(P5.EQ.0)GOTO 31       *USE FIXED DELAY
   B7 = RT AND P5           *USE RT CLOCK AND MASK
31 DELAY B7 MSEC
   B7 = 5 
   RES P1, ABT 74           *RESERVE
* 
*         READ FORWARD
* 
   WC=500 
   B7 = 6 
   READ FWD,ABT 74
* 
*         INCREMENT RECORD
* 
   GOTO 32 WHILE (B1+1.NE.0)  *INCR 24 BIT COUNTER B0+B1
   B0 = B0 + 1
* 
*         CHECK ERRORS
* 
32 IF(P3.AND.20.NE.0)GOTO 33  *SKIP WAITNB IF BYPASS SET
   B7 = 7 
   WAITNB, ABT 74 
33 B7 = 10
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.EOT.NE.0)GOTO 50  *GO READ REVERSE AT EOT 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 34
   ERROR 2/203 , GOSUB 70 
   GOTO 40
34 IF(SB(4).AND.DETAIL3.NE.0)ERROR 2/204 , GOSUB 70 
* 
*         COMPARE DATA
* 
   IF(P3.AND.2.EQ.0)GOTO 27  *IF NO COMPARE DATA
40 WC=WT
   IF(P1.AND.30.NE.10) GOTO 41
   IF(SB(1).AND.40.EQ.0) GOTO 41
   WC=WC-1
41 B5=WC
   IF(B5.LE.500)GOTO 42      *WORD COUNT LARGER THAN BUFFER 
   B5=500 
42 IF(P4.AND.3000.EQ.2000) RANDOM TO OB FOR B5, START IB
   IF(P4.AND.2000.EQ.0)DUP B10 BITS OF B11/B12 TO OB FOR B5 
43 IF(P3.AND.1.NE.0)GOTO 44  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
44 IF(P1.AND.30.NE.10) GOTO 45
   IF(B5.AND.1.EQ.0) GOTO 45
   B5=B5-1
45 COMPARE IB TO OB FOR B5 , ABT 46 
   GOTO 27
46 ERROR 2/105 , GOSUB 70   *DATA COMPARE ERROR 
   GOTO 27                  *PROCESS NEXT RECORD
* 
*         END MODULE
* 
50 B6 = B6 + 1
   IF(ES.AND.SL.EQ.0)GOTO 51
   MSG 14 (B6,BA) TO DISPLAY
51 IF (ES.AND.RC.NE.0) GOTO 55   *IF RC GO READ REV 
   IF (ES.AND.RM.NE.0) GOTO 54   *IF REPEAT MODULE
   IF (BA.EQ.0) GOTO 53 
52 MSG 15 (BA) TO DAYFILE 
53 GOTO 77                  *EXIT 
54 EXIT TO 201              *GO REWRITE 
55 EXIT TO 202              *GO READ REVERSE
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 27                  *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 27       *NOT SECOND TRY 
   GOTO 52                    *ABNORMAL TERMINATION 
77 END 20 
COMPILE   - T6X203 -
   MODULE T6X30,66X(42,52),LOCK   -IRG MAP- 
*** IRG MAP 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
*              THIS  MAINTENANCE  TEST  WILL SKIP P9 RECORDS THEN READ
*         TAPE NON-STOP FOR 50 OCTAL RECORDS TIMING THE  INTER  RECORD
*         GAP  (IRG)  COUNTING  THE  FRAMES AND TAKING STATUS OF EVERY
*         RECORD AND POSITIONING ALL OF THESE IN  THE  OUTPUT  BUFFER.
*         EVERY  50  OCTAL RECORDS, THE TAPE WILL STOP, THE CHANNEL IS
*         RELEASED, AND THE DATA FROM  THE  RECORDS  CHECKED  WILL  BE
*         PLACED  IN  THE  OUTPUT  BUFFER FOR PLOTTING. THIS WILL MEAN
*         THAT EVERY 50TH OCTAL RECORD GAP CANNOT BE CHECKED BUT,  THE
*         FRAME COUNT AND STATUS WILL BE CHECKED. 
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. SKIP RECORDS IF SELECTED 
*         4. TIME 50 GAPS 
*         5. PLOT RESULTS 
*         6. IF NOT ALL FILES GO TO 4 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B5 = CHAR POSITION FOR PLOT
* 
*  B6 = LINE NUMBER FOR PLOT
* 
*  B7 = POINTER TO INPUT BUFFER 
* 
 1 FORMAT T6X30 - IRG MAP - 
 2 FORMAT T6X30 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X30 - ABORT ON .RES. COMMAND -
 5 FORMAT T6X30 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T6X30 - ABORT ON .READ FWD. COMMAND - 
 7 FORMAT T6X30 - ABORT ON .REL. COMMAND -
10 FORMAT T6X30 - ABORT ON .TIME. COMMAND - 
15 FORMAT             INTER-RECORD GAP PLOT 
16 FORMAT      7 TRK=.75 INCHES NOM, 9 TRK=.6 INCHS NOM 
17 FORMAT     PLOTS ON LINES MAX AND MIN ARE OUT OF RANGE 
20 FORMAT     X AXIS IS RECORDS *OCT THRU *OCT
21 FORMAT     Y AXIS IS RECORD GAP IN HUNDREDTHS(107=1.07)
22 FORMAT REC         1       2       3       4       5 
23 FORMAT      1234567012345670123456701234567012345670 
24 FORMAT MAX 
25 FORMAT *DEC
26 FORMAT MIN 
27 FORMAT F/M 
30 FORMAT T6X30 - LC=*DEC, ERCNT=*DEC 
31 FORMAT T6X30 ERROR(S) IN MODULE = *DEC 
   EQUATE FILEMK TO 20, EOT TO 10 
* 
*         REWIND TAPE 
* 
40 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B0 = P3.RS.6               *MARGIN BITS TO B7
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   WC = P2                    *SET WORD COUNT 
   CALL 98P                   *CHECK PARAMETERS 
41 B0=0 
   B1=0 
   B2=0 
   B7 = 4 
   RES P1, ABT 74             *RESERVE
   B7 = 5 
   REWIND, ABT 74             *REWIND 
   IF(P9 EQ 0)GOTO 43         *DONT SKIP RECS IF P9 ZERO
* 
*         SKIP RECORDS
* 
42 B7 = 4 
   RES P1, ABT 74 
   B7 = 6 
   READ FWD, ABT 74         *SKIP A RECORD
   GOTO 42 WHILE(B1 + 1 LT P9)  *SKIP P9  RECORDS 
* 
*         BUILD DISPLAY 
* 
43 B1 = B2 + 1              *FIRST RECORD 
   B2 = B1 + 47             *LAST RECORD
   B3 = 15
   B4 = 0 
44 MSG B3(B1,B2) TO LINE B4 
   B3 = B3 + 1
   GOTO 44 WHILE(B4 +1 NE 10) 
   B3 = 61                  *GAP .49
   B4 = 45                  *STARTS AT LINE 45
45 MSG 25(B3) TO LINE B4    *DRAW THE GRAPH 
   B4 = B4 - 1
   GOTO 45 WHILE(B3 + 2 NE 155) 
   MSG 26 TO LINE 46
   MSG 27 TO LINE 47
* 
*         TIME GAPS 
* 
   B7 = 4 
   RES P1,ABT 74
   B7 = 10
   TIME 50 GAPS TO IB, ABT 74 
   B7 = 7 
   REL,ABT 74 
* 
*         PLOT RESULTS
* 
   B4=0 
   B7=0 
46 IF(IB(B4+1).AND.EOT.EQ.0) GOTO 47
   PICTURE AND BLANK
   GOTO 53
47 IF(IB(B4+1).AND.FILEMK.EQ.0)GOTO 50  *BRANCH IF NOT F/M
   B3 = 54                   *IF F/M READ THEN
   B0 = B0 + 1               *INCR FILE COUNT 
   GOTO 50                   *GO PLOT F/M 
50 B5 = IB(B4) AND 7776 
   B3 = 56
   IF(B5 LT B3)GOTO 51       *USE MIN VAL FOR OUT OF RANGE
   B3 = 155 
   IF(B5 GT 153)GOTO 51      *USE MAX VAL FOR OUT OF RANGE
   B3 = B5
51 B3 =B3 RS 1
   B3 = B3 - 26              *B6 = LINE NO FOR PLOT 
   B5 = B7 + 5               *B5 = CHAR POS FOR PLOT
   PLOT LINE B3 CHAR B5 
   B4 = B4 + 3               *BUMP BUFFER ADDRESS 
   GOTO 46 WHILE (B7+1 LE 47) 
   DELAY 1000D MSEC 
   PICTURE AND BLANK          *TAKE A PICTURE OF THE PLOT 
   IF(B0 LT P8)GOTO 43        *DO P8 FILES
* 
*         END MODULE
* 
53 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 55  *IF NOT SL SKIP MESSAGE 
   MSG 30 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
55 IF (ES.AND.CM.NE.0) GOTO 41
   IF(BA.EQ.0) GOTO 57        *NO ERRORS
56 MSG 31 (BA) TO DAYFILE 
57 GOTO 77                    *NORMAL EXIT
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 30 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 30 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 41                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 41         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
77 END 40 
COMPILE  - T6X30 -
   MODULE T6X31,66X(42,52),LOCK   -TAPE PATH DAMAGE-
*** TAPE PATH DAMAGE
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
* 
*              THIS  MODULE IS DESIGNED TO DETECT PROBLEMS IN THE TAPE
*         PATH THAT COULD CAUSE DAMAGE TO MAGNETIC TAPE MOUNTED ON THE
*         TRANSPORT.  THE MODULE WRITES ONE RECORD (RECOMMEND EVEN PPU
*         BYTES FOR ODD RECORD DETECTION ON READ) OF A LENGTH THAT  IS
*         CONTAINED IN  P2 , WAIT NOT BUSY IF P3.NE.  XX2X, THEN MASKS
*         GENERAL STATUS WITH LOGICAL PRODUCT 7474B.   IF  ANY  STATUS
*         BITS  REMAIN,  ERROR  200  WILL  BE  REPORTED.  IF THE ERROR
*         OCCURS A RE-WRITE WILL BE  INITIATED  TO  WRITE  THE  RECORD
*         ERROR  FREE IN THE SAME POSITION ON TAPE.  (IF THE 200 ERROR
*         PERSIST, IT IS RECOMMENDED THAT  A  MORE  SUITABLE  MAGNETIC
*         TAPE BE USED AND THE MODULE RERUN.) 
* 
*            WHEN  THE  RECORD  HAS BEEN WRITTEN CORRECTLY, THE MODULE
*         WILL WAIT UNCONDITIONAL NOT BUSY, DO A READ REVERSE OVER THE
*         RECORD,  WAIT  UNCONDITIONAL  NOT  BUSY, MASK GENERAL STATUS
*         WITH LOGICAL PRODUCT 7474B.  ANY STATUS BITS REMAINING  WILL
*         BE  REPORTED  AS  ERROR  227.   THE  MODULE  WILL  DO A READ
*         FORWARD, WAIT UNCONDITIONAL NOT BUSY,  MASK  GENERAL  STATUS
*         WITH  LOGICAL PRODUCT 7474B.  ANY STATUS BITS REMAINING WILL
*         BE REPORTED AS ERROR 226.  B0 (FILE CURRENT) AND B1  (RECORD
*         CURRENT) ARE COUPLED TO PRODUCE A 24 BIT PASS COUNT REGISTER
*         WITH B1 BEING THE LOWER 12 BITS AND 50 THE  UPPER  12  BITS.
*         THE  NUMBER  OF  READ  PASSES COMPLETED WILL BE INDICATED IN
*         THIS PASS COUNT REGISTER.  WHEN  60,000  (OCTAL)  OR  20,481
*         (DECIMAL)  PASSES HAVE BEEN COMPLETED, THE MODULE WILL ENTER
*         NORMAL TERMINATION. 
* 
*                             NOTE
* 
*              YOU WILL NOTE THAT THE AMOUNT OF TAPE MOVED IN THE TAPE
*         PATH  DURING  THIS  TEST  IS  DEPENDENT ON THE RECORD LENGTH
*         SPECIFIED IN  P2  TIMES 100.  WITH  THIS  CONTROL  OVER  THE
*         DISTANCE  THAT TAPE WILL MOVE WE CAN NOW SET A RECORD LENGTH
*         IN  P2  THAT WILL CAUSE TAPE TO MOVE THROUGH THE  TAPE  PATH
*         AND  LOOP  COLUMNS BUT WILL NOT BE LARGE ENOUGH TO ALLOW THE
*         TAPE REELS TO MOVE.  THE ADVANTAGE HERE  IS  THAT  ONLY  THE
*         COMPONENTS  FROM  THE  MIDDLE OF THE LEFT LOOP COLUMN TO THE
*         MIDDLE OF THE RIGHT LOOP COLUMN WILL BE CHECKED FOR DAMAGING
*         TAPE.  SINCE THE COMPONENTS IN THIS AREA, ( EOT /BOT, BLOCK,
*         HEAD, SCRAPPERS, CERAMIC GUIDES) ARE RATHER  CLOSE  TO  EACH
*         OTHER, THE DISTANCE TAPE SHOULD MOVE IS RATHER SHORT. 
* 
*                   FOR THIS TEST,  P2  SHOULD BE SET TO =0050. 
* 
*                   IF  THE  RECORD  LENGTH  IN  P2 IS LARGE ENOUGH TO
*         CAUSE THE TAPE REELS TO MOVE, IT WILL BE  NEARLY  IMPOSSIBLE
*         TO  ISOLATE  THE COMPONENT THAT IS DAMAGING TAPE BECAUSE THE
*         DAMAGED AREA OVERLAPS SEVERAL COMPONENTS.  YOU SHOULD SET  A
*         LENGTH  IN  P2  THAT IS LARGE ENOUGH TO CAUSE THE TAPE REELS
*         TO MOVE IF YOU ARE CHECKING FOR TAPE DAMAGE IN THE  AREA  OF
*         THE  AIR  BEARINGS,  LOOP COLUMNS, TAPE SHUTES, AND THE TAPE
*         REELS AND HUBS. 
* 
*            FOR THIS TEST,  P2  SHOULD BE SET TO =0600.
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. WRITE
*         5. WAIT NOT BUSY
*         6. RELEASE-DELAY-RESERVE
*         7. READ REVERSE 
*         8. WAIT NOT BUSY
*         9. READ FORWARD 
*        10. WAIT NOT BUSY
*        11. IF NOT 60000 TIMES GO TO 6 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
*                  OPERATION. 
* 
* 
*         -EC 226- ERROR HAS OCCURRED DURING A READ FORWARD 
*                  OPERATION IN THE -TAPE PATH DAMAGE- TEST 
* 
* 
*         -EC 227- ERROR HAS OCCURRED DURING A READ REVERSE 
*                  OPERATION IN THE -TAPE PATH DAMAGE- TEST 
* 
* 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = COUNTER MIDDLE 12 BITS
* 
*  B1 = COUNTER LOWER 12 BITS 
* 
*  B2 = UPPER 3 BITS
*        FOR MESSAGE PROCESSOR
* 
*  B4 = K/L DISPLAY LINE COUNTER
* 
*  B5 = POINTER TO OB/IB
* 
*  B6 = NO OF DATA WORDS TO COMPARE (SET BEFORE ENTRY)
* 
*  B7 = MSG NUMBER(SET BEFORE ENTRY)
*      FOR REL/RES SUBROUTINE 
* 
*  B7 = DELAY VALUE 
* 
 1 FORMAT T6X31 - TAPE DAMAGE - 
 2 FORMAT T6X31 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X31 - ABORT ON .RES. COMMAND -
 5 FORMAT T6X31 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T6X31 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T6X31 - ABORT ON .WAITNB. COMMAND - 
10 FORMAT T6X31 - ABORT ON .READ REV. COMMAND - 
11 FORMAT T6X31 - ABORT ON .READ FWD. COMMAND - 
12 FORMAT T6X31 - DAMAGE TEST *OCT*OCT
13 FORMAT T6X31 - ABORT ON .REL COMMAND - 
14 FORMAT T6X31 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X31 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 7434 
* 
*         REWIND TAPE 
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B0 = P3.RS.6               *MARGIN BITS TO B7
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   WC = P2                    *SET WORD COUNT 
   CALL 98P                   *CHECK PARAMETERS 
21 B0=0 
   B1=0 
   B7 = 4 
   RES P1, ABT 74             *RESERVE
   B7 = 5 
   REWIND, ABT 74             *REWIND 
   DUP 7777 TO OB FOR 500 
* 
*         WRITE 
* 
31 GOSUB 56                   *REL, DELAY ,RES
   B7 = 6 
   WRITE, ABT 74              *WRITE
   B7 = 7 
   WAITNB, ABT 74             *WAIT NOT BUSY
   IF(SB(1) AND ERROR EQ 0)GOTO 32
   ERROR 2/200, GOSUB 70
   GOTO 21
* 
*         READ REVERSE
* 
32 GOSUB 56                   *REL, DELAY, RES
   B7 = 10
   READ REV, ABT 74           *READ REVERSE 
   B7 = 7 
   WAITNB,ABT 74              *WAIT NOT BUSY
   IF(SB(1) AND ERROR NE 0)ERROR 2/227, GOSUB 70
* 
*         READ FORWARD
* 
   GOSUB 56                   *RESERVE
   B7 = 11
   READ FWD,ABT 74            *READ FORWARD 
   B7 = 7 
   WAITNB,ABT 74              *WAIT NOT BUSY
   IF(SB(1) AND ERROR NE 0)ERROR 2/226, GOSUB 70
   IF (ES.AND.SL.NE.0) GOTO 33
   IF(B1.AND.77.NE.0) GOTO 33 
   MSG 12 (B0,B1) TO DISPLAY
33 GOTO 32 WHILE(B1 + 1 NE 0)   *LOOP BACK
   GOTO 32 WHILE(B0 + 1 NE 6)  *LOOP BACK 
* 
*         END MODULE
* 
40 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 41  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
41 IF (ES.AND.CM.NE.0) GOTO 21
   IF(BA.EQ.0) GOTO 43        *NO ERRORS
42 MSG 15 (BA) TO DAYFILE 
43 GOTO 77                    *NORMAL EXIT
* 
*         RELEASE, DELAY, AND RESERVE 
* 
56 IF(P5+P6.LT.20D) GOTO 57  *BYPASS REL ON SHORT DELAY 
   B7 = 13
   REL, ABT 74
57 B7 = P6
   IF(P5.EQ.0) GOTO 60       *IF FIXED DELAY REQUESTED
   B7 = RT.AND.P5            *USE RANDOM DELAY AND MASK 
60 DELAY B7 MSEC
   B7 = 4 
   RES P1,ABT 74            *RESERVE
   RETURN                   *RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 42                    *ABNORMAL TERMINATION 
77 END 20 
COMPILE  - T6X31- 
   MODULE T6X32,66X(42,52),LOCK   -CREEP- 
*** CREEP 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERIEW - 
* 
* 
*              THIS MODULE WILL WRITE THE FIRST 77 OCTAL RECORDS  WITH
*         RANDOM  DATA AND AT A LENGTH OF 4000B, THEN WRITE RECORD 100
*         (OCTAL) WITH RANDOM DATA AT A  LENGTH  OF  5000B,  AND  THEN
*         RECORD 101 OCTAL WITH RANDOM DATA AT THE LENGTH SPECIFIED IN
*          P2 .  THE MODULE THEN BACKSPACES, WAITS  UNCONDITIONAL  NOT
*         BUSY,  THEN  RE-WRITES  RECORD  101  A  TOTAL OF 1000 TIMES.
*         AFTER THE LAST BACKSPACE OVER RECORD 101 AT  THE  COMPLETION
*         OF THE WRITE ROUTINE, THE MODULE WILL DO A REVERSE READ OVER
*         RECORD 100.  THE MODULE WILL WAIT  UNCONDITIONAL  NOT  BUSY,
*         MASK  GENERAL  STATUS  WITH LOGICAL PRODUCT 7474B, AND CHECK
*         FOR ANY REMAINING STATUS BITS.  IF ANY REMAIN, AN ERROR  263
*         WILL BE REPORTED. 
* 
*            IF  NO  ERROR  OCCURS,  THE  LENGTH OF RECORD 100 (WC) IS
*         COMPARED WITH 5000B.  IF WC DOES NOT EQUAL 5000B, ERROR  264
*         IS  REPORTED.   IF  NO  ERRORS  OCCUR,  THE  MODULE WILL RE-
*         INITIALIZE AND CONTINUE UNTIL FILE MAX OR  EOT  (IF FILE MAX
*         IS  SET  TO ZERO) IS ENCOUNTERED.  THE TAPE WILL THEN REWIND
*         TO LOAD POINT.  IF REPEAT MODULE IS  SET,  THE  MODULE  WILL
*         RESTART  WITHOUT OPERATOR INTERVENTION.  IF REPEAT MODULE IS
*         NOT SET, THE MODULE WILL ENTER NORMAL TERMINATE.
* 
*   DESCRIPTION - PROCEDURE IS AS FOLLOWS-
* 
*         1. RESERVE THE UNIT SPECIFIED BY THE *ASSIGN* 
*            DIRECTIVE ACCORDING TO THE HARDWARE IDENT- 
*            IFICATION *P1* AND MARGINS *P3 
*         2. REWIND 
*         3. RELEASE-DELAY-RESERVE
*         4. WRITE 4000 WORD RECORD 
*         5. WAIT NOT BUSY IF SELECTED
*         6. IF NOT 77 GO TO 3
*         7. WRITE RECORD 100 WITH A 5000 WORD COUNT. 
*         8. WRITE RECORD 101 WITH A P2 WORD COUNT. 
*         9. WAIT NOT BUSY
*        10. BACKSPACE
*        11. WAIT NOT BUSY
*        12. IF NOT 1000 TIMES GOTO 8 
*        13. READ FORWARD 
*        14. WAIT NOT BUSY
*        15. CHECK ERRORS 
*        16. IF NOT ALL FILES GO TO 3 
* 
* 
*   MODULES CALLED -
* 
*                  T6X980 - ERROR MESSAGE PROCESSOR 
* 
*                  T6X981 - ABORT STATUS PROCESSOR
* 
*                  T6X98A - ERROR CODE PROCESSOR
*                  T6X98B - ERROR CODE PROCESSOR
*                  T6X98C - ERROR CODE PROCESSOR
*                  T6X98D - ERROR CODE PROCESSOR
*                  T6X98E - ERROR CODE PROCESSOR
*                  T6X98F - ERROR CODE PROCESSOR
* 
*                  T6X98P - CHECK PARAMETERS
* 
* 
*   ERRORS DETECTED - 
* 
*         - PRODUCT OVERLAY ERRORS
* 
*         -EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL 
*                  STATUS DURING A -MAINTENANCE WRITE-
*                  OPERATION. 
* 
*         -EC 263- THE ALERT BIT WAS SET IN GENERAL STATUS
*                  FOLLOWING THE READ REVERSE OF RECORD 100 
*                  IN THE -CREEP- TEST. 
* 
*         -EC 264- RECORD 100 LENGTH DOES NOT EQUAL 5000. 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B2 = RECORD LENGTH FOR RECORD 101
* 
*  B3 = FILE MAX
* 
*  B4 = COUNTER FOR ROCKING ON REC 101
*        FOR PATTERN GENERATOR
* 
*  B4 = PATTERN FOR STORING 
* 
*  B7 = TRACK SIZE(6 OR 8)
*        FOR MESSAGE PROCESSOR
* 
*  B4 = K/L DISPLAY LINE COUNTER
* 
*  B5 = POINTER TO OB/IB
* 
*  B6 = NO OF DATA WORDS TO COMPARE (SET BEFORE ENTRY)
* 
*  B7 = MSG NUMBER(SET BEFORE ENTRY)
*      FOR REL/RES SUBROUTINE 
* 
*  B7 = DELAY VALUE 
* 
 1 FORMAT T6X32 - CREEP - 
/ 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 30  *RANDOM PATTERN SELECTED
   B0 = 10
   B1 = 500 
   IF(DC.AND.10.NE.0)GOTO 21   *IF 9 TRACK TAPE.
   B0 = 6                      *TRACK SIZE (6 OR 8) 
* 
*         FILL BUFFER 
* 
21 B3 = P4.XOR.7777B
   IF(P4.AND.3000.NE.1000)B3 = P4   *ALTERNATE PTRN SELCT 
   DUP B0 BITS OF P4/B3 TO OB FOR B1
   GOTO 40
/ 
30 IF(P3.AND.4.NE.0)GOTO 31  *USE RANDOM SEED 
   B2=1                      *SET FLAG FOR REAL TIME CLOCK
   GOTO 40
31 RANDOM TO OB FOR 500 , START P7   *GENERATE PATTERN
/ 
40 B0 = P3 RS 6              *MARGIN BITS TO B0 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
   CALL 98P                  *CHECK PARAMETERS
/ 
   EXIT TO 321               *EXIT TO NEXT MODULE 
/ 
   END 20 
COMPILE  - T6X32 -
   MODULE T6X321,66X(42,52),LOCK
 1 FORMAT T6X32 - CREEP - 
 2 FORMAT T6X32 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T6X32 - ABORT ON .RES. COMMAND -
 5 FORMAT T6X32 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T6X32 - ABORT ON .WAITNB. COMMAND - 
 7 FORMAT T6X32 - ABORT ON .BKSP. COMMAND - 
10 FORMAT T6X32 - ABORT ON .READ REV. COMMAND - 
11 FORMAT T6X32 - ABORT ON .REL. COMMAND -
12 FORMAT T6X32 - ABORT ON .WRITE. COMMAND -
14 FORMAT T6X32 - LC=*DEC, ERCNT=*DEC 
15 FORMAT T6X32 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 7434 
* 
*         REWIND TAPE 
* 
20 B0=0 
   B1=0 
   B7 = 4 
   RES P1, ABT 74           *RESERVE
   B7 = 5 
   REWIND, ABT 74           *REWIND 
   B3 = P8                  *FILE MAX MAINT MODE
   IF(P3.AND.40.NE.0)GOTO 31
   B3 = 7                   *FILE MAX DIAG MODE 
* 
*         WRITE 100 RECORDS AT 4000 WORDS, 1 AT 5000, AND 
*         1 AT 1 OR P2 WORDS
* 
31 B1 = 1                   *ZERO REC COUNT 
   B4 = 0                   *CLEAR LOOP COUNT 
   WC = 4000
32 GOSUB 50                 *WRITE RECORDS 1 THRU 100 
   IF(P3.AND.20.NE.0)GOTO 33
   B7 = 6 
   WAITNB,ABT 74
33 IF(SB(1).AND.EOT.NE.0)GOTO 44
34 IF(SB(1).AND.ALERT.EQ.0)GOTO 35
   ERROR 2/200, GOSUB 70
   GOTO 31
35 GOTO 32 WHILE (B1 + 1.LE. 77)  *INCR REC COUNT 
   WC = 5000
   IF(B1.EQ.100)GOTO 32      *DO 1 REC AT LNGH 5000 
   WC = P2
   IF (P3.AND.40.NE.0) GOTO 36    *MAINT MODE 
   WC = 1 
36 GOSUB 50                       *WRITE 101 ST RECORD
   IF(SB(1).AND.EOT.NE.0)GOTO 44
* 
*         BACKSPACE 
* 
   B7 = 6 
   WAITNB,ABT 74                  *WAIT NOT BUSY
   B7 = 7 
   BKSP, ABT 74                   *BACK SPACE 
   B7 = 6 
   WAITNB,ABT 74                  *WAIT NOT BUSY
   GOTO 36 WHILE(B4 + 1.LT.1000)  *ROCK 1000 TIMES
   B7 = 10
   READ REV, ABT 74               *READ FORWARD 
   B7 = 6 
   WAITNB,ABT 74                  *WAIT NOT BUSY
   IF(SB(1).AND.ERROR.EQ.0)GOTO 37
   ERROR 2/263, GOSUB 70
   GOTO 42
37 B5=WT
   IF(P1.AND.30.EQ.0) GOTO 40 
   IF(SB(1).AND.40.EQ.0) GOTO 40
   B5=B5-1
40 IF(B5.NE.5000)ERROR 2/264, GOSUB 70
42 GOTO 31 WHILE(B0 + 1.LE.B3)    *LOOP FOR ALL FILES 
* 
*         END MODULE
* 
44 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 45  *IF NOT SL SKIP MESSAGE 
   MSG 14 (B6,BA) TO DISPLAY  *SCOPE LOOP MESSAGE 
45 IF (ES.AND.CM.NE.0) GOTO 20
   IF(BA.EQ.0) GOTO 47        *NO ERRORS
46 MSG 15 (BA) TO DAYFILE 
47 GOTO 77                    *NORMAL EXIT
* 
*         WRITE RECORD
* 
50 B7 = 11
   REL,ABT 74               *RELEASE
   B7 = P6                  *DELAY PARAM TO B7
   IF(P5.EQ.0) GOTO 51      *USE FIXED DELAY FROM P6
   B7 = RT.AND.P5           *USE RT CLOCK AND MASK
51 DELAY B7 MSEC            *DELAY
   IF(B2.EQ.0) GOTO 52      *RANDM PTRN NOT SELECTED
   RANDOM TO OB FOR 500 , START RT
52 B7 = 4                   *RESERVE
   RES P1,ABT 74
   IF(P3.AND.1.NE.0)GOTO 53  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
53 B7 = 12
   WRITE, ABT 74            *WRITE
   RETURN                   *RETURN 
* 
*         PROCESS MODULE DETECTED ERROR(S)
* 
/         PROCESS ERROR SUBROUTINE
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   B4=2                       *SET MESSAGE LINE NUMBER
72 CALL 98A                   *ERROR CODE PROCESSOR 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 ENDSUB                     *END ANY SUB-ROUTINES 
   BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (B6,BA) TO DISPLAY  *ERROR MESSAGE
   GOTO 20                    *RESTART
75 MSG B7 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   B4 = 3                     *SET MESSAGE LINE NUMBER
   CALL 981                   *PROCESS STATUS 
   CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
   GOTO 46                    *ABNORMAL TERMINATION 
77 END 20 
COMPILE   - T6X321 -
   MODULE T6X80,66X(42,52)LOCK  - COMPATIBILITY TEST
*** T6X80 - COMPATIBILITY TEST
* 
**  T6X80 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE ALLOWS THE USER TO VERIFY READ COMPATIBILITY
*         BETWEEN 66X TAPE TRANSPORTS OR BETWEEN A 66X TRANSPORT AND
*         OTHER CDC TAPE UNITS (60X, 65X OR 67X).  TO ACCOMPLISH THIS 
*         TASK, A -COMPAT- TAPE IS GENERATED SUCH THAT EACH TRANSPORT 
*         IN A SYSTEM HAS A FILE OF DATA ON THE TAPE. OBVIOUSLY, A
*         SEPARATE TAPE MUST BE USED FOR 7TK UNITS, 9TK NRZI, PHASE 
*         AND 9TK GCR.  FOR EXAMPLE, ALL 7TK UNITS IN A SYSTEM SHOULD 
*         CONTAIN A FILE OF DATA ON THE 7TK -COMPAT- TAPE REGARDLESS
*         OF THEIR UNIT TYPE. (NOTE- THIS MODULE CAN ONLY BE USED ON
*         66X UNITS. TO ACCOMPLISH THIS TASK ON OTHER DEVICES, THE
*         COMPATIBILITY TEST IN T5X OR T7X DIAGNOSTICS MUST BE USED.
*         THIS IS POSSIBLE SINCE T5X, T6X AND T7X COMPATIBILITY 
*         TESTS ARE COMPATIBLE).
* 
*         THIS TEST OPERATES IN TWO MODES, DETERMINED BY THE PRESENCE 
*         OR ABSENCE OF A WRITE RING IN THE UNIT TO BE TESTED.  IF A
*         WRITE RING IS PRESENT IT INDICATES THAT THE USER WANTS TO 
*         ADD A NEW FILE OF DATA TO THE -COMPAT- TAPE.  THIS WILL BE
*         ACCOMPLISHED AS FOLLOWS;
* 
*           1. READ THE TAPE FORWARD FROM LOAD POINT TO DOUBLE EOF. 
*           2. BACKSPACE OVER THE SECOND EOF. 
*           3. WRITE A FILE OF DATA AND DOUBLE EOF. 
*           4. READ THE TAPE REVERSE TO LOAD POINT. 
* 
*         THE READ OPERATIONS VERIFY THE ABILITY OF THIS UNIT TO READ 
*         DATA ON THE TAPE WRITTEN BY PREVIOUS UNITS.  PRIOR TO 
*         RUNNING THE COMPATIBILITY TEST IN A WRITE MODE, A NORMAL RUN
*         OF T6X SHOULD BE MADE TO ENSURE THE UNIT IS OPERATIONAL.
*         NORMALLY A LOT OF TIME AND EFFORT WILL BE INVESTED IN THE 
*         COMPATIBILITY TAPE AND CARE MUST BE USED TO ENSURE THAT A 
*         BAD UNIT DOES NOT DESTROY IT.  SHOULD IT BE NECESSARY, IT 
*         MAY BE POSSIBLE TO CLEAN UP THE TAPE USING MODULE T6X81.
* 
*         SINCE A SEARCH IS MADE FOR DOUBLE END-OF-FILES IN EITHER
*         MODE, THE USER MUST ENSURE THAT A NEW -COMPAT- TAPE HAS AT
*         LEAST TWO END-OF-FILES OFF LOAD POINT WHEN THE FIRST RUN OF 
*         THIS TEST IS MADE.  THIS CAN BE ACCOMPLISHED WITH THE USE OF
*         MODULE T6X04 (WRITE FILE MARKS TEST).  THIS PROCEDURE IS ONLY 
*         REQUIRED ON THE FIRST RUN TO INITIALIZE THE -COMPAT- TAPE.
* 
*         THE SECOND MODE OF OPERATION IS USED IF A WRITE RING IS NOT 
*         PRESENT.  THIS INDICATES THAT THE USER IS SIMPLY TESTING FOR
*         READ COMPATIBILITY AND NO WRITING IS TO BE PERFORMED.  THE
*         TAPE IS REWOUND AND READ FORWARD TO DOUBLE END-OF-FILES,
*         THEN READ REVERSE TO LOAD POINT.
* 
*         THE FILE OF DATA ADDED TO THE TAPE IN A WRITE MODE CONTAINS 
*         200 DECIMAL RECORDS OF RANDOM DATA.  THE RECORD LENGTH IS 
*         DEFINED BY THE USER IN PARAMETER REGISTER P2.  ACTUALLY, P2 
*         WILL BE MULTIPLIED BY 8 TO OBTAIN THE ACTUAL NUMBER OF WORDS
*         TO WRITE.  TYPICALLY A VALUE OF 500 OCTAL SHOULD BE USED IN 
*         P2 SUCH THAT 5000 OCTAL PP WORDS ARE WRITTEN.  THIS IS THE
*         NORMAL RECORD SIZE FOR OPERATING SYSTEM TAPES.  THE LENGTH
*         SELECTED IS QUITE IMPORTANT SINCE IT CONTROLS THE NUMBER OF 
*         UNITS THAT MAY HAVE A FILE OF DATA ON THE -COMPAT- TAPE.
*         FOR EXAMPLE, USING THE ABOVE FIGURES, THE FOLLOWING INDICATES 
*         THE NUMBER OF UNITS THAT COULD SHARE A 2400 FOOT REEL OF
*         TAPE.  IF MORE UNITS THAN THOSE INDICATED MUST BE TESTED, 
*         THE USER MUST USE SHORTER RECORDS OR USE MULTIPLE TAPES.  TO
*         ENSURE A REASONABLE TEST, A WORD COUNT OF 240 OCTAL IS
*         USED IF THE USER SETS REGISTER P2 LESS THAN 240.
* 
*            7TK 556 BPI    - 14
*            7TK 800 BPI    - 20
*            9TK 800 BPI    - 26
*            9TK 1600 BPI   - 46
* 
*         TO ASSIST IN ISOLATING UNITS THAT ARE NOT COMPATIBLE, EACH
*         RECORD WRITTEN CONTAINS INFORMATION WITHIN IT THAT IDENTIFIES 
*         WHICH FILE IT IS IN, WHAT RECORD NUMBER IT IS, IT'S LENGTH
*         AND THE CHANNEL, EQUIPMENT, UNIT AND SYSTEM ID OF THE UNIT
*         THAT HAS WRITTEN THE DATA.  THIS DATA IS WRITTEN WITHIN THE 
*         RECORD SUCH THAT IT IS AVAILABLE ON A FORWARD OR REVERSE
*         READ IN THE FOLLOWING WORDS OF THE INPUT BUFFER.
* 
*            IB(1) = FILE NUMBER
*            IB(2) = RECORD NUMBER
*            IB(3) = LENGTH/8 
*            IB(4) = CHANNEL
*            IB(5) = EQUIPMENT
*            IB(6) = UNIT 
*            IB(7) = SYSTEM NUMBER
* 
*         IN ORDER TO IDENTIFY THE SYSTEM NUMBER IN A MULTI-MAINFRAME 
*         ENVIRONMENT, THE VALUE SUPPLIED BY THE USER IN PARAMETER
*         REGISTER P9 IS USED DURING A WRITE MODE AS THE SYSTEM NUMBER. 
*         ACTUALLY THIS CAN BE ANY OCTAL VALUE THE USER CHOOSES.  FOR 
*         EXAMPLE, IT MAY INDICATE THE EST, OR SYSTEM AND EST OR AN 
*         OCTAL BOX NUMBER OF THE UNIT BEING TESTED.  IT SHOULD BE
*         UNDERSTOOD THAT THE DATA IN IB(1-7) MAY BE INVALID IF READ
*         ERRORS OCCUR.  HOWEVER, THE FILE NUMBER BEING PROCESSED 
*         THAT IS REPORTED IN OUTPUT IS CORRECT AND CAN BE USED TO
*         DETERMINE THE UNIT THAT WROTE THE DATA (THE USER MUST KEEP
*         A GOOD COPY OF THE OUTPUT OF MODULE 80 TO BE ABLE TO
*         DETERMINE WHICH FILE WAS WRITTEN BY WHICH UNIT).
* 
*         IT IS IMPORTANT THAT A CERTIFIED TAPE BE USED FOR THIS TEST.
*         DURING A WRITE MODE, WRITE ERRORS ARE RECOVERED IF POSSIBLE 
*         BY BACKSPACING, ERASING AND RE-WRITING A RECORD OR FILE MARK
*         UP TO THREE TIMES.  IF THIS PROCESS IS NOT SUCCESSFUL, OR IF
*         AN ERROR OCCURS ON THE ERASE, THE WRITE IS ABORTED.  TO TRY 
*         AND SAVE THE FORMAT OF THE -COMPAT- TAPE, A SEARCH IS MADE
*         REVERSE FOR THE LAST END-OF-FILE AND AN ATTEMPT IS MADE TO
*         ADD ANOTHER END-OF-FILE TO THE TAPE SUCH THAT IT IS PROPERLY
*         TERMINATED FOR SUBSEQUENT RUNS.  HOWEVER, CARE MUST BE USED 
*         IF UNRECOVERED WRITES OCCUR SINCE THE TAPE MAY NO LONGER BE 
*         PROPERLY TERMINATED.  WRITING ALSO TERMINATES ONCE END-OF-
*         TAPE IS DETECTED AND THE USER SHOULD NOT ATTEMPT TO ADD MORE
*         FILES TO THE TAPE (NO MORE WRITES ARE ALLOWED). 
* 
*         IN A READ MODE NO RECOVERY IS ATTEMPTED. ERRORS ARE REPORTED
*         AND READING CONTINUES.  IN ADDITION TO STATUS CHECKS DURING 
*         THE READING, CHECKS ARE MADE TO ENSURE THAT THE CORRECT 
*         NUMBER OF RECORDS ARE READ FOR EACH FILE ON BOTH FORWARD AND
*         REVERSE READS AND A CHECK IS MADE TO ENSURE THAT THE SAME 
*         NUMBER OF FILES AND RECORDS ARE READ REVERSE THAT WERE
*         PROCESSED FORWARD.  SINCE ERROR RECOVERY IS PERFORMED ON
*         WRITE OPERATIONS, ZERO ERRORS ARE EXPECTED ON READ.  ANY ERROR
*         INDICATES A FAILURE OF THE TEST AND THE CAUSE MUST BE FOUND.
* 
*         IT IS RECOMMENDED THAT ODD PARITY WITH NO CODE TRANSLATION
*         BE SELECTED IN P1 (P1=00XX).  THE TEST SHOULD BE EXECUTED 
*         IN A READ MODE AT LEAST ONCE EVERY MONTH ON ALL UNITS AND 
*         THE WRITE MODE SHOULD BE PERFORMED ON A UNIT IF MAJOR 
*         ELECTRICAL OR MECHANICAL ADJUSTMENT/REPLACEMENTS ARE MADE 
*         THAT COULD IMPACT TAPE SKEW, TAPE TRACKING OR TAPE-TO-HEAD
*         CONTACT.
* 
*         THE COMPATIBILITY TEST IS ACTUALLY MADE UP OF THREE MODULES 
*         AS FOLLOWS; 
* 
*            T6X80  - READ FORWARD
*            T6X80A - WRITE 
*            T6X80B - READ REVERSE
* 
*         TO REDUCE COMPLEXITY, EACH MODULE WILL BE DESCRIBED 
*         SEPARATELY SINCE EACH PERFORMS A SPECIFIC FUNCTION IN THE 
*         OVERALL TEST. 
* 
*   DESCRIPTION - (FORWARD READ)
* 
*         1. CALCULATE WORD COUNT AND BUFFER INDEXES IN CASE WRITES 
*            ARE PERFORMED LATER.  SET THE WORD COUNT TO 500. 
*         2. SET READ CLIP AND STROBE MARGINS SELECTED IN P3. 
*         3. RESERVE. 
*         4. REWIND.
*         5. READ THE FIRST RECORD FORWARD. 
*         6. IF THE FIRST RECORD IS NOT AN END-OF-FILE, REPORT EC070
*            AND TERMINATE (NOT A -COMPAT- TAPE). 
*         7. INITIALIZE THE FILE COUNTER, RECORD COUNTER AND NUMBER 
*            OF FILE MARKS READ TO 1. 
*         8. RESERVE. 
*         9. READ A RECORD FORWARD. 
*        10. WAIT NOT BUSY IF SELECTED IN P3. 
*        11. IF END-OF-TAPE IS ENCOUNTERED, REPORT THE FACT AND EXIT
*            TO T6X80B (REVERSE READ - NOTE THAT WRITING IS BYPASSED).
*        12. IF END-OF-FILE STATUS, BUMP THE FILE COUNTER AND NUMBER
*            OF CONSECUTIVE FILE MARKS COUNTER.  IF TWO CONSECUTIVE 
*            FILE MARKS HAVE BEEN ENCOUNTERED, BACKSPACE OVER THE 
*            SECOND END-OF-FILE AND EXIT TO T6X80A (WRITE MODULE) 
*            IF WRITE RING STATUS IS UP, OR TO T6X80B (READ REVERSE)
*            IF NO WRITE RING STATUS.  IF NOT TWO FILE MARKS, VERIFY
*            THAT THE PROPER NUMBER OF RECORDS WERE READ IN THE LAST
*            FILE.  IF NOT, REPORT EC071.  RESET THE RECORD COUNTER 
*            TO 1 AND GO TO STEP 8 TO CONTINUE THE READ.
*        13. IF AN ABNORMAL STATUS ERROR OCCURRED ON THE READ, REPORT 
*            EC203. 
*        14. WE ARRIVE AT THIS STEP IF AN END-OF-FILE WAS NOT READ. 
*            RESET THE CONSECUTIVE FILE MARKS COUNTER.  REPORT A
*            RUNNING MESSAGE IF THE PREVIOUS READ WAS THE FIRST RECORD
*            OF A NEW FILE.  INCREMENT THE RECORD COUNT AND GO TO 
*            STEP 8 TO CONTINUE THE READ. 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T6X80 - ABORT ON .RES. COMMAND 
*         3. T6X80 - ABORT ON .REL. COMMAND 
*         4. T6X80 - ABORT ON .REWIND. COMMAND
*         5. T6X80 - ABORT ON .READ FWD. COMMAND
*         6. T6X80 - ABORT ON .WAITNB. COMMAND
*         7. T6X80 - ABORT ON .BKSP. COMMAND
*         8. T6X80 - ABORT ON .STATUS DETAIL. COMMAND 
* 
*         9. EC070- TAPE MOUNTED IS NOT A -COMPAT- TAPE 
* 
*        10. EC071- RECORD COUNT=*OCT IN FILE *OCT, EXP=0311
* 
*        11. EC203- ALERT BIT IN GENERAL STATUS WAS SET DURING A
*            READ OPERATION.  THE LAST MAJOR FUNCTION ISSUED IS LISTED. 
* 
*        12. EC204- DETAIL STATUS WORD 3 HAS ONE OF THE FOLLOWING SET-
*            A. SEVERE START ERROR ......4XXX 
*            B. SINGLE FRAME SKEW .......X1XX 
*            C. ILLEGAL CHARACTER SET ...XX4X 
* 
*** T6X80 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = TOTAL FILE COUNTER 
*         B1 = RECORD COUNTER PER FILE
*         B2 = SCRATCH,CONSECUTIVE FILES COUNTER
*         B3 = WORD COUNT FOR LATER WRITE OPERATIONS
*         B5 = ABORT MESSAGE POINTER
*            = MARGINS
*         B13= BUFFER INDEX FOR MODULE T6X80A 
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T6X980 - PROCESS ERROR MODULE 
*         T6X981 - PROCESS STATUS 
*         T6X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T6X80 - COMPATIBILITY FORWARD READ -
 2 FORMAT T6X80 ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T6X80 - ABORT ON .READ FWD. COMMAND - 
 4 FORMAT T6X80 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T6X80 - ABORT ON .RES. COMMAND -
 6 FORMAT T6X80 - ABORT ON .REL. COMMAND -
 7 FORMAT T6X80 - ABORT ON .WAITNB. COMMAND - 
10 FORMAT EC070- TAPE MOUNTED IS NOT A -COMPAT- TAPE
11 FORMAT EC071- RECORD COUNT=*OCT IN FILE *OCT, EXP=0311 
12 FORMAT T6X80 - FILE=*OCT CH=*OCT EQ=*OCT UN=*OCT SYS=*OCT
13 FORMAT T6X80 - END OF TAPE ENCOUNTERED AT RECORD *OCT
14 FORMAT T6X80 ERROR(S) IN MODULE = *DEC - 
15 FORMAT T6X80 - ABORT ON .BKSP. COMMAND - 
16 FORMAT T6X80 - ABORT ON .STATUS DETAIL. COMMAND -
* 
   EQUATE EOT TO 10, EOF TO 20, RING TO 200, STERR TO 5074
   EQUATE DETAIL3 TO 4140 
* 
20 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   BA = 0                    *CLEAR ERROR COUNTER 
* 
*---------CALCULATE INDEX INTO OB FOR REVERSE READ DATA 
* 
   B3 = P2                   *USER SELECTED WORD COUNT
   IF(B3.GE.240) GOTO 21     *IF .GE. MINIMUM 
   B3 = 240                  *SET IT TO MINIMUM 
21 B2 = B3                   *COMPUTE INDEX TO OB 
22 IF(B2-50.LE.0) GOTO 23    *IF REMAINDER FOUND
   B2 = B2 - 50              *DIVIDE BY 50
   GOTO 22
23 B2 = B2.LS.3-10           *COMPUTE INDEX 
   IF(B2.GT.10) GOTO 24      *IF NOT ON TOP OF FORWARD DATA 
   B2 = B2 + 10              *ADVANCE IT
   B3 = B3 + 1               *AND BUMP WORD COUNT 
24 B13 = B2                  *SAVE INDEX FOR T6X80A 
* 
*---------DETERMINE IF WE HAVE A -COMPAT- TAPE MOUNTED
* 
   WC = 500 
   B5 = P3.RS.6 
   MARGINS B5                *SELECT READ CLIP MARGINS
   B5 = 5 
   RES P1, ABT 74 
   B5 = 4 
   REWIND, ABT 74 
   B5 = 3 
   READ FWD, ABT 74          *READ FIRST RECORD 
   IF(SB(1).AND.EOF.NE.0) GOTO 25  *IF EOF ON FIRST READ
   B5 = 6 
   REL, ABT 74
   MSG 10 TO LINE 1 
   BA = BA + 1               *BUMP ERROR COUNTER
   GOTO 75                   *TERMINATE, NOT -COMPAT- TAPE
25 B0 = 1                    *SET FILE COUNT TO 1 
   B2 = 1                    *SET CONSECUTIVE FILES TO 1
* 
*--------READ TAPE FORWARD COUNTING RECORDS AND FILES.
* 
30 B1 = 1                    *SET RECORD COUNT TO 1 
31 B5 = 5 
   RES P1, ABT 74 
   B5 = 3 
   READ FWD, ABT 74 
   IF(P3.AND.20.NE.0) GOTO 32  *IF WAIT NOT BUSY DISABLED 
   B5 = 7 
   WAITNB, ABT 74 
32 B5 = 16
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.STERR.EQ.0)GOTO 33  *IF NO ERROR,EOF OR EOT 
   IF(SB(1).AND.EOF.NE.0) GOTO 36   *IF END OF FILE 
   IF(SB(1).AND.EOT.NE.0) GOTO 41   *IF END OF TAPE 
   ERROR 2/203, GOSUB 70            *REPORT THE READ ERROR
   GOTO 34
33 IF(SB(3).AND.DETAIL3.NE.0) ERROR 2/204, GOSUB 70  *ERR 
34 B2 = 0                    *CLEAR CONSECUTIVE FILES CTR.
   IF(B1.NE.1) GOTO 35       *IF NOT FIRST RECORD OF FILE 
   MSG 12 (B0,IB(4),IB(5),IB(6),IB(7)) TO DISPLAY,PRINT 
35 B1 = B1 + 1               *BUMP RECORD COUNTER 
   GOTO 31
36 B2 = B2 + 1               *BUMP CONSECUTIVE FILES CTR. 
   IF(B2.EQ.2) GOTO 40       *IF DOUBLE END OF FILES
   IF(B1.NE.201D) GOTO 37    *IF RECORD COUNT INCORRECT 
   B0 = B0 + 1               *BUMP FILE COUNT 
   IF(SB(1).AND.EOT.EQ.0) GOTO 30  *IF NOT END OF TAPE
   B1 = 200D                 *RESET RECORD COUNT
   GOTO 41
37 MSG 11 (B1,B0) TO LINE 1 
   BA = BA + 1               *BUMP ERROR COUNTER
   B4 = 2                    *SET MESSAGE LINE NUMBER 
   CALL 980                  *REPORT RECORD COUNT ERROR 
   B0 = B0 + 1               *BUMP FILE COUNT 
   IF(SB(1).AND.EOT.EQ.0) GOTO 30  *IF NOT END OF TAPE
   B1 = 200D                 *RESET RECORD COUNT
   GOTO 41
* 
*---------DOUBLE END-OF-FILES OR EOT DETECTED.  EXIT WITH 
*         B0=FILES READ AND B1=RECORDS READ IN LAST FILE. 
* 
40 B5 = 5 
   RES P1, ABT 74 
   B5 = 15
   BKSP, ABT 74              *BACK OVER SECOND END OF FILE
   B5 = 6 
   REL, ABT 74
   B1 = 200D                 *RESET RECORD COUNT
   IF(SB(1).AND.EOT.NE.0) GOTO 41  *IF END OF TAPE
   IF(SB(1).AND.RING.EQ.0) GOTO 42  *IF NO WRITE RING 
   EXIT TO 80A               *EXIT TO WRITE TAPE
41 MSG 13 (B1) TO DISPLAY,PRINT   *INDICATE EOT DETECTED
42 EXIT TO 80B               *EXIT TO READ REVERSE
* 
*---------PROCESS MODULE ERRORS 
* 
70 BA = BA + 1               *BUMP ERROR COUNTER
   MSG EM (EC,EA) TO LINE 1  *REPORT ERROR CODE/LINE
   B4 = 2                    *SET MESSAGE LINE NUMBER 
   CALL 98A                  *PROCESS ERROR CODE
   CALL 980                  *PROCESS ERROR MODULE
   RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORTS
* 
74 BA = BA + 1               *BUMP ERROR COUNTER
   MSG B5 TO LINE 0          *ERROR CONDITION 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
75 B4 = 3                    *SET MESSAGE LINE NUMBER 
   CALL 981                  *PROCESS STATUS
   CALL 980                  *PROCESS ERROR MODULE
   MSG 14 (BA) TO DAYFILE    *REPORT ERRORS TO DAYFILE
   END 20 
COMPILE   - T6X80 - 
   MODULE T6X80A,66X(42,52)LOCK  - COMPATIBILITY WRITE
*** T6X80A- COMPATIBILITY WRITE 
* 
**  T6X80A- EXTERNAL DOCUMENTATION
* 
*   DESCRIPTION - (WRITE) 
* 
*         1. GENERATE RANDOM DATA TO THE OUTPUT BUFFER USING THE
*            REAL-TIME CLOCK AS THE STARTER.
*         2. INSERT RECORD CODING DATA INTO THE OUTPUT BUFFER THAT
*            IDENTIFIES THIS RECORD.  ALL WORDS EXCEPT THE RECORD 
*            COUNT ARE INSERTED.
*         3. CLEAR THE RECORD COUNTER.  SET THE WORD COUNT FOR WRITES.
*         4. RESERVE. 
*         5. BUMP THE RECORD COUNT BY 1.
*         6. INSERT THE RECORD COUNT INTO THE OUTPUT BUFFER.
*         7. WRITE LONG (8 TIMES WC) ONE RECORD.
*         8. WAIT NOT BUSY IF SELECTED IN P3. 
*         9. IF END-OF-TAPE IS ENCOUNTERED, REPORT THE FACT AND EXIT
*            TO T6X80B (READ REVERSE).
*        10. IF NO ERRORS OCCURRED ON THE WRITE AND 200D RECORDS HAVE 
*            NOT BEEN WRITTEN, GO TO STEP 4 TO CONTINUE THE WRITE.
*            IF 200D RECORDS HAVE BEEN WRITTEN, WRITE TWO END-OF-FILES
*            AND EXIT TO T6X80B (REVERSE READ).  IF AN ERROR HAS
*            OCCURRED ON THE WRITE OR OCCURS ON THE WRITE OF THE TWO
*            FILE MARKS, THE ERROR IS REPORTED AND RECOVERY IS THEN 
*            ATTEMPTED.  AFTER SUCCESSFUL RECOVERY, PROGRAM FLOW
*            CONTINUES AS THOUGH THE ERROR DID NOT OCCUR.  THE STEPS
*            BELOW IDENTIFY THE RECOVERY SEQUENCE FOR BOTH WRITE AND
*            END-OF-FILE ERRORS.
*        11. RESERVE. 
*        12. BACKSPACE OVER BAD RECORD/FILE MARK. 
*        13. ERASE. 
*        14. IF A STATUS ERROR OCCURS ON THE ERASE, GO TO STEP 15.
*            OTHERWISE, RETRY THE WRITE OR ENDFILE OPERATION.  IF THE 
*            ERROR PERSISTS, REPEAT STEPS 11-14 THREE TIME.  EXIT THE 
*            RECOVERY SEQUENCE IF THE ERROR IS RECOVERED WITHIN THREE 
*            ATTEMPTS.
*        15. WE GET TO THIS STEP IF AN ERROR OCCURS ON AN ERASE OR IF 
*            A WRITE OR ENDFILE OPERATION CANNOT BE CORRECTED WITH 3
*            RETRIES.  RESERVE AND BACKSPACE THE TAPE UNTIL THE LAST
*            GOOD END-OF-FILE IS DETECTED.  ABORT THE TEST IF LOAD
*            POINT IS DETECTED BEFORE THE END-OF-FILE.  READ FORWARD
*            OVER THE END-OF-FILE AND WRITE A SECOND END-OF-FILE IN 
*            AN ATTEMPT TO PROPERLY TERMINATE THE TAPE (STATUS IS NOT 
*            TESTED ON THIS WRITE).  THE TEST IS THEN ABORTED.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T6X80A- ABORT ON .RES. COMMAND 
*         3. T6X80A- ABORT ON .REL. COMMAND 
*         4. T6X80A- ABORT ON .WAITNB. COMMAND
*         5. T6X80A- ABORT ON .WRITE. COMMAND 
*         6. T6X80A- ABORT ON .BKSP. COMMAND
*         7. T6X80A- ABORT ON .ENDFILE. COMMAND 
*         8. T6X80A- ABORT ON .ERASE. COMMAND 
*         9. T6X80A- ABORT ON .READ FWD. COMMAND
*        10. T6X80A- ABORT ON .STATUS DETAIL. COMMAND 
* 
*        11. EC122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
*        12. EC200- AN UNEXPECTED BIT APPEARED IN GENERAL STATUS
*            DURING A -MAINTENANCE WRITE- OPERATION.
* 
*        13. EC204- DETAIL STATUS WORD 3 HAS ONE OF THE FOLLOWING SET-
*            A. SEVERE START ERROR ......4XXX 
*            B. SINGLE FRAME SKEW .......X1XX 
*            C. ILLEGAL CHARACTER SET ...XX4X 
* 
*        14. EC245- AN ALERT STATUS OCCURRED AFTER AN ERASE.
* 
* 
*** T6X80A- INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = TOTAL FILE COUNTER 
*         B1 = RECORD COUNTER PER FILE
*         B2 = INDEX INTO OB FOR RECORD CODING
*         B3 = WORD COUNT FOR WRITE OPERATIONS
*            = WRITE AND ENDFILE RETRY COUNTER
*         B5 = ABORT MESSAGE POINTER
*         B13= BUFFER INDEX FROM T6X80
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T6X980 - PROCESS ERROR MODULE 
*         T6X981 - PROCESS STATUS 
*         T6X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T6X80A- COMPATIBILITY WRITE (FILE *OCT) 
 2 FORMAT T6X80A ERROR CODE = *OCT AT LINE (EA) = *OCT
 3 FORMAT T6X80A- ABORT ON .RES. COMMAND -
 4 FORMAT T6X80A- ABORT ON .REL. COMMAND -
 5 FORMAT T6X80A- ABORT ON .WRITE. COMMAND -
 6 FORMAT T6X80A- ABORT ON .WAITNB. COMMAND - 
 7 FORMAT T6X80A- ABORT ON .BKSP. COMMAND - 
10 FORMAT T6X80A- ABORT ON .ENDFILE. COMMAND -
11 FORMAT T6X80A- ABORT ON .ERASE. COMMAND -
12 FORMAT T6X80A- ABORT ON .READ FWD. COMMAND - 
13 FORMAT T6X80A- END OF TAPE ENCOUNTERED AT RECORD *OCT
14 FORMAT T6X80A TERMINATED- UNRECOVERABLE WRITE
15 FORMAT T6X80A TERMINATED- BOT DETECTED ON WRITE RECOVERY 
16 FORMAT T6X80A ERROR(S) IN MODULE = *DEC
17 FORMAT T6X80A- ABORT ON .STATUS DETAIL. COMMAND -
* 
   EQUATE BOT TO 4, EOT TO 10, EOF TO 20, STERR TO 5074 
   EQUATE STERR1 TO 5064, DETAIL3 TO 4140 
* 
20 MSG 1 (B0) TO DISPLAY,PRINT    *RUNNING MESSAGE
   B2 = B13                  *INDEX INTO OB FROM MODULE T6X80 
   RANDOM TO OB FOR 500, START RT 
   OB(1) = B0                *FILE COUNT
   OB(B2+6) = B0
   OB(3) = B3                *RECORD LENGTH 
   OB(B2+4) = B3
   OB(4) = SB(30)            *CHANNEL 
   OB(B2+3) = SB(30)
   OB(5) = SB(31)            *EQUIPMENT 
   OB(B2+2) = SB(31)
   OB(6) = SB(32)            *UNIT
   OB(B2+1) = SB(32)
   OB(7) = P9                *SYSTEM ID 
   OB(B2) = P9
   B1 = 0                    *CLEAR RECORD COUNTER
   WC = B3                   *SET WORD COUNT FOR WRITES 
* 
*---------WRITE A FILE OF DATA
* 
40 B5 = 3 
   RES P1, ABT 74 
   B1 = B1 + 1               *BUMP RECORD NUMBER
   OB(2) = B1                *RECORD NUMBER FOR WRITE DATA
   OB(B2+5) = B1
   B3 = 3                    *RETRY COUNTER FOR RECOVERY
41 B5 = 5 
   WRITE LONG, ABT 74 
   IF(P3.AND.20.NE.0) GOTO 42  *IF WAIT NOT BUSY DISABLED 
   B5 = 6 
   WAITNB, ABT 74 
42 B5 = 17
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.STERR.EQ.EOT) GOTO 46  *IF GOOD WRITE/EOT 
   IF(SB(3).AND.DETAIL3.EQ.0) GOTO 43  *IF NO DETAIL3 ERR 
   ERROR 2/204, GOSUB 70
   GOTO 44
43 IF(SB(1).AND.STERR.EQ.0) GOTO 45  *IF NO STATUS ERROR
   ERROR 2/200, GOSUB 70     *REPORT WRITE ERROR
44 GOSUB 50                  *POSITION TAPE FOR RECOVERY
   GOTO 41 WHILE(B3-1.NE.0)  *TRY IT THREE TIMES
   GOTO 52                   *UNRECOVERABLE ERROR 
45 IF(B1.NE.200D) GOTO 40    *WRITE 200D RECORDS
   GOSUB 55                  *WRITE AN END OF FILE
   GOSUB 55                  *WRITE A SECOND END OF FILE
   GOTO 47
46 MSG 13 (B1) TO DISPLAY,PRINT   *REPORT EOT ENCOUNTERED 
47 B5 = 4 
   REL, ABT 74
   EXIT TO 80B               *EXIT TO REVERSE READ
* 
*---------REPOSITION TAPE FOR WRITE/ENDFILE RETRY 
* 
50 B5 = 3 
   RES P1, ABT 74 
   B5 = 7 
   BKSP, ABT 74              *BACKSPACE OVER BAD RECORD 
   B5 = 11
   ERASE, ABT 74             *EARSE BAD RECORD
   IF(SB(1).AND.STERR1.NE.0) GOTO 51  *TERMINATE ON ERROR 
   RETURN 
51 ENDSUB 
   ERROR 2/245, GOSUB 70     *REPORT ERASE ERROR
* 
*---------ERASE ERROR OR UNRECOVERABLE WRITE.  REPOSTITION
*         TO LAST GOOD END OF FILE AND TRY TO WRITE AN EOF. 
* 
52 MSG 14 TO DISPLAY,PRINT   *REPORT UNRECOVERABLE ERROR
53 B5 = 3 
   RES P1, ABT 74 
   B5 = 7 
   BKSP, ABT 74 
   IF(SB(1).AND.BOT.NE.0) GOTO 54  *IF LOAD POINT 
   IF(SB(1).AND.EOF.EQ.0) GOTO 53  *SEARCH UNTIL EOF FOUND
   B5 = 12
   READ FWD, ABT 74          *SKIP OVER THE EOF 
   B5 = 10
   ENDFILE, ABT 74           *WRITE SECOND END OF FILE
   GOTO 76
54 MSG 15 TO DISPLAY,PRINT   *REPORT TERMINATION MESSAGE
   GOTO 77
* 
*---------WRITE END OF FILE SUBROUTINE
* 
55 B3 = 3                    *RETRY COUNT 
56 B5 = 3 
   RES P1, ABT 74 
   B5 = 10
   ENDFILE, ABT 74
   IF(SB(1).AND.EOF.NE.0) GOTO 57  *IF SUCCESSFUL EOF 
   ERROR 2/122, GOSUB 70     *REPORT EOF ERROR
   GOSUB 50                  *REPOSTITION TAPE FOR RETRY
   GOTO 56 WHILE(B3-1.NE.0)  *TRY THREE TIMES 
   GOTO 52                   *TERMINATE 
57 B0 = B0 + 1               *BUMP FILE COUNT 
   RETURN 
* 
*---------PROCESS MODULE ERRORS 
* 
70 BA = BA + 1               *BUMP ERROR COUNTER
   MSG EM (EC,EA) TO LINE 1  *REPORT ERROR CODE AND LINE
   B4 = 2 
   CALL 98A                  *ERROR CODE PROCESSOR
   CALL 980                  *PROCESS ERROR MODULE
   RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORTS
* 
74 BA = BA + 1               *BUMP ERROR COUNTER
   MSG B5 TO LINE 0          *ERROR CONDITION 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B4 = 3                    *SET MESSAGE LINE NUMBER 
   CALL 981                  *PROCESS STATUS
   CALL 980                  *ERROR PROCESSOR 
76 MSG 16 (BA) TO DAYFILE    *REPORT ERROR TO DAYFILE 
77 END 20 
COMPILE   - T6X80A -
   MODULE T6X80B,66X(42,52)LOCK  - COMPAT. READ REVERSE 
*** T6X80B- COMPATIBILITY READ REVERSE
* 
**  T6X80B- EXTERNAL DOCUMENTATION
* 
*   DESCRIPTION - (READ REVERSE)
* 
*         1. SET WORD COUNT FOR READS TO 500. 
*         2. RESERVE. 
*         3. READ ONE RECORD REVERSE. 
*         4. WAIT NOT BUSY IF SELECTED IN P3. 
*         5. IF LOAD POINT IS DETECTED, VERIFY THAT THE NUMBER OF 
*            FILES READ REVERSE IS THE SAME NUMBER PROCESSED FORWARD. 
*            IF THEY DO NOT AGREE, REPORT EC073.  ALSO VERIFY THAT
*            THE CORRECT NUMBER OF RECORDS WERE READ REVERSE AND
*            REPORT EC072 IF IN ERROR.  TERMINATE IF LOAD POINT.
*         6. IF END-OF-FILE IS DETECTED, DECREMENT THE FILE COUNT AND 
*            VERIFY THAT THE PROPER NUMBER OF RECORDS WERE PROCESSED
*            WITHIN THE LAST FILE.  IF THEY DO NOT AGREE, REPORT
*            EC072.  RESET THE RECORD COUNT TO 200D AND GO TO STEP 2
*            TO CONTINUE THE REVERSE READ.
*         7. IF A STATUS ERROR OCCURRED ON THE LAST READ, REPORT EC202. 
*         8. WE ARRIVE AT THIS STEP IF THE LAST READ WAS NOT AN END-OF
*            FILE.  REPORT A RUNNING MESSAGE IF THE PREVIOUS READ WAS 
*            THE FIRST RECORD OF A NEW FILE.  DECREMENT THE RECORD
*            COUNT BY 1 AND GO TO STEP 2 TO CONTINUE THE READ.
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T6X80B- ABORT ON .RES. COMMAND 
*         3. T6X80B- ABORT ON .REL. COMMAND 
*         4. T6X80B- ABORT ON .READ REV. COMMAND
*         5. T6X80B- ABORT ON .WAITNB. COMMAND
*         6. T6X80B- ABORT ON .STATUS DETAIL. COMMAND 
* 
*         7. EC072- RECORD COUNT=*OCT AT EOF *OCT, EXP=*OCT 
* 
*         8. EC073- FILE COUNT=*OCT AT LOAD POINT, EXP=0000 
* 
*         9. EC202- A STATUS ERROR OCCURRED ON A REVERSE READ.
* 
*        10. EC204- DETAIL STATUS WORD 3 HAS ONE OF THE FOLLOWING SET-
*            A. SEVERE START ERROR ......4XXX 
*            B. SINGLE FRAME SKEW .......X1XX 
*            C. ILLEGAL CHARACTER SET ...XX4X 
* 
* 
*** T6X80B- INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = TOTAL FILE COUNTER 
*         B1 = RECORD COUNTER PER FILE
*         B2 = ONLY EOF'S READ FLAG 
*         B5 = ABORT MESSAGE POINTER
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T6X980 - PROCESS ERROR MODULE 
*         T6X981 - PROCESS STATUS 
*         T6X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T6X80B- COMPATIBILITY REVERSE READ
 2 FORMAT T6X80B ERROR CODE = *OCT AT LINE (EA) = *OCT
 3 FORMAT T6X80B- ABORT ON .RES. COMMAND -
 4 FORMAT T6X80B- ABORT ON .REL. COMMAND -
 5 FORMAT T6X80B- ABORT ON .READ REV. COMMAND - 
 6 FORMAT T6X80B- ABORT ON .WAITNB. COMMAND - 
 7 FORMAT T6X80B- FILE=*OCT CH=*OCT EQ=*OCT UN=*OCT SYS=*OCT
10 FORMAT EC072- RECORD COUNT=*OCT AT EOF *OCT, EXP=*OCT
11 FORMAT EC073- FILE COUNT=*OCT AT LOAD POINT, EXP=0000
12 FORMAT T6X80B ERROR(S) IN MODULE = *DEC
13 FORMAT T6X80B- ABORT ON .STATUS DETAIL. COMMAND -
* 
   EQUATE BOT TO 4, EOF TO 20, STERR TO 5074
   EQUATE DETAIL3 TO 4140 
* 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   B2 = 1                    *SET ONLY EOF'S READ FLAG
   WC = 500                  *SET READ WORD COUNT 
* 
*---------READ TAPE REVERSE TO LOAD POINT COUNTING RECORDS
*         AND FILES BACKWARDS.
* 
30 B5 = 3 
   RES P1, ABT 74 
   B5 = 5 
   READ REV, ABT 74 
   IF(P3.AND.20.NE.0) GOTO 31  *IF WAIT NOT BUSY BYPASSED 
   B5 = 6 
   WAITNB, ABT 74 
31 B5 = 13
   STATUS DETAIL, ABT 74
   IF(SB(1).AND.EOF.NE.0) GOTO 50  *IF END OF FILE
   IF(SB(1).AND.BOT.EQ.0) GOTO 34  *IF NOT LOAD POINT 
   IF(B0.EQ.0) GOTO 32       *IF NO FILE COUNT ERROR
   MSG 11 (B0) TO LINE 1
   GOTO 33                   *REPORT FILE COUNT ERROR 
32 IF(B1.EQ.200D) GOTO 77    *IF NO RECORD COUNT ERROR
   MSG 10 (B1,B0,200D) TO LINE 1
33 BA = BA + 1               *BUMP ERROR COUNTER
   B4 = 2                    *SET MESSAGE LINE NUMBER 
   CALL 980                  *PROCESS ERROR 
   GOTO 76                   *TERMINATE 
34 IF(SB(1).AND.STERR.EQ.0) GOTO 36  *IF NO ERROR 
   IF(SB(3).AND.DETAIL3.EQ.0) GOTO 35  *IF NO START ERROR 
   ERROR 2/204, GOSUB 70
   GOTO 36
35 ERROR 2/202, GOSUB 70     *REPORT READ ERROR 
36 IF(B2.NE.0) GOTO 37       *IF FIRST RECORD REVERSE 
   IF(B1.NE.200D) GOTO 41    *IF NOT FIRST RECORD OF FILE 
37 COPY IB(4) TO OB(1) FOR 4    *PREPARE CH,EQ,UN,SYS DATA
   IF(DC.EQ.42) GOTO 40      *IF 7TK - NO CONVERSION NEEDED 
   OB(1) = IB(4).AND.377.LS.4   *UNSCRAMBLE REVERSE DATA
   OB(1) = IB(5).RS.8 + OB(1) 
   OB(2) = IB(4).RS.8 
   OB(2) = IB(6).AND.7760 + OB(2) 
   OB(3) = IB(7).AND.17.LS.8
   OB(3) = IB(5).AND.377 + OB(3)
   OB(4) = IB(6).AND.17.LS.8
   OB(4) = IB(7).RS.4 + OB(4) 
40 MSG 7 (B0,OB(1),OB(2),OB(3),OB(4)) TO DISPLAY,PRINT
41 B1 = B1 - 1               *DECREMENT RECORD COUNT
   B2 = 0                    *INDICATE DATA READ
   GOTO 30
* 
*---------END OF FILE DETECTED. VERIFY RECORD COUNT.
* 
50 B0 = B0 - 1               *DECREMENT FILE COUNT
   IF(B2.NE.0) GOTO 51       *IF ONLY FILE MARKS READ 
   IF(B1.EQ.0) GOTO 51       *IF NO RECORD COUNT ERROR
   MSG 10 (B1,B0,0) TO LINE 1 
   BA = BA + 1               *BUMP ERROR COUNTER
   B4 = 2                    *SET MESSAGE LINE NUMBER 
   CALL 980                  *REPORT RECORD COUNT ERROR 
51 B1 = 200D                 *RESET RECORD COUNTER
   GOTO 30
* 
*---------PROCESS MODULE ERRORS 
* 
70 BA = BA + 1               *BUMP ERROR COUNTER
   MSG EM (EC,EA) TO LINE 1  *REPORT ERROR CODE AND LINE
   B4 = 2                    *SET MESSAGE LINE NUMBER 
   CALL 98A                  *ERROR CODE PROCESSOR
   CALL 980                  *PROCESS ERROR MODULE
   RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORTS
* 
74 BA = BA + 1               *BUMP ERROR COUNTER
   MSG B5 TO LINE 0          *ERROR CONDITION 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
   B4 = 3                    *SET MESSAGE LINE NUMBER 
   CALL 981                  *PROCESS STATUS
   CALL 980                  *ERROR PROCESSOR 
76 MSG 12 (BA) TO DAYFILE 
77 END 20 
COMPILE   - T6X80B -
   MODULE T6X81,66X(42,52)LOCK  - COMPAT. CLEANUP 
*** T6X81 - COMPATIBILITY TAPE CLEAN-UP 
* 
**  T6X81 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE IS A UTILITY TO BE USED IN CONJUNCTION WITH 
*         MODULE 80, TAPE COMPATIBILITY TEST.  IT IS DESIGNED TO
*         BE USED TO PROPERLY TERMINATE A COMPATIBILITY TAPE WITH 
*         DOUBLE END-OF-FILES IN SITUATIONS WHERE THE TAPE IS NOT 
*         PROPERLY TERMINATED OR CONTAINS UN-READABLE FILES.  THE 
*         TAPE IS READ FORWARD THE NUMBER OF FILES SPECIFIED BY THE 
*         USER IN PARAMETER REGISTER P8 AND ANOTHER FILE MARK IS THEN 
*         WRITTEN.  THE USER SHOULD INDICATE THE NUMBER OF GOOD FILES 
*         ON THE TAPE IN REGISTER P8 (FILE 1 IS THE FIRST FILE, NOT 0). 
* 
*         THE NORMAL CHECKS MADE BY THE READ FORWARD SECTION OF THE 
*         COMPATIBILITY TEST ARE MADE BY THIS MODULE.  IF A WRITE RING
*         IS NOT PRESENT, DOUBLE END-OF-FILES ARE READ BEFORE 
*         PROCESSING (P8) FILES, OR IF END-OF-TAPE IS ENCOUNTERED 
*         PRIOR TO READING (P8) FILES, THE MODULE IS TERMINATED 
*         WITHOUT WRITING THE FILE MARK.
* 
*   DESCRIPTION - 
* 
*         1. SET THE WORD COUNT TO 500. 
*         2. SET READ CLIP MARGINS SELECTED IN P3.
*         3. RESERVE. 
*         4. REWIND.  IF THE UNIT DOES NOT HAVE A WRITE RING, 
*            REPORT THE FACT AND TERMINATE. 
*         5. READ THE FIRST RECORD FORWARD. 
*         6. IF THE FIRST RECORD IS NOT AN END-OF-FILE, REPORT EC070
*            AND TERMINATE (NOT A -COMPAT- TAPE). 
*         7. INITIALIZE THE FILE COUNTER, RECORD COUNTER AND NUMBER 
*            OF FILE MARKS READ TO 1. 
*         8. RESERVE. 
*         9. READ A RECORD FORWARD. 
*        10. WAIT NOT BUSY IF SELECTED IN P3. 
*        11. IF END-OF-TAPE IS ENCOUNTERED, REPORT THE FACT AND EXIT
*            WITHOUT WRITING THE FILE MARK. 
*        12. IF END-OF-FILE STATUS, BUMP THE FILE COUNTER AND NUMBER
*            OF CONSECUTIVE FILE MARKS COUNTER.  IF TWO CONSECUTIVE 
*            FILE MARKS HAVE BEEN ENCOUNTERED, REPORT THE FACT AND
*            TERMINATE.  IF NOT TWO CONSECUTIVE FILE MARKS, VERIFY
*            THAT THE PROPER NUMBER OF RECORDS WERE READ IN THE LAST
*            FILE.  IF NOT, REPORT EC071.  RESET THE RECORD COUNTER 
*            TO 1.  IF THE SELECTED NUMBER OF FILES HAVE NOT BEEN 
*            READ, GO TO STEP 8 TO CONTINUE THE READ.  OTHERWISE, 
*            WRITE AN END-OF-FILE AND TERMINATE.
*        13. IF AN ABNORMAL STATUS ERROR OCCURRED ON THE READ, REPORT 
*            EC203. 
*        14. WE ARRIVE AT THIS STEP IF AN END-OF-FILE WAS NOT READ. 
*            RESET THE FILE MARK COUNTER.  REPORT A RUNNING MESSAGE 
*            IF THE PREVIOUS READ WAS THE FIRST RECORD OF A NEW FILE. 
*            INCREMENT THE RECORD COUNT AND GO TO STEP 8 TO CONTINUE
*            THE READ.
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T6X81 - ABORT ON .RES. COMMAND 
*         3. T6X81 - ABORT ON .REL. COMMAND 
*         4. T6X81 - ABORT ON .REWIND. COMMAND
*         5. T6X81 - ABORT ON .READ FWD. COMMAND
*         6. T6X81 - ABORT ON .WAITNB. COMMAND
*         7. T6X81 - ABORT ON .BKSP. COMMAND
*         8. T6X81 - ABORT ON .ENDFILE. COMMAND 
* 
*         9. EC070- TAPE MOUNTED IS NOT A -COMPAT- TAPE 
* 
*        10. EC071- RECORD COUNT=*OCT IN FILE *OCT, EXP=0311
* 
*        11. EC122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM 
* 
*        12. EC203- ALERT BIT IN GENERAL STATUS WAS SET DURING A
*            READ OPERATION. THE LAST MAJOR FUNCTION ISSUED IS
*            LISTED.
* 
*** T6X81 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = TOTAL FILE COUNTER 
*         B1 = RECORD COUNTER PER FILE
*         B2 = ENDFILE RETRY COUNTER
*         B3 = CONSECUTIVE FILE MARKS COUNTER 
*         B5 = ABORT MESSAGE POINTER
*            = MARGINS
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T6X980 - PROCESS ERROR MODULE 
*         T6X981 - PROCESS STATUS 
*         T6X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T6X81 - COMPATIBILITY TAPE CLEANUP -
 2 FORMAT T6X81 ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T6X81 - ABORT ON .READ FWD. COMMAND - 
 4 FORMAT T6X81 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T6X81 - ABORT ON .RES. COMMAND -
 6 FORMAT T6X81 - ABORT ON .REL. COMMAND -
 7 FORMAT T6X81 - ABORT ON .WAITNB. COMMAND - 
10 FORMAT EC070- TAPE MOUNTED IS NOT A -COMPAT- TAPE
11 FORMAT EC071- RECORD COUNT=*OCT IN FILE *OCT, EXP=0311 
12 FORMAT T6X81 - FILE=*OCT CH=*OCT EQ=*OCT UN=*OCT SYS=*OCT
13 FORMAT T6X81 TERMINATED ON EOT - NO EOF WRITTEN
14 FORMAT T6X81 ERROR(S) IN MODULE = *DEC - 
15 FORMAT T6X81 - ABORT ON .BKSP. COMMAND - 
16 FORMAT T6X81 - ABORT ON .ENDFILE. COMMAND -
17 FORMAT T6X81 TERMINATED ON DOUBLE EOF - NO EOF WRITTEN 
20 FORMAT T6X81 TERMINATED ON NO WRITE RING-NO EOF WRITTEN
21 FORMAT T6X81 TERMINATED ON UNRECOVERABLE WRITE OF EOF
* 
   EQUATE EOT TO 10, EOF TO 20, RING TO 200, STERR TO 5074
* 
22 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   BA = 0                    *CLEAR ERROR COUNTER 
* 
*---------DETERMINE IF WE HAVE A -COMPAT- TAPE MOUNTED
* 
   WC = 500 
   B5 = P3.RS.6 
   MARGINS B5                *SELECT READ CLIP MARGINS
   B5 = 5 
   RES P1, ABT 74 
   B5 = 4 
   REWIND, ABT 74 
   IF(SB(1).AND.RING.NE.0) GOTO 23  *IF WRITE ENABLED 
   MSG 20 TO DISPLAY,PRINT   *INDICATE NO RING
   GOTO 77                   *TERMINATE 
23 B5 = 3 
   READ FWD, ABT 74          *READ FIRST RECORD 
   IF(SB(1).AND.EOF.NE.0) GOTO 25  *IF EOF ON FIRST READ
   B5 = 6 
   REL, ABT 74
   MSG 10 TO LINE 1 
   BA = BA + 1               *BUMP ERROR COUNTER
   GOTO 75                   *TERMINATE, NOT -COMPAT- TAPE
25 B0 = 1                    *SET FILE COUNT TO 1 
   B3 = 1                    *SET CONSECUTIVE FILES TO 1
* 
*--------READ TAPE FORWARD COUNTING RECORDS AND FILES.
* 
30 B1 = 1                    *SET RECORD COUNT TO 1 
31 B5 = 5 
   RES P1, ABT 74 
   B5 = 3 
   READ FWD, ABT 74 
   IF(P3.AND.20.NE.0) GOTO 32  *IF WAIT NOT BUSY DISABLED 
   B5 = 7 
   WAITNB, ABT 74 
32 IF(SB(1).AND.STERR.EQ.0)GOTO 34  *IF NO ERROR,EOF OR EOT 
   IF(SB(1).AND.EOF.NE.0) GOTO 36   *IF END OF FILE 
   IF(SB(1).AND.EOT.NE.0) GOTO 41   *IF END OF TAPE 
   ERROR 2/203, GOSUB 70            *REPORT THE READ ERROR
34 B3 = 0                    *CLEAR CONSECUTIVE FILES CTR.
   IF(B1.NE.1) GOTO 35       *IF NOT FIRST RECORD OF FILE 
   MSG 12 (B0,IB(4),IB(5),IB(6),IB(7)) TO DISPLAY,PRINT 
35 B1 = B1 + 1               *BUMP RECORD COUNTER 
   GOTO 31
36 B3 = B3 + 1               *BUMP CONSECUTIVE FILES CTR. 
   IF(B3.EQ.2) GOTO 40       *IF DOUBLE END OF FILES
   IF(B1.NE.201D) GOTO 37    *IF RECORD COUNT INCORRECT 
   B0 = B0 + 1               *BUMP FILE COUNT 
   IF(B0-1.EQ.P8) GOTO 50    *IF REQUESTED FILES READ 
   IF(SB(1).AND.EOT.EQ.0) GOTO 30  *IF NOT END OF TAPE
   GOTO 41
37 MSG 11 (B1,B0) TO LINE 1 
   BA = BA + 1               *BUMP ERROR COUNTER
   B4 = 2                    *SET MESSAGE LINE NUMBER 
   CALL 980                  *REPORT RECORD COUNT ERROR 
   B0 = B0 + 1               *BUMP FILE COUNT 
   IF(B0-1.EQ.P8) GOTO 50    *IF REQUESTED FILES READ 
   IF(SB(1).AND.EOT.EQ.0) GOTO 30  *IF NOT END OF TAPE
   B1 = 200D                 *RESET RECORD COUNT
   GOTO 41
* 
*---------DOUBLE END-OF-FILES OR EOT DETECTED.  REPORT
*         THE CONDITION AND TERMINATE WITHOUT WRITING EOF.
* 
40 MSG 17 TO DISPLAY,PRINT   *INDICATE DOUBLE EOF FOUND 
   GOTO 77                   *TERMINATE 
41 MSG 13 TO DISPLAY,PRINT   *INDICATE EOT ENCOUNTERED
   GOTO 77                   *TERMINATE 
* 
*---------REQUESTED FILES HAVE BEEN READ. WRITE END-OF-FILE.
* 
50 B5 = 5 
   RES P1, ABT 74 
   B5 = 16
   ENDFILE, ABT 74
   IF(SB(1).AND.EOF.NE.0) GOTO 51  *IF GOOD END OF FILE 
   ERROR 2/122, GOSUB 70     *REPORT EOF ERROR
   B5 = 5 
   RES P1, ABT 74 
   B5 = 15
   BKSP, ABT 74              *BACKSPACE OVER BAD EOF
   GOTO 50 WHILE (B2+1.NE.10D)  *KEEP TRYING
   MSG 21 TO DISPLAY,PRINT   *INDICATE UNRECOVERABLE WRITE
   GOTO 77                   *TERMINATE 
51 B5 = 6 
   REL, ABT 74
   GOTO 77                   *NORMAL TERMINATION
* 
*---------PROCESS MODULE ERRORS 
* 
70 BA = BA + 1               *BUMP ERROR COUNTER
   MSG EM (EC,EA) TO LINE 1  *REPORT ERROR CODE/LINE
   B4 = 2                    *SET MESSAGE LINE NUMBER 
   CALL 98A                  *PROCESS ERROR CODE
   CALL 980                  *PROCESS ERROR MODULE
   RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORTS
* 
74 BA = BA + 1               *BUMP ERROR COUNTER
   MSG B5 TO LINE 0          *ERROR CONDITION 
   MSG EM TO LINE 1          *PRODUCT OVERLAY MESSAGE 
75 B4 = 3                    *SET MESSAGE LINE NUMBER 
   CALL 981                  *PROCESS STATUS
   CALL 980                  *PROCESS ERROR MODULE
   MSG 14 (BA) TO DAYFILE    *REPORT ERRORS TO DAYFILE
77 END 22 
COMPILE   - T6X81 - 
   MODULE T6X82,66X(42,52)LOCK   - KILLER PATTERN 
*** T6X82 - KILLER PATTERN
* 
**  T6X82 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE ALLOWS THE USER TO TAKE A SNAPSHOT OF HOW WELL
*         A UNIT IS WRITING TAPES WITH A CANNED DATA PATTERN THAT IS
*         KNOWN TO CREATE PEAK SHIFT PROBLEMS ON 200 IPS UNITS. 
*         THE NORMAL ERROR OUTPUT OF T6X IS NOT USED TO REPORT WRITE
*         ERRORS IN THIS MODULE, THEREFORE NO STATUS IS AVAILABLE.
*         THE TAPE IS REWOUND AND WRITTEN FROM LOAD POINT TO END OF 
*         TAPE.  THE NUMBER OF RECORDS WRITTEN, NUMBER OF RECORDS 
*         WITH ERRORS (ALERT SET), AND TRACKS IN ERROR ARE ACCUMULATED
*         AND DISPLAYED.  THE UNIT PASSES THE TEST IF LESS THAN 1 PER-
*         CENT OF THE RECORDS WRITTEN HAVE ERRORS.
* 
*         IF THE MODULE IS EXECUTED IN TERMINAL MODE, THE USER CAN
*         DETERMINE HOW WELL THE UNIT IS WORKING PRIOR TO REACHING
*         END OF TAPE BY EXECUTING A -PICTURE,PPU- DIRECTIVE WHEN 
*         MODULE TIME LIMIT IS REACHED, FOLLOWED BY A -GO- TO RESUME
*         TESTING ONCE THE PICTURE IS COMPLETE. 
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE.
*         2. SET WORD COUNT TO 5000 OCTAL.
*         3. REWIND.
*         4. BUMP THE RECORD COUNTER. 
*         5. WRITE A 5000 WORD RECORD AND DISPLAY THE RECORD COUNT. 
*            GO TO STEP 8 IF END OF TAPE. 
*         6. GO TO STEP 5 IF ALERT IS NOT SET.  OTHERWISE, BUMP THE 
*            ERROR COUNTER, BUMP THE TRACK COUNTERS THAT HAVE VALID 
*            POINTERS OR DEAD TRACK INDICATIONS IN DETAIL STATUS, 
*            UPDATE THE DISPLAY OF THESE VALUES AND GO TO STEP 5. 
*         7. ONCE END OF TAPE IS ENCOUNTERED, DETERMINE IF THE ERROR
*            RATE WAS 1 PERCENT OR GREATER.  IF SO, POST A MESSAGE. 
*         8. SEND A PICTURE OF THE DISPLAY TO OUTPUT. 
*         9. REPORT A MESSAGE TO DAYFILE IF ERRORS WERE ENCOUNTERED.
*        10. TERMINATE. 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T6X82 - ABORT ON .RES. COMMAND - 
*         3. T6X82 - ABORT ON .REWIND. COMMAND -
*         4. T6X82 - ABORT ON .WRITE. COMMAND - 
* 
*         5. UNIT FAILS TEST - ERROR RATE EXCEEDS 1 PERCENT 
* 
*** T6X82 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = UPPER 3 DIGITS OF THE RECORDS WRITTEN COUNTER
*         B1 = LOWER 2 DIGITS OF THE RECORDS WRITTEN COUNTER
*         B2 = UPPER 2 DIGITS OF THE RECORDS WITH ERRORS COUNTER
*         B3 = LOWER 3 DIGITS OF THE RECORDS WITH ERRORS COUNTER
*         B4 = DATA BIT NUMBER
*         B5 = ERROR MESSAGE NUMBER IN CASE OF ABORTS 
*            = TRACK MASK FOR STATUS ANALYSIS 
*         B6 = INPUT BUFFER INDEX TO TRACK ERROR COUNTERS 
*         B7 = MOTION CODE FOR STATUS ANALYSIS MODULES ON ABORTS
* 
*   BUFFER USAGE -
* 
*         IB(00)-IB(01) = TRACK 1 ERROR COUNTERS
*         IB(02)-IB(03) = TRACK 2 ERROR COUNTERS
*         IB(04)-IB(05) = TRACK 3 ERROR COUNTERS
*         IB(06)-IB(07) = TRACK 4 ERROR COUNTERS
*         IB(10)-IB(11) = TRACK 5 ERROR COUNTERS
*         IB(12)-IB(13) = TRACK 6 ERROR COUNTERS
*         IB(14)-IB(15) = TRACK 7 ERROR COUNTERS
*         IB(16)-IB(17) = TRACK 8 ERROR COUNTERS
*         IB(20)-IB(21) = TRACK 9 ERROR COUNTERS
* 
*   MODULES CALLED -
* 
*         T6X980 - STATUS ANALYSIS MODULE 
* 
 1 FORMAT T6X82 - KILLER PATTERN
 2 FORMAT UNIT FAILS TEST - ERROR RATE EXCEEDS 1 PERCENT
 3 FORMAT T6X82 - ABORT ON .RES. COMMAND -
 4 FORMAT T6X82 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T6X82 - ABORT ON .WRITE. COMMAND -
10 FORMAT T6X82 ERROR(S) IN MODULE =*D*DE 
11 FORMAT             KILLER PATTERN RESULTS
12 FORMAT   TOTAL RECORDS WRITTEN      = *DE*D (D)
13 FORMAT   TOTAL RECORDS WITH ERRORS  = *D*DE (D)
14 FORMAT   NUMBER OF RECORDS EACH DATA BIT HAD ERRORS
15 FORMAT    DATA BIT *D  =  *D*DE (D)
16 FORMAT    DATA BIT P   =  *D*DE (D)
   DATA(OB(000),CON) 7777,7777,7760,0377,7777,7777,0017,7777
   DATA(OB(010),CON) 7777,7400,7777,7777,7760,0377,7777,7777
   DATA(OB(020),CON) 0017,7777,7777,7400,7777,7777,7760,0377
   DATA(OB(030),CON) 7777,7777,0017,7777,7777,7400,7777,7777
   DATA(OB(040),CON) 7760,0377,7777,7777,0017,7777,7777,7400
   DATA(OB(050),CON) 7777,7777,7760,0377,7777,7777,0017,7777
   DATA(OB(060),CON) 7777,7400,7777,7777,7760,0377,7777,7777
   DATA(OB(070),CON) 0017,7777,7777,7400,7777,7777,7760,0377
   DATA(OB(100),CON) 7777,7777,0017,7777,7777,7400,7777,7777
   DATA(OB(110),CON) 7760,0377,7777,7777,0017,7777,7777,7400
   DATA(OB(120),CON) 7777,7777,7760,0377,7777,7777,0017,7777
   DATA(OB(130),CON) 7777,7400,7777,7777,7760,0377,7777,7777
   DATA(OB(140),CON) 0017,7777,7777,7400,7777,7777,7600,0377
   DATA(OB(150),CON) 7777,7777,0017,7777,7777,7400,7777,7777
   DATA(OB(160),CON) 7760,0377,7777,7777,0017,7777,7777,7400
   DATA(OB(170),CON) 7777,7777,7760,0377,7777,7777,0017,7777
   DATA(OB(200),CON) 7777,7400,7777,7777,7760,0377,7777,7777
   DATA(OB(210),CON) 0017,7777,7777,7400,7777,7777,7760,0377
   DATA(OB(220),CON) 7777,7777,0017,7777,7777,7400,7777,7777
   DATA(OB(230),CON) 7760,0377,7777,7777,0017,7777,7777,7400
   DATA(OB(240),CON) 7777,7777,7760,0377,7777,7777,0017,7777
   DATA(OB(250),CON) 7777,7400,7777,7777,7760,0377,7777,7777
   DATA(OB(260),CON) 0017,7777,7777,7400,7777,7777,7760,0377
   DATA(OB(270),CON) 7777,7777,0017,7777,7777,7400,7777,7777
   DATA(OB(300),CON) 7760,0377,7777,7777,0017,7777,7777,7400
   DATA(OB(310),CON) 7777,7777,7760,0377,7777,7777,0017,7777
   DATA(OB(320),CON) 7777,7400,7777,7777,7760,0377,7777,7777
   DATA(OB(330),CON) 0017,7777,7777,7400,7777,7777,7760,0377
   DATA(OB(340),CON) 7777,7777,0017,7777,7777,7400,7777,7777
   DATA(OB(350),CON) 7760,0377,7777,7777,0017,7777,7777,7400
   DATA(OB(360),CON) 7777,7777,7760,0377,7777,7777,0017,7777
   DATA(OB(370),CON) 7777,7400,7777,7777,7760,0377,7777,7777
   DATA(OB(400),CON) 0017,7777,7777,7400,7777,7777,7760,0377
   DATA(OB(410),CON) 7777,7777,0017,7777,7777,7400,7777,7777
   DATA(OB(420),CON) 7760,0377,7777,7777,0017,7777,7777,7400
   DATA(OB(430),CON) 7777,7777,7760,0377,7777,7777,0017,7777
   DATA(OB(440),CON) 7777,7400,7777,7777,7760,0377,7777,7777
   DATA(OB(450),CON) 0017,7777,7777,7400,7777,7777,7760,0377
   DATA(OB(460),CON) 7777,7777,0017,7777,7777,7400,7777,7777
   DATA(OB(470),CON) 7760,0377,7777,7777,0017,7777,7777,7400
* 
   EQUATE ALERT TO 4000, EOT TO 10
* 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   WC = 5000                 *SET WORD COUNT
22 B5 = 3 
   B7 = 6 
   RES P1, ABT 74 
   B5 = 4 
   B7 = 10                   *REWIND MOTION CODE
   REWIND, ABT 74 
   GOTO 45                   *BUILD DISPLAY,RETURN TO 30
* 
* ---------WRITE KILLER PATTERN FROM BOT TO EOT 
* 
30 B1 = B1 + 1               *BUMP RECORD COUNTER B0/B1 
   IF(B1.LT.100D) GOTO 31    *IF NO LOWER DIGITS OVERFLOW 
   B1 = 0 
   B0 = B0 + 1
31 B5 = 3 
   B7 = 6 
   RES P1, ABT 74 
   B5 = 5 
   B7 = 4                    *WRITE MOTION CODE 
   WRITE, ABT 74
   MSG 12 (B0,B1) TO LINE 3  *UPDATE RECORDS WRITTEN
   IF(SB(1).AND.EOT.NE.0) GOTO 50  *IF END OF TAPE
   IF(SB(1).AND.ALERT.EQ.0) GOTO 30  *IF NO ERROR 
* 
* ---------PROCESS WRITE ERRORS 
* 
   B3 = B3 + 1               *BUMP ERROR COUNTER B2/B3
   IF(B3.LT.1000D) GOTO 41   *IF NO LOWER DIGITS OVERFLOW 
   B3 = 0 
   B2 = B2 + 1
41 B5 = 1                    *SET STATUS MASK 
   B6 = 0                    *IB INDEX (ERROR CTR 1ST WORD) 
42 IF(SB(6).AND.B5.EQ.0) GOTO 44  *IF DEAD TRK BIT NOT SET
43 IB(B6+1) = IB(B6+1) + 1   *BUMP ERROR COUNTER
   IF(IB(B6+1).LT.1000D) GOTO 44  *IF NO OVERFLOW 
   IB(B6+1) = 0 
   IB(B6) = IB(B6) + 1
44 B5 = B5 + B5              *SHIFT MASK
   GOTO 42 WHILE (B6+2.NE.22)  *TEST ALL TRACKS 
* 
* ---------BUILD ERROR DISPLAY
* 
45 MSG 11 TO LINE 1          *BUILD ERROR DISPLAY 
   MSG 12 (B0,B1) TO LINE 3 
   MSG 13 (B2,B3) TO LINE 4 
   MSG 14 TO LINE 6 
   B4 = 0                    *DATA BIT NUMBER/LINE NUMBER-8D
   B6 = 0                    *INPUT BUFFER INDEX (CTRS) 
46 MSG 15(B4,IB(B6),IB(B6+1)) TO LINE B4+8D 
   B6 = B6 + 2               *BUMP BUFFER INDEX 
   GOTO 46 WHILE (B4+1.NE.8D)   *DO ALL DATA BITS 
   MSG 16(IB(B6),IB(B6+1)) TO LINE B4+8D
   GOTO 30                   *RESUME TESTING
* 
* ---------PROCESS END OF TAPE
* 
50 IF(B2.NE.0) GOTO 51       *IF ERROR RATE .GT. 1 PERCENT
   IF(B0.GT.B3) GOTO 52      *IF ERROR RATE .LT. 1 PERCENT
51 MSG 2 TO LINE 18D         *INDICATE UNIT FAILED TEST 
52 PICTURE                   *SEND DISPLAY TO OUTPUT
   IF(B2+B3.EQ.0) GOTO 77    *TERMINATE IF NO ERRORS
   MSG 10 (B2,B3) TO DAYFILE
   GOTO 77                   *TERMINATE 
* 
* ---------PROCESS PRODUCT OVERLAY ABORTS 
* 
74 PICTURE AND BLANK         *PRINT CURRENT STATISTICS
   MSG B5 TO LINE 0          *ERROR CONDITION 
   MSG EM TO LINE 1          *PRODUCT OVERLAY ERROR MESSAGE 
   CALL 980                  *PROCESS ERROR MODULE
   MSG 1 TO DISPLAY          *REPOST RUNNING MESSAGE
   GOTO 45                   *REBUILD ERROR DISPLAY 
77 END 20 
COMPILE   - T6X82 - 
   MODULE T6X980,66X(42,52),LOCK  -ERROR MESSAGE PROCESSOR- 
*** ERROR MESSAGE PROCESSOR 
* 
**  EXTERNAL DOCUMENTATION
* 
*   OVERVIEW - THE PURPOSE OF THIS MODULE IS TO PROVIDE 
*         A COMMON ERROR PROCESSING MODULE. THE ONLY ENTRANCE 
*         TO THE MODULE IS BY WAY OF THE *CALL* STATEMENT.
* 
* 
*   DESCRIPTION - PERTINENT ERROR INFORMATION INCLUDING 
*         GENERAL AND DETAIL STATUS IS FORMATTED AND OUTPUT.
*         B7 SERVES AS A FLAG TO DETERMINE WHETHER DATA 
*         COMPARE IS PERFORMED. 
* 
* 
*   CALLED BY - ALL PRIMARY MODULES TO PROCESS ERRORS 
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*  B0 = CURRENT FILE COUNT
* 
*  B1 = CURRENT RECORD COUNT
* 
*  B4 = K/L DISPLAY LINE COUNTER
* 
*  B5 = POINTER TO OB/IB
* 
*  B6 = NO OF DATA WORDS TO COMPARE 
* 
*  B7 = MSG NUMBER(SET BEFORE ENTRY)
*        FOR MESSAGE PROCESSOR
*  B7 = DELAY VALUE 
*        FOR REL/RES
* 
*  B7 = 0 - ABORT FLAG
* 
*  BA = USED FOR ERROR COUNT
* 
* 
/ 
/         PROCESS ERRORS FOR ALL MODULES
/ 
01 FORMAT   CH=*OCT  EQ=*OCT  UN=*OCT  DC=*OCT  EA=*OCT                  T6X001J
02 FORMAT   LF=*OCT LSF=*OCT  WC=*OCT  WT=*OCT                           T6X001J
03 FORMAT   FILE=*OCT  RECORD=*OCT     ERROR COUNT=*OCT                  T6X001J
04 FORMAT   SB(1-8) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT             T6X001J
05 FORMAT   SB(9-10)=*OCT *OCT                                           T6X001J
06 FORMAT   OB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT             T6X001J
07 FORMAT   IB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT             T6X001J
10 FORMAT   B0-B7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT             T6X001J
11 FORMAT   P0-P7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT             T6X001J
12 FORMAT   P8-P9   =*OCT *OCT                                           T6X001J
13 FORMAT            DATA ERROR(S)                                       T6X001J
14 FORMAT   ERR...  WD=*OCT  AC=*OCT  EX=*OCT  DIFF=*OCT                 T6X001J
15 FORMAT  *OCT XXX0 XXX1 XXX2 XXX3 XXX4 XXX5 XXX6 XXX7 
16 FORMAT       *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
* 
* 
20 MSG 1 (SB(30),SB(31),SB(32),DC,EA) TO LINE B4                         T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 2 (LF,SB,WC,WT) TO LINE B4                                        T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 3 (B0,B1,BA) TO LINE B4                                           T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 4, 10 WORDS FROM SB(1) TO LINE B4                                 T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 5, 2 WORDS FROM SB(11) TO LINE B4                                 T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 6, 10 WORDS FROM OB TO LINE B4                                    T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 7, 10 WORDS FROM IB TO LINE B4                                    T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 10, 10 WORDS FROM B0 TO LINE B4                                   T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 11, 10 WORDS FROM P0 TO LINE B4                                   T6X001J
   B4 = B4 + 1                                                           T6X001J
   MSG 12, 2 WORDS FROM P8 TO LINE B4                                    T6X001J
   B4 = B4 + 1
* 
*         CHECK FOR DATA COMPARE
* 
   IF(EM.GE.100)GOTO 77     *PROCESS ABORT
   IF(EC.NE.105)GOTO 77     *BYPASS COMPARE 
   MSG 13 TO LINE B4                                                     T6X001J
   B4 = B4 + 1                                                           T6X001J
* 
*         COMPARE INPUT/OUTPUT BUFFERS
* 
37 B5 = 0 
   B6 = 0 
40 B7 = IB(B5) .XOR. OB(B5) 
   IF(B7.EQ.0)GOTO 41       *NOT COMPARE ERROR
   BA = BA + 1              *INCREMENT ERROR COUNT
   MSG 14 (B5,IB(B5),OB(B5),B7) TO LINE B4  *ERROR DATA 
   B4 = B4 + 1
   GOTO 42 WHILE (B6 + 1.GE.4)
41 GOTO 42 WHILE (B5 + 1.GE.500)
   IF(B5.LT.WC) GOTO 40     *ALL WDS NOT COMPARED 
* 
*         DUMP INPUT BUFFER 
* 
42 IF(P3.AND.2.EQ.0)GOTO 77   *DONT DUMP INPUT BUFFER 
   B5=0                     *START ADDRESS
43 B4=1 
   PICTURE
   HALT                     *STOP-ON-ERROR
   BLANK
44 MSG 15, (B5) TO LINE B4  *OCTAL HEADER TO DISPLAY
   B4 = B4 + 1
45 MSG 16 , 10 WORDS FROM IB(B5) TO LINE B4 
   B4 = B4 + 1
   GOTO 77 WHILE (B5 + 10.GE.500) 
   IF(B5.GE.WC) GOTO 77 
   IF(B5.AND.377.EQ.0) GOTO 43  *DISPLAY LINE LIMIT EXCEEDED
   IF(B5.AND.77.EQ.0)GOTO 44
   GOTO 45                      *OUTPUT 100 WDS 
* 
*         EXIT
* 
77 EXIT TO 982               *ANALYZE STATUS
   END 20 
COMPILE    - T6X980 - 
   MODULE T6X981,66X(42,52),LOCK  - PROCESS ABORT STATUS -
*** PROCESS ABORT STATUS
* 
**
*   DESCRIPTION - CALLED WHEN THE PRODUCT OVERLAY ABORTS
*                 THE COMMAND.
* 
*               - CHECKS GENERAL STATUS FOR - 
* 
*                          - UNIT CONNECTED 
*                          - UNIT READY 
*                          - WRITE RING 
* 
*               - ATTEMPTS A RESTART IF BC IS HUNG
* 
*   CALLED BY - ALL PRIMARY MODULES 
* 
* 
*   MODULES CALLED - NONE 
* 
* 
*   ERROR MESSAGES -
* 
*         T6X981 - ..UNABLE TO DETERMINE STATUS OF ...BC.. -
*         T6X981 - ......BC DIED......, RESET INITIATED... -
*         T6X981 - ..BC NOT RESPONDING, UNABLE TO CONTINUE -
* 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*     B5 = LAST FUNCTION (LF) 
*        = BA LOWER 3 BITS
* 
*     BA = RESET ATTEMPTS 
* 
* 
/ 
/         ON AN ABORT, PROCESS GENERAL STATUS TO
/         PROVIDE BASIC INFORMATION ON ERROR
/ 
 4 FORMAT T6X-CANT DETERMINE STAT OF BC - 
 5 FORMAT T6X-BC DIED, RESET INITIATED -
 6 FORMAT T6X-NO BC RESP, CANT CONTINUE - 
17 FORMAT *OCT *OCT 
* 
*         CHECK BC HUNG 
* 
20 B5 = 0 
21 IF(SB(1).EQ.7777)GOTO 50           *POSSIBLE BC HUNG 
   EXIT 
* 
*         ATTEMPT RESET, IF GENERAL AND DETAIL STS UNDEFINED
* 
50 MSG 17 (SB(0),SB(1)) TO LINE B4
   B4=B4+1
   IF(B5.GE.2)GOTO 56                 *UNABLE TO RESTART BC 
   IF(SB(3).EQ.0)GOTO 52              *ATTEMPT RESET
   B7=4 
   GOTO 57
52 RES P1, ABT 54                     *RESERVE
54 B5 = B5 + 1
   RESET, ABT 50                      *RESET
   B7=5 
   GOSUB 60 
   RES P1, ABT 50 
   STATUS GENERAL,ABT 50              *GET STATUS 
   STATUS DETAIL,ABT 50 
55 GOTO 21
56 B7=6 
57 GOSUB 60 
   GOTO 77
* 
*         POST MESSAGE
* 
60 MSG B7 TO LINE B4
   B4=B4+1
   MSG B7 TO DISPLAY
   RETURN 
* 
*         EXIT
77 EXIT 
   END 20 
COMPILE    - T6X981 - 
   MODULE T6X982,66X(42,52),LOCK  - STATUS ANALYSIS - 
*** T6X982 - STATUS ANALYSIS
* 
 1 FORMAT DDLT=0300 TAPE UNIT NOT CONNECTED - SHOULD BE 
 2 FORMAT DDLT=0301 TAPE UNIT TEMPERATURE MDI 
 3 FORMAT DDLT=0322 TAPE UNIT LOAD FAULT
 4 FORMAT DDLT=0314 TAPE UNIT LOOP FAULT MOVING FORWARD 
 5 FORMAT DDLT=0315 TAPE UNIT LOOP FAULT MOVING REVERSE 
 6 FORMAT DDLT=0325 TAPE UNIT AIR PRESSURE MDI
 7 FORMAT DDLT=0328 TAPE UNIT NOT READY 
10 FORMAT DDLT=0334 TAPE UNIT SEVERE START ERROR ON WRITE 
11 FORMAT DDLT=0338 TAPE UNIT VELOCITY ERROR ON WRITE 
12 FORMAT DDLT=0337 TAPE UNIT ACCESS ERROR-NOT UP TO SPEED
13 FORMAT DDLT=0359 TAPE UNIT ERASE CURRENT MDI 
14 FORMAT DDLT=0500 TAPE PARITY - ERASE ERROR 
15 FORMAT DDLT=0604 TAPE PARITY - LATE DATA ON WRITE
16 FORMAT DDLT=0600 TAPE PARITY - LOST DATA ON WRITE
17 FORMAT DDLT=0381 TAPE UNIT FRAME CNT. ERR 1- CAPSTAN SLIP
20 FORMAT DDLT=0382 TAPE UNIT FRAME CNT. ERR 2- NOISE 
21 FORMAT DDLT=0380 TAPE UNIT SINGLE FRAME ERR ON NRZI WRITE
22 FORMAT DDLT=0383 TAPE UNIT FRAME CNT. ERR 3- LOST FRAMES 
23 FORMAT DDLT=0610 NOISE IN GAP
24 FORMAT DDLT=0611 NOISE FAULT 
27 FORMAT ------------------------------------------------- 
   EQUATE BIT0 TO 1, BIT1 TO 2, BIT2 TO 4, BIT3 TO 10 
   EQUATE BIT4 TO 20, BIT5 TO 40, BIT6 TO 100, BIT7 TO 200
   EQUATE BIT8 TO 400, BIT9 TO 1000, BIT10 TO 2000
   EQUATE BIT11 TO 4000, DS1 TO 3, DS2 TO 4, DS3 TO 5 
   EQUATE DS4 TO 6, DS5 TO 7
30 B7 = 1 
   IF(SB(1).AND.BIT9.NE.0) GOTO 70     *NOT CONNECTED 
   B7 = 2 
   IF(SB(DS3).AND.BIT0.NE.0) GOTO 70   *TEMP. MDI 
   B7 = 3 
   IF(SB(DS3).AND.BIT1.NE.0) GOTO 70   *LOAD FAULT
   IF(SB(DS3).AND.BIT4.EQ.0) GOTO 32   *IF NO LOOP FAULT
   B7 = 4 
   IF(SB(DS5).AND.BIT11.EQ.0)GOTO 70   *FWD LOOP FAULT
   B7 = 5 
   GOTO 70                             *REV LOOP FAULT
32 B7 = 6 
   IF(SB(DS3).AND.BIT3.NE.0) GOTO 70   *AIR PRESSURE MDI
   B7 = 7 
   IF(SB(1).AND.BIT0.EQ.0) GOTO 70     *NOT READY 
   IF(SB(DS5).AND.BIT4.EQ.0) GOTO 34   *NO WRITE REPLY
   B7 = 10
   IF(SB(DS3).AND.BIT11.NE.0)GOTO 70   *SEVERE START ERROR
   B7 = 11
   IF(SB(DS2).AND.BIT1.NE.0) GOTO 70   *VELOCITY ERROR
34 B7 = 12
   IF(SB(DS5).AND.BIT5.NE.0) GOTO 70   *ACCESS ERROR
   B7 = 13
   IF(SB(DS3).AND.BIT2.NE.0) GOTO 70   *ERASE CURRENT MDI 
   B7 = 14
   IF(SB(DS1).AND.BIT10.NE.0)GOTO 70   *ERASE ERROR 
   IF(SB(DS5).AND.BIT4.EQ.0) GOTO 40   *IF NO WRITE REPLY 
   B7 = 15
   IF(SB(DS1).AND.BIT6.NE.0) GOTO 70   *LATE DATA 
   B7 = 16
   IF(SB(DS1).AND.BIT11.NE.0)GOTO 70   *LOST DATA 
   B7 = 17
   IF(SB(DS2).AND.BIT11.NE.0)GOTO 70   *FRAME COUNT ERR 1 
   B7 = 20
   IF(SB(DS2).AND.BIT10.NE.0)GOTO 70   *FRAME COUNT ERR 2 
   IF(SB(DS5).AND.BIT7.NE.0) GOTO 36   *IF PHASE
   B7 = 21
   IF(SB(DS2).AND.BIT8.NE.0) GOTO 70   *SINGLE FRAME ERROR
36 B7 = 22
   IF(SB(DS2).AND.BIT9.NE.0) GOTO 70   *FRAME COUNT ERR 3 
40 B7 = 23
   IF(SB(DS1).AND.BIT8.NE.0) GOTO 70   *NOISE IN GAP
   B7 = 24
   IF(SB(DS1).AND.BIT7.NE.0) GOTO 70   *NOISE FAULT 
   EXIT TO 983
* 
*----------- REPORT ERROR 
* 
70 MSG B7 TO LINE B4
   B4 = B4 + 1
   IF(SB(DS1).AND.77.EQ.0) GOTO 74     *IF NO CW ERROR
   IF(SB(DS1).AND.77.GT.40) GOTO 72    *IF UPPER HALF 
   EXIT TO 984                         *PROCESS CW ERRORS 
72 EXIT TO 985                         *PROCESS CW ERRORS 
74 MSG 27 TO LINE B4
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 30 
COMPILE   - T6X982 -
   MODULE T6X983,66X(42,52),LOCK  - STATUS ANALYSIS - 
*** T6X983 - STATUS ANALYSIS
* 
 1 FORMAT DDLT=0503 TAPE PARITY - 4 FRAME SKEW IN PHASE 
 2 FORMAT DDLT=0520 TAPE PARITY - 2/4 FRAME SKEW IN PHASE 
 3 FORMAT DDLT=0504 TAPE PARITY - SINGLE FRAME SKEW IN PHASE
 4 FORMAT DDLT=0521 TAPE PARITY - POSTAMBLE ERROR 
 5 FORMAT DDLT=0612 LOST DATA ON READ 
 6 FORMAT DDLT=*DEC MULTI-TRACK ERROR - NO TRACK CORRECTED
 7 FORMAT DDLT=*DEC MULTI-TRACK ERROR - LAST DIGIT= DATA BIT
10 FORMAT DDLT=*DEC SINGLE TRACK ERROR-NO TRACK CORRECTED 
11 FORMAT DDLT=*DEC SINGLE TRACK ERROR- LAST DIGIT= DATA BIT
12 FORMAT DDLT=*DEC CRC DETECTED ERROR-NO TRACK CORRECTED 
13 FORMAT DDLT=*DEC CRC DETECTED ERROR- LAST DIGIT= DATA BIT
14 FORMAT DDLT=0505 TAPE PARITY - FALSE END OF OP 
15 FORMAT DDLT=0522 TAPE PARITY - LRC ERROR 
16 FORMAT DDLT=0509 TAPE PARITY - CRC ERROR 
17 FORMAT DDLT=0507 TAPE PARITY - VERTICAL PARITY ERROR 
20 FORMAT DDLT=0508 TAPE PARITY - LONGITUDINAL PARITY ERROR 
21 FORMAT DDLT=0512 UNEXPAINED TAPE PARITY ERROR
27 FORMAT --------------------------------------------------
   EQUATE BIT0 TO 1, BIT1 TO 2, BIT2 TO 4, BIT3 TO 10 
   EQUATE BIT4 TO 20, BIT5 TO 40, BIT6 TO 100, BIT7 TO 200
   EQUATE BIT8 TO 400, BIT9 TO 1000, BIT10 TO 2000
   EQUATE BIT11 TO 4000, DS1 TO 3, DS2 TO 4, DS3 TO 5 
   EQUATE DS4 TO 6, DS5 TO 7
* 
30 IF(SB(DS5).AND.BIT7.EQ.0) GOTO 32   *IF NRZI 
   B7 = 1 
   IF(SB(DS3).AND.BIT8.NE.0) GOTO 70   *IF 4 FRAME SKEW 
   B7 = 2 
   IF(SB(DS2).AND.BIT2.NE.0) GOTO 70   *IF SKEW ERROR 
   B7 = 3 
   IF(SB(DS3).AND.BIT6.NE.0) GOTO 70   *SINGLE FRAME SKEW 
   B7 = 4 
   IF(SB(DS2).AND.BIT0.NE.0) GOTO 70   *IF POSTAMBLE ERROR
32 B7 = 5 
   IF(SB(DS1).AND.BIT11.NE.0)GOTO 70   *IF LOST DATA
   IF(SB(1).AND.BIT6.EQ.0) GOTO 62     *IF 7TK UNIT 
* 
*--------- SET UP B5 TO INDICATE MODE OF OPERATION -----
* 
   B5 = 2100D 
   IF(SB(DS5).AND.BIT7.EQ.0) GOTO 34   *IF NOT PHASE
   B5 = B5 + 100D                      *INDICATE PHASE
34 IF(SB(DS5).AND.BIT4.NE.0) GOTO 36   *IF WRITE
   B5 = B5 + 400D                      *INDICATE READ 
36 B6 = 1                              *SET TRACK MASK
* 
*---------- CHECK FOR MULTI-TRACK ERRORS -----
* 
   IF(SB(DS4).AND.BIT9.EQ.0) GOTO 42   *IF NOT MULTITRACK 
   IF(SB(DS4).AND.777.NE.0) GOTO 40    *IF BAD TRACKS 
   MSG 6(B5) TO LINE B4 
   GOTO 71
40 IF(SB(DS4).AND.B6.EQ.0) GOTO 41     *IF NOT IN ERROR 
   MSG 7(B5) TO LINE B4 
   B4 = B4 + 1
41 B5 = B5 + 1                         *BUMP TRACK IN ERROR 
   GOTO 40 WHILE (B6+B6.NE.1000)       *DO ALL TRACKS 
   GOTO 72
* 
*---------- CHECK SINGLE TRACK ERRORS ----- 
* 
42 B5 = B5 - 1000D                     *INDICATE SINGLE 
   IF(SB(DS4).AND.BIT11.EQ.0) GOTO 46   *IF NOT SINGLE
   IF(SB(DS4).AND.777.NE.0) GOTO 44    *IF TRACKS IN ERROR
   MSG 10 (B5) TO LINE B4 
   GOTO 71
44 IF(SB(DS4).AND.B6.EQ.0) GOTO 45     *IF NOT IN ERROR 
   MSG 11 (B5) TO LINE B4 
   B4 = B4 + 1
45 B5 = B5 + 1                         *BUMP TRACK IN ERROR 
   GOTO 44 WHILE (B6+B6.NE.1000)       *DO ALL TRACKS 
   GOTO 72
* 
*---------- CHECK CRC ERRORS ------ 
* 
46 B5 = B5 + 2000D                     *INDICATE CRC
   IF(SB(DS4).AND.BIT10.EQ.0) GOTO 60  *IF NOT CRC
   IF(SB(DS4).AND.777.NE.0) GOTO 47    *IF TRACKS IN ERROR
   MSG 12 (B5) TO LINE B4 
   GOTO 71
47 IF(SB(DS4).AND.B6.EQ.0) GOTO 50     *IF NOT IN ERROR 
   MSG 13 (B5) TO LINE B4 
   B4 = B4 + 1
50 B5 = B5 + 1                         *BUMP TRACK IN ERROR 
   GOTO 47 WHILE (B6+B6.NE.1000)       *DO ALL TRACKS 
   GOTO 72
* 
*--------- CHECK REMAINING ERRORS 
* 
60 B7 = 14
   IF(SB(DS2).AND.BIT3.NE.0) GOTO 70   *FALSE EOP 
   B7 = 15
   IF(SB(DS2).AND.BIT7.NE.0) GOTO 70   *LRC PARITY ERROR
   B7 = 16
   IF(SB(DS2).AND.BIT4.NE.0) GOTO 70   *CRC ERROR 
62 B7 = 17
   IF(SB(DS2).AND.BIT6.NE.0) GOTO 70   *VERTICAL P.E. 
   B7 = 20
   IF(SB(DS2).AND.BIT5.NE.0) GOTO 70   *LONG P.E. 
   B7 = 21
   IF(SB(DS1).AND.BIT9.NE.0) GOTO 70   *PARITY ERROR
   GOTO 72
* 
*--------- REPORT ERROR ----
* 
70 MSG B7 TO LINE B4
71 B4 = B4 + 1
72 IF(SB(DS1).AND.77.EQ.0) GOTO 74     *IF NO CW ERROR
   IF(SB(DS1).AND.77.GT.40) GOTO 73    *IF UPPER HALF 
   EXIT TO 984                         *PROCESS CW ERRORS 
73 EXIT TO 985                         *PROCESS CW ERRORS 
74 MSG 27 TO LINE B4
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 30 
COMPILE   - T6X983 -
   MODULE T6X984,66X(42,52),LOCK
*** T6X984 - STATUS ANALYSIS
* 
 1 FORMAT CW ERROR 4001 CONNECT REJECT, NO UNIT DIALED
 2 FORMAT CW ERROR 4002 CON. REJ, UNIT RESERVED OTHER ACCESS
 4 FORMAT CW ERROR 4004 FUNCTION REJECT, UNIT NOT READY 
 5 FORMAT CW ERROR 4005 UNIT NOT READY DURING LAST OP.
 6 FORMAT CW ERROR 4006 WRITE ATTEMPTED WITHOUT WRITE RING
10 FORMAT CW ERROR 4010 25 FEET OF BLANK TAPE READ
11 FORMAT CW ERROR 4011 STOP MOTION FUNCTION EXECUTED.
12 FORMAT CW ERROR 4012 UNABLE TO WRITE FROM BOT, BAD TAPE
14 FORMAT CW ERROR 4014 SHORT READ-ACCESS 
15 FORMAT CW ERROR 4015 PERMANENT ERASE ERROR FOR 30 INCHES 
20 FORMAT CW ERROR 4020 INCORRECT CONTROLWARE LOADED
21 FORMAT CW ERROR 4021 UNABLE TO LOAD CONTROLWARE FROM 7TK 
22 FORMAT CW ERROR 4022 TOO FEW WORDS ON CONTROLWARE LOAD 
23 FORMAT CW ERROR 4023 PARITY ERROR IN CONTROLWARE BLOCK 
24 FORMAT CW ERROR 4024 TAPE UNIT FAILED TO REWIND
30 FORMAT CW ERROR 4030 BACKWARD MOTION ATTEMPTED AT BOT
32 FORMAT CW ERROR 4032 MOTION ATTEMPTED ON REWINDING UNIT
33 FORMAT CW ERROR 4033 ATTEMPTED READ FWD AFTER A WRITE
34 FORMAT CW ERROR 4034 ATTEMPTED REV. RECOVERY AFTER BKSP
35 FORMAT CW ERROR 4035 ILLEGAL WRITE RECOVERY AT 200 CPI 
36 FORMAT CW ERROR 4036 WRITE ATTEMPTED AT 200 CPI
40 FORMAT CW ERROR 4040 NO WRITE PERMIT STATUS IN 34 MSEC 
41 FORMAT CW ERROR *OCT UNRECOGNIZED CW ERROR CODE
42 FORMAT --------------------------------------------------
50 B5 = SB(3).AND.77          *CW ERROR CODE
   IF(B5.EQ.3) GOTO 52        *IF ILLEGAL CODE
   IF(B5.EQ.7) GOTO 52        *IF ILLEGAL CODE
   IF(B5.EQ.13) GOTO 52       *IF ILLEGAL CODE
   IF(B5.EQ.16) GOTO 52       *IF ILLEGAL CODE
   IF(B5.EQ.17) GOTO 52       *IF ILLEGAL CODE
51 IF(B5.EQ.25) GOTO 52       *IF ILLEGAL CODE
   IF(B5.EQ.26) GOTO 52       *IF ILLEGAL CODE
   IF(B5.EQ.27) GOTO 52       *IF ILLEGAL CODE
   IF(B5.EQ.31) GOTO 52       *IF ILLEGAL CODE
   IF(B5.EQ.37) GOTO 52       *IF ILLEGAL CODE
   MSG B5 TO LINE B4
   GOTO 54
52 B5 = B5 + 4000 
   MSG 41 (B5) TO LINE B4 
54 B4 = B4 + 1
   MSG 42 TO LINE B4
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 50 
COMPILE   - T6X984 -
   MODULE T6X985,66X(42,52),LOCK
*** T6X985 - STATUS ANALYSIS
* 
 1 FORMAT CW ERROR 4041 FAILED TO REACH VELOCITY IN 34 MSEC 
 2 FORMAT CW ERROR 4042 UNIT FAILED TO MOVE TAPE
 3 FORMAT CW ERROR 4043 ERASE/WRITE CURRENT FAILED ON WRITE 
 4 FORMAT CW ERROR 4044 UNIT FAILED TO STOP IN 34 MSEC
 5 FORMAT CW ERROR 4045 STILL AT BOT AFTER 34 MSEC OF MOTION
 6 FORMAT CW ERROR 4046 BLOCK WRITTEN BUT NO FRAMES READ
 7 FORMAT CW ERROR 4047 MISCELLANEOUS UNIT ERROR
10 FORMAT CW ERROR 4050 UNRECOGNIZABLE FUNCTION CODE
11 FORMAT CW ERROR 4051 FUNCTION REJ-UNIT ON HOLD 
12 FORMAT CW ERROR 4052 FUNCTION PARAMS. NOT SENT IN 1 MSEC 
13 FORMAT CW ERROR 4053 ALL FUNCTION PARAMETERS NOT SENT
14 FORMAT CW ERROR 4054 CHANNEL PARITY ERROR ON DATA
15 FORMAT CW ERROR 4055 CHANNEL PARITY ERROR ON FUNCTION
16 FORMAT CW ERROR 4056 ILLEGAL FORMAT PARAMETERS 
17 FORMAT CW ERROR 4057 ILLEGAL PARAMETERS ON FUNCTION
20 FORMAT CW ERROR 4060 TIMING PROBLEM ON REPEAT READ FUNCT.
21 FORMAT CW ERROR 4061 NO WRITE DATA WITHIN 34 MSEC
22 FORMAT CW ERROR 4062 PP NOT READY TO READ IN 1.4 MSEC
26 FORMAT CW ERROR 4066 FUNCTION REJ-UNIT NOT CONNECTED 
30 FORMAT CW ERROR *OCT UNRECOGNIZED CW ERROR CODE
31 FORMAT --------------------------------------------------
50 B5 = SB(3).AND.77
   IF(B5.EQ.63) GOTO 52               *IF ILLEGAL CODE
   IF(B5.EQ.64) GOTO 52               *IF ILLEGAL CODE
   IF(B5.EQ.65) GOTO 52               *IF ILLEGAL CODE
   IF(B5.GT.66) GOTO 52               *IF ILLEGAL CODE
   B5 = B5.AND.37 
   MSG B5 TO LINE B4
   GOTO 54
52 B5 = B5 + 4000 
   MSG 30 (B5) TO LINE B4 
54 B4 = B4 + 1
   MSG 31 TO LINE B4
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 50 
COMPILE   - T6X985 -
   MODULE T6X98A,66X(42,52),LOCK  - ERROR CODE PROCESSING - 
*** TEXT FOR ERROR CODES  105 - 205 
* 
**
* 
*   DESCRIPTION - CALLED BY A PRIMARY MODULE TO OUTPUT
*                THE TEXT FOR THE ERROR CODE CONDITION
*                DETECTED.
* 
*   EXIT - TO CALLING MODULE
*            OR 
*        - T6X98B THUR T6X98F 
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTERS USAGE 
* 
*     B4 = DISPLAY LINE COUNTER 
* 
*     B6 = START OF FORMAT STATEMENT NUMBERS
*           FOR ERROR CODE (EC) 
* 
*     B7 = NUMBER OF FORMAT STATEMENTS
*           FOR -EC- TO BE PROCESSED
* 
* 
/ 
 1 FORMAT EC 105-DATA COMPARE ERROR.THE FIRST 500B WORDS (OR
 2 FORMAT THE RECORD LENGTH IN -P2-), THAT WERE TRANSFERRED 
 3 FORMAT DO NOT COMPARE.(SEE NOTE ON CONVERSION, -T6X98A-) 
/ 
/                           --- NOTE ---
/ 
/   IF RUNNING CONVERSION MODE, ERRORS 105, 211, 212 AND 213
/   SHOULD BE EXAMINED VERY CLOSELY TO ENSURE THE ERROR IS A
/   TRUE ERROR AND NOT THE RESULT OF A CHARACTER BEING WRIT-
/   TEN AND CONVERTED TO A DIFFERENT CHARACTER BY  THE HARD-
/   WARE (CONTROLWARE) WHEN  READ BACK.  CERTAIN  CHARACTERS
/   ARE CHANGED ON THE READ BECAUSE THE CHARACTER WRITTEN IS
/   ILLEGAL WITHIN THE CHARACTER SUBSET BEING USED. 
/ 
/     EXAMPLE.. 
/      WRITE   READ   T6X PARAMETERS
/       00      33    7 TRACK AND CODE TRANSLATION TABLE 3
/       12      00    7 TRACK AND CODE TRANSLATION TABLE 7
/ 
 5 FORMAT EC 122-NO FM/TM STATUS IN GENERAL STATUS,AT END OF
 6 FORMAT OPERATION, AFTER A WRITE FM/TM. 
/ 
 7 FORMAT EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL
10 FORMAT STATUS DURING A -MAINTENANCE WRITE- OPERATION.
/ 
11 FORMAT EC 201- DENSITY IN DETAIL STATUS WORD 5 DOES
12 FORMAT NOT AGREE WITH SELECTED DENSITY.
/ 
13 FORMAT EC 202-A STATUS ERROR OCCURRED ON A READ REVERSE. 
/ 
14 FORMAT EC 203- ALERT BIT IN GENERAL STATUS WAS SET DURING
15 FORMAT A READ OPERATION. THE LAST MAJOR FUNCTION ISSUED
16 FORMAT IS LISTED.
/ 
21 FORMAT EC 204-DETAIL STATUS WORD 3 HAS ONE OF THE FOLLOW-
22 FORMAT ING SET- A. SEVERE START ERROR ..... 4XXX 
23 FORMAT          B. SINGLE FRAME SKEW ...... X1XX 
24 FORMAT          C. ILLEGAL CHARACTER SET .. XX4X 
/ 
25 FORMAT EC 205-POLYNOMIAL -ON THE FLY- ERROR CORRECTION.
/ 
27 FORMAT --T6X98A .... UNDEFINED ERROR CODE .... 
/ 
30 IF(EC.LE.205)GOTO 37      *0 - 205 
   IF(EC.GT.217)GOTO 31 
   EXIT TO 98B               *206 - 216 
31 IF(EC.GT.232)GOTO 32 
   EXIT TO 98C               *217 - 231 
32 IF(EC.GT.243)GOTO 33 
   EXIT TO 98D               *232 - 242 
33 IF(EC.GT.256)GOTO 34 
   EXIT TO 98E               *243 - 255 
34 IF(EC.GT.275)GOTO 35      *ILLEGAL ERROR CODE
   EXIT TO 98F               *256 - 274 
/ 
35 B6=27                     *ILLEGAL ERROR CODE
   B7=1 
   GOTO 60
/ 
37 IF(EC.EQ.105)GOTO 40 
   IF(EC.EQ.122)GOTO 42 
   IF(EC.EQ.200)GOTO 44 
   IF(EC.EQ.201)GOTO 45 
   IF(EC.EQ.202)GOTO 46 
   IF(EC.EQ.203)GOTO 50 
   IF(EC.EQ.204)GOTO 52 
   IF(EC.EQ.205)GOTO 54 
   GOTO 35
/                           *ERROR 105
40 B6 = 1                   *START OF MESSAGE - EC 105 -
   B7 = 3                   *NO. OF FORMAT STATEMENTS 
   GOTO 60
/                           *ERROR 122
42 B6 = 5 
   B7 = 2 
   GOTO 60
/                           *ERROR 200
44 B6 = 7 
   B7 = 2 
   GOTO 60
/                           *ERROR 201
45 B6 = 11
   B7 = 2 
   GOTO 60
/                           *ERROR 202
46 B6 = 13
   B7 = 1 
   GOTO 60
/                           *ERROR 203
50 B6 = 14
   B7 = 3 
   GOTO 60
/                           *ERROR 204
52 B6 = 21
   B7 = 4 
   GOTO 60
/                           *ERROR 205
54 B6 = 25
   B7 = 1 
/ 
60 MSG B6 TO LINE B4
   B4 = B4 + 1
   B6 = B6 + 1                        *INCREMENT MSG NO.
   GOTO 60 WHILE (B7-1.NE.0)          *MSG NOT COMPLETE 
   B4=B4+1
   EXIT 
   END 30 
COMPILE   - T6X98A -
   MODULE T6X98B,66X(42,52),LOCK  - ERROR CODE PROCESSING - 
*** TEXT FOR ERROR CODES  206 - 217 
* 
**
*   DESCRIPTION - SEE T6X98A
* 
* 
*   EXIT - TO CALLING MODULE
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTERS USAGE 
* 
*     B4 = DISPLAY LINE COUNTER 
* 
*     B6 = START OF FORMAT STATEMENT NUMBERS
*           FOR ERROR CODE (EC) 
* 
*     B7 = NUMBER OF FORMAT STATEMENTS
*           FOR -EC- TO BE PROCESSED
* 
* 
/ 
/ 
 1 FORMAT EC 206-MAINTENANCE -ON-THE-FLY- PHASE ENCODED 
 2 FORMAT ERROR CORRECTION HAS OCCURRED.
/ 
 3 FORMAT EC 207-A FM/TM WAS DETECTED DURING A READ, P4 = 
 4 FORMAT 4XXX AND FM/TM NOT EXPECTED.
/ 
11 FORMAT EC 211-INCORRECT FILE DETECTED DURING A RANDOM
12 FORMAT READ. (SEE NOTE IN -T6X98B- DOCUMENTATION)
/ 
13 FORMAT EC 212-INCORRECT RECORD HAS BEEN DETECTED DURING A
14 FORMAT RANDOM READ. (SEE NOTE IN -T6X98B-) 
/ 
15 FORMAT EC 213-INCORRECT RECORD LENGTH HAS BEEN DETECTED
16 FORMAT DURING A RANDOM READ. -SEE NOTE IN T6X98B - 
/ 
/                           --- NOTE ---
/ 
/                FOR ERRORS 211, 212 AND 213 SEE NOTE UNDER 
/                ERROR 105 REGARDING CONVERSION MODE. 
/ 
/ 
20 FORMAT EC 214-A STATUS ERROR HAS OCCURRED ON A READ
21 FORMAT REVERSE FOLLOWING A -CONTROLLED BACKSPACE,
22 FORMAT FIND GAP- OPERATION.
/ 
23 FORMAT EC 215-THE WRITE AND READ POLYNOMIAL HAVE FAILED
24 FORMAT TO COMPARE DURING THE -CANNED POLYNOMIAL TEST-. 
/ 
25 FORMAT EC 217-ALERT IS SET AFTER THE OUTPUT OF THE PARAM-
26 FORMAT ETER WORDS. NOTE THAT THIS ERROR OCCURS ONLY WHEN 
27 FORMAT FUNCTIONS REQUIRING THE PARAMETER WORDS HAVE BEEN 
30 FORMAT ISSUED. 
/ 
31 FORMAT --T6X98B .... UNDEFINED ERROR CODE .... 
/ 
32 IF(EC.EQ.206) GOTO 34
   IF(EC.EQ.207) GOTO 36
   IF(EC.EQ.211) GOTO 42
   IF(EC.EQ.212) GOTO 44
   IF(EC.EQ.213) GOTO 46
   IF(EC.EQ.214) GOTO 50
   IF(EC.EQ.215) GOTO 52
   IF(EC.EQ.217) GOTO 54
/ 
   B6=31                    *ILLEGAL ERROR CODE 
   B7=1 
   GOTO 60
/                           *ERROR 206
34 B6 = 1                   *START OF MESSAGE - EC 206 -
   B7 = 2                   *NO. OF FORMAT STATEMENTS 
   GOTO 60
/                           *ERROR 207
36 B6 = 3 
   B7 = 2 
   GOTO 60
/                           *ERROR 211
42 B6 = 11
   B7 = 2 
   GOTO 60
/                           *ERROR 212
44 B6 = 13
   B7 = 2 
   GOTO 60
/                           *ERROR 213
46 B6 = 15
   B7 = 2 
   GOTO 60
/                           *ERROR 214
50 B6 = 20
   B7 = 3 
   GOTO 60
/                           *ERROR 215
52 B6 = 23
   B7 = 2 
   GOTO 60
/                           *ERROR 217
54 B6 = 25
   B7 = 4 
/ 
60 MSG B6 TO LINE B4
   B4 = B4 + 1
   B6 = B6 + 1                        *INCREMENT MSG NO.
   GOTO 60 WHILE (B7-1.NE.0)          *MSG NOT COMPLETE 
   B4=B4+1
   EXIT 
   END 32 
COMPILE   - T6X98B -
   MODULE T6X98C,66X(42,52),LOCK  - ERROR CODE PROCESSING - 
*** TEXT FOR ERROR CODES  220 - 232 
* 
**
*   DESCRIPTION - SEE T6X98A
* 
* 
*   EXIT - TO CALLING MODULE
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTERS USAGE 
* 
*     B4 = DISPLAY LINE COUNTER 
* 
*     B6 = START OF FORMAT STATEMENT NUMBERS
*           FOR ERROR CODE (EC) 
* 
*     B7 = NUMBER OF FORMAT STATEMENTS
*           FOR -EC- TO BE PROCESSED
* 
* 
/ 
/ 
 1 FORMAT EC 220-A STATUS ERROR OCCURRED ON THE READ BACK-
 2 FORMAT WARDS FOLLOWING A CONTROLLED BACKSPACE OPERATION. 
/ 
 3 FORMAT EC 221-AN INCORRECT RECORD HAS BEEN DETECTED
 4 FORMAT FOLLOWING A CONTROLLED BACKSPACE. 
/ 
 6 FORMAT EC 222-IMPROPER RECORD LENGTH WAS DETECTED ON A 
 7 FORMAT CONTROLLED BACKSPACE. SEE -WORD COUNT- AND
10 FORMAT -WORDS TRANSMITTED-.
/ 
11 FORMAT EC 223-THE ALERT BIT WAS SET IN GENERAL STATUS
12 FORMAT AFTER A LONG BACKSPACE OPERATION. 
/ 
13 FORMAT EC 224-A STATUS ERROR OCCURRED ON THE FIRST -FWD- 
14 FORMAT READ OPERATION FOLLOWING A LONG BACKSPACE.
/ 
15 FORMAT EC 225-AN INCORRECT RECORD HAS BEEN DETECTED
16 FORMAT FOLLOWING A LONG BACKSPACE. 
/ 
20 FORMAT EC 226-ERROR HAS OCCURRED DURING A READ FORWARD 
21 FORMAT OPERATION IN THE -TAPE PATH DAMAGE- TEST
/ 
22 FORMAT EC 227-ERROR HAS OCCURRED DURING A READ REVERSE 
23 FORMAT OPERATION IN THE -TAPE PATH DAMAGE- TEST
/ 
24 FORMAT EC 231-DATA FRAGMENT ERROR READING ERASED TAPE
/ 
25 FORMAT EC 232-THE RECORD COUNT IS IN ERROR DURING A -READ
26 FORMAT FORWARD- IN THE POLYNOMIAL SUBTEST. 
/ 
27 FORMAT --T6X98C .... UNDEFINED ERROR CODE .... 
/ 
30 IF(EC.EQ.220) GOTO 34
   IF(EC.EQ.221) GOTO 36
   IF(EC.EQ.222) GOTO 40
   IF(EC.EQ.223) GOTO 42
   IF(EC.EQ.224) GOTO 44
   IF(EC.EQ.225) GOTO 46
   IF(EC.EQ.226) GOTO 50
   IF(EC.EQ.227) GOTO 52
   IF(EC.EQ.231) GOTO 53
   IF(EC.EQ.232) GOTO 54
/ 
   B7=27                    *ILLEGAL ERROR CODE 
   B6=1 
   GOTO 60
/                           *ERROR 220
34 B6 = 1                   *START OF MESSAGE - EC 220 -
   B7 = 2                   *NO. OF FORMAT STATEMENTS 
   GOTO 60
/                           *ERROR 221
36 B6 = 3 
   B7 = 2 
   GOTO 60
/                           *ERROR 222
40 B6 = 6 
   B7 = 3 
   GOTO 60
/                           *ERROR 223
42 B6 = 11
   B7 = 2 
   GOTO 60
/                           *ERROR 224
44 B6 = 13
   B7 = 2 
   GOTO 60
/                           *ERROR 225
46 B6 = 15
   B7 = 2 
   GOTO 60
/                           *ERROR 226
50 B6 = 20
   B7 = 2 
   GOTO 60
/                           *ERROR 227
52 B6 = 22
   B7 = 2 
   GOTO 60
/                           *ERROR 231
53 B6 = 24
   B7 = 1 
   GOTO 60
/                           *ERROR 232
54 B6 = 25
   B7 = 2 
/ 
60 MSG B6 TO LINE B4
   B4 = B4 + 1
   B6 = B6 + 1                        *INCREMENT MSG NO.
   GOTO 60 WHILE (B7 - 1.NE.0)        *MSG NOT COMPLETE 
   B4=B4+1
   EXIT 
   END 30 
COMPILE   - T6X98C -
   MODULE T6X98D,66X(42,52),LOCK  - ERROR CODE PROCESSING - 
*** TEXT FOR ERROR CODES  233 - 243 
* 
**
*   DESCRIPTION - SEE T6X98A
* 
* 
*   EXIT - TO CALLING MODULE
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTERS USAGE 
* 
*     B4 = DISPLAY LINE COUNTER 
* 
*     B6 = START OF FORMAT STATEMENT NUMBERS
*           FOR ERROR CODE (EC) 
* 
*     B7 = NUMBER OF FORMAT STATEMENTS
*           FOR -EC- TO BE PROCESSED
* 
* 
/ 
/ 
/ 
 1 FORMAT EC 233-THE RECORD LENGTH IS IN ERROR DURING A 
 2 FORMAT -READ FORWARD- IN THE POLYNOMIAL SUBTEST. 
/ 
 3 FORMAT EC 234-THE WRITE POLYNOMIAL AND THE READ POLYNOM- 
 4 FORMAT NOMIAL HAVE FAILED TO COMPARE DURING THE
 5 FORMAT -POLYNOMIAL TEST-.
/ 
 6 FORMAT EC 235-AN ALERT WAS DETECTED IN GENERAL STATUS
 7 FORMAT FOLLOWING THE READ IN REVERSE AFTER A WRITE 
10 FORMAT REPOSITION. 
/ 
11 FORMAT EC 236-AN INCORRECT RECORD NUMBER WAS DETECTED ON 
12 FORMAT RECORD READ IN REVERSE AFTER A WRITE REPOSITION.
/ 
14 FORMAT EC 237-AN INCORRECT RECORD LENGTH WAS DETECTED ON 
15 FORMAT RECORD READ IN REVERSE AFTER A WRITE REPOSITION.
/ 
17 FORMAT EC 240-A STATUS ERROR HAS OCCURRED DURING THE READ
20 FORMAT REVERSE OF RECORD 4 IN THE -POSITION TEST-. 
/ 
21 FORMAT EC 241-A STATUS ERROR HAS OCCURRED DURING THE READ
22 FORMAT REVERSE OF THE ERASED AREA AND RECORD 1 IN THE
23 FORMAT -POSITION TEST-.
/ 
24 FORMAT EC 242-A STATUS ERROR HAS OCCURRED DURING THE READ
25 FORMAT FORWARD OF RECORD 1 IN THE -POSITION TEST-. 
/ 
26 FORMAT EC 243-B1 (CURRENT RECORD) AND 1111 HAVE FAILED TO
27 FORMAT COMPARE INDICATING THAT RECORD 1 WAS NOT
30 FORMAT DETECTED IN THE -POSITION TEST-.
/ 
31 FORMAT --T6X98D .... UNDEFINED ERROR CODE .... 
/ 
33 IF(EC.EQ.233) GOTO 34
   IF(EC.EQ.234) GOTO 36
   IF(EC.EQ.235) GOTO 40
   IF(EC.EQ.236) GOTO 42
   IF(EC.EQ.237) GOTO 44
   IF(EC.EQ.240) GOTO 46
   IF(EC.EQ.241) GOTO 50
   IF(EC.EQ.242) GOTO 52
   IF(EC.EQ.243) GOTO 54
/                           *ILLEGAL ERROR
   B6=31
   B7=1 
   GOTO 60
/                           *ERROR 233
34 B6 = 1                   *START OF MESSAGE - EC 232 -
   B7 = 2                   *NO. OF FORMAT STATEMENTS 
   GOTO 60
/                           *ERROR 234
36 B6 = 3 
   B7 = 3 
   GOTO 60
/                           *ERROR 235
40 B6 = 6 
   B7 = 3 
   GOTO 60
/                           *ERROR 236
42 B6 = 11
   B7 = 2 
   GOTO 60
/                           *ERROR 237
44 B6 = 14
   B7 = 2 
   GOTO 60
/                           *ERROR 240
46 B6 = 17
   B7 = 2 
   GOTO 60
/                           *ERROR 241
50 B6 = 21
   B7 = 3 
   GOTO 60
/                           *ERROR 242
52 B6 = 24
   B7 = 2 
   GOTO 60
/                           *ERROR 243
54 B6 = 26
   B7 = 3 
/ 
60 MSG B6 TO LINE B4
   B4 = B4 + 1
   B6 = B6 + 1                        *INCREMENT MSG NO.
   GOTO 60 WHILE (B7-1.NE.0)          *MSG NOT COMPLETE 
   B4=B4+1
   EXIT 
   END 33 
COMPILE   - T6X98D -
   MODULE T6X98E,66X(42,52),LOCK  - ERROR CODE PROCESSING - 
*** TEXT FOR ERROR CODES  244 - 256 
* 
**
*   DESCRIPTION - SEE T6X98A
* 
* 
*   EXIT - TO CALLING MODULE
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTERS USAGE 
* 
*     B4 = DISPLAY LINE COUNTER 
* 
*     B6 = START OF FORMAT STATEMENT NUMBERS
*           FOR ERROR CODE (EC) 
* 
*     B7 = NUMBER OF FORMAT STATEMENTS
*           FOR -EC- TO BE PROCESSED
* 
* 
/ 
/ 
 1 FORMAT EC 244- RECORD LENGTH AND P2 FAILED TO COMPARE
 2 FORMAT DURING THE -POSITION TEST.
/ 
 3 FORMAT EC 245-AN ALERT STATUS OCCURRED AFTER AN ERASE. 
/ 
 4 FORMAT EC 246-A STATUS ERROR HAS OCCURRED DURING THE READ
 5 FORMAT FORWARD OF THE ERASED AREA AND RECORD 4 IN
 6 FORMAT THE -POSITION TEST-.
/ 
 7 FORMAT EC 247-B1 AND 4444 HAVE FAILED TO COMPARE INDICAT-
10 FORMAT ING THAT RECORD 4 WAS NOT DETECTED IN THE 
11 FORMAT -POSITION TEST-.
/ 
12 FORMAT EC 250-P2(RECORD 4 LENGTH) AND -WORDS TRANSMITTED-
13 FORMAT FAILED TO COMPARE DURING THE -POSITION TEST-. 
/ 
14 FORMAT EC 252-FILE MARK STATUS IS MISSING AT END-OF-OPER-
15 FORMAT ATION DURING READ FILE MARK TEST. 
/ 
16 FORMAT EC 253-A STATUS ERROR OCCURRED ON A BACKSPACE.
/ 
17 FORMAT EC 254-THE ALERT BIT WAS SET IN GENERAL STATUS
20 FORMAT FOLLOWING THE FIRST READ REVERSE AFTER A BACKSPACE
/ 
21 FORMAT EC 255-AN INCORRECT RECORD LENGTH WAS DETECTED
22 FORMAT DURING A BACKSPACE OPERATION. 
/ 
23 FORMAT EC 256-AN INCORRECT RECORD HAS BEEN DETECTED
24 FORMAT FOLLOWING A BACKSPACE OPERATION.
/ 
26 FORMAT --T6X98E .... UNDEFINED ERROR CODE .... 
/ 
32 IF(EC.EQ.244) GOTO 34
   IF(EC.EQ.245) GOTO 36
   IF(EC.EQ.246) GOTO 40
   IF(EC.EQ.247) GOTO 42
   IF(EC.EQ.250) GOTO 44
   IF(EC.EQ.252) GOTO 46
   IF(EC.EQ.253) GOTO 50
   IF(EC.EQ.254) GOTO 52
   IF(EC.EQ.255) GOTO 54
   IF(EC.EQ.256) GOTO 55
/ 
   B6=26                    *ILLEGAL ERROR CODE 
   B7=1 
   GOTO 60
/                           *ERROR 244
34 B6 = 1                   *START OF MESSAGE - EC 244 -
   B7 = 2                   *NO. OF FORMAT STATEMENTS 
   GOTO 60
/                           *ERROR 245
36 B6 = 3 
   B7 = 1 
   GOTO 60
/                           *ERROR 246
40 B6 = 4 
   B7 = 3 
   GOTO 60
/                           *ERROR 247
42 B6 = 7 
   B7 = 3 
   GOTO 60
/                           *ERROR 250
44 B6 = 12
   B7 = 2 
   GOTO 60
/                           *ERROR 252
46 B6 = 14
   B7 = 2 
   GOTO 60
/                           *ERROR 253
50 B6 = 16
   B7 = 1 
   GOTO 60
/                           *ERROR 254
52 B6 = 17
   B7 = 2 
   GOTO 60
/                           *ERROR 255
54 B6 = 21
   B7 = 2 
   GOTO 60
/                           *ERROR 256
55 B6 = 23
   B7 = 2 
/ 
60 MSG B6 TO LINE B4
   B4 = B4 + 1
   B6 = B6 + 1                        *INCREMENT MSG NO.
   GOTO 60 WHILE (B7-1.NE.0)          *MSG NOT COMPLETE 
   B4=B4+1
   EXIT 
   END 32 
COMPILE   - T6X98E -
   MODULE T6X98F,66X(42,52),LOCK  - ERROR CODE PROCESSING - 
*** TEXT FOR ERROR CODES  263 - 267 
* 
**
*   DESCRIPTION - SEE T6X98A
* 
* 
*   EXIT - TO CALLING MODULE
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTERS USAGE 
* 
*     B4 = DISPLAY LINE COUNTER 
* 
*     B6 = START OF FORMAT STATEMENT NUMBERS
*           FOR ERROR CODE (EC) 
* 
*     B7 = NUMBER OF FORMAT STATEMENTS
*           FOR -EC- TO BE PROCESSED
* 
* 
/ 
/ 
 1 FORMAT EC 263-THE ALERT BIT WAS SET IN GENERAL STATUS
 2 FORMAT FOLLOWING THE READ REVERSE OF RECORD 100 IN 
 3 FORMAT THE -CREEP- TEST. 
/ 
 4 FORMAT EC 264-RECORD 100 LENGTH DOES NOT EQUAL 5000B.
/ 
 5 FORMAT EC 267-THE NUMBER OF RECORDS WRITTEN AND THE NUM- 
 6 FORMAT BER OF RECORDS READ IN REVERSE DO NOT COMPARE.
/ 
27 FORMAT --T6X98F ..... ERROR CODE UNDEFINED ....
/ 
30 IF(EC.EQ.263) GOTO 34
   IF(EC.EQ.264) GOTO 36
   IF(EC.EQ.267) GOTO 40
/ 
   B6=27                    *ILLEGAL ERROR CODE 
   B7=1 
   GOTO 60
/                           *ERROR 263
34 B6 = 1                   *START OF MESSAGE - EC 263 -
   B7 = 3                   *NO. OF FORMAT STATEMENTS 
   GOTO 60
/                           *ERROR 264
36 B6 = 4 
   B7 = 1 
   GOTO 60
/                           *ERROR 267
40 B6 = 5 
   B7 = 2 
/ 
60 MSG B6 TO LINE B4
   B4 = B4 + 1
   B6 = B6 + 1                        *INCREMENT MSG NO.
   GOTO 60 WHILE (B7-1.NE.0)          *MSG NOT COMPLETE 
   B4=B4+1
   EXIT 
   END 30 
COMPILE   - T6X98F -
   MODULE T6X98P,66X(42,52),LOCK  - PARAMETER  CRACKING - 
*** PARAMETER CRACKING (P1,P4)
* 
**  EXTERNAL DOCUMENTATION
* 
*   DESCRIPTION - CALLED ALL PRIMARY MODULES TO CRACK 
*                 PARAMETERS TO DETERMINE LEGAL - 
* 
*                  - DATA PATTERNS
* 
*                  - ASSEMBLY/DISASSEMBLY MODE
*                  - TRANSLATION MODE 
*                  - PARITY 
*                  - OR LEGAL COMBINATIONS OF THE ABOVE 
* 
*   CALLED BY - ALL PRIMARY MODULES 
* 
*   REGISTERS USED - B2 
* 
*   EXIT - TO CALLING MODULE
* 
*   ERROR MESSAGES -
* 
*         T6X98P -      ...... PARAMETER ERROR ...... 
*         T6X98P - 9 TRK AND EVEN PARITY IS ILLEGAL - 
*         T6X98P - 9 TRK,PACKED MODE,XLATION TBL MUST BE 0- 
*         T6X98P - 9 TRK,A/D MODE,XLATION TBL MUST BE 1,2 - 
*         T6X98P - PACKED AND CPU MODES SELECTED -
*         T6X98P - 7 TRK MUST BE A/D 6 BIT MODE - 
*         T6X98P - 7 TRK,ODD PAR,XLATION TBL MUST BE 0,3,7- 
*         T6X98P - 7 TRK,EVEN PAR,XLATION TBL MUST BE 3,7 - 
*         T6X98P - 9 TRK,CPU MODE, XLATION TBL MUST BE 0 -
*         T6X98P - RANDOM AND ALTERNATE PATTERNS SELECTED - 
*         T6X98P - ILLEGAL DENSITY FOR UNIT TYPE
*         T6X98P - ILLEGAL WORD COUNT SPECIFIED IN P2                    T6X005J
* 
*** INTERNAL DOCUMENTATION
* 
*-- REGISTER USAGE
* 
*     B2 = A/D, XL
* 
/ 
/         CRACK *P1* - A/D, TRANSLATION CODE, PARITY
/               *P4* - DATA PATTERN SELECTION 
/ 
 1 FORMAT T6X98P -      ...... PARAMETER ERROR ...... 
 2 FORMAT T6X98P - 9 TRK AND EVEN PARITY IS ILLEGAL - 
 3 FORMAT T6X98P - 9 TRK,PACKED MODE,XLATION TBL MUST BE 0- 
 4 FORMAT T6X98P - 9 TRK,A/D MODE,XLATION TBL MUST BE 1,2 - 
 5 FORMAT T6X98P - PACKED AND CPU MODES SELECTED -
 6 FORMAT T6X98P - 7 TRK MUST BE A/D 6 BIT MODE - 
 7 FORMAT T6X98P - 7 TRK,ODD PAR,XLATION TBL MUST BE 0,3,7- 
10 FORMAT T6X98P - 7 TRK,EVEN PAR,XLATION TBL MUST BE 3,7 - 
11 FORMAT T6X98P - 9 TRK,CPU MODE, XLATION TBL MUST BE 0 -
12 FORMAT T6X98P - RANDOM AND ALTERNATE PATTERNS SELECTED - 
13 FORMAT T6X98P - ILLEGAL DENSITY FOR UNIT TYPE
14 FORMAT T6X98P - ILLEGAL WORD COUNT SPECIFIED IN P2                    T6X005J
/ 
   EQUATE ADMASK TO 30      *MASK FOR A/D MODE
   EQUATE PARITY TO 1000    *PARITY MODE
   EQUATE PATRN TO 3000     *MASK FOR PATTERN SELECT
/ 
20 B4=4 
   IF(P2.NE.0) GOTO 21                *IF LEGAL WORD COUNT               T6X005J
   MSG 14 TO LINE B4                                                     T6X005J
   B4 = B4 + 1                                                           T6X005J
21 IF(P4.AND.PATRN.EQ.3000)GOSUB 64   *PATTERN SELECT ERROR              T6X005J
   IF(DC.AND.10.EQ.0)GOTO 50          * 7 TRACK TAPE
   IF(P1.AND.7.EQ.0) GOSUB 66         *ILLEGAL DENSITY
   IF(P1.AND.7.GE.3) GOSUB 66         *ILLEGAL DENSITY
   IF(P1.AND.PARITY.NE.0)GOSUB 60     *PARITY INCORRECT 
   B3 = P1.AND.770
   IF(B3.EQ.10)GOTO 57      *A/D=PACK, XLATION MODE=0,..OK. 
   IF(B3.EQ.100)GOTO 57     *A/D=6 BIT, XLATION MODE=1,..OK.
   IF(B3.EQ.200)GOTO 57     *A/D=6 BIT, XLATION MODE=2,..OK.
   IF(P1.AND.30.EQ.0)GOTO 22          *A/D 6 BIT MODE SELCT 
   IF(P1.AND.30.EQ.10)GOTO 30         *A/D PACKD MODE SELCT 
   IF(P1.AND.30.EQ.20)GOTO 40         *A/D CPU MODE SELCT 
   MSG 5 (P1) TO LINE B4
   GOTO 56
22 IF(P1.AND.700.EQ.0)GOTO 24    *A/D XLATION MODE INCORRECT
   IF(P1.AND.700.EQ.100)GOTO 57  *A/D, XLATION OK 
   IF(P1.AND.700.EQ.200)GOTO 57  *A/D, XLATION OK 
24 MSG 4 TO LINE B4 
   GOTO 56
30 IF(P1.AND.700.EQ.0)GOTO 57    *A/D, XLATION MODE OK
   MSG 3 TO LINE B4 
   GOTO 56
40 IF(P1.AND.700.EQ.0)GOTO 57    *A/D, XLATION MODE OK
   MSG 11 TO LINE B4
   GOTO 56
/ 
/         7 TRACK 
/ 
50 IF(P1.AND.7.EQ.2) GOSUB 66         *ILLEGAL DENSITY
   IF(P1.AND.7.GE.4) GOSUB 66         *ILLEGAL DENSITY
   IF(P1.AND.ADMASK.NE.0)GOSUB 62    *A/D MODE, ILLEGAL 
   B3 = P1.AND.700
   IF(P1.AND.PARITY.NE.0)GOTO 52   *PROCESS EVEN PARITY 
   IF(B3.EQ.0)GOTO 57                 *A/D, XLATION OK
   IF(B3.EQ.300)GOTO 57 
   IF(B3.EQ.700)GOTO 57 
   MSG 7 TO LINE B4 
   GOTO 56
52 IF(B3.EQ.300)GOTO 57               *XLATION OK 
   IF(B3.EQ.700)GOTO 57 
   MSG 10 TO LINE B4
/ 
/         ERROR EXIT
/ 
  
56 MSG 1 TO LINE 2                    *PARAMETER  ERROR 
   MSG 1 TO DISPLAY,DAYFILE 
   PICTURE
   PAUSE                              *STOP-ON-ERROR
   GOTO 77
/ 
/         NORMAL EXIT 
/ 
57 IF(B4.NE.4) GOTO 56
   EXIT 
/ 
/         SUBROUTINES 
/ 
60 MSG 2 TO LINE B4 
   B4=B4+1
   RETURN 
62 MSG 6 TO LINE B4 
   B4=B4+1
   RETURN 
64 MSG 12 TO LINE B4             *PATRN SELCT ERR 
   B4=B4+1
   RETURN 
66 MSG 13 TO LINE B4             *PATRN SELCT ERR 
   B4=B4+1
   RETURN 
77 END 20 
COMPILE          - T6X98P - 
   MODULE T6X99,66X(42,52),LOCK  - T6X PARAMETERS - 
*** T6X PARAMETERS (P0 - P9)
**
* 
*   DESCRIPTION - T6X99 PROVIDES A DESCRIPTION OF THE 
*                PARAMETERS FOR VIEWING AT THE  K/L DISPLAY.
*                THESE HAVE BEEN PREVIOUSLY DESCRIBED IN THE
*                EXTERNAL DOCUMENTATI0N.
* 
* 
*** INTERNAL DOCUMENTATION
* 
/  CONTROLWARE LEVEL - T6X TESTED FOR LEVEL A10 
/ 
/  -PARAMETER REGISTER SETTINGS-
/ 
/ P0-TAPE SPEED=100B = 100 IPS
/               150B = 150 IPS
/               200B = 200 IPS
/ 
/ P1-TAPE ID  = XXXD - DENSITY
/               XXX0 =  556 BPI 
/               XXX1 =  800 BPI 
/               XXX2 =  1600 FCI
/               XXX3 =  200 BPI 
/             = XXAX - ASSEMBLY/DISASSEMBLEY
/               XX0X =  A/D 6-BIT MODE
/               XX1X =  A/D PACKED MODE 
/               XX2X =  A/D CPU MODE
/             = XCXX - CODE TRANSLATION 
/               X0XX =  NO CODE TRANSLATION 
/               X1XX =  USE CODE TRANSLATION TABLE 1
/               X2XX =  USE CODE TRANSLATION TABLE 2
/               X3XX =  USE CODE TRANSLATION TABLE 3
/               X7XX =  INTERNAL TO EXTERNAL TRANSLATION IF,
/                       EVEN PARITY  AND 7 TRACK
/                    =  NO TRANSLATION IF,
/                       ODD PARITY 7 TRACK
/             = PXXX - PARITY 
/               0XXX =  ODD PARITY
/               1XXX =  EVEN PARITY 
/ 
/ P2 = RECORD LENGTH
/ 
/ P3-FLAG BITS= XXFF - FLAG BITS
/               XXX1 =  BYPASS RECORD NUMBERING 
/                   IF THIS BIT IS NOT SET, POSITION DATA IS
/                   PLACED IN THE OUTPUT BUFFER DURING WRITE
/                   AS FOLLOWS -
/                       OB(1) = CURRENT FILE NUMBER 
/                       OB(2) = CURRENT RECORD NUMBER 
/                       OB(3) = RECORD LENGTH 
/               XXX2 =  COMPARE DATA - COMPARES THE FIRST 
/                       500 OCTAL WORDS OF THE INPUT BUFFER 
/                       EVEN IF NO ERRORS OCCUR (FORWARD
/                       READS ONLY).
/               XXX4 =  LOCK TO BASE NUMBER - IF RANDOM DATA
/                       PTRN IS SELECTED, P7 WILL CONTAIN 
/                       THE BASE NUMBER FOR PTRN GENERATION 
/               XX1X =  THIS BIT MUST BE SET IF YOU HAVE A
/                       POLYNOMIAL CONTROLLER 
/               XX2X =  BYPASS WAIT NOT BUSY IF THIS BIT IS 
/                       SET 
/               XX4X =  MAINTENANCE MODE, USED BY MODULES 4,
/                       5,6,7,8,9,10,11,14,15,16,17,18,32.
/                       IF = 0 DEFAULT VALUES ARE USED
/                       INSTEAD OF P8 AND P9, OTHERWISE P8
/                       AND P9 DEFINE FILE AND RECORD COUNTS. 
/ 
/             = XCXX - CLIP LEVEL 
/               X0XX =  NORMAL CLIP 
/               X1XX =  HIGH READ CLIP
/               X2XX =  LOW READ CLIP 
/               X3XX =  HYPER READ CLIP 
/ 
/             = SXXX - SPROCKET DELAY 
/               0XXX =  NOMINAL READ SPROCKET DELAY 
/               1XXX =  INCREASE READ SPROCKET DELAY
/               2XXX =  DECREASE READ SPROCKET DELAY
/ 
/ P4-PATTERNS = 0XXX - SELECT FIXED PATTERN XXX 
/                      XXX IS A 6 OR 8 BIT PATTERN DEPENDING
/                      ON DRIVE TYPE(7 OR 9 TRACK). 
/ 
/             = 1XXX - SELECT ALTERNATE PATTERN XXX 
/ 
/                      PATTERN XXX IS STORED IN THE 1ST,3RD,
/                      5TH,ETC 6 OR 8 BIT BYTES OF THE
/                      OUTPUT BUFFER.  THE COMPLEMENT OF XXX
/                      IS STORE IN THE 2ND, 4TH, 6TH ETC
/                      BYTES. 
/ 
/             = 2XXX = SELECT RANDOM PATTERN
/                      THE RANDOM PATTERN GENERATED IS
/                      DETERMINED BY THE BASE RANDOM
/                      NUMBER(P7).AND.THE LOCK TO BASE
/                      NUMBER BIT(P3=XXX4)
/ 
/               4XXX - REPORT FM/TM ERRORS (ERR - 207)
/ 
/ P5-DELAY MASK=0000 - DISABLES USE OF RT CLOCK FOR 
/    (RANDOM, RELEASE  GENERATION OF RANDOM DELAYS. 
/     TO RESERVE)      WITH P5=0000 ANY VALUE ENTERED IN P6 
/                      BECOMES A FIXED MILISECOND DELAY.
/ 
/             = XXXX - LOGICAL PRODUCT OF XXXX AND THE RT 
/                      CLOCK PRODUCES  THE VALUE USED FOR 
/                      THE MILISECOND DELAY 
/ 
/ P6-DELAY    = XXXX - IF P5=0000, P6 WILL BE USED AS FIXED 
/    (FIXED, RELEASE   DELAY OF XXXX MILISECONDS
/     TO RESERVE) 
/ P7-RANDOM   = 0000 - THE RANDOM NUMBER SEED WILL BE 
/                      OBTAINED FROM THE RT CLOCK 
/ 
/             = XXXX - XXXX IS THE RANDOM NUMBER SEED 
/ 
/ P8-FILE CNT = 0000 - INFINITE FILE COUNT, RESULTS IN COMP-
/                      LETE USE OF TAPE, BOT TO EOT.
/ 
/             = XXXX - MAXIMUM NUMBER OF FILES TO WRITE/
/                      READ PER MODULE
/ 
/ P9-REC CNT  = 0000 - INFINITE RECORD COUNT, RESULTS IN
/                      COMPLETE USE OF TAPE, BOT TO EOT.
/             = XXXX - MAXIMUM NUMBER OF RECORDS TO 
/                      WRITE/READ PER FILE
/             = SSSS - SYSTEM ID (MODULE T6X80 ONLY)
 1 PAUSE
   EXIT TO 991
   END 1
COMPILE,SOURCE  - T6X99 -                                                T6X002J
   MODULE T6X991,66X(42,52),LOCK
/                             **********
/                             * STATUS *
/                             **********
/ 
/T6X WILL PROVIDE STATUS ON THE PERFORMANCE OF THE HARDWARE,
/SOFTWARE AND CONTROLWARE VIA TWO (2) GENERAL STATUS WORDS, 
/EIGHT (8) DETAILED STATUS WORDS, AND EIGHT (8) WORDS OF
/ACCUMULATIVE STATUS. THE FOLLOWING INFORMATION WILL PROVIDE
/YOU WITH DETAILS AND DESCRIPTIONS OF EACH WORD AND BIT IN
/THE STATUS AVAILABLE UNDER T6X.
/ 
/      *****************************************************
/      * GENERAL STATUS WORD 1, BIT LAYOUT AND DESCRIPTION *
/      *****************************************************
/ 
/                             -NOTE-
/     THE TERMS -GENERAL STATUS- AND -GENERAL STATUS WORD 1 
/     ARE USED INNER-CHANGEABLY IN THIS DOCUMENT. 
/ 
/ XXX1=  READY                                      (BIT  0)
/        THE TAPE TRANSPORT IS LOADED AND READY FOR 
/        OPERATION. YOU SHOULD NOTE THAT -READY- IS NEGATED 
/        DURING A REWIND OR A REWIND/UNLOAD OPERATION.
/ 
/ XXX2=  BUSY                                       (BIT  1)
/        THE TAPE TRANSPORT IS PERFORMING A TAPE MOTION 
/        OPERATION. YOU SHOULD NOTE THAT -BUSY- WILL REMAIN 
/        ACTIVE ON AN UNLOAD OPERATION UNTIL VACUUM IS
/        DROPPED IN THE TRANSPORT.
/ 
/ XXX4=  LOAD POINT                                 (BIT  2)
/        THE TAPE ON THE TRANSPORT IS POSITIONED AT THE LOAD
/        POINT REFLECTIVE MARKER. 
/ 
/ XX1X=  END OF TAPE                                (BIT  3)
/        THE TAPE ON THE TRANSPORT IS POSITIONED AT THE END 
/        OF TAPE REFLECTIVE MARKER. LESS THAN 10 FEET OF
/        USEABLE RECORDING AREA REMAINS.
/ 
/ XX2X=  FILE MARK/TAPE MARK, (FM/TM)               (BIT  4)
/        A FM/TM WAS SUCCESSFULLY READ OR WRITTEN ON TAPE.
/ 
/ XX4X=  ODD COUNT  (SOFTWARE GENERATED STATUS)     (BIT  5)
/        AN ODD NUMBER OF TAPE FRAMES WERE READ FROM THE
/        TAPE. YOU SHOULD NOTE THAT THE ODD COUNT CAN BE
/        USED IN CONJUNCTION WITH THE NUMBER OF 12-BIT BYTES
/        TRANSMITTED TO DETERMINE HOW MANY FILL BITS WERE 
/        INCLUDED IN THE LAST BYTE. 
/ 
/ X1XX=  UNIT TYPE                                  (BIT  6)
/        IF THIS BIT IS SET, A 9-TRACK UNIT WAS THE LAST
/        DEVICE USED, IF IT IS NOT SET, A 7 TRACK DEVICE
/        WAS THE LAST USED. 
/** 
/ 
/ X2XX=  WRITE RING                                 (BIT  7)
/        A WRITE RING IS INSTALLED IN THE TAPE REEL. NO 
/        -WRITE- OPERATION WILL OCCUR UNLESS THIS RING IS 
/        INSTALLED. 
/ 
/ X4XX=  NOISE      (SOFTWARE GENERATED STATUS)     (BIT  8)
/        A BLOCK SHORTER THAN THE MINIMUM LENGTH WAS READ.
/        YOU SHOULD NOTE THAT THIS BIT WILL NOT SET IF THE
/        BLOCK WAS A FM/TM, LOAD POINT WAS REACHED, OR NOISE
/        RECOVERY WAS NOT ENABLED.
/ 
/ 1XXX=  NO UNIT CONNECTED                          (BIT  9)
/        IF THIS BIT IS SET, NO TAPE TRANSPORT IS CONNECTED.
/ 
/ 2XXX=  COUPLER STATUS (7000 ONLY)                 (BIT 10)
/        STATUS ORIGINATED IN THE COUPLER. BITS 3-0 ARE 
/        REDEFTNED AS FOLLOWS 
/        BIT 3 SET= MEMORY PARITY ERROR IN MTS. 
/        BIT 2 SET= LOCAL AUTOLOAD IS IN PROGRESS.
/        BIT 1 SET= REMOTE AUTOLOAD IS IN PROGRESS. 
/        BIT 0 SET= DEADMAN TIMEOUT 
/ 
/        IF BITS 2-0 ARE CLEAR, THE COUPLER RETURNED
/        STATUS BECAUSE IT WAS RESERVED BY THE OTHER CHANNEL
/        ACCESS.
/ 
/ 4XXX=  ALERT                                      (BIT 11)
/        ONE OR MORE INTERESTING BITS ARE SET IN -DETAILED
/        STATUS-. SUCH BITS ARE INDICATED BY APPENDING
/        (ALERT) TO THEIR DESCRIPTIONS. 
/ 
/** 
/ 
/     ***************************************************** 
/     * GENERAL STATUS WORD 2, BIT LAYOUT AND DESCRIPTION * 
/     ***************************************************** 
/ 
/ YYYY= POLYNOMIAL REGISTER 
/ 
/       THIS WORD CONSTITUTES A 12B BIT REGISTER THAT WILL
/       CONTAIN THE POLYNOMIALS USED DURING THE POLYNOMIAL
/       TEST IN T6X. IT SHOULD BE NOTED THAT THIS REGISTER
/       WILL CONTAIN ZEROS WHEN T6X IS RUN ON AN MTS
/       CONTROLLER THAT IS NOT EQUIPPED TO HANDLE POLYNOMIAL
/       CHECKING. 
/ 
 1 PAUSE
   EXIT TO 992
   END 1
COMPILE,SOURCE  - T6X991 -                                               T6X002J
   MODULE T6X992,66X(42,52),LOCK
/      *****************************************************
/      *DETAILED STATUS, WORD 1, BIT LAYOUT AND DESCRIPTION*
/      *             -ALL BITS CAUSE ALERT-                *
/ 
/    XXCC=  CONTROLWARE GENERATED ERROR NUMBERS   (BITS 0-5)
/           THE LOWER SIX BITS OF THIS WORD ARE DECODED AS
/           CONTROLWARE GENERATED ERROR NUMBERS. A DEATILED 
/           DESCRIPTION OF THE ERROR NUMBERS EXPRESSED BY 
/           THESE BITS (01 THROUGH 77) ARE LISTED IN THE
/           ERROR NUMBER SECTION OF THE 66X HARDWARE
/           REFERENCE MANUAL. 
/ 
/    X1XX=  LATE DATA    (SOFTWARE GEN STAT)         (BIT 6)
/           NO DATA WAS AVAILABLE TO BE WRITTEN EITHER AT 
/           WRITE-ACCESS TIME OR, WITHIN THE NEXT 0.4 INCHES
/           OF TAPE. THE GAP WAS CONTINUED (UP TO 34 MSEC)
/           UNTIL DATA ARRIVED. 
/ 
/    X2XX=  NOISE FAULT                             (BIT  7)
/           UNERASED FLUX CHANGES WERE DETECTED AT LOW READ 
/           CLIP FOLLOWING THE LAST WRITE OPERATION OR, AT
/           NORMAL READ CLIP FOLLOWING LAST READ OPERATION. 
/ 
/    X4XX=  NOISE IN GAP    (SOFTWARE GEN STAT)     (BIT  8)
/           UNERASED FLUX CHANGES WERE DETECTED IN THE INTER
/           BLOCK GAP, (IBG), PRIOR TO THE CURRENT OPERATION. 
/           STATUS IS NO LONGER VALID WHEN CONNECTING TO
/           ANOTHER TRANSPORT.
/ 
/    1XXX=  PARITY ERROR     (SOFTWARE GEN STAT)    (BIT  9)
/           ONE OR MORE CONDITIONS OCCURRED WHICH REQUIRE 
/           THAT THE BLOCK BE RE-READ OR RE-WRITTEN. BITS 
/           CAUSING THE PARITY ERROR BIT TO BE SET ARE
/           INDICATED BY (PE) APPENDED TO THEIR DESCRIPTIONS. 
/ 
/    2XXX=  ERASE ERROR     (SOFTWARE GEN STAT)     (BIT 10)
/           UNERASED FLUX CHANGES WERE DETECTED AT LOW READ 
/           CLIP DURING AN ERASE, WRITE FM/TM OPERATION, OR 
/           IN THE SECOND HALF OF THE INTER BLOCK GAP (IBG) 
/           DURING A WRITE DATA OPERATION.
/ 
/    4XXX=  LOST DATA                               (BIT 11)
/           WRITE - END OF RECORD SIGNAL WAS NOT RECEIVED 
/                   AND NO DATA IS AVAILABLE FOR THE NEXT 
/                   FRAME.
/            READ - END OF RECORD SIGNAL WAS NOT RECEIVED 
/                   AND ALL DATA REGISTERS ARE FULL AT THE
/                   NEXT FRAME. 
/ 
/      *****************************************************
/      *DETAILED STATUS, WORD 2, BIT LAYOUT AND DESCRIPTION*
/      *             -ALL BITS CAUSE ALERT-                *
/ 
/    XXX1=  POSTAMBLE ERROR (PE)                    (BIT  0)
/           MISSING, OR DEFECTIVE, POSTAMBLE. THIS INDICATES
/           THAT PART OF THE BLOCK MAY NOT HAVE BEEN READ OR, 
/           THAT A DEFECTIVE POSTAMBLE WAS WRITTEN. (THIS 
/           APPLIES TO 9 TRACK, 1600 BPI OPERATION ONLY). 
/ 
/    XXX2=  VELOCITY ERROR (PE IF A WRITE)          (BIT  1)
/           THE VELOCITY OF THE TAPE VARIED MORE THAN 7 
/           PERCENT AFTER ONCE REACHING OPERATING SPEED.
/ 
/    XXX4=  SKEW ERROR (PE)                         (BIT  2)
/           EXCESSIVE SKEW IN PHASE ENCODED MODE. MORE
/           THAN 4 FRAMES OF SKEW WERE DETECTED IN A READ 
/           OPERATION OR, MORE THAN 2 FRAMES OF SKEW WERE 
/           DETECTED IN A WRITE OPERATION. (THIS APPLIES
/           TO 9 TRACK, 1600 BPI OPERATION ONLY). 
/ 
/    XX1X=  FALSE END OF OPERATION (PE)             (BIT  3)
/           UNEXPECTED FRAMES WERE DETECTED BEFORE THE
/           LONGITUDINAL REDUNDANCY CHECK CHARACTER (LRC),
/           OR POSTAMBLE, WAS READ. 
/ 
/    XX2X=  CYCLIC REDUNDANCY CHECK(CRC) PARITY ERROR (BIT 4) 
/           (PE IF A WRITE) 
/           FORWARD - CRC VERTICAL PARITY WAS IN ERROR. 
/           BACKWARD (EVEN-LENGTH READ FCN) - CRC PARITY WAS
/           EVEN. BACKWARD (ODD-LENGTH READ FCN)-CRC PARITY 
/           WAS ODD.
/ 
/    XX4X=  LONGITUDINAL PARITY ERROR (PE)          (BIT  5)
/           ONE OR MORE TRACKS HAD ODD LONGITUDINAL PARITY. 
/           (THIS APPLIES ONLY TO NRZI RECORDING MODE). 
/ 
/    X1XX=  VERTICAL PARITY ERROR (PE)              (BIT  6)
/           ONE OR MORE TRACKS HAS EVEN VERTICAL PARITY.
/           THIS WILL NOT BE A (PE) IF THE TRACK WAS
/           CORRECTED -ON-THE-FLY- IN PHASE MODE. 
/ 
/    X2XX=  LRC CHARACTER PARITY ERROR (PE)         (BIT  7)
/           THE LONGITUDINAL REDUNDANCY CHECK CHARACTER 
/           HAD EVEN VERTICAL PARITY IN 9-TRACK NRZI MODE.
/           THIS WILL NOT BE A (PE) IF THE TRACK WAS
/           CORRECTED -ON-THE-FLY- IN PHASE MODE. 
/ 
/    X4XX=  SINGLE FRAME ERROR (PE)                 (BIT  8)
/           AN ALL-ZEROS FRAME (INCLUDING THE PARITY TRACK) 
/           WAS READ. DATA WILL BE AT LEAST ONE FRAME SHORT.
/           THIS APPLIES TO NRZI OPERATION ONLY.
/ 
/    1XXX=  FRAME COUNT ERROR NO. 3 (PE)            (BIT  9)
/           FEWER FRAMES WERE READ THEN WERE WRITTEN. THIS
/           INDICATES DAMAGE OR CONTAMINATION ON THE TAPE OR
/           MAGNETIC HEAD.
/ 
/    2XXX=  FRAME COUNT ERROR NO. 2 (PE)            (BIT 10)
/           MORE FRAMES WERE READ THEN WERE WRITTEN. THIS 
/           INDICATES UNERASED NOISE IS PRESENT ON THE TAPE.
/ 
/    4XXX=  FRAME COUNT ERROR NO.1 (PE)             (BIT 11)
/           TOO MANY FRAMES WERE WRITTEN BEFORE THE FIRST 
/           FRAME WAS READ. THIS INDICATES A SLOW START TIME
/           IN THE TRANSPORT. 
 1 PAUSE
   EXIT TO 993
   END 1
COMPILE,SOURCE  - T6X992 -                                               T6X002J
   MODULE T6X993,66X(42,52),LOCK
/      **************************************************** 
/      *DETAILED STATUS,WORD 3,BIT LAYOUT AND DESCRIPTION * 
/      **************************************************** 
/ 
/    XXX1=  TEMPERATURE MDI  (ALERT)                (BIT  0)
/           THE AIR TEMPERATURE INSIDE THE TRANSPORT IS 
/           WITHIN FIVE (5) DEGREES F. OF AUTOMATIC POWER 
/           CUT-OFF.
/ 
/    XXX2=  LOAD FAULT (ALERT)                      (BIT  1)
/           THE TRANSPORT FAILED TO LOAD TAPE.
/ 
/    XXX4=  ERASE CURRENT MDI (ALERT)               (BIT  2)
/           THE CURRENT IN THE ERASE CIRCUITS IS ABNORMAL.
/           DEFECTIVE ERASE OPERATION MAY OCCUR WITHOUT 
/           CORRECTIVE ACTION.
/ 
/    XX1X=  AIR PRESSURE MDI (ALERT)                (BIT  3)
/           AIR PRESSURE SUPPLYING THE TAPE PATH COMPONENTS 
/           IS ABNORMAL. TAPE DAMAGE MAY OCCUR WITHOUT
/           CORRECTIVE ACTION.
/ 
/    XX2X=  LOOP FAULT (ALERT)                      (BIT  4)
/           TAPE IN THE LOOP COLUMN HAS SET THE LOOP FAULT
/           SENSOR. TAPE MAY, OR MAY NOT BE IN THE COLUMN,
/           DEPENDING ON THE MAGNITUDE OF THE FAULT.
/ 
/    XX4X=  ILLEGAL CHARACTER (ALERT)               (BIT  5)
/           BIT 6 WAS SET IN ONE OR MORE CHARACTERS READ
/           FROM TAPE. WHEN CONVERTING TO A 6-BIT INTERNAL
/           CODE, BIT 6 SHOULD NEVER BE SET. HENCE, 8-BIT 
/           EXTERNAL CODES LYING OUTSIDE THE 44-CHARACTER 
/           SUBSET CAN BE DETECTED BY LOADING THE 
/           CORRESPONDING READ RAM LOCATIONS WITH AN
/           INTERNAL CODE CONTAINING A ONE (1) IN BIT 6.
/ 
/    X1XX=  SINGLE FRAME SKEW                       (BIT  6)
/           MORE THAN ONE FRAME OF SKEW OCCURRED DURING 
/           A 1600 BPI READ OR READ-AFTER-WRITE OPERATION.
/ 
/    X2XX=  OPPOSITE CHANNEL DOWN                   (BIT  7)
/           THE OPPOSITE CHANNEL TAPE SUBSYSTEM IS NOT
/           OPERATIONAL. IT SHOULD BE NOTED THAT THIS 
/           STATUS BIT IS ALWAYS SET IN A 1X8 
/           CONFIGURATION.
/ 
/    X4XX=  FOUR FRAME SKEW (PE) (ALERT)            (BIT  8)
/           MORE THAN 4 FRAMES OF SKEW OCCURRED DURING A
/           1600 BPI READ OR READ-AFTER-WRITE OPERATION.
/ 
/    1XXX=  POSTAMBLE DETECTED                      (BIT  9)
/           A POSTAMBLE WAS DETECTED DURING A 1600 BPI READ 
/           OR READ- AFTER-WRITE. 
/ 
/    2XXX=  ODD BLOCK LENGTH                        (BIT 10)
/           NRZI - A LOGICAL ONE (1) INDICATES THAT AN ODD
/                  NUMBER OF TAPE FRAMES WERE READ OR 
/                  WRITTEN. 
/           PHASE - A LOGICAL ZERO (0) INDICATES THAT AN ODD
/                  NUMBER OF TAPE FRAMES WERE READ OR 
/                  WRITTEN. 
/ 
/    4XXX=  SEVERE START ERROR (ALERT)              (BIT 11)
/           THE INTER BLOCK GAP (IBG) WAS LENGTHENED IN 
/           EXCESS OF 0.20 INCHES BECAUSE THE TRANSPORT WAS 
/           SLOW IN REACHING FULL VELOCITY. 
/ 
/ 
/      **************************************************** 
/      *DETAILED STATUS,WORD 4,BIT LAYOUT AND DESCRIPTION * 
/      **************************************************** 
/ 
/          ALL BITS CAUSE ALERT IN GENERAL STATUS WORD 1
/ 
/    XTTT=  TRACKS CORRECTED (A)(PE IF A WRITE)    (BIT 8-0)
/           TRACKS FOR WHICH DATA CORRECTION WAS ATTEMPTED
/           ARE IDENTIFIED BY THEIR CORRESPONDING POSITION
/           WITHIN A CHARACTER. BIT TO TRACK RELATIONSHIP 
/           HERE IS - 
/              BIT 8= PARITY TRACK
/              BIT 7= TRACK 2 TO THE 7
/                .
/                .
/                .
/              BIT 0= TRACK 2 TO THE 0
/           IF MORE THAN ONE OF THESE BITS ARE SET, TRACK 
/           IN ERROR STATUS WILL ALSO BE SET, (4XXX OF THIS 
/           WORD).
/ 
/    1XXX=  MULTI-TRACK ERROR (PE)                  (BIT  9)
/           MORE THAN ONE TRACK WAS IN ERROR. (THIS BIT IS
/           NOT SET FOR WRITE OPERATION). 
/ 
/    2XXX=  CRC DETECTED ERROR (PE)                 (BIT 10)
/           THE CRC DETECTED AN ERROR WHILE READING OR
/           WRITTING NRZI DATA. (A 7-TRACK GENERATED TAPE 
/           IS CHECKED ONLY WHILE WRITTING).
/ 
/    4XXX=  TRACK IN ERROR (ALERT) (PE IF A WRITE)  (BIT 11)
/           CORRECTION WAS ATTEMPTED IN ONE OR MORE TRACKS. 
/           (BIT 8-0 OF THIS WORD INDICATE WHICH TRACK). IF 
/           MULTI-TRACK STATUS IS ZERO (0), THE ERROR WAS 
/           CONFINED TO ONE TRACK AND DATA SHOULD BE VALID. 
/           (DATA WAS CORRECTED). 
/ 
 1 PAUSE
   EXIT TO 994
   END 1
COMPILE,SOURCE  - T6X993 -                                               T6X002J
   MODULE T6X994,66X(42,52),LOCK
/      **************************************************** 
/      *DETAILED STATUS,WORD 5,BIT LAYOUT AND DESCRIPTION * 
/      **************************************************** 
/ 
/    XX0U=  PHYSICAL UNIT ADDRESS                  (BIT 3-0)
/     AND   THESE BITS (3-0) CONSTITUTE THE ADDRESS OF
/    XX1U   INDIVIDUAL TRANSPORT CABLE CONNECTORS IN THE TCU. 
/           THE OCTAL NUMBERS CAN BE USED TO IDENTIFY 
/           PHYSICAL TAPE TRANSPORTS, THIS IS REGARDLESS OF 
/           THE LOGICAL ADDRESS DIALED IN ON THE CONTROL
/           PANEL OF THE TRANSPORT. (XX0U= UNITS 00-07, AND 
/           XX1U= UNITS 10-17). 
/ 
/    XX2X=  WRITE REPLY                             (BIT  4)
/           WRITE AND ERASE CURRENTS ARE ON IN THE UNIT 
/           BECAUSE THE LAST OPERATION WAS A -WRITE-. 
/ 
/    XX4X=  ACCESS ERROR (ALERT IF A WRITE)          BIT  5)
/           WRITE PERMIT STATUS OCCURRED, (WHEN WRITING), OR
/           THE FIRST FRAME WAS DETECTED, (WHEN READING), 
/           BEFORE THE TAPE REACHED FULL SPEED. THIS
/           INDICATES A SLOW START TIME IN THE TAPE 
/           TRANSPORT. THE ALERT BIT IS SET FOR WRITE 
/           OPERATIONS IF THE INTER BLOCK GAP (IBG) INCREASES 
/           MORE THAN 0.20 INCHES.
/ 
/    AAXX=  LAST MOTION, SPEED, AND DENSITY      (BITS 6-11)
/           THESE SIX BITS ARE USED IN COMBINATION TO DEFINE
/           THE LAST DIRECTION THAT TAPE MOVED, THE RATED 
/           SPEED OF THE UNIT, AND THE CURRENT DENSITY
/           BEING USED. WE WILL FIRST PROVIDE YOU WITH EACH 
/           BIT, OR BIT COMBINATION, AND THE DEFINITION, THEN 
/           PROVIDE THE OCTAL VALUES FOR THE ABBREVIATED
/           TERMS -AA- SO THAT QUICK REFERENCE CAN BE MADE. 
/ 
/           BIT 11= (0) - FORWARD WAS THE LAST DIRECTION
/                   (1) - REVERSE WAS THE LAST DIRECTION
/ 
/           BITS 8-10= (001) - 100 INCH/SEC TRANSPORT 
/                      (010) - 150 INCH/SEC TRANSPORT.
/                      (100) - 200 INCH/SEC TRANSPORT.
/ 
/           BITS 6, 7= (00) - 200 OR 556 BPI DENSITY. 
/                      (01) - 800 BPI DENSITY.
/                      (10) - 1600 BPI DENSITY
/ 
/           NOTE - BECAUSE THE 667 TAPE TRANSPORT RECOGNIZES
/           ONLY 556 OR 800 BPI, 200 BPI DENSITY IS REPORTED
/           AS BITS 6,7=00, (OR 556 BPI). 
/ 
/           DENSITY FOR 7-TRACK TAPE EFFECTS ONLY THE 
/           CONTROLLER, NOT THE TRANSPORT. HENCE, 200 BPI 
/           -READ- CAN BE SUPPORTED WITH STANDARD 667 TAPE
/           TRANSPORTS. 
/                    (OCTAL EQUIVALENTS FOR BITS 6-11)
/             AA= 04 - FORWARD, 100 IPS, 200 OR 556 BPI 
/                 05 - FORWARD, 100 IPS, 800 BPI
/                 06 - FORWARD, 100 IPS, 1600 BPI 
/                 10 - FORWARD, 150 IPS, 200 OR 556 BPI 
/                 11 - FORWARD, 150 IPS, 800 BPI
/                 12 - FORWARD, 150 IPS, 1600 BPI 
/                 20 - FORWARD, 200 IPS, 200 OR 556 BPI 
/                 21 - FORWARD, 200 IPS, 800 BPI
/                 22 - FORWARD, 200 IPS, 1600 BPI 
/                 44 - REVERSE, 100 IPS, 200 OR 556 BPI 
/                 45 - REVERSE, 100 IPS, 800 BPI
/                 46 - REVERSE, 100 IPS, 1600 BPI 
/                 50 - REVERSE, 150 IPS, 200 OR 556 BPI 
/                 51 - REVERSE, 150 IPS, 800 BPI
/                 52 - REVERSE, 150 IPS, 1600 BPI 
/                 60 - REVERSE, 200 IPS, 200 OR 556 BPI 
/                 61 - REVERSE, 200 IPS, 800 BPI
/                 62 - REVERSE, 200 IPS, 1600 BPI 
/ 
/      **************************************************** 
/      *DETAILED STATUS,WORD 6,BIT LAYOUT AND DESCRIPTION * 
/      **************************************************** 
/ 
/    XXPP=  TAPE POSITION                         (BITS 0-3)
/           TWOS COMPLEMENT NUMBER OF BLOCKS MOVED OVER 
/           DURING THE LAST OPERATION, POSITIVE IMPLYING
/           -FORWARD-. THE FIELD IS CLEARED AT THE START
/           OF ALL MOTION FUNCTIONS AND INCREMENTED (OR 
/           DECREMENTED IF BACKWARDS) BY THE FOLLOWING
/           FUNCTIONS-
/ 
/             1. LONG FORESPACE/LONG BACKSPACE
/             2. ERASE REPOSITION 
/             3. WRITE REPOSITION/WRITE REPOSITION TO ERASE 
/             4. REREAD 
/ 
/           IF A FATAL ERROR OCCURS DURING A MULTI-BLOCK
/           FUNCTION, (E.G., REREAD), THE POSITION FOLLOWING
/           THE LAST SUCCESSFUL MOTION IS REPORTED. 
/ 
/           SEE THE FOLLOWING FOR THE OCTAL EQUIVALENTS FOR 
/           BITS 0-3 AND THEIR DESCRIPTION- 
/ 
/             PP= 00 - TAPE WAS NOT MOVED SUCCESSFULLY OR,
/                      THE FUNCTION WAS NOT ONE OF THOSE
/                      DESCRIBED IN THE ABOVE.
/               = 01 - TAPE WAS SUCCESSFULLY MOVED ONE (1)
/                      BLOCK FORWARD. 
/               = 17 - TAPE WAS SUCCESSFULLY MOVED ONE (1)
/                      BLOCK BACKWARDS. 
/ 
/    XNNX=  LENGTH OF LARGEST NOISE BLOCK (ALERT) (BITS 4-8)
/           THIS NUMBER (02-76) INDICATES THE LENGTH IN 
/           FRAMES, OF THE LONGEST BLOCK READ THAT WAS
/           SHORTER THAN THE MINIMUM LENGTH. THIS FIELD IS
/           CLEARED AT THE INITIATION OF ALL MOTION 
/           FUNCTIONS, EXCEPT -REPEAT READ-.
/ 
/    YXXX=  UNUSED. 
/ 
 1 PAUSE
   EXIT TO 995
   END 1
COMPILE,SOURCE  - T6X994 -                                               T6X002J
   MODULE T6X995,66X(42,52),LOCK
/      *******************************************
/      *DETAILED STATUS,WORD 7 AND 8,DESCRIPTION *
/      *******************************************
/ 
/  WORD 7=  -FRAME COUNT- 
/   AND     DETAILED STATUS WORDS 7 AND 8 HAVE BEEN COMBINED
/  WORD 8   TO DISPLAY THE FRAME COUNT, AS FOLLOWS- 
/ 
/             READ - THE NUMBER OF FRAMES IN THE BLOCK LAST 
/                    READ OR SPACED OVER. IT IS NOT AFFECTED
/                    BY THE AMOUNT OF DATA ACCEPTED BY THE
/                    PP.
/ 
/            WRITE - THE FRAME COUNT IS ZERO FOR A NORMAL 
/                    WRITE. FRAME COUNT ERROR NUMBER 2 OR 3 
/                    WILL CAUSE A NEGATIVE (MODULO 512) OR
/                    POSITIVE NON-ZERO VALUE, RESPECTIVELY. 
/ 
/                ****************************************** 
/                * ACCUMULATIVE STATUS, WORDS 1 THROUGH 8 * 
/                *       BIT LAYOUT AND DESCRIPTION       * 
/                ****************************************** 
/ 
/  WORD 1=  BITS 11-0 IS THE 5TH WORD (BYTE) OF -DETAILED 
/           STATUS-. THIS IS RETURNED FOR CONVENIENCE IN
/           IDENTIFYING THE TAPE UNIT.
/ 
/  WORD 2=  BITS 11-8 IS THE LOGICAL NUMBER OF THE LAST 
/           TAPE TRANSPORT CONNECTED. 
/           BITS 7-0 ARE THE BLOCKS WRITTEN (UPPER 8 BITS)
/ 
/  WORD 3=  BITS 11-4 ARE THE BLOCKS WRITTEN (LOWER 8 BITS).
/           BITS 3-0 ARE THE BLOCKS READ (UPPER 4 BITS).
/ 
/  WORD 4=  BITS 11-0 ARE THE BLOCKS READ (LOWER 12 BITS).
/ 
/         NOTE- A BLOCK READ FORWARD OR BACKWARD IS COUNTED 
/               REGARDLESS OF WHETHER DATA IS TRANSMITTED,
/               E.G., A SEARCH FM/TM FUNCTION WILL INCREMENT
/               THE COUNT BY THE NUMBER OF BLOCKS IT MUST 
/               SPACE OVER TO REACH THE FM/TM, PLUS ONE MORE
/               FOR THE FM/TM.
/ 
/  WORD 5=  BITS 11-4 IS THE START ERROR COUNT. THESE ERRORS
/           ARE DETERMINED BY THE NUMBER OF BLOCKS WRITTEN
/           WHERE VELOCITY WAS LOW AT WRITE PERMIT TIME, BUT
/           REACHED FULL SPEED WITHIN 0.20 INCHES (CALCULATED 
/           AT FULL SPEED). BITS 3-0 ARE THE STOP ERRORS
/           (UPPER 4 BITS). 
/ 
/  WORD 6=  BITS 11-8 ARE THE STOP ERRORS (LOWER 4 BITS). 
/           THESE ERRORS ARE DETERMINED BY THE NUMBER OF
/           BLOCKS THAT WERE WRITTEN WHEN WRITE PERMIT
/           OCCURRED TOO SOON AFTER STARTING MOTION. BITS 
/           7-0 ARE THE READ VELOCITY ERRORS. THESE ERRORS
/           ARE DETERMINED BY THE NUMBER OF BLOCKS THAT WERE
/           READ WHEN VELOCITY WAS NOT AT FULL SPEED WHEN 
/           THE FIRST FRAME WAS READ AND/OR DROPPED DURING
/           THE READ. 
/ 
/  WORD 7=  BITS 11-4 ARE THE NUMBER OF NOISE BLOCKS
/           DISCARDED. THESE ARE DETERMINED BY THE NUMBER 
/           OF BLOCKS THAT WERE READ WHICH WERE SHORTER THAN
/           THE MINIMUM BLOCK LENGTH SPECIFIED. THIS IS DONE
/           VIA THE FORMAT FUNCTION.
/ 
/           BITS 3-0 UPPER 4 BITS OF TRACK CORRECTED BLOCKS 
/           READ. 
/ 
/  WORD 8=  BITS 11-0 LOWER 12 BITS OF TRACK CORRECTED
/           BLOCKS READ.
 1 PAUSE
   EXIT 
   END 1
COMPILE,SOURCE  - T6X995 -                                               T6X002J
**** END OF MODULES ****
