*DECK,T7X 
* 
*** T7X  - 67X TAPE TEST -
*** T7X OVERVIEW
**
* 
*   AUTHOR   - J. E. SIPPER 
*              MAINTENANCE SOFTWARE ENGINEERING 
*              ENGINEERING SERVICES 
* 
*            - J. M. SKOWRONEK
* 
*   DATE     - 78/03/16 
* 
*   OVERVIEW -
* 
*         T7X IS A 67X ADVANCED TAPE  SUBSYSTEM  (ATS), OR 698 CYBER
*         MAGNETIC TAPE SUBSYSTEM  (CMTS) UNIT ISOLATION
*IF,DEF,CMSE17X,1                                                        T7X013G
*         DIAGNOSTIC THAT RUNS UDER THE DEMOT SOFTWARE SUBSYSTEM.  IT    T7X012G
*IF,-DEF,CMSE17X,1                                                       T7X012G
*         DIAGNOSTIC  THAT RUNS UNDER THE MALET SOFTWARE SUBSYSTEM.  IT 
*         IS DESIGNED TO TEST ONE TAPE TRANSPORT AT A TIME. 
* 
*              *******  NOTE  ******* 
* 
*         T7X IS DESIGNED TO EXECUTE ON A 67X TAPE TRANSPORT AND
*         CONTROLLER THAT SUPPORTS THE ENHANCED DIAGNOSTIC FEATURES 
*         (ADDITIONAL STATUS BITS AND SECOND LOOPBACK OPTION IN THE 
*         TRANSPORT).  IF THESE OPTIONS ARE NOT INSTALLED INTO THE
*         HARDWARE/CONTROLWARE, THE USER MUST USE THE INTERIM VERSION 
*         OF T7X (CALLED T7W).  ONCE THE OPTIONS ARE INSTALLED, THE 
*         USER MUST USE T7X.
* 
*         PARAMETERS  SELECTED  VIA  THE  *PARAM* DIRECTIVE ARE USED TO 
*         DETERMINE THE TAPE SPEED, DENSITY, ASSEMBLY/DISASSEMBLY MODE, 
*         TRANSLATION  MODE, EVEN/ODD  PARITY, AND RECORD LENGTH. THESE 
*         PARAMETERS MUST  BE  SPECIFIED.   OTHER  OPTIONAL  PARAMETERS 
*         INCLUDE  THE  FOLLOWING  -  BYPASS  RECORD NUMBERING, COMPARE 
*         DATA, MAINTENANCE MODE, BYPASS WAIT *PARKED*, FILE COUNT  AND 
*         RECORD  COUNT  (SEE  MODULE  T7X99  FOR  PARAMETER SETTINGS). 
* 
*         T7X IS STRUCTURED AS AN INVERTED PYRAMID TEST WHICH WORKS ITS 
*         WAY  THROUGH  THE  COUPLER, THE CONTROLLER AND UNIT TRYING TO 
*         PROVE THAT EACH PIECE OF THE SUBSYSTEM IS  FUNCTIONAL  BEFORE 
*         USING IT IN MORE COMPLEX TESTS.  ATTEMPTS ARE MADE TO ISOLATE 
*         TAPE HANDLING PROBLEMS (LOOPS,  REELS,  VELOCITY,  ETC)  FROM 
*         DATA INTEGRITY PROBLEMS.
* 
*         ONCE AN ERROR HAS BEEN DETECTED, A TYPICAL MODULE WILL CALL A 
*         STATUS ANALYSIS MODULE TO ANALYZE THE LAST TAKEN STATUS IN AN 
*         ORDERED FORMAT TO DETERMINE  THE  MOST  CRITICAL  ERROR  THAT 
*         EXISTS. 
* 
*         FOR A 67X THIS RESULTS IN THE POSTING OF A DDLT INDEX WITH
*         A MESSAGE THAT GIVES A VERBAL DESCRIPTION OF THE ERROR. 
*         THIS INDEX IS THEN USED TO REFERENCE THE DDLT DICTIONARY
*         FOR T7X THAT IDENTIFIES THE MOST LIKELY CAUSE OF THIS 
*         FAILURE AND IDENTIFIES WHAT SHOULD BE ATTEMPTED TO CORRECT
*         THE ERROR.
* 
*         FOR A 698 THIS RESULTS IN THE POSTING OF AN ERROR CODE WITH 
*         A MESSAGE THAT GIVES THE VERBAL DESCRIPTION OF THE ERROR. 
* 
* 
* 
*** T7X MODULES 
* 
**
*   1.0   MODULES 
* 
*         T7X IS COMPOSED OF TWO GROUPS OF MODULES.  THE FIRST GROUP
*         CAN BE USED TOGETHER AS A CONFIDENCE LEVEL DIAGNOSTIC OR
*         MODULES USED INDEPENDENTLY TO PERFORM REPAIR.  THE SECOND 
*         GROUP IS PROVIDED STRICTLY FOR REPAIR OR FOR SPECIAL
*         APPLICATIONS. 
* 
*         ALTHOUGH MOST MODULES ARE STAND-ALONE AND MAY BE RUN IN ANY 
*         SEQUENCE, THERE ARE SPECIFIC MODULES WHICH READ TAPE THAT 
*         REQUIRE A MODULE TO BE EXECUTED FIRST, IN ITS ENTIRETY, TO
*         WRITE THE TAPE.  ERRORS MAY BE EXPECTED IN A READ MODULE IF 
*         THE WRITE MODULE IS STOPPED BEFORE TERMINATING NORMALLY.
*         REPEAT MODULE AND CONDITION SHOULD BE USED WITH CARE IN THESE 
*         SITUATIONS (DO NOT REPEAT A WRITE MODULE AND AFTER SEVERAL
*         PASSES, STOP IT AND THEN EXECUTE A READ MODULE - THE CORRECT
*         SEQUENCE FOR TERMINATING A WRITE MODULE THAT IS BEING 
*         REPEATED IS TO STOP IT, CLEAR THE REPEAT OPTION AND THEN GIVE 
*         THE MODULE A GO TO CONTINUE TO NORMAL TERMINATION). 
* 
*         THE FOLLOWING MODULES RELY UPON PROPER SEQUENCING OF THE
*         WRITE MODULE PRIOR TO EXECUTION OF THE READ MODULE
* 
*                  READ                        WRITE
* 
*           T7X31,32,33,34 - PLOTS     T7X30 - WRITE TAPE FOR PLOTS 
*           T7X42 - READ TAPE MARKS    T7X41 - WRITE TAPE MARKS 
*           T7X44,45 - READ            T7X43 - WRITE
*           T7X57    - RANDOM READ     T7X56 - RANDOM WRITE 
* 
*         THE MAJORITY OF T7X MODULES SUPPORT THE SCOPING LOOP OPTION 
*         (SE CLEAR AND RM OR RC SET).  THIS ALLOWS A FAILING SEQUENCE
*         TO BE REPEATED RAPIDLY FOR SCOPING, SHOCK TESTING, ETC. TO
*         PERFORM REPAIR.  DURING A SCOPING LOOP SITUATION, ONLY THE
*         PASS COUNT AND ERROR COUNT IS PRESENTED AS OUTPUT.  THE 
*         FOLLOWING MODULES DO NOT SUPPORT SCOPING LOOPS. 
* 
*           T7X00 - PARAMETER VALIDATION
*           T7X22 - PARK COUNTS 
*           T7X31,32,33,34 - START/GAP PLOTS
*           T7X58 - POLYNOMIAL TEST 
*           T7X59 - POSITION TEST 
*           T7X60 - LADDER TEST 
*           T7X63 - BLOCK ID TEST 
*           T7X71 - CREEP 
*           T7X73 - SERVO ADJUST                                         T7X009J
*** 
**
* 
*   1.1   PART ONE - DIAGNOSTIC PASS
* 
*      1. VERIFY PARAMETERS 
* 
*         T7X00 - PARAMETER VALIDATION
* 
* 
*      2. INSURE CONTROLLER IS OPERATIONAL
*         (T7X04 - T7X05 ARE NOT RUN ON 698/CMTS SUBSYSTEM) 
* 
*         T7X02 - COUPLER PATH
*         T7X03 - TCU LOOP-BACK 
*         T7X04 - TCU ERROR GENERATION
*         T7X05 - TCU VELOCITY
* 
* 
*      3. TEST UNIT DATA INTEGRITY WITH NO TAPE MOTION
*         (T7X11 IS NOT RUN ON 698/CMTS SUBSYSTEM)
* 
*         T7X10 - UNIT I/O LOOPBACK 
*         T7X11 - UNIT HEAD LOOPBACK
* 
*      4. VERITY TAPE HANDLING CAPABILITIES 
*         (T7X22 IS NOT RUN ON 698/CMTS SUBSYSTEM)
* 
*         T7X20 - LOOPS AND VELOCITY
*         T7X21 - RANDOM LOOPS AND VELOCITY 
*         T7X22 - PARK COUNTS 
* 
* 
*      5. PRELIMINARY DATA INTEGRITY TESTING BY TRACK 
* 
*         T7X23 - TRACK TEST
* 
* 
*      6. VERIFY START/STOP TIMES/DISTANCE AND TAPE TRACKING. 
*         (T7X30 - T7X36 ARE NOT RUN ON 698/CMTS SUBSYSTEM) 
* 
*         T7X30 - WRITE TAPE FOR MEASUREMENTS 
*         T7X31 - FORWARD START MEASUREMENTS
*         T7X32 - REVERSE START MEASUREMENTS
*         T7X33 - FORWARD GAP MEASUREMENTS
*         T7X34 - REVERSE GAP MEASUREMENTS
*         T7X36 - TAPE TRACKING 
* 
* 
*** 
**
*      7. TEST DATA INTEGRITY OF SINGLE OPERATIONS
* 
*         T7X40 - ERASE 
*         T7X41 - WRITE TAPE MARK/FILE MARK 
*         T7X42 - READ TAPE MARK/FILE MARK
*         T7X43 - WRITE 
*         T7X44 - READ FORWARD
*         T7X45 - READ FORWARD/REVERSE
*         T7X46 - CANNED POLYNOMIAL 
*         T7X47 - CAPSTAN GO DOWN-TIME                                   T7X008J
* 
* 
*      8. PERFORMANCE TEST USING SEQUENCES OF OPERATIONS
*         (T7X52, T7X53, T7X61, T7X62  ARE NOT RUN ON 698/CMTS
*         SUBSYSTEM). (T7X63 DOES NOT RUN ON 67X/ATS SUBSYSTEM).
* 
*         T7X50 - BACKSPACE 
*         T7X51 - BACKSPACE INCREMENTING LENGTH 
*         T7X52 - CONTROLLED BACKSPACE
*         T7X53 - CONTROLLED BACKSPACE INCR. LENGTH 
*         T7X54 - WRITE SKIP TO ERASE 
*         T7X55 - WRITE SKIP INCR. LENGTH 
*         T7X56 - RANDOM WRITE
*         T7X57 - RANDOM READ FORWARD /REVERSE
*         T7X58 - POLYNOMIAL TEST 
*         T7X59 - POSITION TEST 
*         T7X60 - LADDER TEST 
*         T7X61 - 9TK READ RECOVERY 
*         T7X62 - READ CLIP LEVELS TEST 
*         T7X63 - BLOCK ID TEST 
* 
* 
*   1.2   PART TWO - REPAIR MODULES 
*         (T7X71 IS NOT RUN ON 698/CMTS SUBSYSTEM)
* 
* 
*         T7X70 - TAPE PATH DAMAGE
*         T7X71 - CREEP 
*         T7X72 - GENERAL STATUS
*         T7X73 - SERVO ADJUST                                           T7X009J
*         T7X75 - SEARCH FILE MARK TEST (AL 10 REQUIRED)
*         T7X76 - NOISE BYPASS TEST     (AL 10 REQUIRED)
*         T7X77 - WARMSTART READ TEST   (AL 10 REQUIRED)
*         T7X80 - COMPATIBILITY TEST
*         T7X81 - COMPATIBILITY TAPE CLEAN-UP 
*         T7X82 - GCR KILLER PATTERN
*         T7X83 - KILLER/RANDOM WRITE WITH ALERT
*         T7X84 - MAINTENANCE LONG WRITE
*         T7X85 - KILLER/RANDOM WRITE SENSING FROM POINTER REGISTER 
*         T7X86 - INHIBITOR TAPE TEST ONE 
*         T7X87 - INHIBITOR TAPE TEST TWO 
*         T7X93 - READ AND DISPLAY TRACK ERRORS 
* 
* 
*** T7X PARAMETERS
* 
**
*   2.0   T7X PARAMETER REGISTER CONTENTS 
* 
*         PARAMETER VALIDATION IS DONE BY MODULE T7X00, 
*         NORMALLY THE FIRST MODULE EXECUTED IF THE *RUN* 
*         DIRECTIVE IS  RUN T7X  OR  RUN T7X00.  HOWEVER, 
*         THE USER CAN RUN SPECIFIC MODULES, THUS BYPASSING 
*         THE EXECUTION OF T7X00.  IT IS RECOMMENDED THAT 
*         T7X00 ALWAYS BE EXECUTED INITIALLY TO VALIDATE
*         PARAMETERS.  EXAMPLE. 
* 
*                              RUN T7X(00,20) 
* 
*                                  OR 
* 
*                              RUN T7X(00)
*                              RUN T7X40
* 
*         IF THIS PROCEDURE IS NOT FOLLOWED, ERRORS MAY RESULT
*         DUE TO ILLEGAL PARAMETERS.  (T7X IS DESIGNED TO ALLOW 
*         ILLEGAL PARAMETERS FOR SPECIAL CASES WHERE ERROR
*         GENERATION IS DESIRED). 
* 
*         PARAMETER REGISTERS ARE SET BY THE USER WITH THE *PARAM*
*         DIRECTIVE.  ANY REGISTER NOT SET WILL DEFAULT TO 0000.
*         REGISTERS P0, P1 AND P2 MUST BE SET BY THE USER TO DEFINE 
*         OPERATING MODES.  ALL OTHER REGISTERS MAY BE LEFT AT THEIR
*         DEFAULT VALUE OF ZERO.
* 
* 
*                    *******  NOTE  ******* 
* 
*         TO RUN T7X ON A 67X 7 TRACK UNIT USING EVEN PARITY
*         (P1 = 1XXX OR 3XXX) THE FOLLOWING CONDITIONS
*         SHOULD BE MET THROUGH PARAMETER SETTINGS SO AS
*         TO DO PROPER TESTING AND NOT INDUCE FALSE ERRORS. 
* 
*         1. RECORD NUMBERING SHOULD BE BYPASSED.          (P3 = XXX1)
* 
*         2. FIXED PATTERN SHOULD BE SELECTED AND THE PATTERN 
*            (XX) CAN CONTAIN ANYTHING BUT 12 OR 00.       (P4 = 00XX)
* 
*                             OR
* 
*         3. ALTERNATE PATTERN SHOULD BE SELECTED AND THE DATA PATTERN
*            (XX) CAN CONTAIN ANYTHING BUT 77,65,12 OR 00. (P4 = 10XX)
* 
*         4. MODULES 23,56,57,58 OR 62 CANNOT BE RUN BECAUSE
*            THEY GENERATE THEIR OWN DATA PATTERNS. 
* 
*         IT IS ALSO RECOMMENDED TO USE MALET DIAGNOSTIC ATC
*         FOR EVEN PARITY (ATS) CONTROLLER PROBLEMS.
*** 
**
*         THE FOLLOWING CROSS-REFERENCE TABLE DEFINES WHICH MODULES 
*         OF T7X USE SPECIFIC PARAMETER REGISTERS.
* 
*                 P0   P1   P2   P3   P4   P5   P6   P7   P8   P9 
*                -------------------------------------------------
*         T7X00    X    X    X    X    X
*         T7X00A   X    X    X    X    X
*         T7X02         X 
*         T7X03         X 
*         T7X03A        X 
*         T7X04         X 
*         T7X10         X 
*         T7X10A        X 
*         T7X11         X 
*         T7X20    X    X 
*         T7X21    X    X 
*         T7X22         X 
*         T7X23         X 
*         T7X30    X    X 
*         T7X31    X    X         X 
*         T7X32    X    X         X 
*         T7X33    X    X         X 
*         T7X34    X    X         X 
*         T7X36 
*         T7X40         X         X         X    X         X
*         T7X41         X         X         X    X         X
*         T7X42         X         X         X    X         X
*         T7X43         X    X    X    X    X    X    X    X    X 
*         T7X44         X    X    X    X    X    X         X    X 
*         T7X45         X    X    X    X    X    X         X    X 
*         T7X46         X         X         X    X
*         T7X47         X    X    X    X                                 T7X008J
*         T7X50         X    X    X         X    X         X
*         T7X50A        X    X    X         X    X         X
*         T7X51         X         X         X    X         X
*         T7X51A        X         X         X    X         X
*         T7X52         X    X    X         X    X         X
*         T7X53         X         X         X    X         X
*         T7X54         X    X    X    X    X    X    X    X
*         T7X55         X         X    X    X    X    X    X
*         T7X56         X         X    X    X    X    X    X    X 
*         T7X57         X         X    X    X    X         X    X 
*         T7X58         X    X    X    X    X    X    X    X
*         T7X59         X    X    X                        X
*         T7X59A        X    X    X                        X
*         T7X60         X         X    X              X 
*         T7X60A        X         X    X              X 
*         T7X61         X                             X 
*         T7X62         X    X                        X 
*         T7X63         X    X
*         T7X70         X         X 
*         T7X71         X         X 
*         T7X72         X 
*         T7X72A        X 
*         T7X73         X                                                T7X009J
*         T7X75         X                                       X 
*         T7X75A        X                                       X 
*         T7X76         X                                       X 
*         T7X77         X                                       X 
*         T7X80         X    X    X                             X 
*         T7X81         X         X                        X
*         T7X82    X    X 
*         T7X82A        X    X         X
*         T7X83         X    X         X    X    X         X    X 
*         T7X83B/C      X    X         X    X    X         X    X 
*         T7X84         X    X    X    X    X    X    X    X    X 
*         T7X85         X    X         X    X    X         X    X 
*         T7X85B/C      X    X         X    X    X         X    X 
*         T7X86         X 
*         T7X87         X 
*         T7X93         X         X                        X
*         T7X93B        X                                  X
* 
*** 
**
*         P0 = TAPE SPEED AS FOLLOWS
* 
*              100 = 100 IPS
*              125 = 125 IPS
*              150 = 150 IPS
*              200 = 200 IPS
* 
*         P1 = PCAD 
* 
*              PXXX - PARITY
* 
*                     0XXX = ODD PARITY  - ERROR CORRECTION ENABLED 
*                     1XXX = EVEN PARITY - ERROR CORRECTION ENABLED 
*                     2XXX = ODD PARITY  - ERROR CORRECTION DISABLED
*                                          WRITE AND READ FORWARD.
*                     3XXX = EVEN PARITY - ERROR CORRECTION DISABLED
*                                          WRITE AND READ FORWARD.
*                     4XXX = ILLEGAL
*                     5XXX = ILLEGAL
*                     6XXX = ODD PARITY  - ERROR CORRECTION DISABLED
*                                          WRITE AND READ FORWARD AND 
*                                          READ REVERSE.
*                     7XXX = EVEN PARITY - ERROR CORRECTION DISABLED
*                                          WRITE AND READ FORWARD AND 
*                                          READ REVERSE.
* 
* 
*              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
*                     X4XX =  USE CODE TRANSLATION TABLE 4
*                     X5XX AND X6XX ARE ILLEGAL 
*                     X7XX =  INTERNAL TO EXTERNAL TRANSLATION
*                             IF EVEN PARITY AND 7 TRACK
* 
* 
*              XXAX - ASSEMBLY/DISASSEMBLY
* 
*                     XX0X =  A/D 6 BIT MODE
*                     XX1X =  A/D PACKED MODE 
*                     XX2X THRU XX7X ARE ILLEGAL
* 
* 
*              XXXD - DENSITY 
* 
*                     XXX0 =  556 BPI 
*                     XXX1 =  800 BPI 
*                     XXX2 = 1600 BPI 
*                     XXX3 =  200 BPI 
*                     XXX4 = 6250 BPI 
*                     XXX5 THRU XXX7 ARE ILLEGAL
* 
* 
*         P2 = RECORD LENGTH
* 
* 
* 
*         P3 = FCFF = FLAG BITS /MARGINS
* 
*              FXXX - FLAG BITS 
* 
*                     1XXX = PRINT START/GAP PLOTS EVEN 
*                            IF NO ERRORS OCCURRED. 
*                     2XXX = RESERVED FOR FUTURE USE
*                     4XXX = RESERVED FOR FUTURE USE
* 
* 
*              XCXX - CLIP LEVELS FOR 67X/ATS 
* 
*                     X0XX =  NORMAL CLIP 
*                     X1XX =  HIGH READ CLIP
*                     X2XX =  LOW READ CLIP 
*                     X3XX =  HYPER READ CLIP 
*                     X4XX THRU X7XX ARE ILLEGAL
* 
*              XCXX - CLIP LEVELS FOR 698/CMTS
* 
*                     X0XX =  NOT USED
*                     X1XX =  NOT USED
*                     X2XX =  NOT USED
*                     X3XX THRU X7XX ARE ILLEGAL
* 
*              XXFF = FLAG BITS 
* 
*                     XX4X = MAINTENANCE MODE (0 = DIAGNOSTIC MODE) 
*                            IN MAINTENANCE MODE, MODULES WHOSE 
*                            DURATION IS CONTROLLED BY P8 (FILE COUNT)
*                            OR P9 (RECORD COUNT) USE THE VALUES
*                            SUPPLIED BY THE USER IN P8 AND P9 (IF
*                            THESE VALUES ARE ZERO OR NOT SPECIFIED,
*                            THE FULL REEL OF TAPE IS USED TO CONTROL 
*                            DURATION). 
*                            IN DIAGNOSTIC MODE, MODULES WHOSE DURATION 
*                            IS CONTROLLED BY P8 (FILE COUNT) WILL
*                            IGNORE THE VALUE SUPPLIED BY THE USER IN 
*                            P8 AND WILL DEFAULT THE FILE COUNT TO 100
*                            OCTAL.  HOWEVER, MODULES WHICH USE REGISTER
*                            P9 STILL DEPEND UPON USER SUPPLIED VALUES
*                            IN P8 AND P9 TO CONTROL DURATION (SEE
*                            PARAMETER CROSS-REFERENCE TABLE).
* 
* 
*                     XX2X = BYPASS WAIT *PARKED* IF SET
*                            IF THIS BIT = 0, WAIT UNTIL THE UNIT IS
*                            PARKED (MOTION STOPPED) AFTER EACH 
*                            OPERATION.  IF THE BIT = 1, CONTINUE THE 
*                            NEXT OPERATION AT FULL SPEED.  (SEE THE
*                            PARAMETER CROSS-REFERENCE TABLE FOR A
*                            LIST OF MODULES THAT USE THIS PARAMETER).
* 
*                     XX1X = N/A
* 
*                     XXX4 = LOCK TO BASE NUMBER,IF RANDOM
*                            DATA PATTERN IS SELECTED,
*                            P7 WILL CONTAIN THE BASE 
* 
*                     XXX2 = COMPARES THE FIRST 400 
*                            OCTAL WORDS OF THE INPUT BUFFER EVEN 
*                            IF NO ERRORS OCCUR 
* 
*                     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 
* 
* 
*         P4 = DATA PATTERN GENERATION CONTROL
* 
*              4XXX = REPORT FM/TM ERRORS 
* 
* 
*              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) 
* 
* 
*              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 
*                     STORED IN  THE 2ND, 4TH, 6TH ETC BYTES. 
*                     (6 BIT STORES ARE DONE FOR 7TK AND
*                     8 BIT STORES ARE DONE FOR 9TK.
*                     EXAMPLE    P4 = 1000      (ASSUME 7TK)
* 
*                                DATA STORED = 0077 0077 0077 ETC.
* 
*              0XXX = SELECT FIXED PATTERN XXX
*                     XXX IS A 6 OR 8 BIT PATTERN DEPENDING 
*                     ON DRIVE TYPE(7 OR 9 TRACK).
* 
* 
*         P5 = RANDOM MILISECOND DELAY MASK 
* 
*              0000 = DISABLES USE OF RT CLOCK FOR
*                     GENERATION OF RANDOM DELAYS.
*                     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 = FIXED MILISECOND DELAY 
* 
*              XXXX = IF P5=0000, P6 WILL BE USED AS FIXED
*                     DELAY OF XXXX MILISECONDS.
* 
* 
*         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 (DOUBLE EOFS FOR
*                     T7X93) TO WRITE/READ PER MODULE.
* 
*              XXXX - MAXIMUM NUMBER OF PASSES TO READ IN 
*                     MODULES T7X83A, T7X85A, T7X83C AND T7X85C.
* 
* 
* 
*         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 (FOR MODULE T7X80 ONLY) 
* 
*              0000 - WRITE THE TAPE IN MODULES T7X83, T7X85
*                     T7X83B AND T7X85B.
* 
*** T7X ERROR MESSAGES
**
*   3.0   T7X MESSAGES
* 
* 
*         ERRORS MAY BE REPORTED FROM ANY ONE OR ALL OF THE 
*         FOLLOWING SOURCES_
* 
*          1. MODULE TEST SEQUENCE-      EC 1XX-2XX ERRORS
* 
*          2. 67X/ATS STATUS ANALYSIS -  DDLT CODES 03XX-3XXX 
* 
*          3. ATS CONTROLWARE ERRORS -   CW ERROR 4XXX CODES
* 
*          4. CMTS MICRO DIAG ERRORS -   ROM EC 51XX-56XX 
* 
*          5. 698/CMTS STATUS ANALYSIS - EC 03XX-7XX
* 
*          6. PRODUCT OVERLAY -          E51XX ERROR CODES
* 
* 
* 
*   3.1   MODULE TEST SEQUENCE DETECTED ERRORS
* 
* 
*           EC 060 - EOT DETECTED BEFORE DETECTING EOF, EITHER
*                    UNIT CANNOT DETECT EOF OR TAPE NOT WRITTEN 
*                    BY CORRECT T7X MODULE...CHECK PARAMETERS.. 
* 
*           EC 070 - TAPE MOUNTED IS NOT A -COMPAT- TAPE
* 
*           EC 071 - RECORD COUNT=*OCT IN FILE *OCT, EXP=0311 
* 
*           EC 072 - RECORD COUNT=*OCT AT EOF *OCT, EXP=*OCT
* 
*           EC 073 - FILE COUNT=*OCT AT LOAD POINT, EXP=0000
* 
*           EC 101 - READ RAM *OCT DATA ERROR 
* 
*           EC 102 - WRITE RAM *OCT DATA ERROR
* 
*           EC 103 - NO EOF STATUS AFTER ENDFILE *OCT 
* 
*           EC 104 - STATUS ERROR AFTER ENDFILE *OCT
* 
*           EC 105 - DATA COMPARE ERROR. THE FIRST 400B WDS 
*                    (OR THE RECORD LENGTH IN P2) THAT WERE 
*                    TRANSFERED DO NOT COMPARE ALTHOUGH NO
*                    SUBSYSTEM ERRORS WERE REPORTED.
* 
*           EC 106 - WRITE *OCT POLY=*OCT EXP=*OCT
* 
*           EC 107 - NO ALERT ON PATHERR *OCT 
* 
*           EC 110 - NO ALERT ON DATA ERR *OCT
* 
*           EC 111 - STATUS ERROR ON VELOCITY TEST
* 
*           EC 112 - NO EOF STATUS ON ENDFILE *OCT
* 
*           EC 113 - STATUS ERROR AFTER ENDFILE *OCT
* 
*           EC 114 - STATUS ERROR AFTER WRITE *OCT
* 
*           EC 115 - WRITE *OCT POLY=*OCT EXP=*OCT
* 
*           EC 116 - NO EOF STATUS ON ENDFILE *OCT
* 
*           EC 117 - STATUS ERROR AFTER ENDFILE *OCT
* 
*           EC 120 - STATUS ERROR AFTER LOOPFSC *OCTB 
* 
*           EC 122 - NO FM/TM STATUS IN GENERAL STATUS AT 
*                    END OF OPERATION AFTER A WRITE FM/TM 
* 
*           EC 123 - TAPE UNIT NOT READY
* 
*           EC 124 - RECORDING MODE NOT PHASE OR GCR
* 
*           EC 130 - STATUS ERROR AFTER WRITE *OCT
* 
*           EC 131 - WRITE *OCT POLY=*OCT EXP=*OCT
* 
*           EC 132 - ABNORMAL STATUS
* 
*           EC 133 - FORWARD START EXCEEDS LIMITS 
* 
*           EC 134 - REVERSE START EXCEEDS LIMITS 
* 
*           EC 135 - REVERSE GAP EXCEEDS LIMITS 
* 
*           EC 136 - FORWARD GAP EXCEEDS LIMITS 
* 
*           EC 137 - STILL AT BOT AFTER AN ERASE
* 
*           EC 140 - EOT PRESENT AFTER EOT AND 7 REV READS
* 
*           EC 141 - NO EOT STATUS AFTER EOT AND REV READ 
* 
*           EC 200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*                    STATUS DURING A WRITE OPERATION. NOTE
*                    THAT GENERAL STATUS WAS MASKED WITH
*                    5034B. 
* 
* 
*           EC 202 - A STATUS ERROR OCCURRED ON A REVERSE 
*                    READ. THE INPUT BUFFER CONTAINS THE
*                    DATA JUST READ.
* 
*           EC 203 - ALERT BIT IN GENERAL STATUS WAS SET
*                    DURING A READ FORWARD OPERATION. THE 
*                    INPUT BUFFER CONTAINS THE DATA READ. 
* 
* 
*           EC 204 - ANY CORRECTOR FLAGS (WORD 4) IN T7X83A OR
*                    ANY BITS SET IN POINTERS (WORD 7) IN T7X85A. 
*                    THE INPUT BUFFER CONTAINS THE DATA JUST READ.
* 
*           EC 207 - A FM/TM WAS DETECTED OUT OF EXPECTED 
*                    POSITION ON A READ OPERATION.  FOR THIS
*                    ERROR TO BE REPORTED, P4=4XXX. 
* 
* 
*           EC 211 - INCORRECT FILE DETECTED DURING A RANDOM
*                    READ.
* 
*           EC 212 - INCORRECT RECORD HAS BEEN DETECTED 
*                    DURING A RANDOM READ.
* 
*           EC 213 - INCORRECT RECORD LENGTH HAS BEEN 
*                    DETECTED DURING A RANDOM READ. 
* 
* 
*           EC 215 - THE WRITE AND READ POLYNOMIALS HAVE
*                    FAILED TO COMPARE DURING THE -CANNED 
*                    POLYNOMIAL- TEST.  B3=EXPECTED  SB(2)= 
*                    ACTUAL B4=DATA STARTER.
* 
* 
*           EC 217 - ALERT IS SET AFTER A CONTROLLED BKSP.
* 
*           EC 220 - A STATUS ERROR OCCURRED ON THE READ
*                    BACKWARDS FOLLOWING A CONTROLLED BKSP. 
* 
*           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 REVERSE READ FOLLOWING A CONTROLLED
*                    BKSP.  SEE WC AND WT.
* 
* 
*           EC 226 - ERROR HAS OCCURRED DURING A READ FWD 
*                    OPERATION IN THE TAPE PATH DAMAGE TEST.
* 
*           EC 227 - ERROR HAS OCCURRED DURING A READ REV 
*                    OPERATION IN THE TAPE PATH DAMAGE TEST.
* 
* 
*           EC 232 - THE RECORD COUNT IS IN ERROR DURING A
*                    READ FWD IN THE POLYNOMIAL TEST. 
*                    (SEE NOT IN T7X98B)
* 
*           EC 233 - THE RECORD LENGTH IS IN ERROR DURING A 
*                    READ FORWARD IN THE POLYNOMIAL TEST. 
* 
*           EC 234 - THE WRITE AND READ POLYNOMIALS HAVE
*                    FAILED TO COMPARE DURING THE POLYNOMIAL
*                    TEST. B4=WRITE POLY  SB(2)=READ POLY.
* 
*           EC 236 - THE BLOCK IDS OF THE FIRST RECORD AND THE
*                    CURRENT RECORD HAVE FAILED TO COMPARE DURING 
*                    THE -BLOCK ID TEST-. B8= FIRST RECORD BLOCK ID.
*                    SB(2)= CURRENT RECORD BLOCK ID. IF ALL OTHER 
*                    MODULES OF T7X RUN SUCCESSFULLY -REPLACE THE 
*                    FOLLOWING PWA IN THE CCC- A02/B02 IN FR205A
*                    OR A02/A16 IN FR205B.
* 
*           EC 240 - AN ABNORMAL STATUS WAS DETECTED DURING 
*                    A CONTROLLED BKSP IN THE POSITION TEST.
* 
*           EC 241 - AN ABNORMAL STATUS WAS DETECTED DURING 
*                    A BACKSPACE IN THE POSITION TEST.
* 
*           EC 242 - AN ABNORMAL STATUS WAS DETECTED DURING 
*                    A READ FWD IN THE POSITION TEST. 
* 
*           EC 243 - A COMPARE ERROR HAS OCCURED WHEN THE 
*                    WRITE AND READ POLYNOMIALS WERE
*                    COMPARED FOR RECORDS 1,2 OR 3 IN THE 
*                    POSITION TEST. 
* 
*           EC 244 - AN ABNORMAL STATUS WAS DETECTED DURING 
*                    THE FORESPACE OVER RECORD 6 IN THE 
*                    POSITION TEST. 
* 
*           EC 245 - THE READ AND WRITE POLYNOMIALS FOR 
*                    RECORD 6 HAVE FAILED TO COMPARE IN THE 
*                    POSITION TEST. B6= EXP  SB(2)=ACTUAL.
* 
*           EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE. 
* 
* 
*           EC 251 - FILE MARK STATUS IS MISSING AT END-OF
*                    OP DURING A READ FILE MARK REVERSE.
* 
*           EC 252 - FILE MARK STATUS IS MISSING AT END-OF- 
*                    OP DURING A READ FILE MARK FORWARD.
* 
*           EC 253 - A STATUS ERROR OCCURRED ON A BACKSPACE.
* 
*           EC 254 - THE ALERT BIT WAS SET IN GENERAL STATUS
*                    FOLLOWING THE FIRST READ REV AFTER A 
*                    BACKSPACE. STATUS IS MASKED WITH 5034B.
* 
*           EC 255 - AN INCORRECT RECORD LENGTH WAS DETECTED
*                    ON A REVERSE READ FOLLOWING A BACKSPACE
*                    OPERATION. 
* 
*           EC 256 - AN INCORRECT RECORD WAS DETECTED ON A
*                    READ REVERSE FOLLOWING A BACKSPACE.
* 
*           EC 257 - DATA COMPARE ERROR ON WARMSTART READ 
* 
*           EC 260 - NO FILE MARK STATUS AFTER SEARCH FM FWD
* 
*           EC 261 - NO FILE MARK STATUS AFTER SEARCH FM REV
* 
*           EC 262 - FILE MARK STATUS AT LOAD POINT 
* 
*           EC 263 - NO END OF OPERATION
* 
*           EC 264 - NOISE BYPASS FAILURE - NO EOF STATUS 
* 
*           EC 265 - ALERT AFTER WARMSTART READ INPUT 
* 
*           EC 266 - WARMSTART LENGTH ERR- EXP=400 ACT=*OCT 
* 
* 
*           EC 267 - THE NUMBER OF RECORDS WRITTEN AND THE
*                    NUMBER OF RECORDS READ IN REVERSE DO 
*                    NOT COMPARE. THE CONTENTS OF B0 AND B1 
*                    SHOULD BE ZERO BUT ARE NOT.  THE PLUS
*                    OR MINUS VALUE OF THE COUNTS RECORDED
*                    IN B0 AND B1 AT LOAD POINT (AFTER THE
*                    READ REVERSE) ARE EQUAL TO THE NUMBER
*                    OF RECORDS MISSED OR PICKED UP.
* 
*           EC 270 - THE TRACK SPECIFIED IN B1 FAILED TO BE 
*                    CORRECTED ON-THE-FLY IN PHASE OR GCR READ MODE.
* 
*           EC 271 - THE TRACK SPECIFIED IN B1 WAS CORRECTED ON-THE-
*                    FLY IN NRZI. IT SHOULD HAVE REQUIRED A RE-READ.
* 
*           EC 272 - THE TRACK SPECIFIED IN B1 FAILED TO BE CORRECTED 
*                    WITH A RE-READ IN NRZI MODE. 
* 
*           EC 273 - THE TRACKS SPECIFIED IN B2 FAILED TO BE CORRECTED
*                    ON-THE-FLY IN GCR MODE.
* 
*           EC 274 - ALERT WAS SET FOLLOWING A READ FORWARD AT THE READ 
*                    CLIP LEVEL SELECTED IN REGISTER B2.
* 
*           EC 275 - ALERT WAS SET FOLLOWING A READ REVERSE AT THE READ 
*                    CLIP LEVEL SELECTED IN REGISTER B2.
* 
*           EC 276 - SINGLE FRAME SKEW ERROR ON A WRITE 
* 
*           EC 277 - SINGLE FRAME SKEW ERROR ON A READ FWD
* 
*** 
**
* 
*         AN OCTAL NUMBER IS SUBSTITUTED INTO THE FIRST/ONLY
*         SUBSTITUTION WORD WITHIN MESSAGES FOR ERROR CODES 
*         103, 104 AND 106-115. THIS CODE IDENTIFIES THE CURRENT
*         TCU OPTIONS THAT ARE ACTIVE DURING TCU LOOPBACK OPERATIONS
*         AS FOLLOWS
* 
*           0 - 100 IPS GCR 
*           1 - 150 IPS GCR 
*           2 - 200 IPS GCR 
*           3 - 100 IPS PE
*           4 - 150 IPS PE
*           5 - 200 IPS PE
*           6 - 100 IPS 9TK NRZI
*           7 - 150 IPS 9TK NRZI
*          10 - 200 IPS 9TK NRZI
*          11 - 100 IPS 7TK NRZI
*          12 - 150 IPS 7TK NRZI
*          13 - 200 IPS 7TK NRZI
* 
*** 
* 
**
*   3.2   MODULE STATUS ANALYSIS DDLT ERROR CODES FOR 67X ATS SUBSYSTEM 
* 
*         DDLT=0300 TAPE UNIT NOT CONNECTED - SHOULD BE 
*         DDLT=0301 TAPE UNIT THERMAL FAULT 
*         DDLT=0302 TAPE UNIT LAMP FAILURE
*         DDLT=0303 TAPE UNIT RESET KEY DEPRESSED 
*         DDLT=0305 TAPE UNIT CARTRIDGE PRESENT BUT NOT OPEN
*         DDLT=0306 TAPE UNIT CARTRIDGE PRESENT BUT NOT OPEN
*         DDLT=0307 TAPE UNIT CARTRIDGE PRESENT BUT NOT OPEN
*         DDLT=0308 TAPE UNIT CARTRIDGE PRESENT BUT NOT OPEN
*         DDLT=0309 TAPE UNIT TAPE NOT PRESENT AT BOT SENSOR
*         DDLT=0310 TAPE UNIT LOAD FAILURE. REELS NOT LOADED
*         DDLT=0311 TAPE UNIT REELS NOT LOADED
*         DDLT=0313 TAPE UNIT LEFT COLUMN FAULT 
*         DDLT=0314 TAPE UNIT LEFT COLUMN FAULT 
*         DDLT=0315 TAPE UNIT LEFT COLUMN FAULT 
*         DDLT=0316 TAPE UNIT LEFT COLUMN FAULT 
*         DDLT=0317 TAPE UNIT RIGHT COLUMN FAULT
*         DDLT=0318 TAPE UNIT RIGHT COLUMN FAULT
*         DDLT=0319 TAPE UNIT RIGHT COLUMN FAULT
*         DDLT=0320 TAPE UNIT RIGHT COLUMN FAULT
*         DDLT=0321 TAPE UNIT COLUMNS NOT LOADED
*         DDLT=0322 TAPE UNIT LOAD FAILURE. NOT AT BOT
*         DDLT=0323 TAPE UNIT NOT AT BOT AFTER A REWIND 
*         DDLT=0324 TAPE UNIT CLEANER NOT AT HOME 
*         DDLT=0325 TAPE UNIT AIR PRESSURE FAILURE
*         DDLT=0326 TAPE UNIT AIR FLOW MDI
*         DDLT=0327 TAPE UNIT AUTOHUB NOT ACTIVATED 
*         DDLT=0328 TAPE UNIT NOT READY. NO ERROR STATUS
*         DDLT=0329 TAPE UNIT DOOR OPEN 
*         DDLT=0330 TAPE UNIT WINDOW OPEN 
*         DDLT=0331 TAPE SPEED STATUS ERR- EXP=*OCT ACT=*OCT
*         DDLT=0333 TAPE UNIT SLOW START
*         DDLT=0334 TAPE UNIT SLOW START
*         DDLT=0335 TAPE UNIT SLOW START
*         DDLT=0336 TAPE UNIT SLOW START
*         DDLT=0337 TAPE UNIT VELOCITY ERROR
*         DDLT=0338 TAPE UNIT VELOCITY ERROR
*         DDLT=0339 TAPE UNIT VELOCITY ERROR
*         DDLT=0340 TAPE UNIT VELOCITY ERROR
*         DDLT=0341 TAPE UNIT DATA NOT READ AFTER WRITE 
*         DDLT=0342 TAPE UNIT EARLY READ-AFTER-WRITE EOP
*         DDLT=0343 TAPE UNIT 9TK GCR/PE PARK COUNT ERROR 
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0344 TAPE UNIT 9TK GCR/PE PARK COUNT ERROR 
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0345 TAPE UNIT 9TK GCR/PE PARK COUNT ERROR 
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0346 TAPE UNIT 9TK GCR/PE PARK COUNT ERROR 
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0347 TAPE UNIT 7TK PARK COUNT ERROR
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0348 TAPE UNIT 7TK PARK COUNT ERROR
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0349 TAPE UNIT 7TK PARK COUNT ERROR
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0350 TAPE UNIT 7TK PARK COUNT ERROR
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0351 TAPE UNIT 9TK NRZI/PE PARK COUNT ERROR
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0352 TAPE UNIT 9TK NRZI/PE PARK COUNT ERROR
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0353 TAPE UNIT 9TK NRZI/PE PARK COUNT ERROR
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0354 TAPE UNIT 9TK NRZI/PE PARK COUNT ERROR
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0355 TAPE UNIT 9TK GCR/PE PARK COUNT ERROR-PE
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0356 TAPE UNIT 9TK GCR/PE PARK COUNT ERROR-PE
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0357 TAPE UNIT 9TK GCR/PE PARK COUNT ERROR-PE
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0358 TAPE UNIT 9TK GCR/PE PARK COUNT ERROR-PE
*                   EXPECTED = *DEC   ACTUAL = *DEC 
*         DDLT=0359 TAPE UNIT ERASE CURRENT FAILURE 
*         DDLT=0360 TAPE UNIT WRITE CURRENT FAILURE 
*         DDLT=0361 TAPE UNIT AGC FAULT SINCE LAST REWIND 
*         DDLT=0362 TAPE UNIT NOT READY FOR LOOPBACK
*         DDLT=0370 PARK ERR  W TO RR EX=*DEC AC=*DEC 
*         DDLT=0371 PARK ERR  W TO W  EX=*DEC AC=*DEC 
*         DDLT=0372 PARK ERR  RF TO RF EX=*DEC AC=*DEC
*         DDLT=0373 PARK ERR  RF TO RR EX=*DEC AC=*DEC
*         DDLT=0374 PARK ERR  RF TO W  EX=*DEC AC=*DEC
*         DDLT=0375 PARK ERR  RR TO RF EX=*DEC AC=*DEC
*         DDLT=0376 PARK ERR  RR TO RR EX=*DEC AC=*DEC
*         DDLT=0377 PARK ERR  RR TO W  EX=*DEC AC=*DEC
*         DDLT=0400 TCU-DETECTED I/O CHANNEL PARITY ERROR 
*         DDLT=0401 TCU POINTER MERGE ERROR 
*         DDLT=0402 TCU WRITE PATH PARITY ERROR 
*         DDLT=0403 TCU WRITE REGISTER PARITY ERROR 
*         DDLT=0404 TCU READ CODE TRANSLATION PARITY ERROR
*         DDLT=0405 TCU WRITE CODE TRANSLATION PARITY ERROR 
*         DDLT=0406 TCU READ BUS PARITY ERROR 
*         DDLT=0407 TCU GCR WRITE PATH PARITY ERROR 
*         DDLT=0408 TCU GCR WRITE BUS PARITY ERROR
*         DDLT=0409 TCU NRZI WRITE PATH PARITY ERROR
*         DDLT=0410 TCU NRZI READ PATH PARITY ERROR 
*         DDLT=0411 TCU UPPER ROM PARITY ERROR
*         DDLT=0412 TCU LOWER ROM PARITY ERROR
*         DDLT=0413 TCU SEQUENCER COMMAND ERROR 
*         DDLT=0500 TAPE PARITY - ERASE ERROR 
*         DDLT=0501 TAPE PARITY - BAD RESYNC BURST
*         DDLT=0503 TAPE PARITY - EXCESSIVE SKEW
*         DDLT=0504 TAPE PARITY - SINGLE FRAME SKEW 
*         DDLT=0505 TAPE PARITY - FALSE EOP 
*         DDLT=0506 TAPE PARITY - FALSE FRAME COUNT 
*         DDLT=0507 TAPE PARITY - VERTICAL PARITY ERROR 
*         DDLT=0508 TAPE PARITY - LONGITUDINAL PARITY ERROR 
*         DDLT=0509 TAPE PARITY - CRC DETECTED ERROR
*         DDLT=0510 TAPE PARITY - AUX. CRC DETECTED ERROR 
*         DDLT=0511 TAPE PARITY - CRC1/CRC2 COMPARE ERROR 
*         DDLT=0512 UNEXPLAINED TCU OR TAPE PARITY ERROR
*         DDLT=0600 COUPLER/PPU LOST DATA 
*         DDLT=0601 READ ROM/RAM FLAG BIT DETECTED
*         DDLT=0602 FALSE GAP BYPASSED
*         DDLT=0603 NOISE BYPASSED
*         DDLT=0604 COUPLER/PPU LATE DATA 
* 
*                  - NOTE - 
* 
*           IN THE DDLT CODES BELOW, X Y AND Z ARE USED TO
*           IDENTIFY THE FOLLOWING_ 
* 
*             X = CURRENT MODE    0= NONE 
*                                 1= NRZI WRITE 
*                                 2= PHASE WRITE
*                                 3= GCR WRITE
*                                 5= NRZI READ
*                                 6= PHASE READ 
*                                 7= GCR READ 
* 
*             Y = CURRENT         0= NONE 
*                 LOOPBACK        1= TCU
*                 OPTIONS         2= UNIT I 
*                                 3= UNIT II
* 
*             Z = TRACK IN ERROR  1-9= TRACK 1-9
* 
*         DDLT=1XY0 SINGLE TRACK CORRECTION-VALID TKS = 0 
*         DDLT=1XYZ SINGLE TRACK CORRECTION-LAST DIGIT = TRK
*         DDLT=2XY0 DUAL TRACK CORRECTION- VALID TKS = 0
*         DDLT=2XYZ DUAL TRACK CORRECTION-LAST DIGIT = TRK
*         DDLT=3XY0 CRC CORRECTABLE ERROR-VALID TKS = 0 
*         DDLT=3XYZ CRC CORRECTABLE ERROR-LAST DIGIT = TRK
* 
* 
*         A DDLT IS POSTED THAT IDENTIFIES THE MOST SERIOUS PROBLEM 
*         DETECTED WITHIN STATUS.  IF THE ERROR IS A TCU OR TAPE
*         PARITY ERROR, ANALYSIS OF THE VALID POINTERS REGISTER IN
*         TCU STATUS MAY CAUSE ADDITIONAL MESSAGES TO BE POSTED 
*         AFTER THE DDLT MESSAGE IN ORDER TO CLARIFY THE CAUSE OF 
*         FAILURE.  THE CODE THAT IS POSTED (0XYZ) IDENTIFIES THE 
*         CURRENT MODE OF OPERATION, CURRENT LOOPBACK OPTIONS THAT
*         ARE ACTIVE AND THE TRACK IN ERROR.  THE CODE IS IN THE
*         SAME FORMAT AS XYZ IS IN THE 1XYZ, 2XYZ AND 3XYZ ERROR
*         CODES ABOVE.
* 
*** 
* 
**
*   3.3   MODULE STATUS ANALYSIS ERROR CODES FOR 698 CMTS SUBSYSTEM 
* 
*         EC 0300 - TAPE UNIT NOT CONNECTED - SHOULD BE 
*         EC 0302 - TAPE UNIT LAMP FAILURE
*         EC 0303 - TAPE UNIT RESET KEY DEPRESSED 
*         EC 0310 - TAPE UNIT LOAD FAILURE. REELS NOT LOADED
*         EC 0313 - TAPE UNIT LOOP FAULT
*         EC 0317 - DIGITAL SIGNAL PROCESSOR ERROR
*         EC 0321 - MALFUNCTION IN MICROPROCESSOR OF THE MTU
*         EC 0322 - DATA SECURITY ERASE ERROR 
*         EC 0323 - TAPE UNIT NOT AT BOT AFTER A REWIND 
*         EC 0328 - TAPE UNIT NOT READY 
*         EC 0331 - TAPE SPEED STATUS ERR- EXP=*OCT ACT=*OCT
*         EC 0359 - TAPE UNIT WRITE OR ERASE HEAD FAILURE 
*         EC 0360 - TAPE UNIT WRITE CURRENT FAILURE 
*         EC 0362 - TAPE UNIT NOT READY FOR LOOPBACK
*         EC 0400 - TCU-DETECTED I/O CHANNEL PARITY ERROR 
*         EC 0401 - ADAPTER PARITY ERROR
*         EC 0503 - TAPE PARITY ERROR 
*         EC 0600 - ADAPTER/PPU LOST DATA 
*         EC 0601 - READ ROM/RAM FLAG BIT DETECTED
*         EC 0603 - NOISE BYPASSED
*         EC 0604 - UNIT BUSY, SHOULD NOT BE
*         EC 0605 - UNIT READY/BUSY, SHOULD NOT BE
*         EC 0700 - SINGLE/DOUBLE TRACK CORRECTION
* 
****
* 
**
*   3.4   CONTROLWARE ERROR CODES FOR 67X ATS SUBSYSTEM 
* 
*         CW ERROR 4001 TAPE UNIT OFF-LINE, NOT POWERED ON
*         CW ERROR 4002 UNIT CONNECTED TO ANOTHER CONTROLLER
*         CW ERROR 4003 TAPE UNIT NUMBER MANUALLY EXCLUDED
*         CW ERROR 4004 TAPE UNIT NOT READY 
*         CW ERROR 4005 TAPE UNIT CHECK OR INTERRUPT
*         CW ERROR 4006 TAPE UNIT MISSING WRITE RING
*         CW ERROR 4007 UNIT NOT CAPABLE OF TAPE'S DENSITY
*         CW ERROR 4010 OVER 25 FEET OF BLANK TAPE
*         CW ERROR 4012 BAD ID BURST WRITTEN
*         CW ERROR 4013 UNIT UNABLE TO SET GAINS ON GCR TAPE
*         CW ERROR 4016 NO FILE MARK STATUS AFTER FM FCN
*         CW ERROR 4020 TCU FAILED VELOCITY TEST
*         CW ERROR 4021 2ND BLOCK NOT READ ON MEASURE GAP 
*         CW ERROR 4022 GAP/VELOCITY ERROR ON MEASURE 
*         CW ERROR 4030 LOAD POINT UNEXPECTEDLY ENCOUNTERED 
*         CW ERROR 4031 N X 16 HARDWARE NEEDED
*         CW ERROR 4032 TAPE UNIT BUSY ON REWIND OR DSE 
*         CW ERROR 4033 LOOP II NOT ALLOWED IN WRITE MODE 
*         CW ERROR 4034 WRITE MUST PRECEDE CONTROL BKSP 
*         CW ERROR 4035 TCU NOT CAPABLE OF REQUESTED DENSITY
*         CW ERROR 4036 WRITE ATTEMPT AT 200 CPI DENSITY
*         CW ERROR 4040 TAPE UNIT GAP CONTROL STATUS FAILED 
*         CW ERROR 4041 TAPE UNIT FAILED TO REACH SPEED 
*         CW ERROR 4042 TAPE UNIT UNEXPECTEDLY STOPPED
*         CW ERROR 4043 ERASE HEAD CURRENT FAILED TO TURN ON
*         CW ERROR 4044 TAPE UNIT WILL NOT REWIND 
*         CW ERROR 4046 MISSING READ AFTER WRITE END OF OP
*         CW ERROR 4047 TAPE UNIT FAILED TO SELECT DENSITY
*         CW ERROR 4050 ILLEGAL FUNCTION
*         CW ERROR 4051 NO TAPE UNIT CONNECTED
*         CW ERROR 4052 NO FUNCTION PARAMETERS SENT 
*         CW ERROR 4055 CHANNEL PE ON LAST NON-STATUS FCN 
*         CW ERROR 4061 CHANNEL NOT FULL AT START OF WRITE
*         CW ERROR 4062 CHANNEL NOT ACTIVE IN TIME FOR READ 
*         CW ERROR 4063 CHANNEL UNEXPECTEDLY BECAME ACTIVE
*         CW ERROR 4064 CHANNEL HUNG ACTIVE AND EMPTY 
*         CW ERROR 4065 CHANNEL HUNG ACTIVE AND FULL
*         CW ERROR 4070 INTERNAL DIAGNOSTIC FAILURE 
*         CW ERROR 4140 TAPE UNIT FAILED TO EXECUTE A DSE 
*         CW ERROR 4141 TAPE UNIT REVERSE STATUS STUCK
*         CW ERROR 4142 TAPE UNIT FAILED TO STOP
*         CW ERROR 4143 TAPE UNIT WRITE STATUS STUCK
*         CW ERROR 4144 TAPE UNIT WILL NOT REWIND-UNLOAD
*         CW ERROR 4145 TAPE UNIT FORWARD STATUS STUCK
*         CW ERROR *OCT UNRECOGONIZED CONTROLWARE ERROR CODE
* 
****
* 
**
*   3.5   DETAILED STATUS ERROR CODES FOR 698 CMTS SUBSYSTEM
* 
*         DS ERROR 4001 TAPE UNIT OFF-LINE, NOT POWERED ON
*         DS ERROR 4002 UNIT CONNECTED TO ANOTHER ADAPTER 
*         DS ERROR 4004 FUNCTION REJECT, TAPE UNIT NOT READY
*         DS ERROR 4006 TAPE UNIT MISSING WRITE RING
*         DS ERROR 4007 UNIT NOT CAPABLE OF TAPES DENSITY 
*         DS ERROR 4010 OVER 15 FEET OF BLANK TAPE IN GCR MODE
*         DS ERROR 4012 BAD ID BURST WRITTEN
*         DS ERROR 4016 UNIT UNABLE TO SET GAINS ON GCR TAPE
*         DS ERROR 4030 BACKWARD MOTION AT LOADPOINT
*         DS ERROR 4041 TAPE UNIT FAILED TO REACH SPEED 
*         DS ERROR 4050 ILLEGAL FUNCTION
*         DS ERROR 4051 NO TAPE UNIT CONNECTED
*         DS ERROR 4052 NO FUNCTION PARAMETERS SENT 
*         DS ERROR 4110 CCC ABNORM END ON SEL CODE CONV SEQ 
*         DS ERROR 4121 CCC ABNORM END ON RD BLOCK ID SEQ 
*         DS ERROR 4154 ILLEGAL CONV TABLE NUMBER REQUEST 
*         DS ERROR 4155 TIMEOUT ON EXPECTED CCC-DI RESPONSE 
*         DS ERROR 4156 TIMEOUT ON EXPECTED C170-DI RESPONSE
*         DS ERROR 4157 TIMEOUT ON EXPECTED REQUEST IN STATUS 
*         DS ERROR 4160 CCC ABNORM STATUS ON LOADING TRANS REG
*         DS ERROR 4161 CCC ABNORM STATUS ON COPY CODE TABLES 
*         DS ERROR 4162 CCC ABNORM STATUS ON TIE SEQ
*         DS ERROR 4164 CCC ABNORM STATUS ON SYS RESET COMMAND
*         DS ERROR 4165 CCC ABNORM END STAT ON SENSE COMMAND
*         DS ERROR 4170 CCC SEQUENCE ERROR
*         DS ERROR 4171 CCC INTERFACE ERROR 
*         DS ERROR 4172 C170-DI CHANNEL PARITY ERROR
*         DS ERROR 4173 C170-DI MEMORY PARITY ERROR 
*         DS ERROR 4174 C170-DI CONTROL PACKAGE PARITY ERROR
*         DS ERROR 4175 CCC DEADMAN TIMER EXPIRED 
*         DS ERROR 4176 CCC-DI UNDEFINED STATUS BIT ERROR 
*         DS ERROR 4177 C170-DI UNDEFINED STATUS BIT ERROR
*         DS ERROR *OCT UNRECOGNIZED DS ERROR CODE
* 
****
* 
**
*   3.6   698/CMTS MICRO DIAG ERROR CODES 
* 
*         ROM EC 5100 SWITCHES NOT SET CORRECTLY
*         ROM EC 5121 LD XFER REGS.  WR PATH PE UPPER.
*         ROM EC 5122 LD XFER REGS.  WR PATH PE LOWER.
*         ROM EC 5123 LD XFER REGS.  MEMORY PE. 
*         ROM EC 5124 LD XFER REGS.  BUS IN OR RD PATH PE.
*         ROM EC 5125 LD XFER REGS.  READ PATH PE.
*         ROM EC 5126 LD XFER REGS.  BUS OUT FAULT. 
*         ROM EC 5127 LD XFER REGS.  TAG OUT FAULT UPPER. 
*         ROM EC 5130 LD XFER REGS.  TAG OUT FAULT LOWER. 
*         ROM EC 5131 LD XFER REGS.  FLAG BIT DETECTED. 
*         ROM EC 5132 LD XFER REGS.  MIN BLK LENG NOT MET.
*         ROM EC 5133 LD XFER REGS.  SELECT IN RECEIVED.
*         ROM EC 5134 LD XFER REGS.  NO REQ IN ON POLL SEQ. 
*         ROM EC 5135 LD XFER REGS.  DEVICE ADDR MISCOMPARE.
*         ROM EC 5136 LD XFER REGS.  TIME OUT ON CCC XFER.
*         ROM EC 5137 LD XFER REGS.  UNDEFINED ERROR. 
* 
*         ROM EC 5141 RD XFER REGS.  WR PATH PE UPPER.
*         ROM EC 5142 RD XFER REGS.  WR PATH PE LOWER.
*         ROM EC 5143 RD XFER REGS.  MEMORY PE. 
*         ROM EC 5144 RD XFER REGS.  BUS IN OR RD PATH PE.
*         ROM EC 5145 RD XFER REGS.  READ PATH PE.
*         ROM EC 5146 RD XFER REGS.  BUS OUT FAULT. 
*         ROM EC 5147 RD XFER REGS.  TAG OUT FAULT UPPER. 
*         ROM EC 5150 RD XFER REGS.  TAG OUT FAULT LOWER. 
*         ROM EC 5151 RD XFER REGS.  FLAG BIT DETECTED. 
*         ROM EC 5152 RD XFER REGS.  MIN BLK LENG NOT MET.
*         ROM EC 5153 RD XFER REGS.  SELECT IN RECEIVED.
*         ROM EC 5154 RD XFER REGS.  NO REQ IN ON POLL SEQ. 
*         ROM EC 5155 RD XFER REGS.  DEVICE ADDR MISCOMPARE.
*         ROM EC 5156 RD XFER REGS.  TIME OUT ON CCC XFER.
*         ROM EC 5157 RD XFER REGS.  UNDEFINED ERROR. 
* 
*         ROM EC 5160 TRANSFER REGISTER DATA MISCOMPARE.
*         ROM EC 5161 DIAG WR SEQ.  WR PATH PE UPPER. 
*         ROM EC 5162 DIAG WR SEQ.  WR PATH PE LOWER. 
*         ROM EC 5163 DIAG WR SEQ.  MEMORY PE.
*         ROM EC 5164 DIAG WR SEQ.  BUS IN OR RD PATH PE. 
*         ROM EC 5165 DIAG WR SEQ.  READ PATH PE. 
*         ROM EC 5166 DIAG WR SEQ.  BUS OUT FAULT.
*         ROM EC 5167 DIAG WR SEQ.  TAG OUT FAULT UPPER.
*         ROM EC 5170 DIAG WR SEQ.  TAG OUT FAULT LOWER.
*         ROM EC 5171 DIAG WR SEQ.  FLAG BIT DETECTED.
*         ROM EC 5172 DIAG WR SEQ.  MIN BLK LENG NOT MET. 
*         ROM EC 5173 DIAG WR SEQ.  SELECT IN RECEIVED. 
*         ROM EC 5174 DIAG WR SEQ.  NO REQ IN ON POLL SEQ.
*         ROM EC 5175 DIAG WR SEQ.  DEVICE ADDR MISCOMPARE. 
*         ROM EC 5176 DIAG WR SEQ.  TIME OUT ON CCC XFER. 
*         ROM EC 5177 DIAG WR SEQ.  UNDEFINED ERROR.
* 
*         ROM EC 5200 FULL/EMPTY CNTR WRONG AFTER WR DIAG SEQ.
*         ROM EC 5201 RD BLOCK ID.  WR PATH PE UPPER. 
*         ROM EC 5202 RD BLOCK ID.  WR PATH PE LOWER. 
*         ROM EC 5203 RD BLOCK ID.  MEMORY PE.
*         ROM EC 5204 RD BLOCK ID.  BUS IN OR RD PATH PE. 
*         ROM EC 5205 RD BLOCK ID.  READ PATH PE. 
*         ROM EC 5206 RD BLOCK ID.  BUS OUT FAULT.
*         ROM EC 5207 RD BLOCK ID.  TAG OUT FAULT UPPER.
*         ROM EC 5210 RD BLOCK ID.  TAG OUT FAULT LOWER.
*         ROM EC 5211 RD BLOCK ID.  FLAG BIT DETECTED.
*         ROM EC 5212 RD BLOCK ID.  MIN BLK LENG NOT MET. 
*         ROM EC 5213 RD BLOCK ID.  SELECT IN RECEIVED. 
*         ROM EC 5214 RD BLOCK ID.  NO REQ IN ON POLL SEQ.
*         ROM EC 5215 RD BLOCK ID.  DEVICE ADDR MISCOMPARE. 
*         ROM EC 5216 RD BLOCK ID.  TIME OUT ON CCC XFER. 
*         ROM EC 5217 RD BLOCK ID.  UNDEFINED ERROR.
* 
*         ROM EC 5220 BLOCK ID WRONG AFTER DIAG WRITE SEQ.
*         ROM EC 5221 DIAG RD SEQ.  WR PATH PE UPPER. 
*         ROM EC 5222 DIAG RD SEQ.  WR PATH PE LOWER. 
*         ROM EC 5223 DIAG RD SEQ.  MEMORY PE.
*         ROM EC 5224 DIAG RD SEQ.  BUS IN OR RD PATH PE. 
*         ROM EC 5225 DIAG RD SEQ.  READ PATH PE. 
*         ROM EC 5226 DIAG RD SEQ.  BUS OUT FAULT.
*         ROM EC 5227 DIAG RD SEQ.  TAG OUT FAULT UPPER.
*         ROM EC 5230 DIAG RD SEQ.  TAG OUT FAULT LOWER.
*         ROM EC 5231 DIAG RD SEQ.  FLAG BIT DETECTED.
*         ROM EC 5232 DIAG RD SEQ.  MIN BLK LENG NOT MET. 
*         ROM EC 5233 DIAG RD SEQ.  SELECT IN RECEIVED. 
*         ROM EC 5234 DIAG RD SEQ.  NO REQ IN ON POLL SEQ.
*         ROM EC 5235 DIAG RD SEQ.  DEVICE ADDR MISCOMPARE. 
*         ROM EC 5236 DIAG RD SEQ.  TIME OUT ON CCC XFER. 
*         ROM EC 5237 DIAG RD SEQ.  UNDEFINED ERROR.
* 
*         ROM EC 5240 CCC ADDR INCORRECT AFTER DIAG WR SEQ. 
*         ROM EC 5250 DIAGNOSTIC RD DATA PATTERN INCORRECT. 
*         ROM EC 5251 XFER REG ERROR AFTER DIAG RD SEQ. 
*         ROM EC 5252 BLOCK ID WRONG AFTER DIAG RD SEQ. 
*         ROM EC 5253 CCC I/F SEQUENCE DID NOT COMPLETE.
*         ROM EC 5254 DATA STREAM DIAG READ TIME OUT. 
*         ROM EC 5255 DATA STREAM DIAG WRITE TIME OUT.
* 
*         ROM EC 5261 STRM DIAG ERR.  WR PATH PE UPPER. 
*         ROM EC 5262 STRM DIAG ERR.  WR PATH PE LOWER. 
*         ROM EC 5263 STRM DIAG ERR.  MEMORY PE.
*         ROM EC 5264 STRM DIAG ERR.  BUS IN OR RD PATH PE. 
*         ROM EC 5265 STRM DIAG ERR.  READ PATH PE. 
*         ROM EC 5266 STRM DIAG ERR.  BUS OUT FAULT.
*         ROM EC 5267 STRM DIAG ERR.  TAG OUT FAULT UPPER.
*         ROM EC 5270 STRM DIAG ERR.  TAG OUT FAULT LOWER.
*         ROM EC 5271 STRM DIAG ERR.  FLAG BIT DETECTED.
*         ROM EC 5272 STRM DIAG ERR.  MIN BLK LENG NOT MET. 
*         ROM EC 5273 STRM DIAG ERR.  SELECT IN RECEIVED. 
*         ROM EC 5274 STRM DIAG ERR.  NO REQ IN ON POLL SEQ.
*         ROM EC 5275 STRM DIAG ERR.  DEVICE ADDR MISCOMPARE. 
*         ROM EC 5276 STRM DIAG ERR.  TIME OUT ON CCC XFER. 
*         ROM EC 5277 STRM DIAG ERR.  UNDEFINED ERROR.
*         ROM EC 5300 DATA STREAM DIAG RD BLOCK ID WRONG. 
* 
*         ROM EC 5311 WR STS STRM DIAG.  WR PATH PE UPPER.
*         ROM EC 5312 WR STS STRM DIAG.  WR PATH PE LOWER.
*         ROM EC 5313 WR STS STRM DIAG.  MEMORY PE. 
*         ROM EC 5314 WR STS STRM DIAG.  BUS IN OR WR PATH PE.
*         ROM EC 5315 WR STS STRM DIAG.  READ PATH PE.
*         ROM EC 5316 WR STS STRM DIAG.  BUS OUT FAULT. 
*         ROM EC 5317 WR STS STRM DIAG.  TAG OUT FAULT UPPER. 
*         ROM EC 5320 WR STS STRM DIAG.  TAG OUT FAULT LOWER. 
*         ROM EC 5321 WR STS STRM DIAG.  FLAG BIT DETECTED. 
*         ROM EC 5322 WR STS STRM DIAG.  MIN BLK LENG NOT MET.
*         ROM EC 5323 WR STS STRM DIAG.  SELECT IN RECEIVED.
*         ROM EC 5324 WR STS STRM DIAG.  NO REQ IN ON POLL SEQ. 
*         ROM EC 5325 WR STS STRM DIAG.  DEVICE ADDR MISCOMPARE.
*         ROM EC 5326 WR STS STRM DIAG.  TIME OUT ON CCC XFER.
*         ROM EC 5327 WR STS STRM DIAG.  UNDEFINED ERROR. 
*         ROM EC 5330 DATA STREAM DIAG WRITE BLOCK ID WRONG.
* 
*         ROM EC 5401 SYSTEM RESET ERR AFTER CKSM MICROCODE.
*         ROM EC 5402 CYBER I/F STATUS ERR DURING AUTOLOAD. 
*         ROM EC 5403 RAM RESIDENT CKSM ERR AFTER AUTOLOAD. 
*         ROM EC 5404 RAM MEM TEST ERR BEFORE ATLD MICROCODE. 
*         ROM EC 5501 TIME OUT FROM DISK DEVICE.
*         ROM EC 5502 DISK SEEK ERR.
*         ROM EC 5503 DISK SEEK ENDING STATUS ERR.
*         ROM EC 5504 DOUBLE TAPE MARK ERR ON TAPE 6UU FCN. 
*         ROM EC 5505 TAPE OR DISK READ DATA RECORD ERR.
*         ROM EC 5507 SYSTEM RESET SEQUENCE ERR.
*         ROM EC 5510 DISK SEARCH/READ TIME OUT ERROR.
*         ROM EC 5600 SYSTEM RESET SEQUENCE ERR.
*         ROM EC 5601 INITIAL SELECT/REWIND SEQUENCE ERR. 
*         ROM EC 5602 CAN'T LOCATE MICROCODE RECORD ON TAPE.
*         ROM EC 5603 INPUT MICROCODE RECORD ERR. 
*         ROM EC 5604 RAM MICROCODE CHECKSUM ERR. 
*         ROM EC 5605 FINAL SELECT/REWIND SEQUENCE ERR. 
* 
*** 
* 
**
*   3.7   PRODUCT OVERLAY ERROR MESSAGES_ 
* 
*         5104 - WC OR BUFFER INDEX ERROR 
*         5110 - I/O CH NOT ASSIGNED
*         5111 - I/O CH ACTIVE FROM SYSTEM
*         5112 - NO INACTIVE TO LAST FUNCTION 
*         5113 - NO INACTIVE TO GENERAL STATUS
*         5114 - NO INACTIVE TO DETAIL/UNIT STATUS
*         5115 - GENERAL STATUS NOT RETURNED
*         5116 - INCOMPLETE STATUS RETURNED 
*         5117 - FUNCTION PARAMETERS NOT ACCEPTED 
*         5120 - ALL DATA NOT ACCEPTED FROM PP
*         5121 - INCOMPLETE DATA RETURNED TO PP 
*         5122 - CONTROLLER/UNIT NOT CONNECTED
*         5125 - ABNORMAL GENERAL STATUS
*         5127 - UNIT HUNG BUSY 
*         5132 - DEVICE CODE/STATUS MISMATCH
*         5133 - UNIT NOT READY 
*         5134 - NO END OF OPERATION
*         5136 - COMMAND SEQUENCING ERROR 
*         5137 - PARAMETER OUT OF RANGE 
* 
* 
*** T7X ABBREVIATIONS 
* 
**
*     4.0 ABBREVIATIONS 
* 
*         ACT    - ACTUAL 
*         ADDR   - ADDRESS
*         ALT    - ALTERNATE
*         ATLD   - AUTOLOAD 
*         AUX    - AUXILLARY
*         BFR    - BUFFER 
*         BKSP   - BACKSPACE
*         BLK    - BLOCK
*         BOT    - BEGINNING OF TAPE
*         CH     - CHANNEL
*         CHAR   - CHARACTER
*         CKSM   - CHECKSUM 
*         CMTS   - CYBER MAGNETIC TAPE SYSTEM 
*         CNT    - COUNT
*         CNTR   - COUNTER
*         COND   - CONDITION
*         CORR   - CORRECTION 
*         CRC    - CYCLIC REDUNDANCY CHECK
*         CW     - CONTROLWARE
*         DDLT   - DIAGNOSTIC DECISION LOGIC TABLE
*         DIAG   - DIAGNOSTIC 
*         DSE    - DATA SECURITY ERASE
*         DTC    - DOUBLE TRACK CORRECTION
*         EC     - ERROR CODE 
*         EOF    - END OF FILE
*         EOP    - END OF OPERATION 
*         ERR(S) - ERROR OR ERRORS
*         EXP    - EXPECTED 
*         FCN    - FUNCTION 
*         FM/TM  - FILE MARK/TAPE MARK
*         FWD    - FORWARD
*         IBG    - INTER BLOCK GAP
*         IPS    - INCHES PER SECOND
*         IRGS   - INTER RECORD GAPS
*         I/O    - INPUT/OUTPUT 
*         LD     - LOAD 
*         LENG   - LENGTH 
*         LF     - LAST FUNCTION
*         LSF    - LAST STATUS FUNCTION 
*         MAINT  - MAINTENANCE
*         MAX    - MAXIMUM
*         MIN    - MINIMUM
*         MSG    - MESSAGE
*         OP     - OPERATION
*         PE     - PHASE ENCODED
*         POLY   - POLYNOMIAL 
*         PTRN   - PATTERN
*         RAM    - RANDOM ACCESS MEMORY 
*         RD     - READ 
*         REC    - RECORD 
*         REG    - REGISTER 
*         REQ    - REQUEST
*         REV    - REVERSE
*         RF     - READ FORWARD 
*         ROM    - READ ONLY MEMORY 
*         RR     - READ REVERSE 
*         R/W    - READ/WRITE 
*         SEQ    - SEQUENCE 
*         STC    - SINGLE TRACK CORRECTION
*         STRM   - STREAM 
*         STS    - STATUS 
*         TK(S)  - TRACK OR TRACKS
*         TRK    - TRACK
*         TCU    - TAPE CONTROL UNIT
*         W      - WRITE
*         WC     - WORD COUNT 
*         WDS    - WORDS
*         WR     - WRITE
*         WT     - WORDS TRANSMITTED
*         XLATE  - TRANSLATE
* 
   MODULE T7X00,67X(44,54,55,53)LOCK   - 67X PARAMETER VALIDATION - 
*** T7X00 - PARAMETER VALIDATION  (67X) 
* 
**  T7X00 - EXTERNAL DOCUMENTATION
* 
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X00A IS EXECUTED. 
* 
*         T7X00 VERIFIES THAT THE PARAMETERS THAT HAVE BEEN 
*         ENTERED INTO PARAMETER REGISTERS P0 THRU P9 ARE 
*         WITHIN LEGAL RANGE FOR USE BY THE REMAINING MODULES 
*         THAT MAKE UP T7X. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. T7X00 - PARAMETER ERROR(S) 
*         2. 9TK EVEN PARITY IS ILLEGAL   -(P1)-
*         3. 9TK PACK MODE MUST HAVE XLATE=0   -(P1)- 
*         4. 9TK 6BIT MODE MUST HAVE XLATE=1 OR 2   -(P1)-
*         5. 7TK AND PACK MODE IS ILLEGAL   -(P1)-
*         6. 7TK ODD PARITY MUST HAVE XLATE=3 OR 7  -(P1)-
*         7. ILLEGAL PARITY SELECTION   -(P1)-
*         8. ILLEGAL XLATE SELECTION    -(P1)-
*         9. ILLEGAL MODE SELECTION     -(P1)-
*        10. ILLEGAL DENSITY SELECTION  -(P1)-
*        11. ILLEGAL RECORD LENGTH SELECTION   -(P2)- 
*        12. ILLEGAL MARGINS SELECTION  -(P3)-
*        13. ILLEGAL PATTERN SELECTION  -(P4)-
*        14. 9TK DENSITY IS ILLEGAL   -(P1)-
*        15. 7TK DENSITY IS ILLEGAL  -(P1)- 
*        16. ILLEGAL TAPE SPEED SELECTION -(P0)-
*        17. ACTUAL/SPECIFIED TAPE SPEEDS DISAGREE -(P0)- 
*        18. T7X00 - ABORT ON .RES. COMMAND - 
* 
* 
*** T7X00 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B1 = EXPECTED SPEED STATUS
*         B6 = MESSAGE LINE NUMBER
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE * 
* 
* 
 1 FORMAT T7X00 - PARAMETER VALIDATION
 2 FORMAT T7X00 - PARAMETER ERROR(S)
 3 FORMAT    9TK EVEN PARITY IS ILLEGAL   -(P1)-
 4 FORMAT    9TK PACK MODE MUST HAVE XLATE=0   -(P1)- 
 5 FORMAT    9TK 6BIT MODE MUST HAVE XLATE=1 OR 2   -(P1)-
 6 FORMAT    7TK AND PACK MODE IS ILLEGAL   -(P1)-
 7 FORMAT    7TK ODD PARITY MUST HAVE XLATE=3 OR 7  -(P1)-
10 FORMAT    ILLEGAL PARITY SELECTION   -(P1)-
11 FORMAT    ILLEGAL XLATE SELECTION    -(P1)-
12 FORMAT    ILLEGAL MODE SELECTION     -(P1)-
13 FORMAT    ILLEGAL DENSITY SELECTION  -(P1)-
14 FORMAT    ILLEGAL RECORD LENGTH SELECTION   -(P2)- 
15 FORMAT    ILLEGAL MARGINS SELECTION  -(P3)-
16 FORMAT    ILLEGAL PATTERN SELECTION  -(P4)-
17 FORMAT    9TK DENSITY IS ILLEGAL   -(P1)-
20 FORMAT    7TK DENSITY IS ILLEGAL  -(P1)- 
21 FORMAT P0=*OCT  P1=*OCT  P2=*OCT  P3=*OCT  P4=*OCT 
22 FORMAT P5=*OCT  P6=*OCT  P7=*OCT  P8=*OCT  P9=*OCT 
23 FORMAT    ILLEGAL TAPE SPEED SELECTION -(P0)-
24 FORMAT    ACTUAL/SPECIFIED TAPE SPEEDS DISAGREE -(P0)- 
25 FORMAT T7X00 - ABORT ON .RES. COMMAND -
26 FORMAT T7X00 - CHANGE PARAMETERS AND RERUN 
* 
30 IF(DC.EQ.53)EXIT TO 00A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   B6 = 1                *SET LINE NUMBER FOR ERROR MESSAGES
   IF(P1.AND.7000.EQ.4000) ERROR 10/0, GOSUB 70   *BAD PARITY 
   IF(P1.AND.7000.EQ.5000) ERROR 10/0, GOSUB 70   *BAD PARITY 
   IF(P1.AND.700.LT.400) GOTO 31
   IF(P1.AND.700.NE.700)ERROR 11/0, GOSUB 70   *BAD XLATE 
31 IF(P1.AND.60.NE.0) ERROR 12/0, GOSUB 70   *BAD MODE
   IF(P1.AND.7.GE.5) ERROR 13/0, GOSUB 70      *BAD DENSITY 
   IF(DC.EQ.44) GOTO 40      *7TK UNIT ASSIGNED 
* 
*---------TEST 9TK OPTIONS
* 
   IF(P1.AND.1000.NE.0) ERROR 3/0, GOSUB 70    *BAD PARITY
   IF(P1.AND.10.EQ.0) GOTO 32          *9TK 6BIT MODE 
   IF(P1.AND.700.NE.0) ERROR 4/0, GOSUB 70     *BAD XLATE 
   GOTO 33
32 IF(P1.AND.700.EQ.100) GOTO 33  *9TK PACK-XLATE=1 OK
   IF(P1.AND.700.NE.200) ERROR 5/0, GOSUB 70   *BAD XLATE 
33 IF(P1.AND.7.EQ.0) ERROR 17/0, GOSUB 70     *BAD DENSITY
   IF(P1.AND.7.EQ.3) ERROR 17/0, GOSUB 70     *BAD DENSITY
   IF(DC.EQ.54) GOTO 34        *IF 9TK NRZI/PE UNIT 
   IF(P1.AND.7.EQ.1) ERROR 17/0, GOSUB 70     *BAD DENSITY
   GOTO 50
34 IF(P1.AND.4.NE.0) ERROR 13/0, GOSUB 70     *BAD DENSITY
   GOTO 50
* 
*----------TEST 7TK OPTIONS 
* 
40 IF(P1.AND.70.NE.0) ERROR 6/0, GOSUB 70     *BAD MODE 
   IF(P1.AND.1000.NE.0) GOTO 41               *EVEN PARITY
   IF(P1.AND.300.EQ.0) GOTO 41                *NO XLATE 
   IF(P1.AND.300.NE.300) ERROR 7/0, GOSUB 70    *BAD XLATE
41 IF(P1.AND.7.EQ.2) ERROR 20/0, GOSUB 70     *BAD DENSITY
   IF(P1.AND.7.EQ.4) ERROR 20/0, GOSUB 70     *BAD DENSITY
* 
*----------TEST OTHER PARAMETER REGISTERS 
* 
50 IF(P2.EQ.0) ERROR 14/0, GOSUB 70             *BAD WC 
   IF(P3.AND.700.GE.400) ERROR 15/0, GOSUB 70   *BAD MARGINS
   IF(P4.AND.3000.EQ.3000) ERROR 16/0,GOSUB 70  *BAD PATTERN
   IF(B6.NE.1) GOTO 53       *IF PREVIOUS ERRORS
   RES P1, ABT 60 
   B1 = 2                     *100 IPS SPEED STATUS 
   IF(P0.EQ.100) GOTO 51
   B1 = 5                     *200 IPS SPEED STATUS 
   IF(P0.EQ.200) GOTO 51
   B1 = 6                     *150 IPS SPEED STATUS 
   IF(P0.EQ.150) GOTO 51
   ERROR 23/0, GOSUB 70       *REPORT ILLEGAL SPEED SELECTED
   GOTO 52
51 IF(SB(11D).AND.7.EQ.B1) GOTO 52  *IF SPEEDS AGREE
   MSG 2 TO LINE 0
   MSG 24 TO LINE 1                 *REPORT DISAGREEMENT
   CALL 980 
   GOTO 77                          *TERMINATE TESTING
* 
*----------IF ERRORS, REPORT THEM AND TERMINATE 
* 
52 IF(B6.NE.1) GOTO 53       *IF ERRORS 
   EXIT                      *NORMAL EXIT 
53 MSG 2 TO LINE 0
   MSG 21(P0,P1,P2,P3,P4) TO LINE B6
   B6 = B6 + 1
   MSG 22(P5,P6,P7,P8,P9) TO LINE B6
   PICTURE                   *REPORT ERRORS TO OUTPUT FILE
   GOTO 77                   *ABNORMAL TERMINATION
* 
*---------RESERVE ABORT PROCESSOR 
* 
60 MSG 25 TO LINE 0           *REPORT ABORT 
   MSG EM TO LINE 1           *REPORT SYMPTOM 
   CALL 980                   *REPORT STATUS
   GOTO 77                    *TERMINATE
* 
*----------ADD ERROR TO DISPLAY 
* 
70 MSG EM TO LINE B6
   B6 = B6 + 1               *BUMP DISPLAY LINE NUMBER
   RETURN 
77 MSG 26 TO DISPLAY,PRINT
   PAUSE
   GOTO 77
   END 30 
COMPILE   - T7X00 - 
   MODULE T7X00A,67X(53)LOCK   - 698 PARAMETER VALIDATION - 
*** T7X00A - PARAMETER VALIDATION (698) 
* 
**  T7X00A - EXTERNAL DOCUMENTATION 
* 
* 
*   OVERVIEW -
* 
*         T7X00A VERIFIES THAT THE PARAMETERS THAT HAVE BEEN
*         ENTERED INTO PARAMETER REGISTERS P0 THRU P9 ARE 
*         WITHIN LEGAL RANGE FOR USE BY A 698/CMTS SUBSYSTEM
*         AND THE REMAINING T7X MODULES 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. T7X00A - PARAMETER ERROR(S)
*         2. 9TK EVEN PARITY IS ILLEGAL   -(P1)-
*         3. 9TK PACK MODE MUST HAVE XLATE=0   -(P1)- 
*         4. 9TK 6BIT MODE MUST HAVE XLATE=1 OR 2   -(P1)-
*         5. ILLEGAL PARITY SELECTION   -(P1)-
*         6. ILLEGAL XLATE SELECTION    -(P1)-
*         7. ILLEGAL MODE SELECTION     -(P1)-
*         8. ILLEGAL DENSITY SELECTION  -(P1)-
*         9. ILLEGAL RECORD LENGTH SELECTION   -(P2)- 
*         2. ILLEGAL MARGINS SELECTION  -(P3)-
*        10. ILLEGAL PATTERN SELECTION  -(P4)-
*        11. 9TK DENSITY IS ILLEGAL   -(P1)-
*        12. ILLEGAL TAPE SPEED SELECTION -(P0)-
*        13. T7X00A - ABORT ON .RES. COMMAND -
*        14. ACTUAL/SPECIFIED TAPE SPEEDS DISAGREE -(P0)- 
*        15. ACTUAL/SPECIFIED TAPE DENSITY DISAGREE -(P1)-
* 
* 
  
*** T7X00A - INTERNAL DOCUMENTATION 
* 
* 
*   REGISTER USAGE
* 
*         B1 = EXPECTED SPEED STATUS
*         B6 = MESSAGE LINE NUMBER
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT T7X00A - PARAMETER VALIDATION  (698/CMTS) 
 2 FORMAT T7X00A - 698/CMTS PARAMETER ERROR(S)
 3 FORMAT    9TK EVEN PARITY IS ILLEGAL   -(P1)-
 4 FORMAT    9TK PACK MODE MUST HAVE CODE XLATE=0   -(P1)-
 5 FORMAT    9TK 6BIT MODE MUST HAVE XLATE=1 OR 2   -(P1)-
10 FORMAT    ILLEGAL PARITY SELECTION   -(P1)-
11 FORMAT    ILLEGAL XLATE SELECTION    -(P1)-
12 FORMAT    ILLEGAL MODE SELECTION     -(P1)-
13 FORMAT    ILLEGAL DENSITY SELECTION  -(P1)-
14 FORMAT    ILLEGAL RECORD LENGTH SELECTION   -(P2)- 
15 FORMAT    ILLEGAL MARGINS SELECTION  -(P3)-
16 FORMAT    ILLEGAL PATTERN SELECTION  -(P4)-
17 FORMAT    ACTUAL/SPECIFIED TAPE DENSITY DISAGREE -(P1)-
21 FORMAT P0=*OCT  P1=*OCT  P2=*OCT  P3=*OCT  P4=*OCT 
22 FORMAT P5=*OCT  P6=*OCT  P7=*OCT  P8=*OCT  P9=*OCT 
23 FORMAT    ILLEGAL TAPE SPEED SELECTION -(P0)-
24 FORMAT    ACTUAL/SPECIFIED TAPE SPEEDS DISAGREE -(P0)- 
25 FORMAT T7X00A - ABORT ON .RES. COMMAND - 
26 FORMAT T7X00A - CHANGE PARAMETERS AND RERUN
* 
30 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   B6 = 1                *SET LINE NUMBER FOR ERROR MESSAGES
   IF(P1.AND.7000.EQ.4000) ERROR 10/0, GOSUB 70  *BAD PARITY
   IF(P1.AND.7000.EQ.5000) ERROR 10/0, GOSUB 70  *BAD PARITY
   IF(P1.AND.700.LT.400) GOTO 31
   IF(P1.AND.700.EQ.700)ERROR 11/0, GOSUB 70   *BAD XLATE 
   IF(P1.AND.700.NE.700)ERROR 11/0, GOSUB 70   *BAD XLATE 
31 IF(P1.AND.60.NE.0) ERROR 12/0, GOSUB 70   *BAD MODE
   IF(P1.AND.7.EQ.1) GOTO 35                 *800 BPI 
   IF(P1.AND.7.EQ.2) GOTO 35                 *1600 BPI
   IF(P1.AND.7.NE.4) ERROR 13/0, GOSUB 70    *NOT 6250 BPI
* 
*  -------TEST 9TK OPTIONS
* 
35 IF(P1.AND.1000.NE.0) ERROR 3/0, GOSUB 70    *BAD PARITY
   IF(P1.AND.10.EQ.0) GOTO 32          *9TK 6BIT MODE 
   IF(P1.AND.700.NE.0) ERROR 4/0, GOSUB 70     *BAD XLATE 
   GOTO 50
32 IF(P1.AND.700.EQ.100) GOTO 50  *9TK PACK-XLATE=1 OK
   IF(P1.AND.700.NE.200) ERROR 5/0, GOSUB 70   *BAD XLATE 
* 
*  --------TEST OTHER PARAMETER REGISTERS 
* 
50 IF(P2.EQ.0) ERROR 14/0, GOSUB 70             *BAD WC 
   IF(P3.AND.700.GE.300) ERROR 15/0, GOSUB 70   *BAD MARGINS
   IF(P4.AND.3000.EQ.3000) ERROR 16/0,GOSUB 70  *BAD PATTERN
   B1 = 4                     *125 IPS SPEED STATUS 
   IF(P0.EQ.125) GOTO 51
   B1 = 5                     *200 IPS SPEED STATUS 
   IF(P0.EQ.200) GOTO 51
   ERROR 23/0, GOSUB 70       *REPORT ILLEGAL SPEED SELECTED
51 IF(B6.NE.1) GOTO 53       *IF PREVIOUS ERRORS
   RES P1, ABT 60 
   IF(SB(11D).AND.7.EQ.B1) GOTO 52  *IF SPEEDS AGREE
   MSG 24 TO LINE 1                 *REPORT DISAGREEMENT
54 MSG 2 TO LINE 0
   EXIT TO 969               *698/CMTS STATUS ANALYZER
   GOTO 77
52 IF(P1.AND.7.EQ.1) GOTO 55   *800 BPI 
   IF(P1.AND.7.EQ.2) GOTO 55   *1600 BPI
   IF(P1.AND.7.EQ.4) GOTO 55   *6250 GCR
   ERROR 13/0 GOSUB 70
53 MSG 2 TO LINE 0
   MSG 21(P0,P1,P2,P3,P4) TO LINE B6
   B6 = B6 + 1
   MSG 22(P5,P6,P7,P8,P9) TO LINE B6
   PICTURE                   *REPORT ERRORS TO OUTPUT FILE
   GOTO 77                   *ABNORMAL TERMINATION
55 IF (B1.EQ.4) GOTO 40   *125 IPS
   GOTO 41                *200 IPS
40 IF(P1.AND.7.EQ.2) GOTO 56   *125 IPS AND 1600 BPI
   IF(P1.AND.7.EQ.1) GOTO 56   *125 IPS AND 800 BPI 
   GOTO 42                     *REPORT ERROR
41 IF(P1.AND.7.EQ.2) GOTO 56   *200 IPS AND 1600 BPI
   IF(P1.AND.7.EQ.4) GOTO 56   *200 IPS AND 6250 GCR
42 MSG 17 TO LINE 1                 *REPORT DISAGREEMENT
   GOTO 54
56 EXIT 
* 
*  -------RESERVE ABORT PROCESSOR 
* 
60 MSG 25 TO LINE 0           *REPORT ABORT 
   MSG EM TO LINE 1           *REPORT SYMPTOM 
   EXIT TO 969                *REPORT STATUS
   GOTO 76                    *TERMINATE
* 
*  --------ADD ERROR TO DISPLAY 
* 
70 MSG EM TO LINE B6
   B6 = B6 + 1               *BUMP DISPLAY LINE NUMBER
   RETURN 
77 MSG 26 TO DISPLAY,PRINT
76 END 30 
COMPILE   - T7X00A -
   MODULE T7X02,67X(44,54,55,53)LOCK  - COUPLER PATH
*** T7X02 - COUPLER PATH
* 
**  T7X02 - EXTERNAL DOCUMENTATION
* 
* 
*   OVERVIEW -
* 
*         T7X02 VERIFIES THAT THE COUPLER PATH FROM THE TCU IS
*         STABLE.  THIS IS DONE BY READING DATA THAT IS CONTAINED 
*         IN EACH RAM USED FOR CONVERSION TABLES IN THE TCU,
*         SAVING IT, READING IT AGAIN AND COMPARING IT TO THE 
*         FIRST READ.  THIS TECHNIQUE CANNOT DETECT SOLID BIT 
*         FAILURES. 
* 
*   DESCRIPTION - 
* 
* 
*         1. RESERVE. 
*         2. READ RDRAM.
*         3. SAVE DATA READ IN OB.
*         4. READ RDRAM.
*         5. RELEASE. 
*         6. COMPARE IB TO OB AND REPORT DATA ERRORS. 
*         7. REPEAT STEPS 1-6 FOR ALL READ RAMS.
*         8. RESERVE. 
*         9. READ WRRAM 
*        10. SAVE DATA READ IN OB 
*        11. READ WRRAM.
*        12. RELEASE. 
*        13. COMPARE IB TO OB AND REPORT DATA ERRORS. 
*        14. REPEAT STEPS 8-13 FOR ALL WRITE RAMS.
*        15. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X02 - ABORT ON .RES. COMMAND 
*         3. T7X02 - ABORT ON .READ RDRAM. COMMAND
*         4. T7X02 - ABORT ON .READ WRRAM. COMMAND
*         5. T7X02 - ABORT ON .REL. COMMAND 
* 
*         6. T7X02 - EC 101 - READ RAM *OCT DATA ERROR
*              WORD=*OCT 1ST READ=*OCT 2ND READ=*OCT DIF=*OCT 
* 
*         7. T7X02 - EC 102 - WRITE RAM *OCT DATA ERROR 
*              WORD=*OCT 1ST READ=*OCT 2ND READ=*OCT DIF=*OCT 
* 
* 
*** T7X02 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B0 = LOOP COUNT 
*         B1 = RAM NUMBER 
*         B2 = READ/WRITE RAM FLAG
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*            = NUMBER OF ERRORS REPORTED ON COMPARE 
*         B6 = WORD COUNT FOR COMPARE 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X02 - COUPLER PATH
 2 FORMAT T7X02 - EC 101 -  READ RAM *OCT DATA ERROR
 3 FORMAT T7X02 - EC 102 -  WRITE RAM *OCT DATA ERROR 
 4 FORMAT   WORD=*OCT 1ST READ=*OCT 2ND READ=*OCT DIF=*OCT
 5 FORMAT T7X02 - ERRS=*DEC LOOPS=*DEC
 6 FORMAT T7X02 ERROR(S) IN MODULE = *DEC 
 7 FORMAT T7X02 - ABORT ON .RES. COMMAND
10 FORMAT T7X02 - ABORT ON .READ RDRAM. COMMAND 
11 FORMAT T7X02 - ABORT ON .READ WRRAM. COMMAND 
12 FORMAT T7X02 - ABORT ON .REL. COMMAND
20 IF(DC.EQ.53)WC = 253      *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT    *POST RUNNING MSG
21 B0 = 0                    *CLEAR LOOP COUNT
   B7 = 10                   *SET TCU LOOP FLAG 
22 B2 = 0                    *CLEAR READ/WRITE RAM FLAG 
23 B1 = 1                    *SET RAM NUMBER
24 B5 = 7 
   RES P1, ABT 70 
   IF(B2.NE.0) GOTO 25       *IF WRITE RAM PASS 
   B5 = 10
   READ RDRAM B1, ABT 70
   COPY IB TO OB FOR 253     *SAVE FIRST READ 
   READ RDRAM B1, ABT 70     *READ IT AGAIN 
   GOTO 26
25 B5 = 11
   READ WRRAM B1, ABT 70
   COPY IB TO OB FOR 253     *SAVE FIRST READ 
   READ WRRAM B1,ABT 70 
26 B6 = 253                  *WORDS TO COMPARE
   COMPARE IB TO OB FOR B6, ABT 40
   IF(ES.AND.RC.NE.0) GOTO 27  *IF REPEAT CONDITION 
   GOTO 24 WHILE(B1+1.NE.5)   *ALL RAMS NOT READ
   GOTO 23 WHILE (B2+1.NE.2)  *REPEAT FOR WRITE RAMS
   B1 = 1                     *RESET RAM NUMBER 
   B2 = 0                     *SET READ RAM PASS
27 B0 = B0+1                  *BUMP PASS COUNT
   IF(ES.AND.SL.EQ.0)GOTO 31  *NOT SCOPING LOOP 
30 MSG 5(BA,B0) TO DISPLAY
31 IF(ES.AND.RM.NE.0)GOTO 22  *IF REPEAT MODULE 
   IF(ES.AND.RC.NE.0)GOTO 24  *IF REPEAT CONDITION
   IF(B0.LE.4) GOTO 22        *LOOP 4 TIMES 
   IF(BA.EQ.0) GOTO 32        *IF NO ERRORS 
   MSG 6(BA) TO DAYFILE 
32 EXIT 
40 B5 = 1                    *ERRORS REPORTED 
   IF(B2.NE.0) GOTO 41       *IF WRITE RAM ERROR
   MSG 2(B1) TO LINE 0
   GOTO 42
41 MSG 3(B1) TO LINE 0
42 OB(400) = OB(B6).XOR.IB(B6)
   IF(OB(400).EQ.0) GOTO 43  *IF NO ERROR 
   MSG 4 (B6,OB(B6),IB(B6),OB(400)) TO LINE B5
   B5 = B5+1
   IF(B5.EQ.6) GOTO 44       *IF 5 ERRORS REPORTED
43 GOTO 42 WHILE (B6+1.LE.253)
44 IF(ES.AND.SL.NE.0) GOTO 70  *IF SCOPING
   PICTURE
* 
*-----------------ERROR PROCESSOR-------------- 
70 BA = BA+1                 *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 27  *IF SCOPING
   IF(EM.LT.100) GOTO 71     *NO PRODUCT OVERLAY ERR
   MSG B5 TO LINE 0 
71 MSG EM TO LINE 1 
   B7 = 10    *TCU LOOPBACK FLAG
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 73       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL THE STATUS CRACKER 
73 MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   GOTO 27
   END 20 
COMPILE   - T7X02 - 
   MODULE T7X03,67X(44,54,55,53)LOCK  - 67X TCU LOOPBACK
*** T7X03 - 67X TCU LOOPBACK
* 
**  T7X03 - EXTERNAL DOCUMENTATION
* 
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X03A IS EXECUTED. 
* 
*         T7X03 VERIFIES THAT THE TCU (TAPE CONTROL UNIT) IS
*         CAPABLE OF PERFORMING ENDFILE OPERATIONS AS WELL AS 
*         WRITES AND SHORT WRITES THROUGH THE TCU LOOPBACK
*         FACILITY (DATA NOT WRITTEN ON TAPE).  EIGHT DATA PATTERNS 
*         WITH KNOWN POLYNOMIALS ARE USED TO TEST THE WRITE OPERATIONS. 
* 
*         SINCE CANNED POLYNOMIALS ARE USED, CODE TRANSLATION AND PARITY
*         SELECTIONS MADE BY THE USER IN PARAMETER REGISTER P1 (PCXX) 
*         ARE IGNORED.
* 
*   DESCRIPTION - 
* 
*         1. ESTABLISH THE LIMITS OF THE TCU LOOPBACK OPTIONS TO BE 
*            TESTED BASED ON THE CAPABILITES OF THE CONTROLLER. (GCR, 
*            PHASE ENCODED AND NRZI). 
*         2. RESERVE..
*         3. SELECT LOOPBACK OPTION.
*         4. ENDFILE. 
*         5. VERIFY STATUS.  IF ERROR, REPORT EC 104. 
*         6. VERIFY EOF STATUS.  IF NOT REPORT EC 103.
*         7. REPEAT STEPS 2-6 FOR ALL TCU OPTIONS SELECTED. 
*         8. REPEAT STEPS 1-7 FOR 10 TIMES. 
*         9. RELEASE. 
*        10. IF REPEAT CONDITION, REPEAT STEPS 1-9. 
*        11. ESTABLISH THE LIMITS OF THE TCU LOOPBACK OPTIONS TO BE 
*            TESTED BASED ON THE CAPABILITES OF THE CONTROLLER. (GCR, 
*            PHASE ENCODED AND NRZI). 
*        12. GENERATE WORD COUNT AND RANDOM DATA BASED ON THE RECORD
*            NUMBER ABOUT TO BE WRITTEN.
*        13. RESERVE. 
*        14. SELECT LOOPBACK OPTION.
*        15. WRITE. 
*        16. VERIFY STATUS.  IF ERROR REPORT EC 120.
*        17. VERIFY POLYNOMIAL. IF ERROR REPORT EC 106. 
*        18. REPEAT STEPS 12- 17 FOR ALL TCU OPTIONS SELECTED.
*        19. REPEAT STEPS 11-18 FOR ALL DATA PATTERNS.
*        20. REPEAT STEPS 11-19 FOR 25 TIMES. 
*        21. RELEASE. 
*        22. IF REPEAT CONDITION, REPEAT STEPS 11-21. 
*        23. REPEAT MODULE OR EXIT. 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X03 - ABORT ON .RES. COMMAND 
*         3. T7X03 - ABORT ON .SELECT LOOPTCU. COMMAND
*         4. T7X03 - ABORT ON .ENDFILE. COMMAND 
*         5. T7X03 - ABORT ON .REL. COMMAND 
*         6. T7X03 - ABORT ON .WRITE. COMMAND 
* 
*         7. T7X03 - EC 103 - NO EOF STATUS ON ENDFILE *OCT 
*         8. T7X03 - EC 104 - STATUS ERROR AFTER ENDFILE *OCT 
*         9. T7X03 - EC 106 - WRITE *OCT POLY=*OCT EXP=*OCT 
*        10. T7X03 - EC 120 - STATUS ERROR AFTER WRITE *OCT 
*** T7X03 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B0 = LOOP COUNT 
*            = RESERVE OPTIONS
*         B1 = SUBSECTION IN EXECUTION
*         B2 = FIRST/CURRENT TCU LOOPBACK OPTION
*         B3 = PATTERN COUNTER
*            = RESERVE OPTIONS
*         B4 = LAST TCU LOOPBACK OPTION 
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*            = EXPECTED POLYNOMIAL
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X03 - TCU LOOPBACK (67X/ATS)
 2 FORMAT T7X03 - EC 103 - NO EOF STATUS ON ENDFILE *OCT
 3 FORMAT T7X03 - EC 104 - STATUS ERROR AFTER ENDFILE *OCT
 4 FORMAT T7X03 - EC 120 - STATUS ERROR AFTER WRITE *OCT
 5 FORMAT T7X03 - EC 106 - WRITE *OCT POLY=*OCT EXP=*OCT
 7 FORMAT T7X03 - ERRS=*DEC LOOPS=*DEC
10 FORMAT T7X03 ERROR(S) IN MODULE = *DEC 
11 FORMAT T7X03 - ABORT ON .RES. COMMAND
12 FORMAT T7X03 - ABORT ON .SELECT LOOPTCU. COMMAND 
13 FORMAT T7X03 - ABORT ON .ENDFILE. COMMAND
14 FORMAT T7X03 - ABORT ON .REL. COMMAND
15 FORMAT T7X03 - ABORT ON .WRITE. COMMAND
   DATA (OB,CON) 1767,4321,0652,5515,3045,0235,7404,1173
   DATA (OB(10),CON) 60,5610,410,7130,6770,3040,3060,1020 
   DATA (OB(20),CON)7750,7510,0420,4540,5210,2150,2250,5660 
   EQUATE EOF TO 20 
20 IF(DC.EQ.53)EXIT TO 03A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   COPY OB TO IB FOR 30      *SAVE DATA 
   B7 = 10                   *SET TCU LOOPBACK FLAG 
* 
*--------TEST ENDFILE THROUGH TCU LOOP------------- 
* 
21 B1 = 0                    *SUBSECTION IN EXECUTION 
   B0 = 0                    *CLEAR LOOP COUNTER
   B5 = 11
   RES P1, ABT 70            *GET STATUS
22 GOSUB 50                  *SET LIMITS ON TCU OPTIONS 
23 B5 = 11
   B3 = P1.AND.2077          *SET ODD PARITY, NO XLATE
   RES B3, ABT 70 
24 GOSUB 64                  *SELECT LOOPBACK OPTION
   B5 = 13
   ENDFILE, ABT 70
   GOSUB 60                   *VERIFY STATUS
   IF(SB(1).AND.EOF.EQ.0) ERROR 2/0, GOTO 70
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 24 WHILE (B2+1.LE.B4)  *DO ALL OPTIONS
   GOTO 22 WHILE (B0+1.NE.10D)  *REPEAT 10 TIMES
* 
*-----------TEST WRITE AND SHORT WRITE THROUGH TCU LOOP --- 
* 
30 B0 = 0                    *CLEAR LOOP COUNTER
   B1 = 1                    *SUBSECTION IN EXECUTION 
31 B3 = 0                    *PATTERN COUNTER 
32 GOSUB 50                  *SET LIMITS FOR TCU OPTIONS
   WC = 400 + B3
   RANDOM TO OB FOR WC, START IB(B3)
33 B5 = 11
   IB(477) = B0 
   B0 = P1.AND.2077          *SET ODD PARITY, NO XLATE
   RES B0, ABT 70 
   B0 = IB(477) 
34 GOSUB 64                  *SELECT LOOPBACK OPTION
   B5 = 15
   WRITE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   B5 = IB(B3+20)            *EXPECTED 7TK POLYNOMIAL 
   IF(P1.AND.10B.EQ.0) GOTO 35  *6 BIT MODE 
   IF(DC.EQ.44) GOTO 35      *7TK UNIT
   B5 = IB(B3+10)            *EXPECTED 9TK POLYNOMIAL 
35 IF(SB(2).NE.B5) ERROR 5/0, GOTO 70 
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 34 WHILE (B2+1.LE.B4)  *DO ALL OPTIONS
   GOTO 32 WHILE (B3+1.NE.10)  *DO ALL PATTERNS 
   GOTO 31 WHILE (B0+1.NE.25D)  *LOOP 25 TIMES
   GOSUB 50                   *SET LIMITS ON OPTIONS
   B0 = 0                      *CLEAR LOOP COUNT
   B3 = 0                      *CLEAR PATTERN COUNTER 
   B5 = 14
   REL, ABT 70
   GOTO 73                   *TEST REPEAT MODULE
* 
*-------SET-UP LIMITS SUBROUTINE
* 
50 B2 = 0                    *FIRST TCU LOOPBACK OPTION 
   B4 = 13                   *LAST TCU LOOP-BACK OPTION 
   IF(SB(11D).AND.4000.NE.0) GOTO 51  *GCR
   B2 = 3                     *START WITH PHASE ENCODED 
51 IF(SB(11D).AND.200.EQ.0) GOTO 52  *NRZI
   B4 = 5                     *TERMINATE WITH PHASE 
   RETURN 
52 IF(DC.EQ.44) GOTO 53      *IF A 7TK UNIT IS ASSIGNED 
   B4 = 10                   *TERMINATE WITH 9TK NRZI 
53 RETURN 
* 
*-------TEST STATUS SUBROUTINE
* 
60 IF(SB(3).AND.5777.NE.0) GOTO 61
   IF(SB(4).NE.0) GOTO 61 
   IF(SB(5).NE.0) GOTO 61 
   IF(SB(6).NE.0) GOTO 61 
   IF(SB(7).NE.0) GOTO 61 
   IF(SB(9D).AND.7743.NE.0) GOTO 61 
   RETURN 
61 IF(B1.EQ.0) ERROR 3/0, GOTO 70 
   ERROR 4/0, GOTO 70 
* 
*-------SELECT LOOPBACK SUBROUTINE------------------
* 
64 IF(DC.NE.44) GOTO 65      *IF 7TK UNIT NOT ASSIGNED
   IF(B2.EQ.2) B2 = 3        *SKIP 200 IPS GCR MODE ON 7TK
65 B5 = 12
   B7 = 1010                 *NRZI WRITE THRU TCU LOOP
   IF(B2.GE.6) GOTO 66
   B7 = 2010                 *PE WRITE THRU TCU LOOP
   IF(B2.GE.3) GOTO 66
   B7 = 4010                 *GCR WRITE THRU TCU LOOP 
66 SELECT LOOPTCU B2, ABT 70
   RETURN 
* 
*-------ERROR PROCESSOR-----------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 74          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM(B2,SB(2),B5) TO LINE 1
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75          *NOT SCOPING 
74 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 7(BA,B6) TO DISPLAY   *POST SCOPING MSG
75 IF(ES.AND.RC.EQ.0) GOTO 76          *NOT REPEAT COND.
   IF(B1.EQ.0) GOTO 23       *IF SUBSECTION 0 
   GOTO 33                    *IF SUBSECTION 1
76 IF(ES.AND.RM.NE.0) GOTO 21          *IF REPEAT MODULE
   IF(BA.EQ.0) GOTO 77       *NO MODULE ERRORS
   MSG 10(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE 
77 EXIT 
   END 20 
COMPILE   - T7X03 - 
   MODULE T7X03A,67X(53)LOCK  - 698 ADAPTER LOOPBACK -
*** T7X03A - 698 ADAPTER LOOPBACK 
* 
**  T7X03A   EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW
* 
*        T7X03A  VERIFIES  THAT  THE  LOOPFSC (RUN CCC DI DIAGNOSTICS)
*        FUNCTION OPERATES PROPERLY.
* 
*        DESCRIPTION -
* 
*           1. RESERVE. 
*           2. SELECT  LOOPFSC. 
*           3. VERIFY STATUS. IF ERROR REPORT EC 120. 
*           4. REPEAT STEPS 1-3 FOR 25 TIMES. 
*           5. IF REPEAT CONDITION, REPEAT STEPS 1-4. 
*           6. REPEAT MODULE OR EXIT. 
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. T7X03A - ABORT ON .RES. COMMAND
*           3. T7X03A - ABORT ON .SELECT LOOPFSC. COMMAND 
*           4. T7X03A - ABORT ON .STATUS. COMMAND.
*           5. T7X03A - EC 120 - STATUS ERROR AFTER SELECT LOOPFSC
* 
  
*** T7X03A - INTERNAL DOCUMENTATION 
* 
*        REGISTER USAGE 
* 
*          B0 = LOOP COUNT
*          B2 = RESERVE OPTIONS 
*          B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT 
*          B6 = PASS COUNT FOR SCOPING LOOPS
*          B7 = CODE FOR STATUS ANALYSIS
*          BA = ERROR COUNTER 
* 
* 
*        MODULES CALLED - 
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT T7X03A - ADAPTER LOOPBACK (698/CMTS)
 3 FORMAT T7X03A- EC 120 STATUS ERROR AFTER LOOPFSC *OCTB 
 7 FORMAT T7X03A- ERRS=*DECD LOOP=*DECD 
10 FORMAT T7X03A- ERRORS IN MODULE=*DECD
11 FORMAT T7X03A- ABORT ON.RES. COMMAND 
12 FORMAT T7X03A- ABORT ON.SELECT LOOPFSC.
13 FORMAT T7X03A- ABORT ON.STATUS. COMMAND
* 
20 MSG 1 TO PRINT            *POST RUNNING MESSAGE
22 MSG 1 TO DISPLAY          *POST RUNNING MESSAGE
   B2 = P1.AND.2077          *SET ODD PARITY, NO XLATE
   IF(B2.AND.7.NE.4)GOTO 21  *IF NOT GCR DENSITY
   B2 = B2.AND.2070+2        *FORCE DENSITY TO PHASE ENCODED
* 
*  -----TEST LOOPFSC--------------------------------
* 
21 B0 = 0                    *CLEAR LOOP COUNT
24 B5 = 11
   B7=0 
   RES B2, ABT 70 
   B5 = 12
   B7 = 20                   *ADAPTER LOOPBACK FLAG 
   SELECT LOOPFSC, ABT 70 
   B5 = 13
   STATUS, ABT 70 
   IF(SB(1).AND. 5000 .EQ. 5000) ERROR 3/0, GOSUB 70
   GOTO 24 WHILE (B0+1.LT.25D)
   GOTO 73                   *TEST REPEAT MODULE
* 
*  -----ERROR PROCESSOR-----------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 74          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM (SB(1)) TO LINE 1 
   CALL 969                  *CALL 698/CMTS STATUS CRACKER
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75          *NOT SCOPING 
74 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 7(BA,B6) TO DISPLAY   *POST SCOPING MSG
75 IF(ES.AND.RM.NE.0) GOTO 22 
   IF(ES.AND.RC.NE.0) GOTO 21 
   IF(BA.EQ.0) GOTO 77       *NO MODULE ERRORS
   MSG 10(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE 
77 EXIT 
   END 20 
COMPILE   - T7X03A -
   MODULE T7X04,67X(44,54,55,53)LOCK  - TCU ERROR GENERATION
*** T7X04 - TCU ERROR GENERATION
* 
**  T7X04 - EXTERNAL DOCUMENTATION
* 
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X04 IS NOT EXECUTED.
* 
*         T7X04 VERIFIES THE ABILITY OF THE TCU TO SET THE ALERT
*         STATUS BIT.  THIS IS ACCOMPLISHED BY USING TWO TECHNIQUES.
*         THE FIRST TEST CONDITION TESTS THE ABILITY TO FORCE A 
*         TCU PATH ERROR AND THE SECOND CONDITION TESTS THE ABILITY 
*         TO FORCE A DATA ERROR (THREE TRACKS ARE FORCED TO ERRORS
*         TO CREATE AN UNRECOVERABLE ERROR).
* 
* 
*   DESCRIPTION - 
* 
*         1. ESTABLISH THE LIMITS OF THE TCU LOOPBACK OPTIONS TO BE 
*            TESTED BASED ON THE CAPABILITES OF THE CONTROLLER. (GCR, 
*            PHASE ENCODED AND NRZI). 
*         2. RESERVE..
*         3. SELECT TCU LOOPBACK OPTION.
*         4. SELECT PATHERR.
*         5. WRITE. 
*         6. VERIFY STATUS.  IF NO ALERT, REPORT EC 107.
*         7. REPEAT STEPS 2-6 FOR ALL TCU OPTIONS SELECTED. 
*         8. REPEAT STEPS 1-7 FOR 25 TIMES. 
*         9. RELEASE. 
*        10. IF REPEAT CONDITION, REPEAT STEPS 1-9. 
*        11. ESTABLISH THE LIMITS OF THE TCU LOOPBACK OPTIONS TO BE 
*            TESTED BASED ON THE CAPABILITES OF THE CONTROLLER. (GCR, 
*            PHASE ENCODED AND NRZI). 
*        12. RESERVE. 
*        13. SELECT TCU LOOPBACK OPTION.
*        14. SELECT DATAERR.
*        15. WRITE. 
*        16. VERIFY STATUS.  IF NO ALERT REPORT EC 110. 
*        17. REPEAT STEPS 12- 16 FOR ALL TCU OPTIONS SELECTED.
*        18. REPEAT STEPS 11-17 FOR 25 TIMES. 
*        19. RELEASE. 
*        20. IF REPEAT CONDITION, REPEAT STEPS 11-19. 
*        21. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X04 - ABORT ON .RES. COMMAND 
*         3. T7X04 - ABORT ON .SELECT PATHERR. COMMAND
*         4. T7X04 - ABORT ON .SELECT LOOPTCU. COMMAND
*         5. T7X04 - ABORT ON .WRITE. COMMAND 
*         6. T7X04 - ABORT ON .REL. COMMAND 
*         7. T7X04 - ABORT ON .SELECT DATAERR. COMMAND
* 
*         8. T7X04 - EC 107 - NO ALERT ON PATHERR *OCT
*         9. T7X04 - EC 110 - NO ALERT ON DATA ERR *OCT 
* 
* 
*** T7X04 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B0 = LOOP COUNT 
*         B1 = SUBSECTION IN EXECUTION
*         B2 = FIRST/CURRENT TCU LOOPBACK OPTION
*         B4 = LAST TCU LOOPBACK OPTION 
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*         B6 = PASS COUNT FOR SCOPING LOOPS.
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
* 
 1 FORMAT T7X04 - TCU ERROR GENERATION
 2 FORMAT T7X04 - EC 107 - NO ALERT ON PATHERR *OCT 
 3 FORMAT T7X04 - EC 110 - NO ALERT ON DATA ERR *OCT
 4 FORMAT T7X04 - ERRS=*DEC LOOPS=*DEC
 5 FORMAT T7X04 ERROR(S) IN MODULE = *DEC 
 6 FORMAT T7X04 - ABORT ON .RES. COMMAND
 7 FORMAT T7X04 - ABORT ON .SELECT PATHERR. COMMAND 
10 FORMAT T7X04 - ABORT ON .SELECT LOOPTCU. COMMAND 
11 FORMAT T7X04 - ABORT ON .WRITE. COMMAND
12 FORMAT T7X04 - ABORT ON .REL. COMMAND
13 FORMAT T7X04 - ABORT ON .SELECT DATAERR. COMMAND 
14 FORMAT T7X04 - NOT EXECUTED USING DC = 53
   EQUATE ALERT TO 4000 
20 GOTO 40                   *TEST DEVICE CODE
* 
*-----------TEST PATH ERROR-----------------
* 
21 B1 = 0                    *SUBSECTION IN EXECUTION = 0 
   B7 = 10                  *WRITE THRU TCU LOOP
   B0 = 0                    *CLEAR LOOP COUNTER
   B5 = 6 
   RES P1, ABT 70            *GET STATUS
22 GOSUB 50                  *SET LIMITS ON TCU OPTIONS 
23 B5 = 6 
   RES P1, ABT 70 
24 GOSUB 64                  *SELECT LOOPBACK OPTION
   B5 = 7 
   SELECT PATHERR, ABT 70 
   B5 = 11
   WRITE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 24 WHILE (B2+1.LE.B4)  *DO ALL OPTIONS
   GOTO 22 WHILE (B0+1.NE.25D)        *REPEAT 25 TIMES
* 
*-------------TEST DATA ERROR-----------------------
* 
30 B0 = 0                    *CLEAR LOOP COUNTER
31 B1 = 1                    *SUBSECTION IN EXECUTION = 1 
32 GOSUB 50                  *SET LIMITS ON TCU OPTIONS 
33 B5 = 6 
   RES P1, ABT 70 
34 GOSUB 64                  *SELECT LOOPBACK OPTION
   B5 = 13
   SELECT DATAERR 1007, ABT 70
   B5 = 11
   WRITE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 34 WHILE (B2+1.LE.B4)  *DO ALL OPTIONS
   GOTO 32 WHILE (B0+1.NE.25D)        *REPEAT 25 TIMES
   GOSUB 50                   *SET LIMITS ON OPTIONS
   B0 = 0                     *CLEAR LOOP COUNT 
   B5 = 12
   REL, ABT 70
   GOTO 73                   *TEST REPEAT MODULE
* 
*  -----TEST DEVICE CODE
* 
40 IF(DC.NE.53)GOTO 42       *IF NOT 698/CMST SUBSYSTEM 
   MSG 14 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
42 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   DUP 7777 TO OB FOR 500 
   WC = 500 
   GOTO 21
* 
*-------SET-UP LIMITS SUBROUTINE
* 
50 B2 = 0                    *FIRST TCU LOOPBACK OPTION 
   B4 = 13                   *LAST TCU LOOP-BACK OPTION 
   IF(SB(11D).AND.4000.NE.0) GOTO 51  *GCR
   B2 = 3                     *START WITH PHASE ENCODED 
51 IF(SB(11D).AND.200.EQ.0) GOTO 52  *NRZI
   B4 = 5                     *TERMINATE WITH PHASE 
   RETURN 
52 IF(DC.EQ.44) GOTO 53      *IF A 7TK UNIT IS ASSIGNED 
   B4 = 10                   *TERMINATE WITH 9TK NRZI 
53 RETURN 
* 
*-------TEST STATUS SUBROUTINE
* 
60 IF(SB(1).AND.ALERT.NE.0) GOTO 61    *IF ALERT, OK
   IF(B1.EQ.0) ERROR 2/0,GOTO 70       *IF PATHERR TESTING
   ERROR 3/0,GOTO 70         *IF DATAERR TESTING
61 RETURN 
* 
*-------SELECT LOOPBACK SUBROUTINE------------------
* 
64 IF(DC.NE.44) GOTO 65      *IF 7TK UNIT NOT ASSIGNED
   IF(B2.EQ.2) B2 = 3        *SKIP 200 IPS GCR MODE ON 7TK
65 B5 = 10
   B7 = 1010                 *NRZI WRITE THRU TCU LOOP
   IF(B2.GE.6) GOTO 66
   B7 = 2010                 *PE WRITE THRU TCU LOOP
   IF(B2.GE.3) GOTO 66
   B7 = 4010                 *GCR WRITE THRU TCU LOOP 
66 SELECT LOOPTCU B2, ABT 70
   RETURN 
* 
*-------ERROR PROCESSOR-----------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 74          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM(B2) TO LINE 1 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75          *NOT SCOPING 
74 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 4(BA,B6) TO DISPLAY   *POST SCOPING MSG
75 IF(ES.AND.RC.EQ.0) GOTO 76          *NOT REPEAT COND.
   IF(B1.EQ.0) GOTO 23       *IF SUBSECTION 0 
   GOTO 33                    *IF SUBSECTION 1
76 IF(ES.AND.RM.NE.0) GOTO 21          *IF REPEAT MODULE
   IF(BA.EQ.0) GOTO 77       *NO MODULE ERRORS
   MSG 5(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE
77 EXIT 
   END 20 
COMPILE   - T7X04 - 
   MODULE T7X05,67X(44,54,55,53)LOCK  - TCU VELOCITY
*** T7X05 - TCU VELOCITY
* 
**  T7X05 - EXTERNAL DOCUMENTATION
* 
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X05 IS NOT EXECUTED.
* 
*         T7X05 VERIFIES THAT THE LOGIC WITHIN THE TCU THAT 
*         MONITORS TAPE UNIT VELOCITY SIGNALS IS OPERATIONAL. 
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. SELECT VELOCITY. 
*         3. VERIFY STATUS.  IF ERROR, REPORT EC 111. 
*         4. REPEAT STEPS 1-3 FOR 25 TIMES. 
*         5. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X05 - ABORT ON .RES. COMMAND 
*         3. T7X05 - ABORT ON .SELECT VELOCITY. COMMAND 
* 
*         4. T7X05 - EC 111 - STATUS ERROR ON VELOCITY TEST 
* 
* 
*** T7X05 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B0 = LOOP COUNT 
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X05 - TCU VELOCITY
 2 FORMAT T7X05 - EC 111 - STATUS ERROR ON VELOCITY TEST
 3 FORMAT T7X05 - ERRS=*DEC LOOPS=*DEC
 4 FORMAT T7X05 ERROR(S) IN MODULE = *DEC 
 5 FORMAT T7X05 - ABORT ON .RES. COMMAND
 6 FORMAT T7X05 - ABORT ON .SELECT VELOCITY. COMMAND
14 FORMAT T7X05 - NOT EXECUTED USING DC = 53
20 GOTO 40                   *TEST DEVICE CODE
* 
*--------TEST VELOCITY LOGIC IN TCU---------------------- 
* 
21 B0 = 0                    *CLEAR LOOP COUNTER
   B7 = 10                   *TCU LOOP - IGNORE UNIT ERRORS 
22 B5 = 5 
   RES P1, ABT 70 
   B5 = 6 
   SELECT VELOCITY, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   GOTO 22 WHILE (B0+1.NE.25D)         *REPEAT 25 TIMES 
   GOTO 72                   *TEST REPEAT COND. OR MODULE 
* 
*  -----TEST DEVICE CODE
* 
40 IF(DC.NE.53)GOTO 42       *IF NOT 698/CMST SUBSYSTEM 
   MSG 14 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
42 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   GOTO 21
* 
*-------TEST STATUS SUBROUTINE
* 
60 IF(SB(3).AND.5777.NE.0) GOTO 61
   IF(SB(4).NE.0) GOTO 61 
   IF(SB(5).NE.0) GOTO 61 
   IF(SB(6).NE.0) GOTO 61 
   IF(SB(7).NE.0) GOTO 61 
   IF(SB(9D).AND.7743.NE.0) GOTO 61 
   RETURN 
61 ERROR 2/0, GOTO 70 
* 
*--------ERROR PROCESSOR--------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 73          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM TO LINE 1 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
72 IF(ES.AND.SL.EQ.0) GOTO 74          *NOT SCOPING 
73 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 3(BA,B6) TO DISPLAY   *POST SCOPING MSG
74 IF(ES.AND.CM.NE.0) GOTO 21          *RC OR RM
   IF(BA.EQ.0) GOTO 76       *NO MODULE ERRORS
   MSG 4(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE
76 EXIT 
   END 20 
COMPILE   - T7X05 - 
   MODULE T7X10,67X(44,54,55,53)LOCK  - 67X UNIT I/O LOOPBACK - 
*** T7X10 - 67X UNIT I/O LOOPBACK 
* 
**  T7X10 - EXTERNAL DOCUMENTATION
* 
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X10A IS EXECUTED. 
* 
*         T7X10 VERIFIES THAT THE UNIT IS CAPABLE OF PERFORMING 
*         WRITES AND SHORT WRITES THROUGH THE UNIT I LOOPBACK 
*         FACILITY (DATA NOT WRITTEN ON TAPE) AS WELL AS ENDFILE
*         OPERATIONS.  EIGHT DATA PATTERNS WITH KNOWN POLYNOMIALS 
*         ARE USED TO TEST THE WRITE OPERATIONS. (THESE SAME DATA 
*         PATTERNS HAVE ALREADY BEEN USED IN T7X03 TO VERIFY THE
*         TCU LOOPBACK).
* 
*         SINCE CANNED POLYNOMIALS ARE USED, CODE TRANSLATION AND PARITY
*         SELECTIONS MADE BY THE USER IN PARAMETER REGISTER P1 (PCXX) 
*         ARE IGNORED.  DUE TO CONTROLLER HARDWARE DESIGN,
*         THE LOOPBACK DOES NOT PERFORM CORRECTLY IN GCR. 
*         THEREFORE, IF THE USER SELECTS GCR DENSITY IN PARAMETER 
*         REGISTER P1 IT WILL BE IGNORED AND PE DENSITY WILL BE USED. 
* 
* 
*   DESCRIPTION - 
* 
*         1. GENERATE WORD COUNT AND RANDOM DATA BASED ON THE RECORD
*            NUMBER ABOUT TO BE WRITTEN.
*         2. RESERVE. 
*         3. SELECT LOOPUNIT. 
*         4. WRITE. 
*         5. VERIFY STATUS.  IF ERROR REPORT EC 114.
*         6. VERIFY POLYNOMIAL. IF ERROR REPORT EC 115. 
*         7. REPEAT STEPS 1-6 FOR ALL DATA PATTERNS.
*         8. REPEAT STEPS 1-7 FOR 25 TIMES. 
*         9. RELEASE. 
*        10. IF REPEAT CONDITION, REPEAT STEPS 1-9. 
*        11. RESERVE..
*        12. SELECT LOOPUNIT. 
*        13. ENDFILE. 
*        14. VERIFY STATUS.  IF ERROR, REPORT EC 113. 
*        15. VERIFY EOF STATUS.  IF NOT REPORT EC 112.
*        16. REPEAT STEPS 11-15 FOR 25 TIMES. 
*        17. IF REPEAT CONDITION, REPEAT STEPS 11-16. 
*        18. RELEASE. 
*        19. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X10 - ABORT ON .RES. COMMAND 
*         3. T7X10 - ABORT ON .SELECT LOOPUNIT. COMMAND 
*         4. T7X10 - ABORT ON .ENDFILE. COMMAND 
*         5. T7X10 - ABORT ON .REL. COMMAND 
*         6. T7X10 - ABORT ON .WRITE. COMMAND 
* 
*         7. T7X10 - EC 112 - NO EOF STATUS ON ENDFILE *OCT 
*         8. T7X10 - EC 113 - STATUS ERROR AFTER ENDFILE *OCT 
*         9. T7X10 - EC 114 - WRITE *OCT POLY=*OCT EXP=*OCT 
*        10. T7X10 - EC 115 - STATUS ERROR AFTER WRITE *OCT 
* 
* 
*** T7X10 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B0 = LOOP COUNT 
*         B1 = SUBSECTION IN EXECUTION
*         B2 = RESERVE OPTIONS
*         B3 = PATTERN COUNTER
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*            = EXPECTED POLYNOMIAL
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X10 - 67X UNIT I/O LOOPBACK 
 2 FORMAT T7X10 - EC 112 - NO EOF STATUS ON ENDFILE *OCT
 3 FORMAT T7X10 - EC 113 - STATUS ERROR AFTER ENDFILE *OCT
 4 FORMAT T7X10 - EC 114 - STATUS ERROR AFTER WRITE *OCT
 5 FORMAT T7X10 - EC 115 - WRITE *OCT POLY=*OCT EXP=*OCT
 7 FORMAT T7X10 - ERRS=*DEC LOOPS=*DEC
10 FORMAT T7X10 ERROR(S) IN MODULE = *DEC 
11 FORMAT T7X10 - ABORT ON .RES. COMMAND
12 FORMAT T7X10 - ABORT ON .SELECT LOOPUNIT. COMMAND
13 FORMAT T7X10 - ABORT ON .ENDFILE. COMMAND
14 FORMAT T7X10 - ABORT ON .REL. COMMAND
15 FORMAT T7X10 - ABORT ON .WRITE. COMMAND
   DATA (OB,CON) 1767,4321,0652,5515,3045,0235,7404,1173
   DATA (OB(10),CON) 60,5610,410,7130,6770,3040,3060,1020 
   DATA (OB(20),CON)7750,7510,0420,4540,5210,2150,2250,5660 
   EQUATE EOF TO 20 
20 IF(DC.EQ.53)EXIT TO 10A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   COPY OB TO IB FOR 30      *SAVE DATA 
   B2 = P1.AND.2077          *SET ODD PARITY, NO XLATE
   IF(B2.AND.7.NE.4)GOTO 21  *IF NOT GCR DENSITY
   B2 = B2.AND.2070+2        *FORCE DENSITY TO PHASE ENCODED
* 
*-----------TEST WRITE AND SHORT WRITE THROUGH UNIT I/O LOOP ---
* 
21 B0 = 0                    *CLEAR LOOP COUNT
   B1 = 0                    *SUBSECTION IN EXECUTION 
22 B3 = 0                    *PATTERN COUNTER 
23 WC = 400 + B3
   RANDOM TO OB FOR WC, START IB(B3)
24 B5 = 11
   B7 = 20                   *UNIT LOOPBACK I FLAG
   RES B2, ABT 70 
   B5 = 12
   SELECT LOOPUNIT, ABT 70
   B5 = 15
   WRITE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   B5 = IB(B3+20)            *EXPECTED 7TK POLYNOMIAL 
   IF(P1.AND.10B.EQ.0) GOTO 25  *6 BIT MODE 
   IF(DC.EQ.44) GOTO 25        *7TK UNIT
   B5 = IB(B3+10)            *EXPECTED 9TK POLYNOMIAL 
25 IF(SB(2).NE.B5) ERROR 5/0, GOTO 70 
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 23 WHILE (B3+1.NE.10)  *DO ALL PATTERNS 
   GOTO 22 WHILE (B0+1.NE.25D)  *LOOP 25 TIMES
* 
*--------TEST ENDFILE THROUGH UNIT I/O LOOP 
* 
30 B1 = 1                    *SUBSECTION IN EXECUTION 
   B3 = 0                    *CLEAR LOOP COUNTER
31 B5 = 11
   B7 = 20                   *UNIT LOOPBACK I FLAG
   RES B2, ABT 70 
   B5 = 12
   SELECT LOOPUNIT, ABT 70
   B5 = 13
   ENDFILE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   IF(SB(1).AND.EOF.EQ.0) ERROR 2/0, GOTO 70
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 31 WHILE (B3+1.LE.25D)  *REPEAT 25 TIMES
   B5 = 14
   REL, ABT 70
   GOTO 73                   *TEST REPEAT MODULE
* 
*-------TEST STATUS SUBROUTINE
* 
60 IF(SB(3).AND.5777.NE.0) GOTO 61
   IF(SB(4).NE.0) GOTO 61 
   IF(SB(5).NE.0) GOTO 61 
   IF(SB(6).NE.0) GOTO 61 
   IF(SB(7).NE.0) GOTO 61 
   IF(SB(9D).AND.7743.NE.0) GOTO 61 
   RETURN 
61 IF(B1.NE.0) ERROR 3/0, GOTO 70 
   ERROR 4/0, GOTO 70 
* 
*-------ERROR PROCESSOR-----------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 74          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM(B3,SB(2),B5) TO LINE 1
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75          *NOT SCOPING 
74 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 7(BA,B6) TO DISPLAY   *POST SCOPING MSG
75 IF(ES.AND.RC.EQ.0) GOTO 76          *NOT REPEAT COND.
   IF(B1.EQ.0) GOTO 24       *IF SUBSECTION 0 
   GOTO 30                   *IF SUBSECTION 1 
76 IF(ES.AND.RM.NE.0) GOTO 21          *IF REPEAT MODULE
   IF(BA.EQ.0) GOTO 77       *NO MODULE ERRORS
   MSG 10(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE 
77 EXIT 
   END 20 
COMPILE   - T7X10 - 
   MODULE T7X10A,67X(53)LOCK  - 698 UNIT I/O LOOPBACK - 
*** T7X10A - 698 UNIT I/O LOOPBACK
* 
**  T7X10 - EXTERNAL DOCUMENTATION
* 
* 
*   OVERVIEW -
* 
*         T7X10A VERIFIES THAT THE UNIT IS CAPABLE OF PERFORMING
*         WRITES AND SHORT WRITES THROUGH THE UNIT I LOOPBACK 
*         FACILITY (DATA NOT WRITTEN ON TAPE) AS WELL AS ENDFILE
*         OPERATIONS.  EIGHT DATA PATTERNS WITH KNOWN POLYNOMIALS 
*         ARE USED TO TEST THE WRITE OPERATIONS.
* 
*         SINCE CANNED POLYNOMIALS ARE USED, CODE TRANSLATION AND PARITY
*         SELECTIONS MADE BY THE USER IN PARAMETER REGISTER P1 (PCXX) 
*         ARE IGNORED.  DUE TO CONTROLLER HARDWARE DESIGN, THE
*         LOOPBACK DOES NOT PERFORM CORRECTLY IN GCR.  THEREFORE
*         PE DENSITY WILL BE FORCED.
* 
* 
*   DESCRIPTION - 
* 
*         1.  GENERATE WORD COUNT AND RANDOM DATA BASED ON THE RECORD 
*             NUMBER ABOUT TO BE WRITTEN. 
*         2.  RESERVE WITH ERROR CORRECTION DISABLED, 
*         3.  SELECT LOOPUNIT.
*         4.  WRITE.
*         5.  VERIFY STATUS.  IF ERROR REPORT EC 114. 
*         6.  VERIFY POLYNOMIAL. IF ERROR REPORT EC 115.
*         7.  REPEAT STEPS 1-6 FOR ALL DATA PATTERNS. 
*         8.  REPEAT STEPS 1-7 FOR 25 TIMES.
*         9.  RELEASE.
*        10.  IF REPEAT CONDITION, REPEAT STEPS 1-9.
*        11.  REPEAT MODULE OR EXIT.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X10A - ABORT ON .RES. COMMAND
*         3. T7X10A - ABORT ON .SELECT LOOPUNIT. COMMAND
*         4. T7X10A - ABORT ON .REL. COMMAND
*         5. T7X10A - ABORT ON .WRITE. COMMAND
*         6. T7X10A - ABORT ON .SENSE STATUS. COMMAND 
* 
*         7. T7X10A - EC 114 - WRITE *OCT POLY=*OCT EXP=*OCT
*         8. T7X10A - EC 115 - STATUS ERROR AFTER WRITE *OCT
* 
* 
  
*** T7X10A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE
* 
*         B0 = LOOP COUNT 
*         B1 = SUBSECTION IN EXECUTION
*         B2 = RESERVE OPTIONS
*         B3 = PATTERN COUNTER
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*            = EXPECTED POLYNOMIAL
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT T7X10A - 698 UNIT I/O LOOPBACK
 4 FORMAT T7X10A - EC 114 - STATUS ERROR AFTER WRITE *OCT 
 5 FORMAT T7X10A - EC 115 - WRITE *OCT POLY=*OCT EXP=*OCT 
 7 FORMAT T7X10A - ERRS=*DEC LOOPS=*DEC 
10 FORMAT T7X10A ERROR(S) IN MODULE = *DEC
11 FORMAT T7X10A - ABORT ON .RES. COMMAND 
12 FORMAT T7X10A - ABORT ON .SELECT LOOPUNIT. COMMAND 
14 FORMAT T7X10A - ABORT ON .REL. COMMAND 
15 FORMAT T7X10A - ABORT ON .WRITE. COMMAND 
16 FORMAT T7X10A - ABORT ON .SENSE STATUS. COMMAND
   DATA (OB,CON) 1767,4321,0652,5515,3045,0235,7404,1173
   DATA (OB(10),CON) 60,5610,730,7130,6770,3040,2720,1020 
   DATA (OB(20),CON)7750,7510,0420,4540,5210,2150,2250,5660 
   EQUATE EOF TO 20 
* 
20 MSG 1 TO PRINT            *POST RUNNING MESSAGE
   COPY OB TO IB FOR 30      *SAVE DATA 
21 MSG 1 TO DISPLAY          *POST RUNNING MESSAGE
   B2 = P1.AND.2000          *SET ODD PARITY, NO XLATE
   B2 = B2 + 12              *PE DENSITY AND PACKED MODE
* 
*  ---------TEST WRITE AND SHORT WRITE THROUGH UNIT I/O LOOP ---
* 
   B0 = 0                    *CLEAR LOOP COUNT
   B1 = 0                    *SUBSECTION IN EXECUTION 
22 B3 = 0                    *PATTERN COUNTER 
23 WC = 400 + B3
   RANDOM TO OB FOR WC, START IB(B3)
24 B5 = 11
   B7 = 20                   *UNIT LOOPBACK I FLAG
   RES B2, ABT 70 
   B5 = 12
   SELECT LOOPUNIT, ABT 70
   B5 = 15
   WRITE, ABT 70
   B5 = 16
   STATUS SENSE, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = IB(B3+10)            *EXPECTED 9TK POLYNOMIAL 
   IF(SB(2).NE.B5) ERROR 5/0, GOTO 70 
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 23 WHILE (B3+1.NE.10)  *DO ALL PATTERNS 
   GOTO 22 WHILE (B0+1.NE.25D)  *LOOP 25 TIMES
   REL, ABT 70
   GOTO 73                   *TEST REPEAT MODULE
* 
*  -----TEST STATUS SUBROUTINE
* 
60 IF(SB(3).AND.5777.NE.0) GOTO 61
   IF(SB(4).NE.0) GOTO 61 
   IF(SB(5).NE.0) GOTO 61 
   IF(SB(9D).AND.7743.NE.0) GOTO 61 
   IF(SB(1).AND.4000B.EQ.0) GOTO 62          *NO ALERT
* 
**
* 
   IF(IB(455).AND.377.NE.0) GOTO 61          *TRACK IN ERROR
   IF(IB(456).AND.7621.NE.0) GOTO 61         *ERROR STATUS
   IF(IB(457).AND.426.NE.0) GOTO 61          *ERROR STATUS
   IF(IB(460).AND.2000.NE.0) GOTO 61         *ERROR STATUS
   IF(IB(461).AND.2211.NE.0) GOTO 61         *ERROR STATUS
   IF(IB(462).AND.2400.NE.0) GOTO 61         *ERROR STATUS
   IF(IB(463).AND.4.NE.0) GOTO 61            *ERROR STATUS
   GOTO 61    *ALERT SET AND ABOVE SENSE STATUS NOT ERROR 
62 RETURN 
61 ERROR 4/0, GOTO 70 
* 
*  -----ERROR PROCESSOR-----------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 74          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM(B3,SB(2),B5) TO LINE 1
   CALL 969                  *CALL 698/CMTS STATUS CRACKER
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75          *NOT SCOPING 
74 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 7(BA,B6) TO DISPLAY   *POST MSG
   GOTO 24
75 IF(ES.AND.RC.EQ.0) GOTO 76          *NOT REPEAT COND.
   GOTO 74
76 IF(ES.AND.RM.NE.0) GOTO 21          *IF REPEAT MODULE
   IF(BA.EQ.0) GOTO 77       *NO MODULE ERRORS
   MSG 10(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE 
77 EXIT 
   END 20 
COMPILE   - T7X10A -
   MODULE T7X11,67X(44,54,55,53)LOCK  - UNIT HEAD LOOPBACK -
*** T7X11 - UNIT HEAD LOOPBACK
* 
**  T7X11 - EXTERNAL DOCUMENTATION
* 
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X11 IS NOT EXECUTED.
* 
*         T7X11 VERIFIES THAT THE UNIT IS CAPABLE OF PERFORMING 
*         WRITES AND SHORT WRITES THROUGH THE UNIT II LOOPBACK
*         FACILITY (DATA NOT WRITTEN ON TAPE) AS WELL AS ENDFILE
*         OPERATIONS.  EIGHT DATA PATTERNS WITH KNOWN POLYNOMIALS 
*         ARE USED TO TEST THE WRITE OPERATIONS. (THESE SAME DATA 
*         PATTERNS HAVE ALREADY BEEN USED IN T7X03 TO VERIFY THE
*         TCU LOOPBACK AND IN T7X10 TO VERIFY THE UNIT I LOOPBACK). 
* 
*         SINCE CANNED POLYNOMIALS ARE USED, CODE TRANSLATION AND PARITY
*         SELECTIONS MADE BY THE USER IN PARAMETER REGISTER P1 (PCXX) 
*         ARE IGNORED.  DUE TO CONTROLLER HARDWARE DESIGN,
*         THE LOOPBACK DOES NOT PERFORM CORRECTLY IN GCR. 
*         THEREFORE, IF THE USER SELECTS GCR DENSITY IN PARAMETER 
*         REGISTER P1 IT WILL BE IGNORED AND PE DENSITY WILL BE USED. 
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. REWIND TO SET UNIT TO READ MODE. 
*         3. GENERATE WORD COUNT AND RANDOM DATA BASED ON THE RECORD
*            NUMBER ABOUT TO BE WRITTEN.
*         4. RESERVE. 
*         5. SELECT LOOPHEAD. 
*         6. WRITE. 
*         7. VERIFY STATUS.  IF ERROR REPORT EC 130.
*         8. VERIFY POLYNOMIAL. IF ERROR REPORT EC 131. 
*         9. REPEAT STEPS 3-8 FOR ALL DATA PATTERNS.
*        10. REPEAT STEPS 3-9 FOR 25 TIMES. 
*        11. RELEASE. 
*        12. IF REPEAT CONDITION, REPEAT STEPS 3-11.
*        13. RESERVE..
*        14. SELECT LOOPHEAD. 
*        15. ENDFILE. 
*        16. VERIFY STATUS.  IF ERROR, REPORT EC 116. 
*        17. VERIFY EOF STATUS.  IF NOT REPORT EC 117.
*        18. REPEAT STEPS 13-17 FOR 25 TIMES. 
*        19. IF REPEAT CONDITION, REPEAT STEPS 13-19. 
*        20. RELEASE. 
*        21. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X11 - ABORT ON .RES. COMMAND 
*         3. T7X11 - ABORT ON .SELECT LOOPHEAD. COMMAND 
*         4. T7X11 - ABORT ON .ENDFILE. COMMAND 
*         5. T7X11 - ABORT ON .REL. COMMAND 
*         6. T7X11 - ABORT ON .WRITE. COMMAND 
*         7. T7X11 - ABORT ON .REWIND. COMMAND
* 
*         8. T7X11 - EC 116 - NO EOF STATUS ON ENDFILE *OCT 
*         9. T7X11 - EC 117 - STATUS ERROR AFTER ENDFILE *OCT 
*        10. T7X11 - EC 130 - WRITE *OCT POLY=*OCT EXP=*OCT 
*        11. T7X11 - EC 131 - STATUS ERROR AFTER WRITE *OCT 
* 
* 
*** T7X11 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B0 = LOOP COUNT 
*         B1 = SUBSECTION IN EXECUTION
*         B2 = RESERVE OPTIONS
*         B3 = PATTERN COUNTER
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*            = EXPECTED POLYNOMIAL
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X11 - UNIT HEAD LOOPBACK
 2 FORMAT T7X11 - EC 116 - NO EOF STATUS ON ENDFILE *OCT
 3 FORMAT T7X11 - EC 117 - STATUS ERROR AFTER ENDFILE *OCT
 4 FORMAT T7X11 - EC 130 - STATUS ERROR AFTER WRITE *OCT
 5 FORMAT T7X11 - EC 131 - WRITE *OCT POLY=*OCT EXP=*OCT
 7 FORMAT T7X11 - ERRS=*DEC LOOPS=*DEC
10 FORMAT T7X11 ERROR(S) IN MODULE = *DEC 
11 FORMAT T7X11 - ABORT ON .RES. COMMAND
12 FORMAT T7X11 - ABORT ON .SELECT LOOPHEAD. COMMAND
13 FORMAT T7X11 - ABORT ON .ENDFILE. COMMAND
14 FORMAT T7X11 - ABORT ON .REL. COMMAND
15 FORMAT T7X11 - ABORT ON .WRITE. COMMAND
16 FORMAT T7X11 - ABORT ON .REWIND. COMMAND 
17 FORMAT T7X11 - NOT EXECUTED USING DC = 53
   DATA (OB,CON) 1767,4321,0652,5515,3045,0235,7404,1173
   DATA (OB(10),CON) 60,5610,410,7130,6770,3040,3060,1020 
   DATA (OB(20),CON)7750,7510,0420,4540,5210,2150,2250,5660 
   EQUATE EOF TO 20 
20 GOTO 40                   *TEST DEVICE CODE
* 
*-----------TEST WRITE AND SHORT WRITE THROUGH UNIT UNIT LOOP --- 
* 
21 B0 = 0                    *CLEAR LOOP COUNT
   B1 = 0                    *SUBSECTION IN EXECUTION 
   B5 = 11
   RES B2, ABT 70 
   B5 = 16
   REWIND, ABT 70            *CLEAR WRITE MODE IN UNIT
22 B3 = 0                    *PATTERN COUNTER 
23 WC = 400 + B3
   RANDOM TO OB FOR WC, START IB(B3)
24 B5 = 11
   B7 = 30                   *UNIT LOOPBACK II FLAG 
   RES B2, ABT 70 
   B5 = 12
   SELECT LOOPHEAD, ABT 70
   B5 = 15
   WRITE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   B5 = IB(B3+20)            *EXPECTED 7TK POLYNOMIAL 
   IF(P1.AND.10B.EQ.0) GOTO 25  *6 BIT MODE 
   IF(DC.EQ.44) GOTO 25        *7TK UNIT
   B5 = IB(B3+10)            *EXPECTED 9TK POLYNOMIAL 
25 IF(SB(2).NE.B5) ERROR 5/0, GOTO 70 
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 23 WHILE (B3+1.NE.10)  *DO ALL PATTERNS 
   GOTO 22 WHILE (B0+1.NE.25D)  *LOOP 25 TIMES
* 
*--------TEST ENDFILE THROUGH UNIT UNIT LOOP
* 
30 B1 = 1                    *SUBSECTION IN EXECUTION 
   B3 = 0                    *CLEAR LOOP COUNTER
31 B5 = 11
   B7 = 30                   *UNIT LOOPBACK II FLAG 
   RES B2, ABT 70 
   B5 = 12
   SELECT LOOPHEAD, ABT 70
   B5 = 13
   ENDFILE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   IF(SB(1).AND.EOF.EQ.0) ERROR 2/0, GOTO 70
   IF(ES.AND.RC.NE.0) GOTO 73   *IF REPEAT CONDITION
   GOTO 31 WHILE (B3+1.LE.25D)  *REPEAT 25 TIMES
   B5 = 14
   REL, ABT 70
   GOTO 73                   *TEST REPEAT MODULE
* 
*  -----TEST DEVICE CODE
* 
40 IF(DC.NE.53)GOTO 42       *IF NOT 698/CMST SUBSYSTEM 
   MSG 17 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
42 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   COPY OB TO IB FOR 30      *SAVE DATA 
   B2 = P1.AND.2077          *SET ODD PARITY, NO XLATE
   IF(B2.AND.7.NE.4)GOTO 21  *IF NOT GCR DENSITY
   B2 = B2.AND.2070+2        *FORCE DENSITY TO PHASE ENCODED
   GOTO 21
* 
*-------TEST STATUS SUBROUTINE
* 
60 IF(SB(3).AND.5777.NE.0) GOTO 61
   IF(SB(4).NE.0) GOTO 61 
   IF(SB(5).NE.0) GOTO 61 
   IF(SB(6).NE.0) GOTO 61 
   IF(SB(7).NE.0) GOTO 61 
   IF(SB(9D).AND.7743.NE.0) GOTO 61 
   RETURN 
61 IF(B1.NE.0) ERROR 3/0, GOTO 70 
   ERROR 4/0, GOTO 70 
* 
*-------ERROR PROCESSOR-----------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 74          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM(B3,SB(2),B5) TO LINE 1
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75          *NOT SCOPING 
74 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 7(BA,B6) TO DISPLAY   *POST SCOPING MSG
75 IF(ES.AND.RC.EQ.0) GOTO 76          *NOT REPEAT COND.
   IF(B1.EQ.0) GOTO 24       *IF SUBSECTION 0 
   GOTO 30                   *IF SUBSECTION 1 
76 IF(ES.AND.RM.NE.0) GOTO 21          *IF REPEAT MODULE
   IF(BA.EQ.0) GOTO 77       *NO MODULE ERRORS
   MSG 10(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE 
77 EXIT 
   END 20 
COMPILE   - T7X11 - 
   MODULE T7X20,67X(44,54,55,53)LOCK  - LOOPS AND VELOCITY -
*** T7X20 - LOOPS AND VELOCITY
* 
**  T7X20 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X20 TESTS THE ABILITY OF THE TAPE UNIT TO MOVE TAPE 
*         AT LOW SPEEDS FORWARD AND REVERSE WITHOUT CREATING
*         LOOP FAULTS AND VELOCITY ERRORS.  DATA INTEGRITY IS 
*         IGNORED DURING THE PROCESS.  INCREMENTING LENGTHS OF
*         TAPE ARE MOVED FROM 4 INCHES UP TO 5 FEET IN INCREMENTS 
*         OF 4 INCHES WITH NO DELAYS BETWEEN MOVES. 
*         A SHORT (LOW SPEED) REWIND IS USED TO TEST REVERSE. 
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         3. REWIND.
*         4. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         5. SET ERASE COUNT = 1. 
*         6. RESERVE. 
*         7. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         8. ERASE 4 INCHES OF TAPE.
*         9. VERIFY NOT AT -BOT-. REPORT EC137 IF ERROR.
*        10. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        11. REPEAT STEPS 8-10 ERASE COUNT TIMES. 
*        12. BUMP ERASE COUNT BY 1 (ADD 4 INCHES TO LENGTH OF 
*            TAPE MOVED). 
*        13. REPEAT STEPS 6-12 UNTIL ERASE COUNT IS 16 (APPROX. 
*            5 FEET OF TAPE). 
*        14. REWIND.
*        15. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        16. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X20 - ABORT ON .RES. COMMAND 
*         3. T7X20 - ABORT ON .REWIND. COMMAND
*         4. T7X20 - ABORT ON .ERASE. COMMAND 
* 
*         5. T7X20 - EC 132 - ABNORMAL STATUS 
*         6. T7X20 - EC 137 - STILL AT BOT AFTER AN ERASE 
* 
* 
*** T7X20 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B0 = ERASE COUNT (TO DO)
*         B1 = CURRENT ERASE COUNT (NUMBER DONE)
*         B3 = STATUS BUFFER INDEX
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X20 - LOOPS AND VELOCITY
 2 FORMAT T7X20 - EC 132 - ABNORMAL STATUS
 3 FORMAT T7X20 - ERRS=*DEC LOOPS=*DEC
 4 FORMAT T7X20 ERROR(S) IN MODULE = *DEC 
 5 FORMAT T7X20 - EC 137 - STILL AT BOT AFTER AN ERASE
10 FORMAT T7X20 - ABORT ON .RES. COMMAND
11 FORMAT T7X20 - ABORT ON .REWIND. COMMAND 
12 FORMAT T7X20 - ABORT ON .ERASE. COMMAND
* 
/ --- OB(1-16) = STATUS MASK     OB(21-36) = EXPECTED STATUS
* 
   DATA (OB(1),CON) 1003,0,0,0,22,1,0,0,0,0,7,363,234,177 
   DATA (OB(21),CON) 1,0,0,0,0,0,0,0,0,0,0,0,0,132
   EQUATE BOT TO 4
20 IF(DC.EQ.53)OB(15) = 20   *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)OB(16) = 0    *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)OB(36) = 0    *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT     *POST RUNNING MESSAGE 
* 
*---------TEST LOOPS AND VELOCITY---------- 
* 
23 OB(33) = 2 
   IF(P0.EQ.100) GOTO 21     *IF 100 IPS UNIT 
   OB(33) = 6 
   IF(P0.EQ.150) GOTO 21     *IF 150 IPS UNIT 
   OB(33) = 4 
   IF(P0.EQ.125) GOTO 21     *IF 125 IPS UNIT 
   OB(33) = 5                *200 IPS UNIT
21 B0 = 1                    *SET ERASE COUNTER 
   B7 = 0                    *NO MOTION CODE
   B5 = 10
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = 11
   B7 = 703                  *REWIND MOTION CODE, IGNORE DATA 
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
24 B5 = 10
   B1 = 0                    *CLEAR CURRENT ERASE COUNT 
   B7 = 701                  *FWD WRITE MOTION, IGNORE DATA 
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = 12
25 ERASE, ABT 70             *MOVE 4 INCHES OF TAPE 
   IF(SB(1).AND.BOT.NE.0) ERROR 5/0, GOTO 70
   GOSUB 60                  *VERIFY STATUS 
   GOTO 25 WHILE (B1+1.NE.B0)          *DO B0 ERASES
   GOTO 24 WHILE (B0+1.NE.16D)         *GO UP TO 5 FEET 
   B5 = 11
   B7 = 703                  *REWIND MOTION, IGNORE DATA
   REWIND, ABT 70            *SHORT REWIND
   GOSUB 60                  *VERIFY STATUS 
   GOTO 72                   *TEST REPEAT COND. AND MODULE
* 
*----------TEST STATUS SUBROUTINE------------ 
* 
60 B3 = 1 
61 IF(SB(B3).AND.OB(B3).NE.OB(B3+20)) ERROR 2/0, GOTO 70
   GOTO 61 WHILE (B3+1.NE.17) 
   RETURN 
* 
*-------ERROR PROCESSOR-----------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 73          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM TO LINE 1 
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 66       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
66 MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
72 IF(ES.AND.SL.EQ.0) GOTO 74          *NOT SCOPING 
73 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 3(BA,B6) TO DISPLAY   *POST SCOPING MSG
74 IF(ES.AND.CM.NE.0) GOTO 21          *RC OR RM
   IF(BA.EQ.0) GOTO 76       *NO MODULE ERRORS
   MSG 4(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE
76 EXIT 
   END 20 
COMPILE   - T7X20 - 
   MODULE T7X21,67X(44,54,55,53)LOCK  - RANDOM LOOPS/VELOCITY - 
*** T7X21 - RANDOM LOOPS AND VELOCITY 
* 
**  T7X21 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X21 TESTS THE ABILITY OF THE TAPE UNIT TO MOVE TAPE 
*         AT LOW SPEED FORWARD AND HIGH REVERSE WITHOUT CREATING
*         LOOP FAULTS AND VELOCITY ERRORS.  DATA INTEGRITY IS 
*         IGNORED DURING THE PROCESS.  INCREMENTING LENGTHS OF
*         TAPE ARE MOVED FROM 4 INCHES UP TO 11 FEET IN INCREMENTS
*         OF 4 INCHES WITH INCREMENTING DELAYS BETWEEN MOVES. 
*         THE DELAY PERIOD STARTS AT 1 MILLISECOND AND IS MULTIPLIED
*         BY 4 FOR EACH MOVE UNTIL A DELAY PERIOD OF 1.024 SECONDS
*         OCCURS.  THE DELAY IS THEN RESET TO 1 AND THE PROCESS IS
*         REPEATED. 
*         A LONG (HIGH SPEED) REWIND IS USED TO TEST REVERSE. 
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         3. REWIND.
*         4. SET DELAY TIME TO 1 MILLISECOND. 
*         5. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         6. SET ERASE COUNT = 1. 
*         7. RESERVE. 
*         8. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         9. ERASE 4 INCHES OF TAPE.
*        10. VERIFY NOT AT -BOT-. REPORT EC137 IF ERROR.
*        11. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        12. REPEAT STEPS 9-11 ERASE COUNT TIMES. 
*        13. BUMP ERASE COUNT BY 1 (ADD 4 INCHES TO LENGTH OF 
*            TAPE MOVED). 
*        14. RELEASE. 
*        15. DELAY THE NUMBER OF MILLISECONDS SPECIFIED BY DELAY TIME.
*        16. MULTIPLY DELAY TIME BY 4.  RESET TO 1 IF OVERFLOW. 
*        17. REPEAT STEPS 7-16 UNTIL ERASE COUNT IS 36 (APPROX. 
*            11 FEET OF TAPE).
*        18. REWIND.
*        19. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        20. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X21 - ABORT ON .RES. COMMAND 
*         3. T7X21 - ABORT ON .REWIND. COMMAND
*         4. T7X21 - ABORT ON .ERASE. COMMAND 
* 
*         5. T7X21 - EC 132 - ABNORMAL STATUS 
*         6. T7X21 - EC 137 - STILL AT BOT AFTER AN ERASE 
*         7. T7X21 - ABORT ON .REL. COMMAND                              T7X003J
* 
* 
*** T7X21 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = ERASE COUNT (TO DO)
*         B1 = CURRENT ERASE COUNT (NUMBER DONE)
*         B2 = DELAY TIME 
*         B3 = STATUS BUFFER INDEX
*         B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X21 - RANDOM LOOPS AND VELOCITY 
 2 FORMAT T7X21 - EC 132 - ABNORMAL STATUS
 3 FORMAT T7X21 - ERRS=*DEC LOOPS=*DEC
 4 FORMAT T7X21 ERROR(S) IN MODULE = *DEC 
 5 FORMAT T7X21 - EC 137 - STILL AT BOT AFTER AN ERASE
10 FORMAT T7X21 - ABORT ON .RES. COMMAND
11 FORMAT T7X21 - ABORT ON .REWIND. COMMAND 
12 FORMAT T7X21 - ABORT ON .ERASE. COMMAND
13 FORMAT T7X21 - ABORT ON .REL. COMMAND                                 T7X003J
* 
/ --- OB(1-16) = STATUS MASK     OB(21-36) = EXPECTED STATUS
* 
   DATA (OB(1),CON) 1003,0,0,0,22,1,0,0,0,0,7,363,234,177 
   DATA (OB(21),CON) 1,0,0,0,0,0,0,0,0,0,0,0,0,132
   EQUATE BOT TO 4
20 IF(DC.EQ.53)OB(15) = 20   *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)OB(16) = 0    *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)OB(36) = 0    *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT     *POST RUNNING MESSAGE 
* 
*---------TEST LOOPS AND VELOCITY---------- 
* 
23 OB(33) = 2 
   IF(P0.EQ.100) GOTO 21     *IF 100 IPS UNIT 
   OB(33) = 6 
   IF(P0.EQ.150) GOTO 21     *IF 150 IPS UNIT 
   OB(33) = 4 
   IF(P0.EQ.125) GOTO 21     *IF 125 IPS UNIT 
   OB(33) = 5                *200 IPS UNIT
21 B0 = 1                    *SET ERASE COUNTER 
   B7 = 0                    *NO MOTION CODE
   B5 = 10
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = 11
   B7 = 703                  *REWIND MOTION CODE, IGNORE DATA 
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B2 = 1                    *SET STARTING DELAY TIME 
24 B5 = 10
   B1 = 0                    *CLEAR CURRENT ERASE COUNT 
   B7 = 701                  *FWD WRITE MOTION, IGNORE DATA 
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = 12
25 ERASE, ABT 70             *MOVE 4 INCHES OF TAPE 
   IF(SB(1).AND.BOT.NE.0) ERROR 5/0, GOTO 70
   GOSUB 60                  *VERIFY STATUS 
   GOTO 25 WHILE (B1+1.NE.B0)          *DO B0 ERASES
   B5 = 13                                                               T7X003J
   REL, ABT 70                                                           T7X003J
   DELAY B2 MSEC             *DELAY BETWEEN TAPE MOVEMENTS
   B2 = B2.LS.2              *BUMP DELAY TIME 
   GOTO 24 WHILE (B0+1.NE.36D)         *GO UP TO 11 FEET
   B5 = 10
   RES P1, ABT 70 
   B5 = 11
   B7 = 703                  *REWIND MOTION, IGNORE DATA
   REWIND, ABT 70            *LONG REWIND 
   GOSUB 60                  *VERIFY STATUS 
   B5 = 13
   REL, ABT 70
   GOTO 72                   *TEST REPEAT COND. AND MODULE
* 
*----------TEST STATUS SUBROUTINE------------ 
* 
60 B3 = 1 
61 IF(SB(B3).AND.OB(B3).NE.OB(B3+20)) ERROR 2/0, GOTO 70
   GOTO 61 WHILE (B3+1.NE.17) 
   RETURN 
* 
*-------ERROR PROCESSOR-----------------------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 73          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM TO LINE 1 
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 66       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
66 MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
72 IF(ES.AND.SL.EQ.0) GOTO 74          *NOT SCOPING 
73 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 3(BA,B6) TO DISPLAY   *POST SCOPING MSG
74 IF(ES.AND.CM.NE.0) GOTO 21          *RC OR RM
   IF(BA.EQ.0) GOTO 76       *NO MODULE ERRORS
   MSG 4(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE
76 EXIT 
   END 20 
COMPILE   - T7X21 - 
   MODULE T7X22,67X(44,54,55,53)LOCK  - PARK COUNTS - 
*** T7X22 - PARK COUNTS 
* 
**  T7X22 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X22 IS NOT EXECUTED.
* 
*         T7X22 VERIFIES THAT THE TAPE TRANSPORT CAN RELIABLY 
*         START, MAINTAIN VELOCITY AND STOP WITH CORRECT PARK 
*         COUNTS FOR ALL COMBINATIONS OF READ/WRITE/FORWARD/
*         REVERSE OPERATIONS. 
*         IF PARK COUNT ERRORS ARE DETECTED, THE EXPECTED AND 
*         ACTUAL COUNTS ARE REPORTED.  DATA INTEGRITY IS IGNORED. 
* 
*         DUE TO THE INTER-DEPENDANCES OF OPERATIONS TESTED 
*         BY THIS MODULE, REPEAT CONDITION IS NOT SUPPORTED.
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE TO GET STATUS TO DETERMINE TYPE OF UNIT BEING
*            DRIVEN ( PE/GCR OR PE/NRZI IF NINE TRACK). 
*         2. RELEASE. 
*         3. RESERVE. 
*         4. REWIND.
*         5. RESERVE. 
*         6. ENDFILE, WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*         7. ENDFILE, WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*         8. VERIFY WRITE TO WRITE PARK COUNT.  DDLT=0371 IF ERROR. 
*         9. BKSP.  WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        10. VERIFY WRITE TO READ REV COUNT.    DDLT=0370 IF ERROR. 
*        11. BKSP.  WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        12. VERIFY READ REV TO READ REV COUNT. DDLT=0376 IF ERROR. 
*        13. FSPACE.WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        14. VERIFY READ REV TO READ FWD COUNT. DDLT=0375 IF ERROR. 
*        15. FSPACE.WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        16. VERITY READ FWD TO READ FWD COUNT. DDLT=0372 IF ERROR. 
*        17. BKSP.  WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        18. VERIFY READ FWD TO READ REV COUNT. DDLT=0373 IF ERROR. 
*        19. ENDFILE. WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        20. VERIFY READ REV TO WRITE COUNT.    DDLT=0377 IF ERROR. 
*        21. BKSP.  WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        22. VERIFY WRITE TO READ REV COUNT.    DDLT=0370 IF ERROR. 
*        23. FSPACE.WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        24. VERIFY READ REV TO READ FWD COUNT. DDLT=0375 IF ERROR. 
*        25. ENDFILE. WAITNB AND REPORT EC 132 IF STATUS ERROR. 
*        26. VERIFY READ FWD TO WRITE COUNT.    DDLT=0374 IF ERROR. 
*        27. RELEASE. 
*        28. DELAY 100 MILLISECONDS.
*        29. REPEAT STEPS 5-28 FOR 50 TIMES.
*        30. EXIT.
*** 
**
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. DDLT=0370 PARK ERR  W TO RR EX=*DEC AC=*DEC
*         3. DDLT=0371 PARK ERR  W TO W  EX=*DEC AC=*DEC
*         4. DDLT=0372 PARK ERR  RF TO RF EX=*DEC AC=*DEC 
*         5. DDLT=0373 PARK ERR  RF TO RR EX=*DEC AC=*DEC 
*         6. DDLT=0374 PARK ERR  RF TO W  EX=*DEC AC=*DEC 
*         7. DDLT=0375 PARK ERR  RR TO RF EX=*DEC AC=*DEC 
*         8. DDLT=0376 PARK ERR  RR TO RR EX=*DEC AC=*DEC 
*         9. DDLT=0377 PARK ERR  RR TO W  EX=*DEC AC=*DEC 
* 
*        10. T7X22 - EC 132 - ABNORMAL STATUS 
*        11. T7X22 - PARK COUNT ERROR 
* 
* 
*** T7X22 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = LOOP COUNT 
*         B2 = DENSITY INDEX
*         B3 = ERROR MESSAGE POINTER FOR PARK COUNT ERRORS. 
*         B4 = BUFFER INDEX FOR PARK COUNT OPTIONS. 
*         B6 = STATUS BUFFER INDEX
*            = IBG COUNT
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT DDLT=0370 PARK ERR  W TO RR EX=*DEC AC=*DEC 
 2 FORMAT DDLT=0371 PARK ERR  W TO W  EX=*DEC AC=*DEC 
 3 FORMAT DDLT=0372 PARK ERR  RF TO RF EX=*DEC AC=*DEC
 4 FORMAT DDLT=0373 PARK ERR  RF TO RR EX=*DEC AC=*DEC
 5 FORMAT DDLT=0374 PARK ERR  RF TO W  EX=*DEC AC=*DEC
 6 FORMAT DDLT=0375 PARK ERR  RR TO RF EX=*DEC AC=*DEC
 7 FORMAT DDLT=0376 PARK ERR  RR TO RR EX=*DEC AC=*DEC
10 FORMAT DDLT=0377 PARK ERR  RR TO W  EX=*DEC AC=*DEC
11 FORMAT T7X22 - EC 132 - ABNORMAL STATUS
12 FORMAT T7X22 - PARK COUNT ERROR
16 FORMAT T7X22 - PARK COUNTS - 
17 FORMAT T7X22 ERROR(S) IN MODULE = *DEC 
   DATA (OB,CON) 38D,54D,27D           *7TK PARK VALUES 
   DATA (OB(3),CON) 22D,38D,27D        *9TK 800/1600 OPTIONS
   DATA (OB(6),CON) 33D,41D,24D        *9TK PE/GCR PE OPTION
   DATA (OB(11),CON) 22D,20D,12D       *9 TK PE/GCR GCR OPTIONS 
   DATA (OB(21),CON) 5003,0,0,0,0,1,0,0,0,0,0,363,274,177 
   DATA (OB(41),CON) 1,0,0,0,0,0,0,0,0,0,0,0,40,132 
20 IF(DC.EQ.53)EXIT TO 22A   *IF 698/CMST SUBSYSTEM 
   MSG 16 TO DISPLAY,PRINT   *RUNNING MESSAGE 
   WC = 500 
   B4 = 11                   *INDEX TO GCR OPTIONS
   B2 = P1.AND.7             *DENSITY 
   IF(B2.EQ.4) GOTO 31       *GCR SELECTED
   B4 = 0                    *INDEX TO 7TK OPTIONS
   IF(DC.EQ.44) GOTO 31      *IF 7TK UNIT ASSIGNED
   RES P1, ABT 70            *GET STATUS
   REL, ABT 70
   B4 = 3                    *INDEX TO 9TK 800/1600 OPTIONS 
   IF(SB(11D).AND.10.EQ.0) GOTO 31  *NO GCR CAPABILITY
   B4 = 6                    *INDEX TO PE/GCR OPTIONS 
31 RES P1, ABT 70 
   REWIND, ABT 70 
   GOTO 33                   *SKIP INITIAL DELAY
32 DELAY 100D MSEC
33 RES P1, ABT 70 
   B7 = 701                  *FWD WRITE MOTION CODE 
   ENDFILE, ABT 70
   ENDFILE, ABT 70
   B2 = B4
   B3 = 2                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR W TO W
   B7 = 706                  *READ REVERSE MOTION 
   BKSP, ABT 70 
   B2 = B4 + 2
   B3 = 1                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR W TO RR 
   BKSP, ABT 70 
   B3 = 7                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR RR TO RR
   B7 = 705                  *FORWARD READ CODE 
   FSPACE, ABT 70 
   B2 = B4 + 1
   B3 = 6                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR RR TO RF
   FSPACE, ABT 70 
   B3 = 3                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR RF TO RF
   B7 = 706                  *READ REVERSE MOTION CODE
   BKSP, ABT 70 
   B2 = B4 + 2
   B3 = 4                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR RF TO RR
   B7 = 701                  *WRITE FWD MOTION CODE 
   ENDFILE, ABT 70
   B2 = B4
   B3 = 10                   *ERROR MESSAGE 
   GOSUB 60                  *MONITOR RR TO W 
   B7 = 706                  *READ REVERSE MOTION CODE
   BKSP, ABT 70 
   B2 = B4 + 2
   B3 = 1                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR W TO RR 
   B7 = 705                  *READ FWD MOTION CODE
   FSPACE, ABT 70 
   B2 = B4 + 1
   B3 = 6                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR RR TO RF
   B7 = 701                  *FWD WRITE MOTION CODE 
   ENDFILE, ABT 70
   B2 = B4
   B3 = 5                    *ERROR MESSAGE 
   GOSUB 60                  *MONITOR RF TO W 
   REL, ABT 70
   GOTO 32 WHILE (B0+1.NE.50D)  *REPEAT 50 TIMES
55 IF(BA.EQ.0) GOTO 57
   MSG 17(BA) TO DAYFILE
57 EXIT 
* 
*--------MONITOR PARK COUNT SUBROUTINE
* 
60 WAITNB, ABT 70 
   B6 = 1 
61 IF(SB(B6).AND.OB(B6+20).NE.OB(B6+40)) GOTO 63
   GOTO 61 WHILE (B6+1.NE.17) 
   B6 = SB(16D).AND.360B.RS.2  *IBG 10-1 TIMES 4
   B6 = SB(16D).AND.360B+B6    *IBG 10-1 TIMES 20 
   B6 = B6.RS.1                *IBG 10-1 TIMES 10 
   B6 = SB(16D).AND.17B+B6     *IBG COUNT IN OCTAL
   IF(B6.EQ.OB(B2)) GOTO 62    *NO ERROR
   IF(B6+1.EQ.OB(B2)) GOTO 62  *+1 IS NO ERROR
   IF(B6-1.EQ.OB(B2)) GOTO 62  *-1 IS NO ERROR
   MSG B3(OB(B2),B6) TO LINE 12D   *POST ERROR MESSAGE
   MSG 12 TO LINE 1 
   B7 = B7.AND.7+730         *IGNORE ADDITION ANALYSIS
   BA = BA + 1               *BUMP ERROR COUNT
   CALL 980                  *POST STATUS 
   ENDSUB 
   IF(BA.LT.10D) GOTO 33     *RESTART IF .LT. 10 ERRORS 
   GOTO 55                   *EXIT
62 RETURN 
63 MSG 11 TO LINE 1          *POST ERROR MESSAGE
   BA = BA + 1
   ENDSUB, GOTO 71
* 
*--------ERROR PROCESSOR
* 
70 BA = BA + 1
   MSG B5 TO LINE 0 
   MSG EM TO LINE 1 
71 CALL 980 
   MSG 16 TO DISPLAY         *REPOST RUNNING MESSAGE
   IF(BA.LT.2) GOTO 31
   GOTO 55
   END 20 
COMPILE   - T7X22 - 
   MODULE T7X22A,67X(53)LOCK  - POST MSG FOR DC 53
*** T7X22A - POST MSG FOR DC 53 
* 
**  T7X22A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         T7X22A WILL POST A NO RUN MSG FOR T7X22 IF DC = 53. 
* 
*   DESCRIPTION - N/A 
* 
*** 
**
* 
*   ERRORS REPORTED - N/A 
* 
*** T7X22A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE - N/A
* 
*   MODULES CALLED - NONE 
* 
* 
 1 FORMAT T7X22 - NOT EXECUTED USING DC = 53
20 MSG 1 TO DISPLAY,PRINT   *NO RUN MSG 
   EXIT 
   END 20 
COMPILE   - T7X22A -
   MODULE T7X23,67X(44,54,55,53)LOCK  - TRACK TEST -
*** T7X23 - TRACK TEST
* 
**  T7X23 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X23 IS A DATA INTEGRITY TEST THAT VERIFIES THE ABILITY
*         TO WRITE ZEROS IN ALL TRACKS BUT ONE WHILE ONES ARE WRITTEN 
*         INTO THE TRACK UNDER TEST.  ALL TRACKS ARE TESTED IN THIS 
*         FASHION UNTIL ALL TRACKS ARE COMPLETED. 
*         ALL TRACKS ARE THEN REPEATED 10 TIMES.
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. REWIND.
*         3. FILL OUTPUT BUFFER WITH TRACK PATTERN. 
*         4. RESERVE. 
*         5. WRITE. 
*         6. EXIT IF END OF TAPE. 
*         7. VERIFY STATUS.  EC 14X IF ERROR (X=TRACK UNDER TEST) 
*         8. RELEASE. 
*         9. REPEAT STEPS 3-8 FOR ALL TRACKS. 
*        10. REPEAT STEPS 3-9 FOR 10 TIMES. 
*        11. EXIT.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X23 - ABORT ON .WRITE. COMMAND - 
*         3. T7X23 - ABORT ON .RES. COMMAND - 
*         4. T7X23 - ABORT ON .REL. COMMAND - 
*         5. T7X23 - ABORT ON .REWIND. COMMAND -
*         6. T7X23 - ABORT ON .WAITNB. COMMAND -
* 
*         7. T7X23 -EC 014X- STATUS ERR-LAST DIGIT=DATA BIT 
* 
* 
*** T7X23 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = LOOP COUNTER 
*         B1 = DATA BIT COUNTER 
*         B2 = NUMBER OF CHARACTER TO STORE 
*         B3 = DATA PATTERN 
*         B4 = NUMBER OF BITS TO TEST (6 OR 8)
*         B5 = POINTER TO ERROR MESSAGE IN CASE OF ABORT
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X23 - TRACK TEST
 2 FORMAT T7X23 -EC *DEC- STATUS ERR-LAST DIGIT=DATA BIT
 3 FORMAT T7X23 ERROR(S) IN MODULE = *DEC 
 4 FORMAT T7X23 - ERRS=*DEC LOOPS=*DEC
 5 FORMAT T7X23 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X23 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X23 - ABORT ON .REL. COMMAND -
10 FORMAT T7X23 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X23 - ABORT ON .WAITNB. COMMAND - 
   EQUATE ERROR TO 5034, EOT TO 10
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   BA = 0                    *CLEAR ERROR COUNT 
   WC = 4777
21 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 70 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 70 
   B0 = 0                    *CLEAR FILE COUNT
   B1 = 0                    *CLEAR DATA BIT COUNT
   B3 = 1                    *DATA
30 B4 = 10
   B2 = 500 
   IF(DC.AND.10.NE.0) GOTO 31  *IF 9TK UNIT 
   B4 = 6 
31 DUP B4 BITS OF B3 TO OB FOR B2  *FILL BUFFER 
32 B5 = 6 
   RES P1, ABT 70 
   B5 = 5 
   B7 = 1                    *WRITE MOTION CODE 
   WRITE, ABT 70
   B5 = 12
   WAITNB, ABT 70 
   IF(SB(1).AND.EOT.NE.0) GOTO 55  *IF END OF TAPE
   IF(SB(1).AND.ERROR.EQ.0) GOTO 34  *NO STATUS ERROR 
   B3 = 140D+B1              *FORM ERROR CODE 
   MSG 2(B3) TO LINE 1
   BA = BA + 1               *BUMP ERROR COUNT
   B6 = B6 + 1                *BUMP PASS COUNT
   IF(ES.AND.SL.EQ.0) GOTO 33 
   MSG 4(BA,B6) TO DISPLAY
   GOTO 32
33 IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 41       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
41 MSG 1 TO DISPLAY 
34 B5 = 7 
   REL, ABT 70
   IF(ES.AND.RC.EQ.0) GOTO 35  *IF NOT REPEAT CONDITION 
   B6 = B6 + 1                 *BUMP PASS COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 32  *IF NOT SCOPING, REPEAT COND.
   MSG 4(BA,B6) TO DISPLAY     *POST SCOPING LOOP MSG 
   GOTO 32                     *REPEAT CONDITION
35 B3 = B3 + B3              *SHIFT DATA BIT LEFT 
   IF(B3.EQ.0) GOTO 37       *IF ALL PATTERNS TESTED
   B1 = B1 + 1               *BUMP DATA BIT POINTER 
   IF(B1.LT.6) GOTO 31       *IF 6 BITS NOT DONE
   IF(DC.EQ.44) GOTO 36      *SKIP BITS 6 AND 7 ON 7TK
   IF(B1.LT.8D) GOTO 31      *EXTRA BITS OF 9TK 
36 B3 = 0 
   GOTO 31                   *TEST PARITY TRACK 
37 B3 = 1 
   B1 = 0 
   GOTO 31 WHILE (B0+1.NE.10D)  *REPEAT ALL TKS 10 TIMES
55 IF(ES.AND.RM.NE.0) GOTO 21  *IF REPEAT MODULE
   IF(BA.EQ.0) GOTO 57
   MSG 3(BA) TO DAYFILE 
57 EXIT 
* 
*--------ERROR PROCESSOR
* 
70 BA = BA + 1               *BUMP ERROR COUNT
   MSG B5 TO LINE 0 
   MSG EM TO LINE 1 
   IF(ES.AND.SL.EQ.0) GOTO 71  *IF NOT SCOPING
   MSG 4(BA,B6) TO DISPLAY     *POST SCOPING MSG
   GOTO 21                     *REPEAT
71 IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 73       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
73 MSG 1 TO DISPLAY 
   IF(BA.LT.2) GOTO 21       *RETRY IF NOT 2 ERRORS 
   GOTO 55
   END 20 
COMPILE   - T7X23 - 
   MODULE T7X30,67X(44,54,55,53)LOCK  - WRITE TAPE FOR PLOTS -
*** T7X30 - WRITE TAPE FOR MEASUREMENTS 
* 
**  T7X30 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X30 IS NOT EXECUTED.
* 
*         T7X30 REWINDS AND WRITES 120 DECIMAL RECORDS OF RANDOM LENGTH 
*         RECORDS WITH RANDOM DELAYS BETWEEN EACH WRITE.  THE 
*         TAPE THAT IS GENERATED CAN THEN BE USED IN MODULES
*         T7X31, T7X32, T7X33 AND T7X34 TO PERFORM MEASUREMENTS 
*         OF TAPE UNIT START TIMES IN FORWARD AND REVERSE 
*         DIRECTIONS AND TO MEASURE THE SIZE OF RECORD GAPS THAT
*         EXIST BETWEEN RECORDS.
* 
*   DESCRIPTION - 
* 
*         1. FILL OUTPUT BUFFER WITH 7777.
*         2. RESERVE. 
*         3. VERIFY STATUS.  REPORT EC 132 IF ERROR.
*         4. REWIND.
*         5. VERIFY STATUS.  REPORT EC 132 IF ERROR.
*         6. RESERVE. 
*         7. WRITE. 
*         8. VERIFY STATUS.  REPORT EC 132 IF ERROR.
*         9. RELEASE. 
*        10. PERFORM A RANDOM DELAY OF 0 TO 127D MILLISECONDS.
*        11. REPEAT STEPS 6-10 FOR 120D TIMES.
*        12. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X30 - ABORT ON .RES. COMMAND 
*         3. T7X30 - ABORT ON .REWIND. COMMAND
*         4. T7X30 - ABORT ON .WRITE. COMMAND 
*         5. T7X30 - ABORT ON .REL. COMMAND 
* 
*         6. T7X30 - EC 132 - ABNORMAL STATUS 
* 
* 
*** T7X30 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B1 = LOOP COUNT 
*         B3 = RANDOM DELAY 
*            = STATUS BUFFER INDEX
*         B5 = POINTER TO ERROR MESSAGE IN CASE OF ABORT
*         B6 = PASS COUNT FOR SCOPING LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X30 - WRITE TAPE FOR MEASUREMENTS 
 2 FORMAT T7X30 - EC 132 - ABNORMAL STATUS
 3 FORMAT T7X30 - ERRS=*DEC LOOPS=*DEC
 4 FORMAT T7X30 ERROR(S) IN MODULE = *DEC 
10 FORMAT T7X30 - ABORT ON .RES. COMMAND
11 FORMAT T7X30 - ABORT ON .REWIND. COMMAND 
12 FORMAT T7X30 - ABORT ON .WRITE. COMMAND
13 FORMAT T7X30 - ABORT ON .REL. COMMAND
14 FORMAT T7X30 - NOT EXECUTED USING DC = 53
   DATA (OB(1),CON) 1003,0,0,0,22,1,0,0,0,0,7,363,234,177 
   DATA (OB(21),CON) 1,0,0,0,0,0,0,0,0,0,0,0,0,132
20 GOTO 40                   *CHECK DC
21 B1 = 0                    *CLEAR LOOP COUNTER
   B5 = 10
   B7 = 400                  *NO MOTION, IGNORE DATA
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = 11
   B7 = 403                  *REWIND MOTION, IGNORE DATA
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
22 WC = 477 
23 B5 = 10
   RES P1, ABT 70 
   B5 = 12
   B7 = 401                  *WRITE FORWARD, IGNORE DATA
   WRITE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   B5 = 13
   REL, ABT 70
   B3 = RT.AND.177
   DELAY B3 MSEC             *RANDOM DELAY
   GOTO 22 WHILE (B1+1.NE.120D)  *WRITE 120 RECORDS 
   GOTO 72
* 
*  -----TEST DEVICE CODE
* 
40 IF(DC.NE.53)GOTO 42       *IF NOT 698/CMST SUBSYSTEM 
   MSG 14 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
42 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
* 
*  ------WRITE 120 RANDOM LENGTH RECORDS WITH RANDOM DELAYS 
* 
   COPY OB TO IB FOR 40      *SAVE PARAMETERS 
   DUP 7777 TO OB FOR 500    *USE ALL ONES FOR DATA 
   IB(33) = 2 
   IF(P0.EQ.100) GOTO 21    *IF 100 IPS UNIT
   IB(33) = 6 
   IF(P0.EQ.150) GOTO 21     *IF 150 IPS UNIT 
   IB(33) = 5 
   GOTO 21
* 
*--------VERIFY STATUS SUBROUTINE 
* 
60 B3 = 1 
61 IF(SB(B3).AND.IB(B3).NE.IB(B3+20)) ERROR 2/0, GOTO 70
   GOTO 61 WHILE (B3+1.NE.17)   *VERIFY ALL STATUS WORDS
   RETURN 
* 
*-------ERROR PROCESSOR-----------------
* 
70 ENDSUB 
   BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 73          *SCOPING 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM TO LINE 1 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
72 IF(ES.AND.SL.EQ.0) GOTO 74          *NOT SCOPING 
73 B6 = B6 + 1               *BUMP PASS COUNT 
   MSG 3(BA,B6) TO DISPLAY   *POST SCOPING MSG
74 IF(ES.AND.CM.NE.0) GOTO 21          *RC OR RM
   IF(BA.EQ.0) GOTO 76       *NO MODULE ERRORS
   MSG 4(BA) TO DAYFILE      *INDICATE ERRORS TO DAYFILE
76 EXIT 
   END 20 
COMPILE   - T7X30 - 
   MODULE T7X31,67X(44,54,55,53)LOCK  - FORWARD START  -
*** T7X31 - FORWARD START MEASUREMENTS
* 
**  T7X31 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X31 IS NOT EXECUTED.
* 
*         T7X31 USES THE TAPE WRITTEN BY T7X30 AND GENERATES
*         A PLOT OF 50 FORWARD START OPERATIONS.  BOTH DISTANCE 
*         TRAVELED (NUMBER OF TACH PULSES DETECTED) AND TIME
*         TO REACH VELOCITY ARE PLOTTED. IF THE RESULTS ARE 
*         OUTSIDE NORMAL LIMITS, A PICTURE IS TAKEN OF THE PLOT.
*         THE USER MAY FORCE A PICTURE OF THE PLOT BY SETTING 
*         PARAMETER REGISTER P3 = 1XXX. 
* 
*         THIS TEST IS MADE UP OF TWO MODULES.  T7X31 GENERATES 
*         THE PLOT GRID BASED ON THE TYPE OF TRANSPORT BEING
*         TESTED.  T7X31A THEN PERFORMS THE TESTING AND PLOTS 
*         RESULTS.
* 
* 
*   DESCRIPTION - 
* 
*         1. BUILD PLOT GRID AND EXIT TO T7X31A.
*         2. RESERVE. 
*         3. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         4. REWIND.
*         5. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         6. FSPACE.
*         7. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         8. RESERVE. 
*         9. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        10. WAITNB.
*        11. PERFORM A RANDOM DELAY OF 0 TO 3 MILLISECONDS. 
*        12. MEASURE FORWARD START AND SAVE RESULT IN INPUT BUFFER. 
*        13. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        14. REPEAT STEPS 8-13 FOR 50 TIMES.
*        15. RELEASE. 
*        16. REDUCE DATA IN INPUT BUFFER AND PLOT IT. 
*        17. TAKE A PICTURE IF PLOT IS OUT OF RANGE OR IF REQUESTED 
*            BY THE USER (REPORT EC 133 IF OUT OF RANGE). 
*        18. EXIT.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X31A- EC 132 - ABNORMAL STATUS 
*         3. T7X31A- EC 133 - FORWARD START EXCEEDS LIMITS
* 
* 
*** T7X31 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -  (T7X31A)
* 
*         B1 = RECORD COUNTER 
*         B2 = RECORD COUNT FOR START OPERATIONS
*            = CHARACTER COUNT FOR PLOTTING 
*         B3 = BUFFER INDEX FOR TIME VALUES 
*         B4 = BUFFER INDEX FOR DISTANCE VALUES 
*         B5 = MESSAGE LINE NUMBER
*         B6 = SCRATCH FOR CALCULATING DISTANCE AND TIME
*            = INDEX TO STATUS BUFFER 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
* 
 1 FORMAT T7X31 - FORWARD START MEASUREMENTS
 3 FORMAT   FORWARD START DISTANCE (.009425 INCHES PER TACH)
 4 FORMAT OVER
 5 FORMAT *DEC
 6 FORMAT *DEC  --------------------------------------------
 7 FORMAT UNDER 
10 FORMAT       FORWARD START TIME IN MICROSECONDS
11 FORMAT T7X31 ERROR(S) IN MODULE = *DEC 
14 FORMAT T7X31 - NOT EXECUTED USING DC = 53
* 
*    FORWARD START DISTANCE  -0 TACH, +6 TACH MARGINS 
* 
   DATA (OB(00),CON) 18D,06D,13D,07D   *7TK/100 IPS 
   DATA (OB(04),CON) 18D,06D,13D,07D   *PE-NRZI/100 IPS 
   DATA (OB(10),CON) 17D,05D,12D,06D   *PE-GCR/100 IPS
* 
   DATA (OB(14),CON) 21D,09D,16D,10D   *7TK/150 IPS 
   DATA (OB(20),CON) 21D,09D,16D,10D   *PE-NRZI/150 IPS 
   DATA (OB(24),CON) 18D,06D,13D,07D   *PE-GCR/150 IPS
* 
   DATA (OB(30),CON) 23D,11D,18D,12D   7TK/200 IPS
   DATA (OB(34),CON) 23D,11D,18D,12D   *PE-NRZI/200 IPS 
   DATA (OB(40),CON) 17D,05D,12D,06D   *PE-GCR/200 IPS
* 
*    FORWARD START TIME 
* 
   DATA (OB(100),CON) 50D,34D,48D,35D   *7TK/100 IPS
   DATA (OB(104),CON) 50D,34D,48D,35D   *PE-NRZI/100 IPS
   DATA (OB(110),CON) 44D,28D,41D,30D   *PE-GCR/100 IPS 
* 
   DATA (OB(114),CON) 44D,28D,39D,33D  *7TK/150 IPS 
   DATA (OB(120),CON) 44D,28D,39D,33D  *PE-NRZI/150 IPS 
   DATA (OB(124),CON) 37D,21D,32D,24D   *PE-GCR/150 IPS 
* 
   DATA (OB(130),CON) 45D,29D,39D,31D  *7TK/200 IPS 
   DATA (OB(134),CON) 45D,29D,39D,31D  *PE-NRZI/200 IPS 
   DATA (OB(140),CON) 31D,15D,22D,19D  *PE-GCR/200 IPS
   DATA (OB(151),CON)1003,0,0,0,22,1,0,0,300,0,0,363,234,177
   DATA (OB(171),CON)1,0,0,0,0,0,0,0,0,0,0,0,0,132
20 GOTO 40                   *CHECH DC
/        BUILD DISPLAY GRID FOR FORWARD START PLOTS 
21 MSG 3 TO LINE 0
   MSG 4 TO LINE 2
   B4 = 0                    *BUFFER INDEX FOR 100 IPS
   IF(P0.EQ.100) GOTO 22
   B4 = 14                   *BUFFER INDEX FOR 150 IPS
   IF(P0.EQ.150) GOTO 22
   B4 = 30                   *BUFFER INDEX FOR 200 IPS
22 IF(DC.EQ.44) GOTO 23      *IF 7TK UNIT 
   B4 = B4 + 4               *ADD INDEX FOR PE-NRZI 
   IF(SB(11D).AND.10.EQ.0) GOTO 23  **IF UNIT IS PE-NRZI
   B4 = B4 + 4               *ADD INDEX FOR PE-GCR
23 B6 = OB(B4)               *MAX DISTANCE
   B5 = 3                    *LINE NUMBER 
24 IF(B6.EQ.OB(B4+2)) GOTO 25  *IF TOP LIMIT
   IF(B6.EQ.OB(B4+3)) GOTO 25  *IF LOWER LIMIT
   MSG 5 (B6) TO LINE B5
   GOTO 26
25 MSG 6 (B6) TO LINE B5
26 B6 = B6 - 1               *DECREMENT DISTANCE VALUE
   GOTO 24 WHILE (B5+1.NE.16D)  *IF NOT DONE
   MSG 7 TO LINE B5 
   B3 = B4+100               *INDEX TO TIME VALUES
   MSG 10 TO LINE 18D 
   MSG 4 TO LINE 20D
   B5 = 21D                  *LINE NUMBER 
   B7 = OB(B3)
   B6 = OB(B3).LS.5          *COUNT TIMES 32
   B6 = OB(B3).LS.3+B6       *COUNT TIMES 40D 
27 IF(B7.EQ.OB(B3+2)) GOTO 30  *IF TOP LIMIT
   IF(B7.EQ.OB(B3+3)) GOTO 30  *IF LOWER LIMIT
   MSG 5 (B6) TO LINE B5
   GOTO 31
30 MSG 6 (B6) TO LINE B5
31 B6 = B6 - 40D             *DECREMENT TIME VALUE
   B7 = B7 - 1
   GOTO 27 WHILE (B5+1.NE.38D)  *IF NOT DONE
   MSG 7 TO LINE 38D
   EXIT TO 31A               *EXIT TO DO MEASUREMENTS 
* 
*  -----TEST DEVICE CODE
* 
40 IF(DC.NE.53)GOTO 42       *IF NOT 698/CMST SUBSYSTEM 
   MSG 14 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
42 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   RES P1, ABT 70            *GET STATUS
   REL, ABT 70
   GOTO 21
/        ERROR EXIT PROCESSOR 
70 BA = BA + 1               *INCREMENT ERROR COUNTER 
   MSG EM TO LINE 1 
   CALL 980 
   MSG 11 (BA) TO DAYFILE    *INDICATE ERRORS TO DAYFILE
   EXIT 
   END 20 
COMPILE    - T7X31 -
   MODULE T7X31A,67X(44,54,55,53)LOCK  - FORWARD START -
 2 FORMAT T7X31A- EC 132 - ABNORMAL STATUS
11 FORMAT T7X31A ERROR(S) IN MODULE = *DEC
12 FORMAT T7X31A - EC 133 - FORWARD START EXCEEDS LIMITS
* 
*------REWIND TAPE WRITTEN BY T7X30 ----------------- 
* 
20 B7 = 400                  *NO MOTION, IGNORE DATA
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 403                  *REWIND MOTION, IGNORE DATA
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 405                  *FWD READ MOTION, IGNORE DATA
   FSPACE, ABT 70            *MOVE OFF LOAD POINT 
   B1 = 1                    *SET RECORD COUNTER
   GOSUB 60                  *VERIFY STATUS 
* 
*------MEASURE AND PLOT FORWARD START DISTANCE/TIME 
* 
30 B2 = 0                    *RECORD COUNT
   BA = 0                    *CLEAR ERROR FLAG
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
31 WAITNB, ABT 70 
   DELAY 3 MSEC 
   MEASURE FWD START, ABT 70
   IB(B2) = SB(10D)          *SAVE MEASUREMENTS 
   B1 = B1 + 1               *BUMP RECORD COUNT 
   GOSUB 60                  *VERIFY STATUS 
   GOTO 31 WHILE(B2+1.NE.50D)  *MEASURE 50 RECORDS
   REL, ABT 70
   B2 = 6                    *CHARACTER COUNT 
41 B6 = B2-6
   B6 = IB(B6).RS.6          *START DISTANCE
   IF(B6.GE.OB(B4+1)) GOTO 42  *IF .GE. MIN 
   B6 = OB(B4+1) - 1           *SET IT TO MIN - 1 
42 IF(B6.LE.OB(B4)) GOTO 43    *IF .LE.MAX
   B6 = OB(B4) + 1             *SET IT TO MAX + 1 
43 IF(B6.GT.OB(B4+2)) GOTO 44  *IF .GT. UPPER LIMIT 
   IF(B6.GE.OB(B4+3)) GOTO 45  *IF .GE. LOWER LIMIT 
44 BA = BA + 1                 *SET ERROR FLAG
45 B6 = B6 + 24D - OB(B4+1)    *ADD LINE BAIS 
   PLOT LINE B6 CHAR B2        *PLOT DISTANCE 
   B6 = B2-6
   B6 = IB(B6).AND.77        *START TIME
   IF(B6.GE.OB(B3+1)) GOTO 46  *IF .GE. MIN 
   B6 = OB(B3+1) - 1           *SET IT TO MIN - 1 
46 IF(B6.LE.OB(B3)) GOTO 47    *IF .LE. MAX 
   B6 = OB(B3) + 1             *SET IT TO MAX + 1 
47 IF(B6.GT.OB(B3+2)) GOTO 50  *IF .GT. UPPER LIMIT 
   IF(B6.GE.OB(B3+3)) GOTO 51  *IF .GE. LOWER LIMIT 
50 BA = BA + 1                 *SET ERROR FLAG
51 B6 = B6 + 2 - OB(B3+1)    *ADD LINE BIAS 
   PLOT LINE B6 CHAR B2      *PLOT TIME 
52 GOTO 41 WHILE (B2+1.NE.56D)  *PLOT 50 RECORDS
   DELAY 1000D MSEC 
   IF(BA.NE.0) GOTO 53       *IF ERRORS 
   IF(P3.AND.1000B.EQ.0) GOTO 72  *NO PICTURE 
   PICTURE
   GOTO 72
53 MSG 12 TO LINE 39D        *POST ERROR MESSAGE
   PICTURE                   *SEND DATA TO OUTPUT 
   HALT                      *WAIT OPERATOR .GO.
   BLANK
   MSG 12 TO LINE 1          *REPOST ERROR MESSAGE
   GOTO 71                   *CRACK STATUS
* 
*--------VERIFY STATUS SUBROUTINE 
* 
60 B6 = 1 
61 IF(SB(B6).AND.OB(B6+150).NE.OB(B6+170)) ERROR 2/0,GOTO 70
   GOTO 61 WHILE (B6+1.NE.17)   *VERIFY ALL STATUS WORDS
   RETURN 
* 
*-------ERROR PROCESSOR-----------------
* 
70 ENDSUB 
   BA = BA+1                 *BUMP ERROR COUNTER
   PICTURE AND BLANK         *CAPTURE CURRENT PLOT
   MSG EM TO LINE 1 
71 CALL 980                  *CALL THE STATUS CRACKER 
72 IF(BA.EQ.0) GOTO 73       *IF NO ERRORS IN MODULE
   MSG 11(BA) TO DAYFILE     *INDICATE ERROR TO DAYFILE 
73 EXIT 
   END 20 
COMPILE    - T7X31A - 
   MODULE T7X32,67X(44,54,55,53)LOCK  - REVERSE START   - 
*** T7X32 - REVERSE START MEASUREMENTS
* 
**  T7X32 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X32 IS NOT EXECUTED.
* 
*         T7X32 USES THE TAPE WRITTEN BY T7X30 AND GENERATES
*         A PLOT OF 50 REVERSE START OPERATIONS.  BOTH DISTANCE 
*         TRAVELED (NUMBER OF TACH PULSES DETECTED) AND TIME
*         TO REACH VELOCITY ARE PLOTTED. IF THE RESULTS ARE 
*         OUTSIDE NORMAL LIMITS, A PICTURE IS TAKEN OF THE PLOT.
*         THE USER MAY FORCE A PICTURE OF THE PLOT BY SETTING 
*         PARAMETER REGISTER P3 = 1XXX. 
* 
*         THIS TEST IS MADE UP OF TWO MODULES.  T7X32 GENERATES 
*         THE PLOT GRID BASED ON THE TYPE OF TRANSPORT BEING
*         TESTED.  T7X32A THEN PERFORMS THE TESTING AND PLOTS 
*         RESULTS.
* 
* 
*   DESCRIPTION - 
* 
* 
*         1. BUILD PLOT GRID AND EXIT TO T7X32A.
*         2. RESERVE. 
*         3. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         4. REWIND.
*         5. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         6. RESERVE. 
*         7. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         8. FSPACE.
*         9. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        10. REPEAT STEPS 6-9 FOR 55 TIMES TO ALLOW REVERSE READS.
*        11. BKSP.. 
*        12. RESERVE. 
*        13. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        14. WAITNB.
*        15. PERFORM A RANDOM DELAY OF 0 TO 3 MILLISECONDS. 
*        16. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        17. MEASURE REVERSE START AND SAVE RESULT IN INPUT BUFFER. 
*        18. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        19. REPEAT STEPS 12-18 FOR 50 TIMES. 
*        20. RELEASE. 
*        21. REDUCE DATA IN INPUT BUFFER AND PLOT IT. 
*        22. TAKE A PICTURE IF PLOT IS OUT OF RANGE OR IF REQUESTED 
*            BY THE USER (REPORT EC 134 IF OUT OF RANGE). 
*        23. EXIT.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X32A- EC 132 - ABNORMAL STATUS 
*         3. T7X32A- EC 134 - REVERSE START EXCEEDS LIMITS
* 
* 
*** T7X32 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -  (T7X32A)
* 
*         B1 = RECORD COUNTER 
*         B2 = RECORD COUNT FOR START OPERATIONS
*            = CHARACTER COUNT FOR PLOTTING 
*         B3 = BUFFER INDEX FOR TIME VALUES 
*         B4 = BUFFER INDEX FOR DISTANCE VALUES 
*         B5 = MESSAGE LINE NUMBER
*         B6 = SCRATCH FOR CALCULATING DISTANCE AND TIME
*            = STATUS BUFFER POINTER
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X32 - REVERSE START MEASUREMENTS
 3 FORMAT   REVERSE START DISTANCE (.009425 INCHES PER TACH)
 4 FORMAT OVER
 5 FORMAT *DEC
 6 FORMAT *DEC  --------------------------------------------
 7 FORMAT UNDER 
10 FORMAT       REVERSE START TIME IN MICROSECONDS
11 FORMAT T7X32 ERROR(S) IN MODULE = *DEC 
14 FORMAT T7X32 - NOT EXECUTED USING DC = 53
* 
*    REVERSE START DISTANCE  -1 TACH, +7 TACH MARGINS 
* 
   DATA (OB(00),CON) 17D,05D,14D,06D   *7TK/100 IPS 
   DATA (OB(04),CON) 17D,05D,14D,06D   *PE-NRZI/100 IPS 
   DATA (OB(10),CON) 16D,04D,13D,05D   *PE-GCR/100 IPS
* 
   DATA (OB(14),CON) 20D,08D,17D,09D   *7TK/150 IPS 
   DATA (OB(20),CON) 20D,08D,17D,09D   *PE-NRZI/150 IPS 
   DATA (OB(24),CON) 24D,12D,22D,13D    *PE-GCR/150 IPS 
* 
   DATA (OB(30),CON) 22D,10D,19D,11D   *7TK/200 IPS 
   DATA (OB(34),CON) 22D,10D,19D,11D   *PE-NRZI/200 IPS 
   DATA (OB(40),CON) 22D,10D,19D,11D   *PE-GCR/200 IPS
* 
*   REVERSE START TIME
* 
   DATA (OB(100),CON) 49D,33D,46D,33D  *7TK/100 IPS 
   DATA (OB(104),CON) 49D,33D,46D,33D  *PE-NRZI/100 IPS 
   DATA (OB(110),CON) 43D,27D,38D,29D  *PE-GCR/100 IPS
* 
   DATA (OB(114),CON) 48D,32D,46D,33D  *7TK/150 IPS 
   DATA (OB(120),CON) 48D,32D,46D,33D  *PE-NRZI/150 IPS 
   DATA (OB(124),CON) 55D,40D,54D,39D  *PE-GCR/150 IPS
* 
   DATA (OB(130),CON) 45D,29D,45D,30D   *7TK/200 IPS
   DATA (OB(134),CON) 45D,29D,45D,30D   *PE-NRZI/200 IPS
   DATA (OB(140),CON) 47D,31D,45D,32D  *PE-GCR/200 IPS
   DATA (OB(151),CON)1003,0,0,0,22,1,0,0,300,0,0,363,234,177
   DATA (OB(171),CON)1,0,0,0,0,0,0,0,0,0,0,0,0,132
20 GOTO 40                   *CHECK DC
* 
*--------BUILD DISPLAY GRID FOR REVERSE START PLOTS 
* 
21 MSG 3 TO LINE 0
   MSG 4 TO LINE 2
   B4 = 0                    *BUFFER INDEX FOR 100 IPS
   IF(P0.EQ.100) GOTO 22
   B4 = 14                   *BUFFER INDEX FOR 150 IPS
   IF(P0.EQ.150) GOTO 22
   B4 = 30                   *BUFFER INDEX FOR 200 IPS
22 IF(DC.EQ.44) GOTO 23      *IF 7TK UNIT 
   B4 = B4 + 4               *ADD INDEX FOR PE-NRZI 
   IF(SB(11D).AND.10.EQ.0) GOTO 23  **IF UNIT IS PE-NRZI
   B4 = B4 + 4               *ADD INDEX FOR PE-GCR
23 B6 = OB(B4)               *MAX DISTANCE
   B5 = 3                    *LINE NUMBER 
24 IF(B6.EQ.OB(B4+2)) GOTO 25  *IF TOP LIMIT
   IF(B6.EQ.OB(B4+3)) GOTO 25  *IF LOWER LIMIT
   MSG 5 (B6) TO LINE B5
   GOTO 26
25 MSG 6 (B6) TO LINE B5
26 B6 = B6 - 1               *DECREMENT DISTANCE VALUE
   GOTO 24 WHILE (B5+1.NE.16D)  *IF NOT DONE
   MSG 7 TO LINE B5 
   B3 = B4+100               *INDEX TO TIME VALUES
   MSG 10 TO LINE 18D 
   MSG 4 TO LINE 20D
   B5 = 21D                  *LINE NUMBER 
   B7 = OB(B3)
   B6 = OB(B3).LS.5          *COUNT TIMES 32
   B6 = OB(B3).LS.3+B6       *COUNT TIMES 40D 
27 IF(B7.EQ.OB(B3+2)) GOTO 30  *IF TOP LIMIT
   IF(B7.EQ.OB(B3+3)) GOTO 30  *IF LOWER LIMIT
   MSG 5 (B6) TO LINE B5
   GOTO 31
30 MSG 6 (B6) TO LINE B5
31 B6 = B6 - 40D             *DECREMENT TIME VALUE
   B7 = B7 - 1
   GOTO 27 WHILE (B5+1.NE.38D)  *IF NOT DONE
   MSG 7 TO LINE 38D
   EXIT TO 32A               *EXIT TO DO MEASUREMENTS 
* 
*  -----TEST DEVICE CODE
* 
40 IF(DC.NE.53)GOTO 42       *IF NOT 698/CMST SUBSYSTEM 
   MSG 14 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
42 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   RES P1, ABT 70            *GET STATUS
   REL, ABT 70
   GOTO 21
* 
*--------ERROR EXIT PROCESSOR 
* 
70 BA = BA + 1               *INCREMENT ERROR COUNTER 
   MSG EM TO LINE 1 
   CALL 980 
   MSG 11 (BA) TO DAYFILE    *INDICATE ERRORS TO DAYFILE
   EXIT 
   END 20 
COMPILE    - T7X32 -
   MODULE T7X32A,67X(44,54,55,53)LOCK  - REVERSE START -
 2 FORMAT T7X32A- EC 132 - ABNORMAL STATUS
11 FORMAT T7X32A ERROR(S) IN MODULE = *DEC
12 FORMAT T7X32A - EC 134 - REVERSE START EXCEEDS LIMITS
* 
*--------REWIND AND POSITION FORWARD 55D RECORDS----- 
* 
20 B7 = 400                  *NO MOTION, IGNORE DATA
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 403                  *REWIND MOTION, IGNORE DATA
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B1 = 0                    *CLEAR COUNTER 
22 RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 405                  *FORWARD MOTION, IGNORE DATA 
   FSPACE, ABT 70            *MOVE ONE RECORD FORWARD 
   GOSUB 60                  *VERIFY STATUS 
   GOTO 22 WHILE (B1+1.NE.55D)
* 
*------MEASURE AND PLOT REVERSE START DISTANCE/TIME 
* 
30 B2 = 0                    *RECORD COUNT
   BA = 0                    *CLEAR ERROR FLAG
   RES P1, ABT 70 
   BKSP, ABT 70              *MOVE ONE RECORD REVERSE                    T7X004J
   GOSUB 60                  *VERIFY STATUS 
31 WAITNB, ABT 70            *WAIT PARKED 
   DELAY 3 MSEC              *SHORT DELAY BETWEEN RECORDS 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 406                  *REVERSE MOTION, IGNORE DATA 
   MEASURE REV START, ABT 70
   IB(B2) = SB(10D)          *SAVE MEASUREMENTS 
   B1 = B1 - 1               *DECREMENT RECORD COUNTER
   GOSUB 60                  *VERIFY STATUS 
   GOTO 31 WHILE (B2+1.NE.50D)  *MEASURE 50 RECORDS 
   REL, ABT 70
   B2 = 6                    *CHARACTER COUNT 
41 B6 = B2 - 6
   B6 = IB(B6).RS.6          *START DISTANCE
   IF(B6.GE.OB(B4+1)) GOTO 42  *IF .GE. MIN 
   B6 = OB(B4+1) - 1           *SET IT TO MIN - 1 
42 IF(B6.LE.OB(B4)) GOTO 43    *IF .LE.MAX
   B6 = OB(B4) + 1             *SET IT TO MAX + 1 
43 IF(B6.GT.OB(B4+2)) GOTO 44  *IF .GT. UPPER LIMIT 
   IF(B6.GE.OB(B4+3)) GOTO 45  *IF .GE. LOWER LIMIT 
44 BA = BA + 1                 *SET ERROR FLAG
45 B6 = B6 + 24D - OB(B4+1)    *ADD LINE BAIS 
   PLOT LINE B6 CHAR B2        *PLOT DISTANCE 
   B6 = B2-6
   B6 = IB(B6).AND.77 
   IF(B6.GE.OB(B3+1)) GOTO 46  *IF .GE. MIN 
   B6 = OB(B3+1) - 1           *SET IT TO MIN - 1 
46 IF(B6.LE.OB(B3)) GOTO 47    *IF .LE. MAX 
   B6 = OB(B3) + 1             *SET IT TO MAX + 1 
47 IF(B6.GT.OB(B3+2)) GOTO 50  *IF .GT. UPPER LIMIT 
   IF(B6.GE.OB(B3+3)) GOTO 51  *IF .GE. LOWER LIMIT 
50 BA = BA + 1                 *SET ERROR FLAG
51 B6 = B6 + 2 - OB(B3+1)    *ADD LINE BIAS 
   PLOT LINE B6 CHAR B2      *PLOT TIME 
52 GOTO 41 WHILE (B2+1.NE.56D)  *PLOT 50 RECORDS
   DELAY 1000D MSEC 
   IF(BA.NE.0) GOTO 53       *IF ERRORS 
   IF(P3.AND.1000B.EQ.0) GOTO 72  *NO PRINT 
   PICTURE
   GOTO 72
53 MSG 12 TO LINE 39D        *POST ERROR MESSAGE
   PICTURE                   *SEND DATA TO OUTPUT 
   HALT                      *WAIT OPERATOR .GO.
   BLANK
   MSG 12 TO LINE 1          *REPOST ERROR MESSAGE
   GOTO 71                   *CRACK STATUS
* 
*--------VERIFY STATUS SUBROUTINE 
* 
60 B6 = 1 
61 IF(SB(B6).AND.OB(B6+150).NE.OB(B6+170)) ERROR 2/0,GOTO 70
   GOTO 61 WHILE (B6+1.NE.17)   *VERIFY ALL STATUS WORDS
   RETURN 
* 
*-------ERROR PROCESSOR-----------------
* 
70 ENDSUB 
   BA = BA+1                 *BUMP ERROR COUNTER
   PICTURE AND BLANK         *CAPTURE CURRENT PLOT
   MSG EM TO LINE 1 
71 CALL 980                  *CALL THE STATUS CRACKER 
72 IF(BA.EQ.0) GOTO 73       *IF NO ERRORS IN MODULE
   MSG 11(BA) TO DAYFILE     *INDICATE ERROR TO DAYFILE 
73 EXIT 
   END 20 
COMPILE   - T7X32A -
   MODULE T7X33,67X(44,54,55,53)LOCK  - FORWARD GAP   - 
*** T7X33 - FORWARD GAP MEASUREMENTS
* 
**  T7X33 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X33 IS NOT EXECUTED.
* 
*         T7X33 USES THE TAPE WRITTEN BY T7X30 AND GENERATES
*         A PLOT OF 50 FORWARD GAP MEASUREMENTS.  BOTH DISTANCE 
*         TRAVELED (NUMBER OF TACH PULSES DETECTED) AND TIME
*         BETWEEN RECORDS ARE PLOTTED. IF THE RESULTS ARE 
*         OUTSIDE NORMAL LIMITS, A PICTURE IS TAKEN OF THE PLOT.
*         THE USER MAY FORCE A PICTURE OF THE PLOT BY SETTING 
*         PARAMETER REGISTER P3 = 1XXX. 
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         3. REWIND.
*         4. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         5. FSPACE.
*         6. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         7. RELEASE. 
*         8. BUILD PLOT GRID. 
*         9. RESERVE. 
*        10. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        12. WAITNB.
*        13. MEASURE FORWARD GAP. 
*        13. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        14. RELEASE. 
*        15. REDUCE DATA IN STATUS BUFFER AND PLOT IT.
*        16. REPEAT STEPS 9-15 FOR 50 TIMES.
*        17  DELAY 1 SECOND.
*        18. TAKE A PICTURE IF PLOT IS OUT OF RANGE OR IF REQUESTED 
*            BY THE USER.  ( EC 136 IF OUT OF RANGE). 
*        19. EXIT.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X33 - EC 132 - ABNORMAL STATUS 
*         3. T7X33 - EC 136 - FORWARD GAP EXCEEDS LIMITS
* 
* 
*** T7X33 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B1 = RECORD COUNTER 
*         B2 = BUFFER INDEX FOR GAP SIZE POINTER
*         B4 = BUFFER INDEX FOR GAP SIZE POINTER
*         B5 = LINE NUMBER FOR PLOT GENERATION
*            = CHARACTER COUNT FOR PLOTTING 
*         B6 = UPPER PLOT VALUE 
*            = SCRATCH FOR CALCULATING DISTANCE AND TIME
*            = INDEX TO STATUS BUFFER 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X33 - FORWARD GAP MEASUREMENTS
 2 FORMAT T7X33 - EC 132 - ABNORMAL STATUS
 3 FORMAT  FORWARD GAP SIZES (.009425 INCHES PER TACH COUNT)
 4 FORMAT OVER
 5 FORMAT *DEC
 6 FORMAT *DEC  --------------------------------------------
 7 FORMAT UNDER 
10 FORMAT     FORWARD GAP TIMES (160 MICROSECONDS PER)
11 FORMAT T7X33 ERROR(S) IN MODULE = *DEC 
12 FORMAT T7X33 - EC 136 - FORWARD GAP EXCEEDS LIMITS 
14 FORMAT T7X33 - NOT EXECUTED USING DC = 53
*          OB(0-3)   = GAP SIZE DELIMITERS FOR .75 GAPS 
*                   0 = MAXIMUM VALUE FOR PLOT
*                   1 = MIMIMUM VALUE FOR PLOT
*                   2 = UPPER LIMIT 
*                   3 = LOWER LIMIT 
* 
*           OB(4-7)   = GAP SIZE DELIMITERS FOR .6 GAPS 
*           OB(10-13) = GAP SIZE DELIMITERS FOR .3 GAPS 
* 
*           OB(20-23) = GAP TIME DELIMITERS FOR .75/100 IPS 
*           OB(24-27) = GAP TIME DELIMITERS FOR .6/100 IPS
*           OB(30-33) = GAP TIME DELIMITERS FOR .3/100 IPS
* 
*           OB(34-37) = GAP TIME DELIMITERS FOR .75/150 IPS 
*           OB(40-43) = GAP TIME DELIMITERS FOR .6/150 IPS
*           OB(44-47) = GAP TIME DELIMITERS FOR .3/150 IPS
* 
*           OB(50-53) = GAP TIME DELIMITERS FOR .75/200 IPS 
*           OB(54-57) = GAP TIME DELIMITERS FOR .6/200 IPS
*           OB(60-63) = GAP TIME DELIMITERS FRO .3/200 IPS
* 
   BASE DECIMAL 
   DATA (OB,CON) 88,72,88,72,72,56,70,58,40,24,35,29
   DATA (OB(20B),CON) 53,41,52,42,44,32,42,34,25,13,21,17 
   DATA (OB(34B),CON) 37,25,34,28,31,19,28,22,19,7,15,11
   DATA (OB(50B),CON) 30,18,26,21,25,13,21,17,16,4,11,9 
   BASE OCTAL 
   DATA (OB(71),CON)1003,0,0,0,22,1,0,0,300,0,0,363,234,177 
   DATA (OB(111),CON)1,0,0,0,0,0,0,0,0,0,0,0,0,132
20 GOTO 55                   *CHECK DC
* 
*--------REWIND TAPE WRITTEN BY T7X30 (120 RECORDS) 
* 
21 B7 = 0                    * NO MOTION CODE 
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 403                  * REWIND MOTION IGNORE DATA
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 405                  * FWD READ MOTION IGNORE DATA
   FSPACE, ABT 70            *MOVE ONE RECORD OFF LOAD POINT
   B1 = 1                    *SET RECORD COUNTER
   REL, ABT 70
* 
*--------BUILD DISPLAY GRID FOR FORWARD PLOTS 
* 
30 MSG 3 TO LINE 0
   MSG 10 TO LINE 23D 
   B5 = 2                    *LINE NUMBER 
   IF(DC.EQ.44) GOTO 31      *IF .75 INCH GAP 
   B4 = 10
   IF(P1.AND.7.EQ.4)GOTO 31  *IF .3 INCH GAP (6250 BPI) 
   B4 = 4                    *IF .6 INCH GAP
31 MSG 4 TO LINE B5 
   B6 = IB(B4)               *UPPER PLOT VALUE
32 B5 = B5+1                 *BUMP LINE NUMBER
   IF(B6.EQ.IB(B4+2)) GOTO 33  *IF UPPER LIMIT
   IF(B6.EQ.IB(B4+3)) GOTO 33  *IF LOWER LIMIT
   MSG 5(B6) TO LINE B5 
   GOTO 34
33 MSG 6(B6) TO LINE B5 
34 GOTO 32 WHILE (B6-1.GE.IB(B4+1)) 
   B5 = B5+1                 *BUMP LINE NUMBER
   MSG 7 TO LINE B5 
   IF(B5.EQ.39) GOTO 40      *IF DONE 
   B5 = 25D                  *SET-UP FOR TIMES GRID 
   B2 = B4                  *SAVE INDEX FOR GAP VALUES
   B4 = 20+B2 
   IF(P0.EQ.100) GOTO 31     *IF 100 IPS
   B4 = 34+B2 
   IF(P0.EQ.150) GOTO 31     *IF 150 IPS
   B4 = 50+B2                   *IF 200 IPS 
   GOTO 31                   *DO TIMES GRID 
* 
*------MEASURE AND PLOT FORWARD GAP DISTANCE/TIME 
* 
40 B5 = 6                    *CHARACTER COUNT 
41 RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   WAITNB, ABT 70             *WAIT PARKED
   GOSUB 60                   *VERIFY STATUS
   B7 = 405                  * FWD READ MOTION IGNORE DATA
   MEASURE FWD GAP, ABT 70
   B1 = B1 + 2               *BUMP RECORD COUNT BY 2
   GOSUB 60                  *VERIFY STATUS 
   REL, ABT 70
   B6 = SB(10D).RS.6         *GAP DISTANCE
   B6 = B6+62D.AND.77B       *SUBTRACT 2 TEMPORARILY***                  T7X005J
   IF(P1.AND.7.EQ.4)GOTO 35  *IF .3 INCH GAP (6250 BPI) 
   IF(B6.GT.32D) GOTO 35     *NO OVERFLOW 
   B6 = B6 + 64D             *ADD OVERFLOW
35 IF(B6.GE.IB(B2+1)) GOTO 42  *IF .GE. MINIMUM 
   B6 = IB(B2+1) - 1         *SET IT TO MINIMUM - 1 
42 IF(B6.LE.IB(B2)) GOTO 43  *IF .LE. MAXIMUM 
   B6 = IB(B2)+1             *SET IT TO MAXIMUM + 1 
43 IF(B6.GT.IB(B2+2)) GOTO 44  *IF .GT. UPPER LIMIT 
   IF(B6.GE.IB(B2+3)) GOTO 45  *IF .GE. LOWER LIMIT 
44 BA = BA+1                 *SET ERROR FLAG
45 B6 = B6 - IB(B2+1) + 20D  *ADD LINE BIAS 
   PLOT LINE B6 CHAR B5      *PLOT DISTANCE 
   B6 = SB(10D).AND.77       *GAP TIME
   IF(B6.GE.IB(B4+1)) GOTO 46          *IF .GE. MIN 
   B6 = IB(B4+1) - 1         *SET IT TO MINIMUM - 1 
46 IF(B6.LE.IB(B4)) GOTO 47          *IF .LE. MAX 
   B6 = IB(B4) + 1         * SET IT TO MAX + 1
47 IF(B6.GT.IB(B4+2)) GOTO 50          *IF .GT. UPPER LIMIT 
   IF(B6.GE. IB(B4+3)) GOTO 51         *IF .GE. LOWER LIMIT 
50 BA = BA+1                 *SET ERROR FLAG
51 B6 = B6 - IB(B4+1) + 1  *ADD LINE BIAS 
   PLOT LINE B6 CHAR B5      *PLOT TIME 
52 GOTO 41 WHILE (B5+1.NE.56D)  *PLOT 50 RECORDS
   DELAY 1000D MSEC 
   IF(BA.EQ.0) GOTO 53              *IF WITHIN LIMITS 
   HALT 
   ERROR 12/0, GOTO 70
53 IF(P3.AND.1000B.EQ.0) GOTO 71  *NO PICTURE 
   PICTURE
   GOTO 71                   *TEST REPEAT MODULE
* 
*  -----TEST DEVICE CODE
* 
55 IF(DC.NE.53)GOTO 57       *IF NOT 698/CMST SUBSYSTEM 
   MSG 14 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
57 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   COPY OB TO IB FOR 130     *SAVE PARAMETERS 
   GOTO 21
* 
*--------VERIFY STATUS SUBROUTINE 
* 
60 B6 = 1 
61 IF(SB(B6).AND.IB(B6+70).NE.IB(B6+110)) ERROR 2/0, GOTO 70
   GOTO 61 WHILE (B6+1.NE.17)   *VERIFY ALL STATUS WORDS
   RETURN 
* 
*-------ERROR PROCESSOR-----------------
* 
70 ENDSUB 
   BA = BA+1                 *BUMP ERROR COUNTER
   PICTURE AND BLANK
   MSG EM TO LINE 1 
   CALL 980                  *CALL THE STATUS CRACKER 
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
71 IF(BA.EQ.0) GOTO 72       *IF NO ERRORS IN THE MODULE
   MSG 11(BA) TO DAYFILE     *INDICATE ERROR TO DAYFILE 
72 EXIT 
   END 20 
COMPILE   - T7X33 - 
   MODULE T7X34,67X(44,54,55,53)LOCK  - REVERSE GAP  -
*** T7X34 - RECORD GAP MEASUREMENTS 
* 
**  T7X34 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X34 IS NOT EXECUTED.
* 
*         T7X34 USES THE TAPE WRITTEN BY T7X30 AND GENERATES
*         A PLOT OF 50 REVERSE GAP MEASUREMENTS.  BOTH DISTANCE 
*         TRAVELED (NUMBER OF TACH PULSES DETECTED) AND TIME
*         BETWEEN RECORDS ARE PLOTTED. IF THE RESULTS ARE 
*         OUTSIDE NORMAL LIMITS, A PICTURE IS TAKEN OF THE PLOT.
*         THE USER MAY FORCE A PICTURE OF THE PLOT BY SETTING 
*         PARAMETER REGISTER P3 = 1XXX. 
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         3. REWIND.
*         4. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         5. RESERVE. 
*         6. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         7. FSPACE.
*         8. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         9. REPEAT STEPS 5-8 FOR 110 TIMES.
*        10. RELEASE. 
*        11. BUILD PLOT GRID. 
*        12. RESERVE. 
*        13. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        14. WAITNB.
*        15. MEASURE REVERSE GAP. 
*        16. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        17. RELEASE. 
*        18. REDUCE DATA IN STATUS BUFFER AND PLOT IT.
*        19. REPEAT STEPS 12-18 FOR 50 TIMES. 
*        20  DELAY 1 SECOND.
*        21. TAKE A PICTURE IF PLOT IS OUT OF RANGE OR IF REQUESTED 
*            BY THE USER.  ( EC 135 IF OUT OF RANGE). 
*        22. EXIT.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X34 - EC 132 - ABNORMAL STATUS 
*         3. T7X34 - EC 135 - REVERSE GAP EXCEEDS LIMITS
* 
* 
*** T7X34 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B1 = RECORD COUNTER 
*         B2 = BUFFER INDEX FOR GAP SIZE POINTER
*         B4 = BUFFER INDEX FOR GAP SIZE POINTER
*         B5 = LINE NUMBER FOR PLOT GENERATION
*            = CHARACTER COUNT FOR PLOTTING 
*         B6 = UPPER PLOT VALUE 
*            = SCRATCH FOR CALCULATING DISTANCE/TIME
*            = INDEX TO STATUS BUFFER 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X34 - REVERSE GAP MEASUREMENTS
 2 FORMAT T7X34 - EC 132 - ABNORMAL STATUS
 3 FORMAT  REVERSE GAP SIZES (.009425 INCHES PER TACH COUNT)
 4 FORMAT OVER
 5 FORMAT *DEC
 6 FORMAT *DEC  --------------------------------------------
 7 FORMAT UNDER 
10 FORMAT     REVERSE GAP TIMES (160 MICROSECONDS PER)
11 FORMAT T7X34 ERROR(S) IN MODULE = *DEC 
12 FORMAT T7X34 - EC 135 - REVERSE GAP EXCEEDS LIMITS 
* 
*          OB(0-3)   = GAP SIZE DELIMITERS FOR .75 GAPS 
*                   0 = MAXIMUM VALUE FOR PLOT
*                   1 = MIMIMUM VALUE FOR PLOT
*                   2 = UPPER LIMIT 
*                   3 = LOWER LIMIT 
* 
*           OB(4-7)   = GAP SIZE DELIMITERS FOR .6 GAPS 
*           OB(10-13) = GAP SIZE DELIMITERS FOR .3 GAPS 
* 
*           OB(20-23) = GAP TIME DELIMITERS FOR .75/100 IPS 
*           OB(24-27) = GAP TIME DELIMITERS FOR .6/100 IPS
*           OB(30-33) = GAP TIME DELIMITERS FOR .3/100 IPS
* 
*           OB(34-37) = GAP TIME DELIMITERS FOR .75/150 IPS 
*           OB(40-43) = GAP TIME DELIMITERS FOR .6/150 IPS
*           OB(44-47) = GAP TIME DELIMITERS FOR .3/150 IPS
* 
*           OB(50-53) = GAP TIME DELIMITERS FOR .75/200 IPS 
*           OB(54-57) = GAP TIME DELIMITERS FOR .6/200 IPS
*           OB(60-63) = GAP TIME DELIMITERS FRO .3/200 IPS
* 
   BASE DECIMAL 
   DATA (OB,CON) 88,72,88,72,72,56,70,58,40,24,35,29
   DATA (OB(20B),CON) 53,41,52,42,44,32,42,34,25,13,21,17 
   DATA (OB(34B),CON) 37,25,34,28,31,19,28,22,19,7,15,11
   DATA (OB(50B),CON) 30,18,26,21,25,13,21,17,16,4,11,9 
   BASE OCTAL 
   DATA (OB(71),CON)1003,0,0,0,22,1,0,0,300,0,0,363,234,177 
   DATA (OB(111),CON)1,0,0,0,0,0,0,0,0,0,0,0,0,132
* 
*--------REWIND AND POSITION FORWARD 110D RECORDS 
* 
20 IF(DC.EQ.53)EXIT TO 34A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT 
21 B7 = 400                  *NO MOTION, IGNORE DATA
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 403                  *REWIND MOTION, IGNORE DATA
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B1 = 0                    *CLEAR COUNTER 
22 RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B7 = 405                  *FORWARD MOTION, IGNORE DATA 
   FSPACE, ABT 70            *MOVE ONE RECORD FORWARD 
   GOSUB 60                  *VERIFY STATUS 
   GOTO 22 WHILE (B1+1.NE.110D) 
   REL, ABT 70
* 
*--------BUILD DISPLAY GRID FOR REVERSE PLOTS 
* 
30 MSG 3 TO LINE 0
   MSG 10 TO LINE 23D 
   B5 = 2                    *LINE NUMBER 
   IF(DC.EQ.44) GOTO 31      *IF .75 INCH GAP 
   B4 = 10
   IF(P1.AND.7.EQ.4)GOTO 31  *IF .3 INCH GAP (6250 BPI) 
   B4 = 4                    *IF .6 INCH GAP
31 MSG 4 TO LINE B5 
   B6 = OB(B4)               *UPPER PLOT VALUE
32 B5 = B5+1                 *BUMP LINE NUMBER
   IF(B6.EQ.OB(B4+2)) GOTO 33  *IF UPPER LIMIT
   IF(B6.EQ.OB(B4+3)) GOTO 33  *IF LOWER LIMIT
   MSG 5(B6) TO LINE B5 
   GOTO 34
33 MSG 6(B6) TO LINE B5 
34 GOTO 32 WHILE (B6-1.GE.OB(B4+1)) 
   B5 = B5+1                 *BUMP LINE NUMBER
   MSG 7 TO LINE B5 
   IF(B5.EQ.39) GOTO 40      *IF DONE 
   B5 = 25D                  *SET-UP FOR TIMES GRID 
   B2 = B4                  *SAVE INDEX FOR GAP VALUES
   B4 = 20+B2 
   IF(P0.EQ.100) GOTO 31     *IF 100 IPS
   B4 = 34+B2 
   IF(P0.EQ.150) GOTO 31     *IF 150 IPS
   B4 = 50+B2                   *IF 200 IPS 
   GOTO 31                   *DO TIMES GRID 
* 
*--------MEASURE AND PLOT REVERSE GAP DISTANCE/TIME 
* 
40 B5 = 6                    *CHARACTER COUNT 
   BA = 0                    *CLEAR ERROR FLAG
41 RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   WAITNB, ABT 70            *WAIT PARKED 
   B7 = 406                  *REVERSE READ, IGNORE DATA 
   MEASURE REV GAP, ABT 70
   B1 = B1 - 2               *DECREMENT RECORD COUNT
   GOSUB 60                  *VERIFY STATUS 
   REL, ABT 70
   B6 = SB(10D).RS.6         *GAP DISTANCE
   B6 = B6+62D.AND.77B       *SUBTRACT 2 TEMPORARILY***                  T7X005J
   IF(P1.AND.7.EQ.4)GOTO 35  *IF .3 INCH GAP (6250 BPI) 
   IF(B6.GT.32D) GOTO 35      *IF NO OVERFLOW 
   B6 = B6 + 64D             *ADD OVERFLOW
35 IF(B6.GE.OB(B2+1)) GOTO 42  *IF .GE. MINIMUM 
   B6 = OB(B2+1) - 1         *SET IT TO MINIMUM - 1 
42 IF(B6.LE.OB(B2)) GOTO 43  *IF .LE. MAXIMUM 
   B6 = OB(B2)+1             *SET IT TO MAXIMUM + 1 
43 IF(B6.GT.OB(B2+2)) GOTO 44  *IF .GT. UPPER LIMIT 
   IF(B6.GE.OB(B2+3)) GOTO 45  *IF .GE. LOWER LIMIT 
44 BA = BA+1                 *SET ERROR FLAG
45 B6 = B6 - OB(B2+1) + 20D  *ADD LINE BIAS 
   PLOT LINE B6 CHAR B5      *PLOT DISTANCE 
   B6 = SB(10D).AND.77       *GAP TIME
   IF(B6.GE.OB(B4+1)) GOTO 46          *IF .GE. MIN 
   B6 = OB(B4+1) - 1         *SET IT TO MINIMUM - 1 
46 IF(B6.LE.OB(B4)) GOTO 47          *IF .LE. MAX 
   B6 = OB(B4) + 1         * SET IT TO MAX + 1
47 IF(B6.GT.OB(B4+2)) GOTO 50          *IF .GT. UPPER LIMIT 
   IF(B6.GE. OB(B4+3)) GOTO 51         *IF .GE. LOWER LIMIT 
50 BA = BA+1                 *SET ERROR FLAG
51 B6 = B6 - OB(B4+1) + 1  *ADD LINE BIAS 
   PLOT LINE B6 CHAR B5      *PLOT TIME 
52 GOTO 41 WHILE (B5+1.NE.56D)  *PLOT 50 RECORDS
   DELAY 1000D MSEC 
   IF(BA.EQ.0) GOTO 53              *IF WITHIN LIMITS 
   HALT 
   ERROR 12/0, GOTO 70
53 IF(P3.AND.1000B.EQ.0) GOTO 71  *NO PICTURE 
   PICTURE
   GOTO 71                   *TEST REPEAT MODULE
* 
*--------VERIFY STATUS SUBROUTINE 
* 
60 B6 = 1 
61 IF(SB(B6).AND.IB(B6+70).NE.IB(B6+110)) ERROR 2/0, GOTO 70
   GOTO 61 WHILE (B6+1.NE.17)   *VERIFY ALL STATUS WORDS
   RETURN 
* 
*-------ERROR PROCESSOR-----------------
* 
70 ENDSUB 
   BA = BA+1                 *BUMP ERROR COUNTER
   PICTURE AND BLANK
   MSG EM TO LINE 1 
   CALL 980                  *CALL THE STATUS CRACKER 
   MSG 1 TO DISPLAY          *RE-POST RUNNING MESSAGE 
71 IF(BA.EQ.0) GOTO 72       *IF NO ERRORS IN THE MODULE
   MSG 11(BA) TO DAYFILE     *INDICATE ERROR TO DAYFILE 
72 EXIT 
   END 20 
COMPILE   - T7X34 - 
   MODULE T7X34A,67X(53)LOCK  - POST MSG FOR DC 53
*** T7X34A - POST MSG FOR DC 53 
* 
**  T7X34A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         T7X34A WILL POST A NO RUN MSG FOR T7X34 IF DC = 53. 
* 
*   DESCRIPTION - N/A 
* 
*** 
**
* 
*   ERRORS REPORTED - N/A 
* 
*** T7X34A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE - N/A
* 
*   MODULES CALLED - NONE 
* 
* 
 1 FORMAT T7X34 - NOT EXECUTED USING DC = 53
20 MSG 1 TO DISPLAY,PRINT   *NO RUN MSG 
   EXIT 
   END 20 
COMPILE   - T7X34A -
   MODULE T7X36,67X(44,54,55,53)LOCK  - TAPE TRACKING 
*** T7X36 - TAPE TRACKING 
* 
**  T7X36 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X36 IS NOT EXECUTED.
* 
*         THIS REPAIR MODULE SUPPORTS THE SINGLE FRAME SKEW FCO 
*         CA40786 FOR THE FA450, FA451 ATS TAPE CONTROLLER.  THIS FCO 
*         ADDS STATUS WORD 8 BIT 11 WHICH, WHEN SET, INDICATES THAT A 
*         SKEW ERROR OF ONE CELL OR MORE HAS OCCURRED ON A 1600 BPI 
*         WRITE OR READ OPERATION.  THIS MODULE ONLY EXECUTES ON 9 TK 
*         UNITS AT 1600 BPI (PHASE ENCODED).
* 
*         THERE ARE THREE CRITICAL AREAS ASSOCIATED WITH PROPER MAINT-
*         ENANCE OF ANY TAPE TRANSPORT. 
* 
*          1. TAPE MOTION (START/STOP AND MAINTAINING TAPE VELOCITY)
*          2. TAPE TO HEAD CONTACT (SIGNAL STRENGTH TO/FROM THE HEAD) 
*          3. TAPE TRACKING (ALIGNMENT OF TAPE TO THE HEAD DURING TAPE
*             MOTION) 
* 
*         FROM A MAINTENANCE POINT OF VIEW, THE ATS SUBSYSTEM HAS THE 
*         BEST MOTION CAPABILITIES OF ANY CDC TRANSPORT DESIGNED TO 
*         DATE.  THESE FEATURES INCLUDE THE ABILITY TO PLOT START/STOP
*         PROFILES WITH MALET T7X AND THE CONSTANT MONITORING OF TAPE 
*         VELOCITY BY THE ATS CONTROLLER.  TAPE TO HEAD CONTACT IS
*         TYPICALLY VERIFIED BY PROPER PARITY, CHECK-CHARACTERS, ETC. 
* 
*         TAPE TRACKING IS THE TERM USED TO DEFINE THE ALIGNMENT OF THE 
*         MAGNETIC TAPE TO THE MAGNETIC HEAD AS IT MOVES PAST THE HEAD
*         ON WRITE AND READ OPERATIONS.  A NUMBER OF COMPONENTS CONTROL 
*         THIS ALIGNMENT, SUCH AS TAPE WIDTH, TAPE PATH WIDTH, ALIGN- 
*         MENT OF THE TAPE PATH AND HARDWARE CREATING TAPE MOVEMENT,
*         ETC.  WHEN ALL COMPONENTS ARE WITHIN PROPER SPECIFICATIONS, 
*         THE TAPE MOVES IN A STRAIGHT LINE RESULTING IN LINES OF FLUX
*         CHANGE ON TAPE THAT ARE PARALLEL TO THE EDGE OF TAPE WHEN IT
*         IS WRITTEN.  WHEN THE TAPE IS READ LATER WITH A PROPERLY
*         TRACKING UNIT, THE TRACKS PRODUCED BY THE WRITE HEAD WILL 
*         ALIGN PROPERLY WITH THE READ HEAD SUCH THAT ALL BITS THAT ARE 
*         ASSOCIATED WITH A FRAME OF DATA ARRIVE AT THE READ HEAD AT
*         THE SAME TIME.  WHEN THIS OCCURS, THE TAPE IS SAID TO HAVE
*         ZERO SKEW.  FOR EXAMPLE, THE MASTER ALIGNMENT SKEW TAPE USED
*         TO ALIGN UNIT ELECTRICAL SKEW IS SUCH A TAPE. 
* 
*         WHEN TRACKING PROBLEMS EXIST, THE TAPE DOES NOT TRAVEL IN A 
*         STRAIGHT LINE.  IT FISH-TAILS THROUGH THE TAPE PATH PAST
*         THE HEAD.  ON A WRITE OPERATION, THIS CREATES S-SHAPED DATA 
*         TRACKS ON TAPE THAT ARE NO LONGER PARALLEL TO THE EDGE OF 
*         TAPE.  ON SUBSEQUENT READ, THE BITS ASSOCIATED WITH A FRAME 
*         OF DATA WILL ARRIVE AT THE READ HEAD AT DIFFERENT TIMES OR
*         SKEWED FROM EACH OTHER.  THE AMOUNT OF SKEW WILL DEPEND UPON
*         THE DEGREE OF TRACKING PROBLEMS THAT OCCURRED WHEN THE TAPE 
*         WAS WRITTEN PLUS THE TRACKING CAPABILITIES OF THE UNIT DOING
*         THE READING.  IF AN OUT-OF-SPEC UNIT IS USED FOR BOTH OF THE
*         OPERATIONS, SKEW CAN BE DOUBLED (WRITE SKEW PLUS READ SKEW).
* 
*         IT IS IMPORTANT TO KEEP EACH TRANSPORT IN A SYSTEM AS CLOSE 
*         TO PERFECT TRACKING AS POSSIBLE DUE TO DIFFERENT TOLERANCE
*         TO SKEW DESIGNED INTO DIFFERENT TAPE SUBSYSTEMS.  FOR EXAMPLE,
*         THE 66X TAPE SUBSYSTEM CAN TOLERATE UP TO 4 FRAMES OF SKEW ON 
*         READ OPERATIONS AT 1600 BPI BUT THE 67X CAN TOLERATE UP TO 7
*         FRAMES OF SKEW.  THEREFORE, WITHOUT CLOSE ALIGNMENT OF BOTH 
*         66X AND 67X UNITS IN THE SAME CONFIGURATION, IT IS POSSIBLE 
*         TO CREATE TAPES THAT CAN BE READ BY THE 67X UNITS THAT CANNOT 
*         BE READ ON THE 66X DUE TO SKEW TOLERANCE.  THESE SITUATIONS 
*         ARE PART OF A CLASS OF PROBLEMS KNOWN AS  COMPATABILITY 
*         PROBLEMS. 
* 
*         SKEW PROBLEMS CANNOT TYPICALLY BE DETECTED DURING A WRITE 
*         OPERATION SINCE THE READ HEAD IS LOCATED SO CLOSE TO THE WRITE
*         HEAD IT IS NOT POSSIBLE TO SEE THE FISH-TAILING EFFECT.  TO 
*         SEE THE PROBLEM, A TAPE MUST BE WRITTEN, REWOUND AND READ.
*         DURING THE READ FOR MAINTENANCE PURPOSES, THE NORMAL TOLERANCE
*         TO SKEW MUST BE IGNORED AND TIGHTER REQUIREMENTS PLACED ON THE
*         UNIT.  THIS IS ACCOMPLISHED BY MONITORING FOR ONE FRAME OF
*         SKEW INSTEAD OF THE NORMAL 4 OR 7 AS EXPLAINED ABOVE.  AS PART
*         OF ITS ORIGINAL DESIGN, THE 66X SUBSYSTEM HAD A SINGLE FRAME
*         SKEW STATUS BIT.  THIS CAPABILITY HAD TO BE ADDED TO THE ATS
*         SUBSYSTEM BY FCO CA40786. 
* 
*         THIS MODULE VERIFIES PROPER TAPE TRACKING BY WRITING 200(D) 
*         RECORDS OF RANDOM DATA WITH EACH RECORD BEING APPROXIMATELY 
*         30 INCHES IN LENGTH.  THE LONG RECORDS GIVE THE FISH-TAILING
*         EFFECT PLENTY OF OPPORTUNITY TO OCCUR WITHIN EACH RECORD. 
*         THE TAPE IS THEN REWOUND AND READ.  SINGLE FRAME SKEW IS
*         MONITORED DURING BOTH THE WRITE AND READ OPERATIONS.  IF IT 
*         OCCURS, ADJUSTMENTS MUST BE MADE TO THE UNIT, THIS MODULE 
*         RE-EXECUTED AND THE PROCESS REPEATED UNTIL THE PROBLEM IS 
*         CORRECTED.
* 
* 
*   DESCRIPTION - 
* 
*         1. EXIT WITH A MESSAGE IF A 7TK OR A 9TK NRZI DENSITY UNIT
*            IS ASSIGNED. 
*         2. FORCE FORMAT OPTIONS TO ODD PARITY, 1600 BPI AND PACK MODE 
*            AND SET WORD COUNT TO WRITE 50000 OCTAL PP BYTES.
*         3. RESERVE AND REWIND UNIT. 
*         4. CREATE RANDOM DATA IN OUTPUT BUFFER AND ADD RECORD CODING. 
*         5. RESERVE AND WRITE A LONG RECORD. 
*         6. REPORT ERROR CODE 200 IF GENERAL STATUS ERROR ON WRITE.
*         7. IF NO GENERAL STATUS ERROR, REPORT ERROR CODE 276 IF SINGLE
*            FRAME SKEW ERROR ON WRITE. 
*         8. REPEAT STEPS 4 THRU 7 UNTIL 200(D) RECORDS ARE WRITTEN.
*         9. RESERVE AND REWIND.
*        10. RESERVE AND READ ONE RECORD. 
*        11. REPORT ERROR CODE 203 IF ALERT STATUS ON READ. 
*        12. IF NO GENERAL STATUS ERROR, REPORT ERROR CODE 277 IF SINGLE
*            FRAME SKEW ERROR ON READ.
*        13. REPEAT STEPS 10 THRU 12 UNTIL 200(D) RECORDS ARE READ. 
*        14. IF REPEAT CONDITION IS SELECTED, REPEAT THE READ BY GOING
*            TO STEP 9. 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X36 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X36 - ABORT ON .RES. COMMAND - 
*         4. T7X36 - ABORT ON .REWIND. COMMAND -
*         5. T7X36 - ABORT ON .WRITE LONG. COMMAND -
*         6. T7X36 - ABORT ON .READ. COMMAND -
*         7. T7X36 DOES NOT EXECUTE ON A 7TK UNIT.
*         8. T7X36 EXECUTES ON A 9TK UNIT PE DENSITY ONLY.
* 
*         9. -EC200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL 
*            STATUS DURING A WRITE OPERATION.  NOTE THAT GENERAL
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 5034B.
* 
*        10. -EC203- THE ALERT BIT IN GENERAL STATUS WAS SET DURING 
*            A READ FORWARD OPERATION.
* 
*        11. -EC276- SINGLE FRAME SKEW ERROR ON A WRITE 
* 
*        12. -EC277- SINGLE FRAME SKEW ERROR ON A READ FWD
* 
* 
*** T7X36 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = FORMAT RESERVE OPTIONS 
*         B4 = NUMBER OF RECORDS TO READ
*         B5 = MSG NUMBER IN CASE OF COMMAND ABORT
*         B6 = LOOP COUNT FOR SCOPE LOOPS 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X36 - TAPE TRACKING 
 2 FORMAT T7X36 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T7X36 - ABORT ON .RES. COMMAND -
 4 FORMAT T7X36 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T7X36 - ABORT ON .WRITE LONG. COMMAND - 
 6 FORMAT T7X36 - ABORT ON .READ. COMMAND - 
 7 FORMAT T7X36 EXECUTES ON A 9TK UNIT PE DENSITY ONLY. 
12 FORMAT T7X36 DOES NOT EXECUTE ON A 7TK UNIT. 
14 FORMAT T7X36 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X36 ERROR(S) IN MODULE = *DEC 
16 FORMAT T7X36 - NOT EXECUTED USING DC = 53
* 
   EQUATE ERROR TO 5034, EOT TO 10, SFSKEW TO 4000
   EQUATE ALERT TO 4000 
* 
20 GOTO 55                   *GHECK DC
24 IF(DC.EQ.44)GOTO 22       *IF 7TK UNIT ASSIGNED
   IF(P1.AND.77.EQ.12)GOTO 21   *IF 9 TK UNIT PE DENSITY ASSIGNED 
   MSG 7 TO DISPLAY, PRINT   *PHASE DENSITY ONLY
   GOTO 23
22 MSG 12 TO DISPLAY, PRINT  *CANNOT RUN 7TK UNIT 
23 EXIT                      *TERMINATE 
21 B2 = 12                   *SET ODD PARITY, PE, PACK MODE 
   WC = 5000                 *SET WORD COUNT
   B5 = 3 
   RES B2, ABT 74 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
   B1 = 1                    *SET RECORD COUNT
* 
*---------WRITE 200D RECORDS ON TAPE
* 
30 RANDOM TO OB FOR 500, START RT 
   OB(1) = B0                *ADD ADDRESS CODING
   OB(2) = B1 
   OB(3) = WC 
   B5 = 3 
   RES B2, ABT 74 
   B5 = 5 
   B7 = 1                    *FORWARD WRITE MOTION CODE 
   WRITE LONG, ABT 74 
   IF(SB(1).AND.EOT.NE.0) GOTO 40  *IF END OF TAPE
   IF(SB(1).AND.ERROR.EQ.0) GOTO 31  *IF NO GS ERROR
   ERROR 2/200, GOSUB 70     *REPORT 200 ERROR CODE 
   GOTO 32
31 IF(SB(8).AND.SFSKEW.EQ.0) GOTO 32  *IF NO SKEW ERROR 
   ERROR 2/276, GOSUB 70     *REPORT SKEW ERROR ON WRITE
32 GOTO 30 WHILE (B1+1.LE.200D)  *WRITE 200D RECORDS
* 
*---------REWIND AND READ 200D RECORDS
* 
40 B4 = B1                   *NUMBER OF RECORDS TO PROCESS
   B5 = 3 
   RES B2, ABT 74 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
   B1 = 1                    *SET RECORD COUNT
41 B5 = 3 
   RES B2, ABT 74 
   B5 = 6 
   B7 = 5                    *READ FWD MOTION CODE
   READ, ABT 74 
   IF(SB(1).AND.EOT.NE.0) GOTO 50  *IF END OF TAPE
   IF(SB(1).AND.ALERT.EQ.0) GOTO 42  *IF NO ALERT 
   ERROR 2/203, GOSUB 70     *REPORT 203 ERROR CODE 
   GOTO 43
42 IF(SB(8).AND.SFSKEW.EQ.0) GOTO 43  *IF NO SKEW ERROR 
   ERROR 2/0277, GOSUB 70    *REPORT SKEW ERROR ON READ 
43 GOTO 41 WHILE (B1+1.NE.B4)  *READ 200D RECORDS 
* 
*---------RE-READ THE TAPE IF REPEAT CONDITION IS SET 
* 
50 B6 = B6 + 1                 *BUMP LOOP COUNT 
   IF(ES.AND.RC.NE.0) GOTO 40  *IF REPEAT CONDITION 
   IF(BA.EQ.0) GOTO 52         *IF NO ERRORS
51 MSG 15 (BA) TO DAYFILE      *REPORT ERRORS 
52 EXIT                        *TERMINATE 
* 
*  -----TEST DEVICE CODE
* 
55 IF(DC.NE.53)GOTO 57       *IF NOT 698/CMST SUBSYSTEM 
   MSG 16 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
57 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   GOTO 24
* 
*---------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 (BA,B6) TO DISPLAY   *SCOPE LOOP MSG
   RETURN 
71 MSG EM(EC,EA) TO LINE 1     *ERROR CODE MESSAGE
   CALL 98A                    *ERROR CODE PROCESSOR
   MSG 1 TO DISPLAY            *REPOST RUNNING MESSAGE
   RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                 *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0) GOTO 75  *SCOPE LOOP NOT SELECTED 
   MSG 14 (BA,B6) TO DISPLAY   *SCOPE LOOP MSG
   GOTO 21                     *RESTART 
75 MSG B5 TO LINE 0            *ERROR CONDITION 
   MSG EM TO LINE 1            *PRODUCT OVERLAY ERROR MSG 
   CALL 980                    *PROCESS ERROR MODULE
   MSG 1 TO DISPLAY            *REPOST RUNNING MESSAGE
   IF(BA.LT.2) GOTO 21         *RESTART IF NOT SECOND TRY 
   GOTO 51                     *REPORT ERRORS AND TERMINATE 
   END 20 
COMPILE   - T7X36  -
   MODULE T7X40,67X(44,54,55,53)LOCK   - ERASE -
*** T7X40 - ERASE 
* 
**  T7X40 - EXTERNAL DOCUMENATION 
* 
*   OVERVIEW -
* 
*         AN ERASE FUNCTION IS ISSUED, THEN GENERAL 
*         STATUS IS CHECKED FOR AN *ALERT*. THIS PROCESS
*         CONTINUES UNTIL FILE MAX OR EOT IS REACHED. 
* 
* 
*   DESCRIPTION - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. CHECK FOR MAINTENANCE MODE AND SET FILE MAX. 
*         5. RELEASE, DELAY AND RESERVE.
*         6. ERASE. 
*         7. WAIT PARKED IF REQUESTED.
*         8. GO TO STEP 11 IF END OF TAPE.
*         9. CHECK FOR *ALERT*. REPORT EC 246 IF ERROR. 
*        10. REPEAT STEPS 5-9 UNTIL FILE MAX ERASES DONE. 
*        11. REPEAT MODULE IF SELECTED. 
*        12. RELEASE. 
*        13. EXIT.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X40 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X40 - ABORT ON .ERASE. COMMAND - 
*         4. T7X40 - ABORT ON .RES. COMMAND - 
*         5. T7X40 - ABORT ON .REL. COMMAND - 
*         6. T7X40 - ABORT ON .REWIND. COMMAND -
*         7. T7X40 - ABORT ON .WAITNB. COMMAND -
* 
*         8. -EC 246- AN ALERT STATUS OCCURRED AFTER AN ERASE 
*            OPERATION. 
* 
* 
*** T7X40 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*        B0 = CURRENT FILE (ERASE) COUNT
*        B3 = FILE MAX
*        B5 = MARGINS 
*           = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR
*           = DELAY VALUE FOR REL/RES 
*        B6 = LOOP COUNT
*        B7 = ACTION CODE FOR ERROR ISOLATION 
*        BA = ERROR COUNT 
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X40 - ERASE - 
 2 FORMAT T7X40 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X40 - ABORT ON .ERASE. COMMAND -
 6 FORMAT T7X40 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X40 - ABORT ON .REL. COMMAND -
10 FORMAT T7X40 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X40 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X40 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X40 ERROR(S) IN MODULE = *DEC 
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10
* 
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B5 = P3 RS 6               *MARGIN BITS
   MARGINS B5                 *SELECT MARGINS PER PARAM P3
21 B5 =6
   RES P1, ABT 74             *RESERVE
   B5 = 10
   B7 = 3                     *REWIND MOTION CODE 
   REWIND, ABT 74 
   B0=0 
   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 
* 
   B5 = 4 
   B7 = 1                     *FORWARD WRITE MOTION 
   ERASE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 30  *BYPASS WAIT *PARKED* 
   B5 = 11
   WAITNB, ABT 74 
30 IF(SB(1).AND.EOT.NE.0)GOTO 54      *EOT DETECTED 
   IF(SB(1).AND.ALERT.NE.0)ERROR 2/246, GOSUB 70  *ALERT
   IF(B3.EQ.0)GOTO 24                 *LOOP IF FILE MAX IS 0
   GOTO 24 WHILE(B0 + 1.LE.B3)        *LOOP FILEMAX TIMES 
54 B6 = B6 + 1   .                    *LOOP COUNT 
   B5 = 7 
   REL, ABT 74
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0) GOTO 21         *REPEAT MODULE/COND.
   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
   B5 = 7 
   REL, ABT 74
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X40 -
   MODULE T7X41,67X(44,54,55,53)LOCK   - WRITE FM/TM -
*** T7X41 - WRITE FILEMARK/TAPEMARK 
* 
**  T7X41 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         WRITE  FILEMARK/TAPEMARK UNTIL FILE MAX 
*         OR EOT IS ENCOUNTERED 
* 
*   DESCRIPTION - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. CHECK FOR MAINTENANCE MODE AND SET FILE MAX. 
*         5. RELEASE, DELAY AND RESERVE.
*         6. ENDFILE. 
*         7. WAIT PARKED IF REQUESTED.
*         8. GO TO STEP 12 IF END OF TAPE.
*         9. CHECK FOR *EOF*. REPORT EC 122 IF NOT PRESENT. 
*        10. REPEAT STEPS 5-9 UNTIL FILE MAX ENDFILES DONE. 
*        11. RELEASE. 
*        12. REPEAT MODULE IF SELECTED. 
*        13. EXIT.
* 
* 
*   ERRORS REPORTED 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X41 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X41 - ABORT ON .ENDFILE. COMMAND - 
*         4. T7X41 - ABORT ON .RES. COMMAND - 
*         5. T7X41 - ABORT ON .REL. COMMAND - 
*         6. T7X41 - ABORT ON .REWIND. COMMAND -
*         7. T7X41 - ABORT ON .WAITNB. COMMAND -
* 
*         8. -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
* 
*** T7X41 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE
* 
*         B0 = CURRENT FILE COUNT 
*         B2 = FILE MAX 
*         B5 = MARGINS
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X41 - WRITE FILEMARK/TAPEMARK - 
 2 FORMAT T7X41 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X41 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T7X41 - ABORT ON .RES. COMMAND -
 6 FORMAT T7X41 - ABORT ON .REL. COMMAND -
 7 FORMAT T7X41 - ABORT ON .REWIND. COMMAND - 
10 FORMAT T7X41 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X41 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X41 ERROR(S) IN MODULE = *DEC 
   EQUATE EOT TO 10, FILEMK TO 20 
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B5 = P3 RS 6               *MARGIN BITS
   MARGINS B5                 *SELECT MARGINS PER PARAM P3
21 B5 = 5 
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B5 = 7 
   B7 = 3                     *REWIND MOTION CODE 
   REWIND, ABT 74 
   B0=0 
   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
   B5 = 6 
   REL, ABT 74                *RELEASE
25 B5 = P6                    *FIXED DELAY TIME 
   IF(P5.EQ.0) GOTO 26        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
26 DELAY B5 MSEC
   B5 = 5 
   RES P1, ABT 74             *RESERVE
   B0 = B0 + 1                *INCREMENT FILE COUNT 
* 
*---------WRITE FILEMARK/TAPEMARK 
* 
30 B5 = 4 
   B7 = 1                     *FORWARD WRITE CODE 
   ENDFILE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 31  *BYPASS WAIT *PARKED* 
   B5 = 10
   WAITNB, ABT 74 
31 IF(SB(1).AND.EOT.NE.0)GOTO 54      *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/122, GOSUB 70  *NO FM/TM
   IF(B2.EQ.0)GOTO 24         *INFINITE FILE COUNT
   IF(B0.LT.B2)GOTO 24        *FILE COUNT NOT EXHAUSTED 
   B5 = 6 
   REL, ABT 74
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   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)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X41 -
   MODULE T7X42,67X(44,54,55,53)LOCK   - READ FM/TM - 
*** T7X42 - READ FILEMARK/TAPEMARK
* 
**  T7X42 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE IS DEPENDENT ON THE TAPE CREATED BY 
*         MODULE *T7X41*. (TAPE OF ALL FILE MARKS). 
* 
*         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 - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. CHECK FOR MAINTENANCE MODE AND SET FILE MAX. 
*         5. RELEASE, DELAY AND RESERVE.
*         6. READ FORWARD.
*         7. WAIT PARKED IF REQUESTED.
*         8. GO TO STEP 11 IF END OF TAPE.
*         9. CHECK FOR *EOF*. REPORT EC 252 IF NOT PRESENT. 
*        10. REPEAT STEPS 5-9 UNTIL FILE MAX FORWARD READS DONE.
*        11. RELEASE, DELAY AND RESERVE.
*        12. READ REVERSE.
*        13. WAIT PARKED IF REQUESTED.
*        14. GO TO STEP 17 IF LOADPOINT.
*        15. CHECK FOR *EOF*. REPORT EC 251 IF NOT PRESENT. 
*        16. REPEAT STEPS 11-15 UNTIL FILE MAX REVERSE READS DONE.
*        17. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X42 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X42 - ABORT ON .REWIND. COMMAND -
*         4. T7X42 - ABORT ON .READ REV. COMMAND -
*         5. T7X42 - ABORT ON .READ FWD. COMMAND -
*         6. T7X42 - ABORT ON .RES. COMMAND - 
*         7. T7X42 - ABORT ON .REL. COMMAND - 
*         8. T7X42 - ABORT ON .WAITNB. COMMAND -
* 
*         9. -EC 251- FILE MARK STATUS IS MISSING AT END-OF-OPERATION 
*            DURING REVERSE READ FILE MARK TEST.
* 
*        10. -EC 252- FILE MARK STATUS IS MISSING AT END-OF-OPERATION 
*            DURING FORWARD READ FILE MARK TEST.
* 
* 
*** T7X42 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B2 = FILE MAX 
*         B5 = MARGINS
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X42 - READ FILEMARK/TAPEMARK -
 2 FORMAT T7X42 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X42 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T7X42 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T7X42 - ABORT ON .READ FWD. COMMAND - 
 7 FORMAT T7X42 - ABORT ON .RES. COMMAND -
10 FORMAT T7X42 - ABORT ON .REL. COMMAND -
11 FORMAT T7X42 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X42 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X42 ERROR(S) IN MODULE = *DEC 
* 
* 
   EQUATE EOT TO 10, FILEMK TO 20, LOADPT TO 4
* 
* 
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B5 = P3 RS 6               *MARGIN BITS TO B5
   MARGINS B5                 *SELECT MARGINS PER PARAM P3
21 B5 = 7 
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B5 = 4 
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74
   B0=0 
   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
* 
   B5 = 6 
   B7 = 5                     *READ FORWARD CODE
   READ FWD , ABT 74
   B0 = B0 + 1                *INCREMENT FILE COUNT 
   IF(P3.AND.20.NE.0)GOTO 30  *BYPASS WAIT *PARKED* 
   B5 = 11
   WAITNB, ABT 74 
30 IF(SB(1).AND.EOT.NE.0)GOTO 34      *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/252, GOSUB 70  *FM/TM 
   IF(B2.EQ.0)GOTO 24         *INFINITE FILE COUNT
   IF(B0.LT.B2)GOTO 24        *FILE COUNT NOT EXHAUSTED 
34 GOSUB 60                   *RESERVE
* 
*---------READ REVERSE
* 
   B5 = 5 
   B7 = 6                     *READ REVERSE CODE
   READ REV , ABT 74
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = 11
   WAITNB, ABT 74 
40 IF(SB(1).AND.LOADPT.NE.0)GOTO 54   *LOAD POINT DETECTED
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/251, GOSUB 70  *NO FM/TM
   GOTO 34 WHILE (B0-1.NE.0)  *DECREMENT FILE COUNT 
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   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
   B5 = 10
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X42 -
   MODULE T7X43,67X(44,54,55,53)LOCK   - MAINTENANCE WRITE -
*** T7X43 - MAINTENANCE WRITE 
* 
**  T7X43 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE DENSITY AND
*         PATTERN SELECTED BY THE *PARAM* DIRECTIVE.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* 
*         OR *EOT* IS REACHED.
* 
*   DESCRIPTION - 
* 
*         1. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         5. APPLY ADDRESS CODING IF SELECTED.
*         6. RELEASE, DELAY AND RESERVE.
*         7. WRITE. 
*         8. WAIT PARKED IF SELECTED. 
*         9. GO TO STEP 16 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. REPEAT STEPS 4-10 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        12. WAIT PARKED IF SELECTED. 
*        13. ENDFILE. 
*        14. REPORT EC 122 IF NO *EOF* STATUS.
*        15. REPEAT STEPS 4-14 UNTIL *FILE MAX* FILES WRITTEN.
*        16. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X43 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X43 - ABORT ON .ENDFILE. COMMAND - 
*         4. T7X43 - ABORT ON .WRITE. COMMAND - 
*         5. T7X43 - ABORT ON .RES. COMMAND - 
*         6. T7X43 - ABORT ON .REWIND. COMMAND -
*         7. T7X43 - ABORT ON .REL. COMMAND - 
*         8. T7X43 - ABORT ON .WAITNB. COMMAND -
* 
*         9. -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A -MAINTENANCE WRITE- OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
* 
*** T7X43 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B0 = CURRENT FILE COUNT 
*            = TRACK SIZE (6 OR 8)
*            = RANDOM SEED
*         B1 = CURRENT RECORD COUNT 
*         B2 = RANDOM DATA PATTERN FLAG 
*         B3 = PATTERN FOR STORING
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X43 - MAINTENANCE WRITE - 
 2 FORMAT T7X43 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X43 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T7X43 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X43 - ABORT ON .RES. COMMAND -
10 FORMAT T7X43 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X43 - ABORT ON .REL. COMMAND -
12 FORMAT T7X43 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X43 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X43 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 5034
* 
* 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B0 = 10
   B1 = 500 
   B3 = P4
   IF(DC.AND.10.NE.0)GOTO 21   *IF 9 TRACK TAPE.
   B0 = 6                      *TRACK SIZE (6 OR 8) 
* 
*---------FILL BUFFER 
* 
21 IF(P4.AND.3000.EQ.1000)B3=P4.XOR.7777
   DUP B0 BITS OF P4/B3 TO OB FOR B1
   GOTO 25
23 B0 = P7                   *RANDOM SEED 
   IF(P3.AND.4.NE.0)GOTO 24  *USE RANDOM SEED 
   B2=1                      *SET FLAG
   B0 = RT                   *USE RT CLOCK FOR SEED 
24 RANDOM TO OB FOR 500 , START B0
25 WC = P2                   *RECORD LENGTH TO WC REG 
26 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0                      *CLEAR FILE COUNT
   B1=0                      *CLEAR RECORD COUNT
30 B1 = B1 + 1               *INCREMENT RECORD COUNT
   IF(B1.EQ.7777) GOTO 30    *BUMP RECORD COUNT 
   IF(B2.EQ.0) GOTO 40       *RANDOM PTRN NOT SELECTED
   RANDOM TO OB FOR 500 , START RT
* 
*-------- ADDRESS CODING
* 
40 IF(P3.AND.1.NE.0)GOTO 43  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
43 IF(P5+P6.LT.20D) GOTO 44  *BYPASS REL ON SHORT DELAY 
   B5 = 11
   REL, ABT 74
44 B5 = P6                   *DELAY PARAM TO B5 
   IF(P5.EQ.0) GOTO 45       *USE FIXED DELAY FROM P6 
   B5 = RT.AND.P5            *USE RT CLOCK AND MASK 
45 DELAY B5 MSEC
   B5 = 6 
   RES P1, ABT 74            *RESERVE 
* 
*---------WRITE .WC. SPECIFIED BY *P2*
* 
   B5 = 5 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 46  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
46 IF(SB(1).AND.EOT.NE.0) GOTO 54     *EOT DETECTED 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 50    *NO ERROR DETECTED
   ERROR 2/200 , GOSUB 70 
   B5 = 6 
   RES P1, ABT 74 
50 IF(P9.EQ.0)GOTO 30         *WRITE TO EOT IF P9 ZERO
   IF(B1.NE.P9)GOTO 30        *P9 RECORDS NOT DONE
   B1 = 0                     *ZERO RECORD COUNT
   B0 = B0 + 1                *INCREMENT FILE COUNT 
   B5 = 6 
   RES P1, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 51  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
* 
*---------WRITE .EOF. 
* 
51 B5 = 4 
   ENDFILE , ABT 74 
   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
   B5 = 11
   REL, ABT 74
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 26                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 26  *IF REPEAT MODULE/CONDITION 
   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)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 26                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 26         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X43 -
   MODULE T7X44,67X(44,54,55,53)LOCK   - MAINTENANCE READ - 
*** T7X44 - MAINTENANCE READ
* 
**  T7X44 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE READS THE TAPE CREATED BY MODULE
*         T7X43, MAINTENANCE WRITE.  ERRORS CAN BE EXPECTED 
*         IF THIS MODULE IS EXECUTED OUT OF SEQUENCE. 
* 
*         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. 
* 
* 
*   DESCRIPTION - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. RELEASE, DELAY AND RESERVE.
*         5. READ FORWARD.
*         6. WAIT PARKED IF SELECTED. 
*         7. RELEASE IF DATA COMPARE SELECTED.
*         8. GO TO STEP 17 IF *EOT*.
*         9. REPORT EC 207 IF *EOF* DETECTED WHEN NOT EXPECTED
*            AND REQUESTED TO DO SO BY THE USER.
*        10. REPORT EC 203 IF *ALERT* STATUS. 
*        11. GO TO STEP 15 IF DATA COMPARE IS NOT SELECTED. 
*        12. GENERATE EXPECTED DATA PATTERN IN OB.
*        13. ADD ADDRESS CODING IF SELECTED.
*        14. COMPARE IB TO OB.  REPORT EC 105 IF ERROR DETECTED.
*        15. REPEAT STEPS 4-14 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X44 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*         3. T7X44 - ABORT ON .REWIND. COMMAND -
*         4. T7X44 - ABORT ON .READ FWD. COMMAND -
*         5. T7X44 - ABORT ON .RES. COMMAND - 
*         6. T7X44 - ABORT ON .REL. COMMAND - 
*         7. T7X44 - ABORT ON .WAITNB. COMMAND -
* 
*         8. -EC 105- DATA COMPARE ERROR.  THE FIRST 400B WORDS (OR THE 
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED
*            DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE 
*            REPORTED.
* 
*         9. -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. 
* 
*        10. -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.
*** T7X44 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = PATTERN FOR STORING
*         B3 = FM/TM FLAG 
*         B4 = TRACK SIZE (6 OR 8)
*         B5 = NO OF DATA WORDS TO COMPARE/STORE
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*            = MARGINS
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
/         TAPE MUST BE *T7X43* GENERATED FOR DATA COMPARE 
* 
 1 FORMAT T7X44 - MAINTENANCE READ -
 2 FORMAT T7X44 - ERROR CODE = *OCT AT LINE (EA) = *OCT 
 4 FORMAT T7X44 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T7X44 - ABORT ON .READ FWD. COMMAND - 
 6 FORMAT T7X44 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X44 - ABORT ON .REL. COMMAND -
10 FORMAT T7X44 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X44 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X44 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE.
   BA = 0                    *INITIALIZE ABORT COUNTER
   WC = P2                   *SET WORD COUNT REGISTER 
   B5 = P3.RS.6              *MARGIN BITS IN P3 
   MARGINS B5                *SELECT MARGINS
21 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0 
   B1=0 
26 B1 = B1 +1                *INCREMENT RECORD COUNT
   IF(B1.EQ.7777) GOTO 26    *BUMP RECORD COUNT 
   IF(P5+P6.LT.20D) GOTO 27  *BYPASS REL ON SHORT DELAY 
   B5 = 7 
   REL, ABT 74
27 B5 = P6
   IF(P5.EQ.0)GOTO 30        *USE FIXED DELAY FROM P6 
   B5 = RT.AND.P5            *REAL TIME CLOCK AND MASK
30 DELAY B5 MSEC             *DELAY 
   B5 = 6 
   RES P1, ABT 74            *RESERVE 
* 
*---------READ
* 
32 B5 = 5 
   B7 = 5                     *READ FORWARD CODE
   READ FWD , ABT 74          *READ FORWARD 
   IF(P3.AND.20.NE.0)GOTO 33  *BYPASS WAIT *PARKED* 
   B5 = 10
   WAITNB, ABT 74 
33 IF(P3.AND.2.EQ.0) GOTO 34  *SKIP REL IF NO DATA COMPARE
   B5 = 7 
   REL, ABT 74                *RELEASE
34 IF(SB(1).AND.EOT.NE.0)GOTO 54      *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 40   *NO FILEMARK DETECTED 
   IF(B3.EQ.1) GOTO 52                *EOF EXPECTED 
   IF(P4.AND.4000.EQ.0)GOTO 52        *DO NOT REPORT FM ERR 
   ERROR 2/207, GOSUB 70   *FM/TM ERROR 
   GOTO 52
40 IF(SB(1).AND.ALERT.EQ.0) GOTO 41    *NO ALERT
   ERROR 2/203, GOSUB 70               *ALERT 
* 
*---------COMPARE 
* 
41 IF(P3.AND.2.EQ.0)GOTO 52        *DO NOT COMPARE DATA 
   IF(P4.AND.3000.NE.2000)GOTO 42  *RANDOM PTRN NOT SELECTED
   RANDOM TO OB FOR 500 , START IB
   GOTO 45
42 B4 = 10
   B5 = 500 
   B2 = P4
   IF(DC.AND.10.NE.0) GOTO 43          *IF 9 TRACK TAPE 
   B4 = 6 
43 IF(P4.AND.3000.EQ.1000)B2=P4.XOR.7777
   DUP B4 BITS OF P4/B2 TO OB FOR B5
45 IF(P3.AND.1.NE.0)GOTO 46         *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
46 B5 = 400 
   IF(WT.GT.400) GOTO 47            *IF WT LARGER THAN BFR
   B5 = WT - 1
47 COMPARE IB TO OB FOR B5 , ABT 50 
   GOTO 52
50 ERROR 2/105 , GOSUB 70    *DATA COMPARE ERROR
52 IF(B3.EQ.0)GOTO 53        *NOT AN FM/TM READ 
   B3 = 0 
   B1 = B1 - 1               *DECREMENT RECORD COUNT
53 IF(P9.EQ.0)GOTO 26        *IF P9 ZERO GO TO EOT
   IF(B1.LT.P9)GOTO 26       *MORE RECORDS TO BE READ 
   B1 = 0                    *ZERO RECORD COUNT 
   B3 = 1                    *FM/TM FLAG
   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
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   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)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X44  - 
   MODULE T7X45,67X(44,54,55,53)LOCK   - READ FWD/REV(FWD ) - 
*** T7X45 - READ FORWARD/REVERSE
* 
**  T7X45 - EXTERNAL DOCUMENTAION 
* 
*   OVERVIEW -
* 
*         THIS MODULE READS THE TAPE CREATED BY MODULE
*         T7X43, MAINTENANCE WRITE.  ERRORS CAN BE EXPECTED 
*         IF THIS MODULE IS EXECUTED OUT OF SEQUENCE. 
* 
*         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 AND FILE MAX OR EOT IS 
*         REACHED.
* 
*         AT THIS POINT A REVERSE READ IS INITIATED WHICH 
*         IS PROVIDED BY AN EXIT TO *T7X45A* AND READING
*         CONTINUES UNTIL LOADPOINT IS REACHED. 
* 
*         T7X45 (READ FORWARD) SUPPORTS REPEAT CONDITION BY 
*         REWINDING THE TAPE AND CONTINUING THE READ FORWARD. 
*         T7X45A (READ REVERSE) DOES NOT SUPPORT REPEAT CONDITION 
*         DUE TO THE INABILITY TO CORRECTLY POSITION TAPE.
* 
*   DESCRIPTION - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. RELEASE, DELAY AND RESERVE.
*         5. READ FORWARD.
*         6. WAIT PARKED IF SELECTED. 
*         7. RELEASE IF DATA COMPARE SELECTED.
*         8. GO TO STEP 17 IF *EOT*.
*         9. REPORT EC 207 IF *EOF* DETECTED WHEN NOT EXPECTED
*            AND REQUESTED TO DO SO BY THE USER.
*        10. REPORT EC 203 IF *ALERT* STATUS. 
*        11. GO TO STEP 15 IF DATA COMPARE IS NOT SELECTED. 
*        12. GENERATE EXPECTED DATA PATTERN IN OB.
*        13. ADD ADDRESS CODING IF SELECTED.
*        14. COMPARE IB TO OB.  REPORT EC 105 IF ERROR DETECTED.
*        15. REPEAT STEPS 4-14 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. EXIT TO MODULE T7X45A TO PERFORM REVERSE READ. 
* 
*        18. RELEASE, DELAY AND RESERVE.
*        19. READ REVERSE.
*        20. WAIT PARKED IF SELECTED. 
*        21. GO TO STEP 26 IF LOADPOINT STATUS. 
*        22. REPORT EC 207 IF *EOF* DETECTED WHEN NOT EXPECTED
*            AND REQUESTED TO DO SO BY THE USER.
*        23. REPORT EC 202 IF *ALERT* STATUS. 
*        24. REPEAT STEPS 18-23 FOR *RECORD MAX* RECORDS. 
*        25. REPEAT STEPS 18-24 FOR *FILE MAX* FILES. 
*        26. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X45 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*         3. T7X45 - ABORT ON .REWIND. COMMAND -
*         4. T7X45 - ABORT ON .READ FWD. COMMAND -
*         5. T7X45 - ABORT ON .RES. COMMAND - 
*         6. T7X45 - ABORT ON .REL. COMMAND - 
*         7. T7X45 - ABORT ON .WAITNB. COMMAND -
* 
*         8. T7X45A- ERROR CODE = *OCT AT LINE (EA) = *OCT
*         9. T7X45A- ABORT ON .REWIND. COMMAND -
*        10. T7X45A- ABORT ON .READ REV. COMMAND -
*        11. T7X45A- ABORT ON .RES. COMMAND - 
*        12. T7X45A- ABORT ON .REL. COMMAND - 
*        13. T7X45A- ABORT ON .WAITNB. COMMAND -
* 
*        14. -EC 105- DATA COMPARE ERROR.  THE FIRST 400B WORDS (OR THE 
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED
*            DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE 
*            REPORTED.
* 
*        15. -EC 202- A STATUS ERROR OCCURRED ON A READ REVERSE.
* 
*        16. -EC 203- THE ALERT BIT IN GENERAL STATUS WAS SET DURING A
*            READ FORWARD OPERATION.
* 
*        17. -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.
* 
* 
*** T7X45 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = PATTERN FOR STORING
*         B3 = FM/TM FLAG 
*         B4 = TRACK SIZE (6 OR 8)
*         B5 = NO OF DATA WORDS TO COMPARE/STORE
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR RES/RES
*            = MARGINS
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = RESERVE PARAMETER P1 AND ERROR CORRECTION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
/         TAPE MUST BE *T7X43* GENERATED FOR DATA COMPARE 
* 
 1 FORMAT T7X45 - READ FORWARD -
 2 FORMAT T7X45 - ERROR CODE = *OCT AT LINE (EA) = *OCT 
 4 FORMAT T7X45 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T7X45 - ABORT ON .READ FWD. COMMAND - 
 6 FORMAT T7X45 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X45 - ABORT ON .REL. COMMAND -
10 FORMAT T7X45 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X45 - ERRS=*DEC LOOPS=*DEC
* 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE.
   BA = 0                    *INITIALIZE ABORT COUNTER
   WC = P2                   *SET WORD COUNT REGISTER 
   B5 = P3.RS.6              *MARGIN BITS IN P3 
   MARGINS B5                *SELECT MARGINS
21 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0 
   B1=0 
26 B1 = B1 +1                *INCREMENT RECORD COUNT
   IF(B1.EQ.7777) GOTO 26    *BUMP RECORD COUNT 
   IF(P5+P6.LT.20D) GOTO 27  *BYPASS REL ON SHORT DELAY 
   B5 = 7 
   REL, ABT 74
27 B5 = P6
   IF(P5.EQ.0)GOTO 30        *USE FIXED DELAY FROM P6 
   B5 = RT.AND.P5            *REAL TIME CLOCK AND MASK
30 DELAY B5 MSEC             *DELAY 
   B5 = 6 
   RES P1, ABT 74            *RESERVE 
* 
*---------READ
* 
32 B5 = 5 
   B7 = 5                     *READ FORWARD CODE
   READ FWD , ABT 74          *READ FORWARD 
   IF(P3.AND.20.NE.0)GOTO 33  *BYPASS WAIT *PARKED* 
   B5 = 10
   WAITNB, ABT 74 
33 IF(P3.AND.2.EQ.0) GOTO 34  *BYPASS REL IF NO COMPARE 
   B5 = 7 
   REL, ABT 74                *RELEASE
34 IF(SB(1).AND.EOT.NE.0)GOTO 54      *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 40   *NO FILEMARK DETECTED 
   IF(B3.EQ.1) GOTO 52                *EOF EXPECTED 
   IF(P4.AND.4000.EQ.0)GOTO 52        *DO NOT REPORT FM ERR 
   ERROR 2/207, GOSUB 70              *FM/TM ERROR
   GOTO 52
40 IF(SB(1).AND.ALERT.EQ.0) GOTO 41   *NO ALERT 
   ERROR 2/203, GOSUB 70              *ALERT
* 
*---------COMPARE 
* 
41 IF(P3.AND.2.EQ.0)GOTO 52         *DO NOT COMPARE DATA
   IF(P4.AND.3000.NE.2000)GOTO 42   *RANDOM PTRN NOT SELECTED 
   RANDOM TO OB FOR 500 , START IB
   GOTO 45
42 B4 = 10
   B5 = 500 
   B2 = P4
   IF(DC.AND.10.NE.0) GOTO 43       *IF 9 TRACK TAPE
   B4 = 6 
43 IF(P4.AND.3000.EQ.1000)B2=P4.XOR.7777
   DUP B4 BITS OF P4/B2 TO OB FOR B5
45 IF(P3.AND.1.NE.0) GOTO 46        *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
46 B5 = 400 
   IF(WT.GT.400) GOTO 47     *IF WT LARGER THAN BUFFER
   B5 = WT - 1
47 COMPARE IB TO OB FOR B5 , ABT 50 
   GOTO 52
50 ERROR 2/105 , GOSUB 70    *DATA COMPARE ERROR
52 IF(B3.EQ.0)GOTO 53        *NOT AN FM/TM READ 
   B3 = 0 
   B1 = B1 - 1               *DECREMENT RECORD COUNT
53 IF(P9.EQ.0)GOTO 26        *IF P9 ZERO GO TO EOT
   IF(B1.LT.P9)GOTO 26       *MORE RECORDS TO BE READ 
   B1 = 0                    *ZERO RECORD COUNT 
   B3 = 1                    *FM/TM FLAG
   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
54 B6 = B6 + 1
   IF(ES.AND.SL.EQ.0) GOTO 55  *NOT SCOPING 
   MSG 14(BA,B6) TO DISPLAY 
   GOTO 21
55 IF(ES.AND.CM.NE.0) GOTO 21  *IF REPEAT COND. OR MODULE 
   EXIT TO 45A               *ENTER REVERSE READ MODULE 
* 
*---------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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X45  - 
   MODULE T7X45A,67X(44,54,55,53)LOCK  - READ FWD/REV(REV ) - 
 1 FORMAT T7X45A - READ REVERSE - 
 2 FORMAT T7X45A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 4 FORMAT T7X45A - ABORT ON .READ REV. COMMAND -
 5 FORMAT T7X45A - ABORT ON .RES. COMMAND - 
 6 FORMAT T7X45A - ABORT ON .REL. COMMAND - 
 7 FORMAT T7X45A - ABORT ON .REWIND. COMMAND -
10 FORMAT T7X45A - ABORT ON .WAITNB. COMMAND -
14 FORMAT T7X45A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT T7X45 ERROR(S) IN MODULE = *DEC 
   EQUATE ALERT TO 4000, LOADPT TO 4, FILEMK TO 20
* 
20 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   IF(P8.EQ.0) GOTO 22       *RECORD COUNT TO EOT 
   IF(P9.EQ.0) GOTO 22       *RECORD COUNT TO EOT 
   B1 = P9                   *RECORD COUNT MAX
   B0 = B0 - 1               *FILE COUNT
22 IF(P5+P6.LT.20D) GOTO 23  *BYPASS REL ON SHORT DELAY 
   B5 = 6 
   REL, ABT 74               *RELEASE 
23 B5 = P6                   *DELAY PARAM TO B5 
   IF(P5.EQ.0) GOTO 24       *USE FIXED DELAY FROM P6 
   B5 = RT.AND.P5            *USE RT CLOCK AND MASK 
24 DELAY B5 MSEC
   B5 = 5 
   IF(P1.AND.4000.EQ.4000) B8 = P1   *SET ERROR CORRECTION DISABLED 
   IF(P1.AND.4000.EQ.0) B8 = P1.AND.1777   *SET ERROR CORRECTION ENABLED
   RES B8, ABT 74            *RESERVE 
* 
*---------READ REVERSE
* 
   B5 = 4 
   B7 = 6                     *READ REVERSE CODE
   READ REV , ABT 74
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = 10
   WAITNB, ABT 74 
40 IF(SB(1).AND.LOADPT.NE.0)GOTO 55   *LOAD POINT DETECTED
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 44   *NO FILE MARK DETECTED
   IF(B3.EQ.1)GOTO 50              *DO NOT EXPECT FM/TM 
   IF(P4.AND.4000.EQ.0)GOTO 50     *DO NOT REPORT FM/TM ERRS
   ERROR 2/207,GOSUB 70            *EOF NOT EXPECTED
   GOTO 50
44 IF(SB(1).AND.ALERT.EQ.0) GOTO 45   *NO ALERT DETECTED
   ERROR 2/202 , GOSUB 70 
45 B1 = B1 - 1                       *DECREMENT RECORD COUNT
50 IF(B3.EQ.0)GOTO 51                *NOT A FM/TM READ
   B3 = 0 
51 B6 = B6 + 1                       *LOOP COUNT
   IF(B1.NE.0) GOTO 22               *MORE RECORDS IN FILE
   B3 = 1                            *FM/TM FLAG
   B1 = P9
   IF(P9.EQ.0) GOTO 22        *GO TO EOT
   GOTO 22 WHILE (B0-1.GE.0)  *DECREMENT FILE COUNT 
55 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)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 22                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 22         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X45A - 
   MODULE T7X46,67X(44,54,55,53)LOCK   - CANNED POLYNOMIAL TEST - 
*** T7X46 - CANNED POLYNOMIAL TEST
* 
**  T7X46 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE DENSITY AND
*         PATTERN SELECTED BY THE *PARAM* DIRECTIVE.
* 
*         100B RECORDS ARE WRITTEN FOR EACH OF 10B PATTERNS 
*         USING KNOWN RANDOM DATA STARTERS. 
*         THE TAPE IS THEN READ AND THE POLYNOMIALS READ ARE
*         COMPARED WITH EXPECTED RESULTS. 
* 
*         SINCE CANNED POLYNOMIALS ARE USED, CODE TRANSLATION AND PARITY
*         SELECTIONS MADE BY THE USER IN PARAMETER REGISTER P1 (PCXX) 
*         ARE IGNORED.
* 
* 
*   DESCRIPTION - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. STORE RANDOM PATTERN USING A KNOWN STARTER.
*         5. RELEASE, DELAY AND RESERVE.
*         6. WRITE. 
*         7. WAIT PARKED IF SELECTED. 
*         8. REPORT EC 200 IF STATUS ERROR. 
*         9. REPEAT STEPS 5-8 FOR 64 RECORDS (SAME PATTERN).
*        10. CHANGE TO A NEW STARTER AND REPEAT STEPS 4-9 
*            UNTIL 8 PATTERNS HAVE BEEN USED. 
*        11. ENDFILE. 
*        12. RELEASE, DELAY AND RESERVE.
*        13. REWIND.
*        14. RELEASE, DELAY AND RESERVE.
*        15. READ FORWARD.
*        16. WAIT PARKED IF SELECTED. 
*        17. REPORT EC 203 IF STATUS ERROR. 
*        18. REPORT EC 215 IF READ AND WRITE POLYNOMIALS DO NOT AGREE.
*        19. REPEAT STEPS 14-18 FOR 64 RECORDS. (SAME PATTERN). 
*        20. CHANGE TO A NEW EXPECTED POLYNOMIAL AND REPEAT STEPS 
*            14-19 UNTIL 8 PATTERNS HAVE BEEN USED. 
*        21. REPEAT MODULE IF SELECTED. 
*        22. RELEASE. 
*        23. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X46 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X46 - ABORT ON .WAITNB. COMMAND -
*         4. T7X46 - ABORT ON .WRITE. COMMAND - 
*         5. T7X46 - ABORT ON .RES. COMMAND - 
*         6. T7X46 - ABORT ON .REWIND. COMMAND -
*         7. T7X46 - ABORT ON .REL. COMMAND - 
*         8. T7X46 - ABORT ON .READ FWD. COMMAND -
*         9. T7X46 - ABORT ON .ENDFILE. COMMAND - 
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A -WRITE- OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 203- A STATUS ERROR OCCURRED ON A FORWARD READ.
*            THE INPUT BUFFER CONTAINS THE DATA READ. 
* 
*        12. -EC 215- POLYNOMIAL READ DOES NOT AGREE WITH 
*            EXPECTED CANNED RESULT.  B3=EXPECTED,
*            SB(2)=ACTUAL, B4=RANDOM DATA STARTER.
* 
* 
*** T7X46 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B0 = CURRENT FILE (PATTERN) COUNT 
*            = MARGINS
*         B1 = CURRENT RECORD COUNT 
*         B2 = INDEX FOR EXPECTED POLYNOMIAL
*         B3 = EXPECTED POLYNOMIAL
*            = RESERVE OPTIONS
*         B4 = RANDOM NUMBER STARTER
*         B5 = DELAY FOR REL/RES
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X46 - CANNED POLYNOMIAL TEST -
 2 FORMAT T7X46 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X46 - ABORT ON .WAITNB. COMMAND - 
 5 FORMAT T7X46 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X46 - ABORT ON .RES. COMMAND -
10 FORMAT T7X46 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X46 - ABORT ON .REL. COMMAND -
12 FORMAT T7X46 - ABORT ON .READ FWD. COMMAND - 
13 FORMAT T7X46 - ABORT ON .ENDFILE. COMMAND -
14 FORMAT T7X46 - ERRS=*DEC  LOOPS=*DEC 
15 FORMAT T7X46 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, ERROR TO 5034 
   DATA (OB(420),CON)1767,4321,0652,5515,3045,0235,7404,1173
   DATA (OB(430),CON)7750,7510,420,4540,5210,2150,2250,5660 
   DATA (OB(440),CON) 60,5610,410,7130,6770,3040,3060,1020
* 
* 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE.
25 B0 = P3 RS 6              *MARGIN BITS 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
26 B5 = 6 
   B7 = 0                    *NO MOTION CODE
* 
*--------REWIND TAPE
* 
   RES P1, ABT 74            *RESERVE 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
* 
*--------WRITE TAPE 
* 
   B0 = 0                    *CLEAR FILE COUNT
30 B1 = 1                    *SET RECORD COUNT
   WC = B0 + 400
   RANDOM TO OB FOR WC, START OB(B0+420)
31 GOSUB 60                  *REL-DELAY-RES 
   B5 = 5 
   B7 = 1                    *FORWARD WRITE MOTION CODE 
   WRITE, ABT 74
   IF(P3.AND.20.NE.0) GOTO 32          *IF BYPASS *PARKED*
   B5 = 4 
   WAITNB, ABT 74 
32 IF(SB(1).AND.ERROR.EQ.0) GOTO 33 
   ERROR 2/200, GOSUB 70
   GOTO 26                       *RESTART ON ERROR
33 GOTO 31 WHILE (B1+1.NE.100)   *WRITE 100 RECORDS 
   GOTO 30 WHILE (B0+1.NE.10)    *DO 10B PATTERNS 
* 
*---------WRITE AN ENDFILE TO TERMINATE DATA
* 
   B5 = 13
   ENDFILE, ABT 74
   IF(SB(1).AND.ERROR.NE.FILEMK) ERROR 1/122, GOSUB 70
* 
*---------REWIND TAPE 
* 
   GOSUB 60                  *REL-DELAY-RES 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
* 
*---------READ TAPE FORWARD 
* 
   B0 = 0                       *CLEAR FILE COUNT 
   B2 = 430                     *INDEX TO 7TK POLYNOMIALS 
   IF(P1.AND.10.EQ.0) GOTO 40   *6 BIT MODE 
   IF(DC.EQ.44) GOTO 40         *7TK UNIT 
   B2 = 440                     *INDEX TO 9TK POLYNOMIALS 
40 B1 = 1                       *SET RECORD COUNT 
   WC = B0 + 400
41 GOSUB 60                     *REL-DELAY-RES
   B5 = 12
   B7 = 5                       *READ FWD MOTION CODE 
   READ FWD, ABT 74 
   IF(P3.AND.20.NE.0) GOTO 42   *IF BYPASS *PARKED* 
   B5 = 4 
   WAITNB, ABT 74 
42 IF(SB(1).AND.ERROR.EQ.0) GOTO 43 
   ERROR 2/203, GOSUB 70
   GOTO 44                      *SKIP POLYNOMIAL COMPARE
43 IF(SB(2).EQ.OB(B2)) GOTO 44  *POLYNOMIALS AGREE
   B3 = OB(B2)                  *EXPECTED POLYNOMIAL
   B4 = OB(WC+20)               *RANDOM NUMBER STARTER
   ERROR 2/215, GOSUB 70
44 GOTO 41 WHILE (B1+1.NE.100)  *READ 100 RECORDS 
   B2 = B2 + 1                  *BUMP BUFFER SUBSCRIPT
   GOTO 40 WHILE (B0+1.NE.10)   *DO 10B PATTERNS
   B5 = 11
   REL, ABT 74
   B6 = B6 + 1                  *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 26                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 26  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57           *NO ERRORS
56 MSG 15 (BA) TO DAYFILE       *REPORT ERRORS
57 EXIT                         *NORMAL TERMINATION 
* 
*---------RELEASE-DELAY-RESERVE SUBROUTINE
* 
60 IF(P5+P6.LT.20D) GOTO 61   *BYPASS REL ON SHORT DELAY
   B5 = 11
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 6 
   B3 = P1.AND.2077           *SET ODD PARITY, NO XLATE 
   RES B3, 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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 26                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 26         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T7X46 - 
   MODULE T7X47,67X(44,54,55,53)LOCK   - CAPSTAN GO DOWN
*** T7X47 - CAPSTAN GO DOWN-TIME TEST -                                  T7X008J
*                                                                        T7X008J
**  T7X47 - EXTERNAL DOCUMENTATION                                       T7X008J
*                                                                        T7X008J
*   OVERVIEW -                                                           T7X008J
*                                                                        T7X008J
*         T7X47 VERIFIES THAT THERE ARE NO DEAD SPOTS IN THE CAPSTAN     T7X008J
*         SERVO SYSTEM AT REPETITION PERIODS OF APPROX. 250 MICRO-       T7X008J
*         SECONDS TO 1.25 MSEC IN STEPS OF 10 MICROSECONDS.  10 RECORDS  T7X008J
*         ARE WRITTEN AT EACH TIME INTERVAL FOR A TOTAL OF 1000          T7X008J
*         RECORDS.                                                       T7X008J
*                                                                        T7X008J
*   DESCRIPTION -                                                        T7X008J
*                                                                        T7X008J
*         1. FILL OB WITH THE SELECTED DATA PATTERN AND SET WC TO THE    T7X008J
*            SELECTED RECORD LENGTH.                                     T7X008J
*         2. RESERVE AND REWIND.                                         T7X008J
*         3. CLEAR FILE, RECORD AND DELAY COUNTERS.                      T7X008J
*         4. RESERVE.                                                    T7X008J
*         5. WRITE ONE RECORD.                                           T7X008J
*         6. DELAY CURRENT DELAY TIME (0 TO 1000 MICROSECONDS).          T7X008J
*         7. GO TO STEP 10 IF EOT.  REPORT EC 200 IF STATUS ERROR.       T7X008J
*         8. REPEAT STEPS 5-7 FOR A TOTAL OF 10 TIMES.                   T7X008J
*         9. INCREMENT THE DELAY TIME BY 10 MICROSECONDS.  REPEAT STEPS  T7X008J
*            4-8 IF THE DELAY TIME IS LESS THAN 1 MSEC.                  T7X008J
*        10. GO TO STEP 2 IF REPEAT MODULE OR CONDITION.                 T7X008J
*        11. EXIT.                                                       T7X008J
*                                                                        T7X008J
*   ERRORS REPORTED -                                                    T7X008J
*                                                                        T7X008J
*         1. ALL PRODUCT OVERLAY ERRORS.                                 T7X008J
*                                                                        T7X008J
*         2. T7X47 - ABORT ON .RES. COMMAND -                            T7X008J
*         3. T7X47 - ABORT ON .REWIND. COMMAND -                         T7X008J
*         4. T7X47 - ABORT ON .WRITE. COMMAND -                          T7X008J
*                                                                        T7X008J
*         5. -EC 200 - AN UNEXPECTED STATUS BIT APPEARED IN GENERAL      T7X008J
*            STATUS DURING A -MAINTENANCE WRITE- OPERATION.              T7X008J
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL            T7X008J
*            PRODUCT 5034B.                                              T7X008J
*                                                                        T7X008J
*** T7X47 - INTERNAL DOCUMENTATION                                       T7X008J
*                                                                        T7X008J
*   REGISTER USAGE -                                                     T7X008J
*                                                                        T7X008J
*         B0 = FILE COUNTER (ALWAYS ZERO)                                T7X008J
*            = TRACK SIZE (6 OR 8)                                       T7X008J
*            = RANDOM SEED                                               T7X008J
*         B1 = RECORD COUNTER                                            T7X008J
*         B2 = DELAY COUNTER                                             T7X008J
*         B3 = PATTERN FOR STORING                                       T7X008J
*         B5 = MSG NUMBER FOR ABORT PROCESSING                           T7X008J
*         B6 = LOOP COUNTER FOR SCOPING MESSAGE                          T7X008J
*         B7 = ACTION CODE FOR ERROR ISOLATION                           T7X008J
*         BA = ERROR COUNTER                                             T7X008J
*                                                                        T7X008J
*   MODULES CALLED -                                                     T7X008J
*                                                                        T7X008J
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR                                  T7X008J
*                                                                        T7X008J
 1 FORMAT T7X47 - CAPSTAN GO DOWN -                                      T7X008J
 2 FORMAT T7X47 - ERROR CODE = *OCT  AT LINE (EA) = *OCT                 T7X008J
 5 FORMAT T7X47 - ABORT ON .WRITE. COMMAND -                             T7X008J
 6 FORMAT T7X47 - ABORT ON .RES. COMMAND -                               T7X008J
10 FORMAT T7X47 - ABORT ON .REWIND. COMMAND -                            T7X008J
14 FORMAT T7X47 - ERRS=*DEC LOOPS=*DEC                                   T7X008J
15 FORMAT T7X47 ERROR(S) IN MODULE = *DEC                                T7X008J
   EQUATE EOT TO 10, ERROR TO 5034                                       T7X008J
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE                            T7X008J
   IF(P4.AND.3000.EQ.2000) GOTO 23  *IF RANDOM PATTERN                   T7X008J
   B0 = 10                                                               T7X008J
   B3 = P4                                                               T7X008J
   IF(DC.AND.10.NE.0)GOTO 21   *IF 9 TRACK TAPE                          T7X008J
   B0 = 6                      *TRACK SIZE (6 OR 8)                      T7X008J
21 IF(P4.AND.3000.EQ.1000)B3=P4.XOR.7777  *IF ALT PAT                    T7X011G
   DUP B0 BITS OF P4/B3 TO OB FOR 500                                    T7X011G
   GOTO 25                                                               T7X008J
23 B0 = P7                     *RANDOM SEED                              T7X008J
   IF(P3.AND.4.NE.0)GOTO 24    *USE RANDOM SEED                          T7X008J
   B0 = RT                     *USE RT CLOCK FOR SEED                    T7X008J
24 RANDOM TO OB FOR 500, START B0                                        T7X008J
25 WC = P2                     *RECORD LENGTH TO WC REGISTER             T7X008J
*                                                                        T7X008J
*-------- REWIND UNIT                                                    T7X008J
*                                                                        T7X008J
30 B5 = 6                                                                T7X008J
   RES P1, ABT 74              *RESERVE                                  T7X008J
   B5 = 10                                                               T7X008J
   B7 = 3                      *REWIND MOTION CODE                       T7X008J
   REWIND, ABT 74              *REWIND                                   T7X008J
   B0 = 0                      *CLEAR FILE COUNTER                       T7X008J
   B1 = 0                      *CLEAR RECORD COUNTER                     T7X008J
   B2 = 0                      *CLEAR DELAY COUNTER                      T7X008J
*                                                                        T7X008J
*-------- WRITE TAPE                                                     T7X008J
*                                                                        T7X008J
40 B5 = 6                                                                T7X008J
   RES P1, ABT 74                                                        T7X008J
   B5 = 5                                                                T7X008J
   B7 = 1                      *FORWARD WRITE MOTION CODE                T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   B1 = B1+1                   *BUMP RECORD COUNT                        T7X008J
   WRITE, ABT 74                                                         T7X008J
   DELAY B2 USEC                                                         T7X008J
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED                  T7X008J
   GOTO 40 WHILE (B2+10D.LT.1000D)   *WRITE 1000D TIMES                  T7X008J
54 B6 = B6 + 1                 *BUMP LOOP COUNT                          T7X008J
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING                           T7X008J
   MSG 14 (BA,B6) TO DISPLAY   *POST SCOPING MSG                         T7X008J
   GOTO 30                     *RESTART                                  T7X008J
55 IF(ES.AND.CM.NE.0) GOTO 30  *IF REPEAT MODULE/CONDITION               T7X008J
   IF(BA.EQ.0) GOTO 57         *IF NO ERRORS                             T7X008J
56 MSG 15 (BA) TO DAYFILE      *REPORT ERRORS                            T7X008J
57 EXIT                                                                  T7X008J
*                                                                        T7X008J
*-------- STATUS ERROR SUBROUTINE                                        T7X008J
*                                                                        T7X008J
60 IF(SB(1).AND.EOT.NE.0) GOTO 54  *IF EOT DETECTED                      T7X008J
   ERROR 2/200, GOSUB 70                                                 T7X008J
   GOTO 40                                                               T7X008J
*                                                                        T7X008J
*-------- PROCESS MODULE DETECTED ERROR(S)                               T7X008J
*                                                                        T7X008J
70 BA = BA + 1                 *BUMP ERROR COUNT                         T7X008J
   IF(ES.AND.SL.EQ.0) GOTO 71  *IF NOT SCOPING                           T7X008J
   MSG 14 (BA,B6) TO DISPLAY   *ERROR MESSAGE                            T7X008J
   RETURN                                                                T7X008J
71 MSG EM(EC,EA) TO LINE 1     *ERROR CODE MESSAGE                       T7X008J
72 CALL 98A                    *ERROR CODE PROCESSOR                     T7X008J
   MSG 1 TO DISPLAY            *REPLACE RUN MESSAGE                      T7X008J
   RETURN                                                                T7X008J
*                                                                        T7X008J
*-------- PROCESS PRODUCT OVERLAY ABORT                                  T7X008J
*                                                                        T7X008J
74 BA = BA + 1                 *BUMP ERROR COUNT                         T7X008J
   IF(ES.AND.SL.EQ.0) GOTO 75  *IF NOT SCOPING                           T7X008J
   MSG 14 (BA,B6) TO DISPLAY   *ERROR MESSAGE                            T7X008J
   GOTO 30                     *RESTART                                  T7X008J
75 MSG B5 TO LINE 0            *ERROR CONDITION                          T7X008J
   MSG EM TO LINE 1            *PRODUCT OVERLAY ERROR MSG                T7X008J
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY            *REPLACE RUN MESSAGE 
   IF(BA.LT.2) GOTO 30         *NOT SECOND TRY                           T7X008J
   GOTO 55                     *ABNORMAL TERMINATION                     T7X008J
   END 20                                                                T7X008J
COMPILE   - T7X47 -                                                      T7X008J
   MODULE T7X50,67X(44,54,55,53)LOCK   - BACKSPACE -
*** T7X50 - BACKSPACE 
* 
**  T7X50 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X50A IS EXECUTED. 
* 
*         T7X50 WRITES 3 RECORDS AT THE LENGTH SPECIFIED
*         IN *P2* TIMES 8.
*         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 - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. SET *FILE MAX* TO 64 IF MAINTENANCE MODE.
*         5. RELEASE, DELAY AND RESERVE.
*         6. WAITNB.
*         7. SET RECORD PATTERN TO 1111.
*         8. FILL OB WITH RECORD PATTERN. 
*         9. ADD ADDRESS CODING TO DATA IF SELECTED.
*        10. RELEASE, DELAY AND RESERVE.
*        11. WRITE LONG.
*        12. WAIT PARKED IF SELECTED. 
*        13. IF *EOT*, GOTO STEP 28.
*        14. REPORT EC 200 IF STATUS ERROR. 
*        15. BUMP RECORD PATTERN BY 1111. 
*        16. REPEAT STEPS 8-15 UNTIL PATTERNS IS 4444. (3333 IS 
*            LAST PATTERN WRITTEN.
*        17. WAIT PARKED. 
*        18. RELEASE, DELAY AND RESERVE.
*        19. BKSP.
*        20. WAIT PARKED IF REQUESTED.
*        21. REPORT EC 253 IF STATUS ERROR. 
*        22. RELEASE, DELAY AND RESERVE.
*        23. READ REVERSE.
*        24. REPORT EC 254 IF STATUS ERROR. 
*        25. REPORT EC 255 IF WT ERROR. 
*        26. REPORT EC 256 IF RECORD COUNT ERROR (FIRST WORD OF 
*            IB NOT EQUAL TO RECORD NUMBER).
*        27. REPEAT STEPS 5-26 FOR *FILE MAX* TIMES.
*        28. GO TO STEP 2 IF REPEAT MODULE. 
*        29. RELEASE. 
*        30. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X50 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X50 - ABORT ON .BKSP. COMMAND -
*         4. T7X50 - ABORT ON .READ REV. COMMAND -
*         5. T7X50 - ABORT ON .WRITE. COMMAND - 
*         6. T7X50 - ABORT ON .RES. COMMAND - 
*         7. T7X50 - ABORT ON .REL. COMMAND - 
*         8. T7X50 - ABORT ON .REWIND. COMMAND -
*         9. T7X50 - ABORT ON .WAITNB. COMMAND -
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE OPERATION. 
* 
*        12. -EC 254- THE ALERT BIT WAS SET IN GENERAL STATUS FOLLOWING 
*            THE FIRST READ REVERSE OPERATION AFTER A BACKSPACE 
*            0PERATION. STATUS IS MASKED WITH 5034B.
* 
*        13. -EC 255- AN INCORRECT RECORD LENGTH WAS DETECTED ON A
*            REVERSE READ FOLLOWING A BACKSPACE OPERATION.
* 
*        14, -EC 256- AN INCORRECT RECORD HAS BEEN DETECTED ON A
*            REVERSE READ FOLLOWING A BACKSPACE OPERATION.
*            (IB) WILL CONTAIN THE ACTUAL RECORD DETECTED.
* 
* 
*** T7X50 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT RECORD CONTENTS
*         B3 = FILE MAX 
*         B5 = MARGINS
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X50 - BACKSPACE - 
 2 FORMAT T7X50 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X50 - ABORT ON .BKSP. COMMAND - 
 5 FORMAT T7X50 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T7X50 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T7X50 - ABORT ON .RES. COMMAND -
10 FORMAT T7X50 - ABORT ON .REL. COMMAND -
11 FORMAT T7X50 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X50 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X50 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X50 ERROR(S) IN MODULE = *DEC 
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
* 
20 IF(DC.EQ.53)EXIT TO 50A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
   B5 = P3 RS 6               *MARGIN BITS TO B5
   MARGINS B5                 *SELECT MARGINS PER PARAM P3
21 B5 =7
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B5 = 11
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74
   B0=0 
   WC = P2                    *REC LENGTH TO WC REG 
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
   B5 = 12
   WAITNB, ABT 74 
   B2 = 1111                  *SET RECORD CONTENTS
   B1 = 0                     *CLEAR RECORD COUNT 
* 
*---------WRITE 3 RECORDS WITH UNIQUE DATA
* 
30 DUP B2 TO OB FOR 500       *STORE DATA PATTERN 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(P3.AND.1.NE.0)GOTO 32   *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
32 GOSUB 60                   *RELEASE-DELAY-RESERVE
34 B5 = 6 
   B7 = 1                     *FORWARD WRITE CODE 
   WRITE LONG, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 54      *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(B2 + 1111.NE.4444)   *WRITE 3 RECORDS
   B5 =12 
   WAITNB, ABT 74 
   GOSUB 60                   *RELEASE-DELAY-RESERVE
* 
*---------BACKSPACE 
* 
   B5 = 4 
   B7 = 6                     *REVERSE READ CODE
   BKSP , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
40 IF(SB(1).AND.ALERT.NE.0)ERROR 2/253, GOSUB 70  *ALERT
   GOSUB 60                   *RELEASE-DELAY-RESERVE
* 
*---------READ REVERSE
* 
   B5 = 5 
   READ REV , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 41
   ERROR 2/254,GOSUB 70 
   GOTO 45                    *GENERAL STATUS ERROR 
41 IF(WC.RS.9D.NE.SB(20D)) GOTO 42
   B5 = WC.LS.3.AND.7770
   IF(WT.EQ.B5) GOTO 43       *NO WORD TRANSMITTED ERROR
42 ERROR 2/255,GOSUB 70 
   GOTO 45
43 IF(IB(0).NE.2222)ERROR 2/256 , GOSUB 70
45 IF(B3.EQ.0)GOTO 24         *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 24        *LOOP FILE MAX TIMES
   B5 = 10
   REL, ABT 74
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57         *NO ERRORS
56 MSG 15 (BA) TO DAYFILE     *REPORT ERRORS
57 EXIT                       *NORMAL TERMINATION 
* 
*---------RELEASE-DELAY-RESERVE SUBROUTINE
* 
60 IF(P5+P6.LT.20D) GOTO 61   *BYPASS REL ON SHORT DELAY
   B5 = 10
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 980                   *CALL 67X/ATS STATUS CRACKER
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X50 -
   MODULE T7X50A,67X(53)LOCK   - 698 BACKSPACE -
*** T7X50A - 698 BACKSPACE
* 
**  T7X50A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
* 
*         T7X50A WRITES 3 RECORDS AT THE LENGTH SPECIFIED 
*         IN *P2* TIMES 8.
*         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.
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION.
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE 
*         2. RESERVE. 
*         3. REWIND.
*         4. SET *FILE MAX* TO 64 IF MAINTENANCE MODE.
*         5. RELEASE, DELAY AND RESERVE.
*         6. WAITNB.
*         7. SET RECORD PATTERN TO 1111.
*         8. FILL OB WITH RECORD PATTERN. 
*         9. ADD ADDRESS CODING TO DATA IF SELECTED.
*        10. RELEASE, DELAY AND RESERVE.
*        11. WRITE LONG.
*        12. WAIT PARKED IF SELECTED. 
*        13. IF *EOT*, GOTO STEP 28.
*        14. REPORT EC 200 IF STATUS ERROR AND GOTO STEP 10.
*        15. ELSE BUMP RECORD PATTERN BY 1111.
*        16. REPEAT STEPS 8-15 UNTIL PATTERNS IS 4444. (3333 IS 
*            LAST PATTERN WRITTEN.
*        17. WAIT PARKED. 
*        18. RELEASE, DELAY AND RESERVE.
*        19. BKSP.
*        20. WAIT PARKED IF REQUESTED.
*        21. REPORT EC 253 IF STATUS ERROR. 
*        22. RELEASE, DELAY AND RESERVE.
*        23. READ REVERSE.
*        24. REPORT EC 254 IF STATUS ERROR. 
*        25. REPORT EC 255 IF WT ERROR. 
*        26. REPORT EC 256 IF RECORD COUNT ERROR (FIRST WORD OF 
*            IB NOT EQUAL TO RECORD NUMBER).
*        27. REPEAT STEPS 5-26 FOR *FILE MAX* TIMES.
*        28. GO TO STEP 2 IF REPEAT MODULE. 
*        29. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X50A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. T7X50A - ABORT ON .BKSP. COMMAND - 
*         4. T7X50A - ABORT ON .READ REV. COMMAND - 
*         5. T7X50A - ABORT ON .WRITE. COMMAND -
*         6. T7X50A - ABORT ON .RES. COMMAND -
*         7. T7X50A - ABORT ON .REL. COMMAND -
*         8. T7X50A - ABORT ON .REWIND. COMMAND - 
*         9. T7X50A - ABORT ON .WAITNB. COMMAND - 
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE OPERATION. 
* 
*        12. -EC 254- THE ALERT BIT WAS SET IN GENERAL STATUS FOLLOWING 
*            THE FIRST READ REVERSE OPERATION AFTER A BACKSPACE 
*            0PERATION. STATUS IS MASKED WITH 5034B.
* 
*        13. -EC 255- AN INCORRECT RECORD LENGTH WAS DETECTED ON A
*            REVERSE READ FOLLOWING A BACKSPACE OPERATION.
* 
*        14. -EC 256- AN INCORRECT RECORD HAS BEEN DETECTED ON A
*            REVERSE READ FOLLOWING A BACKSPACE OPERATION.
*            (IB) WILL CONTAIN THE ACTUAL RECORD DETECTED.
* 
* 
  
*** T7X50A - INTERNAL DOCUMENTATION 
* 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT RECORD CONTENTS
*         B3 = FILE MAX 
*         B5 = MARGINS
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X50A - 698 BACKSPACE -
 2 FORMAT T7X50A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 4 FORMAT T7X50A - ABORT ON .BKSP. COMMAND -
 5 FORMAT T7X50A - ABORT ON .READ REV. COMMAND -
 6 FORMAT T7X50A - ABORT ON .WRITE. COMMAND - 
 7 FORMAT T7X50A - ABORT ON .RES. COMMAND - 
10 FORMAT T7X50A - ABORT ON .REL. COMMAND - 
11 FORMAT T7X50A - ABORT ON .REWIND. COMMAND -
12 FORMAT T7X50A - ABORT ON .WAITNB. COMMAND -
14 FORMAT T7X50A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT T7X50A ERROR(S) IN MODULE = *DEC
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
* 
20 MSG 1 TO PRINT             *RUNNING MESSAGE
21 MSG 1 TO DISPLAY           *RUNNING MESSAGE
23 B5 =7
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B5 = 11
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74
   B0=0 
   WC = P2                    *REC LENGTH TO WC REG 
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
   B5 = 12
   WAITNB, ABT 74 
   B2 = 1111                  *SET RECORD CONTENTS
   B1 = 0                     *CLEAR RECORD COUNT 
* 
*  -------WRITE 3 RECORDS WITH UNIQUE DATA
* 
30 DUP B2 TO OB FOR 500       *STORE DATA PATTERN 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(P3.AND.1.NE.0)GOTO 32   *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
32 GOSUB 60                   *RELEASE-DELAY-RESERVE
34 B5 = 6 
   B7 = 1                     *FORWARD WRITE CODE 
   WRITE LONG, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 54      *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(B2 + 1111.NE.4444)   *WRITE 3 RECORDS
   B5 =12 
   WAITNB, ABT 74 
   GOSUB 60                   *RELEASE-DELAY-RESERVE
* 
*  -------BACKSPACE 
* 
   B5 = 4 
   B7 = 6                     *REVERSE READ CODE
   BKSP , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
40 IF(SB(1).AND.ALERT.NE.0)ERROR 2/253, GOSUB 70  *ALERT
   GOSUB 60                   *RELEASE-DELAY-RESERVE
* 
*  -------READ REVERSE
* 
   B5 = 5 
   READ REV , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(SB(1).AND.EOT.NE.0)GOTO 54  *EOT
   IF(SB(1).AND.ERROR.EQ.0)GOTO 41
   ERROR 2/254,GOSUB 70 
   GOTO 45                    *GENERAL STATUS ERROR 
41 IF(WC.RS.9D.NE.SB(20D)) GOTO 42
   B5 = WC.LS.3.AND.7770
   IF(WT.EQ.B5) GOTO 43       *NO WORD TRANSMITTED ERROR
42 ERROR 2/255,GOSUB 70 
   GOTO 45
43 IF(IB(0).NE.2222)ERROR 2/256 , GOSUB 70
45 IF(B3.EQ.0)GOTO 24         *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 24        *LOOP FILE MAX TIMES
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 23                            *RESTART
55 IF(ES.AND.RM.NE.0)GOTO 21  *IF 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 SUBROUTINE
* 
60 IF(P5+P6.LT.20D) GOTO 61   *BYPASS REL ON SHORT DELAY
   B5 = 10
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 7 
   RES P1, ABT 74             *RESERVE
   RETURN 
* 
*  ------ PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   B6 = B6 + 1                *BUMP LOOP COUNTER
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*         PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   B6 = B6 + 1                *BUMP LOOP COUNTER
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 23                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
   IF(ES.AND.SL.NE.0)GOTO 21  *SCOPE LOOP SELECTED
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X50A - 
   MODULE T7X51,67X(44,54,55,53)LOCK   - BACKSPACE INCR. LENGTH - 
*** T7X51 - BACKSPACE INCR. LENGTH
* 
**  T7X51 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X51A IS EXECUTED. 
* 
*         INITIALIZE THE RECORD LENGTH BY SETTING WC TO 1.
*         WRITE 3 RECORDS AT THE LENGTH SPECIFIED BY WC TIMES 8.
*         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.
* 
*         THE CONTENTS OF THE WC REGISTER IS BUMPED BY 1 AND
*         THE PROCESS REPEATED. 
* 
*   DESCRIPTION - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. SET WC TO 0. 
*         5. SET *FILE MAX* TO 64 IF NOT MAINTENANCE MODE.
*         6. RELEASE, DELAY AND RESERVE.
*         7. WAITNB.
*         8. SET RECORD PATTERN TO 1111.
*         9. SET WC TO WC+1.  SET IT TO 1 IF OVERFLOW (0000)
*        10. FILL OB WITH RECORD PATTERN. 
*        11. ADD ADDRESS CODING TO DATA IF SELECTED.
*        12. RELEASE, DELAY AND RESERVE.
*        13. WRITE LONG.
*        14. WAIT PARKED IF SELECTED. 
*        15. IF *EOT*, GOTO STEP 30.
*        16. REPORT EC 200 IF STATUS ERROR. 
*        17. BUMP RECORD PATTERN BY 1111. 
*        18. REPEAT STEPS 10-17 UNTIL PATTERNS IS 4444. (3333 IS
*            LAST PATTERN WRITTEN.
*        19. WAIT PARKED. 
*        20. RELEASE, DELAY AND RESERVE.
*        21. BKSP.
*        22. WAIT PARKED IF REQUESTED.
*        23. REPORT EC 253 IF STATUS ERROR. 
*        24. RELEASE, DELAY AND RESERVE.
*        25. READ REVERSE.
*        26. REPORT EC 254 IF STATUS ERROR. 
*        27. REPORT EC 255 IF WT ERROR. 
*        28. REPORT EC 256 IF RECORD COUNT ERROR (FIRST WORD OF 
*            IB NOT EQUAL TO RECORD NUMBER).
*        29. REPEAT STEPS 6-28 FOR *FILE MAX* TIMES.
*        30. GO TO STEP 2 IF REPEAT MODULE. 
*        31. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X51 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X51 - ABORT ON .BKSP. COMMAND -
*         4. T7X51 - ABORT ON .READ REV. COMMAND -
*         5. T7X51 - ABORT ON .WRITE. COMMAND - 
*         6. T7X51 - ABORT ON .RES. COMMAND - 
*         7. T7X51 - ABORT ON .REL. COMMAND - 
*         8. T7X51 - ABORT ON .REWIND. COMMAND -
*         9. T7X51 - ABORT ON .WAITNB. COMMAND -
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE OPERATION. 
* 
*        12. -EC 254- THE ALERT BIT WAS SET IN GENERAL STATUS FOLLOWING 
*            THE FIRST READ REVERSE OPERATION AFTER A BACKSPACE 
*            0PERATION. STATUS IS MASKED WITH 5034B.
* 
*        13. -EC 255- AN INCORRECT RECORD LENGTH WAS DETECTED ON A
*            REVERSE READ FOLLOWING A BACKSPACE OPERATION.
* 
*        14. -EC 256- AN INCORRECT RECORD HAS BEEN DETECTED ON A
*            REVERSE READ FOLLOWING A BACKSPACE OPERATION.
*            (IB) WILL CONTAIN THE ACTUAL RECORD DETECTED.
* 
* 
*** T7X51 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT RECORD CONTENTS
*         B3 = FILE MAX 
*         B5 = MARGINS
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X51 - BACKSPACE INCR. LENGTH -
 2 FORMAT T7X51 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X51 - ABORT ON .BKSP. COMMAND - 
 5 FORMAT T7X51 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T7X51 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T7X51 - ABORT ON .RES. COMMAND -
10 FORMAT T7X51 - ABORT ON .REL. COMMAND -
11 FORMAT T7X51 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X51 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X51 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X51 ERROR(S) IN MODULE = *DEC 
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
* 
20 IF(DC.EQ.53)EXIT TO 51A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   B5 = P3 RS 6               *MARGIN BITS TO B5
   MARGINS B5                 *SELECT MARGINS PER PARAM P3
21 B5 =7
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B5 = 11
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74
   B0=0 
   WC = 0                     *REC LENGTH TO WC REG 
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
   B5 = 12
   WAITNB, ABT 74 
   B2 = 1111                  *SET RECORD CONTENTS
   B1 = 0                     *CLEAR RECORD COUNT 
   WC = WC + 1                *BUMP RECORD LENGTH 
   IF(WC.NE.0) GOTO 30        *IF NOT OVERFLOW
   WC = 1 
* 
*---------WRITE 3 RECORDS WITH UNIQUE DATA
* 
30 DUP B2 TO OB FOR 500       *STORE DATA PATTERN 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(P3.AND.1.NE.0)GOTO 32   *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
32 GOSUB 60                   *RELEASE-DELAY-RESERVE
34 B5 = 6 
   B7 = 1                     *FORWARD WRITE CODE 
   WRITE LONG, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 54      *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(B2 + 1111.NE.4444)   *WRITE 3 RECORDS
   B5 =12 
   WAITNB, ABT 74 
   GOSUB 60                   *RELEASE-DELAY-RESERVE
* 
*---------BACKSPACE 
* 
   B5 = 4 
   B7 = 6                     *REVERSE READ CODE
   BKSP , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
40 IF(SB(1).AND.ALERT.NE.0)ERROR 2/253, GOSUB 70  *ALERT
   GOSUB 60                   *RELEASE-DELAY-RESERVE
* 
*---------READ REVERSE
* 
   B5 = 5 
   READ REV , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 41
   ERROR 2/254,GOSUB 70 
   GOTO 45                    *GENERAL STATUS ERROR 
41 IF(WC.RS.9D.NE.SB(20D)) GOTO 42
   B5 = WC.LS.3.AND.7770
   IF(WT.EQ.B5) GOTO 43       *NO WORD TRANSMITTED ERROR
42 ERROR 2/255,GOSUB 70 
   GOTO 45
43 IF(IB(0).NE.2222)ERROR 2/256 , GOSUB 70
45 IF(B3.EQ.0)GOTO 24         *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 24        *LOOP FILE MAX TIMES
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57         *NO ERRORS
56 MSG 15 (BA) TO DAYFILE     *REPORT ERRORS
57 EXIT                       *NORMAL TERMINATION 
* 
*---------RELEASE-DELAY-RESERVE SUBROUTINE
* 
60 IF(P5+P6.LT.20D) GOTO 61   *BYPASS REL ON SHORT DELAY
   B5 = 10
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X51 -
   MODULE T7X51A,67X(53)LOCK   - 698 BACKSPACE INCR. LENGTH - 
*** T7X51A - 698 BACKSPACE INCR. LENGTH 
* 
**  T7X51A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         INITIALIZE THE RECORD LENGTH BY SETTING WC TO 1.
*         WRITE 3 RECORDS AT THE LENGTH SPECIFIED BY WC TIMES 8.
*         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.
* 
*         THE CONTENTS OF THE WC REGISTER IS BUMPED BY 1 AND
*         THE PROCESS REPEATED. 
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION.
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE 
*         2. RESERVE. 
*         3. REWIND.
*         4. SET WC TO 0. 
*         5. SET *FILE MAX* TO 64 IF NOT MAINTENANCE MODE.
*         6. RELEASE, DELAY AND RESERVE.
*         7. WAITNB.
*         8. SET RECORD PATTERN TO 1111.
*         9. SET WC TO WC+1.  SET IT TO 1 IF OVERFLOW (0000)
*        10. FILL OB WITH RECORD PATTERN. 
*        11. ADD ADDRESS CODING TO DATA IF SELECTED.
*        12. RELEASE, DELAY AND RESERVE.
*        13. WRITE LONG.
*        14. WAIT PARKED IF SELECTED. 
*        15. IF *EOT*, GOTO STEP 30.
*        16. REPORT EC 200 IF STATUS ERROR AND GOTO STEP 12.
*        17. ELSE BUMP RECORD PATTERN BY 1111.
*        18. REPEAT STEPS 10-17 UNTIL PATTERNS IS 4444. (3333 IS
*            LAST PATTERN WRITTEN.
*        19. WAIT PARKED. 
*        20. RELEASE, DELAY AND RESERVE.
*        21. BKSP.
*        22. WAIT PARKED IF REQUESTED.
*        23. REPORT EC 253 IF STATUS ERROR. 
*        24. RELEASE, DELAY AND RESERVE.
*        25. READ REVERSE.
*        26. REPORT EC 254 IF STATUS ERROR. 
*        27. REPORT EC 255 IF WT ERROR. 
*        28. REPORT EC 256 IF RECORD COUNT ERROR (FIRST WORD OF 
*            IB NOT EQUAL TO RECORD NUMBER).
*        29. REPEAT STEPS 6-28 FOR *FILE MAX* TIMES.
*        30. GO TO STEP 2 IF REPEAT MODULE. 
*        31. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X51A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. T7X51A - ABORT ON .BKSP. COMMAND - 
*         4. T7X51A - ABORT ON .READ REV. COMMAND - 
*         5. T7X51A - ABORT ON .WRITE. COMMAND -
*         6. T7X51A - ABORT ON .RES. COMMAND -
*         7. T7X51A - ABORT ON .REL. COMMAND -
*         8. T7X51A - ABORT ON .REWIND. COMMAND - 
*         9. T7X51A - ABORT ON .WAITNB. COMMAND - 
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE OPERATION. 
* 
*        12. -EC 254- THE ALERT BIT WAS SET IN GENERAL STATUS FOLLOWING 
*            THE FIRST READ REVERSE OPERATION AFTER A BACKSPACE 
*            0PERATION. STATUS IS MASKED WITH 5034B.
* 
*        13. -EC 255- AN INCORRECT RECORD LENGTH WAS DETECTED ON A
*            REVERSE READ FOLLOWING A BACKSPACE OPERATION.
* 
*        14. -EC 256- AN INCORRECT RECORD HAS BEEN DETECTED ON A
*            REVERSE READ FOLLOWING A BACKSPACE OPERATION.
*            (IB) WILL CONTAIN THE ACTUAL RECORD DETECTED.
* 
* 
  
*** T7X51A - INTERNAL DOCUMENTATION 
* 
* 
*   REGISTER USAGE
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT RECORD CONTENTS
*         B3 = FILE MAX 
*         B5 = MARGINS
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X51A - 698 BACKSPACE INCR. LENGTH - 
 2 FORMAT T7X51A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 4 FORMAT T7X51A - ABORT ON .BKSP. COMMAND -
 5 FORMAT T7X51A - ABORT ON .READ REV. COMMAND -
 6 FORMAT T7X51A - ABORT ON .WRITE. COMMAND - 
 7 FORMAT T7X51A - ABORT ON .RES. COMMAND - 
10 FORMAT T7X51A - ABORT ON .REL. COMMAND - 
11 FORMAT T7X51A - ABORT ON .REWIND. COMMAND -
12 FORMAT T7X51A - ABORT ON .WAITNB. COMMAND -
14 FORMAT T7X51A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT T7X51A ERROR(S) IN MODULE = *DEC
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
* 
20 MSG 1 TO PRINT             *RUNNING MESSAGE
21 MSG 1 TO DISPLAY           *RUNNING MESSAGE
23 B5 =7
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B5 = 11
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74
   B0=0 
   WC = 0                     *REC LENGTH TO WC REG 
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
   B5 = 12
   WAITNB, ABT 74 
   B2 = 1111                  *SET RECORD CONTENTS
   B1 = 0                     *CLEAR RECORD COUNT 
   WC = WC + 1                *BUMP RECORD LENGTH 
   IF(WC.NE.0) GOTO 30        *IF NOT OVERFLOW
   WC = 1 
* 
*  -------WRITE 3 RECORDS WITH UNIQUE DATA
* 
30 DUP B2 TO OB FOR 500       *STORE DATA PATTERN 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(P3.AND.1.NE.0)GOTO 32   *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
32 GOSUB 60                   *RELEASE-DELAY-RESERVE
34 B5 = 6 
   B7 = 1                     *FORWARD WRITE CODE 
   WRITE LONG, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 54      *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(B2 + 1111.NE.4444)   *WRITE 3 RECORDS
   B5 =12 
   WAITNB, ABT 74 
   GOSUB 60                   *RELEASE-DELAY-RESERVE
* 
*  -------BACKSPACE 
* 
   B5 = 4 
   B7 = 6                     *REVERSE READ CODE
   BKSP , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
40 IF(SB(1).AND.ALERT.NE.0)ERROR 2/253, GOSUB 70  *ALERT
   GOSUB 60                   *RELEASE-DELAY-RESERVE
* 
*  -------READ REVERSE
* 
   B5 = 5 
   READ REV , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(SB(1).AND.EOT.NE.0)GOTO 54  *EOT
   IF(SB(1).AND.ERROR.EQ.0)GOTO 41
   ERROR 2/254,GOSUB 70 
   GOTO 45                    *GENERAL STATUS ERROR 
41 IF(WC.RS.9D.NE.SB(20D)) GOTO 42
   B5 = WC.LS.3.AND.7770
   IF(WT.EQ.B5) GOTO 43       *NO WORD TRANSMITTED ERROR
42 ERROR 2/255,GOSUB 70 
   GOTO 45
43 IF(IB(0).NE.2222)ERROR 2/256 , GOSUB 70
45 IF(B3.EQ.0)GOTO 24         *LOOP IF FILE MAX ZERO
   IF(B0.LT.B3)GOTO 24        *LOOP FILE MAX TIMES
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 23                            *RESTART
55 IF(ES.AND.RM.NE.0)GOTO 21  *IF 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 SUBROUTINE
* 
60 IF(P5+P6.LT.20D) GOTO 61   *BYPASS REL ON SHORT DELAY
   B5 = 10
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 7 
   RES P1, ABT 74             *RESERVE
   RETURN 
* 
*  -------PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   B6 = B6 + 1                *BUMP LOOP COUNTER
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*  -------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   B6 = B6 + 1                *BUMP LOOP COUNTER
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 23                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
   IF(ES.AND.SL.NE.0)GOTO 21  *SCOPE LOOP SELECTED
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X51A - 
   MODULE T7X52,67X(44,54,55,53)LOCK   - CONTROL BKSP - 
*** T7X52 - CONTROL BACKSPACE, FIND GAP 
* 
**  T7X52 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X52 IS NOT EXECUTED.
* 
*         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 - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. SET *FILE MAX* TO 64 IF NOT MAINTENANCE MODE.
*         5. RELEASE, DELAY AND RESERVE.
*         6. WAITNB.
*         7. SET RECORD PATTERN TO 1111.
*         8. FILL OB WITH RECORD PATTERN. 
*         9. ADD ADDRESS CODING TO DATA IF SELECTED.
*        10. RELEASE, DELAY AND RESERVE.
*        11. WRITE LONG.
*        12. WAIT PARKED IF SELECTED. 
*        13. IF *EOT*, GOTO STEP 28.
*        14. REPORT EC 200 IF STATUS ERROR. 
*        15. BUMP RECORD PATTERN BY 1111. 
*        16. REPEAT STEPS 8-15 UNTIL PATTERNS IS 4444. (3333 IS 
*            LAST PATTERN WRITTEN.
*        17. WAIT PARKED. 
*        18. RELEASE, DELAY AND RESERVE.
*        19. CONTROLLED BKSP. 
*        20. REPORT EC 217 IF STATUS ERROR. 
*        21. WAITNB.
*        22. RELEASE, DELAY AND RESERVE.
*        23. READ REVERSE.
*        24. REPORT EC 220 IF STATUS ERROR. 
*        25. REPORT EC 222 IF WT ERROR. 
*        26. REPORT EC 221 IF RECORD COUNT ERROR (FIRST WORD OF 
*            IB NOT EQUAL TO RECORD NUMBER).
*        27. REPEAT STEPS 5-26 FOR *FILE MAX* TIMES.
*        28. GO TO STEP 2 IF REPEAT MODULE. 
*        29. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X52 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X52 - ABORT ON .BKSP. COMMAND -
*         4. T7X52 - ABORT ON .READ REV. COMMAND -
*         5. T7X52 - ABORT ON .WRITE. COMMAND - 
*         6. T7X52 - ABORT ON .RES. COMMAND - 
*         7. T7X52 - ABORT ON .REL. COMMAND - 
*         8. T7X52 - ABORT ON .REWIND. COMMAND -
*         9. T7X52 - ABORT ON .WAITNB. COMMAND -
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 217- ALERT WAS SET FOLLOWING A CONTROLLED
*            BACKSPACE OPERATION. 
* 
*        12. -EC 220- A STATUS ERROR OCCURRED ON THE READ BACKWARDS 
*            FOLLOWING A CONTROLLED BACKSPACE OPERATION.
* 
*        13. -EC 221- AN INCORRECT RECORD HAS BEEN DETECTED FOLLOWING A 
*            CONTROLLED BACKSPACE. (IB) WILL CONTAIN THE
*            ACTUAL RECORD DETECTED.
* 
*        14. -EC 222- IMPROPER RECORD LENGTH WAS DETECTED ON A CONTROLLED 
*            BACKSPACE. REGISTER WT IS THE ACTUAL LENGTH READ FROM TAPE.
* 
* 
*** T7X52 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT RECORD CONTENTS
*         B3 = FILE MAX 
*         B5 = MARGINS
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X52 - CONTROL BACKSPACE - 
 2 FORMAT T7X52 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X52 - ABORT ON .BKSP. COMMAND - 
 5 FORMAT T7X52 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T7X52 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T7X52 - ABORT ON .RES. COMMAND -
10 FORMAT T7X52 - ABORT ON .REL. COMMAND -
11 FORMAT T7X52 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X52 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X52 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X52 ERROR(S) IN MODULE = *DEC 
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
* 
20 IF(DC.EQ.53)EXIT TO 52A    *IF 698/CMST SUBSYSTEM
   MSG 1 TO DISPLAY,PRINT     *POST RUNNING MESSAGE 
   B5 = P3 RS 6               *MARGIN BITS TO B5
   MARGINS B5                 *SELECT MARGINS PER PARAM P3
21 B5 = 7 
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B5 = 11
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74
   B0=0 
22 B3 = 100                   *FILE COUNT DIAG MODE 
   WC = P2
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8                    *FILE COUNT MAINT MODE
24 B0 = B0 + 1                *INCREMENT FILE COUNT 
   GOSUB 60 
   B5 = 12
   WAITNB, ABT 74 
   B2 = 1111
   B1 = 0                     *CLEAR RECORD COUNTER 
* 
*---------WRITE 3 RECORDS OF UNIQUE DATA
* 
30 DUP B2 TO OB FOR 500 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(P3.AND.1.NE.0)GOTO 32   *BYPASS ADDRESS CODING
   OB(1)=B0 
   OB(2)=B1 
   OB(3)=WC 
32 GOSUB 60 
34 B5 = 6 
   B7 = 1                     *WRITE  FORWARD CODE
   WRITE LONG , ABT 74
   IF(P3.AND.20.NE.0)GOTO 35  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 54      *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(B2 + 1111.NE.4444)   *ALL RECORDS NOT DONE 
   B5 = 12
   WAITNB, ABT 74 
   GOSUB 60                           *RELEASE-DELAY-RESERVE
* 
*--------ISSUE CONTROLLED BACKSPACE, FOR CORRECT POSITIONING
* 
   B5 = 4 
   B7 = 2                     *REVERSE WRITE CODE 
   BKSP C LONG , ABT 74 
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 37     *ALERT 
   ERROR 2/217,GOSUB 70 
   GOTO 45
37 B5 = 12
   WAITNB, ABT 74 
   GOSUB 60 
* 
*---------READ REVERSE
* 
   B5 = 5 
   B7 = 6                     *REVERSE READ CODE
   READ REV , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 41
   ERROR 2/220,GOSUB 70 
   GOTO 45
41 IF(WC.RS.9D.NE.SB(20D)) GOTO 42
   B5 = WC.LS.3.AND.7770
   IF(WT.EQ.B5) GOTO 43       *NO WT ERROR
42 ERROR 2/222,GOSUB 70 
   GOTO 45
43 IF(IB(0).NE.2222)ERROR 2/221 , GOSUB 70
45 IF(B3.EQ.0)GOTO 24         *INFINITE FILE COUNT
   IF(B0.LT.B3)GOTO 24        *MORE FILES TO BE WRITTEN 
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57         *NO ERRORS
56 MSG 15 (BA) TO DAYFILE     *REPORT ERRORS
57 EXIT                       *NORMAL TERMINATION 
* 
*---------RELEASE-DELAY-RESERVE SUBROUTINE
* 
60 IF(P5+P6.LT.20D) GOTO 61   *BYPASS REL ON SHORT DELAY
   B5 = 10
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 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           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X52 -
   MODULE T7X52A,67X(53)LOCK  - POST MSG FOR DC 53
*** T7X52A - POST MSG FOR DC 53 
* 
**  T7X52A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         T7X52A WILL POST A NO RUN MSG FOR T7X52 IF DC = 53. 
* 
*   DESCRIPTION - N/A 
* 
*** 
**
* 
*   ERRORS REPORTED - N/A 
* 
*** T7X52A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE - N/A
* 
*   MODULES CALLED - NONE 
* 
* 
 1 FORMAT T7X52 - NOT EXECUTED USING DC = 53
20 MSG 1 TO DISPLAY,PRINT   *NO RUN MSG 
   EXIT 
   END 20 
COMPILE   - T7X52A -
   MODULE T7X53,67X(44,54,55,53)LOCK   - CONTROL BKSP INCR.  -
*** T7X53 - CONTROL BACKSPACE, INCR. LENGTH 
* 
**  T7X53 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X53 IS NOT EXECUTED.
* 
*         THIS MODULE USES THE FUNCTION *CONTROLLED 
*         BACKSPACE, FIND GAP* DURING REPOSITIONING.
*         RECORD LENGTHS START WITH 10B 12-BIT BYTES AND ARE
*         INCREMENTED BY 10B FOR EACH ITERATION OF THE TOTAL
*         TEST. 
* 
*         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 - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. SET WC = 1.
*         5. SET *FILE MAX* TO 64 IF NOT MAINTENANCE MODE.
*         6. RELEASE, DELAY AND RESERVE.
*         7. WAITNB.
*         8. SET RECORD PATTERN TO 1111.
*         9. FILL OB WITH RECORD PATTERN. 
*        10. ADD ADDRESS CODING TO DATA IF SELECTED.
*        11. RELEASE, DELAY AND RESERVE.
*        12. WRITE LONG.
*        13. WAIT PARKED IF SELECTED. 
*        14. IF *EOT*, GOTO STEP 30.
*        15. REPORT EC 200 IF STATUS ERROR. 
*        16. BUMP RECORD PATTERN BY 1111. 
*        17. REPEAT STEPS 9-16 UNTIL PATTERNS IS 4444. (3333 IS 
*            LAST PATTERN WRITTEN.
*        18. WAIT PARKED. 
*        19. RELEASE, DELAY AND RESERVE.
*        20. CONTROLLED BKSP. 
*        21. REPORT EC 217 IF STATUS ERROR. 
*        22. WAITNB.
*        23. RELEASE, DELAY AND RESERVE.
*        24. READ REVERSE.
*        25. REPORT EC 220 IF STATUS ERROR. 
*        26. REPORT EC 222 IF WT ERROR. 
*        27. REPORT EC 221 IF RECORD COUNT ERROR (FIRST WORD OF 
*            IB NOT EQUAL TO RECORD NUMBER).
*        28. SET WC = WC+1. SET IT TO 1 IF OVERFLOW (0000). 
*        29. REPEAT STEPS 6-28 FOR *FILE MAX* TIMES.
*        30. GO TO STEP 2 IF REPEAT MODULE. 
*        31. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X53 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X53 - ABORT ON .BKSP. COMMAND -
*         4. T7X53 - ABORT ON .READ REV. COMMAND -
*         5. T7X53 - ABORT ON .WRITE. COMMAND - 
*         6. T7X53 - ABORT ON .RES. COMMAND - 
*         7. T7X53 - ABORT ON .REL. COMMAND - 
*         8. T7X53 - ABORT ON .REWIND. COMMAND -
*         9. T7X53 - ABORT ON .WAITNB. COMMAND -
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 217- ALERT WAS SET FOLLOWING A CONTROLLED
*            BACKSPACE OPERATION. 
* 
*        12. -EC 220- A STATUS ERROR OCCURRED ON THE READ BACKWARDS 
*            FOLLOWING A CONTROLLED BACKSPACE OPERATION.
* 
*        13. -EC 221- AN INCORRECT RECORD HAS BEEN DETECTED FOLLOWING A 
*            CONTROLLED BACKSPACE. (IB) WILL CONTAIN THE
*            ACTUAL RECORD DETECTED.
* 
*        14. -EC 222- IMPROPER RECORD LENGTH WAS DETECTED ON A CONTROLLED 
*            BACKSPACE. REGISTER WT THE ACTUAL RECORD READ FROM TAPE. 
* 
* 
*** T7X53 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT RECORD CONTENTS
*         B3 = FILE MAX 
*         B5 = MARGINS
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X53 - CONTROL BACKSPACE, INCR LENGTH -
 2 FORMAT T7X53 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X53 - ABORT ON .BKSP. COMMAND - 
 5 FORMAT T7X53 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T7X53 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T7X53 - ABORT ON .RES. COMMAND -
10 FORMAT T7X53 - ABORT ON .REL. COMMAND -
11 FORMAT T7X53 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X53 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X53 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X53 ERROR(S) IN MODULE = *DEC 
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
* 
20 IF(DC.EQ.53)EXIT TO 53A    *IF 698/CMST SUBSYSTEM
   MSG 1 TO DISPLAY,PRINT     *POST RUNNING MESSAGE 
   B5 = P3 RS 6               *MARGIN BITS TO B5
   MARGINS B5                 *SELECT MARGINS PER PARAM P3
21 B5 = 7 
   RES P1, ABT 74             *RESERVE
   B5 = 11
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74
   B0=0 
22 B3 = 100                   *FILE COUNT DIAG MODE 
   WC = 1 
   IF(P3.AND.40.EQ.0)GOTO 24  *DIAGNOSTIC MODE SELECTED 
   B3 = P8                    *FILE COUNT MAINT MODE
24 B0 = B0 + 1                *INCREMENT FILE COUNT 
   GOSUB 60 
   B5 = 12
   WAITNB, ABT 74 
   B2 = 1111
   B1 = 0                     *CLEAR RECORD COUNT 
* 
*---------WRITE 3 UNIQUE RECORDS
* 
30 DUP B2 TO OB FOR 500 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(P3.AND.1.NE.0)GOTO 32   *BYPASS ADDRESS CODING
   OB(1)=B0 
   OB(2)=B1 
   OB(3)=WC 
32 GOSUB 60 
34 B5 = 6 
   B7 = 1                     *WRITE  FORWARD CODE
   WRITE LONG , ABT 74
   IF(P3.AND.20.NE.0)GOTO 35  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
35 IF(SB(1).AND.EOT.NE.0)GOTO 54      *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(B2 + 1111.NE.4444)   *ALL RECORDS NOT DONE 
   B5 = 12
   WAITNB, ABT 74 
   GOSUB 60                           *RELEASE-DELAY-RESERVE
* 
*--------ISSUE CONTROLLED BACKSPACE, FOR CORRECT POSITIONING
* 
   B5 = 4 
   B7 = 2                     *REVERSE WRITE CODE 
   BKSP C LONG , ABT 74 
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(SB(1).AND.ALERT.EQ.0)GOTO 37     *ALERT 
   ERROR 2/217,GOSUB 70 
   GOTO 45
37 B5 = 12
   WAITNB, ABT 74 
   GOSUB 60 
* 
*---------READ REVERSE
* 
   B5 = 5 
   B7 = 6                     *REVERSE READ CODE
   READ REV , ABT 74
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 41
   ERROR 2/220,GOSUB 70 
   GOTO 45
41 IF(WC.RS.9D.NE.SB(20D)) GOTO 42
   B5 = WC.LS.3.AND.7770
   IF(WT.EQ.B5) GOTO 43       *NO WT ERROR
42 ERROR 2/222,GOSUB 70 
   GOTO 45
43 IF(IB(0).NE.2222)ERROR 2/221 , GOSUB 70
45 WC = WC + 1                *BUMP RECORD LENGTH 
   IF(WC.NE.0) GOTO 46        *IF NO OVERFLOW 
   WC = 1 
46 IF(B3.EQ.0)GOTO 24         *INFINITE FILE COUNT
   IF(B0.LT.B3)GOTO 24        *MORE FILES TO BE WRITTEN 
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57         *NO ERRORS
56 MSG 15 (BA) TO DAYFILE     *REPORT ERRORS
57 EXIT                       *NORMAL TERMINATION 
* 
*---------RELEASE-DELAY-RESERVE SUBROUTINE
* 
60 B5 = 10
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 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           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X53 -
   MODULE T7X53A,67X(53)LOCK  - POST MSG FOR DC 53
*** T7X53A - POST MSG FOR DC 53 
* 
**  T7X53A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         T7X53A WILL POST A NO RUN MSG FOR T7X53 IF DC = 53. 
* 
*   DESCRIPTION - N/A 
* 
*** 
**
* 
*   ERRORS REPORTED - N/A 
* 
*** T7X53A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE - N/A
* 
*   MODULES CALLED - NONE 
* 
* 
 1 FORMAT T7X53 - NOT EXECUTED USING DC = 53
20 MSG 1 TO DISPLAY,PRINT   *NO RUN MSG 
   EXIT 
   END 20 
COMPILE   - T7X53A -
   MODULE T7X54,67X(44,54,55,53)LOCK   - WRITE SKIP TO ERASE -
*** T7X54 - WRITE SKIP TO ERASE 
* 
**  T7X54 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE DENSITY
*         AND PATTERN SELECTED BY THE *PARAM* DIRECTIVE.
* 
*         AFTER A RECORD IS WRITTEN, A BACKSPACE
*         FOLLOWED BY AN ERASE OPERATION IS DONE. 
*         THIS SEQUENCE CONTINUES UNTIL *FILE MAX*
*         OR *EOT* IS REACHED.
* 
* 
*   DESCRIPTION - 
* 
*         1. FILL OB WITH SELECTED PATTERN. 
*         2. RESERVE. 
*         3. REWIND.
*         4. SET *FILE MAX* TO 64 IF DIAGNOSTIC MODE. 
*         5. FILL OB WITH RANDOM PATTERN IF SELECTED. 
*         6. ADD ADDRESS CODING TO OB IF SELECTED.
*         7. RELEASE, DELAY AND RESERVE.
*         8. WRITE LONG. GO TO STEP 19 IF *EOT*.
*         9. REPORT EC 200 IF STATUS ERROR. 
*        10. BKSP.
*        11. REPORT EC 253 IF STATUS ERROR. 
*        12. ERASE. 
*        13. GO TO STEP 19 IF *EOT* STATUS. 
*        14. REPORT EC 246 IF STATUS ERROR. 
*        15. REPEAT STEPS 5-14 FOR *FILE MAX* TIMES.
*        16. RESERVE. 
*        17. ENDFILE. 
*        18. REPORT EC 122 IF NOT *EOF* STATUS. 
*        19. GO TO STEP 2 IF REPEAT MODULE. 
*        20. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X54 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X54 - ABORT ON .ENDFILE. COMMAND - 
*         4. T7X54 - ABORT ON .WRITE. COMMAND - 
*         5. T7X54 - ABORT ON .RES. COMMAND - 
*         6. T7X54 - ABORT ON .REWIND. COMMAND -
*         7. T7X54 - ABORT ON .REL. COMMAND - 
*         8. T7X54 - ABORT ON .BKSP. COMMAND -
*         9. T7X54 - ABORT ON .ERASE. COMMAND - 
* 
*        10. -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
*        11. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A -WRITE- OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        12. -EC 246- AN ALERT STATUS OCCURRED AFTER AN ERASE 
*            OPERATION
* 
*        13. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE
* 
* 
*** T7X54 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*            = TRACK SIZE (6 OR 8)
*            = RANDOM STARTER 
*         B1 = CURRENT RECORD COUNT 
*         B2 = RANDOM PATTERN FLAG
*            = BUFFER LIMIT FOR DUP (7 OR 9 TRK)
*         B3 = FILE MAX 
*         B4 = PATTERN FOR STORING
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X54 - WRITE SKIP TO ERASE - 
 2 FORMAT T7X54 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X54 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T7X54 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X54 - ABORT ON .RES. COMMAND -
10 FORMAT T7X54 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X54 - ABORT ON .REL. COMMAND -
12 FORMAT T7X54 - ABORT ON .BKSP. COMMAND - 
13 FORMAT T7X54 - ABORT ON .ERASE. COMMAND -
14 FORMAT T7X54 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X54 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 5034
* 
* 
/ 
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE. 
   BA = 0                     *INITIALIZE ABORT COUNTER 
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B4 = P4
   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 IF(P4.AND.3000.EQ.1000)B4=P4.XOR.7777
   DUP B0 BITS OF P4/B4 TO OB FOR B1
   GOTO 25
23 B0 = P7                    *RANDOM SEED
   IF(P3.AND.4.NE.0)GOTO 24   *USE RANDOM SEED
   B2=1                       *SET FLAG 
   B0 = RT                    *USE RT CLOCK FOR SEED
24 RANDOM TO OB FOR 500 , START B0
25 WC = P2                    *RECORD LENGTH TO WC REG
26 B5 = 6 
   B7 = 0                     *NO MOTION CODE 
   B0 = 0                     *CLEAR FILE COUNT 
   B1 = 1                     *SET RECORD COUNT 
   RES P1, ABT 74             *RESERVE
   B5 = 10
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74              *REWIND 
   B3 = 100                   *FILE MAX FOR DIAG. MODE
   IF(P3.AND.40.EQ.0)GOTO 30  *IF DIAG. MODE
   B3 = P8                    *USER FILE MAX FOR MAINT. MODE
30 IF(B2.EQ.0) GOTO 40        *RANDOM PTRN NOT SELECTED 
   RANDOM TO OB FOR 500 , START RT
* 
*---------ADDRESS CODING
* 
40 IF(P3.AND.1.NE.0)GOTO 43   *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
43 IF(P5+P6.LT.20D) GOTO 44 
   B5 = 11
   REL, ABT 74
44 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 45        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
45 DELAY B5 MSEC
   B5 = 6 
   RES P1, ABT 74             *RESERVE
* 
*---------WRITE .WC. SPECIFIED BY *P2*
* 
   B5 = 5 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE LONG, ABT 74 
   IF(SB(1).AND.EOT.NE.0) GOTO 53      *IF END OF TAPE
   IF(SB(1).AND.ERROR.EQ.0)GOTO 50     *NO ERROR DETECTED 
   ERROR 2/200 , GOSUB 70 
   GOTO 52                    *RESTART
* 
*---------BACKSPACE 
* 
50 B5 = 12
   B7 = 6                     *REVERSE READ MOTION CODE 
   BKSP, ABT 74 
   IF(SB(1).AND.EOT.NE.0) GOTO 54   *EOT
   IF(SB(1).AND.4000B.EQ.0) GOTO 51   *NO ALERT 
   ERROR 2/253, GOSUB 70
   GOTO 52                    *RESTART
* 
*---------ERASE 
* 
51 B5 = 13
   B7 = 1                     *FORWARD WRITE MOTION CODE
   ERASE, ABT 74
   IF(SB(1).AND.EOT.NE.0) GOTO 53      *IF END OF TAPE
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/246, GOSUB 70 
52 IF (B3.EQ.0) GOTO 30       *LOOP IF INFINITE FILE COUNT
   GOTO 30 WHILE (B0+1.NE.B3) 
   B5 = 6 
   RES P1, ABT 74 
* 
*---------WRITE .EOF. 
* 
53 B5 = 4 
   ENDFILE , ABT 74 
   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 SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 26                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 26  *IF REPEAT MODULE/CONDITION 
   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)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 26                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 26         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T7X54 - 
   MODULE T7X55,67X(44,54,55,53)LOCK   - WRITE SKIP, INCR. LENGTH - 
*** T7X55 - WRITE SKIP, INCR. LENGTH
* 
**  T7X55 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE DENSITY
*         AND PATTERN SELECTED BY THE *PARAM* DIRECTIVE.
* 
*         AFTER A RECORD IS WRITTEN, A BACKSPACE
*         FOLLOWED BY AN ERASE OPERATION IS DONE. 
*         THIS SEQUENCE CONTINUES UNTIL *FILE MAX*
*         OR *EOT* IS REACHED. THE RECORD LENGTH OF THE 
*         WRITE IS INCREMENTED FOR EACH RECORD WRITTEN. 
* 
*   DESCRIPTION - 
* 
*         1. FILL OB WITH SELECTED PATTERN. 
*         2. RESERVE. 
*         3. REWIND.
*         4. SET *FILE MAX* TO 64 IF DIAGNOSTIC MODE. 
*         5. FILL OB WITH RANDOM PATTERN IF SELECTED. 
*         6. ADD ADDRESS CODING TO OB IF SELECTED.
*         7. RELEASE, DELAY AND RESERVE.
*         8. WRITE LONG. GO TO STEP 19 IF *EOT*.
*         9. REPORT EC 200 IF STATUS ERROR. 
*        10. BKSP.
*        11. REPORT EC 253 IF STATUS ERROR. 
*        12. ERASE. 
*        13. GO TO STEP 19 IF *EOT* STATUS. 
*        14. REPORT EC 246 IF STATUS ERROR. 
*        15. REPEAT STEPS 5-14 FOR *FILE MAX* TIMES.
*        16. RESERVE. 
*        17. ENDFILE. 
*        18. REPORT EC 122 IF NOT *EOF* STATUS. 
*        19. GO TO STEP 2 IF REPEAT MODULE. 
*        20. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X55 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X55 - ABORT ON .ENDFILE. COMMAND - 
*         4. T7X55 - ABORT ON .WRITE. COMMAND - 
*         5. T7X55 - ABORT ON .RES. COMMAND - 
*         6. T7X55 - ABORT ON .REWIND. COMMAND -
*         7. T7X55 - ABORT ON .REL. COMMAND - 
*         8. T7X55 - ABORT ON .BKSP. COMMAND -
*         9. T7X55 - ABORT ON .ERASE. COMMAND - 
* 
*        10. -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
*        11. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A -WRITE- OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        12. -EC 246- AN ALERT STATUS OCCURRED AFTER AN ERASE 
*            OPERATION
* 
*        13. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE
* 
* 
*** T7X55 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*            = TRACK SIZE (6 OR 8)
*            = RANDOM STARTER 
*         B1 = CURRENT RECORD COUNT 
*         B2 = RANDOM PATTERN FLAG
*            = BUFFER LIMIT FOR DUP (7 OR 9 TRK)
*         B3 = FILE MAX 
*         B4 = PATTERN FOR STORING
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X55 - WRITE SKIP, INCR. LENGTH -
 2 FORMAT T7X55 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X55 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T7X55 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X55 - ABORT ON .RES. COMMAND -
10 FORMAT T7X55 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X55 - ABORT ON .REL. COMMAND -
12 FORMAT T7X55 - ABORT ON .BKSP. COMMAND - 
13 FORMAT T7X55 - ABORT ON .ERASE. COMMAND -
14 FORMAT T7X55 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X55 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 5034
* 
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE. 
   BA = 0                     *INITIALIZE ABORT COUNTER 
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B4 = P4
   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 IF(P4.AND.3000.EQ.1000)B4=P4.XOR.7777
   DUP B0 BITS OF P4/B4 TO OB FOR B1
   GOTO 26
23 B0 = P7                    *RANDOM SEED
   IF(P3.AND.4.NE.0)GOTO 24   *USE RANDOM SEED
   B2=1                       *SET FLAG 
   B0 = RT                    *USE RT CLOCK FOR SEED
24 RANDOM TO OB FOR 500 , START B0
26 B5 = 6 
   B7 = 0                     *NO MOTION CODE 
   B0 = 0                     *CLEAR FILE COUNT 
   B1 = 1                     *SET RECORD COUNT 
   RES P1, ABT 74             *RESERVE
   B5 = 10
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74              *REWIND 
   WC = 1                     *SET WC TO WRITE 10B WORDS
   B3 = 100                   *FILE MAX FOR DIAG. MODE
   IF(P3.AND.40.EQ.0)GOTO 30  *IF DIAG. MODE
   B3 = P8                    *USER FILE MAX FOR MAINT. MODE
30 IF(B2.EQ.0) GOTO 40        *RANDOM PTRN NOT SELECTED 
   RANDOM TO OB FOR 500 , START RT
* 
*---------ADDRESS CODING
* 
40 IF(P3.AND.1.NE.0)GOTO 43   *BYPASS ADDRESS CODING
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
43 IF(P5+P6.LT.20D) GOTO 44 
   B5 = 11
   REL, ABT 74
44 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 45        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
45 DELAY B5 MSEC
   B5 = 6 
   RES P1, ABT 74             *RESERVE
* 
*---------WRITE .WC. SPECIFIED BY *P2*
* 
   B5 = 5 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE LONG, ABT 74 
   IF(SB(1).AND.EOT.NE.0) GOTO 54     *IF END OF TAPE 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 50    *NO ERROR DETECTED
   ERROR 2/200 , GOSUB 70 
   GOTO 52                    *RESTART
* 
*---------BACKSPACE 
* 
50 B5 = 12
   B7 = 6                     *REVERSE READ MOTION CODE 
   BKSP, ABT 74 
   IF(SB(1).AND.EOT.NE.0) GOTO 60   *EOT
   IF(SB(1).AND.4000B.EQ.0) GOTO 51  *NO ALERT
   ERROR 2/253, GOSUB 70
   GOTO 52                    *RESTART
* 
*---------ERASE 
* 
51 B5 = 13
   B7 = 1                     *FORWARD WRITE MOTION CODE
   ERASE, ABT 74
   IF(SB(1).AND.EOT.NE.0) GOTO 54      *IF END OF TAPE
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/246, GOSUB 70 
52 WC = WC + 1                *BUMP WORD COUNT
   IF(WC.NE.0) GOTO 53
   WC = 1                     *SET LEGAL WORD COUNT 
53 IF (B3.EQ.0) GOTO 30       *LOOP IF INFINITE FILE COUNT
   GOTO 30 WHILE (B0+1.NE.B3) 
   B5 = 6 
   RES P1, ABT 74 
* 
*---------WRITE .EOF. 
* 
54 B5 = 4 
   ENDFILE , ABT 74 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 2/122 , GOSUB 70
60 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 26                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 26  *IF REPEAT MODULE/CONDITION 
   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)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 26                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2) GOTO 26        *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T7X55 - 
   MODULE T7X56,67X(44,54,55,53)LOCK   -RANDOM WRITE- 
*** T7X56 - RANDOM WRITE
* 
**  T7X56 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X56 CREATES THE TAPE USED FOR RANDOM READ IN
*         MODULE -T7X57-
* 
*         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 - 
* 
*         1. RESERVE. 
*         2. REWIND.
*         3. FILL OB WITH SELECTED DATA PATTERN.
*         4. SET WC TO RANDOM VALUE BETWEEN 4 AND 7777.                  T7X015J
*         5. RELEASE, DELAY AND RESERVE.                                 T7X015J
*         6. BUMP RECORD COUNTER.                                        T7X015J
*         7. ADD ADDRESS CODING.                                         T7X015J
*         8. WRITE. 
*         9. WAIT PARKED IF SELECTED. 
*        10. GO TO STEP 17 IF *EOT* STATUS. 
*        11. REPORT EC 200 IF STATUS ERROR. 
*        12. REPEAT STEPS 4-11 FOR *RECORD MAX* RECORDS.
*        13. RELEASE, DELAY AND RESERVE.
*        14. ENDFILE. 
*        15. REPORT EC 122 IF STATUS IS NOT *EOF*.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. GO TO STEP 1 IF REPEAT MODULE. 
*        18. RELEASE. 
*        19. EXIT.
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X56 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X56 - ABORT ON .WRITE. COMMAND - 
*         4. T7X56 - ABORT ON .ENDFILE. COMMAND - 
*         5. T7X56 - ABORT ON .RES. COMMAND - 
*         6. T7X56 - ABORT ON .REL. COMMAND - 
*         7. T7X56 - ABORT ON .REWIND. COMMAND -
*         8. T7X56 - ABORT ON .WAITNB. COMMAND -
* 
*         9. -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
*** T7X56 - 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
*         B5 = TRACK SIZE (6 OR 8)
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X56 - RANDOM WRITE -
 2 FORMAT T7X56 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X56 - ABORT ON .WRITE. COMMAND -
 5 FORMAT T7X56 - ABORT ON .ENDFILE. COMMAND -
 6 FORMAT T7X56 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X56 - ABORT ON .REL. COMMAND -
10 FORMAT T7X56 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X56 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X56 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X56 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 5034 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
21 B5 = 6 
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
* 
*---------REWIND
* 
   B5 = 10
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74              *REWIND 
   B0 = 0                     *CLEAR FILE COUNT 
   B1 = 0                     *CLEAR RECORD COUNT 
* 
*---------FILL WRITE BUFFER WITH SELECTED PATTERN 
* 
   IF(P4.AND.3000.EQ.2000) GOTO 25    *IF RANDOM PATTERN                 T7X015J
   B5 = 10
   B2 = 500 
   IF(DC.AND.10.NE.0)GOTO 22  *IF 9 TRACK TAPE. 
   B5 = 6                     *TRACK SIZE (6 OR 8)
22 B4 = P4
   IF(P4.AND.3000.EQ.1000)B4=P4.XOR.7777
   DUP B5 BITS OF P4/B4 TO OB FOR B2
   GOTO 30                                                               T7X015J
25 RANDOM TO OB FOR 500, START P7                                        T7X015J
* 
*---------ADDRESS CODING ALWAYS WRITTEN 
* 
30 WC = RT                   *GENERATE RANDOM WORD COUNT                 T7X015J
   IF(WC.LT.4) GOTO 30       *INSURE IT IS BETWEEN 4 - 7777              T7X015J
   GOSUB 60                                                              T7X015J
33 B1 = B1 + 1
   IF(B1.EQ.7777) GOTO 33     *BUMP RECORD COUNT
42 OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
* 
*---------WRITE RANDOM LENGTH RECORDS (4-7777)
* 
   B5 = 4 
   B7 = 1                     *FORWARD WRITE CODE 
   WRITE , ABT 74 
   IF(P3.AND.20.NE.0)GOTO 46  *BYPASS WAIT *PARKED* 
   B5 = 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(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                   *RELEASE-DELAY-RESERVE
   B5 = 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.LE.P8)GOTO 30        *LOOP FILE MAX TIMES
   B5 = 7 
   REL, ABT 74
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57         *NO ERRORS
56 MSG 15 (BA) TO DAYFILE     *REPORT ERRORS
57 EXIT                       *NORMAL TERMINATION 
* 
*---------RELEASE-DELAY-RESERVE SUBROUTINE
* 
60 IF(P5+P6.LT.20D) GOTO 61   *BYPASS REL ON SHORT DELAY
   B5 = 7 
   REL, ABT 74                *RELEASE
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T7X56 - 
   MODULE T7X57,67X(44,54,55,53)LOCK   -RANDOM READ(FWD PORTION)- 
*** T7X57 - RANDOM READ (FORWARD PORTION) 
* 
**  T7X57 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THE TAPE USED BY THIS MODULE MUST BE CREATED
*         BY -T7X56-. 
*         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 THIS TIME AN EXIT TO -T7X57A- IS
*         EXECUTED AND A REVERSE READ IS PERFORMED UNTIL
*         LOAD POINT IS DETECTED. 
* 
*         T7X57 (READ FORWARD) SUPPORTS REPEAT CONDITION BY 
*         REWINDING THE TAPE AND CONTINUING THE READ FORWARD. 
*         T7X57A (READ REVERSE) DOES NOT SUPPORT REPEAT CONDITION 
*         DUE TO THE INABILITY TO CORRECTLY POSITION TAPE.
* 
* 
*   DESCRIPTION - 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. RELEASE, DELAY AND RESERVE.
*         5. READ FORWARD.
*         6. WAIT PARKED IF SELECTED. 
*         7. GO TO STEP 19 IF *EOT* STATUS. 
*         8. REPORT EC 207 IF *EOF* STATUS DETECTED AND NOT 
*            EXPECTED (IF REQUESTED TO DO SO BY THE USER).
*         9. REPORT EC 203 IF STATUS ERROR. 
*        10. REPORT EC 211 IF FILE COUNT ERROR ( WORD 1 OF IB IN ERROR) 
*        11. REPORT EC 212 IF RECORD ERROR     ( WORD 2 OF IB IN ERROR) 
*        12. REPORT EC 213 IF WT IN ERROR      ( WORD 3 OF IB IN ERROR) 
*        13. RELEASE IF DATA COMPARE SELECTED. OTHERWISE, GO TO STEP 17.
*        14. GENERATE EXPECTED DATA PATTERN INTO OB.
*        15. ADD EXPECTED ADDRESS CODING TO OB. 
*        16. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        17. REPEAT STEPS 4-16 FOR *RECORD MAX* RECORDS.
*        18. REPEAT STEPS 4-17 FOR *FILE MAX* FILES.
*        19. EXIT TO T7X57A.
* 
* 
*        20. RELEASE, DELAY AND RESERVE.
*        21. READ REVERSE.
*        22. WAIT PARKED IF SELECTED. 
*        23. GO TO STEP 28 IF LOADPOINT STATUS. 
*        24. REPORT EC 207 IF *EOF* STATUS DETECTED AND NOT 
*            EXPECTED (IF REQUESTED TO DO SO BY THE USER).
*        25. REPORT EC 202 IF STATUS ERROR. 
*        26. REPEAT STEPS 20-25 FOR *RECORD MAX* RECORDS. 
*        27. REPEAT STEPS 20-26 FOR *FILE MAX* FILES. 
*        28. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X57 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X57 - ABORT ON .READ FWD. COMMAND -
*         4. T7X57 - ABORT ON .RES. COMMAND - 
*         5. T7X57 - ABORT ON .REL. COMMAND - 
*         6. T7X57 - ABORT ON .REWIND. COMMAND -
*         7. T7X57 - ABORT ON .WAITNB. COMMAND -
* 
* 
* 
*         8. -EC 105- DATA COMPARE ERROR.  THE FIRST 400B WORDS (OR THE 
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED
*            DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE 
*            REPORTED.
* 
*         9. -EC 202- A STATUS ERROR OCCURRED ON A READ REVERSE.
* 
*        10. -EC 203- THE ALERT BIT IN GENERAL STATUS WAS SET DURING A
*            READ FORWARD OPERATION.
* 
*        11. -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.
* 
*        12. -EC 211- INCORRECT FILE DETECTED DURING A RANDOM READ. 
*            (SEE NOTE IN -T7X98B- DOCUMENTATION) 
* 
*        13. -EC 212- INCORRECT RECORD HAS BEEN DETECTED DURING A 
*            RANDOM READ. (SEE NOTE IN -T7X98B-)
* 
*        14. -EC 213- INCORRECT RECORD LENGTH HAS BEEN DETECTED 
*            DURING A REVERSE READ. 
* 
* 
*** T7X57 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = RANDOM SEED FOR PATTERN GERNERATOR 
*            = PATTERNS FOR STORING 
*         B3 = FM FLAG
*         B4 = BUFFER LIMIT FOR DUP (7TK OR 9TK)
*         B5 = TRACK SIZE (6 OR 8)
*            = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*            = MARGINS
*            = WORDS TRANSMITTED
*            = WORDS TO COMPARE 
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = COMPARE CHECK FLAG 
*         B9 = RESERVE PARAMETER P1 AND ERROR CORRECTION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X57 - RANDOM READ (FORWARD) - 
 2 FORMAT T7X57 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X57 - ABORT ON .READ FWD. COMMAND - 
 6 FORMAT T7X57 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X57 - ABORT ON .REL. COMMAND -
10 FORMAT T7X57 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X57 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X57 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X57 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 5014, ODDCT TO 40
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE. 
   B5 = P3.RS.6               *MARGIN BITS IN P3
   MARGINS B5                 *SELECT MARGINS 
21 B5 = 6 
   RES P1, ABT 74             *RESERVE
* 
*---------REWIND
* 
   B5 = 10
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74              *REWIND 
   WC = 500                   *SET WC REG 
   B0 = 0                     *CLEAR FILE COUNT 
   B1 = 0                     *CLEAR RECORD COUNT 
   B3 = 0                     *CLEAR FM/TM FLAG 
30 B1 = B1 + 1                *INCREMENT RECORD COUNT 
   IF(B1.EQ.7777) GOTO 30     *BUMP RECORD COUNT
   GOSUB 60                   *RELEASE-RESERVE
* 
*---------READ FORWARD
* 
   B5 = 4 
   B7 = 5                     *READ FORWARD CODE
   READ FWD , ABT 74
   IF(P3.AND.20.NE.0)GOTO 31  *BYPASS WAIT *PARKED* 
   B5= 11 
   WAITNB, ABT 74 
* 
*---------TEST STATUS 
* 
31 IF(SB(1).AND.EOT.NE.0) GOTO 55        *END OF TAPE 
   IF(SB(1).AND.FILEMK.EQ.0) GOTO 32     *NO FM/TM
   IF(B3.EQ.1) GOTO 53                   *FM/TM EXPECTED
   IF(P4.AND.4000.NE.0) ERROR 2/207, GOTO 70  *REPORT 207 
32 IF(SB(1).AND.ERROR.NE.0) ERROR 2/203, GOTO 70
   IF(IB(1).NE.B0) ERROR 2/211, GOTO 70  *FILE ERROR
   IF(IB(2).NE.B1) ERROR 2/212, GOTO 70  *RECORD ERROR
34 B5 = WT
35 IF(IB(3).NE.B5) ERROR 2/213, GOTO 70  *WT ERROR
* 
*---------COMPARE 
* 
36 IF(P3.AND.2.EQ.0) GOTO 53             *NO DATA COMPARE 
   B5 = 7 
   REL, ABT 74               *RELEASE 
   IF(P4.AND.3000.NE.2000) GOTO 37       *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 50
37 B5 = 10
   B4 = 500 
   IF(DC.AND.10.NE.0) GOTO 40            *IF 9 TRACK UNIT 
   B5 = 6 
40 B2 = P4
   IF(P4.AND.3000.EQ.1000)B2=P4.XOR.7777
   DUP B5 BITS OF P4/B2 TO OB FOR B4
50 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   IF(WT.GT.B5) GOTO 51 
   B5 = WT - 1
51 COMPARE IB TO OB FOR B5, ABT 67
53 IF(B3.EQ.0) GOTO 54        *FM/TM NOT READ 
   B3 = 0                     *CLEAR FM/TM FLAG 
   B1 = B1 - 1                *DECREMENT RECORD CNT 
54 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 
55 B6 = B6 + 1
   IF(ES.AND.SL.EQ.0) GOTO 56  *NOT SCOPING 
   MSG 14(BA,B6) TO DISPLAY 
   GOTO 21
56 IF(ES.AND.CM.NE.0) GOTO 21  *IF REPEAT COND. OR MODULE 
   IF(BA.EQ.0) GOTO 57        *NO ERRORS
   MSG 15 (BA) TO DAYFILE 
57 EXIT TO 57A                *EXIT TO READ (REV) 
* 
*---------RELEASE-DELAY-RESERVE 
* 
60 B5 = 7 
   REL, ABT 74
61 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 62        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
62 DELAY B5 MSEC
   B5 = 6 
   RES P1, ABT 74             *RESERVE
   RETURN 
* 
*---------PROCESS MODULE DETECTED ERROR(S)
* 
67 ERROR 2/105                *DATA COMPARE ERROR 
   B8 = 1                     *SET COMPARE CHECK FLAG 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 53                    *CONTINUE TESTING 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(B8.EQ.0) GOTO 36        *COMPARE
   B8 = 0 
   GOTO 53                    *CONTINUE TESTING 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T7X57 - 
   MODULE T7X57A,67X(44,54,55,53)LOCK   - RANDOM READ (REVERSE) 
 1 FORMAT T7X57A - RANDOM READ (REVERSE)
 2 FORMAT T7X57A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 4 FORMAT T7X57A - ABORT ON .READ REV. COMMAND -
 5 FORMAT T7X57A - ABORT ON .RES. COMMAND - 
 6 FORMAT T7X57A - ABORT ON .REL. COMMAND - 
 7 FORMAT T7X57A - ABORT ON .REWIND. COMMAND -
10 FORMAT T7X57A - ABORT ON .WAITNB. COMMAND -
14 FORMAT T7X57A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT T7X57A ERROR(S) IN MODULE = *DEC
* 
   EQUATE ALERT TO 4000, LOADPT TO 4, FILEMK TO 20
* 
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   IF(P8.EQ.0) GOTO 22        *RECORD COUNT TO EOT
   IF(P9.EQ.0) GOTO 22        *RECORD COUNT TO EOT
   B0 = B0 - 1                *FILE COUNT 
   B1 = P9                    *RECORD COUNT=REC MAX 
22 IF(P5+P6.LT.20D) GOTO 23   *BYPASS REL ON SHORT DELAY
   B5 = 6 
   REL, ABT 74                *RELEASE
23 B5 = P6                    *DELAY PARAM TO B5
   IF(P5.EQ.0) GOTO 24        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
24 DELAY B5 MSEC
   B5 = 5 
   IF(P1.AND.4000.EQ.4000) B9 = P1   *SET ERROR CORRECTION DISABLED 
   IF(P1.AND.4000.EQ.0) B9 = P1.AND.1777   *SET ERROR CORRECTION ENABLED
   RES B9, ABT 74             *RESERVE
* 
*---------READ REVERSE
* 
   B5 = 4 
   B7 = 6                     *READ REVERSE CODE
   READ REV , ABT 74
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = 10
   WAITNB, ABT 74 
40 IF(SB(1).AND.LOADPT.NE.0)GOTO 55   *LOAD POINT DETECTED
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 44   *NO FILE MARK DETECTED
   IF(B3.EQ.1)GOTO 50                 *DO NOT EXPECT FM/TM
   IF(P4.AND.4000.EQ.0)GOTO 50        *DO NOT REPORT FM ERRS
   ERROR 2/207,GOSUB 70               *EOF NOT EXPECTED 
   GOTO 50
44 IF(SB(1).AND.ALERT.EQ.0) GOTO 45  *NO ALERT DETECTED 
   ERROR 2/202 , GOSUB 70 
45 B1 = B1 - 1                *DECREMENT RECORD COUNT 
   GOTO 50
50 IF(B3.EQ.0)GOTO 51                 *NOT A FM/TM READ 
   B3 = 0 
51 B6 = B6 + 1                        *LOOP COUNT 
   IF(B1.NE.0) GOTO 22                *MORE RECORDS IN FILE 
   B3 = 1                             *FM/TM FLAG 
   B1 = P9
   IF(P9.EQ.0) GOTO 22        *GO TO EOT
   GOTO 22 WHILE (B0-1.GE.0)  *DECREMENT FILE COUNT 
55 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)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 71  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 22                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 22         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X57A - 
   MODULE T7X58,67X(44,54,55,53)LOCK   - POLYNOMIAL TEST -
*** T7X58 - POLYNOMIAL TEST 
* 
**    T7X58 - EXTERNAL DOCUMENTATION
* 
*     OVERVIEW -
* 
*           T7X58 VERIFIES WRITE/READ DATA INTEGRITY BY COMPARING 
*           THE POLYNOMIALS GENERATED WHILE WRITING SPECIFIED DATA
*           RECORDS WITH THE POLYNOMIALS GENERATED WHEN THE SAME
*           RECORDS ARE READ.  TWO RECORDS ARE WRITTEN, BACKSPACED
*           OVER AND READ FOR EACH ITERATION. 
* 
*           TESTING CONTINUES UNTIL FILE MAX OR EOT IS REACHED. 
* 
* 
*     DESCRIPTION - 
* 
*           1. SELECT MARGINS.
*           2. SET WC TO (P2) OR 5, WHICHEVER IS GREATER. 
*           3. RELEASE, DELAY AND RESERVE.
*           4. REWIND.
*           5. SET *FILE MAX* TO 64 IF RUNNING DIAGNOSTIC MODE. 
*           6. RELEASE, DELAY AND RESERVE.
*           7. GENERATE SELECTED DATA PATTERN IN OB.
*           8. ADD ADDRESS CODING TO OB.
*           9. WRITE RECORD.
*          10. GO TO STEP 26 IF *EOT* STATUS. 
*          11. REPORT EC 200 IF STATUS ERROR. 
*          12. SAVE WRITE POLYNOMIAL FOR THIS RECORD. 
*          13. REPEAT STEPS 2-12 FOR THE SECOND RECORD. 
*          14. RELEASE, DELAY AND RESERVE.
*          15. BKSP.
*          16. REPORT EC 253 IF STATUS ERROR. 
*          17. REPEAT STEPS 14-16 FOR THE FIRST RECORD. 
*          18. RELEASE, DELAY AND RESERVE.
*          19. READ FORWARD.
*          20. REPORT EC 203 IF STATUS ERROR. 
*          21. REPORT EC 232 IF RECORD NUMBER ERROR.
*          22. REPORT EC 233 IF RECORD LENGTH ERROR.
*          23. REPORT EC 234 IF POLYNOMIAL MISCOMPARE (WRITE TO READ).
*          24. REPEAT STEPS 18-23 FOR RECORD 2. 
*          25. REPEAT STEPS 6-24 FOR *FILE MAX* TIMES.
*          26. GO TO STEP 3 IF REPEAT MODULE IS SELECTED. 
*          27. EXIT.
*** 
**
* 
* 
*    ERRORS REPORTED -
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X58 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*         3. T7X58 - ABORT ON .RES. COMMAND - 
*         4. T7X58 - ABORT ON .REWIND. COMMAND -
*         5. T7X58 - ABORT ON .WRITE. COMMAND - 
*         6. T7X58 - ABORT ON .BKSP. COMMAND -
*         7. T7X58 - ABORT ON .READ FWD. COMMAND -
*         8. T7X58 - ABORT ON .REL. COMMAND - 
* 
*         9. EC 200 - AN UNEXPECTED BIT APPEARED IN GENERAL 
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
* 
*        10. EC 203 - ALERT BIT IN GENERAL STATUS WAS SET DURING
*            A READ FORWARD OPERATION.
*            THE INPUT BUFFER CONTAINS THE DATA JUST READ.
* 
*        11. EC 232 - THE RECORD COUNT IS IN ERROR DURING A -READ 
*            FWD- IN THE POLYNOMIAL TEST. (SEE NOTE IN T7X98B)
* 
*        12. EC 233 - THE RECORD LENGTH IS IN ERROR DURING A
*            -READ FORWARD- IN THE POLYNOMIAL SUBTEST.
* 
*        13. EC 234 - THE WRITE POLYNOMIAL AND READ POLYNOMIAL
*            HAVE FAILED TO COMPARE DURING THE -POLYNOMIAL
*            TEST- B4= WRITE POLYNOMIAL, SB(2)= READ POLYNOMIAL.
* 
*        14. EC 253 - A STATUS ERROR OCCURRED ON A BACKSPACE. 
* 
* 
*** T7X58 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 - MARGINS
*            = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = RANDOM DATA STARTER
*            = PATTERN FOR STORING
*         B3 = FILE MAX 
*         B4 = WRITE POLYNOMIAL 
*         B5 = ERROR MESSAGE NUMBER IN CASE OF ABORT
*            = NUMBER OF WORDS TO STORE 
*         B6 = WRITE POLYNOMIAL 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*            = TRACK SIZE (6 OR 8)
*         BA = ERROR COUNT
* 
* 
*    MODULES CALLED - 
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X58 - POLYNOMIAL TEST - 
 2 FORMAT T7X58 - ERROR CODE = *OCT AT LINE (EA) = *OCT 
 4 FORMAT T7X58 - ABORT ON .RES. COMMAND -
 5 FORMAT T7X58 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T7X58 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T7X58 - ABORT ON .BKSP. COMMAND - 
10 FORMAT T7X58 - ABORT ON .READ FWD. COMMAND - 
11 FORMAT T7X58 - ABORT ON .REL. COMMAND -
15 FORMAT T7X58 ERROR(S) IN MODULE = *DEC 
   EQUATE EOT TO 10, ERROR TO 5034
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   B0 = P3.RS.6 
   MARGINS B0                 *SELECT MARGINS PER PARAM P3
   WC = P2                    *SET WORD COUNT 
   IF(WC.GT.4) GOTO 21
   WC = 5 
21 B0 = 0                     *CLEAR FILE COUNT 
   B1 = 0                     *CLEAR RECORD COUNT 
   GOSUB 64                   *REL-DELAY-RES
   B5 = 5 
   B7 = 3                     *REWIND MOTION CODE 
   REWIND, ABT 74 
   B3 = 100                   *FILE COUNT FOR DIAG. MODE
   IF(P3.AND.40.EQ.0)GOTO 30  *DIAG. MODE SELECTED
   B3 = P8                    *MAINT. MODE PASS COUNT FROM USER 
* 
*--------MAIN LOOP
* 
30 GOSUB 50                   *WRITE RECORD 1 
   B4 = SB(2)                 *SAVE RECORD 1 POLYNOMIAL 
   GOSUB 50                   *WRITE RECORD 2 
   B6 = SB(2)                 *SAVE RECORD 2 POLYNOMIAL 
   GOSUB 60                   *BACKSPACE OVER RECORD 2
   GOSUB 60                   *BACKSPACE OVER RECORD 1
   GOSUB 62                   *READ RECORD 1 (B4 = POLYNOMIAL)
   B4 = B6
   GOSUB 62                   *READ RECORD 2 (B4 = POLYNOMIAL)
   B0 = B0 + 1                *BUMP FILE COUNT
   IF(B3.EQ.0) GOTO 30        *IF INFINITE FILE MAX 
   IF(B0.NE.B3) GOTO 30       *IF FILE MAX NOT REACHED
40 IF(ES.AND.CM.NE.0)GOTO 21  *REPEAT MODULE,CONDITION
   IF(BA.EQ.0) GOTO 44        *NO ERRORS
43 MSG 15(BA) TO DAYFILE      *REPORT ERRORS TO DAYFILE 
44 EXIT                       *NORMAL EXIT
* 
*---------WRITE SUBROUTINE
* 
50 B1 = B1 + 1                *BUMP RECORD COUNT
   GOSUB 64                   *REL-DELAY-RES
   B7 = 10
   B5 = 500 
   IF(DC.NE.44) GOTO 52       *IF 9 TK TAPE ASSIGNED
   B7 = 6 
52 IF(P4.AND.7000.NE.2000) GOTO 54     *NOT RANDOM PTRN 
   B2 = P7                             *USER RANDOM SEED
   IF(P3.AND.4.NE.0) GOTO 53           *LOCK TO SEED
   B2 = RT                    *USE REAL TIME CLOCK FOR SEED 
53 RANDOM TO OB FOR 500, START B2 
   GOTO 56
54 B2 = P4
   IF(P4.AND.3000.EQ.1000)B2=P4.XOR.7777
   DUP B7 BITS OF P4/B2 TO OB FOR B5
56 OB(1) = B0                          *ADD ADDRESS CODING
   OB(2) = B1 
   OB(3) = WC 
   B5 = 6 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE, ABT 74
   IF(SB(1).AND.EOT.NE.0) GOTO 57      *IF END OF TAPE
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70 
   RETURN 
57 ENDSUB, GOTO 40            *TERMINATE ON END OF TAPE 
* 
*---------BACKSPACE SUBROUTINE
* 
60 GOSUB 64                   *REL-DELAY-RES
   B5 = 7 
   B7 = 6                     *READ REVERSE MOTION CODE 
   B1 = B1 - 1                *DECREMENT RECORD COUNT 
   BKSP, ABT 74 
   IF(SB(1).AND.EOT.NE.0) GOTO 40   *EOT
   IF(SB(1).AND.4000B.NE.0) ERROR 2/253, GOSUB 70   *ALERT
   RETURN 
* 
*--------READ FORWARD SUBROUTINE
* 
62 GOSUB 64                   *REL-DELAY-RES
   B5 = 10
   B7 = 5                     *READ FORWARD MOTION CODE 
   B1 = B1 + 1                *BUMP RECORD COUNT
   READ FWD, ABT 74 
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/203, GOTO 63
   IF(IB(2).NE.B1) ERROR 2/232, GOTO 63  *RECORD ERROR
   IF(IB(3).NE.WC) ERROR 2/233, GOTO 63  *LENGTH ERROR
   IF(SB(2).NE.B4) ERROR 2/234, GOTO 63  *POLYNOMIAL ERROR
   RETURN 
63 GOSUB 70 
   RETURN 
* 
*---------RELEASE-DELAY-RESERVE SUBROUTINE
* 
64 IF(P5+P6.LT.20D) GOTO 65   *BYPASS REL ON SHORT DELAY
   B5 = 11
   REL, ABT 74
65 B5 = P6                    *FIXED DELAY TIME 
   IF(P5.EQ.0) GOTO 66        *USE FIXED DELAY FROM P6
   B5 = RT.AND.P5             *USE RT CLOCK AND MASK
66 DELAY B5 MSEC
   B5 = 4 
   RES P1, ABT 74 
   RETURN 
* 
*---------PROCESS MODULE DETECTED ERROR(S)
* 
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *CONTINUE TESTING 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   MSG B5 TO LINE 0 
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 GOTO 43                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X58 -
   MODULE T7X59,67X(44,54,55,53)LOCK   - POSITION TEST (67X/ATS) -
*** T7X59 - POSITION TEST  (67X/ATS)
* 
**  T7X59 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X59A IS EXECUTED. 
  
*         T7X59 VERIFIES THE ABILITY OF THE TAPE SUBSYSTEM TO 
*         MAINTAIN TAPE POSITION WITHOUT DROPPING OR PICKING
*         RECORDS DURING TYPICAL WRITE RECOVERY SEQUENCES USED
*         BY OPERATING SYSTEM DRIVERS.  A SOMEWHAT COMPLEX SEQUENCE 
*         IS USED, SO TO PROMOTE UNDERSTANDING, THE DETAIL HAS
*         BEEN REMOVED FROM THE SEQUENCE BELOW. 
*         THE TOTAL SEQUENCE IS RE-STARTED IF AN ERROR IS DETECTED
*         DURING ANY OPERATION EXCEPT FOR THE WRITING OF RECORDS
*         5 OR 6 (ERRORS ARE ALLOWED ON THESE RECORDS TO SIMULATE 
*         ACTUAL RECOVERY CONDITIONS).
*         A TOTAL OF 6 RECORDS AND 1 END-OF-FILE MAKE UP THE
*         STRUCTURE OF THE TEST.  EACH RECORD IS UNIQUELY IDENTIFIED
*         IN THAT RECORD 1 DATA IS 1111, RECORD 2 DATA IS 2222, ETC.
*         POLYNOMIALS ARE SAVED WHEN EACH RECORD IS WRITTEN AND ARE 
*         COMPARED WITH POLYNOMIALS GENERATED WHEN EACH RECORD IS 
*         READ (INCLUDING THE END-OF-FILE). 
* 
*         T7X59 RUNS TO EOT OR FILE MAX.
* 
*   DESCRIPTION - 
* 
*         1. REWIND.
*         2. WRITE RECORD 1.
*         3. WRITE RECORD 2.
*         4. WRITE FM.
*         5. WRITE RECORD 3.
*         6. WRITE RECORD 4.
*         7. CONTROLLED BKSP OVER RECORD 4. 
*         8. BKSP OVER RECORDS 3, FM, 2 AND 1.
*         9. READ AND VERIFY RECORDS 1,2,FM AND 3.
*        10. ERASE RECORD 4 (RECORD 4 NO LONGER EXISTS).
*        11. WRITE RECORD 5.
*        12. CONTROLLED BKSP OVER RECORD 5. 
*        13. BKSP OVER ERASED AREA AND RECORDS 3,FM,2 AND 1.
*        14. READ AND VERIFY RECORDS 1,2,FM AND 3.
*        15. ERASE THE ERASED AREA (WHERE RECORD 4 WAS).
*        16. ERASE RECORD 5 (RECORD 5 NO LONGER EXISTS).
*        17. WRITE RECORD 6.
*        18. CONTROLLED BKSP OVER RECORD 6. 
*        19. BKSP OVER ERASED AREAS AND RECORDS 3,FM,2 AND 1. 
*        20. READ AND VERIFY RECORDS 1,2,FM, AND 3. 
*        21. FORESPACE OVER ERASED AREAS AND RECORD 6.
*        22. VERIFY RECORD 6 STATUS AND POLYNOMIAL. 
*        23. REPEAT STEPS 2-22 FOR *FILE MAX* TIMES.
*        24. REPEAT MODULE OR EXIT. 
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERROSRS. 
*         2. T7X59 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
* 
*         3. EC 122- NO FM/TM STATUS IN GENERAL STATUS AT END OF
*            OPERATION AFTER A WRITE FM/TM. 
* 
*         4. EC 200 - AN UNEXPECTED BIT APPEARED IN GENERAL 
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
* 
*         5. EC 240 -AN ABNORMAL STATUS WAS DETECTED DURING A 
*            CONTROLLED BACKSPACE IN THE POSTION SUBTEST. 
* 
*         6. EC 241 - AN ABNORMAL STATUS WAS DETECTED DURING A
*            BACKSPACE IN THE POSITION SUBTEST. 
* 
*         7. EC 242 - AN ABNORMAL STATUS WAS DETECTED DURING A
*            READ FORWARD IN THE POSITION TEST. 
* 
*         8. EC 243 - A COMPARE ERROR HAS OCCURRED WHEN THE WRITE 
*            AND READ POLYNOMIALS WERE COMPARED FOR RECORDS 
*            1, 2 OR 3 IN THE POSITION TEST.
* 
*         9. EC 244 - AN ABNORMAL STATUS WAS DETECTED DURING THE
*            FORESPACE OVER RECORD 6 IN THE POSITION TEST.
* 
*        10. EC 245 - THE READ POLYNOMIAL AND WRITE POLYNOMIAL
*            FOR RECORD 6 HAVE FAILED TO COMPARE IN THE 
*            POSITION TEST.  B6=EXPECTED  SB(2)=ACTUAL
* 
*        11. EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE.
* 
*** T7X59 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT ITERATION(FILE) COUNT
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT RECORD CONTENTS
*         B5 = FILE MAX 
*         B6 = EXPECTED POLYNOMIAL
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X59 - POSITION TEST (67X/ATS) 
 2 FORMAT T7X59 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T7X59 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 5024, FILEMK TO 20, EOT TO 10
* 
20 IF(DC.EQ.53)EXIT TO 59A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   B5 = 100                   *FILE MAX FOR DIAG. MODE
   IF(P3.AND.40.NE.0)B5=P8
21 B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B7 = 3                     *REWIND MOTION CODE 
   REWIND, ABT 74 
22 B2 = 0             *INITIALIZE DATA REGISTER 
   B1 = 0             *CLEAR RECORD COUNTER 
   GOSUB 40           *WRITE RECORD 1 
   GOSUB 40           *WRITE RECORD 2 
   GOSUB 60           *WRITE FM/TM
   GOSUB 40           *WRITE RECORD 3 
   GOSUB 40           *WRITE RECORD 4 
   GOSUB 44           *CB, BKSP ALL RECORDS, READ 1,2,TM,3
   GOSUB 54           *ERASE RECORD 4 
   GOSUB 40           *WRITE RECORD 5 
   GOSUB 44           *CB, BKSP ALL RECORDS, READ 1,2,TM,3
   GOSUB 54           *ERASE ERASED AREA
   GOSUB 54           *ERASE RECORD 5 
   GOSUB 40           *WRITE RECORD 6 
   GOSUB 44           *CB, BKSP ALL RECORDS, READ 1,2,TM,3
   RES P1, ABT 74 
   B7 = 5             *FORWARD READ MOTION CODE 
   FSPACE, ABT 74     *FORESPACE ERASED AREA AND RECORD 6 
   B1 = B1 + 1        *BUMP RECORD COUNT
   IF(SB(1).AND.ERROR.NE.0)ERROR 2/244,GOTO 64
23 B6 = IB(B1+400)             *EXPECTED POLYNOMIAL 
   IF(SB(2).NE.B6) ERROR 2/245, GOSUB 70
   IF(SB(1).AND.EOT.NE.0) GOTO 24      *EXIT IF EOT 
   IF(B5.EQ.0) GOTO 22         *IF INFINITE FILE MAX. 
   GOTO 22 WHILE (B0+1.NE.B5)  *DO FILE MAX TIMES 
24 B0 = 0                      *CLEAR LOOP COUNT
   IF(ES.AND.CM.NE.0) GOTO 21  *IF REPEAT MODULE,CONDITON 
   IF(BA.NE.0)MSG 3(BA)TO DAYFILE 
25 EXIT 
* 
*-------------WRITE A RECORD SUBROUTINE 
* 
40 B2 = B2 + 1111             *DATA TO WRITE IN THIS RECORD 
   DUP B2 TO OB FOR 500 
   RES P1, ABT 74 
   WC = P2                    *SET WORD COUNT 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE LONG, ABT 74 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(SB(1).AND.ERROR.EQ.0) GOTO 41    *IF NO ERROR 
   ERROR 2/200, GOSUB 70
   IF(B1.LE.4)ENDSUB,GOTO 22
41 IB(B1+400) = SB(2)         *SAVE WRITE POLYNOMIAL
   RETURN 
* 
*-------------CONTROL BACKSPACE AND BACKSPACE ALL RECORDS 
*             THEN READ RECORDS 1,2, TAPE MARK, AND 3.
* 
44 RES P1, ABT 74 
   B7 = 2                     *MOTION CODE FOR REVERSE WRITE
   BKSP C LONG, ABT 74
   B1 = B1 - 1                *DECREMENT RECORD NUMBER
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/240, GOTO 64
45 RES P1, ABT 74 
   B7 = 6                     *REVERSE READ CODE
   BKSP, ABT 74 
   B1 = B1 - 1                *DECREMENT RECORD NUMBER
   IF(SB(1).AND.ERROR.EQ.0) GOTO 47 
   IF(B1.NE.2) GOTO 46        *IF NOT TIME FOR FM/TM
   IF(SB(1).AND.FILEMK.NE.0) GOTO 47  *OK IF FM/TM
46 ERROR 2/241, GOTO 64 
47 IF(B1.NE.0) GOTO 45        *BKSP ALL RECORDS 
* 
*-------------READ SUBROUTINE 
* 
50 RES P1, ABT 74 
   B7 = 5                     *READ FORWARD CODE
   WC = 400                   *SET WC TO PROTECT IB(400-477)
   READ FWD, ABT 74 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(B1.NE.3) GOTO 52        *IF NOT TIME FOR FM/TM
   IF(SB(1).AND.ERROR.EQ.FILEMK) GOTO 53  *OK IF FM/TM
51 ERROR 2/242, GOTO 64       *REPORT ERROR AND RESTART 
52 IF(SB(1).AND.ERROR.NE.0) GOTO 51 
53 IF(SB(2).NE.IB(B1+400)) ERROR 2/243,GOSUB 70 
   IF(B1.NE.4) GOTO 50        *READ 1,2,TM,3
   RETURN 
* 
*-------------ERASE SUBROUTINE
* 
54 RES P1, ABT 74 
   B7 = 1                     *FORWARD WRITE CODE 
   ERASE, ABT 74
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/246, GOTO 64
55 RETURN 
* 
*-------------ENDFILE SUBROUTINE
* 
60 RES P1, ABT 74 
   B7 = 1                     *FORWARD WRITE CODE 
   ENDFILE, ABT 74
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(SB(1).AND.ERROR.EQ.FILEMK)GOTO 41 
   ERROR 2/122
* 
*---------PROCESS MODULE DETECTED ERROR(S)
* 
64 GOSUB 70 
   ENDSUB, GOTO 22            *RESTART
* 
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
71 MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *CONTINUE TESTING 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 GOTO 24                    *ABNORMAL TERMINATION 
   END 20 
COMPILE    - T7X59 -
   MODULE T7X59A,67X(53)LOCK   - 698 POSITION TEST -
*** T7X59A - 698 POSITION TEST -
* 
**  T7X59A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         T7X59A VERIFIES THE ABILITY OF THE TAPE SUBSYSTEM TO
*         MAINTAIN TAPE POSITION WITHOUT DROPPING OR PICKING
*         RECORDS DURING TYPICAL WRITE RECOVERY SEQUENCES USED
*         BY OPERATING SYSTEM DRIVERS.  A SOMEWHAT COMPLEX SEQUENCE 
*         IS USED, SO TO PROMOTE UNDERSTANDING, THE DETAIL HAS
*         BEEN REMOVED FROM THE SEQUENCE BELOW. 
*         THE TOTAL SEQUENCE IS RE-STARTED IF AN ERROR IS DETECTED
*         DURING ANY OPERATION EXCEPT FOR THE WRITING OF RECORDS
*         5 OR 6 (ERRORS ARE ALLOWED ON THESE RECORDS TO SIMULATE 
*         ACTUAL RECOVERY CONDITIONS).
*         A TOTAL OF 6 RECORDS AND 1 END-OF-FILE MAKE UP THE
*         STRUCTURE OF THE TEST.  EACH RECORD IS UNIQUELY IDENTIFIED
*         IN THAT RECORD 1 DATA IS 1111, RECORD 2 DATA IS 2222, ETC.
*         POLYNOMIALS ARE SAVED WHEN EACH RECORD IS WRITTEN AND ARE 
*         COMPARED WITH POLYNOMIALS GENERATED WHEN EACH RECORD IS 
*         READ (INCLUDING THE END-OF-FILE). 
* 
*         T7X59A RUNS TO EOT OR FILE MAX. 
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE
*         MODE.  REPEAT MODULE IS SUPPORTED.
* 
*   DESCRIPTION - 
* 
*         1. REWIND.
*         2. WRITE RECORD 1.
*         3. WRITE RECORD 2.
*         4. WRITE FM.
*         5. WRITE RECORD 3.
*         6. WRITE RECORD 4.
*         7. BKSP OVER RECORD 4.
*         8. BKSP OVER RECORDS 3, FM, 2 AND 1.
*         9. READ AND VERIFY RECORDS 1,2,FM AND 3.
*        10. ERASE RECORD 4 (RECORD 4 NO LONGER EXISTS).
*        11. WRITE RECORD 5.
*        12. BKSP OVER RECORD 5.
*        13. BKSP OVER ERASED AREA AND RECORDS 3,FM,2 AND 1.
*        14. READ AND VERIFY RECORDS 1,2,FM AND 3.
*        15. ERASE THE ERASED AREA (WHERE RECORD 4 WAS).
*        16. ERASE RECORD 5 (RECORD 5 NO LONGER EXISTS).
*        17. WRITE RECORD 6.
*        18. BKSP OVER RECORD 6.
*        19. BKSP OVER ERASED AREAS AND RECORDS 3,FM,2 AND 1. 
*        20. READ AND VERIFY RECORDS 1,2,FM, AND 3. 
*        21. FORESPACE OVER ERASED AREAS AND RECORD 6.
*        22. VERIFY RECORD 6 STATUS AND POLYNOMIAL. 
*        23. REPEAT STEPS 2-22 FOR *FILE MAX* TIMES.
*        24. REPEAT MODULE OR EXIT. 
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERROSRS. 
* 
*         2. T7X59A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. T7X59A - ABORT ON .BKSP. COMMAND - 
*         4. T7X59A - ABORT ON .READ REV. COMMAND - 
*         5. T7X59A - ABORT ON .WRITE. COMMAND -
*         6. T7X59A - ABORT ON .RES. COMMAND -
*         7. T7X59A - ABORT ON .REL. COMMAND -
*         8. T7X59A - ABORT ON .REWIND. COMMAND - 
*         9. T7X59A - ABORT ON .WAITNB. COMMAND - 
  
*        10. EC 122- NO FM/TM STATUS IN GENERAL STATUS AT END OF
*            OPERATION AFTER A WRITE FM/TM. 
* 
*        11. EC 200 - AN UNEXPECTED BIT APPEARED IN GENERAL 
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
* 
*        12. EC 241 - AN ABNORMAL STATUS WAS DETECTED DURING A
*            BACKSPACE IN THE POSITION SUBTEST. 
* 
*        13. EC 242 - AN ABNORMAL STATUS WAS DETECTED DURING A
*            READ FORWARD IN THE POSITION TEST. 
* 
*        14. EC 243 - A COMPARE ERROR HAS OCCURRED WHEN THE WRITE 
*            AND READ POLYNOMIALS WERE COMPARED FOR RECORDS 
*            1, 2 OR 3 IN THE POSITION TEST.
* 
*        15. EC 244 - AN ABNORMAL STATUS WAS DETECTED DURING THE
*            FORESPACE OVER RECORD 6 IN THE POSITION TEST.
* 
*        16. EC 245 - THE READ POLYNOMIAL AND WRITE POLYNOMIAL
*            FOR RECORD 6 HAVE FAILED TO COMPARE IN THE 
*            POSITION TEST.  B6=EXPECTED  SB(2)=ACTUAL
* 
*        17. EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE.
* 
  
*** T7X59A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT ITERATION(FILE) COUNT
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT RECORD CONTENTS
*         B3 = PASS COUNT 
*         B5 = FILE MAX 
*         B6 = EXPECTED POLYNOMIAL
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = ERROR MESSAGE NUMBER 
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X59A - 698 POSITION TEST -
 2 FORMAT T7X59A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 3 FORMAT T7X59A ERROR(S) IN MODULE = *DEC
 4 FORMAT T7X59A - ABORT ON .BKSP. COMMAND -
 5 FORMAT T7X59A - ABORT ON .READ FWD. COMMAND -
 6 FORMAT T7X59A - ABORT ON .WRITE. COMMAND - 
 7 FORMAT T7X59A - ABORT ON .RES. COMMAND - 
10 FORMAT T7X59A - ABORT ON .ERASE. COMMAND - 
11 FORMAT T7X59A - ABORT ON .REWIND. COMMAND -
12 FORMAT T7X59A - ABORT ON .FSPACE. COMMAND -
13 FORMAT T7X59A - ABORT ON .ENDFILE. COMMAND - 
* 
20 MSG 1 TO PRINT           *RUNNING MESSAGE
21 MSG 1 TO DISPLAY         *RUNNING MESSAGE
26 B5 = 100                   *FILE MAX FOR DIAG. MODE
   IF(P3.AND.40.NE.0)B5=P8
   B8 = 7 
   RES P1, ABT 74             *RESERVE
   B7 = 3                     *REWIND MOTION CODE 
   B8 = 11
   REWIND, ABT 74 
22 B2 = 0             *INITIALIZE DATA REGISTER 
   B1 = 0             *CLEAR RECORD COUNTER 
   GOSUB 40           *WRITE RECORD 1 
   GOSUB 40           *WRITE RECORD 2 
   GOSUB 60           *WRITE FM/TM
   GOSUB 40           *WRITE RECORD 3 
   GOSUB 40           *WRITE RECORD 4 
   GOSUB 44           *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3
   GOSUB 54           *ERASE RECORD 4 
   GOSUB 40           *WRITE RECORD 5 
   GOSUB 44           *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3
   GOSUB 54           *ERASE ERASED AREA
   GOSUB 54           *ERASE RECORD 5 
   GOSUB 40           *WRITE RECORD 6 
   GOSUB 44           *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3
   B8 = 12
   B7 = 5             *FORWARD READ MOTION CODE 
   FSPACE, ABT 74     *FORESPACE ERASED AREA AND RECORD 6 
   B1 = B1 + 1        *BUMP RECORD COUNT
   IF(SB(1).AND.5024.NE.0)ERROR 2/244,GOTO 64 
23 B6 = IB(B1+400)             *EXPECTED POLYNOMIAL 
   IF(SB(2).NE.B6) ERROR 2/245, GOSUB 70
   IF(SB(1).AND.10.NE.0) GOTO 24      *EXIT IF EOT
   IF(B5.EQ.0) GOTO 22         *IF INFINITE FILE MAX. 
   GOTO 22 WHILE (B0+1.NE.B5)  *DO FILE MAX TIMES 
24 B0 = 0                      *CLEAR LOOP COUNT
   IF(ES.AND.RM.NE.0) GOTO 21  *IF REPEAT MODULE
   IF (BA.NE.0) MSG 3(BA)TO DAYFILE 
25 EXIT 
* 
*  -----------WRITE A RECORD SUBROUTINE 
* 
40 B2 = B2 + 1111             *DATA TO WRITE IN THIS RECORD 
   DUP B2 TO OB FOR 500 
   B8 = 7 
   RES P1, ABT 74 
   WC = P2                    *SET WORD COUNT 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   B8 = 6 
   WRITE LONG, ABT 74 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(SB(1).AND.5024.EQ.0) GOTO 41    *IF NO ERROR
   ERROR 2/200, GOSUB 70
41 IB(B1+400) = SB(2)         *SAVE WRITE POLYNOMIAL
   RETURN 
* 
*  -----------BACKSPACE ALL RECORDS 
*             THEN READ RECORDS 1,2, TAPE MARK, AND 3.
* 
44 B7 = 6                     *MOTION CODE FOR REVERSE WRITE
   B8 = 4 
   BKSP ABT 74
   B1 = B1 - 1                *DECREMENT RECORD NUMBER
   IF(SB(1).AND.5024.NE.0) ERROR 2/241, GOTO 64 
45 BKSP, ABT 74 
   B1 = B1 - 1                *DECREMENT RECORD NUMBER
   IF(SB(1).AND.5024.EQ.0) GOTO 47
   IF(B1.NE.2) GOTO 46        *IF NOT TIME FOR FM/TM
   IF(SB(1).AND.20.NE.0) GOTO 47  *OK IF FM/TM
46 ERROR 2/241, GOTO 64 
47 IF(B1.NE.0) GOTO 45        *BKSP ALL RECORDS 
* 
*  -----------READ SUBROUTINE 
* 
50 B8 = 7 
   RES P1, ABT 74 
   B7 = 5                     *READ FORWARD CODE
   WC = 400                   *SET WC TO PROTECT IB(400-477)
   B8 = 5 
   READ FWD, ABT 74 
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(B1.NE.3) GOTO 52        *IF NOT TIME FOR FM/TM
   IF(SB(1).AND.5024.EQ.20) GOTO 53  *OK IF FM/TM 
51 ERROR 2/242, GOTO 64       *REPORT ERROR AND RESTART 
52 IF(SB(1).AND.5024.NE.0) GOTO 51
53 B6 = IB(B1+400)               *POLYNOMIAL
   IF(SB(2).NE.IB(B1+400)) ERROR 2/243,GOSUB 70 
   IF(B1.NE.4) GOTO 50           *READ 1,2,TM,3 
   RETURN 
* 
*  -----------ERASE SUBROUTINE
* 
54 B7 = 1                     *FORWARD WRITE CODE 
   B8 = 10
   ERASE, ABT 74
   IF(SB(1).AND.5024.NE.0) ERROR 2/246, GOTO 64 
55 RETURN 
* 
*  -----------ENDFILE SUBROUTINE
* 
60 B7 = 1                     *FORWARD WRITE CODE 
   B8 = 13
   ENDFILE, ABT 74
   B1 = B1 + 1                *BUMP RECORD COUNT
   IF(SB(1).AND.5024.EQ.20)GOTO 41
   ERROR 2/122
* 
*  -------PROCESS MODULE DETECTED ERROR(S)
* 
64 GOSUB 70 
65 ENDSUB, GOTO 75            *RETRY
* 
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   MSG EM(EC,EA) TO LINE 0    *ERROR CODE MESSAGE 
   CALL 98A                   *ERROR CODE PROCESSOR 
   GOTO 65                    *CONTINUE TESTING 
* 
*  -------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   MSG B8 TO LINE 0           *PRODUCT OVERLAY ERROR MESSAGE
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
75 MSG 1 TO DISPLAY 
   IF(BA.LT.2) GOTO 26        *RETRY
   GOTO 24                    *REPEAT MODULE OR EXIT. 
   END 20 
COMPILE    - T7X59A - 
   MODULE T7X60,67X(44,54,55,53)LOCK   - 67X LADDER TEST -
*** T7X60 - 67X LADDER TEST 
* 
**  T7X60 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X60A IS EXECUTED. 
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE DENSITY
*         AND PATTERN SELECTED BY THE *PARAM* DIRECTIVE 
* 
*         RECORDS ARE WRITTEN ON TAPE FROM LOAD POINT 
*         TO END OF TAPE.  RECORD LENGTHS VARY FROM 1 
*         TO 7777 WORDS, THEN ARE DECREMENTED FROM 7777 
*         BACK TO 1.
*         WHEN EOT IS REACHED, A READ REVERSE IS
*         EXECUTED UNTIL LOAD POINT IS REACHED.  IF 
*         REPEAT MODULE IS SELECTED, A READ FORWARD 
*         TO EOT IS DONE.  THE READING FORWARD AND
*         REVERSE CONTINUES UNTIL STOPPED BY THE
*         USER. 
* 
*   DESCRIPTION - 
* 
*         1. FILL OB WITH SELECTED DATA PATTERN.
*         2. SELECT MARGINS.
*         3. RESERVE. 
*         4. REWIND.
*         5. SET WC = 1.
*         6. RESERVE. 
*         7. WRITE. 
*         8. BUMP RECORD COUNT IN B0/B1.
*         9. WAIT PARKED IF SELECTED. 
*        10. GO TO STEP 14 IF *EOT*.
*        11. REPORT EC 200 IF STATUS ERROR. 
*        12. BUMP WC BY 1 (ADD 1 IF INCREMENTING UNTIL IT REACHES 
*            7777. THEN DECREMENT IT BY 1 UNTIL IT REACHES 0. THEN
*            START INCREMENTING IT AGAIN).
*        13. REPEAT STEPS 6-12 UNTIL *EOT* IS DETECTED. 
*        14. RESERVE. 
*        15. READ REVERSE.
*        16. GO TO STEP 21 IF *BOT*.
*        17. DECREMENT RECORD COUNT IN B0/B1. 
*        18. WAIT PARKED IF SELECTED. 
*        19. REPORT EC 202 IF STATUS ERROR. 
*        20. REPEAT STEPS 14-19 UNTIL *BOT* IS DETECTED.
*        21. REPORT EC 267 IF B0/B1 ARE NOT ZERO (NUMBER OF RECORDS 
*            READ DOES NOT EQUAL NUMBER OF RECORDS WRITTEN).
*        22. EXIT IF REPEAT MODULE IS NOT SELECTED. 
*        23. RESERVE. 
*        24. READ FORWARD.
*        25. BUMP RECORD COUNT IN B0/B1.
*        26. WAIT PARKED IF SELECTED. 
*        27. GO TO STEP 30 IF *EOT*.
*        28. REPORT EC 203 IF STATUS ERROR. 
*        29. REPEAT STEPS 23-28 UNTIL *EOT* IS DETECTED.
*        30. GO TO STEP 14 IF REPEAT MODULE IS SELECTED (READ REV). 
*        31. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X60 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X60 - ABORT ON .WAITNB. COMMAND -
*         4. T7X60 - ABORT ON .WRITE. COMMAND - 
*         5. T7X60 - ABORT ON .RES. COMMAND - 
*         6. T7X60 - ABORT ON .REWIND. COMMAND -
*         7. T7X60 - ABORT ON .REL. COMMAND - 
*         8. T7X60 - ABORT ON .READ FWD. COMMAND -
*         9. T7X60 - ABORT ON .READ REV. COMMAND -
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A -WRITE- OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 202- A STATUS ERROR OCCURRED ON A REVERSE READ.
*            THE INPUT BUFFER CONTAINS THE DATA READ. 
* 
*        12. -EC 203- A STATUS ERROR OCCURRED ON A FORWARD READ.
*            THE INPUT BUFFER CONTAINS THE DATA READ. 
* 
*        13. -EC 267- THE NUMBER OF RECORDS WRITTEN AND THE 
*            NUMBER OF RECORDS READ IN REVERSE DO NOT 
*            COMPARE. 
* 
* 
*** T7X60 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*            = TRACK SIZE (6 OR 8)
*            = RANDOM SEED
*            = MARGINS
*         B1 = CURRENT RECORD COUNT 
*         B2 = BUFFER LIMIT FOR DUP (7TK OR 9TK)
*         B3 = WC INCREMENT VALUE (1 OR 7776).
*         B4 = PATTERN FOR STORING
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = RESERVE PARAMETER P1 AND ERROR CORRECTION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X60 - 67X LADDER TEST - 
 2 FORMAT T7X60 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X60 - ABORT ON .WAITNB. COMMAND - 
 5 FORMAT T7X60 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X60 - ABORT ON .RES. COMMAND -
10 FORMAT T7X60 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X60 - ABORT ON .REL. COMMAND -
12 FORMAT T7X60 - ABORT ON .READ FWD. COMMAND - 
13 FORMAT T7X60 - ABORT ON .READ REV. COMMAND - 
15 FORMAT T7X60 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE BOT TO 4, EOT TO 10, ERROR TO 5034
* 
* 
20 IF(DC.EQ.53)EXIT TO 60A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B4 = P4
   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 IF(P4.AND.3000.EQ.1000)B4=P4.XOR.7777
   DUP B0 BITS OF P4/B4 TO OB FOR B1
   GOTO 25
23 B0 = P7                   *RANDOM SEED TO B0 
   IF(P3.AND.4.NE.0)GOTO 24  *USE RANDOM SEED 
   B0 = RT                   *USE RT CLOCK FOR SEED 
24 RANDOM TO OB FOR 500 , START B0
25 B0 = P3 RS 6              *MARGIN BITS 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
26 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   B0 = 0                    *CLEAR FILE COUNT
   B1 = 0                    *CLEAR RECORD COUNT
   RES P1, ABT 74            *RESERVE 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   WC = 1                    *SET WC TO WRITE 1 WORD
   B3 = 1                    *WC INCREMENT VALUE
* 
*---------WRITE FROM BOT TO EOT 
* 
30 B5 = 6 
   RES P1, ABT 74 
   B5 = 5 
   B7 = 1                    *WRITE FWD MOTION CODE 
   WRITE, ABT 74
   B1 = B1 + 1               *BUMP RECORD COUNT 
   IF(B1.NE.0) GOTO 31       *IF NOT OVERFLOW 
   B0 = B0 + 1               *BUMP FILE COUNT 
31 IF(P3.AND.20.NE.0) GOTO 32  *IF BYPASS WAIT *PARKED* 
   B5 = 4 
   WAITNB, ABT 74 
32 IF(SB(1).AND.EOT.NE.0) GOTO 40      *IF EOT
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70 
   WC = WC + B3              *INCR/DECR. WORD COUNT 
   IF(WC.NE.0) GOTO 30       *IF NOT MAX/MIN WC 
   B3 = B3.XOR.7776          *TOGGLE B3 0001/7777 
   WC = B3
   GOTO 30
* 
*----------READ TAPE REVERSE FROM EOT TO BOT
* 
40 WC = 500 
41 B5 = 6 
   IF(P1.AND.4000.EQ.4000) B8 = P1   *SET ERROR CORRECTION DISABLED 
   IF(P1.AND.4000.EQ.0) B8 = P1.AND.1777   *SET ERROR CORRECTION ENABLED
   RES B8, ABT 74            *RESERVE 
   B5 = 13
   B7 = 6                    *READ REVERSE MOTION CODE
   READ REV, ABT 74 
   IF(SB(1).AND.BOT.NE.0) GOTO 45    *IF LOAD POINT 
   IF(B1.EQ.0) GOTO 42       *IF RECORD COUNT UNDERFLOW 
   B1 = B1 - 1
   GOTO 43
42 B1 = 7777                 *PRESET RECORD COUNT 
   B0 = B0 - 1               *AND DECREMENT FILE COUNT
43 B5 = 5 
   WAITNB, ABT 74 
44 IF(SB(1).AND.ERROR.NE.0) ERROR 2/202, GOSUB 70 
   GOTO 41
45 IF(B0.NE.0) GOTO 46       *IF FILE COUNT ERROR 
   IF(B1.EQ.0) GOTO 50       *IF NO RECORD COUNT ERROR
46 ERROR 2/267, GOSUB 70
* 
*---------READ TAPE FORWARD IF REPEAT MODULE SELECTED 
* 
50 IF(ES.AND.RM.EQ.0) GOTO 55 
   B0 = 0                    *CLEAR FILE COUNT
   B1 = 0                    *CLEAR RECORD COUNT
51 B5 = 6 
   RES P1, ABT 74 
   B5 = 12
   B7 = 5                    *READ FORWARD MOTION CODE
   READ FWD, ABT 74 
   B1 = B1 + 1               *BUMP RECORD COUNT 
   IF(B1.NE.0) GOTO 52       *IF NO RECORD COUNT OVERFLOW 
   B0 = B0 + 1               *BUMP FILE COUNT 
52 IF(P3.AND.20.NE.0) GOTO 53  *IF BYPASS WAIT *PARKED* 
   B5 = 4 
   WAITNB, ABT 74 
53 IF(SB(1).AND.EOT.NE.0) GOTO 55      *IF EOT REACHED
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/203, GOSUB 70 
   GOTO 51
55 IF(ES.AND.CM.NE.0)GOTO 26  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57                 *NO ERRORS
56 MSG 15 (BA) TO DAYFILE             *REPORT ERRORS
57 EXIT 
* 
*---------PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY          *REPLACE RUN MESSAGE 
   IF(BA.LT.2) GOTO 26       *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
77 END 20 
COMPILE   - T7X60 - 
   MODULE T7X60A,67X(53)LOCK   - 698 LADDER TEST -
*** T7X60A - 698 LADDER TEST
* 
**  T7X60A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE DENSITY
*         AND PATTERN SELECTED BY THE *PARAM* DIRECTIVE 
* 
*         RECORDS ARE WRITTEN ON TAPE FROM LOAD POINT 
*         TO END OF TAPE.  RECORD LENGTHS VARY FROM 1 
*         TO 7777 WORDS, THEN ARE DECREMENTED FROM 7777 
*         BACK TO 1.
*         WHEN EOT IS REACHED, A READ REVERSE IS
*         EXECUTED UNTIL LOAD POINT IS REACHED. 
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE LOOP.
*         REPEAT MODULE IS SUPPORTED. 
* 
*   DESCRIPTION - 
* 
*         1.  POST RUN MESSAGE. 
*         2.  FILL OB WITH SELECTED DATA PATTERN. 
*         3.  RESERVE.
*         4.  REWIND. 
*         5.  SET WC = 1. 
*         6.  RESERVE.
*         7.  WRITE.
*         8.  BUMP RECORD COUNT IN B0/B1. 
*         9.  WAIT PARKED IF SELECTED.
*        10.  GO TO STEP 14 IF *EOT*. 
*        11.  REPORT EC 200 IF STATUS ERROR.
*        12.  BUMP WC BY 1 (ADD 1 IF INCREMENTING UNTIL IT REACHES
*             7777. THEN DECREMENT IT BY 1 UNTIL IT REACHES 0. THEN 
*             START INCREMENTING IT AGAIN). 
*        13.  REPEAT STEPS 6-12 UNTIL *EOT* IS DETECTED.
*        14.  RESERVE.
*        15.  READ REVERSE. 
*        15A. IF NO EOT STATUS AFTER FIRST REV READ REPORT EC 141.
*        15B. IF EOT STATUS UP AFTER 7 REV READS REPORT EC 140. 
*        16.  GO TO STEP 21 IF *BOT*. 
*        17.  DECREMENT RECORD COUNT IN B0/B1.
*        18.  WAIT PARKED IF SELECTED.
*        19.  REPORT EC 202 IF STATUS ERROR.
*        20.  REPEAT STEPS 14-19 UNTIL *BOT* IS DETECTED. 
*        21.  REPORT EC 267 IF B0/B1 ARE NOT ZERO (NUMBER OF RECORDS
*             READ DOES NOT EQUAL NUMBER OF RECORDS WRITTEN). 
*        22.  EXIT IF REPEAT MODULE IS NOT SELECTED.
*        23.  GO TO STEP 3 IF REPEAT MODULE IS SELECTED.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X60A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. T7X60A - ABORT ON .WAITNB. COMMAND - 
*         4. T7X60A - ABORT ON .WRITE. COMMAND -
*         5. T7X60A - ABORT ON .RES. COMMAND -
*         6. T7X60A - ABORT ON .REWIND. COMMAND - 
*         7. T7X60A - ABORT ON .REL. COMMAND -
*         8. T7X60A - ABORT ON .READ FWD. COMMAND - 
*         9. T7X60A - ABORT ON .READ REV. COMMAND - 
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A -WRITE- OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. -EC 202- A STATUS ERROR OCCURRED ON A REVERSE READ.
*            THE INPUT BUFFER CONTAINS THE DATA READ. 
* 
*        12. -EC 267- THE NUMBER OF RECORDS WRITTEN AND THE 
*            NUMBER OF RECORDS READ IN REVERSE DO NOT 
*            COMPARE. 
* 
*        13. -EC 140 - EOT PRESENT AFTER EOT AND 7 REV READS
* 
*        14. -EC 141 - NO EOT STATUS AFTER EOT AND REV READ 
* 
  
*** T7X60A - INTERNAL DOCUMENTATION 
* 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*            = TRACK SIZE (8) 
*            = RANDOM SEED
*         B1 = CURRENT RECORD COUNT 
*         B3 = WC INCREMENT VALUE (1 OR 7776).
*         B4 = PATTERN FOR STORING
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B6 = PASS COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = RESERVE PARAMETER P1 AND ERROR CORRECTION
*         B9 = MAX RECORD COUNT FOR EOT TO BE UP ON READ REV
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X60A - 698 LADDER TEST PC = *DEC (D) -
 2 FORMAT T7X60A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 3 FORMAT T7X60A - EC 140 EOT PRESENT AFTER 7 REV READS 
 4 FORMAT T7X60A - ABORT ON .WAITNB. COMMAND -
 5 FORMAT T7X60A - ABORT ON .WRITE. COMMAND - 
 6 FORMAT T7X60A - ABORT ON .RES. COMMAND - 
 7 FORMAT T7X60A - EC 141 NO EOT STATUS AFTER REV READ
10 FORMAT T7X60A - ABORT ON .REWIND. COMMAND -
11 FORMAT T7X60A - ABORT ON .REL. COMMAND - 
12 FORMAT T7X60A - ABORT ON .READ FWD. COMMAND -
13 FORMAT T7X60A - ABORT ON .READ REV. COMMAND -
15 FORMAT T7X60A ERROR(S) IN MODULE = *DEC
* 
   EQUATE BOT TO 4, EOT TO 10, ERROR TO 5034
* 
* 
20 B6=1 
   MSG 1 (B6)TO PRINT          *RUNNING MESSAGE.
21 MSG 1 (B6) TO DISPLAY       *RUNNING MESSAGE.
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B4 = P4
   B0 = 10                     *TRACK SIZE
   B1 = 500 
* 
*  -------FILL BUFFER 
* 
   IF(P4.AND.3000.EQ.1000)B4=P4.XOR.7777
   DUP B0 BITS OF P4/B4 TO OB FOR B1
   GOTO 26
23 B0 = P7                   *RANDOM SEED TO B0 
   IF(P3.AND.4.NE.0)GOTO 24  *USE RANDOM SEED 
   B0 = RT                   *USE RT CLOCK FOR SEED 
24 RANDOM TO OB FOR 500 , START B0
26 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   B0 = 0                    *CLEAR FILE COUNT
   B1 = 0                    *CLEAR RECORD COUNT
   RES P1, ABT 74            *RESERVE 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   WC = 1                    *SET WC TO WRITE 1 WORD
   B3 = 1                    *WC INCREMENT VALUE
* 
*  -------WRITE FROM BOT TO EOT 
* 
30 B5 = 6 
   RES P1, ABT 74 
   B5 = 5 
   B7 = 1                    *WRITE FWD MOTION CODE 
   WRITE, ABT 74
   B1 = B1 + 1               *BUMP RECORD COUNT 
   IF(B1.NE.0) GOTO 31       *IF NOT OVERFLOW 
   B0 = B0 + 1               *BUMP FILE COUNT 
31 IF(P3.AND.20.NE.0) GOTO 32  *IF BYPASS WAIT *PARKED* 
   B5 = 4 
   WAITNB, ABT 74 
32 IF(SB(1).AND.EOT.NE.0) GOTO 40      *IF EOT
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70 
   WC = WC + B3              *INCR/DECR. WORD COUNT 
   IF(WC.NE.0) GOTO 30       *IF NOT MAX/MIN WC 
   B3 = B3.XOR.7776          *TOGGLE B3 0001/7777 
   WC = B3
   GOTO 30
* 
*  --------READ TAPE REVERSE FROM EOT TO BOT
* 
40 B9 = 1                    *SET EOT COUNT 
   WC = 500 
41 B5 = 6 
   IF(P1.AND.4000.EQ.4000) B8 = P1   *DISABLE ERR CORR. 
   IF(P1.AND.4000.EQ.0) B8 = P1.AND.1777  *ENABLE ERR CORR. 
   RES B8, ABT 74            *RESERVE 
   B5 = 13
   B7 = 6                    *READ REVERSE MOTION CODE
   READ REV, ABT 74 
   IF(SB(1).AND.BOT.NE.0) GOTO 45    *IF LOAD POINT 
   IF(B1.EQ.0) GOTO 42       *IF RECORD COUNT UNDERFLOW 
   B1 = B1 - 1
   GOTO 43
42 B1 = 7777                 *PRESET RECORD COUNT 
   B0 = B0 - 1               *AND DECREMENT FILE COUNT
43 B5 = 5 
   WAITNB, ABT 74 
   IF(SB(1).AND.10.NE.0) GOTO 36  *EOT AFTER READ REV 
   IF(P0.EQ.125) GOTO 50  *125 IPS
   IF(B9.EQ.0) GOTO 44  *NO EOT AFTER REV READ    (200 IPS ONLY)
50 IF(SB(1).AND.ERROR.NE.0) ERROR 2/202, GOSUB 70 
   GOTO 41
44 MSG 7 TO LINE 1
47 BA = BA + 1     *BUMP ERROR COUNTER
   CALL 969        *698 STATUS ANALYZER 
   GOTO 41
36 B9 = B9 + 1     *EOT PRESENT COUNT 
   IF(SB(1).AND.5024.NE.0) ERROR 2/202, GOSUB 70
   IF(B9.GE.10B) MSG 3 TO LINE 1  *EOT UP AFTER REV READ
   IF(B9.GE.10B) GOTO 47  *EOT UP AFTER 8 REV READS 
   GOTO 41
45 IF(B0.NE.0) GOTO 46       *IF FILE COUNT ERROR 
   IF(B1.EQ.0) GOTO 55       *IF NO RECORD COUNT ERROR
46 ERROR 2/267, GOSUB 70
55 B6 = B6 + 1                *BUMP PASS COUNT
   IF(ES.AND.RM.NE.0)GOTO 21  *IF REPEAT MODULE 
   IF(BA.EQ.0)GOTO 57                 *NO ERRORS
56 MSG 15 (BA) TO DAYFILE             *REPORT ERRORS
57 EXIT 
* 
*  -------PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*  -------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                  *CALL 698/CMTS STATUS CRACKER
   MSG 1 TO DISPLAY          *REPLACE RUN MESSAGE 
   IF(BA.LT.2) GOTO 26       *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
77 END 20 
COMPILE   - T7X60A -
   MODULE T7X61,67X(44,54,55,53)LOCK   - 9TK READ RECOVERY -
*** T7X61 - 9TK SINGLE TRACK READ RECOVERY -
* 
**  T7X61 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X61 IS NOT EXECUTED.
* 
*         THIS MODULE EXECUTES ONLY ON NINE-TRACK UNITS.  A MESSAGE IS
*         ISSUED INDICATING THAT THE TEST WAS NOT EXECUTED IF A 7 TRACK 
*         UNIT IS ASSIGNED. 
* 
*         READ RECOVERY OF A SINGLE BAD TRACK IS VERIFIED TO FUNCTION 
*         CORRECTLY IN THE USER-SELECTED DENSITY (NRZI, PHASE OR GCR).
*         A WRITE OPERATION USING RANDOM DATA IS PERFORMED WHILE
*         DISABLING ONE DATA TRACK USING THE FORCE DATA ERROR FUNCTION. 
*         A BACKSPACE AND READ SEQUENCE FOLLOWS.  IT IS EXPECTED THAT 
*         THE SINGLE TRACK ERROR WILL BE RECOVERED ON-THE-FLY IN PHASE
*         OR GCR, BUT WILL NOT BE CORRECTED IN NRZI.  IF RUNNING IN 
*         NRZI MODE, ANOTHER BACKSPACE AND READ SEQUENCE IS EXECUTED
*         AND SINGLE TRACK ERROR RECOVERY IS EXPECTED.
* 
*         THE ABOVE SEQUENCE IS COMPLETED FOR ALL TRACKS THEN REPEATED
*         UNTIL ALL TRACKS HAVE BEEN TESTED 10 TIMES.  CODE TRANSLATION 
*         AND ASSEMBLY/DISSASSEMBLY MODE SELECTIONS MADE BY THE USER
*         IN P1 ARE IGNORED AND FORCED TO NO CODE TRANSLATION AND A/D 
*         PACKED MODE.
* 
*         AN EXIT IS MADE TO T7X61A TO TEST DOUBLE TRACK ERROR
*         CORRECTION IF GCR DENSITY IS SELECTED.
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE.
*         2. FILL OUTPUT BUFFER WITH RANDOM DATA PATTERN. 
*         3. SET WORD COUNT TO 400 OCTAL. 
*         4. POST A NOT-RUN MESSAGE AND EXIT IF A 7TK UNIT IS ASSIGNED. 
*         5. RESERVE, REWIND AND SET FILE AND RECORD COUNTERS.
*         6. START WITH TRACK 1 AS A BAD TRACK. 
*         7. RESERVE, SELECT THE BAD TRACK TO WRITE AND WRITE ONE BAD 
*            RECORD.  TERMINATE IF END-OF-TAPE IS DETECTED. 
*         8. BACKSPACE AND READ THE BAD RECORD FORWARD.  REPORT AN
*            EC 270 IF SB(4) DOES NOT INDICATE SINGLE TRACK 
*            CORRECTION ON THE EXPECTED TRACK AND GCR OR PE DENSITY 
*            IS SELECTED (ON-THE-FLY CORRECTION DID NOT OCCUR). REPORT
*            AN EC 271 IF ALERT IS NOT SET AND THE DENSITY IS NRZI
*            (ON-THE-FLY CORRECTION OCCURRED BUT SHOULD NOT HAVE).
*            GO TO STEP 10 IF PE OR GCR DENSITY IS SELECTED.
* 
*         9. BACKSPACE AND RE-READ THE RECORD IF NRZI.  IF SB(4) DOES 
*            NOT SHOW SINGLE TRACK CORRECTION ON THE EXPECTED TRACK 
*            REPORT EC 272 (THE NRZI RE-READ DID NOT CORRECT THE BAD
*            TRACK BUT IT SHOULD HAVE). 
*        10. VERIFY THAT THE DATA READ COMPARES WITH THE DATA WRITTEN.
*            IF NOT, REPORT AN EC 105 ALONG WITH THE DATA IN ERROR. 
*        11. GO TO STEP 7 IF REPEAT CONDITION IS SELECTED TO LOOP ON
*            THE SAME TRACK.  OTHERWISE, BUMP THE RECORD/TRACK COUNTER
*            AND GO TO STEP 7 UNTIL ALL TRACKS HAVE BEEN TESTED.
*        12. RESET THE RECORD/TRACK COUNTER AND REPEAT STEPS 6-11 UNTIL 
*            EACH TRACK HAS BEEN TESTED 10 TIMES (FILE/LOOP COUNT). 
*        13. IF REPEAT MODULE OR CONDITION IS SELECTED, GO TO STEP 5. 
*            IF GCR DENSITY IS SELECTED, EXIT TO T7X61A.  OTHERWISE,
*            EXIT.
*** 
**
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X61 - ABORT ON .RES. COMMAND - 
*         3. T7X61 - ABORT ON .REWIND. COMMAND -
*         4. T7X61 - ABORT ON .SELECT DATAERR. COMMAND -
*         5. T7X61 - ABORT ON .WRITE. COMMAND - 
*         6. T7X61 - ABORT ON .BKSP. COMMAND -
*         7. T7X61 - ABORT ON .READ. COMMAND -
* 
*         8. -EC 105- DATA COMPARE ERROR.  THE FIRST 400B WORDS (OR 
*            THE WORD LENGTH IN PARAM -P2), THAT WERE TRANSFERED DO 
*            NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
* 
*         9. -EC 270- THE TRACK SPECIFIED IN B1 FAILED TO BE CORRECTED
*            ON-THE-FLY IN PHASE OR GCR READ MODE.
* 
*        10. -EC 271- THE TRACK SPECIFIED IN B1 WAS CORRECTED ON-THE- 
*            FLY IN NRZI. IT SHOULD HAVE REQUIRED A RE-READ.
* 
*        11. -EC 272- THE TRACK SPECIFIED IN B1 FAILED TO BE CORRECTED
*            WITH A RE-READ IN NRZI MODE. 
* 
* 
*** T7X61 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = FILE/LOOP COUNT
*         B1 = RECORD/TRACK COUNT 
*            = BUFFER INDEX FOR PATTERN GENERATION
*         B2 = BAD TRACK SELECT CODE
*            = DATA MASK FOR PATTERN GENERATION 
*         B3 = SAVE AREA FOR FIRST WORD OF OB 
*         B4 = RESERVE OPTIONS
*         B5 = MESSAGE NUMBER TO REPORT IN CASE OF AN ABORT 
*            = DATA COMPARE WORD COUNT
*         B6 = SCOPING LOOP COUNTER 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X61 - 9TK SINGLE TRACK READ RECOVERY
 2 FORMAT T7X61 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T7X61 NOT EXECUTED - RUNS ON A 9TK UNIT ONLY -
 4 FORMAT T7X61 - ABORT ON .RES. COMMAND -
 5 FORMAT T7X61 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT T7X61 - ABORT ON .SELECT DATAERR. COMMAND - 
 7 FORMAT T7X61 - ABORT ON .WRITE. COMMAND -
10 FORMAT T7X61 - ABORT ON .BKSP. COMMAND - 
11 FORMAT T7X61 - ABORT ON .READ. COMMAND - 
14 FORMAT T7X61 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X61 ERROR(S) IN MODULE = *DEC 
16 FORMAT 
17 FORMAT T7X61 - NOT EXECUTED USING DC = 53
* 
   EQUATE ALERT TO 4000, EOT TO 10
* 
* 
*  -----TEST DEVICE CODE
* 
20 IF(DC.NE.53)GOTO 25       *IF NOT 698/CMST SUBSYSTEM 
   MSG 17 TO DISPLAY,PRINT   *NOT RUN MSG 
   EXIT 
25 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
   GOSUB 64                  *GENERATE RANDOM DATA PATTERN
   WC = 400 
   B4 = P1.AND.1007 + 10     *FORCE TRANSLATION AND MODE
   IF(DC.NE.44) GOTO 21      *IF NOT 7TK UNIT 
   MSG 3 TO PRINT            *INDICATE MODULE NOT EXECUTED
   EXIT 
* 
*--------REWIND UNIT
* 
21 B0 = 0                    *FILE/LOOP COUNT 
   B1 = 1                    *RECORD/TRACK COUNT
   B5 = 4 
   RES B4, ABT 74 
   B5 = 5 
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
* 
*---------WRITE A RECORD WITH ONE BAD TRACK 
* 
22 B2 = B1-1
   B2 = 1.LS.B2+1000         *FORM BAD TRACK CODE 
   IF(P1.AND.7.EQ.2) B2 = B2-1000  *GOOD PREAMBLE ON PHASE
   B5 = 4 
   RES B4, ABT 74 
   B5 = 6 
   SELECT DATAERR B2,ABT 74  *SELECT BAD TRACK
   B5 = 7 
   B7 = 1                    *WRITE MOTION CODE 
   WRITE, ABT 74
   B2 = B2.OR.1000           *SET SINGLE TRACK ERROR BIT
   IF(SB(1).AND.EOT.NE.0) GOTO 54   *IF END OF TAPE 
* 
*---------BACKSPACE AND READ THE BAD RECORD 
* 
   GOSUB 60                  *BKSP AND READ 
   IF(SB(1).AND.ALERT.NE.0) GOTO 23  *IF ALERT IS SET 
   IF(P1.AND.7.EQ.1) ERROR 2/271, GOTO 70  *NRZI RECOVERY 
23 IF(P1.AND.7.EQ.1) GOTO 24  *IF NRZI
   IF(SB(4).NE.B2) ERROR 2/270, GOTO 70  *IF PE OR GCR ERROR
   GOTO 30
* 
*---------BACKSPACE AND RE-READ THE BAD RECORD FOR NRZI 
* 
24 GOSUB 60                   *BKSP AND READ
   IF(SB(4).NE.B2) ERROR 2/272, GOTO 70  *NRZI ERROR
* 
*--------COMPARE DATA TO INSURE THE TRACK WAS CORRECTED 
* 
30 B5 = 400B
   ERROR 2/105               *PREPARE FOR AN ERROR
   COMPARE IB TO OB FOR B5, ABT 70
* 
*---------TEST ALL TRACKS 
* 
31 B6 = B6 + 1                *BUMP PASS COUNT
   IF(ES.AND.RC.EQ.0)GOTO 32  *IF NOT REPEAT CONDITION
   IF(ES.AND.SL.EQ.0)GOTO 22  *IF NOT SCOPING 
   MSG 14(BA,B6) TO DISPLAY   *SCOPING MESSAGE
   GOTO 22
32 GOTO 22 WHILE (B1+1.NE.10D)     *TEST TRACKS 1-9 
   B1 = 1                          *RESET RECORD/TRACK CTR
   GOTO 22 WHILE (B0+1.NE.10D)     *REPEAT TEST 10 TIMES
   IF(ES.AND.SL.EQ.0) GOTO 54      *IF NOT SCOPING
   MSG 14(BA,B6) TO DISPLAY        *SCOPING MESSAGE 
   GOTO 21
54 IF(ES.AND.CM.NE.0) GOTO 21      *IF REPEAT COND/MODULE 
   IF(BA.EQ.0) GOTO 56             *IF NO ERRORS
55 MSG 15(BA) TO DAYFILE           *REPORT ERRORS TO DAYFILE
56 IF(P1.AND.7.EQ.4) GOTO 57       *IF GCR DENSITY
   EXIT                            *NORMAL TERMINATION
57 EXIT TO 61A                     *TEST 2 TRACK RECOVERY 
* 
*--------BKSP AND READ SUBROUTINE 
* 
60 B5 = 10
   B7 = 6                     *READ REVERSE CODE
   BKSP, ABT 74 
   B5 = 11
   B7 = 5                     *READ FORWARD CODE
   READ FWD, ABT 74 
   OB = B3                    *RESTORE FIRST WORD OF OB 
   RETURN 
* 
*--------RANDOM DATA GENERATOR
* 
64 RANDOM TO OB FOR 400, START P7  *GENERATE BASE DATA
   IF(P1.AND.7.NE.1) GOTO 66       *IF NOT NRZI 
   B1 = 0                          *BUFFER INDEX
   B2 = 421                        *DATA MASK 
65 OB(B1) = OB(B1).OR.B2     *INSURE TWO BITS PER CHARACTER 
   B2 = B2.LS.1              *RANDOMIZE THE DATA
   GOTO 65 WHILE (B1+1.NE.400)
66 B3 = OB                    *SAVE FIRST WORD
   RETURN 
* 
*--------PROCESS MODULE DETECTED ERROR(S) 
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   MSG 16 TO LINE 0           *CLEAR ANY PREVIOUS ERROR 
   MSG EM(EC,EA) TO LINE 1
   IF(ES.AND.SL.NE.0) GOTO 31  *IF SCOPING
   CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   GOTO 31
* 
*--------PROCESS PRODUCT OVERLAY ABORT
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(ES.AND.SL.NE.0) GOTO 31  *IF SCOPING
   CALL 980                    *PROCESS ERROR STATUS
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2) GOTO 22        *IF NOT SECOND TRY
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T7X61 - 
   MODULE T7X61A,67X(44,54,55,53)LOCK   - 9TK READ RECOVERY - 
*** T7X61A - 9TK TWO TRACK READ RECOVERY -
* 
**  T7X61A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         THIS MODULE EXECUTES ONLY ON NINE-TRACK UNITS IN GCR MODE.
* 
*         READ RECOVERY OF TWO BAD TRACKS ARE VERIFIED TO FUNCTION
*         CORRECTLY IN GCR DENSITY. 
*         A WRITE OPERATION USING RANDOM DATA IS PERFORMED WHILE
*         DISABLING TWO DATA TRACKS USING THE FORCE DATA ERROR FUNCTION.
*         A BACKSPACE AND READ SEQUENCE FOLLOWS.  IT IS EXPECTED THAT 
*         THE TWO TRACK ERROR WILL BE RECOVERED ON-THE-FLY IN GCR.
* 
*         THE ABOVE SEQUENCE IS COMPLETED UNTIL ALL COMBINATIONS OF 
*         TWO-TRACK ERRORS HAVE BEEN TESTED ONCE.  CODE TRANSLATION 
*         AND ASSEMBLY/DISSASSEMBLY MODE SELECTIONS MADE BY THE USER
*         IN P1 ARE IGNORED AND FORCED TO NO CODE TRANSLATION AND A/D 
*         PACKED MODE.
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE.
*         2. FILL OUTPUT BUFFER WITH RANDOM DATA PATTERN. 
*         3. SET WORD COUNT TO 400 OCTAL. 
*         4. RESERVE, REWIND AND SET FILE AND RECORD COUNTERS.
*         5. START WITH TRACKS 2 AND 1 AS THE BAD TRACKS.  SINCE ALL
*            COMBINATIONS OF 2 TRACKS MUST BE TESTED, FOR DESCRIPTIVE 
*            PURPOSES THESE TRACKS WILL BE REFERED TO AS THE LEFT TRACK 
*            BIT (TRACK 2 INITIALLY) AND THE RIGHT TRACK BIT (TRACK 1 
*            INITIALLY).  WHEN AN ERROR OCCURS, THE CONTENTS OF 
*            REGISTER B2 WILL IDENTIFY THE TWO TRACKS THAT WERE BEING 
*            TESTED AT THE TIME OF THE FAILURE.  BIT 0 OF THAT REGISTER 
*            IMPLIES TRACK 1, BIT 1 IMPLIES TRACK 2, ETC. (THERE WILL 
*            ALWAYS BE TWO BITS SET IN B2 SINCE TWO TRACKS ARE BEING
*            TESTED AT ALL TIMES).  THESE BIT POSITIONS CORRESPOND TO 
*            THE FORMAT REQUIRED FOR THE FORCE DATA ERROR FUNCTION
*            DESCRIBED IN THE 67X HARDWARE REFERENCE MANUAL.
*         6. RESERVE, SELECT THE BAD TRACKS TO WRITE AND WRITE ONE BAD
*            RECORD.  TERMINATE IF END-OF-TAPE IS DETECTED. 
*         7. BACKSPACE AND READ THE BAD RECORD FORWARD.  REPORT AN
*            EC 273 IF SB(4) DOES NOT INDICATE DOUBLE TRACK ERROR 
*            CORRECTION ON THE EXPECTED TRACKS (ON-THE-FLY ERROR
*            CORRECTION DID NOT OCCUR BUT SHOULD HAVE). 
*         8. VERIFY THAT THE DATA READ COMPARES WITH THE DATA WRITTEN.
*            IF NOT, REPORT AN EC 105 ALONG WITH THE DATA IN ERROR. 
*** 
**
* 
*         9. GO TO STEP 6 IF REPEAT CONDITION IS SELECTED TO LOOP ON
*            THE SAME TRACKS.  OTHERWISE, BUMP THE CURRENT RECORD 
*            COUNTER AND SHIFT THE LEFT BIT OF THE TWO-TRACKS-IN-ERROR
*            LEFT ONE BIT POSITION WHILE KEEPING THE RIGHT BIT AS IS
*            (EXAMPLE- IN THE FIRST PASS, TRACKS 2 AND 1 ARE TESTED.
*            IN THE SECOND PASS, TRACKS 3 AND 1 ARE TESTED). GO TO STEP 
*            6 IF THE LEFT TRACK BIT HAS NOT BEEN ADVANCED TO TRACK 10
*            (ALL COMBINATIONS TESTED). 
*        10. AFTER ALL COMBINATIONS OF THE LEFT TRACK HAVE BEEN TESTED, 
*            SHIFT THE RIGHT TRACK BIT LEFT ONE BIT POSITION, RESET THE 
*            LEFT TRACK BIT POSITION TO THE RIGHT TRACK BIT POSITION +1 
*            (EXAMPLE- IN THE FIRST 8 PASSES, THE RIGHT TRACK BIT IS
*            ALWAYS TRACK 1 WHILE THE LEFT TRACK BIT IS INCREMENTED FROM
*            TRACK 2 THRU TRACK 9.  THEN THE RIGHT TRACK BIT IS SET TO
*            TRACK 2, THE LEFT TRACK BIT SET TO 3 AND THE SEQUENCE IS 
*            REPEATED.  GO TO STEP 6 IF THE RIGHT TRACK BIT HAS NOT BEEN
*            ADVANCED TO TRACK 9 (ALL COMBINATIONS TESTED). 
*        11. IF REPEAT MODULE OR CONDITION IS SELECTED, GO TO STEP 4. 
*            OTHERWISE, EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X61A - ABORT ON .RES. COMMAND -
*         3. T7X61A - ABORT ON .REWIND. COMMAND - 
*         4. T7X61A - ABORT ON .SELECT DATAERR. COMMAND - 
*         5. T7X61A - ABORT ON .WRITE. COMMAND -
*         6. T7X61A - ABORT ON .BKSP. COMMAND - 
*         7. T7X61A - ABORT ON .READ. COMMAND - 
* 
*         8. -EC 105- DATA COMPARE ERROR.  THE FIRST 400B WORDS (OR 
*            THE WORD LENGTH IN PARAM -P2), THAT WERE TRANSFERED DO 
*            NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
* 
*         9. -EC 273- THE TRACKS SPECIFIED IN B2 FAILED TO BE CORRECTED 
*            ON-THE-FLY IN GCR READ MODE. 
* 
* 
*** T7X61A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE -
* 
*         B0 = FILE COUNT/RIGHT TRACK BIT 
*         B1 = RECORD COUNT 
*         B2 = BAD TRACK SELECT CODE
*         B3 = LEFT TRACK BIT 
*         B4 = RESERVE OPTIONS
*         B5 = MESSAGE NUMBER TO REPORT IN CASE OF AN ABORT 
*         B6 = SCOPING LOOP COUNTER 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X61A - 9TK READ RECOVERY
 2 FORMAT T7X61A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 4 FORMAT T7X61A - ABORT ON .RES. COMMAND - 
 5 FORMAT T7X61A - ABORT ON .REWIND. COMMAND -
 6 FORMAT T7X61A - ABORT ON .SELECT DATAERR. COMMAND -
 7 FORMAT T7X61A - ABORT ON .WRITE. COMMAND - 
10 FORMAT T7X61A - ABORT ON .BKSP. COMMAND -
11 FORMAT T7X61A - ABORT ON .READ. COMMAND -
14 FORMAT T7X61A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT T7X61A ERROR(S) IN MODULE = *DEC
16 FORMAT 
* 
   EQUATE ALERT TO 4000, EOT TO 10
* 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   RANDOM TO OB FOR 500, START P7  *RANDOM DATA 
   WC = 400 
   B4 = P1.AND.1007 + 10     *FORCE TRANSLATION AND MODE
* 
*--------REWIND UNIT
* 
21 B0 = 1                    *RIGHT TRACK BIT = TRACK 1 
   B3 = 2                    *LEFT TRACK BIT = TRACK 2
   B1 = 1                    *RECORD COUNTER
   B5 = 4 
   RES B4, ABT 74 
   B5 = 5 
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
* 
*---------WRITE A RECORD WITH TWO BAD TRACKS
* 
22 B2 = B0.OR.B3+1000        *FORM BAD TRACKS CODE
   B5 = 4 
   RES B4, ABT 74 
   B5 = 6 
   SELECT DATAERR B2,ABT 74  *SELECT BAD TRACKS 
   B5 = 7 
   B7 = 1                    *WRITE MOTION CODE 
   WRITE, ABT 74
   IF(SB(1).AND.EOT.NE.0) GOTO 55   *IF END OF TAPE 
* 
*---------BACKSPACE AND READ THE BAD RECORD 
* 
   B5 = 10
   B7 = 6                     *READ REVERSE CODE
   BKSP, ABT 74 
   B5 = 11
   B7 = 5                     *READ FORWARD CODE
   READ FWD, ABT 74 
   B5 = B2.AND.777           *EXPECTED TRACK STATUS 
   IF(SB(4).AND.777.NE.B5) ERROR 2/273, GOTO 70  *GCR ERROR 
* 
*--------COMPARE DATA TO INSURE THE TRACK WAS CORRECTED 
* 
30 B5 = 400B
   ERROR 2/105               *PREPARE FOR AN ERROR
   COMPARE IB TO OB FOR B5, ABT 70
* 
*---------TEST ALL TRACKS 
* 
31 B6 = B6 + 1                *BUMP PASS COUNT
   IF(ES.AND.RC.EQ.0)GOTO 32  *IF NOT REPEAT CONDITION
   IF(ES.AND.SL.EQ.0)GOTO 22  *IF NOT SCOPING 
   MSG 14(BA,B6) TO DISPLAY   *SCOPING MESSAGE
   GOTO 22
32 B1 = B1 + 1                     *BUMP RECORD COUNTER 
   B3 = B3.LS.1                    *ADVANCE LEFT TRACK BIT
   IF(B3.NE.1000) GOTO 22          *IF ALL TRACKS NOT TESTED
   B0 = B0.LS.1                    *ADVANCE RIGHT TRACK BIT 
   B3 = B0 + B0                    *RE-SET LEFT TRACK BIT 
   IF(B0.NE.400) GOTO 22           *IF ALL TRACKS NOT TESTED
   IF(ES.AND.SL.EQ.0) GOTO 55      *IF NOT SCOPING
   MSG 14(BA,B6) TO DISPLAY        *SCOPING MESSAGE 
   GOTO 21
55 IF(ES.AND.CM.NE.0) GOTO 21      *IF REPEAT COND/MODULE 
   IF(BA.EQ.0) GOTO 57             *IF NO ERRORS
56 MSG 15(BA) TO DAYFILE           *REPORT ERRORS TO DAYFILE
57 EXIT                            *NORMAL TERMINATION
* 
*--------PROCESS MODULE DETECTED ERROR(S) 
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   MSG 16 TO LINE 0           *CLEAR ANY PREVIOUS ERROR 
   MSG EM(EC,EA) TO LINE 1
   IF(ES.AND.SL.NE.0) GOTO 31  *IF SCOPING
   CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   GOTO 31
* 
*--------PROCESS PRODUCT OVERLAY ABORT
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(ES.AND.SL.NE.0) GOTO 31  *IF SCOPING
   CALL 980                    *PROCESS ERROR STATUS
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2) GOTO 22        *IF NOT SECOND TRY
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - T7X61A -
   MODULE T7X62,67X(44,54,55,53)LOCK   - READ CLIP LEVELS TEST
*** T7X62 - READ CLIP LEVELS TEST 
* 
**
* 
*   OVERVIEW -
* 
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X62 IS NOT EXECUTED.
* 
*         THIS MODULE VERIFIES THE ABILITY TO READ DATA WRITTEN IN
*         THE USER-DEFINED DENSITY AT ALL READ CLIP LEVELS (NORMAL, 
*         HIGH, LOW AND HYPER).  TEN RECORDS OF RANDOM DATA ARE WRITTEN 
*         ERROR-FREE. THE TAPE IS THEN RE-WOUND AND READ FORWARD THEN 
*         REVERSE AT NORMAL CLIP, THEN HIGH, LOW AND FINALLY HYPER. 
* 
*         REPEAT CONDITION, REPEAT MODULE AND SCOPING LOOPS ARE 
*         SUPPORTED.
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE.
*         2. SET WORD COUNT TO P2.
*         3. FILL THE OUTPUT BUFFER WITH RANDOM DATA USING P7 AS THE
*            DATA STARTER.
*         4. RESERVE, REWIND THE TAPE AND SET FILE COUNTER AND RECORD 
*            COUNTER. 
*         5. ADD ADDRESS CODING DATA TO THE OUTPUT BUFFER.
*         6. RESERVE AND WRITE LONG.  TERMINATE IF END OF TAPE DETECTED.
*         7. REPORT EC 200 ERROR IF ALERT IS SET AND GO TO STEP 3 TO
*            TRY AND WRITE A PERFECT TAPE.  OTHERWISE, BUMP THE RECORD
*            COUNT AND GO TO STEP 5 UNTIL 10D RECORDS ARE WRITTEN ERROR 
*            FREE.
*         8. SET CURRENT READ CLIP COUNTER TO ZERO (NORMAL CLIP). 
*         9. RESERVE, REWIND THE TAPE AND SET FILE COUNTER AND RECORD 
*            COUNTER. 
*        10. RESERVE AND READ ONE RECORD FORWARD WITH CURRENTLY 
*            SELECTED READ CLIPS.  IF AN ERROR OCCURS ON THE READ,
*            REPORT EC 274. 
*        11. BUMP THE RECORD COUNT AND GO TO STEP 10 UNTIL 10D RECORDS
*            HAVE BEEN READ.
*        12. PRESET THE RECORD COUNT TO 10D FOR REVERSE READING.
*        13. RESERVE AND READ ONE RECORD REVERSE WITH CURRENTLY 
*            SELECTED READ CLIPS.  IF AN ERROR OCCURS ON THE READ,
*            REPORT EC 275. 
*        14. DECREMENT THE RECORD COUNT AND GO TO STEP 13 UNTIL 10D 
*            RECORDS HAVE BEEN READ.
*        15. IF REPEAT CONDITION IS SELECTED, GO TO STEP 9 TO LOCK ON 
*            THE CURRENT CLIP LEVEL SELECTION.
*        16. BUMP THE CLIP LEVEL SELECTION AND GO TO STEP 9 UNTIL ALL 
*            CLIP LEVELS HAVE BEEN TESTED.
*        17. IF REPEAT MODULE OR CONDITION IS SELECTED, GO TO STEP 3. 
*            OTHERWISE, TERMINATE TESTING.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X62 - ABORT ON .RES. COMMAND - 
*         3. T7X62 - ABORT ON .REWIND. COMMAND -
*         4. T7X62 - ABORT ON .WRITE. COMMAND - 
*         5. T7X62 - ABORT ON .READ FWD. COMMAND -
*         6. T7X62 - ABORT ON .READ REV. COMMAND -
* 
*         7. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*         8. -EC 274- ALERT WAS SET FOLLOWING A READ FORWARD AT THE 
*            READ CLIP LEVEL SELECTED IN REGISTER B2. 
* 
*         9. -EC 275- ALERT WAS SET FOLLOWING A READ REVERSE AT THE 
*            READ CLIP LEVEL SELECTED IN REGISTER B2. 
* 
*** T7X62 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = CURRENT CLIP LEVEL SELECTION 
*         B5 = MESSAGE NUMBER IN CASE OF AN ABORT 
*         B6 = SCOPE LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X62 - READ CLIP LEVELS TEST 
 2 FORMAT T7X62 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X62 - ABORT ON .RES. COMMAND -
 5 FORMAT T7X62 - ABORT ON .REWIND. COMMAND - 
 7 FORMAT T7X62 - ABORT ON .WRITE. COMMAND -
11 FORMAT T7X62 - ABORT ON .READ FWD. COMMAND - 
12 FORMAT T7X62 - ABORT ON .READ REV. COMMAND - 
14 FORMAT T7X62 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X62 ERROR(S) IN MODULE = *DEC 
17 FORMAT T7X62 - NOT EXECUTED USING DC = 53
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
20 IF(DC.EQ.53)MSG 17 TO DISPLAY,PRINT       *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53) EXIT         *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   WC = P2
* 
*--------REWIND 
* 
21 RANDOM TO OB FOR 500, START P7 
   GOSUB 60                  *REWIND
* 
*--------WRITE 10 RECORDS WITH ADDRESS CODING, RANDOM DATA
* 
22 OB(1) = B0                *ADDRESS CODING
   OB(2) = B1 
   OB(3) = P2 
   B5 = 4 
   RES P1, ABT 74 
   B5 = 7 
   B7 = 1                    *WRITE MOTION COCE 
   WRITE LONG, ABT 74 
   IF(SB(1).AND.EOT.NE.0) GOTO 55  *IF END OF TAPE
   IF(SB(1).AND.ERROR.EQ.0) GOTO 23  *IF NO ERROR 
   ERROR 2/200,GOSUB 70      *REPORT ERROR
   GOTO 21                   *RESTART 
23 GOTO 22 WHILE (B1+1.NE.11D)  *WRITE 10D GOOD RECORDS 
   B2 = 0                    *INITIALIZE CLIPS=NORMAL 
* 
*--------REWIND 
* 
30 GOSUB 60                  *REWIND
   MARGINS B2                *SELECT CURRENT CLIP LEVEL 
* 
*--------READ 10 RECORDS FORWARD AT CURRENT CLIP SELECTION
* 
31 B5 = 4 
   RES P1, ABT 74 
   B5 = 11
   B7 = 5                    *READ FORWARD MOTION CODE
   READ FWD, ABT 74 
   IF(SB(1).AND.ALERT.NE.0) ERROR 2/274,GOSUB 70  *IF ERROR 
   GOTO 31 WHILE (B1+1.NE.11D)  *READ 10D RECORDS FORWARD 
   B1 = B1 - 1                 *PRE-SET RECORD COUNTER
* 
*--------READ 10 RECORDS REVERSE AT CURRENT CLIP SELECTION
* 
40 B5 = 4 
   RES P1, ABT 74 
   B5 = 12
   B7 = 6                    *REVERSE MOTION CODE 
   READ REV, ABT 74 
   IF(SB(1).AND.ALERT.NE.0) ERROR 2/275,GOSUB 70  *IF ERROR 
   GOTO 40 WHILE (B1-1.NE.0)
* 
*--------TEST ALL CLIP LEVELS 
* 
   B6 = B6 + 1                 *BUMP PASS COUNT 
   IF(ES.AND.RC.EQ.0) GOTO 50  *IF NOT REPEAT CONDITION 
   IF(ES.AND.SL.EQ.0) GOTO 30  *IF NOT SCOPING
   MSG 14(BA,B6) TO DISPLAY    *SCOPING MESSAGE 
   GOTO 30
50 IF(DC.EQ.53)GOTO 53         *IF 698/CMST SUBSYSTEM 
   GOTO 30 WHILE (B2+1.NE.4)   *TEST ALL CLIP LEVELS
52 IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 14(BA,B6) TO DISPLAY    *SCOPING MESSAGE 
   GOTO 21
53 GOTO 30 WHILE (B2+1.NE.3)   *TEST ALL CLIP LEVELS ON 698 
   GOTO 52
55 IF(ES.AND.CM.NE.0) GOTO 21  *IF REPEAT COND/MODULE 
   IF(BA.EQ.0) GOTO 57         *IF NO ERRORS
56 MSG 15(BA) TO DAYFILE       *REPORT ERRORS TO DAYFILE
57 GOTO 77                     *NORMAL TERMINATION
* 
*---------REWIND SUBROUTINE 
* 
60 B5 = 4 
   RES P1, ABT 74 
   B5 = 5 
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
   B0 = 0                    *FILE COUNT
   B1 = 1                    *RECORD COUNT
   RETURN 
* 
*--------PROCESS MODULE DETECTED ERROR(S) 
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 71  *IF NOT SCOPING
   MSG 14(BA,B6) TO DISPLAY    *SCOPING MESSAGE 
   RETURN 
71 MSG EM(EC,EA) TO LINE 1
   CALL 98A                  *ERROR CODE PROCESSOR
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN 
* 
*--------PROCESS PRODUCT OVERLAY ABORT
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(ES.AND.SL.EQ.0) GOTO 75  *IF NOT SCOPING
   MSG 14(BA,B6) TO DISPLAY   *SCOPING MESSAGE
   GOTO 21
75 CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2) GOTO 21        *IF NOT SECOND TRY
   GOTO 55                    *ABNORMAL TERMINATION 
77 END 20 
COMPILE   - T7X62 - 
   MODULE T7X63,67X(53)LOCK   -BLOCK ID TEST- 
*** T7X63 - BLOCK ID TEST 
* 
**  T7X63 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X63  VERIFIES  THAT  THE  BLOCK IDS ARE IDENTICAL FOR EACH
*         RECORD FROM BOT TO EOT ON A CCC/698 TAPE SUBSYSTEM. 
* 
*         THIS MODULE WILL WRITE LONG FIXED LENGTH  RECORDS  OF  32760
*         DECIMAL 12 BIT PP WORDS.  EACH  RECORD  WILL  CONTAIN IN 320
*         DECIMAL  12  BIT  BLOCKS AN INCREMENTING PATTERN ALTERNATING
*         WITH ZEROS. THE PATTERN IS  AS  FOLLOWS  0001 0000 0203 0000
*         ETC.  THIS  FIXED  PATTERN  IS  USED  TO CHECK THE ASSEMBLY/
*         DISASSEMBLY BOARD OF  THE CYBER  CHANNEL COUPLER THAT IS NOT
*         PARITY  PROTECTED.  THE  BLOCK  IDS  ARE CHECKED BY  READING
*         STATUS AFTER EACH WRITE. THE FIRST BLOCK ID  (STATUS WORD 2)
*         IS  SAVED  AND USED FOR COMPARISON WITH THE SUBSEQUENT BLOCK
*         IDS.
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. REWIND.
*         3. FILL OB WITH INCREMENTING DATA PATTERN.
*         4. SET WC TO 7777 OCTAL.
*         5. SET RECORD COUNTER.
*         6. RESERVE. 
*         7. WRITE LONG.
*         8. DISPLAY CURRENT RECORD COUNT.
*         9. GO TO STEP 15 IF *EOT* STATUS. 
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. IF FIRST WRITE SAVE BLOCK ID (STATUS WORD 2).
*        12. REPORT EC 236 IF BLOCK ID ERROR. 
*        13. REPEAT STEPS 6-12 UNTIL END OF TAPE. 
*        14. RESERVE. 
*        15. REWIND THE TAPE. 
*        16. GO TO STEP 1 IF REPEAT MODULE. 
*        17. RELEASE. 
*        18. EXIT.
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X63 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X63 - ABORT ON .WRITE. COMMAND - 
*         4. T7X63 - ABORT ON .RES. COMMAND - 
*         5. T7X63 - ABORT ON .REL. COMMAND - 
*         6. T7X63 - ABORT ON .REWIND. COMMAND -
* 
*         7. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*         8. -EC 236- THE BLOCK IDS OF THE FIRST RECORD AND THE 
*            CURRENT RECORD HAVE FAILED TO COMPARE DURING THE 
*            -BLOCK ID TEST-. B8= FIRST RECORD BLOCK ID. SB(2)= 
*            CURRENT RECORD BLOCK ID. IF ALL OTHER MODULES OF 
*            T7X RUN SUCCESSFULLY -REPLACE THE FOLLOWING PWA IN 
*            THE CCC- A02/B02 IN FR205A OR A02/A16 IN FR205B. 
* 
*** T7X63 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT UPPER RECORD COUNT 
*         B1 = CURRENT LOWER RECORD COUNT 
*         B2 = BUFFER LIMIT FOR SAVE
*         B3 = BUFFER INDEX 
*         B4 = PATTERN FOR STORING
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = FIRST BLOCK ID - USED FOR COMPARE
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
 1 FORMAT T7X63 - BLOCK ID TEST - 
 2 FORMAT T7X63 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X63 - ABORT ON .WRITE LONG. COMMAND - 
 6 FORMAT T7X63 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X63 - ABORT ON .REL. COMMAND -
10 FORMAT T7X63 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X63   WRITING RECORD  *DE*DE
15 FORMAT T7X63 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 5034 
   EQUATE ALERT TO 4000, EOT TO 10
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   BA=0                       *CLEAR ERROR COUNTER
21 B5 = 6 
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
* 
*---------REWIND
* 
   B5 = 10
   B7 = 3                     *REWIND MOTION CODE 
   REWIND,ABT 74              *REWIND 
   B0 = 0                     *CLEAR RECORD COUNT 
   B1 = 0                     *CLEAR RECORD COUNT 
* 
*---------FILL WRITE BUFFER WITH SELECTED PATTERN 
* 
   B2 = 500                   *BUFFER SIZE
   B3 = 0                     *CLEAR BUFFER INDEX 
   DUP 0 TO OB FOR B2         *DATA STARTER 
   B4 = 0001                  *DATA STARTER 
22 OB(B3) = B4                *STORE BUFFER 
   B4 = B4 + 0202             *INCREMENT PATTERN
   GOTO 22 WHILE (B3 + 2.LT.B2) 
   B1 = B1 + 1                *PRESET RECORD COUNT
30 B5 = 6 
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   WC = 7777                  *SET WORD COUNT 
* 
*---------WRITE LONG P2 LENGTH RECORDS
* 
40 B5 = 4 
   B7 = 1                     *FORWARD WRITE CODE 
   WRITE LONG, ABT 74 
   MSG 12 (B0,B1) TO LINE 20  *RECORD COUNT MESSAGE 
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(B8.NE.0) GOTO 50
   B8 = SB(2)                 *SAVE FIRST BLOCK ID
50 IF(SB(2).NE.B8) ERROR 2/236, GOSUB 70
51 GOTO 30 WHILE (B1+1.LT.1000D)  *LOOP 1000 DECIMAL TIMES
   B1 = 0                     *ZERO LOWER RECORD COUNT
   B0 = B0 + 1                *INCREMENT UPPER RECORD COUNT 
   GOTO 30                    *WRITE TO END OF TAPE 
* 
*---------RESERVE AND REWIND
* 
54 B5 = 6 
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74             *RESERVE
   B5 = 10
   B7 = 3                     *REWIND MOTION CODE 
   REWIND, ABT 74             *REWIND 
   B5 = 7 
   B7 = 0                     *NO MOTION CODE 
   REL, ABT 74
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57         *NO ERRORS
56 MSG 15 (BA) TO DAYFILE     *REPORT ERRORS
57 GOTO 77                    *NORMAL TERMINATION 
* 
*---------PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   ENDSUB                     *END ALL SUBROUTINES
   GOTO 51                    *RETURN TO 51 SO NO FALSE ERRORS
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 989                   *CALL 698/CMTS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
77 END 20 
COMPILE   - T7X63 - 
   MODULE T7X70,67X(44,54,55,53)LOCK   - TAPE PATH DAMAGE - 
*** T7X70 - TAPE PATH DAMAGE
* 
**  T7X70 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X70 IS DESIGNED TO WRITE ONE RECORD OF THE LENGTH 
*         SPECIFIED BY THE USER AND PERFORM 20,475 READ REVERSES
*         AND 20,475 READ FORWARDS OVER THAT RECORD.  THE USER
*         CAN THEN VISUALLY INSPECT THE TAPE FOR DAMAGE.  BY
*         PROPERLY SETTING THE LENGTH OF THE RECORD, THE USER 
*         CAN CONTROL WHAT ELEMENTS OF THE TAPE TRANSPORT MAKE
*         CONTACT WITH SPECIFIC AREAS OF THE TAPE, THEREFORE
*         ISOLATING THE SPECIFIC CAUSE OF ANY DAMAGE. 
* 
*         A SHORT RECORD (P2 =0500 FOR EXAMPLE) ALLOWS TESTING OF 
*         THE EOT,BOT,BLOCK,HEAD,SCRAPERS AND CERAMIC GUIDES. 
*         THESE ITEMS ARE CLOSE TOGETHER, SO A SHORT RECORD MUST
*         BE USED TO CONTROL TAPE MOVEMENT AND PREVENT OVERLAP
*         OF COMPONENTS IN CONTACT WITH THE TAPE. 
* 
*         WITH A LONG RECORD (P2 =6000 FOR EXAMPLE) TAPE REELS
*         WILL MOVE AND YOU CAN VERIFY AIR BEARINGS, LOOP COLUMNS,
*         TAPE SHUTES AND THE TAPE REELS AND HUBS.
* 
*         IN ACTUAL PRACTICE, TWO RUNS SHOULD BE MADE - THE FIRST 
*         WITH P2 = 0500 AND THE SECOND WITH P2 = 6000.  (NOTE
*         THAT THE ACTUAL WORD COUNT USED FOR THE RECORD LENGTH IS
*         8 TIMES THE VALUE PLACED INTO REGISTER P2). 
* 
* 
*   DESCRIPTION - 
* 
* 
*         1. SELECT MARGINS.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OB WITH 7777 PATTERN. 
*         5. RESERVE. 
*         6. WRITE LONG.
*         7. WAIT PARKED. 
*         8. REPORT EC 200 IF STATUS ERROR. 
*         9. RESERVE. 
*        10. READ REVERSE.
*        11. WAIT PARKED. 
*        12. REPORT EC 227 IF STATUS ERROR. 
*        13. RESERVE. 
*        14. READ FORWARD.
*        15. WAIT PARKED. 
*        16. REPORT EC 226 IF STATUS ERROR. 
*        17. REPEAT STEPS 9-16 FOR 20,475 PASSES. 
*        18. GO TO STEP 2 IF REPEAT MODULE. 
*        19. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. PRODUCT OVERLAY ERRORS 
* 
*         2. T7X70 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X70 - ABORT ON .READ FWD. COMMAND -
*         4. T7X70 - ABORT ON .READ REV. COMMAND -
*         5. T7X70 - ABORT ON .WRITE. COMMAND - 
*         6. T7X70 - ABORT ON .RES. COMMAND - 
*         7. T7X70 - ABORT ON .REL. COMMAND - 
*         8. T7X70 - ABORT ON .REWIND. COMMAND -
*         9. T7X70 - ABORT ON .WAITNB. COMMAND -
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. - EC 226- AN ERROR OCCURRED DURING A READ FORWARD
*            OPERATION IN THE TAPE PATH DAMAGE TEST.
* 
*        12. - EC 227- AN ERROR OCCURRED DURING A READ REVERSE
*            OPERATION IN THE TAPE PATH DAMAGE TEST.
* 
* 
*** T7X70 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = MARGINS
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X70 - TAPE PATH DAMAGE -
 2 FORMAT T7X70 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X70 - ABORT ON .READ FWD. COMMAND - 
 5 FORMAT T7X70 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT T7X70 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T7X70 - ABORT ON .RES. COMMAND -
10 FORMAT T7X70 - ABORT ON .REL. COMMAND -
11 FORMAT T7X70 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X70 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X70 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X70 ERROR(S) IN MODULE = *DEC 
* 
* 
   EQUATE ERROR TO 5034 
* 
* 
20 MSG 1 TO DISPLAY,PRINT   *RUNNING MESSAGE
   BA=0                     *CLEAR ERROR COUNTER
   B5 = P3 RS 6             *MARGIN BITS TO B5
   MARGINS B5               *SELECT MARGINS PER PARAM P3
21 B5 =7
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74           *RESERVE
   B5 = 11
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74
   WC = P2                  *REC LENGTH TO WC REG 
   DUP 7777 TO OB FOR 500 
* 
*----------WRITE THE RECORD 
* 
30 B0 = 0                    *CLEAR FILE COUNT
   B1 = 1                    *SET RECORD COUNT
   B5 = 7 
   RES P1, ABT 74 
   B5 = 6 
   B7 = 1                    *WRITE FORWARD MOTION CODE 
   WRITE LONG, ABT 74 
   B5 = 12
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.ERROR.EQ.0) GOTO 40    *NO WRITE ERRORS 
   ERROR 2/200, GOSUB 70
   GOTO 30                   *RE-WRITE THE RECORD 
* 
*---------READ THE RECORD REVERSE 
* 
40 DELAY 20 MSEC
   B5 = 7 
   RES P1, ABT 74 
   B5 = 5 
   B7 = 6                    *READ REVERSE MOTION CODE
   READ REV, ABT 74 
   B5 = 12
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/227, GOSUB 70 
* 
*---------READ THE RECORD FORWARD 
* 
   DELAY 20 MSEC
   B5 = 7 
   RES P1, ABT 74 
   B5 = 4 
   B7 = 5                    *READ FORWARD MOTION CODE
   READ FWD, ABT 74 
   B5 = 12
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/226, GOSUB 70 
   GOTO 40 WHILE (B1+1.NE.7777)        *DO 4095D PASSES 
   B1 = 0 
   GOTO 40 WHILE (B0+1.NE.6)           *DO 20,475 PASSES
   B5 = 10
   REL, ABT 74
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0) GOTO 57       *NO MODULE ERRORS
56 MSG 15(BA) TO DAYFILE     *REPORT ERRORS 
57 GOTO 77                   * END MODULE EXECUTION 
* 
*---------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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                   *ABNORMAL TERMINATION
77 END 20 
COMPILE    - T7X70 -
   MODULE T7X71,67X(44,54,55,53)LOCK  - CREEP - 
*** T7X71 - CREEP 
* 
**  T7X71 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X71 IS NOT EXECUTED.
* 
*         T7X71 IS DESIGNED TO PLOT THE AMOUNT OF FORWARD OR
*         REVERSE CREEP THAT OCCURS WHEN A RECORD IS RE-WRITTEN 
*         IN PLACE.  THE TECHNIQUE USED IS TO WRITE TWO RECORDS,
*         MEASURE THE GAP SIZE BETWEEN THE RECORDS, RE-WRITE THE
*         SECOND RECORD, RE-MEASURE THE GAP SIZE AND PLOT THE 
*         DIFFERENCE BETWEEN THE FIRST GAP SIZE AND THE SECOND. 
*         THIS PROCESS IS REPEATED 50 TIMES AND A COMPOSITE PLOT
*         IS PRINTED. 
* 
* 
*   DESCRIPTION - 
* 
*         1. REWIND.
*         2. WRITE RECORD 1.
*         3. WRITE RECORD 2.
*         4. BKSP OVER RECORD 2.
*         5. BKSP OVER RECORD 1.
*         6. MEASURE AND SAVE FIRST GAP VALUE BETWEEN RECORDS 1 AND 2.
*         7. BKSP OVER RECORD 2.
*         8. RE-WRITE RECORD 2 (CREATE CREEP).
*         9. BKSP OVER RECORD 2.
*        10. BKSP OVER RECORD 1.
*        11. MEASURE AND SAVE SECOND GAP VALUE BETWEEN RECORDS 1 AND 2. 
*        12. COMPUTE AND PLOT THE FORWARD OR REVERSE CREEP BY 
*            COMPARING THE FIRST GAP VALUES WITH THE SECOND. (ANY 
*            CHANGE IS CONSIDERED CREEP). 
*        13. REPEAT STEPS 2-12 FOR 50 TIMES.
*        14. IF REPEAT MODULE, DELAY 3 SECONDS, BLANK THE PLOT AND
*            GO TO STEP 2.
*        15. TAPE A PICTURE OF THE CURRENT PLOT AND EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X71 - ERROR CODE =*OCT  AT LINE (EA) = *OCT
*         3. T7X71 - ABORT ON .RES. COMMAND - 
*         4. T7X71 - ABORT ON .REL. COMMAND - 
*         5. T7X71 - ABORT ON .WRITE. COMMAND - 
*         6. T7X71 - ABORT ON .BKSP. COMMAND -
*         7. T7X71 - ABORT ON .WAITNB. COMMAND -
*         8. T7X71 - ABORT ON .MEASURE FWD GAP. COMMAND - 
*         9. T7X71 - ABORT ON .REWIND. COMMAND -
* 
* 
*        10. EC 200 - AN UNEXPECTED BIT APPEARED IN GENERAL 
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
  
*        11. EC 253 - A STATUS ERROR OCCURRED ON A BACKSPACE. 
* 
*** T7X71 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B2 = 1ST GAP SIZE 
*         B3 = 2ND GAP SIZE 
*         B4 = GAP SIZE INDEX 
*         B5 = PLOT VALUE 
*            = MESSAGE NUMBER IN CASE OF ABORT
*            = SCRATCH FOR CALCULATING GAP SIZE DIFFERENCE
*            = PLOT LINE
*         B6 = PLOT LINE
*            = PLOT CHARACTER 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
* 
 1 FORMAT T7X71 - CREEP - 
 2 FORMAT T7X71 - ERROR CODE =*OCT  AT LINE (EA) = *OCT 
 3 FORMAT  OVER 
 4 FORMAT +*DEC 
 5 FORMAT -*DEC 
 6 FORMAT +*DEC --------------------------------------------
 7 FORMAT              CREEP  (.009425 INCHES PER COUNT)
10 FORMAT T7X71 - ABORT ON .RES. COMMAND -
11 FORMAT T7X71 - ABORT ON .REL. COMMAND -
12 FORMAT T7X71 - ABORT ON .WRITE. COMMAND -
13 FORMAT T7X71 - ABORT ON .BKSP. COMMAND - 
14 FORMAT T7X71 - ABORT ON .WAITNB. COMMAND - 
15 FORMAT T7X71 - ABORT ON .MEASURE FWD GAP. COMMAND -
16 FORMAT T7X71 - ABORT ON .REWIND. COMMAND - 
*        DATA ITEMS BELOW ARE GROUPED IN 3 SETS OF 4 WORDS
*        EACH.  THE FIRST 4 WORDS PERTAIN TO .75 INCH GAPS, 
*        THE SECOND GROUP TO .6 INCH GAPS AND THE LAST TO 
*        .3 INCH GAPS.  FOR EACH GROUP, THE BREAKDOWN OF
*        THE WORDS ARE AS FOLLOWS 
* 
*          WORD 1 - UPPER LIMIT LINE NUMBER 
*          WORD 2 - UPPER LIMIT VALUE 
*          WORD 3 - LOWER LIMIT LINE NUMBER 
*          WORD 4 - LOWER LIMIT VALUE 
* 
   DATA(OB,CON)4D,30D,24D,10D,4D,30D,24D,10D,4D,30D,24D,10D 
20 IF(DC.EQ.53)EXIT TO 71A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   MSG 7 TO LINE 1           *BUILD PLOT OUTLINE
   MSG 3 TO LINE 3
   B6 = 4                    *LINE NUMBER 
   B5 = 30D                  *VALUE 
21 MSG 4(B5) TO LINE B6 
   B5 = B5 - 1               *DECREMENT VALUE 
   GOTO 21 WHILE (B6+1.NE.35D)
   B5 = 0 
22 B5 = B5 + 1
   MSG 5(B5) TO LINE B6      *DO NEGATIVE VALUES
   GOTO 22 WHILE (B6+1.NE.39D)
   MSG 3 TO LINE B6 
   IF(DC.EQ.44) GOTO 23      *.75 GAP 
   B4 = 4 
   IF(DC.NE.55) GOTO 23      *.6 GAP
   B4 = 10                   *.3 GAP
23 B6 = OB(B4)               *LINE NUMBER 
   MSG 6(OB(B4+1)) TO LINE B6 
   B6 = OB(B4+2)
   MSG 6(OB(B4+3)) TO LINE B6 
   B5 = 10
   RES P1, ABT 74 
   B5 = 16
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
* 
*--------MEASURE CREEP ON RE-WRITE
* 
27 B6 = 6                    *CHARATER POSTION FOR PLOT 
30 GOSUB 40                  *WRITE RECORD 1
   GOSUB 40                  *WRITE RECORD 2
   GOSUB 50                  *BKSP RECORD 2 
   GOSUB 50                  *BKSP RECORD 1 
   GOSUB 60                  *MEASURE FIRST GAP 
   B2 = SB(10D).RS.6         *1ST GAP SIZE
   GOSUB 50                  *BKSP RECORD 2 
   GOSUB 40                  *RE-WRITE RECORD 2 
   GOSUB 50                  *BKSP RECORD 2 
   GOSUB 50                  *BKSP RECORD 1 
   GOSUB 60                  *MEASURE SECOND GAP
   B3 = SB(10D).RS.6         *2ND GAP SIZE
   B5 = 0                    *NO CREEP VALUE
   IF(B2.EQ.B3) GOTO 33      *NO CREEP
   IF(B3.GT.B2) GOTO 32      *2ND .GT. 1ST
   IF(B2-B3.GE.32D) GOTO 31  *FWD CREEP 
   B5 = B2-B3                *REV CREEP = 1ST-2ND 
   GOTO 34
31 B5 = B3+65D-B2            *FWD CREEP = 2ND+65-1ST
   GOTO 33
32 B5 = B2+65D-B3            *CREEP = 1ST+65-2ND
   IF(B3-B2.GE.32D) GOTO 34  *REVERSE CREEP 
   B5 = B3-B2                *FWD CREEP = 2ND-1ST 
33 B5 = B5+5                 *ADD LINE BIAS TO FWD CREEP
   IF(B5.LE.35D) GOTO 36     *IN RANGE OF PLOT
   B5 = 36D                  *SET IT TO *OVER*
   GOTO 36
34 IF(B5.LE.4) GOTO 35       *IN RANGE OF PLOT
   B5 = 5                    *SET IT TO *OVER*
35 B5 = 5-B5                 *ADD REVERSE CREEP LINE BIAS 
36 PLOT LINE B5 CHAR B6 
   GOTO 30 WHILE (B6 + 1.NE.56D)
   IF(ES.AND.CM.EQ.0) GOTO 37  *IF NOT REPEAT MODULE OR COND. 
   DELAY 3000D MSEC          *DELAY 3 SECONDS 
   BLANK PLOT 
   GOTO 27                   *REPEAT TEST 
37 PICTURE
   GOTO 77                   * END MODULE EXECUTION 
* 
*---------WRITE A RECORD
* 
40 B5 = 10
   RES P1, ABT 74 
   B5 = 12
   B7 = 1                    *FORWARD WRITE MOTION CODE 
   WRITE, ABT 74
   IF(SB(1).AND.5034.NE.0) ERROR 2/200, GOTO 70 
   RETURN 
* 
*---------BKSP A RECORD 
* 
50 B5 = 10
   RES P1, ABT 74 
   B5 = 13
   B7 = 6                    *READ REVERSE MOTION CODE
   BKSP, ABT 74 
   IF(SB(1).AND.5034.NE.0) ERROR 2/253, GOTO 70 
   RETURN 
* 
*---------MEASURE GAP 
* 
60 B5 = 10
   RES P1, ABT 74 
   B5 = 14
   WAITNB, ABT 74            *WAIT *PARKED* 
   B5 = 15
   B7 = 5                    *READ FORWARD MOTION CODE
   MEASURE FWD GAP, ABT 74
   B5 = 11
   REL, ABT 74
   RETURN 
* 
*---------PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
   PICTURE AND BLANK
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   ENDSUB, GOTO 20           *RESTART 
* 
*---------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   PICTURE AND BLANK
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   IF(BA.LT.2)GOTO 20         *NOT SECOND TRY 
77 END 20 
COMPILE   - T7X71 - 
   MODULE T7X71A,67X(53)LOCK  - POST MSG FOR DC 53
*** T7X71A - POST MSG FOR DC 53 
* 
**  T7X71A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         T7X71A WILL POST A NO RUN MSG FOR T7X71 IF DC = 53. 
* 
*   DESCRIPTION - N/A 
* 
*   ERRORS REPORTED - N/A 
* 
  
*** T7X71A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE - N/A
* 
*   MODULES CALLED - NONE 
* 
* 
 1 FORMAT T7X71 - NOT EXECUTED USING DC = 53
20 MSG 1 TO DISPLAY,PRINT   *NO RUN MSG 
   EXIT 
   END 20 
COMPILE   - T7X71A -
   MODULE T7X72,67X(44,54,55,53)LOCK   - GENERAL STATUS - 
*** T7X72 - GENERAL STATUS
* 
**   T7X72 - EXTERNAL DOCUMENTATION 
* 
*    OVERVIEW - 
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X72A IS EXECUTED. 
* 
*          T7X72 IS A REPAIR MODULE THAT SIMPLY RESERVES THE
*          UNIT UNDER TEST AND DISPLAYS GENERAL AND DETAIL
*          STATUS.  IT IS DESIGNED TO BE USED TO REPAIR SUB-
*          SYSTEM PROBLEMS INVOLVING THE CONNECT SEQUENCE.
* 
*    DESCRIPTION -
* 
*          1. RESERVE BASED ON PARAMETERS IN P1 REGISTER. 
*          2. DISPLAY STATUS ON LINES 4 AND 6 OF THE DISPLAY. 
*          3. REPEAT STEPS 1 AND 2 UNTIL STOPPED BY THE OPERATOR
*             OR AN ERROR OCCURS. 
* 
*    ERRORS REPORTED -
* 
*          1. ALL PRODUCT OVERLAY ERRORS. 
* 
*          2. T7X72 - ABORT ON .RES. COMMAND -
* 
***  T7X72 - INTERNAL DOCUMENTATION 
* 
*    REGISTER USAGE - 
* 
*          B5 = MESSAGE NUMBER IN CASE OF ABORT 
*          B6 = LOOP COUNT FOR SCOPING
*          BA = ERROR COUNT 
* 
*    MODULES CALLED - 
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
 1 FORMAT T7X72 - GENERAL STATUS -
 2 FORMAT SB(1-8) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
 3 FORMAT SB(9-16)= *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
 4 FORMAT T7X72 - ABORT ON .RES. COMMAND -
 5 FORMAT T7X72 - ERRS=*DEC LOOPS=*DEC
20 IF(DC.EQ.53)EXIT TO 72A   *698/CMST
   MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   MSG 1 TO LINE 2
21 B5 = 4 
   RES P1, ABT 74 
   MSG 2, 8D WORDS FROM SB(1) TO LINE 4 
   MSG 3, 8D WORDS FROM SB(9D) TO LINE 6
22 B6 = B6 + 1               *BUMP LOOP COUNT 
   GOTO 21                   *LOOP
* 
/--------ERROR PROCESSOR
* 
74 BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0) GOTO 75          *NOT SCOPING 
   MSG 5 (BA,B6) TO DISPLAY 
   GOTO 22
75 MSG EM TO LINE 1 
   MSG B5 TO LINE 0 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY 
   MSG 1 TO LINE 2
   GOTO 22
   END 20 
COMPILE   - T7X72 - 
   MODULE T7X72A,67X(53)LOCK   - 698 GENERAL/SENSE STATUS - 
*** T7X72A - 698 GENERAL/SENSE STATUS 
* 
**   T7X72A - EXTERNAL DOCUMENTATION
* 
*    OVERVIEW - 
* 
*          T7X72A IS A REPAIR MODULE THAT SIMPLY RESERVES THE 
*          UNIT UNDER TEST AND DISPLAYS GENERAL, DETAIL AND 
*          SENSE STATUS.  IT IS DESIGNED TO BE USED TO REPAIR 
*          SUBSYSTEM PROBLEMS INVOLVING THE CONNECT SEQUENCE. 
*          THIS MODULE DOES NOT TERMINATE.
* 
*    DESCRIPTION -
* 
*          1. RESERVE BASED ON PARAMETERS IN P1 REGISTER. 
*          2. DISPLAY GENERAL, DETAIL AND SENSE STATUS. 
*          3. REPEAT STEPS 1 AND 2 UNTIL STOPPED BY THE OPERATOR
*             OR AN ERROR OCCURS. 
* 
*    ERRORS REPORTED -
* 
*          1. ALL PRODUCT OVERLAY ERRORS. 
* 
*          2. T7X72A - ABORT ON .RES. COMMAND - 
*          3. T7X72A - ABORT ON .STATUS SENSE. COMMAND -
* 
  
*** T7X72A - INTERNAL DOCUMENTATION 
* 
*    REGISTER USAGE - 
* 
*          B0  = SENSE STATUS WORD
*          B1  = SENSE STATUS WORD
*          B2  = LOOP COUNT 
*          B4  = SENSE STATUS 
*          B5  = MESSAGE NUMBER IN CASE OF ABORT
*          B6  = MESSAGE LINE 
*          B8  = SENSE STATUS 
*          B9  = SENSE STATUS 
*          B10 = SENSE STATUS 
*          B11 = SENSE STATUS 
*          B12 = SENSE STATUS 
*          B13 = SENSE STATUS 
*          BA  = ERROR COUNT
* 
*    MODULES CALLED - 
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT T7X72A - GENERAL/SENSE STATUS - 
 2 FORMAT SB(1-8) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
 3 FORMAT SB(9-16)= *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
 4 FORMAT T7X72A - ABORT ON .RES. COMMAND - 
 6 FORMAT T7X72A - ABORT ON .STATUS SENSE. COMMAND -
 5 FORMAT T7X72A - ERRS=*DEC LOOPS=*DEC 
16 FORMAT   SENSE BYTE STATUS IN HEX
17 FORMAT   *D-*D =*H  *H  *H  *H  *H  *H 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   MSG 1 TO LINE 2
21 B5 = 4 
   RES P1, ABT 74 
   MSG 2, 8D WORDS FROM SB(1) TO LINE 4 
   MSG 3, 8D WORDS FROM SB(9D) TO LINE 6
   B6 = 7        *LINE NUMBER 
   B5 = 6        *ABORT MSG NUMBER
   STATUS SENSE, ABT 74 
   B6 = B6 + 1
   B14 = 454B 
   B13 = 0
   B6 = B6 + 1
   MSG 16 TO LINE B6
   B0 = 0 
   B1 = 5 
50 B6 =B6 + 1 
   B10 = IB(B14).RS.4 
   B11 = IB(B14).AND.17B.LS.4 
   B11 = IB(B14+1).RS.8.OR.B11
   B12 = IB(B14+2).RS.4 
   B13 = IB(B14+2).AND.17B.LS.4 
   B13 = IB(B14+3).RS.8.OR.B13
   B8 = IB(B14+1) 
   B9 = IB(B14+3) 
   MSG 17 (B0,B1,B10,B11,B8,B12,B13,B9) TO LINE B6
   B0 = B0 + 6
   B1 = B1 + 6
   B14 = B14 + 4
   IF(B0.LT.19) GOTO 50 
22 B2 = B2 + 1               *BUMP LOOP COUNT 
   GOTO 21                   *LOOP
* 
/--------ERROR PROCESSOR
* 
74 BA = BA + 1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0) GOTO 75          *NOT SCOPING 
   MSG 5 (BA,B2) TO DISPLAY 
   GOTO 22
75 MSG EM TO LINE 1 
   MSG B5 TO LINE 0 
   CALL 969                  *CALL 698/CMTS STATUS CRACKER
   MSG 1 TO DISPLAY 
   MSG 1 TO LINE 2
   GOTO 22
   END 20 
COMPILE   - T7X72A -
   MODULE T7X73,67X(44,54,55,53)LOCK   - SERVO ADJUST 
*** T7X73 - SERVO ADJUST                                                 T7X009J
*                                                                        T7X009J
**  T7X73 - EXTERNAL DOCUMENTATION                                       T7X009J
*                                                                        T7X009J
*                                                                        T7X009J
*   OVERVIEW -                                                           T7X009J
*                                                                        T7X009J
*         T7X73 ALLOWS THE USER TO PERFORM CAPSTAN SERVO ADJUSTMENTS     T7X009J
*         ON-LINE.  BOTH FORWARD AND REVERSE START/STOP TIMES CAN BE     T7X009J
*         MONITORED.  THE MODULE IS DESIGNED TO RUN CONTINUOUSLY UNTIL   T7X009J
*         THE UNIT IS MADE NOT READY (RESET KEY).  ONCE THE USER MAKES   T7X009J
*         THE UNIT READY AGAIN, THE MODULE TERMINATES.  ALL ERRORS       T7X009J
*         EXCEPT NOT READY ARE IGNORED BY THIS MODULE.                   T7X009J
*                                                                        T7X009J
*         NORMALLY THE USER RUNS THIS MODULE TO PERFORM THE SERVO        T7X009J
*         ADJUSTMENTS AND FOLLOWS IT WITH MODULES 30-34 TO VERIFY THAT   T7X009J
*         THE ADJUSTMENTS WERE MADE CORRECTLY. THE RUN DIRECTIVE WOULD   T7X009J
*         BE AS FOLLOWS..  RUN T7X(73,30,31,32,33,34)                    T7X009J
*                                                                        T7X009J
*   DESCRIPTION -                                                        T7X009J
*                                                                        T7X009J
*         1. SET DATA PATTERN TO 7777 AND WC TO 5000B.                   T7X009J
*         2. RESERVE.                                                    T7X009J
*         3. REWIND.                                                     T7X009J
*         4. RESERVE.                                                    T7X009J
*         5. GO TO STEP 25 IF THE UNIT IS NOT READY.                     T7X009J
*         6. WRITE 1 RECORD.                                             T7X009J
*         7. WAIT PARKED.                                                T7X009J
*         8. GO TO STEP 25 IF THE UNIT IS NOT READY.                     T7X009J
*         9. DELAY 5 MSEC TO STABALIZE THE PARKED CONDITION.             T7X009J
*        10. REPEAT STEPS 6-9 25 TIMES.                                  T7X009J
*        11. RELEASE.                                                    T7X009J
*        12. REPEAT STEPS 4-11 50 TIMES.                                 T7X009J
*        13. RESERVE.                                                    T7X009J
*        14. GO TO STEP 25 IF THE UNIT IS NOT READY.                     T7X009J
*        15. READ REVERSE 1 RECORD.                                      T7X009J
*        16. WAIT PARKED.                                                T7X009J
*        17. GO TO STEP 25 IF THE UNIT IS NOT READY.                     T7X009J
*        18. GO TO STEP 2 IF LOAD POINT.                                 T7X009J
*        19. DELAY 5 MSEC TO STABALIZE THE PARKED CONDITION.             T7X009J
*        20. REPEAT STEPS 15-19 25 TIMES.                                T7X009J
*        21. GO TO STEP 25 IF THE UNIT IS NOT READY.                     T7X009J
*        22. RELEASE.                                                    T7X009J
*        23. REPEAT STEPS 13-22 50 TIMES.                                T7X009J
*        24. GO TO STEP 2.                                               T7X009J
*        25. WE ARRIVE AT THIS STEP IF THE UNIT IS NOT READY.  RESERVE.  T7X009J
*        26. GO TO STEP 29 IF THE UNIT IS READY.                         T7X009J
*        27. RELEASE.                                                    T7X009J
*        28. DELAY 1 SECOND AND GO TO STEP 25.                           T7X009J
*        29. WE ARRIVE AT THIS STEP AFTER THE UNIT IS MADE READY         T7X009J
*            AGAIN.  CLEAR THE UNIT.                                     T7X009J
*        30. TERMINATE.                                                  T7X009J
*                                                                        T7X009J
*   ERRORS REPORTED - NONE                                               T7X009J
*                                                                        T7X009J
*** T7X73 - INTERNAL DOCUMENTATION                                       T7X009J
*                                                                        T7X009J
*   REGISTER USAGE -                                                     T7X009J
*                                                                        T7X009J
*         B1 = INSIDE LOOP COUNTER                                       T7X009J
*         B2 = OUTSIDE LOOP COUNTER                                      T7X009J
*                                                                        T7X009J
*   MODULES CALLED - NONE                                                T7X009J
*                                                                        T7X009J
*                                                                        T7X009J
 1 FORMAT T7X73 - SERVO ADJUST                                           T7X009J
20 MSG 1 TO DISPLAY,PRINT                                                T7X009J
   DUP 7777 TO OB FOR 500                                                T7X009J
   WC = 5000                                                             T7X009J
21 B2 = 0                                                                T7X009J
   RES P1, ABT 70                                                        T7X009J
   REWIND, ABT 70                                                        T7X009J
22 RES P1, ABT 70                                                        T7X009J
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY                     T7X009J
   B1 = 0                                                                T7X009J
23 WRITE, ABT 70                                                         T7X009J
   WAITNB, ABT 70                                                        T7X009J
   IF(SB(1).AND.10B.NE.0) GOTO 21  *IF EOT
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY                     T7X009J
   DELAY 5 MSEC                                                          T7X009J
   GOTO 23 WHILE (B1+1.NE.25D)                                           T7X009J
   REL, ABT 70                                                           T7X009J
   GOTO 22 WHILE (B2+1.NE.50D)                                           T7X009J
   B2 = 0                                                                T7X009J
30 RES P1, ABT 70                                                        T7X009J
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY                     T7X009J
   B1 = 0                                                                T7X009J
31 READ REV, ABT 70                                                      T7X009J
   WAITNB, ABT 70                                                        T7X009J
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY                     T7X009J
   IF(SB(1).AND.4.NE.0) GOTO 21   *IF LOAD POINT                         T7X009J
   DELAY 5 MSEC                                                          T7X009J
   GOTO 31 WHILE (B1+1.NE.25D)                                           T7X009J
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY                     T7X009J
   REL, ABT 70                                                           T7X009J
   GOTO 30 WHILE (B2+1.NE.50D)                                           T7X009J
   GOTO 21                                                               T7X009J
*                                                                        T7X009J
*------------ABORT PROCESSOR--------                                     T7X009J
*                                                                        T7X009J
70 IF(SB(1).AND.1.NE.0) GOTO 21   *IF READY DID NOT DROP                 T7X009J
71 RES P1, ABT 72                                                        T7X009J
   IF(SB(1).AND.1.NE.0) GOTO 72                                          T7X009J
   REL, ABT 72                                                           T7X009J
   DELAY 1000D MSEC          *WAIT FOR READY TO COME BACK UP             T7X009J
   GOTO 71                                                               T7X009J
72 SELECT CLEAR, ABT 73      *CLEAR THE RESET STATUS                     T7X009J
73 END 20                                                                T7X009J
COMPILE   - T7X73 -                                                      T7X009J
   MODULE T7X75,6000(44,54,55,53)LOCK   SEARCH FILE MARK TEST (67X/ATS) 
*** T7X75 - SEARCH FILE MARK TEST (67X/ATS) 
* 
**  T7X75 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X75A IS EXECUTED. 
* 
*         THIS MODULE VERIFIES THAT THE SEARCH FILE MARK CAPABILITY 
*         OF THE SUBSYSTEM IS FUNCTIONAL.  BOTH FORWARD AND REVERSE 
*         SEARCHES ARE PERFORMED. 
* 
*         TO EXECUTE THIS MODULE, AN ACCESS LEVEL OF 10 OR GREATER MUST 
*         BE SPECIFIED ON THE MALET ASSIGN DIRECTIVE WHEN ASSIGNING THE 
*         DEVICE TO TEST.  THIS IS REQUIRED SINCE T7X75 IS WRITTEN IN 
*         THE LOW-LEVEL MALET LANGUAGE.  FAILURE TO CORRECTLY SET THE 
*         ACCESS LEVEL WILL CAUSE TESTING TO BE ABORTED.
* 
*         PARAMETER REGISTER P9 CONTROLS THE NUMBER OF ITERATIONS THIS
*         MODULE EXECUTES.
* 
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE.
*         2. RESERVE THE UNIT AND REWIND. 
*            REPORT A 262 ERROR IF FILE MARK STATUS IS UP AFTER THE 
*            REWIND HAS COMPLETED.
*         3. RESERVE THE UNIT AND WRITE ONE RECORD OF 500 WORDS.
*         4. WRITE A FILE MARK AND ANOTHER 500 WORD RECORD.  REPORT 
*            A 122 ERROR IF NO END-OF-FILE STATUS AFTER THE WRITE OF
*            THE FILE MARK. 
*         5. SEARCH FILE MARK REVERSE.  REPORT A 261 ERROR IF NO
*            FILE MARK STATUS.
*         6. RESERVE THE UNIT AND BACKSPACE ONE RECORD. 
*         7. SEARCH FILE MARK FORWARD.  REPORT A 260 ERROR IF NO
*            FILE MARK STATUS.
*         8. REPEAT STEPS 3 THRU 7 THE NUMBER OF TIMES SPECIFIED BY 
*            PARAMETER REGISTER P9. 
*         9. REPEAT STEPS 2-8 IF REPEAT CONDITION OR REPEAT MODULE
*            IS SELECTED.  OTHERWISE, TERMINATE.
* 
*         NOTE   A WAIT FOR END-OF-OPERATION OCCURS AFTER EACH TAPE 
*                MOTION.  SHOULD THE END-OF-OP NOT BE DETECTED, AN
*                ERROR CODE 263 IS REPORTED.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERROR MESSAGES.
* 
*         2. T7X75 - ABORT ON .FUNC FORMAT. COMMAND - 
*         3. T7X75 - ABORT ON .FUNC STATUS. COMMAND - 
*         4. T7X75 - ABORT ON .FUNC RELEASE. COMMAND -
*         5. T7X75 - ABORT ON .FUNC SEARCH FM FWD. COMMAND -
*         6. T7X75 - ABORT ON .FUNC SEARCH FM REV. COMMAND -
*         7. T7X75 - ABORT ON .FUNC BKSP. COMMAND - 
*         8. T7X75 - ABORT ON .OUT OR OUTB. COMMAND - 
*         9. T7X75 - ABORT ON .STATUS. COMMAND -
*        10. T7X75 - ABORT ON .RES. COMMAND - 
*        11. T7X75 - ABORT ON .REL. COMMAND - 
*        12. T7X75 - ABORT ON .FUNC WRITE. COMMAND -
*        13. T7X75 - ABORT ON .FUNC ENDFILE. COMMAND -
*        14. T7X75 - ABORT ON .FUNC REWIND. COMMAND - 
* 
*        15. -EC 122 - NO END-OF-FILE STATUS AFTER AN ENDFILE 
* 
*        16. -EC 260 - NO FILE MARK STATUS AFTER SEARCH FM FWD
* 
*        17. -EC 261 - NO FILE MARK STATUS AFTER SEARCH FM REV
* 
*        18. -EC 262 - FILE MARK STATUS AT LOAD POINT 
* 
*        19. -EC 263 - NO END OF OPERATION
* 
*** T7X75 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = FILE (ITERATION) COUNTER 
*         B1 = RECORD COUNTER (ALWAYS ZERO) 
*         B2 = CONNECTED FLAG 
*         B3 = RETRY COUNTER FOR STATUS 
*         B5 = MESSAGE TO REPORT IN CASE OF AN ABORT
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T7X988 - REPORT ERROR STATUS
* 
 1 FORMAT T7X75 - SEARCH FILE MARK TEST (67X/ATS) 
 2 FORMAT T7X75 - ABORT ON .FUNC FORMAT. COMMAND -
 3 FORMAT T7X75 - ABORT ON .FUNC STATUS. COMMAND -
 4 FORMAT T7X75 - ABORT ON .FUNC RELEASE. COMMAND - 
 5 FORMAT T7X75 - ABORT ON .FUNC SEARCH FM FWD. COMMAND - 
 6 FORMAT T7X75 - ABORT ON .FUNC SEARCH FM REV. COMMAND - 
 7 FORMAT T7X75 - ABORT ON .FUNC BKSP. COMMAND -
10 FORMAT T7X75 - ABORT ON .OUT OR OUTB. COMMAND -
11 FORMAT T7X75 - ABORT ON .STATUS. COMMAND - 
12 FORMAT T7X75 - ABORT ON .RES. COMMAND -
13 FORMAT T7X75 - ABORT ON .REL. COMMAND -
14 FORMAT T7X75 - ABORT ON .FUNC WRITE. COMMAND - 
15 FORMAT T7X75 - ABORT ON .FUNC ENDFILE. COMMAND - 
16 FORMAT T7X75 - ABORT ON .FUNC REWIND. COMMAND -
17 FORMAT -EC 260 - NO FILE MARK STATUS AFTER SEARCH FM FWD 
20 FORMAT -EC 261 - NO FILE MARK STATUS AFTER SEARCH FM REV 
21 FORMAT -EC 262 - FILE MARK STATUS AT LOAD POINT
22 FORMAT -EC 122 - NO END-OF-FILE STATUS AFTER AN ENDFILE
23 FORMAT -EC 263 - NO END OF OPERATION 
24 FORMAT T7X75 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
25 FORMAT T7X75 ERROR(S) IN MODULE = *DEC 
   DATA (OB,CON) 0,1,1,1,1,1,1,2,1,3  *DENSITY CODES                     T7X0380
* 
   EQUATE RELEASE TO 1, FORMAT TO 4, STATUS TO 12, EOT TO 10
   EQUATE BKSP TO 114, SFMFWD TO 15, SFMREV TO 115, BOT TO 4
   EQUATE FILEMK TO 20, ENDFILE TO 51, WRITE TO 50
   EQUATE REWIND TO 10, BUSY TO 2 
* 
30 IF(DC.EQ.53)EXIT TO 75A   *IF 698/CMST SUBSYSTEM 
   MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   B5 = P1.AND.730.LS.2 
   OB(401) = B5+4220+SB(72)    *FORM FORMAT WORD 1
   OB(403) = P1.AND.2000+4000  *FORM FORMAT WORD 3
   B5 = P1.AND.7
   OB(402) = OB(B5).LS.6 + 2440  *FORM FORMAT WORD 2
   IF(DC.EQ.44) GOTO 31      *IF 7TK UNIT 
   OB(402) = OB(B5+5).LS.6 + 2440 
* 
* 
*--------RESERVE UNIT, REWIND AND WRITE ONE RECORD
* 
31 GOSUB 55                  *REWIND
32 GOSUB 64                  *WRITE ONE RECORD
* 
*---------WRITE END-OF-FILE AND ANOTHER RECORD
* 
   B5 = 15
   FUNC ENDFILE, ABT 70      *WRITE A FILE MARK 
   GOSUB 60                  *WAIT END OF OPERATION 
   IF(SB(1).AND.FILEMK.EQ.0) ERROR 22/122, GOTO 70  *NO EOF 
   GOSUB 64                  *WRITE ONE RECORD
* 
*---------SEARCH FILE MARK REVERSE
* 
   B5 = 6 
   FUNC SFMREV, ABT 70       *SEARCH FILE MARK REVERSE
   GOSUB 60                  *WAIT END-OF-OP
   IF(SB(1).AND.FILEMK.EQ.0) ERROR 20/261, GOTO 70  *NO FM
* 
*---------BACKSPACE ONE RECORD
* 
   GOSUB 50                  *RESERVE 
   B5 = 7 
   FUNC BKSP, ABT 70
   GOSUB 60                  *WAIT END OF OP
* 
*---------SEARCH FILE MARK FORWARD
* 
   B5 = 5 
   FUNC SFMFWD, ABT 70       *SEARCH FILE MARK FORWARD
   GOSUB 60                  *WAIT END-OF-OP
   IF(SB(1).AND.FILEMK.EQ.0) ERROR 17/260, GOTO 70  *NO FM
   IF(SB(1).AND.EOT.NE.0) GOTO 35    *IF END OF TAPE
34 GOTO 32 WHILE (B0+1.NE.P9)  *DO P9 SEQUENCES 
35 B0 = 0                      *CLEAR FILE(ITERATION) COUNT 
   IF(ES.AND.CM.NE.0) GOTO 31  *IF REPEAT CONDITION/MODULE
   IF(BA.EQ.0) GOTO 37         *IF NO MODULE ERRORS 
36 MSG 25(BA) TO DAYFILE       *REPORT ERRORS TO DAYFILE
37 GOSUB 52                    *RELEASE UNIT IF CONNECTED 
   GOTO 77                     *TERMINATE 
* 
*---------RESERVE SUBROUTINE
* 
50 IF(B2.EQ.0) GOTO 51       *IF UNIT NOT CONNECTED 
   B5 = 4 
   FUNC RELEASE, ABT 70      *RELEASE UNIT
   B2 = 0                    *INDICATE UNIT NOT CONNECTED 
51 B5 = 12
   RES, ABT 70               *GET I/O CHANNEL 
   B5 = 2 
   FUNC FORMAT, ABT 70       *FORMAT FUNCTION 
   B2 = 1                    *INDICATE UNIT CONNECTED 
   B5 = 10
   OUT 3 WORDS FROM OB(401), ABT 70  *OUTPUT FORMAT PARAMS
   B5 = 3 
   FUNC STATUS, ABT 70       *REQUEST STATUS
   B5 = 11
   STATUS 16D WORDS TO SB(1), ABT 70  *INPUT ALL OF STATUS
   RETURN 
* 
*---------RELEASE SUBROUTINE
* 
52 IF(B2.EQ.0) GOTO 53       *IF UNIT NOT CONNECTED 
   B5 = 4 
   FUNC RELEASE, ABT 53      *RELEASE UNIT
53 B5 = 13
   REL, ABT 70               *RELEASE I/O CHANNEL 
   B2 = 0                    *INDICATE NOT CONNECTED
   RETURN 
* 
*--------REWIND SUBROUTINE
* 
55 GOSUB 50                  *RESERVE 
   B5 = 16
   FUNC REWIND, ABT 70
   GOSUB 60                  *WAIT END OF OP
56 GOSUB 50                  *RESERVE 
   IF(SB(1).AND.BUSY.NE.0) GOTO 56  *WAIT FOR REWIND TO END 
   IF(SB(1).AND.FILEMK.NE.0) ERROR 21/262, GOTO 70  *IF EOF 
   RETURN 
* 
*---------WAIT END-OF-OP SUBROUTINE 
* 
60 B3 = 0                    *CLEAR RE-TRY COUNTER
61 B5 = 3 
   FUNC STATUS, ABT 62       *REQUEST STATUS
   B5 = 11
   STATUS 16D WORDS TO SB(1), ABT 62  *TRY TO INPUT STATUS
   RETURN 
62 GOTO 61 WHILE (B3+1.NE.5)  *RE-TRY 
   ERROR 23/263, GOTO 70      *ERROR IF NO END-OF-OP
* 
*---------WRITE ONE 500B WORD RECORD SUBROUTINE 
* 
64 GOSUB 50                  *RESERVE 
   B5 = 14
   FUNC WRITE, ABT 70 
   B5 = 10
   OUTB 500 WORDS FROM OB, ABT 70  *WRITE A RECORD
   GOSUB 60                  *WAIT END OF OP
   RETURN 
* 
*--------PROCESS MODULE DETECTED ERROR(S) AND ABORTS
* 
70 BA = BA + 1                 *BUMP ERROR COUNTER
   MSG 24(EC,EA) TO LINE 0
   IF(EM.LT.100) GOTO 71       *IF NO COMMAND ABORT 
   MSG B5 TO LINE 0            *REPORT COMMAND THAT ABORTED 
71 MSG EM TO LINE 1 
   ENDSUB 
   GOSUB 52                    *RELEASE UNIT IF CONNECTED 
   CALL 988                    *REPORT CURRENT STATUS 
   MSG 1 TO DISPLAY            *RE-POST RUNNING MESSAGE 
   GOTO 34                     *RESTART 
77 END 30 
COMPILE   - T7X75 - 
   MODULE T7X75A,6000(53)LOCK   - SEARCH FILE MARK TEST (698/CMTS) -
*** T7X75A - SEARCH FILE MARK TEST  (698/CMTS)
* 
**  T7X75A EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW
* 
*        THIS MODULE VERIFIES THAT THE SEARCH FILE MARK CAPABILITY  OF
*        THE  SUBSYSTEM  IS  FUNCTIONAL.   BOTH  FORWARD  AND  REVERSE
*        SEARCHES ARE PERFORMED.
* 
*        TO EXECUTE THIS MODULE, AN ACCESS LEVEL OF 10 OR GREATER MUST
*        BE SPECIFIED ON THE MALET ASSIGN DIRECTIVE WHEN ASSIGNING THE
*        DEVICE TO TEST.  THIS IS REQUIRED SINCE T7X75A IS  WRITTEN  IN 
*        THE  LOW-LEVEL  MALET  LANGUAGE.   FAILURE  TO SET THE ACCESS
*        LEVEL TO 10 CAUSES TESTING TO BE ABORTED.
* 
*        PARAMETER REGISTER P9 CONTROLS THE NUMBER OF ITERATIONS  THIS
*        MODULE EXECUTES.  IF P9 = 0, ALL OF TAPE IS USED.
* 
*        THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE LOOP. 
*        REPEAT MODULE IS SUPPORTED.
* 
*        THIS MODULE WILL TERMINATE AFTER ONE MODULE DETECTED ERROR,
*        OR ONE COMMAND ABORT.
* 
*        DESCRIPTION -
* 
*           1. POST RUNNING MESSAGE.
*           2. RESERVE  THE  UNIT  AND  REWIND.  REPORT A 262 ERROR IF
*              FILE MARK STATUS IS UP AFTER THE REWIND HAS  COMPLETED.
*           3. RESERVE THE UNIT AND WRITE ONE RECORD OF 500 WORDS.
*           4. WRITE  A FILE MARK AND ANOTHER 500 WORD RECORD.  REPORT
*              A 122 ERROR IF NO END-OF-FILE STATUS AFTER THE WRITE OF
*              THE FILE MARK. 
*           5. SEARCH FILE MARK REVERSE.  REPORT A  261  ERROR  IF  NO
*              FILE MARK STATUS.
*           6. RESERVE THE UNIT AND BACKSPACE ONE RECORD. 
*           7. SEARCH  FILE  MARK  FORWARD.   REPORT A 260 ERROR IF NO
*              FILE MARK STATUS.
*           8. REPEAT  STEPS 3 THRU 7 THE NUMBER OF TIMES SPECIFIED BY
*              PARAMETER REGISTER P9. 
*           9. REPEAT  STEPS  2-8 IF REPEAT CONDITION OR REPEAT MODULE
*              IS SELECTED.  OTHERWISE, TERMINATE.
* 
*        NOTE- A WAIT FOR  END-OF-OPERATION  OCCURS  AFTER  EACH  TAPE
*              MOTION.  SHOULD THE END-OF-OP NOT BE DETECTED, AN ERROR
*              CODE 263 IS REPORTED.
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERROR MESSAGES.
* 
*           2. T7X75A - ABORT ON .FUNC FORMAT. COMMAND -
*           3. T7X75A - ABORT ON .FUNC STATUS. COMMAND -
*           4. T7X75A - ABORT ON .FUNC RELEASE. COMMAND - 
*           5. T7X75A - ABORT ON .FUNC SEARCH FM FWD. COMMAND - 
*           6. T7X75A - ABORT ON .FUNC SEARCH FM REV. COMMAND - 
*           7. T7X75A - ABORT ON .FUNC BKSP. COMMAND -
*           8. T7X75A - ABORT ON .OUT OR OUTB. COMMAND -
*           9. T7X75A - ABORT ON .STATUS. COMMAND - 
*          10. T7X75A - ABORT ON .RES. COMMAND -
*          11. T7X75A - ABORT ON .REL. COMMAND -
*          12. T7X75A - ABORT ON .FUNC WRITE. COMMAND - 
*          13. T7X75A - ABORT ON .FUNC ENDFILE. COMMAND - 
*          14. T7X75A - ABORT ON .FUNC REWIND. COMMAND -
* 
*          15. -EC 122 - NO END-OF-FILE STATUS AFTER AN ENDFILE 
* 
*          16. -EC 260 - NO FILE MARK STATUS AFTER SEARCH FM FWD
* 
*          17. -EC 261 - NO FILE MARK STATUS AFTER SEARCH FM REV
* 
*          18. -EC 262 - FILE MARK STATUS AT LOAD POINT 
* 
*          19. -EC 263 - NO END OF OPERATION
* 
  
*** T7X75A - INTERNAL DOCUMENTATION 
* 
*        REGISTER USAGE - 
* 
*          B0 = FILE (ITERATION) COUNTER
*          B1 = RECORD COUNTER (ALWAYS ZERO)
*          B2 = CONNECTED FLAG
*          B3 = RETRY COUNTER FOR STATUS
*          B5 = MESSAGE TO REPORT IN CASE OF AN ABORT 
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          T7X988 - REPORT ERROR STATUS 
* 
 1 FORMAT T7X75A - SEARCH FILE MARK TEST  (698/CMTS)
 2 FORMAT T7X75A - ABORT ON .FUNC FORMAT. COMMAND - 
 3 FORMAT T7X75A - ABORT ON .FUNC STATUS. COMMAND - 
 4 FORMAT T7X75A - ABORT ON .FUNC RELEASE. COMMAND -
 5 FORMAT T7X75A - ABORT ON .FUNC SEARCH FM FWD. COMMAND -
 6 FORMAT T7X75A - ABORT ON .FUNC SEARCH FM REV. COMMAND -
 7 FORMAT T7X75A - ABORT ON .FUNC BKSP. COMMAND - 
10 FORMAT T7X75A - ABORT ON .OUT OR OUTB. COMMAND - 
11 FORMAT T7X75A - ABORT ON .STATUS. COMMAND -
12 FORMAT T7X75A - ABORT ON .RES. COMMAND - 
13 FORMAT T7X75A - ABORT ON .REL. COMMAND - 
14 FORMAT T7X75A - ABORT ON .FUNC WRITE. COMMAND -
15 FORMAT T7X75A - ABORT ON .FUNC ENDFILE. COMMAND -
16 FORMAT T7X75A - ABORT ON .FUNC REWIND. COMMAND - 
17 FORMAT -EC 260 - NO FILE MARK STATUS AFTER SEARCH FM FWD 
20 FORMAT -EC 261 - NO FILE MARK STATUS AFTER SEARCH FM REV 
21 FORMAT -EC 262 - FILE MARK STATUS AT LOAD POINT
22 FORMAT -EC 122 - NO END-OF-FILE STATUS AFTER AN ENDFILE
23 FORMAT -EC 263 - NO END OF OPERATION 
24 FORMAT T7X75A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
25 FORMAT T7X75A ERROR(S) IN MODULE = *DEC
   DATA (OB,CON) 1,0,0,2,1,1,2,1,3  *DENSITY CODES
* 
   EQUATE RELEASE TO 1, FORMAT TO 4, STATUS TO 12, EOT TO 10
   EQUATE BKSP TO 113, SFMFWD TO 15, SFMREV TO 115, BOT TO 4
   EQUATE FILEMK TO 20, ENDFILE TO 51, WRITE TO 50
   EQUATE REWIND TO 10, BUSY TO 2 
* 
30 MSG 1 TO PRINT            *RUNNING MESSAGE 
   B5 = P1.AND.730.LS.2 
   OB(401) = B5+4220+SB(72)    *FORM FORMAT WORD 1
   OB(403) = P1.AND.2000+4000  *FORM FORMAT WORD 3
   B5 = P1.AND.7
   OB(402) = OB(B5+4).LS.6 + 2440   *FORM FORMAT WORD 2 
* 
* 
*  ------RESERVE UNIT, REWIND AND WRITE ONE RECORD
* 
31 MSG 1 TO DISPLAY          *RUNNING MESSAGE 
   GOSUB 55                  *REWIND
32 GOSUB 64                  *WRITE ONE RECORD
* 
*  -------WRITE END-OF-FILE AND ANOTHER RECORD
* 
   B5 = 15
   FUNC ENDFILE, ABT 70      *WRITE A FILE MARK 
   GOSUB 60                  *WAIT END OF OPERATION 
   IF(SB(1).AND.FILEMK.EQ.0) ERROR 22/122, GOTO 70  *NO EOF 
   GOSUB 64                  *WRITE ONE RECORD
* 
*  -------SEARCH FILE MARK REVERSE
* 
   B5 = 6 
   FUNC SFMREV, ABT 70       *SEARCH FILE MARK REVERSE
   GOSUB 60                  *WAIT END-OF-OP
   IF(SB(1).AND.FILEMK.EQ.0) ERROR 20/261, GOTO 70  *NO FM
* 
*  -------BACKSPACE ONE RECORD
* 
   GOSUB 50                  *RESERVE 
   B5 = 7 
   FUNC BKSP, ABT 70
   GOSUB 60                  *WAIT END OF OP
* 
*  -------SEARCH FILE MARK FORWARD
* 
   B5 = 5 
   FUNC SFMFWD, ABT 70       *SEARCH FILE MARK FORWARD
   GOSUB 60                  *WAIT END-OF-OP
   IF(SB(1).AND.FILEMK.EQ.0) ERROR 17/260, GOTO 70  *NO FM
   IF(SB(1).AND.EOT.NE.0) GOTO 35    *IF END OF TAPE
34 IF(P9.EQ.0) GOTO 32
   GOTO 32 WHILE (B0+1.NE.P9)  *DO P9 SEQUENCES 
35 B0 = 0                      *CLEAR FILE(ITERATION) COUNT 
   IF(ES.AND.RM.NE.0) GOTO 31  *IF REPEAT MODULE
   IF(BA.EQ.0) GOTO 37         *IF NO MODULE ERRORS 
36 MSG 25(BA) TO DAYFILE       *REPORT ERRORS TO DAYFILE
37 GOSUB 52                    *RELEASE UNIT IF CONNECTED 
   GOTO 77                     *TERMINATE 
* 
*  -------RESERVE SUBROUTINE
* 
50 IF(B2.EQ.0) GOTO 51       *IF UNIT NOT CONNECTED 
   B5 = 4 
   FUNC RELEASE, ABT 70      *RELEASE UNIT
   B2 = 0                    *INDICATE UNIT NOT CONNECTED 
51 B5 = 12
   RES, ABT 70               *GET I/O CHANNEL 
   B5 = 2 
   FUNC FORMAT, ABT 70       *FORMAT FUNCTION 
   B2 = 1                    *INDICATE UNIT CONNECTED 
   B5 = 10
   OUT 3 WORDS FROM OB(401), ABT 70  *OUTPUT FORMAT PARAMS
   B5 = 3 
   FUNC STATUS, ABT 70       *REQUEST STATUS
   B5 = 11
   STATUS 16D WORDS TO SB(1), ABT 70  *INPUT ALL OF STATUS
   RETURN 
* 
*  -------RELEASE SUBROUTINE
* 
52 IF(B2.EQ.0) GOTO 53       *IF UNIT NOT CONNECTED 
   B5 = 4 
   FUNC RELEASE, ABT 53      *RELEASE UNIT
53 B5 = 13
   REL, ABT 70               *RELEASE I/O CHANNEL 
   B2 = 0                    *INDICATE NOT CONNECTED
   RETURN 
* 
*  ------REWIND SUBROUTINE
* 
55 GOSUB 50                  *RESERVE 
   B5 = 16
   FUNC REWIND, ABT 70
   GOSUB 60                  *WAIT END OF OP
56 GOSUB 50                  *RESERVE 
   IF(SB(1).AND.BUSY.NE.0) GOTO 56  *WAIT FOR REWIND TO END 
   IF(SB(1).AND.FILEMK.NE.0) ERROR 21/262, GOTO 70  *IF EOF 
   RETURN 
* 
*  -------WAIT END-OF-OP SUBROUTINE 
* 
60 B3 = 0                    *CLEAR RE-TRY COUNTER
61 B5 = 3 
   FUNC STATUS, ABT 62       *REQUEST STATUS
   B5 = 11
   STATUS 16D WORDS TO SB(1), ABT 62  *TRY TO INPUT STATUS
   RETURN 
62 GOTO 61 WHILE (B3+1.NE.5)  *RE-TRY 
   ERROR 23/263, GOTO 70      *ERROR IF NO END-OF-OP
* 
*  -------WRITE ONE 500B WORD RECORD SUBROUTINE 
* 
64 GOSUB 50                  *RESERVE 
   B5 = 14
   FUNC WRITE, ABT 70 
   B5 = 10
   OUTB 500 WORDS FROM OB, ABT 70  *WRITE A RECORD
   GOSUB 60                  *WAIT END OF OP
   RETURN 
* 
*  ------PROCESS MODULE DETECTED ERROR(S) AND ABORTS
* 
70 BA = BA + 1                 *BUMP ERROR COUNTER
   MSG 24(EC,EA) TO LINE 0
   IF(EM.LT.100) GOTO 71       *IF NO COMMAND ABORT 
   MSG B5 TO LINE 0            *REPORT COMMAND THAT ABORTED 
71 MSG EM TO LINE 1 
   ENDSUB 
   GOSUB 52                    *RELEASE UNIT IF CONNECTED 
   CALL 988                    *REPORT CURRENT STATUS 
   IF(ES.AND.RM.NE.0) GOTO 31  *IF REPEAT MODULE
   GOTO 36                     *TERMINATE 
77 END 30 
COMPILE   - T7X75A -
   MODULE T7X76,6000(44,54,55,53)LOCK  - NOISE BYPASS TEST
*** T7X76 - NOISE BYPASS TEST 
* 
**  T7X76 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE VERIFIES THAT THE NOISE BYPASS CAPABILITY 
*         OF THE SUBSYSTEM IS FUNCTIONAL.  ONLY FORWARD READS OVER
*         NOISE RECORDS ARE PERFORMED.
* 
*         TO EXECUTE THIS MODULE, AN ACCESS LEVEL OF 10 OR GREATER MUST 
*         BE SPECIFIED ON THE MALET ASSIGN DIRECTIVE WHEN ASSIGNING THE 
*         DEVICE TO TEST.  THIS IS REQUIRED SINCE T7X76 IS WRITTEN IN 
*         THE LOW-LEVEL MALET LANGUAGE.  FAILURE TO CORRECTLY SET THE 
*         ACCESS LEVEL WILL CAUSE TESTING TO BE ABORTED.
* 
*         PARAMETER REGISTER P9 CONTROLS THE NUMBER OF ITERATIONS THIS
*         MODULE EXECUTES.
* 
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE.
*         2. RESERVE THE UNIT AND REWIND. 
*         3. SET THE MAXIMUM NOISE SIZE IN CHARACTERS BASED ON DENSITY
*            (31D FOR NRZI, 29D FOR PHASE OR 20D FOR GCR).
*         4. SELECT A RANDOM WORD COUNT TO WRITE THAT IS LESS THAN
*            THE MAXIMUM NOISE SIZE/2.
*         5. RESERVE THE UNIT AND WRITE A RECORD OF THE SELECTED RANDOM 
*            LENGTH.
*         6. REPEAT STEP 5 UNTIL THREE RECORDS HAVE BEEN WRITTEN. 
*         7. RESERVE THE UNIT AND WRITE AN END OF FILE.  REPORT A 
*            122 ERROR IF NO FILE MARK STATUS.
*         8. RESERVE THE UNIT AND REWIND AND PERFORM A READ FORWARD TO
*            BYPASS THE THREE NOISE RECORDS AND READ THE END-OF-FILE. 
*            REPORT AN ERROR CODE 264 IF NO END-OF-FILE STATUS AFTER
*            THE READ.
*         9. REPEAT STEPS 3 THRU 8 THE NUMBER OF TIMES SPECIFIED BY 
*            PARAMETER REGISTER P9. 
*        10. REPEAT STEPS 2 THRU 9 IF REPEAT CONDITION OR REPEAT MODULE 
*            IS SELECTED.  OTHERWISE, TERMINATE.
* 
*         NOTE   A WAIT FOR END-OF-OPERATION OCCURS AFTER EACH TAPE 
*                MOTION.  SHOULD THE END-OF-OP NOT BE DETECTED, AN
*                ERROR CODE 263 IS REPORTED.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERROR MESSAGES.
* 
*         2. T7X76 - ABORT ON .FUNC FORMAT. COMMAND - 
*         3. T7X76 - ABORT ON .FUNC STATUS. COMMAND - 
*         4. T7X76 - ABORT ON .FUNC RELEASE. COMMAND -
*         5. T7X76 - ABORT ON .FUNC READFWD. COMMAND -
*         6. T7X76 - ABORT ON .INB. COMMAND - 
*         7. T7X76 - ABORT ON .FUNC REWIND. COMMAND - 
*         8. T7X76 - ABORT ON .OUT OR OUTB. COMMAND - 
*         9. T7X76 - ABORT ON .STATUS. COMMAND -
*        10. T7X76 - ABORT ON .RES. COMMAND - 
*        11. T7X76 - ABORT ON .REL. COMMAND - 
*        12. T7X76 - ABORT ON .FUNC WRITE. COMMAND -
*        13. T7X76 - ABORT ON .FUNC ENDFILE. COMMAND -
* 
*        14. -EC 122 - NO END-OF-FILE STATUS AFTER AN ENDFILE 
* 
*        15. -EC 263 - NO END OF OPERATION
* 
*        16. -EC 264 - NOISE BYPASS FAILURE - NO EOF STATUS 
* 
*** T7X76 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = FILE (ITERATION) COUNTER 
*         B1 = RECORD COUNTER 
*         B2 = CONNECTED FLAG 
*         B3 = RETRY COUNTER FOR STATUS 
*         B5 = MESSAGE TO REPORT IN CASE OF AN ABORT
*         B6 = MAXIMUM NOISE SIZE FOR SELECTED DENSITY
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T7X988 - REPORT ERROR STATUS
* 
 1 FORMAT T7X76 - NOISE BYPASS TEST 
 2 FORMAT T7X76 - ABORT ON .FUNC FORMAT. COMMAND -
 3 FORMAT T7X76 - ABORT ON .FUNC STATUS. COMMAND -
 4 FORMAT T7X76 - ABORT ON .FUNC RELEASE. COMMAND - 
 5 FORMAT T7X76 - ABORT ON .FUNC READFWD. COMMAND - 
 6 FORMAT T7X76 - ABORT ON .INB. COMMAND -
 7 FORMAT T7X76 - ABORT ON .FUNC REWIND. COMMAND -
10 FORMAT T7X76 - ABORT ON .OUT OR OUTB. COMMAND -
11 FORMAT T7X76 - ABORT ON .STATUS. COMMAND - 
12 FORMAT T7X76 - ABORT ON .RES. COMMAND -
13 FORMAT T7X76 - ABORT ON .REL. COMMAND -
14 FORMAT T7X76 - ABORT ON .FUNC WRITE. COMMAND - 
15 FORMAT T7X76 - ABORT ON .FUNC ENDFILE. COMMAND - 
17 FORMAT -EC 264 - NOISE BYPASS FAILURE - NO EOF STATUS
22 FORMAT -EC 122 - NO END-OF-FILE STATUS AFTER AN ENDFILE
23 FORMAT -EC 263 - NO END OF OPERATION 
24 FORMAT T7X76 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
25 FORMAT T7X76 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE RELEASE TO 1, FORMAT TO 4, STATUS TO 12, EOT TO 10
   EQUATE REWIND TO 10, READFWD TO 40, BOT TO 4, BUSY TO 2
   EQUATE FILEMK TO 20, ENDFILE TO 51, WRITE TO 50
   DATA (OB,CON) 0,1,1,1,1,1,1,2,1,3  *DENSITY CODES                     T7X0380
* 
30 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   B5 = P1.AND.730.LS.2 
   OB(401) = B5+4220+SB(72)    *FORM FORMAT WORD 1
   OB(403) = P1.AND.2000+4000  *FORM FORMAT WORD 3
   B6 = 31D                  *MAX NRZI NOISE SIZE 
   B5 = P1.AND.7
   OB(402) = OB(B5).LS.6 + 2440  *FORM FORMAT WORD 2
   IF(DC.EQ.44) GOTO 31      *IF 7TK UNIT 
   OB(402) = OB(B5+5).LS.6 + 2440 
   B6 = 20D                  *MAX GCR NOISE SIZE
   IF(P1.AND.7.EQ.4)GOTO 31  *IF GCR DENSITY SELECTED 
   B6 = 29D                  *MAX PE NOISE SIZE 
   IF(P1.AND.7.EQ.2)GOTO 31  *IF PE DENSITY SELECTED
   B6 = 31D                  *MAX NRZI NOISE SIZE 
* 
*-------RESERVE UNIT AND REWIND 
* 
31 GOSUB 55                  *REWIND
* 
*---------SELTCT A RANDOM WORD COUNT .LE. NOISE SIZE/2
* 
32 WC = RT.AND.37+1 
   IF(WC.LS.1.GE.B6)GOTO 32  *IF TOO LARGE, TRY AGAIN 
* 
*---------WRITE THREE RECORDS OF THE SELECTED RANDOM LENGTH 
* 
   B1 = 1                    *SET RECORD COUNTER
33 GOSUB 50                  *RESERVE 
   OB = B1                   *FIRST DATA WORD = RECORD
   B5 = 14
   FUNC WRITE, ABT 70 
   B5 = 10
   OUTB, ABT 70              *WRITE A RECORD
   GOSUB 60                  *WAIT END OF OP
   GOTO 33 WHILE (B1+1.NE.4)  *WRITE 3 RECORDS
* 
*---------WRITE AN END-OF-FILE
* 
   GOSUB 50                  *RESERVE 
   B5 = 15
   FUNC ENDFILE, ABT 70      *WRITE A FILE MARK 
   GOSUB 60                  *WAIT END OF OPERATION 
   IF(SB(1).AND.FILEMK.EQ.0) ERROR 22/122, GOTO 70  *NO EOF 
* 
*---------REWIND THEN READ THE 3 NOISE RECORDS AND END-OF-FILE FORWARD
* 
   GOSUB 55                  *REWIND
   GOSUB 50                  *RESERVE 
   B5 = 5 
   FUNC READFWD, ABT 70 
   B5 = 6 
   INB, ABT 70               *READ
   GOSUB 60                  *WAIT END OF OP
   IF(SB(1).AND.FILEMK.EQ.0) ERROR 17/264, GOTO 70  *NO EOF 
   IF(SB(1).AND.EOT.NE.0) GOTO 35  *IF END OF TAPE
34 GOTO 31 WHILE (B0+1.NE.P9)  *DO P9 SEQUENCES 
35 B0 = 0                      *CLEAR FILE(ITERATION) COUNT 
   IF(ES.AND.CM.NE.0) GOTO 31  *IF REPEAT CONDITION/MODULE
   IF(BA.EQ.0) GOTO 37         *IF NO MODULE ERRORS 
36 MSG 25(BA) TO DAYFILE       *REPORT ERRORS TO DAYFILE
37 GOSUB 52                    *RELEASE UNIT IF CONNECTED 
   GOTO 77                     *TERMINATE 
* 
*---------RESERVE SUBROUTINE
* 
50 OB(402) = OB(402).AND.7740 + B6  *ADD NOISE SIZE 
   IF(B2.EQ.0) GOTO 51       *IF UNIT NOT CONNECTED 
   B5 = 4 
   FUNC RELEASE, ABT 70      *RELEASE UNIT
   B2 = 0                    *INDICATE UNIT NOT CONNECTED 
51 B5 = 12
   RES, ABT 70               *GET I/O CHANNEL 
   B5 = 2 
   FUNC FORMAT, ABT 70       *FORMAT FUNCTION 
   B2 = 1                    *INDICATE UNIT CONNECTED 
   B5 = 10
   OUT 3 WORDS FROM OB(401), ABT 70  *OUTPUT FORMAT PARAMS
   B5 = 3 
   FUNC STATUS, ABT 70       *REQUEST STATUS
   B5 = 11
   STATUS 16D WORDS TO SB(1), ABT 70  *INPUT ALL OF STATUS
   RETURN 
* 
*---------RELEASE SUBROUTINE
* 
52 IF(B2.EQ.0) GOTO 53       *IF UNIT NOT CONNECTED 
   B5 = 4 
   FUNC RELEASE, ABT 53      *RELEASE UNIT
53 B5 = 13
   REL, ABT 70               *RELEASE I/O CHANNEL 
   B2 = 0                    *INDICATE NOT CONNECTED
   RETURN 
* 
*--------REWIND SUBROUTINE
* 
55 GOSUB 50                  *RESERVE 
   B5 = 7 
   FUNC REWIND, ABT 70
   GOSUB 60                  *WAIT END OF OP
56 GOSUB 50                  *RESERVE 
   IF(SB(1).AND.BUSY.NE.0) GOTO 56  *WAIT FOR REWIND TO END 
   RETURN 
* 
*---------WAIT END-OF-OP SUBROUTINE 
* 
60 B3 = 0                    *CLEAR RE-TRY COUNTER
61 B5 = 3 
   FUNC STATUS, ABT 62       *REQUEST STATUS
   B5 = 11
   STATUS 16D WORDS TO SB(1), ABT 62  *TRY TO INPUT STATUS
   RETURN 
62 GOTO 61 WHILE (B3+1.NE.5)  *RE-TRY 
   ERROR 23/263, GOTO 70      *ERROR IF NO END-OF-OP
* 
*--------PROCESS MODULE DETECTED ERROR(S) AND ABORTS
* 
70 BA = BA + 1                 *BUMP ERROR COUNTER
   MSG 24(EC,EA) TO LINE 0
   IF(EM.LT.100) GOTO 71       *IF NO COMMAND ABORT 
   MSG B5 TO LINE 0            *REPORT COMMAND THAT ABORTED 
71 MSG EM TO LINE 1 
   ENDSUB 
   GOSUB 52                    *RELEASE UNIT IF CONNECTED 
   CALL 988                    *REPORT CURRENT STATUS 
   MSG 1 TO DISPLAY            *REPOST RUNNING MESSAGE
   GOTO 34                     *RESTART 
77 END 30 
COMPILE   - T7X76 - 
   MODULE T7X77,6000(44,54,55,53)LOCK  - WARMSTART READ TEST
*** T7X77 - WARMSTART READ TEST 
* 
**  T7X77 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE VERIFIES THAT THE WARMSTART READ CAPABILITY 
*         OF THE SUBSYSTEM IS FUNCTIONAL.  ONLY ONE RECORD OF 400B
*         WORDS IS READ AFTER IT HAS BEEN WRITTEN BY THIS MODULE. 
*         RECORD LENGTH AND CONTENT IS VERIFIED AGAINST DATA WRITTEN. 
* 
*         TO EXECUTE THIS MODULE, AN ACCESS LEVEL OF 10 OR GREATER MUST 
*         BE SPECIFIED ON THE MALET ASSIGN DIRECTIVE WHEN ASSIGNING THE 
*         DEVICE TO TEST.  THIS IS REQUIRED SINCE T7X77 IS WRITTEN IN 
*         THE LOW-LEVEL MALET LANGUAGE.  FAILURE TO CORRECTLY SET THE 
*         ACCESS LEVEL WILL CAUSE TESTING TO BE ABORTED.
* 
*         PARAMETER REGISTER P9 CONTROLS THE NUMBER OF ITERATIONS THIS
*         MODULE EXECUTES.
* 
* 
*   DESCRIPTION - 
* 
*         1. POST RUNNING MESSAGE.
*         2. RESERVE THE UNIT AND REWIND. 
*         3. RESERVE THE UNIT AND WRITE A 400 WORD RECORD OF
*            ALTERNATING 2525/5252 PATTERN.  REPORT A 200 ERROR 
*            IF ALERT STATUS EXISTS AFTER THE WRITE.
*         4. ISSUE AN AUTOLOAD (414) FUNCTION TO CLEAR THE CONTROLLER.
*         5. ISSUE A WARMSTART READ FUNCTION TO REWIND THE UNIT AND 
*            PREPARE THE UNIT FOR A READ. 
*         6. PERFORM AN INPUT AND SAVE THE NUMBER OF WORDS READ.
*            REPORT A 266 ERROR IF THERE IS A WT/WC MISMATCH.  REPORT 
*            A 265 ERROR IF ALERT STATUS EXISTS AFTER THE READ. 
*         7. COMPARE THE DATA READ WITH THE DATA WRITTEN.  REPORT A 
*            257 ERROR ALONG WITH EXPECTED/ACTUAL DATA IF THERE IS A
*            MISCOMPARE.
*         8. REPEAT STEPS 2 THRU 7 FOR THE NUMBER OF TIMES SPECIFIED
*            IN PARAMETER REGISTER P9.
*         9. REPEAT STEPS 2 THRU 8 IF REPEAT CONDITION OR REPEAT MODULE 
*            IS SELECTED.  OTHERWISE, TERMINATE.
* 
*         NOTE   A WAIT FOR END-OF-OPERATION OCCURS AFTER EACH TAPE 
*                MOTION.  SHOULD THE END-OF-OP NOT BE DETECTED, AN
*                ERROR CODE 263 IS REPORTED.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERROR MESSAGES.
* 
*         2. T7X77 - ABORT ON .FUNC FORMAT. COMMAND - 
*         3. T7X77 - ABORT ON .FUNC STATUS. COMMAND - 
*         4. T7X77 - ABORT ON .FUNC RELEASE. COMMAND -
*         5. T7X77 - ABORT ON .FUNC CLEAR. COMMAND -
*         6. T7X77 - ABORT ON .INB. COMMAND - 
*         7. T7X77 - ABORT ON .FUNC REWIND. COMMAND - 
*         8. T7X77 - ABORT ON .OUT OR OUTB. COMMAND - 
*         9. T7X77 - ABORT ON .STATUS. COMMAND -
*        10. T7X77 - ABORT ON .RES. COMMAND - 
*        11. T7X77 - ABORT ON .REL. COMMAND - 
*        12. T7X77 - ABORT ON .FUNC WRITE. COMMAND -
*        13. T7X77 - ABORT ON .FUNC WARMRD. COMMAND - 
* 
*        14. -EC 200 - ALERT AFTER A WRITE OPERATION
* 
*        15. -EC 263 - NO END OF OPERATION
* 
*        16. -EC 265 - ALERT AFTER WARMSTART READ INPUT.
* 
*        17. -EC 266 - WARMSTART LENGTH ERR- EXP=400 ACT=*OCT 
* 
*        18. -EC 257 - DATA COMPARE ERROR ON WARMSTART READ.
* 
*** T7X77 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = FILE (ITERATION) COUNTER 
*         B1 = RECORD COUNTER 
*         B2 = CONNECTED FLAG 
*         B3 = RETRY COUNTER FOR STATUS 
*         B4 = WARMSTART READ FUNCTION TO ISSUE 
*         B5 = MESSAGE TO REPORT IN CASE OF AN ABORT
*         B6 = BUFFER INDEX FOR DATA STORING
*            = WORD COUNT FOR DATA COMPARE
*            = SAVE AREA FOR WORDS TRANSMITTED
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T7X988 - REPORT ERROR STATUS
* 
 1 FORMAT T7X77 - WARMSTART READ TEST 
 2 FORMAT T7X77 - ABORT ON .FUNC FORMAT. COMMAND -
 3 FORMAT T7X77 - ABORT ON .FUNC STATUS. COMMAND -
 4 FORMAT T7X77 - ABORT ON .FUNC RELEASE. COMMAND - 
 5 FORMAT T7X77 - ABORT ON .FUNC CLEAR. COMMAND - 
 6 FORMAT T7X77 - ABORT ON .INB. COMMAND -
 7 FORMAT T7X77 - ABORT ON .FUNC REWIND. COMMAND -
10 FORMAT T7X77 - ABORT ON .OUT OR OUTB. COMMAND -
11 FORMAT T7X77 - ABORT ON .STATUS. COMMAND - 
12 FORMAT T7X77 - ABORT ON .RES. COMMAND -
13 FORMAT T7X77 - ABORT ON .REL. COMMAND -
14 FORMAT T7X77 - ABORT ON .FUNC WRITE. COMMAND - 
15 FORMAT T7X77 - ABORT ON .FUNC WARMRD. COMMAND -
17 FORMAT -EC 200 - ALERT AFTER A WRITE OPERATION 
20 FORMAT -EC 263 - NO END OF OPERATION 
21 FORMAT -EC 265 - ALERT AFTER WARMSTART READ INPUT
22 FORMAT -EC 266 - WARMSTART LENGTH ERR- EXP=400 ACT=*OCT
23 FORMAT -EC 257 - DATA COMPARE ERROR ON WARMSTART READ
24 FORMAT T7X77 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
25 FORMAT T7X77 ERROR(S) IN MODULE = *DEC 
   DATA (OB,CON) 0,1,1,1,1,1,1,2,1,3  *DENSITY CODES                     T7X0380
* 
   EQUATE RELEASE TO 1, FORMAT TO 4, STATUS TO 12 
   EQUATE REWIND TO 10, CLEAR TO 414, BOT TO 4, BUSY TO 2 
   EQUATE WARMRD TO 120, WRITE TO 50, ALERT TO 4000 
* 
30 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   B5 = P1.AND.730.LS.2 
   OB(401) = B5+4220+SB(72)    *FORM FORMAT WORD 1
   OB(403) = P1.AND.2000+4000  *FORM FORMAT WORD 3
   B5 = P1.AND.7
   OB(402) = OB(B5).LS.6 + 2440  *FORM FORMAT WORD 2
   IF(DC.EQ.44) GOTO 31      *IF 7TK UNIT 
   OB(402) = OB(B5+5).LS.6 + 2440 
* 
*-------RESERVE UNIT AND REWIND 
* 
31 GOSUB 55                  *REWIND
* 
*---------WRITE A RECORD OF 2525/5252 PATTERN 
* 
32 GOSUB 50                  *RESERVE 
   WC = 400 
   B6 = 0 
33 OB(B6) = 2525
   OB(B6+1) = 5252
   GOTO 33 WHILE (B6+2.LT.WC) 
   B5 = 14
   FUNC WRITE, ABT 70 
   B5 = 10
   OUTB, ABT 70              *WRITE A RECORD
   GOSUB 60                  *WAIT END OF OP
   IF(SB(1).AND.ALERT.NE.0) ERROR 17/200, GOTO 70  *ALERT 
* 
*---------ISSUE AUTOLOAD FUNCTION TO CLEAR CONTROLLER 
* 
   B5 = 5 
   FUNC CLEAR, ABT 70 
* 
*---------PERFORM A WARMSTART READ AT THE REQUESTED DENSITY 
* 
   B4 = SB(72) + WARMRD      *BUILD WARMSTART READ FUNCTION 
   IF(DC.NE.44) GOTO 34      *IF A 9TK UNIT IS ASSIGNED 
   IF(P1.AND.7.EQ.0)GOTO 34  *IF 7TK 556 BPI
   B4 = B4 + 200             *INDICATE 800 BPI 7TK OPERATION
34 B5 = 15
   FUNC B4, ABT 70           *WARMSTART READ FUNCTION 
   B5 = 6 
   INB, ABT 70               *READ
   B6 = WT                   *SAVE WORDS TRANSMITTED
   GOSUB 60                  *WAIT END OF OP
   IF(B6.NE.WC) ERROR 22/266, GOTO 70  *IF WC/WT MISMATCH 
   IF(SB(1).AND.ALERT.NE.0) ERROR 21/265, GOTO 70  *ALERT 
   ERROR 23/257 
   B6 = 400 
   COMPARE IB TO OB FOR B6, ABT 70  *COMPARE DATA 
35 GOTO 31 WHILE (B0+1.NE.P9)  *DO P9 SEQUENCES 
36 B0 = 0                      *CLEAR FILE(ITERATION) COUNT 
   IF(ES.AND.CM.NE.0) GOTO 31  *IF REPEAT CONDITION/MODULE
   IF(BA.EQ.0) GOTO 37         *IF NO MODULE ERRORS 
   MSG 25(BA) TO DAYFILE       *REPORT ERRORS TO DAYFILE
37 GOSUB 52                    *RELEASE UNIT IF CONNECTED 
   GOTO 77                     *TERMINATE 
* 
*---------RESERVE SUBROUTINE
* 
50 IF(B2.EQ.0) GOTO 51       *IF UNIT NOT CONNECTED 
   B5 = 4 
   FUNC RELEASE, ABT 70      *RELEASE UNIT
   B2 = 0                    *INDICATE UNIT NOT CONNECTED 
51 B5 = 12
   RES, ABT 70               *GET I/O CHANNEL 
   B5 = 2 
   FUNC FORMAT, ABT 70       *FORMAT FUNCTION 
   B2 = 1                    *INDICATE UNIT CONNECTED 
   B5 = 10
   OUT 3 WORDS FROM OB(401), ABT 70  *OUTPUT FORMAT OPTIONS 
   B5 = 3 
   FUNC STATUS, ABT 70       *REQUEST STATUS
   B5 = 11
   STATUS 16D WORDS TO SB(1), ABT 70  *INPUT ALL OF STATUS
   RETURN 
* 
*---------RELEASE SUBROUTINE
* 
52 IF(B2.EQ.0) GOTO 53       *IF UNIT NOT CONNECTED 
   B5 = 4 
   FUNC RELEASE, ABT 53      *RELEASE UNIT
53 B5 = 13
   REL, ABT 70               *RELEASE I/O CHANNEL 
   B2 = 0                    *INDICATE NOT CONNECTED
   RETURN 
* 
*--------REWIND SUBROUTINE
* 
55 GOSUB 50                  *RESERVE 
   B5 = 7 
   FUNC REWIND, ABT 70
   GOSUB 60                  *WAIT END OF OP
56 GOSUB 50                  *RESERVE 
   IF(SB(1).AND.BUSY.NE.0) GOTO 56  *WAIT FOR REWIND TO END 
   RETURN 
* 
*---------WAIT END-OF-OP SUBROUTINE 
* 
60 B3 = 0                    *CLEAR RE-TRY COUNTER
61 B5 = 3 
   FUNC STATUS, ABT 62       *REQUEST STATUS
   B5 = 11
   STATUS 16D WORDS TO SB(1), ABT 62  *TRY TO INPUT STATUS
   RETURN 
62 GOTO 61 WHILE (B3+1.NE.5)  *RE-TRY 
   ERROR 20/263, GOTO 70      *ERROR IF NO END-OF-OP
* 
*--------PROCESS MODULE DETECTED ERROR(S) AND ABORTS
* 
70 BA = BA + 1                 *BUMP ERROR COUNTER
   MSG 24(EC,EA) TO LINE 0
   IF(EM.LT.100) GOTO 71       *IF NO COMMAND ABORT 
   MSG B5 TO LINE 0            *REPORT COMMAND THAT ABORTED 
71 MSG EM (B6) TO LINE 1
   ENDSUB 
   GOSUB 52                    *RELEASE UNIT IF CONNECTED 
   CALL 988                    *REPORT CURRENT STATUS 
   MSG 1 TO DISPLAY            *REPOST RUNNING MESSAGE
   GOTO 35                     *RESTART 
77 END 30 
COMPILE   - T7X77 - 
   MODULE T7X80,67X(44,54,55,53)LOCK  - COMPATIBILITY TEST
*** T7X80 - COMPATIBILITY TEST
* 
**  T7X80 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         THIS MODULE ALLOWS THE USER TO VERIFY READ COMPATIBILITY
*         BETWEEN 67X TAPE TRANSPORTS OR BETWEEN A 67X TRANSPORT AND
*         OTHER CDC TAPE UNITS (60X, 65X, 66X, 698).  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
*         67X OR 698 UNITS. TO ACCOMPLISH THIS TASK ON OTHER DEVICES, 
*         THE COMPATIBILITY TEST IN T5X OR T6X 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 T7X 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 T7X81.
* 
*         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 T7X41 (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.  HOWEVER, A
*         VALUE OF 5000 OCTAL SHOULD BE USED IN P2 FOR GCR TAPES TO 
*         ENSURE SIMILAR LENGTH RECORDS ARE GENERATED AT THE HIGHER 
*         DENSITY AS COMPARED TO LOWER DENSITIES.  THE RECORD 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
*            9TK 6250 BPI   - 27
* 
*         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 ERROR RECOVERY BE DISABLED DURING THE
*         COMPATIBILITY TEST AND THAT ODD PARITY WITH NO CODE 
*         TRANSLATION BE USED (P1 = 20XX).  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; 
* 
*            T7X80  - READ FORWARD
*            T7X80A - WRITE 
*            T7X80B - 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 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 T7X80B (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 T7X80A (WRITE MODULE).
*            IF WRITE RING STATUS IS UP OR TO T7X80B (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 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. T7X80 - ABORT ON .RES. COMMAND 
*         3. T7X80 - ABORT ON .REL. COMMAND 
*         4. T7X80 - ABORT ON .REWIND. COMMAND
*         5. T7X80 - ABORT ON .READ FWD. COMMAND
*         6. T7X80 - ABORT ON .WAITNB. COMMAND
*         7. T7X80 - ABORT ON .BKSP. COMMAND
* 
*         8. EC070- TAPE MOUNTED IS NOT A -COMPAT- TAPE 
* 
*         9. EC071- RECORD COUNT=*OCT IN FILE *OCT, EXP=0311
* 
*        10. EC203- ALERT BIT IN GENERAL STATUS WAS SET DURING
*            A READ FORWARD OPERATION.  THE INPUT BUFFER CONTAINS 
*            DATA JUST READ.
* 
*** T7X80 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = TOTAL FILE COUNTER 
*         B1 = RECORD COUNTER PER FILE
*         B2 = INDEX INTO OB FOR RECORD CODING
*         B3 = WORD COUNT FOR LATER WRITE OPERATIONS
*         B4 = CONSECUTIVE FILE MARKS COUNTER 
*         B5 = ABORT MESSAGE POINTER
*            = MARGINS
*         B7 = MOTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X80 - COMPATIBILITY FORWARD READ -
 2 FORMAT T7X80 ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T7X80 - ABORT ON .READ FWD. COMMAND - 
 4 FORMAT T7X80 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T7X80 - ABORT ON .RES. COMMAND -
 6 FORMAT T7X80 - ABORT ON .REL. COMMAND -
 7 FORMAT T7X80 - 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 T7X80 - FILE=*OCT CH=*OCT EQ=*OCT UN=*OCT SYS=*OCT
13 FORMAT T7X80 - END OF TAPE ENCOUNTERED AT RECORD *OCT
14 FORMAT T7X80 ERROR(S) IN MODULE = *DEC - 
15 FORMAT T7X80 - ABORT ON .BKSP. COMMAND - 
* 
   EQUATE EOT TO 10, EOF TO 20, RING TO 200, STERR TO 5074
* 
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 
* 
*---------DETERMINE IF WE HAVE A -COMPAT- TAPE MOUNTED
* 
24 WC = 500 
   B5 = P3.RS.6 
   MARGINS B5                *SELECT READ CLIP MARGINS
   B5 = 5 
   RES P1, ABT 74 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
   B5 = 3 
   B7 = 5                    *READ FORWARD CODE 
   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 
   B4 = 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 
   B7 = 5                    *READ FORWARD MOTION CODE
   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 B4 = 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 B4 = B4 + 1               *BUMP CONSECUTIVE FILES CTR. 
   IF(B4.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
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 44       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
44 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
   B7 = 6                    *REVERSE READ MOTION CODE
   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
   CALL 98A                  *PROCESS ERROR CODE
   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 IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 14 (BA) TO DAYFILE    *REPORT ERRORS TO DAYFILE
   END 20 
COMPILE   - T7X80 - 
   MODULE T7X80A,67X(44,54,55,53)LOCK  - COMPATIBILITY WRITE
*** T7X80A- COMPATIBILITY WRITE 
* 
**  T7X80A- 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 T7X80B (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 T7X80B (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. T7X80A- ABORT ON .RES. COMMAND 
*         3. T7X80A- ABORT ON .REL. COMMAND 
*         4. T7X80A- ABORT ON .WAITNB. COMMAND
*         5. T7X80A- ABORT ON .WRITE. COMMAND 
*         6. T7X80A- ABORT ON .BKSP. COMMAND
*         7. T7X80A- ABORT ON .ENDFILE. COMMAND 
*         8. T7X80A- ABORT ON .ERASE. COMMAND 
*         9. T7X80A- ABORT ON .READ FWD. COMMAND
* 
*        10. EC122- NO FM/TM STATUS IN GENERAL STATUS AT
*            END OF OPERATION AFTER A WRITE FM/TM 
* 
*        11. EC200- AN UNEXPECTED BIT APPEARED IN GENERAL STATUS
*            AFTER A WRITE OPERATION.  NOTE THAT GENERAL STATUS 
*            WAS MASKED WITH 5034B. 
* 
*        12. EC246- AN ALERT STATUS OCCURRED AFTER AN ERASE.
* 
* 
*** T7X80A- 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
*         B5 = ABORT MESSAGE POINTER
*         B6 = WRITE AND ENDFILE RETRY COUNTER
*         B7 = MOTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X80A- COMPATIBILITY WRITE (FILE *OCT) 
 2 FORMAT T7X80A ERROR CODE = *OCT AT LINE (EA) = *OCT
 3 FORMAT T7X80A- ABORT ON .RES. COMMAND -
 4 FORMAT T7X80A- ABORT ON .REL. COMMAND -
 5 FORMAT T7X80A- ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X80A- ABORT ON .WAITNB. COMMAND - 
 7 FORMAT T7X80A- ABORT ON .BKSP. COMMAND - 
10 FORMAT T7X80A- ABORT ON .ENDFILE. COMMAND -
11 FORMAT T7X80A- ABORT ON .ERASE. COMMAND -
12 FORMAT T7X80A- ABORT ON .READ FWD. COMMAND - 
13 FORMAT T7X80A- END OF TAPE ENCOUNTERED AT RECORD *OCT
14 FORMAT T7X80A TERMINATED- UNRECOVERABLE WRITE
15 FORMAT T7X80A TERMINATED- BOT DETECTED ON WRITE RECOVERY 
16 FORMAT T7X80A ERROR(S) IN MODULE = *DEC
* 
   EQUATE BOT TO 4, EOT TO 10, EOF TO 20, STERR TO 5074 
   EQUATE STERR1 TO 5064
* 
20 MSG 1 (B0) TO DISPLAY,PRINT    *RUNNING MESSAGE
   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(17D)           *CHANNEL 
   OB(B2+3) = SB(17D) 
   OB(5) = SB(18D)           *EQUIPMENT 
   OB(B2+2) = SB(18D) 
   OB(6) = SB(19D)           *UNIT
   OB(B2+1) = SB(19D) 
   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
   B6 = 3                    *RETRY COUNTER FOR RECOVERY
41 B5 = 5 
   B7 = 1                    *WRITE MOTION CODE 
   WRITE LONG, ABT 74 
   IF(P3.AND.20.NE.0) GOTO 42  *IF WAIT NOT BUSY DISABLED 
   B5 = 6 
   WAITNB, ABT 74 
42 IF(SB(1).AND.STERR.EQ.EOT) GOTO 44  *IF GOOD WRITE/EOT 
   IF(SB(1).AND.STERR.EQ.0) GOTO 43  *IF SUCCESSFUL WRITE 
   ERROR 2/200, GOSUB 70     *REPORT THE WRITE ERROR
   GOSUB 50                  *POSITION TAPE FOR RECOVERY
   GOTO 41 WHILE(B6-1.NE.0)  *TRY IT THREE TIMES
   GOTO 52                   *UNRECOVERABLE ERROR 
43 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 45
44 MSG 13 (B1) TO DISPLAY,PRINT   *REPORT EOT ENCOUNTERED 
45 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 
   B7 = 6                    *REVERSE READ MOTION CODE
   BKSP, ABT 74              *BACKSPACE OVER BAD RECORD 
   B5 = 11
   B7 = 1                    *WRITE MOTION CODE 
   ERASE, ABT 74             *EARSE BAD RECORD
   IF(SB(1).AND.STERR1.NE.0) GOTO 51  *TERMINATE ON ERROR 
   RETURN 
51 ENDSUB 
   ERROR 2/246, 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 
   B7 = 6                    *REVERSE READ MOTION CODE
   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
   B7 = 5                    *READ FORWARD MOTION CODE
   READ FWD, ABT 74          *SKIP OVER THE EOF 
   B5 = 10
   B7 = 1                    *WRITE MOTION CODE 
   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 B6 = 3                    *RETRY COUNT 
56 B5 = 3 
   RES P1, ABT 74 
   B5 = 10
   B7 = 1                    *WRITE MOTION CODE 
   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(B6-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
   CALL 98A                  *ERROR CODE PROCESSOR
   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 
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 16 (BA) TO DAYFILE    *REPORT ERROR TO DAYFILE 
77 END 20 
COMPILE   - T7X80A -
   MODULE T7X80B,67X(44,54,55,53)LOCK  - COMPAT. READ REVERSE 
*** T7X80B- COMPATIBILITY READ REVERSE
* 
**  T7X80B- 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. T7X80B- ABORT ON .RES. COMMAND 
*         3. T7X80B- ABORT ON .REL. COMMAND 
*         4. T7X80B- ABORT ON .READ REV. COMMAND
*         5. T7X80B- ABORT ON .WAITNB. COMMAND
* 
*         6. EC072- RECORD COUNT=*OCT AT EOF *OCT, EXP=*OCT 
* 
*         7. EC073- FILE COUNT=*OCT AT LOAD POINT, EXP=0000 
* 
*         8. EC202- A STATUS ERROR OCCURRED ON A REVERSE READ.
*            THE INPUT BUFFER CONTAINS THE DATA READ. 
* 
* 
*** T7X80B- INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = TOTAL FILE COUNTER 
*         B1 = RECORD COUNTER PER FILE
*         B5 = ABORT MESSAGE POINTER
*         B6 = ONLY EOF'S READ FLAG 
*         B7 = MOTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNTER
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X80B- COMPATIBILITY REVERSE READ
 2 FORMAT T7X80B ERROR CODE = *OCT AT LINE (EA) = *OCT
 3 FORMAT T7X80B- ABORT ON .RES. COMMAND -
 4 FORMAT T7X80B- ABORT ON .REL. COMMAND -
 5 FORMAT T7X80B- ABORT ON .READ REV. COMMAND - 
 6 FORMAT T7X80B- ABORT ON .WAITNB. COMMAND - 
 7 FORMAT T7X80B- 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 T7X80B ERROR(S) IN MODULE = *DEC
* 
   EQUATE BOT TO 4, EOF TO 20, STERR TO 5074
* 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   B6 = 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 
   B7 = 6                    *REVERSE READ MOTION CODE
   READ REV, ABT 74 
   IF(P3.AND.20.NE.0) GOTO 31  *IF WAIT NOT BUSY BYPASSED 
   B5 = 6 
   WAITNB, ABT 74 
31 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
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 37       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
37 GOTO 76                   *TERMINATE 
34 IF(SB(1).AND.10B.NE.0) GOTO 40   *EOT
   IF(SB(1).AND.STERR.NE.0) ERROR 2/202, GOSUB 70 
40 IF(B6.NE.0) GOTO 35       *IF FIRST RECORD READ REVERSE
   IF(B1.NE.200D) GOTO 36    *IF NOT FIRST RECORD OF FILE 
35 MSG 7 (B0,IB(4),IB(5),IB(6),IB(7)) TO DISPLAY,PRINT
36 B1 = B1 - 1               *DECREMENT RECORD COUNT
   B6 = 0                    *INDICATE DATA READ
   GOTO 30
* 
*---------END OF FILE DETECTED. VERIFY RECORD COUNT.
* 
50 B0 = B0 - 1               *DECREMENT FILE COUNT
   IF(B6.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
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 51       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
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
   CALL 98A                  *ERROR CODE PROCESSOR
   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 
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 12 (BA) TO DAYFILE 
77 END 20 
COMPILE   - T7X80B -
   MODULE T7X81,67X(44,54,55,53)LOCK  - COMPAT. CLEANUP 
*** T7X81 - COMPATIBILITY TAPE CLEAN-UP 
* 
**  T7X81 - 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. T7X81 - ABORT ON .RES. COMMAND 
*         3. T7X81 - ABORT ON .REL. COMMAND 
*         4. T7X81 - ABORT ON .REWIND. COMMAND
*         5. T7X81 - ABORT ON .READ FWD. COMMAND
*         6. T7X81 - ABORT ON .WAITNB. COMMAND
*         7. T7X81 - ABORT ON .BKSP. COMMAND
*         8. T7X81 - 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 FORWARD OPERATION.  THE INPUT BUFFER CONTAINS 
*            DATA JUST READ.
* 
*** T7X81 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = TOTAL FILE COUNTER 
*         B1 = RECORD COUNTER PER FILE
*         B2 = ENDFILE RETRY COUNTER
*         B4 = CONSECUTIVE FILE MARKS COUNTER 
*         B5 = ABORT MESSAGE POINTER
*            = MARGINS
*         B7 = MOTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X81 - COMPATIBILITY TAPE CLEANUP -
 2 FORMAT T7X81 ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T7X81 - ABORT ON .READ FWD. COMMAND - 
 4 FORMAT T7X81 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T7X81 - ABORT ON .RES. COMMAND -
 6 FORMAT T7X81 - ABORT ON .REL. COMMAND -
 7 FORMAT T7X81 - 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 T7X81 - FILE=*OCT CH=*OCT EQ=*OCT UN=*OCT SYS=*OCT
13 FORMAT T7X81 TERMINATED ON EOT - NO EOF WRITTEN
14 FORMAT T7X81 ERROR(S) IN MODULE = *DEC - 
15 FORMAT T7X81 - ABORT ON .BKSP. COMMAND - 
16 FORMAT T7X81 - ABORT ON .ENDFILE. COMMAND -
17 FORMAT T7X81 TERMINATED ON DOUBLE EOF - NO EOF WRITTEN 
20 FORMAT T7X81 TERMINATED ON NO WRITE RING-NO EOF WRITTEN
21 FORMAT T7X81 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 
   B7 = 3                    *REWIND MOTION CODE
   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 
   B7 = 5                    *READ FORWARD CODE 
   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 
   B4 = 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 
   B7 = 5                    *READ FORWARD MOTION CODE
   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 B4 = 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 B4 = B4 + 1               *BUMP CONSECUTIVE FILES CTR. 
   IF(B4.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
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 43       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
43 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
   B7 = 1                    *WRITE MOTION CODE 
   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
   B7 = 6                    *READ REVERSE MOTION CODE
   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
   CALL 98A                  *PROCESS ERROR CODE
   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 IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 14 (BA) TO DAYFILE    *REPORT ERRORS TO DAYFILE
77 END 22 
COMPILE   - T7X81 - 
   MODULE T7X82,67X(44,54,55,53)LOCK   - KILLER PATTERN FOR 67X/ATS 
*** T7X82 - GCR KILLER PATTERN FOR 67X/ATS
* 
**  T7X82 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X82A IS EXECUTED. 
* 
*         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 GCR UNITS. 
*         THE NORMAL ERROR OUTPUT OF T7X 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. POST A DESCRIPTIVE MESSAGE IF THE UNIT IS NOT 200 IPS
*            6250 BPI.
*         4. REWIND.
*         5. BUMP THE RECORD COUNTER. 
*         6. WRITE A 5000 WORD RECORD AND DISPLAY THE RECORD COUNT. 
*            GO TO STEP 8 IF END OF TAPE. 
*         7. 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. 
*         8. ONCE END OF TAPE IS ENCOUNTERED, DETERMINE IF THE ERROR
*            RATE WAS 1 PERCENT OR GREATER.  IF SO, POST A MESSAGE. 
*         9. SEND A PICTURE OF THE DISPLAY TO OUTPUT. 
*        10. REPORT A MESSAGE TO DAYFILE IF ERRORS WERE ENCOUNTERED.
*        11. TERMINATE. 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
*         2. T7X82 - ABORT ON .RES. COMMAND - 
*         3. T7X82 - ABORT ON .REWIND. COMMAND -
*         4. T7X82 - ABORT ON .WRITE. COMMAND - 
* 
*         5. UNIT FAILS TEST - ERROR RATE EXCEEDS 1 PERCENT 
* 
*** T7X82 - 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 = TRACK 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 -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
 1 FORMAT T7X82 WRITE TEST P4=*OCT
 2 FORMAT UNIT FAILS TEST - ERROR RATE EXCEEDS 1 PERCENT
 3 FORMAT T7X82 - ABORT ON .RES. COMMAND -
 4 FORMAT T7X82 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T7X82 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X82 IS DESIGNED FOR 200 IPS GCR UNITS BUT WILL
 7 FORMAT BE EXECUTED AT THE REQUESTED SPEED/DENSITY. 
10 FORMAT T7X82 ERROR(S) IN MODULE =*D*DE 
11 FORMAT           TRACK ERROR RESULTS 
12 FORMAT   TOTAL RECORDS WRITTEN      = *DE*D (D)
13 FORMAT   TOTAL RECORDS WITH ERRORS  = *D*DE (D)
14 FORMAT   NUMBER OF RECORDS EACH TRACK HAD ERRORS 
15 FORMAT         TRK *D  =  *D*DE (D)
   DATA(OB(000),CON) 0000,0100,0000,0100,0001,0000,0100,0006
   DATA(OB(010),CON) 0000,0776,7777,7777,7777,7777,7776,0000
   DATA(OB(020),CON) 0000,0000,0000,0000,7777,7777,7777,7777
   DATA(OB(030),CON) 7776,0000,0000,0000,0000,0000,7777,7777
   DATA(OB(040),CON) 7777,7777,7776,0000,0000,0000,0000,0000
   DATA(OB(050),CON) 7777,7777,7777,7777,7776,0000,0000,0000
   DATA(OB(060),CON) 0000,0000,0000,0000,0000,0000,0004,7777
   DATA(OB(070),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(100),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(110),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(120),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(130),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(140),CON) 7777,7777,7777,7777,7777,7777,7777,7777
   DATA(OB(150),CON) 7776,0000,0000,0000,0000,0000,0000,0000
   DATA(OB(160),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(170),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(200),CON) 7777,7777,7777,7777,7777,7777,7776,0000
   DATA(OB(210),CON) 0000,0000,0000,0000,7777,7777,7777,7777
   DATA(OB(220),CON) 7776,0000,0000,0000,0000,0000,0000,0000
   DATA(OB(230),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(240),CON) 7777,7777,7777,7777,7776,0000,0000,0000
   DATA(OB(250),CON) 0000,0000,0000,0000,0000,0000,0004,7777
   DATA(OB(260),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(270),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(300),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(310),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(320),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(330),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(340),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(350),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(360),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(370),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(400),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(410),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(420),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(430),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(440),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(450),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(460),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(470),CON) 0000,0000,0004,7777,7777,7777,7777,7777
* 
20 IF(DC.EQ.53)EXIT TO 82A   *IF 698/CMST SUBSYSTEM 
   MSG 1 (P4) TO DISPLAY,PRINT
   WC = P2                      *SET WORD COUNT 
   IF(P0.NE.200) GOTO 21     *IF NOT 200 IPS UNIT 
   IF(P1.AND.7.EQ.4) GOTO 23
21 MSG 6 TO PRINT            *REPORT EFFECTIVE MSG
   MSG 7 TO PRINT 
23 IF(P4.AND.2000.EQ.0) GOTO 22 
   RANDOM TO OB FOR 500 , START RT
22 B5 = 3 
   RES P1, ABT 74 
   B5 = 4 
   B7 = 3                    *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 
   RES P1, ABT 74 
   B5 = 5 
   B7 = 1                    *WRITE MOTION CODE 
   WRITE LONG , ABT 74
   MSG 12 (B0,B1) TO LINE 3  *UPDATE RECORDS WRITTEN
   IF(SB(1).AND.10.NE.0) GOTO 50  *IF END OF TAPE 
   IF(SB(1).AND.4000.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(7).AND.B5.NE.0) GOTO 43  *IF VALID TRK BIT SET 
   IF(SB(4).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 = 1                    *TRACK NUMBER/LINE NUMBER-7
   B6 = 0                    *INPUT BUFFER INDEX (CTRS) 
46 MSG 15(B4,IB(B6),IB(B6+1)) TO LINE B4+7
   B6 = B6 + 2               *BUMP BUFFER INDEX 
   GOTO 46 WHILE (B4+1.NE.10D)  *DO ALL TRACKS
   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                   *SENT 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 
   B15 = 7654B               * DISPLAY DEC RECORD CNT IN 980
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY          *REPOST RUNNING MESSAGE
   GOTO 45                   *REBUILD ERROR DISPLAY 
77 END 20 
COMPILE   - T7X82 - 
   MODULE T7X82A,67X(53)LOCK   - KILLER PATTERN FOR 698/CMTS
*** T7X82A - GCR KILLER PATTERN FOR 698/CMTS
* 
**  T7X82A - 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 NRZI/GCR UNITS.
* 
*         RANDOM DATA CAN ALSO BE SELECTED BY THE USE OF P4. IF RANDOM
*         DATA IS SELECTED, THE RT CLOCK IS USED FOR SEED.
* 
*         THE NORMAL ERROR OUTPUT OF T7X IS NOT USED TO REPORT MODULE 
*         DETECTED ERRORS, THEREFORE NO STATUS IS AVAILABLE.
*         PRODUCT OVERLAY ABORTS WILL BE PROCESSED NORMALLY, AND THE
*         MODULE WILL TERMINATE ABNORMALLY AFTER TWO COMMAND ABORTS.
* 
*         THE TAPE IS REWOUND AND WRITTEN FROM LOAD POINT TO END OF 
*         TAPE.  THE NUMBER OF RECORDS WRITTEN, AND TRACKS IN ERROR 
*         ARE ACCUMULATED AND DISPLAYED.
*         THE UNIT PASSES THE TEST IF LESS THAN 1 PERCENT OF THE
*         RECORDS WRITTEN HAVE ERRORS.
* 
*         REPEAT CONDITION OR SCOPE LOOP IS NOT SUPPORTED BY THIS 
*         MODULE. 
* 
*         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. SET WORD COUNT TO P2.
*         2. POST RUNNING MESSAGE.
*         3. REWIND.
*         4. BUMP THE RECORD COUNTER. 
*         5. WRITE A RECORD AND DISPLAY THE RECORD COUNT. 
*            GO TO STEP 7 IF END OF TAPE. 
*         6. IF TRACKS IN ERROR ARE PRESENT, BUMP THE ERROR COUNTER,
*            TRACK ERROR COUNTER AND UPDATE THE DISPLAY OF THESE
*            VALUES AND GO TO STEP 4. 
*         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. T7X82A - ABORT ON .RES. COMMAND -
*         3. T7X82A - ABORT ON .REWIND. COMMAND - 
*         4. T7X82A - ABORT ON .WRITE. COMMAND -
*         5. T7X82A - ABORT ON .STATUS SENSE. COMMAND - 
* 
*         6. UNIT FAILS TEST - ERROR RATE EXCEEDS 1 PERCENT 
* 
  
*** T7X82A - 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 = TRACK 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
*         B8 = RECORDS WITH ERRORS KEY
*         B10= MODULE LOCATION KEY
*         BA = COMMAND ABORT ERROR COUNTER
* 
*   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
* 
*         IB(455)       = UNIT SENSE BYTE 2 
*         IB(457)       = UNIT SENSE BYTE 4 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
* 
 1 FORMAT T7X82A WRITE TEST (698/CMTS) P4=*OCT
 2 FORMAT UNIT FAILS TEST - ERROR RATE EXCEEDS 1 PERCENT
 3 FORMAT T7X82A - ABORT ON .RES. COMMAND - 
 4 FORMAT T7X82A - ABORT ON .REWIND. COMMAND -
 5 FORMAT T7X82A - ABORT ON .WRITE. COMMAND - 
 6 FORMAT T7X82A - ABORT ON .STATUS SENSE. COMMAND -
10 FORMAT T7X82A ERROR(S) IN MODULE =*D*DE
11 FORMAT           TRACK ERROR RESULTS 
12 FORMAT   TOTAL RECORDS WRITTEN            = *DE*D (D)
13 FORMAT   TOTAL RECORDS WITH TRACK ERRORS  = *D*DE (D)
14 FORMAT   NUMBER OF RECORDS EACH TRACK HAD ERRORS 
15 FORMAT         TRK *D  =  *D*DE (D)
16 FORMAT T7X82A - ABNORMAL TERMINATION 
17 FORMAT T7X82A - ERRORS IN MODULE=*DEC (D)
* 
*    OB IS SET UP IN T7X82
* 
* 
20 WC = P2                      *SET WORD COUNT 
   MSG 1 (P4) TO DISPLAY,PRINT
   IF(P4.AND.2000.EQ.0) GOTO 22  *NO RANDOM DATA
   RANDOM TO OB FOR 500 , START RT
22 B10 = 0                   *MODULE LOCATION KEY 
   B5 = 3 
   B7 = 0                    *NO MOTION 
   RES P1, ABT 74 
   B5 = 4 
   B7 = 3                    *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 B10 = 1                   *MODULE LOCATION KEY 
   B5 = 3 
   B7 = 0                    *NO MOTION 
   RES P1, ABT 74 
   B5 = 5 
   B7 = 1                    *WRITE MOTION CODE 
   WRITE LONG, ABT 74 
   IF(SB(1).AND.10.NE.0) GOTO 50  *IF END OF TAPE 
   B8 = 0                    *NO ERRORS KEY 
   MSG 12 (B0,B1) TO LINE 3  *UPDATE RECORDS WRITTEN
   B5 = 6 
   B7 = 0                    *NO MOTION 
   STATUS SENSE, ABT 74 
   B5 = 1                    *SET STATUS MASK 
   B6 = 0                    *IB INDEX (ERROR CTR 1ST WORD) 
   IB(457) = IB(457).AND.400        *MASK PARITY TRACK IN ERR 
   IB(455) = IB(455) + IB(457)      *SET PARITY TRACK IN ERR
42 IF(IB(455).AND.B5.EQ.0) GOTO 44  *IF TRACK IN ERR NOT SET
* 
*  -------PROCESS TRACK ERRORS
* 
   IF(B8.EQ.0) GOTO 32       *FIRST TRACK ERROR 
   GOTO 43       *ONE TRACK ERROR IN RECORD LOGGED
32 B8 = 1 
   B3 = B3 + 1               *BUMP ERROR COUNTER B2/B3
   IF(B3.LT.1000D) GOTO 43   *IF NO LOWER DIGITS OVERFLOW 
   B3 = 0 
   B2 = B2 + 1
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.LS.1              *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 = 1                    *TRACK NUMBER/LINE NUMBER + 7
   B6 = 0                    *INPUT BUFFER INDEX (CTRS) 
46 MSG 15(B4,IB(B6),IB(B6+1)) TO LINE B4+7
   B6 = B6 + 2               *BUMP BUFFER INDEX 
   GOTO 46 WHILE (B4+1.NE.10D)  *DO ALL TRACKS
   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                   *SENT 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
   BA = BA + 1
   MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
   IF(BA.LT.2) GOTO 76         *RETRY 
   MSG 16 TO DAYFILE,PRINT
   MSG 17 (BA) TO DAYFILE 
   GOTO 77
76 MSG 1 (P4) TO DISPLAY
   IF(B10.EQ.0) GOTO 22       *RESTART HERE 
   GOTO 31                    *RESTART HERE 
77 END 20 
COMPILE   - T7X82A -
   MODULE T7X83,67X(44,54,55,53)LOCK   - KILLER WRITE 67X/ATS - 
*** T7X83 - KILLER WRITE WITH ALERT 67X/ATS 
* 
**  T7X83 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X83B/C ARE EXECUTED.
* 
*         RECORDS ARE WRITTEN ON TAPE AT *PARAM* SELECTED DENSITY AND 
*         USING A 'KILLER' PATTERN OR RANDOM PATTERN SELECTED IN
*         PARAM P4. 
* 
*         WRITING CONTINUES UNTIL *EOT* IS REACHED. 
* 
*         IF (P9) IS NON-ZERO, EXIT TO MODULE 83A WITHOUT WRITING 
*         THE TAPE IN MODULE 83.
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. REWIND.
*         3. RESERVE
*         4. WRIT LONG (P2) TIMES 10B 
*         5. PLACE FILE,RECORD, ERROR MESSAGE IN *L* DISPLAY. 
*         6. REPEAT STEPS 3-5 IF NO STATUS ERROR
*         7. BACKSPACE TWO PRU,S (BAD PRU PLUS LAST GOOD PRU) 
*         8. GO TO STEP 17 IF *EOT* STATUS IN STEP 4. 
*         9. DELAY (P5) MILLISECONDS
*        10. READ FORWARD PRU 
*        11. REPORT EC 203 IF LAST GOOD PRU STATUS ERROR
*        12. ERASE TAPE 
*        13. REPORT EC 248 IF STATUS ERROR
*        14. REWRITE PRU
*        15. REPEAT STEPS 7-13 IF STATUS ERROR INCREASING STEP 11 
*        16. RETURN TO STEP 3 
*        17. WRITE TWO TAPE MARKS 
*        18. MAKE DAYFILE MESSAGE 
*        19. EXIT TO MODULE 83A 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X83 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X83 - ABORT ON .ENDFILE. COMMAND - 
*         4. T7X83 - ABORT ON .WRITE. COMMAND - 
*         5. T7X83 - ABORT ON .RES. COMMAND - 
*         6. T7X83 - ABORT ON .REWIND. COMMAND -
*         7. T7X83 - ABORT ON .REL. COMMAND - 
*         8. T7X83 - ABORT ON .WAITNB. COMMAND -
* 
*         9. -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A -KILLER WRITE- OPERATION.
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
* 
*** T7X83 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         BO = UPPER 12 DIGITS OF RECORDS WRITTEN COUNTER 
*         B1 = LOWER 12 DIGITS OF RECORDS WRITTEN COUNTER 
*         B3 = TEMP REGISTER
*         B4 = ERASE COUNTER
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X83 - WRITE WITH RECOVERY (67X/ATS) P4=*OCT - 
 2 FORMAT T7X83 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T7X83 - ABORT ON .ERASE. COMMAND -
 4 FORMAT T7X83 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T7X83 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X83 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X83 - ABORT ON .BKSP.   COMMAND - 
10 FORMAT T7X83 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X83 - ABORT ON .REL. COMMAND -
12 FORMAT T7X83 - ABORT ON .READ FWD. COMMAND - 
13 FORMAT T7X83 - RECORD = *DE*D (D), ERR COUNT = *DEC (D)
   DATA(OB(000),CON) 0000,0100,0000,0100,0001,0000,0100,0006
   DATA(OB(010),CON) 0000,0776,7777,7777,7777,7777,7776,0000
   DATA(OB(020),CON) 0000,0000,0000,0000,7777,7777,7777,7777
   DATA(OB(030),CON) 7776,0000,0000,0000,0000,0000,7777,7777
   DATA(OB(040),CON) 7777,7777,7776,0000,0000,0000,0000,0000
   DATA(OB(050),CON) 7777,7777,7777,7777,7776,0000,0000,0000
   DATA(OB(060),CON) 0000,0000,0000,0000,0000,0000,0004,7777
   DATA(OB(070),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(100),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(110),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(120),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(130),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(140),CON) 7777,7777,7777,7777,7777,7777,7777,7777
   DATA(OB(150),CON) 7776,0000,0000,0000,0000,0000,0000,0000
   DATA(OB(160),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(170),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(200),CON) 7777,7777,7777,7777,7777,7777,7776,0000
   DATA(OB(210),CON) 0000,0000,0000,0000,7777,7777,7777,7777
   DATA(OB(220),CON) 7776,0000,0000,0000,0000,0000,0000,0000
   DATA(OB(230),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(240),CON) 7777,7777,7777,7777,7776,0000,0000,0000
   DATA(OB(250),CON) 0000,0000,0000,0000,0000,0000,0004,7777
   DATA(OB(260),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(270),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(300),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(310),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(320),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(330),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(340),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(350),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(360),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(370),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(400),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(410),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(420),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(430),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(440),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(450),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(460),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(470),CON) 0000,0000,0004,7777,7777,7777,7777,7777
* 
* 
20 IF(DC.EQ.53)EXIT TO 83B   *IF 698/CMST SUBSYSTEM 
   MSG 1 (P4) TO DISPLAY,PRINT
   IF(P9.NE.0) GOTO 57
   BA = 0                      *INITIALIZE ABORT COUNTER
25 WC = P2                   *RECORD LENGTH TO WC REG 
   IF(P4.AND.2000.EQ.0) GOTO 26 
   RANDOM TO OB FOR 500 , START RT
26 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0                      *CLEAR FILE COUNT
   B1=0                      *CLEAR RECORD COUNT
* 
* -------WRITE KILLER DATA ON TAPE
* 
30 B1 = B1 + 1               *INCREMENT RECORD COUNT
   B4 = 0                    * CLEAR ERASE COUNTER
   IF(B1.LT.100D) GOTO 31 
   B1 = 0 
   B0 = B0 + 1
31 B5 = 6 
   RES P1, ABT 74            *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
40 B5 = 5 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE LONG , ABT 74
   MSG 13 (B0,B1,BA) TO LINE 3   *UPDATE RECORDS WRITTEN
   DELAY P6 MSEC
41 IF(SB(1).AND.5034.EQ.0)GOTO 30    *NO ERROR DETECTED 
   B3 = SB(1)                    * SAVE GENERAL STATUS
   B4 = B4+1
   B7 = 2 
   B5 = 7 
   BKSP , ABT 74
42 BKSP , ABT 74
   IF(B3.AND.10.NE.0) GOTO 54    *CHECK GENERAL STATUS OF WRITE 
   DELAY P5 MSEC
   BA = BA + 1                  *INCR ERROR COUNT 
   B7 = 1                        *FORWARD MOTION CODE 
   B5 = 12
   READ FWD ABT 74
   IF(SB(1).AND.5034.EQ.0) GOTO 43
   ERROR 2/203 , GOSUB 70 
   GOTO 42
* 
* --------ERASE BAD RECORD
* 
43 B3 = 0                      *CLEAR ERASE COUNTER 
44 B5 = 8 
   ERASE , ABT 74 
   IF(SB(1).AND.5034.EQ.0) GOTO 45
   ERROR 2/246 GOSUB 70 
45 GOTO 44 WHILE (B3+1.NE.B4) 
   GOTO 31            *REWRITE RECORD 
* 
* -------END OF TAPE DETECTED.
* 
* 
* -------CLOSE TAPE WITH DUEL TAPE MARKS
54 B5 = 4 
   ENDFILE , ABT 74 
   ENDFILE , ABT 74 
57 MSG 13 (B0,B1,BA) TO DAYFILE 
   PICTURE
   EXIT TO 83A                               *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
   B15 = 7654B           *DISPLAY DEC REC CNT IN 980
72 CALL 98A                   *ERROR CODE PROCESSOR 
   B5 = 6 
   RES P1 , ABT 74
   RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 980                   *CALL 67X/ATS STATUS CRACKER
   END 20 
COMPILE    - T7X83 -
   MODULE T7X83A,67X(44,54,55,53)LOCK  - KILLER READ 67X/ATS -
*** T7X83A - KILLER READ  67X/ATS 
* 
**  T7X83A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         THIS MODULE READS THE TAPE CREATED BY MODULE
*         T7X83. NO ERRORS SHOULD OCCUR BECAUSE 
*         TAPE WRITTEN WITH ERROR CORRECTION DISABLED 
*         AND WRITE PRU RECOVERY INSURING ALL PRU,S ON
*         TAPE ARE PERFECTLY WRITTEN. 
*         RECORDS ARE READ FROM TAPE ACCORDING TO THE 
*         DENSITY AND PATTERN SPECIFIED BY THE *PARAM*
*         DIRECTIVE INSURING ERROR CORRECTION ENABLED.
* 
*         MODULE 83A WILL EXECUTE ONLY ONCE IF P8 IS
*         EQUAL TO ZERO (0) OR WILL EXECUTE THE OCTAL NUMBER
*         OF TIMES SPECIFIED BY THE CONTENTS OF P8, 
*         I.E., IF P8=3 THEN 83A WILL EXECUTE THREE 
*         TIMES. THE NEED TO REPEAT THIS MODULE IS BASED
*         ON THE FACT THAT MODULE 83 HAS WRITTEN THE TAPE 
*         WITH RECOVERY ENABLED AND THEREFORE ERROR FREE. 
*         THE REPEAT PASSES WILL VERIFY RETENTIVITY AND 
*         READ REDUCTION. THERE SHOULD BE NO ERRORS IN
*         THIS MODULE.
* 
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. DELAY (P6) MILLISECONDS
*         7. MESSAGE TO LINE 3 (RUNNING RECORD COUNT) 
*         8. GO TO STEP 13 IF *EOF*.
*        10. REPORT EC 203 IF *ALERT* STATUS. 
*        11. REPORT EC 204 IF SINGLE TRACK ERROR
*        12. RETURN TO STEP 4.
*        13. RETURN TO STEP 1 IF LOOP COUNT LESS THAN (P8). 
*        14. END OF TEST AT FILE MARK.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X83A - ERROR CODE = *OCT AT LINE (EA) = *OCT 
*         3. T7X83A - ABORT ON .REWIND. COMMAND - 
*         4. T7X83A - ABORT ON .READ FWD. COMMAND - 
*         4. T7X83A - ABORT ON .RES. COMMAND -
*         6. T7X83A - ABORT ON .REL. COMMAND -
* 
* 
*         7. -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. 
* 
*         8. -EC 204- THE SINGLE OR DOUBLE TRACK CORRECTABLE ERROR
*            BIT IS SET IN STATUS WORD 4. 
* 
*** T7X83A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = NUMBER OF SINGLE/DOUBLE TRACK CORRECTABLE ERRORS 
*         B3 = LOOP COUNTER IF P8 NON-ZERO
*         B4 = RESERVE PARAMETER (P1) MASKED BY 17B 
*         B5 = MESSAGE NUMBER(SET BEFORE ENTRY) FOR MSG PROCESSOR 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B10 = MARGIN SELECT 
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
* 
 1 FORMAT T7X83A - READ PASS P8=*OCT -
 2 FORMAT T7X83A - ERROR CODE = *OCT AT LINE (EA) = *OCT
 3 FORMAT T7X83A - READ PASS PC=*OCT P8=*OCT -
 4 FORMAT T7X83A - ABORT ON .REWIND. COMMAND -
 5 FORMAT T7X83A - ABORT ON .READ FWD. COMMAND -
 6 FORMAT T7X83A - ABORT ON .RES. COMMAND - 
 7 FORMAT T7X83A - ABORT ON .REL. COMMAND - 
11 FORMAT T7X83A - RECORDS WITH DOUBLE TRACK ERRORS =*DEC 
12 FORMAT T7X83A - RECORDS WITH SINGLE TRACK ERRORS =*DEC 
13 FORMAT T7X83A - RECORD NUMBER = *DE*D (D)
14 FORMAT T7X83A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT T7X83A END OF WRITE/READ -
16 FORMAT T7X83A - SUB-SYSTEM FAILED DATA PATH MARGIN TEST -
* 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
20 B3 = 0                   *INITIALIZE LOOP COUNTER
   MSG 1 (P8) TO DISPLAY,PRINT
21 MSG 3 (B3,P8) TO DISPLAY 
   BA = 0                    *INITIALIZE ABORT COUNTER
   WC = P2                   *SET WORD COUNT REGISTER 
   B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0 
   B1=0 
   B2 = 0                 * CLEAR STC OR DTC ERROR COUNTER
   B10 = P3.RS.6.AND.3
   MARGINS B10
* 
* -----------START OF READ LOOP-------------------- 
* 
30 B1 = B1 +1                *INCREMENT RECORD COUNT
   B4 = P1
   B4 = B4.AND.17 
   IF(B1.LT.100D) GOTO 31 
   B1 = 0 
   B0 = B0 + 1
31 B5=6 
   RES B4, ABT 74            *RESERVE 
* 
* --------READ
* 
   B5 = 5 
   B7 = 5                     *READ FORWARD CODE
   READ FWD , ABT 74          *READ FORWARD 
   MSG 13 (B0,B1) TO LINE 3 
   MSG 12 (B2) TO LINE 5
   MSG 11 (BA) TO LINE 6
   DELAY P6 MSEC
33 IF(SB(1).AND.FILEMK.NE.0)GOTO 50      *FILEMK DETECTED 
   IF(SB(1).AND.EOT.EQ.0) GOTO 34     *IF NOT EOT 
   ERROR 2/060, GOSUB 71
   EXIT                               *TERMINATE
/ 
34 IF(SB(1).AND.ALERT.EQ.0) GOTO 40   *IF NO ALERT
   BA = BA+1            *UPDATE PRU ERROR COUNT 
   ERROR 2/203 , GOSUB 70 
   GOTO 30
40 IF(SB(4).AND.7000.EQ.0) GOTO 30    *NO STC OR DTC
   B2 = B2+1              *UPDATE STC/DTC COUNTER 
   ERROR 2/204 , GOSUB 70 
   GOTO 30                   *RESUME TESTING
* 
* --------FILE MARK FOUND 
* 
50 IF(BA.EQ.0) GOTO 52
   MSG 16 TO DAYFILE,PRINT
   MSG 16 TO LINE 18D 
52 MSG 13 (B0,B1) TO DAYFILE,PRINT
   MSG 12 (B2) TO DAYFILE,PRINT 
   MSG 11 (BA) TO DAYFILE,PRINT 
   MSG 15 TO DAYFILE,PRINT
   IF(P8.EQ.0)GOTO 53        * NO LOOP COUNT SELECTED 
   B3 = B3+1                *INCR LOOP COUNT
   IF(B3.NE.P8)GOTO 21
53 EXIT 
* 
* ---------PROCESS MODULE DETECTED ERRORS 
* 
70 IF(ES.AND.SL.EQ.0) GOTO 71 
   RETURN 
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
   B15 = 7654B               *DISPLAY DEC RECORD CNT IN 980 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   EXIT 
   END 20 
COMPILE   - T7X83A -
   MODULE T7X83B,67X(53)LOCK   - KILLER WRITE 698/CMTS- 
*** T7X83B - KILLER WRITE 698/CMTS
* 
**  T7X83B - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
* 
*         RECORDS ARE WRITTEN ON TAPE AT *PARAM* SELECTED DENSITY AND 
*         USING A 'KILLER' PATTERN OR RANDOM PATTERN SELECTED BY P4.
*         THE RANDOM PATTERN WILL USE THE RT CLOCK FOR SEED.
* 
*         DATA IS WRITTEN WITH P1 MASKED WITH 17 AND ERROR
*         CORRECTION FORCED DISABLED.  RECORDS ARE WRITTEN TO EOT.
* 
*         THE MODULE WILL NOT TERMINATE ON MODULE DETECTED ERRORS.
* 
*         THE MODULE WILL TERMINATE AFTER TWO COMMAND ABORTS. 
* 
*         IF (P9) IS NON-ZERO, EXIT TO MODULE 83C WITHOUT WRITING 
*         THE TAPE IN MODULE 83B. 
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE
*         LOOP. 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE WITH ERROR CORRECTION DISABLED 
*         2. REWIND 
*         3. RESERVE WITH ERROR CORRECTION DISABLED 
*         4. WRITE LONG (P2) TIMES 10B
*         5. PLACE FILE,RECORD, ERROR MESSAGE IN *L* DISPLAY. 
*         6. REPEAT STEPS 3-5 IF NO STATUS ERROR
*         7. BACKSPACE TWO PRU,S (BAD PRU PLUS LAST GOOD PRU) 
*         8. GO TO STEP 16 IF *EOT* STATUS IN STEP 4. 
*         9. DELAY (P5) MILLISECONDS
*        10. READ FORWARD PRU 
*        11. REPORT EC 203 IF READ STATUS ERROR AND BACKSPACE 
*        12. ERASE TAPE 
*        13. REPORT EC 246 IF ERASE STATUS ERROR AND GOTO STEP 12 
*        14. REWRITE PRU
*        15. RETURN TO STEP 3 
*        16. WRITE TWO TAPE MARKS 
*        17. MAKE DAYFILE MESSAGE 
*        19. EXIT TO MODULE 83C 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X83B - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. T7X83B - ABORT ON .ENDFILE. COMMAND -
*         4. T7X83B - ABORT ON .WRITE. COMMAND -
*         5. T7X83B - ABORT ON .RES. COMMAND -
*         6. T7X83B - ABORT ON .REWIND. COMMAND - 
*         7. T7X83B - ABORT ON .REL. COMMAND -
* 
*         8. EC 203 - ALERT BIT IN GENERAL STATUS WAS SET 
*                     DURING A READ FORWARD OPERATION. THE
*                     INPUT BUFFER CONTAINS THE DATA READ.
* 
*         9. EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE 
* 
* 
  
*** T7X83B - INTERNAL DOCUMENTATION 
* 
* 
*   REGISTER USAGE
* 
*         BO = UPPER 12 DIGITS OF RECORDS WRITTEN COUNTER 
*         B1 = LOWER 12 DIGITS OF RECORDS WRITTEN COUNTER 
*         B3 = TEMP REGISTER
*         B4 = RECOVERY COUNTER 
*         B6 = RESERVE PARAMS 
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = MODULE DETECTED WRITE ERRORS 
*         B9 = ERASURE COUNT
*         B10= MODULE LOCATION KEY FOR ABORT PROCESSOR
*         BA = COMMAND ABORT ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X83B - WRITE WITH RECOVERY (698/CMTS) P4=*OCT 
 2 FORMAT T7X83B - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 3 FORMAT T7X83B - ABORT ON .ERASE. COMMAND - 
 4 FORMAT T7X83B - ABORT ON .ENDFILE. COMMAND - 
 5 FORMAT T7X83B - ABORT ON .WRITE. COMMAND - 
 6 FORMAT T7X83B - ABORT ON .RES. COMMAND - 
 7 FORMAT T7X83B - ABORT ON .BKSP.   COMMAND -
10 FORMAT T7X83B - ABORT ON .REWIND. COMMAND -
11 FORMAT T7X83B - ABORT ON .REL. COMMAND - 
12 FORMAT T7X83B - ABORT ON .READ FWD. COMMAND -
13 FORMAT T7X83B - RECORDS WRITTEN = *DE*D (D)
14 FORMAT T7X83B - WRITE ERRORS = *DEC (D)
15 FORMAT T7X83B - RECOVERED RECORDS = *DEC (D) 
16 FORMAT T7X83B - ABNORMAL TERMINATION 
17 FORMAT T7X83B ERROR(S) IN MODULE = *DEC
* 
*     OB SET UP IN T7X83
* 
20 MSG 1 (P4) TO DISPLAY,PRINT
   IF(P9.NE.0)GOTO 57 
   B6 = P1.AND.17 
   B6 = B6 + 2000              *ADD DISABLE ERROR CORRECTION
25 WC = P2                   *RECORD LENGTH TO WC REG 
   IF(P4.AND.2000.EQ.0) GOTO 26 
   RANDOM TO OB FOR 500 , START RT
26 B10 = 0                   *KEY FOR RESTART AFTER ABORT 
   B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES B6, ABT 74            *ERROR CORRECTION DISABLED 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0                      *CLEAR FILE COUNT
   B1=0                      *CLEAR RECORD COUNT
* 
* -------WRITE KILLER DATA ON TAPE
* 
30 B1 = B1 + 1               *INCREMENT RECORD COUNT
   B9=0 
   IF(B1.LT.100D) GOTO 31 
   B1 = 0 
   B0 = B0 + 1
31 B10 = 1                   *KEY FOR RESTART AFTER ABORT 
   B5 = 6 
   B7 = 0 
   RES B6, ABT 74            *ERROR CORRECTION DISABLED 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
40 B5 = 5 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE LONG, ABT 74 
   MSG 13 (B0,B1) TO LINE 3   *UPDATE RECORDS WRITTEN 
   MSG 14 (B8) TO LINE 4         *UPDATE WRITE ERRORS 
   MSG 15 (B4) TO LINE 5       *UPDATE ERASURES 
   DELAY P6 MSEC
41 IF(SB(1).AND.5034.EQ.0)GOTO 30    *NO ERROR DETECTED 
   IF(B9.EQ.0) B8=B8+1         *INC WRITE ERROR IF NOT ERASING
   IF(B9.EQ.0) B4=B4+1         *INC RECOVERED ERRORS IF NOT ERASING 
   MSG 14 (B8) TO LINE 4         *UPDATE WRITE ERRORS 
46 B3 = SB(1)                    *SAVE GENERAL STATUS 
   B9 = B9+1                     *SET UP ERASE COUNT
   B7 = 2 
   B5 = 7 
42 BKSP , ABT 74
   BKSP , ABT 74
   IF(B3.AND.10.NE.0) GOTO 54    *GENERAL STATUS EOT
   DELAY P5 MSEC
   B7 = 1                        *FORWARD MOTION CODE 
   B5 = 12
   READ FWD ABT 74
   IF(SB(1).AND.4000.EQ.0) GOTO 43
   ERROR 2/203, GOSUB 70
   GOTO 42
* 
* --------ERASE BAD RECORD
* 
43 B3 = 0                      *CLEAR ERASE COUNTER 
44 B5 = 8 
   B7 = 1 
   ERASE, ABT 74
   IF(SB(1).AND.10.NE.0) GOTO 46     *EOT 
   IF(SB(1).AND.5034.EQ.0) GOTO 45   *NO ERASE ERROR
   ERROR 2/246 GOSUB 70 
   GOTO 43                           *RETRY ERASE 
45 GOTO 44 WHILE (B3+1.NE.B9)        *ERASE AGAIN 
   GOTO 31                           *RE-WRITE RECORD 
* 
* -------END OF TAPE DETECTED.
* 
* 
* -------CLOSE TAPE WITH DUEL TAPE MARKS
54 B5 = 4 
   B7 = 1 
   ENDFILE , ABT 74 
   ENDFILE , ABT 74 
57 MSG 13 (B0,B1) TO DAYFILE
   MSG 14 (B8) TO DAYFILE 
   MSG 15 (B4) TO DAYFILE 
   PICTURE
   BLANK
60 EXIT TO 83C                *NORMAL TERMINATION 
* 
* --------PROCESS MODULE DETECTED ERROR(S)
* 
70 PICTURE AND BLANK
   BA = BA + 1
   MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
   CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 (P4) TO DISPLAY
   B5 = 6 
   B7 = 0 
   RES B6 , ABT 74
   RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
   IF(BA.LT.2) GOTO 76        *RETRY
   MSG 16 TO DAYFILE,PRINT
   MSG 17 (BA) TO DAYFILE 
   GOTO 77
76 MSG 1 (P4) TO DISPLAY
   IF(B10.EQ.0) GOTO 26       *RESTART HERE 
   GOTO 31                    *RESTART HERE 
77 END 20 
COMPILE    - T7X83B - 
   MODULE T7X83C,67X(53)LOCK   - KILLER READ 698/CMTS - 
*** T7X83C - KILLER READ  698/CMTS
* 
**  T7X83C - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         THIS MODULE READS THE TAPE CREATED BY MODULE
*         T7X83B. NO ERRORS SHOULD OCCUR BECAUSE THE
*         TAPE WAS WRITTEN WITH ERROR CORRECTION DISABLED 
*         AND WRITE PRU RECOVERY INSURING ALL PRU'S ON
*         THE TAPE ARE PERFECTLY WRITTEN. 
* 
*         DATA IS READ WITH P1 MASKED WITH 17.  ERROR 
*         CORRECTION IS FORCED ENABLED AND RECORDS ARE
*         READ TO EOF.
* 
*         MODULE 83C WILL EXECUTE ONLY ONCE IF P8 IS EQUAL
*         TO ZERO OR ONE, OR WILL EXECUTE THE OCTAL NUMBER
*         OF TIMES SPECIFIED BY THE CONTENTS OF P8, 
*         I.E., IF P8=3 THEN 83C WILL EXECUTE THREE 
*         TIMES. THE NEED TO REPEAT THIS MODULE IS BASED
*         ON THE FACT THAT MODULE 83B HAS WRITTEN THE TAPE
*         WITH RECOVERY ENABLED AND THEREFORE ERROR FREE. 
*         THE REPEAT PASSES WILL VERIFY RETENTIVITY AND 
*         READ REDUCTION. THERE SHOULD BE NO ERRORS IN
*         THIS MODULE.
* 
*         THIS MODULE WILL NOT TERMINATE ON MODULE DETECTED 
*         ERRORS WITH THE EXCEPTION OF EC 060.
* 
*         THIS MODULE WILL TERMINATE AFTER TWO COMMAND ABORTS.
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE
*         LOOP. 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE WITH ERROR CORRECTION ENABLED. 
*         2. REWIND.
*         4. RESERVE WITH ERROR CORRECTION ENABLED
*         5. READ FORWARD.
*         6. DELAY (P6) MILLISECONDS
*         7. MESSAGE TO LINE 3 (RUNNING RECORD COUNT) 
*         8. GO TO STEP 14 IF *EOF* 
*        10. IF NOT EOF AND EOT, REPORT ERROR 060 
*        11. REPORT EC 203 IF *ALERT* STATUS. 
*        12. REPORT EC 204 IF ERROR CORRECTION SENSED 
*        13. RETURN TO STEP 4.
*        14. RETURN TO STEP 1 IF LOOP COUNT LESS THAN (P8). 
*        15. END OF TEST AT FILE MARK.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X83C - ERROR CODE = *OCT AT LINE (EA) = *OCT 
*         3. T7X83C - ABORT ON .REWIND. COMMAND - 
*         4. T7X83C - ABORT ON .READ FWD. COMMAND - 
*         4. T7X83C - ABORT ON .RES. COMMAND -
*         6. T7X83C - ABORT ON .REL. COMMAND -
* 
*         7. EC 060 - EOT DETECTED BEFORE DETECTING EOF, EITHER 
*                     UNIT CANNOT DETECT EOF OR TAPE NOT WRITTEN
*                     BY CORRECT T7X MODULE...CHECK PARAMETERS..
* 
*         8. -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. 
* 
  
*** T7X83C - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = NUMBER OF SINGLE/DOUBLE TRACK CORRECTABLE ERRORS 
*         B3 = LOOP COUNTER IF P8 NON-ZERO
*         B4 = RESERVE PARAMETER (P1) MASKED BY 17B 
*         B5 = MESSAGE NUMBER(SET BEFORE ENTRY) FOR MSG PROCESSOR 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = READ ERRORS
*         B10= MODULE LOCATION KEY
*         BA = COMMAND ABORT ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X970 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
* 
 1 FORMAT T7X83C - READ PASS P8=*OCT -
 2 FORMAT T7X83C - ERROR CODE = *OCT AT LINE (EA) = *OCT
 3 FORMAT T7X83C - READ PASS PC=*OCT
 4 FORMAT T7X83C - ABORT ON .REWIND. COMMAND -
 5 FORMAT T7X83C - ABORT ON .READ FWD. COMMAND -
 6 FORMAT T7X83C - ABORT ON .RES. COMMAND - 
 7 FORMAT T7X83C - ABORT ON .REL. COMMAND - 
11 FORMAT T7X83C - READ ERRORS = *DEC (D) 
12 FORMAT T7X83C - RECORDS WITH STC/DTC = *DEC (D)
13 FORMAT T7X83C - RECORDS READ = *DE*D (D) 
16 FORMAT T7X83C - ERROR(S) IN MODULE = *DEC
15 FORMAT T7X83C END OF WRITE/READ -
17 FORMAT 
18 FORMAT T7X83C - ABNORMAL TERMINATION 
* 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
20 B3 = 0                  *INITIALIZE LOOP COUNTER 
   BA = 0                  *INITIALIZE ERROR COUNTER
   B4 = P1.AND.17 
   MSG 1 (P8) TO DISPLAY,PRINT
21 B2 = 0                    *INITIALIZE STC/DTC COUNT
   B8 = 0                    *READ ERROR COUNT
   B10 = 0                   *MODULE LOCATION KEY 
   WC = P2                   *SET WORD COUNT REGISTER 
   B5 = 6 
   B7 = 0                    * NO MOTION CODE 
   RES B4, ABT 74            *RESERVE 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0 
   B1=0 
* 
* -----------START OF READ LOOP-------------------- 
* 
30 B1 = B1 +1    *INCREMENT RECORD COUNT (LOWER DIGIT)
   IF(B1.LT.100D) GOTO 31 
   B1 = 0 
   B0 = B0 + 1   *INCREMENT RECORD COUNT (UPPER DIGIT)
31 B10 = 1                   *MODULE LOCATION KEY 
   B5=6 
   B7 = 0                    *NO MOTION CODE
   RES B4, ABT 74            *RESERVE 
* 
* --------READ
* 
   B5 = 5 
   B7 = 5                     *READ FORWARD CODE
   READ FWD , ABT 74          *READ FORWARD 
   MSG 13 (B0,B1) TO LINE 3 
   MSG 11 (B8) TO LINE 4
   MSG 12 (B2) TO LINE 5
   DELAY P6 MSEC
33 IF(SB(1).AND.FILEMK.NE.0)GOTO 50   *FILEMK DETECTED
   IF(SB(1).AND.EOT.EQ.0) GOTO 34     *IF NOT EOT 
   ERROR 2/060, GOTO 71 
34 IF(SB(1).AND.ALERT.EQ.0) GOTO 40   *IF NO ALERT
   B8 = B8+1            *UPDATE PRU ERROR COUNT 
   MSG 11 (B8) TO LINE 4
   ERROR 2/203, GOTO 71 
40 IF(SB(4).AND.1000.EQ.0) GOTO 30    *NO STC OR DTC
   B2 = B2+1              *UPDATE STC/DTC COUNTER 
   GOTO 30
* --------FILE MARK FOUND 
* 
50 IF(P8.EQ.0)GOTO 53 
   B3 = B3+1
   MSG 17 TO DAYFILE,PRINT
   MSG 13 (B0,B1) TO DAYFILE,PRINT
   MSG 11 (B8) TO DAYFILE,PRINT 
   MSG 12 (B2) TO DAYFILE,PRINT 
   MSG 3 (B3) TO DAYFILE,PRINT
   IF(B3.NE.P8)GOTO 21
   GOTO 54
53 B3 = 1                    *SET UP PASS COUNT 
   IF(BA.EQ.0) GOTO 52
   MSG 16 (BA) TO DAYFILE 
   MSG 16 (BA) TO LINE 18D
52 MSG 17 TO DAYFILE,PRINT
   MSG 13 (B0,B1) TO DAYFILE,PRINT
   MSG 11 (B8) TO DAYFILE,PRINT 
   MSG 12 (B2) TO DAYFILE,PRINT 
   MSG 3 (B3) TO DAYFILE,PRINT
54 MSG 15 TO DAYFILE,PRINT
   GOTO 77
* 
* ---------PROCESS MODULE DETECTED ERRORS 
* 
71 PICTURE AND BLANK
   BA = BA + 1
   MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
   CALL 98A                   *ERROR CODE PROCESSOR 
   IF(EC.EQ.060) GOTO 77      *EXIT 
   MSG 1 (P8) TO DISPLAY
   GOTO 40
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *INCREMENT ERROR COUNTER
   MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
   IF(BA.LT.2) GOTO 76        *RETRY
   MSG 18 TO DAYFILE,PRINT
   MSG 16 (BA) TO DAYFILE 
   GOTO 77
76 MSG 1 (P8) TO DISPLAY
   IF(B10.EQ.0) GOTO 21       *RESTART HERE 
   GOTO 31                    *RESTART HERE 
77 END 20 
COMPILE   - T7X83C -
   MODULE T7X84,67X(44,54,55,53)LOCK   - MAINTENANCE LONG WRITE - 
*** T7X84 - MAINTENANCE LONG WRITE
* 
**  T7X84 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE DENSITY AND
*         PATTERN SELECTED BY THE *PARAM* DIRECTIVE.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* 
*         OR *EOT* IS REACHED.
* 
*   DESCRIPTION - 
* 
*         1. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         5. APPLY ADDRESS CODING IF SELECTED.
*         6. RELEASE, DELAY AND RESERVE.
*         7. WRITE. 
*         8. WAIT PARKED IF SELECTED. 
*         9. GO TO STEP 16 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. REPEAT STEPS 4-10 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        12. WAIT PARKED IF SELECTED. 
*        13. ENDFILE. 
*        14. REPORT EC 122 IF NO *EOF* STATUS.
*        15. REPEAT STEPS 4-14 UNTIL *FILE MAX* FILES WRITTEN.
*        16. REPEAT MODULE OR EXIT. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X84 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X84 - ABORT ON .ENDFILE. COMMAND - 
*         4. T7X84 - ABORT ON .WRITE. COMMAND - 
*         5. T7X84 - ABORT ON .RES. COMMAND - 
*         6. T7X84 - ABORT ON .REWIND. COMMAND -
*         7. T7X84 - ABORT ON .REL. COMMAND - 
*         8. T7X84 - ABORT ON .ERASE. COMMAND - 
*         9. T7X84 - ABORT ON .BKSP. COMMAND -
*        10. T7X84 - ABORT ON .READ FWD. COMMAND -
* 
*** T7X84 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         B0 = CURRENT FILE COUNT 
*            = TRACK SIZE (6 OR 8)
*            = RANDOM SEED
*         B1 = CURRENT RECORD COUNT 
*         B2 = RANDOM DATA PATTERN FLAG 
*         B3 = PATTERN FOR STORING
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*            = DELAY VALUE FOR REL/RES
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X84 - MAINTENANCE LONG WRITE -
 2 FORMAT T7X84 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X84 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T7X84 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X84 - ABORT ON .RES. COMMAND -
10 FORMAT T7X84 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X84 - ABORT ON .REL. COMMAND -
12 FORMAT T7X84 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X84 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X84 - ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 5034
* 
* 
20 MSG 1 TO DISPLAY,PRINT      *RUNNING MESSAGE.
   BA = 0                      *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B0 = 10
   B1 = 500 
   B3 = P4
   IF(DC.AND.10.NE.0) GOTO 21  *IF 9 TRACK TAPE 
   B0 = 6                      *TRACK SIZE (6 OR 8) 
* 
* --------FILL BUFFER 
* 
21 IF(P4.AND.3000.EQ.1000)B3=P4.XOR.7777
   DUP B0 BITS OF P4/B3 TO OB FOR B1
   GOTO 25
23 B0 = P7                   *RANDOM SEED 
   IF(P3.AND.4.NE.0)GOTO 24  *USE RANDOM SEED 
   B2=1                      *SET FLAG
   B0 = RT                   *USE RT CLOCK FOR SEED 
24 RANDOM TO OB FOR 500 , START B0
25 WC = P2                   *RECORD LENGTH TO WC REG 
26 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0                      *CLEAR FILE COUNT
   B1=0                      *CLEAR RECORD COUNT
30 B1 = B1 + 1               *INCREMENT RECORD COUNT
   IF(B1.EQ.7777) GOTO 30    *BUMP RECORD COUNT 
   IF(B2.EQ.0) GOTO 40       *RANDOM PTRN NOT SELECTED
   RANDOM TO OB FOR 500 , START RT
* 
* ------- ADDRESS CODING
* 
40 IF(P3.AND.1.NE.0)GOTO 43  *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
43 IF(P5+P6.LT.20D) GOTO 44  *BYPASS REL ON SHORT DELAY 
   B5 = 11
   REL, ABT 74
44 B5 = P6                   *DELAY PARAM TO B5 
   IF(P5.EQ.0) GOTO 45       *USE FIXED DELAY FROM P6 
   B5 = RT.AND.P5            *USE RT CLOCK AND MASK 
45 DELAY B5 MSEC
   B5 = 6 
   RES P1, ABT 74            *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
   B5 = 5 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE LONG , ABT 74
   IF(P3.AND.20.NE.0)GOTO 46  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
46 IF(SB(1).AND.EOT.NE.0) GOTO 54     *EOT DETECTED 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 50    *NO ERROR DETECTED
   ERROR 2/200 , GOSUB 70 
50 IF(P9.EQ.0)GOTO 30         *WRITE TO EOT IF P9 ZERO
   IF(B1.NE.P9)GOTO 30        *P9 RECORDS NOT DONE
   B1 = 0                     *ZERO RECORD COUNT
   B0 = B0 + 1                *INCREMENT FILE COUNT 
   B5 = 6 
   RES P1, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 51  *BYPASS WAIT *PARKED* 
   B5 = 12
   WAITNB, ABT 74 
* 
* --------WRITE .EOF. 
* 
51 B5 = 4 
   ENDFILE , ABT 74 
   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
   B5 = 11
   REL, ABT 74
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 26                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 26  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57                 *NO ERRORS
56 MSG 15 (BA) TO DAYFILE             *REPORT ERRORS
57 GOTO 77                            *NORMAL TERMINATION 
* 
* --------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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 26                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 26         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
77 END 20 
COMPILE     - T7X84 - 
   MODULE T7X85,67X(44,54,55,53)LOCK   - KILLER WRITE 67X/ATS - 
*** T7X85 - KILLER WRITE SENSING FROM POINTER REGISTER. (67X/ATS) 
* 
**  T7X85 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         IF THE ASSIGNED DEVICE CODE = 53, T7X85B/C ARE EXECUTED.
* 
*         RECORDS ARE WRITTEN ON TAPE AT *PARAM* SELECTED DENSITY AND 
*         USING A 'KILLER' PATTERN OR RANDOM PATTERN SELECTED IN PARAM P3.
* 
*         WRITING CONTINUES UNTIL *EOT* IS REACHED. 
* 
*         IF (P9) IS NON-ZERO, EXIT TO MODULE 85A WITHOUT WRITING 
*         THE TAPE IN MODULE 85.
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. REWIND.
*         3. RESERVE
*         4. WRIT LONG (P2) TIMES 10B 
*         5. PLACE FILE,RECORD, ERROR MESSAGE IN *L* DISPLAY. 
*         6. REPEAT STEPS 3-5 IF NO STATUS ERROR
*         7. BACKSPACE TWO PRU,S (BAD PRU PLUS LAST GOOD PRU) 
*         8. GO TO STEP 16 IF *EOT* STATUS IN STEP 4. 
*         9. DELAY (P5) MILLISECONDS
*        10. READ FORWARD PRU 
*        11. REPORT EC 203 IF LAST GOOD PRU STATUS ERROR
*        12. ERASE TAPE 
*        13. REPORT EC 248 IF STATUS ERROR
*        14. REWRITE PRU
*        15. REPEAT STEPS 7-13 IF STATUS ERROR INCREASING STEP 11 
*        16. RETURN TO STEP 3 
*        17. WRITE TWO TAPE MARKS 
*        18. MAKE DAYFILE MESSAGE 
*        19. EXIT TO MODULE 85A 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X85 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X85 - ABORT ON .ENDFILE. COMMAND - 
*         4. T7X85 - ABORT ON .WRITE. COMMAND - 
*         5. T7X85 - ABORT ON .RES. COMMAND - 
*         6. T7X85 - ABORT ON .REWIND. COMMAND -
*         7. T7X85 - ABORT ON .REL. COMMAND - 
*         8. T7X85 - ABORT ON .WAITNB. COMMAND -
* 
*         9. -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN GENERAL
*            STATUS DURING A -KILLER WRITE- OPERATION.
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
* 
*** T7X85 - INTERNAL DOCUMENTATION
* 
* 
*   REGISTER USAGE
* 
*         BO = UPPER 12 DIGITS OF RECORDS WRITTEN COUNTER 
*         B1 = LOWER 12 DIGITS OF RECORDS WRITTEN COUNTER 
*         B3 = TEMP REGISTER
*         B4 = ERASE COUNTER
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X85 - WRITE SENSING POINTER REGISTER P4=*OCT -
 2 FORMAT T7X85 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T7X85 - ABORT ON .ERASE. COMMAND -
 4 FORMAT T7X85 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT T7X85 - ABORT ON .WRITE. COMMAND -
 6 FORMAT T7X85 - ABORT ON .RES. COMMAND -
 7 FORMAT T7X85 - ABORT ON .BKSP. CCOMMAND -
10 FORMAT T7X85 - ABORT ON .REWIND. COMMAND - 
11 FORMAT T7X85 - ABORT ON .REL. COMMAND -
12 FORMAT T7X85 - ABORT ON .READ FWD. COMMAND - 
13 FORMAT T7X85 - RECORD = *DE*D (D), ERROR COUNT = *DEC (D)
   DATA(OB(000),CON) 0000,0100,0000,0100,0001,0000,0100,0006
   DATA(OB(010),CON) 0000,0776,7777,7777,7777,7777,7776,0000
   DATA(OB(020),CON) 0000,0000,0000,0000,7777,7777,7777,7777
   DATA(OB(030),CON) 7776,0000,0000,0000,0000,0000,7777,7777
   DATA(OB(040),CON) 7777,7777,7776,0000,0000,0000,0000,0000
   DATA(OB(050),CON) 7777,7777,7777,7777,7776,0000,0000,0000
   DATA(OB(060),CON) 0000,0000,0000,0000,0000,0000,0004,7777
   DATA(OB(070),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(100),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(110),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(120),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(130),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(140),CON) 7777,7777,7777,7777,7777,7777,7777,7777
   DATA(OB(150),CON) 7776,0000,0000,0000,0000,0000,0000,0000
   DATA(OB(160),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(170),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(200),CON) 7777,7777,7777,7777,7777,7777,7776,0000
   DATA(OB(210),CON) 0000,0000,0000,0000,7777,7777,7777,7777
   DATA(OB(220),CON) 7776,0000,0000,0000,0000,0000,0000,0000
   DATA(OB(230),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(240),CON) 7777,7777,7777,7777,7776,0000,0000,0000
   DATA(OB(250),CON) 0000,0000,0000,0000,0000,0000,0004,7777
   DATA(OB(260),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(270),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(300),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(310),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(320),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(330),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(340),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(350),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(360),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(370),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(400),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(410),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(420),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(430),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(440),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(450),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(460),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(470),CON) 0000,0000,0004,7777,7777,7777,7777,7777
* 
* 
20 IF(DC.EQ.53)EXIT TO 85B   *IF 698/CMST SUBSYSTEM 
   MSG 1 (P4) TO DISPLAY,PRINT
   IF(P9.NE.0)GOTO 57 
   BA = 0                      *INITIALIZE ABORT COUNTER
25 WC = P2                   *RECORD LENGTH TO WC REG 
   IF(P4.AND.2000.EQ.0) GOTO 26 
   RANDOM TO OB FOR 500 , START RT
26 B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0                      *CLEAR FILE COUNT
   B1=0                      *CLEAR RECORD COUNT
* 
* -------WRITE KILLER DATA ON TAPE
* 
30 B1 = B1 + 1               *INCREMENT RECORD COUNT
   B4 = 0                    * CLEAR ERASE COUNTER
   IF(B1.LT.100D) GOTO 31  *RECORD COUNT LOWER
   B1 = 0 
   B0 = B0 + 1
31 B5 = 6 
   RES P1, ABT 74            *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
40 B5 = 5 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE LONG , ABT 74
   MSG 13 (B0,B1,BA) TO LINE 3   *UPDATE RECORDS WRITTEN
   DELAY P6 MSEC
41 IF(SB(7).AND.777B.EQ.0)GOTO 30    *NO ERROR DETECTED 
   B3 = SB(1)                    * SAVE GENERAL STATUS
   B4 = B4+1
   B7 = 2 
   B5 = 7 
   BKSP , ABT 74
42 BKSP , ABT 74
   IF(B3.AND.10.NE.0) GOTO 54    *CHECK GENERAL STATUS OF WRITE 
   DELAY P5 MSEC
   BA = BA + 1                  *INCR ERROR COUNT 
   B7 = 1                        *FORWARD MOTION CODE 
   B5 = 12
   READ FWD ABT 74
   IF(SB(1).AND.5034.EQ.0) GOTO 43
   ERROR 2/203 , GOSUB 70 
   GOTO 42
* 
* --------ERASE BAD RECORD
* 
43 B3 = 0                      *CLEAR ERASE COUNTER 
44 B5 = 8 
   ERASE , ABT 74 
   IF(SB(1).AND.5034.EQ.0) GOTO 45
   ERROR 2/246 GOSUB 70 
45 GOTO 44 WHILE (B3+1.NE.B4) 
   GOTO 31            *REWRITE RECORD 
* 
* -------END OF TAPE DETECTED.
* 
* 
* -------CLOSE TAPE WITH DUEL TAPE MARKS
54 B5 = 4 
   ENDFILE , ABT 74 
   ENDFILE , ABT 74 
57 MSG 13 (B0,B1,BA) TO DAYFILE 
   PICTURE
   EXIT TO 85A                               *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERROR(S)
* 
70 BA = BA + 1                *BUMP ERROR COUNT 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
   B15 = 7654B               *DISPLAY DEC RECORD CNT IN 980 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   B5 = 6 
   RES P1 , ABT 74
   RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 980                   *CALL 67X/ATS STATUS CRACKER
   END 20 
COMPILE    - T7X85 -
   MODULE T7X85A,67X(44,54,55,)LOCK   - KILLER READ 67X/ATS - 
*** T7X85A - KILLER READ SENSING POINTER REGISTER 67X/ATS - 
* 
**  T7X85A - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         THIS MODULE READS THE TAPE CREATED BY MODULE
*         T7X85. NO ERRORS SHOULD OCCUR BECAUSE 
*         TAPE WRITTEN WITH ERROR CORRECTION DISABLED 
*         AND WRITE PRU RECOVERY INSURING ALL PRU,S ON
*         TAPE ARE PERFECTLY WRITTEN. 
*         RECORDS ARE READ FROM TAPE ACCORDING TO THE 
*         DENSITY AND PATTERN SPECIFIED BY THE *PARAM*
*         DIRECTIVE INSURING ERROR CORRECTION ENABLED.
* 
*         MODULE 85A WILL EXECUTE ONLY ONCE IF P8 IS
*         EQUAL TO ZERO (0) OR WILL EXECUTE THE OCTAL NUMBER
*         OF TIMES SPECIFIED BY THE CONTENTS OF P8, 
*         I.E., IF P8=3 THEN 85A WILL EXECUTE THREE 
*         TIMES. THE NEED TO REPEAT THIS MODULE IS BASED
*         ON THE FACT THAT MODULE 85 HAS WRITTEN THE TAPE 
*         WITH RECOVERY ENABLED AND THEREFORE ERROR FREE. 
*         THE REPEAT PASSES WILL VERIFY RETENTIVITY AND 
*         READ REDUCTION. THERE SHOULD BE NO ERRORS IN
*         THIS MODULE.
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE. 
*         2. REWIND.
*         4. RESERVE WITH ERROR CORRECTION ENABLED
*         5. READ FORWARD.
*         6. DELAY (P6) MILLISECONDS
*         7. MESSAGE TO LINE 3 (RUNNING RECORD COUNT) 
*         8. GO TO STEP 13 IF *EOF*.
*        10. REPORT EC 203 IF *ALERT* STATUS. 
*        11. REPORT EC 204 IF ANY BITS ON IN THE POINTER REGISTER.
*        12. RETURN TO STEP 4.
*        13. RETURN TO STEP 1 IF LOOP COUNT LESS THAN (P8). 
*        14. END OF TEST AT FILE MARK.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X85A - ERROR CODE = *OCT AT LINE (EA) = *OCT 
*         3. T7X85A - ABORT ON .REWIND. COMMAND - 
*         4. T7X85A - ABORT ON .READ FWD. COMMAND - 
*         4. T7X85A - ABORT ON .RES. COMMAND -
*         6. T7X85A - ABORT ON .REL. COMMAND -
* 
* 
*         7. -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. 
* 
*         8. -EC 204- THE SINGLE OR DOUBLE TRACK CORRECTABLE ERROR
*            BIT IS SET IN STATUS WORD 4. 
* 
*** T7X85A - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = NUMBER OF SINGLE/DOUBLE TRACK CORRECTABLE ERRORS 
*         B3 = LOOP COUNTER IF P8 NON-ZERO
*         B4 = RESERVE PARAMETER (P1) MASKED BY 17B 
*         B5 = MESSAGE NUMBER(SET BEFORE ENTRY) FOR MSG PROCESSOR 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
* 
 1 FORMAT T7X85A - READ SENSING POINTER REGISTER P8=*OCT -
 2 FORMAT T7X85A - ERROR CODE = *OCT AT LINE (EA) = *OCT
 3 FORMAT T7X85A - READ SENSING POINTER REGISTER PC=*OCT -
 4 FORMAT T7X85A - ABORT ON .REWIND. COMMAND -
 5 FORMAT T7X85A - ABORT ON .READ FWD. COMMAND -
 6 FORMAT T7X85A - ABORT ON .RES. COMMAND - 
 7 FORMAT T7X85A - ABORT ON .REL. COMMAND - 
11 FORMAT T7X85A - RECORDS WITH DOUBLE TRACK ERRORS =*DEC 
12 FORMAT T7X85A - RECORDS WITH SINGLE TRACK ERRORS =*DEC 
13 FORMAT T7X85A - RECORD NUMBER *DE*D (D)
14 FORMAT T7X85A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT T7X85A - END OF KILLER WRITE/READ - 
16 FORMAT T7X85A - SUB-SYSTEM FAILED DATA PATH MARGIN TEST -
* 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
20 B3 = 0                  *INITIALIZE LOOP COUNTER 
   MSG 1 (P8) TO DISPLAY,PRINT
21 MSG 3 (B3) TO DISPLAY
   BA = 0                    *INITIALIZE ABORT COUNTER
   WC = P2                   *SET WORD COUNT REGISTER 
   B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0 
   B1=0 
   B2 = 0                 * CLEAR STC OR DTC ERROR COUNTER
* 
* -----------START OF READ LOOP-------------------- 
* 
30 B1 = B1 +1                *INCREMENT RECORD COUNT
   B4 = P1
   B4 = B4.AND.17 
   IF(B1.LT.100D) GOTO 31 
   B1 = 0 
   B0 = B0 + 1
31 B5=6 
   RES B4, ABT 74            *RESERVE 
* 
* --------READ
* 
   B5 = 5 
   B7 = 5                     *READ FORWARD CODE
   READ FWD , ABT 74          *READ FORWARD 
   MSG 13 (B0,B1) TO LINE 3 
   MSG 12 (B2) TO LINE 5
   MSG 11 (BA) TO LINE 6
   DELAY P6 MSEC
33 IF(SB(1).AND.FILEMK.NE.0)GOTO 50      *FILEMK DETECTED 
   IF(SB(1).AND.EOT.EQ.0) GOTO 34     *IF NOT EOT 
   ERROR 2/060, GOSUB 71
   EXIT                               *TERMINATE
/ 
34 IF(SB(1).AND.ALERT.EQ.0) GOTO 40   *IF NO ALERT
   BA = BA+1            *UPDATE PRU ERROR COUNT 
   ERROR 2/203 , GOSUB 70 
   GOTO 30
40 IF(SB(7).AND.777B.EQ.0) GOTO 30    *NO VALID POINTERS
   B2 = B2+1              *UPDATE STC/DTC COUNTER 
   ERROR 2/204 , GOSUB 70 
   GOTO 30                   *RESUME TESTING
* 
* --------FILE MARK FOUND 
* 
50 IF(BA.EQ.0) GOTO 52
   MSG 16 TO DAYFILE,PRINT
   MSG 16 TO LINE 18D 
52 MSG 13 (B0,B1) TO DAYFILE,PRINT
   MSG 12 (B2) TO DAYFILE,PRINT 
   MSG 11 (BA) TO DAYFILE,PRINT 
   MSG 15 TO DAYFILE,PRINT
   IF(P8.EQ.0)GOTO 53 
   B3 = B3+1
   IF(B3.NE.P8)GOTO 21
53 EXIT 
* 
* ---------PROCESS MODULE DETECTED ERRORS 
* 
70 IF(ES.AND.SL.EQ.0) GOTO 71 
   RETURN 
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
   B15 = 7654B            *DISPLAY DEC RECORD CNT IN 980
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   EXIT 
   END 20 
COMPILE   - T7X85A -
   MODULE T7X85B,67X(53)LOCK   - KILLER WRITE 698/CMTS
*** T7X85B - KILLER WRITE SENSING TAPE PE AND ERROR TRACKS (698/CMTS) 
* 
**  T7X85B - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
* 
*         RECORDS ARE WRITTEN ON TAPE AT *PARAM* SELECTED DENSITY AND 
*         USING A 'KILLER' PATTERN OR RANDOM PATTERN SELECTED IN PARAM P4.
*         THE RANDOM PATTERN WILL USE THE RT CLOCK FOR SEED.
* 
* 
*         DATA IS WRITTEN WITH P1 MASKED WITH 17 AND ERROR
*         CORRECTION FORCED DISABLED.  RECORDS ARE WRITTEN TO EOT.
* 
*         IF (P9) IS NON-ZERO, EXIT TO MODULE 85C WITHOUT WRITING 
*         THE TAPE IN MODULE 85B. 
* 
*         THE MODULE WILL NOT TERMINATE ON MODULE DETECTED ERRORS.
* 
*         THE MODULE WILL TERMINATE AFTER TWO COMMAND ABORTS. 
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE
*         LOOP. 
* 
*   DESCRIPTION - 
* 
*         1.  RESERVE WITH ERROR CORRECTION DISABLED. 
*         2.  REWIND. 
*         3.  RESERVE WITH ERROR CORRECTION DISABLED. 
*         4.  WRITE LONG (P2) TIMES 10B.
*         4A. IF EOT GOTO STEP 15.
*         4B. IF TAPE PARITY ERROR GOTO STEP 7. 
*         5.  PLACE FILE,RECORD, ERROR MESSAGE IN *L* DISPLAY.
*         5A. TEST STATUS FOR UNIT DEAD TRACKS. 
*         5B. IF STATUS ERROR FROM 5A GOTO STEP 7.
*         6.  REPEAT STEPS 3-5B IF NO UNIT DEAD TRACKS. 
*         6A. IF EOT GOTO STEP 15.
*         7.  BACKSPACE TWO PRU,S (BAD PRU PLUS LAST GOOD PRU). 
*         8.  DELAY (P5) MILLISECONDS.
*         9.  READ FORWARD PRU. 
*        10.  REPORT EC 203 IF LAST GOOD PRU STATUS ERROR AND GOTO STEP 7.
*        10A. IF READ STATUS IS GOOD, GOTO STEP 12. 
*        11.  ERASE TAPE. 
*        12.  REPORT EC 246 IF STATUS ERROR AND GOTO STEP 11. 
*        13.  IF GOOD STATUS FROM ERASE, REPEAT STEPS 11, 12 ONCE MORE. 
*        14.  GOTO STEP 3.
*        15.  BACKSPACE 2 PRU.
*        15A. WRITE TWO TAPE MARKS. 
*        16.  MAKE DAYFILE MESSAGE. 
*        17.  EXIT TO MODULE 85C. 
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X85B - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. T7X85B - ABORT ON .ENDFILE. COMMAND -
*         4. T7X85B - ABORT ON .WRITE. COMMAND -
*         5. T7X85B - ABORT ON .RES. COMMAND -
*         6. T7X85B - ABORT ON .REWIND. COMMAND - 
*         7. T7X85B - ABORT ON .REL. COMMAND -
*         8. T7X85B - ABORT ON .STATUS SENSE. COMMAND - 
* 
*         9. EC 203 - ALERT BIT IN GENERAL STATUS WAS SET 
*                     DURING A READ FORWARD OPERATION. THE
*                     INPUT BUFFER CONTAINS THE DATA READ.
* 
*        10. EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE.
* 
  
*** T7X85B - INTERNAL DOCUMENTATION 
* 
* 
*   REGISTER USAGE
* 
*         BO = UPPER 12 DIGITS OF RECORDS WRITTEN COUNTER 
*         B1 = LOWER 12 DIGITS OF RECORDS WRITTEN COUNTER 
*         B3 = TEMP REGISTER
*         B4 = RECOVERY COUNTER 
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B6 = RESERVE PARAMS WITH ERROR CORRECTION DISABLED
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B8 = MODULE DETECTED WRITE ERRORS 
*         B9 = ERASURE COUNT
*         B10= MODULE LOCATION KEY
*         BA = COMMAND ABORT ERRORS 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X85B - WRITE SENSING ERROR TRACK P4=*OCT
 2 FORMAT T7X85B - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 3 FORMAT T7X85B - ABORT ON .ERASE. COMMAND - 
 4 FORMAT T7X85B - ABORT ON .ENDFILE. COMMAND - 
 5 FORMAT T7X85B - ABORT ON .WRITE. COMMAND - 
 6 FORMAT T7X85B - ABORT ON .RES. COMMAND - 
 7 FORMAT T7X85B - ABORT ON .BKSP. CCOMMAND - 
10 FORMAT T7X85B - ABORT ON .REWIND. COMMAND -
11 FORMAT T7X85B - ABORT ON .REL. COMMAND - 
12 FORMAT T7X85B - ABORT ON .READ FWD. COMMAND -
13 FORMAT T7X85B - RECORDS WRITTEN = *DE*D(D) 
14 FORMAT T7X85B - WRITE ERRORS = *DEC(D) 
15 FORMAT T7X85B - RECOVERED RECORDS = *DEC (D) 
16 FORMAT T7X85B - ABNORMAL TERMINATION 
17 FORMAT T7X85B ERROR(S) IN MODULE = *DEC
* 
*     OB SET UP IN T7X85
* 
20 MSG 1 (P4) TO DISPLAY,PRINT
   IF(P9.NE.0)GOTO 57 
   B6 = P1.AND.17 
   B6 = B6 + 2000              *ADD DISABLE ERROR CORRECTION
   BA = 0                      *INITIALIZE ABORT COUNTER
25 WC = P2                     *RECORD LENGTH TO WC REG 
   IF(P4.AND.2000.EQ.0) GOTO 26 
   RANDOM TO OB FOR 500 , START RT
26 B10 = 0                   *MODULE KEY
   B5 = 6 
   B7 = 0                    *NO MOTION CODE
   RES B6, ABT 74            *RESERVE 
   B5 = 10
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0                      *CLEAR FILE COUNT
   B1=0                      *CLEAR RECORD COUNT
* 
* -------WRITE KILLER DATA ON TAPE
* 
30 B1 = B1 + 1               *INCREMENT RECORD COUNT
   B9=0 
   IF(B1.LT.100D) GOTO 31  *RECORD COUNT LOWER
   B1 = 0 
   B0 = B0 + 1
31 B10 = 1                   *MODULE KEY
   B7 = 0                    *NO MOTION CODE
   B5 = 6 
   RES B6, ABT 74            *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
40 B5 = 5 
   B7 = 1                     *FORWARD WRITE MOTION CODE
   WRITE LONG , ABT 74
   MSG 13(B0,B1)TO LINE 3     *RECORDS WRITTEN
   MSG 14(B8) TO LINE 4       *RECORDS IN ERROR 
   MSG 15 (B4) TO LINE 5       *UPDATE ERASURES 
   IF(SB(1).AND.10.NE.0)GOTO 54    *EOT 
   IF(SB(1).AND.4000.NE.0)GOTO 37  *ALERT 
   IF(SB(3).AND.1000.NE.0)GOTO 37  *TAPE PE 
   DELAY P6 MSEC
   STATUS SENSE, ABT 74 
   IB(457) = IB(457).AND.400   *MASK PARITY TRACK IN ERROR
   IB(455) = IB(455) + IB(457)  *SET PARITY TRACK IN ERROR
   IF(IB(455).AND.777B.NE.0)GOTO 37    *TRACKS IN ERROR 
   IF(SB(1).AND.10.EQ.0)GOTO 30    *NOT EOT 
   GOTO 54                         *EOT, CLOSE TAPE 
37 IF(B9.EQ.0) B8=B8+1         *INC WRITE ERROR IF NOT ERASING
   IF(B9.EQ.0) B4=B4+1         *INC RECOVERED ERRORS IF NOT ERASING 
   MSG 14(B8) TO LINE 4       *RECORDS IN ERROR 
   B9 = B9+1                     *SET UP ERASE COUNT
   B7 = 2 
   B5 = 7 
42 BKSP , ABT 74
   BKSP , ABT 74
   DELAY P5 MSEC
   B7 = 1                        *FORWARD MOTION CODE 
   B5 = 12
   READ FWD ABT 74
   IF(SB(1).AND.5034.EQ.0) GOTO 43
   ERROR 2/203 , GOSUB 70 
   GOTO 42
43 B3 = 0                      *CLEAR ERASE COUNTER 
44 B7 = 1 
   B5 = 8 
   ERASE, ABT 74
   IF(SB(1).AND.10.NE.0) GOTO 54     *EOT 
   IF(SB(1).AND.5034.EQ.0) GOTO 45
   ERROR 2/246 GOSUB 70 
   GOTO 43
45 GOTO 44 WHILE (B3+1.NE.B9)        *ERASE AGAIN 
   GOTO 31                           *RE-WRITE RECORD 
* 
* -------CLOSE TAPE WITH DUEL TAPE MARKS
54 B7 = 2 
   B5 = 7 
   BKSP , ABT 74
   BKSP , ABT 74
   B7 = 1 
   B5 = 4 
   ENDFILE , ABT 74 
   ENDFILE , ABT 74 
57 MSG 13 (B0,B1) TO DAYFILE
   MSG 14 (B8) TO DAYFILE 
   MSG 15 (B4) TO DAYFILE 
   PICTURE
   BLANK
60 EXIT TO 85C                *READ MODULE
* 
* --------PROCESS MODULE DETECTED ERROR(S)
* 
70 PICTURE AND BLANK
   BA = BA + 1
   MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
   CALL 98A                   *ERROR CODE PROCESSOR 
   B5 = 6 
   B7 = 0 
   RES B6 , ABT 74
   RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
   IF(BA.LT.2) GOTO 76        *RETRY
   MSG 16 TO DAYFILE,PRINT
   MSG 17 (BA) TO DAYFILE 
   GOTO 77
76 MSG 1 (P4) TO DISPLAY
   IF(B10.EQ.0) GOTO 26       *RESTART HERE 
   GOTO 31                    *RESTART HERE 
77 END 20 
COMPILE    - T7X85B - 
   MODULE T7X85C,67X(53)LOCK  - KILLER READ (698/CMTS) -
*** T7X85C - KILLER READ SENSING ERROR CORRECTION (698/CMTS) -
* 
**  T7X85C - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         THIS MODULE READS THE TAPE CREATED BY MODULE
*         T7X85B. NO ERRORS SHOULD OCCUR BECAUSE THE
*         TAPE WAS WRITTEN WITH ERROR CORRECTION DISABLED 
*         AND WRITE PRU RECOVERY INSURING ALL PRU'S ON
*         THE TAPE ARE PERFECTLY WRITTEN. 
* 
*         DATA IS READ WITH P1 MASKED WITH 17.  ERROR 
*         CORRECTION IS FORCED ENABLED AND RECORDS ARE
*         READ TO EOF.
* 
*         MODULE 85C WILL EXECUTE ONLY ONCE IF P8 IS EQUAL
*         TO ZERO OR ONE, OR WILL EXECUTE THE OCTAL NUMBER
*         OF TIMES SPECIFIED BY THE CONTENTS OF P8, 
*         I.E., IF P8=3 THEN 85C WILL EXECUTE THREE 
*         TIMES. THE NEED TO REPEAT THIS MODULE IS BASED
*         ON THE FACT THAT MODULE 85B HAS WRITTEN THE TAPE
*         WITH RECOVERY ENABLED AND THEREFORE ERROR FREE. 
*         THE REPEAT PASSES WILL VERIFY RETENTIVITY AND 
*         READ REDUCTION. THERE SHOULD BE NO ERRORS IN
*         THIS MODULE.
* 
*         THIS MODULE WILL NOT TERMINATE ON MODULE DETECTED 
*         ERRORS WITH THE EXCEPTION OF EC 060.
* 
*         THIS MODULE WILL TERMINATE AFTER TWO COMMAND ABORTS.
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE
*         LOOP. 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE WITH ERROR CORRECTION ENABLED. 
*         2. REWIND.
*         3. RESERVE WITH ERROR CORRECTION ENABLED
*         4. READ FORWARD.
*         5. DELAY (P6) MILLISECONDS
*         6. MESSAGE TO LINE 3 (RUNNING RECORD COUNT) 
*         7. GO TO STEP 11 IF *EOF* 
*         8. IF NOT EOF AND EOT, REPORT ERROR 060 
*         9. INCREMENT ERROR COUNTER IF ERROR CORRECTION SENSED 
*        10. RETURN TO STEP 4.
*        11. RETURN TO STEP 1 IF LOOP COUNT LESS THAN (P8). 
*        12. END OF TEST AT FILE MARK.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X85C - ERROR CODE = *OCT AT LINE (EA) = *OCT 
*         3. T7X85C - ABORT ON .REWIND. COMMAND - 
*         4. T7X85C - ABORT ON .READ FWD. COMMAND - 
*         4. T7X85C - ABORT ON .RES. COMMAND -
*         6. T7X85C - ABORT ON .REL. COMMAND -
* 
* 
*         7. EC 060 - EOT DETECTED BEFORE DETECTING EOF, EITHER 
*                     UNIT CANNOT DETECT EOF OR TAPE NOT WRITTEN
*                     BY CORRECT T7X MODULE...CHECK PARAMETERS..
* 
* 
  
*** T7X85C - INTERNAL DOCUMENTATION 
* 
*   REGISTER USAGE -
* 
*         B0 = LOWER DIGITS OF CURRENT RECORD COUNT 
*         B1 = UPPER DIGITS OF CURRENT RECORD COUNT 
*         B2 = NUMBER OF SINGLE/DOUBLE TRACK CORRECTABLE ERRORS 
*         B3 = LOOP COUNTER IF P8 NON-ZERO
*         B4 = RESERVE PARAMETER (P1) MASKED BY 17B 
*         B5 = MESSAGE NUMBER(SET BEFORE ENTRY) FOR MSG PROCESSOR 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         B10= MODULE LOCATION KEY
*         BA = COMMAND ABORT ERROR COUNT
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X98A - ERROR CODE PROCESSOR 
* 
* 
* 
 1 FORMAT T7X85C - READ SENSING ERROR CORRECTION P8=*OCT
 2 FORMAT T7X85C - ERROR CODE = *OCT AT LINE (EA) = *OCT
 3 FORMAT T7X85C - READ SENSING ERROR CORRECTION PC=*OCT
 4 FORMAT T7X85C - ABORT ON .REWIND. COMMAND -
 5 FORMAT T7X85C - ABORT ON .READ FWD. COMMAND -
 6 FORMAT T7X85C - ABORT ON .RES. COMMAND - 
 7 FORMAT T7X85C - ABORT ON .REL. COMMAND - 
12 FORMAT T7X85C - RECORDS WITH STC/DTC  = *DEC (D) 
13 FORMAT T7X85C - RECORDS READ  = *DE*D (D)
15 FORMAT T7X85C - END OF KILLER WRITE/READ - 
16 FORMAT T7X85C - ERROR(S) IN MODULE = *DEC
17 FORMAT 
18 FORMAT T7X85C - ABNORMAL TERMINATION 
* 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
20 B3 = 1                  *INITIALIZE LOOP COUNTER 
   BA = 0                  *INITIALIZE ERROR COUNTER
   B4 = P1.AND.17 
   MSG 1 (P8) TO DISPLAY,PRINT
21 B2 = 0                    *INITIALIZE ERROR COUNTER
   B10 = 0                   *MODULE LOCATION KEY 
   B8 = 0                    *READ ERROR COUNT
   WC = P2                   *SET WORD COUNT REGISTER 
   B5 = 6 
   B7 = 0                    * NO MOTION CODE 
   RES B4, ABT 74            *RESERVE 
   B5 = 4 
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74             *REWIND
   B0=0 
   B1=0 
   B2 = 0                 * CLEAR STC OR DTC ERROR COUNTER
* 
* -----------START OF READ LOOP-------------------- 
* 
30 B1 = B1 +1    *INCREMENT RECORD COUNT (LOWER DIGIT)
   IF(B1.LT.100D) GOTO 31 
   B1 = 0 
   B0 = B0 + 1   *INCREMENT RECORD COUNT (UPPER DIGIT)
31 B10 = 1                   *MODULE LOCATION KEY 
   B5=6 
   B7 = 0                    *NO MOTION CODE
   RES B4, ABT 74            *RESERVE 
* 
* --------READ
* 
   B5 = 5 
   B7 = 5                     *READ FORWARD CODE
   READ FWD , ABT 74          *READ FORWARD 
   MSG 13 (B0,B1) TO LINE 3   *UPDATE RECORDS READ
   MSG 12 (B2) TO LINE 4      *UPDATE STC/DTC CORRECTIONS 
   DELAY P6 MSEC
33 IF(SB(1).AND.FILEMK.NE.0)GOTO 50   *FILEMK DETECTED
   IF(SB(1).AND.EOT.EQ.0) GOTO 34     *IF NOT EOT 
   ERROR 2/060, GOTO 71 
34 IF(SB(4).AND.1000.EQ.0) GOTO 30    *NO ERR CORRECTION
   B2 = B2+1                 *UPDATE ERROR COUNT
   GOTO 30                   *RESUME TESTING
* 
* --------FILE MARK FOUND 
* 
50 IF(P8.EQ.0)GOTO 53 
   MSG 17 TO DAYFILE,PRINT
   MSG 13 (B0,B1) TO DAYFILE,PRINT
   MSG 12 (B2) TO DAYFILE,PRINT 
   MSG 3 (B3) TO DAYFILE,PRINT
   IF(B3.NE.P8)GOTO 51
   GOTO 54
51 B3 = B3+1
   GOTO 21
53 B3 = 1                    *SET PASS COUNT
   IF(BA.EQ.0) GOTO 52
   MSG 16 (BA) TO DAYFILE 
   MSG 16 (BA) TO LINE 18D
52 MSG 17 TO DAYFILE,PRINT
   MSG 13 (B0,B1) TO DAYFILE,PRINT
   MSG 12 (B2) TO DAYFILE,PRINT 
   MSG 3 (B3) TO DAYFILE,PRINT
54 MSG 15 TO DAYFILE,PRINT
   GOTO 77
* 
* ---------PROCESS MODULE DETECTED ERRORS 
* 
71 PICTURE AND BLANK
   BA = BA + 1
   MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
   CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   GOTO 77                    *EXIT 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   CALL 969                   *CALL 698/CMTS STATUS CRACKER 
   IF(BA.LT.2) GOTO 76        *RETRY
   MSG 18 TO DAYFILE,PRINT
   MSG 16 (BA) TO DAYFILE 
   GOTO 77
76 MSG 1 (P8) TO DISPLAY
   IF(B10.EQ.0) GOTO 21       *RESTART HERE 
   GOTO 31                    *RESTART HERE 
77 END 20 
COMPILE   - T7X85C -
   MODULE T7X86,67X(44,54,55,53)LOCK   - INHIBITOR TAPE TEST ONE -
*** T7X86 - INHIBITOR TAPE TEST ONE - 
* 
**  T7X86 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X86 IS DESIGNED TO WRITE TEN RECORDS OF 2K LENGTH 
*         ALLOWING NO WRITE ERROR. IF WRITE ERROR OCCURS, CLIP
*         THE TAPE BACK 20 FEET, PLACE A NEW LOAD POINT MARKER
*         ON TAPE AND RESTART THE TEST. 
* 
*         AFTER THE TAPE IS WRITTEN WITH NO ERRORS, TAPE IS REWOUND 
*         TO LOAD POINT.
* 
*         TAPE IS READ FORWARD CHECKING ALL TEN RECORDS FOR ERROR.
*         IF ERROR OCCURS, A BACKSPACE OVER THE RECORD AND A REREAD 
*         IS TRIED. TEST IS ABORTED IF RECORD CAN NOT BE READ IN 5
*         TRIES. USER SHOULD THEN VISUALLY INSPECT THE TAPE FOR DAMAGE
*         AND FOR CONTAMINATION OF THE HEAD/TAPE PATH.
* 
*         IF TAPE READS ALL TEN RECORDS WITH NO ERRORS, TAPE IS REWOUND 
*         TO LOAD POINT AND READS ARE REPEATED 40,000 TIMES.
* 
*   DESCRIPTION - 
* 
* 
*         1. PLACE MESSAGES.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OB WITH RANDOM PATTERN. 
*         5. RESERVE. 
*         6. WRITE. 
*         7. WAIT PARKED. 
*         8. REPORT EC 200 IF STATUS ERROR. 
*         9. RESERVE. 
*        10. REWIND.
*        11. DELAY 20 MILLI SECONDS.
*        12. RESERVE. 
*        13. READ FORWARD.
*        14. WAIT PARKED. 
*        16. REPORT EC 226 IF STATUS ERROR. 
*        17. BACKSPACE IF ERROR.
*        18. GO TO 11 TO REREAD RECORD. 
*        19. GO TO 11 UNTIL ALL TEN RECORDS READ
*        20. GO TO 9 FOR 40,000 TIMES.
*        21. GO TO STEP 2 IF REPEAT MODULE. 
*        22. EXIT.
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. PRODUCT OVERLAY ERRORS 
* 
*         2. T7X86 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X86 - ABORT ON .READ FWD. COMMAND -
*         4. T7X86 - ABORT ON .BKSP. COMMAND -
*         5. T7X86 - ABORT ON .WRITE. COMMAND - 
*         6. T7X86 - ABORT ON .RES. COMMAND - 
*         7. T7X86 - ABORT ON .REL. COMMAND - 
*         8. T7X86 - ABORT ON .REWIND. COMMAND -
*         9. T7X86 - ABORT ON .WAITNB. COMMAND -
* 
*        10. -EC 200- AN UNEXPECTED STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. 
*            NOTE THAT GENERAL STATUS WAS MASKED WITH LOGICAL 
*            PRODUCT 5034B. 
* 
*        11. - EC 226- AN ERROR OCCURRED DURING A READ FORWARD
*            OPERATION IN THE TAPE PATH DAMAGE TEST.
* 
* 
*** T7X86 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = CURRENT FILE COUNT 
*         B1 = CURRENT RECORD COUNT 
*         B2 = RETRY COUNT
*         B3 =
*         B4 =
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X86 - INHIBITOR TAPE TEST ONE - 
 2 FORMAT T7X86 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT T7X86 - ABORT ON .READ FWD. COMMAND - 
 5 FORMAT T7X86 - ABORT ON .BKSP. COMMAND - 
 6 FORMAT T7X86 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T7X86 - ABORT ON .RES. COMMAND -
10 FORMAT T7X86 - ABORT ON .REL. COMMAND -
11 FORMAT T7X86 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X86 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X86 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X86 ERROR(S) IN MODULE = *DEC 
16 FORMAT T7X86     PASS = *DE*D   (DEC)
17 FORMAT T7X86      REREAD ERROR(S)  = *DEC
* 
* 
   EQUATE ERROR TO 5034, FILEMK TO 20 
* 
* 
20 MSG 1 TO DISPLAY,PRINT   *RUNNING MESSAGE
   MSG 1 TO LINE 5          *RUNNING MESSAGE
   MSG 16 (B0,B1) TO LINE 8          *PASS MESSAGE
   BA=0                     *CLEAR ERROR COUNTER
21 B5 =7
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74           *RESERVE
   B5 = 11
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74
   WC = 3720                *REC LENGTH TO 2000D WORDS
   RANDOM TO OB FOR 500 , START RT
* 
* ---------WRITE TEN RECORDS
* 
30 B0 = 0                    *CLEAR FILE COUNT
   B1 = 0                    *CLEAR RECORD COUNT
31 B5 = 7 
   RES P1, ABT 74 
   B5 = 6 
   B7 = 1                    *WRITE FORWARD MOTION CODE 
   WRITE , ABT 74 
   B5 = 12
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.ERROR.EQ.0) GOTO 32    *NO WRITE ERRORS 
   ERROR 2/200, GOSUB 70
   GOTO 56                   *ABORT THE TEST
32 B1 = B1 + 1
   IF(B1.LT.10D) GOTO 31     *LOOP FOR TEN RECORDS
   ENDFILE , ABT 74 
   B1 = 0                    *CLEAR PASS COUNTER
* 
* --------REWIND TO LOAD POINT
* 
40 B5 = 11
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74
   DELAY 20 MSEC             *DELAY 20 MILLI-SECONDS
   MSG 16 (B0,B1) TO LINE 8 
   MSG 17 (B4) TO LINE 12 
* 
* --------READ THE TEN RECORDS FORWARD
* 
41 B5 = 7 
   B2 = 0                    *CLEAR RETRY COUNT 
   RES P1, ABT 74 
42 B5 = 4 
   B7 = 5                    *READ FORWARD MOTION CODE
   READ FWD, ABT 74 
   B5 = 12
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.FILEMK.NE.0) GOTO 47
   IF(SB(1).AND.ERROR.EQ.0) GOTO 41 
   B5 = 7                    *BACKSPACE MOTION CODE 
   B7 = 5 
   BKSP , ABT 74
   DELAY 20 MSEC
   B4 = B4 + 1               *UPDATE REREAD COUNT 
   GOTO 42 WHILE (B2+1.NE.5)
   ERROR 2/226, GOSUB 70
   GOTO 55
47 GOTO 40 WHILE (B1+1.NE.100D)        *DO 100D PASSES
   B1 = 0 
   GOTO 40 WHILE (B0+1.NE.400D)           *DO 40,000 PASSES 
   B5 = 10
   REL, ABT 74
54 B6 = B6 + 1                *LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55         *IF NOT SCOPING 
   MSG 14 (BA,B6) TO DISPLAY          *POST SCOPING MSG 
   GOTO 21                            *RESTART
55 IF(ES.AND.CM.NE.0)GOTO 21  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0) GOTO 57       *NO MODULE ERRORS
   MSG 17 (B4) TO PRINT,DAYFILE 
56 MSG 15(BA) TO PRINT,DAYFILE     *REPORT ERRORS 
57 PICTURE AND BLANK        *PRINT CURRENT CONDITIONS 
   GOTO 77
* 
* --------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 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   RETURN                     *RETURN 
71 MSG EM(EC,EA) TO LINE 1    *ERROR CODE MESSAGE 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   RETURN                     *RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 76       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
76 MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 21         *NOT SECOND TRY 
   GOTO 55                   *ABNORMAL TERMINATION
77 END 20 
COMPILE    - T7X86 -
   MODULE T7X87,67X(44,54,55,53)LOCK   - INHIBITOR TAPE TEST TWO -
*** T7X87 - INHIBITOR TAPE TEST TWO - 
* 
**  T7X87 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X87 IS DESIGNED TO WRITE TO END OF TAPE, 2K LENGTH
*         RECORDS SAVING THE NUMBER OF WRITE ERROR(S) ON THE INITIAL
*         PASS. 
* 
*         AFTER THE TAPE IS WRITTEN TO END OF TAPE, TAPE IS REWOUND 
*         TO LOAD POINT.
* 
*         TAPE IS AGAIN WRITTEN SAVING THE NUMBER OF WRITE ERROR(S).
*         THE NUMBER OF WRITE ERROR(S) IS COMPARED TO THE INITIAL PASS AND
*         THE TEST IS ABORTED IF SUBSEQUENT PASS ERROR COUNT IS GREATER 
*         THAN TEN OF THE INITIAL PASS. 
* 
*         IF TAPE PASSES THAT CONDITION, TAPE IS REWOUND
*         TO LOAD POINT AND REWRITTEN 200 TIMES.
* 
*   DESCRIPTION - 
* 
* 
*         1. PLACE MESSAGES.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OB WITH RANDOM PATTERN. 
*         5. RESERVE. 
*         6. WRITE. 
*         7. WAIT PARKED. 
*         8. INCR ERROR COUNT IF STATUS ERROR.
*         9. GO TO 5 IF NOT END OF TAPE.
*        10. REWIND.
*        11. SAVE ERROR COUNT IF INITIAL PASS 
*        12. COMPARE CURRENT ERROR COUNT TO INITIAL PASS. 
*        13. GO TO 5 IF DELTA LESS THAN 10
*        14. GO TO STEP 2 IF REPEAT MODULE. 
*        15. EXIT.
* 
*** 
**
* 
* 
*   ERRORS REPORTED - 
* 
*         1. PRODUCT OVERLAY ERRORS 
*         2. T7X87 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. T7X87 - ABORT ON .WRITE. COMMAND - 
*         4. T7X87 - ABORT ON .RES. COMMAND - 
*         5. T7X87 - ABORT ON .REL. COMMAND - 
*         6. T7X87 - ABORT ON .REWIND. COMMAND -
*         7. T7X87 - ABORT ON .WAITNB. COMMAND -
* 
* 
* 
*** T7X87 - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         B0 = PASS COUNT (UPPER) 
*         B1 = PASS COUNT (LOWER) 
*         B2 = CURRENT ERROR COUNT
*         B3 = INITIAL ERROR COUNT
*         B4 =
*         B5 = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR 
*         B6 = LOOP COUNT 
*         B7 = ACTION CODE FOR ERROR ISOLATION
*         BA = ERROR COUNT
* 
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
*         T7X98A - ERROR CODE PROCESSOR 
* 
 1 FORMAT T7X87 - INHIBITOR TAPE TEST TWO - 
 2 FORMAT T7X87 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT T7X87     PASS = *DEC   (DEC) 
 4 FORMAT T7X87      INITIAL ERROR(S)  = *DEC   (DEC) 
 5 FORMAT T7X87      CURRENT ERROR(S)  = *DEC   (DEC) 
 6 FORMAT T7X87 - ABORT ON .WRITE. COMMAND -
 7 FORMAT T7X87 - ABORT ON .RES. COMMAND -
10 FORMAT T7X87 - ABORT ON .REL. COMMAND -
11 FORMAT T7X87 - ABORT ON .REWIND. COMMAND - 
12 FORMAT T7X87 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT T7X87 - ERRS=*DEC LOOPS=*DEC
15 FORMAT T7X87 ERROR(S) IN MODULE = *DEC 
* 
* 
   EQUATE ERROR TO 5034, FILEMK TO 20, EOT TO 10
* 
* 
20 MSG 1 TO DISPLAY,PRINT   *RUNNING MESSAGE
   MSG 1 TO LINE 5          *RUNNING MESSAGE
   B1 = 1 
   MSG 3 (B1) TO LINE 10   *PASS MESSAGE
   MSG 4 (B2) TO LINE 12    *INITIAL PASS ERROR COUNT 
   BA=0                     *CLEAR ERROR COUNTER(S) 
   B2 = 0 
   B3 = 0 
21 B5 =7
   B7 = 0                     *NO MOTION CODE 
   RES P1, ABT 74           *RESERVE
   B5 = 11
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74
   WC = 3720                *REC LENGTH TO 2000D WORDS
   RANDOM TO OB FOR 500 , START RT
* 
* ---------INITIAL WRITE PASS 
* 
30 B2 = 0                    *CLEAR INITIAL ERROR COUNT 
31 B5 = 7 
   RES P1, ABT 74 
   MSG 1 TO LINE 5          *RUNNING MESSAGE
   MSG 3 (B1) TO LINE 10    *PASS MESSAGE 
   MSG 4 (B2) TO LINE 12    *INITIAL PASS ERROR COUNT 
   MSG 5 (B3) TO LINE 14    *CURRENT PASS ERROR COUNT 
   B5 = 6 
   B7 = 1                   *WRITE FORWARD MOTION CODE
   WRITE , ABT 74 
   B5 = 12
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.EOT.NE.0) GOTO 37    *IF END OF TAPE
   IF(SB(1).AND.ERROR.EQ.0) GOTO 31    *NO WRITE ERRORS 
   B2 = B2 + 1               *INCR INITIAL PASS ERROR  COUNT
   GOTO 31                   *LOOP UNTIL END OF TAPE
37 ENDFILE , ABT 74 
* 
* --------REWIND TO LOAD POINT
* 
40 B5 = 7                    *RES COMMAND CODE
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = 11                   *REWIND COMMAND CODE 
   B7 = 3                    *REWIND MOTION CODE
   REWIND,ABT 74
   B3 = 0                    *CLEAR CURRENT ERROR COUNT 
* 
* --------WRITE TO END OF TAPE
* 
41 MSG 1 TO LINE 5          *RUNNING MESSAGE
   MSG 3 (B1) TO LINE 10    *PASS MESSAGE 
   MSG 4 (B2) TO LINE 12    *INITIAL PASS ERROR COUNT 
   MSG 5 (B3) TO LINE 14    *CURRENT PASS ERROR COUNT 
   MSG 5 (B3) TO DISPLAY
42 B5 = 7 
   RES P1, ABT 74 
   B5 = 6 
   B7 = 1                    *WRITE FORWARD MOTION CODE 
   WRITE , ABT 74 
   B5 = 12
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.EOT.NE.0) GOTO 46    *IF END OF TAPE
   IF(SB(1).AND.ERROR.EQ.0) GOTO 42    *NO WRITE ERRORS 
   B3 = B3 + 1               *INCR CURRENT PASS ERROR  COUNT
   GOTO 41                   *LOOP UNTIL END OF TAPE
46 ENDFILE , ABT 74 
   IF(B3.LE.B2) GOTO 47 
   MSG 3 (B1) TO PRINT,DAYFILE
   MSG 4 (B2) TO PRINT,DAYFILE  *INITIAL PASS ERROR COUNT 
   MSG 5 (B3) TO PRINT,DAYFILE  *CURRENT PASS ERROR COUNT 
47 IF(B3-B2.GT.10D) GOTO 50  *CHECK FOR DELTA GREATER THAN 10 
   GOTO 40 WHILE (B1+1.NE.200D)  *DO 200 PASSES 
50 B5 = 10
   REL, ABT 74
   MSG 3 (B1) TO PRINT,DAYFILE
   MSG 4 (B2) TO PRINT,DAYFILE  *INITIAL PASS ERROR COUNT 
   MSG 5 (B3) TO PRINT,DAYFILE  *CURRENT PASS ERROR COUNT 
57 PICTURE AND BLANK        *PRINT CURRENT CONDITIONS 
   GOTO 77
* 
* --------PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *SCOPE LOOP NOT SELECTED
   MSG 14 (BA,B6) TO DISPLAY  *ERROR MESSAGE
   GOTO 21                    *RESTART
75 MSG B5 TO LINE 0           *ERROR CONDITION
   MSG EM TO LINE 1           *PRODUCT OVERLAY ERROR MESSAGE
   IF(DC.EQ.53)CALL 969      *IF 698/CMST SUBSYSTEM 
   IF(DC.EQ.53)GOTO 77       *IF 698/CMST SUBSYSTEM 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
77 END 20 
COMPILE    - T7X87 -
   MODULE T7X93,67X(44,54,55,53)LOCK  READ AND DISPLAY  (67X) 
*** T7X93 - READ AND DISPLAY TRACK ERRORS (67X) 
* 
**  T7X93 - EXTERNAL DOCUMENTATION
*           AUTHORS 
*           KEN AKSMIT AND JOHN STUBER    (BLDASO)
*           DOCUMENTED AND SUBMITTED BY DALE CORNING   (BLDASO) 
* 
* 
*   OVERVIEW -
* 
*          IF THE ASSIGNED DEVICE CODE = 53, T7X93B/C ARE EXECUTED. 
* 
*          THIS MODULE WILL READ A TAPE GENERATED BY MOST ANY SOURCE
*          READING WILL CONTINUE UNTIL EITHER EOT OR PARAMETER P8 
*          IS SATISFIED.  IF P8 = 0 OR 1 T7X93 WILL READ UNTIL AN 
*          DOUBLE END OF FILE IS FOUND.  IF P8 IS GREATER THAN ONE
*          T7X93 WILL LOOK FOR (P8) NUMBER OF DOUBLE END OF FILES.
* 
*          THE ERROR DISPLAY IS SIMILAR TO THAT OF T7X82 WITH THE 
*          ADDITION OF ERROR TRACKS AND DEAD TRACKS REGISTERS.
* 
*    PARAMETERS USED
* 
*          P0 = TAPE SPEED
*          P1 = DRIVE FORMAT
*          P3 = CLIPPING LEVELS 
*          P8 = NUMBER OF DOUBLE EOF'S TO BE READ.
*               P8 IS THE ONLY PARAMETER THAT DOES NOT FOLLOW THE 
*               NORMAL T7X FORMAT.
* 
*          ***NOTE TURNING OFF PRINT LOG WILL REDUCE THE AMOUNT 
*                  OF ERROR OUTPUT WHEN EXECUTED FROM A HARDCOPY
*                  TERMINAL.
  
*    REGISTERS USED-
*          B0 - RECORD COUNTER UPPER
*          B1 - RECORD COUNTER LOWER
*          B2 - ERROR COUNTER UPPER 
*          B3 - ERROR COUNTER LOWER 
*          B4 - TRACK 1 ERRORS
*          B5 - TEMPORARY AND ERROR TRACK REGISTER
*          B6 - NUMBER OF END OF FILES READ 
*          B7 - TEMPORARY AND DEAD TRACK REGISTER 
*          B8 - TRACK 2 ERRORS
*          B9 - TRACK 3 ERRORS
*          B10- TRACK 4 ERRORS
*          B11- TRACK 5 ERRORS
*          B12- TRACK 6 ERRORS
*          B13- TRACK 7 ERRORS
*          B14- TRACK 8 ERRORS
*          B15- TRACK 9 ERRORS
* 
*   MODULES CALLED -
* 
*         T7X93A - ERROR PROCESSING MODULE FOR T7X93
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
/  PARAMETER- P1, P3, P8, AND PRINT LOG SWITCH ARE REFERENCED.
 1 FORMAT T7X93 - READ AND DISPLAY TRACK ERRORS 
 2 FORMAT /////////////// UNIT NOT READY /////////////////
 3 FORMAT T7X93 - ABORT ON .RES. COMMAND -
 4 FORMAT T7X93 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT T7X93 - ABORT ON .READ. COMMAND - 
 6 FORMAT T7X93 - END OF TAPE - 
 7 FORMAT   RECORD WITH ERROR  = *DE*D  (D) 
11 FORMAT        DISPLAY TRACK ERROR RESULTS
12 FORMAT   TOTAL RECORDS --READ-      = *DE*D (D)
13 FORMAT   TOTAL RECORDS WITH ERRORS  = *DE*D (D)
14 FORMAT   TOTAL NUMBER OF ERRORS IN EACH TRACK
30 FORMAT        DENSITY  = *A
40 IF(DC.EQ.53)EXIT TO 93B        *IF 698/CMST SUBSYSTEM
   MSG 1 TO DISPLAY,PRINT          *RUNNING MESSAGE 
   WC = 5004                       *SET WORD COUNT
   B5 = 3 
   B10 = 0
   B11 = 0
   RES P1, ABT 74 
   B5 = 4 
   B7 = 3                          *REWIND MOTION CODE
   REWIND, ABT 74 
   GOTO 73                         *BUILD DISPLAY RTN TO 42 
42 B1 = B1 + 1                     *BUMP RECORD CNTR B0/B1
   IF(B1.LT.100D) GOTO 44          *CHECK LWR REG OVERFLOW
   B1 = 0 
   B0 = B0 + 1
44 B5 = 3 
   RES P1, ABT 74 
   B5 = P3 RS 6                    *SELECT CLIP LVL PARA-P3 
   B5 = B5.AND.3
   MARGINS B5 
   IF(SB(1).AND.1.NE.0) GOTO 45    *CHECK IF UNIT IS READY
   MSG 2 TO LINE 12D
   PAUSE
   GOTO 44                         *RETRY IF UNIT READY 
45 B5 = 5 
   B7 = 5                          *READ MOTION CODE
   READ, ABT 74 
   B7 = 0722B                      *GCR MODE IN ALPHA 
   IF(SB(13).AND.30.EQ.30) GOTO 46   *CHECK IF GCR MODE 
   B7=1632B                        *NRZI MODE IN ALPHA
   IF(SB(13).AND.20.EQ.20) GOTO 46   *CHECK DENSITY BITS
   B7=2005B                        *PE PHASE MODE IN ALPHA
46 MSG 30 (B7) TO LINE 19D
   MSG 12 (B0,B1) TO LINE 3        *UPDATE RECORDS WRITTEN
   IF(SB(1).AND.10B.NE.0) GOTO 76  *IF EOT
   IF(SB(1).AND.20.NE.0) GOTO 75
   B6 = B6.AND.7776B               *SET EOF FLAG BACK TO EVEN 
47 IF(SB(1).AND.4000B.EQ.0) GOTO 42  *GOTO 42 IF NO ALERT BI
   B3 = B3 + 1                     *BUMP ERROR COUNTER B2/B3
   IF(B3.LT.1000D) GOTO 50         *CHECK LWR REG OVERFLOW
   B3 = 0 
   B2 = B2 + 1
50 IF(SB(7).AND.1.EQ.0) GOTO 60    *CHECK VALID TRK 1 
   B4=B4+1                         *UPDATE TRK 1
60 IF(SB(7).AND.2.EQ.0) GOTO 61    *CHECK VALID TRK 2 
   B8=B8+1                         *UPDATE TRK 2
61 IF(SB(7).AND.4.EQ.0) GOTO 62    *CHECK VALID TRK 3 
   B9=B9+1                         *UPDATE TRK 3
62 IF(SB(7).AND.10B.EQ.0) GOTO 63  *CHECK VALID TRK 4 
   B10=B10+1                       *UPDATE TRK 4
63 IF(SB(7).AND.20B.EQ.0) GOTO 64  *CHECK VALID TRK 5 
   B11=B11+1                       *UPDATE TRK 5
64 IF(SB(7).AND.40B.EQ.0) GOTO 65  *CHECK VALID TRK 6 
   B12=B12+1                       *UPDATE TRK 6
65 IF(SB(7).AND.100B.EQ.0) GOTO 66  *CHECK VALID TRK 7
   B13=B13+1                       *UPDATE TRK 7
66 IF(SB(7).AND.200B.EQ.0) GOTO 67  *CHECK VALID TRK 8
   B14=B14+1                       *UPDATE TRK 8
67 IF(SB(7).AND.400B.EQ.0) GOTO 73
   B15=B15+1                       *UPDATE TRK 9
73 MSG 11 TO LINE 1                *BUILD ERROR DISPLAY 
   MSG 12 (B0,B1) TO LINE 3 
   MSG 13 (B2,B3) TO LINE 4 
   MSG 7 (B0,B1) TO LINE 5         *PRINT ERR REC NUMBER
   MSG 14 TO LINE 6 
   CALL 93A                        *BUILD DISPLAY FOR ERRORS
   GOTO 42                         *RESUME TESTING
74 PICTURE AND BLANK               *PRINT CURRENT STATISTICS
   MSG B5 TO LINE 0                *ERROR CONDITION 
   MSG EM TO LINE 1                *PRODUCT OVERLAY ERR MSG 
   CALL 980                  *CALL 67X/ATS STATUS CRACKER 
   MSG 1 TO DISPLAY                *REPOST RUNNING MESSAGE
   GOTO 73                         *REBUILD ERROR DISPLAY 
75 IF(B6.AND.1.EQ.1) GOTO 55
   B6 = B6+1                       *INCREMENT EOF 
   GOTO 42
55 B6 = B6+1                       *INCREMENT EOF 
   IF(B6.RS.1.LT.P8) GOTO 42
76 MSG 6 TO LINE 22D               *DISPLAY EOT 
77 PICTURE                         *PRINT CURRENT STATS 
   END 40 
COMPILE    - T7X93 -
   MODULE T7X93A,67X(44,54,55,53)LOCK   DISPLAY TRACK ERRORS  (67X) 
*** T7X93A - DISPLAY TRACK ERRORS FROM T7X93  (67X) 
* 
**  T7X93A - EXTERNAL DOCUMENTATION 
* 
* 
*   OVERVIEW -
* 
*          THIS MODULE DISPLAYS THE ERRORS BY TRACK ENCOUNTERED 
*          IN MODULE T7X93. 
  
*    REGISTERS USED-
*          B4 - TRACK 1 ERRORS
*          B5 - TEMPORARY AND ERROR TRACK REGISTER
*          B7 - TEMPORARY AND DEAD TRACK REGISTER 
*          B8 - TRACK 2 ERRORS
*          B9 - TRACK 3 ERRORS
*          B10- TRACK 4 ERRORS
*          B11- TRACK 5 ERRORS
*          B12- TRACK 6 ERRORS
*          B13- TRACK 7 ERRORS
*          B14- TRACK 8 ERRORS
*          B15- TRACK 9 ERRORS
* 
*     BUFFERS USED -
*          OB - TEMPORARY STORAGE 
01 FORMAT         TRK *D  = *DEC (D)
02 FORMAT    ERROR TRACKS      DEAD TRACKS
03 FORMAT      987654321        987654321 
04 FORMAT      *OC*OC*OC        *OC*OC*OC 
   DATA (OB(200),CON) 0000,0001,0010,0011 
   DATA (OB(204),CON) 0100,0101,0110,0111 
*----------------SAVE THE REGISTERS---------------------- 
10 OB(1) = B4 
   OB(2) = B8 
   OB(3) = B9 
   OB(4) = B10
   OB(5) = B11
   OB(6) = B12
   OB(7) = B13
   OB(10) = B14 
   OB(11) = B15 
   B5 = 1 
   B7 = 7 
30 MSG 1 (B5,OB(B5)) TO LINE B7   *DISPLAY TRACKS 
   B7 = B7+1
   GOTO 30 WHILE (B5+1.LT.12) 
   B5 = SB(7).AND.777B             *ERROR TRACKS TO B5
   B7 = SB(4).AND.777B             *DEAD TRACKS TO B7 
   B4 = B5.AND.7.XOR.200
   B8 = OB(B4)
   B5 = B5.RS.3 
   B4 = B5.AND.7.XOR.200
   B9 = OB(B4)
   B5 = B5.RS.3 
   B4 = B5.AND.7.XOR.200
   B10 = OB(B4) 
   B4 = B7.AND.7.XOR.200
   B11 = OB(B4) 
   B7 = B7.RS.3 
   B4 = B7.AND.7.XOR.200
   B12 = OB(B4) 
   B7 = B7.RS.3 
   B4 = B7.AND.7.XOR.200
   B13 = OB(B4) 
   MSG 2 TO LINE 16D
   MSG 3 TO LINE 17D
   MSG 4 (B10,B9,B8,B13,B12,B11) TO LINE 18D  *ERROR AND DEAD TRKS
   IF(ES.AND.PL.EQ.0) GOTO 70      *RESUME TESTING IF PRINT LOG OFF 
   IF(SB(1).AND.4000B.EQ.0) GOTO 70  *IF NO ERROR 
   PICTURE
*----------------RESTORE THE REGISTERS----------------------
70 B4 = OB(1) 
   B8 = OB(2) 
   B9 = OB(3) 
   B10 = OB(4)
   B11 = OB(5)
   B12 = OB(6)
   B13 = OB(7)
   B14 = OB(10) 
   B15 = OB(11) 
   EXIT 
   END 10 
COMPILE       -T7X93A-
   MODULE T7X93B,67X(53)LOCK  READ AND DISPLAY TRACK ERRORS (698) 
*** T7X93B - READ AND DISPLAY TRACK ERRORS (698)
* 
**  T7X93B - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
* 
*          THIS MODULE WILL READ A TAPE GENERATED BY MOST ANY SOURCE, 
*          IN PHASE OR GCR MODE WITH ERROR CORRECTION DISABLED. 
* 
*          DATA IS READ WITH P1 MASKED WITH 17B.  RECORDS ARE 
*          READ TO EOF WITH ERROR CORRECTION FORCED DISABLED. 
* 
*          READING WILL CONTINUE UNTIL EITHER EOT OR PARAMETER P8 
*          IS SATISFIED.  IF P8 = 0 OR 1 T7X93B WILL READ UNTIL A 
*          DOUBLE END OF FILE IS FOUND.  IF P8 IS GREATER THAN ONE, 
*          T7X93B WILL LOOK FOR (P8) NUMBER OF DOUBLE END OF FILES. 
* 
*          THIS MODULE WILL TERMINATE ON ONE MODULE DETECTED ERROR
*          OR COMMAND ABORT.
* 
*    PARAMETERS USED
* 
*          P1 = DRIVE FORMAT
*          P8 = NUMBER OF DOUBLE EOF'S TO BE READ.
*               P8 IS THE ONLY PARAMETER THAT DOES NOT FOLLOW THE 
*               NORMAL T7X FORMAT.
* 
*          ***NOTE TURNING OFF PRINT LOG WILL REDUCE THE AMOUNT 
*                  OF ERROR OUTPUT WHEN EXECUTED FROM A HARDCOPY
*                  TERMINAL.
* 
* 
*   DESCRIPTION - 
* 
*         1. RESERVE WITH ERROR CORRECTION DISABLED.
*         2. REWIND.
*         3. POST DISPLAY 
*         4. RESERVE WITH ERROR CORRECTION DISABLED 
*         5. READ FORWARD.
*         6. END TEST IF AT EOT 
*         7. IF FILE MARK STATUS GOTO STEP 11 
*         8. IF ALERT BIT IS SET TEST SENSE BYTES FOR TRACKS IN ERROR 
*         9. UPDATE DISPLAY 
*        10. RETURN TO STEP 4.
*        11. RETURN TO STEP 4 IF FILE MARK COUNT LESS THAN (P8).
*        12. END OF TEST AT FILE MARK.
* 
* 
*   ERRORS REPORTED - 
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. T7X93B - ABORT ON .REWIND. COMMAND - 
*         3. T7X93B - ABORT ON .READ FWD. COMMAND - 
*         4. T7X93B - ABORT ON .RES. COMMAND -
*         5. T7X93B - ABORT ON .STATUS SENSE. COMMAND - 
* 
*         6. EC 123 - TAPE UNIT NOT READY 
*         7. EC 124 - RECORDING MODE NOT PHASE OR GCR 
* 
* 
  
*** T7X93B - INTERNAL DOCUMENTATION 
* 
*    REGISTERS USED-
* 
*          B0 - RECORD COUNTER UPPER
*          B1 - RECORD COUNTER LOWER
*          B2 - ERROR COUNTER UPPER 
*          B3 - ERROR COUNTER LOWER 
*          B4 - TRACK 1 ERRORS
*          B5 - TEMPORARY 
*          B6 - NUMBER OF END OF FILES READ 
*          B7 - TEMPORARY 
*          B8 - TRACK 2 ERRORS
*          B9 - TRACK 3 ERRORS
*          B10- TRACK 4 ERRORS
*          B11- TRACK 5 ERRORS
*          B12- TRACK 6 ERRORS
*          B13- TRACK 7 ERRORS
*          B14- TRACK 8 ERRORS
*          B15- TRACK 9 ERRORS
*          BA - RES PARAMS/ERROR COUNT
* 
*          IB(455) - SENSE BYTE 2 
*          IB(457) - SENSE BYTE 4 
* 
*   MODULES CALLED -
* 
*         T7X93C - ERROR PROCESSING MODULE FOR T7X93B 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
* 
 1 FORMAT T7X93B - READ AND DISPLAY TRACK ERRORS (698)
 2 FORMAT T7X93B   EC 123 TAPE UNIT NOT READY 
 3 FORMAT T7X93B - ABORT ON .RES. COMMAND - 
 4 FORMAT T7X93B - ABORT ON .REWIND. COMMAND -
 5 FORMAT T7X93B - ABORT ON .READ. COMMAND -
 6 FORMAT T7X93B - END OF TAPE -
 7 FORMAT   LAST RECORD WITH ERROR  = *DE*D  (D)
10 FORMAT T7X93B  P8 (*OCT) DOUBLE END OF FILES READ
11 FORMAT        DISPLAY TRACK ERROR RESULTS
12 FORMAT   TOTAL RECORDS --READ--     = *DE*D (D)
13 FORMAT   TOTAL RECORDS WITH ERRORS  = *DE*D (D)
14 FORMAT   TOTAL NUMBER OF ERRORS IN EACH TRACK
15 FORMAT         DENSITY  = GCR
16 FORMAT         DENSITY  = PHASE
17 FORMAT T7X93B  EC 124 RECORDING MODE NOT PHASE OR GCR
20 FORMAT T7X93B - ERRORS IN MODULE=*DEC (D)
21 FORMAT T7X93B - ABORT ON .STATUS SENSE. COMMAND -
* 
25 BA = P1.AND.17 + 2000     *DISABLE ERROR CORRECTION
   MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   WC = 5004                 *SET WORD COUNT
   B5 = 3                    *COMMAND ABORT MSG 
   B7 = 0                    *NO MOTION CODE
   RES BA, ABT 74 
   B5 = 4                    *COMMAND ABORT MSG 
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
   GOTO 73                         *BUILD DISPLAY RTN TO 42 
42 B1 = B1 + 1                     *BUMP RECORD CNTR B0/B1
   IF(B1.LT.100D) GOTO 44          *CHECK LWR REG OVERFLOW
   B1 = 0 
   B0 = B0 + 1
44 B5 = 3 
   B7 = 0                    *NO MOTION CODE
   RES BA, ABT 74 
   IF(SB(1).AND.1.NE.0) GOTO 45    *CHECK IF UNIT IS READY
   ERROR 2/0 GOTO 74
45 B5 = 5 
   B7 = 5                          *READ MOTION CODE
   READ, ABT 74 
   B7 = 15
   IF(SB(11D).AND.30.EQ.30) GOTO 46   *IF GCR MODE
   B7=16
   IF(SB(11D).AND.10.EQ.10) GOTO 46   *IF PHASE MODE
   IF(SB(11D).AND.30.EQ.0) GOTO 46    *IF PHASE MODE
   ERROR 17/0 GOTO 74                *CANNOT DETERMINE MODE 
46 MSG B7 TO LINE 18D 
   MSG 12 (B0,B1) TO LINE 2        *UPDATE RECORDS WRITTEN
   IF(SB(1).AND.10B.NE.0) GOTO 76  *IF EOT
   IF(SB(1).AND.20.NE.0) GOTO 75   *IF FILE MARK
   B6 = B6.AND.7776B         *SET EOF FLAG BACK TO EVEN 
47 IF(SB(1).AND.4000B.EQ.0) GOTO 42  *IF NO ALERT 
   B3 = B3 + 1                     *BUMP ERROR COUNTER B2/B3
   IF(B3.LT.1000D) GOTO 50         *LOWER DIGIT COUNT OK
   B3 = 0 
   B2 = B2 + 1
50 B5 = 21
   STATUS SENSE, ABT 74               *GET SENSE BYTE STATUS
   IF(IB(455).AND.1.EQ.0) GOTO 60     *CHECK TRK IN ERR 1 
   B4=B4+1                            *UPDATE TRK 1 
60 IF(IB(455).AND.2.EQ.0) GOTO 61     *CHECK TRK IN ERR 2 
   B8=B8+1                            *UPDATE TRK 2 
61 IF(IB(455).AND.4.EQ.0) GOTO 62     *CHECK TRK IN ERR 3 
   B9=B9+1                            *UPDATE TRK 3 
62 IF(IB(455).AND.10B.EQ.0) GOTO 63   *CHECK TRK IN ERR 4 
   B10=B10+1                          *UPDATE TRK 4 
63 IF(IB(455).AND.20B.EQ.0) GOTO 64   *CHECK TRK IN ERR 5 
   B11=B11+1                          *UPDATE TRK 5 
64 IF(IB(455).AND.40B.EQ.0) GOTO 65   *CHECK TRK IN ERR 6 
   B12=B12+1                          *UPDATE TRK 6 
65 IF(IB(455).AND.100B.EQ.0) GOTO 66  *CHECK TRK IN ERR 7 
   B13=B13+1                          *UPDATE TRK 7 
66 IF(IB(455).AND.200B.EQ.0) GOTO 67  *CHECK TRK IN ERR 8 
   B14=B14+1                          *UPDATE TRK 8 
67 IF(IB(457).AND.400B.EQ.0) GOTO 73  *CHECK TRK IN ERR 9 
   B15=B15+1                          *UPDATE TRK 9 
73 MSG 11 TO LINE 0                *BUILD ERROR DISPLAY 
   MSG 12 (B0,B1) TO LINE 2 
   MSG 13 (B2,B3) TO LINE 3 
   MSG 7 (B0,B1) TO LINE 4         *PRINT ERR REC NUMBER
   MSG 14 TO LINE 5 
   CALL 93C                        *BUILD DISPLAY FOR ERRORS
   GOTO 42                         *RESUME TESTING
74 PICTURE AND BLANK
   BA = 1 
   IF(EM.LT.100) GOTO 71     *NO DRIVER ERROR 
   MSG B5 TO LINE 0 
71 MSG EM TO LINE 1 
   CALL 969                  *CALL 698/CMTS STATUS CRACKER
   MSG 1 TO DISPLAY                *REPOST RUNNING MESSAGE
   MSG 20 (BA) TO DISPLAY 
   GOTO 70                         *END 
75 IF(B6.AND.1.EQ.1) GOTO 55
   B6 = B6+1                       *INCREMENT EOF 
   GOTO 42
55 B6 = B6+1                       *INCREMENT EOF 
   IF(B6.RS.1.LT.P8) GOTO 42
   B7 = P8
   IF(B7.EQ.0) B7 = 1 
   MSG 10 (B7) TO LINE 19D         *DISPLAY EOF 
   GOTO 77
76 MSG 6 TO LINE 19D               *DISPLAY EOT 
77 PICTURE                         *PRINT CURRENT STATS 
70 END 25 
COMPILE    - T7X93B - 
   MODULE T7X93C,67X(53)LOCK   DISPLAY TRACK ERRORS (698) 
*** T7X93C - DISPLAY TRACK ERRORS FROM T7X93B (698) 
* 
**  T7X93C - EXTERNAL DOCUMENTATION 
* 
* 
*   OVERVIEW -
* 
*          THIS MODULE DISPLAYS THE TRACKS IN ERROR ENCOUNTERED 
*          IN MODULE T7X93B.
* 
*   DESCRIPTION - 
* 
*         1. POST ERROR DISPLAY 
*         2. EXIT 
* 
*   ERRORS REPORTED - N/A 
* 
  
*** T7X93C - INTERNAL DOCUMENTATION 
* 
*    REGISTERS USED-
* 
*          B4 - TRACK 1 ERRORS
*          B5 - TEMPORARY 
*          B7 - TEMPORARY 
*          B8 - TRACK 2 ERRORS
*          B9 - TRACK 3 ERRORS
*          B10- TRACK 4 ERRORS
*          B11- TRACK 5 ERRORS
*          B12- TRACK 6 ERRORS
*          B13- TRACK 7 ERRORS
*          B14- TRACK 8 ERRORS
*          B15- TRACK 9 ERRORS
* 
*     BUFFERS USED -
*          OB - TEMPORARY STORAGE 
01 FORMAT         TRK *D  = *DEC (D)
02 FORMAT          TRACKS IN ERROR
03 FORMAT             987654321 
04 FORMAT             *OC*OC*OC 
   DATA (OB(200),CON) 0000,0001,0010,0011 
   DATA (OB(204),CON) 0100,0101,0110,0111 
*  --------------SAVE THE REGISTERS---------------------- 
10 OB(1) = B4 
   OB(2) = B8 
   OB(3) = B9 
   OB(4) = B10
   OB(5) = B11
   OB(6) = B12
   OB(7) = B13
   OB(10) = B14 
   OB(11) = B15 
   B5 = 1 
   B7 = 6 
30 MSG 1 (B5,OB(B5)) TO LINE B7   *DISPLAY TRACKS 
   B7 = B7+1
   GOTO 30 WHILE (B5+1.LT.12) 
   B5 = 0                          *B5 = 0 ERROR TRACKS 
   IB(457) = IB(457).AND.400   *MASK PARITY TRACK IN ERROR
   IB(455) = IB(455) + IB(457)     *SET TRACKS IN ERROR 
   B7 = IB(455).AND.777B           *TRACKS IN ERROR TO B7 
   B4 = B7.AND.7.XOR.200
   B11 = OB(B4) 
   B7 = B7.RS.3 
   B4 = B7.AND.7.XOR.200
   B12 = OB(B4) 
   B7 = B7.RS.3 
   B4 = B7.AND.7.XOR.200
   B13 = OB(B4) 
   MSG 2 TO LINE 15D
   MSG 3 TO LINE 16D
   MSG 4 (B13,B12,B11) TO LINE 17D  *ERROR AND DEAD TRKS
   IF(ES.AND.PL.EQ.0) GOTO 70      *RESUME TESTING
   IF(SB(1).AND.4000B.EQ.0) GOTO 70  *IF NO ALERT 
   PICTURE
*  --------------RESTORE THE REGISTERS----------------------
70 B4 = OB(1) 
   B8 = OB(2) 
   B9 = OB(3) 
   B10 = OB(4)
   B11 = OB(5)
   B12 = OB(6)
   B13 = OB(7)
   B14 = OB(10) 
   B15 = OB(11) 
   EXIT 
   END 10 
COMPILE       -T7X93C-
   MODULE T7X98A,67X(44,54,55,53)LOCK  - ERROR CODE PROCESSING -
*** T7X98A-T7X98G - ERROR CODE PROCESSING 
* 
**  T7X98A-T7X98G - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         MODULE T7X98A CAN BE CALLED BY ANY TEST MODULE THAT 
*         MAKES UP T7X.  T7X98A WILL ANALYZE THE CONTENTS OF
*         THE ERROR CODE REGISTER (EC) AND WILL POST THE
*         APPROPORITE MESSAGE(S) THAT DESCRIBE THE ERROR CODE.
*         AN EXIT IS THEN MADE TO T7X970 OR T7X980 TO PERFORM 
*         STATUS ANALYSIS AND TO PRESENT A COMPOSITE PICTURE OF 
*         THE FAILURE TO THE USER.
* 
*         T7X98A WILL ANALYZE THE ERROR CODE AND PROCESS THE
*         CODE DIRECTLY, OR EXIT TO A SPECIFIC MODULE THAT CAN
*         PROCESS THE CODE.  THE FOLLOWING DOCUMENTS WHICH
*         MODULE PROCESSES WHICH CODES. 
* 
*           T7X98A -  ERROR CODES 105 - 207 
*           T7X98B -  ERROR CODES 210 - 222 
*           T7X98C -  ERROR CODES 223 - 241 
*           T7X98D -  ERROR CODES 242 - 254 
*           T7X98E -  ERROR CODES 255 - 267 
*           T7X98F -  ERROR CODES 270 - 277 
*           T7X98G -  ERROR CODES 060 - 067 
* 
*** T7X98A-T7X98G - INTERNAL DOCUMENTATION
* 
*   REGISTER USAGE -
* 
*         NOTE   BEFORE ANY REGISTERS ARE USED, T7X98A SAVES
*                REGISTERS B0-B7 AND BA IN THE INPUT BUFFER 
*                WORDS 467-477.  B7 IS THEN SET TO 7777 TO
*                FLAG T7X970980 THAT IT IS BEING ENTERED FROM 
*                T7X98A-T7X98G (B7 NORMALLY CONTAINS THE ACTION 
*                CODE FOR ERROR ISOLATION, AND 7777 IS AN ILLEGAL 
*                ACTION CODE).  THE REGISTERS WILL ALWAYS BE
*                RESTORED BY THE T7X980 SEQUENCE BEFORE RETURNING 
*                TO THE FAILING MODULE. 
* 
*         B4 = START OF FORMAT STATEMENT NUMBERS FOR EC 
*         B5 = NUMBER OF FORMAT STATEMENTS FOR EC TO BE PROCESSED 
*         B6 = DISPLAY LINE NUMBER
* 
*   MODULES CALLED -
* 
*         T7X969 - 698/CMTS STATUS ANALYSIS MODULE
*         T7X980 - 67X/ATS STATUS ANALYSIS MODULE 
* 
* 
/ 
 1 FORMAT EC 105-DATA COMPARE ERROR.THE FIRST 400B WORDS (OR
 2 FORMAT THE RECORD LENGTH IN -P2-), THAT WERE TRANSFERRED 
 3 FORMAT DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE
 4 FORMAT REPORTED. (SEE NOTE ON CONVERSION, -T7X98A-)
/ 
/                           --- NOTE ---
/ 
/   IF RUNNING CONVERSION MODE, EC 105,211,212,213 AND 232
/   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   T7X 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 WRITE OPERATION.
11 FORMAT NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B. 
/ 
12 FORMAT EC 202-A STATUS ERROR OCCURRED ON A REVERSE READ. 
13 FORMAT THE INPUT BUFFER CONTAINS THE DATA JUST READ. 
/ 
14 FORMAT EC 203- ALERT BIT IN GENERAL STATUS WAS SET DURING
15 FORMAT A READ FORWARD OPERATION. 
16 FORMAT THE INPUT BUFFER CONTAINS THE DATA JUST READ. 
/ 
17 FORMAT EC 207-A FM/TM WAS DETECTED OUT OF EXPECTED 
20 FORMAT POSTION ON A READ OPERATION.  FOR THIS ERROR TO 
21 FORMAT BE REPORTED, P4 = 4XXX MUST BE SET. 
/ 
22 FORMAT EC 204- ANY CORRECTOR FLAGS (WORD 3) ON T7X83A OR 
23 FORMAT ANY BITS SET IN POINTERS (WORD 7) IN T7X85A.
24 FORMAT THE INPUT BUFFER CONTAINS THE DATA JUST READ. 
/ 
31 FORMAT --T7X98A .... UNDEFINED ERROR CODE .... 
/ 
40 IB(467) = BA              *SAVE REGISTERS
   IB(470) = B0 
   IB(471) = B1 
   IB(472) = B2 
   IB(473) = B3 
   IB(474) = B4 
   IB(475) = B5 
   IB(476) = B6 
   IB(477) = B7 
   B7 = 7777                 *SET FLAG FOR T7X970/980 
   B6 = 2                     *LINE NUMBER
   IF(EC.LE.207) GOTO 50      *0 - 207
   IF(EC.GT.222)GOTO 41 
   EXIT TO 98B               *210 - 222 
41 IF(EC.GT.241)GOTO 42 
   EXIT TO 98C               *223 - 241 
42 IF(EC.GT.254)GOTO 43 
   EXIT TO 98D               *242 - 254 
43 IF(EC.GT.267)GOTO 44 
   EXIT TO 98E               *255 - 267 
44 IF(EC.GT.277)GOTO 45 
   EXIT TO 98F               *270 - 277 
/ 
45 B5 = 131                  *ILLEGAL ERROR CODE
   GOTO 60
/ 
50 IF(EC.LT.60) GOTO 51 
   IF(EC.GT.67) GOTO 51 
   EXIT TO 98G                      *060 - 067
51 B5 = 401 
   IF(EC.EQ.105) GOTO 60
   B5 = 205 
   IF(EC.EQ.122) GOTO 60
   B5 = 307 
   IF(EC.EQ.200) GOTO 60
   B5 = 212 
   IF(EC.EQ.202) GOTO 60
   B5 = 314 
   IF(EC.EQ.203) GOTO 60
   B5 = 317 
   IF(EC.EQ.207) GOTO 60
   B5 = 322 
   IF(EC.EQ.204) GOTO 60
   B5 = 131                  *ILLEGAL ERROR CODE
/ 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1               *BUMP FORMAT NUMBER
   B6 = B6 + 1               *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)           *DO ALL LINES
   IF(DC.EQ.53)EXIT TO 969   *PROCESS 698/CMST STATUS 
   EXIT TO 980               *GO PROCESS 67X/ATS STATUS 
76 END 40 
COMPILE   - T7X98A -
   MODULE T7X98B,67X(44,54,55,53)LOCK  - ERROR CODE PROCESSING -
*   TEXT FOR ERROR CODES  210 - 222 
/ 
 1 FORMAT EC 211-INCORRECT FILE DETECTED DURING A RANDOM
 2 FORMAT READ. (SEE NOTE IN -T7X98B- DOCUMENTATION)
/ 
 3 FORMAT EC 212-INCORRECT RECORD HAS BEEN DETECTED DURING A
 4 FORMAT RANDOM READ. (SEE NOTE IN -T7X98B-) 
/ 
 5 FORMAT EC 213-INCORRECT RECORD LENGTH HAS BEEN DETECTED
 6 FORMAT DURING A RANDOM READ. -SEE NOTE IN T7X98B - 
/ 
/                           --- NOTE ---
/ 
/                FOR ERRORS 211, 212 AND 213 SEE NOTE UNDER 
/                ERROR 105 REGARDING CONVERSION MODE. 
/ 
/ 
/ 
 7 FORMAT EC 215-THE WRITE AND READ POLYNOMIALS HAVE FAILED 
10 FORMAT TO COMPARE DURING THE -CANNED POLYNOMIAL TEST-. 
11 FORMAT B3= EXPECTED, SB(2)= ACTUAL, B4= DATA STARTER.
/ 
12 FORMAT EC 217 -ALERT IS SET AFTER A CONTROLLED BACKSPACE.
/ 
13 FORMAT EC 220-A STATUS ERROR OCCURRED ON THE READ BACK-
14 FORMAT WARDS FOLLOWING A CONTROLLED BACKSPACE OPERATION. 
/ 
15 FORMAT EC 221-AN INCORRECT RECORD HAS BEEN DETECTED
16 FORMAT FOLLOWING A CONTROLLED BACKSPACE.  B1 (CURRENT
17 FORMAT RECORD) WILL CONTAIN THE ACTUAL RECORD DETECTED.
/ 
20 FORMAT EC 222-IMPROPER RECORD LENGTH WAS DETECTED ON A 
21 FORMAT REVERSE READ FOLLOWING A CONTROLLED BACKSPACE.
22 FORMAT SEE WORD COUNT (WC) AND WORDS TRANSMITTED (WT). 
/ 
/ 
31 FORMAT --T7X98B .... UNDEFINED ERROR CODE .... 
/ 
50 B5 = 201 
   IF(EC.EQ.211) GOTO 60
   B5 = 203 
   IF(EC.EQ.212) GOTO 60
   B5 = 205 
   IF(EC.EQ.213) GOTO 60
   B5 = 307 
   IF(EC.EQ.215) GOTO 60
   B5 = 112 
   IF(EC.EQ.217) GOTO 60
   B5 = 213 
   IF(EC.EQ.220) GOTO 60
   B5 = 315 
   IF(EC.EQ.221) GOTO 60
   B5 = 320 
   IF(EC.EQ.222) GOTO 60
   B5 = 131                  *ILLEGAL ERROR CODE
/ 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1               *BUMP FORMAT NUMBER
   B6 = B6 + 1               *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)           *DO ALL LINES
   IF(DC.EQ.53)EXIT TO 969   *PROCESS 698/CMST STATUS 
   EXIT TO 980               *GO PROCESS 67X/ATS STATUS 
   END 50 
COMPILE   - T7X98B -
   MODULE T7X98C,67X(44,54,55,53)LOCK  - ERROR CODE PROCESSING -
*   TEXT FOR ERROR CODES  223 - 241 
/ 
 1 FORMAT EC 226-ERROR HAS OCCURRED DURING A READ FORWARD 
 2 FORMAT OPERATION IN THE -TAPE PATH DAMAGE- TEST. 
/ 
 3 FORMAT EC 227-ERROR HAS OCCURRED DURING A READ REVERSE 
 4 FORMAT OPERATION IN THE -TAPE PATH DAMAGE- TEST. 
/ 
 7 FORMAT EC 232-THE RECORD COUNT IS IN ERROR DURING A -READ
10 FORMAT FWD- IN THE POLYNOMIAL TEST. (SEE NOTE IN T7X98B) 
/ 
11 FORMAT EC 233-THE RECORD LENGTH IS IN ERROR DURING A 
12 FORMAT -READ FORWARD- IN THE POLYNOMIAL SUBTEST. 
/ 
13 FORMAT EC 234-THE WRITE POLYNOMIAL AND READ POLYNOMIAL 
14 FORMAT HAVE FAILED TO COMPARE DURING THE -POLYNOMIAL 
15 FORMAT TEST- B4= WRITE POLYNOMIAL, SB(2)= READ POLYNOMIAL. 
/ 
16 FORMAT EC 240-AN ABNORMAL STATUS WAS DETECTED DURING A 
17 FORMAT -CONTROLLED BACKSPACE- IN THE -POSITION- SUBTEST. 
/ 
20 FORMAT EC 241-AN ABNORMAL STATUS WAS DETECTED DURING A 
21 FORMAT -BACKSPACE- IN THE -POSITION- SUBTEST.
/ 
23 FORMAT EC 236- THE BLOCK IDS OF THE FIRST RECORD  AND THE
24 FORMAT CURRENT  RECORD HAVE FAILED TO COMPARE DURING  THE
25 FORMAT -BLOCK ID TEST-. B8= FIRST RECORD BLOCK ID. SB(2)=
26 FORMAT CURRENT RECORD BLOCK ID.   IF ALL OTHER MODULES OF
27 FORMAT T7X RUN SUCCESSFULLY -REPLACE THE FOLLOWING PWA IN
30 FORMAT THE CCC- A02/B02 IN FR205A OR A02/A16 IN FR205B.
/ 
31 FORMAT --T7X98C .... UNDEFINED ERROR CODE .... 
/ 
50 B5 = 201 
   IF(EC.EQ.226) GOTO 60
   B5 = 203 
   IF(EC.EQ.227) GOTO 60
   B5 = 207 
   IF(EC.EQ.232) GOTO 60
   B5 = 211 
   IF(EC.EQ.233) GOTO 60
   B5 = 313 
   IF(EC.EQ.234) GOTO 60
   B5 = 623 
   IF(EC.EQ.236) GOTO 60
   B5 = 216 
   IF(EC.EQ.240) GOTO 60
   B5 = 220 
   IF(EC.EQ.241) GOTO 60
   B5 = 131 
/ 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1               *BUMP FORMAT NUMBER
   B6 = B6 + 1               *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)           *DO ALL LINES
   IF(DC.EQ.53)EXIT TO 969   *PROCESS 698/CMST STATUS 
   EXIT TO 980               *GO PROCESS 67X/ATS STATUS 
   END 50 
COMPILE   - T7X98C -
   MODULE T7X98D,67X(44,54,55,53)LOCK  - ERROR CODE PROCESSING -
*   TEXT FOR ERROR CODES  242 - 254 
/ 
 1 FORMAT EC 242-AN ABNORMAL STATUS WAS DETECTED DURING A 
 2 FORMAT -READ FORWARD- IN THE -POSITION- TEST.
/ 
 3 FORMAT EC 243-A COMPARE ERROR HAS OCCURED WHEN THE WRITE 
 4 FORMAT AND READ POLYNOMIALS WERE COMPARED FOR RECORDS
 5 FORMAT 1, 2 OR 3 IN THE -POSITION- TEST. 
/ 
 6 FORMAT EC 244-AN ABNORMAL STATUS WAS DETECTED DURING THE 
 7 FORMAT -FORESPACE- OVER RECORD 6 IN THE -POSITION- TEST. 
/ 
10 FORMAT EC 245-THE READ POLYNOMIAL AND WRITE POLYNOMIAL 
11 FORMAT FOR RECORD 6 HAVE FAILED TO COMPARE IN THE
12 FORMAT -POSITION TEST. B6=EXPECTED  SB(2)=ACTUAL.
/ 
13 FORMAT EC 246-AN ALERT STATUS OCCURRED AFTER AN ERASE. 
/ 
14 FORMAT EC 251-FILE MARK STATUS IS MISSING AT END-OF-OP 
15 FORMAT DURING A READ FILE MARK REVERSE.
/ 
16 FORMAT EC 252-FILE MARK STATUS IS MISSING AT END-OF-OP 
17 FORMAT DURING A READ FILE MARK FORWARD.
/ 
20 FORMAT EC 253-A STATUS ERROR OCCURRED ON A BACKSPACE.
/ 
21 FORMAT EC 254-THE ALERT BIT WAS SET IN GENERAL STATUS
22 FORMAT FOLLOWING THE FIRST READ REVERSE AFTER A BACKSPACE
23 FORMAT 0PERATION. STATUS IS MASKED WITH 5034B. 
/ 
31 FORMAT --T7X98D .... UNDEFINED ERROR CODE .... 
50 B5 = 201 
   IF(EC.EQ.242) GOTO 60
   B5 = 303 
   IF(EC.EQ.243) GOTO 60
   B5 = 206 
   IF(EC.EQ.244) GOTO 60
   B5 = 310 
   IF(EC.EQ.245) GOTO 60
   B5 = 113 
   IF(EC.EQ.246) GOTO 60
   B5 = 214 
   IF(EC.EQ.251) GOTO 60
   B5 = 216 
   IF(EC.EQ.252) GOTO 60
   B5 = 120 
   IF(EC.EQ.253) GOTO 60
   B5 = 321 
   IF(EC.EQ.254) GOTO 60
   B5 = 131                   *ILLEGAL ERROR CODE 
/ 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1               *BUMP FORMAT NUMBER
   B6 = B6 + 1               *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)           *DO ALL LINES
   IF(DC.EQ.53)EXIT TO 969   *PROCESS 698/CMST STATUS 
   EXIT TO 980               *GO PROCESS 67X/ATS STATUS 
   END 50 
COMPILE   - T7X98D -
   MODULE T7X98E,67X(44,54,55,53)LOCK  - ERROR CODE PROCESSING -
*   TEXT FOR ERROR CODES  255 - 267 
/ 
 1 FORMAT EC 255-AN INCORRECT RECORD LENGTH WAS DETECTED
 2 FORMAT ON A REVERSE READ FOLLOWING A BACKSPACE OPERATION.
/ 
 3 FORMAT EC 256-AN INCORRECT RECORD WAS DETECTED ON A READ 
 4 FORMAT REVERSE FOLLOWING A BACKSPACE.  (INPUT
 5 FORMAT BUFFER) WILL CONTAIN THE ACTUAL RECORD DETECTED.
/ 
 6 FORMAT EC 263-THE ALERT BIT WAS SET IN GENERAL STATUS
 7 FORMAT FOLLOWING THE READ REVERSE OF RECORD 100 IN 
10 FORMAT THE -CREEP- TEST. 
/ 
11 FORMAT EC 264-RECORD 100 LENGTH DOES NOT EQUAL 5000B.
/ 
12 FORMAT EC 267-THE NUMBER OF RECORDS WRITTEN AND THE NUM- 
13 FORMAT BER OF RECORDS READ IN REVERSE DO NOT COMPARE. THE
14 FORMAT CONTENTS OF B0 AND B1 SHOULD BE ZERO (0) BUT ARE
15 FORMAT NOT.THE PLUS OR MINUS VALUE OF THE COUNTS RECORDED
16 FORMAT IN B0 AND B1 AT LOAD POINT, (AFTER THE READ RE- 
17 FORMAT VERSE), ARE EQUAL TO THE NUMBER OF RECORDS MISSED 
20 FORMAT OR PICKED UP. 
/ 
31 FORMAT --T7X98E ....UNDEFINED ERROR CODE ....
/ 
50 B5 = 201 
   IF(EC.EQ.255) GOTO 60
   B5 = 303 
   IF(EC.EQ.256) GOTO 60
   B5 = 306 
   IF(EC.EQ.263) GOTO 60
   B5 = 111 
   IF(EC.EQ.264) GOTO 60
   B5 = 712 
   IF(EC.EQ.267) GOTO 60
   B5 = 131                   *ILLEGAL ERROR CODE 
/ 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1               *BUMP FORMAT NUMBER
   B6 = B6 + 1               *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)           *DO ALL LINES
   IF(DC.EQ.53)EXIT TO 969   *PROCESS 698/CMST STATUS 
   EXIT TO 980               *GO PROCESS 67X/ATS STATUS 
   END 50 
COMPILE   - T7X98E -
   MODULE T7X98F,67X(44,54,55,53)LOCK  - ERROR CODE PROCESSING -
*   TEXT FOR ERROR CODES  270 - 277 
/ 
 1 FORMAT EC 270-THE TRACK SPECIFIED IN B1 FAILED TO BE 
 2 FORMAT CORRECTED ON-THE-FLY IN PHASE OR GCR READ MODE. 
/ 
 3 FORMAT EC 271-THE TRACK SPECIFIED IN B1 WAS CORRECTED ON-
 4 FORMAT THE FLY IN NRZI. IT SHOULD HAVE REQUIRED A REREAD.
/ 
 5 FORMAT EC 272-THE TRACK SPECIFIED IN B1 FAILED TO BE 
 6 FORMAT CORRECTED WITH A RE-READ IN NRZI MODE.
/ 
 7 FORMAT EC 273-THE TRACKS SPECIFIED IN B2 FAILED TO BE
10 FORMAT CORRECTED ON-THE-FLY IN GCR READ MODE.
/ 
11 FORMAT EC 274-ALERT WAS SET FOLLOWING A READ FORWARD AT
12 FORMAT THE READ CLIP LEVEL SELECTED IN REGISTER B2.
/ 
13 FORMAT EC 275-ALERT WAS SET FOLLOWING A READ REVERSE AT
14 FORMAT THE READ CLIP LEVEL SELECTED IN REGISTER B2.
/ 
15 FORMAT EC 276-SINGLE FRAME SKEW ERROR ON A WRITE 
/ 
16 FORMAT EC 277-SINGLE FRAME SKEW ERROR ON A READ FWD
/ 
31 FORMAT --T7X98F ....UNDEFINED ERROR CODE ....
/ 
50 B5 = 201 
   IF(EC.EQ.270) GOTO 60
   B5 = 203 
   IF(EC.EQ.271) GOTO 60
   B5 = 205 
   IF(EC.EQ.272) GOTO 60
   B5 = 207 
   IF(EC.EQ.273) GOTO 60
   B5 = 211 
   IF(EC.EQ.274) GOTO 60
   B5 = 213 
   IF(EC.EQ.275) GOTO 60
   B5 = 115 
   IF(EC.EQ.276) GOTO 60
   B5 = 116 
   IF(EC.EQ.277) GOTO 60
   B5 = 131                  *ILLEGAL ERROR CODE
/ 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1               *BUMP FORMAT NUMBER
   B6 = B6 + 1               *BUMP LINE NUMBER
   GOTO 61 WHILE(B5-1.NE.0)  *DO ALL LINES
   IF(DC.EQ.53)EXIT TO 969   *PROCESS 698/CMST STATUS 
   EXIT TO 980               *GO PROCESS 67X/ATS STATUS 
   END 50 
COMPILE   - T7X98F -
   MODULE T7X98G,67X(44,54,55,53)LOCK  - ERROR CODE PROCESSING -
*   TEXT FOR ERROR CODES  060 - 067 
/ 
 1 FORMAT EC 060-EOT DETECTED BEFORE DETECTING EOF, EITHER
 2 FORMAT        UNIT CANNOT DETECT EOF OR TAPE NOT WRITTEN 
 3 FORMAT        BY CORRECT T7X MODULE...CHECK PARAMETERS.. 
 4 FORMAT 
/ 
/ 
31 FORMAT --T7X98G .... UNDEFINED ERROR CODE .... 
/ 
50 B5 = 401 
   IF(EC.EQ.060) GOTO 70
   B5 = 131                  *ILLEGAL ERROR CODE
/ 
70 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *NUMBER OF LINES IN MESSAGE
71 MSG B4 TO LINE B6
   B4 = B4 + 1               *BUMP FORMAT NUMBER
   B6 = B6 + 1               *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)           *DO ALL LINES
   IF(DC.EQ.53)EXIT TO 969   *PROCESS 698/CMST STATUS 
   EXIT TO 980               *GO PROCESS 67X/ATS STATUS 
   END 50 
COMPILE   - T7X98G -
   MODULE T7X969,67X(53)LOCK  - 698/CMST STATUS ANALYSIS -
*** T7X969-T7X977, T7X990-T7X997 - 698/CMST STATUS ANALYSIS 
* 
**  T7X969-T7X977, T7X990-T7X997 - 698/CMST STATUS ANALYSIS 
* 
*   OVERVIEW -
* 
*        T7X969 CAN BE ENTERED FROM ANY 698/CMST TEST MODULE THAT MAKES 
*        UP T7X, OR FROM MODULES T7X98A - T7X98G (ERROR CODE PROCESSING 
*        MODULES. T7X969 WILL SAVE THE BA, AND B REGISTERS, AND MOVE
*        DEVICE STATUS TO IB. 
*        T7X969 ASSUMES THAT THE STATUS BUFFER CONTAINS CURRENT STATUS
*        FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
* 
20 IF(B7.EQ.7777) GOTO 26     *IF ENTERED FROM T7X98A-G 
   IB(427B) = BA
   IB(430B) = B0              *SAVE REGISTERS 
   IB(431B) = B1
   IB(432B) = B2
   IB(433B) = B3
   IB(434B) = B4
   IB(435B) = B5
   IB(436B) = B6
   IB(437B) = B7
   IB(440B) = B8              *SAVE REGISTERS 
   IB(441B) = B9
   IB(442B) = B10 
   IB(443B) = B11 
   IB(444B) = B12 
   IB(445B) = B13 
   IB(446B) = B14 
   IB(447B) = B15 
   GOTO 27                    *EXIT 
26 IB(427) = IB(467)          *MOVE SAVED BA
   IB(430) = IB(470)          *MOVE SAVED B0
   IB(431) = IB(471)          *MOVE SAVED B1
   IB(432) = IB(472)          *MOVE SAVED B2
   IB(433) = IB(473)          *MOVE SAVED B3
   IB(434) = IB(474)          *MOVE SAVED B4
   IB(435) = IB(475)          *MOVE SAVED B5
   IB(436) = IB(476)          *MOVE SAVED B6
   IB(437) = IB(477)          *MOVE SAVED B7
   IB(440B) = B8              *SAVE REGISTERS 
   IB(441B) = B9
   IB(442B) = B10 
   IB(443B) = B11 
   IB(444B) = B12 
   IB(445B) = B13 
   IB(446B) = B14 
   IB(447B) = B15 
27 COPY SB(1) TO IB(401B) FOR 20B  *MOVE STATUS TO IB 
   EXIT TO 970                *STATUS ANALYZER
   END 20 
COMPILE   - T7X969 -
   MODULE T7X970,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
*** T7X970 - 698/CMST STATUS ANALYSIS 
* 
**  T7X970 EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*        T7X970 IS ENTERED FROM T7X969 AND WILL RES, STATUS SENSE, AND
*        REL TO ACQUIRE THE TAPE SUBSYSTEM SENSE BYTE STATUS. 
*        T7X970 ASSUMES THAT THE STATUS BUFFER HAS BEEN MOVED TO IB AND 
*        THAT STATUS IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
*        THE FOLLOWING SB LOCATIONS RELATE TO THE LISTED IB LOCATIONS-
* 
*        SB(1)  =  IB(401B) 
*        SB(2)  =  IB(402B) 
*        SB(3)  =  IB(403B) 
*        SB(4)  =  IB(404B) 
*        SB(5)  =  IB(405B) 
*        SB(6)  =  IB(406B) 
*        SB(7)  =  IB(407B) 
*        SB(8)  =  IB(410B) 
*        SB(9)  =  IB(411B) 
*        SB(10) =  IB(412B) 
*        SB(11) =  IB(413B) 
*        SB(12) =  IB(414B) 
*        SB(13) =  IB(415B) 
*        SB(14) =  IB(416B) 
*        SB(15) =  IB(417B) 
*        SB(16) =  IB(420B) 
* 
*        IT  ALSO  ASSUMES  THAT  REGISTER  B7 CONTAINS THE CURRENT 
*        CODE DESCRIBING WHAT TEST ACTION WAS IN  PROGRESS AT THE TIME
*        OF THE FAILURE.  A BREAKDOWN OF BIT MEANINGS IN B7 IS AS 
*        FOLLOWS -
* 
*          0XXX = MODE (NRZI,PHASE,GCR) IS IN P1 REGISTER 
*          1XXX = MODE IS NRZI
*          2XXX = MODE IS PHASE 
*          4XXX = MODE IS GCR 
* 
*          X1XX = IGNORE CAPSTAN SLIP STATUS
*          X2XX = IGNORE EARLY READ AFTER WRITE EOP STATUS
*          X3XX = IGNORE CAPSTAN SLIP AND EARLY EOP STATUS
*          X4XX = IGNORE DATA INTEGRITY STATUS
*          X5XX = IGNORE CAPSTAN SLIP AND DATA INTEGRITY STATUS 
*          X6XX = IGNORE EARLY EOP AND DATA INTEGRITY STATUS
*          X7XX = IGNORE CAPSTAN SLIP, EARLY EOP AND DATA INTEGRITY.
* 
*          XX0X = NO LOOPBACK OPTIONS ACTIVE
*          XX1X = UNIT LOOPBACK OPTION ACTIVE 
*          XX2X = FSC LOOPBACK OPTION ACTIVE
* 
*          XXX0 = NO MOTION 
*          XXX1 = FWD WRITE MOTION
*          XXX2 = NOT USED
*          XXX3 = REWIND MOTION 
*          XXX4 = NO MOTION (NOT USED)
*          XXX5 = FWD READ MOTION 
*          XXX6 = REV READ MOTION 
*          XXX7 = REWIND (NOT USED) 
* 
* 
*** 
**
*        T7X970 WILL  ADD  9  LINES  OF INFORMATION TO THE PP DISPLAY 
*        CONCERNING REGISTER AND BUFFER CONTENTS AT THE  TIME  OF  THE
*        CURRENT FAILURE.  IT WILL THEN START A SYSTEMATIC ANALYSIS OF
*        THE STATUS BUFFER TO DETERMINE THE MOST  SERIOUS  ERROR  THAT
*        EXISTS.   EXITS WILL BE MADE TO OTHER SUBMODULES TO ASSIST IN
*        THIS ANALYSIS BASED ON THE CURRENT CODE IN  REGISTER  B7  AND
*        WHAT  STATUS  EXISTS  IN  THE  STATUS  BUFFER.  THE FOLLOWING
*        BREAKDOWN  DOCUMENTS  THE  PRIMARY  PURPOSE  OF  EACH  STATUS
*        ANALYSIS MODULE. 
* 
* 
*          T7X969 - SAVE REGISTERS AND MOVE SB
*          T7X970 - UNIT FAILURE ANALYSIS 
*          T7X971 - UNIT FAILURE ANALYSIS 
*          T7X972 - ADAPTER LOOPBACK ANALYSIS 
*          T7X973 - ADAPTER PARITY ANALYSIS 
*          T7X974 - CORRECTABLE ERROR ANALYSIS
*          T7X975 - DETAILED STATUS ERROR ANALYSIS
*          T7X976 - DETAILED STATUS ERROR ANALYSIS
*          T7X977 - DETAILED STATUS ERROR ANALYSIS
*          T7X990 - T7X997 ADAPTER LOOPBACK ANALYSIS
* 
* 
*        WHEN THE ANALYSIS IS COMPLETE,MODULE T7X975, T7X976 OR T7X977
*        WILL  TAKE A PICTURE OF THE FAILURE DATA AND HALT (IF STOP ON
*        ERROR IS SELECTED). AFTER A -GO- FROM THE USER,  A  CHECK  IS
*        MADE  TO  INSURE THAT THE ADAPTER IS FUNCTIONAL (RESERVE) AND
*        IF NOT, A RESET COMMAND  IS  EXECUTED  TO  MASTER  CLEAR  THE
*        ADAPTER.   REGISTERS  ARE RESTORED AND CONTROL IS RETURNED TO
*        THE MODULE THAT DETECTED  THE  FAILURE.   (NOTE  THAT  BEFORE
*        RETURNING,  THE  DISPLAY  IS BLANKED TO ERASE THE INFORMATION
*        CONCERNING THE FAILURE). 
* 
* 
* 
* 
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
   BASE DECIMAL 
1  FORMAT CH=*OCT EQ=*OCT UN=*OCT DC=*OCT 
2  FORMAT LF=*OCT LSF=*OCT WC=*OCT WT=*OCT
 3 FORMAT   FILE=*OCT  RECORD=*OCT     ERROR COUNT=*OCT 
 4 FORMAT   SB(1-8) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 5 FORMAT   SB(9-16)=*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
12 FORMAT   GENERAL STATUS =*OCTB 
16 FORMAT   SENSE BYTE STATUS IN HEX
17 FORMAT   *D-*D =*H  *H  *H  *H  *H  *H 
24 FORMAT   DS WORD(17-20)D=*OCTB *OCTB *OCTB *OCTB 
 6 FORMAT   OB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 7 FORMAT   IB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 8 FORMAT   B0-B7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
15 FORMAT   B8-B15  =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 9 FORMAT   P0-P7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
10 FORMAT   EC 0400 TCU-DETECTED I/O CHANNEL PARITY ERROR 
11 FORMAT   EC 0300 TAPE UNIT NOT CONNECTED - SHOULD BE 
13 FORMAT   EC 0362 TAPE UNIT NOT READY FOR LOOPBACK
14 FORMAT   EC 0302 TAPE UNIT LAMP FAILURE
21 FORMAT   P8-P9   =*OCT *OCT
22 FORMAT              DATA ERROR(S)
23 FORMAT   ERR.. WD=*OCT  AC=*OCT  EX=*OCT  DIFF=*OCT
18 FORMAT   EC 0401  ADAPTER PARITY ERROR 
* 
25 IF(B7.NE.7777B) GOTO 26   *NOT COMING FROM T7X98A-G
   B7 = IB(437B)             *RELOAD B7 
   B6 = B6 +1                *INCREMENT LINE NUMBER 
   GOTO 27
26 B6 = 2                    *LINE NUMBER 
27 MSG 1 (SB(17),SB(18),SB(19),DC) TO LINE B6 
   B6 = B6 + 1
   MSG 2 (LF,SB,WC,WT) TO LINE B6 
   B6 = B6 + 1
   MSG 3 (B0,B1,BA) TO LINE B6
   B6 = B6 + 1
   MSG 4, 8 WORDS FROM SB(1) TO LINE B6 
   B6 = B6 + 1
   MSG 5, 8 WORDS FROM SB(9) TO LINE B6 
   B6 = B6 + 1
   MSG 6, 8 WORDS FROM OB TO LINE B6
   B6 = B6 + 1
   MSG 7, 8 WORDS FROM IB TO LINE B6
   B6 = B6 + 1
   MSG 8, 8 WORDS FROM IB(430B) TO LINE B6
   B6 = B6 + 1
   MSG 15 8 WORDS FROM IB(440B) TO LINE B6
   B6 = B6 + 1
   MSG 9, 8 WORDS FROM P0 TO LINE B6
   B6 = B6 + 1
   MSG 21, 2 WORDS FROM P8 TO LINE B6 
   RES P1, ABT 52 
52 STATUS SENSE, ABT 54 
54 REL, ABT 56
56 B6 = B6 + 1
   B14 = 454B 
   B13 = 0
   B6 = B6 + 1
   MSG 16 TO LINE B6
   B0 = 0 
   B1 = 5 
50 B6 =B6 + 1 
   B10 = IB(B14).RS.4 
   B11 = IB(B14).AND.17B.LS.4 
   B11 = IB(B14+1).RS.8.OR.B11
   B12 = IB(B14+2).RS.4 
   B13 = IB(B14+2).AND.17B.LS.4 
   B13 = IB(B14+3).RS.8.OR.B13
   B8 = IB(B14+1) 
   B9 = IB(B14+3) 
   MSG 17 (B0,B1,B10,B11,B8,B12,B13,B9) TO LINE B6
   B0 = B0 + 6
   B1 = B1 + 6
   B14 = B14 + 4
   IF(B0.LT.19) GOTO 50 
   B6 = B6 + 1
   MSG 24, 4 WORDS FROM SB(B14) TO LINE B6
   B6 = B6 + 1
   IF(EC.NE.105B) GOTO 30    *IF NOT DATA COMPARE ERROR 
   MSG 22 TO LINE B6
   B6 = B6 + 1
   B5 = 0                    *INDEX TO BUFFERS
   B3 = B6 + 4               *TERMINATING MESSAGE LINE
28 B4 = IB(B5).XOR.OB(B5) 
   IF(B4.EQ.0) GOTO 29       *IF WORDS COMPARE
   MSG 23(B5,IB(B5),OB(B5),B4) TO LINE B6 
   B6 = B6 + 1
29 B5 = B5 + 1               *BUMP BUFFER INDEX 
   IF(WT-1.EQ.B5) GOTO 30    *IF ALL WORDS DONE 
   IF(B6.NE.B3) GOTO 28      *IF 4 ERRORS NOT REPORTED
* 
*  ---CHANNEL PARITY ERROR
* 
30 IF(IB(403B).AND.BIT8.NE.0) ERROR 10/0, GOTO 40 
* 
*  ---ADAPTER PARITY ERROR
* 
   IF(IB(403B).AND.BIT7.NE.0) ERROR 18/0, GOTO 40 
   IF(B7.AND.30B.EQ.10B) GOTO 31      *TCU LOOPBACK 
* 
*  ---NO MICRO DIAG ERROR 
* 
   IF(IB(401B).AND. 5000B .NE. 5000B) GOTO 60 
   IF(B7.AND.30B.EQ.20B) EXIT TO 972  *CCC LOOPBACK 
* 
*  ---NO CONNECT
* 
60 IF(IB(401B).AND.BIT9.NE.0) ERROR 11/0,GOTO 40
   IF(B7.AND.30B.EQ.0) GOTO 32   *NO UNIT LOOPBACK
   IF(IB(401B).AND.1D.EQ.0) ERROR 13/0,GOTO 40   *NOT READY 
31 EXIT TO 973               *IF UNIT LOOPBACK
32 IF(IB(414B)AND.BIT7.NE.0) ERROR 14/0,GOTO 40  *LAMP FAIL 
   EXIT TO 971               *CONTINUE UNIT ANALYSIS
/--------POST PROBLEM DETECTION CODE AND MESSAGE----- 
40 BA = B7.AND.3 + EC        *FORM ERROR CODE 
   MSG EM(BA) TO LINE B6     *POST MESSAGE TO DISPLAY 
   B6 = B6 + 1               *BUMP LINE NUMBER
41 IF(IB(403B).AND.177B.GT.52B) GOTO 42    *ERROR .GT. 52B
   EXIT TO 975               *ENTER DS ERROR PROCESSOR
42 IF(IB(403B).AND.177B.GT.130B) GOTO 43   *ERROR .GT. 130B 
   EXIT TO 976               *ENTER DS ERROR PROCESSOR
43 EXIT TO 977               *ENTER DS ERROR PROCESSOR
   END 25 
COMPILE   - T7X970 -
   MODULE T7X971,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
*** T7X971 - 698/CMST STATUS ANALYSIS 
  
*** T7X971 INTERNAL DOCUMENTATION 
* 
* 
*        T7X971 ASSUMES THAT THE STATUS BUFFER HAS BEEN MOVED TO IB AND 
*        THAT STATUS IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
*        THE FOLLOWING SB LOCATIONS RELATE TO THE LISTED IB LOCATIONS-
* 
*        SB(1)  =  IB(401B) 
*        SB(2)  =  IB(402B) 
*        SB(3)  =  IB(403B) 
*        SB(4)  =  IB(404B) 
*        SB(5)  =  IB(405B) 
*        SB(6)  =  IB(406B) 
*        SB(7)  =  IB(407B) 
*        SB(8)  =  IB(410B) 
*        SB(9)  =  IB(411B) 
*        SB(10) =  IB(412B) 
*        SB(11) =  IB(413B) 
*        SB(12) =  IB(414B) 
*        SB(13) =  IB(415B) 
*        SB(14) =  IB(416B) 
*        SB(15) =  IB(417B) 
*        SB(16) =  IB(420B) 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
   BASE DECIMAL 
 2 FORMAT   EC 0313 TAPE UNIT LOOP FAULT
 3 FORMAT   EC 0317 DIGITAL SIGNAL PROCESSOR ERROR
 4 FORMAT   EC 0321 MALFUNCTION IN MICROPROCESSOR OF THE MTU
 5 FORMAT   EC 0322 DATA SECURITY ERASE ERROR 
 6 FORMAT   EC 0323 TAPE UNIT NOT AT BOT AFTER A REWIND 
 7 FORMAT   EC 0328 TAPE UNIT NOT READY 
12 FORMAT   EC 0331 TAPE SPEED STATUS ERR- EXP=*OCT ACT=*OCT
17 FORMAT   EC 0359 TAPE UNIT WRITE OR ERASE HEAD FAILURE 
18 FORMAT   EC 0360 TAPE UNIT WRITE CURRENT FAILURE 
15 FORMAT   EC 0303 TAPE UNIT RESET KEY DEPRESSED 
19 FORMAT   EC 0310 TAPE UNIT LOAD FAILURE. REELS NOT LOADED
* 
30 IF(IB(414B).AND.20D.NE.0) ERROR 15/0,GOTO 40  *RESET KEY 
   IF(IB(414B).AND.1D.NE.0) ERROR 19/0,GOTO 40  *NO REELS 
   IF(IB(414B).AND.BIT6.NE.0) ERROR 2/0,GOTO 40  *LOOP FAULT
   IF(IB(414B).AND.BIT5.NE.0)ERROR 3/0,GOTO 40   *DSP ERROR 
* 
*  ---MICRO P CHECK 
* 
   IF(IB(414B).AND.BIT1.NE.0)ERROR 4/0,GOTO 40
   IF(IB(414B).AND.BIT3.NE.0)GOTO 32    *DSE IN PROGRESS
   GOTO 33
* 
*  ---READY ERROR 
* 
32 IF(IB(401B).AND.BIT0.EQ.0)ERROR 5/0,GOTO 40
33 IF(IB(401B).AND.BIT2.NE.0) GOTO 31               *IF BOT 
   IF(B7.AND.3.EQ.3) ERROR 6/0,GOTO 40  *REWIND-NOT AT BOT
* 
*  ---READY ERROR 
* 
31 IF(IB(401B).AND.BIT0.EQ.0)ERROR 7/0,GOTO 40
   IF(B7.AND.BIT8.NE.0) GOTO 34       *IGNORE DATA INTEGRITY
   IF(IB(414B).AND.BIT2.NE.0) ERROR 17/0,GOTO 40  *HEAD FAILURE 
* 
*  ---WRITE CURRENT FAILURE 
* 
   IF(IB(414B).AND.BIT6.NE.0) ERROR 18/0,GOTO 40
34 IF(B7.AND.7000B.NE.0) GOTO 36       *MODE IN B7
   BA = P1.AND.7             *DENSITY FROM USER 
   IF(BA.EQ.2) GOTO 35       *PHASE 
   IF(BA.EQ.4) GOTO 35       *GCR 
   BA = 1                    *NRZI
35 BA = BA.LS.9 
   B7 = B7.OR.BA
36 B1 = 3 
   IF(P0.EQ.75B) GOTO 37              *IF 75 IPS SELECTED 
   B1 = 4 
   IF(P0.EQ.125B) GOTO 37              *IF 125 IPS SELECTED 
   B1 = 5                              *200 IPS SELECTED
37 IF(IB(413B).AND.7.EQ.B1) GOTO 39      *IF STATUS AGREES
   B2 = IB(413B).AND.7
   MSG 12 (B1,B2) TO LINE B6           *REPORT ERROR
   B6 = B6 + 1
   GOTO 41                             *CONTINUE ANALYSIS 
39 IF(B7.AND.BIT8.NE.0) GOTO 41     *IGNORE DATA INTEGRITY
   EXIT TO 973               *TEST DATA INTEGRITY 
/-------POST PROBLEM DETECTION CODE AND MESSAGE---- 
40 BA = B7.AND.3 + EC        *FORM ERROR CODE 
   MSG EM(BA) TO LINE B6
   B6 = B6 + 1               *BUMP LINE NUMBER
41 IF(IB(403B).AND.177B.GT.52B) GOTO 42    *ERROR .GT. 52B
   EXIT TO 975               *ENTER DS ERROR PROCESSOR
42 IF(IB(403B).AND.177B.GT.130B) GOTO 43   *ERROR .GT. 130B 
   EXIT TO 976               *ENTER DS ERROR PROCESSOR
43 EXIT TO 977               *ENTER DS ERROR PROCESSOR
   END 30 
COMPILE   - T7X971 -
   MODULE T7X972,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
*** T7X972 - 698/CMST STATUS ANALYSIS 
  
*** T7X972 INTERNAL DOCUMENTATION 
* 
* 
*        T7X972 ASSUMES THAT THE STATUS BUFFER HAS BEEN MOVED TO IB AND 
*        THAT STATUS IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
*        THE FOLLOWING SB LOCATIONS RELATE TO THE LISTED IB LOCATIONS-
* 
*        SB(1)  =  IB(401B) 
* 
 1 FORMAT ROM EC 5100 SWITCHES NOT SET CORRECTLY
 2 FORMAT ROM EC 5121 LD XFER REGS.  WR PATH PE UPPER.
 3 FORMAT ROM EC 5122 LD XFER REGS.  WR PATH PE LOWER.
 4 FORMAT ROM EC 5123 LD XFER REGS.  MEMORY PE. 
 5 FORMAT ROM EC 5124 LD XFER REGS.  BUS IN OR RD PATH PE.
 6 FORMAT ROM EC 5125 LD XFER REGS.  READ PATH PE.
 7 FORMAT ROM EC 5126 LD XFER REGS.  BUS OUT FAULT. 
10 FORMAT ROM EC 5127 LD XFER REGS.  TAG OUT FAULT UPPER. 
11 FORMAT ROM EC 5130 LD XFER REGS.  TAG OUT FAULT LOWER. 
12 FORMAT ROM EC 5131 LD XFER REGS.  FLAG BIT DETECTED. 
13 FORMAT ROM EC 5132 LD XFER REGS.  MIN BLK LENG NOT MET.
14 FORMAT ROM EC 5133 LD XFER REGS.  SELECT IN RECEIVED.
15 FORMAT ROM EC 5134 LD XFER REGS.  NO REQ IN ON POLL SEQ. 
16 FORMAT ROM EC 5135 LD XFER REGS.  DEVICE ADDR MISCOMPARE.
17 FORMAT ROM EC 5136 LD XFER REGS.  TIME OUT ON CCC XFER.
20 FORMAT ROM EC 5137 LD XFER REGS.  UNDEFINED ERROR. 
21 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
22 FORMAT --------------------------------------------------
60 BA = IB(401B).AND.777B       *ROM ERROR CODE 
   IF(BA.LT.100) GOTO 70     *BAD ERROR CODE
   IF(BA.GT.605) GOTO 70     *BAD ERROR CODE
   IF(BA.GT.137) EXIT TO 990  *MORE ERROR CODES 
   IF(BA.EQ.100) ERROR 1/0, GOTO 71       *EC = 100 
   IF(BA.EQ.121) ERROR 2/0, GOTO 71       *EC = 121 
   IF(BA.EQ.122) ERROR 3/0, GOTO 71       *EC = 122 
   IF(BA.EQ.123) ERROR 4/0, GOTO 71       *EC = 123 
   IF(BA.EQ.124) ERROR 5/0, GOTO 71       *EC = 124 
   IF(BA.EQ.125) ERROR 6/0, GOTO 71       *EC = 125 
   IF(BA.EQ.126) ERROR 7/0, GOTO 71       *EC = 126 
   IF(BA.EQ.127) ERROR 10/0, GOTO 71      *EC = 127 
   IF(BA.EQ.130) ERROR 11/0, GOTO 71      *EC = 130 
   IF(BA.EQ.131) ERROR 12/0, GOTO 71      *EC = 131 
   IF(BA.EQ.132) ERROR 13/0, GOTO 71      *EC = 132 
   IF(BA.EQ.133) ERROR 14/0, GOTO 71      *EC = 133 
   IF(BA.EQ.134) ERROR 15/0, GOTO 71      *EC = 134 
   IF(BA.EQ.135) ERROR 16/0, GOTO 71      *EC = 135 
   IF(BA.EQ.136) ERROR 17/0, GOTO 71      *EC = 136 
   IF(BA.EQ.137) ERROR 20/0, GOTO 71      *EC = 137 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 21(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 22 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X972 -
   MODULE T7X973,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
*** T7X973 - 698/CMST STATUS ANALYSIS 
  
*** T7X973 INTERNAL DOCUMENTATION 
* 
* 
*        T7X973 ASSUMES THAT THE STATUS BUFFER HAS BEEN MOVED TO IB AND 
*        THAT STATUS IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
*        THE FOLLOWING SB LOCATIONS RELATE TO THE LISTED IB LOCATIONS-
* 
*        SB(3)  =  IB(403B) 
*        SB(4)  =  IB(404B) 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
   BASE DECIMAL 
15 FORMAT   EC 0503 TAPE PARITY ERROR 
25 FORMAT   EC 0700 SINGLE/DOUBLE TRACK CORRECTION
30 BA = 15
   IF(IB(403B).AND.BIT9.NE.0) GOTO 40   *TAPE PE
   BA = 25
* 
*  ---SINGLE/DOUBLE TRK CORRECTION
* 
   IF(IB(404B).AND.BIT9.NE.0) GOTO 40 
   GOTO 41
40 MSG BA TO LINE B6         *POST ERROR MESSAGE
   B6 = B6 + 1    *BUMP LINE NUMBER 
41 EXIT TO 974                 *CONTINUE STATUS ANALYSIS
   END 30 
COMPILE   - T7X973 -
   MODULE T7X974,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
*** T7X974 - 698/CMST STATUS ANALYSIS 
  
*** T7X974 INTERNAL DOCUMENTATION 
* 
* 
*        T7X974 ASSUMES THAT THE STATUS BUFFER HAS BEEN MOVED TO IB AND 
*        THAT STATUS IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
*        THE FOLLOWING SB LOCATIONS RELATE TO THE LISTED IB LOCATIONS-
* 
*        SB(1)  =  IB(401B) 
*        SB(2)  =  IB(402B) 
*        SB(3)  =  IB(403B) 
*        SB(4)  =  IB(404B) 
*        SB(5)  =  IB(405B) 
*        SB(6)  =  IB(406B) 
*        SB(7)  =  IB(407B) 
*        SB(8)  =  IB(410B) 
*        SB(9)  =  IB(411B) 
*        SB(10) =  IB(412B) 
*        SB(11) =  IB(413B) 
*        SB(12) =  IB(414B) 
*        SB(13) =  IB(415B) 
*        SB(14) =  IB(416B) 
*        SB(15) =  IB(417B) 
*        SB(16) =  IB(420B) 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
   BASE DECIMAL 
 3 FORMAT   EC 0600 ADAPTER/PPU LOST DATA 
 4 FORMAT   EC 0601 READ ROM/RAM FLAG BIT DETECTED
 6 FORMAT   EC 0603 NOISE BYPASSED
10 FORMAT   EC 0604 UNIT BUSY, SHOULD NOT BE
11 FORMAT   EC 0605 UNIT READY/BUSY, SHOULD NOT BE
25 BA = 3 
   IF(IB(403B).AND.BIT11.NE.0) GOTO 50    *LOST DATA
   BA = 4 
   IF(IB(405B).AND.BIT2.NE.0) GOTO 50    *FLAG BIT SET
   BA = 6 
   IF(IB(411B).AND.BIT10.NE.0) GOTO 50   *NOISE BYPASSED
   BA = 10
   IF(IB(401B).AND.BIT1.NE.0) GOTO 50    *UNIT BUSY 
   BA = 11
   IF(IB(401B).AND.3.EQ.3) GOTO 50    *UNIT READY/BUSY
   GOTO 51
50 MSG BA (B7) TO LINE B6    *POST ERROR MESSAGE
   B6 = B6 + 1    *BUMP LINE NUMBER 
51 IF(IB(403B).AND.177B.GT.52B) GOTO 52    *ERROR .GT. 52B
   EXIT TO 975    *ENTER CW ERROR PROCESSOR 
52 IF(IB(403B).AND.177B.GT.130B) GOTO 53   *ERROR .GT. 130B 
   EXIT TO 976               *ENTER DS ERROR PROCESSOR
53 EXIT TO 977               *ENTER DS ERROR PROCESSOR
   END 25 
COMPILE   - T7X974 -
   MODULE T7X975,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
*** T7X975 - 698/CMST STATUS ANALYSIS 
  
*** T7X975 INTERNAL DOCUMENTATION 
* 
* 
*        T7X975 ASSUMES THAT THE STATUS BUFFER HAS BEEN MOVED TO IB AND 
*        THAT STATUS IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
*        THE FOLLOWING SB LOCATIONS RELATE TO THE LISTED IB LOCATIONS-
* 
*        SB(1)  =  IB(401B) 
* 
 1 FORMAT DS ERROR 4001 TAPE UNIT OFF-LINE, NOT POWERED ON
 2 FORMAT DS ERROR 4002 UNIT CONNECTED TO ANOTHER ADAPTER 
 3 FORMAT DS ERROR 4004 FUNCTION REJECT, TAPE UNIT NOT READY
 4 FORMAT DS ERROR 4006 TAPE UNIT MISSING WRITE RING
 5 FORMAT DS ERROR 4007 UNIT NOT CAPABLE OF TAPES DENSITY 
 6 FORMAT DS ERROR 4010 OVER 15 FEET OF BLANK TAPE IN GCR MODE
 7 FORMAT DS ERROR 4012 BAD ID BURST WRITTEN
10 FORMAT DS ERROR 4016 UNIT UNABLE TO SET GAINS ON GCR TAPE
11 FORMAT DS ERROR 4030 BACKWARD MOTION ATTEMPTED AT LOADPOINT
12 FORMAT DS ERROR 4041 TAPE UNIT FAILED TO REACH SPEED 
13 FORMAT DS ERROR 4050 ILLEGAL FUNCTION
14 FORMAT DS ERROR 4051 NO TAPE UNIT CONNECTED
15 FORMAT DS ERROR 4052 NO FUNCTION PARAMETERS SENT 
16 FORMAT DS ERROR *OCT UNRECOGNIZED DS ERROR CODE
17 FORMAT --------------------------------------------------
60 BA = IB(403B).AND.177B       *DS ERROR CODE
   IF(BA.EQ.0) GOTO 71       *IF NO ERROR 
   IF(BA.EQ.1) ERROR 1/0, GOTO 70       *EC = 1 
   IF(BA.EQ.2) ERROR 2/0, GOTO 70       *EC = 2 
   IF(BA.EQ.4) ERROR 3/0, GOTO 70       *EC = 4 
   IF(BA.EQ.6) ERROR 4/0, GOTO 70       *EC = 6 
   IF(BA.EQ.7) ERROR 5/0, GOTO 70       *EC = 7 
   IF(BA.EQ.10) ERROR 6/0, GOTO 70      *EC = 10
   IF(BA.EQ.12) ERROR 7/0, GOTO 70      *EC = 12
   IF(BA.EQ.16) ERROR 10/0, GOTO 70     *EC = 16
   IF(BA.EQ.30) ERROR 11/0, GOTO 70     *EC = 30
   IF(BA.EQ.41) ERROR 12/0, GOTO 70     *EC = 41
   IF(BA.EQ.50) ERROR 13/0, GOTO 70     *EC = 50
   IF(BA.EQ.51) ERROR 14/0, GOTO 70     *EC = 51
   IF(BA.EQ.52) ERROR 15/0, GOTO 70     *EC = 52
   BA = BA+4000              *ILLEGAL ERROR CODE
   MSG 16(BA) TO LINE B6
   GOTO 71
70 MSG EM TO LINE B6
71 B6 = B6 + 1
   MSG 17 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X975 -
   MODULE T7X976,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
*** T7X976 - 698/CMST STATUS ANALYSIS 
  
*** T7X976 INTERNAL DOCUMENTATION 
* 
* 
*        T7X976 ASSUMES THAT THE STATUS BUFFER HAS BEEN MOVED TO IB AND 
*        THAT STATUS IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
*        THE FOLLOWING SB LOCATIONS RELATE TO THE LISTED IB LOCATIONS-
* 
*        SB(1)  =  IB(401B) 
* 
 1 FORMAT DS ERROR 4110 CCC ABNORM END ON SEL CODE CONV SEQ 
10 FORMAT DS ERROR 4121 CCC ABNORM END ON RD BLOCK ID SEQ 
16 FORMAT DS ERROR *OCT UNRECOGNIZED DS ERROR CODE
17 FORMAT --------------------------------------------------
30 BA = IB(403B).AND.177B       *DS ERROR CODE
   IF(BA.EQ.110) ERROR 1/0, GOTO 40     *EC = 110 
   IF(BA.EQ.121) ERROR 10/0, GOTO 40    *EC = 121 
   BA = BA+4000B             *ILLEGAL ERROR CODE
   MSG 16(BA) TO LINE B6
   GOTO 41
40 MSG EM TO LINE B6
41 B6 = B6 + 1
   MSG 17 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 30 
COMPILE   - T7X976 -
   MODULE T7X977,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
*** T7X977 - 698/CMST STATUS ANALYSIS 
  
*** T7X977 INTERNAL DOCUMENTATION 
* 
* 
*        T7X977 ASSUMES THAT THE STATUS BUFFER HAS BEEN MOVED TO IB AND 
*        THAT STATUS IS ASSOCIATED  WITH  THE  CURRENT FAILURE. 
*        THE FOLLOWING SB LOCATIONS RELATE TO THE LISTED IB LOCATIONS-
* 
*        SB(1)  =  IB(401B) 
* 
 1 FORMAT DS ERROR 4154 ILLEGAL CONV TABLE NUMBER REQUEST 
 2 FORMAT DS ERROR 4155 TIMEOUT ON EXPECTED CCC-DI RESPONSE 
 3 FORMAT DS ERROR 4156 TIMEOUT ON EXPECTED C170-DI RESPONSE
 4 FORMAT DS ERROR 4157 TIMEOUT ON EXPECTED REQUEST IN STAT 
 5 FORMAT DS ERROR 4160 CCC ABNORM STATUS ON LOADING TRANS REG
 6 FORMAT DS ERROR 4161 CCC ABNORM STATUS ON COPY CODE TABLES 
 7 FORMAT DS ERROR 4162 CCC ABNORM STATUS ON TIE SEQ
11 FORMAT DS ERROR 4164 CCC ABNORM STATUS ON SYS RESET COMMAND
12 FORMAT DS ERROR 4165 CCC ABNORM END STAT ON SENSE COMMAND
13 FORMAT DS ERROR 4170 CCC SEQUENCE ERROR
14 FORMAT DS ERROR 4171 CCC INTERFACE ERROR 
15 FORMAT DS ERROR 4172 C170-DI CHANNEL PARITY ERROR
16 FORMAT DS ERROR 4173 C170-DI MEMORY PARITY ERROR 
17 FORMAT DS ERROR 4174 C170-DI CONTROL PACKAGE PARITY ERROR
20 FORMAT DS ERROR 4175 CCC DEADMAN TIMER EXPIRED 
21 FORMAT DS ERROR 4177 C170-DI UNDEFINED STATUS BIT ERROR
22 FORMAT DS ERROR *OCT UNRECOGNIZED DS ERROR CODE
23 FORMAT --------------------------------------------------
24 FORMAT DS ERROR 4176 CCC-DI UNDEFINED STATUS BIT ERROR 
60 BA = IB(403B).AND.177B       *DS ERROR CODE
   IF(BA.EQ.0) GOTO 71       *IF NO ERROR 
   IF(BA.EQ.154) ERROR 1/0, GOTO 70       *EC = 154 
   IF(BA.EQ.155) ERROR 2/0, GOTO 70       *EC = 155 
   IF(BA.EQ.156) ERROR 3/0, GOTO 70       *EC = 156 
   IF(BA.EQ.157) ERROR 4/0, GOTO 70       *EC = 157 
   IF(BA.EQ.160) ERROR 5/0, GOTO 70       *EC = 160 
   IF(BA.EQ.161) ERROR 6/0, GOTO 70       *EC = 161 
   IF(BA.EQ.162) ERROR 7/0, GOTO 70       *EC = 162 
   IF(BA.EQ.164) ERROR 11/0, GOTO 70      *EC = 164 
   IF(BA.EQ.165) ERROR 12/0, GOTO 70      *EC = 165 
   IF(BA.EQ.170) ERROR 13/0, GOTO 70      *EC = 170 
   IF(BA.EQ.171) ERROR 14/0, GOTO 70      *EC = 171 
   IF(BA.EQ.172) ERROR 15/0, GOTO 70      *EC = 172 
   IF(BA.EQ.173) ERROR 16/0, GOTO 70      *EC = 173 
   IF(BA.EQ.174) ERROR 17/0, GOTO 70      *EC = 174 
   IF(BA.EQ.175) ERROR 20/0, GOTO 70      *EC = 175 
   IF(BA.EQ.176) ERROR 24/0, GOTO 70      *EC = 177 
   IF(BA.EQ.177) ERROR 21/0, GOTO 70      *EC = 177 
   BA = BA+4000              *ILLEGAL ERROR CODE
   MSG 22(BA) TO LINE B6
   GOTO 71
70 MSG EM TO LINE B6
71 B6 = B6 + 1
   MSG 23 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X977 -
   MODULE T7X980,67X(44,54,55,53)LOCK  - 67X/ATS STATUS ANALYSIS
*** T7X980-T7X986 - 67X/ATS STATUS ANALYSIS 
* 
**  T7X980-T7X986 - EXTERNAL DOCUMENTATION
* 
*   OVERVIEW -
* 
*         T7X980 CAN BE ENTERED FROM ANY TEST MODULE THAT MAKES 
*         UP T7X OR FROM MODULES T7X98A-T7X98E (ERROR CODE
*         PROCESSING MODULES).  T7X980 ASSUMES THAT THE STATUS BUFFER 
*         CONTAINS CURRENT STATUS FROM THE DEVICE AND IS ASSOCIATED 
*         WITH THE CURRENT FAILURE.  IT ALSO ASSUMES THAT REGISTER
*         B7 CONTAINS THE CURRENT ACTION CODE DESCRIBING WHAT TEST
*         ACTION WAS IN PROGRESS AT THE TIME OF THE FAILURE.  A 
*         BREAKDOWN OF BIT MEANINGS IN B7 IS AS FOLLOWS 
* 
*           0XXX = MODE (NRZI,PHASE,GCR) IS IN P1 REGISTER
*           1XXX = MODE IS NRZI 
*           2XXX = MODE IS PHASE
*           4XXX = MODE IS GCR
* 
*           X1XX = IGNORE CAPSTAN SLIP STATUS 
*           X2XX = IGNORE EARLY READ AFTER WRITE EOP STATUS 
*           X3XX = IGNORE CAPSTAN SLIP AND EARLY EOP STATUS 
*           X4XX = IGNORE DATA INTEGRITY STATUS 
*           X5XX = IGNORE CAPSTAN SLIP AND DATA INTEGRITY STATUS
*           X6XX = IGNORE EARLY EOP AND DATA INTEGRITY STATUS 
*           X7XX = IGNORE CAPSTAN SLIP, EARLY EOP AND DATA INTEGRITY. 
* 
*           XX0X = NO LOOPBACK OPTIONS ACTIVE 
*           XX1X = TCU LOOPBACK OPTION ACTIVE 
*           XX2X = UNIT LOOPBACK I OPTION ACTIVE
*           XX3X = UNIT LOOPBACK II OPTION ACTIVE 
* 
*           XXX0 = NO MOTION
*           XXX1 = FWD WRITE MOTION 
*           XXX2 = REV WRITE MOTION (CONTROLLED BKSP) 
*           XXX3 = REWIND MOTION
*           XXX4 = NO MOTION (NOT USED) 
*           XXX5 = FWD READ MOTION
*           XXX6 = REV READ MOTION
*           XXX7 = REWIND (NOT USED)
* 
*         (NOTE THAT IF B7=7777 IT IS A FLAG THAT T7X980 WAS
*         ENTERED FROM THE ERROR CODE PROCESSING MODULES, SO
*         REGISTER B7 IS RESTORED FROM THE INPUT BUFFER WHERE IT
*         WAS SAVED BY T7X98A). 
* 
*         (NOTE IF B15 = 7654B IT IS A FLAG THAT CAUSES 
*         T7X980 TO PRINT A DECIMAL RECORD COUNT USING
*         THE INDEX REGISTERS B0/B1 AND THE FORMAT
*         *DE*D.  IF B15 DOES NOT EQUAL 7654B B0 DISPLAYS 
*         THE FILE AND B1 THE RECORD. 
*** 
**
* 
*         T7X980 WILL ADD 9 LINES OF INFORMATION TO THE PP DISPLAY
*         CONCERNING REGISTER AND BUFFER CONTENTS AT THE TIME OF
*         THE CURRENT FAILURE.  IT WILL THEN START A SYSTAMATIC 
*         ANALYSIS OF THE STATUS BUFFER TO DETERMINE THE MOST 
*         SERIOUS ERROR THAT EXISTS.  EXITS WILL BE MADE TO OTHER 
*         SUBMODULES TO ASSIST IN THIS ANALYSIS BASED ON THE CURRENT
*         ACTION CODE IN REGISTER B7 AND WHAT STATUS EXISTS THE 
*         STATUS BUFFER.  THE FOLLOWING BREAKDOWN DOCUMENTS THE 
*         PRIMARY PURPOSE OF EACH STATUS ANALYSIS MODULE. 
* 
*           T7X980 - UNIT FAILURE ANALYSIS
*           T7X981 - UNIT FAILURE ANALYSIS
*           T7X982 - PARK COUNT FAILURE ANALYSIS
*           T7X983 - TCU/TAPE PARITY ANALYSIS 
*           T7X984 - CORRECTABLE ERROR ANALYSIS 
*           T7X985 - CONTROLWARE ERROR ANALYSIS 
*           T7X986 - CONTROLWARE ERROR ANALYSIS 
* 
* 
*         WHEN THE ANALYSIS IS COMPLETE, EITHER MODULE T7X985 OR
*         T7X986 WILL TAKE A PICTURE OF THE FAILURE DATA AND HALT 
*         (IF STOP ON ERROR IS SELECTED). AFTER A -GO- FROM THE 
*         USER, A CHECK IS MADE TO INSURE THAT THE CONTROLLER IS
*         FUNCTIONAL (RESERVE) AND IF NOT, A RESET COMMAND IS EXECUTED
*         TO MASTER CLEAR THE CONTROLLER.  REGISTERS ARE RESTORED 
*         AND CONTROL IS RETURNED TO THE MODULE THAT DETECTED THE 
*         FAILURE.
*         (NOTE THAT BEFORE RETURNING, THE DISPLAY IS BLANKED TO
*         ERASE THE INFORMATION CONCERNING THE FAILURE).
* 
* 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
   BASE DECIMAL 
 1 FORMAT   CH=*OCT  EQ=*OCT  UN=*OCT  DC=*OCT  EA=*OCT 
 2 FORMAT   LF=*OCT LSF=*OCT  WC=*OCT  WT=*OCT*OCT
 3 FORMAT   FILE=*DECD RECORD=*DECD ERROR COUNT=*DECD 
 4 FORMAT   SB(1-8) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 5 FORMAT   SB(9-16)=*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 6 FORMAT   OB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 7 FORMAT   IB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 8 FORMAT   B0-B7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 9 FORMAT   P0-P7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
10 FORMAT DDLT=0400 TCU-DETECTED I/O CHANNEL PARITY ERROR 
11 FORMAT DDLT=0300 TAPE UNIT NOT CONNECTED - SHOULD BE 
12 FORMAT DDLT=0301 TAPE UNIT THERMAL FAULT 
13 FORMAT DDLT=0362 TAPE UNIT NOT READY FOR LOOPBACK
14 FORMAT DDLT=0302 TAPE UNIT LAMP FAILURE
15 FORMAT DDLT=0303 TAPE UNIT RESET KEY DEPRESSED 
16 FORMAT DDLT=0329 TAPE UNIT DOOR OPEN 
17 FORMAT DDLT=*DEC TAPE UNIT CARTRIDGE PRESENT BUT NOT OPEN
18 FORMAT DDLT=0309 TAPE UNIT TAPE NOT PRESENT AT BOT SENSOR
19 FORMAT DDLT=0310 TAPE UNIT LOAD FAILURE. REELS NOT LOADED
20 FORMAT DDLT=0311 TAPE UNIT REELS NOT LOADED
21 FORMAT   P8-P9   =*OCT *OCT
23 FORMAT DATA ERR. WD=*OCT, AC=*OCT, EX=*OCT, DIFF=*OCT
24 FORMAT DDLT=0330 TAPE UNIT WINDOW OPEN 
63 FORMAT   RECORD COUNT=*DE*DD ERROR COUNT=*DECD 
25 IF(B7.EQ.7777B) GOTO 26    *IF ENTERED FROM T7X98A 
   IB(470B) = B0              *SAVE REGISTERS 
   IB(471B) = B1
   IB(472B) = B2
   IB(473B) = B3
   IB(474B) = B4
   IB(475B) = B5
   IB(476B) = B6
   IB(477B) = B7
   IB(467B) = BA
   B6 = 2                    *LINE NUMBER 
   GOTO 27
26 B7 = IB(477B)             *RESTORE B7
27 MSG 1(SB(17),SB(18),SB(19),DC,EA) TO LINE B6 
   B6 = B6 + 1
   MSG 2(LF,SB,WC,SB(20),WT) TO LINE B6 
   B6 = B6 + 1
   IF(B15.NE.7654B) GOTO 62      *IF B0/B1 NOT RECORD COUNT 
   MSG 63 (B0,B1,BA) TO LINE B6 
   GOTO 61
62 MSG 3 (B0,B1,BA) TO LINE B6
61 B6 = B6 + 1
   MSG 4, 8 WORDS FROM SB(1) TO LINE B6 
   B6 = B6 + 1
   MSG 5, 8 WORDS FROM SB(9) TO LINE B6 
   B6 = B6 + 1
   MSG 6, 8 WORDS FROM OB TO LINE B6
   B6 = B6 + 1
   MSG 7, 8 WORDS FROM IB TO LINE B6
   B6 = B6 + 1
   MSG 8, 8 WORDS FROM IB(470B) TO LINE B6
   B6 = B6 + 1
   MSG 9, 8 WORDS FROM P0 TO LINE B6
   B6 = B6 + 1
   MSG 21, 2 WORDS FROM P8 TO LINE B6 
   B6 = B6 + 1
   IF(EC.NE.105B) GOTO 30    *IF NOT DATA COMPARE ERROR 
   B6 = B6 + 1
   B5 = 0                    *INDEX TO BUFFERS
   B3 = B6 + 4               *TERMINATING MESSAGE LINE
28 B4 = IB(B5).XOR.OB(B5) 
   IF(B4.EQ.0) GOTO 29       *IF WORDS COMPARE
   MSG 23(B5,IB(B5),OB(B5),B4) TO LINE B6 
   B6 = B6 + 1
29 B5 = B5 + 1               *BUMP BUFFER INDEX 
   IF(WT-1.EQ.B5) GOTO 30    *IF ALL WORDS DONE 
   IF(B6.NE.B3) GOTO 28      *IF 4 ERRORS NOT REPORTED
30 IF(SB(3).AND.BIT8.NE.0) ERROR 10/0, GOTO 40  *CH PARITY
   IF(B7.AND.30B.EQ.10B) GOTO 31                 *TCU LOOPBACK
   IF(SB(1).AND.BIT9.NE.0) ERROR 11/0,GOTO 40   *NO CONNECT 
   IF(SB(13).AND.BIT3.NE.0) ERROR 12/0,GOTO 40  *THERMAL
   IF(B7.AND.30B.EQ.0) GOTO 32         *NO UNIT LOOPBACK
   IF(SB(1).AND.BIT0.EQ.0) ERROR 13/0,GOTO 40   *NOT READY
31 EXIT TO 983               *IF TCU OR UNIT LOOPBACK 
32 IF(SB(12).AND.BIT7.NE.0) ERROR 14/0,GOTO 40  *LAMP FAIL
   IF(SB(12).AND.BIT4.NE.0) ERROR 15/0,GOTO 40  *RESET KEY
   IF(SB(13).AND.BIT6.NE.0) ERROR 16/0, GOTO 40  *DOOR OPEN 
   IF(SB(13).AND.BIT7.NE.0) ERROR 24/0, GOTO 40  *WINDOW
   IF(SB(13).AND.BIT1.EQ.0) GOTO 34    *CART. NOT PRESENT 
   IF(SB(13).AND.BIT0.EQ.0) ERROR 17/305,GOTO 40  *NOT OPEN 
34 IF(SB(14).AND.BIT4.EQ.0) ERROR 18/0,GOTO 40  *NO TAPE
   IF(SB(14).AND.BIT3.NE.0) GOTO 35    *REELS LOADED
   IF(SB(12).AND.BIT0.NE.0) ERROR 19/0,GOTO 40  *NO REELS 
   ERROR 20/0, GOTO 40       *REELS NOT LOADED
35 EXIT TO 981               *CONTINUE UNIT ANALYSIS
/--------POST PROBLEM ISOLATION CODE AND MESSAGE----- 
40 BA = B7.AND.3 + EC        *FORM ERROR CODE 
   MSG EM(BA) TO LINE B6     *POST MESSAGE TO DISPLAY 
   B6 = B6 + 1               *BUMP LINE NUMBER
41 IF(SB(3).AND.177B.GT.40B) GOTO 42  *ERROR .GT. 40B 
   EXIT TO 985    *ENTER CW ERROR PROCESSOR 
42 EXIT TO 986               *ENTER CW ERROR PROCESSOR
   END 25 
COMPILE   - T7X980 -
   MODULE T7X981,67X(44,54,55,53)LOCK  - 67X/ATS STATUS ANALYSIS
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
   BASE DECIMAL 
 2 FORMAT DDLT=*DEC TAPE UNIT LEFT COLUMN FAULT 
 3 FORMAT DDLT=*DEC TAPE UNIT RIGHT COLUMN FAULT
 4 FORMAT DDLT=0321 TAPE UNIT COLUMNS NOT LOADED
 5 FORMAT DDLT=0322 TAPE UNIT LOAD FAILURE. NOT AT BOT
 6 FORMAT DDLT=0323 TAPE UNIT NOT AT BOT AFTER A REWIND 
 7 FORMAT DDLT=0324 TAPE UNIT CLEANER NOT AT HOME 
 8 FORMAT DDLT=0325 TAPE UNIT AIR PRESSURE FAILURE
 9 FORMAT DDLT=0326 TAPE UNIT AIR FLOW MDI
10 FORMAT DDLT=0327 TAPE UNIT AUTOHUB NOT ACTIVATED 
11 FORMAT DDLT=0328 TAPE UNIT NOT READY. NO ERROR STATUS
12 FORMAT DDLT=0331 TAPE SPEED STATUS ERR- EXP=*OCT ACT=*OCT
13 FORMAT DDLT=*DEC TAPE UNIT SLOW START
14 FORMAT DDLT=*DEC TAPE UNIT VELOCITY ERROR
15 FORMAT DDLT=0341 TAPE UNIT DATA NOT READ AFTER WRITE 
16 FORMAT DDLT=0342 TAPE UNIT EARLY READ-AFTER-WRITE EOP
17 FORMAT DDLT=0359 TAPE UNIT ERASE CURRENT FAILURE 
18 FORMAT DDLT=0360 TAPE UNIT WRITE CURRENT FAILURE 
19 FORMAT DDLT=0361 TAPE UNIT AGC FAULT SINCE LAST REWIND 
30 IF(SB(12).AND.BIT0.NE.0) ERROR 5/0, GOTO 40  *LOAD FAIL
   IF(SB(12).AND.BIT6.NE.0) ERROR 2/313,GOTO 40  *LEFT FAULT
   IF(SB(12).AND.BIT5.NE.0) ERROR 3/317,GOTO 40  *RIGHT FAULT 
   IF(SB(14).AND.BIT1.EQ.0) ERROR 4/0,GOTO 40    *NO COLUMNS
   IF(SB(1).AND.BIT2.NE.0) GOTO 31               *IF BOT
   IF(SB(12).AND.BIT0.NE.0) ERROR 5/0,GOTO 40    *LOAD FAIL 
   IF(B7.AND.3.EQ.3) ERROR 6/0,GOTO 40  *REWIND-NOT AT BOT
31 IF(SB(13).AND.BIT2.NE.0) ERROR 7/0,GOTO 40  *CLEANER ACT.
   IF(SB(12).AND.BIT1.NE.0) ERROR 8/0,GOTO 40  *AIR PRESSURE
   IF(SB(13).AND.BIT4.NE.0) ERROR 9/0,GOTO 40  *AIR FLOW
   IF(SB(14).AND.BIT6.EQ.0)ERROR 10/0,GOTO 40  *AUTOHUB 
   IF(SB(1).AND.BIT0.EQ.0) ERROR 11/0,GOTO 40    *NOT READY 
   IF(SB(5).AND.BIT1.NE.0) ERROR 13/333,GOTO 40  *SLOW STRT 
   IF(SB(5).AND.BIT4.NE.0) ERROR 14/337,GOTO 40   *VELOCITY 
   IF(B7.AND.BIT6.NE.0) GOTO 32  *IF IGNORE CAPSTAN SLIP
   IF(SB(9).AND.BIT7.NE.0) ERROR 15/0,GOTO 40     *CAPSTAN
32 IF(B7.AND.BIT7.NE.0) GOTO 33  *IF IGNORE EARLY EOP 
   IF(SB(9).AND.BIT6.NE.0) ERROR 16/0,GOTO 40  *EARLY EOP 
33 IF(B7.AND.BIT8.NE.0) GOTO 34       *IGNORE DATA INTEGRITY
   IF(SB(12).AND.BIT2.NE.0) ERROR 17/0,GOTO 40  *ERASE FAIL 
   IF(SB(11).AND.BIT6.NE.0) ERROR 18/0,GOTO 40  *WRITE FAIL 
   IF(SB(15).AND.BIT7.EQ.0) GOTO 34    *NO AGC FAULT
   MSG 19 TO LINE B6         *POST AGC WARNING MESSAGE
   B6 = B6 + 1               *BUMP LINE NUMBER
34 IF(B7.AND.7000B.NE.0) GOTO 36       *MODE IN B7
   BA = P1.AND.7             *DENSITY FROM USER 
   IF(BA.EQ.2) GOTO 35       *PHASE 
   IF(BA.EQ.4) GOTO 35       *GCR 
   BA = 1                    *NRZI
35 BA = BA.LS.9 
   B7 = B7.OR.BA
36 B1 = 2 
   IF(P0.EQ.100B) GOTO 37              *IF 100 IPS SELECTED 
   B1 = 6 
   IF(P0.EQ.150B) GOTO 37              *IF 150 IPS SELECTED 
   B1 = 5                              *200 IPS SELECTED
37 IF(SB(11).AND.7.EQ.B1) GOTO 38      *IF STATUS AGREES
   B2 = SB(11).AND.7
   MSG 12 (B1,B2) TO LINE B6           *REPORT ERROR
   B6 = B6 + 1
   GOTO 41                             *CONTINUE ANALYSIS 
38 IF(SB(13).AND.BIT5.EQ.0) GOTO 39    *NOT PARKED
   EXIT TO 982               *TEST IBG COUNT
39 IF(B7.AND.BIT8.NE.0) GOTO 41        *IGNORE DATA INTEGRITY 
   EXIT TO 983               *TEST DATA INTEGRITY 
/-------POST PROBLEM ISOLATION CODE AND MESSAGE---- 
40 BA = B7.AND.3 + EC        *FORM ERROR CODE 
   MSG EM(BA) TO LINE B6
   B6 = B6 + 1               *BUMP LINE NUMBER
41 IF(SB(3).AND.177B.GT.40B) GOTO 42   *ERROR .GT. 40B
   EXIT TO 985    *ENTER CW ERROR PROCESSOR 
42 EXIT TO 986               *ENTER CW ERROR PROCESSOR
   END 30 
COMPILE   - T7X981 -
   MODULE T7X982,67X(44,54,55,53)LOCK  - 67X/ATS STATUS ANALYSIS
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
 1 FORMAT DDLT=*DEC TAPE UNIT 9TK GCR/PE PARK COUNT ERROR 
 2 FORMAT           EXPECTED = *DEC   ACTUAL = *DEC 
 3 FORMAT DDLT=*DEC TAPE UNIT 7TK PARK COUNT ERROR
 4 FORMAT           EXPECTED = *DEC   ACTUAL = *DEC 
 5 FORMAT DDLT=*DEC TAPE UNIT 9TK NRZI/PE PARK COUNT ERROR
 6 FORMAT           EXPECTED = *DEC   ACTUAL = *DEC 
 7 FORMAT DDLT=*DEC TAPE UNIT 9TK GCR/PE PARK COUNT ERROR-PE
 8 FORMAT           EXPECTED = *DEC   ACTUAL = *DEC 
   BASE DECIMAL 
20 IF(SB(13).AND.BIT5.EQ.0) GOTO 40  *NOT PARKED
   IF(B7.AND.3.EQ.0) GOTO 40  *NO MOTION
   BA = SB(16).AND.360B.RS.2  *IBG 10-1 *4
   BA = SB(16).AND.360B + BA  *IBG 10-1 *20 
   BA = BA.RS.1               *IBG 10-1 *10 
   BA = SB(16).AND.17B + BA   *IBG COUNT IN OCTAL 
   IF(B7.AND.BIT11.EQ.0) GOTO 21       *NOT GCR 
   B1 = 1                    *ERROR MESSAGE 
   B2 = 22D                  *GCR WRITE 
   B3 = 20D                  *GCR READ FWD
   B4 = 12D                  *GCR READ REV
   GOTO 30
21 IF(B7.AND.BIT9.EQ.0) GOTO 22        *NOT NRZI
   IF(DC.NE.44B) GOTO 22
   B1 = 3                    *ERROR MESSAGE 
   B2 = 38D                  *TK WRITE
   B3 = 54D                  *7TK READ FWD
   B4 = 27D                  *7TK READ REV
   GOTO 30
22 IF(SB(11D).AND.BIT3.NE.0) GOTO 23  *GCR CAPABILITY 
   B1 = 5                    *ERROR MESSAGE 
   B2 = 22D                  *9TK NRZI/PE WRITE 
   B3 = 38D                  *9TK NRZI/PE READ FWD
   B4 = 27D                  *9TK NRZI/PE READ REV
   GOTO 30
23 B1 = 7                    *ERROR MESSAGE 
   B2 = 33D                  *9TK PE/GCR WRITE PE 
   B3 = 41D                  *9TK PE/GCR READ FWD PE
   B4 = 24D                  *9TK PE/GCR READ REV PE
30 B5 = B4
   IF(B7.AND.2.NE.0) GOTO 31   *IF REVERSE MOTION 
   B5 = B2
   IF(B7.AND.4.EQ.0) GOTO 31   *IF WRITE
   B5 = B3                   *SET IT TO READ FWD
31 IF(BA.EQ.B5) GOTO 40        *NO ERROR
   IF(BA+1.EQ.B5) GOTO 40      *+1 IS NO ERROR
   IF(BA-1.EQ.B5) GOTO 40      *-1 IS NO ERROR
   B2 = 343D
   IF(B1.EQ.1) GOTO 32         *IF GCR ERROR
   B2 = 347 
   IF(B1.EQ.3) GOTO 32         *IF 7TK ERROR
   B2 = 351D
   IF(B1.EQ.5) GOTO 32         *IF 9TK NRZI/PE ERROR
   B2 = 355 
32 B2 = B7.AND.3+B2            *FORM ERROR CODE 
   MSG B1 (B2) TO LINE B6 
   B6 = B6+1
   B1 = B1+1
   MSG B1 (B5,BA) TO LINE B6
   B6 = B6 + 1
40 IF(B7.AND.BIT8.NE.0) GOTO 51       *IGNORE DATA INTEGRITY
   EXIT TO 983               *CONTINUE STATUS ANALYSIS
51 IF(SB(3).AND.177B.GT.40B) GOTO 52   *ERROR .GT. 40B
   EXIT TO 985    *ENTER CW ERROR PROCESSOR 
52 EXIT TO 986               *ENTER CW ERROR PROCESSOR
   END 20 
COMPILE   - T7X982 -
   MODULE T7X983,67X(44,54,55,53)LOCK  - 67X/ATS STATUS ANALYSIS
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
   BASE DECIMAL 
 1 FORMAT DDLT=0401 TCU POINTER MERGE ERROR 
 2 FORMAT DDLT=0402 TCU WRITE PATH PARITY ERROR 
 3 FORMAT DDLT=0403 TCU WRITE REGISTER PARITY ERROR 
 4 FORMAT DDLT=0404 TCU READ CODE TRANSLATION PARITY ERROR
 5 FORMAT DDLT=0405 TCU WRITE CODE TRANSLATION PARITY ERROR 
 6 FORMAT DDLT=0406 TCU READ BUS PARITY ERROR 
 7 FORMAT DDLT=0407 TCU GCR WRITE PATH PARITY ERROR 
 8 FORMAT DDLT=0408 TCU GCR WRITE BUS PARITY ERROR
 9 FORMAT DDLT=0409 TCU NRZI WRITE PATH PARITY ERROR
10 FORMAT DDLT=0410 TCU NRZI READ PATH PARITY ERROR 
11 FORMAT DDLT=0411 TCU UPPER ROM PARITY ERROR
12 FORMAT DDLT=0412 TCU LOWER ROM PARITY ERROR
13 FORMAT DDLT=0413 TCU SEQUENCER COMMAND ERROR 
15 FORMAT DDLT=0503 TAPE PARITY - EXCESSIVE SKEW
16 FORMAT DDLT=0504 TAPE PARITY - SINGLE FRAME SKEW 
17 FORMAT DDLT=0505 TAPE PARITY - FALSE EOP 
18 FORMAT DDLT=0506 TAPE PARITY - FALSE FRAME COUNT 
19 FORMAT DDLT=0507 TAPE PARITY - VERTICAL PARITY ERROR 
20 FORMAT DDLT=0508 TAPE PARITY - LONGITUDINAL PARITY ERROR 
21 FORMAT DDLT=0509 TAPE PARITY - CRC DETECTED ERROR
22 FORMAT DDLT=0510 TAPE PARITY - AUX. CRC DETECTED ERROR 
23 FORMAT DDLT=0511 TAPE PARITY - CRC1/CRC2 COMPARE ERROR 
24 FORMAT DDLT=0512 UNEXPLAINED TCU OR TAPE PARITY ERROR
30 BA = 1 
   IF(SB(6).AND.BIT11.NE.0) GOTO 40    *POINTER MERGE ERROR 
   BA = 2 
   IF(SB(6).AND.BIT10.NE.0) GOTO 40    *WRITE PATH ERROR
   BA = 3 
   IF(SB(6).AND.BIT9.NE.0) GOTO 40     *WRITE REGISTER ERROR
   BA = 4 
   IF(SB(6).AND.BIT8.NE.0) GOTO 40     *READ CODE ERROR 
   BA = 5 
   IF(SB(6).AND.BIT7.NE.0) GOTO 40     *WRITE CODE ERROR
   BA = 6 
   IF(SB(6).AND.BIT6.NE.0) GOTO 40     *READ BUS ERROR
   BA = 7 
   IF(SB(6).AND.BIT5.NE.0) GOTO 40     *GCR WRITE PATH ERROR
   BA = 8 
   IF(SB(6).AND.BIT4.NE.0) GOTO 40     *GCR WRITE BUS ERROR 
   BA = 9 
   IF(SB(6).AND.BIT3.NE.0) GOTO 40     *NRZI WRITE PATH 
   BA = 10
   IF(SB(6).AND.BIT2.NE.0) GOTO 40     *NRZI READ PATH
   BA = 11
   IF(SB(7).AND.BIT11.NE.0) GOTO 40    *UPPER ROM ERROR 
   BA = 12
   IF(SB(7).AND.BIT10.NE.0) GOTO 40    *LOWER ROM ERROR 
   BA = 13
   IF(SB(7).AND.BIT9.NE.0) GOTO 40     *SEQUENCER ERROR 
   IF(SB(9).AND.BIT5.NE.0) GOTO 31     *TCU ERASE ERROR 
   IF(SB(6).AND.BIT1.NE.0) GOTO 31     *BAD RESYNC
   IF(SB(4).AND.BIT9.NE.0) GOTO 31   *SINGLE TRK CORRECTION 
   IF(SB(4).AND.BIT10.NE.0) GOTO 31  *DUAL TRK CORRECTION 
   IF(SB(9).AND.BIT9.EQ.0) GOTO 32   *NO CRC CORRECTION 
31 EXIT TO 984               *CONTINUE STATUS ANALYSIS
32 BA = 15
   IF(SB(5).AND.BIT0.NE.0) GOTO 40     *EXCESSIVE SKEW
   BA = 16
   IF(SB(5).AND.BIT6.NE.0) GOTO 40     *SINGLE FRAME SKEW 
   BA = 17
   IF(SB(5).AND.BIT5.NE.0) GOTO 40     *FALSE EOP 
   BA = 18
   IF(SB(5).AND.BIT3.NE.0) GOTO 40     *FRAME COUNT ERROR 
   BA = 19
   IF(SB(5).AND.BIT11.NE.0) GOTO 40    *VERTICAL PE 
   BA = 20
   IF(SB(5).AND.BIT10.NE.0) GOTO 40    *LONG PARITY ERROR 
   BA = 21
   IF(SB(5).AND.BIT9.NE.0) GOTO 40     *CRC DETECTED ERROR
   BA = 22
   IF(SB(5).AND.BIT8.NE.0) GOTO 40     *AUX. CRC ERROR
   BA = 23
   IF(SB(5).AND.BIT7.NE.0) GOTO 40     *CRC COMPARE ERR 
   BA = 24
   IF(SB(3).AND.BIT7.NE.0) GOTO 40     *TCU PARITY
   IF(SB(3).AND.BIT9.EQ.0) GOTO 31     *NO TAPE PARITY
40 MSG BA TO LINE B6         *POST ERROR MESSAGE
   B6 = B6 + 1    *BUMP LINE NUMBER 
41 EXIT TO 984                 *CONTINUE STATUS ANALYSIS
   END 30 
COMPILE   - T7X983 -
   MODULE T7X984,67X(44,54,55,53)LOCK  - 67X/ATS STATUS ANALYSIS
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
   BASE DECIMAL 
 1 FORMAT DDLT=0500 TAPE PARITY - ERASE ERROR 
 2 FORMAT DDLT=0501 TAPE PARITY - BAD RESYNC BURST
 3 FORMAT DDLT=0600 COUPLER/PPU LOST DATA 
 4 FORMAT DDLT=0601 READ ROM/RAM FLAG BIT DETECTED
 5 FORMAT DDLT=0602 FALSE GAP BYPASSED
 6 FORMAT DDLT=0603 NOISE BYPASSED
 7 FORMAT DDLT=0604 COUPLER/PPU LATE DATA 
 8 FORMAT DDLT=*DEC SINGLE TRACK CORRECTION-VALID TKS = 0 
 9 FORMAT DDLT=*DEC SINGLE TRACK CORRECTION-LAST DIGIT = TRK
10 FORMAT DDLT=*DEC DUAL TRACK CORRECTION- VALID TKS = 0
11 FORMAT DDLT=*DEC DUAL TRACK CORRECTION-LAST DIGIT = TRK
12 FORMAT DDLT=*DEC CRC CORRECTABLE ERROR-VALID TKS = 0 
13 FORMAT DDLT=*DEC CRC CORRECTABLE ERROR-LAST DIGIT = TRK
14 FORMAT      *DEC - LAST DIGIT = FAILING TRACK
25 IF(B7.AND.7000B.NE.0) GOTO 30  *B7 = MODE
   BA = P1.AND.7             *DENSITY 
   IF(BA.EQ.2) GOTO 26       *PHASE 
   IF(BA.EQ.4) GOTO 26       *GCR 
   BA = 1                    *NRZI
26 BA = BA.LS.9 
   B7 = B7.OR.BA
30 BA = 1 
   IF(SB(9).AND.BIT5.NE.0) GOTO 50     *ERASE ERROR 
   BA = 2 
   IF(SB(6).AND.BIT1.NE.0) GOTO 50     *BAD RESYNC
   BA = 3 
   IF(SB(3).AND.BIT11.NE.0) GOTO 50    *LOST DATA 
   IF(B7.AND.BIT11.EQ.0) GOTO 31       *NOT GCR MODE
   B7 = B7.AND.734B+3000B    *SET MODE TO GCR WRITE 
31 BA = B7.AND.BIT2.LS.9
   B5 = B7.AND.70B.RS.3      *CONVERT OCTAL TO DECIMAL
   B7 = B7 + BA.RS.6         *ADD R/W BIT - DECIMAL VALUE 
   B7 = B7.AND.70B+B5 
   B7 = B7.RS.2+B7
   BA = B7.LS.3              *MULTIPY BY 10 - ROOM FOR TRACK
   B7 = B7.LS.1 + BA
   BA = 1                    *TRACK MASK
/--------REPORT SINGLE TRACK CORRECTION TRACKS--------
   IF(SB(4).AND.BIT9.EQ.0) GOTO 34     *NO SINGLE TRK CORR. 
   B7 = B7 + 1000            *FORM ERROR CODE 
   IF(SB(7).AND.777B.NE.0)GOTO 32  *VALID TKS .NE.0 
   BA = 8                    *DEAD TRACKS = 0 ERROR MESSAGE 
   GOTO 50
32 B7 = B7 + 1               *BUMP TRACK NUMBER 
   IF(SB(7).AND.BA.EQ.0)GOTO 33  * BIT NOT SET
   MSG 9(B7) TO LINE B6 
   B6 = B6+1                 *BUMP LINE NUMBER
33 BA = BA.LS.1              *NEW BIT MASK
   IF(BA.NE.1000B) GOTO 32   *ALL TRACKS NOT DONE 
   GOTO 51
/--------REPORT DUAL-TRACK CORRECTION TRACKS------
34 IF(SB(4).AND.BIT10.EQ.0) GOTO 37    *NO DUAL-TRK CORR. 
   B7 = B7 + 2000            *FORM ERROR CODE 
   IF(SB(7).AND.777B.NE.0)GOTO 35  *VALID TKS .NE.0 
   BA = 10
   GOTO 50
35 B7 = B7 + 1               *TRACK NUMBER
   IF(SB(7).AND.BA.EQ.0)GOTO 36  * BIT NOT SET
   MSG 11(B7) TO LINE B6     *POST ERROR MESSAGE
   B6 = B6 + 1               *BUMP LINE NUMBER
36 BA = BA.LS.1              *NEW BIT MASK
   IF(BA.NE.1000B) GOTO 35   *ALL TRACKS NOT DONE 
   GOTO 51
/--------REPORT CRC CORRECTABLE TRACKS------------- 
37 IF(SB(9).AND.BIT9.EQ.0) GOTO 40     *NO CRC CORR.
   B7 = B7 + 3000            *FORM ERROR CODE 
   IF(SB(7).AND.777B.NE.0)GOTO 38  *VALID TKS .NE.0 
   BA = 12
   GOTO 50
38 B7 = B7 + 1               *BUMP TRACK NUMBER 
   IF(SB(7).AND.BA.EQ.0)GOTO 39  * BIT NOT SET
   MSG 13(B7) TO LINE B6     *POST ERROR MESSAGE
   B6 = B6 + 1               *BUMP LINE NUMBER
39 BA = BA.LS.1              *NEW BIT MASK
   IF(BA.NE.1000B) GOTO 38   *ALL TRACKS NOT DONE 
40 IF(SB(7).AND.777B.EQ.0) GOTO 47  *NO VALID POINTERS
41 B7 = B7 + 1
   IF(SB(7).AND.BA.EQ.0) GOTO 42  *BIT NOT SET
   MSG 14 (B7) TO LINE B6 
   B6 = B6 + 1
42 BA = BA.LS.1 
   IF(BA.NE.1000B) GOTO 41  *ALL BITS NOT TESTED
47 BA = 4 
   IF(SB(5).AND.BIT2.NE.0) GOTO 50     *FLAG BIT DETECTED 
   BA = 5 
   IF(SB(9).AND.BIT11.NE.0) GOTO 50    *FALSE GAP BYPASSED
   BA = 6 
   IF(SB(9).AND.BIT10.NE.0) GOTO 50    *NOISE BYPASSED
   BA = 7 
   IF(SB(9).AND.BIT8.NE.0) GOTO 50     *LATE DATA 
   GOTO 51
50 MSG BA (B7) TO LINE B6    *POST ERROR MESSAGE
   B6 = B6 + 1    *BUMP LINE NUMBER 
51 IF(SB(3).AND.177B.GT.40B) GOTO 52  *ERROR .GT. 40B 
   EXIT TO 985    *ENTER CW ERROR PROCESSOR 
52 EXIT TO 986               *ENTER CW ERROR PROCESSOR
   END 25 
COMPILE   - T7X984 -
   MODULE T7X985,67X(44,54,55,53)LOCK  - 67X/ATS STATUS ANALYSIS
 1 FORMAT CW ERROR 4001 TAPE UNIT OFF-LINE, NOT POWERED ON
 2 FORMAT CW ERROR 4002 UNIT CONNECTED TO ANOTHER CONTROLLER
 3 FORMAT CW ERROR 4003 TAPE UNIT NUMBER MANUALLY EXCLUDED
 4 FORMAT CW ERROR 4004 TAPE UNIT NOT READY 
 5 FORMAT CW ERROR 4005 TAPE UNIT CHECK OR INTERRUPT
 6 FORMAT CW ERROR 4006 TAPE UNIT MISSING WRITE RING
 7 FORMAT CW ERROR 4007 UNIT NOT CAPABLE OF TAPE'S DENSITY
10 FORMAT CW ERROR 4010 OVER 25 FEET OF BLANK TAPE
12 FORMAT CW ERROR 4012 BAD ID BURST WRITTEN
13 FORMAT CW ERROR 4013 UNIT UNABLE TO SET GAINS ON GCR TAPE
16 FORMAT CW ERROR 4016 NO FILE MARK STATUS AFTER FM FCN
20 FORMAT CW ERROR 4020 TCU FAILED VELOCITY TEST
21 FORMAT CW ERROR 4021 2ND BLOCK NOT READ ON MEASURE GAP 
22 FORMAT CW ERROR 4022 GAP/VELOCITY ERROR ON MEASURE 
30 FORMAT CW ERROR 4030 LOAD POINT UNEXPECTEDLY ENCOUNTERED 
31 FORMAT CW ERROR 4031 N X 16 HARDWARE NEEDED
32 FORMAT CW ERROR 4032 TAPE UNIT BUSY ON REWIND OR DSE 
33 FORMAT CW ERROR 4033 LOOP II NOT ALLOWED IN WRITE MODE 
34 FORMAT CW ERROR 4034 WRITE MUST PRECEDE CONTROL BKSP 
35 FORMAT CW ERROR 4035 TCU NOT CAPABLE OF REQUESTED DENSITY
36 FORMAT CW ERROR 4036 WRITE ATTEMPT AT 200 CPI DENSITY
40 FORMAT CW ERROR 4040 TAPE UNIT GAP CONTROL STATUS FAILED 
41 FORMAT CW ERROR *OCT UNRECOGONIZED CONTROLWARE ERROR CODE
50 FORMAT --------------------------------------------------             T7X010J
60 BA = SB(3).AND.177B       *CONTROLWARE ERROR CODE
   IF(BA.EQ.0) GOTO 71       *IF NO ERROR 
   IF(BA.EQ.1) GOTO 70       *EC = 1
   IF(BA.EQ.2) GOTO 70       *EC = 2
   IF(BA.EQ.3) GOTO 70       *EC = 3
   IF(BA.EQ.4) GOTO 70       *EC = 4
   IF(BA.EQ.5) GOTO 70       *EC = 5
   IF(BA.EQ.6) GOTO 70       *EC = 6
   IF(BA.EQ.7) GOTO 70       *EC = 7
   IF(BA.EQ.10) GOTO 70      *EC = 10 
   IF(BA.EQ.12) GOTO 70      *EC = 12 
   IF(BA.EQ.13) GOTO 70      *EC = 13 
   IF(BA.EQ.16) GOTO 70      *EC = 16 
   IF(BA.EQ.20) GOTO 70      *EC = 20 
   IF(BA.EQ.21) GOTO 70      *EC = 21 
   IF(BA.EQ.22) GOTO 70      *EC = 22 
   IF(BA.EQ.30) GOTO 70      *EC = 30 
   IF(BA.EQ.31) GOTO 70      *EC = 31 
   IF(BA.EQ.32) GOTO 70      *EC = 32 
   IF(BA.EQ.33) GOTO 70      *EC = 33 
   IF(BA.EQ.34) GOTO 70      *EC = 34 
   IF(BA.EQ.35) GOTO 70      *EC = 35 
   IF(BA.EQ.36) GOTO 70      *EC = 44 
   IF(BA.EQ.40) GOTO 70      *EC = 40 
   BA = BA+4000              *ILLEGAL ERROR CODE
   MSG 41(BA) TO LINE B6
   GOTO 71
70 MSG BA TO LINE B6
71 B6 = B6 + 1                                                           T7X010J
   MSG 50 TO LINE B6                                                     T7X010J
   PICTURE                                                               T7X010J
   HALT 
   BLANK
   BA = IB(467B)             *RESTORE REGISTERS 
   B0 = IB(470B)
   B1 = IB(471B)
   B2 = IB(472B)
   B3 = IB(473B)
   B4 = IB(474B)
   B5 = IB(475B)
   B6 = IB(476B)
   B7 = IB(477B)
/         ATTEMPT TO INSURE CONTROLLER IS RUNNING 
   RES P1, ABT 72 
   SELECT CLEAR, ABT 72 
   REL, ABT 72
   EXIT                      *ALL IS WELL 
72 RESET, ABT 73             *RESTART CONTROLLER ON ABORT 
   GOTO 74
73 RESET, ABT 74             *TRY TO START IT TWICE 
74 REL, ABT 75
75 EXIT 
   END 60 
COMPILE   - T7X985 -
   MODULE T7X986,67X(44,54,55,53)LOCK  - 67X/ATS STATUS ANALYSIS
   BASE DECIMAL 
 1 FORMAT CW ERROR 4140 TAPE UNIT FAILED TO EXECUTE A DSE 
 2 FORMAT CW ERROR 4041 TAPE UNIT FAILED TO REACH SPEED 
 3 FORMAT CW ERROR 4141 TAPE UNIT REVERSE STATUS STUCK
 4 FORMAT CW ERROR 4042 TAPE UNIT UNEXPECTEDLY STOPPED
 5 FORMAT CW ERROR 4142 TAPE UNIT FAILED TO STOP
 6 FORMAT CW ERROR 4043 ERASE HEAD CURRENT FAILED TO TURN ON
 7 FORMAT CW ERROR 4143 TAPE UNIT WRITE STATUS STUCK
 8 FORMAT CW ERROR 4044 TAPE UNIT WILL NOT REWIND 
 9 FORMAT CW ERROR 4144 TAPE UNIT WILL NOT REWIND-UNLOAD
10 FORMAT CW ERROR 4145 TAPE UNIT FORWARD STATUS STUCK
11 FORMAT CW ERROR 4046 MISSING READ AFTER WRITE END OF OP
12 FORMAT CW ERROR 4047 TAPE UNIT FAILED TO SELECT DENSITY
13 FORMAT CW ERROR 4050 ILLEGAL FUNCTION
14 FORMAT CW ERROR 4051 NO TAPE UNIT CONNECTED
15 FORMAT CW ERROR 4052 NO FUNCTION PARAMETERS SENT 
16 FORMAT CW ERROR 4055 CHANNEL PE ON LAST NON-STATUS FCN 
17 FORMAT CW ERROR 4061 CHANNEL NOT FULL AT START OF WRITE
18 FORMAT CW ERROR 4062 CHANNEL NOT ACTIVE IN TIME FOR READ 
19 FORMAT CW ERROR 4063 CHANNEL UNEXPECTEDLY BECAME ACTIVE
20 FORMAT CW ERROR 4064 CHANNEL HUNG ACTIVE AND EMPTY 
21 FORMAT CW ERROR 4065 CHANNEL HUNG ACTIVE AND FULL
22 FORMAT CW ERROR 4070 INTERNAL DIAGNOSTIC FAILURE 
23 FORMAT CW ERROR *OCT UNRECOGONIZED CONTROLWARE ERROR CODE
24 FORMAT --------------------------------------------------             T7X010J
30 BA = SB(3).AND.177B       *CONTROLWARE ERROR CODE
   IF(BA.EQ.140B) ERROR 1/0, GOTO 40   *EC = 140
   IF(BA.EQ.41B) ERROR 2/0, GOTO 40    *EC = 41 
   IF(BA.EQ.141B) ERROR 3/0, GOTO 40   *EC = 141
   IF(BA.EQ.42B) ERROR 4/0, GOTO 40    *EC = 42 
   IF(BA.EQ.142B) ERROR 5/0, GOTO 40   *EC = 142
   IF(BA.EQ.43B) ERROR 6/0, GOTO 40    *EC = 43 
   IF(BA.EQ.143B) ERROR 7/0, GOTO 40   *EC = 143
   IF(BA.EQ.44B) ERROR 8/0, GOTO 40    *EC = 44 
   IF(BA.EQ.144B) ERROR 9/0, GOTO 40   *EC = 144
   IF(BA.EQ.145B) ERROR 10/0, GOTO 40  *EC = 145
   IF(BA.EQ.46B) ERROR 11/0, GOTO 40   *EC = 46 
   IF(BA.EQ.47B) ERROR 12/0, GOTO 40   *EC = 47 
   IF(BA.EQ.50B) ERROR 13/0, GOTO 40   *EC = 50 
   IF(BA.EQ.51B) ERROR 14/0, GOTO 40   *EC = 51 
   IF(BA.EQ.52B) ERROR 15/0, GOTO 40   *EC = 52 
   IF(BA.EQ.55B) ERROR 16/0, GOTO 40   *EC = 55 
   IF(BA.EQ.61B) ERROR 17/0, GOTO 40   *EC = 61 
   IF(BA.EQ.62B) ERROR 18/0, GOTO 40   *EC = 62 
   IF(BA.EQ.63B) ERROR 19/0, GOTO 40   *EC = 63 
   IF(BA.EQ.64B) ERROR 20/0, GOTO 40  *EC = 64
   IF(BA.EQ.65B) ERROR 21/0, GOTO 40  *EC = 65
   IF(BA.EQ.70B) ERROR 22/0, GOTO 40  *EC = 70
   BA = BA+4000B             *ILLEGAL ERROR CODE
   MSG 23(BA) TO LINE B6
   GOTO 41
40 MSG EM TO LINE B6
41 B6 = B6 + 1                                                           T7X010J
   MSG 24 TO LINE B6                                                     T7X010J
   PICTURE                                                               T7X010J
   HALT 
   BLANK
   BA = IB(467B)             *RESTORE REGISTERS 
   B0 = IB(470B)
   B1 = IB(471B)
   B2 = IB(472B)
   B3 = IB(473B)
   B4 = IB(474B)
   B5 = IB(475B)
   B6 = IB(476B)
   B7 = IB(477B)
/         ATTEMPT TO INSURE CONTROLLER IS RUNNING 
   RES P1, ABT 44 
   SELECT CLEAR, ABT 44 
   REL, ABT 44
   EXIT                      *ALL IS WELL 
44 RESET, ABT 45             *RESTART CONTROLLER ON ABORT 
   GOTO 46
45 RESET, ABT 46             *TRY TO START IT TWICE 
46 REL, ABT 47
47 EXIT 
   END 30 
COMPILE   - T7X986 -
   MODULE T7X988,6000(44,54,55,53)LOCK
*** T7X988 - STATUS REPORTING FOR LOW-LEVEL MODULES 
* 
**  T7X988 - EXTERNAL DOCUMENTATION 
* 
*   OVERVIEW -
* 
*         T7X988 CAN BE ENTERED FROM ANY LOW-LEVEL MODULE IN THE T7X
*         TEST SERIES.  THIS MODULE POSTS CURRENT STATUS INFORMATION
*         AND DOES NOT PERFORM ANY I/O.  INFORMATION IS DISPLAYED IN
*         THE SAME FORMAT USED FOR HIGH-LEVEL MODULES.
* 
 1 FORMAT   CH=*OCT  EQ=*OCT  UN=*OCT  DC=*OCT  EA=*OCT 
 2 FORMAT   LF=*OCT LSF=*OCT  WC=*OCT  WT=*OCT*OCT
 3 FORMAT   FILE=*OCT  RECORD=*OCT     ERROR COUNT=*OCT 
 4 FORMAT   SB(1-8) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 5 FORMAT   SB(9-16)=*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 6 FORMAT   OB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
 7 FORMAT   IB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
10 FORMAT   B0-B7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
11 FORMAT   P0-P7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
12 FORMAT   P8-P9   =*OCT *OCT
13 FORMAT --------------------------------------------------
14 FORMAT               DATA ERROR(S) 
15 FORMAT   ERR.. WD=*OCT  AC=*OCT  EX=*OCT  DIFF=*OCT
20 MSG 1 (SB(70),SB(71),SB(72),DC,EA) TO LINE 2 
   MSG 2 (LF,12,WC,0,WT) TO LINE 3
   MSG 3 (B0,B1,BA) TO LINE 4 
   MSG 4, 8 WORDS FROM SB(1) TO LINE 5
   MSG 5, 8 WORDS FROM SB(9) TO LINE 6
   MSG 6, 8 WORDS FROM OB TO LINE 7 
   MSG 7, 8 WORDS FROM IB TO LINE 10
   MSG 10 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE 11
   MSG 11 (P0,P1,P2,P3,P4,P5,P6,P7) TO LINE 12
   MSG 12 (P8,P9) TO LINE 13
   MSG 13 TO LINE 14
   IF(EC.EQ.105) GOTO 30     *IF DATA COMPARE ERROR 
   IF(EC.NE.257) GOTO 34     *IF NO DATA COMPARE ERROR
30 MSG 14 TO LINE 14
   IB(473) = B3              *SAVE REGISTERS TO BE USED 
   IB(474) = B4 
   IB(475) = B5 
   IB(476) = B6 
   B6 = 15                   *MESSAGE LINE NUMBER 
   B5 = 0                    *BUFFER INDEX
   B3 = B6 + 4               *LAST DATA ERROR LINE
31 B4 = IB(B5).XOR.OB(B5) 
   IF(B4.EQ.0) GOTO 32       *IF DATA WORDS AGREE 
   MSG 15 (B5,IB(B5),OB(B5),B4) TO LINE B6
   B6 = B6 + 1
32 B5 = B5 + 1               *BUMP BUFFER INDEX 
   IF(WT-1.LE.B5) GOTO 33    *IF ALL WORDS TESTED 
   IF(B6.NE.B3) GOTO 31      *IF FOUR ERRORS NOT REPORTED 
33 MSG 13 TO LINE B6
   B3 = IB(473)              *RESTORE USED REGISTERS
   B4 = IB(474) 
   B5 = IB(475) 
   B6 = IB(476) 
34 PICTURE
   HALT 
   BLANK
   EXIT 
   END 20 
COMPILE   - T7X988 -
   MODULE T7X990,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
 1 FORMAT ROM EC 5141 RD XFER REGS.  WR PATH PE UPPER.
 2 FORMAT ROM EC 5142 RD XFER REGS.  WR PATH PE LOWER.
 3 FORMAT ROM EC 5143 RD XFER REGS.  MEMORY PE. 
 4 FORMAT ROM EC 5144 RD XFER REGS.  BUS IN OR RD PATH PE.
 5 FORMAT ROM EC 5145 RD XFER REGS.  READ PATH PE.
 6 FORMAT ROM EC 5146 RD XFER REGS.  BUS OUT FAULT. 
 7 FORMAT ROM EC 5147 RD XFER REGS.  TAG OUT FAULT UPPER. 
10 FORMAT ROM EC 5150 RD XFER REGS.  TAG OUT FAULT LOWER. 
11 FORMAT ROM EC 5151 RD XFER REGS.  FLAG BIT DETECTED. 
12 FORMAT ROM EC 5152 RD XFER REGS.  MIN BLK LENG NOT MET.
13 FORMAT ROM EC 5153 RD XFER REGS.  SELECT IN RECEIVED.
14 FORMAT ROM EC 5154 RD XFER REGS.  NO REQ IN ON POLL SEQ. 
15 FORMAT ROM EC 5155 RD XFER REGS.  DEVICE ADDR MISCOMPARE.
16 FORMAT ROM EC 5156 RD XFER REGS.  TIME OUT ON CCC XFER.
17 FORMAT ROM EC 5157 RD XFER REGS.  UNDEFINED ERROR. 
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
60 IF(BA.GT.157) EXIT TO 991  *MORE ERROR CODES 
   IF(BA.EQ.141) ERROR 1/0, GOTO 71       *EC = 141 
   IF(BA.EQ.142) ERROR 2/0, GOTO 71       *EC = 142 
   IF(BA.EQ.143) ERROR 3/0, GOTO 71       *EC = 143 
   IF(BA.EQ.144) ERROR 4/0, GOTO 71       *EC = 144 
   IF(BA.EQ.145) ERROR 5/0, GOTO 71       *EC = 145 
   IF(BA.EQ.146) ERROR 6/0, GOTO 71       *EC = 146 
   IF(BA.EQ.147) ERROR 7/0, GOTO 71       *EC = 147 
   IF(BA.EQ.150) ERROR 10/0, GOTO 71      *EC = 150 
   IF(BA.EQ.151) ERROR 11/0, GOTO 71      *EC = 151 
   IF(BA.EQ.152) ERROR 12/0, GOTO 71      *EC = 152 
   IF(BA.EQ.153) ERROR 13/0, GOTO 71      *EC = 153 
   IF(BA.EQ.154) ERROR 14/0, GOTO 71      *EC = 154 
   IF(BA.EQ.155) ERROR 15/0, GOTO 71      *EC = 155 
   IF(BA.EQ.156) ERROR 16/0, GOTO 71      *EC = 156 
   IF(BA.EQ.157) ERROR 17/0, GOTO 71      *EC = 157 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X990 -
   MODULE T7X991,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
 1 FORMAT ROM EC 5161 DIAG WR SEQ.  WR PATH PE UPPER. 
 2 FORMAT ROM EC 5162 DIAG WR SEQ.  WR PATH PE LOWER. 
 3 FORMAT ROM EC 5163 DIAG WR SEQ.  MEMORY PE.
 4 FORMAT ROM EC 5164 DIAG WR SEQ.  BUS IN OR RD PATH PE. 
 5 FORMAT ROM EC 5165 DIAG WR SEQ.  READ PATH PE. 
 6 FORMAT ROM EC 5166 DIAG WR SEQ.  BUS OUT FAULT.
 7 FORMAT ROM EC 5167 DIAG WR SEQ.  TAG OUT FAULT UPPER.
10 FORMAT ROM EC 5170 DIAG WR SEQ.  TAG OUT FAULT LOWER.
11 FORMAT ROM EC 5171 DIAG WR SEQ.  FLAG BIT DETECTED.
12 FORMAT ROM EC 5172 DIAG WR SEQ.  MIN BLK LENG NOT MET. 
13 FORMAT ROM EC 5173 DIAG WR SEQ.  SELECT IN RECEIVED. 
14 FORMAT ROM EC 5174 DIAG WR SEQ.  NO REQ IN ON POLL SEQ.
15 FORMAT ROM EC 5175 DIAG WR SEQ.  DEVICE ADDR MISCOMPARE. 
16 FORMAT ROM EC 5176 DIAG WR SEQ.  TIME OUT ON CCC XFER. 
17 FORMAT ROM EC 5177 DIAG WR SEQ.  UNDEFINED ERROR.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5160 TRANSFER REGISTER DATA MISCOMPARE.
60 IF(BA.GT.177) EXIT TO 992  *MORE ERROR CODES 
   IF(BA.EQ.160) ERROR 22/0, GOTO 71      *EC = 160 
   IF(BA.EQ.161) ERROR 1/0, GOTO 71       *EC = 161 
   IF(BA.EQ.162) ERROR 2/0, GOTO 71       *EC = 162 
   IF(BA.EQ.163) ERROR 3/0, GOTO 71       *EC = 163 
   IF(BA.EQ.164) ERROR 4/0, GOTO 71       *EC = 164 
   IF(BA.EQ.165) ERROR 5/0, GOTO 71       *EC = 165 
   IF(BA.EQ.166) ERROR 6/0, GOTO 71       *EC = 166 
   IF(BA.EQ.167) ERROR 7/0, GOTO 71       *EC = 167 
   IF(BA.EQ.170) ERROR 10/0, GOTO 71      *EC = 170 
   IF(BA.EQ.171) ERROR 11/0, GOTO 71      *EC = 171 
   IF(BA.EQ.172) ERROR 12/0, GOTO 71      *EC = 172 
   IF(BA.EQ.173) ERROR 13/0, GOTO 71      *EC = 173 
   IF(BA.EQ.174) ERROR 14/0, GOTO 71      *EC = 174 
   IF(BA.EQ.175) ERROR 15/0, GOTO 71      *EC = 175 
   IF(BA.EQ.176) ERROR 16/0, GOTO 71      *EC = 176 
   IF(BA.EQ.177) ERROR 17/0, GOTO 71      *EC = 177 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X991 -
   MODULE T7X992,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
 1 FORMAT ROM EC 5201 RD BLOCK ID.  WR PATH PE UPPER. 
 2 FORMAT ROM EC 5202 RD BLOCK ID.  WR PATH PE LOWER. 
 3 FORMAT ROM EC 5203 RD BLOCK ID.  MEMORY PE.
 4 FORMAT ROM EC 5204 RD BLOCK ID.  BUS IN OR RD PATH PE. 
 5 FORMAT ROM EC 5205 RD BLOCK ID.  READ PATH PE. 
 6 FORMAT ROM EC 5206 RD BLOCK ID.  BUS OUT FAULT.
 7 FORMAT ROM EC 5207 RD BLOCK ID.  TAG OUT FAULT UPPER.
10 FORMAT ROM EC 5210 RD BLOCK ID.  TAG OUT FAULT LOWER.
11 FORMAT ROM EC 5211 RD BLOCK ID.  FLAG BIT DETECTED.
12 FORMAT ROM EC 5212 RD BLOCK ID.  MIN BLK LENG NOT MET. 
13 FORMAT ROM EC 5213 RD BLOCK ID.  SELECT IN RECEIVED. 
14 FORMAT ROM EC 5214 RD BLOCK ID.  NO REQ IN ON POLL SEQ.
15 FORMAT ROM EC 5215 RD BLOCK ID.  DEVICE ADDR MISCOMPARE. 
16 FORMAT ROM EC 5216 RD BLOCK ID.  TIME OUT ON CCC XFER. 
17 FORMAT ROM EC 5217 RD BLOCK ID.  UNDEFINED ERROR.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5200 FULL/EMPTY CNTR WRONG AFTER WR DIAG SEQ.
60 IF(BA.GT.217) EXIT TO 993  *MORE ERROR CODES 
   IF(BA.EQ.200) ERROR 22/0, GOTO 71      *EC = 200 
   IF(BA.EQ.201) ERROR 1/0, GOTO 71       *EC = 201 
   IF(BA.EQ.202) ERROR 2/0, GOTO 71       *EC = 202 
   IF(BA.EQ.203) ERROR 3/0, GOTO 71       *EC = 203 
   IF(BA.EQ.204) ERROR 4/0, GOTO 71       *EC = 204 
   IF(BA.EQ.205) ERROR 5/0, GOTO 71       *EC = 205 
   IF(BA.EQ.206) ERROR 6/0, GOTO 71       *EC = 206 
   IF(BA.EQ.207) ERROR 7/0, GOTO 71       *EC = 207 
   IF(BA.EQ.210) ERROR 10/0, GOTO 71      *EC = 210 
   IF(BA.EQ.211) ERROR 11/0, GOTO 71      *EC = 211 
   IF(BA.EQ.212) ERROR 12/0, GOTO 71      *EC = 212 
   IF(BA.EQ.213) ERROR 13/0, GOTO 71      *EC = 213 
   IF(BA.EQ.214) ERROR 14/0, GOTO 71      *EC = 214 
   IF(BA.EQ.215) ERROR 15/0, GOTO 71      *EC = 215 
   IF(BA.EQ.216) ERROR 16/0, GOTO 71      *EC = 216 
   IF(BA.EQ.217) ERROR 17/0, GOTO 71      *EC = 217 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X992 -
   MODULE T7X993,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
 1 FORMAT ROM EC 5221 DIAG RD SEQ.  WR PATH PE UPPER. 
 2 FORMAT ROM EC 5222 DIAG RD SEQ.  WR PATH PE LOWER. 
 3 FORMAT ROM EC 5223 DIAG RD SEQ.  MEMORY PE.
 4 FORMAT ROM EC 5224 DIAG RD SEQ.  BUS IN OR RD PATH PE. 
 5 FORMAT ROM EC 5225 DIAG RD SEQ.  READ PATH PE. 
 6 FORMAT ROM EC 5226 DIAG RD SEQ.  BUS OUT FAULT.
 7 FORMAT ROM EC 5227 DIAG RD SEQ.  TAG OUT FAULT UPPER.
10 FORMAT ROM EC 5230 DIAG RD SEQ.  TAG OUT FAULT LOWER.
11 FORMAT ROM EC 5231 DIAG RD SEQ.  FLAG BIT DETECTED.
12 FORMAT ROM EC 5232 DIAG RD SEQ.  MIN BLK LENG NOT MET. 
13 FORMAT ROM EC 5233 DIAG RD SEQ.  SELECT IN RECEIVED. 
14 FORMAT ROM EC 5234 DIAG RD SEQ.  NO REQ IN ON POLL SEQ.
15 FORMAT ROM EC 5235 DIAG RD SEQ.  DEVICE ADDR MISCOMPARE. 
16 FORMAT ROM EC 5236 DIAG RD SEQ.  TIME OUT ON CCC XFER. 
17 FORMAT ROM EC 5237 DIAG RD SEQ.  UNDEFINED ERROR.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5220 BLOCK ID WRONG AFTER DIAG WRITE SEQ.
60 IF(BA.GT.237) EXIT TO 994  *MORE ERROR CODES 
   IF(BA.EQ.220) ERROR 22/0, GOTO 71      *EC = 220 
   IF(BA.EQ.221) ERROR 1/0, GOTO 71       *EC = 221 
   IF(BA.EQ.222) ERROR 2/0, GOTO 71       *EC = 222 
   IF(BA.EQ.223) ERROR 3/0, GOTO 71       *EC = 223 
   IF(BA.EQ.224) ERROR 4/0, GOTO 71       *EC = 224 
   IF(BA.EQ.225) ERROR 5/0, GOTO 71       *EC = 225 
   IF(BA.EQ.226) ERROR 6/0, GOTO 71       *EC = 226 
   IF(BA.EQ.227) ERROR 7/0, GOTO 71       *EC = 227 
   IF(BA.EQ.230) ERROR 10/0, GOTO 71      *EC = 230 
   IF(BA.EQ.231) ERROR 11/0, GOTO 71      *EC = 231 
   IF(BA.EQ.232) ERROR 12/0, GOTO 71      *EC = 232 
   IF(BA.EQ.233) ERROR 13/0, GOTO 71      *EC = 233 
   IF(BA.EQ.234) ERROR 14/0, GOTO 71      *EC = 234 
   IF(BA.EQ.235) ERROR 15/0, GOTO 71      *EC = 235 
   IF(BA.EQ.236) ERROR 16/0, GOTO 71      *EC = 236 
   IF(BA.EQ.237) ERROR 17/0, GOTO 71      *EC = 237 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X993 -
   MODULE T7X994,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
 1 FORMAT ROM EC 5240 CCC ADDR INCORRECT AFTER DIAG WR SEQ. 
 2 FORMAT ROM EC 5250 DIAGNOSTIC RD DATA PATTERN INCORRECT. 
 3 FORMAT ROM EC 5251 XFER REG ERROR AFTER DIAG RD SEQ. 
 4 FORMAT ROM EC 5252 BLOCK ID WRONG AFTER DIAG RD SEQ. 
 5 FORMAT ROM EC 5253 CCC I/F SEQUENCE DID NOT COMPLETE.
 6 FORMAT ROM EC 5254 DATA STREAM DIAG READ TIME OUT. 
 7 FORMAT ROM EC 5255 DATA STREAM DIAG WRITE TIME OUT.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
60 IF(BA.GT.255) EXIT TO 995  *MORE ERROR CODES 
   IF(BA.EQ.240) ERROR 1/0, GOTO 71       *EC = 240 
   IF(BA.EQ.250) ERROR 2/0, GOTO 71       *EC = 250 
   IF(BA.EQ.251) ERROR 3/0, GOTO 71       *EC = 251 
   IF(BA.EQ.252) ERROR 4/0, GOTO 71       *EC = 252 
   IF(BA.EQ.253) ERROR 5/0, GOTO 71       *EC = 253 
   IF(BA.EQ.254) ERROR 6/0, GOTO 71       *EC = 254 
   IF(BA.EQ.255) ERROR 7/0, GOTO 71       *EC = 255 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X994 -
   MODULE T7X995,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
 1 FORMAT ROM EC 5261 STRM DIAG ERR.  WR PATH PE UPPER. 
 2 FORMAT ROM EC 5262 STRM DIAG ERR.  WR PATH PE LOWER. 
 3 FORMAT ROM EC 5263 STRM DIAG ERR.  MEMORY PE.
 4 FORMAT ROM EC 5264 STRM DIAG ERR.  BUS IN OR RD PATH PE. 
 5 FORMAT ROM EC 5265 STRM DIAG ERR.  READ PATH PE. 
 6 FORMAT ROM EC 5266 STRM DIAG ERR.  BUS OUT FAULT.
 7 FORMAT ROM EC 5267 STRM DIAG ERR.  TAG OUT FAULT UPPER.
10 FORMAT ROM EC 5270 STRM DIAG ERR.  TAG OUT FAULT LOWER.
11 FORMAT ROM EC 5271 STRM DIAG ERR.  FLAG BIT DETECTED.
12 FORMAT ROM EC 5272 STRM DIAG ERR.  MIN BLK LENG NOT MET. 
13 FORMAT ROM EC 5273 STRM DIAG ERR.  SELECT IN RECEIVED. 
14 FORMAT ROM EC 5274 STRM DIAG ERR.  NO REQ IN ON POLL SEQ.
15 FORMAT ROM EC 5275 STRM DIAG ERR.  DEVICE ADDR MISCOMPARE. 
16 FORMAT ROM EC 5276 STRM DIAG ERR.  TIME OUT ON CCC XFER. 
17 FORMAT ROM EC 5277 STRM DIAG ERR.  UNDEFINED ERROR.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5300 DATA STREAM DIAG RD BLOCK ID WRONG. 
60 IF(BA.GT.300) EXIT TO 996  *MORE ERROR CODES 
   IF(BA.EQ.300) ERROR 22/0, GOTO 71      *EC = 300 
   IF(BA.EQ.261) ERROR 1/0, GOTO 71       *EC = 261 
   IF(BA.EQ.262) ERROR 2/0, GOTO 71       *EC = 262 
   IF(BA.EQ.263) ERROR 3/0, GOTO 71       *EC = 263 
   IF(BA.EQ.264) ERROR 4/0, GOTO 71       *EC = 264 
   IF(BA.EQ.265) ERROR 5/0, GOTO 71       *EC = 265 
   IF(BA.EQ.266) ERROR 6/0, GOTO 71       *EC = 266 
   IF(BA.EQ.267) ERROR 7/0, GOTO 71       *EC = 267 
   IF(BA.EQ.270) ERROR 10/0, GOTO 71      *EC = 270 
   IF(BA.EQ.271) ERROR 11/0, GOTO 71      *EC = 271 
   IF(BA.EQ.272) ERROR 12/0, GOTO 71      *EC = 272 
   IF(BA.EQ.273) ERROR 13/0, GOTO 71      *EC = 273 
   IF(BA.EQ.274) ERROR 14/0, GOTO 71      *EC = 274 
   IF(BA.EQ.275) ERROR 15/0, GOTO 71      *EC = 275 
   IF(BA.EQ.276) ERROR 16/0, GOTO 71      *EC = 276 
   IF(BA.EQ.277) ERROR 17/0, GOTO 71      *EC = 277 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X995 -
   MODULE T7X996,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
 1 FORMAT ROM EC 5311 WR STS STRM DIAG.  WR PATH PE UPPER.
 2 FORMAT ROM EC 5312 WR STS STRM DIAG.  WR PATH PE LOWER.
 3 FORMAT ROM EC 5313 WR STS STRM DIAG.  MEMORY PE. 
 4 FORMAT ROM EC 5314 WR STS STRM DIAG.  BUS IN OR WR PATH PE.
 5 FORMAT ROM EC 5315 WR STS STRM DIAG.  READ PATH PE.
 6 FORMAT ROM EC 5316 WR STS STRM DIAG.  BUS OUT FAULT. 
 7 FORMAT ROM EC 5317 WR STS STRM DIAG.  TAG OUT FAULT UPPER. 
10 FORMAT ROM EC 5320 WR STS STRM DIAG.  TAG OUT FAULT LOWER. 
11 FORMAT ROM EC 5321 WR STS STRM DIAG.  FLAG BIT DETECTED. 
12 FORMAT ROM EC 5322 WR STS STRM DIAG.  MIN BLK LENG NOT MET.
13 FORMAT ROM EC 5323 WR STS STRM DIAG.  SELECT IN RECEIVED.
14 FORMAT ROM EC 5324 WR STS STRM DIAG.  NO REQ IN ON POLL SEQ. 
15 FORMAT ROM EC 5325 WR STS STRM DIAG.  DEVICE ADDR MISCOMPARE.
16 FORMAT ROM EC 5326 WR STS STRM DIAG.  TIME OUT ON CCC XFER.
17 FORMAT ROM EC 5327 WR STS STRM DIAG.  UNDEFINED ERROR. 
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5330 DATA STREAM DIAG WRITE BLOCK ID WRONG.
60 IF(BA.GT.330) EXIT TO 997  *MORE ERROR CODES 
   IF(BA.EQ.330) ERROR 22/0, GOTO 71      *EC = 330 
   IF(BA.EQ.311) ERROR 1/0, GOTO 71       *EC = 311 
   IF(BA.EQ.312) ERROR 2/0, GOTO 71       *EC = 312 
   IF(BA.EQ.313) ERROR 3/0, GOTO 71       *EC = 313 
   IF(BA.EQ.314) ERROR 4/0, GOTO 71       *EC = 314 
   IF(BA.EQ.315) ERROR 5/0, GOTO 71       *EC = 315 
   IF(BA.EQ.316) ERROR 6/0, GOTO 71       *EC = 316 
   IF(BA.EQ.317) ERROR 7/0, GOTO 71       *EC = 317 
   IF(BA.EQ.320) ERROR 10/0, GOTO 71      *EC = 320 
   IF(BA.EQ.321) ERROR 11/0, GOTO 71      *EC = 321 
   IF(BA.EQ.322) ERROR 12/0, GOTO 71      *EC = 322 
   IF(BA.EQ.323) ERROR 13/0, GOTO 71      *EC = 323 
   IF(BA.EQ.324) ERROR 14/0, GOTO 71      *EC = 324 
   IF(BA.EQ.325) ERROR 15/0, GOTO 71      *EC = 325 
   IF(BA.EQ.326) ERROR 16/0, GOTO 71      *EC = 326 
   IF(BA.EQ.327) ERROR 17/0, GOTO 71      *EC = 327 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X996 -
   MODULE T7X997,67X(53)LOCK   - 698/CMST STATUS ANALYSIS - 
 1 FORMAT ROM EC 5401 SYSTEM RESET ERR AFTER CKSM MICROCODE.
 2 FORMAT ROM EC 5402 CYBER I/F STATUS ERR DURING AUTOLOAD. 
 3 FORMAT ROM EC 5403 RAM RESIDENT CKSM ERR AFTER AUTOLOAD. 
 4 FORMAT ROM EC 5404 RAM MEM TEST ERR BEFORE ATLD MICROCODE. 
 5 FORMAT ROM EC 5501 TIME OUT FROM DISK DEVICE.
 6 FORMAT ROM EC 5502 DISK SEEK ERR.
 7 FORMAT ROM EC 5503 DISK SEEK ENDING STATUS ERR.
10 FORMAT ROM EC 5504 DOUBLE TAPE MARK ERR ON TAPE 6UU FCN. 
11 FORMAT ROM EC 5505 TAPE OR DISK READ DATA RECORD ERR.
12 FORMAT ROM EC 5507 SYSTEM RESET SEQUENCE ERR.
13 FORMAT ROM EC 5510 DISK SEARCH/READ TIME OUT ERROR.
14 FORMAT ROM EC 5600 SYSTEM RESET SEQUENCE ERR.
15 FORMAT ROM EC 5601 INITIAL SELECT/REWIND SEQUENCE ERR. 
16 FORMAT ROM EC 5602 CAN'T LOCATE MICROCODE RECORD ON TAPE.
17 FORMAT ROM EC 5603 INPUT MICROCODE RECORD ERR. 
20 FORMAT ROM EC 5604 RAM MICROCODE CHECKSUM ERR. 
22 FORMAT ROM EC 5605 FINAL SELECT/REWIND SEQUENCE ERR. 
23 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
60 IF(BA.EQ.605) ERROR 22/0, GOTO 71      *EC = 630 
   IF(BA.EQ.401) ERROR 1/0, GOTO 71       *EC = 401 
   IF(BA.EQ.402) ERROR 2/0, GOTO 71       *EC = 402 
   IF(BA.EQ.403) ERROR 3/0, GOTO 71       *EC = 403 
   IF(BA.EQ.404) ERROR 4/0, GOTO 71       *EC = 404 
   IF(BA.EQ.501) ERROR 5/0, GOTO 71       *EC = 501 
   IF(BA.EQ.502) ERROR 6/0, GOTO 71       *EC = 502 
   IF(BA.EQ.503) ERROR 7/0, GOTO 71       *EC = 503 
   IF(BA.EQ.504) ERROR 10/0, GOTO 71      *EC = 504 
   IF(BA.EQ.505) ERROR 11/0, GOTO 71      *EC = 505 
   IF(BA.EQ.507) ERROR 12/0, GOTO 71      *EC = 507 
   IF(BA.EQ.510) ERROR 13/0, GOTO 71      *EC = 510 
   IF(BA.EQ.600) ERROR 14/0, GOTO 71      *EC = 324 
   IF(BA.EQ.601) ERROR 15/0, GOTO 71      *EC = 325 
   IF(BA.EQ.602) ERROR 16/0, GOTO 71      *EC = 326 
   IF(BA.EQ.603) ERROR 17/0, GOTO 71      *EC = 327 
   IF(BA.EQ.604) ERROR 20/0, GOTO 71      *EC = 327 
70 BA = BA+5000              *ILLEGAL ERROR CODE
   MSG 23(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 998               *RELOAD REGISTERS
   END 60 
COMPILE   - T7X997 -
   MODULE T7X998,67X(53)LOCK   - LOAD REGISTERS AND RESTART CONTROLLER
20 BA = IB(427B)
   B0 = IB(430B)
   B1 = IB(431B)
   B2 = IB(432B)             *RELOAD REGISTERS
   B3 = IB(433B)
   B4 = IB(434B)
   B5 = IB(435B)
   B6 = IB(436B)
   B7 = IB(437B)
   B8 = IB(440B)
   B9 = IB(441B)
   B10 = IB(442B) 
   B11 = IB(443B) 
   B12 = IB(444B) 
   B13 = IB(445B) 
   B14 = IB(446B) 
   B15 = IB(447B) 
*         ATTEMPT TO INSURE CONTROLLER IS RUNNING 
   RES P1, ABT 73 
   SELECT CLEAR, ABT 73 
   REL, ABT 73
   EXIT                      *ALL IS WELL 
73 RESET, ABT 74             *RESTART CONTROLLER ON ABORT 
   GOTO 75
74 RESET, ABT 75             *TRY TO START IT TWICE 
75 REL, ABT 76
76 EXIT 
   END 20 
COMPILE   - T7X998 -
   MODULE T7X99,67X(44,54,55,53)LOCK  - T7X MODULES 
*** T7X MODULES LIST
**
* 
*   DESCRIPTION - T7X99 PROVIDES A BRIEF DESCRIPTION OF THE 
*                MODULES THAT MAKE UP THE T7X TEST SERIES.
*                THIS LIST CAN BE VIEWED ON THE SYSTEM K/L
*                DISPLAY OR LOADED AND PRINTED. 
* 
/ 
/   1.1   PART ONE - DIAGNOSTIC PASS
/ 
/      1. VERIFY PARAMETERS 
/ 
/         T7X00 - PARAMETER VALIDATION
/ 
/ 
/      2. INSURE CONTROLLER IS OPERATIONAL
/         (T7X04 - T7X05 ARE NOT RUN ON 698/CMTS SUBSYSTEM) 
/ 
/         T7X02 - COUPLER PATH
/         T7X03 - TCU LOOP-BACK 
/         T7X04 - TCU ERROR GENERATION
/         T7X05 - TCU VELOCITY
/ 
/ 
/      3. TEST UNIT DATA INTEGRITY WITH NO TAPE MOTION
/         (T7X11 IS NOT RUN ON 698/CMTS SUBSYSTEM)
/ 
/         T7X10 - UNIT I/O LOOPBACK 
/         T7X11 - UNIT HEAD LOOPBACK
/ 
/      4. VERITY TAPE HANDLING CAPABILITIES 
/         (T7X22 IS NOT RUN ON 698/CMTS SUBSYSTEM)
/ 
/         T7X20 - LOOPS AND VELOCITY
/         T7X21 - RANDOM LOOPS AND VELOCITY 
/         T7X22 - PARK COUNTS 
/ 
/ 
/      5. PRELIMINARY DATA INTEGRITY TESTING BY TRACK 
/ 
/         T7X23 - TRACK TEST
/ 
/ 
/      6. VERIFY START/STOP TIMES/DISTANCE AND TAPE TRACKING. 
/         (T7X30 - T7X36 ARE NOT RUN ON 698/CMTS SUBSYSTEM) 
/ 
/         T7X30 - WRITE TAPE FOR MEASUREMENTS 
/         T7X31 - FORWARD START MEASUREMENTS
/         T7X32 - REVERSE START MEASUREMENTS
/         T7X33 - FORWARD GAP MEASUREMENTS
/         T7X34 - REVERSE GAP MEASUREMENTS
/         T7X36 - TAPE TRACKING 
/ 
/ 
/      7. TEST DATA INTEGRITY OF SINGLE OPERATIONS
/ 
/         T7X40 - ERASE 
/         T7X41 - WRITE TAPE MARK/FILE MARK 
/         T7X42 - READ TAPE MARK/FILE MARK
/         T7X43 - WRITE 
/         T7X44 - READ FORWARD
/         T7X45 - READ FORWARD/REVERSE
/         T7X46 - CANNED POLYNOMIAL 
/         T7X47 - CAPSTAN GO DOWN-TIME                                   T7X008J
/ 
/ 
/      8. PERFORMANCE TEST USING SEQUENCES OF OPERATIONS
/         (T7X52, T7X54, T7X61  ARE NOT RUN ON 698/CMTS SUBSYSTEM)
/         (T7X63 DOES NOT RUN ON 67X/ATS SUBSYSTEM).
/ 
/         T7X50 - BACKSPACE 
/         T7X51 - BACKSPACE INCREMENTING LENGTH 
/         T7X52 - CONTROLLED BACKSPACE
/         T7X53 - CONTROLLED BACKSPACE INCR. LENGTH 
/         T7X54 - WRITE SKIP TO ERASE 
/         T7X55 - WRITE SKIP INCR. LENGTH 
/         T7X56 - RANDOM WRITE
/         T7X57 - RANDOM READ FORWARD /REVERSE
/         T7X58 - POLYNOMIAL TEST 
/         T7X59 - POSITION TEST 
/         T7X60 - LADDER TEST 
/         T7X61 - 9TK READ RECOVERY 
/         T7X62 - READ CLIP LEVELS TEST 
/         T7X63 - BLOCK ID TEST 
/ 
/ 
/   1.2   PART TWO - REPAIR MODULES                                      T7X009J
/         (T7X71 IS NOT RUN ON 698/CMTS SUBSYSTEM)
/                                                                        T7X009J
/         T7X70 - TAPE PATH DAMAGE                                       T7X009J
/         T7X71 - CREEP                                                  T7X009J
/         T7X72 - GENERAL STATUS                                         T7X009J
/         T7X73 - SERVO ADJUST                                           T7X009J
/         T7X75 - SEARCH FILE MARK TEST (AL 10 REQUIRED)
/         T7X76 - NOISE BYPASS TEST     (AL 10 REQUIRED)
/         T7X77 - WARMSTART READ TEST   (AL 10 REQUIRED)
/         T7X80 - COMPATIBILITY TEST
/         T7X81 - COMPATIBILITY TAPE CLEANUP
/         T7X82 - KILLER/RANDOM PATTERN FOR GCR 
/         T7X83 - KILLER/RANDOM W/PRU RECOVERY ON SINGLE TRK
/         T7X84 - MAINTENANCE LONG WRITE
/         T7X85 - KILLER/RANDOM W/PRU RECOVERY ON POINTERS
/         T7X86 - INHIBITOR TAPE TEST ONE 
/         T7X87 - INHIBITOR TAPE TEST TWO 
/         T7X93 - READ AND DISPLAY TRACK ERRORS 
/ 
 1 PAUSE
   EXIT TO 99A
   END 1
COMPILE,SOURCE   - T7X99 -
   MODULE T7X99A,67X(44,54,55,53)LOCK  - T7X PARAMETERS - 
*** T7X PARAMETERS (P0 - P9)
**
* 
*   OVERVIEW -
* 
*         T7X99A PROVIDES A DESCRIPTION OF THE
*         PARAMETERS FOR VIEWING AT THE  K/L DISPLAY. 
*         THESE HAVE BEEN PREVIOUSLY DESCRIBED IN THE 
*         EXTERNAL DOCUMENTATI0N. 
* 
* 
* 
/  -PARAMETER REGISTER SETTINGS-
/ 
/  P0 - TAPE SPEED   VALUE INDICATES SPEED AS FOLLOWS - 
/       100 = 100 IPS 
/       125 = 125 IPS 
/       150 = 150 IPS 
/       200 = 200 IPS 
/ 
/  P1 - TAPE ID (PCAD)
/  PXXX - PARITY
/  -    0XXX = ODD PARITY  - CORRECTION ENABLED 
/       1XXX = EVEN PARITY - CORRECTION ENABLED 
/       2XXX = ODD PARITY  - CORRECTION DISABLED
/                            WRITE/READ/FWD 
/       3XXX = EVEN PARITY - CORRECTION DISABLED
/                            WRITE/READ/FWD 
/       6XXX = ODD PARITY  - CORRECTION DISABLED
/                            WRITE/READ/FWD/REV 
/       7XXX = EVEN PARITY - CORRECTION DISABLED
/                            WRITE/READ/FWD/REV 
/  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
/       X4XX =  USE CODE TRANSLATION TABLE 4
/       X7XX =  INTERNAL TO EXTERNAL TRANSLATION IF EVEN
/               PARITY AND 7 TRACK
/            =  NO TRANSLATION IF ODD PARITY AND 7 TRACK
/  XXAX - ASSEMBLY/DISASSEMBLY
/    -  XX0X =  A/D 6-BIT MODE
/       XX1X =  A/D PACKED MODE 
/  XXXD - DENSITY 
/     - XXX0 =  556 BPI 
/       XXX1 =  800 BPI 
/       XXX2 =  1600 BPI
/       XXX3 =  200 BPI 
/       XXX4 =  6250 BPI
/ 
/  P2 = RECORD LENGTH 
/ 
/  P3 = FLAG BITS / MARGINS 
/  FXXX - FLAG BITS 
/  -    1XXX = PRINT START/GAP PLOTS EVEN IF NO ERRORS
/  XCXX - CLIP LEVEL 67X/ATS
/   -   X0XX =  NORMAL CLIP      *NOT USED 0N 698/CMTS
/       X1XX =  HIGH READ CLIP   *NOT USED 0N 698/CMTS
/       X2XX =  LOW READ CLIP    *NOT USED 0N 698/CMTS
/       X3XX =  HYPER READ CLIP  *ILLEGAL 0N 698/CMTS 
/  XXFF - FLAG BITS 
/    -- XX4X =  MAINTENANCE MODE (0=DIAGNOSTIC PASS)
/       XX2X =  BYPASS WAIT *PARKED* IF BIT IS SET
/       XX1X =  N/A 
/       XXX4 =  LOCK TO BASE NUMBER - IF RANDOM PATTERN IS
/               SELECTED P7 WILL CONTAIN THE BASE NUMBER FOR
/               PATTERN GENERATION. 
/       XXX2 =  COMPARE DATA - COMPARES THE FIRST 400 OCTAL 
/               WORDS OF THE INPUT BUFFER EVEN IF NO ERRORS 
/               OCCUR.
/       XXX1 =  BYPASS RECORD NUMBERING 
/               IF THE BIT IS CLEAR POSITION DATA IS PLACED 
/               IN THE OUTPUT BUFFER DURING WRITE OPERATIONS
/               AS FOLLOWS -
/               OB(1) = CURRENT FILE NUMBER 
/               OB(2) = CURRENT RECORD NUMBER 
/               OB(3) = RECORD LENGTH 
/ 
/  P4 - DATA PATTERN GENERATION CONTROL 
/       4XXX - REPORT FM/TM ERRORS (ERR - 207)
/       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).
/       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 STORED IN THE 2ND, 4TH, 
/              6TH ETC BYTES. 
/       0XXX - SELECT FIXED PATTERN XXX 
/              XXX IS A 6 OR 8 BIT PATTERN DEPENDING ON 
/              DRIVE TYPE(7 OR 9 TRACK).
/ 
/  P5 - RANDOM MILISECOND DELAY MASK
/       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 MILISECOND DELAY
/       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 (DOUBLE EOFS FOR 
/              T7X93) TO WRITE/READ PER MODULE. 
/       XXXX - MAXIMUM NUMBER OF PASSES TO READ IN
/              MODULES T7X83A, T7X85A, T7X83C AND T7X85C. 
/ 
/  P9 - RECORD COUNT
/       0000 - INFINITE RECORD COUNT
/              RESULTS IN COMPLETE USE OF TAPE BETWEEN BOT
/              AND EOT. 
/       XXXX - MAXIMUM NUMBER OF RECORDS TO WRITE/READ PER
/              FILE.
/       SSSS - SYSTEM ID FOR MODULE T7X80.
/       0000 - WRITE THE TAPE IN MODULES T7X83, T7X85 T7X83B
/              AND T7X85B.
01 PAUSE
   END 1
COMPILE,SOURCE    -T7X99A-
