*DECK,F7X 
*** F7X - FEDERAL STANDARD CHANNEL TAPE SUBSYSTEM.
*** F7X - FEDERAL STANDARD CHANNEL TAPE SUBSYSTEM.
**
* 
* 
*   AUTHOR   - KAMAL MUSTAFA. 
*            - G. D. WATKINS. 
* 
*              MAINTENANCE SOFTWARE REQUIREMENTS
*              LARGE SYSTEMS DIAGNOSTIC DEVELOPMENT DEPARTMENT
* 
*   DATE     - 81/04/14 
* 
*              COPYRIGHT  CONTROL DATA CORP. 1981 
* 
***1.0   INTRODUCTION 
** 1.0   INTRODUCTION 
*  1.0   INTRODUCTION 
*        ------------ 
* 
*        F7X IS  A TEST  FOR  THE FEDERAL STANDARD CHANNEL TAPE 
*        SUBSYSTEM  WRITTEN  IN  THE  MALET  LANGUAGE.   F7X  IS
*        COMPOSED OF TWO GROUPS OF MODULES.THE FIRST GROUP CAN BE USED
*        AS A CONFIDENCE LEVEL TEST OR MODULES CAN  BE  USED  INDEPEN-
*        DENTLY 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 
* 
*          F7X09 - READ TAPE MARKS    F7X08 - WRITE TAPE MARKS
*          F7X11,12 - READ            F7X10 - WRITE 
*          F7X20    - RANDOM READ     F7X19 - RANDOM WRITE
* 
*        THE MAJORITY OF F7X 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  ARE  PRESENTED  AS  OUTPUT.   THE
*        FOLLOWING MODULES DO NOT SUPPORT SCOPING LOOPS.
* 
*          F7X00 - PARAMETER VALIDATION 
*          F7X21 - POLYNOMIAL TEST
*          F7X22 - POSITION TEST
*          F7X23 - LADDER TEST
*          F7X32 - SERVO ADJUST 
* 
*        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, FILE  COUNT  AND  RECORD  COUNT ( SEE
*        MODULE  F7X99  FOR  PARAMETER SETTINGS). 
* 
*        F7X IS STRUCTURED AS AN INVERTED PYRAMID TEST WHICH WORKS ITS
*        WAY  THROUGH  THE  FSC  ADAPTER  AND  TAPE  SUBSYSTEM  TRYING
*        TO  PROVE  THAT  EACH   PIECE  OF THE SUBSYSTEM IS FUNCTIONAL
*        BEFORE USING IT IN  MORE  COMPLEX  TESTS.
* 
*        ONCE AN ERROR HAS BEEN DETECTED, A TYPICAL MODULE WILL CALL A
*        STATUS ANALYSIS MODULE TO ANALYZE THE LAST  TAKEN  STATUS  TO
*        DETERMINE THE MOST SERIOUS ERROR THAT EXISTS.   THIS  RESULTS
*        IN THE POSTING OF AN  ERROR  CODE  WITH  A MESSAGE THAT GIVES
*        THE VERBAL DESCRIPTION OF THE ERROR. 
* 
* 
* 
***1.1   PART ONE - TEST PASS 
** 1.1   PART ONE - TEST PASS 
*  1.1   PART ONE - TEST PASS 
*        -------------------- 
* 
*        1. VERIFY PARAMETERS 
* 
*           F7X00 - PARAMETER VALIDATION
* 
* 
*        2. INSURE ADAPTER IS OPERATIONAL 
* 
*           F7X01 - ADAPTER PATH
* 
* 
*        3. TEST UNIT DATA INTEGRITY WITH NO TAPE MOTION
* 
*           F7X02 - ADAPTER LOOPBACK
*           F7X03 - UNIT I/O LOOPBACK 
* 
*        4. VERITY TAPE HANDLING CAPABILITIES 
* 
*           F7X04 - LOOPS AND VELOCITY
*           F7X05 - RANDOM LOOPS AND VELOCITY 
* 
* 
*        5. PRELIMINARY DATA INTEGRITY TESTING BY TRACK 
* 
*           F7X06 - TRACK TEST
* 
* 
*        6. TEST DATA INTEGRITY OF SINGLE OPERATIONS
* 
*           F7X07 - ERASE 
*           F7X08 - WRITE TAPE MARK/FILE MARK 
*           F7X09 - READ TAPE MARK/FILE MARK
*           F7X10 - WRITE 
*           F7X11 - READ FORWARD
*           F7X12 - READ FORWARD/REVERSE
*           F7X13 - CANNED POLYNOMIAL 
*           F7X14 - CAPSTAN GO DOWN-TIME TEST 
* 
* 
*        7. PERFORMANCE TEST USING SEQUENCES OF OPERATIONS
* 
*           F7X15 - BACKSPACE 
*           F7X16 - BACKSPACE INCREMENTING LENGTH 
*           F7X17 - WRITE SKIP TO ERASE 
*           F7X18 - WRITE SKIP INCR. LENGTH 
*           F7X19 - RANDOM WRITE
*           F7X20 - RANDOM READ FORWARD /REVERSE
*           F7X21 - POLYNOMIAL TEST 
*           F7X22 - POSITION TEST 
*           F7X23 - LADDER TEST 
*           F7X24 - READ CLIP LEVELS TEST 
* 
***1.2   PART TWO - REPAIR MODULES
** 1.2   PART TWO - REPAIR MODULES
*  1.2   PART TWO - REPAIR MODULES
*        -------------------------
* 
*           F7X30 - TAPE PATH DAMAGE
*           F7X31 - GENERAL STATUS
*           F7X32 - SERVO ADJUST
*           F7X33 - SEARCH FILE MARK TEST (AL 10 REQUIRED)
*           F7X34 - NOISE BYPASS TEST     (AL 10 REQUIRED)
*           F7X35 - WARMSTART READ TEST   (AL 10 REQUIRED)
* 
* 
* 
***1.3   RESTRICTIONS 
** 1.3   RESTRICTIONS 
*  1.3   RESTRICTIONS 
*        ------------ 
* 
*        1. ANY MICROCODE OR CONTROLWARE IS ASSUMED TO BE LOADED. 
* 
* 
***1.4   CHARACTERISTICS
** 1.4   CHARACTERISTICS
*  1.4   CHARACTERISTICS
*        ---------------
* 
*        1.  PROGRAM NAME..................................F7X. 
* 
*        2.  TEST/DIAG/UTILITY/SYSTEM.....................TEST. 
* 
*        3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER........MALET. 
* 
*        4.  RUN TIME (DEFAULT)...................9 MIN 38 SEC.*
* 
*        5.  RUN TIME/QUICK LOOK (DEFAULT).................N/A. 
* 
*        6.  LEVEL OF ISOLATION......................DETECTION. 
* 
*        7.  ON-LINE/OFF-LINE/BOTH........................BOTH. 
* 
*        8.  ON-LINE SYSTEM.........................NOS,NOS/BE. 
* 
*        9.  OFF-LINE SYSTEM............................MSL100. 
* 
*        10. ASSEMBLY LANGUAGE...........................MALET. 
* 
*        11. SOURCE CODE MAINTENANCE....................UPDATE. 
* 
*        * NOTE - P0 = 200
*                 P1 = 12 
*                 P2 = 500
*                 TAPE LENGTH = 600 FEET
* 
* 
***1.5   APPLICABLE DOCUMENTS 
** 1.5   APPLICABLE DOCUMENTS 
*  1.5   APPLICABLE DOCUMENTS 
*        -------------------- 
* 
*        1. ENGINEERING  SPECIFICATION  NO. 10358283, FEDERAL STANDARD
*           CHANNEL ADAPTER.
* 
*           FIPS PUB 60   I/O  CHANNEL  INTERFACE 
*                         CATEGORY - HARDWARE STANDARD
*                         SUBCATEGORY - INTERFACE 
* 
*           FIPS PUB 61   CHANNEL LEVEL POWER CONTROL INTERFACE 
*                         CATEGORY - HARDWARE STANDARD, 
*                         SUBCATEGORY - INTERFACE 
* 
*           FIPS PUB 62   OPERATIONAL SPECIFICATION FOR TAPE
*                         SUBSYSTEM.
* 
*           FEDERAL  STANDARD  CHANNEL  ADAPTER  MB401-A   CONTROLWARE
*           EXTERNAL REFERENCE SPECIFICATION PUB NO 53695246
* 
*        2. MALET REFERENCE MANUAL (PUB. NO. 60456020)
* 
*IF,-DEF,CMSE17X,1
*        3. CML REFERENCE MANUAL (PUB. NO. 60455860)
* 
*ENDIF
*IF,DEF,CMSE17X 
*        3. DEMOT REFERENCE MANUAL (PUB.NO.60455310)
* 
*ENDIF
*        4. MSL100 OFF-LINE  MAINTENANCE  SYSTEM  LIBRARY,  VOLUME  1,
*           REFERENCE MANUAL (PUB. NO. 60455770)
* 
*        5. DEMOT REFERENCE MANUAL (PUB.NO. 60456310) 
* 
* 
***2.0   PROGRAM DESCRIPTION
** 2.0   PROGRAM DESCRIPTION
*  2.0   PROGRAM DESCRIPTION
*        -------------------
* 
***2.1   PROGRAM NAME 
** 2.1   PROGRAM NAME 
*  2.1   PROGRAM NAME 
*        ------------ 
* 
*        ABSTRACT 
*        -------- 
* 
* 
***2.1.1 MODULES
** 2.1.1 MODULES
*  2.1.1 MODULES
*        -------
* 
* 
*        F7X00 - PARAMETER VALIDATION 
*        -----------------------------
*        F7X00  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 F7X. 
* 
* 
*        F7X01 - ADAPTER PATH 
*        -------------------- 
*        F7X01 VERIFIES THAT THE ADAPTER PATH IS STABLE.  THIS IS DONE
*        BY  COMPLETING  2  READ  CONVERSION   MEMORY   FUNCTIONS  AND
*        COMPARING THE DATA FROM THE 2 READS.  THIS  TECHNIQUE  CANNOT
*        DETECT SOLID BIT FAILURES. 
* 
* 
*        F7X02 - ADAPTER LOOPBACK 
*        ------------------------ 
*        F7X02  VERIFIES  THAT  THE  LOOPFSC  (RUN FSC DI DIAGNOSTICS)
*        FUNCTION OPERATES PROPERLY.
* 
* 
*        F7X03 - UNIT I/O LOOPBACK
*        -------------------------
*        F7X03 VERIFIES THAT THE UNIT IS CAPABLE OF PERFORMING  WRITES
*        AND SHORT WRITES THROUGH THE UNIT 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. 
* 
* 
*        F7X04 - LOOPS AND VELOCITY 
*        -------------------------- 
*        F7X04  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. 
* 
* 
*        F7X05 - RANDOM LOOPS AND VELOCITY
*        ---------------------------------
*        F7X05 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  INCRE-
*        MENTING  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.
* 
* 
*        F7X06 - TRACK TEST 
*        ------------------ 
*        F7X06 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.
*        THIS IS REPEATED 10 TIMES. 
* 
* 
*        F7X07 - ERASE
*        -------------
*        AN  ERASE  FUNCTION IS ISSUED, THEN GENERAL STATUS IS CHECKED
*        FOR AN *ALERT*. THIS PROCESS CONTINUES UNTIL FILE MAX OR  EOT
*        IS REACHED.
* 
* 
*        F7X08 - WRITE FILEMARK/TAPEMARK
*        -------------------------------
*        WRITE FILEMARK/TAPEMARK UNTIL FILE MAX OR EOT IS ENCOUNTERED.
* 
* 
*        F7X09 - READ FILEMARK/TAPEMARK 
*        ------------------------------ 
*        THIS  MODULE  IS  DEPENDENT  ON  THE  TAPE  CREATED BY MODULE
*        F7X08. 
* 
*        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 LOAD-
*        POINT IS ENCOUNTERED.
* 
* 
*        F7X10 - MAINTENANCE WRITE
*        -------------------------
*        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.
* 
* 
*        F7X11 - MAINTENANCE READ 
*        ------------------------ 
*        THIS  MODULE  READS THE TAPE CREATED BY MODULE F7X10, MAINTE-
*        NANCE 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  CON-
*        TINUES  IN THE FORWARD DIRECTION UNTIL RECORD MAX OR FILE MAX
*        OR -EOT- IS REACHED. 
* 
* 
*        F7X12 - READ FORWARD/REVERSE 
*        ---------------------------- 
*        THIS  MODULE  READS THE TAPE CREATED BY MODULE F7X10, MAINTE-
*        NANCE 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 *F7X12A* AND READING CONTINUES UNTIL  LOADPOINT
*        IS REACHED.
* 
*        F7X12  (READ  FORWARD) SUPPORTS REPEAT CONDITION BY REWINDING
*        THE TAPE AND  CONTINUING  THE  READ  FORWARD.   F7X12A  (READ
*        REVERSE)  DOES   NOT  SUPPORT REPEAT CONDITION DUE TO THE IN-
*        ABILITY TO CORRECTLY POSITION TAPE.
* 
* 
*        F7X13 - CANNED POLYNOMIAL TEST 
*        ------------------------------ 
*        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 POLY-
*        NOMIALS 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. 
* 
* 
*        F7X14 - CAPSTAN GO DOWN-TIME TEST
*        ---------------------------------
*        F7X14  VERIFIES  THAT  THERE ARE NO DEAD SPOTS IN THE CAPSTAN
*        SERVO SYSTEM AT REPETITION  PERIODS  OF  APPROX.  250  MICRO-
*        SECONDS TO 1.25 MSEC IN STEPS OF 10 MICROSECONDS.  10 RECORDS
*        ARE WRITTEN AT  EACH  TIME  INTERVAL  FOR  A  TOTAL  OF  1000
*        RECORDS. 
* 
* 
*        F7X15 - BACKSPACE
*        -----------------
* 
*        F7X15 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.
* 
* 
*        F7X16 - BACKSPACE INCR. LENGTH 
*        ------------------------------ 
*        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.
* 
* 
*        F7X17 - WRITE SKIP TO ERASE
*        ---------------------------
*        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. 
* 
* 
*        F7X18 - WRITE SKIP, INCR. LENGTH 
*        -------------------------------- 
*        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. 
* 
* 
*        F7X19 - RANDOM WRITE 
*        -------------------- 
*        F7X19 CREATES THE TAPE USED FOR RANDOM READ IN MODULE -F7X20-
* 
*        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.
* 
* 
*        F7X20 - RANDOM  READ (FORWARD PORTION) 
*        -------------------------------------- 
*        THE  TAPE  USED BY THIS MODULE MUST BE CREATED BY -F7X19-.  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 -F7X20A- IS EXECUTED AND
*        A  REVERSE  READ  IS  PERFORMED UNTIL LOAD POINT IS DETECTED.
* 
*        F7X20  (READ  FORWARD) SUPPORTS REPEAT CONDITION BY REWINDING
*        THE TAPE AND  CONTINUING  THE  READ  FORWARD.   F7X20A  (READ
*        REVERSE)   DOES  NOT  SUPPORT REPEAT CONDITION DUE TO THE IN-
*        ABILITY TO CORRECTLY POSITION TAPE.
* 
* 
*        F7X21 - POLYNOMIAL TEST
*        -----------------------
*        F7X21 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.
* 
* 
*        F7X22 - POSITION TEST
*        ---------------------
*        F7X22  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).
* 
*        F7X22 RUNS TO EOT OR FILE MAX. 
* 
* 
*        F7X23 - LADDER  TEST 
*        -------------------- 
*        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  DECRE-
*        MENTED  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.
* 
* 
*        F7X24 - READ CLIP LEVELS  TEST 
*        ------------------------------ 
*        THIS  MODULE VERIFIES THE ABILITY TO READ DATA WRITTEN IN THE
*        USER-DEFINED DENSITY AT ALL READ CLIP LEVELS  (NORMAL,  HIGH,
*        AND  LOW). 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, AND LOW (ONLY APPLICABLE TO 7 TRACK).
* 
*        REPEAT   CONDITION,  REPEAT  MODULE  AND  SCOPING  LOOPS  ARE
*        SUPPORTED. 
* 
* 
*        F7X30 - TAPE PATH DAMAGE 
*        ------------------------ 
*        F7X30 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).
* 
* 
*        F7X31 - GENERAL STATUS 
*        ---------------------- 
*        F7X31  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 SUBSYSTEM PROBLEMS INVOLVING THE CONNECT
*        SEQUENCE.
* 
* 
*        F7X32 - SERVO ADJUST 
*        -------------------- 
*        F7X32  ALLOWS  THE  USER TO PERFORM CAPSTAN SERVO ADJUSTMENTS
*        ON-LINE.  THE MODULE IS DESIGNED TO  RUN  CONTINUOUSLY  UNTIL
*        THE  UNIT  IS MADE NOT READY (RESET KEY). ONCE THE USER MAKES
*        THE UNIT READY AGAIN,  THE  MODULE  TERMINATES.   ALL  ERRORS
*        EXCEPT NOT READY ARE IGNORED BY THIS MODULE. 
* 
* 
*        F7X33 - SEARCH FILE MARK TEST
*        -----------------------------
*        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 F7X33 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. 
* 
* 
*        F7X34 - NOISE BYPASS TEST
*        -------------------------
*        THIS MODULE VERIFIES THAT THE NOISE BYPASS CAPABILITY OF  THE
*        SUBSYSTEM  IS  FUNCTIONAL.   ONLY  REVERSE  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 F7X34 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. 
* 
* 
*        F7X35 - WARMSTART READ TEST
*        ---------------------------
*        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 F7X35 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. 
* 
* 
*        F7X98A-F7X98F - ERROR CODE PROCESSING
*        -------------------------------------
*        MODULE  F7X98A CAN BE CALLED BY ANY TEST MODULE THAT MAKES UP
*        F7X.  F7X98A 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  F7X980  TO
*        PERFORM STATUS ANALYSIS AND TO PRESENT A COMPOSITE PICTURE OF
*        THE FAILURE TO THE USER. 
* 
*        F7X98A 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 -
* 
*          F7X98A -  ERROR CODES 105 - 207
*          F7X98B -  ERROR CODES 211 - 215
*          F7X98C -  ERROR CODES 226 - 241
*          F7X98D -  ERROR CODES 242 - 254
*          F7X98E -  ERROR CODES 255 - 267
*          F7X98F -  ERROR CODES 274 - 275
* 
* 
*        F7X980-F7X987 - STATUS ANALYSIS
*        -------------------------------
*        F7X980  CAN BE ENTERED FROM ANY TEST MODULE THAT MAKES UP F7X
*        OR FROM MODULES F7X98A-F7X98E  (ERROR  CODE  PROCESSING  MOD-
*        ULES). F7X980 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 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 = FSC LOOPBACK OPTION ACTIVE
*          XX2X = UNIT LOOPBACK  OPTION ACTIVE
* 
*          XXX0 = NO MOTION 
*          XXX1 = FWD WRITE MOTION
*          XXX3 = REWIND MOTION 
*          XXX4 = NO MOTION (NOT USED)
*          XXX5 = FWD READ MOTION 
*          XXX6 = REV READ MOTION 
*          XXX7 = REWIND (NOT USED) 
* 
* 
*        F7X980 WILL ADD 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. 
* 
*          F7X980 - UNIT FAILURE ANALYSIS 
*          F7X981 - UNIT FAILURE ANALYSIS 
*          F7X983 - ADAPTER PARITY ANALYSIS 
*          F7X984 - CORRECTABLE ERROR ANALYSIS
*          F7X985 - DETAILED STATUS ERROR ANALYSIS
*          F7X986 - DETAILED STATUS ERROR ANALYSIS
*          F7X987 - DETAILED STATUS ERROR ANALYSIS
* 
* 
*        WHEN THE ANALYSIS IS COMPLETE,MODULE F7X985, F7X986 OR F7X987
*        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). 
* 
* 
*        F7X988 - STATUS REPORTING FOR LOW-LEVEL MODULES
*        -----------------------------------------------
*        F7X988  CAN  BE  ENTERED FROM ANY LOW-LEVEL MODULE IN THE F7X
*        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. 
* 
* 
*        F7X99 - MODULES LIST 
*        -------------------- 
*        F7X99  PROVIDES  A BRIEF DESCRIPTION OF THE MODULES THAT MAKE
*        UP THE F7X TEST SERIES.
* 
* 
*        F7X99A - F7X PARAMETERS (P0 - P9)
*        ---------------------------------
*        F7X99A  PROVIDES  A DESCRIPTION OF THE PARAMETERS FOR VIEWING
*        AT THE  K/L DISPLAY. 
* 
* 
***2.1.2 DESCRIPTION DETAILED 
** 2.1.2 DESCRIPTION DETAILED 
*  2.1.2 DESCRIPTION DETAILED 
*        -------------------- 
* 
*        OPERATIONAL PROCEDURE
*        ---------------------
* 
*        1.  REFER  TO  THE MALET REFERENCE MANUAL (PUB.  NO.60456020)
*            FOR A DETAILED DESCRIPTION OF THE MALET LANGUAGE.
* 
*IF -DEF,CMSE17X
*        2.  REFER  TO THE CML REFERENCE MANUAL (PUB. NO. 60455980) TO
*            RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS. 
*ENDIF
* 
*        3.  REFER  TO THE DEMOT REFERENCE MANUAL (PUB.  NO. 60456310)
*            TO RUN DEMOT UNDER THE CMSE OPERATING SYSTEM.
* 
*        4.  REFER TO THE MSL100 OFF-LINE MAINTENANCE SYSTEM  LIBRARY,
*            VOLUME  1, REFERENCE MANUAL (PUB. NO.60455770) TO RUN THE
*            CMSE OFF-LINE MAINTENANCE SYSTEM.
***2.1.3 LOADING PROCEDURE
** 2.1.3 LOADING PROCEDURE
*  2.1.3 LOADING PROCEDURE
*         ----------------- 
*        ** WARNING ** - THE FOLLOWING LOADING PROCEDURES ARE INTENDED
*                        AS  GENERAL  EXAMPLES  ONLY  AND  MAY REQUIRE
*                        MODIFICATION WHEN USED IN A SPECIFIC ENVIRON-
*                        MENT.
* 
*IF -DEF,CMSE17X
*        TO  INSTALL  THE  F7X MALET MODULES AS PERMANENT FILES ON THE
*        NOS/BE OPERATING SYSTEM, RUN THE FOLLOWING JOB-
* 
*          JOB/ACCOUNT CARDS. 
*          REQUEST,OLDPL,MT,VSN=CML.
*          UPDATE,Q.
*          REQUEST,RFILE,*PF. 
*          MALET,I=COMPILE,LO=S.
*          CATALOG,RFILE,F7X,ID=YOUR ID.
*          UNLOAD,RFILE.
*          7/8/9
*          *C F7X 
*          6/7/8/9
* 
*        TO  INSTALL  THE  F7X MALET MODULES AS PERMANENT FILES ON THE
*        NOS OPERATING SYSTEM, RUN THE FOLLOWING JOB- 
* 
*          JOB/USER/ACCOUNT CARDS.
*          REQUEST,OLDPL,MT,D=HY,F=SI,LB=KU,VSN=CML.
*          UPDATE,Q.
*          DEFINE,RFILE=F7X.
*          MALET,I=COMPILE,LO=S.
*          UNLOAD,RFILE.
*          7/8/9
*          *C F7X 
*          6/7/8/9
* 
*        TO RUN THE F7X MALET MODULES FROM THE PERMANENT FILE  CREATED
*        ON THE NOS/BE OPERATING SYSTEM, RUN THE FOLLOWING JOB- 
* 
*          JOB/ACCOUNT CARDS. 
*          ATTACH,RFILE,F7X,ID=YOUR ID. 
*          MALET,KL.
*          7/8/9
*          P,P0=200           (200 IPS) 
*          P,P1=1             (800 BPI) 
*          P,P2=5000          (5000 WORD RECORDS) 
*          ASSIGN,EST=NN. 
*          R,F7X
*          6/7/8/9
* 
*        TO  RUN THE F7X MALET MODULES FROM THE PERMANENT FILE CREATED
*        ON THE NOS OPERATING SYSTEM, RUN THE FOLLOWING JOB-
* 
*          JOB/USER/ACCOUNT CARDS.
*          ATTACH,RFILE=F7X.
*          MALET,KL.
*          7/8/9
*          P,P0=200           (200 IPS) 
*          P,P1=1             (800 BPI) 
*          P,P2=5000          (5000 WORD RECORDS) 
*          ASSIGN,EST=NN. 
*          R,F7X
*          6/7/8/9
* 
*ENDIF
*IF DEF,CMSE17X 
*        TO LOAD THE F7X DEMOT  MODULES  WHILE  RUNNING  ON  THE  CMSE
*        OFF-LINE  OPERATING  SYSTEM, EITHER ENTER OR CREATE A COMMAND
*        BUFFER OF THE FOLLOWING COMMANDS-
* 
*          DP*4               (DEADSTART PP 4)
*          DP*5               (DEADSTART PP 5)
*          CP*4,MCX,0,5       (LOAD MCX (EXEC) TO PP 4) 
*          CP*5,MLD,0,5       (LOAD MLD (DRIVER) TO PP 5) 
*          RU*4,100           (RUN THE EXEC AT ADDRESS 100) 
*          SQ*77,1,4          (WAIT UNTIL EXEC IS INITIALIZED)
*          RU*5,100           (RUN THE DRIVER AT ADDRESS 100) 
*          PP*4               (SELECT EXEC DISPLAY) 
*          .ASSIGN,CH=13,UN=0,EQ=0,DC=44
*          .P,P0=200          (200 IPS) 
*          .P,P1=1            (800 BPI) 
*          .P,P2=5000         (5000 WORD RECORDS) 
*          .RUN,F7X01         (RUN F7X) 
*ENDIF
* 
***2.1.4 RUNNING PROCEDURE
** 2.1.4 RUNNING PROCEDURE
*  2.1.4 RUNNING PROCEDURE
*        -----------------
* 
*IF -DEF,CMSE17X
*        ALL  NOS  MALET  DIRECTIVES MUST BE PRECEDED WITH THE CHARAC-
*        TERS, (K.).  UNDER NOS/BE, MALET COMMANDS  ARE  NOT  PRECEDED
*        WITH THE CHARACTERS, (K.) UNDER THE L DISPLAY. 
* 
*        THE ASSIGN COMMAND IS USED TO ASSIGN THE DEVICE TO BE TESTED.
*        EXAMPLES FOR ASSIGNING A DEVICE- 
*          K.ASSIGN,DC=44,CH=6,EQ=0,UN=1
*          K.A,DC=44,CH=6,EQ=0,UN=1 
* 
*        THE PARAM COMMAND IS USED TO DISPLAY THE PARAMETERS  FOR  THE
*        TEST AND ALSO CHANGE PARAMETERS FOR THE TEST.
*        EXAMPLES OF USING THE PARAM COMMAND- 
*          K.PARAM
*          K.P
*          K.PARAM,P0=100,P1=1,P2=5000
*          K.P,P0=100,P1=1,P2=5000
* 
*        THE RUN COMMAND IS USED TO START EXECUTION OF A MODULE OR SET
*        OF MODULES.
*        EXAMPLES FOR RUNNING ALL MODULES IN THE TEST-
*          K.RUN,F7X
*          K.R,F7X
* 
*        EXAMPLES FOR RUNNING ONE MODULE- 
*          K.RUN,F7X(01)
*          K.R,F7X(01)
* 
*        EXAMPLES FOR RUNNING A SERIES OF MODULES-
*          K.RUN,F7X(01,03,05,07) 
*          K.R,F7X(01,03,05,07) 
* 
*        THE STOP COMMAND IS USED TO STOP EXECUTION OF THE TEST.
*        EXAMPLES OF STOPPING EXECUTION OF THE TEST-
*          K.STOP 
*          K.S
* 
*        THE GO COMMAND IS USED TO RESTART EXECUTION OF THE TEST AFTER
*        IT HAS STOPPED ON AN ERROR OR  WAS  STOPPED  USING  THE  STOP
*        COMMAND. 
*        EXAMPLES OF RESTARTING EXECUTION OF THE TEST-
*          K.GO 
*          K.G
* 
*        THE DROP COMMAND IS USED TO TERMINATE EXECUTION OF MALET  AND
*        DROP THE JOB OUT OF THE OPERATING SYSTEM.
*        EXAMPLES OF USING THE DROP COMMAND-
* 
*          K.DROP 
*ENDIF
*IF DEF,CMSE17X 
*        ALL  SYSTEM  COMMANDS  MUST BE PRECEEDED WITH THE CHARACTER .
*        (PERIOD).
* 
*        THE ASSIGN COMMAND IS USED TO ASSIGN THE DEVICE TO BE TESTED.
*        EXAMPLES FOR ASSIGNING A DEVICE- 
*          .ASSIGN,DC=45,CH=6,EQ=0,UN=1 
*          .A,DC=45,CH=6,EQ=0,UN=1
* 
*        THE  PARAM  COMMAND IS USED TO DISPLAY THE PARAMETERS FOR THE
*        TEST AND ALSO CHANGE PARAMETERS FOR THE TEST.
*        EXAMPLES OF USING THE PARAM COMMAND- 
*          K.PARAM
*          K.P
*          K.PARAM,P0=100,P1=1,P3=10,P4=10
*          K.P,P0=100,P1=1,P3=10,P4=10
* 
*        THE RUN COMMAND IS USED TO START EXECUTION OF A MODULE OR SET
*        OF MODULES.
*        EXAMPLES FOR RUNNING ALL MODULES IN THE TEST-
*          .RUN,F7X 
*          .R,F7X 
* 
*        EXAMPLES FOR RUNNING ONE MODULE- 
*          .RUN,F7X(01) 
*          .R,F7X(01) 
* 
*        EXAMPLES FOR RUNNING A SERIES OF MODULES-
*          .RUN,F7X(01,03,05,07)
*          .R,F7X(01,03,05,07)
* 
*        THE STOP COMMAND IS USED TO STOP EXECUTION OF THE TEST.
*        EXAMPLES OF STOPPING EXECUTION OF THE TEST-
*          .STOP
*          .S 
* 
*        THE GO COMMAND IS USED TO RESTART EXECUTION OF THE TEST AFTER
*        IT  HAS  STOPPED  ON  AN  ERROR OR WAS STOPPED USING THE STOP
*        COMMAND. 
*        EXAMPLES OF RESTARTING EXECUTION OF THE TEST-
*          .GO
*          .G 
* 
*        THE  DROP COMMAND IS USED TO TERMINATE EXECUTION OF MALET AND
*        DROP THE JOB OUT OF THE OPERATING SYSTEM.
*        EXAMPLES OF USING THE DROP COMMAND-
*          .DROP
*ENDIF
* 
***2.1.5 PARAMETERS 
** 2.1.5 PARAMETERS 
*  2.1.5 PARAMETERS 
*        ---------- 
* 
*        PARAMETER VALIDATION IS DONE BY MODULE  F7X00,  NORMALLY  THE
*        FIRST  MODULE EXECUTED IF THE *RUN* DIRECTIVE IS  RUN F7X  OR
*        RUN F7X00.  HOWEVER, THE USER CAN RUN SPECIFIC MODULES,  THUS
*        BYPASSING  THE  EXECUTION  OF  F7X00.  IT IS RECOMMENDED THAT
*        F7X00 ALWAYS BE EXECUTED INITIALLY  TO  VALIDATE  PARAMETERS.
*        EXAMPLE- 
* 
*          RUN F7X(00,20) 
* 
*              OR 
* 
*          RUN F7X(00)
*          RUN F7X07
* 
*        IF THIS PROCEDURE IS NOT FOLLOWED, ERRORS MAY RESULT  DUE  TO
*        ILLEGAL  PARAMETERS.   (F7X  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. 
* 
* 
* 
*** 
**       THE FOLLOWING CROSS-REFERENCE TABLE DEFINES WHICH MODULES  OF
*        F7X USE SPECIFIC PARAMETER REGISTERS.
* 
*                  P0   P1   P2   P3   P4   P5   P6   P7   P8   P9
*                 ------------------------------------------------- 
*          F7X00    X    X    X    X    X    X    X    X    X    X
*          F7X01         X
*          F7X02         X
*          F7X03         X
*          F7X04    X    X
*          F7X05    X    X
*          F7X06         X
*          F7X07         X         X         X    X         X 
*          F7X08         X    X    X         X    X         X 
*          F7X09         X         X         X    X         X 
*          F7X10         X    X    X    X    X    X    X    X    X
*          F7X11         X    X    X    X    X    X         X    X
*          F7X12         X    X    X    X    X    X         X    X
*          F7X13         X         X         X    X 
*          F7X14         X    X    X    X              X
*          F7X15         X    X    X         X    X         X 
*          F7X16         X         X         X    X         X 
*          F7X17         X    X    X    X    X    X    X    X 
*          F7X18         X         X    X    X    X    X    X 
*          F7X19         X         X    X    X    X    X    X    X
*          F7X20         X         X    X    X    X         X    X
*          F7X21         X    X    X    X    X    X    X    X 
*          F7X22         X    X    X                        X 
*          F7X23         X         X    X              X
*          F7X24         X    X                        X
*          F7X30         X    X    X
*          F7X31         X
*          F7X32         X
*          F7X33         X                                       X
*          F7X34         X                                       X
*          F7X35         X                                       X
* 
*** 
**
*        P0 = TAPE SPEED AS FOLLOWS 
* 
*              75 =  75 IPS 
*             125 = 125 IPS 
*             200 = 200 IPS 
* 
*        P1 = PCAD
* 
*             PXXX - PARITY 
* 
*                    0XXX = ODD PARITY
*                    1XXX = EVEN PARITY 
*                    2XXX THRU 7XXX ARE ILLEGAL 
* 
* 
*             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 
*                     X4XX THRU X6XX ARE ILLEGAL
*                            IF EVEN PARITY AND 7 TRACK 
* 
* 
*             XXAX - ASSEMBLY/DISASSEMBLY 
* 
*                    XX0X = A/D 6 BIT MODE FOR 7 TRK,9TRK CODED 
*                    XX1X = A/D PACK MODE FOR 9 TRK BINARY
*                    XX2X THRU XX7X ARE ILLEGAL 
* 
* 
*             XXXD - DENSITY
* 
*                    XXX0 =  556 CPI
*                    XXX1 =  800 CPI
*                    XXX2 = 1600 CPI
*                    XXX3 =  200 CPI
*                    XXX4 = 6250 CPI
*                    XXX5 THRU XXX7 ARE ILLEGAL 
* 
* 
*        P2 = RECORD LENGTH 
* 
*             EXAMPLE -  P2 = 1000
* 
* 
* 
*        P3 = XCFF = FLAG BITS /MARGINS 
* 
*             XCXX - CLIP LEVEL 
* 
*                    X0XX =  NORMAL CLIP
*                    X1XX =  HIGH READ CLIP 
*                    X2XX =  LOW READ CLIP
*                    X3XX THRU X7XX ARE ILLEGAL 
* 
* 
*             XXFF = FLAG BITS
* 
*                    XX4X = MAINTENANCE  MODE  (0  =  TEST  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 TEST
*                           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
*                           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
*                           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 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 BE-
*                    COMES 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 TO WRITE READ PER MODULE.
* 
* 
* 
*        P9 = RECORD COUNT
* 
*             0000 = INFINITE RECORD COUNT RESULTS IN COMPLETE USE  OF
*                    TAPE BETWEEN BOT AND EOT 
* 
* 
*             XXXX = MAXIMUM NUMBER OF RECORDS PER FILE 
* 
***2.1.6 ERROR MESSAGES 
** 2.1.6 ERROR MESSAGES 
*  2.1.6 ERROR MESSAGES 
*        -------------- 
* 
* 
*        ERRORS MAY BE REPORTED FROM ANY ONE OR ALL OF  THE  FOLLOWING
*        SOURCES_ 
* 
*          1. MODULE TEST SEQUENCE-    EC 1XX-2XX ERRORS
* 
*          2. MODULE STATUS ANALYSIS - EC 03XX-3XXX 
* 
*          3. DETAILED STATUS ERRORS - DS ERROR 4XXX CODES
* 
*          4. PRODUCT OVERLAY -        E51XX ERROR CODES
* 
* 
* 
*        MODULE TEST SEQUENCE DETECTED ERRORS 
* 
* 
* 
*          EC 101 - READ RAM *OCT DATA ERROR
* 
*          EC 102 - WRITE RAM *OCT DATA ERROR 
* 
*          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 RE-
*                   PORTED. 
* 
*          EC 111 - STATUS ERROR AFTER SELECT LOOPFSC 
* 
*          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 122 - NO END-OF-FILE STATUS AFTER AN ENDFILE
* 
*          EC 130 - STATUS ERROR AFTER WRITE *OCT 
* 
*          EC 131 - WRITE *OCT POLY=*OCT EXP=*OCT 
* 
*          EC 132 - ABNORMAL STATUS 
* 
*          EC 137 - STILL AT BOT AFTER AN ERASE 
* 
*          EC 14X - STATUS ERR-LAST DIGIT=DATA BIT
* 
*           EC 200 - AN UNEXPECTED BIT APPEARED IN
*           GENERAL STATUS DURING A WRITE OPERATION.
*           NOTE THAT THE GENERAL STATUS WAS MASKED 
*           WITH LOGICAL PRODUCT 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 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 MUST BE SET.
* 
*          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 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.
* 
*          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 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. 
* 
*          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. (INPUT BUFFER) WILL CONTAIN
*                   THE ACTUAL RECORD DETECTED. 
* 
*          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 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. 
* 
* 
*        AN OCTAL NUMBER IS SUBSTITUTED INTO THE FIRST/ONLY  SUBSTITU-
*        TION WORD WITHIN MESSAGES FOR ERROR CODES 112-115.  THIS CODE
*        IDENTIFIES THE CURRENT TCU OPTIONS  THAT  ARE  ACTIVE  DURING
*        OPERATIONS AS FOLLOWS- 
* 
*           0 -  75 IPS GCR 
*           1 - 125 IPS GCR 
*           2 - 200 IPS GCR 
*           3 -  75 IPS PE
*           4 - 125 IPS PE
*           5 - 200 IPS PE
*           6 -  75 IPS 9TK NRZI
*           7 - 125 IPS 9TK NRZI
*          10 - 200 IPS 9TK NRZI
*          11 -  75 IPS 7TK NRZI
*          12 - 125 IPS 7TK NRZI
*          13 - 200 IPS 7TK NRZI
* 
* 
* 
* 
***2.1.7 MODULE STATUS ANALYSIS ERROR CODES 
** 2.1.7 MODULE STATUS ANALYSIS ERROR CODES 
*  2.1.7 MODULE STATUS ANALYSIS ERROR CODES 
*        -----------------------------------
*          EC 0300 - TAPE UNIT NOT CONNECTED - SHOULD BE
*          EC 0302 - TAPE UNIT LAMP FAILURE 
*          EC 0303 - TAPE UNIT RESET KEY DEPRESSED
*          EC 0309 - TAPE UNIT TAPE NOT PRESENT AT BOT SENSOR 
*          EC 0310 - TAPE UNIT LOAD FAILURE. REELS NOT LOADED 
*          EC 0311 - TAPE UNIT REELS NOT LOADED 
*          EC 0313 - TAPE UNIT LEFT COLUMN FAULT
*          EC 0314 - TAPE UNIT LEFT COLUMN FAULT
*          EC 0315 - TAPE UNIT LEFT COLUMN FAULT
*          EC 0316 - TAPE UNIT LEFT COLUMN FAULT
*          EC 0317 - TAPE UNIT RIGHT COLUMN FAULT 
*          EC 0318 - TAPE UNIT RIGHT COLUMN FAULT 
*          EC 0319 - TAPE UNIT RIGHT COLUMN FAULT 
*          EC 0320 - TAPE UNIT RIGHT COLUMN FAULT 
*          EC 0321 - TAPE UNIT COLUMNS NOT LOADED 
*          EC 0322 - TAPE UNIT LOAD FAILURE. NOT AT BOT 
*          EC 0323 - TAPE UNIT NOT AT BOT AFTER A REWIND
*          EC 0325 - TAPE UNIT AIR PRESSURE FAILURE 
*          EC 0326 - TAPE UNIT AIR FLOW MDI 
*          EC 0328 - TAPE UNIT NOT READY. NO ERROR STATUS 
*          EC 0331 - TAPE SPEED STATUS ERR- EXP=*OCT ACT=*OCT 
*          EC 0333 - TAPE UNIT SLOW START 
*          EC 0334 - TAPE UNIT SLOW START 
*          EC 0335 - TAPE UNIT SLOW START 
*          EC 0336 - TAPE UNIT SLOW START 
*          EC 0337 - TAPE UNIT VELOCITY ERROR 
*          EC 0338 - TAPE UNIT VELOCITY ERROR 
*          EC 0339 - TAPE UNIT VELOCITY ERROR 
*          EC 0340 - TAPE UNIT VELOCITY ERROR 
*          EC 0341 - TAPE UNIT DATA NOT READ AFTER WRITE
*          EC 0359 - TAPE UNIT ERASE CURRENT FAILURE
*          EC 0360 - TAPE UNIT WRITE CURRENT FAILURE
*          EC 0361 - TAPE UNIT AGC FAULT SINCE LAST REWIND
*          EC 0362 - TAPE UNIT NOT READY FOR LOOPBACK 
*          EC 0400 - TCU-DETECTED I/O CHANNEL PARITY ERROR
*          EC 0500 - TAPE PARITY - ERASE ERROR
*          EC 0503 - TAPE PARITY - EXCESSIVE SKEW 
*          EC 0505 - TAPE PARITY - FALSE EOP
*          EC 0506 - TAPE PARITY - FALSE FRAME COUNT
*          EC 0507 - TAPE PARITY - VERTICAL PARITY ERROR
*          EC 0508 - TAPE PARITY - LONGITUDINAL PARITY ERROR
*          EC 0509 - TAPE PARITY - CRC DETECTED ERROR 
*          EC 0512 - UNEXPLAINED TCU OR TAPE PARITY ERROR 
*          EC 0600 - ADAPTER/PPU LOST DATA
*          EC 0601 - READ ROM/RAM FLAG BIT DETECTED 
*          EC 0603 - NOISE BYPASSED 
*          EC 0700 - SINGLE TRACK CORRECTION
*          EC 0701 - DUAL TRACK CORRECTION
* 
* 
***2.1.8 DETAILED STATUS ERROR CODES
** 2.1.8 DETAILED STATUS ERROR CODES
*  2.1.8 DETAILED STATUS ERROR CODES
*        ---------------------------
* 
*        DS ERROR 4001 TAPE UNIT OFF-LINE, NOT POWERED ON 
*        DS ERROR 4002 UNIT CONNECTED TO ANOTHER ADAPTER
*        DS ERROR 4004 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 25 FEET OF BLANK TAPE 
*        DS ERROR 4012 BAD ID BURST WRITTEN 
*        DS ERROR 4016 UNIT UNABLE TO SET GAINS ON GCR TAPE 
*        DS ERROR 4032 TAPE UNIT BUSY ON REWIND OR DSE
*        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 FSC ABNORM END ON SEL CODE CONV SEQ
*        DS ERROR 4111 FSC ABNORM END ON LOAD TRANS REG SEQ 
*        DS ERROR 4112 FSC ABNORM END ON READ TRANS REG SEQ 
*        DS ERROR 4113 FSC TRANS REG DATA MISCOMPARE
*        DS ERROR 4114 FSC ERROR ON START MAINT TRANS SEQ 
*        DS ERROR 4117 FSC DIAG FULL/EMPTY CNT ERROR
*        DS ERROR 4120 FSC BUFFER ADDRESS INCORRECT 
*        DS ERROR 4121 FSC ABNORM END ON READ BLOCK ID SEQ
*        DS ERROR 4122 INCORRECT BLOCK ID ON DIAG WRITE 
*        DS ERROR 4124 FSC ABNORM END ON START FSC SEQ
*        DS ERROR 4126 FSC READ PATTERN ERROR 
*        DS ERROR 4127 DATA ERRORS IN READ TRANS REG
*        DS ERROR 4130 INCORRECT BLOCK ID ON DIAG READ
*        DS ERROR 4154 ILLEGAL CONV TABLE NUMBER REQUEST
*        DS ERROR 4155 TIMEOUT ON EXPECTED FSC-DI RESPONSE
*        DS ERROR 4156 TIMEOUT ON EXPECTED C170-DI RESPONSE 
*        DS ERROR 4157 TIMEOUT ON EXPECTED REQUEST IN STATUS
*        DS ERROR 4160 FSC ABNORM ON LOADING TRANS REG
*        DS ERROR 4161 FSC ABNORM ON COPY WRITE CODE TABLE
*        DS ERROR 4162 FSC ABNORM ON TIE SEQ
*        DS ERROR 4163 FSC ABNORM ON OUT OF CLIP LEV PARAM
*        DS ERROR 4164 FSC ABNORM ON SYS RESET COMMAND
*        DS ERROR 4165 FSC ABNORM END STAT ON SENSE COMMAND 
*        DS ERROR 4170 FSC SEQUENCE ERROR 
*        DS ERROR 4171 FSC 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 FSC DEADMAN TIMER EXPIRED
*        DS ERROR 4177 C170-DI UNDEFINED STATUS BIT ERROR 
*        DS ERROR *OCT UNRECOGNIZED DS ERROR CODE 
* 
* 
* 
* 
***2.1.9 PRODUCT OVERLAY ERROR MESSAGES 
** 2.1.9 PRODUCT OVERLAY ERROR MESSAGES 
*  2.1.9 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 - ADAPTER/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
* 
* 
***3.0   ABBREVIATIONS
** 3.0   ABBREVIATIONS
*  3.0   ABBREVIATIONS
*        -------------
*        ACT    - ACTUAL
*        ALT    - ALTERNATE 
*        AUX    - AUXILLARY 
*        BFR    - BUFFER
*        BKSP   - BACKSPACE 
*        BOT    - BEGINNING OF TAPE 
*        CH     - CHANNEL 
*        CHAR   - CHARACTER 
*        COND   - CONDITION 
*        CORR   - CORRECTION
*        CPI    - CHARACTERS PER INCH 
*        CRC    - CYCLIC REDUNDANCY CHECK 
*        CW     - CONTROLWARE 
*        DI     - DEVICE INTERFACE
*        DS     - DETAILED STATUS 
*        DSE    - DATA SECURITY ERASE 
*        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 
*        FSC    - FEDERAL STANDARD CHANNEL
*        FWD    - FORWARD 
*        IBG    - INTER BLOCK GAP 
*        IPS    - INCHES PER SECOND 
*        IRGS   - INTER RECORD GAPS 
*        I/O    - INPUT/OUTPUT
*        LF     - LAST FUNCTION 
*        LSF    - LAST STATUS FUNCTION
*        MAINT  - MAINTENANCE 
*        MAX    - MAXIMUM 
*        MIN    - MINIMUM 
*        MSG    - MESSAGE 
*        OP     - OPERATION 
*        PAR    - PARITY
*        PE     - PHASE ENCODED 
*        POLY   - POLYNOMIAL
*        PTRN   - PATTERN 
*        RAM    - RANDOM ACCESS MEMORY
*        REC    - RECORD
*        REG    - REGISTER
*        REV    - REVERSE 
*        RF     - READ FORWARD
*        ROM    - READ ONLY MEMORY
*        RR     - READ REVERSE
*        R/W    - READ/WRITE
*        TK(S)  - TRACK OR TRACKS 
*        TRK    - TRACK 
*        TCU    - TAPE CONTROL UNIT 
*        W      - WRITE 
*        WC     - WORD COUNT
*        WDS    - WORDS 
*        WT     - WORDS TRANSMITTED 
*        XLATE  - TRANSLATE 
* 
***3.1   MODULE DESCRIPTION 
** 3.1   MODULE DESCRIPTION 
*  3.1   MODULE DESCRIPTION 
*        ------------------ 
* 
* 
* 
* 
   MODULE F7X00,67X(45,56)LOCK   - PARAMETER VALIDATION - 
*** F7X00 - PARAMETER VALIDATION
**  F7X00 - PARAMETER VALIDATION
*   F7X00 - PARAMETER VALIDATION
*   ----------------------------
* 
*        F7X00 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 F7X. 
* 
* 
* 
*        ERRORS REPORTED -
* 
*           1. F7X00 - PARAMETER ERROR(S) 
*           2. 9TK EVEN PARITY IS ILLEGAL   -(P1)-
*           3. 9TK PACK MODE MUST HAVE XLATE=0   -(P1)- 
*           4. 9 TRACK 6 BIT MODE ILLEGAL.
*           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. F7X00 - ABORT ON .RES. COMMAND - 
* 
* 
*** F7X00 - INTERNAL DOCUMENTATION
* 
* 
*        REGISTER USAGE 
* 
*          B1 = EXPECTED SPEED STATUS 
*          B6 = MESSAGE LINE NUMBER 
* 
* 
*        MODULES CALLED - 
* 
*          NONE 
* 
* 
* 
 1 FORMAT F7X00 - PARAMETER VALIDATION
 2 FORMAT F7X00 - PARAMETER ERROR(S)
 3 FORMAT    9TK EVEN PARITY IS ILLEGAL   -(P1)-
 4 FORMAT    9TK PACK MODE MUST HAVE XLATE=0   -(P1)- 
5  FORMAT 9 TRK 6 BIT MODE ILLEGAL
 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 F7X00 - ABORT ON .RES. COMMAND -
26 FORMAT F7X00 - CHANGE PARAMETERS AND RERUN 
* 
30 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   B6 = 1                *SET LINE NUMBER FOR ERROR MESSAGES
   IF(P1.AND.6000.NE.0) 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.45) GOTO 40      *7TK UNIT ASSIGNED 
* 
*---------TEST 9TK OPTIONS
* 
   IF(P1.AND.1000.NE.0) ERROR 3/0, GOSUB 70    *BAD PARITY
   IF(P1.AND.700.NE.0)GOTO 32 
   GOTO 33
32 IF(P1.AND.700.EQ.100)GOTO 34 
   IF(P1.AND.700.EQ.200)GOTO 34 
   ERROR 11/0, GOSUB 70 
34 IF(P1.AND.70.NE.0) ERROR 5/0,GOSUB 70
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
   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.300) 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 = 3                     *75 IPS SPEED STATUS
   IF(P0.EQ.75) GOTO 51 
   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
   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
   STATUS SENSE, ABT 36 
36 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 
   STATUS SENSE, ABT 62 
62 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
   END 30 
COMPILE   - F7X00 -   PARAMETER VALIDATION
   MODULE F7X01,67X(45,56)LOCK  - ADAPTER PATH -
*** F7X01 - ADAPTER PATH
**  F7X01 - ADAPTER PATH
*   F7X01 - ADAPTER PATH
*   --------------------
* 
*        F7X01 VERIFIES THAT THE ADAPTER PATH IS STABLE.  THIS IS DONE
*        BY  READING  DATA  THAT  IS  CONTAINED  IN  EACH RAM USED FOR
*        CONVERSION TABLES IN THE ADAPTER SAVING IT, READING IT  AGAIN
*        AND  COMPARING  IT  TO THE FIRST READ.  THIS TECHNIQUE CANNOT
*        DETECT SOLID BIT FAILURES. 
* 
* 
*        DESCRIPTION -
* 
* 
*           1. RESERVE. 
*           2. RESET
*           3. READ RDRAM.
*           4. SAVE DATA READ IN OB.
*           5. READ RDRAM.
*           6. RELEASE. 
*           7. COMPARE IB TO OB AND REPORT DATA ERRORS. 
*           8. REPEAT STEPS 1-7 FOR ALL READ RAMS.
*           9. RESERVE. 
*          10. READ WRRAM 
*          11. SAVE DATA READ IN OB 
*          12. READ WRRAM.
*          13. RELEASE. 
*          14. COMPARE IB TO OB AND REPORT DATA ERRORS. 
*          15. REPEAT STEPS 9-14 FOR ALL WRITE RAMS.
*          16. REPEAT STEPS 1-14, 4 MORE TIMES. 
*          17. REPEAT MODULE OR EXIT. 
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. F7X01 - ABORT ON .RES. COMMAND 
*           3. F7X01 - ABORT ON .READ RDRAM. COMMAND
*           4. F7X01 - ABORT ON .READ WRRAM. COMMAND
* 
*           5. F7X01 - EC 101 - READ RAM *OCT DATA ERROR
*              WORD=*OCT 1ST READ=*OCT 2ND READ=*OCT DIF=*OCT 
* 
*           6. F7X01 - EC 102 - WRITE RAM *OCT DATA ERROR 
*              WORD=*OCT 1ST READ=*OCT 2ND READ=*OCT DIF=*OCT 
* 
* 
*** F7X01 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT F7X01 - ADAPTER PATH
 2 FORMAT F7X01 - EC 101 -  READ RAM *OCT DATA ERROR
 3 FORMAT F7X01 - EC 102 -  WRITE RAM *OCT DATA ERROR 
 4 FORMAT   WORD=*OCT 1ST READ=*OCT 2ND READ=*OCT DIF=*OCT
5  FORMAT F7X01- ERRS=*DECD LOOP=*DECD
 6 FORMAT F7X01 ERROR(S) IN MODULE = *DECD
 7 FORMAT F7X01 - ABORT ON .RES. COMMAND
10 FORMAT F7X01 - ABORT ON .READ RDRAM. COMMAND 
11 FORMAT F7X01 - ABORT ON .READ WRRAM. COMMAND 
14 FORMAT EC=*OCT DATA COMPARE ERR EA=*OCT
13 FORMAT F7X01 - ABORT ON .RESET. COMMAND
20 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MSG
21 B0 = 0                    *CLEAR LOOP COUNT
   B7 = 10                   *SET TCU LOOP FLAG 
   WC=253                   *WORD COUNT FOR READ RDRAM/WRRAM
22 B2 = 0                    *CLEAR READ/WRITE RAM FLAG 
23 B1 = 1                    *SET RAM NUMBER
24 B5 = 7 
   RES P1, ABT 70 
   B5 = 13
   RESET, 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
   ERROR 14/105 
   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
* 
*-----------------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(EC,EA) TO LINE 1
   B7 = 10    *TCU LOOPBACK FLAG
   STATUS SENSE, ABT 72 
72 CALL 980                  *CALL THE STATUS CRACKER 
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   GOTO 27
   END 20 
COMPILE   - F7X01 -   ADAPTER PATH
   MODULE F7X02,67X(45,56)LOCK  - ADAPTER LOOPBACK -
*** F7X02 - ADAPTER LOOPBACK
**  F7X02 - ADAPTER LOOPBACK
*   F7X02 - ADAPTER LOOPBACK
*   --------------------------
* 
*        F7X02  VERIFIES  THAT  THE  LOOPFSC  (RUN FSC DI DIAGNOSTICS)
*        FUNCTION OPERATES PROPERLY.
* 
* 
*        DESCRIPTION -
* 
*           1. RESERVE. 
*           2. SELECT  LOOPFSC. 
*           3. VERIFY STATUS. IF ERROR REPORT EC 111. 
*           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. F7X02 - ABORT ON .RES. COMMAND 
*           3. F7X02 - ABORT ON .SELECT LOOPFSC. COMMAND
*           4. F7X02 - EC 111 - STATUS ERROR AFTER SELECT LOOPFSC 
*             5. ABORT ON .STATUS. COMMAND. 
* 
*** F7X02 - INTERNAL DOCUMENTATION
* 
*        REGISTER USAGE 
* 
*          B0 = LOOP COUNT
*          B2 = RESERVE OPTIONS 
*          B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORT 
*             = EXPECTED POLYNOMIAL 
*          B6 = PASS COUNT FOR SCOPING LOOPS
*          B7 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNTER 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT F7X02 - ADAPTER LOOPBACK
3  FORMAT F7X02- EC 111 STATUS ERROR AFTER LOOP 
7  FORMAT F7X02- ERRS=*DECD LOOP=*DECD
10 FORMAT F7X02- ERRORS IN MODULE=*DECD 
11 FORMAT F7X02- ABORT ON.RES. COMMAND
12 FORMAT F7X02- ABORT ON.SELECT LOOPFSC. 
13 FORMAT F7X02- ABORT ON.STATUS. COMMAND 
20 MSG 1 TO DISPLAY,PRINT    *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 = 20                   *ADAPTER LOOPBACK FLAG 
   RES B2, ABT 70 
   B5 = 12
   SELECT LOOPFSC, ABT 70 
   B5 = 13
   STATUS, ABT 70 
   IF(SB(1).NE.0) 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 TO LINE 1 
   STATUS SENSE, ABT 61 
61 CALL 980                  *CALL 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.CM.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   - F7X02 -   ADAPTER LOOPBACK
   MODULE F7X03,67X(45,56)LOCK  - UNIT I/O LOOPBACK - 
*** F7X03 - UNIT I/O LOOPBACK 
**  F7X03 - UNIT I/O LOOPBACK 
*   F7X03 - UNIT I/O LOOPBACK 
*   ------------------------- 
* 
*        F7X03  VERIFIES THAT THE UNIT IS CAPABLE OF PERFORMING WRITES
*        AND SHORT WRITES THROUGH THE UNIT 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. 
* 
* 
*        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. REPEAT MODULE OR EXIT. 
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. F7X03 - ABORT ON .RES. COMMAND 
*           3. F7X03 - ABORT ON .SELECT LOOPUNIT. COMMAND 
*           4. F7X03 - ABORT ON .ENDFILE. COMMAND 
*           5. F7X03 - ABORT ON .REL. COMMAND 
*           6. F7X03 - ABORT ON .WRITE. COMMAND 
* 
*           7. F7X03 - EC 112 - NO EOF STATUS ON ENDFILE *OCT 
*           8. F7X03 - EC 113 - STATUS ERROR AFTER ENDFILE *OCT 
*           9. F7X03 - EC 114 - WRITE *OCT POLY=*OCT EXP=*OCT 
*          10. F7X03 - EC 115 - STATUS ERROR AFTER WRITE *OCT 
* 
*** F7X03 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNTER 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT F7X03 - UNIT I/O LOOPBACK 
 2 FORMAT F7X03 - EC 112 - NO EOF STATUS ON ENDFILE *OCT
 3 FORMAT F7X03 - EC 113 - STATUS ERROR AFTER ENDFILE *OCT
 4 FORMAT F7X03 - EC 114 - STATUS ERROR AFTER WRITE *OCT
 5 FORMAT F7X03 - EC 115 - WRITE *OCT POLY=*OCT EXP=*OCT
7  FORMAT F7X03- ERRS=*DECD LOOP=*DECD
10 FORMAT F7X03 ERROR(S) IN MODULE = *DECD
11 FORMAT F7X03 - ABORT ON .RES. COMMAND
12 FORMAT F7X03 - ABORT ON .SELECT LOOPUNIT. COMMAND
13 FORMAT F7X03 - ABORT ON .ENDFILE. COMMAND
14 FORMAT F7X03 - ABORT ON .REL. COMMAND
15 FORMAT F7X03 - ABORT ON .WRITE. COMMAND
16 FORMAT F7X03 - ABORT ON .REWIND. 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 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=16
   REWIND, ABT 70            *CLEAR RESET DEPRESSED STATUS LATCH
   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.45) 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
   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
   STATUS SENSE, ABT 72 
72 CALL 980                  *CALL 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.NE.0) GOTO 24          *NOT REPEAT COND.
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   - F7X03 -   UNIT I/O LOOPBACK 
   MODULE F7X04,67X(45,56)LOCK  - LOOPS AND VELOCITY -
*** F7X04 - LOOPS AND VELOCITY
**  F7X04 - LOOPS AND VELOCITY
*   F7X04 - LOOPS AND VELOCITY
*   --------------------------
* 
*        F7X04  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. F7X04 - ABORT ON .RES. COMMAND 
*           3. F7X04 - ABORT ON .REWIND. COMMAND
*           4. F7X04 - ABORT ON .ERASE. COMMAND 
* 
*           5. F7X04 - EC 132 - ABNORMAL STATUS 
*           6. F7X04 - EC 137 - STILL AT BOT AFTER AN ERASE 
* 
* 
*** F7X04 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNTER 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT F7X04 - LOOPS AND VELOCITY
 2 FORMAT F7X04 - EC 132 - ABNORMAL STATUS
3  FORMAT F7X04- ERRS=*DECD LOOP=*DECD
 4 FORMAT F7X04 ERROR(S) IN MODULE = *DECD
 5 FORMAT F7X04 - EC 137 - STILL AT BOT AFTER AN ERASE
10 FORMAT F7X04 - ABORT ON .RES. COMMAND
11 FORMAT F7X04 - ABORT ON .REWIND. COMMAND 
12 FORMAT F7X04 - 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,20,0
   DATA (OB(21),CON) 1,0,0,0,0,0,0,0,0,0,0,0,0,0
   EQUATE BOT TO 4
20 MSG 1 TO DISPLAY,PRINT     *POST RUNNING MESSAGE 
* 
*---------TEST LOOPS AND VELOCITY---------- 
* 
   IF(P0.EQ.75) OB(33) = 3   *IF 75 IPS UNIT
   IF(P0.EQ.125) OB(33) = 4  *IF 125 IPS UNIT 
   IF(P0.EQ.200) OB(33) = 5  *IF 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.16) 
   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 
   STATUS SENSE, ABT 75 
75 CALL 980                  *CALL 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   - F7X04 -   LOOPS AND VELOCITY
   MODULE F7X05,67X(45,56)LOCK  - RANDOM LOOPS/VELOCITY - 
*** F7X05 - RANDOM LOOPS AND VELOCITY 
**  F7X05 - RANDOM LOOPS AND VELOCITY 
*   F7X05 - RANDOM LOOPS AND VELOCITY 
*   --------------------------------- 
* 
*        F7X05  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 INCRE-
*        MENTING 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. F7X05 - ABORT ON .RES. COMMAND 
*           3. F7X05 - ABORT ON .REWIND. COMMAND
*           4. F7X05 - ABORT ON .ERASE. COMMAND 
* 
*           5. F7X05 - EC 132 - ABNORMAL STATUS 
*           6. F7X05 - EC 137 - STILL AT BOT AFTER AN ERASE 
*           7. F7X05 - ABORT ON .REL. COMMAND 
* 
* 
*** F7X05 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT F7X05 - RANDOM LOOPS AND VELOCITY 
 2 FORMAT F7X05 - EC 132 - ABNORMAL STATUS
3  FORMAT F7X05- ERRS=*DECD LOOP=*DECD
 4 FORMAT F7X05 ERROR(S) IN MODULE = *DECD
 5 FORMAT F7X05 - EC 137 - STILL AT BOT AFTER AN ERASE
10 FORMAT F7X05 - ABORT ON .RES. COMMAND
11 FORMAT F7X05 - ABORT ON .REWIND. COMMAND 
12 FORMAT F7X05 - ABORT ON .ERASE. COMMAND
13 FORMAT F7X05 - ABORT ON .REL. 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,20,0
   DATA (OB(21),CON) 1,0,0,0,0,0,0,0,0,0,0,0,0,0
   EQUATE BOT TO 4
20 MSG 1 TO DISPLAY,PRINT     *POST RUNNING MESSAGE 
* 
*---------TEST LOOPS AND VELOCITY---------- 
* 
   IF(P0.EQ.75) OB(33) = 3   *IF 75 IPS UNIT
   IF(P0.EQ.100) OB(33) = 2  *IF 100 IPS UNIT 
   IF(P0.EQ.125) OB(33) = 4  *IF 125 IPS UNIT 
   IF(P0.EQ.150) OB(33) = 6  *IF 150 IPS UNIT 
   IF(P0.EQ.200) OB(33) = 5  *IF 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
   REL, ABT 70
   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.16) 
   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 
   STATUS SENSE, ABT 75 
75 CALL 980                  *CALL 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   - F7X05 -   RANDOM LOOPS AND VELOCITY 
   MODULE F7X06,67X(45,56)LOCK  - TRACK TEST -
*** F7X06 - TRACK TEST
**  F7X06 - TRACK TEST
*   F7X06 - TRACK TEST
*   ------------------
* 
*        F7X06  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.
*        THIS IS 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. F7X06 - ABORT ON .WRITE. COMMAND - 
*           3. F7X06 - ABORT ON .RES. COMMAND - 
*           4. F7X06 - ABORT ON .REL. COMMAND - 
*           5. F7X06 - ABORT ON .REWIND. COMMAND -
*           6. F7X06 - ABORT ON .WAITNB. COMMAND -
* 
*           7. F7X06 -EC 014X- STATUS ERR-LAST DIGIT=DATA BIT 
* 
* 
*** F7X06 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT F7X06 - TRACK TEST
2  FORMAT F7X06-EC=*DECD -STATUS ERR-LAST DIGIT=DATA BIT
13 FORMAT F7X06- EA=*OCT
 3 FORMAT F7X06 ERROR(S) IN MODULE = *DECD
4  FORMAT F7X06- ERRS=*DECD LOOP=*DECD
 5 FORMAT F7X06 - ABORT ON .WRITE. COMMAND -
 6 FORMAT F7X06 - ABORT ON .RES. COMMAND -
 7 FORMAT F7X06 - ABORT ON .REL. COMMAND -
10 FORMAT F7X06 - ABORT ON .REWIND. COMMAND - 
12 FORMAT F7X06 - 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.EQ.56B) 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 MSG EM TO LINE 2 
   MSG 13 (EA) TO LINE 3
   STATUS SENSE,ABT 40
40 CALL 980 
   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.45) 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 
   MSG 13 (EA) TO LINE 2
   IF(ES.AND.SL.EQ.0) GOTO 71  *IF NOT SCOPING
   MSG 4(BA,B6) TO DISPLAY     *POST SCOPING MSG
   GOTO 21                     *REPEAT
71 STATUS SENSE, ABT 72 
72 CALL 980 
   MSG 1 TO DISPLAY 
   IF(BA.LT.2) GOTO 21       *RETRY IF NOT 2 ERRORS 
   GOTO 55
   END 20 
COMPILE   - F7X06 -   TRACK TEST
   MODULE F7X07,67X(45,56)LOCK   - ERASE -
*** F7X07 - ERASE 
**  F7X07 - ERASE 
*   F7X07 - ERASE 
*   ------------- 
* 
*        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. F7X07 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X07 - ABORT ON .ERASE. COMMAND - 
*           4. F7X07 - ABORT ON .RES. COMMAND - 
*           5. F7X07 - ABORT ON .REL. COMMAND - 
*           6. F7X07 - ABORT ON .REWIND. COMMAND -
*           7. F7X07 - ABORT ON .WAITNB. COMMAND -
* 
*           8. -EC 246- AN ALERT STATUS OCCURRED AFTER AN ERASE 
*              OPERATION. 
* 
* 
*** F7X07 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
 1 FORMAT F7X07 - ERASE - 
 2 FORMAT F7X07 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X07 - ABORT ON .ERASE. COMMAND -
 6 FORMAT F7X07 - ABORT ON .RES. COMMAND -
 7 FORMAT F7X07 - ABORT ON .REL. COMMAND -
10 FORMAT F7X07 - ABORT ON .REWIND. COMMAND - 
11 FORMAT F7X07 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X07- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X07 ERROR(S) IN MODULE = *DECD
* 
* 
   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 TEST MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *TEST 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 STATUS SENSE, ABT 73 
73 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
   STATUS SENSE, ABT 76 
76 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   - F7X07 -   ERASE 
   MODULE F7X08,67X(45,56)LOCK   - WRITE FM/TM -
*** F7X08 - WRITE FILEMARK/TAPEMARK 
**  F7X08 - WRITE FILEMARK/TAPEMARK 
*   F7X08 - WRITE FILEMARK/TAPEMARK 
*   ------------------------------- 
* 
*        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. F7X08 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X08 - ABORT ON .ENDFILE. COMMAND - 
*           4. F7X08 - ABORT ON .RES. COMMAND - 
*           5. F7X08 - ABORT ON .REL. COMMAND - 
*           6. F7X08 - ABORT ON .REWIND. COMMAND -
*           7. F7X08 - ABORT ON .WAITNB. COMMAND -
* 
*           8. -EC 122- NO FM/TM STATUS IN GENERAL STATUS, AT  END  OF
*              OPERATION, AFTER A WRITE FM/TM.
* 
* 
*** F7X08 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X08 - WRITE FILEMARK/TAPEMARK - 
 2 FORMAT F7X08 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X08 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT F7X08 - ABORT ON .RES. COMMAND -
 6 FORMAT F7X08 - ABORT ON .REL. COMMAND -
 7 FORMAT F7X08 - ABORT ON .REWIND. COMMAND - 
10 FORMAT F7X08 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X08- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X08 ERROR(S) IN MODULE = *DECD
   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 TEST 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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 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   - F7X08 -   WRITE FILEMARK/TAPEMARK 
   MODULE F7X09,67X(45,56)LOCK   - READ FM/TM - 
*** F7X09 - READ FILEMARK/TAPEMARK
**  F7X09 - READ FILEMARK/TAPEMARK
*   F7X09 - READ FILEMARK/TAPEMARK
*   ------------------------------
* 
*        THIS MODULE IS  DEPENDENT  ON  THE  TAPE  CREATED  BY  MODULE
*        *F7X08*. (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  LOAD-
*        POINT 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. F7X09 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X09 - ABORT ON .REWIND. COMMAND -
*           4. F7X09 - ABORT ON .READ REV. COMMAND -
*           5. F7X09 - ABORT ON .READ FWD. COMMAND -
*           6. F7X09 - ABORT ON .RES. COMMAND - 
*           7. F7X09 - ABORT ON .REL. COMMAND - 
*           8. F7X09 - ABORT ON .WAITNB. COMMAND -
* 
*           9. -EC 251- FILE MARK STATUS IS MISSING  AT  END-OF-OPERA-
*              TION DURING REVERSE READ FILE MARK TEST. 
* 
*          10. -EC 252- FILE MARK STATUS IS MISSING  AT  END-OF-OPERA-
*              TION DURING FORWARD READ FILE MARK TEST. 
* 
* 
*** F7X09 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X09 - READ FILEMARK/TAPEMARK -
 2 FORMAT F7X09 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X09 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT F7X09 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT F7X09 - ABORT ON .READ FWD. COMMAND - 
 7 FORMAT F7X09 - ABORT ON .RES. COMMAND -
10 FORMAT F7X09 - ABORT ON .REL. COMMAND -
11 FORMAT F7X09 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X09- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X09 ERROR(S) IN MODULE = *DECD
* 
* 
   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 TEST 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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 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   - F7X09 -   READ FILEMARK/TAPEMARK
   MODULE F7X10,67X(45,56)LOCK   - MAINTENANCE WRITE -
*** F7X10 - MAINTENANCE WRITE 
**  F7X10 - MAINTENANCE WRITE 
*   F7X10 - MAINTENANCE WRITE 
*   ------------------------- 
* 
*        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. F7X10 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X10 - ABORT ON .ENDFILE. COMMAND - 
*           4. F7X10 - ABORT ON .WRITE. COMMAND - 
*           5. F7X10 - ABORT ON .RES. COMMAND - 
*           6. F7X10 - ABORT ON .REWIND. COMMAND -
*           7. F7X10 - ABORT ON .REL. COMMAND - 
*           8. F7X10 - 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. 
* 
* 
*** F7X10 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
 1 FORMAT F7X10 - MAINTENANCE WRITE - 
 2 FORMAT F7X10 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X10 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT F7X10 - ABORT ON .WRITE. COMMAND -
 6 FORMAT F7X10 - ABORT ON .RES. COMMAND -
10 FORMAT F7X10 - ABORT ON .REWIND. COMMAND - 
11 FORMAT F7X10 - ABORT ON .REL. COMMAND -
12 FORMAT F7X10 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X10- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X10 ERROR(S) IN MODULE = *DECD
* 
   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.EQ.56B)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(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 
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 
   IF(P3.AND.20.NE.0)GOTO 51  *BYPASS WAIT *PARKED* 
   B5 = 6 
   RES P1, ABT 74 
   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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 26         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X10 -   MAINTENANCE WRITE 
   MODULE F7X11,67X(45,56)LOCK   - MAINTENANCE READ - 
*** F7X11 - MAINTENANCE READ
**  F7X11 - MAINTENANCE READ
*   F7X11 - MAINTENANCE READ
*   ------------------------
* 
*        THIS MODULE READS THE TAPE CREATED BY MODULE  F7X10,  MAINTE-
*        NANCE  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 CON-
*        TINUES 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. F7X11 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. F7X11 - ABORT ON .REWIND. COMMAND -
*           4. F7X11 - ABORT ON .READ FWD. COMMAND -
*           5. F7X11 - ABORT ON .RES. COMMAND - 
*           6. F7X11 - ABORT ON .REL. COMMAND - 
*           7. F7X11 - 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.
* 
*** F7X11 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
/          TAPE MUST BE *F7X10* GENERATED FOR DATA COMPARE
* 
 1 FORMAT F7X11 - MAINTENANCE READ -
 2 FORMAT F7X11 - ERROR CODE = *OCT AT LINE (EA) = *OCT 
 4 FORMAT F7X11 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT F7X11 - ABORT ON .READ FWD. COMMAND - 
 6 FORMAT F7X11 - ABORT ON .RES. COMMAND -
 7 FORMAT F7X11 - ABORT ON .REL. COMMAND -
10 FORMAT F7X11 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X11- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X11 ERROR(S) IN MODULE = *DECD
* 
   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
   B3 = 0 
   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(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 
34 IF(SB(1).AND.EOT.NE.0)GOTO 54      *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 40 
   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 
   GOTO 52
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.EQ.56B) 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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 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   - F7X11 -   MAINTENANCE READ
   MODULE F7X12,67X(45,56)LOCK   - READ FWD/REV(FWD ) - 
*** F7X12 - READ FORWARD/REVERSE
**  F7X12 - READ FORWARD/REVERSE
*   F7X12 - READ FORWARD/REVERSE
*   ----------------------------
* 
*        THIS MODULE READS THE TAPE CREATED BY MODULE  F7X10,  MAINTE-
*        NANCE  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 *F7X12A* AND READING CONTINUES UNTIL  LOADPOINT
*        IS REACHED.
* 
*        F7X12  (READ  FORWARD) SUPPORTS REPEAT CONDITION BY REWINDING
*        THE TAPE AND  CONTINUING  THE  READ  FORWARD.   F7X12A  (READ
*        REVERSE)   DOES  NOT  SUPPORT REPEAT CONDITION DUE TO THE IN-
*        ABILITY 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 F7X12A 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. F7X12 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. F7X12 - ABORT ON .REWIND. COMMAND -
*           4. F7X12 - ABORT ON .READ FWD. COMMAND -
*           5. F7X12 - ABORT ON .RES. COMMAND - 
*           6. F7X12 - ABORT ON .REL. COMMAND - 
*           7. F7X12 - ABORT ON .WAITNB. COMMAND -
* 
*           8. F7X12A- ERROR CODE = *OCT AT LINE (EA) = *OCT
*           9. F7X12A- ABORT ON .REWIND. COMMAND -
*          10. F7X12A- ABORT ON .READ REV. COMMAND -
*          11. F7X12A- ABORT ON .RES. COMMAND - 
*          12. F7X12A- ABORT ON .REL. COMMAND - 
*          13. F7X12A- 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.
* 
* 
*** F7X12 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
/          TAPE MUST BE *F7X10* GENERATED FOR DATA COMPARE
* 
 1 FORMAT F7X12 - READ FORWARD -
 2 FORMAT F7X12 - ERROR CODE = *OCT AT LINE (EA) = *OCT 
 4 FORMAT F7X12 - ABORT ON .REWIND. COMMAND - 
 5 FORMAT F7X12 - ABORT ON .READ FWD. COMMAND - 
 6 FORMAT F7X12 - ABORT ON .RES. COMMAND -
 7 FORMAT F7X12 - ABORT ON .REL. COMMAND -
10 FORMAT F7X12 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X12- ERRS=*DECD LOOP=*DECD
* 
   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
   B3 = 0 
   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
   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 
34 IF(SB(1).AND.EOT.NE.0)GOTO 54      *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)GOTO 40 
   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
   GOTO 52
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.EQ.56B) 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 12A               *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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 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   - F7X12 -   READ FORWARD/REVERSE
   MODULE F7X12A,67X(45,56)LOCK  - READ FWD/REV(REV ) - 
 1 FORMAT F7X12A - READ REVERSE - 
 2 FORMAT F7X12A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 4 FORMAT F7X12A - ABORT ON .READ REV. COMMAND -
 5 FORMAT F7X12A - ABORT ON .RES. COMMAND - 
 6 FORMAT F7X12A - ABORT ON .REL. COMMAND - 
 7 FORMAT F7X12A - ABORT ON .REWIND. COMMAND -
10 FORMAT F7X12A - ABORT ON .WAITNB. COMMAND -
14 FORMAT F7X12A- ERR=*DECD LOOP=*DECD
15 FORMAT F7X12 ERROR(S) IN MODULE = *DECD
   EQUATE ALERT TO 4000, LOADPT TO 4, FILEMK TO 20
* 
20 B1 = P9                   *RECORD COUNT=REC MAX
   MSG 1 TO DISPLAY,PRINT    *POST RUNNING MESSAGE
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 
   RES P1, 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 B1 = B1 - 1                       *DECREMENT RECORD COUNT
   IF(SB(1).AND.ALERT.EQ.0) GOTO 50  *NO ALERT DETECTED 
   ERROR 2/202 , GOSUB 70 
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
   GOTO 22 WHILE (B0-1.NE.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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE,ABT 76
76 CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 22         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X12A -   READ FWD/REV(REV)
   MODULE F7X13,67X(45,56)LOCK   - CANNED POLYNOMIAL TEST - 
*** F7X13 - CANNED POLYNOMIAL TEST
**  F7X13 - CANNED POLYNOMIAL TEST
*   F7X13 - CANNED POLYNOMIAL TEST
*   ------------------------------
* 
*        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  POLY-
*        NOMIALS READ ARE COMPARED WITH EXPECTED RESULTS. 
* 
*        SINCE  CANNED  POLYNOMIALS  ARE  USED,  CODE  TRANSLATION AND
*        PARITY SELECTIONS MADE BY  THE  USER  IN  PARAMETER  REGISTER
*        P1 (PXXX) 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. F7X13 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X13 - ABORT ON .WAITNB. COMMAND -
*           4. F7X13 - ABORT ON .WRITE. COMMAND - 
*           5. F7X13 - ABORT ON .RES. COMMAND - 
*           6. F7X13 - ABORT ON .REWIND. COMMAND -
*           7. F7X13 - ABORT ON .REL. COMMAND - 
*           8. F7X13 - ABORT ON .READ FWD. COMMAND -
*           9. F7X13 - 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.
* 
* 
* 
*** F7X13 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - ERROR PROCESSOR 
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
 1 FORMAT F7X13 - CANNED POLYNOMIAL TEST -
 2 FORMAT F7X13 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X13 - ABORT ON .WAITNB. COMMAND - 
 5 FORMAT F7X13 - ABORT ON .WRITE. COMMAND -
 6 FORMAT F7X13 - ABORT ON .RES. COMMAND -
10 FORMAT F7X13 - ABORT ON .REWIND. COMMAND - 
11 FORMAT F7X13 - ABORT ON .REL. COMMAND -
12 FORMAT F7X13 - ABORT ON .READ FWD. COMMAND - 
13 FORMAT F7X13 - ABORT ON .ENDFILE. COMMAND -
14 FORMAT F7X13- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X13 ERROR(S) IN MODULE = *DECD
* 
   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.45) 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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 26         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X13 -   CANNED POLYNOMIAL TEST
   MODULE F7X14,67X(45,56)LOCK   - CAPSTAN GO DOWN -
*** F7X14 - CAPSTAN GO DOWN-TIME TEST - 
**  F7X14 - CAPSTAN GO DOWN-TIME TEST - 
*   F7X14 - CAPSTAN GO DOWN-TIME TEST - 
*   --------------------------------- 
* 
*        F7X14  VERIFIES  THAT  THERE ARE NO DEAD SPOTS IN THE CAPSTAN
*        SERVO SYSTEM AT REPETITION  PERIODS  OF  APPROX.  250  MICRO-
*        SECONDS TO 1.25 MSEC IN STEPS OF 10 MICROSECONDS.  10 RECORDS
*        ARE WRITTEN AT  EACH  TIME  INTERVAL  FOR  A  TOTAL  OF  1000
*        RECORDS. 
* 
*        DESCRIPTION -
* 
*           1. FILL OB WITH THE SELECTED DATA PATTERN AND  SET  WC  TO
*              THE SELECTED RECORD LENGTH.
*           2. RESERVE AND REWIND.
*           3. CLEAR FILE, RECORD AND DELAY COUNTERS. 
*           4. RESERVE. 
*           5. WRITE ONE RECORD.
*           6. DELAY CURRENT DELAY TIME (0 TO 1000 MICROSECONDS). 
*           7. GO TO STEP 10 IF EOT.  REPORT EC 200 IF STATUS ERROR.
*           8. REPEAT STEPS 5-7 FOR A TOTAL OF 10 TIMES.
*           9. INCREMENT THE  DELAY  TIME  BY 10 MICROSECONDS.  REPEAT
*              STEPS 4-8 IF THE DELAY TIME IS LESS THAN 1 MSEC. 
*          10. GO TO STEP 2 IF REPEAT MODULE OR CONDITION.
*          11. EXIT.
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. F7X14 - ABORT ON .RES. COMMAND - 
*           3. F7X14 - ABORT ON .REWIND. COMMAND -
*           4. F7X14 - ABORT ON .WRITE. COMMAND - 
* 
*           5. -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. 
* 
*** F7X14 - INTERNAL DOCUMENTATION
* 
*        REGISTER USAGE - 
* 
*          B0 = FILE COUNTER (ALWAYS ZERO)
*             = TRACK SIZE (6 OR 8) 
*             = RANDOM SEED 
*          B1 = RECORD COUNTER
*          B2 = DELAY COUNTER 
*          B3 = PATTERN FOR STORING 
*          B5 = MSG NUMBER FOR ABORT PROCESSING 
*          B6 = LOOP COUNTER FOR SCOPING MESSAGE
*          B7 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
 1 FORMAT F7X14 - CAPSTAN GO DOWN - 
 2 FORMAT F7X14 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 5 FORMAT F7X14 - ABORT ON .WRITE. COMMAND -
 6 FORMAT F7X14 - ABORT ON .RES. COMMAND -
10 FORMAT F7X14 - ABORT ON .REWIND. COMMAND - 
14 FORMAT F7X14- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X14 ERROR(S) IN MODULE = *DECD
   EQUATE EOT TO 10, ERROR TO 5034
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   IF(P4.AND.3000.EQ.2000) GOTO 23  *IF RANDOM PATTERN
   B0 = 10
   B3 = P4
   IF(DC.EQ.56B)GOTO 21   *IF 9 TRACK TAPE
   B0 = 6                      *TRACK SIZE (6 OR 8) 
21 IF(P4.AND.3000.EQ.1000)B3=P4.XOR.7777  *IF ALT PAT 
   DUP B0 BITS OF P4/B3 TO OB FOR 500 
   GOTO 25
23 B0 = P7                     *RANDOM SEED 
   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 WC = P2                     *RECORD LENGTH TO WC REGISTER
* 
*-------- REWIND UNIT 
* 
30 B5 = 6 
   RES P1, ABT 74              *RESERVE 
   B5 = 10
   B7 = 3                      *REWIND MOTION CODE
   REWIND, ABT 74              *REWIND
   B0 = 0                      *CLEAR FILE COUNTER
   B1 = 0                      *CLEAR RECORD COUNTER
   B2 = 0                      *CLEAR DELAY COUNTER 
* 
*-------- WRITE TAPE
* 
40 B5 = 6 
   RES P1, ABT 74 
   B5 = 5 
   B7 = 1                      *FORWARD WRITE MOTION CODE 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   B1 = B1+1                   *BUMP RECORD COUNT 
   WRITE, ABT 74
   DELAY B2 USEC
   IF(SB(1).AND.ERROR.NE.0) GOTO 60  *IF ERROR DETECTED 
   GOTO 40 WHILE (B2+10D.LT.1000D)   *WRITE 1000D TIMES 
54 B6 = B6 + 1                 *BUMP LOOP COUNT 
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 14 (BA,B6) TO DISPLAY   *POST SCOPING MSG
   GOTO 30                     *RESTART 
55 IF(ES.AND.CM.NE.0) GOTO 30  *IF REPEAT MODULE/CONDITION
   IF(BA.EQ.0) GOTO 57         *IF NO ERRORS
56 MSG 15 (BA) TO DAYFILE      *REPORT ERRORS 
57 EXIT 
* 
*-------- STATUS ERROR SUBROUTINE 
* 
60 IF(SB(1).AND.EOT.NE.0) GOTO 54  *IF EOT DETECTED 
   ERROR 2/200, GOSUB 70
   IF (BA.GT.3) GOTO 55 
   GOTO 40
* 
*-------- 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   *ERROR MESSAGE 
   RETURN 
71 MSG EM(EC,EA) TO LINE 1     *ERROR CODE MESSAGE
   B0 = 0 
   STATUS SENSE, ABT 72 
72 CALL 98A                    *ERROR CODE PROCESSOR
   MSG 1 TO DISPLAY            *REPLACE RUN MESSAGE 
   RETURN 
* 
*-------- PROCESS PRODUCT OVERLAY ABORT 
* 
74 BA = BA + 1                 *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0) GOTO 75  *IF NOT SCOPING
   MSG 14 (BA,B6) TO DISPLAY   *ERROR MESSAGE 
   GOTO 30                     *RESTART 
75 MSG B5 TO LINE 0            *ERROR CONDITION 
   MSG EM TO LINE 1            *PRODUCT OVERLAY ERROR MSG 
   B0 = 0 
   STATUS SENSE, ABT 76 
76 CALL 980                    *PROCESS ERROR MODULE
   MSG 1 TO DISPLAY            *REPLACE RUN MESSAGE 
   IF(BA.LT.2) GOTO 30         *NOT SECOND TRY
   GOTO 55                     *ABNORMAL TERMINATION
   END 20 
COMPILE   - F7X14 -   CAPSTAN GO DOWN-TIME TEST 
   MODULE F7X15,67X(45,56)LOCK   - BACKSPACE -
*** F7X15 - BACKSPACE 
**  F7X15 - BACKSPACE 
*   F7X15 - BACKSPACE 
*   ----------------- 
* 
*        F7X15 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 PATTERN 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. F7X15 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X15 - ABORT ON .BKSP. COMMAND -
*           4. F7X15 - ABORT ON .READ REV. COMMAND -
*           5. F7X15 - ABORT ON .WRITE. COMMAND - 
*           6. F7X15 - ABORT ON .RES. COMMAND - 
*           7. F7X15 - ABORT ON .REL. COMMAND - 
*           8. F7X15 - ABORT ON .REWIND. COMMAND -
*           9. F7X15 - 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 OPERATION. 
* 
*          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. 
* 
* 
* 
*** F7X15 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X15 - BACKSPACE - 
 2 FORMAT F7X15 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X15 - ABORT ON .BKSP. COMMAND - 
 5 FORMAT F7X15 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT F7X15 - ABORT ON .WRITE. COMMAND -
 7 FORMAT F7X15 - ABORT ON .RES. COMMAND -
10 FORMAT F7X15 - ABORT ON .REL. COMMAND -
11 FORMAT F7X15 - ABORT ON .REWIND. COMMAND - 
12 FORMAT F7X15 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X15- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X15 ERROR(S) IN MODULE = *DECD
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10, 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
   B0=0 
   WC = P2                    *REC LENGTH TO WC REG 
22 B3 = 100                   *FILE MAX TEST MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *TEST 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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 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   - F7X15 -   BACKSPACE 
   MODULE F7X16,67X(45,56)LOCK   - BACKSPACE INCR. LENGTH - 
*** F7X16 - BACKSPACE INCR. LENGTH
**  F7X16 - BACKSPACE INCR. LENGTH
*   F7X16 - BACKSPACE INCR. LENGTH
*   ------------------------------
* 
*        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. F7X16 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X16 - ABORT ON .BKSP. COMMAND -
*           4. F7X16 - ABORT ON .READ REV. COMMAND -
*           5. F7X16 - ABORT ON .WRITE. COMMAND - 
*           6. F7X16 - ABORT ON .RES. COMMAND - 
*           7. F7X16 - ABORT ON .REL. COMMAND - 
*           8. F7X16 - ABORT ON .REWIND. COMMAND -
*           9. F7X16 - 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 OPERATION. 
* 
*          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. 
* 
* 
*** F7X16 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X16 - BACKSPACE INCR. LENGTH -
 2 FORMAT F7X16 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X16 - ABORT ON .BKSP. COMMAND - 
 5 FORMAT F7X16 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT F7X16 - ABORT ON .WRITE. COMMAND -
 7 FORMAT F7X16 - ABORT ON .RES. COMMAND -
10 FORMAT F7X16 - ABORT ON .REL. COMMAND -
11 FORMAT F7X16 - ABORT ON .REWIND. COMMAND - 
12 FORMAT F7X16 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X16- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X16 ERROR(S) IN MODULE = *DECD
* 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
* 
20 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 TEST MODE 
   IF(P3.AND.40.EQ.0)GOTO 24  *TEST 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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 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   - F7X16 -   BACKSPACE INCR. LENGTH
   MODULE F7X17,67X(45,56)LOCK   - WRITE SKIP TO ERASE -
*** F7X17 - WRITE SKIP TO ERASE 
**  F7X17 - WRITE SKIP TO ERASE 
*   F7X17 - WRITE SKIP TO ERASE 
*   --------------------------- 
* 
*        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 TEST 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. F7X17 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X17 - ABORT ON .ENDFILE. COMMAND - 
*           4. F7X17 - ABORT ON .WRITE. COMMAND - 
*           5. F7X17 - ABORT ON .RES. COMMAND - 
*           6. F7X17 - ABORT ON .REWIND. COMMAND -
*           7. F7X17 - ABORT ON .REL. COMMAND - 
*           8. F7X17 - ABORT ON .BKSP. COMMAND -
*           9. F7X17 - 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
* 
* 
*** F7X17 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
 1 FORMAT F7X17 - WRITE SKIP TO ERASE - 
 2 FORMAT F7X17 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X17 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT F7X17 - ABORT ON .WRITE. COMMAND -
 6 FORMAT F7X17 - ABORT ON .RES. COMMAND -
10 FORMAT F7X17 - ABORT ON .REWIND. COMMAND - 
11 FORMAT F7X17 - ABORT ON .REL. COMMAND -
12 FORMAT F7X17 - ABORT ON .BKSP. COMMAND - 
13 FORMAT F7X17 - ABORT ON .ERASE. COMMAND -
14 FORMAT F7X17- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X17 ERROR(S) IN MODULE = *DECD
* 
   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.EQ.56B)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 TEST MODE 
   IF(P3.AND.40.EQ.0)GOTO 30  *IF TEST 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.ERROR.EQ.0) GOTO 51 
   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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 26         *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X17 -   WRITE SKIP TO ERASE 
   MODULE F7X18,67X(45,56)LOCK   - WRITE SKIP, INCR. LENGTH - 
*** F7X18 - WRITE SKIP, INCR. LENGTH
**  F7X18 - WRITE SKIP, INCR. LENGTH
*   F7X18 - WRITE SKIP, INCR. LENGTH
*   --------------------------------
* 
*        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 TEST 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. F7X18 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X18 - ABORT ON .ENDFILE. COMMAND - 
*           4. F7X18 - ABORT ON .WRITE. COMMAND - 
*           5. F7X18 - ABORT ON .RES. COMMAND - 
*           6. F7X18 - ABORT ON .REWIND. COMMAND -
*           7. F7X18 - ABORT ON .REL. COMMAND - 
*           8. F7X18 - ABORT ON .BKSP. COMMAND -
*           9. F7X18 - 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
* 
* 
*** F7X18 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X18 - WRITE SKIP, INCR. LENGTH -
 2 FORMAT F7X18 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X18 - ABORT ON .ENDFILE. COMMAND -
 5 FORMAT F7X18 - ABORT ON .WRITE. COMMAND -
 6 FORMAT F7X18 - ABORT ON .RES. COMMAND -
10 FORMAT F7X18 - ABORT ON .REWIND. COMMAND - 
11 FORMAT F7X18 - ABORT ON .REL. COMMAND -
12 FORMAT F7X18 - ABORT ON .BKSP. COMMAND - 
13 FORMAT F7X18 - ABORT ON .ERASE. COMMAND -
14 FORMAT F7X18- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X18 ERROR(S) IN MODULE = *DECD
* 
   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.EQ.56B)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 TEST MODE 
   IF(P3.AND.40.EQ.0)GOTO 30  *IF TEST 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.ERROR.EQ.0) GOTO 51 
   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
   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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2) GOTO 26        *NOT SECOND TRY 
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X18 -   WRITE SKIP, INCR. LENGTH
   MODULE F7X19,67X(45,56)LOCK   -RANDOM WRITE- 
*** F7X19 - RANDOM WRITE
**  F7X19 - RANDOM WRITE
*   F7X19 - RANDOM WRITE
*   --------------------
* 
*        F7X19 CREATES THE TAPE USED FOR RANDOM READ IN MODULE -F7X20-
* 
*        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. 
*           5. RELEASE, DELAY AND RESERVE.
*           6. BUMP RECORD COUNTER. 
*           7. ADD ADDRESS CODING.
*           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. F7X19 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X19 - ABORT ON .WRITE. COMMAND - 
*           4. F7X19 - ABORT ON .ENDFILE. COMMAND - 
*           5. F7X19 - ABORT ON .RES. COMMAND - 
*           6. F7X19 - ABORT ON .REL. COMMAND - 
*           7. F7X19 - ABORT ON .REWIND. COMMAND -
*           8. F7X19 - 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.
* 
*** F7X19 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X19 - RANDOM WRITE -
 2 FORMAT F7X19 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X19 - ABORT ON .WRITE. COMMAND -
 5 FORMAT F7X19 - ABORT ON .ENDFILE. COMMAND -
 6 FORMAT F7X19 - ABORT ON .RES. COMMAND -
 7 FORMAT F7X19 - ABORT ON .REL. COMMAND -
10 FORMAT F7X19 - ABORT ON .REWIND. COMMAND - 
11 FORMAT F7X19 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X19- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X19 ERROR(S) IN MODULE = *DECD
* 
   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
   B5 = 10
   B2 = 500 
   IF(DC.EQ.56B)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
25 RANDOM TO OB FOR 500, START P7 
* 
*---------ADDRESS CODING ALWAYS WRITTEN 
* 
30 WC = RT                   *GENERATE RANDOM WORD COUNT
   IF(WC.LT.4) GOTO 30       *INSURE IT IS BETWEEN 4 - 7777 
   GOSUB 60 
   B1 = B1 + 1               *BUMP RECORD COUNTER 
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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 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   - F7X19 -   RANDOM WRITE
   MODULE F7X20,67X(45,56)LOCK   -RANDOM READ(FWD PORTION)- 
*** F7X20 - RANDOM READ (FORWARD PORTION) 
**  F7X20 - RANDOM READ (FORWARD PORTION) 
*   F7X20 - RANDOM READ (FORWARD PORTION) 
*   ------------------------------------- 
* 
*        THE  TAPE  USED BY THIS MODULE MUST BE CREATED BY -F7X19-.  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 -F7X20A- IS EXECUTED AND
*        A  REVERSE  READ  IS  PERFORMED UNTIL LOAD POINT IS DETECTED.
* 
*        F7X20  (READ  FORWARD) SUPPORTS REPEAT CONDITION BY REWINDING
*        THE TAPE AND  CONTINUING  THE  READ  FORWARD.   F7X20A  (READ
*        REVERSE)   DOES  NOT  SUPPORT REPEAT CONDITION DUE TO THE IN-
*        ABILITY 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 ERR)
*          11. REPORT EC 212 IF RECORD ERROR     (WORD 2 OF IB IN ERR)
*          12. REPORT EC 213 IF WT IN ERROR      (WORD 3 OF IB IN ERR)
*          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 F7X20A.
* 
* 
*          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. F7X20 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X20 - ABORT ON .READ FWD. COMMAND -
*           4. F7X20 - ABORT ON .RES. COMMAND - 
*           5. F7X20 - ABORT ON .REL. COMMAND - 
*           6. F7X20 - ABORT ON .REWIND. COMMAND -
*           7. F7X20 - 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 -F7X98B- DOCUMENTATION) 
* 
*          13. -EC  212-  INCORRECT  RECORD HAS BEEN DETECTED DURING A
*              RANDOM READ. (SEE NOTE IN -F7X98B-)
* 
*          14. -EC 213- INCORRECT  RECORD  LENGTH  HAS  BEEN  DETECTED
*              DURING A REVERSE READ. 
* 
* 
*** F7X20 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X20 - RANDOM READ (FORWARD) - 
 2 FORMAT F7X20 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X20 - ABORT ON .READ FWD. COMMAND - 
 6 FORMAT F7X20 - ABORT ON .RES. COMMAND -
 7 FORMAT F7X20 - ABORT ON .REL. COMMAND -
10 FORMAT F7X20 - ABORT ON .REWIND. COMMAND - 
11 FORMAT F7X20 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X20- ERR=*DECD LOOP=*DECD 
15 FORMAT F7X20 ERROR(S) IN MODULE = *DECD
* 
   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 
30 GOSUB 60                   *RELEASE-RESERVE
   B1 = B1 + 1                *INCREMENT RECORD COUNT 
* 
*---------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
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.EQ.56B) 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 20A                *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 
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 
   STATUS SENSE, ABT 72 
72 CALL 98A                   *ERROR CODE PROCESSOR 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   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
   STATUS SENSE, ABT 76 
76 CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   GOTO 55                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X20 -   RANDOM READ (FORWARD PORTION) 
   MODULE F7X20A,67X(45,56)LOCK   - RANDOM READ (REVERSE) 
 1 FORMAT F7X20A - RANDOM READ (REVERSE)
 2 FORMAT F7X20A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
 4 FORMAT F7X20A - ABORT ON .READ REV. COMMAND -
 5 FORMAT F7X20A - ABORT ON .RES. COMMAND - 
 6 FORMAT F7X20A - ABORT ON .REL. COMMAND - 
 7 FORMAT F7X20A - ABORT ON .REWIND. COMMAND -
10 FORMAT F7X20A - ABORT ON .WAITNB. COMMAND -
14 FORMAT F7X20A- ERR=*DECD LOOP=*DECD
15 FORMAT F7X20A ERROR(S) IN MODULE = *DECD 
* 
   EQUATE ALERT TO 4000, LOADPT TO 4, FILEMK TO 20
* 
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   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 
   RES P1, 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 B1 = B1 - 1               *DECREMENT RECORD COUNT
   IF(SB(1).AND.ALERT.EQ.0) GOTO 50   *NO ALERT DETECTED
   ERROR 2/202 , GOSUB 70 
   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
   GOTO 22 WHILE (B0-1.NE.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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 CALL 980                   *PROCESS ERROR MODULE 
   MSG 1 TO DISPLAY           *REPLACE RUN MESSAGE
   IF(BA.LT.2)GOTO 22         *NOT SECOND TRY 
   GOTO 56                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X20A -   RANDOM READ (REVERSE)
   MODULE F7X21,67X(45,56)LOCK   - POLYNOMIAL TEST -
*** F7X21 - POLYNOMIAL TEST 
**  F7X21 - POLYNOMIAL TEST 
*   F7X21 - POLYNOMIAL TEST 
*   ----------------------- 
* 
*        F7X21 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 TEST 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. F7X21 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. F7X21 - ABORT ON .RES. COMMAND - 
*           4. F7X21 - ABORT ON .REWIND. COMMAND -
*           5. F7X21 - ABORT ON .WRITE. COMMAND - 
*           6. F7X21 - ABORT ON .BKSP. COMMAND -
*           7. F7X21 - ABORT ON .READ FWD. COMMAND -
*           8. F7X21 - 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 F7X98B)
* 
*          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. 
* 
* 
*** F7X21 - 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 = CODE FOR ERROR DETECTION
*             = TRACK SIZE (6 OR 8) 
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X21 - POLYNOMIAL TEST - 
 2 FORMAT F7X21 - ERROR CODE = *OCT AT LINE (EA) = *OCT 
 4 FORMAT F7X21 - ABORT ON .RES. COMMAND -
 5 FORMAT F7X21 - ABORT ON .REWIND. COMMAND - 
 6 FORMAT F7X21 - ABORT ON .WRITE. COMMAND -
 7 FORMAT F7X21 - ABORT ON .BKSP. COMMAND - 
10 FORMAT F7X21 - ABORT ON .READ FWD. COMMAND - 
11 FORMAT F7X21 - ABORT ON .REL. COMMAND -
15 FORMAT F7X21 ERROR(S) IN MODULE = *DECD
   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 TEST MODE 
   IF(P3.AND.40.EQ.0)GOTO 30  *TEST MODE SELECTED 
   B3 = P8                    *MAINT MODE PASS CNT FRM 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.45) 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.ERROR.NE.0) ERROR 2/253, GOSUB 70 
   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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 CALL 980                   *PROCESS ERROR MODULE 
   GOTO 43                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X21 -   POLYNOMIAL TEST 
   MODULE F7X22,67X(45,56)LOCK   - POSITION TEST -
*** F7X22 - POSITION TEST 
**  F7X22 - POSITION TEST 
*   F7X22 - POSITION TEST 
*   --------------------- 
* 
*        F7X22 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).
* 
*        F7X22 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. 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 ERRORS.
*           2. F7X22 - 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  241  -  AN  ABNORMAL  STATUS  WAS DETECTED DURING A
*              BACKSPACE IN THE POSITION SUBTEST. 
* 
*           6. EC 242 - AN ABNORMAL STATUS WAS DETECTED DURING A  READ
*              FORWARD IN THE POSITION TEST.
* 
*           7. 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.
* 
*           8. EC  244  -  AN  ABNORMAL STATUS WAS DETECTED DURING THE
*              FORESPACE OVER RECORD 6 IN THE POSITION TEST.
* 
*           9. EC 245 - THE READ POLYNOMIAL AND WRITE  POLYNOMIAL  FOR
*              RECORD  6  HAVE FAILED TO COMPARE IN THE POSITION TEST.
*              B6=EXPECTED  SB(2)=ACTUAL
* 
*          10. EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE.
* 
*** F7X22 - INTERNAL DOCUMENTATION
* 
*        REGISTER USAGE - 
* 
*          B0 = CURRENT ITERATION(FILE) COUNT 
*          B1 = CURRENT RECORD COUNT
*          B2 = CURRENT RECORD CONTENTS 
*          B5 = FILE MAX
*          B6 = EXPECTED POLYNOMIAL 
*          B7 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X22 - POSITION TEST 
 2 FORMAT F7X22 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 3 FORMAT F7X22 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ERROR TO 5024, FILEMK TO 20, EOT TO 10
* 
20 MSG 1 TO DISPLAY,PRINT     *RUNNING MESSAGE
   B5 = 100                   *FILE MAX FOR TEST 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           *BKSP ALL RECORDS, READ 1,2,TM,3
   GOSUB 54           *ERASE RECORD 4 
   GOSUB 40           *WRITE RECORD 5 
   GOSUB 44           *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 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 
* 
*-------------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, ABT 74 
   B1 = B1 - 1                *DECREMENT RECORD NUMBER
   IF(SB(1).AND.ERROR.NE.0) ERROR 2/241, 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 56  *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 
56 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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 CALL 980                   *PROCESS ERROR MODULE 
   GOTO 24                    *ABNORMAL TERMINATION 
   END 20 
COMPILE   - F7X22 -   POSITION TEST 
   MODULE F7X23,67X(45,56)LOCK   - LADDER TEST -
*** F7X23 - LADDER TEST 
**  F7X23 - LADDER TEST 
*   F7X23 - LADDER TEST 
*   ------------------- 
* 
*        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  DECRE-
*        MENTED  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. F7X23 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X23 - ABORT ON .WAITNB. COMMAND -
*           4. F7X23 - ABORT ON .WRITE. COMMAND - 
*           5. F7X23 - ABORT ON .RES. COMMAND - 
*           6. F7X23 - ABORT ON .REWIND. COMMAND -
*           7. F7X23 - ABORT ON .REL. COMMAND - 
*           8. F7X23 - ABORT ON .READ FWD. COMMAND -
*           9. F7X23 - 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. 
* 
* 
* 
*** F7X23 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
 1 FORMAT F7X23 - LADDER TEST - 
 2 FORMAT F7X23 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X23 - ABORT ON .WAITNB. COMMAND - 
 5 FORMAT F7X23 - ABORT ON .WRITE. COMMAND -
 6 FORMAT F7X23 - ABORT ON .RES. COMMAND -
10 FORMAT F7X23 - ABORT ON .REWIND. COMMAND - 
11 FORMAT F7X23 - ABORT ON .REL. COMMAND -
12 FORMAT F7X23 - ABORT ON .READ FWD. COMMAND - 
13 FORMAT F7X23 - ABORT ON .READ REV. COMMAND - 
15 FORMAT F7X23 ERROR(S) IN MODULE = *DECD
* 
   EQUATE BOT TO 4, EOT TO 10, ERROR TO 5034
* 
* 
20 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.EQ.56B)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 
   RES P1, ABT 74 
   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 IF(P3.AND.20.NE.0) GOTO 44  *IF BYPASS WAIT *PARKED* 
   B5 = 4 
   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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 CALL 980                  *PROCESS ERROR MODULE
   MSG 1 TO DISPLAY          *REPLACE RUN MESSAGE 
   IF(BA.LT.2) GOTO 26       *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
77 END 20 
COMPILE   - F7X23 -   LADDER TEST 
   MODULE F7X24,67X(45,56)LOCK   - READ CLIP LEVELS TEST -
*** F7X24 - READ CLIP LEVELS TEST 
**  F7X24 - READ CLIP LEVELS TEST 
*   F7X24 - READ CLIP LEVELS TEST 
*   ----------------------------- 
* 
*        THIS  MODULE VERIFIES THE ABILITY TO READ DATA WRITTEN IN THE
*        USER-DEFINED DENSITY AT ALL READ CLIP LEVELS  (NORMAL,  HIGH,
*        AND  LOW). 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 AND LOW (ONLY APPLICABLE TO 7 TRACK).
* 
*        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. F7X24 - ABORT ON .RES. COMMAND - 
*           3. F7X24 - ABORT ON .REWIND. COMMAND -
*           4. F7X24 - ABORT ON .WRITE. COMMAND - 
*           5. F7X24 - ABORT ON .READ FWD. COMMAND -
*           6. F7X24 - 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. 
* 
*** F7X24 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
* 
 1 FORMAT F7X24 - READ CLIP LEVELS TEST 
 2 FORMAT F7X24 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X24 - ABORT ON .RES. COMMAND -
 5 FORMAT F7X24 - ABORT ON .REWIND. COMMAND - 
 7 FORMAT F7X24 - ABORT ON .WRITE. COMMAND -
10 FORMAT F7X24 - 7 TRACK ONLY
11 FORMAT F7X24 - ABORT ON .READ FWD. COMMAND - 
12 FORMAT F7X24 - ABORT ON .READ REV. COMMAND - 
14 FORMAT F7X24- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X24 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 5034 
* 
20 MSG 1 TO DISPLAY,PRINT    *RUNNING MESSAGE 
   WC = P2
* 
   IF(DC.EQ.45) GOTO 21 
   MSG 10 TO PRINT
   GOTO 77
* 
*--------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 GOTO 30 WHILE (B2+1.NE.3)   *TEST ALL CLIP LEVELS
   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 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
   STATUS SENSE, ABT 72 
72 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 STATUS SENSE, ABT 76 
76 CALL 980                    *PROCESS ERROR STATUS
   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   - F7X24 -   READ CLIP LEVELS TEST 
   MODULE F7X30,67X(45,56)LOCK   - TAPE PATH DAMAGE - 
*** F7X30 - TAPE PATH DAMAGE
**  F7X30 - TAPE PATH DAMAGE
*   F7X30 - TAPE PATH DAMAGE
*   ------------------------
* 
*        F7X30 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. F7X30 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*           3. F7X30 - ABORT ON .READ FWD. COMMAND -
*           4. F7X30 - ABORT ON .READ REV. COMMAND -
*           5. F7X30 - ABORT ON .WRITE. COMMAND - 
*           6. F7X30 - ABORT ON .RES. COMMAND - 
*           7. F7X30 - ABORT ON .REL. COMMAND - 
*           8. F7X30 - ABORT ON .REWIND. COMMAND -
*           9. F7X30 - 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.
* 
* 
*** F7X30 - 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 = CODE FOR ERROR DETECTION
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
*          F7X98A - ERROR CODE PROCESSOR
* 
 1 FORMAT F7X30 - TAPE PATH DAMAGE -
 2 FORMAT F7X30 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
 4 FORMAT F7X30 - ABORT ON .READ FWD. COMMAND - 
 5 FORMAT F7X30 - ABORT ON .READ REV. COMMAND - 
 6 FORMAT F7X30 - ABORT ON .WRITE. COMMAND -
 7 FORMAT F7X30 - ABORT ON .RES. COMMAND -
10 FORMAT F7X30 - ABORT ON .REL. COMMAND -
11 FORMAT F7X30 - ABORT ON .REWIND. COMMAND - 
12 FORMAT F7X30 - ABORT ON .WAITNB. COMMAND - 
14 FORMAT F7X30- ERRS=*DECD LOOP=*DECD
15 FORMAT F7X30 ERROR(S) IN MODULE = *DECD
* 
* 
   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 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 
* 
   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 
   STATUS SENSE, ABT 72 
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
   STATUS SENSE, ABT 76 
76 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
77 END 20 
COMPILE   - F7X30 -   TAPE PATH DAMAGE
   MODULE F7X31,67X(45,56)LOCK   - GENERAL STATUS - 
*** F7X31 - GENERAL STATUS
**  F7X31 - GENERAL STATUS
*   F7X31 - GENERAL STATUS
*   ----------------------
* 
*        F7X31 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 SUBSYSTEM 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. F7X31 - ABORT ON .RES. COMMAND - 
* 
***  F7X31 - INTERNAL DOCUMENTATION 
* 
*        REGISTER USAGE - 
* 
*          B5 = MESSAGE NUMBER IN CASE OF ABORT 
*          B6 = LOOP COUNT FOR SCOPING
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          F7X980 - STATUS ANALYSIS MODULE
* 
* 
 1 FORMAT F7X31 - 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 F7X31 - ABORT ON .RES. COMMAND -
5  FORMAT F7X31- ERRS=*DECD LOOP=*DECD
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
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 
   STATUS SENSE, ABT 76 
76 CALL 980 
   MSG 1 TO DISPLAY 
   MSG 1 TO LINE 2
   GOTO 22
   END 20 
COMPILE   - F7X31 -   GENERAL STATUS
   MODULE F7X32,67X(45,56)LOCK   - SERVO ADJUST - 
*** F7X32 - SERVO ADJUST
**  F7X32 - SERVO ADJUST
*   F7X32 - SERVO ADJUST
*   --------------------
* 
*        F7X32  ALLOWS  THE  USER TO PERFORM CAPSTAN SERVO ADJUSTMENTS
*        ON-LINE.  THE MODULE IS DESIGNED TO  RUN  CONTINUOUSLY  UNTIL
*        THE UNIT IS MADE NOT READY (RESET KEY). ONCE THE  USER  MAKES
*        THE  UNIT  READY  AGAIN,  THE  MODULE TERMINATES.  ALL ERRORS
*        EXCEPT NOT READY ARE IGNORED BY THIS MODULE. 
* 
* 
*        DESCRIPTION -
* 
*           1. SET DATA PATTERN TO 7777 AND WC TO 5000B.
*           2. RESERVE. 
*           3. REWIND.
*           4. RESERVE. 
*           5. GO TO STEP 25 IF THE UNIT IS NOT READY.
*           6. WRITE 1 RECORD.
*           7. WAIT PARKED. 
*           8. GO TO STEP 25 IF THE UNIT IS NOT READY.
*           9. DELAY 5 MSEC TO STABALIZE THE PARKED CONDITION.
*          10. REPEAT STEPS 6-9 25 TIMES. 
*          11. RELEASE. 
*          12. REPEAT STEPS 4-11 50 TIMES.
*          13. RESERVE. 
*          14. GO TO STEP 25 IF THE UNIT IS NOT READY.
*          15. READ REVERSE 1 RECORD. 
*          16. WAIT PARKED. 
*          17. GO TO STEP 25 IF THE UNIT IS NOT READY.
*          18. GO TO STEP 2 IF LOAD POINT.
*          19. DELAY 5 MSEC TO STABALIZE THE PARKED CONDITION.
*          20. REPEAT STEPS 15-19 25 TIMES. 
*          21. GO TO STEP 25 IF THE UNIT IS NOT READY.
*          22. RELEASE. 
*          23. REPEAT STEPS 13-22 50 TIMES. 
*          24. GO TO STEP 2.
*          25. WE  ARRIVE  AT  THIS  STEP  IF  THE  UNIT IS NOT READY.
*              RESERVE. 
*          26. GO TO STEP 29 IF THE UNIT IS READY.
*          27. RELEASE. 
*          28. DELAY 1 SECOND AND GO TO STEP 25.
*          29. WE ARRIVE AT THIS STEP AFTER THE  UNIT  IS  MADE  READY
*              AGAIN.  CLEAR THE UNIT.
*          30. TERMINATE. 
* 
*        ERRORS REPORTED
* 
*          NONE 
* 
*** F7X32 - INTERNAL DOCUMENTATION
* 
*        REGISTER USAGE - 
* 
*          B1 = INSIDE LOOP COUNTER 
*          B2 = OUTSIDE LOOP COUNTER
* 
*        MODULES CALLED 
* 
*          NONE 
* 
 1 FORMAT F7X32 - SERVO ADJUST
20 MSG 1 TO DISPLAY,PRINT 
   DUP 7777 TO OB FOR 500 
   WC = 5000
21 B2 = 0 
   RES P1, ABT 70 
   REWIND, ABT 70 
22 RES P1, ABT 70 
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY
   B1 = 0 
23 WRITE, ABT 70
   WAITNB, ABT 70 
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY
   DELAY 5 MSEC 
   GOTO 23 WHILE (B1+1.NE.25D)
   REL, ABT 70
   GOTO 22 WHILE (B2+1.NE.50D)
   B2 = 0 
30 RES P1, ABT 70 
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY
   B1 = 0 
31 READ REV, ABT 70 
   WAITNB, ABT 70 
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY
   IF(SB(1).AND.4.NE.0) GOTO 21   *IF LOAD POINT
   DELAY 5 MSEC 
   GOTO 31 WHILE (B1+1.NE.25D)
   IF(SB(1).AND.1.EQ.0) GOTO 71   *IF UNIT NOT READY
   REL, ABT 70
   GOTO 30 WHILE (B2+1.NE.50D)
   GOTO 21
* 
*------------ABORT PROCESSOR--------
* 
70 IF(SB(1).AND.1.NE.0) GOTO 21   *IF READY DID NOT DROP
71 RES P1, ABT 72 
   IF(SB(1).AND.1.NE.0) GOTO 72 
   REL, ABT 72
   DELAY 1000D MSEC          *WAIT FOR READY TO COME BACK UP
   GOTO 71
72 SELECT CLEAR, ABT 73      *CLEAR THE RESET STATUS
73 END 20 
COMPILE   - F7X32 -   SERVO ADJUST
   MODULE F7X33,6000(45,56),LOCK   - SEARCH FILE MARK TEST -
*** F7X33 - SEARCH FILE MARK TEST 
**  F7X33 - SEARCH FILE MARK TEST 
*   F7X33 - SEARCH FILE MARK TEST 
*   ----------------------------- 
* 
*        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 F7X33 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. 
* 
* 
*        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. F7X33 - ABORT ON .FUNC FORMAT. COMMAND - 
*           3. F7X33 - ABORT ON .FUNC STATUS. COMMAND - 
*           4. F7X33 - ABORT ON .FUNC RELEASE. COMMAND -
*           5. F7X33 - ABORT ON .FUNC SEARCH FM FWD. COMMAND -
*           6. F7X33 - ABORT ON .FUNC SEARCH FM REV. COMMAND -
*           7. F7X33 - ABORT ON .FUNC BKSP. COMMAND - 
*           8. F7X33 - ABORT ON .OUT OR OUTB. COMMAND - 
*           9. F7X33 - ABORT ON .STATUS. COMMAND -
*          10. F7X33 - ABORT ON .RES. COMMAND - 
*          11. F7X33 - ABORT ON .REL. COMMAND - 
*          12. F7X33 - ABORT ON .FUNC WRITE. COMMAND -
*          13. F7X33 - ABORT ON .FUNC ENDFILE. COMMAND -
*          14. F7X33 - 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
* 
*** F7X33 - 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 - 
* 
*          F7X988 - REPORT ERROR STATUS 
* 
 1 FORMAT F7X33 - SEARCH FILE MARK TEST 
 2 FORMAT F7X33 - ABORT ON .FUNC FORMAT. COMMAND -
 3 FORMAT F7X33 - ABORT ON .FUNC STATUS. COMMAND -
 4 FORMAT F7X33 - ABORT ON .FUNC RELEASE. COMMAND - 
 5 FORMAT F7X33 - ABORT ON .FUNC SEARCH FM FWD. COMMAND - 
 6 FORMAT F7X33 - ABORT ON .FUNC SEARCH FM REV. COMMAND - 
 7 FORMAT F7X33 - ABORT ON .FUNC BKSP. COMMAND -
10 FORMAT F7X33 - ABORT ON .OUT OR OUTB. COMMAND -
11 FORMAT F7X33 - ABORT ON .STATUS. COMMAND - 
12 FORMAT F7X33 - ABORT ON .RES. COMMAND -
13 FORMAT F7X33 - ABORT ON .REL. COMMAND -
14 FORMAT F7X33 - ABORT ON .FUNC WRITE. COMMAND - 
15 FORMAT F7X33 - ABORT ON .FUNC ENDFILE. COMMAND - 
16 FORMAT F7X33 - 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 F7X33 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
25 FORMAT F7X33 ERROR(S) IN MODULE = *DECD
   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 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.45) 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   - F7X33 -   SEARCH FILE MARK TEST 
   MODULE F7X34,6000(45,56),LOCK   - NOISE BYPASS TEST -
*** F7X34 - NOISE BYPASS TEST 
**  F7X34 - NOISE BYPASS TEST 
*   F7X34 - NOISE BYPASS TEST 
*   ------------------------- 
* 
*        THIS MODULE VERIFIES THAT THE NOISE BYPASS CAPABILITY OF  THE
*        SUBSYSTEM  IS  FUNCTIONAL.   ONLY  REVERSE  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 F7X34 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. 
* 
* 
*        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 AN END OF  FILE.   REPORT  A
*              122 ERROR IF NO FILE MARK STATUS.
*           6. RESERVE THE UNIT AND WRITE A  RECORD  OF  THE  SELECTED
*              RANDOM LENGTH. 
*           7. REPEAT STEP 6 UNTIL THREE RECORDS HAVE BEEN WRITTEN. 
*           8. RESERVE  THE  UNIT AND PERFORM A READ REVERSE 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. F7X34 - ABORT ON .FUNC FORMAT. COMMAND - 
*           3. F7X34 - ABORT ON .FUNC STATUS. COMMAND - 
*           4. F7X34 - ABORT ON .FUNC RELEASE. COMMAND -
*           5. F7X34 - ABORT ON .FUNC READREV. COMMAND -
*           6. F7X34 - ABORT ON .INB. COMMAND - 
*           7. F7X34 - ABORT ON .FUNC REWIND. COMMAND - 
*           8. F7X34 - ABORT ON .OUT OR OUTB. COMMAND - 
*           9. F7X34 - ABORT ON .STATUS. COMMAND -
*          10. F7X34 - ABORT ON .RES. COMMAND - 
*          11. F7X34 - ABORT ON .REL. COMMAND - 
*          12. F7X34 - ABORT ON .FUNC WRITE. COMMAND -
*          13. F7X34 - 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 
* 
*** F7X34 - 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 - 
* 
*          F7X988 - REPORT ERROR STATUS 
* 
 1 FORMAT F7X34 - NOISE BYPASS TEST 
 2 FORMAT F7X34 - ABORT ON .FUNC FORMAT. COMMAND -
 3 FORMAT F7X34 - ABORT ON .FUNC STATUS. COMMAND -
 4 FORMAT F7X34 - ABORT ON .FUNC RELEASE. COMMAND - 
 5 FORMAT F7X34 - ABORT ON .FUNC READREV. COMMAND - 
 6 FORMAT F7X34 - ABORT ON .INB. COMMAND -
 7 FORMAT F7X34 - ABORT ON .FUNC REWIND. COMMAND -
10 FORMAT F7X34 - ABORT ON .OUT OR OUTB. COMMAND -
11 FORMAT F7X34 - ABORT ON .STATUS. COMMAND - 
12 FORMAT F7X34 - ABORT ON .RES. COMMAND -
13 FORMAT F7X34 - ABORT ON .REL. COMMAND -
14 FORMAT F7X34 - ABORT ON .FUNC WRITE. COMMAND - 
15 FORMAT F7X34 - 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 F7X34 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
25 FORMAT F7X34 ERROR(S) IN MODULE = *DECD
* 
   EQUATE RELEASE TO 1, FORMAT TO 4, STATUS TO 12, EOT TO 10
   EQUATE REWIND TO 10, READREV TO 140, BOT TO 4, BUSY TO 2 
   EQUATE FILEMK TO 20, ENDFILE TO 51, WRITE TO 50
   DATA (OB,CON) 1,0,0,2,0,1,1,2,1,3  *DENSITY CODES
* 
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.45) 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 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 
* 
*---------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
* 
*---------READ THE 3 NOISE RECORDS AND END-OF-FILE REVERSE
* 
   GOSUB 50                  *RESERVE 
   B5 = 5 
   FUNC READREV, 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 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 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   - F7X34 -   NOISE BYPASS TEST 
   MODULE F7X35,6000(45,56),LOCK   - WARMSTART READ TEST -
*** F7X35 - WARMSTART READ TEST 
**  F7X35 - WARMSTART READ TEST 
*   F7X35 - WARMSTART READ TEST 
*   --------------------------- 
* 
*        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 F7X35 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. 
* 
* 
*        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 ADAPTER. 
*           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.
*              CODE TRANSLATION INVALID IN THIS TEST. 
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERROR MESSAGES.
* 
*           2. F7X35 - ABORT ON .FUNC FORMAT. COMMAND - 
*           3. F7X35 - ABORT ON .FUNC STATUS. COMMAND - 
*           4. F7X35 - ABORT ON .FUNC RELEASE. COMMAND -
*           5. F7X35 - ABORT ON .FUNC CLEAR. COMMAND -
*           6. F7X35 - ABORT ON .INB. COMMAND - 
*           7. F7X35 - ABORT ON .FUNC REWIND. COMMAND - 
*           8. F7X35 - ABORT ON .OUT OR OUTB. COMMAND - 
*           9. F7X35 - ABORT ON .STATUS. COMMAND -
*          10. F7X35 - ABORT ON .RES. COMMAND - 
*          11. F7X35 - ABORT ON .REL. COMMAND - 
*          12. F7X35 - ABORT ON .FUNC WRITE. COMMAND -
*          13. F7X35 - 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.
* 
*** F7X35 - 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 - 
* 
*          F7X988 - REPORT ERROR STATUS 
* 
 1 FORMAT F7X35 - WARMSTART READ TEST 
 2 FORMAT F7X35 - ABORT ON .FUNC FORMAT. COMMAND -
 3 FORMAT F7X35 - ABORT ON .FUNC STATUS. COMMAND -
 4 FORMAT F7X35 - ABORT ON .FUNC RELEASE. COMMAND - 
 5 FORMAT F7X35 - ABORT ON .FUNC CLEAR. COMMAND - 
 6 FORMAT F7X35 - ABORT ON .INB. COMMAND -
 7 FORMAT F7X35 - ABORT ON .FUNC REWIND. COMMAND -
10 FORMAT F7X35 - ABORT ON .OUT OR OUTB. COMMAND -
11 FORMAT F7X35 - ABORT ON .STATUS. COMMAND - 
12 FORMAT F7X35 - ABORT ON .RES. COMMAND -
13 FORMAT F7X35 - ABORT ON .REL. COMMAND -
14 FORMAT F7X35 - ABORT ON .FUNC WRITE. COMMAND - 
15 FORMAT F7X35 - 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 F7X35 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
25 FORMAT F7X35 ERROR(S) IN MODULE = *DECD
26 FORMAT CODE CONVER INVALID IN THIS TEST
   DATA (OB,CON) 1,0,0,2,0,1,1,2,1,3  *DENSITY CODES
* 
   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 
   IF(P1.AND.700.NE.0)GOTO 40 
   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.45) 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.400) 
   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.45) 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
   GOSUB 55 
   FUNC B4, ABT 70           *WARMSTART READ FUNCTION 
   B5 = 6 
   INB, ABT 70               *READ
   IF(WT.NE.400)ERROR 22/266,GOTO 70
   IF(SB(1).AND.ALERT.NE.0) ERROR 21/265, GOTO 70  *ALERT 
   ERROR 23/257 
   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 
40 MSG 26 TO DISPLAY,PRINT
77 END 30 
COMPILE   - F7X35 -   WARMSTART READ TEST 
   MODULE F7X98A,67X(45,56)LOCK  - ERROR CODE PROCESSING -
*** F7X98A-F7X98F - ERROR CODE PROCESSING 
**  F7X98A-F7X98F - ERROR CODE PROCESSING 
*   F7X98A-F7X98F - ERROR CODE PROCESSING 
*   ------------------------------------- 
* 
*        MODULE F7X98A CAN BE CALLED BY ANY TEST MODULE THAT MAKES  UP
*        F7X.   F7X98A  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 F7X980 TO
*        PERFORM STATUS ANALYSIS AND TO PRESENT A COMPOSITE PICTURE OF
*        THE FAILURE TO THE USER. 
* 
*        F7X98A  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 -
* 
*          F7X98A -  ERROR CODES 105 - 207
*          F7X98B -  ERROR CODES 210 - 222
*          F7X98C -  ERROR CODES 223 - 241
*          F7X98D -  ERROR CODES 242 - 254
*          F7X98E -  ERROR CODES 255 - 267
*          F7X98F -  ERROR CODES 270 - 275
* 
*** F7X98A-F7X98F - INTERNAL DOCUMENTATION
* 
*        REGISTER USAGE - 
* 
*          NOTE-  BEFORE  ANY  REGISTERS ARE USED, F7X98A SAVES REGIS-
*                 TERS B0-B7 AND BA IN THE INPUT BUFFER WORDS 443-453.
*                 B8  IS  THEN  SET  TO 7777 TO FLAG F7X980 THAT IT IS
*                 BEING  ENTERED  FROM  F7X98A-F7X98F.  THE  REGISTERS
*                 WILL ALWAYS  BE  RESTORED  BY  THE  F7X980  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 - 
* 
*          F7X980 - 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, -F7X98A-)
/ 
/                           --- 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   F7X 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. 
/ 
31 FORMAT --F7X98A .... UNDEFINED ERROR CODE .... 
/ 
40 IB(443) = BA              *SAVE REGISTERS
   IB(444) = B0 
   IB(445) = B1 
   IB(446) = B2 
   IB(447) = B3 
   IB(450) = B4 
   IB(451) = B5 
   IB(452) = B6 
   IB(453) = B7 
   B8 = 7777                 *SET FLAG TO F7X980
   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 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 = 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
   EXIT TO 980               *GO PROCESS STATUS 
   END 40 
COMPILE   - F7X98A -   ERROR CODE PROCESSING
   MODULE F7X98B,67X(45,56)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 -F7X98B- DOCUMENTATION)
/ 
 3 FORMAT EC 212-INCORRECT RECORD HAS BEEN DETECTED DURING A
 4 FORMAT RANDOM READ. (SEE NOTE IN -F7X98B-) 
/ 
 5 FORMAT EC 213-INCORRECT RECORD LENGTH HAS BEEN DETECTED
 6 FORMAT DURING A RANDOM READ. -SEE NOTE IN F7X98B - 
/ 
/                           --- 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.
/ 
31 FORMAT --F7X98B .... 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 = 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
   EXIT TO 980               *GO PROCESS STATUS 
   END 50 
COMPILE   - F7X98B -   ERROR CODE PROCESSING
   MODULE F7X98C,67X(45,56)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 F7X98B) 
/ 
11 FORMAT EC 233-THE RECORD LENGTH IS IN ERROR DURING A 
12 FORMAT -READ FORWARD- IN THE POLYNOMIAL TEST.
/ 
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. 
/ 
20 FORMAT EC 241-AN ABNORMAL STATUS WAS DETECTED DURING A 
21 FORMAT -BACKSPACE- IN THE -POSITION- TEST. 
/ 
31 FORMAT --F7X98C .... 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 = 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
   EXIT TO 980               *GO PROCESS STATUS 
   END 50 
COMPILE   - F7X98C -   ERROR CODE PROCESSING
   MODULE F7X98D,67X(45,56)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. 
/ 
31 FORMAT --F7X98D .... 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 = 221 
   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
   EXIT TO 980               *GO PROCESS STATUS 
   END 50 
COMPILE   - F7X98D -   ERROR CODE PROCESSING
   MODULE F7X98E,67X(45,56)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 --F7X98E ....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
   EXIT TO 980               *GO PROCESS STATUS 
   END 50 
COMPILE   - F7X98E -   ERROR CODE PROCESSING
   MODULE F7X98F,67X(45,56)LOCK  - ERROR CODE PROCESSING -
*   TEXT FOR ERROR CODES  270 - 277 
/ 
/ 
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.
/ 
31 FORMAT --F7X98F ....UNDEFINED ERROR CODE ....
/ 
50 B5 = 211 
   IF(EC.EQ.274) GOTO 60
   B5 = 213 
   IF(EC.EQ.275) 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
   EXIT TO 980               *GO PROCESS STATUS 
   END 50 
COMPILE   - F7X98F -   ERROR CODE PROCESSING
   MODULE F7X980,67X(45,56)LOCK   - STATUS ANALYSIS - 
*** F7X980-F7X987 - STATUS ANALYSIS 
**  F7X980-F7X987 - STATUS ANALYSIS 
*   F7X980-F7X987 - STATUS ANALYSIS 
*   ------------------------------- 
* 
*        F7X980  CAN BE ENTERED FROM ANY TEST MODULE THAT MAKES UP F7X
*        OR FROM MODULES F7X98A-F7X98E  (ERROR  CODE  PROCESSING  MOD-
*        ULES). F7X980 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 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 = FSC LOOPBACK OPTION ACTIVE
*          XX2X = UNIT LOOPBACK OPTION ACTIVE 
* 
*          XXX0 = NO MOTION 
*          XXX1 = FWD WRITE MOTION
*          XXX3 = REWIND MOTION 
*          XXX4 = NO MOTION (NOT USED)
*          XXX5 = FWD READ MOTION 
*          XXX6 = REV READ MOTION 
*          XXX7 = REWIND (NOT USED) 
* 
* 
*** 
**
*        F7X980  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. 
* 
* 
*          F7X980 - UNIT FAILURE ANALYSIS 
*          F7X981 - UNIT FAILURE ANALYSIS 
*          F7X983 - ADAPTER PARITY ANALYSIS 
*          F7X984 - CORRECTABLE ERROR ANALYSIS
*          F7X985 - DETAILED STATUS ERROR ANALYSIS
*          F7X986 - DETAILED STATUS ERROR ANALYSIS
*          F7X987 - DETAILED STATUS ERROR ANALYSIS
* 
* 
*        WHEN THE ANALYSIS IS COMPLETE,MODULE F7X985, F7X986 OR F7X987
*        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 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 
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
 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
15 FORMAT   EC 0303 TAPE UNIT RESET KEY DEPRESSED 
18 FORMAT   EC 0309 TAPE UNIT TAPE NOT PRESENT AT BOT SENSOR
19 FORMAT   EC 0310 TAPE UNIT LOAD FAILURE. REELS NOT LOADED
20 FORMAT   EC 0311 TAPE UNIT REELS NOT LOADED
21 FORMAT   P8-P9   =*OCT *OCT
22 FORMAT              DATA ERROR(S)
23 FORMAT   ERR.. WD=*OCT  AC=*OCT  EX=*OCT  DIFF=*OCT
25 IF(B8.EQ.7777B) GOTO 27    *IF ENTERED FROM F7X98A 
   IB(443B) = BA
   IB(444B) = B0              *SAVE REGISTERS 
   IB(445B) = B1
   IB(446B) = B2
   IB(447B) = B3
   IB(450B) = B4
   IB(451B) = B5
   IB(452B) = B6
   IB(453B) = B7
   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(444B) 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
   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 IB(474B) 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
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(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(14).AND.BIT4.EQ.0) ERROR 18/0,GOTO 40   *NO TAPE 
   IF(SB(14).AND.BIT3.NE.0)ERROR 20/0,GOTO 40 
   IF(SB(12).AND.BIT0.NE.0) ERROR 19/0,GOTO 40  *NO REELS 
35 EXIT TO 981               *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(SB(3).AND.177B.GT.52B) GOTO 42    *ERROR .GT. 52B 
   EXIT TO 985               *ENTER DS ERROR PROCESSOR
42 IF(SB(3).AND.177B.GT.130B) GOTO 43   *ERROR .GT. 130B
   EXIT TO 986               *ENTER DS ERROR PROCESSOR
43 EXIT TO 987               *ENTER DS ERROR PROCESSOR
   END 25 
COMPILE   - F7X980 -   STATUS ANALYSIS
   MODULE F7X981,67X(45,56)LOCK   - 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   EC *DECD TAPE UNIT LEFT COLUMN FAULT
 3 FORMAT   EC *DECD TAPE UNIT RIGHT COLUMN FAULT 
 4 FORMAT   EC 0321 TAPE UNIT COLUMNS NOT LOADED
 5 FORMAT   EC 0322 TAPE UNIT LOAD FAILURE. NOT AT BOT
 6 FORMAT   EC 0323 TAPE UNIT NOT AT BOT AFTER A REWIND 
 8 FORMAT   EC 0325 TAPE UNIT AIR PRESSURE FAILURE
 9 FORMAT   EC 0326 TAPE UNIT AIR FLOW MDI
11 FORMAT   EC 0328 TAPE UNIT NOT READY. NO ERROR STATUS
12 FORMAT   EC 0331 TAPE SPEED STATUS ERR- EXP=*OCT ACT=*OCT
13 FORMAT   EC *DECD TAPE UNIT SLOW START 
14 FORMAT   EC *DECD TAPE UNIT VELOCITY ERROR 
15 FORMAT   EC 0341 TAPE UNIT DATA NOT READ AFTER WRITE 
17 FORMAT   EC 0359 TAPE UNIT ERASE CURRENT FAILURE 
18 FORMAT   EC 0360 TAPE UNIT WRITE CURRENT FAILURE 
19 FORMAT   EC 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.NE.0)ERROR 4/0,GOTO 40
   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(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(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.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 = 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(SB(11).AND.7.EQ.B1) GOTO 39      *IF STATUS AGREES
   B2 = SB(11).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 983               *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(SB(3).AND.177B.GT.52B) GOTO 42    *ERROR .GT. 52B 
   EXIT TO 985               *ENTER DS ERROR PROCESSOR
42 IF(SB(3).AND.177B.GT.130B) GOTO 43   *ERROR .GT. 130B
   EXIT TO 986               *ENTER DS ERROR PROCESSOR
43 EXIT TO 987               *ENTER DS ERROR PROCESSOR
   END 30 
COMPILE   - F7X981 -   STATUS ANALYSIS
   MODULE F7X983,67X(45,56)LOCK   - 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 
15 FORMAT   EC 0503 TAPE PARITY - EXCESSIVE SKEW
17 FORMAT   EC 0505 TAPE PARITY - FALSE EOP 
18 FORMAT   EC 0506 TAPE PARITY - FALSE FRAME COUNT 
19 FORMAT   EC 0507 TAPE PARITY - VERTICAL PARITY ERROR 
20 FORMAT   EC 0508 TAPE PARITY - LONGITUDINAL PARITY ERROR 
21 FORMAT   EC 0509 TAPE PARITY - CRC DETECTED ERROR
24 FORMAT   EC 0512 UNEXPLAINED TCU OR TAPE PARITY ERROR
25 FORMAT   EC 0700 SINGLE TRACK CORRECTION 
26 FORMAT   EC 0701 DUAL TRACK CORRECTION 
30 IF(SB(9).AND.BIT5.NE.0) GOTO 41     *TCU ERASE ERROR 
   IF(SB(6).AND.BIT1.NE.0) GOTO 41     *BAD RESYNC
   BA = 25
   IF(SB(4).AND.BIT9.NE.0) GOTO 40   *SINGLE TRK CORRECTION 
   BA = 26
   IF(SB(4).AND.BIT10.NE.0) GOTO 40  *DUAL TRK CORRECTION 
   BA = 15
   IF(SB(5).AND.BIT0.NE.0) GOTO 40     *EXCESSIVE 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 = 24
   IF(SB(3).AND.BIT7.NE.0) GOTO 40     *TCU PARITY
   IF(SB(3).AND.BIT9.EQ.0) GOTO 41     *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   - F7X983 -   STATUS ANALYSIS
   MODULE F7X984,67X(45,56)LOCK   - 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   EC 0500 TAPE PARITY - ERASE ERROR 
 3 FORMAT   EC 0600 ADAPTER/PPU LOST DATA 
 4 FORMAT   EC 0601 READ ROM/RAM FLAG BIT DETECTED
 6 FORMAT   EC 0603 NOISE BYPASSED
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 
47 BA = 4 
   IF(SB(5).AND.BIT2.NE.0) GOTO 50     *FLAG BIT DETECTED 
   BA = 6 
   IF(SB(9).AND.BIT10.NE.0) GOTO 50    *NOISE BYPASSED
   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.52B) GOTO 52    *ERROR .GT. 52B 
   EXIT TO 985    *ENTER CW ERROR PROCESSOR 
52 IF(SB(3).AND.177B.GT.130B) GOTO 53   *ERROR .GT. 130B
   EXIT TO 986               *ENTER DS ERROR PROCESSOR
53 EXIT TO 987               *ENTER DS ERROR PROCESSOR
   END 25 
COMPILE   - F7X984 -   STATUS ANALYSIS
   MODULE F7X985,67X(45,56)LOCK   - STATUS ANALYSIS - 
 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 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 25 FEET OF BLANK TAPE
 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 4032 TAPE UNIT BUSY ON REWIND OR DSE 
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 = SB(3).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.32) ERROR 11/0, GOTO 70     *EC = 32
   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
   BA = IB(443B)             *RESTORE REGISTERS 
   B0 = IB(444B)
   B1 = IB(445B)
   B2 = IB(446B)
   B3 = IB(447B)
   B4 = IB(450B)
   B5 = IB(451B)
   B6 = IB(452B)
   B7 = IB(453B)
/         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   - F7X985 -   STATUS ANALYSIS
   MODULE F7X986,67X(45,56)LOCK   - STATUS ANALYSIS - 
 1 FORMAT DS ERROR 4110 FSC ABNORM END ON SEL CODE CONV SEQ 
 2 FORMAT DS ERROR 4111 FSC ABNORM END ON LOAD TRANS REG SEQ
 3 FORMAT DS ERROR 4112 FSC ABNORM END ON READ TRANS REG SEQ
 4 FORMAT DS ERROR 4113 FSC TRANS REG DATA MISCOMPARE 
 5 FORMAT DS ERROR 4114 FSC ERROR ON START MAINT TRANS SEQ
 6 FORMAT DS ERROR 4117 FSC DIAG FULL/EMPTY CNT ERROR 
 7 FORMAT DS ERROR 4120 FSC BUFFER ADDRESS INCORRECT
10 FORMAT DS ERROR 4121 FSC ABNORM END ON READ BLOCK ID SEQ 
11 FORMAT DS ERROR 4122 INCORRECT BLOCK ID ON DIAG WRITE
12 FORMAT DS ERROR 4124 FSC ABNORM END ON START FSC SEQ 
13 FORMAT DS ERROR 4126 FSC READ PATTERN ERROR
14 FORMAT DS ERROR 4127 DATA ERRORS IN READ TRANS REG 
15 FORMAT DS ERROR 4130 INCORRECT BLOCK ID ON DIAG READ 
16 FORMAT DS ERROR *OCT UNRECOGNIZED DS ERROR CODE
17 FORMAT --------------------------------------------------
30 BA = SB(3).AND.177B       *DS ERROR CODE 
   IF(BA.EQ.110) ERROR 1/0, GOTO 40     *EC = 110 
   IF(BA.EQ.111) ERROR 2/0, GOTO 40     *EC = 111 
   IF(BA.EQ.112) ERROR 3/0, GOTO 40     *EC = 112 
   IF(BA.EQ.113) ERROR 4/0, GOTO 40     *EC = 113 
   IF(BA.EQ.114) ERROR 5/0, GOTO 40     *EC = 114 
   IF(BA.EQ.117) ERROR 6/0, GOTO 40     *EC = 117 
   IF(BA.EQ.120) ERROR 7/0, GOTO 40     *EC = 120 
   IF(BA.EQ.121) ERROR 10/0, GOTO 40    *EC = 121 
   IF(BA.EQ.122) ERROR 11/0, GOTO 40    *EC = 122 
   IF(BA.EQ.124) ERROR 12/0, GOTO 40    *EC = 124 
   IF(BA.EQ.126) ERROR 13/0, GOTO 40    *EC = 126 
   IF(BA.EQ.127) ERROR 14/0, GOTO 40    *EC = 127 
   IF(BA.EQ.130) ERROR 15/0, GOTO 40    *EC = 130 
   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
   BA = IB(443B)             *RESTORE REGISTERS 
   B0 = IB(444B)
   B1 = IB(445B)
   B2 = IB(446B)
   B3 = IB(447B)
   B4 = IB(450B)
   B5 = IB(451B)
   B6 = IB(452B)
   B7 = IB(453B)
/         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   - F7X986 -   STATUS ANALYSIS
   MODULE F7X987,67X(45,56)LOCK   - STATUS ANALYSIS - 
 1 FORMAT DS ERROR 4154 ILLEGAL CONV TABLE NUMBER REQUEST 
 2 FORMAT DS ERROR 4155 TIMEOUT ON EXPECTED FSC-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 FSC ABNORM ON LOADING TRANS REG 
 6 FORMAT DS ERROR 4161 FSC ABNORM ON COPY WRITE CODE TABLE 
 7 FORMAT DS ERROR 4162 FSC ABNORM ON TIE SEQ 
10 FORMAT DS ERROR 4163 FSC ABNORM ON OUT CLIP LEVEL PARAM
11 FORMAT DS ERROR 4164 FSC ABNORM ON SYS RESET COMMAND 
12 FORMAT DS ERROR 4165 FSC ABNORM END STAT ON SENSE COMMAND
13 FORMAT DS ERROR 4170 FSC SEQUENCE ERROR
14 FORMAT DS ERROR 4171 FSC 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 FSC 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 --------------------------------------------------
60 BA = SB(3).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.163) ERROR 10/0, GOTO 70      *EC = 163 
   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.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
   BA = IB(443B)             *RESTORE REGISTERS 
   B0 = IB(444B)
   B1 = IB(445B)
   B2 = IB(446B)
   B3 = IB(447B)
   B4 = IB(450B)
   B5 = IB(451B)
   B6 = IB(452B)
   B7 = IB(453B)
/         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   - F7X987 -   STATUS ANALYSIS
   MODULE F7X988,6000(45,56),LOCK   - STATUS REPORTING -
*** F7X988 - STATUS REPORTING FOR LOW-LEVEL MODULES 
**  F7X988 - STATUS REPORTING FOR LOW-LEVEL MODULES 
*   F7X988 - STATUS REPORTING FOR LOW-LEVEL MODULES 
*   ----------------------------------------------- 
* 
*        F7X988  CAN  BE  ENTERED FROM ANY LOW-LEVEL MODULE IN THE F7X
*        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(447) = B3              *SAVE REGISTERS TO BE USED 
   IB(450) = B4 
   IB(451) = B5 
   IB(452) = 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(447)              *RESTORE USED REGISTERS
   B4 = IB(450) 
   B5 = IB(451) 
   B6 = IB(452) 
34 PICTURE
   HALT 
   BLANK
   EXIT 
   END 20 
COMPILE   - F7X988 -   STATUS REPORTING 
   MODULE F7X99,67X(45,56)LOCK  - F7X MODULES - 
*** F7X99 - MODULES LIST
**  F7X99 - MODULES LIST
*   F7X99 - MODULES LIST
* 
*        F7X99  PROVIDES  A BRIEF DESCRIPTION OF THE MODULES THAT MAKE
*        UP THE F7X TEST SERIES.  THIS  LIST  CAN  BE  VIEWED  ON  THE
*        SYSTEM K/L DISPLAY OR LOADED AND PRINTED.
* 
* 
/ 
/   1.1   PART ONE - TEST PASS
/ 
/      1. VERIFY PARAMETERS 
/ 
/         F7X00 - PARAMETER VALIDATION
/ 
/ 
/      2. INSURE ADAPTER IS OPERATIONAL 
/ 
/         F7X01 - ADAPTER PATH
/ 
/      3. TEST UNIT DATA INTEGRITY WITH NO TAPE MOTION
/ 
/         F7X02 - ADAPTER LOOPBACK
/         F7X03 - UNIT I/O LOOPBACK 
/ 
/      4. VERITY TAPE HANDLING CAPABILITIES 
/ 
/         F7X04 - LOOPS AND VELOCITY
/         F7X05 - RANDOM LOOPS AND VELOCITY 
/ 
/ 
/      5. PRELIMINARY DATA INTEGRITY TESTING BY TRACK 
/ 
/         F7X06 - TRACK TEST
/ 
/ 
/      6. TEST DATA INTEGRITY OF SINGLE OPERATIONS
/ 
/         F7X07 - ERASE 
/         F7X08 - WRITE TAPE MARK/FILE MARK 
/         F7X09 - READ TAPE MARK/FILE MARK
/         F7X10 - WRITE 
/         F7X11 - READ FORWARD
/         F7X12 - READ FORWARD/REVERSE
/         F7X13 - CANNED POLYNOMIAL 
/         F7X14 - CAPSTAN GO DOWN-TIME
/ 
/ 
/      7. PERFORMANCE TEST USING SEQUENCES OF OPERATIONS
/ 
/         F7X15 - BACKSPACE 
/         F7X16 - BACKSPACE INCREMENTING LENGTH 
/         F7X17 - WRITE SKIP TO ERASE 
/         F7X18 - WRITE SKIP INCR. LENGTH 
/         F7X19 - RANDOM WRITE
/         F7X20 - RANDOM READ FORWARD /REVERSE
/         F7X21 - POLYNOMIAL TEST 
/         F7X22 - POSITION TEST 
/         F7X23 - LADDER TEST 
/         F7X24 - READ CLIP LEVELS TEST 
/ 
/ 
/   1.2   PART TWO - REPAIR MODULES 
/ 
/         F7X30 - TAPE PATH DAMAGE
/         F7X31 - GENERAL STATUS
/         F7X32 - SERVO ADJUST
/         F7X33 - SEARCH FILE MARK TEST (AL 10 REQUIRED)
/         F7X34 - NOISE BYPASS TEST     (AL 10 REQUIRED)
/         F7X35 - WARMSTART READ TEST   (AL 10 REQUIRED)
/ 
 1 PAUSE
   EXIT TO 99A
   END 1
COMPILE,SOURCE   - F7X99 -   F7X MODULES
   MODULE F7X99A,67X(45,56)LOCK  - F7X PARAMETERS - 
*** F7X99A - PARAMETERS (P0 - P9) 
**  F7X99A - PARAMETERS (P0 - P9) 
*   F7X99A - PARAMETERS (P0 - P9) 
* 
*        F7X99A 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 -
/           75 =  75 IPS
/          125 = 125 IPS
/          200 = 200 IPS
/ 
/     P1 - TAPE ID (PCAD) 
/ 
/          PXXX - PARITY
/          -    0XXX = ODD PARITY 
/               1XXX = EVEN PARITY
/          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 THRU X6XX ARE ILLEGAL.
/               X7XX =  INTERNAL TO EXTERNAL TRANSLATION IF 
/                       EVEN PARITY  AND 7 TRACK
/                    =  NO TRANSLATION IF,
/                       ODD PARITY 7 TRACK
/          XXAX - ASSEMBLY/DISASSEMBLEY 
/                    XX0X = A/D 6 BIT MODE FOR 7 TRK,9TRK CODED.
/                    XX1X = A/D PACK MODE FOR 9 TRK BINARY. 
/          XXXD - DENSITY 
/             - XXX0 =  556 CPI 
/               XXX1 =  800 CPI 
/               XXX2 =  1600 CPI
/               XXX3 =  200 CPI 
/               XXX4 =  6250 CPI
/ 
/     P2 = RECORD LENGTH
/ 
/     P3 = FLAG BITS / MARGINS
/          XCXX - CLIP LEVEL
/               X0XX =  NORMAL CLIP 
/               X1XX =  HIGH READ CLIP
/               X2XX =  LOW READ CLIP 
/          XXFF - FLAG BITS 
/               XX4X =  MAINTENANCE MODE (0=TEST PASS)
/               XX2X =  N/A 
/               XX1X =  N/A 
/               XXX4 =  LOCK TO BASE NUMBER - IF RANDOM PTRN
/                       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 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 TO WRITE/ 
/                   READ PER MODULE 
/ 
/     P9 - RECORD COUNT 
/          = 0000 - INFINITE RECORD COUNT 
/                   RESULTS IN COMPLETE USE OF TAPE 
/                   BETWEEN BOT AND EOT 
/          = XXXX - MAXIMUM NUMBER OF RECORDS TO
/                   WRITE/READ PER FILE 
01 PAUSE
   END 1
COMPILE,SOURCE   -F7X99A-   F7X PARAMETERS
***F7X - FEDERAL STANDARD CHANNEL TAPE SUBSYSTEM
* 
***3.2   APPLICATIONS 
** 3.2   APPLICATIONS 
*  3.2   APPLICATIONS 
*        ------------ 
* 
*        1.  WHEN RUNNING  THE  CONFIDENCE/VERIFICATION  PART  OF  THE
*            TEST, A RUN,F7X COMMAND WILL RUN THE MODULES.
* 
*        2.  THE CONFIDENCE/VERIFICATION MODULES PROVIDE  THE  ABILITY
*            TO  LOOP  OR  REPEAT  THE  CONDITION  TO  ENABLE  SCOPING
*            HARDWARE.
*        3.  IF  AN  ERROR  IS DETECTED WHILE TRYING TO CONNECT TO THE
*            FSC ADAPTER, AND THE ERROR INDICATES THAT THE FSC ADAPTER
*            IS  HUNG, THE ERROR PROCESSING ROUTINE WILL ISSUE A RESET
*            COMMAND TO THE ADAPTER AUTOMATICALLY.
* 
* 
***3.3   INTERFACES 
** 3.3   INTERFACES 
*  3.3   INTERFACES 
*        -----------
* 
*        REFER TO SECTION  3.1.5  THROUGH  3.1.8  FOR  PARAMETERS  AND
*        MESSAGES.
***3.4   TEST ABORTS
** 3.4   TEST ABORTS
*  3.4   TEST ABORTS
*        -----------
* 
*        1.  IF  AN  ERROR  IS  DETECTED  IN  THE PARAMETER WORDS, THE
*            MODULE WILL BE ABORTED.
* 
*        2.  IF THE ERROR ROUTINE  DETERMINES  THAT  A  RESET  COMMAND
*            SHOULD BE ISSUED TO THE FSC ADAPTER AND AFTER ISSUING THE
*            RESET COMMAND, THE FSC  ADAPTER  FAILS  TO  RESPOND  COR-
*            RECTLY,  THE  MODULE CALLING THE ERROR PROCESSING ROUTINE
*            WILL BE ABORTED. 
* 
*        3.  ALL TEST MODULES, IN CASE OF ERRORS, DO  STATUS  ANALYSIS
*            AND THEN ABORT.
* 
***3.5   SYSTEM ABORTS
** 3.5   SYSTEM ABORTS
*  3.5   SYSTEM ABORTS
*         ------------- 
* 
*        NO  SYSTEM  ABORTS  SHOULD  EVER  BE  CAUSED BY THE TEST. THE
*        PRODUCT OVERLAY PROTECTS THE  SYSTEM  FROM ANY ABORTS. 
* 
***3.6   ERRORS 
** 3.6   ERRORS 
*  3.6   ERRORS 
*        -------
* 
*        FOR EASE OF REFERENCE THESE MESSAGES  ARE  GROUPED  WITH  ALL
*         TEST MESSAGES IN 2.1.6 THROUGH 2.1.8. 
* 
***3.7   PERFORMANCE
** 3.7   PERFORMANCE
*  3.7   PERFORMANCE
*        -----------
* 
*        THE MAIN PURPOSE OF THE TEST F7X IS  TO  DETERMINE  THAT  THE
*        TAPE SUBSYSTEM IS FUNCTIONING CORRECTLY. THE TEST IS DESIGNED
*        TO DETECT FAILURES IN THE ADAPTER AND TAPE SUBSYTEM. 
* 
* 
***3.8   SOFTWARE 
** 3.8   SOFTWARE 
*  3.8   SOFTWARE 
*        -------- 
* 
*           MODULE RUNNING TIMES AND ACCESS LEVELS
*           --------------------------------------
* 
*          MODULE            RUNNING          ACCESS
*           NAME           TIME (SEC)*        LEVEL 
*          ------            -------          ------
* 
*          F7X00                 2              0 
*          F7X01                 2              0 
*          F7X02                 2              0 
*          F7X03                 2              0 
*          F7X04                 5              0 
*          F7X05                25              0 
*          F7X06                 2              0 
*          F7X07                 4              0 
*          F7X08                 4              0 
*          F7X09                 4              0 
*          F7X10                40              0 
*          F7X11                52              0 
*          F7X12               1 MIN 36 SEC     0 
*          F7X13                10              0 
*          F7X14                20              0 
*          F7X15                10              0 
*          F7X16                 7              0 
*          F7X17                 7              0 
*          F7X18                 6              0 
*          F7X19                40              0 
*          F7X20               1 MIN 36 SEC     0 
*          F7X21                 5              0 
*          F7X22                55              0 
*          F7X23               1 MIN 20 SEC     0 
*          F7X24                20              0 
*          F7X30                **              0 
*          F7X31                **              0 
*          F7X32                **              0 
*          F7X33                **              10
*          F7X34                **              10
*          F7X35                **              10
* 
*        * NOTE - P0 = 200
*                 P1 = 12 
*                 P2 = 600
*                 TAPE LENGTH = 600 FEET
* 
*        ** DETERMINED BY THE USER. 
* 
* 
***3.9   INSTALLATION PARAMETERS
** 3.9   INSTALLATION PARAMETERS
*  3.9   INSTALLATION PARAMETERS
*        -----------------------
*        THE  FOLLOWING  NAMES  MUST BE DEFINED TO ASSEMBLE F7X DURING
*        THE UPDATE RUN-
* 
*          *DEFINE,CMSE17X    TO COMPILE F7X FOR OFF-LINE 
* 
***4.0   PRODUCT LEVEL DESCRIPTION
** 4.0   PRODUCT LEVEL DESCRIPTION
*  4.0   PRODUCT LEVEL DESCRIPTION
*        -------------------------
* 
*        CML. 
* 
***4.1   PUBLICATIONS AFFECTED
** 4.1   PUBLICATIONS AFFECTED
*  4.1   PUBLICATIONS AFFECTED
*         --------------------- 
* 
*        NONE.
* 
***4.2   EQUIPMENT CONFIGURATION
** 4.2   EQUIPMENT CONFIGURATION
*  4.2   EQUIPMENT CONFIGURATION
*        -----------------------
* 
*        1.  THE  TEST  REQUIRES  THE  USE  OF  ONE  FSC ADAPTER, TAPE
*            CONTROL UNIT AND TAPE DRIVE. THE TEST CAN ONLY  TEST  ONE
*            ADAPTER, CONTROL UNIT AND DRIVE AT A TIME. 
*        2.  THE TEST USES THE CONTROLWARE IN THE FSC ADAPTER TO  TEST
*            THE SUBSYSTEM. 
* 
* 
***4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS
** 4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS
*  4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS
*        -------------------------------------
* 
*        THE  FSC  ADAPTER FUNCTION CODES AND THE GENERAL AND DETAILED
*        STATUS, AS DEFINED IN THE MB401-A CONTROLWARE, IS INTERPRETED
*        BY  THE  ERROR PROCESSING SUBMODULES AND PRESENTED AS PART OF
*        ERROR MESSAGE DISPLAYS.
* 
***4.4   SECURITY 
** 4.4   SECURITY 
*  4.4   SECURITY 
*        -------- 
* 
*IF -DEF,CMSE17X
*        SECURITY IS PROVIDED BY  THE  OPERATING  SYSTEM  FOR  ON-LINE
*        MALET THRU THE USE OF CVL. 
* 
*ENDIF
*IF DEF,CMSE17X 
*        SECURITY  FOR THE TEST, WHILE RUNNING UNDER DEMOT,IS PROVIDED
*        BY THE ACCESS LEVEL USED ON THE ASSIGN DIRECTIVE.
*ENDIF
* 
*ENDIF
* 
* 
***4.5   RAM REQUIREMENTS.
** 4.5   RAM REQUIREMENTS.
*  4.5   RAM REQUIREMENTS.
*        ---------------- 
* 
*        REFER TO FEDERAL STANDARD CHANNEL  DR  ARH3858.
