*DECK,IST 
*** IST - INTELLIGENT SMALL MAGNETIC TAPE SUBSYSTEM.
*** IST - INTELLIGENT SMALL MAGNETIC TAPE SUBSYSTEM.
**
* 
* 
*   AUTHOR   - R.  F.  FELLRATH 
* 
*              MAINTENANCE SOFTWARE REQUIREMENTS
*              LARGE SYSTEMS DIAGNOSTIC DEVELOPMENT DEPARTMENT
* 
*   DATE     - 04/10/84 
* 
*              COPYRIGHT CONTROL DATA CORP. 1984
* 
* 
***1.0   INTRODUCTION 
**
*  1.0   INTRODUCTION 
*        ------------ 
* 
*        IST  IS  A  TEST  FOR  THE  INTELLIGENT  SMALL  MAGNETIC  TAPE 
*        SUBSYSTEM  WRITTEN  IN THE MALET LANGUAGE.  IST IS COMPOSED OF 
*        TWO GROUPS OF MODULES.  THE FIRST  GROUP  CAN  BE  USED  AS  A 
*        CONFIDENCE  LEVEL TEST OR MODULES CAN BE USED INDEPENDENTLY TO 
*        PERFORM REPAIR.  THE SECOND GROUP  IS  PROVIDED  STRICTLY  FOR 
*        REPAIR OR FOR SPECIAL APPLICATIONS AND DO NOT RUN BY DEFAULT.
* 
*        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
* 
*          IST09    - READ TAPE MARKS    IST08 - WRITE TAPE MARKS 
*          IST11,12 - READ               IST10 - WRITE
*          IST20    - RANDOM READ        IST19 - RANDOM WRITE 
* 
*        THE MAJORITY OF IST 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.
* 
*          IST00 - PARAMETER VALIDATION 
*          IST21 - POLYNOMIAL TEST
*          IST22 - POSITION TEST
*          IST23 - LADDER TEST
*          IST32 - SERVO ADJUST 
*          IST33 - SEARCH FILE MARK TEST
* 
*        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 
*        IST99 FOR PARAMETER SETTINGS). 
* 
*        IST IS STRUCTURED AS AN INVERTED PYRAMID TEST WHICH WORKS  ITS 
*        WAY  THROUGH  THE  ISMT  ADAPTOR  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. VERIFY PARAMETERS 
* 
*           IST00 - PARAMETER VALIDATION
* 
* 
*        2. INSURE ADAPTOR IS OPERATIONAL 
* 
*           IST01 - ADAPTOR PATH
* 
* 
*        3. TEST UNIT DATA INTEGRITY WITH NO TAPE MOTION
* 
*           IST02 - ADAPTOR LOOPBACK
*           IST03 - UNIT I/O LOOPBACK 
* 
*        4. VERITY TAPE HANDLING CAPABILITIES 
* 
*           IST04 - LOOPS AND VELOCITY
*           IST05 - RANDOM LOOPS AND VELOCITY 
* 
* 
*        5. PRELIMINARY DATA INTEGRITY TESTING BY TRACK 
*           IST06 - TRACK TEST
* 
* 
*        6. TEST DATA INTEGRITY OF SINGLE OPERATIONS
* 
*           IST07 - ERASE 
*           IST08 - WRITE TAPE MARK/FILE MARK 
*           IST09 - READ TAPE MARK/FILE MARK
*           IST10 - WRITE 
*           IST11 - READ FORWARD
*           IST12 - READ FORWARD/REVERSE
*           IST13 - CANNED POLYNOMIAL 
*           IST14 - CAPSTAN GO DOWN-TIME TEST 
* 
* 
*        7. PERFORMANCE TEST USING SEQUENCES OF OPERATIONS
* 
*           IST15 - BACKSPACE 
*           IST16 - BACKSPACE INCREMENTING LENGTH 
*           IST17 - WRITE SKIP TO ERASE 
*           IST18 - WRITE SKIP INCR. LENGTH 
*           IST19 - RANDOM WRITE
*           IST20 - RANDOM READ FORWARD /REVERSE
*           IST21 - POLYNOMIAL TEST 
*           IST22 - POSITION TEST 
*           IST23 - LADDER TEST 
*           IST24 - READ CLIP LEVELS TEST 
* 
* 
***1.2   PART TWO - REPAIR MODULES
**
*  1.2   PART TWO - REPAIR MODULES
*        -------------------------
* 
*           IST30 - TAPE PATH DAMAGE
*           IST31 - GENERAL STATUS
*           IST32 - SERVO ADJUST
*           IST33 - SEARCH FILE MARK TEST (AL 10 REQUIRED)
*           IST34 - WARMSTART READ TEST   (AL 10 REQUIRED)
* 
* 
***1.3   RESTRICTIONS 
**
*  1.3   RESTRICTIONS 
*        ------------ 
* 
*        1. ANY MICROCODE OR CONTROLWARE IS ASSUMED TO BE LOADED. 
* 
* 
***1.4   CHARACTERISTICS
**
*  1.4   CHARACTERISTICS
*        ---------------
* 
*        1.  PROGRAM NAME..................................IST. 
* 
*        2.  TEST/DIAG/UTILITY/SYSTEM.....................TEST. 
* 
*        3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER........MALET. 
* 
*        4.  RUN TIME (DEFAULT MODULES 00-24)....28 MIN 13 SEC.*
* 
*            INDIVIDUAL MODULE RUN TIMES (SAME PARAMETERS)
* 
*            MODULE 00 - 1        SEC 
*            MODULE 01 - 3        SEC 
*            MODULE 02 - 1        SEC 
*            MODULE 03 - 13       SEC 
*            MODULE 04 - 38       SEC 
*            MODULE 05 - 2 MIN 30 SEC 
*            MODULE 06 - 20       SEC 
*            MODULE 07 - 22       SEC 
*            MODULE 08 - 22       SEC 
*            MODULE 09 - 38       SEC 
*            MODULE 10 - 9        SEC 
*            MODULE 11 - 9        SEC 
*            MODULE 12 - 17       SEC 
*            MODULE 13 - 1 MIN 36 SEC 
*            MODULE 14 - 1 MIN 30 SEC 
*            MODULE 15 - 1 MIN 30 SEC 
*            MODULE 16 - 54       SEC 
*            MODULE 17 - 44       SEC 
*            MODULE 18 - 40       SEC 
*            MODULE 19 - 20       SEC 
*            MODULE 20 - 32       SEC 
*            MODULE 21 - 50       SEC 
*            MODULE 22 - 7 MIN 55 SEC 
*            MODULE 23 - 5 MIN 50 SEC 
*            MODULE 24 - 9        SEC 
*            MODULE 30 -   VARIABLE 
*            MODULE 31 -   VARIABLE 
*            MODULE 32 -   VARIABLE 
*            MODULE 33 - 20       SEC 
*            MODULE 34 - 17       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 = 25   IPS 
*                 P1 = 2012 A/D PACKED MODE; 1600 CPI 
*                 P2 = 100  RECORD LENGTH 
*                 P3 = 4    LOCK TO BASE NUMBER FOR PATTERN GEN.
*                 P4 = 2000 SELECT RANDOM PATTERN 
*                 P7 = 0000 BASE RANDOM NUMBER = RT CLOCK 
*                 P8 = 10   FILE COUNT
*                 P9 = 10   RECORDS PER FILE
*                 TAPE LENGTH = 250 FEET
*                 NOS SYSTEM ON CYBER 830 WITH MALET
*                 DEDICATED ISMT
* 
* 
***1.5   APPLICABLE DOCUMENTS 
**
*  1.5   APPLICABLE DOCUMENTS 
*        -------------------- 
* 
*        1. EQUIPMENT  SPECIFICATION  NO. 53371027,  INTELLIGENT  SMALL 
*           MAGNETIC TAPE ADAPTOR.
* 
*        2. INTELLIGENT  SMALL  MAGNETIC  TAPE MB465-D TAPE CONTROLWARE 
*           EXTERNAL REFERENCE SPECIFICATION PUB. NO. 53371028. 
* 
*        3. STREAMING  TAPE  UNIT  (STU)  92185  PRODUCT  SPECIFICATION 
*           NO. 49793200. 
* 
*        4. MALET REFERENCE MANUAL (PUB. NO. 60456020)
* 
*        5. CML REFERENCE MANUAL (PUB. NO. 60455860)
* 
*        6. DEMOT REFERENCE MANUAL (PUB. NO. 60455310)
* 
*        7. MSL100  OFF-LINE  MAINTENANCE  SYSTEM  LIBRARY,  VOLUME  1, 
*           REFERENCE MANUAL (PUB. NO. 60455770). 
* 
* 
***2.0   PROGRAM DESCRIPTION
**
*  2.0   PROGRAM DESCRIPTION
*        -------------------
* 
***2.1   PROGRAM NAME 
**
*  2.1   PROGRAM NAME 
*        ------------ 
* 
*        ABSTRACT 
*        -------- 
* 
* 
***2.1.1 MODULES
**
*  2.1.1 MODULES
*        -------
* 
* 
*        IST00 - PARAMETER VALIDATION 
*        -----------------------------
*        IST00 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 IST. 
* 
*        IST01 - ADAPTOR PATH 
*        -------------------- 
*        IST01 VERIFIES THAT THE ADAPTOR 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.
* 
*        IST02 - ADAPTOR LOOPBACK 
*        ------------------------ 
*        IST02  VERIFIES  THAT  THE  LOOPFSC  (RUN ISMT DI DIAGNOSTICS) 
*        FUNCTION OPERATES PROPERLY.
* 
*        IST03 - UNIT I/O LOOPBACK
*        -------------------------
*        IST03 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. 
* 
*        IST04 - LOOPS AND VELOCITY 
*        -------------------------- 
*        IST04 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.
* 
*        IST05 - RANDOM LOOPS AND VELOCITY
*        ---------------------------------
*        IST05 TESTS THE ABILITY OF THE TAPE UNIT TO MOVE TAPE  AT  LOW 
*        SPEED  FORWARD  AND  HIGH REVERSE WITHOUT CREATING LOOP FAULTS 
*        AND VELOCITY ERRORS.  DATA INTEGRITY  IS  IGNORED  DURING  THE 
*        PROCESS.  INCREMENTING LENGTHS OF TAPE ARE MOVED FROM 4 INCHES 
*        UP TO 11 FEET IN INCREMENTS  OF  4  INCHES  WITH  INCREMENTING 
*        DELAYS   BETWEEN   MOVES.    THE  DELAY  PERIOD  STARTS  AT  1 
*        MILLISECOND AND IS MULTIPLIED BY 4 FOR EACH MOVE UNTIL A DELAY 
*        PERIOD  OF 1.024 SECONDS OCCURS.  THE DELAY IS THEN RESET TO 1 
*        AND THE PROCESS IS REPEATED.  A LONG (HIGH  SPEED)  REWIND  IS 
*        USED TO TEST REVERSE.
* 
*        IST06 - TRACK TEST 
*        ------------------ 
*        IST06  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. 
* 
*        IST07 - ERASE
*        -------------
*        AN ERASE FUNCTION IS ISSUED, THEN GENERAL  STATUS  IS  CHECKED 
*        FOR  AN *ALERT*.  THIS PROCESS CONTINUES UNTIL FILE MAX OR EOT 
*        IS REACHED.
* 
*        IST08 - WRITE FILEMARK/TAPEMARK
*        -------------------------------
*        WRITE FILEMARK/TAPEMARK UNTIL FILE MAX OR EOT IS  ENCOUNTERED. 
* 
*        IST09 - READ FILEMARK/TAPEMARK 
*        ------------------------------ 
*        THIS MODULE  IS DEPENDENT ON THE TAPE CREATED BY MODULE IST08. 
* 
*        READ FORWARD AND CHECK FOR FM/TM SEQUENCE IS INITIATED.   THIS 
*        SEQUENCE CONTINUES UNTIL EOT OR FILE MAX IS ENCOUNTERED. 
* 
*        READ REVERSE IS THEN INITIATED WHICH CONTINUES UNTIL LOADPOINT 
*        IS ENCOUNTERED.
* 
*        IST10 - 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.
* 
*        IST11 - MAINTENANCE READ 
*        ------------------------ 
*        THIS  MODULE  READS  THE  TAPE  CREATED   BY   MODULE   IST10, 
*        MAINTENANCE  WRITE.   ERRORS CAN BE EXPECTED IF THIS MODULE IS 
*        EXECUTED OUT OF SEQUENCE.
*        RECORDS ARE READ  FROM  TAPE  ACCORDING  TO  THE  DENSITY  AND 
*        PATTERN SPECIFIED BY THE *PARAM* DIRECTIVE.  READING CONTINUES 
*        IN THE FORWARD DIRECTION UNTIL RECORD MAX OR FILE MAX OR -EOT- 
*        IS REACHED.
* 
*        IST12 - READ FORWARD/REVERSE 
*        ---------------------------- 
*        THIS   MODULE   READS   THE  TAPE  CREATED  BY  MODULE  IST10, 
*        MAINTENANCE WRITE.  ERRORS CAN BE EXPECTED IF THIS  MODULE  IS 
*        EXECUTED OUT OF SEQUENCE.
*        RECORDS  ARE  READ  FROM  TAPE  ACCORDING  TO  THE DENSITY AND 
*        PATTERN SPECIFIED BY THE *PARAM* DIRECTIVE.  RECORDS ARE  READ 
*        IN  THE FORWARD DIRECTION UNTIL RECORD MAX AND FILE MAX OR EOT 
*        IS REACHED.
* 
*        AT THIS POINT A REVERSE READ IS INITIATED WHICH IS PROVIDED BY 
*        AN  EXIT  TO *IST12A* AND READING CONTINUES UNTIL LOADPOINT IS 
*        REACHED. 
* 
*        IST12 (READ FORWARD) SUPPORTS REPEAT  CONDITION  BY  REWINDING 
*        THE  TAPE  AND  CONTINUING  THE  READ  FORWARD.   IST12A (READ 
*        REVERSE)  DOES  NOT  SUPPORT  REPEAT  CONDITION  DUE  TO   THE 
*        INABILITY TO CORRECTLY POSITION TAPE.
* 
*        IST13 - 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 
*        POLYNOMIALS READ ARE COMPARED WITH EXPECTED RESULTS. 
* 
*        SINCE CANNED POLYNOMIALS ARE USED, CODE TRANSLATION AND PARITY 
*        SELECTIONS  MADE  BY  THE USER IN PARAMETER REGISTER P1 (PCXX) 
*        ARE IGNORED. 
* 
*        IST14 - CAPSTAN GO DOWN TIME TEST
*        ---------------------------------
*        IST14 VERIFIES THAT THERE ARE NO DEAD  SPOTS  IN  THE  CAPSTAN 
*        SERVO  SYSTEM  AT  REPETITION  PERIODS  OF  APPROXIMATELY  250 
*        MICROSECONDS TO 1.25 MILLISECONDS IN STEPS OF 10 MICROSECONDS. 
*        10  RECORDS  ARE  WRITTEN AT EACH TIME INTERVAL FOR A TOTAL OF 
*        1000 RECORDS.
* 
*        IST15 - BACKSPACE
*        -----------------
*        IST15 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.
* 
*        IST16 - 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.
* 
*        IST17 - 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. 
* 
*        IST18 - 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. 
* 
*        IST19 - RANDOM WRITE 
*        -------------------- 
*        IST19 CREATES THE TAPE USED FOR RANDOM READ IN MODULE -IST20-
* 
*        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.
* 
*        IST20 - RANDOM READ (FORWARD PORTION)
*        -------------------------------------- 
*        THE  TAPE  USED  BY THIS MODULE MUST BE CREATED BY -IST19-.  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 -IST20A- IS EXECUTED AND 
*        A REVERSE READ IS PERFORMED UNTIL LOAD POINT IS DETECTED.
* 
*        IST20  (READ  FORWARD)  SUPPORTS REPEAT CONDITION BY REWINDING 
*        THE TAPE  AND  CONTINUING  THE  READ  FORWARD.   IST20A  (READ 
*        REVERSE)   DOES  NOT  SUPPORT  REPEAT  CONDITION  DUE  TO  THE 
*        INABILITY TO CORRECTLY POSITION TAPE.
* 
*        IST21 - POLYNOMIAL TEST
*        -----------------------
*        IST21 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.
* 
*        IST22 - POSITION TEST
*        ---------------------
*        IST22 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  RESTARTED  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).
* 
*        IST22 RUNS TO EOT OR FILE MAX. 
* 
*        IST23 - 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 DECREMENTED 
*        FROM  7777  BACK TO 1.  WHEN EOT IS REACHED, A READ REVERSE IS 
*        EXECUTED UNTIL LOAD POINT IS REACHED.   IF  REPEAT  MODULE  IS 
*        SELECTED,  A READ FORWARD TO EOT IS DONE.  THE READING FORWARD 
*        AND REVERSE CONTINUES UNTIL STOPPED BY THE USER. 
* 
*        IST24 - READ CLIP LEVELS TEST
*        ------------------------------ 
*        THIS MODULE VERIFIES THE ABILITY TO READ DATA WRITTEN  IN  THE 
*        USER  DEFINED  DENSITY  AT READ CLIP LEVELS (NORMAL AND HIGH). 
*        TEN RECORDS OF RANDOM DATA ARE WRITTEN ERROR FREE.   THE  TAPE 
*        IS  THEN  REWOUND AND READ FORWARD THEN REVERSE AT NORMAL CLIP 
*        AND THEN HIGH. 
* 
*        REPEAT  CONDITION,  REPEAT  MODULE  AND  SCOPING   LOOPS   ARE 
*        SUPPORTED. 
* 
*        IST30 - TAPE PATH DAMAGE 
*        ------------------------ 
*        IST30  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,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).
* 
*        IST31 - GENERAL STATUS 
*        ---------------------- 
*        IST31 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.
* 
*        IST32 - SERVO ADJUST 
*        -------------------- 
*        IST32  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.
* 
*        IST33 - 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 IST33 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. 
* 
*        IST34 - 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 IST34 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. 
* 
* 
*        IST98A-IST98O - ERROR DISPLAY PROCESSING 
*        ---------------------------------------- 
* 
*        MODULE IST98A CAN BE CALLED BY ANY TEST MODULE THAT  MAKES  UP 
*        THE  IST  TEST.  IST98A WILL BEGIN THE PROCESS OF BUILDING THE 
*        ERROR DISPLAY.   THE  MODULE  CALLING  THE  IST98A  MODULE  IS 
*        RESPONSIBLE  FOR  PUTTING  THE  NAME AND MODULE DESCRIPTION IN 
*        LINE ONE OF THE  DISPLAY.   THE  FOLLOWING  ARE  THE  EXPECTED 
*        VALUES CONTAINED IN SOME OF THE B REGISTERS- 
* 
*          B5 = COMMAND ABORTED 
*          B7 = CURRENT MODE STATUS 
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERRED
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE NUMBER 
*          B15 = CALLING MODULE NUMBER
* 
*        THE  B7 REGISTER CONTAINS THE CURRENT CODE DESCRIBING WHAT THE 
*        TEST WAS DOING THE TIME OF THE FAILURE.  A  BREAKDOWN  OF  BIT 
*        MEANINGS IN B7 REGISTER IS AS FOLLOWS -
* 
*          0XXX = MODE (PHASE OR GCR) IS IN P1 REGISTER 
*          1XXX = NOT USED
*          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 = ISMT 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) 
* 
* 
*        THE  IST98A  AND  IST98B MODULES WILL POST THE COMMAND ABORTED 
*        MESSAGE AND THEN EXIT TO THE IST98C MODULE.  THE IST98C MODULE 
*        WILL  POST  MESSAGES  TO DISPLAY THE CHANNEL NUMBER, EQUIPMENT 
*        NUMBER, UNIT NUMBER, DEVICE CODE, LAST FUNCTION,  LAST  STATUS 
*        FUNCTION, WORD COUNT REGISTER, AND WORDS TRANSFERRED REGISTER. 
*        THEN  THE  IST98C  MODULE WILL THEN ANALYZE THE ERROR CODE AND 
*        EITHER POST THE APPROPRIATE ERROR MESSAGE FOR THE  ERROR  CODE 
*        OR  EXIT  TO  ANOTHER  MODULE  (IST98D  -  IST98H) TO POST THE 
*        APPROPRIATE ERROR MESSAGE.  MODULES IST98C -  IST98H  EXIT  TO 
*        MODULE  IST98I.   THE  IST98I  MODULE  WILL  POST  MESSAGES TO 
*        DISPLAY THE  STATUS,  INPUT,  AND  OUTPUT  BUFFERS,  PARAMETER 
*        REGISTERS, AND DETAILED AND EXTENDED STATUSES. 
* 
*        MODULES  IST98J THROUGH IST98L ANALYZE THE DETAILED STATUS AND 
*        POST  THE  APPROPRIATE  DETAILED  STATUS  ERROR  MESSAGE.    A 
*        SYSTEMATIC  ANALYSIS OF THE STATUS BUFFER IS MADE TO DETERMINE 
*        THE MOST SERIOUS ERROR  THAT  EXISTS.   THE  CONTENTS  OF  THE 
*        STATUS  BUFFER  AND THE CURRENT CODE IN REGISTER B7 IS USED TO 
*        ASSIST IN THE ANALYSIS.   MODULES  IST98J  -  IST98L  EXIT  TO 
*        MODULE  IST98M.   MODULES  IST98M  THROUGH  IST98O ANALYZE THE 
*        ADAPTOR ERROR CODE IF THE ERROR CODE IS NOT EQUAL TO ZERO  AND 
*        POST   THE   APPROPRIATE  ADAPTOR  ERROR  CODE  MESSAGE.   THE 
*        FOLLOWING IS THE FUNCTIONS PERFORMED BY  THE  MODULES  IN  THE 
*        IST98 MODULES SERIES-
* 
*          IST98A - PROCESS COMMAND ABORTED 
*          IST98B - PROCESS COMMAND ABORTED 
*          IST98C - PROCESS ERROR CODES 0100 - 0116 
*          IST98D - PROCESS ERROR CODES 0122 - 0207 
*          IST98E - PROCESS ERROR CODES 0211 - 0232 
*          IST98F - PROCESS ERROR CODES 0233 - 0246 
*          IST98G - PROCESS ERROR CODES 0251 - 0266 
*          IST98H - PROCESS ERROR CODES 0267 - 0275 
*          IST98I - STATUS DISPLAY
*          IST98J - DETAILED STATUS ANALYSIS
*          IST98K - DETAILED STATUS ANALYSIS
*          IST98L - DETAILED STATUS ANALYSIS
*          IST98M - PROCESS ADAPTER ERROR CODES 3001 - 3177 
*          IST98N - PROCESS ADAPTER ERROR CODES 3200 - 3225 
*          IST98O - PROCESS ADAPTER ERROR CODES 3226 - 3277 
*          IST98P - PROCESS ADAPTER ERROR CODES 3301 - 3377 
* 
* 
*        AFTER DISPLAYING THE ERROR, A CHECK IS MADE TO INSURE THAT THE 
*        ADAPTOR IS FUNCTIONAL (RESERVE) AND IF NOT, A RESET COMMAND IS 
*        EXECUTED  TO  MASTER  CLEAR  THE ADAPTOR.  THE B REGISTERS ARE 
*        RESTORED AND CONTROL IS RETURNED TO THE MODULE  THAT  DETECTED 
*        THE FAILURE. 
* 
* 
*        IST97A - STATUS REPORTING FOR LOW LEVEL MODULES
*        -----------------------------------------------
* 
*        IST97A  CAN  BE  ENTERED  FROM ANY LOW LEVEL MODULE IN THE 
*        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. 
* 
* 
*        IST99 - MODULES LIST 
*        -------------------- 
*        IST99 PROVIDES A BRIEF DESCRIPTION OF THE MODULES THAT MAKE UP 
*        THE IST TEST SERIES. 
* 
* 
*        IST99A - IST PARAMETERS (P0 - P9)
*        ---------------------------------
*        IST99A PROVIDES A DESCRIPTION OF THE PARAMETERS FOR VIEWING AT 
*        THE K/L DISPLAY. 
* 
* 
***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.
* 
*        2.  REFER  TO  THE CML REFERENCE MANUAL (PUB. NO. 60455980) TO 
*            RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS. 
* 
*        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
*        -----------------
* 
*        ** WARNING ** - THE  FOLLOWING LOADING PROCEDURES ARE INTENDED 
*                        AS  GENERAL  EXAMPLES  ONLY  AND  MAY  REQUIRE 
*                        MODIFICATION   WHEN   USED   IN   A   SPECIFIC 
*                        ENVIRONMENT. 
* 
*        TO INSTALL THE IST 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,IST,ID=YOUR ID.
*          UNLOAD,RFILE.
*          7/8/9
*          *C 
*          6/7/8/9
* 
*        TO INSTALL THE IST 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=IST.
*          MALET,I=COMPILE,LO=S.
*          UNLOAD,RFILE.
*          7/8/9
*          *C 
*          6/7/8/9
* 
*        TO  RUN  THE IST MALET MODULES FROM THE PERMANENT FILE CREATED 
*        ON THE NOS/BE OPERATING SYSTEM, RUN THE FOLLOWING JOB -
* 
*          JOB/ACCOUNT CARDS. 
*          ATTACH,RFILE,IST,ID=YOUR ID. 
*          MALET,KL.
*          7/8/9
*          P,P0=200           (200 IPS) 
*          P,P1=2             (1600 BPI)
*          P,P2=5000          (5000 WORD RECORDS) 
*          ASSIGN,EST=NN. 
*          R,IST
*          6/7/8/9
* 
*        TO RUN THE IST MALET MODULES FROM THE PERMANENT  FILE  CREATED 
*        ON THE NOS OPERATING SYSTEM, RUN THE FOLLOWING JOB - 
* 
*          JOB/USER/ACCOUNT CARDS.
*          ATTACH,RFILE=IST.
*          MALET,KL.
*          7/8/9
*          P,P0=200           (200 IPS) 
*          P,P1=2             (1600 BPI)
*          P,P2=5000          (5000 WORD RECORDS) 
*          ASSIGN,EST=NN. 
*          R,IST
*          6/7/8/9
* 
*        TO  LOAD  THE  IST  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=57
*          .P,P0=200          (200 IPS) 
*          .P,P1=2            (1600 BPI)
*          .P,P2=5000         (5000 WORD RECORDS) 
*          .RUN,IST01         (RUN IST) 
* 
* 
***2.1.4 RUNNING PROCEDURE
**
*  2.1.4 RUNNING PROCEDURE
*        -----------------
* 
*        ALL NOS MALET DIRECTIVES MUST BE PRECEDED WITH THE CHARACTERS, 
*        (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=57,CH=6,EQ=0,UN=1
*          K.A,DC=57,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=2,P2=5000
*          K.P,P0=100,P1=2,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,IST
*          K.R,IST
* 
*        EXAMPLES FOR RUNNING ONE MODULE -
*          K.RUN,IST(01)
*          K.R,IST(01)
* 
*        EXAMPLES FOR RUNNING A SERIES OF MODULES - 
*          K.RUN,IST(01,03,05,07) 
*          K.R,IST(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 
*        ALL CMSE SYSTEM COMMANDS MUST BE PRECEEDED WITH THE PERIOD (.) 
*        CHARACTER. 
* 
*        THE ASSIGN COMMAND IS USED TO ASSIGN THE DEVICE TO BE  TESTED. 
*        EXAMPLES FOR ASSIGNING A DEVICE -
*          .ASSIGN,DC=57,CH=6,EQ=0,UN=1 
*          .A,DC=57,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=2,P3=10,P4=10
*          K.P,P0=100,P1=2,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,IST 
*          .R,IST 
* 
*        EXAMPLES FOR RUNNING ONE MODULE -
*          .RUN,IST(01) 
*          .R,IST(01) 
* 
*        EXAMPLES FOR RUNNING A SERIES OF MODULES - 
*          .RUN,IST(01,03,05,07)
*          .R,IST(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
* 
* 
***2.1.5 PARAMETERS 
**
*  2.1.5 PARAMETERS 
*        ---------- 
* 
*        PARAMETER VALIDATION IS DONE BY  MODULE  IST00,  NORMALLY  THE 
*        FIRST MODULE EXECUTED IF THE *RUN* DIRECTIVE IS RUN IST OR RUN 
*        IST00.  HOWEVER, THE  USER  CAN  RUN  SPECIFIC  MODULES,  THUS 
*        BYPASSING  THE  EXECUTION  OF  IST00.   IT IS RECOMMENDED THAT 
*        IST00 ALWAYS BE EXECUTED INITIALLY TO VALIDATE PARAMETERS. 
*        EXAMPLE -
* 
*          RUN IST(00,20) 
* 
*              OR 
* 
*          RUN IST(00)
*          RUN IST07
* 
*        IF THIS PROCEDURE IS NOT FOLLOWED, ERRORS MAY  RESULT  DUE  TO 
*        ILLEGAL   PARAMETERS.   (IST  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 
*        IST USE SPECIFIC PARAMETER REGISTERS.
* 
*                  P0   P1   P2   P3   P4   P5   P6   P7   P8   P9
*                 ------------------------------------------------- 
*          IST00    X    X    X    X    X    X    X    X    X    X
*          IST01         X
*          IST02         X
*          IST03         X
*          IST04    X    X
*          IST05    X    X
*          IST06         X
*          IST07         X         X         X    X         X 
*          IST08         X    X    X         X    X         X 
*          IST09         X         X         X    X         X 
*          IST10         X    X    X    X    X    X    X    X    X
*          IST11         X    X    X    X    X    X         X    X
*          IST12         X    X    X    X    X    X         X    X
*          IST13         X         X         X    X 
*          IST14         X    X    X    X              X
*          IST15         X    X    X         X    X         X 
*          IST16         X         X         X    X         X 
*          IST17         X    X    X    X    X    X    X    X 
*          IST18         X         X    X    X    X    X    X 
*          IST19         X         X    X    X    X    X    X    X
*          IST20         X         X    X    X    X         X    X
*          IST21         X    X    X    X    X    X    X    X 
*          IST22         X    X    X                        X 
*          IST23         X         X    X              X
*          IST24         X    X                        X
*          IST30         X    X    X
*          IST31         X
*          IST32         X
*          IST33         X                                       X
*          IST34         X                                       X
* 
*** 
**
*        P0 = TAPE SPEED AS FOLLOWS 
* 
*              25 =  25 IPS 
*              75 =  75 IPS 
*             100 = 100 IPS 
*             125 = 125 IPS 
*             150 = 150 IPS 
*             200 = 200 IPS 
* 
*        P1 = PCAD
* 
*             PXXX - PARITY 
* 
*                    0XXX = ENABLE ERROR CORRECTION IN GCR MODE 
*                    1XXX = NOT USED (MUST BE 0)
*                    2XXX = DISABLE ERROR CORRECTION IN GCR MODE
*                    4XXX = NOT USED (MUST BE 0)
* 
* 
*             XCXX - CODE TRANSLATION 
* 
*                    X0XX =  NO CODE TRANSLATION
*                    X1XX =  USE CODE TRANSLATION TABLE 1 
*                    X2XX =  USE CODE TRANSLATION TABLE 2 
*                    X3XX =  USE CODE TRANSLATION TABLE 3 
*                    X4XX =  USE CODE TRANSLATION TABLE 4 
*                    X5XX THRU X7XX ARE ILLEGAL 
* 
* 
*             XXAX - ASSEMBLY/DISASSEMBLY 
* 
*                    XX0X = A/D 6-BIT MODE -- 1 BYTE = 2 FRAMES 
*                    XX1X = A/D PACKED MODE -- 2 BYTES = 3 FRAMES 
*                    XX2X = A/D 16-BIT MODE -- 1 BYTE = 2 FRAMES
*                    XX3X THRU XX7X ARE ILLEGAL 
* 
* 
*             XXXD - DENSITY
*                    XXX0 = ILLEGAL 
*                    XXX1 = ILLEGAL 
*                    XXX2 = 1600 CPI
*                    XXX3 = ILLEGAL 
*                    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 = NOT USED (MUST BE 0)
* 
*                    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 (8 BIT 
*                    STORES ARE DONE FOR 9 TRACK. 
*                    EXAMPLE -  P4 = 1000      (ASSUME 9 TRACK).
* 
*                               DATA STORED = 0377 0377 0377 ETC. 
* 
*             0XXX = SELECT FIXED PATTERN XXX XXX IS A 8 BIT PATTERN. 
* 
* 
*        P5 = RANDOM MILLISECOND DELAY MASK 
* 
*             0000 = DISABLES USE OF RT CLOCK FOR GENERATION OF RANDOM
*                    DELAYS.  WITH P5=0000  ANY  VALUE  ENTERED  IN  P6 
*                    BECOMES A FIXED MILLISECOND DELAY. 
* 
*             XXXX = LOGICAL  PRODUCT OF XXXX AND THE RT CLOCK PRODUCES 
*                    THE VALUE USED FOR THE MILLISECOND DELAY.
* 
* 
*        P6 = FIXED MILLISECOND DELAY 
*             XXXX = IF P5=0000, P6 WILL BE USED AS FIXED DELAY OF XXXX 
*                    MILLISECONDS.
* 
* 
*        P7 = BASE RANDOM NUMBER
* 
*             0000 = THE  RANDOM  NUMBER SEED WILL BE OBTAINED FROM THE 
*                    RT CLOCK.
* 
*             XXXX = XXXX IS THE RANDOM NUMBER SEED.
* 
* 
*        P8 = FILE COUNT
* 
*             0000 = INFINITE FILE COUNT RESULTS  IN  COMPLETE  USE  OF 
*                    TAPE BETWEEN BOT AND EOT.
* 
*             XXXX = MAXIMUM NUMBER OF FILES 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 
*        -------------- 
* 
* 
*        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-07XX 
* 
*          3. DETAILED STATUS ERRORS - DS ERROR 2XXX CODES
* 
*          4. ADAPTOR ERROR CODES - AD ERROR 3XXX CODES 
* 
*          5. PRODUCT OVERLAY -        E51XX ERROR CODES
* 
* 
*        MODULE TEST SEQUENCE DETECTED ERRORS 
* 
*        EC 0101 - READ RAM *OCT DATA ERROR.
* 
*        EC 0102 - WRITE RAM *OCT DATA ERROR. 
* 
*        EC 0105 - DATA COMPARE ERROR.  THE FIRST 400B WORDS
*        (OR THE RECORD LENGTH IN -P2-), THAT WERE TRANS- 
*        FERRED DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS 
*        WERE REPORTED (SEE NOTE ON CONVERSION, -IST98C-).
* 
*        EC 0111 - STATUS ERROR AFTER LOOP. 
* 
*        EC 0112 - NO EOF STATUS ON ENDFILE *OCT. 
* 
*        EC 0113 - STATUS ERROR AFTER ENDFILE *OCT. 
* 
*        EC 0114 - STATUS ERROR AFTER WRITE *OCT. 
* 
*        EC 0115 - WRITE *OCT POLY=*OCT EXP=*OCT. 
* 
*        EC 0116 - ISMT DIAGNOSTIC TIMEOUT ERROR
* 
*        EC 0122 - NO FM/TM STATUS IN GENERAL STATUS, AT
*        END OF OPERATION, AFTER A WRITE FM/TM. 
* 
*        EC 0123 - NO END-OF-FILE STATUS AFTER AN ENDFILE.
* 
*        EC 0132 - ABNORMAL STATUS. 
* 
*        EC 0137 - STILL AT BOT AFTER AN ERASE. 
* 
*        EC 0140 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
*        EC 0141 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
*        EC 0142 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
*        EC 0143 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
*        EC 0144 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
*        EC 0145 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
*        EC 0146 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
*        EC 0147 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
*        EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*        STATUS DURING A WRITE OPERATION. 
*        NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
* 
*        EC 0201 - ALERT AFTER A WRITE OPERATION. 
* 
*        EC 0202 - STATUS ERROR OCCURRED ON A REVERSE READ. 
*        THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*        EC 0203 - ALERT BIT IN GENERAL STATUS WAS SET
*        DURING A READ FORWARD OPERATION. 
*        THE INPUT BUFFER CONTAINS THE DATA JUST READ.
* 
*        EC 0207 - 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 0211 - INCORRECT FILE DETECTED DURING A RANDOM
*        READ (SEE NOTE IN -IST98C- DOCUMENTATION). 
* 
*        EC 0212 - INCORRECT RECORD HAS BEEN DETECTED 
*        DURING A RANDOM READ (SEE NOTE IN -IST98C-). 
* 
*        EC 0213 - INCORRECT RECORD LENGTH BEEN DETECTED
*        DURING A RANDOM READ (SEE NOTE IN -IST98C-). 
* 
*        EC 0215 - THE WRITE AND READ POLYNOMIALS FAILED
*        TO COMPARE DURING THE -CANNED POLYNOMIAL- TEST.
*        B3= EXPECTED, SB(2)= ACTUAL, B4= DATA STARTER. 
* 
*        EC 0226 - ERROR HAS OCCURRED DURING A READ FORWARD 
*        OPERATION IN THE -TAPE PATH DAMAGE- TEST.
* 
*        EC 0227 - ERROR HAS OCCURRED DURING A READ REVERSE 
*        OPERATION IN THE -TAPE PATH DAMAGE- TEST.
* 
*        EC 0232 - THE RECORD COUNT ERROR DURING A -READ
*        FWD- IN THE POLYNOMIAL TEST (SEE NOTE IN -IST98C-) 
* 
*        EC 0233 - THE RECORD LENGTH IS IN ERROR DURING A 
*        -READ FORWARD- IN THE POLYNOMIAL TEST. 
* 
*        EC 0234 - THE WRITE POLYNOMIAL AND READ POLYNOMIAL 
*        FAILED TO COMPARE DURING THE -POLYNOMIAL- TEST.
*        B4= WRITE POLYNOMIAL, SB(2)= READ POLYNOMIAL.
* 
*        EC 0241 - AN ABNORMAL STATUS WAS DETECTED DURING A 
*        -BACKSPACE- IN THE -POSITION- TEST.
* 
*        EC 0242 - AN ABNORMAL STATUS WAS DETECTED DURING A 
*        -READ FORWARD- IN THE -POSITION- TEST. 
* 
*        EC 0243 - A COMPARE ERROR HAS OCCURRED WHEN THE
*        WRITE AND READ POLYNOMIALS WERE COMPARED FOR 
*        RECORDS 1, 2, OR 3 IN THE -POSITION- TEST. 
* 
*        EC 0244 - AN ABNORMAL STATUS DETECTED DURING THE 
*        -FORESPACE- OVER RECORD 6 IN THE -POSITION- TEST.
* 
*        EC 0245 - THE READ POLYNOMIAL AND WRITE POLYNOMIAL 
*        FOR RECORD 6 HAVE FAILED TO COMPARE IN THE 
*        -POSITION- TEST.  B6=EXPECTED, SB(2)=ACTUAL. 
* 
*        EC 0246 - AN ALERT STATUS OCCURRED AFTER AN ERASE. 
* 
*        EC 0251 - FILE MARK STATUS IS MISSING AT END-OF-OP 
*        DURING A READ FILE MARK REVERSE. 
* 
*        EC 0252 - FILE MARK STATUS IS MISSING AT END-OF-OP 
*        DURING A READ FILE MARK FORWARD. 
* 
*        EC 0253 - A STATUS ERROR OCCURRED ON A BACKSPACE.
* 
*        EC 0254 - THE ALERT BIT WAS SET IN GENERAL STATUS
*        FOLLOWING THE FIRST READ REVERSE AFTER A 
*        BACKSPACE. 
* 
*        EC 0255 - AN INCORRECT RECORD LENGTH WAS DETECTED
*        ON A REVERSE READ FOLLOWING A BACKSPACE OPERATION. 
* 
*        EC 0256 - AN INCORRECT RECORD WAS DETECTED ON A
*        READ REVERSE FOLLOWING A BACKSPACE (INPUT BUFFER 
*        WILL CONTAIN THE ACTUAL RECORD DETECTED).
* 
*        EC 0257 - DATA COMPARE ERROR ON WARMSTART READ.
* 
*        EC 0260 - NO FILE MARK STATUS AFTER SEARCH FM FWD. 
* 
*        EC 0261 - NO FILE MARK STATUS AFTER SEARCH FM REV. 
* 
*        EC 0262 - FILE MARK STATUS AT LOAD POINT.
* 
*        EC 0263 - NO END OF OPERATION. 
* 
*        EC 0264 - NOISE BYPASS FAILURE - NO EOF STATUS.
* 
*        EC 0265 - ALERT AFTER WARMSTART READ INPUT.
* 
*        EC 0266 - WARMSTART LENGTH ERR- EXP=400 ACT=*OCT.
* 
* 
*        EC 0267 - 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 (0) 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 0274 - ALERT WAS SET FOLLOWING A READ FORWARD 
*        AT THE READ CLIP LEVEL SELECTED IN REGISTER B2.
* 
*        EC 0275 - ALERT WAS SET FOLLOWING A READ REVERSE 
*        AT THE READ CLIP LEVEL SELECTED IN REGISTER B2.
* 
* 
***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 0303 - TAPE UNIT RESET KEY DEPRESSED. 
* 
*          EC 0311 - TAPE UNIT AT END OF TAPE MARKER. 
* 
*          EC 0312 - TAPE UNIT NOT ON LINE. 
* 
*          EC 0323 - TAPE UNIT NOT AT BOT AFTER A REWIND. 
* 
*          EC 0328 - TAPE UNIT NOT READY, NO ERROR STATUS.
* 
*          EC 0331 - TAPE SPEED STATUS ERR-EXP=*OCT ACT=*OCT. 
* 
*          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 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 0401 - ADAPTOR PARITY ERROR.
* 
*          EC 0500 - TAPE PARITY - ERASE ERROR. 
* 
*          EC 0503 - TAPE PARITY - EXCESSIVE SKEW.
* 
*          EC 0509 - TAPE PARITY - CRC DETECTED ERROR.
* 
*          EC 0510 - TAPE PARITY - AUX CRC DETECTED ERROR.
* 
*          EC 0512 - UNEXPLAINED TCU OR TAPE PARITY ERROR.
* 
*          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
*        ---------------------------
* 
*        DS ERROR 2001 TAPE UNIT OFF-LINE, NOT POWERED ON 
* 
*        DS ERROR 2004 TAPE UNIT NOT READY
* 
*        DS ERROR 2005 UNIT CHECK OR INTERRUPT
* 
*        DS ERROR 2006 TAPE UNIT MISSING WRITE RING 
* 
*        DS ERROR 2007 UNIT NOT CAPABLE OF TAPES DENSITY
* 
*        DS ERROR 2010 OVER 25 FEET OF BLANK TAPE 
* 
*        DS ERROR 2011 OVER 15 FEET OF BLANK TAPE 
* 
*        DS ERROR 2012 BAD ID BURST WRITTEN 
* 
*        DS ERROR 2016 UNIT UNABLE TO SET GAINS ON GCR TAPE 
* 
*        DS ERROR 2030 BACKWARD MOTION AT LOAD POINT
* 
*        DS ERROR 2031 ILLEGAL TAPE UNIT REQUESTED
* 
*        DS ERROR 2032 TAPE UNIT BUSY ON REWIND OR DSE
* 
*        DS ERROR 2033 REVERSE READ ATTEMPTED IN GCR MODE 
* 
*        DS ERROR 2041 TAPE UNIT FAILED TO REACH SPEED
* 
*        DS ERROR 2050 ILLEGAL FUNCTION CODE
* 
*        DS ERROR 2051 NO TAPE UNIT CONNECTED 
* 
*        DS ERROR 2052 NO FUNCTION PARAMETERS SENT
* 
*        DS ERROR 2055 CHANNEL P.E.  ON FUNCION/PARAMETERS
* 
*        DS ERROR 2061 NO DATA IN TIME FOR OUTPUT 
* 
*        DS ERROR 2062 PPU NOT READY FOR INPUT OF DATA
* 
*        DS ERROR 2070 ADAPTOR CATASTROPHIC FAILURE 
* 
* 
***2.1.9 ADAPTOR ERROR CODES
**
*  2.1.9 ADAPTOR ERROR CODES
*        -------------------
* 
*        AD ERROR 3001 SPECIAL FUNCTION LOGIC ERROR 
* 
*        AD ERROR 3003 DATA LOOPBACK DATA ERROR 
* 
*        AD ERROR 3004 DATA LOOPBACK PARITY ERROR 
* 
*        AD ERROR 3077 UNDEFINED ERROR
* 
*        AD ERROR 3100 CONTROL SEQUENCE ERROR 
* 
*        AD ERROR 3101 WRITEABLE CONTROL STORE ERROR
* 
*        AD ERROR 3102 PIPELINE REGISTER PARITY ERROR 
* 
*        AD ERROR 3103 ALU INDEX REGISTER ERROR 
* 
*        AD ERROR 3104 FIFO LOGIC ERROR 
* 
*        AD ERROR 3105 ALU ERROR
* 
*        AD ERROR 3106 ALU STATUS REGISTER ERROR
* 
*        AD ERROR 3107 ALU CONDITION CODE MUX ERROR 
* 
*        AD ERROR 3110 FIFO TO DP PARITY ERROR
* 
*        AD ERROR 3177 UNDEFINED ERROR
* 
*        AD ERROR 3200 INTERNAL ERROR 
* 
*        AD ERROR 3201 INSTRUCTION TEST ERROR 
* 
*        AD ERROR 3203 DATA PATH TEST ERROR 
* 
*        AD ERROR 3204 BLOCK ID TEST ERROR
* 
*        AD ERROR 3206 STATUS REGISTER TEST ERROR 
* 
*        AD ERROR 3207 PARITY TEST ERROR
* 
*        AD ERROR 3210 STU TEST ERROR 
* 
*        AD ERROR 3211 ICI CHANNEL TEST ERROR 
* 
*        AD ERROR 3220 CONTROLWARE ID ERROR 
* 
*        AD ERROR 3021 CONTROLWARE CHECKSUM ERROR 
* 
*        AD ERROR 3222 CONTROLWARE INITIALIZATION ERROR 
* 
*        AD ERROR 3223 CONTROLWARE DIAGNOSTIC ERROR 
* 
*        AD ERROR 3224 CONTROLWARE EXCEPTION ERROR
* 
*        AD ERROR 3225 CONTROLWARE INTERRUPT ERROR
* 
*        AD ERROR 3226 6XX FUNC CAN-T FIND THE CONTROLWARE
* 
*        AD ERROR 3227 6XX FUNC UNRECOVERABLE TAPE ERROR
* 
*        AD ERROR 3230 INTERRUPT CONTROLLER LOGIC ERROR 
* 
*        AD ERROR 3231 COUNTER TIMER LOGIC ERROR
* 
*        AD ERROR 3232 SECDED LOGIC ERROR 
* 
*        AD ERROR 3233 LOWER ROM ERROR
* 
*        AD ERROR 3235 LOWER RAM ERROR
* 
*        AD ERROR 3236 UPPER RAM ERROR
* 
*        AD ERROR 3237 PARITY ERROR REGISTER ERROR
* 
*        AD ERROR 3240 DATA LOOPBACK ERROR
* 
*        AD ERROR 3241 CH.  INACTIVE FOR AUTOLOAD FUNCTION
* 
*        AD ERROR 3242 CH.  P.E.  ON 4XX.  6XX FUNC OR DATA 
* 
*        AD ERROR 3243 6XX FUNCTION CANT CONNECT TO THE STU 
* 
*        AD ERROR 3244 6XX FUNCTION CANT REWIND THE STU 
* 
*        AD ERROR 3277 UNDEFINED ERROR
* 
*        AD ERROR 3301 DATA LOPBACK DATA ERROR
* 
*        AD ERROR 3302 DATA LOOPBACK PARITY ERROR 
* 
*        AD ERROR 3304 STU FORMATTER DIAG.  TEST ERROR
* 
*        AD ERROR 3377 UNDEFINED ERROR
* 
* 
***2.1.10PRODUCT OVERLAY ERROR MESSAGES 
**
*  2.1.10PRODUCT 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 FUNC 
*        5113 - NO INACTIVE TO STATUS FUNC
*        5114 - NO INACTIVE TO DETAIL/UNIT STATUS 
*        5115 - NO STATUS RETURNED
*        5116 - INCOMPLETE STATUS RETURNED
*        5117 - FUNCTION PARAMETERS NOT ACCEPTED
*        5120 - ALL DATA NOT ACCEPTED FROM PP 
*        5121 - ALL DATA NOT RETURNED TO PP 
*        5122 - ADAPTOR/UNIT NOT CONNECTED
*        5125 - ABNORMAL GENERAL STATUS 
*        5127 - UNIT HUNG BUSY
*        5132 - DEVICE CODE/STATUS MISMATCH 
*        5133 - UNIT NOT READY
*        5134 - NO END OF OP
*        5136 - COMMAND SEQUENCING ERROR
*        5137 - PARAMETER OUT OF RANGE
* 
* 
***3.0   ABBREVIATIONS
**
*  3.0   ABBREVIATIONS
*        -------------
* 
*        ACT    - ACTUAL
*        ALT    - ALTERNATE 
*        AUX    - AUXILIARY 
*        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 
*        FWD    - FORWARD 
*        IBG    - INTER BLOCK GAP 
*        IPS    - INCHES PER SECOND 
*        IRGS   - INTER RECORD GAPS 
*        ISMT   - INTELLIGENT SMALL MAGNETIC TAPE 
*        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
*        STU    - STREAMING TAPE UNIT 
*        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 
*        ------------------ 
* 
* 
   MODULE IST00,67X(57)LOCK   - PARAMETER VALIDATION -
*** IST00 - PARAMETER VALIDATION
**
*   IST00 - PARAMETER VALIDATION
*   ----------------------------
* 
*        IST00 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 IST. 
* 
* 
* 
*        ERRORS REPORTED -
* 
*           1. IST00 - PARAMETER ERROR(S) 
*           2. ILLEGAL PARITY SELECTION   -(P1)-
*           3. ILLEGAL XLATE SELECTION    -(P1)-
*           4. ILLEGAL MODE SELECTION     -(P1)-
*           5. ILLEGAL DENSITY SELECTION  -(P1)-
*           6. ILLEGAL RECORD LENGTH SELECTION   -(P2)- 
*           7. ILLEGAL MARGINS SELECTION  -(P3)-
*           8. ILLEGAL PATTERN SELECTION  -(P4)-
*           9. ILLEGAL TAPE SPEED SELECTION -(P0)-
*          10. ACTUAL/SPECIFIED TAPE SPEEDS DISAGREE -(P0)- 
*          11. IST00 - ABORT ON .RES. COMMAND - 
*          12. PACKED OR 16-BIT MODE MUST HAVE XLATE=0  -(P1)-
*          13. 6-BIT MODE MUST HAVE XLATE=1 OR 2   -(P1)- 
* 
* 
*** IST00 - INTERNAL DOCUMENTATION
* 
* 
*        REGISTER USAGE 
* 
*          B1 = EXPECTED SPEED STATUS 
*          B4 = PARAMETER WORD ERROR COUNTER
*          B5 = MESSAGE NUMBER IN CASE OF COMMAND ABORTS
*          B6 = DISPLAY MESSAGE LINE NUMBER 
*          B7 = CODE FOR ERROR DETECTION
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
0  FORMAT IST - INTELLIGENT SMALL MAGNETIC TAPE TEST
1  FORMAT IST00 - PARAMETER VALIDATION
2  FORMAT    ILLEGAL PARITY SELECTION   -(P1)-
3  FORMAT    ILLEGAL XLATE SELECTION    -(P1)-
4  FORMAT    ILLEGAL MODE SELECTION     -(P1)-
5  FORMAT    ILLEGAL DENSITY SELECTION  -(P1)-
6  FORMAT    ILLEGAL RECORD LENGTH SELECTION   -(P2)- 
7  FORMAT    ILLEGAL MARGINS SELECTION  -(P3)-
10 FORMAT    ILLEGAL PATTERN SELECTION  -(P4)-
11 FORMAT    ILLEGAL TAPE SPEED SELECTION -(P0)-
12 FORMAT    ACTUAL/SPECIFIED TAPE SPEEDS DISAGREE -(P0)- 
13 FORMAT P0=*OCT  P1=*OCT  P2=*OCT  P3=*OCT  P4=*OCT 
14 FORMAT P5=*OCT  P6=*OCT  P7=*OCT  P8=*OCT  P9=*OCT 
15 FORMAT    PACKED OR 16-BIT MODE MUST HAVE XLATE=0  -(P1)-
16 FORMAT    6-BIT MODE MUST HAVE XLATE=1 OR 2   -(P1)- 
26 FORMAT IST00 - CHANGE PARAMETERS AND RERUN 
27 FORMAT --------------------------------------------------
* 
   EQUATE RES=13
* 
30 MSG 1 TO DISPLAY, PRINT   *RUNNING MESSAGE 
   B4 = 0                    *INITIALIZE ERROR COUNTER
   B6 = 2                    *INITIALIZE DISPLAY LINE NUMBER
   B7 = 0                    *INITIALIZE FLAG REGISTER
   B15 = 0                   *MODULE NUMBER 
   IF(ES.AND.TM.EQ.0)B6=3 
   IF(P1.AND.5000.NE.0) ERROR 2/0, GOSUB 70   *BAD PARITY 
   IF(P1.AND.700.GT.400) ERROR 3/0 GOSUB 70   *BAD XLATE
   IF(P1.AND.70.GT.20) ERROR 4/0, GOSUB 70    *BAD MODE 
   IF(P1.AND.7.EQ.2) GOTO 31                  *PE DENSITY 
   IF(P1.AND.7.NE.4) ERROR 5/0, GOSUB 70      *BAD DENSITY
* 
* ----------TEST XLATE-MODE PARAMETER SELECTION.------------------
* 
31 IF(P1.AND.30.EQ.0) GOTO 32                 *6-BIT MODE 
   IF(P1.AND.700.NE.0) ERROR 15/0, GOSUB 70   *BAD XLATE
   GOTO 40
32 IF(P1.AND.700.EQ.100) GOTO 40              *6-BIT-XLATE=1 OK 
   IF(P1.AND.700.NE.200) ERROR 16/0, GOSUB 70  *BAD XLATE 
* 
* ----------TEST OTHER PARAMETER REGISTERS.------------------ 
* 
40 IF(P2.EQ.0) ERROR 6/0, GOSUB 70              *BAD WC 
   IF(P3.AND.700.GE.300) ERROR 7/0, GOSUB 70    *BAD MARGINS
   IF(P4.AND.3000.EQ.3000)ERROR 10/0, GOSUB 70  *BAD PATTERN
   IF(B4.NE.0) GOTO 52                   *IF PREVIOUS ERRORS
* 
* ----------RESERVE DRIVE AND CHECK SPEED STATUS.------------ 
* 
   B5 = RES 
   RES P1, ABT 60             *RESERVE DRIVE
   B1 = 2                     *100 IPS SPEED STATUS 
   IF(P0.EQ.100) GOTO 50
   B1 = 3                     *75 IPS SPEED STATUS
   IF(P0.EQ.75) GOTO 50 
   B1 = 4                     *125 IPS SPEED STATUS 
   IF(P0.EQ.125) GOTO 50
   B1 = 5                     *200 IPS SPEED STATUS 
   IF(P0.EQ.200) GOTO 50
   B1 = 6                     *150 IPS SPEED STATUS 
   IF(P0.EQ.150) GOTO 50
   B1 = 7                     *25 IPS SPEED STATUS
   IF(P0.EQ.25) GOTO 50 
   ERROR 11/0, GOSUB 70       *REPORT ILLEGAL SPEED SELECTED
   GOTO 52
* 
* ----------CHECK SPEED STATUS.------------------------------ 
* 
50 IF(SB(11D).AND.7.EQ.B1) GOTO 52  *IF SPEEDS AGREE
   ERROR 12/0 GOSUB 70
* 
* ----------IF ERRORS, REPORT THEM AND TERMINATE.------------ 
* 
52 IF(B4.EQ.0) EXIT          *IF NO ERRORS EXIT 
   MSG 0 TO LINE 0           *TEST TITLE MESSAGE
   MSG 1 TO LINE 1           *MODULE TITLE MESSAGE
   MSG 13(P0,P1,P2,P3,P4) TO LINE B6
   MSG 14(P5,P6,P7,P8,P9) TO LINE B6+1
   PICTURE                   *REPORT ERRORS TO OUTPUT FILE
   HALT                      *STOP ON ERROR 
   BLANK
   MSG 27 TO PRINT           *TERMINATE ERROR DISPLAY 
   GOTO 64                   *ABNORMAL TERMINATION
* 
* ---------RESERVE ABORT PROCESSOR.-------------------------- 
* 
60 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESSAGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   MSG EM TO LINE B8         *PRODUCT ERROR 
   STATUS SENSE,ABT 62       *READ SENSE STATUS 
62 CALL 98A                  *CALL ERROR PROCESSOR
64 MSG 26 TO DISPLAY,PRINT
   GOTO 77                   *TERMINATE 
* 
* ----------ADD ERROR TO DISPLAY.---------------------------- 
* 
70 MSG EM TO LINE B6
   B4 = B4.+.1               *BUMP ERROR COUNTER
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   RETURN 
77 END 30 
COMPILE   - IST00 -   PARAMETER VALIDATION
   MODULE IST01,67X(57)LOCK  - ADAPTOR PATH - 
*** IST01 - ADAPTOR PATH
**
*   IST01 - ADAPTOR PATH
*   --------------------
* 
*        IST01 VERIFIES THAT THE ADAPTOR PATH IS STABLE.  THIS IS DONE
*        BY  READING  DATA  THAT  IS  CONTAINED  IN  EACH RAM USED FOR
*        CONVERSION TABLES IN THE ADAPTOR 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. IST01 - ABORT ON .RES. COMMAND 
*           3. IST01 - ABORT ON .READ RDRAM. COMMAND
*           4. IST01 - ABORT ON .READ WRRAM. COMMAND
*           5. IST01 - ABORT ON .RESET. COMMAND 
* 
*           6. EC 0101 - READ RAM *OCT DATA ERROR.
*              WORD=*OCT 1ST READ=*OCT 2ND READ=*OCT DIF=*OCT 
*           7. EC 0102 - WRITE RAM *OCT DATA ERROR. 
*              WORD=*OCT 1ST READ=*OCT 2ND READ=*OCT DIF=*OCT 
* 
* 
*** IST01 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          IST98A - REPORT MODULE ERRORS
* 
* 
1  FORMAT IST01 - ADAPTOR PATH
2  FORMAT IST01- ERRS=*DECD LOOP=*DECD
3  FORMAT IST01 ERROR(S) IN MODULE = *DECD
* 
   EQUATE COMPARE=2, RDRAM=6, RDWAM=7, RES=13, RESET=14 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 1                   *MODULE NUMBER 
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 = RES 
   RES P1, ABT 70 
   B5 = RESET 
   RESET, ABT 70
   IF(B2.NE.0) GOTO 25       *IF WRITE RAM PASS 
   B5 = RDRAM 
   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 = RDWAM 
   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
   B5 = COMPARE 
   COMPARE IB TO OB FOR B6, ABT 40
   IF(ES.AND.RC.NE.0) GOTO 27  *IF REPEAT CONDITION 
   GOTO 24 WHILE(B1+1.NE.5)   *ALL RAMS NOT READ
   GOTO 23 WHILE (B2+1.NE.2)  *REPEAT FOR WRITE RAMS
   B1 = 1                     *RESET RAM NUMBER 
   B2 = 0                     *SET READ RAM PASS
27 B0 = B0+1                  *BUMP PASS COUNT
   IF(ES.AND.SL.EQ.0)GOTO 31  *NOT SCOPING LOOP 
30 MSG 2 (BA,B0) TO DISPLAY   *POST SCOPING LOOP MSG
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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
32 EXIT 
* 
40 IF(B2.EQ.0) ERROR 3/101D  *IF WRITE RAM ERROR
   IF(B2.NE.0) ERROR 3/102D  *IF READ RAM ERROR 
* 
* -----------------ERROR PROCESSOR.-------------------------- 
* 
70 BA = BA+1                 *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 27  *IF SCOPING SELECTED 
   MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   GOTO 27
   END 20 
COMPILE   - IST01 -   ADAPTOR PATH
   MODULE IST02,67X(57)LOCK  - ADAPTOR LOOPBACK - 
*** IST02 - ADAPTOR LOOPBACK
**
*   IST02 - ADAPTOR LOOPBACK
*   --------------------------
* 
*        IST02  VERIFIES  THAT  THE  LOOPFSC  (RUN FSC DI DIAGNOSTICS)
*        FUNCTION OPERATES PROPERLY.
* 
* 
*        DESCRIPTION -
* 
*           1. RESERVE. 
*           2. SELECT  LOOPFSC. 
*           3. VERIFY STATUS. IF ERROR REPORT EC 0111.
*           4. IF REPEAT CONDITION, REPEAT STEPS 1-3. 
*           5. REPEAT MODULE OR EXIT. 
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. IST02 - ABORT ON .RES. COMMAND 
*           3. IST02 - ABORT ON .SELECT LOOPFSC. COMMAND
*           4. IST02 - ABORT ON .STATUS. COMMAND. 
* 
*           5. EC 0111 - STATUS ERROR AFTER LOOP. 
*           6. EC 0116 - ISMT DIAGNOSTIC TIMEOUT ERROR
* 
* 
*** IST02 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNTER 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST02 - ADAPTOR LOOPBACK
2  FORMAT IST02- ERRS=*DECD LOOP=*DECD
3  FORMAT IST02 ERROR(S) IN MODULE = *DECD
* 
   EQUATE RES=13, SLPIST=16, STATUS=20
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 2                   *MODULE NUMBER 
   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
   B5 = RES 
   B7 = 10                   *ADAPTOR LOOPBACK FLAG 
   RES B2, ABT 70 
   B5 = SLPIST
   SELECT LOOPFSC, ABT 70 
24 B5 = STATUS
   STATUS, ABT 30 
   IF(SB(1).RS.13.NE.0) ERROR 3/111D, GOTO 70 
   GOTO 73                   *TEST REPEAT MODULE
* 
30 DELAY 100D MSEC           *DELAY 
   GOTO 24 WHILE (B0+1.LT.25D)  *WAIT FOR COMPLETION
   ERROR 3/116D GOTO 70         *TIMEOUT ERROR
* 
* -------ERROR PROCESSOR.------------------------------------ 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 74  *IF SCOPING SELECTED 
   MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 72       *READ SENSE STATUS 
72 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75  *NOT SCOPING 
74 B6 = B6.+.1               *BUMP PASS COUNT 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
75 IF(ES.AND.CM.NE.0) GOTO 21 
   IF(BA.EQ.0) GOTO 77       *NO MODULE ERRORS
   MSG 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
77 EXIT 
   END 20 
COMPILE   - IST02 -   ADAPTOR LOOPBACK
   MODULE IST03,67X(57)LOCK  - UNIT I/O LOOPBACK -
*** IST03 - UNIT I/O LOOPBACK 
**
*   IST03 - UNIT I/O LOOPBACK 
*   ------------------------- 
* 
*        IST03  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 0114. 
*           6. REPEAT STEPS 1-6 FOR ALL DATA PATTERNS.
*           7. REPEAT STEPS 1-7 FOR 25 TIMES. 
*           8. RELEASE. 
*           9. IF REPEAT CONDITION, REPEAT STEPS 1-9. 
*          10. REPEAT MODULE OR EXIT. 
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. IST03 - ABORT ON .RES. COMMAND 
*           3. IST03 - ABORT ON .SELECT LOOPUNIT. COMMAND 
*           4. IST03 - ABORT ON .ENDFILE. COMMAND 
*           5. IST03 - ABORT ON .REL. COMMAND 
*           6. IST03 - ABORT ON .WRITE. COMMAND 
*           7. IST03 - ABORT ON .REWIND. COMMAND
* 
*           8. EC 0113 - STATUS ERROR AFTER ENDFILE *OCT. 
*           9. EC 0114 - STATUS ERROR AFTER WRITE 022.
* 
*** IST03 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNTER 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MOUDLE ERRORS 
* 
* 
1  FORMAT IST03 - UNIT I/O LOOPBACK 
2  FORMAT IST03- ERRS=*DECD LOOP=*DECD
3  FORMAT IST03 ERROR(S) IN MODULE = *DECD
* 
   DATA (OB,CON) 1767,4321,0652,5515,3045,0235,7404,1173
* 
   EQUATE REL=12, RES=13, REWIND=15, SLPUN=17, WRITE=22 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 3                   *MODULE NUMBER 
   COPY OB TO IB FOR 10      *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 = RES 
   B7 = 20                   *UNIT LOOPBACK I FLAG
   RES B2, ABT 70 
   B5 = REWIND
   REWIND, ABT 70            *CLEAR RESET DEPRESSED LATCH 
   B5 = SLPUN 
   SELECT LOOPUNIT, ABT 70
   B5 = WRITE 
   WRITE, ABT 70
   GOSUB 60                  *VERIFY STATUS 
   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/113D, GOTO 70
   ERROR 3/114D, GOTO 70
* 
* -------ERROR PROCESSOR.------------------------------------ 
* 
70 ENDSUB 
   BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 74  *IF SCOPING SELECTED 
   MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 72       *READ SENSE STATUS 
72 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75  *NOT SCOPING 
74 B6 = B6.+.1               *BUMP PASS COUNT 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
77 EXIT 
   END 20 
COMPILE   - IST03 -   UNIT I/O LOOPBACK 
   MODULE IST04,67X(57)LOCK  - LOOPS AND VELOCITY - 
*** IST04 - LOOPS AND VELOCITY
**
*   IST04 - LOOPS AND VELOCITY
*   --------------------------
* 
*        IST04  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 0132 IF ERROR.
*           3. REWIND.
*           4. VERIFY STATUS. REPORT EC 0132 IF ERROR.
*           5. SET ERASE COUNT = 1. 
*           6. RESERVE. 
*           7. VERIFY STATUS. REPORT EC 0132 IF ERROR.
*           8. ERASE 4 INCHES OF TAPE.
*           9. VERIFY NOT AT -BOT-. REPORT EC 0137 IF ERROR.
*          10. VERIFY STATUS. REPORT EC 0132 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 0132 IF ERROR.
*          16. REPEAT MODULE OR EXIT. 
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. IST04 - ABORT ON .RES. COMMAND 
*           3. IST04 - ABORT ON .REWIND. COMMAND
*           4. IST04 - ABORT ON .ERASE. COMMAND 
* 
*           5. EC 0132 - ABNORMAL STATUS. 
*           6. EC 0137 - STILL AT BOT AFTER AN ERASE. 
* 
* 
*** IST04 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNTER 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - REPORT MODULE ERRORS
* 
* 
1  FORMAT IST04 - LOOPS AND VELOCITY
2  FORMAT IST04- ERRS=*DECD LOOP=*DECD
3  FORMAT IST04 ERROR(S) IN MODULE = *DECD
* 
* --- OB(1-16) = STATUS MASK     OB(21-36) = EXPECTED STATUS
* 
   DATA (OB(1),CON) 1003,0,0,0,2,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, COMPARE=2, ERASE=4, RES=13, REWIND=15 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 4                   *MODULE NUMBER 
* 
* ---------TEST LOOPS AND VELOCITY.-------------------------- 
* 
   IF(P0.EQ.25) OB(33) = 7   *IF 25 IPS UNIT
   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 = RES 
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = REWIND
   B7 = 703                  *REWIND CODE, IGNORE DATA
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
24 B5 = RES 
   B1 = 0                    *CLEAR CURRENT ERASE COUNT 
   B7 = 701                  *FWD WRITE MOTION, IGNORE DATA 
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = ERASE 
25 ERASE, ABT 70             *MOVE 4 INCHES OF TAPE 
   IF(SB(1).AND.BOT.NE.0) ERROR 3/137D, 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 = REWIND
   B7 = 703                  *REWIND MOTION, IGNORE DATA
   REWIND, ABT 70            *SHORT REWIND
   GOSUB 60                  *VERIFY STATUS 
   GOTO 73                   *TEST REPEAT COND. AND MODULE
* 
* ----------TEST STATUS SUBROUTINE.-------------------------- 
* 
60 B3 = 1 
   B5 = COMPARE 
61 IF(SB(B3).AND.OB(B3).NE.OB(B3+20)) ERROR 3/132D, 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 74  *IF SCOPING SELECTED 
   MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 72       *READ SENSE STATUS 
72 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75  *NOT SCOPING 
74 B6 = B6.+.1               *BUMP PASS COUNT 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
75 IF(ES.AND.CM.NE.0) GOTO 21  *RC OR RM
   IF(BA.EQ.0) GOTO 76       *NO MODULE ERRORS
   MSG 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
76 EXIT 
   END 20 
COMPILE   - IST04 -   LOOPS AND VELOCITY
   MODULE IST05,67X(57)LOCK  - RANDOM LOOPS/VELOCITY -
*** IST05 - RANDOM LOOPS AND VELOCITY 
**
*   IST05 - RANDOM LOOPS AND VELOCITY 
*   --------------------------------- 
* 
*        IST05  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 0132 IF ERROR.
*           3. REWIND.
*           4. SET DELAY TIME TO 1 MILLISECOND. 
*           5. VERIFY STATUS. REPORT EC 0132 IF ERROR.
*           6. SET ERASE COUNT = 1. 
*           7. RESERVE. 
*           8. VERIFY STATUS. REPORT EC 0132 IF ERROR.
*           9. ERASE 4 INCHES OF TAPE.
*          10. VERIFY NOT AT -BOT-. REPORT EC 0137 IF ERROR.
*          11. VERIFY STATUS. REPORT EC 0132 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 0132 IF ERROR.
*          20. REPEAT MODULE OR EXIT. 
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. IST05 - ABORT ON .RES. COMMAND 
*           3. IST05 - ABORT ON .REWIND. COMMAND
*           4. IST05 - ABORT ON .ERASE. COMMAND 
*           5. IST05 - ABORT ON .REL. COMMAND 
* 
*           6. EC 0132 - ABNORMAL STATUS. 
*           7. EC 0137 - STILL AT BOT AFTER AN ERASE. 
* 
* 
*** IST05 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          IST98A - REPORT MODULE ERRORS
* 
* 
1  FORMAT IST05 - RANDOM LOOPS AND VELOCITY 
2  FORMAT IST05- ERRS=*DECD LOOP=*DECD
3  FORMAT IST05 ERROR(S) IN MODULE = *DECD
* 
* --- 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=4, COMPARE=2,ERASE=4, REL=12, RES=13
   EQUATE REWIND=15 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 5                   *MODULE NUMBER 
* 
* ---------TEST LOOPS AND VELOCITY.-------------------------- 
* 
   IF(P0.EQ.25) OB(33) = 7   *IF 25 IPS UNIT
   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 = RES 
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = REWIND
   B7 = 703                  *REWIND CODE, IGNORE DATA
   REWIND, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B2 = 1                    *SET STARTING DELAY TIME 
24 B5 = RES 
   B1 = 0                    *CLEAR CURRENT ERASE COUNT 
   B7 = 701                  *FWD WRITE MOTION, IGNORE DATA 
   RES P1, ABT 70 
   GOSUB 60                  *VERIFY STATUS 
   B5 = ERASE 
25 ERASE, ABT 70             *MOVE 4 INCHES OF TAPE 
   IF(SB(1).AND.BOT.NE.0) ERROR 3/137D, GOTO 70 
   GOSUB 60                  *VERIFY STATUS 
   GOTO 25 WHILE (B1+1.NE.B0)          *DO B0 ERASES
   B5 = REL 
   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 = RES 
   RES P1, ABT 70 
   B5 = REWIND
   B7 = 703                  *REWIND MOTION, IGNORE DATA
   REWIND, ABT 70            *LONG REWIND 
   GOSUB 60                  *VERIFY STATUS 
   B5 = REL 
   REL, ABT 70
   GOTO 73                   *TEST REPEAT COND. AND MODULE
* 
* ----------TEST STATUS SUBROUTINE.-------------------------- 
* 
60 B3 = 1 
   B5 = COMPARE 
61 IF(SB(B3).AND.OB(B3).NE.OB(B3+20)) ERROR 3/132D, 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 74  *IF SCOPING SELECTED 
   MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 72       *READ SENSE STATUS 
72 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
73 IF(ES.AND.SL.EQ.0) GOTO 75  *NOT SCOPING 
74 B6 = B6.+.1               *BUMP PASS COUNT 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
75 IF(ES.AND.CM.NE.0) GOTO 21  *RC OR RM
   IF(BA.EQ.0) GOTO 76       *NO MODULE ERRORS
   MSG 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
76 EXIT 
   END 20 
COMPILE   - IST05 -   RANDOM LOOPS AND VELOCITY 
   MODULE IST06,67X(57)LOCK  - TRACK TEST - 
*** IST06 - TRACK TEST
**
*   IST06 - TRACK TEST
*   ------------------
* 
*        IST06  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 014X 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. IST06 - ABORT ON .WRITE. COMMAND - 
*           3. IST06 - ABORT ON .RES. COMMAND - 
*           4. IST06 - ABORT ON .REL. COMMAND - 
*           5. IST06 - ABORT ON .REWIND. COMMAND -
*           6. IST06 - ABORT ON .WAITNB. COMMAND -
* 
*           7. EC 0140 - STATUS ERR-LAST DIGIT=DATA BIT.
*           8. EC 0141 - STATUS ERR-LAST DIGIT=DATA BIT.
*           9. EC 0142 - STATUS ERR-LAST DIGIT=DATA BIT.
*          10. EC 0143 - STATUS ERR-LAST DIGIT=DATA BIT.
*          11. EC 0144 - STATUS ERR-LAST DIGIT=DATA BIT.
*          12. EC 0145 - STATUS ERR-LAST DIGIT=DATA BIT.
*          13. EC 0146 - STATUS ERR-LAST DIGIT=DATA BIT.
*          14. EC 0147 - STATUS ERR-LAST DIGIT=DATA BIT.
* 
* 
*** IST06 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST06 - TRACK TEST
2  FORMAT IST06- ERRS=*DECD LOOP=*DECD
3  FORMAT IST06 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ERROR=5034, EOT=10, REL=12, RES=13, REWIND=15 
   EQUATE WAITNB=21, WRITE=22 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 6                   *MODULE NUMBER 
   BA = 0                    *CLEAR ERROR COUNT 
   WC = 4777
21 B5 = RES 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 70 
   B5 = REWIND
   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 
31 DUP B4 BITS OF B3 TO OB FOR B2  *FILL BUFFER 
32 B5 = RES 
   RES P1, ABT 70 
   B5 = WRITE 
   B7 = 1                    *WRITE MOTION CODE 
   WRITE, ABT 70
   B5 = WAITNB
   WAITNB, ABT 70 
   B5 = WRITE 
   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 
   IF(B1.EQ.0) ERROR 3/140D 
   IF(B1.EQ.1) ERROR 3/141D 
   IF(B1.EQ.2) ERROR 3/142D 
   IF(B1.EQ.3) ERROR 3/143D 
   IF(B1.EQ.4) ERROR 3/144D 
   IF(B1.EQ.5) ERROR 3/145D 
   IF(B1.EQ.6) ERROR 3/146D 
   IF(B1.EQ.7) ERROR 3/147D 
   BA = BA.+.1               *BUMP ERROR COUNT
   B6 = B6.+.1                *BUMP PASS COUNT
   IF(ES.AND.SL.EQ.0) GOTO 33  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 32
33 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 40       *READ SENSE STATUS 
40 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
34 B5 = REL 
   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 2 (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.8D) GOTO 31      *EXTRA BITS OF 9TK 
   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     *INDICATE ERRORS TO DAYFILE
57 EXIT 
* 
* --------ERROR PROCESSOR.----------------------------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0) GOTO 71  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *REPEAT
71 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 72       *READ SENSE STATUS 
72 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(BA.LT.2) GOTO 21       *RETRY IF NOT 2 ERRORS 
   GOTO 55
   END 20 
COMPILE   - IST06 -   TRACK TEST
   MODULE IST07,67X(57)LOCK   - ERASE - 
*** IST07 - ERASE 
**
*   IST07 - 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 0246 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. IST07 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST07 - ABORT ON .ERASE. COMMAND - 
*           4. IST07 - ABORT ON .RES. COMMAND - 
*           5. IST07 - ABORT ON .REL. COMMAND - 
*           6. IST07 - ABORT ON .REWIND. COMMAND -
*           7. IST07 - ABORT ON .WAITNB. COMMAND -
* 
*           8. EC 0246 - AN ALERT STATUS OCCURRED AFTER AN ERASE. 
* 
* 
*** IST07 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST07 - ERASE - 
2  FORMAT IST07- ERRS=*DECD LOOP=*DECD
3  FORMAT IST07 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT=4000, EOT=10, ERASE=4, REL=12, RES=13 
   EQUATE REWIND=15, WAITNB=21
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 7                   *MODULE NUMBER 
   BA=0                      *CLEAR ERROR COUNTER 
   B5 = P3 RS 6              *MARGIN BITS 
   MARGINS B5                *SELECT MARGINS PER PARAM P3 
21 B5 = RES 
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = ERASE 
   B7 = 1                    *FORWARD WRITE MOTION
   ERASE, ABT 74
   IF(P3.AND.20.NE.0)GOTO 30  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = ERASE 
30 IF(SB(1).AND.EOT.NE.0)GOTO 54      *EOT DETECTED 
   IF(SB(1).AND.ALERT.NE.0)ERROR 3/246D, 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 = REL 
   REL, ABT 74
   IF(ES.AND.SL.EQ.0) GOTO 55     *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------RELEASE-DELAY-RESERVE.---------------------------- 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B5 = REL 
   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 = RES 
   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 75  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0) GOTO 75  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST07 -   ERASE 
   MODULE IST08,67X(57)LOCK   - WRITE FM/TM - 
*** IST08 - WRITE FILEMARK/TAPEMARK 
**
*   IST08 - 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 0122 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. IST08 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST08 - ABORT ON .ENDFILE. COMMAND - 
*           4. IST08 - ABORT ON .RES. COMMAND - 
*           5. IST08 - ABORT ON .REL. COMMAND - 
*           6. IST08 - ABORT ON .REWIND. COMMAND -
*           7. IST08 - ABORT ON .WAITNB. COMMAND -
* 
*           8. EC 0122 NO FM/TM STATUS IN GENERAL STATUS, AT
*              END OF OPERATION, AFTER A WRITE FM/TM. 
* 
* 
*** IST08 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST08 - WRITE FILEMARK/TAPEMARK - 
2  FORMAT IST08- ERRS=*DECD LOOP=*DECD
3  FORMAT IST08 ERROR(S) IN MODULE = *DECD
* 
   EQUATE EOT=10, FILEMK=20, ENDFILE=3, REL=12, RES=13
   EQUATE REWIND=15, WAITNB=21
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 8D                  *MODULE NUMBER 
   BA=0                      *CLEAR ERROR COUNTER 
   B5 = P3 RS 6              *MARGIN BITS 
   MARGINS B5                *SELECT MARGINS PER PARAM P3 
21 B5 = RES 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
   B0 = B0.+.1               *INCREMENT FILE COUNT
* 
* ---------WRITE FILEMARK/TAPEMARK.-------------------------- 
* 
30 B5 = ENDFILE 
   B7 = 1                    *FORWARD WRITE CODE
   ENDFILE, ABT 74
   IF(P3.AND.20.NE.0)GOTO 31  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = ENDFILE 
31 IF(SB(1).AND.EOT.NE.0)GOTO 54  *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 3/122D, 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 = REL 
   REL, ABT 74
54 B6 = B6.+.1               *LOOP COUNT
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0) GOTO 75  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 75  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST08 -   WRITE FILEMARK/TAPEMARK 
   MODULE IST09,67X(57)LOCK   - READ FM/TM -
*** IST09 - READ FILEMARK/TAPEMARK
**
*   IST09 - READ FILEMARK/TAPEMARK
*   ------------------------------
* 
*        THIS MODULE IS  DEPENDENT  ON  THE  TAPE  CREATED  BY  MODULE
*        *IST08*. (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 0252 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 0251 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. IST09 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST09 - ABORT ON .REWIND. COMMAND -
*           4. IST09 - ABORT ON .READ REV. COMMAND -
*           5. IST09 - ABORT ON .READ FWD. COMMAND -
*           6. IST09 - ABORT ON .RES. COMMAND - 
*           7. IST09 - ABORT ON .REL. COMMAND - 
*           8. IST09 - ABORT ON .WAITNB. COMMAND -
* 
*           9. EC 0251 - FILE MARK STATUS IS MISSING AT END-OF-OP 
*              DURING A READ FILE MARK REVERSE. 
*          10. EC 0252 - FILE MARK STATUS IS MISSING AT END-OF-OP 
*              DURING A READ FILE MARK FORWARD. 
* 
* 
*** IST09 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST09 - READ FILEMARK/TAPEMARK -
2  FORMAT IST09- ERRS=*DECD LOOP=*DECD
3  FORMAT IST09 ERROR(S) IN MODULE = *DECD
* 
   EQUATE EOT=10, FILEMK=20, LOADPT=4, RDFWD=10, RDREV=11 
   EQUATE REL=12, RES=13, REWIND=15, WAITNB=21
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 9D                  *MODULE NUMBER 
   BA=0                      *CLEAR ERROR COUNTER 
   B5 = P3 RS 6              *MARGIN BITS TO B5 
   MARGINS B5                *SELECT MARGINS PER PARAM P3 
21 B5 = RES 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = RDFWD 
   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 = WAITNB
   WAITNB, ABT 74 
   B5 = RDFWD 
30 IF(SB(1).AND.EOT.NE.0)GOTO 34  *EOT DETECTED 
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 3/252D, 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 
   IF(P1.AND.4.NE.0)GOTO 54  *IF GCR MODE 
* 
* ---------READ REVERSE.------------------------------------- 
* 
   B5 = RDREV 
   B7 = 6                    *READ REVERSE CODE 
   READ REV, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = RDREV 
40 IF(SB(1).AND.LOADPT.NE.0)GOTO 54   *LOAD POINT DETECTED
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 3/251D, 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 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------RELEASE - DELAY - RESERVE.------------------------ 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B5 = REL 
   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 = RES 
   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 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST09 -   READ FILEMARK/TAPEMARK
   MODULE IST10,67X(57)LOCK   - MAINTENANCE WRITE - 
*** IST10 - MAINTENANCE WRITE 
**
*   IST10 - 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 0200 IF STATUS ERROR.
*          11. REPEAT STEPS 4-10 UNTIL *RECORD MAX* RECORDS WRITTEN.
*          12. WAIT PARKED IF SELECTED. 
*          13. ENDFILE. 
*          14. REPORT EC 0122 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. IST10 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST10 - ABORT ON .ENDFILE. COMMAND - 
*           4. IST10 - ABORT ON .WRITE. COMMAND - 
*           5. IST10 - ABORT ON .RES. COMMAND - 
*           6. IST10 - ABORT ON .REWIND. COMMAND -
*           7. IST10 - ABORT ON .REL. COMMAND - 
*           8. IST10 - ABORT ON .WAITNB. COMMAND -
* 
*           9. EC 0122 - NO FM/TM STATUS IN GENERAL STATUS, AT
*              END OF OPERATION, AFTER A WRITE FM/TM. 
*          10. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
* 
* 
*** IST10 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
1  FORMAT IST10 - MAINTENANCE WRITE - 
2  FORMAT IST10- ERRS=*DECD LOOP=*DECD
3  FORMAT IST10 ERROR(S) IN MODULE = *DECD
* 
   EQUATE FILEMK=20, EOT=10, ERROR=5034, ENDFILE=3, REL=12
   EQUATE RES=13, REWIND=15, WAITNB=21, WRITE=22
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 10D                 *MODULE NUMBER 
   BA = 0                    *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B0 = 10
   B1 = 500 
   B3 = P4
* 
* ---------FILL BUFFER.-------------------------------------- 
* 
   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 = RES 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
* 
* ---------WRITE .WC. SPECIFIED BY *P2*.--------------------- 
* 
   B5 = WRITE 
   B7 = 1                    *FORWARD WRITE MOTION CODE 
   WRITE, ABT 74
   IF(P3.AND.20.NE.0)GOTO 46  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = WRITE 
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 3/200D, 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 = RES 
   RES P1, ABT 74 
   B5 = WAITNB
   WAITNB, ABT 74 
* 
* ---------WRITE .EOF.--------------------------------------- 
* 
51 B5 = ENDFILE 
   ENDFILE, ABT 74
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 3/122D, GOSUB 70
   IF (P8.EQ.0) GOTO 30      *LOOP IF INFINITE FILE COUNT 
   IF(B0.LT.P8)GOTO 30       *P8 FILES NOT PROCESSED
   B5 = REL 
   REL, ABT 74
54 B6 = B6.+.1               *LOOP COUNT
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 26                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 26        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST10 -   MAINTENANCE WRITE 
   MODULE IST11,67X(57)LOCK   - MAINTENANCE READ -
*** IST11 - MAINTENANCE READ
**
*   IST11 - MAINTENANCE READ
*   ------------------------
* 
*        THIS MODULE READS THE TAPE CREATED BY MODULE  IST10,  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 0207 IF *EOF* DETECTED  WHEN  NOT EXPECTED AND 
*              REQUESTED TO DO SO BY THE USER.
*          10. REPORT EC 0203 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 0105 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. IST11 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST11 - ABORT ON .REWIND. COMMAND -
*           4. IST11 - ABORT ON .READ FWD. COMMAND -
*           5. IST11 - ABORT ON .RES. COMMAND - 
*           6. IST11 - ABORT ON .REL. COMMAND - 
*           7. IST11 - ABORT ON .WAITNB. COMMAND -
* 
*           8. EC 0105 - DATA COMPARE ERROR.THE FIRST 400B WORDS
*              (OR THE RECORD LENGTH IN -P2-), THAT WERE TRANS- 
*              FERRED DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS 
*              WERE REPORTED. (SEE NOTE ON CONVERSION, -IST98A-)
*           9. EC 0203 - ALERT BIT IN GENERAL STATUS WAS SE 
*              DURING A READ FORWARD OPERATION. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          10. EC 0207 - A FM/TM WAS DETECTED OUT OF EXPECTED 
*              POSTION ON A READ OPERATION. FOR THIS ERROR TO 
*              BE REPORTED, P4 = 4XXX MUST BE SET.
* 
*** IST11 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST9AA - PROCESS MODULE ERRORS 
* 
* 
* ----------TAPE MUST BE *IST10* GENERATED FOR DATA COMPARE.- 
* 
1  FORMAT IST11 - MAINTENANCE READ -
2  FORMAT IST11- ERRS=*DECD LOOP=*DECD
3  FORMAT IST11 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT=4000, EOT=10, FILEMK=20, COMPARE=2, RDFWD=10
   EQUATE REL=12, RES=13, REWIND=15, WAITNB=21
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 11D                 *MODULE NUMBER 
   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 = RES 
   B7 = 0                    *NO MOTION CODE
   B3 = 0 
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 
   IF(P3.AND.2.NE.0)GOTO 27  *BYPASS REL ON DATA COMPARE
   B5 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
* 
* ---------READ.--------------------------------------------- 
* 
32 B5 = RDFWD 
   B7 = 5                    *READ FORWARD CODE 
   READ FWD, ABT 74          *READ FORWARD
   IF(P3.AND.20.NE.0)GOTO 33  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
33 IF(P3.AND.2.EQ.0) GOTO 34  *SKIP REL IF NO DATA COMPARE
   B5 = REL 
   REL, ABT 74                   *RELEASE 
   B5 = RDFWD 
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 3/207D, GOSUB 70   *FM/TM ERROR
   GOTO 52
40 IF(SB(1).AND.ALERT.EQ.0) GOTO 41  *NO ALERT
   ERROR 3/203D, 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(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 B5 = COMPARE 
   ERROR 3/105D, 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 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000)RETURN     *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST11 -   MAINTENANCE READ
   MODULE IST12,67X(57)LOCK   - READ FWD/REV(FWD ) -
*** IST12 - READ FORWARD/REVERSE
**
*   IST12 - READ FORWARD/REVERSE
*   ----------------------------
* 
*        THIS MODULE READS THE TAPE CREATED BY MODULE  IST10,  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 *IST12A* AND READING CONTINUES UNTIL  LOADPOINT
*        IS REACHED.
* 
*        IST12  (READ  FORWARD) SUPPORTS REPEAT CONDITION BY REWINDING
*        THE TAPE AND  CONTINUING  THE  READ  FORWARD.   IST12A  (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 0207 IF *EOF* DETECTED  WHEN  NOT EXPECTED AND 
*              REQUESTED TO DO SO BY THE USER.
*          10. REPORT EC 0203 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 0105 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 IST12A 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 0207 IF *EOF* DETECTED  WHEN  NOT EXPECTED AND 
*              REQUESTED TO DO SO BY THE USER.
*          23. REPORT EC 0202 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. IST12 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST12 - ABORT ON .REWIND. COMMAND -
*           4. IST12 - ABORT ON .READ FWD. COMMAND -
*           5. IST12 - ABORT ON .RES. COMMAND - 
*           6. IST12 - ABORT ON .REL. COMMAND - 
*           7. IST12 - ABORT ON .WAITNB. COMMAND -
* 
*           8. IST12A - ERROR CODE = *OCT AT LINE (EA) = *OCT 
*           9. IST12A - ABORT ON .REWIND. COMMAND - 
*          10. IST12A - ABORT ON .READ REV. COMMAND - 
*          11. IST12A - ABORT ON .RES. COMMAND -
*          12. IST12A - ABORT ON .REL. COMMAND -
*          13. IST12A - ABORT ON .WAITNB. COMMAND - 
* 
*          14. EC 0105 - DATA COMPARE ERROR.THE FIRST 400B WORDS
*              (OR THE RECORD LENGTH IN -P2-), THAT WERE TRANS- 
*              FERRED DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS 
*              WERE REPORTED. (SEE NOTE ON CONVERSION, -IST98A-)
*          15. EC 0202 - STATUS ERROR OCCURRED ON A REVERSE READ. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          16. EC 0203 - ALERT BIT IN GENERAL STATUS WAS SE 
*              DURING A READ FORWARD OPERATION. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          17. EC 0207 - A FM/TM WAS DETECTED OUT OF EXPECTED 
*              POSTION ON A READ OPERATION. FOR THIS ERROR TO 
*              BE REPORTED, P4 = 4XXX MUST BE SET.
* 
* 
*** IST12 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
* ----------TAPE MUST BE *IST10* GENERATED FOR DATA COMPARE.- 
* 
1  FORMAT IST12 - READ FORWARD -
2  FORMAT IST12- ERRS=*DECD LOOP=*DECD
* 
   EQUATE ALERT=4000, EOT=10, FILEMK=20, COMPARE=2, RDFWD=10
   EQUATE REL=12, RES=13, REWIND=15, WAITNB=21
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 12D                 *MODULE NUMBER 
   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 = RES 
   B7 = 0                    *NO MOTION CODE
   B3 = 0 
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 
   IF(P3.AND.2.NE.0)GOTO 27  *BYPASS REL ON DATA COMPARE
   B5 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
* 
* ---------READ.--------------------------------------------- 
* 
32 B5 = RDFWD 
   B7 = 5                    *READ FORWARD CODE 
   READ FWD, ABT 74          *READ FORWARD
   IF(P3.AND.20.NE.0)GOTO 33  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
33 IF(P3.AND.2.EQ.0) GOTO 34  *BYPASS REL IF NO COMPARE 
   B5 = REL 
   REL, ABT 74                  *RELEASE
   B5 = RDFWD 
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 3/207D, GOSUB 70       *FM/TM ERROR
   GOTO 52
40 IF(SB(1).AND.ALERT.EQ.0)GOTO 41  *NO ALERT 
   ERROR 3/203D, 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(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 B5 = COMPARE 
   ERROR 3/105D, 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 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   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 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST12 -   READ FORWARD/REVERSE
   MODULE IST12A,67X(57)LOCK  - READ FWD/REV(REV ) -
1  FORMAT IST12A - READ REVERSE - 
2  FORMAT IST12A- ERRS=*DECD LOOP=*DECD 
3  FORMAT IST12 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT=4000, LOADPT=4, FILEMK=20, RDREV=111
   EQUATE REL=112, RES=113, WAITNB=121
* 
20 IF(P1.AND.4.NE.0)GOTO 55  *IF GCR MODE, EXIT 
   MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 12D                 *MODULE NUMBER 
   B1 = P9                   *RECORD COUNT=REC MAX
22 IF(P5+P6.LT.20D) GOTO 23  *BYPASS REL ON SHORT DELAY 
   B5 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
* 
* ---------READ REVERSE.------------------------------------- 
* 
   B5 = RDREV 
   B7 = 6                    *READ REVERSE CODE 
   READ REV, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = RDREV 
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 4/207D, 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 4/202D, 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 22                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 22        *NOT SECOND TRY
   GOTO 56                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST12A -   READ FWD/REV(REV)
   MODULE IST13,67X(57)LOCK   - CANNED POLYNOMIAL TEST -
*** IST13 - CANNED POLYNOMIAL TEST
**
*   IST13 - 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 0200 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 0203 IF STATUS ERROR.
*          18. REPORT EC 0215 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. IST13 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST13 - ABORT ON .WAITNB. COMMAND -
*           4. IST13 - ABORT ON .WRITE. COMMAND - 
*           5. IST13 - ABORT ON .RES. COMMAND - 
*           6. IST13 - ABORT ON .REWIND. COMMAND -
*           7. IST13 - ABORT ON .REL. COMMAND - 
*           8. IST13 - ABORT ON .READ FWD. COMMAND -
*           9. IST13 - ABORT ON .ENDFILE. COMMAND - 
* 
*          10. EC 0122 - NO FM/TM STATUS IN GENERAL STATUS, AT
*              END OF OPERATION, AFTER A WRITE FM/TM. 
*          11. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*          12. EC 0203 - ALERT BIT IN GENERAL STATUS WAS SE 
*              DURING A READ FORWARD OPERATION. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          13. EC 0215 - THE WRITE AND READ POLYNOMIALS FAILED
*              TO COMPARE DURING THE -CANNED POLYNOMIAL- TEST.
*              B3= EXPECTED, SB(2)= ACTUAL, B4= DATA STARTER. 
* 
* 
*** IST13 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
1  FORMAT IST13 - CANNED POLYNOMIAL TEST -
2  FORMAT IST13- ERRS=*DECD LOOP=*DECD
3  FORMAT IST13 ERROR(S) IN MODULE = *DECD
* 
   EQUATE FILEMK=20, ERROR=5034, ENDFILE=3, RDFWD=10, REL=12
   EQUATE RES=13, REWIND=15, SLPIST=16, WAITNB=21, WRITE=22 
* 
   DATA (OB(420),CON)1767,4321,0652,5515,3045,0235,7404,1173
   DATA (OB(430),CON)5430,5400,3340,7660,2410,4720,730,3070 
   DATA (OB(440),CON)2360,3410,3700,4000,5230,560,160,2140
   DATA (OB(450),CON)7550,320,100,2410,5040,2060,1530,3260
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 13D                 *MODULE NUMBER 
25 B0 = P3 RS 6              *MARGIN BITS 
   MARGINS B0                *SELECT MARGINS PER PARAM P3 
26 B5 = RES 
   B7 = 0                    *NO MOTION CODE
* 
* --------REWIND TAPE.--------------------------------------- 
* 
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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)
   IF(P7.EQ.0)RANDOM TO OB FOR WC, START OB(B0+420) 
   IF(P7.EQ.0)GOTO 31 
   RANDOM TO OB FOR WC, START P7
31 GOSUB 60                  *REL-DELAY-RES 
   B5 = WRITE 
   B7 = 1                    *FORWARD WRITE MOTION CODE 
   WRITE, ABT 74
   IF(P3.AND.20.NE.0) GOTO 32  *IF BYPASS *PARKED*
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = WRITE 
32 IF(SB(1).AND.ERROR.EQ.0) GOTO 33 
   ERROR 3/200D, 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 = ENDFILE 
   ENDFILE, ABT 74
   IF(SB(1).AND.ERROR.NE.FILEMK) ERROR 3/122D, GOSUB 70 
* 
* ---------REWIND TAPE.-------------------------------------- 
* 
   GOSUB 60                  *REL-DELAY-RES 
   B5 = REWIND
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74 
* 
* ---------READ TAPE FORWARD.-------------------------------- 
* 
   B0 = 0                    *CLEAR FILE COUNT
   B2 = 430                  *INDEX TO 6 BIT POLYNOMIALS
   IF(P1.AND.10.NE.0)B2=440  *PACKED MODE 
   IF(P1.AND.20.NE.0)B2=450  *16 BIT MODE 
40 B1 = 1                    *SET RECORD COUNT
   WC = B0.+.400
41 GOSUB 60                  *REL-DELAY-RES 
   B5 = RDFWD 
   B7 = 5                    *READ FWD MOTION CODE
   READ FWD, ABT 74 
   IF(P3.AND.20.NE.0) GOTO 42  *IF BYPASS *PARKED*
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = RDFWD 
42 IF(SB(1).AND.ERROR.EQ.0) GOTO 43 
   ERROR 3/203D, GOSUB 70 
   GOTO 44                   *SKIP POLYNOMIAL COMPARE 
43 IF(SB(2).EQ.OB(B2)) GOTO 44  *POLYNOMIALS AGREE
45 B3 = OB(B2)               *EXPECTED POLYNOMIAL 
   B4 = OB(WC+20)            *RANDOM NUMBER STARTER 
   ERROR 3/215D, 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 = REL 
   REL, ABT 74
   B6 = B6.+.1               *LOOP COUNT
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------RELEASE-DELAY-RESERVE SUBROUTINE.----------------- 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B5 = REL 
   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 = RES 
   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 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 26                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 26        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST13 -   CANNED POLYNOMIAL TEST
   MODULE IST14,67X(57)LOCK   - CAPSTAN GO DOWN - 
*** IST14 - CAPSTAN GO DOWN-TIME TEST - 
**
*   IST14 - CAPSTAN GO DOWN-TIME TEST - 
*   --------------------------------- 
* 
*        IST14  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 0200 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. IST14 - ABORT ON .RES. COMMAND - 
*           3. IST14 - ABORT ON .REWIND. COMMAND -
*           4. IST14 - ABORT ON .WRITE. COMMAND - 
* 
*           5. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
* 
* 
*** IST14 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
1  FORMAT IST14 - CAPSTAN GO DOWN - 
2  FORMAT IST14- ERRS=*DECD LOOP=*DECD
3  FORMAT IST14 ERROR(S) IN MODULE = *DECD
* 
   EQUATE EOT=10, ERROR=5034, RES=13, REWIND=15, WRITE=22 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 14D                 *MODULE NUMBER 
   IF(P4.AND.3000.EQ.2000) GOTO 23  *IF RANDOM PATTERN
   B0 = 10
   B3 = P4
   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 = RES 
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = RES 
   RES P1, ABT 74 
   B5 = WRITE 
   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 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT 
* 
* -------- STATUS ERROR SUBROUTINE.-------------------------- 
* 
60 IF(SB(1).AND.EOT.NE.0) GOTO 54  *IF EOT DETECTED 
   ERROR 3/200D, 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 75  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN 
* 
* -------- PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0) GOTO 75  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 30                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2) GOTO 30       *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST14 -   CAPSTAN GO DOWN-TIME TEST 
   MODULE IST15,67X(57)LOCK   - BACKSPACE - 
*** IST15 - BACKSPACE 
**
*   IST15 - BACKSPACE 
*   ----------------- 
* 
*        IST15 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 0200 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 0253 IF STATUS ERROR.
*          22. RELEASE, DELAY AND RESERVE.
*          23. READ REVERSE.
*          24. REPORT EC 0254 IF STATUS ERROR.
*          25. REPORT EC 0255 IF WT ERROR.
*          26. REPORT EC 0256 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. IST15 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST15 - ABORT ON .BKSP. COMMAND -
*           4. IST15 - ABORT ON .READ REV. COMMAND -
*           5. IST15 - ABORT ON .WRITE. COMMAND - 
*           6. IST15 - ABORT ON .RES. COMMAND - 
*           7. IST15 - ABORT ON .REL. COMMAND - 
*           8. IST15 - ABORT ON .REWIND. COMMAND -
*           9. IST15 - ABORT ON .WAITNB. COMMAND -
* 
*          10. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*          11. EC 0253 - A STATUS ERROR OCCURRED ON A BACKSPACE.
*          12. EC 0254 - THE ALERT BIT WAS SET IN GENERAL STATUS
*              FOLLOWING THE FIRST READ REVERSE AFTER A 
*              BACKSPACE. 
*          13. EC 0255 - AN INCORRECT RECORD LENGTH WAS DETECTED
*              ON A REVERSE READ FOLLOWING A BACKSPACE OPERATION. 
*          14. EC 0256 - AN INCORRECT RECORD WAS DETECTED ON A
*              READ REVERSE FOLLOWING A BACKSPACE. (INPUT BUFFER
*              WILL CONTAIN THE ACTUAL RECORD DETECTED.)
* 
* 
*** IST15 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST15 - BACKSPACE - 
2  FORMAT IST15- ERRS=*DECD LOOP=*DECD
3  FORMAT IST15 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT=4000, EOT=10, ERROR=5034, BKSP=1, RDREV=11
   EQUATE REL=12, RES=13, REWIND=15, WAITNB=21, WRITE=22
* 
20 IF(P1.AND.4.NE.0) EXIT    *IF GCR MODE, EXIT 
   MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 15D                 *MODULE NUMBER 
   BA=0                      *CLEAR ERROR COUNTER 
   B5 = P3 RS 6              *MARGIN BITS TO B5 
   MARGINS B5                *SELECT MARGINS PER PARAM P3 
21 B5 = RES 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = WAITNB
   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 = WRITE 
   B7 = 1                    *FORWARD WRITE CODE
   WRITE LONG, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = WRITE 
35 IF(SB(1).AND.EOT.NE.0)GOTO 54  *EOT DETECTED 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 36
   ERROR 3/200D, GOSUB 70 
   GOTO 24                           *WRITE ERROR FREE
36 GOTO 30 WHILE(B2.+.1111.NE.4444)  *WRITE 3 RECORDS 
   B5 = WAITNB
   WAITNB, ABT 74 
   GOSUB 60                  *RELEASE-DELAY-RESERVE 
* 
* ---------BACKSPACE.---------------------------------------- 
* 
   B5 = BKSP
   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 = WAITNB
   WAITNB, ABT 74 
   B5 = BKSP
40 IF(SB(1).AND.ALERT.NE.0)ERROR 3/253D, GOSUB 70  *ALERT 
   GOSUB 60                  *RELEASE-DELAY-RESERVE 
* 
* ---------READ REVERSE.------------------------------------- 
* 
   B5 = RDREV 
   READ REV, ABT 74 
   B1 = B1 - 1               *DECREMENT RECORD COUNT
   IF(SB(1).AND.ERROR.EQ.0)GOTO 41
   ERROR 3/254D, 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 3/255D, GOSUB 70 
   GOTO 45
43 IF(IB(0).NE.2222)ERROR 3/256D, 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 = REL 
   REL, ABT 74
54 B6 = B6.+.1               *LOOP COUNT
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------RELEASE-DELAY-RESERVE SUBROUTINE.----------------- 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B5 = REL 
   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 = RES 
   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 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST15 -   BACKSPACE 
   MODULE IST16,67X(57)LOCK   - BACKSPACE INCR. LENGTH -
*** IST16 - BACKSPACE INCR. LENGTH
**
*   IST16 - 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 0200 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 0253 IF STATUS ERROR.
*          24. RELEASE, DELAY AND RESERVE.
*          25. READ REVERSE.
*          26. REPORT EC 0254 IF STATUS ERROR.
*          27. REPORT EC 0255 IF WT ERROR.
*          28. REPORT EC 0256 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. IST16 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST16 - ABORT ON .BKSP. COMMAND -
*           4. IST16 - ABORT ON .READ REV. COMMAND -
*           5. IST16 - ABORT ON .WRITE. COMMAND - 
*           6. IST16 - ABORT ON .RES. COMMAND - 
*           7. IST16 - ABORT ON .REL. COMMAND - 
*           8. IST16 - ABORT ON .REWIND. COMMAND -
*           9. IST16 - ABORT ON .WAITNB. COMMAND -
* 
*          10. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*          11. EC 0253 - A STATUS ERROR OCCURRED ON A BACKSPACE.
*          12. EC 0254 - THE ALERT BIT WAS SET IN GENERAL STATUS
*              FOLLOWING THE FIRST READ REVERSE AFTER A 
*              BACKSPACE. 
*          13. EC 0255 - AN INCORRECT RECORD LENGTH WAS DETECTED
*              ON A REVERSE READ FOLLOWING A BACKSPACE OPERATION. 
*          14. EC 0256 - AN INCORRECT RECORD WAS DETECTED ON A
*              READ REVERSE FOLLOWING A BACKSPACE. (INPUT BUFFER
*              WILL CONTAIN THE ACTUAL RECORD DETECTED.)
* 
* 
*** IST16 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST16 - BACKSPACE INCR. LENGTH -
2  FORMAT IST16- ERRS=*DECD LOOP=*DECD
3  FORMAT IST16 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT=4000, EOT=10, ERROR=5034, BKSP=1, RDREV=11
   EQUATE REL=12, RES=13, REWIND=15, WAITNB=21, WRITE=22
* 
20 IF(P1.AND.4.NE.0) EXIT    *IF GCR MODE, EXIT 
   MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 16D                 *MODULE NUMBER 
   B5 = P3 RS 6              *MARGIN BITS TO B5 
   MARGINS B5                *SELECT MARGINS PER PARAM P3 
21 B5 = RES 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = WAITNB
   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 = WRITE 
   B7 = 1                    *FORWARD WRITE CODE
   WRITE LONG, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 35  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = WRITE 
35 IF(SB(1).AND.EOT.NE.0)GOTO 54  *EOT DETECTED 
   IF(SB(1).AND.ERROR.EQ.0)GOTO 36
   ERROR 3/200D, GOSUB 70 
   GOTO 24                           *WRITE ERROR FREE
36 GOTO 30 WHILE(B2.+.1111.NE.4444)  *WRITE 3 RECORDS 
   B5 = WAITNB
   WAITNB, ABT 74 
   GOSUB 60                  *RELEASE-DELAY-RESERVE 
* 
* ---------BACKSPACE.---------------------------------------- 
* 
   B5 = BKSP
   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 = WAITNB
   WAITNB, ABT 74 
   B5 = BKSP
40 IF(SB(1).AND.ALERT.NE.0)ERROR 3/253D, GOSUB 70  *ALERT 
   GOSUB 60                  *RELEASE-DELAY-RESERVE 
* 
* ---------READ REVERSE.------------------------------------- 
* 
   B5 = RDREV 
   READ REV, ABT 74 
   B1 = B1 - 1               *DECREMENT RECORD COUNT
   IF(SB(1).AND.ERROR.EQ.0)GOTO 41
   ERROR 3/254D, 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 3/255D, GOSUB 70 
   GOTO 45
43 IF(IB(0).NE.2222)ERROR 3/256D, 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 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------RELEASE-DELAY-RESERVE SUBROUTINE.----------------- 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B5 = REL 
   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 = RES 
   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 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST16 -   BACKSPACE INCR. LENGTH
   MODULE IST17,67X(57)LOCK   - WRITE SKIP TO ERASE - 
*** IST17 - WRITE SKIP TO ERASE 
**
*   IST17 - 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 0200 IF STATUS ERROR.
*          10. BKSP.
*          11. REPORT EC 0253 IF STATUS ERROR.
*          12. ERASE. 
*          13. GO TO STEP 19 IF *EOT* STATUS. 
*          14. REPORT EC 0246 IF STATUS ERROR.
*          15. REPEAT STEPS 5-14 FOR *FILE MAX* TIMES.
*          16. RESERVE. 
*          17. ENDFILE. 
*          18. REPORT EC 0122 IF NOT *EOF* STATUS.
*          19. GO TO STEP 2 IF REPEAT MODULE. 
*          20. EXIT.
*** 
**
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. IST17 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST17 - ABORT ON .ENDFILE. COMMAND - 
*           4. IST17 - ABORT ON .WRITE. COMMAND - 
*           5. IST17 - ABORT ON .RES. COMMAND - 
*           6. IST17 - ABORT ON .REWIND. COMMAND -
*           7. IST17 - ABORT ON .REL. COMMAND - 
*           8. IST17 - ABORT ON .BKSP. COMMAND -
*           9. IST17 - ABORT ON .ERASE. COMMAND - 
* 
*          10. EC 0122 - NO FM/TM STATUS IN GENERAL STATUS, AT
*              END OF OPERATION, AFTER A WRITE FM/TM. 
*          11. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*          12. EC 0246 - AN ALERT STATUS OCCURRED AFTER AN ERASE. 
*          13. EC 0253 - A STATUS ERROR OCCURRED ON A BACKSPACE.
* 
* 
*** IST17 - 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
*          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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
1  FORMAT IST17 - WRITE SKIP TO ERASE - 
2  FORMAT IST17- ERRS=*DECD LOOP=*DECD
3  FORMAT IST17 ERROR(S) IN MODULE = *DECD
* 
   EQUATE FILEMK=20, EOT=10, ERROR=5034, BKSP=1, ENDFILE=3
   EQUATE ERASE=4, REL=12, RES=13, REWIND=15, WRITE=22
* 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 17D                 *MODULE NUMBER 
   BA = 0                    *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B4 = P4
   B0 = 10
   B1 = 500 
* 
* ---------FILL BUFFER.-------------------------------------- 
* 
   IF(P4.AND.3000.EQ.1000)B4=P4.XOR.7777
   DUP B0 BITS OF P4/B4 TO OB FOR B1
   GOTO 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 = RES 
   B7 = 0                    *NO MOTION CODE
   B0 = 0                    *CLEAR FILE COUNT
   B1 = 1                    *SET RECORD COUNT
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
* 
* ---------WRITE .WC. SPECIFIED BY *P2*.--------------------- 
* 
   B5 = WRITE 
   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 3/200D, GOSUB 70 
   GOTO 52                   *RESTART 
* 
* ---------BACKSPACE.---------------------------------------- 
* 
50 B5 = BKSP
   B7 = 6                    *REVERSE READ MOTION CODE
   BKSP, ABT 74 
   IF(SB(1).AND.ERROR.EQ.0) GOTO 51 
   ERROR 3/253D, GOSUB 70 
   GOTO 52                   *RESTART 
* 
* ---------ERASE.-------------------------------------------- 
* 
51 B5 = ERASE 
   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 3/246D, GOSUB 70
52 IF (B3.EQ.0) GOTO 30      *LOOP IF INFINITE FILE COUNT 
   GOTO 30 WHILE (B0+1.NE.B3) 
   B5 = RES 
   RES P1, ABT 74 
* 
* ---------WRITE .EOF.--------------------------------------- 
* 
53 B5 = ENDFILE 
   ENDFILE, ABT 74
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 3/122D, GOSUB 70
54 B6 = B6.+.1               *LOOP COUNT
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 26                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 26        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST17 -   WRITE SKIP TO ERASE 
   MODULE IST18,67X(57)LOCK   - WRITE SKIP, INCR. LENGTH -
*** IST18 - WRITE SKIP, INCR. LENGTH
**
*   IST18 - 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 0200 IF STATUS ERROR.
*          10. BKSP.
*          11. REPORT EC 0253 IF STATUS ERROR.
*          12. ERASE. 
*          13. GO TO STEP 19 IF *EOT* STATUS. 
*          14. REPORT EC 0246 IF STATUS ERROR.
*          15. REPEAT STEPS 5-14 FOR *FILE MAX* TIMES.
*          16. RESERVE. 
*          17. ENDFILE. 
*          18. REPORT EC 0122 IF NOT *EOF* STATUS.
*          19. GO TO STEP 2 IF REPEAT MODULE. 
*          20. EXIT.
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
* 
*           2. IST18 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST18 - ABORT ON .ENDFILE. COMMAND - 
*           4. IST18 - ABORT ON .WRITE. COMMAND - 
*           5. IST18 - ABORT ON .RES. COMMAND - 
*           6. IST18 - ABORT ON .REWIND. COMMAND -
*           7. IST18 - ABORT ON .REL. COMMAND - 
*           8. IST18 - ABORT ON .BKSP. COMMAND -
*           9. IST18 - ABORT ON .ERASE. COMMAND - 
* 
*          10. EC 0122 - NO FM/TM STATUS IN GENERAL STATUS, AT
*              END OF OPERATION, AFTER A WRITE FM/TM. 
*          11. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*          12. EC 0246 - AN ALERT STATUS OCCURRED AFTER AN ERASE. 
*          13. EC 0253 - A STATUS ERROR OCCURRED ON A BACKSPACE.
* 
* 
*** IST18 - 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
*          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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST18 - WRITE SKIP, INCR. LENGTH -
2  FORMAT IST18- ERRS=*DECD LOOP=*DECD
3  FORMAT IST18 ERROR(S) IN MODULE = *DECD
* 
   EQUATE FILEMK=20, EOT=10, ERROR=5034, BKSP=1, ENDFILE=3
   EQUATE ERASE=4, REL=12, RES=13, REWIND=15, WRITE=22
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 18D                 *MODULE NUMBER 
   BA = 0                    *INITIALIZE ABORT COUNTER
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B4 = P4
   B0 = 10
   B1 = 500 
* 
* ---------FILL BUFFER.-------------------------------------- 
* 
   IF(P4.AND.3000.EQ.1000)B4=P4.XOR.7777
   DUP B0 BITS OF P4/B4 TO OB FOR B1
   GOTO 26
23 B0 = P7                   *RANDOM SEED 
   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 = RES 
   B7 = 0                    *NO MOTION CODE
   B0 = 0                    *CLEAR FILE COUNT
   B1 = 1                    *SET RECORD COUNT
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
* 
* ---------WRITE .WC. SPECIFIED BY *P2*.--------------------- 
* 
   B5 = WRITE 
   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 3/200D, GOSUB 70 
   GOTO 52                   *RESTART 
* 
* ---------BACKSPACE.---------------------------------------- 
* 
50 B5 = BKSP
   B7 = 6                    *REVERSE READ MOTION CODE
   BKSP, ABT 74 
   IF(SB(1).AND.ERROR.EQ.0) GOTO 51 
   ERROR 3/253D, GOSUB 70 
   GOTO 52                   *RESTART 
* 
* ---------ERASE.-------------------------------------------- 
* 
51 B5 = ERASE 
   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 3/246D, 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 = RES 
   RES P1, ABT 74 
* 
* ---------WRITE .EOF.--------------------------------------- 
* 
54 B5 = ENDFILE 
   ENDFILE, ABT 74
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 3/122D, GOSUB 70
   B6 = B6.+.1                 *LOOP COUNT
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 26                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2) GOTO 26       *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST18 -   WRITE SKIP, INCR. LENGTH
   MODULE IST19,67X(57)LOCK   -RANDOM WRITE-
*** IST19 - RANDOM WRITE
**
*   IST19 - RANDOM WRITE
*   --------------------
* 
*        IST19 CREATES THE TAPE USED FOR RANDOM READ IN MODULE -IST20-
* 
*        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 0200 IF STATUS ERROR.
*          12. REPEAT STEPS 4-11 FOR *RECORD MAX* RECORDS.
*          13. RELEASE, DELAY AND RESERVE.
*          14. ENDFILE. 
*          15. REPORT EC 0122 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. IST19 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST19 - ABORT ON .WRITE. COMMAND - 
*           4. IST19 - ABORT ON .ENDFILE. COMMAND - 
*           5. IST19 - ABORT ON .RES. COMMAND - 
*           6. IST19 - ABORT ON .REL. COMMAND - 
*           7. IST19 - ABORT ON .REWIND. COMMAND -
*           8. IST19 - ABORT ON .WAITNB. COMMAND -
* 
*           9. EC 0122 - NO FM/TM STATUS IN GENERAL STATUS, AT
*              END OF OPERATION, AFTER A WRITE FM/TM. 
*          10. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
* 
*** IST19 - INTERNAL DOCUMENTATION
* 
*        REGISTER USAGE - 
* 
*          B0 = CURRENT FILE COUNT
*          B1 = CURRENT RECORD COUNT
*          B2 = RANDOM SEED FOR PATTERN GENERATOR 
*             = BUFFER LIMIT FOR DUP
*          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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST19 - RANDOM WRITE -
2  FORMAT IST19- ERRS=*DECD LOOP=*DECD
3  FORMAT IST19 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT=4000, EOT=10, ERROR=5034, FILEMK=20 
   EQUATE ENDFILE=3, REL=12, RES=13, REWIND=15, WAITNB=21 
   EQUATE WRITE=22
  
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 19D                 *MODULE NUMBER 
   BA=0                      *CLEAR ERROR COUNTER 
21 B5 = RES 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
* 
* ---------REWIND.------------------------------------------- 
* 
   B5 = REWIND
   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 
   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 = WRITE 
   B7 = 1                    *FORWARD WRITE CODE
   WRITE, ABT 74
   IF(P3.AND.20.NE.0)GOTO 46  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = WRITE 
46 IF(SB(1).AND.EOT.NE.0)GOTO 54  * -EOT- DETECTED
   IF(SB(1).AND.ERROR.NE.0)ERROR 3/200D, 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 = ENDFILE 
   ENDFILE, ABT 74
   IF(SB(1).AND.FILEMK.EQ.0)ERROR 3/122D, GOSUB 70
   IF(P8.EQ.0)GOTO 30        *INFINITE FILE COUNT 
   IF(B0.LE.P8)GOTO 30       *LOOP FILE MAX TIMES 
   B5 = REL 
   REL, ABT 74
54 B6 = B6.+.1               *LOOP COUNT
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------RELEASE-DELAY-RESERVE SUBROUTINE.----------------- 
* 
60 IF(P5+P6.LT.20D) GOTO 61  *BYPASS REL ON SHORT DELAY 
   B5 = REL 
   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 = RES 
   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 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST19 -   RANDOM WRITE
   MODULE IST20,67X(57)LOCK   -RANDOM READ(FWD PORTION)-
*** IST20 - RANDOM READ (FORWARD PORTION) 
**
*   IST20 - RANDOM READ (FORWARD PORTION) 
*   ------------------------------------- 
* 
*        THE  TAPE  USED BY THIS MODULE MUST BE CREATED BY -IST19-.  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 -IST20A- IS EXECUTED AND
*        A  REVERSE  READ  IS  PERFORMED UNTIL LOAD POINT IS DETECTED.
* 
*        IST20  (READ  FORWARD) SUPPORTS REPEAT CONDITION BY REWINDING
*        THE TAPE AND  CONTINUING  THE  READ  FORWARD.   IST20A  (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 0207 IF *EOF* STATUS DETECTED AND NOT EXPECTED 
*              (IF REQUESTED TO DO SO BY THE USER). 
*           9. REPORT EC 0203 IF STATUS ERROR.
*          10. REPORT EC 0211 IF FILE COUNT ERROR (WORD 1 OF IB IN ERR) 
*          11. REPORT EC 0212 IF RECORD ERROR     (WORD 2 OF IB IN ERR) 
*          12. REPORT EC 0213 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 0105 IF ERROR. 
*          17. REPEAT STEPS 4-16 FOR *RECORD MAX* RECORDS.
*          18. REPEAT STEPS 4-17 FOR *FILE MAX* FILES.
*          19. EXIT TO IST20A.
* 
* 
*          20. RELEASE, DELAY AND RESERVE.
*          21. READ REVERSE.
*          22. WAIT PARKED IF SELECTED. 
*          23. GO TO STEP 28 IF LOADPOINT STATUS. 
*          24. REPORT EC 0207 IF *EOF* STATUS DETECTED AND NOT EXPECTED 
*              (IF REQUESTED TO DO SO BY THE USER). 
*          25. REPORT EC 0202 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. IST20 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST20 - ABORT ON .READ FWD. COMMAND -
*           4. IST20 - ABORT ON .RES. COMMAND - 
*           5. IST20 - ABORT ON .REL. COMMAND - 
*           6. IST20 - ABORT ON .REWIND. COMMAND -
*           7. IST20 - ABORT ON .WAITNB. COMMAND -
* 
*           8. EC 0105 - DATA COMPARE ERROR.THE FIRST 400B WORDS
*              (OR THE RECORD LENGTH IN -P2-), THAT WERE TRANS- 
*              FERRED DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS 
*              WERE REPORTED. (SEE NOTE ON CONVERSION, -IST98A-)
*           9. EC 0202 - STATUS ERROR OCCURRED ON A REVERSE READ. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          10. EC 0203 - ALERT BIT IN GENERAL STATUS WAS SE 
*              DURING A READ FORWARD OPERATION. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          11. EC 0207 - A FM/TM WAS DETECTED OUT OF EXPECTED 
*              POSTION ON A READ OPERATION. FOR THIS ERROR TO 
*              BE REPORTED, P4 = 4XXX MUST BE SET.
*          12. EC 0211 - INCORRECT FILE DETECTED DURING A RANDOM
*              READ (SEE NOTE IN -IST98C- DOCUMENTATION). 
*          13. EC 0212 - INCORRECT RECORD HAS BEEN DETECTED 
*              DURING A RANDOM READ (SEE NOTE IN -IST98C-). 
*          14. EC 0213 - INCORRECT RECORD LENGTH BEEN DETECTED
*              DURING A RANDOM READ (SEE NOTE IN -IST98C-). 
* 
* 
*** IST20 - 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
*          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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = TEMPORARY STORAGE
*              = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST20 - RANDOM READ (FORWARD) - 
2  FORMAT IST20- ERRS=*DECD LOOP=*DECD
3  FORMAT IST20 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT=4000, ODDCT=40, EOT=10, ERROR=5014
   EQUATE FILEMK=20 COMPARE=2, RDFWD=10, REL=12, RES=13 
   EQUATE REWIND=15, WAITNB=21
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 20D                 *MODULE NUMBER 
   B5 = P3.RS.6              *MARGIN BITS IN P3 
   MARGINS B5                *SELECT MARGINS
21 B5 = RES 
   RES P1, ABT 74            *RESERVE 
* 
* ---------REWIND.------------------------------------------- 
* 
   B5 = REWIND
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 74            *REWIND
   WC = 500                  *SET WC REG
   B0 = 0                    *CLEAR FILE COUNT
   B1 = 0                    *CLEAR RECORD COUNT
   B3 = 0                    *CLEAR FM/TM FLAG
30 GOSUB 60                  *RELEASE-RESERVE 
   B1 = B1.+.1               *INCREMENT RECORD COUNT
* 
* ---------READ FORWARD.------------------------------------- 
* 
   B5 = RDFWD 
   B7 = 5                    *READ FORWARD CODE 
   READ FWD, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 31  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = RDFWD 
* 
* ---------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 3/207D, GOTO 70  *REPORT 207
32 IF(SB(1).AND.ERROR.NE.0) ERROR 3/203D, GOTO 70 
   IF(IB(1).NE.B0) ERROR 3/211D, GOTO 70  *FILE ERROR 
   IF(IB(2).NE.B1) ERROR 3/212D, GOTO 70  *RECORD ERROR 
34 B10 = WT 
35 IF(IB(3).NE.B10) ERROR 3/213D, GOTO 70  *WT ERROR
36 IF(P3.AND.2.EQ.0) GOTO 53             *NO DATA COMPARE 
   B5 = REL 
   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 
   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 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT TO 20A               *EXIT TO READ (REV)
* 
* ---------RELEASE-DELAY-RESERVE.---------------------------- 
* 
60 B5 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
   RETURN 
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
67 B5 = COMPARE 
   ERROR 3/105D               *DATA COMPARE ERROR 
70 BA = BA.+.1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 53                    *CONTINUE TESTING 
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) GOTO 53   *IF MODULE DETECTED ERROR
   GOTO 55                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST20 -   RANDOM READ (FORWARD PORTION) 
   MODULE IST20A,67X(57)LOCK   - RANDOM READ (REVERSE)
1  FORMAT IST20A - RANDOM READ (REVERSE)
2  FORMAT IST20A- ERRS=*DECD LOOP=*DECD 
3  FORMAT IST20A ERROR(S) IN MODULE = *DECD 
* 
   EQUATE ALERT=4000, LOADPT=4, FILEMK=20, RDREV=111
   EQUATE REL=112, RES=113, WAITNB=121
* 
20 IF(P1.AND.4.NE.0)GOTO 55  *IF GCR MODE, EXIT 
   MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 20D                 *MODULE NUMBER 
   B1 = P9                   *RECORD COUNT=REC MAX
22 IF(P5+P6.LT.20D) GOTO 23  *BYPASS REL ON SHORT DELAY 
   B5 = REL 
   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 = RES 
   RES P1, ABT 74            *RESERVE 
* 
* ---------READ REVERSE.------------------------------------- 
* 
   B5 = RDREV 
   B7 = 6                    *READ REVERSE CODE 
   READ REV, ABT 74 
   IF(P3.AND.20.NE.0)GOTO 40  *BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 74 
   B5 = RDREV 
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 4/207D, 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 4/202D, 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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT                      *NORMAL TERMINATION
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 22                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 22        *NOT SECOND TRY
   GOTO 56                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST20A -   RANDOM READ (REVERSE)
   MODULE IST21,67X(57)LOCK   - POLYNOMIAL TEST - 
*** IST21 - POLYNOMIAL TEST 
**
*   IST21 - POLYNOMIAL TEST 
*   ----------------------- 
* 
*        IST21 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 0200 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 0253 IF STATUS ERROR.
*          17. REPEAT STEPS 14-16 FOR THE FIRST RECORD. 
*          18. RELEASE, DELAY AND RESERVE.
*          19. READ FORWARD.
*          20. REPORT EC 0203 IF STATUS ERROR.
*          21. REPORT EC 0232 IF RECORD NUMBER ERROR. 
*          22. REPORT EC 0233 IF RECORD LENGTH ERROR. 
*          23. REPORT EC 0234 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. IST21 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST21 - ABORT ON .RES. COMMAND - 
*           4. IST21 - ABORT ON .REWIND. COMMAND -
*           5. IST21 - ABORT ON .WRITE. COMMAND - 
*           6. IST21 - ABORT ON .BKSP. COMMAND -
*           7. IST21 - ABORT ON .READ FWD. COMMAND -
*           8. IST21 - ABORT ON .REL. COMMAND - 
* 
*           9. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*          10. EC 0203 - ALERT BIT IN GENERAL STATUS WAS SE 
*              DURING A READ FORWARD OPERATION. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          11. EC 0232 - THE RECORD COUNT ERROR DURING A -READ
*              FWD- IN THE POLYNOMIAL TEST (SEE NOTE IN -IST98C-) 
*          12. EC 0233 - THE RECORD LENGTH IS IN ERROR DURING A 
*              -READ FORWARD- IN THE POLYNOMIAL TEST. 
*          13. EC 0234 - THE WRITE POLYNOMIAL AND READ POLYNOMIAL 
*              FAILED TO COMPARE DURING THE -POLYNOMIAL- TEST.
*              B4= WRITE POLYNOMIAL, SB(2)= READ POLYNOMIAL.
*          14. EC 0253 - A STATUS ERROR OCCURRED ON A BACKSPACE.
* 
* 
*** IST21 - 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) 
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST21 - POLYNOMIAL TEST - 
2  FORMAT IST21- ERRS=*DECD LOOP=*DECD
3  FORMAT IST21 ERROR(S) IN MODULE = *DECD
* 
   EQUATE EOT=10, ERROR=5034, BKSP=1, RDFWD=10, REL=12
   EQUATE RES=13, REWIND=15, WRITE=22 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 21D                 *MODULE NUMBER 
   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 = REWIND
   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 B6 = B6.+.1
   IF(ES.AND.SL.EQ.0) GOTO 42  *NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21
42 IF(ES.AND.CM.NE.0) GOTO 21  *IF REPEAT COND. OR MODULE 
43 IF(BA.NE.0)MSG 3(BA) TO DAYFILE  *NO ERRORS
   EXIT                      *NORMAL EXIT 
* 
* ---------WRITE SUBROUTINE.--------------------------------- 
* 
50 B1 = B1.+.1               *BUMP RECORD COUNT 
   GOSUB 64                  *REL-DELAY-RES 
   B7 = 10
   B5 = 500 
   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 = WRITE 
   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 3/200D, GOSUB 70
   RETURN 
57 ENDSUB, GOTO 40           *TERMINATE ON END OF TAPE
* 
* ---------BACKSPACE SUBROUTINE.----------------------------- 
* 
60 GOSUB 64                  *REL-DELAY-RES 
   B5 = BKSP
   B7 = 6                    *READ REVERSE MOTION CODE
   B1 = B1 - 1               *DECREMENT RECORD COUNT
   BKSP, ABT 74 
   IF(SB(1).AND.ERROR.NE.0) ERROR 3/253D, GOSUB 70
   RETURN 
* 
* --------READ FORWARD SUBROUTINE.--------------------------- 
* 
62 GOSUB 64                  *REL-DELAY-RES 
   B5 = RDFWD 
   B7 = 5                    *READ FORWARD MOTION CODE
   B1 = B1.+.1               *BUMP RECORD COUNT 
   READ FWD, ABT 74 
   IF(SB(1).AND.ERROR.NE.0) ERROR 3/203D, GOTO 63 
   IF(IB(2).NE.B1) ERROR 3/232D, GOTO 63  *RECORD ERROR 
   IF(IB(3).NE.WC) ERROR 3/233D, GOTO 63  *LENGTH ERROR 
   IF(SB(2).NE.B4) ERROR 3/234D, 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 = REL 
   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 = RES 
   RES P1, ABT 74 
   RETURN 
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1                *BUMP ERROR COUNT 
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN                    *CONTINUE TESTING
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 43                   *ABNORMAL TERMINATION
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   GOTO 43                   *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST21 -   POLYNOMIAL TEST 
   MODULE IST22,67X(57)LOCK   - POSITION TEST - 
*** IST22 - POSITION TEST 
**
*   IST22 - POSITION TEST 
*   --------------------- 
* 
*        IST22 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).
* 
*        IST22 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. 
*          22. SPACE FORWARD OVER ERASED AREAS AND RECORD 6.
*          22. VERIFY RECORD 6 STATUS AND POLYNOMIAL. 
*          23. REPEAT STEPS 2-22 FOR *FILE MAX* TIMES.
*          26. REPEAT MODULE OR EXIT. 
*** 
**
* 
* 
*        ERRORS REPORTED -
* 
*           1. ALL PRODUCT OVERLAY ERRORS.
*           2. IST22 - ERROR CODE = *OCT AT LINE (EA) = *OCT
* 
*           3. EC 0122 - NO FM/TM STATUS IN GENERAL STATUS, AT
*              END OF OPERATION, AFTER A WRITE FM/TM. 
*           4. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*           5. EC 0241 - AN ABNORMAL STATUS WAS DETECTED DURING A 
*              -BACKSPACE- IN THE -POSITION- TEST.
*           6. EC 0242 - AN ABNORMAL STATUS WAS DETECTED DURING A 
*              -READ FORWARD- IN THE -POSITION- TEST. 
*           7. EC 0243 - A COMPARE ERROR HAS OCCURED WHEN THE 
*              WRITE AND READ POLYNOMIALS WERE COMPARED FOR 
*              RECORDS 1, 2, OR 3 IN THE -POSITION- TEST. 
*           8. EC 0244 - AN ABNORMAL STATUS DETECTED DURING THE 
*              -FORESPACE- OVER RECORD 6 IN THE -POSITION- TEST.
*           9. EC 0245 - THE READ POLYNOMIAL AND WRITE POLYNOMIAL 
*              FOR RECORD 6 HAVE FAILED TO COMPARE IN THE 
*              -POSITION- TEST. B6=EXPECTED, SB(2)=ACTUAL.
*          10. EC 0246 - AN ALERT STATUS OCCURRED AFTER AN ERASE. 
* 
* 
*** IST22 - INTERNAL DOCUMENTATION
* 
*        REGISTER USAGE - 
* 
*          B0 = CURRENT ITERATION(FILE) COUNT 
*          B1 = CURRENT RECORD COUNT
*          B2 = CURRENT RECORD CONTENTS 
*          B3 = FILE MAX
*          B5 = MSG NUMBER FOR ABORT PROCESSING 
*          B6 = EXPECTED POLYNOMIAL 
*          B7 = CODE FOR ERROR DETECTION
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST22 - POSITION TEST 
3  FORMAT IST22 ERROR(S) IN MODULE = *DECD
* 
   EQUATE EOT=10, ERROR=5024, FILEMK=20, BKSP=1, ENDFILE=3
   EQUATE ERASE=4, FSPACE=5, RDFWD=10, RES=13, REWIND=15
   EQUATE WRITE=22
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 22D                 *MODULE NUMBER 
   B3 = 100                  *FILE MAX FOR TEST MODE
   IF(P3.AND.40.NE.0)B3=P8
22 B7 = 0                    *NO MOTION CODE
   GOSUB 56                  *RESERVE DRIVE 
   B7 = 3                    *REWIND MOTION CODE
   B5 = REWIND
   REWIND, ABT 70 
24 B2 = 0                    *INITIALIZE DATA REGISTER
   B1 = 0                    *CLEAR RECORD COUNTER
   GOSUB 30                  *WRITE RECORD 1
   GOSUB 30                  *WRITE RECORD 2
   GOSUB 56                  *RESERVE DRIVE 
   B7 = 1                    *FORWARD WRITE CODE
   B5 = ENDFILE 
   ENDFILE, ABT 70
   B1 = B1.+.1               *BUMP RECORD COUNT 
   IF(SB(1).AND.ERROR.NE.FILEMK) ERROR 3/122D GOTO 70 
   GOSUB 32                  *SAVE WRITE POLYNOMIAL 
   GOSUB 30                  *WRITE RECORD 3
   GOSUB 30                  *WRITE RECORD 4
   GOSUB 34                  *BKSP ALL RECORDS, RD 1,2,TM,3 
   GOSUB 54                  *ERASE RECORD 4
   GOSUB 30                  *WRITE RECORD 5
   GOSUB 34                  *BKSP ALL RECORDS, RD 1,2,TM,3 
   GOSUB 54                  *ERASE ERASED AREA 
   GOSUB 54                  *ERASE RECORD 5
   GOSUB 30                  *WRITE RECORD 6
   GOSUB 34                  *BKSP ALL RECORDS, RD 1,2,TM,3 
   GOSUB 56                  *RESERVE DRIVE 
   B7 = 5                    *FORWARD READ MOTION CODE
   B5 = FSPACE
   FSPACE, ABT 70            *FORESPACE ERASED AREA, RCD 6
   B1 = B1.+.1               *BUMP RECORD COUNT 
   IF(SB(1).AND.ERROR.NE.0)ERROR 3/244D, GOTO 70
   B6 = IB(B1+400)           *EXPECTED POLYNOMIAL 
   IF(SB(2).NE.B6) ERROR 3/245D, GOSUB 70 
   IF(SB(1).AND.EOT.NE.0) GOTO 26  *EXIT IF EOT 
   IF(B3.EQ.0) GOTO 24         *IF INFINITE FILE MAX. 
   GOTO 24 WHILE (B0+1.NE.B3)  *DO FILE MAX TIMES 
26 B0 = 0                      *CLEAR LOOP COUNT
   IF(ES.AND.CM.NE.0) GOTO 22  *IF RC OR RM 
   IF(BA.NE.0)MSG 3(BA)TO DAYFILE  *INDICATE ERRORS 
   EXIT 
* 
* -------------WRITE A RECORD SUBROUTINE.-------------------- 
* 
30 B2 = B2.+.1111            *DATA TO WRITE IN THIS RECORD
   DUP B2 TO OB FOR 500 
   GOSUB 56                  *RESERVE DRIVE 
   WC = P2                   *SET WORD COUNT
   B7 = 1                    *FORWARD WRITE MOTION CODE 
   B5 = WRITE 
   WRITE LONG, ABT 70 
   B1 = B1.+.1               *BUMP RECORD COUNT 
   IF(SB(1).AND.ERROR.EQ.0) GOTO 32  *IF NO ERROR 
   ERROR 3/200D, GOSUB 70 
   IF(B1.LE.4)ENDSUB, GOTO 24 
32 IB(B1+400) = SB(2)        *SAVE WRITE POLYNOMIAL 
   RETURN 
* 
* -------------BACKSPACE ALL RECORDS THEN READ.-------------- 
* -------------RECORDS 1,2, TAPE MARK, AND 3.---------------- 
* 
34 GOSUB 56                  *RESERVE DRIVE 
   B7 = 2                    *MOTION CODE FOR REVERSE WRITE 
   B5 = BKSP
   BKSP, ABT 70 
   B1 = B1.-.1               *DECREMENT RECORD NUMBER 
   IF(SB(1).AND.ERROR.NE.0) GOTO 52 
36 GOSUB 56                  *RESERVE DRIVE 
   B7 = 6                    *REVERSE READ CODE 
   B5 = BKSP
   BKSP, ABT 70 
   B1 = B1.-.1               *DECREMENT RECORD NUMBER 
   IF(SB(1).AND.ERROR.EQ.0) GOTO 40 
   IF(B1.NE.2) GOTO 52       *IF NOT TIME FOR FM/TM 
   IF(SB(1).AND.FILEMK.EQ.0) GOTO 52  *IF NOT FM/TM 
40 IF(B1.NE.0) GOTO 36       *BKSP ALL RECORDS
* 
* -------------READ SUBROUTINE.------------------------------ 
* 
42 GOSUB 56                  *RESERVE DRIVE 
   B7 = 5                    *READ FORWARD CODE 
   WC = 400                  *SET WC TO PROTECT IB(400-477) 
   B5 = RDFWD 
   READ FWD, ABT 70 
   B1 = B1.+.1               *BUMP RECORD COUNT 
   IF(B1.NE.3) GOTO 46       *IF NOT TIME FOR FM/TM 
   IF(SB(1).AND.ERROR.EQ.FILEMK) GOTO 50  *OK IF FM/TM
44 ERROR 3/242D, GOTO 70     *REPORT ERROR AND RESTART
46 IF(SB(1).AND.ERROR.NE.0) GOTO 44 
   IF(SB(2).NE.IB(B1+400)) ERROR 3/243D, GOSUB 70 
50 IF(B1.NE.4) GOTO 42       *READ 1, 2, TM, 3
   RETURN 
52 ERROR 3/241D, GOTO 70
* 
* -------------ERASE SUBROUTINE.----------------------------- 
* 
54 GOSUB 56                  *RESERVE DRIVE 
   B7 = 1                    *FORWARD WRITE CODE
   B5 = ERASE 
   ERASE, ABT 70
   IF(SB(1).AND.ERROR.NE.0) ERROR 3/246D, GOTO 70 
   RETURN 
* 
* -------------RESERVE SUBROUTINE.--------------------------- 
* 
56 B5 = RES 
   RES P1, ABT 70 
   RETURN 
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 72       *READ SENSE STATUS 
72 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000)ENDSUB GOTO 24  *IF MODULE DETECTED ERROR 
   ENDSUB GOTO 26            *ABNORMAL TERMINATION
   END 20 
COMPILE   - IST22 -   POSITION TEST 
   MODULE IST23,67X(57)LOCK   - LADDER TEST - 
*** IST23 - LADDER TEST 
**
*   IST23 - 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 0200 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 0202 IF STATUS ERROR.
*          20. REPEAT STEPS 14-19 UNTIL *BOT* IS DETECTED.
*          21. REPORT  EC 0267 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 0203 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. IST23 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST23 - ABORT ON .WAITNB. COMMAND -
*           4. IST23 - ABORT ON .WRITE. COMMAND - 
*           5. IST23 - ABORT ON .RES. COMMAND - 
*           6. IST23 - ABORT ON .REWIND. COMMAND -
*           7. IST23 - ABORT ON .READ FWD. COMMAND -
*           8. IST23 - ABORT ON .READ REV. COMMAND -
* 
*           9. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*          10. EC 0202 - STATUS ERROR OCCURRED ON A REVERSE READ. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          11. EC 0203 - ALERT BIT IN GENERAL STATUS WAS SE 
*              DURING A READ FORWARD OPERATION. 
*              THE INPUT BUFFER CONTAINS THE DATA JUST READ.
*          12. EC 0267 - 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 (0) 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. 
* 
* 
*** IST23 - 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
*          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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98A - ERROR CODE PROCESSOR
* 
1  FORMAT IST23 - LADDER TEST - 
3  FORMAT IST23 ERROR(S) IN MODULE = *DECD
* 
   EQUATE BOT=4, EOT=10, ERROR=5034,
   EQUATE RDFWD=10, RDREV=11, REL=12, RES=13, REWIND=15,
   EQUATE WAITNB=21, WRITE=22 
* 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 23D                 *MODULE NUMBER 
   IF(P4.AND.3000.EQ.2000) GOTO 23  *RANDOM PATTERN SELECTED
   B4 = P4
   B0 = 10
   B1 = 500 
* 
* ---------FILL BUFFER.-------------------------------------- 
* 
   IF(P4.AND.3000.EQ.1000)B4=P4.XOR.7777
   DUP B0 BITS OF P4/B4 TO OB FOR B1
   GOTO 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 = RES 
   B7 = 0                    *NO MOTION CODE
   B0 = 0                    *CLEAR FILE COUNT
   B1 = 0                    *CLEAR RECORD COUNT
   RES P1, ABT 70            *RESERVE 
   B5 = REWIND
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 70            *REWIND
   WC = 1                    *SET WC TO WRITE 1 WORD
   B3 = 1                    *WC INCREMENT VALUE
* 
* ---------WRITE FROM BOT TO EOT.---------------------------- 
* 
30 B5 = RES 
   RES P1, ABT 70 
   B5 = WRITE 
   B7 = 1                    *WRITE FWD MOTION CODE 
   WRITE, ABT 70
   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 = WAITNB
   WAITNB, ABT 70 
   B5 = WRITE 
32 IF(SB(1).AND.EOT.NE.0) GOTO 36  *IF EOT
   IF(SB(1).AND.ERROR.NE.0) ERROR 3/200D, 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
36 IF(P1.AND.4.EQ.0)GOTO 40  *IF NOT GCR MODE 
   B5 = REWIND
   B7 = 3                    *REWIND MOTION CODE
   REWIND, ABT 70            *REWIND
   GOTO 51                   *GO TO READ FORWARD
* 
* ----------READ TAPE REVERSE FROM EOT TO BOT.--------------- 
* 
40 WC = 500 
   B2 = ERROR.XOR.EOT        *SKIP EOT CHECK ON FIRST PASS
41 B5 = RES 
   RES P1, ABT 70 
   B5 = RDREV 
   B7 = 6                    *READ REVERSE MOTION CODE
   READ REV, ABT 70 
   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 = WAITNB
   WAITNB, ABT 70 
   B5 = RDREV 
44 IF(SB(1).AND.B2.NE.0) ERROR 3/202D, GOSUB 70 
   B2 = ERROR                *NORMAL ERROR CHECK
   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 3/267D, GOSUB 70 
* 
* ---------READ TAPE FORWARD IF REPEAT MODULE SELECTED.------ 
* 
50 IF(ES.AND.RM.EQ.0) GOTO 55 
51 B0 = 0                    *CLEAR FILE COUNT
   B1 = 0                    *CLEAR RECORD COUNT
52 B5 = RES 
   RES P1, ABT 70 
   B5 = RDFWD 
   B7 = 5                    *READ FORWARD MOTION CODE
   READ FWD, ABT 70 
   B1 = B1.+.1               *BUMP RECORD COUNT 
   IF(B1.NE.0) GOTO 53       *IF NO RECORD COUNT OVERFLOW 
   B0 = B0.+.1               *BUMP FILE COUNT 
53 IF(P3.AND.20.NE.0) GOTO 54  *IF BYPASS WAIT *PARKED* 
   B5 = WAITNB
   WAITNB, ABT 70 
   B5 = RDFWD 
54 IF(SB(1).AND.EOT.NE.0) GOTO 55  *IF EOT REACHED
   IF(SB(1).AND.ERROR.NE.0) ERROR 3/203D, GOSUB 70
   GOTO 52
55 IF(ES.AND.CM.NE.0)GOTO 26  *IF REPEAT MODULE/CONDITION 
   IF(BA.EQ.0)GOTO 57        *NO ERRORS 
56 MSG 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 EXIT 
* 
* ---------PROCESS MODULE DETECTED ERROR(S).----------------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNT
   MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 74       *READ SENSE STATUS 
74 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *RETURN
   IF(BA.LT.2) GOTO 26       *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
77 END 20 
COMPILE   - IST23 -   LADDER TEST 
   MODULE IST24,67X(57)LOCK   - READ CLIP LEVELS TEST - 
*** IST24 - READ CLIP LEVELS TEST 
**
*   IST24 - 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 0200 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 0274.
*          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 0275.
*          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. IST24 - ABORT ON .RES. COMMAND - 
*           3. IST24 - ABORT ON .REWIND. COMMAND -
*           4. IST24 - ABORT ON .WRITE. COMMAND - 
*           5. IST24 - ABORT ON .READ FWD. COMMAND -
*           6. IST24 - ABORT ON .READ REV. COMMAND -
* 
*           7. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*           8. EC 0274 - ALERT WAS SET FOLLOWING A READ FORWARD 
*              AT THE READ CLIP LEVEL SELECTED IN REGISTER B2.
*           9. EC 0275 - ALERT WAS SET FOLLOWING A READ REVERSE 
*              AT THE READ CLIP LEVEL SELECTED IN REGISTER B2.
* 
*** IST24 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98A - PROCESS MODULE ERRORS 
* 
* 
1  FORMAT IST24 - READ CLIP LEVELS TEST 
2  FORMAT IST24- ERRS=*DECD LOOP=*DECD
3  FORMAT IST24 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ALERT=4000, EOT=10, ERROR=5034, RDFWD=10
   EQUATE RDREV=11, REL=12, RES=13, REWIND=15, WRITE=22 
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 24D                 *MODULE NUMBER 
   WC = P2
* 
* 
* --------REWIND.-------------------------------------------- 
* 
21 RANDOM TO OB FOR 500, START P7 
   GOSUB 60                  *REWIND
* 
* --------WRITE 10 RECORDS WITH ADDRESS CODING, RANDOM DATA.- 
* 
22 OB(1) = B0                *ADDRESS CODING
   OB(2) = B1 
   OB(3) = P2 
   B5 = RES 
   RES P1, ABT 74 
   B5 = WRITE 
   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 3/200D, 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 = RES 
   RES P1, ABT 74 
   B5 = RDFWD 
   B7 = 5                    *READ FORWARD MOTION CODE
   READ FWD, ABT 74 
   IF(SB(1).AND.ALERT.NE.0) ERROR 3/274D 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 IF(P1.AND.4.NE.0) GOTO 46  *IF GCR MODE
42 B5 = RES 
   RES P1, ABT 74 
   B5 = RDREV 
   B7 = 6                    *REVERSE MOTION CODE 
   READ REV, ABT 74 
   IF(SB(1).AND.ALERT.NE.0) ERROR 3/275D GOSUB 70  *IF ERROR
   GOTO 42 WHILE (B1-1.NE.0)
* 
* --------TEST ALL CLIP LEVELS.------------------------------ 
* 
46 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 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 30
50 GOTO 30 WHILE (B2+1.NE.2)  *TEST ALL CLIP LEVELS 
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
57 GOTO 77                   *NORMAL TERMINATION
* 
* ---------REWIND SUBROUTINE.-------------------------------- 
* 
60 B5 = RES 
   RES P1, ABT 74 
   B5 = REWIND
   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 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   RETURN 
* 
* --------PROCESS PRODUCT OVERLAY ABORT.--------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *POST SCOPING LOOP MSG 
   GOTO 21
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2) GOTO 21       *IF NOT SECOND TRY 
   GOTO 55                   *ABNORMAL TERMINATION
77 END 20 
COMPILE   - IST24 -   READ CLIP LEVELS TEST 
   MODULE IST30,67X(57)LOCK   - TAPE PATH DAMAGE -
*** IST30 - TAPE PATH DAMAGE
**
*   IST30 - TAPE PATH DAMAGE
*   ------------------------
* 
*        IST30 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
*        CONTROL 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 0200 IF STATUS ERROR.
*           9. RESERVE. 
*          10. READ REVERSE.
*          11. WAIT PARKED. 
*          12. REPORT EC 0227 IF STATUS ERROR.
*          13. RESERVE. 
*          14. READ FORWARD.
*          15. WAIT PARKED. 
*          16. REPORT EC 0226 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. IST30 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*           3. IST30 - ABORT ON .READ FWD. COMMAND -
*           4. IST30 - ABORT ON .READ REV. COMMAND -
*           5. IST30 - ABORT ON .WRITE. COMMAND - 
*           6. IST30 - ABORT ON .RES. COMMAND - 
*           7. IST30 - ABORT ON .REL. COMMAND - 
*           8. IST30 - ABORT ON .REWIND. COMMAND -
*           9. IST30 - ABORT ON .WAITNB. COMMAND -
* 
*          10. EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL
*              STATUS DURING A WRITE OPERATION. 
*              NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B.
*          11. EC 0226 - ERROR HAS OCCURRED DURING A READ FORWARD 
*              OPERATION IN THE -TAPE PATH DAMAGE- TEST.
*          12. EC 0227 - ERROR HAS OCCURRED DURING A READ REVERSE 
*              OPERATION IN THE -TAPE PATH DAMAGE- TEST.
* 
* 
*** IST30 - 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
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
* 
*        MODULES CALLED - 
* 
*          IST98A - ERROR CODE PROCESSOR
* 
1  FORMAT IST30 - TAPE PATH DAMAGE -
2  FORMAT IST30- ERRS=*DECD LOOP=*DECD
3  FORMAT IST30 ERROR(S) IN MODULE = *DECD
* 
   EQUATE ERROR=5034, RDFWD=10, RDREV=11, REL=12, RES=13
   EQUATE REWIND=15, WAITNB=21, WRITE=22
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 30D                 *MODULE NUMBER 
   BA=0                      *CLEAR ERROR COUNTER 
   B5 = P3 RS 6              *MARGIN BITS TO B5 
   MARGINS B5                *SELECT MARGINS PER PARAM P3 
21 B5 = RES 
   B7 = 0                    *NO MOTION CODE
   RES P1, ABT 74            *RESERVE 
   B5 = REWIND
   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 = RES 
   RES P1, ABT 74 
   B5 = WRITE 
   B7 = 1                    *WRITE FORWARD MOTION CODE 
   WRITE LONG, ABT 74 
   B5 = WAITNB
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.ERROR.EQ.0) GOTO 40  *NO WRITE ERRORS 
   ERROR 3/200D, GOSUB 70 
   GOTO 30                   *RE-WRITE THE RECORD 
* 
* ---------READ THE RECORD REVERSE.-------------------------- 
* 
40 B5 = RES 
   RES P1, ABT 74 
   B5 = RDREV 
   B7 = 6                    *READ REVERSE MOTION CODE
   READ REV, ABT 74 
   B5 = WAITNB
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.ERROR.NE.0)ERROR 3/227D, GOSUB 70 
* 
* ---------READ THE RECORD FORWARD.-------------------------- 
* 
   B5 = RES 
   RES P1, ABT 74 
   B5 = RDFWD 
   B7 = 5                    *READ FORWARD MOTION CODE
   READ FWD, ABT 74 
   B5 = WAITNB
   WAITNB, ABT 74            *WAIT PARKED 
   IF(SB(1).AND.ERROR.NE.0)ERROR 3/226D, 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 = REL 
   REL, ABT 74
54 B6 = B6.+.1               *LOOP COUNT
   IF(ES.AND.SL.EQ.0) GOTO 55  *IF NOT SCOPING
   MSG 2 (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 3 (BA) TO DAYFILE     *INDICATE ERRORS TO DAYFILE
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 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *ERROR MESSAGE 
   RETURN                    *RETURN
* 
* ---------PROCESS PRODUCT OVERLAY ABORT.-------------------- 
* 
74 BA = BA.+.1               *BUMP ERROR COUNT
   IF(ES.AND.SL.EQ.0)GOTO 75  *IF NOT SCOPING 
   MSG 2 (BA,B6) TO DISPLAY  *ERROR MESSAGE 
   GOTO 21                   *RESTART 
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   IF(B13.LT.4000) RETURN    *IF MODULE DETECTED ERROR
   IF(BA.LT.2)GOTO 21        *NOT SECOND TRY
   GOTO 55                   *ABNORMAL TERMINATION
77 END 20 
COMPILE   - IST30 -   TAPE PATH DAMAGE
   MODULE IST31,67X(57)LOCK   - GENERAL STATUS -
*** IST31 - GENERAL STATUS
**
*   IST31 - GENERAL STATUS
*   ----------------------
* 
*        IST31 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. REPEAT CONDITION AND REPEAT MODULE HAVE NO EFFECT. 
* 
*        DESCRIPTION -
* 
*           1. RESERVE BASED ON PARAMETERS IN P1 REGISTER. P1=1000= 
*              PARAMETER OUT OF RANGE.
*           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. IST31 - ABORT ON .RES. COMMAND - 
* 
***  IST31 - INTERNAL DOCUMENTATION 
* 
*        REGISTER USAGE - 
* 
*          B5 = MESSAGE NUMBER IN CASE OF ABORT 
*          B6 = LOOP COUNT FOR SCOPING
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE
*          B15 = MODULE NUMBER
*          BA = ERROR COUNT 
* 
*        MODULES CALLED - 
* 
*          IST98I - STATUS ANALYSIS MODULE
* 
* 
1  FORMAT IST31 - 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 
5  FORMAT IST31- ERRS=*DECD LOOP=*DECD
6  FORMAT 
* 
   EQUATE RES=13
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 31D                 *MODULE NUMBER 
   MSG 1 TO LINE 2
21 B5 = RES 
   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  *IF NOT SCOPING
   MSG 5 (BA,B6) TO DISPLAY 
   GOTO 22
75 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   MSG 6 TO LINE 2           *BLANK LINE 2
   MSG EM TO LINE B8         *PRODUCT ERROR 
   STATUS SENSE,ABT 76       *READ SENSE STATUS 
76 CALL 98A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   MSG 1 TO LINE 2
   GOTO 22
   END 20 
COMPILE   - IST31 -   GENERAL STATUS
   MODULE IST32,67X(57)LOCK   - SERVO ADJUST -
*** IST32 - SERVO ADJUST
**
*   IST32 - SERVO ADJUST
*   --------------------
* 
*        IST32  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. REPEAT MODULE AND 
*        REPEAT CONDITION ARE NOT USED. 
* 
*        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 
* 
*** IST32 - INTERNAL DOCUMENTATION
* 
*        REGISTER USAGE - 
* 
*          B1 = INSIDE LOOP COUNTER 
*          B2 = OUTSIDE LOOP COUNTER
* 
*        MODULES CALLED 
* 
*          NONE 
* 
1  FORMAT IST32 - SERVO ADJUST
* 
20 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 32D                 *MODULE NUMBER 
   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   - IST32 -   SERVO ADJUST
   MODULE IST33,6000(57),LOCK   - SEARCH FILE MARK TEST - 
*** IST33 - SEARCH FILE MARK TEST 
**
*   IST33 - 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 IST33 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.  SCOPE LOOPING IS NOT SUPPORTED IN THIS MODULE. 
* 
* 
*        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 123 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. IST33 - ABORT ON .FUNC FORMAT. COMMAND - 
*           3. IST33 - ABORT ON .FUNC STATUS. COMMAND - 
*           4. IST33 - ABORT ON .FUNC RELEASE. COMMAND -
*           5. IST33 - ABORT ON .FUNC SEARCH FM FWD. COMMAND -
*           6. IST33 - ABORT ON .FUNC SEARCH FM REV. COMMAND -
*           7. IST33 - ABORT ON .FUNC BKSP. COMMAND - 
*           8. IST33 - ABORT ON .OUT OR OUTB. COMMAND - 
*           9. IST33 - ABORT ON .STATUS. COMMAND -
*          10. IST33 - ABORT ON .RES. COMMAND - 
*          11. IST33 - ABORT ON .REL. COMMAND - 
*          12. IST33 - ABORT ON .FUNC WRITE. COMMAND -
*          13. IST33 - ABORT ON .FUNC ENDFILE. COMMAND -
*          14. IST33 - ABORT ON .FUNC REWIND. COMMAND - 
* 
*          15. EC 0260 - NO FILE MARK STATUS AFTER SEARCH FM FWD. 
*          16. EC 0261 - NO FILE MARK STATUS AFTER SEARCH FM REV. 
*          17. EC 0262 - FILE MARK STATUS AT LOAD POINT.
*          18. EC 0123 - NO END-OF-FILE STATUS AFTER AN ENDFILE.
*          19. EC 0263 - NO END OF OPERATION. 
* 
* 
*** IST33 - 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 - 
* 
*          IST97A - REPORT ERROR STATUS 
* 
1  FORMAT IST33 - SEARCH FILE MARK TEST 
3  FORMAT IST33 ERROR(S) IN MODULE = *DECD
* 
   DATA (OB,CON) 1,0,0,2,1,1,2,1,3  *DENSITY CODES
* 
   EQUATE RELEASE = 1, FORMAT = 4, STATUS = 12, BKSP =113 
   EQUATE SFMFWD = 15, SFMREV = 115, ENDFILE = 51 
   EQUATE REWIND = 10, FBKSP = 2, FENDF = 4, FFMT = 5 
   EQUATE FREL =7, FREWIND = 10, FSFMF =11, FSFMR = 12
   EQUATE FSTATUS = 13, FWRITE = 15, OUT = 17, RES = 21 
   EQUATE RDSTAT = 22 
* 
30 MSG 1 TO DISPLAY, PRINT   *POST 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+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 = FENDF 
   FUNC ENDFILE, ABT 70      *WRITE A FILE MARK 
   GOSUB 60                  *WAIT END OF OPERATION 
   IF(SB(1).AND.20.EQ.0) ERROR 3/123D, GOTO 70  *NO EOF 
   GOSUB 64                  *WRITE ONE RECORD
* 
* ---------SEARCH FILE MARK REVERSE.------------------------- 
* 
   B5 = FSFMR 
   FUNC SFMREV, ABT 70       *SEARCH FILE MARK REVERSE
   GOSUB 60                  *WAIT END-OF-OP
   IF(SB(1).AND.20.EQ.0) ERROR 3/261D, GOTO 70  *NO FM
* 
* ---------BACKSPACE ONE RECORD.----------------------------- 
* 
   GOSUB 50                  *RESERVE 
   B5 = FBKSP 
   FUNC BKSP, ABT 70
   GOSUB 60                  *WAIT END OF OP
* 
* ---------SEARCH FILE MARK FORWARD.------------------------- 
* 
   B5 = FSFMF 
   FUNC SFMFWD, ABT 70       *SEARCH FILE MARK FORWARD
   GOSUB 60                  *WAIT END-OF-OP
   IF(SB(1).AND.20.EQ.0) ERROR 3/260D, GOTO 70  *NO FM
   IF(SB(1).AND.10.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 3 (BA) TO DAYFILE    *INDICATE 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 = FREL
   FUNC RELEASE, ABT 70      *RELEASE UNIT
   B2 = 0                    *INDICATE UNIT NOT CONNECTED 
51 B5 = RES 
   RES, ABT 70               *GET I/O CHANNEL 
   B5 = FFMT
   FUNC FORMAT, ABT 70       *FORMAT FUNCTION 
   B2 = 1                    *INDICATE UNIT CONNECTED 
   B5 = OUT 
   OUT 3 WORDS FROM OB(401), ABT 70  *OUTPUT FORMAT PARAMS
   B5 = FSTATUS 
   FUNC STATUS, ABT 70       *REQUEST STATUS
   B5 = RDSTAT
   STATUS 16D WORDS TO SB(1), ABT 70  *INPUT ALL OF STATUS
   RETURN 
* 
* ---------RELEASE SUBROUTINE.------------------------------- 
* 
52 IF(B2.EQ.0) RETURN        *IF UNIT NOT CONNECTED 
   B5 = FREL
   FUNC RELEASE, ABT 53      *RELEASE UNIT
53 B2 = 0                    *INDICATE NOT CONNECTED
   RETURN 
* 
* --------REWIND SUBROUTINE.--------------------------------- 
* 
55 GOSUB 50                  *RESERVE 
   B5 = FREWIND 
   FUNC REWIND, ABT 70
   GOSUB 60                  *WAIT END OF OP
56 GOSUB 50                  *RESERVE 
   IF(SB(1).AND.2.NE.0) GOTO 56  *WAIT FOR REWIND TO END
   IF(SB(1).AND.20.NE.0) ERROR 3/262D, GOTO 70  *IF EOF 
   RETURN 
* 
* ---------WAIT END-OF-OP SUBROUTINE.------------------------ 
* 
60 B3 = 0                    *CLEAR RE-TRY COUNTER
61 B5 = FSTATUS 
   FUNC STATUS, ABT 62       *REQUEST STATUS
   B5 = RDSTAT
   STATUS 16D WORDS TO SB(1), ABT 62  *TRY TO INPUT STATUS
   RETURN 
62 GOTO 61 WHILE (B3+1.NE.5)  *RE-TRY 
   ERROR 3/263D, GOTO 70     *ERROR IF NO END-OF-OP 
* 
* ---------WRITE ONE 500B WORD RECORD SUBROUTINE.------------ 
* 
64 GOSUB 50                  *RESERVE 
   B5 = FWRITE
   FUNC 50, ABT 70           *FUNCTION FOR WRITE
   B5 = OUT 
   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
   ENDSUB 
   MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   GOSUB 52                  *RELEASE UNIT IF CONNECTED 
   CALL 97A                  *CALL ERROR PROCESSOR
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   GOTO 34                   *RESTART 
77 END 30 
COMPILE   - IST33 -   SEARCH FILE MARK TEST 
   MODULE IST34,6000(57),LOCK   - WARMSTART READ TEST - 
*** IST34 - WARMSTART READ TEST 
**
*   IST34 - 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 IST34 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 201 ERROR IF
*              ALERT STATUS EXISTS AFTER THE WRITE. 
*           4. ISSUE AN AUTOLOAD (414) FUNCTION TO CLEAR THE ADAPTOR. 
*           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. IST34 - ABORT ON .FUNC FORMAT. COMMAND - 
*           3. IST34 - ABORT ON .FUNC STATUS. COMMAND - 
*           4. IST34 - ABORT ON .FUNC RELEASE. COMMAND -
*           5. IST34 - ABORT ON .FUNC CLEAR. COMMAND -
*           6. IST34 - ABORT ON .INB. COMMAND - 
*           7. IST34 - ABORT ON .FUNC REWIND. COMMAND - 
*           8. IST34 - ABORT ON .OUT OR OUTB. COMMAND - 
*           9. IST34 - ABORT ON .STATUS. COMMAND -
*          10. IST34 - ABORT ON .RES. COMMAND - 
*          11. IST34 - ABORT ON .REL. COMMAND - 
*          12. IST34 - ABORT ON .FUNC WRITE. COMMAND -
*          13. IST34 - ABORT ON .FUNC WARMRD. COMMAND - 
* 
*          14. EC 0201 - ALERT AFTER A WRITE OPERATION. 
*          15. EC 0257 - DATA COMPARE ERROR ON WARMSTART READ.
*          16. EC 0263 - NO END OF OPERATION. 
*          17. EC 0265 - ALERT AFTER WARMSTART READ INPUT.
*          18. EC 0266 - WARMSTART LENGTH ERR- EXP=400 ACT=*OCT.
* 
* 
*** IST34 - 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 
*          B14 = LOOP COUNT 
*          B15 = MODULE NUMBER
*          BA = ERROR COUNTER 
* 
*        MODULES CALLED - 
* 
*          IST97A - REPORT ERROR STATUS 
* 
1  FORMAT IST34 - WARMSTART READ TEST 
2  FORMAT IST34- ERRS=*DECD LOOP=*DECD
3  FORMAT IST34 ERROR(S) IN MODULE = *DECD
* 
   DATA (OB,CON) 1,0,0,2,0,1,1,2,1,3  *DENSITY CODES
* 
   EQUATE RELEASE = 1, FORMAT = 4, STATUS = 12, REWIND = 10 
   EQUATE CLEAR = 414, WARMRD = 120, WRITE = 50, ALERT = 4000 
   EQUATE COMPARE = 1, FCLEAR = 3, FFMT = 5, FREL = 7 
   EQUATE FREWIND = 10, FSTATUS = 13, FWARMRD = 14, FWRITE = 15 
   EQUATE INB = 16, OUT = 17, RES = 21, RDSTAT = 22 
* 
30 MSG 1 TO DISPLAY, PRINT   *POST RUNNING MESSAGE
   B15 = 34D                 *MODULE NUMBER 
   B14 = 0                   *SET LOOP COUNT TO ZERO
   OB(401) = B5+4260+SB(72)  *FORM FORMAT WORD 1
   OB(403) = P1.AND.2000+4000  *FORM FORMAT WORD 3
   B5 = P1.AND.7
   OB(402) = OB(B5+5).LS.6 + 2440  *FORM FORMAT WORD 2
* 
* -------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 = FWRITE
   FUNC WRITE, ABT 70 
   B5 = OUT 
   OUTB, ABT 70              *WRITE A RECORD
   GOSUB 60                  *WAIT END OF OP
   IF(SB(1).AND.ALERT.NE.0) ERROR 3/201D, GOTO 70  *ALERT 
* 
* ---------ISSUE AUTOLOAD FUNCTION TO CLEAR CONTROLLER.------ 
* 
   B5 = FCLEAR
   FUNC CLEAR, ABT 70 
* 
* ---------PERFORM A WARMSTART READ AT THE REQUESTED DENSITY. 
* 
   B4 = SB(72) + WARMRD      *BUILD WARMSTART READ FUNCTION 
   GOSUB 55 
   B5 = FWARMRD 
   FUNC B4, ABT 70           *WARMSTART READ FUNCTION 
   B5 = INB 
   INB, ABT 70               *READ
   IF(WT.NE.400)ERROR 3/266D, GOTO 70 
   IF(SB(1).AND.ALERT.NE.0) ERROR 3/265D, GOTO 70  *ALERT 
   ERROR 3/257D 
   B5 = COMPARE 
   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 3 (BA) TO DAYFILE     *INDICATE 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 = FREL
   FUNC RELEASE, ABT 70      *RELEASE UNIT
   B2 = 0                    *INDICATE UNIT NOT CONNECTED 
51 B5 = RES 
   RES, ABT 70               *GET I/O CHANNEL 
   B5 = FFMT
   FUNC FORMAT, ABT 70       *FORMAT FUNCTION 
   B2 = 1                    *INDICATE UNIT CONNECTED 
   B5 = OUT 
   OUT 3 WORDS FROM OB(401), ABT 70  *OUTPUT FORMAT OPTIONS 
   B5 = FSTATUS 
   FUNC STATUS, ABT 70       *REQUEST STATUS
   B5 = RDSTAT
   STATUS 16D WORDS TO SB(1), ABT 70  *INPUT ALL OF STATUS
   RETURN 
* 
* ---------RELEASE SUBROUTINE.------------------------------- 
* 
52 IF(B2.EQ.0) RETURN        *IF UNIT NOT CONNECTED 
   B5 = FREL
   FUNC RELEASE, ABT 53      *RELEASE UNIT
53 B2 = 0                    *INDICATE NOT CONNECTED
   RETURN 
* 
* --------REWIND SUBROUTINE.--------------------------------- 
* 
55 GOSUB 50                  *RESERVE 
   B5 = FREWIND 
   FUNC REWIND, ABT 70
   GOSUB 60                  *WAIT END OF OP
56 GOSUB 50                  *RESERVE 
   IF(SB(1).AND.2.NE.0) GOTO 56  *WAIT FOR REWIND TO END
   RETURN 
* 
* ---------WAIT END-OF-OP SUBROUTINE.------------------------ 
* 
60 B3 = 0                    *CLEAR RE-TRY COUNTER
61 B5 = FSTATUS 
   FUNC STATUS, ABT 62       *REQUEST STATUS
   B5 = RDSTAT
   STATUS 16D WORDS TO SB(1), ABT 62  *TRY TO INPUT STATUS
   RETURN 
62 GOTO 61 WHILE (B3+1.NE.5)  *RE-TRY 
   ERROR 3/263D, GOTO 70     *ERROR IF NO END-OF-OP 
* 
* --------PROCESS MODULE DETECTED ERROR(S) AND ABORTS.------- 
* 
70 BA = BA.+.1               *BUMP ERROR COUNTER
   IF(ES.AND.SL.EQ.0)ENDSUB GOTO 72  *IF NOT SCOPING
   MSG 2 (BA,B14) TO DISPLAY  *POST SCOPING LOOP MSG
   GOTO 31
* 
72 MSG 1 TO LINE 1           *MODULE TITLE TO ERROR DISPLAY 
   B8 = 6                    *ERROR MESASGE LINE
   IF(ES.AND.TM.EQ.0)B8=7    *IF TERMINAL MODE
   B9 = LF                   *SAVE LAST FUNCTION
   B10 = WC                  *SAVE WORD COUNT 
   B11 = WT                  *SAVE WORDS TRANSFERED 
   B12 = EA                  *SAVE ERROR ADDRESS
   B13 = EC                  *SAVE ERROR CODE 
   B14 = EM                  *SAVE ERROR MESSAGE
   IF(EC.GE.4000)MSG EM TO LINE B8  *PRODUCT ERROR
   GOSUB 52                  *RELEASE UNIT IF CONNECTED 
   CALL 97A                  *REPORT CURRENT STATUS 
   MSG 1 TO DISPLAY          *RESTORE RUNNING MESSAGE 
   GOTO 35                   *RESTART 
77 END 30 
COMPILE   - IST34 -   WARMSTART READ TEST 
   MODULE IST97A,6000(57),LOCK   - STATUS REPORTING - 
*** IST97A - STATUS REPORTING FOR LOW-LEVEL MODULES 
**
*   IST97A - STATUS REPORTING FOR LOW-LEVEL MODULES 
*   ----------------------------------------------- 
* 
*        IST97A  CAN  BE  ENTERED FROM ANY LOW-LEVEL MODULE IN THE
*        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. 
  
0  FORMAT IST - INTELLIGENT SMALL MAGNETIC TAPE TEST
1  FORMAT IST*D - ABORT ON .COMPARE. COMMAND -
2  FORMAT IST*D - ABORT ON .FUNC BKSP. COMMAND -
3  FORMAT IST*D - ABORT ON .FUNC CLEAR. COMMAND - 
4  FORMAT IST*D - ABORT ON .FUNC ENDFILE. COMMAND - 
5  FORMAT IST*D - ABORT ON .FUNC FORMAT. COMMAND -
6  FORMAT IST*D - ABORT ON .FUNC READREV. COMMAND - 
7  FORMAT IST*D - ABORT ON .FUNC RELEASE. COMMAND - 
10 FORMAT IST*D - ABORT ON .FUNC REWIND. COMMAND -
11 FORMAT IST*D - ABORT ON .FUNC SEARCH FM FWD. COMMAND - 
12 FORMAT IST*D - ABORT ON .FUNC SEARCH FM REV. COMMAND - 
13 FORMAT IST*D - ABORT ON .FUNC STATUS. COMMAND -
14 FORMAT IST*D - ABORT ON .FUNC WARMRD. COMMAND -
15 FORMAT IST*D - ABORT ON .FUNC WRITE. COMMAND - 
16 FORMAT IST*D - ABORT ON .INB. COMMAND -
17 FORMAT IST*D - ABORT ON .OUT OR OUTB. COMMAND -
20 FORMAT IST*D - ABORT ON .REL. COMMAND -
21 FORMAT IST*D - ABORT ON .RES. COMMAND -
22 FORMAT IST*D - ABORT ON .STATUS. COMMAND - 
27 FORMAT IST*D - ABORT ON .UNKNOWN. COMMAND -
* 
30 IB(441B) = BA             *SAVE REGISTERS
   IB(442B) = B0
   IB(443B) = B1
   IB(444B) = B2
   IB(445B) = B3
   IB(446B) = B4
   IB(447B) = B5
   IB(450B) = B6
   IB(451B) = B7
   IB(452B) = B13 
   IB(453B) = B15 
* 
   MSG 0 TO LINE 0           *TITLE LINE
   B6 = 2                    *LINE NUMBER 
   IF(ES.AND.TM.EQ.0)B6=3    *IF KL DISPLAY 
* 
   B0 = B5                   *FORM FORMAT NUMBER
   IF(B5.EQ.0) B0 = 27       *IF UNKNOWN COMMAND
   IF(B5.GE.22) B0 = 27      *IF UNKNOWN COMMAND
   MSG B0 (B15) TO LINE B6   *COMMAND MESSAGE 
* 
   B6 = B6.+.1               *INCREMENT LINE NUMBER 
   EXIT TO 97B               *GO TO NEXT MODULE 
   END 30 
COMPILE   - IST97A -   COMMAND ABORT PROCESSING 
   MODULE IST97B,6000(57),LOCK   - STATUS REPORTING - 
0  FORMAT  CH=*OCTB   EQ=*OCTB    UN=*OCTB   DC=*OCTB 
1  FORMAT  LF=*OCTB   LSF=*OCTB   WC=*OCTB   WT=*OCTB 
2  FORMAT  FILE=*OCTB   RECORD=*OCTB   ERROR COUNT=*OCTB
3  FORMAT   IST*D - ERROR CODE = *DEC  AT LINE (EA) = *OCT
4  FORMAT EC 0123 - NO END-OF-FILE STATUS AFTER AN ENDFILE. 
5  FORMAT EC 0201 - ALERT AFTER A WRITE OPERATION.
6  FORMAT EC 0257 - DATA COMPARE ERROR ON WARMSTART READ. 
7  FORMAT EC 0260 - NO FILE MARK STATUS AFTER SEARCH FM FWD.
10 FORMAT EC 0261 - NO FILE MARK STATUS AFTER SEARCH FM REV.
11 FORMAT EC 0262 - FILE MARK STATUS AT LOAD POINT. 
12 FORMAT EC 0264 - NOISE BYPASS FAILURE - NO EOF STATUS. 
13 FORMAT EC 0263 - NO END OF OPERATION.
14 FORMAT EC 0265 - ALERT AFTER WARMSTART READ INPUT. 
15 FORMAT EC 0266 - WARMSTART LENGTH ERR- EXP=400 ACT=*OCT. 
27 FORMAT EC *DEC - UNKNOWN ERROR CODE. 
* 
30 MSG 0 (SB(17),SB(18),SB(19),DC) TO LINE B6 
   MSG 1 (B9,SB,B10,B11) TO LINE B6+1 
   MSG 2 (IB(444),IB(445),IB(443)) TO LINE B6+2 
   B6 = B6.+.3               *INCREMENT LINE NUMBER 
* 
   IF(EC.LE.3777) GOTO 34    *IF PRODUCT OVERLAY ERROR
   B6 = B6.+.1               *INCREMENT LINE NUMBER 
   EXIT TO 97C               *EXIT TO STATUS MODULES
* 
34 MSG B14(B15,B13,B12) TO LINE B6  *TEST ERROR MESSAGE 
   B6 = B6.+.1               *INCREMENT LINE NUMBER 
* 
40 B5 = 104 
   IF(B13.EQ.123D) GOTO 50   *IF ERROR CODE 0123
   B5 = 105 
   IF(B13.EQ.201D) GOTO 50   *IF ERROR CODE 0201
   B5 = 106 
   IF(B13.EQ.257D) GOTO 50   *IF ERROR CODE 0257
   B5 = 107 
   IF(B13.EQ.260D) GOTO 50   *IF ERROR CODE 0260
   B5 = 110 
   IF(B13.EQ.261D) GOTO 50   *IF ERROR CODE 0261
   B5 = 111 
   IF(B13.EQ.262D) GOTO 50   *IF ERROR CODE 0262
   B5 = 112 
   IF(B13.EQ.263D) GOTO 50   *IF ERROR CODE 0263
   B5 = 113 
   IF(B13.EQ.264D) GOTO 50   *IF ERROR CODE 0264
   B5 = 114 
   IF(B13.EQ.265D) GOTO 50   *IF ERROR CODE 0265
   B5 = 115 
   IF(B13.EQ.266D) GOTO 50   *IF ERROR CODE 0266
   MSG 27 (B13) TO LINE B6   *UNKNOWN ERROR CODE
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   EXIT TO 97C               *GO PROCESS STATUS 
* 
50 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *LINES IN ERROR MESSAGE
   IF(B4.EQ.15) GOTO 52      *IF FORMAT MESSAGE 15
   MSG B4 TO LINE B6
   GOTO 70                   *GO TO PROCESS NEXT LINE 
* 
52 MSG B4 (B11) TO LINE B6   *ERROR CODE 266
* 
70 B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   EXIT TO 97C               *GO PROCESS STATUS 
   END 30 
COMPILE   - IST97B -   ERROR MESSAGE PROCESSING 
   MODULE IST97C,6000(57),LOCK   - STATUS REPORTING - 
   BASE DECIMAL 
0  FORMAT              DATA ERROR(S)
1  FORMAT   ERR.. WD=*OCTB  AC=*OCTB  EX=*OCTB  DIFF=*OCTB
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   OB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
5  FORMAT   IB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
6  FORMAT   B0-B7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
7  FORMAT   P0-P7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
8  FORMAT   P8-P9   =*OCT *OCT
9  FORMAT   SENSE BYTE STATUS (HEX) 
10 FORMAT   00-07 = *H  *H  *H  *H  *H  *H  *H  *H
11 FORMAT   EXTENDED SENSE BYTE STATUS (HEX)
12 FORMAT   *D-*D = *H  *H  *H  *H  *H  *H
13 FORMAT   *D-*D = *H  *H      *H  *H  *H
23 FORMAT --------------------------------------------------
* 
24 IF(B13.NE.257D) GOTO 30   *IF NOT DATA COMPARE ERROR 
   MSG 0 TO LINE B6 
   B6 = B6.+.1
   B5 = 0                    *INDEX TO BUFFERS
   B3 = B6.+.4               *TERMINATING MESSAGE LINE
26 B4 = IB(B5).XOR.OB(B5) 
   IF(B4.EQ.0) GOTO 28       *IF WORDS COMPARE
   MSG 1 (B5,IB(B5),OB(B5),B4) TO LINE B6 
   B6 = B6.+.1
28 B5 = B5.+.1               *BUMP BUFFER INDEX 
   IF(B11-1.EQ.B5) GOTO 30   *IF ALL WORDS DONE 
   IF(B6.NE.B3) GOTO 26      *IF 4 ERRORS NOT REPORTED
* 
30 IF(ES.AND.TM.EQ.0)B6=B6.+.1        *IF KL DISPLAY
   MSG 2, 8 WORDS FROM SB(1) TO LINE B6 
   MSG 3, 8 WORDS FROM SB(9) TO LINE B6+1 
   MSG 4, 8 WORDS FROM OB TO LINE B6+2
   MSG 5, 8 WORDS FROM IB TO LINE B6+3
   MSG 6, 8 WORDS FROM IB(442B) TO LINE B6+4
   MSG 7, 8 WORDS FROM P0 TO LINE B6+5
   MSG 8, 2 WORDS FROM P8 TO LINE B6+6
* 
   PICTURE
   HALT 
   MSG 23 TO PRINT
   BLANK
   BA = IB(441B)             *RESTORE REGISTERS 
   B0 = IB(442B)
   B1 = IB(443B)
   B2 = IB(444B)
   B3 = IB(445B)
   B4 = IB(446B)
   B5 = IB(447B)
   B6 = IB(450B)
   B7 = IB(451B)
   B13 = IB(452B) 
   B15 = IB(453B) 
   EXIT 
   END 24 
COMPILE   - IST97C -   STATUS ERROR DISPLAY 
   MODULE IST98A,67X(57)LOCK   - COMMAND ABORT PROCESSING - 
*** IST98A-IST98P - STATUS ANALYSIS 
**
*   IST98A-IST98P - STATUS ANALYSIS 
*   ------------------------------- 
* 
*        MODULE IST98A CAN BE CALLED BY ANY TEST MODULE THAT  MAKES  UP 
*        THE  IST  TEST.  IST98A WILL BEGIN THE PROCESS OF BUILDING THE 
*        ERROR DISPLAY.   THE  MODULE  CALLING  THE  IST98A  MODULE  IS 
*        RESPONSIBLE  FOR  PUTTING  THE  NAME AND MODULE DESCRIPTION IN 
*        LINE ONE OF THE  DISPLAY.   THE  FOLLOWING  ARE  THE  EXPECTED 
*        VALUES CONTAINED IN SOME OF THE B REGISTERS- 
* 
*          B5 = COMMAND ABORTED 
*          B7 = CURRENT MODE STATUS 
*          B8 = DISPLAY LINE
*          B9 = LAST FUNCTION 
*          B10 = WORD COUNT 
*          B11 = WORDS TRANSFERED 
*          B12 = ERROR ADDRESS
*          B13 = ERROR CODE 
*          B14 = ERROR MESSAGE NUMBER 
*          B15 = CALLING MODULE NUMBER
* 
*        THE  B7 REGISTER CONTAINS THE CURRENT CODE DESCRIBING WHAT THE 
*        TEST WAS DOING THE TIME OF THE FAILURE.  A  BREAKDOWN  OF  BIT 
*        MEANINGS IN B7 IS AS FOLLOWS - 
* 
*          0XXX = MODE (PHASE OR GCR) IS IN P1 REGISTER 
*          1XXX = NOT USED
*          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 = ISMT 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) 
* 
* 
*        THE IST98A AND IST98B MODULES WILL POST  THE  COMMAND  ABORTED 
*        MESSAGE AND THEN EXIT TO THE IST98C MODULE.  THE IST98C MODULE 
*        WILL POST MESSAGES TO DISPLAY THE  CHANNEL  NUMBER,  EQUIPMENT 
*        NUMBER,  UNIT  NUMBER, DEVICE CODE, LAST FUNCTION, LAST STATUS 
*        FUNCTION, WORD COUNT REGISTER, AND WORDS TRANSFFERED REGISTER. 
*        THEN  THE  IST98C  MODULE WILL THEN ANALYZE THE ERROR CODE AND 
*        EITHER POST THE APPROPRIATE ERROR MESSAGE FOR THE  ERROR  CODE 
*        OR  EXIT  TO  ANOTHER  MODULE  (IST98D  -  IST98H) TO POST THE 
*        APPROPRIATE ERROR MESSAGE.  MODULES IST98C -  IST98H  EXIT  TO 
*        MODULE  IST98I.   THE  IST98I  MODULE  WILL  POST  MESSAGES TO 
*        DISPLAY THE  STATUS,  INPUT,  AND  OUTPUT  BUFFERS,  PARAMETER 
*        REGISTERS, AND DETAILED AND EXTENDED STATUSES. 
* 
*        MODULES  IST98J THROUGH IST98L ANALYZE THE DETAILED STATUS AND 
*        POST  THE  APPROPRIATE  DETAILED  STATUS  ERROR  MESSAGE.    A 
*        SYSTEMATIC  ANALYSIS OF THE STATUS BUFFER IS MADE TO DETERMINE 
*        THE MOST SERIOUS ERROR  THAT  EXISTS.   THE  CONTENTS  OF  THE 
*        STATUS  BUFFER  AND THE CURRENT CODE IN REGISTER B7 IS USED TO 
*        ASSIST IN THE ANALYSIS.   MODULES  IST98J  -  IST98L  EXIT  TO 
*        MODULE  IST98M.   MODULES  IST98M  THROUGH IST98O ANALYZE THE
*        ADAPTOR ERROR CODE IF THE ERROR CDOE IS NOT EQUAL TO ZERO  AND 
*        POST   THE   APPROPRIATE  ADAPTOR  ERROR  CODE  MESSAGE.   THE 
*        FOLLOWING IS THE FUNCTIONS PERFORMED BY  THE  MODULES  IN  THE 
*        IST98 MODULES SERIES-
* 
*          IST98A - PROCESS COMMAND ABORTED 
*          IST98B - PROCESS COMMAND ABORTED 
*          IST98C - PROCESS ERROR CODES 0100 - 0116 
*          IST98D - PROCESS ERROR CODES 0122 - 0207 
*          IST98E - PROCESS ERROR CODES 0211 - 0232 
*          IST98F - PROCESS ERROR CODES 0233 - 0246 
*          IST98G - PROCESS ERROR CODES 0251 - 0266 
*          IST98H - PROCESS ERROR CODES 0267 - 0275 
*          IST98I - STATUS DISPLAY
*          IST98J - DETAILED STATUS ANALYSIS
*          IST98K - DETAILED STATUS ANALYSIS
*          IST98L - DETAILED STATUS ANALYSIS
*          IST98M - PROCESS ADAPTER ERROR CODES 3001 - 3177 
*          IST98N - PROCESS ADAPTER ERROR CODES 3200 - 3225 
*          IST98O - PROCESS ADAPTER ERROR CODES 3226 - 3277 
*          IST98P - PROCESS ADAPTER ERROR CODES 3301 - 3377 
* 
* 
*        AFTER DISPLAYING THE ERROR, A CHECK IS MADE TO INSURE THAT THE 
*        ADAPTOR IS FUNCTIONAL (RESERVE) AND IF NOT, A RESET COMMAND IS 
*        EXECUTED TO MASTER CLEAR THE ADAPTOR.   THE  B  REGISTERS  ARE 
*        RESTORED  AND  CONTROL IS RETURNED TO THE MODULE THAT DETECTED 
*        THE FAILURE. 
* 
* 
* 
0  FORMAT IST - INTELLIGENT SMALL MAGNETIC TAPE TEST
1  FORMAT IST*D - ABORT ON .BKSP. COMMAND - 
2  FORMAT IST*D - ABORT ON .COMPARE. COMMAND -
3  FORMAT IST*D - ABORT ON .ENDFILE. COMMAND -
4  FORMAT IST*D - ABORT ON .ERASE. COMMAND -
5  FORMAT IST*D - ABORT ON .FSPACE. COMMAND - 
6  FORMAT IST*D - ABORT ON .READ RDRAM. COMMAND - 
7  FORMAT IST*D - ABORT ON .READ WRRAM. COMMAND - 
10 FORMAT IST*D - ABORT ON .READ FWD. COMMAND - 
11 FORMAT IST*D - ABORT ON .READ REV. COMMAND - 
12 FORMAT IST*D - ABORT ON .REL. COMMAND -
13 FORMAT IST*D - ABORT ON .RES. COMMAND -
14 FORMAT IST*D - ABORT ON .RESET. COMMAND -
15 FORMAT IST*D - ABORT ON .REWIND. COMMAND - 
16 FORMAT IST*D - ABORT ON .SELECT LOOPFSC. COMMAND - 
17 FORMAT IST*D - ABORT ON .SELECT LOOPUNIT. COMMAND -
20 FORMAT IST*D - ABORT ON .STATUS. COMMAND - 
21 FORMAT IST*D - ABORT ON .WAITNB. COMMAND - 
22 FORMAT IST*D - ABORT ON .WRITE. COMMAND -
27 FORMAT IST*D - ABORT ON .UNKNOWN. COMMAND- 
* 
30 IB(441B) = BA             *SAVE REGISTERS
   IB(442B) = B0
   IB(443B) = B1
   IB(444B) = B2
   IB(445B) = B3
   IB(446B) = B4
   IB(447B) = B5
   IB(450B) = B6
   IB(451B) = B7
   IB(452B) = B13 
   IB(453B) = B15 
* 
   MSG 0 TO LINE 0           *TITLE LINE
   B6 = 2                    *LINE NUMBER 
   IF(ES.AND.TM.EQ.0)B6=3    *IF KL DISPLAY 
* 
   IF(B5.GE.100) EXIT TO 98B  *IF MSG IN NEXT MODULE
   B0 = B5                   *FORM FORMAT NUMBER
   IF(B5.EQ.0) B0 = 27       *IF UNKNOWN COMMAND
   IF(B5.GE.23) B0 = 27      *IF UNKNOWN COMMAND
   MSG B0 (B15) TO LINE B6   *COMMAND MESSAGE 
* 
   B6 = B6.+.1               *INCREMENT LINE NUMBER 
   EXIT TO 98C               *GO TO NEXT MODULE 
   END 30 
COMPILE   - IST98A -   COMMAND ABORT PROCESSING 
   MODULE IST98B,67X(57)LOCK   - COMMAND ABORT PROCESSING - 
0  FORMAT IST*DA - ABORT ON .READ REV. COMMAND -
1  FORMAT IST*DA - ABORT ON .REL. COMMAND - 
2  FORMAT IST*DA - ABORT ON .RES. COMMAND - 
3  FORMAT IST*DA - ABORT ON .WAITNB. COMMAND -
27 FORMAT IST*DA - ABORT ON .UNKNOWN. COMMAND-
* 
30 B0 = B5-25                *FORM FORMAT NUMBER
   IF(B5.GT.40) B0 = 27      *IF UNKNOWN COMMAND
   IF(B5.AND.100.EQ.0)GOTO 40  *IF NOT MODULE 12A OR 20A
* 
   B0 = 27                   *DEFAULT TO UNKNOWN COMMAND
   IF(B5.EQ.111) B0 = 0      *IF READ REV COMMAND 
   IF(B5.EQ.112) B0 = 1      *IF RELEASE COMMAND
   IF(B5.EQ.113) B0 = 2      *IF RESERVE COMMAND
   IF(B5.EQ.121) B0 = 3      *IF WAITNB COMMAND 
* 
40 MSG B0 (B15) TO LINE B6   *COMMAND MESSAGE 
   B6 = B6+1                 *INCREMENT LINE NUMBER 
   EXIT TO 98C               *GO TO NEXT MODULE 
   END 30 
COMPILE   - IST98B -   COMMAND ABORT PROCESSING 
   MODULE IST98C,67X(57)LOCK   - ERROR MESSAGE PROCESSING - 
0  FORMAT  CH=*OCTB   EQ=*OCTB    UN=*OCTB   DC=*OCTB 
1  FORMAT  LF=*OCTB   LSF=*OCTB   WC=*OCTB   WT=*OCTB 
2  FORMAT  FILE=*OCTB   RECORD=*OCTB   ERROR COUNT=*OCTB
3  FORMAT   IST*D - ERROR CODE = *DEC  AT LINE (EA) = *OCT
4  FORMAT   IST*DA - ERROR CODE = *DEC  AT LINE (EA) = *OCT 
6  FORMAT EC 0101 - READ RAM *OCT DATA ERROR. 
7  FORMAT  WD=*OCTB, 1ST RD=*OCTB, 2ND RD=*OCTB, DIF=*OCTB
10 FORMAT EC 0102 - WRITE RAM *OCT DATA ERROR.
11 FORMAT  WD=*OCTB, 1ST RD=*OCTB, 2ND RD=*OCTB, DIF=*OCTB
12 FORMAT EC 0105 - DATA COMPARE ERROR THE FIRST 400B WORDS 
13 FORMAT (OR THE RECORD LENGTH IN -P2-), THAT WERE TRANS-
14 FORMAT FERRED DO NOT COMPARE ALTHOUGH NO SUBSYSTEM ERRORS
15 FORMAT WERE REPORTED (SEE NOTE ON CONVERSION, -IST98A-). 
/ 
/                           --- 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   IST PARAMETERS
/       00      33    9 TRACK AND CODE TRANSLATION TABLE 3
/       12      00    9 TRACK AND CODE TRANSLATION TABLE 7
/ 
20 FORMAT EC 0111 - STATUS ERROR AFTER LOOP.
21 FORMAT EC 0112 - NO EOF STATUS ON ENDFILE *OCT.
22 FORMAT EC 0113 - STATUS ERROR AFTER ENDFILE *OCT.
23 FORMAT EC 0114 - STATUS ERROR AFTER WRITE *OCT.
24 FORMAT EC 0115 - WRITE *OCT POLY=*OCT EXP=*OCT.
25 FORMAT EC 0116 - ISMT DIAGNOSTIC TIMEOUT ERROR 
27 FORMAT EC *DEC - UNKNOWN ERROR CODE. 
* 
30 MSG 0 (SB(17D),SB(18D),SB(19D),DC) TO LINE B6
   MSG 1 (B9,SB,B10,B11) TO LINE B6+1 
   MSG 2 (IB(444),IB(445),IB(443)) TO LINE B6+2 
   B6 = B6.+.3               *INCREMENT LINE NUMBER 
* 
   IF(EC.LE.3777) GOTO 34    *IF PRODUCT OVERLAY ERROR
   B6 = B6.+.1               *INCREMENT LINE NUMBER 
   EXIT TO 98I               *EXIT TO STATUS MODULES
* 
34 MSG B14(B15,B13,B12) TO LINE B6  *TEST ERROR MESSAGE 
   B6 = B6.+.1               *INCREMENT LINE NUMBER 
* 
   IF(B13.LE.115D) GOTO 40    *0100 - 0115
   IF(B13.LE.210D)EXIT TO 98D  *0116 - 0210 
   IF(B13.LE.232D)EXIT TO 98E  *0211 - 0232 
   IF(B13.LE.250D)EXIT TO 98F  *0233 - 0250 
   IF(B13.LE.266D)EXIT TO 98G  *0251 - 0266 
   EXIT TO 98H                *0267 - 0275
* 
40 B5 = 606 
   IF(B13.EQ.101D) GOTO 50   *IF ERROR CODE 0101
   B5 = 610 
   IF(B13.EQ.102D) GOTO 50   *IF ERROR CODE 0102
   B5 = 412 
   IF(B13.EQ.105D) GOTO 50   *IF ERROR CODE 0105
   B5 = 120 
   IF(B13.EQ.111D) GOTO 50   *IF ERROR CODE 0111
   B5 = 121 
   IF(B13.EQ.112D) GOTO 50   *IF ERROR CODE 0112
   B5 = 122 
   IF(B13.EQ.113D) GOTO 50   *IF ERROR CODE 0113
   B5 = 123 
   IF(B13.EQ.114D) GOTO 50   *IF ERROR CODE 0114
   B5 = 124 
   IF(B13.EQ.115D) GOTO 50   *IF ERROR CODE 0115
   B5 = 125 
   IF(B13.EQ.116D) GOTO 50   *IF ERROR CODE 0116
   MSG 27 (B13) TO LINE B6   *UNKNOWN ERROR CODE
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   EXIT TO 98I               *GO PROCESS STATUS 
* 
50 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *LINES IN ERROR MESSAGE
   B0 = 452                  *ERRORS POINTER
52 IF(B4.EQ.7) GOTO 54       *IF FORMAT MESSAGE 7 
   IF(B4.NE.11) GOTO 60      *IF NOT FORMAT MESSAGE 11
54 IF(B0.GT.377) GOTO 74            *IF ALL DATA CHECKED
   OB(400) = OB(B0).XOR.IB(B0)      *COMPARE DATA 
   IF(OB(400).NE.0) GOTO 56         *IF DATA ERROR
   B0 = B0.+.1                      *NEXT DATA WORD 
   GOTO 54                          *LOOP 
* 
56 MSG B4 (B0,OB(B0),IB(B0),OB(400)) TO LINE B6 
   B0 = B0.+.1                      *NEXT DATA WORD 
   GOTO 72                   *GO TO PROCESS NEXT LINE 
* 
60 IF(B4.EQ.21) GOTO 62      *IF FORMAT MESSAGE 21
   IF(B4.EQ.22) GOTO 62      *IF FORMAT MESSAGE 22
   IF(B4.NE.23) GOTO 64      *IF NOT FORMAT MESSAGE 23
62 MSG B4 (IB(447)) TO LINE B6
   GOTO 70                   *GO TO PROCESS NEXT LINE 
* 
64 IF(B4.NE.24) GOTO 66      *IF FORMAT MESSAGE 24
   MSG B4 (IB(447),SB(2),IB(451)) TO LINE B6
   GOTO 70                   *GO TO PROCESS NEXT LINE 
* 
66 MSG B4 TO LINE B6
70 B4 = B4.+.1               *BUMP FORMAT NUMBER
72 B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   GOTO 52 WHILE(B5-1.NE.0)  *DO ALL LINES
74 EXIT TO 98I               *GO PROCESS STATUS 
   END 30 
COMPILE   - IST98C -   ERROR MESSAGE PROCESSING 
   MODULE IST98D,67X(57)LOCK   - ERROR MESSAGE PROCESSING - 
0  FORMAT EC 0122 - NO FM/TM STATUS IN GENERAL STATUS, AT 
1  FORMAT END OF OPERATION, AFTER A WRITE FM/TM.
2  FORMAT EC 0123 - NO END-OF-FILE STATUS AFTER AN ENDFILE. 
6  FORMAT EC 0132 - ABNORMAL STATUS.
7  FORMAT EC 0137 - STILL AT BOT AFTER AN ERASE.
10 FORMAT EC *DEC - STATUS ERR-LAST DIGIT=DATA BIT. 
12 FORMAT EC 0200 - AN UNEXPECTED BIT APPEARED IN GENERAL 
13 FORMAT STATUS DURING A WRITE OPERATION.
14 FORMAT NOTE THAT GENERAL STATUS WAS MASKED WITH 5034B. 
15 FORMAT EC 0201 - ALERT AFTER A WRITE OPERATION.
16 FORMAT EC 0202 - STATUS ERROR OCCURRED ON A REVERSE READ.
17 FORMAT THE INPUT BUFFER CONTAINS THE DATA JUST READ. 
20 FORMAT EC 0203 - ALERT BIT IN GENERAL STATUS WAS SET 
21 FORMAT DURING A READ FORWARD OPERATION.
22 FORMAT THE INPUT BUFFER CONTAINS THE DATA JUST READ. 
24 FORMAT EC 0207 - A FM/TM WAS DETECTED OUT OF EXPECTED
25 FORMAT POSTION ON A READ OPERATION. FOR THIS ERROR TO
26 FORMAT BE REPORTED, P4 = 4XXX MUST BE SET. 
27 FORMAT EC *DEC - UNKNOWN ERROR CODE. 
* 
30 B5 = 200 
   IF(B13.EQ.122D) GOTO 60   *IF ERROR CODE 0122
   B5 = 102 
   IF(B13.EQ.123D) GOTO 60   *IF ERROR CODE 0123
   B5 = 106 
   IF(B13.EQ.132D) GOTO 60   *IF ERROR CODE 0132
   B5 = 107 
   IF(B13.EQ.137D) GOTO 60   *IF ERROR CODE 0137
   B5 = 110 
   IF(B13.EQ.140D) GOTO 60   *IF ERROR CODE 0140
   IF(B13.EQ.141D) GOTO 60   *IF ERROR CODE 0141
   IF(B13.EQ.142D) GOTO 60   *IF ERROR CODE 0142
   IF(B13.EQ.143D) GOTO 60   *IF ERROR CODE 0143
   IF(B13.EQ.144D) GOTO 60   *IF ERROR CODE 0144
   IF(B13.EQ.145D) GOTO 60   *IF ERROR CODE 0145
   IF(B13.EQ.146D) GOTO 60   *IF ERROR CODE 0146
   IF(B13.EQ.147D) GOTO 60   *IF ERROR CODE 0147
   B5 = 312 
   IF(B13.EQ.200D) GOTO 60   *IF ERROR CODE 0200
   B5 = 115 
   IF(B13.EQ.201D) GOTO 60   *IF ERROR CODE 0201
   B5 = 216 
   IF(B13.EQ.202D) GOTO 60   *IF ERROR CODE 0202
   B5 = 320 
   IF(B13.EQ.203D) GOTO 60   *IF ERROR CODE 0203
   B5 = 324 
   IF(B13.EQ.207D) GOTO 60   *IF ERROR CODE 0207
   MSG 27 (B13) TO LINE B6   *UNKNOWN ERROR CODE
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   EXIT TO 98I               *GO PROCESS STATUS 
* 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *LINES IN ERROR MESSAGE
62 IF(B4.NE.10) GOTO 64      *IF NOT ERRORS 140-147 
   MSG B4 (B13) TO LINE B6
   GOTO 66                   *GO TO UPDATE COUNTS 
64 MSG B4 TO LINE B6
66 B4 = B4.+.1               *BUMP FORMAT NUMBER
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   GOTO 62 WHILE(B5-1.NE.0)  *DO ALL LINES
   EXIT TO 98I               *GO PROCESS STATUS 
   END 30 
COMPILE   - IST98D -   ERROR MESSAGE PROCESSING 
   MODULE IST98E,67X(57)LOCK   - ERROR MESSAGE PROCESSING - 
0  FORMAT EC 0211 - INCORRECT FILE DETECTED DURING A RANDOM 
1  FORMAT READ (SEE NOTE IN -IST98A- DOCUMENTATION).
2  FORMAT EC 0212 - INCORRECT RECORD HAS BEEN DETECTED
3  FORMAT DURING A RANDOM READ (SEE NOTE IN -IST98A-).
4  FORMAT EC 0213 - INCORRECT RECORD LENGTH BEEN DETECTED 
5  FORMAT DURING A RANDOM READ (SEE NOTE IN -IST98A-).
6  FORMAT EC 0215 - THE WRITE AND READ POLYNOMIALS FAILED 
7  FORMAT TO COMPARE DURING THE -CANNED POLYNOMIAL- TEST. 
10 FORMAT B3= EXPECTED, SB(2)= ACTUAL, B4= DATA STARTER.
16 FORMAT EC 0226 - ERROR HAS OCCURRED DURING A READ FORWARD
17 FORMAT OPERATION IN THE -TAPE PATH DAMAGE- TEST. 
20 FORMAT EC 0227 - ERROR HAS OCCURRED DURING A READ REVERSE
21 FORMAT OPERATION IN THE -TAPE PATH DAMAGE- TEST. 
25 FORMAT EC 0232 - THE RECORD COUNT ERROR DURING A -READ 
26 FORMAT FWD- IN THE POLYNOMIAL TEST (SEE NOTE IN -IST98A-)
27 FORMAT EC *DEC - UNKNOWN ERROR CODE. 
* 
30 B5 = 200 
   IF(B13.EQ.211D) GOTO 60   *IF ERROR CODE 0211
   B5 = 202 
   IF(B13.EQ.212D) GOTO 60   *IF ERROR CODE 0212
   B5 = 204 
   IF(B13.EQ.213D) GOTO 60   *IF ERROR CODE 0213
   B5 = 306 
   IF(B13.EQ.215D) GOTO 60   *IF ERROR CODE 0215
   B5 = 216 
   IF(B13.EQ.226D) GOTO 60   *IF ERROR CODE 0226
   B5 = 220 
   IF(B13.EQ.227D) GOTO 60   *IF ERROR CODE 0227
   B5 = 225 
   IF(B13.EQ.232D) GOTO 60   *IF ERROR CODE 0232
   MSG 27 (B13) TO LINE B6   *UNKNOWN ERROR CODE
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   EXIT TO 98I               *GO PROCESS STATUS 
* 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *LINES IN ERROR MESSAGE
62 MSG B4 TO LINE B6
   B4 = B4.+.1               *BUMP FORMAT NUMBER
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   GOTO 62 WHILE(B5-1.NE.0)  *DO ALL LINES
   EXIT TO 98I               *GO PROCESS STATUS 
   END 30 
COMPILE   - IST98E -   ERROR MESSAGE PROCESSING 
   MODULE IST98F,67X(57)LOCK   - ERROR MESSAGE PROCESSING - 
0  FORMAT EC 0233 - THE RECORD LENGTH IS IN ERROR DURING A
1  FORMAT -READ FORWARD- IN THE POLYNOMIAL TEST.
2  FORMAT EC 0234 - THE WRITE POLYNOMIAL AND READ POLYNOMIAL
3  FORMAT FAILED TO COMPARE DURING THE -POLYNOMIAL- TEST. 
4  FORMAT B4= WRITE POLYNOMIAL, SB(2)= READ POLYNOMIAL. 
10 FORMAT EC 0241 - AN ABNORMAL STATUS WAS DETECTED DURING A
11 FORMAT -BACKSPACE- IN THE -POSITION- TEST. 
12 FORMAT EC 0242 - AN ABNORMAL STATUS WAS DETECTED DURING A
13 FORMAT -READ FORWARD- IN THE -POSITION- TEST.
14 FORMAT EC 0243 - A COMPARE ERROR HAS OCCURRED WHEN THE 
15 FORMAT WRITE AND READ POLYNOMIALS WERE COMPARED FOR
16 FORMAT RECORDS 1, 2, OR 3 IN THE -POSITION- TEST.
17 FORMAT EC 0244 - AN ABNORMAL STATUS DETECTED DURING THE
20 FORMAT -FORESPACE- OVER RECORD 6 IN THE -POSITION- TEST. 
21 FORMAT EC 0245 - THE READ POLYNOMIAL AND WRITE POLYNOMIAL
22 FORMAT FOR RECORD 6 HAVE FAILED TO COMPARE IN THE
23 FORMAT -POSITION- TEST. B6=EXPECTED, SB(2)=ACTUAL. 
24 FORMAT EC 0246 - AN ALERT STATUS OCCURRED AFTER AN ERASE.
27 FORMAT EC *DEC - UNKNOWN ERROR CODE. 
* 
30 B5 = 200 
   IF(B13.EQ.233D) GOTO 60   *IF ERROR CODE 0233
   B5 = 302 
   IF(B13.EQ.234D) GOTO 60   *IF ERROR CODE 0234
   B5 = 210 
   IF(B13.EQ.241D) GOTO 60   *IF ERROR CODE 0241
   B5 = 212 
   IF(B13.EQ.242D) GOTO 60   *IF ERROR CODE 0242
   B5 = 214 
   IF(B13.EQ.243D) GOTO 60   *IF ERROR CODE 0243
   B5 = 217 
   IF(B13.EQ.244D) GOTO 60   *IF ERROR CODE 0244
   B5 = 321 
   IF(B13.EQ.245D) GOTO 60   *IF ERROR CODE 0245
   B5 = 124 
   IF(B13.EQ.246D) GOTO 60   *IF ERROR CODE 0246
   MSG 27 (B13) TO LINE B6   *UNKNOWN ERROR CODE
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   EXIT TO 98I               *GO PROCESS STATUS 
* 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *LINES IN ERROR MESSAGE
62 MSG B4 TO LINE B6
   B4 = B4.+.1               *BUMP FORMAT NUMBER
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   GOTO 62 WHILE(B5-1.NE.0)  *DO ALL LINES
   EXIT TO 98I               *GO PROCESS STATUS 
   END 30 
COMPILE   - IST98F -   ERROR MESSAGE PROCESSING 
   MODULE IST98G,67X(57)LOCK   - ERROR MESSAGE PROCESSING - 
0  FORMAT EC 0251 - FILE MARK STATUS IS MISSING AT END-OF-OP
1  FORMAT DURING A READ FILE MARK REVERSE.
2  FORMAT EC 0252 - FILE MARK STATUS IS MISSING AT END-OF-OP
3  FORMAT DURING A READ FILE MARK FORWARD.
4  FORMAT EC 0253 - A STATUS ERROR OCCURRED ON A BACKSPACE. 
5  FORMAT EC 0254 - THE ALERT BIT WAS SET IN GENERAL STATUS 
6  FORMAT FOLLOWING THE FIRST READ REVERSE AFTER A
7  FORMAT BACKSPACE.
10 FORMAT EC 0255 - AN INCORRECT RECORD LENGTH WAS DETECTED 
11 FORMAT ON A REVERSE READ FOLLOWING A BACKSPACE OPERATION.
12 FORMAT EC 0256 - AN INCORRECT RECORD WAS DETECTED ON A 
13 FORMAT READ REVERSE FOLLOWING A BACKSPACE (INPUT BUFFER
14 FORMAT WILL CONTAIN THE ACTUAL RECORD DETECTED). 
15 FORMAT EC 0257 - DATA COMPARE ERROR ON WARMSTART READ. 
16 FORMAT EC 0260 - NO FILE MARK STATUS AFTER SEARCH FM FWD.
17 FORMAT EC 0261 - NO FILE MARK STATUS AFTER SEARCH FM REV.
20 FORMAT EC 0262 - FILE MARK STATUS AT LOAD POINT. 
21 FORMAT EC 0263 - NO END OF OPERATION.
22 FORMAT EC 0264 - NOISE BYPASS FAILURE - NO EOF STATUS. 
23 FORMAT EC 0265 - ALERT AFTER WARMSTART READ INPUT. 
24 FORMAT EC 0266 - WARMSTART LENGTH ERR- EXP=400 ACT=*OCT. 
27 FORMAT EC *DEC - UNKNOWN ERROR CODE. 
* 
30 B5 = 200 
   IF(B13.EQ.251D) GOTO 60   *IF ERROR CODE 0251
   B5 = 202 
   IF(B13.EQ.252D) GOTO 60   *IF ERROR CODE 0252
   B5 = 104 
   IF(B13.EQ.253D) GOTO 60   *IF ERROR CODE 0253
   B5 = 305 
   IF(B13.EQ.254D) GOTO 60   *IF ERROR CODE 0254
   B5 = 210 
   IF(B13.EQ.255D) GOTO 60   *IF ERROR CODE 0255
   B5 = 312 
   IF(B13.EQ.256D) GOTO 60   *IF ERROR CODE 0256
   B5 = 115 
   IF(B13.EQ.257D) GOTO 60   *IF ERROR CODE 0257
   B5 = 116 
   IF(B13.EQ.260D) GOTO 60   *IF ERROR CODE 0260
   B5 = 117 
   IF(B13.EQ.261D) GOTO 60   *IF ERROR CODE 0261
   B5 = 120 
   IF(B13.EQ.262D) GOTO 60   *IF ERROR CODE 0262
   B5 = 121 
   IF(B13.EQ.263D) GOTO 60   *IF ERROR CODE 0263
   B5 = 122 
   IF(B13.EQ.264D) GOTO 60   *IF ERROR CODE 0264
   B5 = 123 
   IF(B13.EQ.265D) GOTO 60   *IF ERROR CODE 0265
   B5 = 124 
   IF(B13.EQ.266D) GOTO 60   *IF ERROR CODE 0266
   MSG 27 (B13) TO LINE B6   *UNKNOWN ERROR CODE
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   EXIT TO 98I               *GO PROCESS STATUS 
* 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *LINES IN ERROR MESSAGE
62 IF(B4.NE.24) GOTO 64      *IF NOT ERROR CODE 0266
   MSG B4 (WT) TO LINE B6 
   GOTO 66                   *GO TO BUMP COUNTS 
* 
64 MSG B4 TO LINE B6
66 B4 = B4.+.1               *BUMP FORMAT NUMBER
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   GOTO 62 WHILE(B5-1.NE.0)  *DO ALL LINES
   EXIT TO 98I               *GO PROCESS STATUS 
   END 30 
COMPILE   - IST98G -   ERROR MESSAGE PROCESSING 
   MODULE IST98H,67X(57)LOCK   - ERROR MESSAGE PROCESSING - 
0  FORMAT EC 0267 - THE NUMBER OF RECORDS WRITTEN AND THE 
1  FORMAT NUMBER OF RECORDS READ IN REVERSE DO NOT COMPARE. 
2  FORMAT THE CONTENTS OF B0 AND B1 SHOULD BE ZERO (0) BUT
3  FORMAT ARE NOT. THE PLUS OR MINUS VALUE OF THE COUNTS
4  FORMAT RECORDED IN B0 AND B1 AT LOAD POINT, (AFTER THE 
5  FORMAT READ REVERSE), ARE EQUAL TO THE NUMBER OF RECORDS 
6  FORMAT MISSED OR PICKED UP.
14 FORMAT EC 0274 - ALERT WAS SET FOLLOWING A READ FORWARD
15 FORMAT AT THE READ CLIP LEVEL SELECTED IN REGISTER B2. 
16 FORMAT EC 0275 - ALERT WAS SET FOLLOWING A READ REVERSE
17 FORMAT AT THE READ CLIP LEVEL SELECTED IN REGISTER B2. 
27 FORMAT EC *DEC - UNKNOWN ERROR CODE. 
* 
30 B5 = 700 
   IF(B13.EQ.267D) GOTO 60   *IF ERROR CODE 0267
   B5 = 214 
   IF(B13.EQ.274D) GOTO 60   *IF ERROR CODE 0274
   B5 = 216 
   IF(B13.EQ.275D) GOTO 60   *IF ERROR CODE 0275
   MSG 27 (B13) TO LINE B6   *UNKNOWN ERROR CODE
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   EXIT TO 98I               *GO PROCESS STATUS 
* 
60 B4 = B5.AND.77            *FORMAT NUMBER 
   B5 = B5.RS.6              *LINES IN ERROR MESSAGE
62 MSG B4 TO LINE B6
   B4 = B4.+.1               *BUMP FORMAT NUMBER
   B6 = B6.+.1               *BUMP DISPLAY LINE NUMBER
   GOTO 62 WHILE(B5-1.NE.0)  *DO ALL LINES
   EXIT TO 98I               *GO PROCESS STATUS 
   END 30 
COMPILE   - IST98H -   ERROR MESSAGE PROCESSING 
   MODULE IST98I,67X(57)LOCK   - STATUS ERROR DISPLAY - 
   BASE DECIMAL 
0  FORMAT              DATA ERROR(S)
1  FORMAT   ERR.. WD=*OCTB  AC=*OCTB  EX=*OCTB  DIFF=*OCTB
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   OB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
5  FORMAT   IB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
6  FORMAT   B0-B7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
7  FORMAT   P0-P7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
8  FORMAT   P8-P9   =*OCT *OCT
9  FORMAT   SENSE BYTE STATUS (HEX) 
10 FORMAT   00-07 = *H  *H  *H  *H  *H  *H  *H  *H
11 FORMAT   EXTENDED SENSE BYTE STATUS (HEX)
12 FORMAT   *D-*D = *H  *H  *H  *H  *H  *H
13 FORMAT   *D-*D = *H  *H      *H  *H  *H
14 FORMAT   B8-B15  =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
* 
24 IF(B13.NE.105D) GOTO 30   *IF NOT DATA COMPARE ERROR 
   MSG 0 TO LINE B6 
   B6 = B6.+.1
   B5 = 0                    *INDEX TO BUFFERS
   B3 = B6.+.4               *TERMINATING MESSAGE LINE
26 B4 = IB(B5).XOR.OB(B5) 
   IF(B4.EQ.0) GOTO 28       *IF WORDS COMPARE
   MSG 1 (B5,IB(B5),OB(B5),B4) TO LINE B6 
   B6 = B6.+.1
28 B5 = B5.+.1               *BUMP BUFFER INDEX 
   IF(WT-1.EQ.B5) GOTO 30    *IF ALL WORDS DONE 
   IF(B6.NE.B3) GOTO 26      *IF 4 ERRORS NOT REPORTED
* 
30 IF(ES.AND.TM.EQ.0)B6=B6.+.1        *IF KL DISPLAY
   MSG 2, 8 WORDS FROM SB(1) TO LINE B6 
   MSG 3, 8 WORDS FROM SB(9) TO LINE B6+1 
   MSG 4, 8 WORDS FROM OB TO LINE B6+2
   MSG 5, 8 WORDS FROM IB TO LINE B6+3
   MSG 6, 8 WORDS FROM IB(442B) TO LINE B6+4
   MSG 14, 8 WORDS FROM B8 TO LINE B6+5 
   MSG 7, 8 WORDS FROM P0 TO LINE B6+6
   MSG 8, 2 WORDS FROM P8 TO LINE B6+7
   B6 = B6.+.10              *UPDATE DISPLAY LINE NUMBER
* 
   IF(ES.AND.TM.EQ.0)B6=B6+1  *IF KL DISPLAY
   MSG 9 TO LINE B6          *DISPLAY SENSE STATUS
   B14 = 454B                *SENSE BYTE STATUS 
   B0 = IB(B14).RS.4         *BYTE 0
   B1 = IB(B14).AND.17B.LS.4  *BYTE 1 
   B1 = IB(B14+1).RS.8.OR.B1
   B8 = IB(B14+1)             *BYTE 2 
   B9 = IB(B14+2).RS.4         *BYTE 3
   B10 = IB(B14+2).AND.17B.LS.4  *BYTE 4
   B10 = IB(B14+3).RS.8.OR.B10
   B11 = IB(B14+3)               *BYTE 5
   B12 = IB(B14+4).RS.4          *BYTE 6
   B13 = IB(B14+4).AND.17B.LS.4  *BYTE 7
   B13 = IB(B14+5).RS.8.OR.B13
   MSG 10 (B0,B1,B8,B9,B10,B11,B12,B13) TO LINE B6+1
   B6 = B6.+.2               *UPDATE DISPLAY LINE NUMBER
   B14 = B14.+.5             *UPDATE STATUS ADDRESS 
* 
   IF(ES.AND.TM.EQ.0)B6=B6+1  *IF KL DISPLAY
   MSG 11 TO LINE B6         *DISPLAY EXTENDED SENSE STATUS 
   B0 = 3                    *LOWER INIT. BYTE NUMBER 
   B1 = B0.+.5               *UPPER INIT. BYTE NUMBER 
   B8 = IB(B14)              *BYTE 3
   B9 = IB(B14+1).RS.4        *BYTE 4 
   B10 = IB(B14+1).AND.17B.LS.4  *BYTE 5
   B10 = IB(B14+2).RS.8.OR.B10
   B11 = IB(B14+2)               *BYTE 6
   B12 = IB(B14+3).RS.4          *BYTE 7
   B13 = IB(B14+3).AND.17B.LS.4  *BYTE 8
   B13 = IB(B14+4).RS.8.OR.B13
   MSG 12 (B0,B1,B8,B9,B10,B11,B12,B13) TO LINE B6+1
   B0 = B0.+.6               *UPDATE BYTE NUMBER
   B1 = B1.+.6
* 
   B8 = IB(B14+4)             *BYTE 9 
   B9 = IB(B14+5).RS.4         *BYTE 10 
   B10 = IB(B14+5).AND.17B.LS.4  *BYTE 12 
   B10 = IB(B14+6).RS.8.OR.B10
   B11 = IB(B14+6)               *BYTE 13 
   B12 = IB(B14+7).RS.4          *BYTE 14 
   MSG 13 (B0,B1,B8,B9,B10,B11,B12) TO LINE B6+2
   B0 = B0.+.6               *UPDATE BYTE NUMBER
   B1 = B1.+.6
* 
   B8 = IB(B14+7).AND.17B.LS.4  *BYTE 15
   B8 = IB(B14+8).RS.8.OR.B8
   B9 = IB(B14+8)               *BYTE 16
   B10 = IB(B14+9).RS.4         *BYTE 18
   B11 = IB(B14+9).AND.17B.LS.4  *BYTE 19 
   B11 = IB(B14+10).RS.8.OR.B11 
   B12 = IB(B14+10)              *BYTE 20 
   MSG 13 (B0,B1,B8,B9,B10,B11,B12) TO LINE B6+3
   B0 = B0.+.6               *UPDATE BYTE NUMBER
   B1 = B1.+.6
* 
   B8 = IB(B14+11).RS.4          *BYTE 21 
   B9 = IB(B14+11).AND.17B.LS.4  *BYTE 22 
   B9 = IB(B14+12).RS.8.OR.B9 
   B10 = IB(B14+12)              *BYTE 23 
   B11 = IB(B14+13).RS.4         *BYTE 24 
   B12 = IB(B14+13).AND.17B.LS.4  *BYTE 25
   B12 = IB(B14+14).RS.8.OR.B12 
   B13 = IB(B14+14)               *BYTE 26
   MSG 12 (B0,B1,B8,B9,B10,B11,B12,B13) TO LINE B6+4
   B6 = B6.+.5               *UPDATE DISPLAY LINE NUMBER
   EXIT TO 98J               *ENTER STATUS ANALYSIS 
   END 24 
COMPILE   - IST98I -   STATUS ERROR DISPLAY 
   MODULE IST98J,67X(57)LOCK   - DETAILED STATUS ANALYSIS - 
0  FORMAT EC 0400 - TCU DETECTED I/O CHANNEL PARITY ERROR.
1  FORMAT EC 0401 - ADAPTOR PARITY ERROR. 
2  FORMAT EC 0300 - TAPE UNIT NOT CONNECTED - SHOULD BE.
3  FORMAT EC 0362 - TAPE UNIT NOT READY FOR LOOPBACK. 
4  FORMAT EC 0303 - TAPE UNIT RESET KEY DEPRESSED.
6  FORMAT EC 0311 - TAPE UNIT AT END OF TAPE MARKER.
7  FORMAT EC 0312 - TAPE UNIT NOT ON LINE.
13 FORMAT EC 0323 - TAPE UNIT NOT AT BOT AFTER A REWIND.
16 FORMAT EC 0328 - TAPE UNIT NOT READY, NO ERROR STATUS. 
20 FORMAT EC 0331 - TAPE SPEED STATUS ERR-EXP=*OCT ACT=*OCT.
23 FORMAT EC *DEC - TAPE UNIT VELOCITY ERROR. 
26 FORMAT EC 0361 - TAPE UNIT AGC FAULT SINCE LAST REWIND.
27 FORMAT --------------------------------------------------
* 
   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
* 
30 IF(SB(1).EQ.7777)GOTO 60  *IF NO GENERAL/DETAILED STATUS 
   BA = 0 
   IF(SB(3).AND.BIT8.NE.0) GOTO 46  *CH PARITY
   BA = 1 
   IF(SB(3).AND.BIT7.NE.0) GOTO 46  *ADAPTOR PE 
   IF(B7.AND.30B.EQ.10B) EXIT TO 98K           *TCU LOOPBACK
   BA = 2 
   IF(SB(1).AND.BIT9.NE.0) GOTO 46  *NO CONNECT 
   IF(B7.AND.32B.EQ.0) GOTO 32             *NO UNIT LOOPBACK
   BA = 3 
   IF(SB(1).AND.BIT0.EQ.0) GOTO 46  *NOT READY
   EXIT TO 98K                      *IF TCU OR UNIT LOOPBACK
32 BA = 4 
   IF(SB(14).AND.BIT4.NE.0) GOTO 46  *RESET KEY 
   BA = 6 
   IF(SB(20).AND.BIT3.NE.0) GOTO 46  *TAPE
   BA = 7 
   IF(SB(20).AND.BIT1.NE.0) GOTO 46  *ON LINE 
   IF(SB(1).AND.BIT2.NE.0) GOTO 34               *IF BOT
   BA = 13
   IF(B7.AND.3.EQ.3) GOTO 46  *REWIND-NO BOT
34 BA = 16
   IF(SB(1).AND.BIT0.EQ.0) GOTO 46  *NOT READY
   BA = 23
   IF(SB(5).AND.BIT4.NE.0) GOTO 44  *VELOCITY 
   IF(B7.AND.BIT8.NE.0) GOTO 36      *IGNORE DATA INTEGRITY 
   IF(SB(17).AND.BIT7.EQ.0) GOTO 36  *NO AGC FAULT
   MSG 26 TO LINE B6               *POST AGC WARNING MESSAGE
   B6 = B6.+.1                     *BUMP LINE NUMBER
36 IF(B7.AND.7000B.NE.0) GOTO 40     *MODE IN B7
   BA = P1.AND.7             *DENSITY FROM USER 
   BA = BA.LS.9 
   B7 = B7.OR.BA
40 IF(P0.EQ.100B) B1 = 2     *IF 100 IPS SELECTED 
   IF(P0.EQ.75B) B1 = 3      *IF 75 IPS SELECTED
   IF(P0.EQ.125B) B1 = 4     *IF 125 IPS SELECTED 
   IF(P0.EQ.200B) B1 = 5     *IF 200 IPS SELECTED 
   IF(P0.EQ.150B) B1 = 6     *IF 150 IPS SELECTED 
   IF(P0.EQ.25B) B1 = 7      *IF 25 IPS SELECTED
   IF(SB(13).AND.7.EQ.B1) GOTO 42      *IF STATUS AGREES
   B2 = SB(13).AND.7
   MSG 20 (B1,B2) TO LINE B6           *REPORT ERROR
   GOTO 50                             *CONTINUE ANALYSIS 
42 IF(B7.AND.BIT8.NE.0) GOTO 52     *IGNORE DATA INTEGRITY
   EXIT TO 98K               *TEST DATA INTEGRITY 
* 
* -------POST PROBLEM DETECTION CODE AND MESSAGE.------------ 
* 
44 BA = B7.AND.3.+.137D      *FORM ERROR CODE 
   MSG 23 (BA) TO LINE B6 
   GOTO 50                   *CONTINUE ANALYSIS 
46 MSG BA TO LINE B6
50 B6 = B6.+.1               *BUMP LINE NUMBER
52 EXIT TO 98L               *ENTER DS ERROR PROCESSOR
60 PICTURE
   HALT 
   MSG 27 TO PRINT
   BLANK
   BA = IB(441B)             *RESTORE REGISTERS 
   B0 = IB(442B)
   B1 = IB(443B)
   B2 = IB(444B)
   B3 = IB(445B)
   B4 = IB(446B)
   B5 = IB(447B)
   B6 = IB(450B)
   B7 = IB(451B)
   B13 = IB(452B) 
   B15 = IB(453B) 
* 
* ---------ATTEMPT TO INSURE CONTROLLER IS RUNNING.---------- 
* 
   RES P1, ABT 62 
   SELECT CLEAR, ABT 62 
   REL, ABT 62
   EXIT                      *ALL IS WELL 
62 RESET, ABT 64             *RESTART CONTROLLER ON ABORT 
   GOTO 66
64 RESET, ABT 66             *TRY TO START IT TWICE 
66 REL, ABT 70
70 EXIT 
   END 30 
COMPILE   - IST98J -   DETAILED STATUS ANALYSIS 
   MODULE IST98K,67X(57)LOCK   - DETAILED STATUS ANALYSIS - 
   BASE DECIMAL 
   EQUATE BIT0 TO 1, BIT1 TO 2, BIT2 TO 4, BIT3 TO 10B
   EQUATE BIT4 TO 20B, BIT5 TO 40B, BIT6 TO 100B
   EQUATE BIT7 TO 200B, BIT8 TO 400B, BIT9 TO 1000B 
   EQUATE BIT10 TO 2000B, BIT11 TO 4000B
0  FORMAT EC 0700 - SINGLE TRACK CORRECTION.
1  FORMAT EC 0701 - DUAL TRACK CORRECTION.
4  FORMAT EC 0503 - TAPE PARITY - EXCESSIVE SKEW. 
6  FORMAT EC 0509 - TAPE PARITY - CRC DETECTED ERROR. 
7  FORMAT EC 0510 - TAPE PARITY - AUX CRC DETECTED ERROR. 
10 FORMAT EC 0512 - UNEXPLAINED TCU OR TAPE PARITY ERROR. 
14 FORMAT EC 0500 - TAPE PARITY - ERASE ERROR.
18 FORMAT EC 0601 - READ ROM/RAM FLAG BIT DETECTED. 
20 FORMAT EC 0603 - NOISE BYPASSED. 
* 
24 IF(SB(9).AND.BIT5.NE.0) GOTO 42   *TCU ERASE ERROR 
   IF(SB(6).AND.BIT1.NE.0) GOTO 42   *BAD RESYNC
   BA = 0 
   IF(SB(4).AND.BIT9.NE.0) GOTO 44   *SINGLE TRK CORRECTION 
   BA = 1 
   IF(SB(4).AND.BIT10.NE.0) GOTO 44  *DUAL TRK CORRECTION 
   BA = 4 
   IF(SB(5).AND.BIT0.NE.0) GOTO 44   *EXCESSIVE SKEW
   BA = 6 
   IF(SB(5).AND.BIT9.NE.0) GOTO 44   *CRC DETECTED ERROR
   BA = 7 
   IF(SB(5).AND.BIT8.NE.0) GOTO 44   *AUX CRC DETECTED ERROR
   BA = 10
   IF(SB(3).AND.BIT7.NE.0) GOTO 44   *TCU PARITY
   IF(SB(3).AND.BIT9.NE.0) GOTO 44   *NO TAPE PARITY
* 
42 BA = 14
   IF(SB(9).AND.BIT5.NE.0) GOTO 44   *ERASE ERROR 
   BA = 18
   IF(SB(5).AND.BIT2.NE.0) GOTO 44   *FLAG BIT DETECTED 
   BA = 20
   IF(SB(9).AND.BIT10.EQ.0) GOTO 46  *NOISE BYPASSED
* 
44 MSG BA TO LINE B6         *POST ERROR MESSAGE
   B6 = B6 + 1               *BUMP LINE NUMBER
46 EXIT TO 98L               *ENTER DS ERROR PROCESSOR
   END 24 
COMPILE   - IST98K -   DETAILED STATUS ANALYSIS 
   MODULE IST98L,67X(57)LOCK   - DETAILED STATUS ANALYSIS - 
0  FORMAT DS ERROR 2001 TAPE UNIT OFF-LINE, NOT POWERED ON
1  FORMAT DS ERROR 2004 TAPE UNIT NOT READY 
2  FORMAT DS ERROR 2005 UNIT CHECK OR INTERRUPT 
3  FORMAT DS ERROR 2006 TAPE UNIT MISSING WRITE RING
4  FORMAT DS ERROR 2007 UNIT NOT CAPABLE OF TAPES DENSITY 
5  FORMAT DS ERROR 2010 OVER 25 FEET OF BLANK TAPE
6  FORMAT DS ERROR 2010 OVER 15 FEET OF BLANK TAPE
7  FORMAT DS ERROR 2012 BAD ID BURST WRITTEN
10 FORMAT DS ERROR 2016 UNIT UNABLE TO SET GAINS ON GCR TAPE
11 FORMAT DS ERROR 2030 BACKWARD MOTION AT LOAD POINT 
12 FORMAT DS ERROR 2031 ILLEGAL TAPE UNIT REQUESTED 
13 FORMAT DS ERROR 2032 TAPE UNIT BUSY ON REWIND OR DSE 
14 FORMAT DS ERROR 2033 REVERSE READ ATTEMPTED IN GCR MODE
15 FORMAT DS ERROR 2041 TAPE UNIT FAILED TO REACH SPEED 
16 FORMAT DS ERROR 2050 ILLEGAL FUNCTION CODE 
17 FORMAT DS ERROR 2051 NO TAPE UNIT CONNECTED
20 FORMAT DS ERROR 2052 NO FUNCTION PARAMETERS SENT 
21 FORMAT DS ERROR 2055 CHANNEL P.E. ON FUNCTION/PARAMETERS 
22 FORMAT DS ERROR 2061 NO DATA IN TIME FOR OUTPUT
23 FORMAT DS ERROR 2062 PPU NOT READY FOR INPUT OF DATA 
24 FORMAT DS ERROR 2070 ADAPTOR CATASTROPHIC FAILURE
25 FORMAT DS ERROR *OCT UNRECOGNIZED DS ERROR CODE
26 FORMAT --------------------------------------------------
30 BA = SB(3).AND.377B       *DS ERROR CODE 
   IF(BA.EQ.0) GOTO 44       *IF NO ERROR 
   IF(BA.EQ.1) ERROR 0/1, GOTO 40       *EC = 2001
   IF(BA.EQ.4) ERROR 1/4, GOTO 40       *EC = 2004
   IF(BA.EQ.5) ERROR 2/5, GOTO 40       *EC = 2005
   IF(BA.EQ.6) ERROR 3/6, GOTO 40       *EC = 2006
   IF(BA.EQ.7) ERROR 4/7, GOTO 40       *EC = 2007
   IF(BA.NE.10) GOTO 32                 *NOT EC 2010
   IF(SB(20).AND.40.EQ.0) ERROR 5/10, GOTO 40  *EC = 2010 
   ERROR 6/10, GOTO 40                  *EC = 2010
32 IF(BA.EQ.12) ERROR 7/12, GOTO 40     *EC = 2012
   IF(BA.EQ.16) ERROR 10/16, GOTO 40    *EC = 2016
   IF(BA.EQ.30) ERROR 11/30, GOTO 40    *EC = 2030
   IF(BA.EQ.31) ERROR 12/31, GOTO 40    *EC = 2031
   IF(BA.EQ.32) ERROR 13/32, GOTO 40    *EC = 2032
   IF(BA.EQ.33) ERROR 14/33, GOTO 40    *EC = 2033
   IF(BA.EQ.41) ERROR 15/41, GOTO 40    *EC = 2041
   IF(BA.EQ.50) ERROR 16/50, GOTO 40    *EC = 2050
   IF(BA.EQ.51) ERROR 17/51, GOTO 40    *EC = 2051
   IF(BA.EQ.52) ERROR 20/52, GOTO 40    *EC = 2052
   IF(BA.EQ.55) ERROR 21/55, GOTO 40    *EC = 2055
   IF(BA.EQ.61) ERROR 22/61, GOTO 40    *EC = 2061
   IF(BA.EQ.62) ERROR 23/62, GOTO 40    *EC = 2062
   IF(BA.EQ.70) ERROR 27/70, GOTO 40    *EC = 2070
   BA = BA+2000              *ILLEGAL ERROR CODE
   MSG 25(BA) TO LINE B6
   GOTO 42
* 
40 MSG EM TO LINE B6
42 B6 = B6.+.1
44 BA = SB(12).AND.177B       *ADAPTOR ERROR CODE 
   IF(BA.EQ.0) GOTO 46        *IF NO ERROR CODE 
   IF(BA.LT.200) EXIT TO 98M  *ERROR CODES 0-177
   IF(BA.LT.226) EXIT TO 98N  *ERROR CODES 200-225
   IF(BA.LT.300) EXIT TO 98O  *ERROR CODES 226-277
   EXIT TO 98P                *ERROR CODES 300-377
* 
46 PICTURE
   HALT 
   MSG 26 TO PRINT
   BLANK
   BA = IB(441B)             *RESTORE REGISTERS 
   B0 = IB(442B)
   B1 = IB(443B)
   B2 = IB(444B)
   B3 = IB(445B)
   B4 = IB(446B)
   B5 = IB(447B)
   B6 = IB(450B)
   B7 = IB(451B)
   B13 = IB(452B) 
   B15 = IB(453B) 
* 
* ---------ATTEMPT TO INSURE CONTROLLER IS RUNNING.---------- 
* 
   RES P1, ABT 50 
   SELECT CLEAR, ABT 50 
   REL, ABT 50
   EXIT                      *ALL IS WELL 
50 RESET, ABT 60             *RESTART CONTROLLER ON ABORT 
   GOTO 64
60 RESET, ABT 64             *TRY TO START IT TWICE 
64 REL, ABT 66
66 EXIT 
   END 30 
COMPILE   - IST98L -   DETAILED STATUS ANALYSIS 
   MODULE IST98M,67X(57)LOCK   - PROCESS ADAPTOR ERROR CODES -
0  FORMAT AD ERROR 3001 SPECIAL FUNCTION LOGIC ERROR
2  FORMAT AD ERROR 3003 DATA LOOPBACK DATA ERROR
3  FORMAT AD ERROR 3004 DATA LOOPBACK PARITY ERROR
4  FORMAT AD ERROR 3077 UNDEFINED ERROR 
10 FORMAT AD ERROR 3100 CONTROL SEQUENCE ERROR
11 FORMAT AD ERROR 3101 WRITEABLE CONTROL STORE ERROR 
12 FORMAT AD ERROR 3102 PIPELINE REGISTER PARITY ERROR
13 FORMAT AD ERROR 3103 ALU INDEX REGISTER ERROR
14 FORMAT AD ERROR 3104 FIFO LOGIC ERROR
15 FORMAT AD ERROR 3105 ALU ERROR 
16 FORMAT AD ERROR 3106 ALU STATUS REGISTER ERROR 
17 FORMAT AD ERROR 3107 ALU CONDITION CODE MUX ERROR
20 FORMAT AD ERROR 3110 FIFO TO DP PARITY ERROR 
21 FORMAT AD ERROR 3177 UNDEFINED ERROR 
26 FORMAT AD ERROR *OCT UNRECOGNIZED AD ERROR CODE
27 FORMAT --------------------------------------------------
* 
* --------PROCESS CYBER ICI ERROR CODES (001-077).----------- 
* 
30 BA = SB(12).AND.377B      *ADAPTOR ERROR CODE
   IF(BA.GT.77) GOTO 34      *DATA PATH ERROR 
   IF(BA.EQ.1) ERROR 0/1, GOTO 40       *EC = 3001
   IF(BA.EQ.3) ERROR 2/2, GOTO 40       *EC = 3003
   IF(BA.EQ.4) ERROR 3/4, GOTO 40       *EC = 3004
   IF(BA.EQ.77) ERROR 4/77, GOTO 40     *EC = 3077
   BA = BA.AND.777B+3000B    *ILLEGAL ERROR CODE
   MSG 26(BA) TO LINE B6
   GOTO 42
* 
* --------PROCESS DATA PATH ERROR CODES (100-177).----------- 
* 
34 IF(BA.EQ.100) ERROR 10/100, GOTO 40  *EC = 3100
   IF(BA.EQ.101) ERROR 11/101, GOTO 40  *EC = 3101
   IF(BA.EQ.102) ERROR 12/102, GOTO 40  *EC = 3102
   IF(BA.EQ.103) ERROR 12/103, GOTO 40  *EC = 3103
   IF(BA.EQ.104) ERROR 14/104, GOTO 40  *EC = 3104
   IF(BA.EQ.105) ERROR 15/105, GOTO 40  *EC = 3105
   IF(BA.EQ.106) ERROR 16/106, GOTO 40  *EC = 3106
   IF(BA.EQ.107) ERROR 17/107, GOTO 40  *EC = 3107
   IF(BA.EQ.110) ERROR 20/110, GOTO 40  *EC = 3110
   IF(BA.EQ.177) ERROR 21/177, GOTO 40  *EC = 3177
   BA = BA.AND.777B+3000B    *ILLEGAL ERROR CODE
   MSG 26(BA) TO LINE B6
   GOTO 42
40 MSG EM TO LINE B6
42 PICTURE
   HALT 
   MSG 27 TO PRINT
   BLANK
   BA = IB(441B)             *RESTORE REGISTERS 
   B0 = IB(442B)
   B1 = IB(443B)
   B2 = IB(444B)
   B3 = IB(445B)
   B4 = IB(446B)
   B5 = IB(447B)
   B6 = IB(450B)
   B7 = IB(451B)
   B13 = IB(452B) 
   B15 = IB(453B) 
* 
* ---------ATTEMPT TO INSURE CONTROLLER IS RUNNING.---------- 
* 
   RES P1, ABT 50 
   SELECT CLEAR, ABT 50 
   REL, ABT 50
   EXIT                      *ALL IS WELL 
50 RESET, ABT 54             *RESTART CONTROLLER ON ABORT 
   GOTO 60
54 RESET, ABT 60             *TRY TO START IT TWICE 
60 REL, ABT 64
64 EXIT 
   END 30 
COMPILE   - IST98M -   PROCESS ADAPTOR ERROR CODES
   MODULE IST98N,67X(57)LOCK   - PROCESS ADAPTOR ERROR CODES -
0  FORMAT AD ERROR 3200 INTERNAL ERROR
1  FORMAT AD ERROR 3201 INSTRUCTION TEST ERROR
3  FORMAT AD ERROR 3203 DATA PATH TEST ERROR
4  FORMAT AD ERROR 3204 BLOCK ID TEST ERROR 
6  FORMAT AD ERROR 3206 STATUS REGISTER TEST ERROR
7  FORMAT AD ERROR 3207 PARITY TEST ERROR 
10 FORMAT AD ERROR 3210 STU TEST ERROR
11 FORMAT AD ERROR 3211 ICI CHANNEL TEST ERROR
20 FORMAT AD ERROR 3220 CONTROLWARE ID ERROR
21 FORMAT AD ERROR 3221 CONTROLWARE CHECKSUM ERROR
22 FORMAT AD ERROR 3222 CONTROLWARE INITIALIZATION ERROR
23 FORMAT AD ERROR 3223 CONTROLWARE DIAGNOSTIC ERROR
24 FORMAT AD ERROR 3224 CONTROLWARE EXCEPTION ERROR 
25 FORMAT AD ERROR 3225 CONTROLWARE INTERRUPT ERROR 
26 FORMAT AD ERROR *OCT UNRECOGNIZED AD ERROR CODE
27 FORMAT --------------------------------------------------
* 
* --------PROCESS 68000 MICROPROCESSOR CODES (200-225).------ 
* 
30 BA = SB(12).AND.177B      *ADAPTOR ERROR CODE
   IF(BA.EQ.200) ERROR 0/200, GOTO 40   *EC = 3200
   IF(BA.EQ.201) ERROR 1/201, GOTO 40   *EC = 3201
   IF(BA.EQ.203) ERROR 3/203, GOTO 40   *EC = 3203
   IF(BA.EQ.204) ERROR 4/204, GOTO 40   *EC = 3204
   IF(BA.EQ.206) ERROR 6/206, GOTO 40   *EC = 3206
   IF(BA.EQ.207) ERROR 7/207, GOTO 40   *EC = 3207
   IF(BA.EQ.210) ERROR 10/210, GOTO 40  *EC = 3210
   IF(BA.EQ.211) ERROR 11/211, GOTO 40  *EC = 3211
   IF(BA.EQ.220) ERROR 20/220, GOTO 40  *EC = 3220
   IF(BA.EQ.221) ERROR 21/221, GOTO 40  *EC = 3221
   IF(BA.EQ.222) ERROR 22/222, GOTO 40  *EC = 3222
   IF(BA.EQ.223) ERROR 23/223, GOTO 40  *EC = 3223
   IF(BA.EQ.224) ERROR 24/224, GOTO 40  *EC = 3224
   IF(BA.EQ.225) ERROR 25/225, GOTO 40  *EC = 3225
   BA = BA.AND.777B+3000B    *ILLEGAL ERROR CODE
   MSG 26(BA) TO LINE B6
   GOTO 42
40 MSG EM TO LINE B6
42 PICTURE
   HALT 
   MSG 27 TO PRINT
   BLANK
   BA = IB(441B)             *RESTORE REGISTERS 
   B0 = IB(442B)
   B1 = IB(443B)
   B2 = IB(444B)
   B3 = IB(445B)
   B4 = IB(446B)
   B5 = IB(447B)
   B6 = IB(450B)
   B7 = IB(451B)
   B13 = IB(452B) 
   B15 = IB(453B) 
* 
* ---------ATTEMPT TO INSURE CONTROLLER IS RUNNING.---------- 
* 
   RES P1, ABT 50 
   SELECT CLEAR, ABT 50 
   REL, ABT 50
   EXIT                      *ALL IS WELL 
50 RESET, ABT 54             *RESTART CONTROLLER ON ABORT 
   GOTO 60
54 RESET, ABT 60             *TRY TO START IT TWICE 
60 REL, ABT 64
64 EXIT 
   END 30 
COMPILE   - IST98N -   PROCESS ADAPTOR ERROR CODES
   MODULE IST98O,67X(57)LOCK   - PROCESS ADAPTOR ERROR CODES -
0  FORMAT AD ERROR 3226 6XX FUNC CAN-T FIND THE CONTROLWARE 
1  FORMAT AD ERROR 3227 6XX FUNC UNRECOVERABLE TAPE ERROR 
2  FORMAT AD ERROR 3230 INTERRUPT CONTROLLER LOGIC ERROR
3  FORMAT AD ERROR 3231 COUNTER TIMER LOGIC ERROR 
4  FORMAT AD ERROR 3232 SECDED LOGIC ERROR
5  FORMAT AD ERROR 3233 LOWER ROM ERROR 
7  FORMAT AD ERROR 3235 LOWER RAM ERROR 
10 FORMAT AD ERROR 3236 UPPER RAM ERROR 
11 FORMAT AD ERROR 3237 PARITY ERROR REGISTER ERROR 
12 FORMAT AD ERROR 3240 DATA LOOPBACK ERROR 
13 FORMAT AD ERROR 3241 CH. INACTIVE FOR AUTOLOAD FUNCTION
14 FORMAT AD ERROR 3242 CH. P.E. ON 4XX OR 6XX FUNC OR DATA 
15 FORMAT AD ERROR 3243 6XX FUNCTION CANT CONNECT TO THE STU
16 FORMAT AD ERROR 3244 6XX FUNCTION CANT REWIND THE STU
25 FORMAT AD ERROR 3277 UNDEFINED ERROR 
26 FORMAT AD ERROR *OCT UNRECOGNIZED AD ERROR CODE
27 FORMAT --------------------------------------------------
* 
* --------PROCESS 68000 MICROPROCESSOR CODES (226-277).------ 
* 
30 BA = SB(12).AND.177B      *ADAPTOR ERROR CODE
   IF(BA.EQ.226) ERROR 0/226, GOTO 40   *EC = 3226
   IF(BA.EQ.227) ERROR 1/227, GOTO 40   *EC = 3227
   IF(BA.EQ.230) ERROR 2/230, GOTO 40   *EC = 3230
   IF(BA.EQ.231) ERROR 3/231, GOTO 40   *EC = 3231
   IF(BA.EQ.232) ERROR 4/232, GOTO 40   *EC = 33232 
   IF(BA.EQ.233) ERROR 5/233, GOTO 40   *EC = 3233
   IF(BA.EQ.235) ERROR 7/235, GOTO 40   *EC = 3235
   IF(BA.EQ.236) ERROR 10/236, GOTO 40  *EC = 3236
   IF(BA.EQ.237) ERROR 11/237, GOTO 40  *EC = 3237
   IF(BA.EQ.240) ERROR 12/240, GOTO 40  *EC = 3240
   IF(BA.EQ.241) ERROR 13/241, GOTO 40  *EC = 3241
   IF(BA.EQ.242) ERROR 14/242, GOTO 40  *EC = 3242
   IF(BA.EQ.243) ERROR 15/243, GOTO 40  *EC = 3243
   IF(BA.EQ.244) ERROR 16/244, GOTO 40  *EC = 3244
   IF(BA.EQ.277) ERROR 25/277, GOTO 40  *EC = 3277
   BA = BA.AND.777B+3000B    *ILLEGAL ERROR CODE
   MSG 26(BA) TO LINE B6
   GOTO 42
40 MSG EM TO LINE B6
42 PICTURE
   HALT 
   MSG 27 TO PRINT
   BLANK
   BA = IB(441B)             *RESTORE REGISTERS 
   B0 = IB(442B)
   B1 = IB(443B)
   B2 = IB(444B)
   B3 = IB(445B)
   B4 = IB(446B)
   B5 = IB(447B)
   B6 = IB(450B)
   B7 = IB(451B)
   B13 = IB(452B) 
   B15 = IB(453B) 
* 
* ---------ATTEMPT TO INSURE CONTROLLER IS RUNNING.---------- 
* 
   RES P1, ABT 50 
   SELECT CLEAR, ABT 50 
   REL, ABT 50
   EXIT                      *ALL IS WELL 
50 RESET, ABT 54             *RESTART CONTROLLER ON ABORT 
   GOTO 60
54 RESET, ABT 60             *TRY TO START IT TWICE 
60 REL, ABT 64
64 EXIT 
   END 30 
COMPILE   - IST98O -   PROCESS ADAPTOR ERROR CODES
   MODULE IST98P,67X(57)LOCK   - PROCESS ADAPTOR ERROR CODES -
1  FORMAT AD ERROR 3301 DATA LOOPBACK DATA ERROR
2  FORMAT AD ERROR 3302 DATA LOPBACK PARITY ERROR 
4  FORMAT AD ERROR 3304 STU FORMATTER DIAG. TEST ERROR
5  FORMAT AD ERROR 3377 UNDEFINED ERROR 
26 FORMAT AD ERROR *OCT UNRECOGNIZED AD ERROR CODE
27 FORMAT --------------------------------------------------
* 
* --------PROCESS 68000 MICROPROCESSOR CODES (300-377).------ 
* 
30 BA = SB(12).AND.177B      *ADAPTOR ERROR CODE
   IF(BA.EQ.301) ERROR 1/301, GOTO 40   *EC = 3301
   IF(BA.EQ.302) ERROR 2/302, GOTO 40   *EC = 3302
   IF(BA.EQ.304) ERROR 4/304, GOTO 40   *EC = 3304
   IF(BA.EQ.377) ERROR 5/377, GOTO 40   *EC = 3377
   BA = BA.AND.777B+3000B    *ILLEGAL ERROR CODE
   MSG 26(BA) TO LINE B6
   GOTO 42
40 MSG EM TO LINE B6
42 PICTURE
   HALT 
   MSG 27 TO PRINT
   BLANK
   BA = IB(441B)             *RESTORE REGISTERS 
   B0 = IB(442B)
   B1 = IB(443B)
   B2 = IB(444B)
   B3 = IB(445B)
   B4 = IB(446B)
   B5 = IB(447B)
   B6 = IB(450B)
   B7 = IB(451B)
   B13 = IB(452B) 
   B15 = IB(453B) 
* 
* ---------ATTEMPT TO INSURE CONTROLLER IS RUNNING.---------- 
* 
   RES P1, ABT 50 
   SELECT CLEAR, ABT 50 
   REL, ABT 50
   EXIT                      *ALL IS WELL 
50 RESET, ABT 54             *RESTART CONTROLLER ON ABORT 
   GOTO 60
54 RESET, ABT 60             *TRY TO START IT TWICE 
60 REL, ABT 64
64 EXIT 
   END 30 
COMPILE   - IST98P -   PROCESS ADAPTOR ERROR CODES
   MODULE IST99,67X(57)LOCK  - IST MODULES -
*** IST99 - MODULES LIST
**
*   IST99 - MODULES LIST
* 
*        IST99  PROVIDES  A BRIEF DESCRIPTION OF THE MODULES THAT MAKE
*        UP THE IST 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 
/ 
/         IST00 - PARAMETER VALIDATION
/ 
/ 
/      2. INSURE ADAPTOR IS OPERATIONAL 
/ 
/         IST01 - ADAPTOR PATH
/ 
/      3. TEST UNIT DATA INTEGRITY WITH NO TAPE MOTION
/ 
/         IST02 - ADAPTOR LOOPBACK
/         IST03 - UNIT I/O LOOPBACK 
/ 
/      4. VERITY TAPE HANDLING CAPABILITIES 
/ 
/         IST04 - LOOPS AND VELOCITY
/         IST05 - RANDOM LOOPS AND VELOCITY 
/ 
/ 
/      5. PRELIMINARY DATA INTEGRITY TESTING BY TRACK 
/ 
/         IST06 - TRACK TEST
/ 
/ 
/      6. TEST DATA INTEGRITY OF SINGLE OPERATIONS
/ 
/         IST07 - ERASE 
/         IST08 - WRITE TAPE MARK/FILE MARK 
/         IST09 - READ TAPE MARK/FILE MARK
/         IST10 - WRITE 
/         IST11 - READ FORWARD
/         IST12 - READ FORWARD/REVERSE
/         IST13 - CANNED POLYNOMIAL 
/         IST14 - CAPSTAN GO DOWN-TIME
/ 
/ 
/      7. PERFORMANCE TEST USING SEQUENCES OF OPERATIONS
/ 
/         IST15 - BACKSPACE 
/         IST16 - BACKSPACE INCREMENTING LENGTH 
/         IST17 - WRITE SKIP TO ERASE 
/         IST18 - WRITE SKIP INCR. LENGTH 
/         IST19 - RANDOM WRITE
/         IST20 - RANDOM READ FORWARD /REVERSE
/         IST21 - POLYNOMIAL TEST 
/         IST22 - POSITION TEST 
/         IST23 - LADDER TEST 
/         IST24 - READ CLIP LEVELS TEST 
/ 
/ 
/   1.2   PART TWO - REPAIR MODULES 
/ 
/         IST30 - TAPE PATH DAMAGE
/         IST31 - GENERAL STATUS
/         IST32 - SERVO ADJUST
/         IST33 - SEARCH FILE MARK TEST (AL 10 REQUIRED)
/         IST34 - WARMSTART READ TEST   (AL 10 REQUIRED)
/ 
 1 PAUSE
   EXIT TO 99A
   END 1
COMPILE,SOURCE   - IST99 -   IST MODULES
   MODULE IST99A,67X(57)LOCK  - IST PARAMETERS -
*** IST99A - PARAMETERS (P0 - P9) 
**
*   IST99A - PARAMETERS (P0 - P9) 
* 
*        IST99A 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 -
/           25 =  25 IPS
/           75 =  75 IPS
/          100 = 100 IPS
/          125 = 125 IPS
/          150 = 150 IPS
/          200 = 200 IPS
/ 
/     P1 - TAPE ID (PCAD) 
/ 
/          PXXX - PARITY
/          -    0XXX = ENABLE ERROR CORRECTION IN GCR MODE
/               1XXX = NOT USED (MUST BE 0) 
/               2XXX = DISABLE ERROR CORRECTION IN GCR MODE 
/               4XXX = NOT USED (MUST BE 0) 
/          XCXX - CODE TRANSLATION
/           -   X0XX =  NO CODE TRANSLATION 
/               X1XX =  USE CODE TRANSLATION TABLE 1
/               X2XX =  USE CODE TRANSLATION TABLE 2
/               X3XX =  USE CODE TRANSLATION TABLE 3
/               X4XX =  USE CODE TRANSLATION TABLE 4
/               X5XX THRU X7XX ARE ILLEGAL. 
/          XXAX - ASSEMBLY/DISASSEMBLEY 
/               XX0X = A/D 6-BIT MODE -- 1 BYTE = 2 FRAMES
/               XX1X = A/D PACKED MODE -- 2 BYTES = 3 FRAMES
/               XX2X = A/D 16-BIT MODE -- 1 BYTE = 2 FRAMES 
/               XX3X THRU XX7X ARE ILLEGAL
/          XXXD - DENSITY 
/             - XXX0 =  ILLEGAL 
/               XXX1 =  ILLEGAL 
/               XXX2 =  1600 CPI
/               XXX3 =  ILLEGAL 
/               XXX4 =  6250 CPI
/               XX5X THRU XX7X ARE ILLEGAL
/ 
/     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 =  BYPASS WAIT *PARKED* IF BIT IS SET
/               XX1X =  NOT USED (MUST BE 0)
/               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 8 BIT PATTERN DEPENDING FOR
/                   THE DRIVE.
/ 
/     P5 - RANDOM MILLISECOND DELAY MASK
/          = 0000 - DISABLES USE OF RT CLOCK FOR
/                   GENERATION OF RANDOM DELAYS.
/                   WITH P5=0000 ANY VALUE ENTERED IN P6
/                   BECOMES A FIXED MILLISECOND DELAY.
/          = XXXX - LOGICAL PRODUCT OF XXXX AND THE RT
/                   CLOCK PRODUCES  THE VALUE USED FOR
/                   THE MILLISECOND DELAY 
/ 
/     P6 - FIXED MILLISECOND DELAY
/          = XXXX - IF P5=0000, P6 WILL BE USED AS FIXED
/                   DELAY OF XXXX MILLISECONDS
/ 
/     P7 - BASE RANDOM NUMBER 
/          = 0000 - THE RANDOM NUMBER SEED WILL BE
/                   OBTAINED FROM THE RT CLOCK
/          = XXXX - XXXX IS THE RANDOM NUMBER SEED
/ 
/     P8 - FILE COUNT 
/          = 0000 - INFINITE FILE COUNT 
/                   RESULTS IN COMPLETE USE OF TAPE 
/                   BETWEEN BOT AND EOT 
/          = XXXX - MAXIMUM NUMBER OF FILES 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   -IST99A-   IST PARAMETERS
***IST - INTELLIGENT SMALL MAGNETIC TAPE SUBSYSTEM
* 
***3.2   APPLICATIONS 
**
*  3.2   APPLICATIONS 
*        ------------ 
* 
*        1.  WHEN RUNNING THE CONFIDENCE/VERIFICATION PART OF THE TEST, 
*            A RUN,IST 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 
*            ISMT  ADAPTOR,  AND  THE  ERROR  INDICATES  THAT  THE ISMT 
*            ADAPTOR IS HUNG, THE ERROR PROCESSING ROUTINE WILL ISSUE A 
*            RESET COMMAND TO THE ADAPTOR AUTOMATICALLY.
* 
* 
***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
*        -----------
* 
*        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 ISMT ADAPTOR AND AFTER ISSUING THE 
*            RESET   COMMAND,   THE   ISMT  ADAPTOR  FAILS  TO  RESPOND 
*            CORRECTLY, 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
*        -------------
* 
*        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 
*        -------
* 
*        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
*        -----------
* 
*        THE  MAIN  PURPOSE OF THE TEST IST IS TO DETERMINE IF THE ISMT 
*        SUBSYSTEM IS FUNCTIONING CORRECTLY.  THE TEST IS  DESIGNED  TO 
*        DETECT FAILURES IN THE ISMT ADAPTOR AND STREAMING TAPE UNIT. 
* 
*        FOR PERFORMANCE (TIMING) CONSIDERATIONS SEE 1.4 CHARACTERISTICS
* 
* 
* 
***3.8   SOFTWARE 
**
*  3.8   SOFTWARE 
*        -------- 
* 
* 
* 
***3.9   INSTALLATION PARAMETERS
**
*  3.9   INSTALLATION PARAMETERS
*        -----------------------
* 
*        THE FOLLOWING NAMES MUST BE DEFINED TO ASSEMBLE IST DURING THE 
*        UPDATE RUN-
* 
*         *DEFINE,CMSE17X    TO COMPILE IST FOR OFF-LINE
* 
* 
***4.0   PRODUCT LEVEL DESCRIPTION
**
*  4.0   PRODUCT LEVEL DESCRIPTION
*        -------------------------
* 
*        CML. 
* 
* 
***4.1   PUBLICATIONS AFFECTED
**
*  4.1   PUBLICATIONS AFFECTED
*        ---------------------
* 
*        NONE.
* 
* 
***4.2   EQUIPMENT CONFIGURATION
**
*  4.2   EQUIPMENT CONFIGURATION
*        -----------------------
* 
*        1.  THE  TEST  REQUIRES  THE  USE  OF ONE ISMT ADAPTOR AND ONE 
*            STREAMING TAPE UNIT.  THE TEST  CAN  ONLY  TEST  ONE  ISMT 
*            ADAPTOR AND ONE STREAMING TAPE UNIT AT A TIME. 
*        2.  THE  TEST USES THE CONTROLWARE IN THE ISMT ADAPTOR TO TEST 
*            THE SUBSYSTEM. 
* 
* 
***4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS
**
*  4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS
*        -------------------------------------
* 
*        THE ISMT ADAPTOR FUNCTION CODES AND THE GENERAL  AND  DETAILED 
*        STATUS,  AS DEFINED IN THE MB465-D CONTROLWARE, IS INTERPRETED 
*        BY THE ERROR PROCESSING SUBMODULES AND PRESENTED  AS  PART  OF 
*        ERROR MESSAGE DISPLAYS.
* 
* 
***4.4   SECURITY 
**
*  4.4   SECURITY 
*        -------- 
* 
*        SECURITY IS PROVIDED BY THE OPERATING SYSTEM FOR ON-LINE MALET 
*        THRU THE USE OF CVL. 
* 
*        SECURITY FOR THE TEST, WHEN RUNNING UNDER DEMOT,  IS  PROVIDED 
*        BY THE ACCESS LEVEL USED ON THE ASSIGN DIRECTIVE.
* 
* 
***4.5   RAM REQUIREMENTS.
**
*  4.5   RAM REQUIREMENTS.
*        ---------------- 
* 
         NONE.
  
          0        1         2         3         4         5         6
          123456789012345678901234567890123456789012345678901234567890123 
