*DECK,TCT 
***       TCT  - 5680 CARTRIDGE TAPE TEST - 
***  1.0  IDENTIFICATION
**
* 
*    1.1  PROGRAM NAME
* 
*         TCT  - 5680 CARTRIDGE TAPE TEST - 
* 
* 
*    1.2  AUTHORS 
* 
*         J. M. OJA          DATE  02/10/89 
* 
*    1.3  AUTHORS OF MODIFICATIONS
* 
* 
* 
*    1.4  COPYRIGHT 
* 
*              COPYRIGHT CONTROL DATA CORPORATION, 1989.
*                        ALL RIGHTS RESERVED
* 
*         CONTAINED HEREIN ARE SOFTWARE PRODUCTS COPYRIGHTED BY CONTROL 
*         DATA CORPORATION.   REPRODUCTION  WITHOUT  PERMISSION IS PRO- 
*         HIBITED.   THE COPYRIGHT NOTICE MUST APPEAR ON ALL AUTHORIZED 
*         COMPLETE OR PARTIAL COPIES. 
* 
***  2.0  INTRODUCTION
**
*    2.1  OVERVIEW
* 
*         TCT IS A CCC/CARTRIDGE TAPE  SUBSYSTEM  (5680) UNIT ISOLATION 
*IF,DEF,CMSE17X,1 
*         DIAGNOSTIC THAT RUNS UNDER THE DEMOT  SOFTWARE  SUBSYSTEM. IT 
*IF,-DEF,CMSE17X,1
*         DIAGNOSTIC THAT RUNS UNDER THE MALET  SOFTWARE  SUBSYSTEM. IT 
*         IS DESIGNED TO TEST ONE TAPE UNIT AT A TIME.
* 
*         PARAMETERS  SELECTED  VIA  THE  *PARAM* DIRECTIVE ARE USED TO 
*         DETERMINE  ERROR CORRECTION ENABLED 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  TCT99B FOR  PARAMETER SETTINGS).
* 
*         TCT IS A UNIT TEST ONLY.  ATTEMPTS  ARE  MADE TO ISOLATE TAPE 
*         HANDLING   PROBLEMS  (CARTRIDGE,  MOTION,  ETC)   FROM   DATA 
*         INTEGRITY PROBLEMS. 
* 
*         ONCE AN ERROR HAS BEEN DETECTED, A TYPICAL MODULE WILL CALL A 
*         STATUS ANALYSIS MODULE TO ANALYZE THE LAST TAKEN STATUS IN AN 
*         ORDERED FORMAT TO DETERMINE  THE  MOST  CRITICAL  ERROR  THAT 
*         EXISTS. 
* 
*         FOR A CARTRIDGE TAPE THIS RESULTS  IN THE POSTING OF AN ERROR 
*         CODE AND WITH  A  MESSAGE  THAT GIVES A VERBAL DESCRIPTION OF 
*         THE ERROR.
* 
* 
*    2.2  CHARACTERISTICS 
* 
*         1. PROGRAM NAME.................................TCT.
*         2. TEST/DIAG/UTILITY/SYSTEM....................DIAG.
*         3. VIRTUAL CODE/MICROCODE/PPCODE/OTHER........MALET.
*         4. RUN TIME.....................................N/A.
*         5. RUN TIME/DEFAULT.............................N/A.
*         6. LEVEL OF ISOLATION.....................ISOLATION.
*         7. ON-LINE/OFF-LINE/BOTH.......................BOTH.
*         8. ON-LINE SYSTEM............................NOS/VE.
*         9. OFF-LINE SYSTEM............................DEMOT.
*        10. PROGRAM LANGUAGE...........................MALET.
*        11. SOURCE CODE MAINTENANCE...................UPDATE.
* 
* 
*    2.3  FEATURES
* 
*         1. TCT SUPPORTS DEVICE CODES FOR: 
*            5680 CARTRIDGE TAPE SUBSYSTEM
*            5680/5744 AUTOLOADING CARTRIDGE SUBSYSTEM
* 
* 
*    2.4  HARDWARE REQUIREMENTS 
* 
*         THIS TEST REQUIRES: 
*         1-CYBER 180 
*         1-CYBER CHANNEL COUPLER 
*         1-CARTRIDGE TAPE SUBSYSTEM AND 5680 TAPE UNIT 
* 
* 
*    2.5  RESTRICTIONS
* 
* 
***  3.0  APPLICABLE DOCUMENTS
**
*         MALET LANGUAGE PROGRAMMING REFERENCE MANUAL(PUB. NO. 60456020)
*         CML REFERENCE MANUAL                       (PUB. NO. 60455970)
*         CML/VE REFERENCE MANUAL                    (PUB. NO. 60000019)
*         MB468-D CCC/CARTRIDGE TAPE CONTROLWARE ERS (PUB. NO. 10317283)
* 
* 
***  4.0  DESIGN OVERVIEW 
**
*    4.1  MODULES OVERVIEW
* 
*         TCT IS COMPOSED OF TWO GROUPS OF MODULES. THE FIRST GROUP CAN 
*         BE  USED TOGETHER AS A CONFIDENCE LEVEL DIAGNOSTIC OR MODULES 
*         USED  INDEPENDENTLY  TO  PERFORM REPAIR.  THE SECOND GROUP IS 
*         PROVIDED STRICTLY FOR REPAIR OR FOR SPECIAL APPLICATIONS. 
* 
*         PART ONE - DIAGNOSTIC PASS
* 
*      1. VERIFY PARAMETERS 
* 
*         TCT00 - PARAMETER VALIDATION
* 
*IF DEF,CMSE17X 
*      2. INSURE CCC IS OPERATIONAL 
* 
*         TCT01 - EXECUTE CCC ROM DIAGNOSTICS 
* 
*ENDIF
*      3. VERIFY TAPE HANDLING CAPABILITIES 
* 
*         TCT03 - TAPE MOTION TEST
*         TCT05 - RANDOM TAPE MOTION TEST 
* 
*      4. PRELIMINARY DATA INTEGRITY TESTING BY BIT 
* 
*         TCT07 - BUFFER/TAPE TEST
* 
*      5. TEST DATA INTEGRITY OF SINGLE OPERATIONS
* 
*         TCT11 - ERASE TEST
*         TCT13 - WRITE TAPE MARK/FILE MARK 
*         TCT14 - READ TAPE MARK/FILE MARK
*         TCT15 - MAINTENANCE WRITE 
*         TCT16 - MAINTENANCE READ
*         TCT19 - SHORT LOCATE BLOCK TEST 
* 
*      6. PERFORMANCE TEST USING SEQUENCES OF OPERATIONS
* 
*         TCT21 - BACKSPACE TEST
*         TCT23 - BACKSPACE TEST INCREMENTING LENGTH
*         TCT25 - WRITE BACKSPACE AND ERASE 
*         TCT27 - WRITE BACKSPACE AND ERASE INCR. LENGTH
*         TCT29 - RANDOM WRITE TEST 
*         TCT30 - RANDOM READ TEST
*         TCT31 - SHORT WRITE TEST
*         TCT32 - SHORT READ TEST 
*         TCT33 - LOCATE BLOCK TEST 
*         TCT35 - POSITION TEST 
*         TCT37 - SYNCHRONIZE TEST
*         TCT39 - WRITE/READ TO EOT TEST
* 
*         PART TWO - REPAIR MODULES 
* 
*         TCT41 - TAPE PATH DAMAGE
*         TCT43 - GENERAL STATUS
*         TCT45 - SEARCH FILE MARK TEST (AL 10 REQUIRED)
*         TCT47 - READ BUFFERED LOG 
*         TCT51 - COMPATIBILITY TEST
*         TCT52 - COMPATIBILITY TAPE CLEAN-UP 
*         TCT53 - FIXED/RANDOM PATTERN WRITE TEST 
*         TCT55 - MAINTENANCE LONG WRITE
*         TCT56 - MAINTENANCE DOUBLE LONG WRITE 
*         TCT57 - MAINTENANCE QUAD LONG WRITE 
*         TCT58 - MAINTENANCE QUAD DOUBLE LONG WRITE
*         TCT59 - WRITE TEST ERROR TRACK SENSING
*         TCT61 - READ ANY TAPE DISPLAY BUFFERED LOG
*         TCT63 - FILE PROTECT/UNLOAD TEST
* 
*         PART THREE - MODULES TO TEST FCO CA 51479 
* 
*         TCT71 - RANDOM SHORT WRITE WITH DELAY TEST
*         TCT72 - RANDOM SHORT READ TEST
*         TCT73 - LONG WRITE WITH DELAY 
*         TCT75 - SHORT WRITE PLUS WITH DELAY 
*         TCT77 - RANDOM SHORT WRITE PLUS WITH DELAY
* 
* 
*    4.2  EXECUTION SEQUENCE
* 
*         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
* 
*         TCT14 - READ TAPE MARKS         TCT13 - WRITE TAPE MARKS
*         TCT16 - MAINTENANCE READ        TCT15 - MAINTENANCE WRITE 
*         TCT30 - RANDOM READ TEST        TCT29 - RANDOM WRITE TEST 
*         TCT32 - SHORT READ TEST         TCT31 - SHORT WRITE TEST
*         TCT72 - SHORT READ TEST         TCT71 - RANDOM SHORT WRITE
* 
*         THE  MAJORITY  OF TCT MODULES SUPPORT THE SCOPING LOOP OPTION 
*         (SE CLEAR AND RM OR RC SET).  THIS  ALLOWS A FAILING SEQUENCE 
*         TO BE REPEATED RAPIDLY FOR SCOPING,  SHOCK TESTING,  ETC.  TO 
*         PERFORM REPAIR.  DURING  A  SCOPING  LOOP SITUATION, ONLY THE 
*         PASS  COUNT  AND  ERROR  COUNT  IS  PRESENTED AS OUTPUT.  THE 
*         FOLLOWING MODULES DO NOT SUPPORT SCOPING LOOPS. 
* 
*         TCT00 - PARAMETER VALIDATION
*         TCT33 - LOCATE BLOCK TEST 
*         TCT35 - POSITION TEST 
*         TCT37 - SYNCHRONIZE TEST
*         TCT39 - WRITE/READ TO EOT TEST
*         TCT45 - SEARCH FILE MARK TEST 
*         TCT47 - READ BUFFERED LOG 
*         TCT51 - COMPATIBILITY TEST
*         TCT52 - COMPATIBILITY CLEANUP 
*         TCT53 - FIXED/RANDOM PATTERN WRITE TEST 
*         TCT59 - WRITE TEST ERROR TRACK SENSING
*         TCT61 - READ ANY TAPE DISPLAY BUFFERED LOG
*         TCT63 - FILE PROTECT/UNLOAD TEST
* 
***  5.0  PARAMETERS
**
*    5.1  TCT PARAMETER REGISTER CONTENTS 
* 
*         PARAMETER  VALIDATION  IS  DONE BY MODULE TCT00, NORMALLY THE 
*         FIRST MODULE EXECUTED IF  THE *RUN* DIRECTIVE IS  RUN TCT  OR 
*         RUN TCT00.  HOWEVER, THE  USER CAN RUN SPECIFIC MODULES, THUS 
*         BYPASSING  THE  EXECUTION  OF TCT00.  IT  IS RECOMMENDED THAT 
*         TCT00 ALWAYS BE EXECUTED INITIALLY TO VALIDATE PARAMETERS.
*         FOR EXAMPLE.
* 
*                              RUN TCT(00,11) 
* 
*                                  OR 
* 
*                              RUN TCT(00)
*                              RUN TCT11
* 
*         IF  THIS  PROCEDURE IS NOT FOLLOWED, ERRORS MAY RESULT DUE TO 
*         ILLEGAL  PARAMETERS.
* 
*         PARAMETER  REGISTERS  ARE  SET  BY THE USER WITH THE  *PARAM* 
*         DIRECTIVE.  ANY  REGISTER  NOT  SET  WILL  DEFAULT  TO  0000. 
*         REGISTERS  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.
* 
* 
*    5.2  PARAMETER REGISTER USAGE
* 
*         THE FOLLOWING CROSS-REFERENCE TABLE DEFINES WHICH MODULES  OF 
*         TCT USE SPECIFIC PARAMETER REGISTERS. 
* 
*                 P0   P1   P2   P3   P4   P5   P6   P7   P8   P9 
*                -------------------------------------------------
*         TCT00         X    X    X    X
*IF DEF,CMSE17X,1 
*         TCT01         X 
*         TCT03         X 
*         TCT05         X 
*         TCT07         X 
*         TCT11         X         X                        X
*         TCT13         X         X                        X
*         TCT14         X         X                        X
*         TCT15         X    X    X    X              X    X    X 
*         TCT16         X    X    X    X                   X    X 
*         TCT19         X         X 
*         TCT21         X    X    X                        X
*         TCT23         X         X                        X
*         TCT25         X    X    X    X              X    X
*         TCT27         X         X    X              X    X
*         TCT29         X         X    X              X    X    X 
*         TCT30         X         X    X                   X    X 
*         TCT31         X         X    X                   X
*         TCT32         X         X    X                   X
*         TCT33         X    X    X    X              X    X
*         TCT35         X    X    X                        X
*         TCT37         X    X    X                        X
*         TCT39         X         X    X              X 
*         TCT41         X         X 
*         TCT43         X 
*         TCT45         X                                       X 
*         TCT47         X 
*         TCT51         X    X    X              X              X 
*         TCT52         X         X                        X
*         TCT53         X    X         X
*         TCT55         X    X    X    X              X    X    X 
*         TCT56         X    X    X    X              X    X    X 
*         TCT57         X    X    X    X              X    X    X 
*         TCT58         X    X    X    X              X    X    X 
*         TCT59         X    X    X    X              X 
*         TCT61         X         X                        X
*         TCT63         X 
*         TCT71         X         X    X    X         X    X    X 
*         TCT72         X         X    X                   X    X 
*         TCT73         X    X    X    X    X         X    X    X 
*         TCT75         X    X    X    X    X    X    X    X    X 
*         TCT77         X    X    X    X    X    X    X    X    X 
* 
* 
*    5.3  PARAMETER REGISTER DEFINITION 
* 
*         P0 = 0000  DO NOT POST SENSE STATUS OR ANALYZE
*                    SENSE BYTES 24-31 UPON ERROR 
* 
*              XXX1  POST SENSE STATUS UPON ERROR 
*              XX1X  ANALYZE AND POST SENSE BYTES 24-31 
* 
*         P1 = CE00 
* 
*              CX00 - SELECT CODE CONVERSION TABLE
* 
*                     0000 = NO CODE CONVERSION SELECTED
*                     1X00-7X00 = SELECT CODE CONVERSION TABLE 1-7
*                     NOTE-IN STREAMING MODE CODE CONVERSION IS NOT USED
* 
*              XE00 - AUTOMATIC ERROR RECOVERY ENABLED/DISABLED 
* 
*                     X000 = AUTOMATIC ERROR RECOVERY ENABLED 
*                     X100 = AUTOMATIC ERROR RECOVERY DISABLED
* 
*         P2 = RECORD LENGTH
* 
* 
*         P3 = 00FF = FLAG BITS 
* 
*              XXFF = FLAG BITS 
* 
*                     XX4X = MAINTENANCE MODE (0 = DIAGNOSTIC MODE) IN
*                            MAINTENANCE MODE,  MODULES WHOSE DURATION
*                            IS  CONTROLLED  BY  P8 (FILE COUNT) OR P9
*                            (RECORD COUNT) USE THE VALUES SUPPLIED BY
*                            THE USER IN P8 AND P9  (IF  THESE  VALUES
*                            ARE  ZERO OR NOT SPECIFIED, THE FULL REEL
*                            OF TAPE IS USED TO CONTROL DURATION).  IN
*                            DIAGNOSTIC  MODE,  MODULES WHOSE DURATION
*                            IS  CONTROLLED  BY  P8  (FILE COUNT) WILL
*                            IGNORE  THE VALUE SUPPLIED BY THE USER IN
*                            P8 AND WILL DEFAULT THE FILE COUNT TO 100
*                            OCTAL. HOWEVER MODULES WHICH USE REGISTER
*                            P9 STILL DEPEND UPON USER SUPPLIED VALUES
*                            IN  P8  AND  P9  TO CONTROL DURATION (SEE
*                            PARAMETER CROSS-REFERENCE TABLE).
* 
*                     XXX4 = LOCK  TO  BASE  NUMBER,  IF  RANDOM  DATA
*                            PATTERN IS SELECTED, P7 WILL CONTAIN  THE
*                            BASE.
* 
*                     XXX2 = COMPARES  THE  FIRST   400 OCTAL WORDS OF
*                            THE INPUT BUFFER EVEN IF NO ERRORS OCCUR.
* 
* 
*                     XXX1 = BYPASS  RECORD  NUMBERING  IF THIS BIT IS
*                            NOT SET, POSITION DATA IS PLACED  IN  THE
*                            OUTPUT BUFFER DURING WRITE AS FOLLOWS -
* 
*                               OB(1) = CURRENT FILE NUMBER 
*                               OB(2) = CURRENT RECORD NUMBER 
*                               OB(3) = RECORD LENGTH 
* 
* 
*         P4 = DATA PATTERN GENERATION CONTROL
* 
*                4XXX = REPORT FM/TM ERRORS 
* 
*                2XXX = SELECT RANDOM PATTERN 
* 
*                     THE RANDOM PATTERN GENERATED IS DETERMINED BY THE 
*                     BASE  RANDOM  NUMBER(P7)  AND  THE  LOCK  TO BASE 
*                     NUMBER BIT(P3=0XX4) 
* 
*                1XXX = SELECT ALTERNATE PATTERN XXX
* 
*                     PATTERN XXX IS STORED IN  THE  1ST, 3RD, 5TH, ETC 
*                     8 BIT BYTES OF THE OUTPUT BUFFER.  THE COMPLEMENT 
*                     OF XXX IS STORED IN  THE 2ND, 4TH, 6TH ETC BYTES. 
* 
*                     DATA STORED = 0077 0077 0077 ETC. 
* 
*                0XXX = SELECT FIXED PATTERN XXX
* 
*                     XXX IS AN 8 BIT PATTERN.
* 
* 
*         P5 = DELAY COUNT
*                0XXX = DELAY  BETWEEN  500B  BLOCKS TO SIMULATE CENTRAL
*                       MEMORY CONFLICTS. (FOR MODULES TCT71-TCT77 ONLY)
* 
*         P6 = PLUS COUNT FOR ODD BYTES 
*                00XX = ADDITION OF PP WORDS TO  THE  WRITE  SHORT  PLUS
*                       COMMAND.  USED  TO  TEST  ODD  BYTES  WITH  LONG
*                       RECORDS. (FOR MODULES TCT73-TCT77 ONLY) 
* 
*         P6 = SYSTEM ID
*                SSSS = SYSTEM ID (FOR MODULE TCT51 ONLY) 
* 
*         P7 = BASE RANDOM NUMBER 
* 
*                0000 = THE  RANDOM  NUMBER SEED WILL BE OBTAINED FROM
*                       THE REAL TIME 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 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. 
* 
* 
***  6.0  MESSAGES
**
*    6.1  NORMAL MESSAGES 
* 
*         1. TCTNN -  MODULE NAME 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.
* 
*    6.2  ERROR FORMAT
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY TCT TO REPORT ERRORS
*         DETECTED BY THE DRIVER. 
* 
*         00  TCT - CARTRIDGE TAPE SUBSYSTEM TEST 
*         01  TCTNN - ABORT ON (C-------------------M)
*         02   TCTNN - (E------------------------------M) 
*         03  CH=AAAA EQ=BBBB UN=CCCC DC=DDDD  ERROR COUNT=LLLL 
*         04  LF=FFFF LMF=FFFF LSF=GGGG LMSF=GGGG  RETRIES=EEEE 
*         05  FILE=JJJJ  RECORD=KKKK  WC=HHHH  WT=IIIIIIII
*         06  P0-P4 = MMMM MMMM MMMM MMMM MMMM
*         07  P5-P9 = MMMM MMMM MMMM MMMM MMMM
*         10  0B(0-7) =NNNN NNNN NNNN NNNN NNNN NNNN NNNN NNNN
*         11  IB(0-7) =PPPP PPPP PPPP PPPP PPPP PPPP PPPP PPPP
*         12  B0-B7   =QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ
*         13  B8-B15 = QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ
*         14  GENERAL STATUS   LAST=RRRR RRRR   FIRST=SSSS SSSS 
*         15  BLOCK ID  1ST=TTTT TTTTTTT   2ND=TTTT TTTTTTT 
*         16            SUBSYSTEM STATUS (OCTAL)
*         17  SB(1-8)  =UUUU UUUU UUUU UUUU UUUU UUUU UUUU UUUU 
*         20  SB(9-16) =UUUU UUUU UUUU UUUU UUUU UUUU UUUU UUUU 
*         21  SB(17-24)=UUUU UUUU UUUU UUUU UUUU UUUU UUUU UUUU 
*         22  SB(25-28)=UUUUB UUUUB UUUUB UUUUB 
*         23              SENSE BYTE STATUS IN HEX
*         24   SENSE BYTE 0-7  = VV  VV  VV  VV  VV  VV  VV  VV 
*         25   SENSE BYTE 8-15 = VV  VV  VV  VV  VV  VV  VV  VV 
*         26   SENSE BYTE 16-23= VV  VV  VV  VV  VV  VV  VV  VV 
*         27   SENSE BYTE 24-31= VV  VV  VV  VV  VV  VV  VV  VV 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         AAAA  = CHANNEL NUMBER BEING TESTED.
*         BBBB  = EQUIPMENT NUMBER BEING TESTED.
*         CCCC  = UNIT NUMBER BEING TESTED. 
*         DDDD  = DEVICE CODE OF THE UNIT.
*         EEEE  = RETRY COUNT.
*         FFFF  = LAST FUNCTION ISSUED. 
*         FFFF  = LAST MAJOR FUNCTION SENT. 
*         GGGG  = LAST STATUS FUNCTION SENT.
*         GGGG  = LAST MAJOR STATUS FUNCTION SENT.
*         HHHH  = WORDS COUNT (OCTAL).
*         IIIIIIII  = WORDS TRANSMITTED.
*         JJJJ  = FILE COUNT (OCTAL). 
*         KKKK  = RECORD COUNT (OCTAL). 
*         LLLL  = ERROR COUNT (OCTAL).
*         MMMM  = CONTENTS OF P REGISTERS (OCTAL).
*         NNNN  = CONTENTS OF OB (OCTAL). 
*         PPPP  = CONTENTS OF IB (OCTAL). 
*         QQQQ  = CONTENTS OF B REGISTERS (OCTAL).
*         RRRR  = LAST GENERAL STATUS.
*         SSSS  = FIRST GENERAL STATUS IF COMMAND RETRY.
*         TTTT TTTTTTT = BLOCK ID AS READ IF AN ERROR.
*         UUUU  = GENERAL AND SENSE STATUS IN OCTAL.
*         VV    = SENSE STATUS IN HEX BYTES.
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY TCT TO REPORT ERRORS
*         DETECTED BY THE MODULE. 
* 
*         00  TCT - CARTRIDGE TAPE SUBSYSTEM TEST 
*         01  TCTNN - ERROR CODE = XXXX AT LINE (EA) = YYY
*         02  (E------------------------------M)
*         03  (E------------------------------M)
*         04  (E------------------------------M)
*         05  CH=AAAA EQ=BBBB UN=CCCC DC=DDDD  ERROR COUNT=LLLL 
*         06  LF=FFFF LMF=FFFF LSF=GGGG LMSF=GGGG  RETRIES=EEEE 
*         07  FILE=JJJJ  RECORD=KKKK  WC=HHHH  WT=IIIIIIII
*         10  P0-P4 = MMMM MMMM MMMM MMMM MMMM
*         11  P5-P9 = MMMM MMMM MMMM MMMM MMMM
*         12  0B(0-7) =NNNN NNNN NNNN NNNN NNNN NNNN NNNN NNNN
*         13  IB(0-7) =PPPP PPPP PPPP PPPP PPPP PPPP PPPP PPPP
*         14  B0-B7   =QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ
*         15  B8-B15 = QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ
*         16  GENERAL STATUS   LAST=RRRR RRRR   FIRST=SSSS SSSS 
*         17  BLOCK ID  1ST=TTTT TTTTTTT   2ND=TTTT TTTTTTT 
*         20            SUBSYSTEM STATUS (OCTAL)
*         21  SB(1-8)  =UUUU UUUU UUUU UUUU UUUU UUUU UUUU UUUU 
*         22  SB(9-16) =UUUU UUUU UUUU UUUU UUUU UUUU UUUU UUUU 
*         23  SB(17-24)=UUUU UUUU UUUU UUUU UUUU UUUU UUUU UUUU 
*         24  SB(25-28)=UUUUB UUUUB UUUUB UUUUB 
*         25              SENSE BYTE STATUS IN HEX
*         26   SENSE BYTE 0-7  = VV  VV  VV  VV  VV  VV  VV  VV 
*         27   SENSE BYTE 8-15 = VV  VV  VV  VV  VV  VV  VV  VV 
*         30   SENSE BYTE 16-23= VV  VV  VV  VV  VV  VV  VV  VV 
*         31   SENSE BYTE 24-31= VV  VV  VV  VV  VV  VV  VV  VV 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYY   = THE EA REGISTER WHEN THE ERROR OCCURRED (OCTAL).
*         AAAA  = CHANNEL NUMBER BEING TESTED.
*         BBBB  = EQUIPMENT NUMBER BEING TESTED.
*         CCCC  = UNIT NUMBER BEING TESTED. 
*         DDDD  = DEVICE CODE OF THE UNIT.
*         EEEE  = RETRY COUNT.
*         FFFF  = LAST FUNCTION ISSUED. 
*         FFFF  = LAST MAJOR FUNCTION SENT. 
*         GGGG  = LAST STATUS FUNCTION SENT.
*         GGGG  = LAST MAJOR STATUS FUNCTION SENT.
*         HHHH  = WORDS COUNT (OCTAL).
*         IIIIIIII  = WORDS TRANSMITTED.
*         JJJJ  = FILE COUNT (OCTAL). 
*         KKKK  = RECORD COUNT (OCTAL). 
*         LLLL  = ERROR COUNT (OCTAL).
*         MMMM  = CONTENTS OF P REGISTERS (OCTAL).
*         NNNN  = CONTENTS OF OB (OCTAL). 
*         PPPP  = CONTENTS OF IB (OCTAL). 
*         QQQQ  = CONTENTS OF B REGISTERS (OCTAL).
*         RRRR  = LAST GENERAL STATUS.
*         SSSS  = FIRST GENERAL STATUS IF COMMAND RETRY.
*         TTTT TTTTTTT = BLOCK ID AS READ IF AN ERROR.
*         UUUU  = GENERAL AND SENSE STATUS IN OCTAL.
*         VV    = SENSE STATUS IN HEX BYTES.
* 
*         THE  FOLLOWING DISPLAY FORMAT IS  USED  BY TCT TO REPORT TAPE 
*         READ/WRITE DATA COMPARE ERRORS TO THE USER. 
* 
*         00  TCT - CARTRIDGE TAPE SUBSYSTEM TEST 
*         01  TCTNN - (M-----------------------T) 
*         02  EC 105-DATA COMPARE ERROR. THE FIRST 400B WORDS 
*         03  (OR THE RECORD LENGTH IN -P2-), THAT WERE 
*         04  TRANSFERRED DO NOT COMPARE ALTHOUGH NO SUBSYSTEM
*         05  ERRORS WERE REPORTED. 
*         05  TCTNN - ERROR CODE = XXXX AT LINE (EA) = YYY
*         06  CH=AAAA EQ=BBBB UN=CCCC DC=DDDD RETRIES=EEEE
*         07  LF=FFFF LMF=FFFF LSF=GGGG LMSF=GGGG WT=IIIIIIII 
*         10  WC=HHHH FILE=JJJJ  RECORD=KKKK  ERROR COUNT=LLLL
*         11  P0-P4 = MMMM MMMM MMMM MMMM MMMM
*         12  P5-P9 = MMMM MMMM MMMM MMMM MMMM
*         13  0B(0-7) =NNNN NNNN NNNN NNNN NNNN NNNN NNNN NNNN
*         14  IB(0-7) =PPPP PPPP PPPP PPPP PPPP PPPP PPPP PPPP
*         15  B0-B7   =QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ
*         16  B8-B15 = QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ QQQQ
*         17  GENERAL STATUS   LAST=RRRR RRRR   FIRST=SSSS SSSS 
*         20  BLOCK ID  1ST=TTTT TTTTTTT   2ND=TTTT TTTTTTT 
*         21              DATA ERROR(S) 
*         22  ERR.. WD=UUUU  AC=VVVV  EX=WWWW  DIFF=ZZZZ
* 
*         WHERE-
* 
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYY   = THE EA REGISTER WHEN THE ERROR OCCURRED (OCTAL).
*         AAAA  = CHANNEL NUMBER BEING TESTED.
*         BBBB  = EQUIPMENT NUMBER BEING TESTED.
*         CCCC  = UNIT NUMBER BEING TESTED. 
*         DDDD  = DEVICE CODE OF THE UNIT.
*         EEEE  = RETRY COUNT.
*         OOOO  = LAST FUNCTION ISSUED. 
*         FFFF  = LAST MAJOR FUNCTION SENT. 
*         GGGG  = LAST MAJOR STATUS FUNCTION SENT.
*         HHHH  = WORDS COUNT (OCTAL).
*         IIIIIIII  = WORDS TRANSMITTED.
*         JJJJ  = FILE COUNT (OCTAL). 
*         KKKK  = RECORD COUNT (OCTAL). 
*         LLLL  = ERROR COUNT (OCTAL).
*         MMMM  = CONTENTS OF P REGISTERS (OCTAL).
*         NNNN  = CONTENTS OF OB (OCTAL). 
*         PPPP  = CONTENTS OF IB (OCTAL). 
*         QQQQ  = CONTENTS OF B REGISTERS (OCTAL).
*         RRRR  = LAST GENERAL STATUS.
*         SSSS  = FIRST GENERAL STATUS IF COMMAND RETRY.
*         TTTT TTTTTTT = BLOCK ID AS READ IF AN ERROR.
*         UUUU  = WORD IN ERROR IN BUFFER.
*         VVVV  = ACTUAL WORD READ. 
*         WWWW  = EXPECTED WORD.
*         ZZZZ  = DIFFERENCE BETWEEN ACTUAL AND EXPECTED. 
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  TCT  TO  REPORT 
*         PARAMETER ENTRY ERRORS TO THE USER. 
* 
*         00  TCT - CARTRIDGE TAPE SUBSYSTEM TEST 
*         01  TCT00 - PARAMETER VALIDATION
*         02  TCT00 - PARAMETER ERROR(S)
*         03  (E----------------M)
*         04  (E----------------D)
*         05
*         06  P0 - P4  PPPP PPPP PPPP PPPP PPPP 
*         07  P5 - P9  PPPP PPPP PPPP PPPP PPPP 
*         10
*         11  PARAMETERS DESCRIBED IN MODULE TCT99B 
*         12  TCT00 - CHANGE PARAMETERS AND RERUN 
* 
*         WHERE-
*         M---T = MODULE TITLE. 
*         E---M = PARAM ERROR MESSAGE.
*         E---D = DESCRIPTION OF THE ERROR IF PARAM ERROR.
*         PPPP  = CONTENTS OF THE PARAMETER WORD IN OCTAL.
* 
***  7.0  ERROR MESSAGES
**
*         ERRORS  MAY  BE REPORTED FROM ANY ONE OR ALL OF THE FOLLOWING 
*         SOURCES-
* 
*          1. MODULE TEST SEQUENCE -     EC 1XX-2XX ERRORS
* 
*          2. CCC CONTROLWARE ERRORS -   CW ERROR 4XXX CODES
* 
*          3. 5680 MICRO DIAG ERRORS -   ROM EC 51XX-56XX 
* 
*          4. STATUS ANALYSIS -          EC 03XX-WBXX 
* 
*          5. PRODUCT OVERLAY -          E75XX ERROR CODES
* 
* 
*    7.1  MODULE TEST SEQUENCE DETECTED ERRORS
* 
*           EC 060 - EOT DETECTED BEFORE DETECTING EOF,EITHER THE UNIT
*                    CANNOT  DETECT EOF OR TAPE NOT WRITTEN BY CORRECT
*                    THE TCT MODULE...CHECK PARAMETERS..
* 
*           EC 070 - TAPE MOUNTED IS NOT A -COMPAT- TAPE. 
* 
*           EC 071 - RECORD COUNT=*OCT IN FILE *OCT, EXP=0311.
* 
*           EC 105 - DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE 
*                    RECORD LENGTH IN -P2-), THAT WERE TRANSFERRED DO 
*                    NOT COMPARE ALTHOUGH  NO SUBSYSTEM  ERRORS  WERE 
*                    REPORTED.
* 
*           EC 106 - DATA COMPARED ON SHORT WRITE/READ SHOULD 
*                    NOT HAVE.
* 
*           EC 107 - CHARACTER FILL NOT SET ON SHORT WRITE/READ 
*                    SHOULD BE. 
* 
*           EC 110 - CHARACTER FILL SET ON SHORT WRITE/READ 
*                    SHOULD NOT BE. 
* 
*           EC 120 - STATUS ERROR AFTER EXECUTE CCC ROM DIAG
* 
*           EC 122 - NO  FM/TM  STATUS  IN GENERAL  STATUS  AT END OF 
*                    OPERATION AFTER A WRITE FM/TM. 
* 
*           EC 123 - TAPE UNIT NOT READY. 
* 
*           EC 124 - RECORDING MODE NOT GCR.
* 
*           EC 132 - ABNORMAL STATUS. 
* 
*           EC 137 - STILL AT BOT AFTER AN ERASE. 
* 
*           EC 200 - AN  UNEXPECTED  BIT  APPEARED IN  GENERAL  STATUS
*                    DURING  A  WRITE  OPERATION.  NOTE  THAT  GENERAL
*                    STATUS WAS MASKED WITH 4070B.
* 
*           EC 201 - AN  UNEXPECTED  BIT  APPEARED IN  GENERAL  STATUS
*                    DURING  A  READ   OPERATION.  NOTE  THAT  GENERAL
*                    STATUS WAS MASKED WITH 4070B.
* 
*           EC 203 - ALERT BIT IN GENERAL STATUS WAS SET DURING A READ
*                    FORWARD OPERATION. THE INPUT BUFFER CONTAINS  THE
*                    DATA READ. 
* 
*           EC 207 - A FM/TM WAS DETECTED OUT OF EXPECTED POSITION  ON
*                    A READ OPERATION.  FOR THIS ERROR TO BE REPORTED,
*                    P4=4XXX. 
* 
*           EC 211 - INCORRECT FILE DETECTED DURING A RANDOM READ.
* 
*           EC 212 - INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING  A
*                    RANDOM READ. 
* 
*           EC 213 - INCORRECT RECORD LENGTH HAS BEEN DETECTED  DURING
*                    A RANDOM READ. 
* 
*           EC 214 - INCORRECT  RECORD  LENGTH  HAS  BEEN DETECTED  IN
*                    SHORT READ TCT32. -WT NOT EQUAL RECORD COUNT-
* 
*           EC 215 - THE BLOCK IDS FROM LOCATE BLOCK AND READ BLOCK ID
*                    COMMANDS DO NOT COMPARE IN THE SHORT LOCATE BLOCK
*                    TEST.  ACTUAL=AAAA AAAAAAA  EXPECTED=EEEE EEEEEEE
* 
*           EC 221 - INCORRECT FILE DETECTED DURING A READ. 
* 
*           EC 222 - INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING  A
*                    READ.
* 
*           EC 226 - ERROR HAS OCCURRED DURING A READ FWD OPERATION IN
*                    THE TAPE PATH DAMAGE TEST. 
* 
*           EC 227 - ERROR HAS OCCURRED DURING A READ FWD OPERATION IN
*                    THE FILE PROTECT/UNLOAD TEST.
* 
*           EC 232 - THE RECORD COUNT IS IN ERROR DURING A READ FWD IN
*                    THE LOCATE BLOCK TEST. 
* 
*           EC 233 - THE  RECORD  LENGTH  IS  IN  ERROR DURING A  READ
*                    FORWARD IN THE LOCATE BLOCK TEST.
* 
*           EC 234 - THE BLOCK IDS FROM LOCATE BLOCK AND READ BLOCK ID
*                    COMMANDS DO NOT COMPARE IN THE LOCATE BLOCK TEST.
*                    ACTUAL = AAAA AAAAAAA  EXPECTED = EEEE EEEEEEE 
* 
*           EC 235 - AN ABNORMAL STATUS WAS DETECTED DURING  A READ FWD 
*                    IN THE SYNCHRONIZE TEST. 
* 
*           EC 236 - A COMPARE ERROR HAS OCCURRED WHEN THE  WRITE  AND
*                    READ BLOCK IDS WERE COMPARED FOR RECORDS 1, 2  OR
*                    3 IN THE -SYNCHRONIZE- TEST. 
*                    ACTUAL = AAAA AAAAAAA  EXPECTED = EEEE EEEEEEE 
* 
*           EC 241 - AN  ABNORMAL  STATUS   WAS   DETECTED   DURING  A
*                    BACKSPACE IN THE POSITION TEST.
* 
*           EC 242 - AN ABNORMAL STATUS WAS DETECTED DURING A READ FWD
*                    IN THE POSITION TEST.
* 
*           EC 243 - A  COMPARE  ERROR HAS OCCURRED WHEN THE WRITE AND
*                    READ BLOCK IDS WERE COMPARED FOR RECORDS 1, 2  OR
*                    3 IN THE POSITION TEST.
*                    ACTUAL = AAAAAAA  EXPECTED = EEEEEEE 
* 
*           EC 244 - AN ABNORMAL  STATUS  WAS  DETECTED   DURING   THE
*                    FORESPACE OVER RECORD 6 IN THE POSITION TEST.
* 
*           EC 245 - THE READ AND WRITE BLOCK IDS FOR  RECORD  6  HAVE
*                    FAILED TO COMPARE IN THE POSITION TEST.
*                    ACTUAL = AAAAAAA  EXPECTED = EEEEEEE 
* 
*           EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE. 
* 
*           EC 247 - THE  FIRST  AND  SECOND BLOCK IDS HAVE FAILED  TO
*                    COMPARE  AFTER  A  SYNCHRONIZE  FUNCTION  IN  THE
*                    SYNCHRONIZE TEST. SEE 1ST AND 2ND BLOCK ID.
* 
*           EC 251 - FILE MARK STATUS IS MISSING  AT  END-OF-OPERATION
*                    DURING A READ FILE MARK REVERSE. 
* 
*           EC 252 - FILE MARK STATUS IS MISSING  AT  END-OF-OPERATION
*                    DURING A READ FILE MARK FORWARD. 
* 
*           EC 253 - A STATUS ERROR OCCURRED ON A BACKSPACE.
* 
*           EC 256 - WORDS TRANSMITTED ERROR. 
* 
*           EC 257 - IF RECORD COUNT ERROR (FIRST WORD OF IB NOT EQUAL
*                    TO RECORD NUMBER). 
* 
*           EC 260 - NO FILE MARK STATUS AFTER  SEARCH FM FWD  IN  THE
*                    SEARCH FILE MARK TEST. 
* 
*           EC 261 - NO FILE MARK STATUS AFTER  SEARCH FM REV  IN  THE
*                    SEARCH FILE MARK TEST. 
* 
*           EC 262 - FILE MARK STATUS AT LOAD POINT IN THE SEARCH FILE
*                    MARK TEST. 
* 
*           EC 263 - POSITION  LOST  AFTER  THREE  FORESPACES IN TCT61
*                    READ ANY TAPE MODULE.
* 
*           EC 264 - POSITION LOST AFTER 32  DECIMAL ERASES  IN  TCT59
*                    WRITE WITH ERROR TRACK SENSING.
* 
*           EC 267 - WRITE RECORD COUNT NOT EQUAL TO READ RECORD COUNT. 
* 
*           EC 270 - WRITE WITH NO ERRORS ON A FILE PROTECTED CARTRIDGE 
*                    SHOULD NOT HAVE. 
* 
*           EC 271 - A STATUS ERROR OCCURRED AFTER AN UNLOAD OPERATION
*                    IN THE FILE PROTECT/UNLOAD TEST TEST.
* 
*   7.2   MODULE STATUS ANALYSIS ERROR CODES FOR 5680 SUBSYSTEM 
* 
*         EC 0300 - 18 BIT TAPE NOT CONNECTED - SHOULD BE 
*         EC 0323 - TAPE UNIT NOT AT BOT AFTER A REWIND.
*         EC 0328 - TAPE UNIT NOT READY.
*         EC 0400 - CCC DETECTED CHANNEL PARITY ERROR ON WRITE. 
*         EC 0401 - CCC DETECTED MEMORY PARITY ERROR ON READ. 
*         EC 0402 - CCC DEADMAN TIMEOUT.
*         EC 0403 - CONTROL PACKAGE PARITY ERROR. 
* 
*   7.3   GENERAL STATUS WORD 2 ERROR CODES FOR 5680 SUBSYSTEM
* 
*         EC GS01 VALID ERROR CODE IN WORD 2 OF GS. 
*         EC GS02 UNIT CHECK. 
*         EC GS03 EQUIPMENT CHECK-DETAIL IN SENSE BYTES 0-31. 
*         EC GS04 DATA CHECK - AN ERROR ON WRITE OR READ. 
*         EC GS05 DEFERRED UNIT CHECK - ON EARLIER COMMAND. 
*         EC GS06 ERROR CODE = EEEE.
*         EC GS07 NO ERROR CODE IN GS WORD 2. 
* 
*   7.4   DETAILED STATUS ERROR CODES FOR 5680 SUBSYSTEM
* 
*         EC DS001 UNIT OFF-LINE, NOT POWERED ON, NOT CABLED. 
*         EC DS003 PHYSICAL END OF TAPE.
*         EC DS004 FUNCTION REJECT, TAPE UNIT NOT READY.
*         EC DS005 UNIT WENT FROM READY TO NOT READY. 
*         EC DS006 WRITE NOT EXECUTED MISSING WRITE ENABLE. 
*         EC DS007 UNIT NOT CAPABLE OF TAPES DENSITY. 
*         EC DS010 OVER 8.8 INCHES OF BLANK TAPE. 
*         EC DS012 UNABLE TO WRITE FROM BOT BAD TAPE. 
*         EC DS030 BACKWARD MOTION ATTEMPTED AT BOT.
*         EC DS032 CONNECT REJECT DUE TO UNIT BUSY. 
*         EC DS033 CONNECT REJECT DUE TO CU BUSY. 
*         EC DS050 UNRECOGNIZED FUNCTION CODE.
*         EC DS051 NO TAPE UNIT CONNECTED.
*         EC DS052 NO FUNCTION PARAMETERS SENT. 
*         EC DS053 ILLEGAL FUNCTION DURING CCR IDLE.
*         EC DS054 CONTINUE FUNCTION WHEN CCR IDLE NOT ACTIVE.
*         EC DS055 ILLEGAL FUNCTION IN BUSY RETRY.
*         EC DS155 TIMEOUT ON EXPECTED FIPS-DI RESPONSE.
*         EC DS156 TIMEOUT ON EXPECTED C170-DI RESPONSE.
*         EC DS157 TIMEOUT ON EXPECTED REQUEST IN STATUS. 
*         EC DS160 FIPS ABNORMAL STATUS ON LOADING TRANS REG. 
*         EC DS164 FIPS ABNORMAL STATUS ON SYS RESET COMMAND. 
*         EC DS165 FIPS ABNORMAL END STAT ON SENSE COMMAND. 
*         EC DS170 FIPS SEQUENCE ERROR. SEE WORD 25 OF DS.
*         EC DS171 FIPS INTERFACE ERROR. SEE WORD 25 OF DS. 
*         EC DS172 C170-DI CHANNEL PARITY ERROR.
*         EC DS173 C170-DI MEMORY PARITY ERROR. 
*         EC DS174 C170-DI CONTROL PACKAGE PARITY ERROR.
*         EC DS175 C170-DI DEADMAN TIMER EXPIRED. 
*         EC DS176 FIPS-DI UNDEFINED STATUS BIT ERROR.
*         EC DS177 C170-DI UNDEFINED STATUS BIT ERROR.
*         EC DS*OCT UNRECOGNIZED EC DSCODE. 
* 
*   7.5   5680 SENSE BYTE ERROR CODES 
* 
*         EC SB01-COMMAND REJECT. 
*         EC SB02-INTERVENTION REQUIRED.
*         EC SB03-BUS OUT CHECK.
*         EC SB04-EQUIPMENT CHECK.
*         EC SB05-DATA CHECK. 
*         EC SB06-OVERRUN.
*         EC SB07 UNIT CHECK TIMING (DEFERRED UNIT CHECK).
*         EC SB10 ASSIGNED ELSEWHERE BIT SET. 
*         EC SB11 LOCATE BLOCK FUNCTION FAILED. 
*         EC SB12 OUT OF SEQUENCE RECORD. 
*         EC SB13 NOT CAPABLE-CANNOT READ FIRST DATA BLOCK. 
* 
*   7.6   5680 TAPE DRIVE FORMAT ERROR CODES
* 
*         EC TD01 OPERATION INTERVENTION REQUIRED.
*         EC TD02 LOAD CHECK. 
*         EC TD03 VOLTAGE ERROR.
*         EC TD04 HIGH TEMP.
*         EC TD05 SERVO HARDWARE FAILURE. 
*         EC TD06 UNIT CHECK. 
*         EC TD07 NEEDS CLEANING. 
* 
*   7.7   5680 READ ERROR FORMAT ERROR CODES
* 
*         EC RE01 POSTAMBLE ERROR.
*         EC RE02 FORMAT ERROR. 
*         EC RE03 BUFFER PARITY ERROR.
*         EC RE04 BUFFER XFER ERROR.
*         EC RE05 READ SEQUENCE HARDWARE ERROR. 
*         EC RE06 HARDWARE ERROR INTERRUPT. 
*         EC RE07 PRS ERROR.
*         EC RE08 HARDWARE ERROR. 
*         EC RE09 WRITE CHECK.
*         EC RE10 CRC CHECK.
*         EC RE11 UNCORRECTED ERROR.
*         EC RE12 MULTIPLE TRACK ERROR. 
*         EC RE13 CORRECTED DATA. 
*         EC RE14 ERROR IN TRACK TTD
* 
*   7.8   5680 INTERFACE FORMAT ERROR CODES 
* 
*         EC IF01 DEVICE ALERT INTERRUPT. 
*         EC IF02 RPI INTERRUPT.
*         EC IF03 PARITY ERROR WRITE DATA INTERRUPT.
*         EC IF04 PARITY ERROR DEVICE INTERRUPT.
*         EC IF05 UNIT CHECK. 
* 
*   7.9   5680 WRITE/BUFFER/DMA FORMAT ERROR CODES
* 
*         EC WB01 BUFFER XFER ERROR.
*         EC WB02 COMMAND REGISTER PARITY ERROR.
*         EC WB03 MODE REGISTER PARITY ERROR. 
*         EC WB04 INTERRUPT ENABLED REG PARITY ERROR. 
*         EC WB05 WRITE DENSITY ID COMMAND ERROR. 
*         EC WB06 INPUT DATA PARITY ERROR.
*         EC WB07 TRANSLATOR MUX PARITY ERROR.
*         EC WB08 WRITE TRIGGER VERTICAL REDUNDANCY CHECK.
*         EC WB09 CONTROL ERRORS. 
*         EC WB10 DATA ERRORS.
*         EC WB11 BUFFER STATUS REG CORRECTION REQUIRED.
*         EC WB12 BUFFER STATUS REG PARITY ERROR. 
*         EC WB13 BUFFER STATUS REG UNCORRECTED ERROR.
*         EC WB14 BUFFER STATUS REG BYTE COUNT OVER.
*         EC WB15 BUFFER STATUS REG MET BARRIER.
*         EC WB16 BUFFER STATUS REG OVER/UNDERRUN.
*         EC WB17 PARITY ERROR WRITE DATA INTERRUPT.
*         EC WB18 PARITY ERROR FROM DEVICE INTERRUPT. 
* 
*   8.0   FIPS SEQUENCE ERROR WORD 25 ERROR CODES 
* 
*         EC FS01 TIMEOUT ON FIPS TRANSFER
*         EC FS02 ADDRESS MISCOMPARE ON SELECT SEQUENCE 
*         EC FS03 NO REQUEST IN DURING POLLING SEQUENCE 
*         EC FS04 SELECT-IN RECEIVED ON A SELECT SEQUENCE 
* 
*   8.1   FIPS DEVICE INTERFACE ERROR WORD 25 ERROR CODES 
* 
*         EC FD01 BUFFER UNDERRUN 
*         EC FD02 MBL NOT MET ON READ 
*         EC FD03 FLAG BIT DETECTED 
*         EC FD04 TAG OR BUS OUT FAULT
*         EC FD05 BUS IN PARITY ERROR 
*         EC FD06 READ PATH PARITY ERROR
*         EC FD07 MEMORY PARITY ERROR 
*         EC FD10 WRITE PATH PARITY ERROR 
* 
*   8.2   5680 MICRO DIAG ERROR CODES 
* 
*         ROM EC 5100 SWITCHES NOT SET CORRECTLY. 
*         ROM EC 5121 LD XFER REGS.  WR PATH PE UPPER.
*         ROM EC 5122 LD XFER REGS.  WR PATH PE LOWER.
*         ROM EC 5123 LD XFER REGS.  MEMORY PE. 
*         ROM EC 5124 LD XFER REGS.  BUS IN OR RD PATH PE.
*         ROM EC 5125 LD XFER REGS.  READ PATH PE.
*         ROM EC 5126 LD XFER REGS.  BUS OUT FAULT. 
*         ROM EC 5127 LD XFER REGS.  TAG OUT FAULT UPPER. 
*         ROM EC 5130 LD XFER REGS.  TAG OUT FAULT LOWER. 
*         ROM EC 5131 LD XFER REGS.  FLAG BIT DETECTED. 
*         ROM EC 5132 LD XFER REGS.  MIN BLK LENG NOT MET.
*         ROM EC 5133 LD XFER REGS.  SELECT IN RECEIVED.
*         ROM EC 5134 LD XFER REGS.  NO REQ IN ON POLL SEQ. 
*         ROM EC 5135 LD XFER REGS.  DEVICE ADDR MISCOMPARE.
*         ROM EC 5136 LD XFER REGS.  TIME OUT ON FIPS XFER. 
*         ROM EC 5137 LD XFER REGS.  UNDEFINED ERROR. 
* 
*         ROM EC 5141 RD XFER REGS.  WR PATH PE UPPER.
*         ROM EC 5142 RD XFER REGS.  WR PATH PE LOWER.
*         ROM EC 5143 RD XFER REGS.  MEMORY PE. 
*         ROM EC 5144 RD XFER REGS.  BUS IN OR RD PATH PE.
*         ROM EC 5145 RD XFER REGS.  READ PATH PE.
*         ROM EC 5146 RD XFER REGS.  BUS OUT FAULT. 
*         ROM EC 5147 RD XFER REGS.  TAG OUT FAULT UPPER. 
*         ROM EC 5150 RD XFER REGS.  TAG OUT FAULT LOWER. 
*         ROM EC 5151 RD XFER REGS.  FLAG BIT DETECTED. 
*         ROM EC 5152 RD XFER REGS.  MIN BLK LENG NOT MET.
*         ROM EC 5153 RD XFER REGS.  SELECT IN RECEIVED.
*         ROM EC 5154 RD XFER REGS.  NO REQ IN ON POLL SEQ. 
*         ROM EC 5155 RD XFER REGS.  DEVICE ADDR MISCOMPARE.
*         ROM EC 5156 RD XFER REGS.  TIME OUT ON FIPS XFER. 
*         ROM EC 5157 RD XFER REGS.  UNDEFINED ERROR. 
* 
*         ROM EC 5160 TRANSFER REGISTER DATA MISCOMPARE.
*         ROM EC 5161 DIAG WR SEQ.  WR PATH PE UPPER. 
*         ROM EC 5162 DIAG WR SEQ.  WR PATH PE LOWER. 
*         ROM EC 5163 DIAG WR SEQ.  MEMORY PE.
*         ROM EC 5164 DIAG WR SEQ.  BUS IN OR RD PATH PE. 
*         ROM EC 5165 DIAG WR SEQ.  READ PATH PE. 
*         ROM EC 5166 DIAG WR SEQ.  BUS OUT FAULT.
*         ROM EC 5167 DIAG WR SEQ.  TAG OUT FAULT UPPER.
*         ROM EC 5170 DIAG WR SEQ.  TAG OUT FAULT LOWER.
*         ROM EC 5171 DIAG WR SEQ.  FLAG BIT DETECTED.
*         ROM EC 5172 DIAG WR SEQ.  MIN BLK LENG NOT MET. 
*         ROM EC 5173 DIAG WR SEQ.  SELECT IN RECEIVED. 
*         ROM EC 5174 DIAG WR SEQ.  NO REQ IN ON POLL SEQ.
*         ROM EC 5175 DIAG WR SEQ.  DEVICE ADDR MISCOMPARE. 
*         ROM EC 5176 DIAG WR SEQ.  TIME OUT ON FIPS XFER.
*         ROM EC 5177 DIAG WR SEQ.  UNDEFINED ERROR.
* 
*         ROM EC 5200 FULL/EMPTY CNTR WRONG AFTER WR DIAG SEQ.
*         ROM EC 5201 RD BLOCK ID.  WR PATH PE UPPER. 
*         ROM EC 5202 RD BLOCK ID.  WR PATH PE LOWER. 
*         ROM EC 5203 RD BLOCK ID.  MEMORY PE.
*         ROM EC 5204 RD BLOCK ID.  BUS IN OR RD PATH PE. 
*         ROM EC 5205 RD BLOCK ID.  READ PATH PE. 
*         ROM EC 5206 RD BLOCK ID.  BUS OUT FAULT.
*         ROM EC 5207 RD BLOCK ID.  TAG OUT FAULT UPPER.
*         ROM EC 5210 RD BLOCK ID.  TAG OUT FAULT LOWER.
*         ROM EC 5211 RD BLOCK ID.  FLAG BIT DETECTED.
*         ROM EC 5212 RD BLOCK ID.  MIN BLK LENG NOT MET. 
*         ROM EC 5213 RD BLOCK ID.  SELECT IN RECEIVED. 
*         ROM EC 5214 RD BLOCK ID.  NO REQ IN ON POLL SEQ.
*         ROM EC 5215 RD BLOCK ID.  DEVICE ADDR MISCOMPARE. 
*         ROM EC 5216 RD BLOCK ID.  TIME OUT ON FIPS XFER.
*         ROM EC 5217 RD BLOCK ID.  UNDEFINED ERROR.
* 
*         ROM EC 5220 BLOCK ID WRONG AFTER DIAG WRITE SEQ.
*         ROM EC 5221 DIAG RD SEQ.  WR PATH PE UPPER. 
*         ROM EC 5222 DIAG RD SEQ.  WR PATH PE LOWER. 
*         ROM EC 5223 DIAG RD SEQ.  MEMORY PE.
*         ROM EC 5224 DIAG RD SEQ.  BUS IN OR RD PATH PE. 
*         ROM EC 5225 DIAG RD SEQ.  READ PATH PE. 
*         ROM EC 5226 DIAG RD SEQ.  BUS OUT FAULT.
*         ROM EC 5227 DIAG RD SEQ.  TAG OUT FAULT UPPER.
*         ROM EC 5230 DIAG RD SEQ.  TAG OUT FAULT LOWER.
*         ROM EC 5231 DIAG RD SEQ.  FLAG BIT DETECTED.
*         ROM EC 5232 DIAG RD SEQ.  MIN BLK LENG NOT MET. 
*         ROM EC 5233 DIAG RD SEQ.  SELECT IN RECEIVED. 
*         ROM EC 5234 DIAG RD SEQ.  NO REQ IN ON POLL SEQ.
*         ROM EC 5235 DIAG RD SEQ.  DEVICE ADDR MISCOMPARE. 
*         ROM EC 5236 DIAG RD SEQ.  TIME OUT ON FIPS XFER.
*         ROM EC 5237 DIAG RD SEQ.  UNDEFINED ERROR.
* 
*         ROM EC 5240 FIPS ADDR INCORRECT AFTER DIAG WR SEQ.
*         ROM EC 5250 DIAGNOSTIC RD DATA PATTERN INCORRECT. 
*         ROM EC 5251 XFER REG ERROR AFTER DIAG RD SEQ. 
*         ROM EC 5252 BLOCK ID WRONG AFTER DIAG RD SEQ. 
*         ROM EC 5253 FIPS I/F SEQUENCE DID NOT COMPLETE. 
*         ROM EC 5254 DATA STREAM DIAG READ TIME OUT. 
*         ROM EC 5255 DATA STREAM DIAG WRITE TIME OUT.
* 
*         ROM EC 5261 STRM DIAG ERR.  WR PATH PE UPPER. 
*         ROM EC 5262 STRM DIAG ERR.  WR PATH PE LOWER. 
*         ROM EC 5263 STRM DIAG ERR.  MEMORY PE.
*         ROM EC 5264 STRM DIAG ERR.  BUS IN OR RD PATH PE. 
*         ROM EC 5265 STRM DIAG ERR.  READ PATH PE. 
*         ROM EC 5266 STRM DIAG ERR.  BUS OUT FAULT.
*         ROM EC 5267 STRM DIAG ERR.  TAG OUT FAULT UPPER.
*         ROM EC 5270 STRM DIAG ERR.  TAG OUT FAULT LOWER.
*         ROM EC 5271 STRM DIAG ERR.  FLAG BIT DETECTED.
*         ROM EC 5272 STRM DIAG ERR.  MIN BLK LENG NOT MET. 
*         ROM EC 5273 STRM DIAG ERR.  SELECT IN RECEIVED. 
*         ROM EC 5274 STRM DIAG ERR.  NO REQ IN ON POLL SEQ.
*         ROM EC 5275 STRM DIAG ERR.  DEVICE ADDR MISCOMPARE. 
*         ROM EC 5276 STRM DIAG ERR.  TIME OUT ON FIPS XFER.
*         ROM EC 5277 STRM DIAG ERR.  UNDEFINED ERROR.
*         ROM EC 5300 DATA STREAM DIAG RD BLOCK ID WRONG. 
* 
*         ROM EC 5311 WR STS STRM DIAG.  WR PATH PE UPPER.
*         ROM EC 5312 WR STS STRM DIAG.  WR PATH PE LOWER.
*         ROM EC 5313 WR STS STRM DIAG.  MEMORY PE. 
*         ROM EC 5314 WR STS STRM DIAG.  BUS IN OR WR PATH PE.
*         ROM EC 5315 WR STS STRM DIAG.  READ PATH PE.
*         ROM EC 5316 WR STS STRM DIAG.  BUS OUT FAULT. 
*         ROM EC 5317 WR STS STRM DIAG.  TAG OUT FAULT UPPER. 
*         ROM EC 5320 WR STS STRM DIAG.  TAG OUT FAULT LOWER. 
*         ROM EC 5321 WR STS STRM DIAG.  FLAG BIT DETECTED. 
*         ROM EC 5322 WR STS STRM DIAG.  MIN BLK LENG NOT MET.
*         ROM EC 5323 WR STS STRM DIAG.  SELECT IN RECEIVED.
*         ROM EC 5324 WR STS STRM DIAG.  NO REQ IN ON POLL SEQ. 
*         ROM EC 5325 WR STS STRM DIAG.  DEVICE ADDR MISCOMPARE.
*         ROM EC 5326 WR STS STRM DIAG.  TIME OUT ON FIPS XFER. 
*         ROM EC 5327 WR STS STRM DIAG.  UNDEFINED ERROR. 
*         ROM EC 5330 DATA STREAM DIAG WRITE BLOCK ID WRONG.
* 
*         ROM EC 5401 SYSTEM RESET ERR AFTER CKSM MICROCODE.
*         ROM EC 5402 CYBER I/F STATUS ERR DURING AUTOLOAD. 
*         ROM EC 5403 RAM RESIDENT CKSM ERR AFTER AUTOLOAD. 
*         ROM EC 5404 RAM MEM TEST ERR BEFORE ATLD MICROCODE. 
*         ROM EC 5501 TIME OUT FROM DISK DEVICE.
*         ROM EC 5502 DISK SEEK ERR.
*         ROM EC 5503 DISK SEEK ENDING STATUS ERR.
*         ROM EC 5504 DOUBLE TAPE MARK ERR ON TAPE 6UU FCN. 
*         ROM EC 5505 TAPE OR DISK READ DATA RECORD ERR.
*         ROM EC 5507 SYSTEM RESET SEQUENCE ERR.
*         ROM EC 5510 DISK SEARCH/READ TIME OUT ERROR.
*         ROM EC 5600 SYSTEM RESET SEQUENCE ERR.
*         ROM EC 5601 INITIAL SELECT/REWIND SEQUENCE ERR. 
*         ROM EC 5602 CAN'T LOCATE MICROCODE RECORD ON TAPE.
*         ROM EC 5603 INPUT MICROCODE RECORD ERR. 
*         ROM EC 5604 RAM MICROCODE CHECKSUM ERR. 
*         ROM EC 5605 FINAL SELECT/REWIND SEQUENCE ERR. 
* 
*    8.3  PRODUCT OVERLAY ERROR MESSAGES
* 
*         7504 - WC OR BUFFER INDEX ERROR.
*         7510 - I/O CH NOT ASSIGNED. 
*         7511 - I/O CH ACTIVE FROM SYSTEM. 
*         7512 - NO INACTIVE TO LAST FUNCTION.
*         7513 - NO INACTIVE TO STATUS FUNCTION.
*         7514 - NO STATUS RETURNED.
*         7515 - INCOMPLETE STATUS RETURNED.
*         7516 - ALL DATA NOT ACCEPTED FROM PP. 
*         7517 - INCOMPLETE DATA RETURNED TO PP.
*         7520 - UNIT NOT CONNECTED.
*         7521 - ABNORMAL GENERAL STATUS. 
*         7522 - UNIT HUNG BUSY.
*         7523 - NO END OF OPERATION. 
*         7524 - CHANNEL PARITY ERROR ON INPUT. 
*         7525 - MULTIPLE RETRIES ON ONE OPERATION. 
*         7526 - CONTROL UNIT/UNIT BUSY ON CONNECT. 
* 
***  9.0  GLOSSARY
**
*    9.1  ABBREVIATIONS 
* 
*         AC     - ACTUAL 
*         ACT    - ACTUAL 
*         ADDR   - ADDRESS
*         ALT    - ALTERNATE
*         ATLD   - AUTOLOAD 
*         AUX    - AUXILIARY
*         BFR    - BUFFER 
*         BKSP   - BACKSPACE
*         BLK    - BLOCK
*         BOT    - BEGINNING OF TAPE
*         CCR    - CHANNEL COMMAND RETRY
*         CH     - CHANNEL
*         CHAR   - CHARACTER
*         CKSM   - CHECKSUM 
*         CMD    - COMMAND
*         CNT    - COUNT
*         CNTR   - COUNTER
*         COND   - CONDITION
*         CORR   - CORRECTION 
*         CRC    - CYCLIC REDUNDANCY CHECK
*         CU     - CONTROL UNIT 
*         CW     - CONTROLWARE
*         DIAG   - DIAGNOSTIC 
*         DIFF   - DIFFERENCE 
*         EC     - ERROR CODE 
*         EOF    - END OF FILE
*         EOP    - END OF OPERATION 
*         ERP    - ERROR RECOVERY PROCEDURE 
*         ERPA   - ERROR RECOVERY PROCEDURE ACTION
*         ERR(S) - ERROR OR ERRORS
*         EX     - EXPECTED 
*         EXP    - EXPECTED 
*         FCN    - FUNCTION 
*         FIPS   - FEDERAL INTERFACE PROCESSING STANDARD
*         FM/TM  - FILE MARK/TAPE MARK
*         FWD    - FORWARD
*         GS     - GENERAL STATUS 
*         HDWR   - HARDWARE 
*         HW     - HARDWARE 
*         IPS    - INCHES PER SECOND
*         I/O    - INPUT/OUTPUT 
*         LD     - LOAD 
*         LENG   - LENGTH 
*         LF     - LAST FUNCTION
*         LSF    - LAST STATUS FUNCTION 
*         MAINT  - MAINTENANCE
*         MAX    - MAXIMUM
*         MB     - MEGABYTE 
*         MBL    - MINIMUM BLOCK LENGTH 
*         MIN    - MINIMUM
*         MSG    - MESSAGE
*         OP     - OPERATION
*         PRS    - PATTERN RECOGNITION SEQUENCER
*         RAM    - RANDOM ACCESS MEMORY 
*         RD     - READ 
*         REC    - RECORD 
*         REG    - REGISTER 
*         REQ    - REQUEST
*         REV    - REVERSE
*         ROM    - READ ONLY MEMORY 
*         RPI    - RE-POSITIONING IN
*         R/W    - READ/WRITE 
*         SEQ    - SEQUENCE 
*         STRM   - STREAM 
*         STS    - STATUS 
*         TRK    - TRACK
*         TCU    - TAPE CONTROL UNIT
*         W      - WRITE
*         WC     - WORD COUNT 
*         WD     - WORD 
*         WDS    - WORDS
*         WR     - WRITE
*         WT     - WORDS TRANSMITTED
* 
   MODULE TCT00,DCART(46,47)LOCK   -  PARAMETER VALIDATION -
*** TCT00  - PARAMETER VALIDATION 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT00 VERIFIES THAT THE PARAMETERS THAT  HAVE  BEEN  ENTERED
*         INTO  PARAMETER  REGISTERS P0 THRU P9 ARE WITHIN LEGAL RANGE
*         FOR USE BY A SUBSYSTEM AND THE REMAINING TCT MODULES. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. TEST P1 PARAMETER REGISTER FOR LEGAL VALUES. 
*         3. TEST P2 PARAMETER. 
*         4. TEST P4 PARAMETER. 
*         5. RESERVE THE UNIT.
*         6. STATUS THE UNIT. 
*         7. IF  BIT  9  NOT  PRESENT  IN  STATUS POST CONTROLWARE NOT
*            RUNNING MESSAGE. 
*         8. IF ANY ERRORS POST ERROR MESSAGE AND PARAMETERS  THAT ARE
*            SET AND END THE MODULE.
*         9. IF NO ERRORS EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. TCT00 - PARAMETER ERROR(S).
*         2. ILLEGAL CORRECTION SELECTION  -(P1)- 
*         3. ILLEGAL RECORD LENGTH SELECTION   -(P2)- 
*         4. ILLEGAL PATTERN SELECTION  -(P4)-
*         5. TCT00 - CONTROLWARE NOT RUNNING. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         NONE
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B6  = MESSAGE LINE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97F - STATUS ANALYSIS MODULE.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT00 - PARAMETER VALIDATION
2  FORMAT TCT00 - PARAMETER ERROR(S). 
3  FORMAT    ILLEGAL RECORD LENGTH SELECTION  -(P2)-
4  FORMAT    ILLEGAL PATTERN SELECTION  -(P4)-
5  FORMAT    ILLEGAL CORRECTION SELECTION  -(P1)- 
6  FORMAT P0=*OCT  P1=*OCT  P2=*OCT  P3=*OCT  P4=*OCT 
7  FORMAT P5=*OCT  P6=*OCT  P7=*OCT  P8=*OCT  P9=*OCT 
10 FORMAT PARAMETERS DESCRIBED IN MODULE TCT99B.
11 FORMAT TCT00 - CHANGE PARAMETERS AND RERUN.
12 FORMAT TCT00 - CONTROLWARE NOT RUNNING.
* 
* --------MODULE INITIALIZATION 
* 
30 B15 = 00D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B6 = 1                        *SET LINE NUMBER FOR ERROR MESSAGES
* 
* --------MODULE TEST 
* 
   IF (P1.AND.7777.EQ.0) GOTO 40
   IF (P1.AND.7777.EQ.100) GOTO 40
   ERROR 5/0, GOSUB 70           *ILLEGAL PARAMETER P1
* 
* --------TEST OTHER PARAMETER REGISTERS
* 
40 IF (P2.EQ.0) ERROR 3/0, GOSUB 70  *BAD WC
   IF (P4.AND.3000.EQ.3000) ERROR 4/0, GOSUB 70  *BAD PATTERN 
   IF (B6.NE.1) GOTO 56          *IF PREVIOUS ERRORS
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 60                *RESERVE 
   B14 = 16                      *COMMAND INDEX FOR GENERAL STATUS
   STATUS GENERAL, ABT 60 
   IF (SB(1).AND.1000.NE.1000) ERROR 12/0, GOSUB 70  *CONTROLWARE NOT RUN 
* 
* --------IF ERRORS, REPORT THEM AND TERMINATE
* 
52 IF (B6.NE.1) GOTO 56          *IF ERRORS 
   EXIT                          *NORMAL EXIT 
56 MSG 2 TO LINE 0
   MSG 6(P0,P1,P2,P3,P4) TO LINE B6 
   B6 = B6 + 1
   MSG 7(P5,P6,P7,P8,P9) TO LINE B6 
   B6 = B6 + 2
   MSG 10 TO LINE B6
   PICTURE                       *REPORT ERRORS TO OUTPUT FILE
   GOTO 77                       *ABNORMAL TERMINATION
* 
* --------RESERVE ABORT PROCESSOR 
* 
60 B13 = B13 + 1                 *BUMP ERROR COUNT
   CALL 97A                      *REPORT STATUS 
   GOTO 77                       *TERMINATE 
* 
* --------ADD ERROR TO DISPLAY
* 
70 MSG EM TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   RETURN 
77 MSG 11 TO DISPLAY,PRINT
   PAUSE
   GOTO 77
   END 30 
COMPILE   - TCT00 - 
*IF DEF,CMSE17X 
   MODULE TCT01,DCART(46,47)LOCK   -  EXECUTE CCC ROM DIAGNOSTICS - 
*** TCT01 - EXECUTE CCC ROM DIAGNOSTICS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT01 VERIFIES THAT THE EXECUTE CCC ROM DIAGNOSTICS FUNCTION
*         OPERATES PROPERLY.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. EXECUTE CCC ROM DIAG.
*         4. VERIFY STATUS. IF ERROR REPORT EC 120. 
*         5. REPEAT STEPS 2-3 FOR 25 TIMES. 
*         6. IF REPEAT CONDITION, REPEAT STEPS 2-5. 
*         7. REPEAT MODULE OR EXIT. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT01 - ERROR CODE = EEEE  AT LINE (EA) = LLLL 
*         3. TCT01 - EC 120 - STATUS ERROR AFTER EXECUTE CCC ROM DIAG 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = LOOP COUNT. 
*         B2  = RESERVE OPTIONS.
*         B6  = PASS COUNT FOR SCOPING LOOPS. 
*         B7  = CODE FOR STATUS ANALYSIS. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT01 - EXECUTE CCC ROM DIAGNOSTICS 
2  FORMAT TCT01 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
3  FORMAT TCT01 - ERRS=*DEC LOOPS=*DEC
4  FORMAT TCT01 ERROR(S) IN MODULE = *DEC 
6  FORMAT TCT01 - ITERATION COUNT = *DEC (D)
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 01D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
22 B0 = 0                        *CLEAR LOOP COUNT
24 B14 = 12                      *COMMAND INDEX FOR RES 
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   RES P1, ABT 74                *RESERVE 
   B14 = 33                      *COMMAND INDEX FOR EXECUTE 
   B7 = 20                       *EXECUTE CCC ROM FLAG
   EXECUTE CCC ROM DIAG, ABT 74 
   B14 = 15                      *COMMAND INDEX FOR STATUS
   STATUS, ABT 74 
   IF(SB(1).AND. 5000 .EQ. 5000) ERROR 2/120, GOSUB 70
   GOTO 24 WHILE (B0+1.LT.25D)
* 
* --------MODULE REPEAT/EXIT
* 
62 IF (ES.AND.SL.EQ.0) GOTO 64   *NOT SCOPING 
63 B6 = B6 + 1                   *BUMP PASS COUNT 
   MSG 3(B13,B6) TO DISPLAY      *POST SCOPING MSG
64 IF (ES.AND.CM.NE.0) GOTO 22   *RC OR RM
   IF (B13.EQ.0) GOTO 66         *NO MODULE ERRORS
   MSG 4(B13) TO DAYFILE         *INDICATE ERRORS TO DAYFILE
66 EXIT 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 3 (B13,B6) TO DISPLAY     *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 3 (B13,B6) TO DISPLAY     *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 66                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT01 - 
*ENDIF
   MODULE TCT03,DCART(46,47)LOCK   -  TAPE MOTION TEST -
*** TCT03  - TAPE MOTION TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT03 TESTS THE ABILITY OF THE TAPE UNIT TO MOVE TAPE AT LOW
*         SPEEDS FORWARD AND REVERSE. DATA INTEGRITY IS IGNORED DURING
*         THE PROCESS. INCREMENTING LENGTHS OF TAPE ARE  MOVED FROM .3
*         INCHES  UP  TO  6  INCHES IN INCREMENTS OF .3 INCHES WITH NO
*         DELAYS BETWEEN MOVES. A SHORT (LOW SPEED) REWIND IS  USED TO
*         TEST REVERSE. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         4. REWIND.
*         5. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         6. SET ERASE COUNT = 1. 
*         7. RESERVE. 
*         8. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         9. ERASE .3 INCHES OF TAPE. 
*        10. VERIFY NOT AT -BOT-. REPORT EC137 IF ERROR.
*        11. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        12. REPEAT STEPS 9-11 ERASE COUNT TIMES. 
*        13. BUMP ERASE COUNT BY 1 (ADD .3 INCHES TO  LENGTH  OF  TAPE
*            MOVED).
*        14. REPEAT STEPS 7-13 UNTIL ERASE COUNT IS 20  (APPROXIMATELY
*            6 INCHES OF TAPE). 
*        15. REWIND.
*        16. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        17. REPEAT MODULE OR EXIT. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT03 - ERROR CODE = EEEE  AT LINE (EA) = LLLL 
*         3. EC 132 - ABNORMAL STATUS.
*         4. EC 137 - STILL AT BOT AFTER AN ERASE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = ERASE COUNT (TO DO).
*         B1  = CURRENT ERASE COUNT (NUMBER DONE).
*         B3  = STATUS BUFFER INDEX.
*         B6  = PASS COUNT FOR SCOPING LOOPS. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT03 - TAPE MOTION TEST -
2  FORMAT TCT03 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
3  FORMAT TCT03 - ERRS=*DEC LOOPS=*DEC
4  FORMAT TCT03 ERROR(S) IN MODULE = *DEC 
6  FORMAT TCT03 - ITERATION (FILE) COUNT = *DEC (D) 
* 
/ --- OB(1-2) = STATUS MASK     OB(21-22) = EXPECTED STATUS 
* 
   DATA (OB(1),CON) 1403,7777 
   DATA (OB(21),CON) 1401,0 
   EQUATE BOT TO 4
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 03D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
22 B0 = 1                        *SET ERASE COUNTER 
   B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOSUB 40                      *VERIFY STATUS 
   B7 = 703                      *REWIND MOTION CODE, IGNORE DATA 
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOSUB 40                      *VERIFY STATUS 
24 B1 = 0                        *CLEAR CURRENT ERASE COUNT 
   B7 = 701                      *FWD WRITE MOTION, IGNORE DATA 
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOSUB 40                      *VERIFY STATUS 
   B14 = 3                       *COMMAND INDEX FOR ERASE 
30 ERASE, ABT 74                 *MOVE .3 INCHES OF TAPE
   IF (SB(1).AND.BOT.NE.0) ERROR 2/137, GOTO 70 
   GOSUB 40                      *VERIFY STATUS 
   GOTO 30 WHILE (B1+1.NE.B0)    *DO B0 ERASES
   GOTO 24 WHILE (B0+1.NE.20D)   *GO UP TO 6 INCHES 
   B7 = 703                      *REWIND MOTION, IGNORE DATA
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *SHORT REWIND
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOSUB 40                      *VERIFY STATUS 
   GOTO 62                       *TEST REPEAT CONDITION AND MODULE
* 
* --------TEST STATUS SUBROUTINE
* 
40 B3 = 1 
42 IF (SB(B3).AND.OB(B3).NE.OB(B3+20)) ERROR 2/132, GOTO 70 
   GOTO 42 WHILE (B3+1.NE.3)
   RETURN 
* 
* --------MODULE REPEAT/EXIT
* 
62 IF (ES.AND.SL.EQ.0) GOTO 64   *NOT SCOPING 
63 B6 = B6 + 1                   *BUMP PASS COUNT 
   MSG 3(B13,B6) TO DISPLAY      *POST SCOPING MSG
64 IF (ES.AND.CM.NE.0) GOTO 22   *RC OR RM
   IF (B13.EQ.0) GOTO 66         *NO MODULE ERRORS
   MSG 4(B13) TO DAYFILE         *INDICATE ERRORS TO DAYFILE
66 EXIT 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 3 (B13,B6) TO DISPLAY     *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 3 (B13,B6) TO DISPLAY     *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 66                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT03 - 
   MODULE TCT05,DCART(46,47)LOCK   -  RANDOM TAPE MOTION TEST - 
*** TCT05  - RANDOM TAPE MOTION TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT05 TESTS THE ABILITY OF THE TAPE UNIT TO MOVE TAPE AT LOW
*         SPEED FORWARD AND HIGH REVERSE.  DATA INTEGRITY  IS  IGNORED
*         DURING THE PROCESS. INCREMENTING  LENGTHS  OF TAPE ARE MOVED
*         FROM .3 INCHES UP TO 1  FOOT IN INCREMENTS OF .3 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. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         4. REWIND.
*         5. SET DELAY TIME TO 1 MILLISECOND. 
*         6. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*         7. SET ERASE COUNT = 1. 
*         8. RESERVE. 
*         9. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        10. ERASE .3 INCHES OF TAPE. 
*        11. VERIFY NOT AT -BOT-. REPORT EC137 IF ERROR.
*        12. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        13. REPEAT STEPS 10-12 ERASE COUNT TIMES.
*        14. BUMP ERASE COUNT BY 1 (ADD .3 INCHES TO  LENGTH  OF  TAPE
*            MOVED).
*        15. RELEASE. 
*        16. DELAY THE NUMBER OF MILLISECONDS SPECIFIED BY DELAY TIME.
*        17. MULTIPLY DELAY TIME BY 4.  RESET TO 1 IF OVERFLOW. 
*        18. REPEAT STEPS 7-16 UNTIL ERASE COUNT IS 40  (APPROXIMATELY
*            1 FOOT OF TAPE). 
*        19. REWIND.
*        20. VERIFY STATUS. REPORT EC 132 IF ERROR. 
*        21. REPEAT MODULE OR EXIT. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT05 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. TCT05 - EC 132 - ABNORMAL STATUS.
*         4. TCT05 - EC 137 - STILL AT BOT AFTER AN ERASE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = ERASE COUNT (TO DO).
*         B1  = CURRENT ERASE COUNT (NUMBER DONE).
*         B2  = DELAY TIME. 
*         B3  = STATUS BUFFER INDEX.
*         B5  = MESSAGE NUMBER IN CASE OF COMMAND ABORT.
*         B6  = PASS COUNT FOR SCOPING LOOPS. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT05 - RANDOM TAPE MOTION TEST - 
2  FORMAT TCT05 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
3  FORMAT TCT05 - ERRS=*DEC LOOPS=*DEC
4  FORMAT TCT05 ERROR(S) IN MODULE = *DEC 
6  FORMAT TCT05 - ITERATION (FILE) COUNT = *DEC (D) 
* 
/ --- OB(1-2) = STATUS MASK     OB(21-22) = EXPECTED STATUS 
* 
   DATA (OB(1),CON) 1403,7777 
   DATA (OB(21),CON) 1401,0 
   EQUATE BOT TO 4
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 05D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
22 B0 = 1                        *SET ERASE COUNTER 
   B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOSUB 40                      *VERIFY STATUS 
   B7 = 703                      *REWIND MOTION CODE, IGNORE DATA 
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOSUB 40                      *VERIFY STATUS 
   B2 = 1                        *SET STARTING DELAY TIME 
24 B1 = 0                        *CLEAR CURRENT ERASE COUNT 
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   B7 = 701                      *FWD WRITE MOTION, IGNORE DATA 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOSUB 40                      *VERIFY STATUS 
   B14 = 3                       *COMMAND INDEX FOR ERASE 
26 ERASE, ABT 74                 *MOVE .3 INCHES OF TAPE
   IF (SB(1).AND.BOT.NE.0) ERROR 2/137, GOTO 70 
   GOSUB 40                      *VERIFY STATUS 
   GOTO 26 WHILE (B1+1.NE.B0)    *DO B0 ERASES
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   DELAY B2 MSEC                 *DELAY BETWEEN TAPE MOVEMENTS
   B2 = B2.LS.2                  *BUMP DELAY TIME 
   GOTO 24 WHILE (B0+1.NE.40D)   *GO UP TO 1 FOOT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 703                      *REWIND MOTION, IGNORE DATA
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *LONG REWIND 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOSUB 40                      *VERIFY STATUS 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *TEST REPEAT CONDITION AND MODULE
* 
* --------TEST STATUS SUBROUTINE
* 
40 B3 = 1 
42 IF (SB(B3).AND.OB(B3).NE.OB(B3+20)) ERROR 2/132, GOTO 70 
   GOTO 42 WHILE (B3+1.NE.3)
   RETURN 
* 
* --------MODULE REPEAT/EXIT
* 
62 IF (ES.AND.SL.EQ.0) GOTO 64   *NOT SCOPING 
63 B6 = B6 + 1                   *BUMP PASS COUNT 
   MSG 3(B13,B6) TO DISPLAY      *POST SCOPING MSG
64 IF (ES.AND.CM.NE.0) GOTO 22   *RC OR RM
   IF (B13.EQ.0) GOTO 66         *NO MODULE ERRORS
   MSG 4(B13) TO DAYFILE         *INDICATE ERRORS TO DAYFILE
66 EXIT 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 3 (B13,B6) TO DISPLAY     *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 3 (B13,B6) TO DISPLAY     *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 66                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT05 - 
   MODULE TCT07,DCART(46,47)LOCK   -  BUFFER/TAPE TEST -
*** TCT07  - BUFFER/TAPE TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT07  IS A DATA INTEGRITY TEST THAT VERIFIES THE ABILITY TO
*         WRITE ZEROS IN ALL BITS BUT ONE OF THE  BUFFER  WORDS  WHILE
*         ONES ARE WRITTEN INTO THE BIT UNDER TEST. THE DATA  IS  THEN
*         WRITTEN TO TAPE. ALL BITS ARE TESTED IN  THIS  FASHION UNTIL
*         ALL BITS ARE COMPLETED. ALL BITS ARE THEN REPEATED 10 TIMES.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OUTPUT BUFFER WITH BIT PATTERN. 
*         5. RESERVE. 
*         6. WRITE. 
*         7. EXIT IF END OF TAPE. 
*         8. VERIFY STATUS.  EC 14X IF ERROR (X=BIT UNDER TEST) 
*         9. RELEASE. 
*        10. REPEAT STEPS 4-9 FOR ALL BITS. 
*        11. REPEAT STEPS 4-10 FOR 10 TIMES.
*        12. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT07 -EC 014X- STATUS ERR-LAST DIGIT=DATA BIT.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = LOOP COUNTER. 
*         B1  = DATA BIT COUNTER. 
*         B2  = NUMBER OF CHARACTER TO STORE. 
*         B3  = DATA PATTERN. 
*         B4  = NUMBER OF BITS TO TEST (8). 
*         B5  = POINTER TO ERROR MESSAGE IN CASE OF ABORT.
*         B6  = PASS COUNT FOR SCOPING LOOPS. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT97F - STATUS ANALYSIS MODULE.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT07 - BUFFER/TAPE TEST
1  FORMAT TCT - CARTRIDGE TAPE SUBSYSTEM TEST 
2  FORMAT TCT07 -EC *DEC- STATUS ERR-LAST DIGIT=DATA BIT. 
3  FORMAT TCT07 ERROR(S) IN MODULE = *DEC 
4  FORMAT TCT07 - ERRS=*DEC LOOPS=*DEC
6  FORMAT TCT07 - ITERATION (FILE) COUNT = *DEC (D) 
* 
   EQUATE ERROR TO 4040, EOT TO 10
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 07D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNT 
   WC = 4777
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 70                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 70 
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR DATA BIT COUNT
   B3 = 1                        *DATA
30 B4 = 10
   B2 = 500 
32 DUP B4 BITS OF B3 TO OB FOR B2  *FILL BUFFER 
36 MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 70                *RESERVE 
   B7 = 1                        *WRITE MOTION CODE 
   B14 = 22                      *COMMAND INDEX FOR WRITE 
   WRITE, ABT 70
   IF (SB(1).AND.EOT.NE.0) GOTO 64  *IF END OF TAPE 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 44  *NO STATUS ERROR
   B3 = 140D + B1                *FORM ERROR CODE 
   MSG 2 (B3) TO LINE 1 
   B13 = B13 + 1                 *BUMP ERROR COUNT
   B6 = B6 + 1                   *BUMP PASS COUNT 
   IF (ES.AND.SL.EQ.0) GOTO 40
   MSG 4 (B13,B6) TO DISPLAY
   GOTO 36
40 MSG 1 TO LINE 0               *TEST HEADER MESSAGE 
   CALL 97F                      *STATUS ANALYSIS MODULE
   MSG 0 TO DISPLAY 
44 B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 70
   IF (ES.AND.RC.EQ.0) GOTO 50   *IF NOT REPEAT CONDITION 
   B6 = B6 + 1                   *BUMP PASS COUNT 
   IF (ES.AND.SL.EQ.0) GOTO 36   *IF NOT SCOPING, REPEAT CONDITION
   MSG 4(B13,B6) TO DISPLAY      *POST SCOPING LOOP MSG 
   GOTO 36                       *REPEAT CONDITION
50 B3 = B3 + B3                  *SHIFT DATA BIT LEFT 
   IF (B3.EQ.0) GOTO 56          *IF ALL PATTERNS TESTED
   B1 = B1 + 1                   *BUMP DATA BIT POINTER 
   IF (B1.LT.8D) GOTO 32         *EXTRA BITS OF PATTERN 
54 B3 = 0 
   GOTO 32                       *TEST 9TH BIT
56 B3 = 1 
   B1 = 0 
   GOTO 32 WHILE (B0+1.NE.10D)   *REPEAT ALL BITS 10 TIMES
* 
* --------MODULE REPEAT/EXIT
* 
64 IF (ES.AND.RM.NE.0) GOTO 22   *IF REPEAT MODULE
   IF (B13.EQ.0) GOTO 66
   MSG 3(B13) TO DAYFILE
66 EXIT 
* 
* --------PROCESS MODULE DETECTED ERRORS AND ABORTS 
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.NE.0) GOTO 74   *IF SCOPING
   CALL 97A                      *POST ABORT MESSAGE
   GOTO 76                       *RETRY 
74 MSG 4(B13,B6) TO DISPLAY      *POST SCOPING MSG
   GOTO 22                       *REPEAT
76 MSG 0 TO DISPLAY 
   IF (B13.LT.2) GOTO 22         *RETRY IF NOT 2 ERRORS 
   GOTO 64
   END 20 
COMPILE   - TCT07 - 
   MODULE TCT11,DCART(46,47)LOCK   -  ERASE TEST -
*** TCT11  - ERASE TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         AN ERASE FUNCTION IS ISSUED, THEN  GENERAL STATUS IS CHECKED
*         FOR AN *ALERT*. THIS PROCESS CONTINUES UNTIL FILE MAX OR EOT
*         IS REACHED. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. CHECK FOR MAINTENANCE MODE AND SET FILE MAX. 
*         5. RESERVE. 
*         6. ERASE. 
*         7. GO TO STEP 11 IF END OF TAPE.
*         8. CHECK FOR *ALERT*. REPORT EC 246 IF ERROR. 
*         9. REPEAT STEPS 5-8 UNTIL FILE MAX ERASES DONE. 
*        10. REPEAT MODULE IF SELECTED. 
*        11. RELEASE. 
*        12. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT11 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 246- AN ALERT STATUS OCCURRED AFTER AN ERASE 
*            OPERATION. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE (ERASE) COUNT. 
*         B1  = CURRENT FILE (ERASE) COUNT FOR MESSAGE. 
*         B2  = CURRENT FILE (ERASE) COUNT FOR MESSAGE. 
*         B3  = FILE MAX. 
*         B5  = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT11 - ERASE TEST -
2  FORMAT TCT11 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT11 - ITERATION (ERASE) COUNT = *DE*D (D) 
14 FORMAT TCT11 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT11 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ALERT TO 4000, EOT TO 10
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 11D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B0 = 0                        *CLEAR ITERATION COUNT 
   B1 = 0                        *CLEAR ITERATION COUNT FOR MESSAGE 
   B2 = 0                        *CLEAR ITERATION COUNT FOR MESSAGE 
   B3 = 100                      *FILE MAX FOR DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 24   *DIAGNOSTIC MODE SELECTED
   B3 = P8                       *FILE MAX FOR MAINT MODE 
24 MSG 6 (B1,B2) TO LINE 20      *ITERATION COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------ERASE 
* 
   B7 = 1                        *FORWARD WRITE MOTION
   B14 = 3                       *COMMAND INDEX FOR ERASE 
   ERASE, ABT 74
30 IF (SB(1).AND.EOT.NE.0) GOTO 50  *EOT DETECTED 
   IF (SB(1).AND.ALERT.NE.0) ERROR 2/246, GOSUB 70  *ALERT
   B2 = B2 + 1                   *INCREMENT MESSAGE FILE COUNT
   IF (B2.LT.100D) GOTO 40       *IF FILE COUNT LT 100D 
   B1 = B1 + 1                   *INCREMENT UPPER COUNT 
   B2 = 0                        *SET LOWER COUNT TO ZERO 
40 IF (B3.EQ.0) GOTO 24          *LOOP IF FILE MAX IS 0 
   GOTO 24 WHILE(B0 + 1.LE.B3)   *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
50 B6 = B6 + 1   .               *LOOP COUNT
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   IF (ES.AND.SL.EQ.0) GOTO 52   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
52 IF (ES.AND.CM.NE.0) GOTO 22   *REPEAT MODULE/CONDITION 
   IF (B13.EQ.0) GOTO 56         *NO ERRORS 
54 MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
56 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 52                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT11 - 
   MODULE TCT13,DCART(46,47)LOCK   -  WRITE FM/TM - 
*** TCT13  - WRITE FILEMARK/TAPEMARK
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         WRITE FILEMARK/TAPEMARK UNTIL FILE MAX. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. CHECK FOR MAINTENANCE MODE AND SET FILE MAX. 
*         5. RESERVE. 
*         6. ENDFILE. 
*         7. GO TO STEP 12 IF END OF MAX PASSES.
*         8. CHECK FOR *EOF*. REPORT EC 122 IF NOT PRESENT. 
*         9. REPEAT STEPS 5-8 UNTIL FILE MAX ENDFILES DONE. 
*        10. RELEASE. 
*        11. REPEAT MODULE IF SELECTED. 
*        12. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT13 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 122- NO  FM/TM  STATUS  IN  GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B2  = FILE MAX. 
*         B5  = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT13 - WRITE FILEMARK/TAPEMARK - 
2  FORMAT TCT13 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT13 ITERATION (FILE) COUNT = *DEC (D) 
14 FORMAT TCT13 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT13 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE EOT TO 10, FILEMK TO 20 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 13D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B0 = 0 
   WC = P2                       *RECORD LENGTH TO WC REG 
   B2 = P8                       *FILE MAX MAINT MODE 
   IF (P3.AND.40.NE.0) GOTO 24   *MAINTENANCE MODE SELECTED 
   B2 = 100                      *FILE MAX DIAG MODE
24 IF (B2.EQ.0) B2 = 1000D       *FILE MAX SET TO 1000D 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
* 
* --------WRITE FILEMARK/TAPEMARK 
* 
40 MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   B7 = 1                        *FORWARD WRITE CODE
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
42 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70  *NO FM/TM
   IF (B2.EQ.0) GOTO 24          *INFINITE FILE COUNT 
   IF (B0.LT.B2) GOTO 24         *FILE COUNT NOT EXHAUSTED
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
* 
* --------MODULE REPEAT/EXIT
* 
60 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 62   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
62 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
64 MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 62                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT13 - 
   MODULE TCT14,DCART(46,47)LOCK   -  READ FM/TM -
*** TCT14  - READ FILEMARK/TAPEMARK 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         READ FORWARD AND CHECK FOR FM/TM SEQUENCE IS INITIATED. THIS
*         SEQUENCE CONTINUES FILE MAX.
* 
*         THIS  MODULE  IS  DEPENDENT  ON  THE  TAPE CREATED BY MODULE
*         *TCT13*. (TAPE OF ALL FILE MARKS).
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. CHECK FOR MAINTENANCE MODE AND SET FILE MAX. 
*         5. RESERVE. 
*         6. READ FORWARD.
*         7. GO TO STEP 13 IF FILE MAX. 
*         8. CHECK FOR *EOF*. REPORT EC 252 IF NOT PRESENT. 
*         9. REPEAT STEPS 5-8 UNTIL FILE MAX FORWARD READS DONE.
*        10. RESERVE. 
*        11. GO TO STEP 13 IF BOT.
*        12. CHECK FOR *EOF*. REPORT EC 251 IF NOT PRESENT. 
*        13. REPEAT MODULE OR EXIT. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT14 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 252- FILE  MARK STATUS IS MISSING AT END-OF-OPERATION
*            DURING FORWARD READ FILE MARK TEST.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B2  = FILE MAX. 
*         B5  = MSG NUMBER(SET BEFORE ENTRY) FOR MESSAGE PROCESSOR. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT14 - READ FILEMARK/TAPEMARK -
2  FORMAT TCT14 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT14 - ITERATION (FILE) COUNT = *DEC (D) 
14 FORMAT TCT14 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT14 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE EOT TO 10, FILEMK TO 20, BOT TO 4 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 14D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B0 = 0 
   B2 = P8                       *FILE MAX MAINT MODE 
   IF (P3.AND.40.NE.0) GOTO 24   *MAINTENANCE MODE SELECTED 
   B2 = 100                      *FILE MAX DIAG MODE
24 IF (B2.EQ.0) B2 = 1000D       *FILE MAX SET TO 1000D 
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   GOSUB 60                      *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
30 IF (SB(1).AND.EOT.NE.0) GOTO 34  *EOT DETECTED 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/252, GOSUB 70  *FM/TM 
   IF (B2.EQ.0) GOTO 24          *INFINITE FILE COUNT 
   IF (B0.LT.B2) GOTO 24         *FILE COUNT NOT EXHAUSTED
34 GOSUB 60                      *RESERVE 
* 
* --------MODULE REPEAT/EXIT
* 
50 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 52   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
52 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 56         *NO ERRORS 
54 MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
56 EXIT                          *NORMAL TERMINATION
* 
* --------RESERVE SUBROUTINE
* 
60 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   ENDSUB                        *END ALL SUBROUTINES 
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 52                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT14 - 
   MODULE TCT15,DCART(46,47)LOCK   -  MAINTENANCE WRITE - 
*** TCT15  - MAINTENANCE WRITE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE AT WITH PATTERN SELECTED BY  THE
*         *PARAM* DIRECTIVE.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* OR *EOT*
*         IS REACHED. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         6. APPLY ADDRESS CODING IF SELECTED.
*         7. RESERVE. 
*         8. WRITE. 
*         9. GO TO STEP 15 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. REPEAT STEPS 5-10 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        12. ENDFILE. 
*        13. REPORT EC 122 IF NO *EOF* STATUS.
*        14. REPEAT STEPS 5-13 UNTIL *FILE MAX* FILES WRITTEN.
*        15. WRITE DOUBLE ENDFILE.
*        16. REPEAT MODULE OR EXIT. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT15 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 122- NO  FM/TM  STATUS  IN  GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
*         4. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A -MAINTENANCE WRITE- OPERATION.  NOTE THAT
*            GENERAL STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA PATTERN FLAG. 
*         B3  = PATTERN FOR STORING.
*         B4  = FILE MAX. 
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM SEED.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT15 - MAINTENANCE WRITE - 
2  FORMAT TCT15 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT15 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT15 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 15D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *INITIALIZE ABORT COUNTER
   B4 = 100                      *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 22   *DIAGNOSTIC MODE SELECTED
   B4 = P8                       *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 IF (P4.AND.3000.EQ.2000) GOTO 26  *RANDOM PATTERN SELECTED 
   B5 = 500 
   B3 = P4
   B8 = 10                       *NUMBER OF BITS TO DUP 
* 
* --------FILL BUFFER 
* 
24 IF (P4.AND.3000.EQ.1000) B3 = P4.XOR.7777
   DUP B8 BITS OF P4/B3 TO OB FOR B5
   GOTO 32
26 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 30    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
30 RANDOM TO OB FOR 500, START B9 
32 WC = P2                       *RECORD LENGTH TO WC REG 
34 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
36 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 36       *BUMP RECORD COUNT 
   IF (B2.EQ.0) GOTO 40          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
40 IF (P3.AND.1.NE.0) GOTO 44    *BYPASS ADDRESS CODING 
   OB(1) = B0                    *FILE COUNT
   OB(2) = B1 
   OB(3) = WC 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 22                      *COMMAND INDEX FOR WRITE 
   WRITE, ABT 74
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
52 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 54  *NO ERROR DETECTED
   ERROR 2/200, GOSUB 70
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
54 IF (P9.EQ.0) GOTO 36          *WRITE TO EOT IF P9 ZERO 
   IF (B1.NE.P9) GOTO 36         *P9 RECORDS NOT DONE 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
56 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (B4.EQ.0) GOTO 36          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.B4) GOTO 36         *MAX FILES NOT PROCESSED 
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *IF END OF MODULE BUT NOT EOT
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 63   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 34                       *RESTART 
63 IF (ES.AND.CM.NE.0) GOTO 34   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
64 MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 34                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 34         *NOT SECOND TRY
   GOTO 63                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT15 - 
   MODULE TCT16,DCART(46,47)LOCK   -  MAINTENANCE READ -
*** TCT16  - MAINTENANCE READ 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS   MODULE  READS  THE  TAPE  CREATED  BY  MODULE  TCT15,
*         MAINTENANCE WRITE.  ERRORS CAN BE EXPECTED IF THIS MODULE IS
*         EXECUTED OUT OF SEQUENCE. 
* 
*         RECORDS   ARE  READ  FROM  TAPE  ACCORDING  TO  THE  PATTERN
*         SPECIFIED BY THE *PARAM* DIRECTIVE. READING CONTINUES IN THE
*         FORWARD DIRECTION UNTIL RECORD MAX OR FILE MAX OR  -EOT-  IS
*         REACHED.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. RELEASE IF DATA COMPARE SELECTED.
*         7. GO TO STEP 17 IF *EOT*.
*         8. REPORT EC 207 IF *EOF* DETECTED  WHEN  NOT  EXPECTED  AND
*            REQUESTED TO DO SO BY THE USER.
*         9. REPORT EC 201 IF *ERROR* STATUS. 
*        10. GO TO STEP 14 IF DATA COMPARE IS NOT SELECTED. 
*        11. GENERATE EXPECTED DATA PATTERN IN OB.
*        12. ADD ADDRESS CODING IF SELECTED.
*        13. COMPARE IB TO OB.  REPORT EC 105 IF ERROR DETECTED.
*        14. REPEAT STEPS 4-13 FOR *RECORD MAX* RECORDS.
*        15. REPEAT STEPS 4-14 FOR *FILE MAX* FILES.
*        16. REPEAT MODULE OR EXIT. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT16 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM  WAS DETECTED DURING A MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERN FOR STORING.
*         B3  = FM/TM FLAG. 
*         B4  = NUMBER OF BITS TO DUP (8).
*         B5  = NO OF DATA WORDS TO COMPARE/STORE.
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = FILE MAX. 
*         B9  = EOF FLAG FOR EOT. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
/         TAPE MUST BE *TCT15* GENERATED FOR DATA COMPARE 
* 
0  FORMAT TCT16 - MAINTENANCE READ -
2  FORMAT TCT16 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT16 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT16 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4050, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 16D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *INITIALIZE ABORT COUNTER
   WC = P2                       *SET WORD COUNT REGISTER 
   B8 = 100                      *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 22   *DIAGNOSTIC MODE SELECTED
   B8 = P8                       *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0 
   B1 = 0 
   B3 = 0 
24 B1 = B1 +1                    *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ
* 
26 B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
30 IF (P3.AND.2.EQ.0) GOTO 32    *SKIP REL IF NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
32 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
34 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FILEMARK DETECTED
   IF (B3.EQ.1) GOTO 56          *EOF EXPECTED
   IF (P4.AND.4000.EQ.0) GOTO 56  *DO NOT REPORT FM ERR 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   ERROR 2/207, GOSUB 70         *FM/TM ERROR 
   GOTO 56
36 IF (B9.AND.1.EQ.1) GOTO 62    *SECOND EOF INDICATES END OF TEST OR TAP 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 34
40 IF (SB(1).AND.ERROR.EQ.0) GOTO 41  *NO ERROR 
   ERROR 2/201, GOSUB 70         *ABNORMAL STATUS 
* 
* --------COMPARE 
* 
41 IF (P3.AND.2.EQ.0) GOTO 56    *DO NOT COMPARE DATA 
   IF (P4.AND.3000.NE.2000) GOTO 42  *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 400, START IB 
   GOTO 46
42 B4 = 10
   B5 = 400 
   B2 = P4
44 IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B4 BITS OF P4/B2 TO OB FOR B5
46 IF (P3.AND.1.NE.0) GOTO 50    *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
50 B5 = 400 
   IF (WT.GT.400) GOTO 52        *IF WT LARGER THAN BFR 
   B5 = WT - 1
52 COMPARE IB TO OB FOR B5, ABT 54
   GOTO 56
54 ERROR 2/105, GOSUB 70         *DATA COMPARE ERROR
56 IF (B3.EQ.0) GOTO 60          *NOT AN FM/TM READ 
   B3 = 0 
   B1 = B1 - 1                   *DECREMENT RECORD COUNT
60 IF (P9.EQ.0) GOTO 24          *IF P9 ZERO GO TO EOT
   IF (B1.LT.P9) GOTO 24         *MORE RECORDS TO BE READ 
   B1 = 0                        *ZERO RECORD COUNT 
   B3 = 1                        *FM/TM FLAG
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B8.EQ.0) GOTO 24          *INFINITE FILE COUNT GO UNTIL EOT
   IF (B0.LT.B8) GOTO 24         *MAX FILES NOT PROCESSED 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT16 - 
   MODULE TCT19,DCART(46,47)LOCK   -  SHORT LOCATE BLOCK TEST - 
*** TCT19  - SHORT LOCATE BLOCK TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE WITH A FIXED PATTERN INCREMENTED
*         FOR EACH RECORD.
* 
*         10B  RECORDS  ARE WRITTEN  STARTING WITH 0000 DATA. THE TAPE
*         IS REWOUND READ BLOCK IDS ARE  PERFORMED AND SAVED IN OUTPUT
*         BUFFER 410B - 477B. THEN A READ FORWARD IS PERFORMED AND THE
*         THE DATA  IS  COMPARED TO DATA WRITTEN. THEN AN EXIT IS MADE
*         TO TCT19A TO LOCATE BLOCKS AND READ BLOCK IDS. COMPARES  ARE
*         MADE OF  BLOCK  IDS  BETWEEN ACTUAL AND EXPECTED. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. STORE STARTING PATTERN ALL ZEROS.
*         5. RESERVE. 
*         6. WRITE. 
*         7. REPORT EC 200 IF STATUS ERROR. 
*         8. INCREMENT TO NEXT PATTERN. 
*         9. REPEAT STEPS 5-8 FOR 8 RECORDS.
*        10. ENDFILE TWO TIMES. 
*        11. ERASE TWO TIMES. 
*        12. RESERVE. 
*        13. REWIND.
*        14. RESERVE. 
*        15. READ BLOCK ID AND SAVE IN OB (410-477).
*        16. RESERVE. 
*        17. READ FORWARD.
*        18. REPORT EC 105 IF READ AND WRITE DATA DOES NOT COMPARE. 
*        19. REPORT EC 201 IF STATUS ERROR. 
*        20. REPEAT STEPS 14-19 UNTIL DOUBLE END OF FILE REACHED. 
*        21. CALL TCT19A. 
*        22. REPEAT MODULE IF SELECTED. 
*        23. RELEASE. 
*        24. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT19 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -WRITE-  OPERATION.  NOTE  THAT  GENERAL
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 215 - THE BLOCK IDS FROM LOCATE BLOCK  AND READ BLOCK
*            ID COMMANDS DO NOT COMPARE IN THE SHORT LOCATE BLOCK TEST. 
*            ACTUAL = *OCT *OC*OCT  EXPECTED = *OCT *OC*OCT 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE (PATTERN) COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B3  = RESERVE OPTIONS.
*         B4  = RANDOM NUMBER STARTER.
*         B5  = WORD COUNT FOR COMPARE ERRORS.
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = INDEX FOR FIRST BLOCK ID. 
*         B10 = ERROR INDICATOR FROM SUBMODULE. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT19A - LOCATE BLOCKS AND READ BLOCK IDS.
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT19 - SHORT LOCATE BLOCK TEST - 
2  FORMAT TCT19 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT19 - WRITE RECORD COUNT = *DEC (D) 
7  FORMAT TCT19 - READ RECORD COUNT = *DEC (D)
14 FORMAT TCT19 - ERRS=*DEC  LOOPS=*DEC 
15 FORMAT TCT19 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, ERROR TO 4070 
   DATA (OB(400),CON) 0,1111,2222,3333,4444,5555,6666,7777
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 19D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B10 = 0                       *CLEAR SUBMODULE ERROR INDICATOR 
   GOSUB 66                      *RESERVE SUBROUTINE
   GOSUB 67                      *REWIND SUBROUTINE 
* 
* --------WRITE TAPE
* 
   B0 = 0                        *CLEAR FILE COUNT
24 B1 = 1                        *SET RECORD COUNT
   WC = 400 
   DUP OB(B0+400) TO OB FOR 400 
   MSG 6 (B0) TO LINE 20         *WRITE COUNT 
   GOSUB 66                      *RESERVE 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 22                      *COMMAND INDEX FOR WRITE 
   WRITE, ABT 74
   IF (SB(1).AND.ERROR.EQ.0) GOTO 26
   ERROR 2/200, GOSUB 70
   GOTO 22                       *RESTART ON ERROR
26 GOTO 24 WHILE (B0+1.NE.10)    *DO 10B PATTERNS/RECORDS 
* 
* --------WRITE A DOUBLE ENDFILE AND 2 ERASES TO TERMINATE DATA 
* 
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   ENDFILE, ABT 74
   IF (SB(1).AND.ERROR.NE.FILEMK) ERROR 1/122, GOSUB 70 
   GOSUB 66                      *RESERVE SUBROUTINE
   B14 = 3                       *COMMAND INDEX FOR ERASE 
   ERASE, ABT 74                 *MOVE .3 INCHES OF TAPE
   ERASE, ABT 74                 *MOVE .3 INCHES OF TAPE
* 
   GOSUB 67                      *REWIND SUBROUTINE 
* 
* --------READ TAPE FORWARD 
* 
   B0 = 0                        *CLEAR FILE COUNT
   B8 = 410                      *SET 1ST BID BUFFER
30 B1 = 1                        *SET RECORD COUNT
   MSG 7 (B0) TO LINE 20         *READ COUNT
32 GOSUB 66                      *RESERVE 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B5 = 3 
   COPY SB(44) TO OB(B8) FOR B5 
   B8 = B8 + 3                   *INCREMENT INDEX 
   GOSUB 66                      *RESERVE 
   GOSUB 56 
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36 
34 GOTO 30 WHILE (B0+1.NE.10)    *DO 10B PATTERNS/RECORDS 
36 CALL 19A                      *LOCATE BLOCK IDS
   IF (B10.EQ.0) GOTO 50         *NO ERRORS IN TCT19A 
   IF (EC.LT.4000) GOSUB 70      *MODULE DETECTED ERRORS
   IF (EC.GT.4000) GOTO 74       *PRODUCT OVERLAY ERRORS
50 B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
* 
* --------MODULE REPEAT/EXIT
* 
   B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 52   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
52 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 54         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
54 EXIT                          *NORMAL TERMINATION
* 
* --------READ AND DATA COMPARE SUBROUTINE
* 
56 WC = 400 
   B7 = 5                        *READ FWD MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 60
   ERROR 2/201, GOSUB 70
   GOTO 65                       *SKIP DATA COMPARE 
60 B5 = 400 
   DUP OB(B0+400) TO OB FOR 400 
   IF (WT.GT.400) GOTO 62        *IF WT LARGER THAN BFR 
   B5 = WT - 1
62 COMPARE IB TO OB FOR B5, ABT 64
   GOTO 65
64 ERROR 2/105, GOSUB 70         *DATA COMPARE ERROR
65 RETURN 
* 
* --------RESERVE SUBROUTINE
* 
66 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------REWIND TAPE SUBROUTINE
* 
67 B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   ENDSUB                        *END ALL SUBROUTINES 
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 54                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT19 - 
   MODULE TCT19A,DCART(46,47)LOCK   -  LOCATE BLOCK/READ BLOCK ID TEST -
*** TCT19A  - LOCATE BLOCK/READ BLOCK ID TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT19A DOES  LOCATE  BLOCK  AND  READ  BLOCK IDS OF THE DATA
*         WRITTEN SAVED AND CHECKED BY TCT19. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. STORE STARTING PATTERN ALL ZEROS.
*         5. LOCATE BLOCK.
*         6. READ BLOCK ID. 
*         7. READ DATA. 
*         8. REPORT EC 215 IF BLOCK IDS DO NOT COMPARE. 
*         9. INCREMENT PATTERN. 
*        10. REPEAT STEPS 5-9 FOR 8 RECORDS.
*        11. REPEAT STEPS 5-10 IN REVERSE ORDER.
*        12. RELEASE. 
*        13. EXIT BACK TO TCT19.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT19A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         4. -EC 215- THE BLOCK IDS FROM LOCATE BLOCK  AND  READ BLOCK
*            ID COMMANDS DO NOT COMPARE IN THE SHORT LOCATE BLOCK TEST. 
*            ACTUAL = *OCT *OC*OCT   EXPECTED = *OCT *OC*OCT
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE (PATTERN) COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B3  = RESERVE OPTIONS.
*         B4  = RANDOM NUMBER STARTER.
*         B5  = WORD COUNT FOR COMPARE ERRORS.
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = INDEX FOR FIRST BLOCK ID. 
*         B10 = ERROR INDICATOR FROM SUBMODULE. 
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT19A - LOCATE BLOCK/READ BLOCK ID TEST -
2  FORMAT TCT19A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
6  FORMAT TCT19A - READ COUNT INCREMENTING = *DEC (D) 
7  FORMAT TCT19A - READ COUNT DECREMENTING = *DEC (D) 
14 FORMAT TCT19A - ERRS=*DEC  LOOPS=*DEC
15 FORMAT TCT19A ERROR(S) IN MODULE = *DEC
* 
   EQUATE FILEMK TO 20, ERROR TO 4070 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 19D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   GOSUB 66                      *RESERVE SUBROUTINE
   GOSUB 67                      *REWIND SUBROUTINE 
* 
* --------LOCATE BLOCK, READ BLOCK ID AND READ DATA 
* 
24 B0 = 0                        *CLEAR FILE COUNT
   B1 = 1                        *SET RECORD COUNT
   B8 = 410                      *SET INDEX TO BLOCK IDS
   GOSUB 66                      *RESERVE SUBROUTINE
   GOSUB 67                      *REWIND SUBROUTINE 
30 MSG 6 (B0) TO LINE 20         *READ COUNT INCREMENTING 
   GOSUB 66                      *RESERVE SUBROUTINE
   COPY OB(B8) TO OB FOR 3
   B14 = 5                       *COMMAND INDEX FOR LOCATE BLOCK
   LOCATE BLOCK, ABT 74 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B5 = 3 
   COMPARE OB(B8) TO SB(44) FOR B5, ABT 34
   GOTO 36
34 ERROR 2/215, GOSUB 70         *READ BLOCK ID COMPARE ERROR 
36 B8 = B8 + 3                   *INCREMENT INDEX FOR FIRST ID
   GOSUB 66                      *RESERVE 
   GOSUB 56                      *READ AND COMPARE DATA 
   IF (SB(1).AND.FILEMK.NE.0) GOTO 40 
   GOTO 30 WHILE (B0+1.NE.10)    *DO 10B PATTERNS/RECORDS 
40 B0 = B0 - 1                   *DECREMENT THE RECORD COUNT
   B8 = B8 - 3                   *DECREMENT INDEX FOR FIRST ID
42 MSG 7 (B0) TO LINE 20         *READ COUNT DECREMENTING 
   GOSUB 66                      *RESERVE SUBROUTINE
   COPY OB(B8) TO OB FOR 3
   B14 = 5                       *COMMAND INDEX FOR LOCATE BLOCK
   LOCATE BLOCK, ABT 74 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B5 = 3 
   COMPARE OB(B8) TO SB(44) FOR B5, ABT 44
   GOTO 46
44 ERROR 2/215, GOSUB 70         *READ BLOCK ID COMPARE ERROR 
46 B8 = B8 - 3                   *DECREMENT INDEX FOR FIRST ID
   GOSUB 66                      *RESERVE 
   GOSUB 56                      *READ AND COMPARE DATA 
   IF (SB(1).AND.FILEMK.NE.0) GOTO 50 
   GOTO 42 WHILE (B0-1.NE.7776)  *DO 10B PATTERNS/RECORDS 
50 B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
54 EXIT                          *NORMAL TERMINATION
* 
* --------READ AND DATA COMPARE SUBROUTINE
* 
56 WC = 400 
   B7 = 5                        *READ FWD MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 60
   ERROR 2/201, GOSUB 70
   GOTO 62                       *SKIP DATA COMPARE 
60 B5 = 400 
   DUP OB(B0+400) TO OB FOR 400 
   IF (WT.GT.400) GOTO 62        *IF WT LARGER THAN BFR 
   B5 = WT - 1
62 COMPARE IB TO OB FOR B5, ABT 64
   GOTO 65
64 ERROR 2/105, GOSUB 70         *DATA COMPARE ERROR
65 RETURN 
* 
* --------RESERVE SUBROUTINE
* 
66 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------REWIND TAPE SUBROUTINE
* 
67 B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B10 = B10 + 1                 *SET ERROR INDICATOR 
   ENDSUB 
   GOTO 54                       *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B10 = B10 + 1                 *SET ERROR INDICATOR 
   GOTO 54                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT19A -
   MODULE TCT21,DCART(46,47)LOCK   -  BACKSPACE TEST -
*** TCT21  - BACKSPACE TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT21 WRITES 3 RECORDS AT THE LENGTH SPECIFIED IN *P2* TIMES
*         32. 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  IS THEN PERFORMED. A CHECK
*         FOR PROPER WORD COUNT AND RECORD 2 CONTENT(2222) IS MADE. 
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. SET *FILE MAX* TO 64 IF MAINTENANCE MODE.
*         5. RESERVE. 
*         6. SET RECORD PATTERN TO 1111.
*         7. FILL OB WITH RECORD PATTERN. 
*         8. ADD ADDRESS CODING TO DATA IF SELECTED.
*         9. RESERVE. 
*        10. WRITE LONG.
*        11. IF *EOT*, GOTO STEP 26.
*        12. REPORT EC 200 IF STATUS ERROR AND GOTO STEP 10.
*        13. ELSE BUMP RECORD PATTERN BY 1111.
*        14. REPEAT STEPS 7-13 UNTIL PATTERNS IS 4444. (3333  IS  LAST
*            PATTERN WRITTEN. 
*        15. RESERVE. 
*        16. BKSP.
*        17. REPORT EC 253 IF STATUS ERROR. 
*        18. RESERVE. 
*        19. REPORT EC 254 IF STATUS ERROR. 
*        20. REPORT EC 256 IF WT ERROR. 
*        21. REPORT EC 257 IF RECORD COUNT ERROR (FIRST WORD OF IB NOT
*            EQUAL TO RECORD NUMBER). 
*        22. REPEAT STEPS 5-22 FOR *FILE MAX* TIMES.
*        23. GO TO STEP 2 IF REPEAT MODULE. 
*        24. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT21 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 200- AN  UNEXPECTED  STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. NOTE THAT GENERAL STATUS
*            WAS MASKED WITH LOGICAL PRODUCT 4070B. 
*         4. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE OPERATION. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = CURRENT RECORD CONTENTS.
*         B3  = FILE MAX. 
*         B5  = WORD TRANSMITTED COUNTER. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT21 - BACKSPACE TEST -
2  FORMAT TCT21 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT21 - ITERATION (FILE) COUNT = *DEC (D) 
14 FORMAT TCT21 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT21 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 4070 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 21D                     *MODULE NUMBER 
22 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
24 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B0 = 0 
   WC = P2                       *RECORD LENGTH TO WC REG 
   B3 = 100                      *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 26   *DIAGNOSTIC MODE SELECTED
   B3 = P8                       *FILE MAX MAINT MODE 
26 B0 = B0 + 1                   *INCREMENT FILE COUNT
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   GOSUB 62                      *RESERVE 
   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 62                      *RESERVE 
34 B7 = 1                        *FORWARD WRITE CODE
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
36 IF (SB(1).AND.EOT.NE.0) GOTO 54  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 40
   ERROR 2/200, GOSUB 70
   GOTO 26                       *WRITE ERROR FREE
40 GOTO 30 WHILE(B2 + 1111.NE.4444)  *WRITE 3 RECORDS 
   GOSUB 62                      *RESERVE 
* 
* --------BACKSPACE 
* 
   B7 = 6                        *REVERSE READ CODE 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B1 = B1 - 1                   *DECREMENT RECORD COUNT
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
42 IF (SB(1).AND.ALERT.NE.0) ERROR 2/253, GOSUB 70  *ALERT
   GOSUB 62                      *RESERVE 
44 IF (WC.RS.7D.NE.SB(42)) GOTO 46
   B5 = WC.LS.5.AND.7740
   IF (WT.EQ.B5) GOTO 50         *NO WORD TRANSMITTED ERROR 
46 ERROR 2/256, GOSUB 70
   GOTO 52
50 IF (IB(0).NE.2222) ERROR 2/257, GOSUB 70 
52 IF (B3.EQ.0) GOTO 26          *LOOP IF FILE MAX ZERO 
   IF (B0.LT.B3) GOTO 26         *LOOP FILE MAX TIMES 
* 
* --------MODULE REPEAT/EXIT
* 
54 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 56   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 24                       *RESTART 
56 IF (ES.AND.RM.NE.0) GOTO 22   *IF REPEAT MODULE
   IF (B13.EQ.0) GOTO 60         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
60 EXIT                          *NORMAL TERMINATION
* 
* --------RESERVE SUBROUTINE
* 
62 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   B6 = B6 + 1                   *BUMP LOOP COUNTER 
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   ENDSUB                        *END ALL SUBROUTINES 
   B6 = B6 + 1                   *BUMP LOOP COUNTER 
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 24                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
   IF (ES.AND.SL.NE.0) GOTO 22   *SCOPE LOOP SELECTED 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 56                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT21 - 
   MODULE TCT23,DCART(46,47)LOCK   -  BACKSPACE TEST INCR. LENGTH - 
*** TCT23  - BACKSPACE TEST INCR. LENGTH
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         INITIALIZE  THE  RECORD  LENGTH  BY SETTING WC TO 1. WRITE 3
*         RECORDS  AT  THE  LENGTH  SPECIFIED  BY WC  TIMES 32. 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.  BACKSPACE  TWO  TIMES  AND  THEN  A READ
*         FORWARD IS PERFORMED.  A  CHECK  FOR  PROPER  WORD COUNT AND
*         RECORD 2 CONTENT (2222) IS MADE.
* 
*         THE CONTENTS OF THE WC REGISTER  IS  BUMPED  BY  1  AND  THE
*         PROCESS REPEATED. 
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. SET WC TO 0. 
*         5. SET *FILE MAX* TO 64 IF NOT MAINTENANCE MODE.
*         6. RESERVE. 
*         7. SET RECORD PATTERN TO 1111.
*         8. SET WC TO WC+1.  SET IT TO 1 IF OVERFLOW (0000)
*         9. FILL OB WITH RECORD PATTERN. 
*        10. ADD ADDRESS CODING TO DATA IF SELECTED.
*        11. RESERVE. 
*        12. WRITE LONG.
*        13. IF *EOT*, GOTO STEP 26.
*        14. REPORT EC 200 IF STATUS ERROR AND GOTO STEP 12.
*        15. ELSE BUMP RECORD PATTERN BY 1111.
*        16. REPEAT STEPS 8-15 UNTIL PATTERNS IS 4444. (3333 IS  LAST 
*            PATTERN WRITTEN. 
*        17. RESERVE. 
*        18. BKSP.
*        19. REPORT EC 253 IF STATUS ERROR. 
*        20. RESERVE. 
*        21. REPORT EC 254 IF STATUS ERROR. 
*        22. REPORT EC 256 IF WT ERROR. 
*        23. REPORT EC 257 IF RECORD COUNT ERROR (FIRST WORD OF IB NOT
*            EQUAL TO RECORD NUMBER). 
*        24. REPEAT STEPS 6-23 FOR *FILE MAX* TIMES.
*        25. GO TO STEP 2 IF REPEAT MODULE. 
*        26. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT23 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 200- AN  UNEXPECTED  STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. NOTE THAT GENERAL STATUS
*            WAS MASKED WITH LOGICAL PRODUCT 4070B. 
*         4. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE OPERATION. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = CURRENT RECORD CONTENTS.
*         B3  = FILE MAX. 
*         B5  = WORD TRANSMITTED COUNTER. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT23 - BACKSPACE TEST INCR. LENGTH - 
2  FORMAT TCT23 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT23 - ITERATION (FILE) COUNT = *DEC (D) 
14 FORMAT TCT23 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT23 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ALERT TO 4000, EOT TO 10, ERROR TO 4070 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 23D                     *MODULE NUMBER 
21 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B0 = 0 
   WC = 0                        *RECORD LENGTH TO WC REG 
24 B3 = 100                      *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 26   *DIAGNOSTIC MODE SELECTED
   B3 = P8                       *FILE MAX MAINT MODE 
26 B0 = B0 + 1                   *INCREMENT FILE COUNT
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   GOSUB 62                      *RESERVE 
   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 62                      *RESERVE 
34 B7 = 1                        *FORWARD WRITE CODE
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
36 IF (SB(1).AND.EOT.NE.0) GOTO 54  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 40
   ERROR 2/200, GOSUB 70
   GOTO 26                       *WRITE ERROR FREE
40 GOTO 30 WHILE(B2 + 1111.NE.4444)  *WRITE 3 RECORDS 
   GOSUB 62                      *RESERVE 
* 
* --------BACKSPACE 
* 
   B7 = 6                        *REVERSE READ CODE 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B1 = B1 - 1                   *DECREMENT RECORD COUNT
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
42 IF (SB(1).AND.ALERT.NE.0) ERROR 2/253, GOSUB 70  *ALERT
44 IF (WC.RS.7D.NE.SB(42)) GOTO 46
   B5 = WC.LS.5.AND.7740
   IF (WT.EQ.B5) GOTO 50         *NO WORD TRANSMITTED ERROR 
46 ERROR 2/256, GOSUB 70
   GOTO 52
50 IF (IB(0).NE.2222) ERROR 2/257, GOSUB 70 
52 IF (B3.EQ.0) GOTO 26          *LOOP IF FILE MAX ZERO 
   IF (B0.LT.B3) GOTO 26         *LOOP FILE MAX TIMES 
* 
* --------MODULE REPEAT/EXIT
* 
54 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 56   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
56 IF (ES.AND.RM.NE.0) GOTO 21   *IF REPEAT MODULE
   IF (B13.EQ.0) GOTO 60         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
60 EXIT                          *NORMAL TERMINATION
* 
* --------RESERVE SUBROUTINE
* 
62 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   B6 = B6 + 1                   *BUMP LOOP COUNTER 
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   ENDSUB                        *END ALL SUBROUTINES 
   B6 = B6 + 1                   *BUMP LOOP COUNTER 
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
   IF (ES.AND.SL.NE.0) GOTO 21   *SCOPE LOOP SELECTED 
   IF (B13.LT.2) GOTO 21         *NOT SECOND TRY
   GOTO 56                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT23 - 
   MODULE TCT25,DCART(46,47)LOCK   -  WRITE BACKSPACE AND ERASE - 
*** TCT25  - WRITE BACKSPACE AND ERASE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE 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.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OB WITH SELECTED PATTERN. 
*         3. RESERVE. 
*         4. REWIND.
*         5. SET *FILE MAX* TO 64 IF DIAGNOSTIC MODE. 
*         6. FILL OB WITH RANDOM PATTERN IF SELECTED. 
*         7. ADD ADDRESS CODING TO OB IF SELECTED.
*         8. RESERVE. 
*         9. WRITE LONG TWICE. GO TO STEP 20 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. BKSP 1 RECORD. 
*        12. REPORT EC 253 IF STATUS ERROR. 
*        13. ERASE. 
*        14. GO TO STEP 20 IF *EOT* STATUS. 
*        15. REPORT EC 246 IF STATUS ERROR. 
*        16. REPEAT STEPS 6-15 FOR *FILE MAX* TIMES.
*        17. RESERVE. 
*        18. ENDFILE. 
*        19. REPORT EC 122 IF NOT *EOF* STATUS. 
*        20. GO TO STEP 3 IF REPEAT MODULE. 
*        21. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT25 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 122- NO  FM/TM  STATUS  IN  GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
*         4. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -WRITE-  OPERATION.  NOTE  THAT  GENERAL
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 246- AN  ALERT  STATUS  OCCURRED   AFTER   AN   ERASE
*            OPERATION. 
*         6. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM PATTERN FLAG.
*         B3  = FILE MAX. 
*         B4  = PATTERN FOR STORING.
*         B5  = NUMBER OF WORDS TO STORE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM STARTER. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT25 - WRITE BACKSPACE AND ERASE - 
2  FORMAT TCT25 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT25 - ITERATION (FILE) COUNT = *DEC (D) 
14 FORMAT TCT25 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT25 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 25D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
   IF (P4.AND.3000.EQ.2000) GOTO 24  *RANDOM PATTERN SELECTED 
   B4 = P4
   B8 = 10
   B5 = 500 
* 
* --------FILL BUFFER 
* 
22 IF (P4.AND.3000.EQ.1000) B4 = P4.XOR.7777
   DUP B8 BITS OF P4/B4 TO OB FOR B5
   GOTO 34
24 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 32    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
32 RANDOM TO OB FOR 500, START B9 
34 WC = P2                       *RECORD LENGTH TO WC REG 
36 B7 = 0                        *NO MOTION CODE
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *SET RECORD COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B3 = 100                      *FILE MAX FOR DIAG. MODE 
   IF (P3.AND.40.EQ.0) GOTO 40   *IF DIAG. MODE 
   B3 = P8                       *USER FILE MAX FOR MAINT. MODE 
40 B0 = B0 + 1                   *INCREMENT FILE COUNT
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   IF (B2.EQ.0) GOTO 42          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
42 IF (P3.AND.1.NE.0) GOTO 44    *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE 2 RECORDS  OF .WC. SPECIFIED BY *P2*
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   IF (SB(1).AND.EOT.NE.0) GOTO 60  *IF END OF TAPE 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 46  *NO ERROR DETECTED
   GOTO 50                       *ERROR 
46 WRITE LONG, ABT 74 
   IF (SB(1).AND.EOT.NE.0) GOTO 60  *IF END OF TAPE 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 52  *NO ERROR DETECTED
50 ERROR 2/200, GOSUB 70
   GOTO 56                       *RESTART 
* 
* --------BACKSPACE 
* 
52 B7 = 6                        *REVERSE READ MOTION CODE
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   IF (SB(1).AND.EOT.NE.0) GOTO 62  *EOT
   IF (SB(1).AND.4000B.EQ.0) GOTO 54  *NO ALERT 
   ERROR 2/253, GOSUB 70
   GOTO 56                       *RESTART 
* 
* --------ERASE 
* 
54 B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 3                       *COMMAND INDEX FOR ERASE 
   ERASE, ABT 74
   IF (SB(1).AND.EOT.NE.0) GOTO 60  *IF END OF TAPE 
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/246, GOSUB 70
56 IF (B3.EQ.0) GOTO 40          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.B3) GOTO 40         *P8 FILES NOT PROCESSED
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 36                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 36   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 36                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 36         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT25 - 
   MODULE TCT27,DCART(46,47)LOCK   -  WRITE BACKSPACE/ERASE,INCR LENGTH - 
*** TCT27  - WRITE BACKSPACE AND ERASE, INCR. LENGTH
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS  ARE  WRITTEN  ON  TAPE  AT  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.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OB WITH SELECTED PATTERN. 
*         3. RESERVE. 
*         4. REWIND.
*         5. SET *FILE MAX* TO 64 IF DIAGNOSTIC MODE. 
*         6. FILL OB WITH RANDOM PATTERN IF SELECTED. 
*         7. ADD ADDRESS CODING TO OB IF SELECTED.
*         8. RESERVE. 
*         9. WRITE LONG TWICE. GO TO STEP 20 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. BKSP 1 RECORD. 
*        12. REPORT EC 253 IF STATUS ERROR. 
*        13. ERASE. 
*        14. GO TO STEP 20 IF *EOT* STATUS. 
*        15. REPORT EC 246 IF STATUS ERROR. 
*        16. REPEAT STEPS 6-15 FOR *FILE MAX* TIMES.
*        17. RESERVE. 
*        18. ENDFILE. 
*        19. REPORT EC 122 IF NOT *EOF* STATUS. 
*        20. GO TO STEP 3 IF REPEAT MODULE. 
*        21. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT27 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 122- NO  FM/TM  STATUS  IN  GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
*         4. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS  DURING  A  -WRITE-  OPERATION.  NOTE THAT GENERAL
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 246-  AN  ALERT  STATUS  OCCURRED  AFTER   AN   ERASE
*            OPERATION. 
*         6. -EC 253- A STATUS ERROR OCCURRED ON A BACKSPACE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM PATTERN FLAG.
*         B3  = FILE MAX. 
*         B4  = PATTERN FOR STORING.
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM STARTER. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT27 - WRITE BACKSPACE AND ERASE, INCR. LENGTH - 
2  FORMAT TCT27 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT27 - ITERATION (FILE) COUNT = *DEC (D) 
14 FORMAT TCT27 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT27 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 27D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
   IF (P4.AND.3000.EQ.2000) GOTO 26  *RANDOM PATTERN SELECTED 
   B4 = P4
   B8 = 10
   B5 = 500 
* 
* --------FILL BUFFER 
* 
24 IF (P4.AND.3000.EQ.1000) B4 = P4.XOR.7777
   DUP B8 BITS OF P4/B4 TO OB FOR B5
   GOTO 34
26 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 32    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
32 RANDOM TO OB FOR 500, START B9 
34 B7 = 0                        *NO MOTION CODE
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 1                        *SET RECORD COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B3 = 100                      *FILE MAX FOR DIAG. MODE 
   IF (P3.AND.40.EQ.0) GOTO 40   *IF DIAG. MODE 
   B3 = P8                       *USER FILE MAX FOR MAINT. MODE 
36 B0 = B0 + 1                   *INCREMENT FILE COUNT
   WC = 1                        *SET WC TO WRITE 10B WORDS 
   IF (B2.EQ.0) GOTO 40          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
40 IF (P3.AND.1.NE.0) GOTO 42    *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
42 MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE 2 RECORDS OF .WC. SPECIFIED BY *P2* 
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   IF (SB(1).AND.EOT.NE.0) GOTO 60  *IF END OF TAPE 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 44  *NO ERROR DETECTED
   GOTO 46                       *ERROR 
44 WRITE LONG, ABT 74 
   IF (SB(1).AND.EOT.NE.0) GOTO 60  *IF END OF TAPE 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 50  *NO ERROR DETECTED
46 ERROR 2/200, GOSUB 70
   GOTO 54                       *RESTART 
* 
* --------BACKSPACE 
* 
50 B7 = 6                        *REVERSE READ MOTION CODE
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   IF (SB(1).AND.EOT.NE.0) GOTO 62  *EOT
   IF (SB(1).AND.4000B.EQ.0) GOTO 52  *NO ALERT 
   ERROR 2/253, GOSUB 70
   GOTO 54                       *RESTART 
* 
* --------ERASE 
* 
52 B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 3                       *COMMAND INDEX FOR ERASE 
   ERASE, ABT 74
   IF (SB(1).AND.EOT.NE.0) GOTO 60  *IF END OF TAPE 
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/246, GOSUB 70
54 WC = WC + 1                   *BUMP WORD COUNT 
   IF (WC.NE.0) GOTO 56 
   WC = 1                        *SET LEGAL WORD COUNT
56 IF (B3.EQ.0) GOTO 36          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.B3) GOTO 36         *P8 FILES NOT PROCESSED
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 34                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 34   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 34                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 34         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT27 - 
   MODULE TCT29,DCART(46,47)LOCK   -  RANDOM WRITE TEST - 
*** TCT29  - RANDOM WRITE TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT29 CREATES THE TAPE USED FOR RANDOM READ IN MODULE TCT30.
* 
*         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. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OB WITH SELECTED DATA PATTERN.
*         5. SET WC TO RANDOM VALUE BETWEEN 4 AND 7777. 
*         6. RESERVE. 
*         7. BUMP RECORD COUNTER. 
*         8. ADD ADDRESS CODING.
*         9. WRITE. 
*        10. GO TO STEP 17 IF *EOT* STATUS. 
*        11. REPORT EC 200 IF STATUS ERROR. 
*        12. REPEAT STEPS 5-11 FOR *RECORD MAX* RECORDS.
*        13. RESERVE. 
*        14. ENDFILE. 
*        15. REPORT EC 122 IF STATUS IS NOT *EOF*.
*        16. REPEAT STEPS 5-15 FOR *FILE MAX* FILES.
*        17. GO TO STEP 2 IF REPEAT MODULE. 
*        18. RELEASE. 
*        19. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT29 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 122- NO  FM/TM  STATUS  IN  GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
*         4. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A WRITE OPERATION. NOTE THAT GENERAL STATUS
*            WAS MASKED WITH LOGICAL PRODUCT 4070B. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM SEED FOR PATTERN GENERATOR.
*         B4  = PATTERN FOR STORING.
*         B5  = NUMBER OF BITS TO DUP (8).
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT29 - RANDOM WRITE TEST - 
2  FORMAT TCT29 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT29 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT29 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4070 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 29D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
   B8 = 100                      *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 22   *DIAGNOSTIC MODE SELECTED
   B8 = P8                       *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   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 34  *IF RANDOM PATTERN 
   B5 = 10
   B2 = 500 
30 B4 = P4
   IF (P4.AND.3000.EQ.1000) B4 = P4.XOR.7777
   DUP B5 BITS OF P4/B4 TO OB FOR B2
   GOTO 36
34 RANDOM TO OB FOR 500, START P7 
* 
* --------ADDRESS CODING ALWAYS WRITTEN 
* 
36 WC = RT                       *GENERATE RANDOM WORD COUNT
   IF (WC.LT.4) GOTO 36          *INSURE IT IS BETWEEN 4 - 7777 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
40 B1 = B1 + 1
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
42 OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
* 
* --------WRITE RANDOM LENGTH RECORDS (4-7777)
* 
   B7 = 1                        *FORWARD WRITE CODE
   B14 = 22                      *COMMAND INDEX FOR WRITE 
   WRITE, ABT 74
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
46 IF (SB(1).AND.EOT.NE.0) GOTO 50  * -EOT- DETECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70
   IF (P9.EQ.0) GOTO 36          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 36         *LOOP RECORD MAX TIMES 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCR FILE COUNT 
* 
* --------WRITE -EOF- 
* 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (B8.EQ.0) GOTO 36          *INFINITE FILE COUNT 
   IF (B0.LE.B8) GOTO 36         *LOOP FILE MAX TIMES 
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 54                       *IF END OF MODULE BUT NOT EOT
50 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
54 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 56   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
56 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 60         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
60 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 56                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT29 - 
   MODULE TCT30,DCART(46,47)LOCK   -  RANDOM READ TEST -
*** TCT30  - RANDOM READ TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THE  TAPE  USED  BY  THIS MODULE MUST BE CREATED BY -TCT29-.
* 
*         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 IS PERFORMED. 
* 
*         TCT30 (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 211 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 212 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. REPORT EC 213 IF WT IN ERROR     (WORD 3 OF IB IN ERROR).
*        12. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 16. 
*        13. GENERATE EXPECTED DATA PATTERN INTO OB.
*        14. ADD EXPECTED ADDRESS CODING TO OB. 
*        15. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        16. REPEAT STEPS 4-15 FOR *RECORD MAX* RECORDS.
*        17. REPEAT STEPS 4-16 FOR *FILE MAX* FILES.
*        18. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT30 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 211- INCORRECT  FILE  DETECTED  DURING A RANDOM READ.
*         7. -EC 212- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            RANDOM READ. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B10 = NUMBER OF BITS TO DUP (8).
*         B11 = WORDS TRANSMITTED.
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT30 - RANDOM READ TEST -
2  FORMAT TCT30 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT30 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT30 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4050 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 30D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = 100                     *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 22   *DIAGNOSTIC MODE SELECTED
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   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
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/211, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/212, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TAP 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   B11 = WT 
   IF (IB(3).NE.B11) ERROR 2/213, GOTO 70  *WT ERROR
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   IF (P4.AND.3000.NE.2000) GOTO 44  *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 46
44 B10 = 10 
   B4 = 500 
   B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B10 BITS OF P4/B2 TO OB FOR B4 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   IF (WT.GT.B5) GOTO 50
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
   MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 EXIT                          *EXIT THE MODULE 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT30 - 
   MODULE TCT31,DCART(46,47)LOCK   -  SHORT WRITE TEST -
*** TCT31  - SHORT WRITE TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT31 CREATES THE TAPE USED FOR SHORT READ IN MODULE TCT30. 
* 
*         THIS MODULE WILL WRITE FIXED LENGTH RECORDS FROM  1  TO  16.
*         EACH RECORD WILL CONTAIN UNIQUE INFORMATION. THE DATA IN THE
*         OUTPUT BUFFER IS AS FOLLOWS:  
*               OB(0) = 0422     HEX CHARACTERS 1 1 2 
*               OB(1) = 1063     HEX CHARACTERS 2 3 3 
*               OB(2) = 2105     HEX CHARACTERS 4 4 5 
*               OB(3) = 2546     HEX CHARACTERS 5 6 6 
*               OB(4) = 3570     HEX CHARACTERS 7 7 8 
*               OB(5) = 4231     HEX CHARACTERS 8 9 9 
*               OB(6) = 5253     HEX CHARACTERS A A B 
*               OB(7) = 5714     HEX CHARACTERS B C C 
*               OB(10)= 6736     HEX CHARACTERS D D E 
*               OB(11)= 7377     HEX CHARACTERS E F F 
*               OB(12)= 0642     HEX CHARACTERS 1 A 2 
*               OB(13)= 5474     HEX CHARACTERS B 3 C 
*               OB(14)= 2325     HEX CHARACTERS 4 D 5 
*               OB(15)= 7157     HEX CHARACTERS E 6 F 
*               OB(16)= 3641     HEX CHARACTERS 7 A 1 
*               OB(17)= 5454     HEX CHARACTERS B 2 C 
*         A  SHORT  WRITE  COMMAND  IS USED TO WRITE ALL RECORDS.  THE
*         RECORDS ARE WRITTEN WITH A WORD COUNT OF ONE AND INCREMENTED
*         UP TO 16  MAX. THIS ALLOWS CHECKING OF ALL BYTES.  THE  DATA
*         CHECKED IN THE SHORT READ MODULE FOR  INTEGRITY.  RECORD MAX
*         IS 20 OCTAL AND FILE MAX IS USED TO CONTROL THE  DURATION OF
*         FILE SIZE. MAX FILE IS LIMITED TO 1000D.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OB WITH SELECTED DATA PATTERN.
*         5. RESERVE. 
*         6. BUMP RECORD COUNTER. 
*         7. SET WC TO RECORD COUNTER.
*         8. WRITE SHORT. 
*         9. GO TO STEP 16 IF *EOT* STATUS. 
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. REPEAT STEPS 5-10 FOR *RECORD MAX* RECORDS.
*        12. RESERVE. 
*        13. ENDFILE. 
*        14. REPORT EC 122 IF STATUS IS NOT *EOF*.
*        15. REPEAT STEPS 5-14 FOR *FILE MAX* FILES.
*        16. GO TO STEP 2 IF REPEAT MODULE. 
*        17. RELEASE. 
*        18. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT31 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 122- NO  FM/TM  STATUS  IN  GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
*         4. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A WRITE OPERATION. NOTE THAT GENERAL STATUS
*            WAS MASKED WITH LOGICAL PRODUCT 4070B. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT31 - SHORT WRITE TEST -
2  FORMAT TCT31 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT31 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT31 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4070 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 31D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
   B8 = 100                      *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 22   *DIAGNOSTIC MODE SELECTED
   B8 = P8                       *FILE MAX MAINT MODE 
   IF(B8.EQ.0) B8 = 1000D        *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD/WORD COUNT 
* 
* --------FILL WRITE BUFFER WITH SELECTED PATTERN 
* 
34 OB(0) = 0422                  *HEX CHARACTERS 1 1 2
   OB(1) = 1063                  *HEX CHARACTERS 2 3 3
   OB(2) = 2105                  *HEX CHARACTERS 4 4 5
   OB(3) = 2546                  *HEX CHARACTERS 5 6 6
   OB(4) = 3570                  *HEX CHARACTERS 7 7 8
   OB(5) = 4231                  *HEX CHARACTERS 8 9 9
   OB(6) = 5253                  *HEX CHARACTERS A A B
   OB(7) = 5714                  *HEX CHARACTERS B C C
   OB(10)= 6736                  *HEX CHARACTERS D D E
   OB(11)= 7377                  *HEX CHARACTERS E F F
   OB(12)= 0642                  *HEX CHARACTERS 1 A 2
   OB(13)= 5474                  *HEX CHARACTERS B 3 C
   OB(14)= 2325                  *HEX CHARACTERS 4 D 5
   OB(15)= 7157                  *HEX CHARACTERS E 6 F
   OB(16)= 3641                  *HEX CHARACTERS 7 A 1
   OB(17)= 5454                  *HEX CHARACTERS B 2 C
36 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
40 B1 = B1 + 1
   WC = B1                       *SET  WORD COUNT 
* 
* --------WRITE SHORT RECORDS (1-10)
* 
   B7 = 1                        *FORWARD WRITE CODE
   B14 = 30                      *COMMAND INDEX FOR WRITE SHORT 
   WRITE SHORT, ABT 74
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
46 IF (SB(1).AND.EOT.NE.0) GOTO 50  * -EOT- DETECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70
   IF (B1.LT.20) GOTO 36         *LOOP RECORD 10 TIMES
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCR FILE COUNT 
* 
* --------WRITE -EOF- 
* 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (B0.LE.B8) GOTO 36         *LOOP FILE MAX TIMES 
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 54                       *IF END OF MODULE BUT NOT EOT
50 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
54 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 56   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
56 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 60         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
60 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 56                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT31 - 
   MODULE TCT32,DCART(46,47)LOCK   -  SHORT READ TEST - 
*** TCT32  - SHORT READ TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THE  TAPE  USED  BY  THIS MODULE MUST BE CREATED BY -TCT31-.
* 
*         A READ FORWARD IS  INITIATED  FOLLOWING  WHICH  THE  CURRENT
*         RECORD (B1) IS COMPARED WITH -WT-. THE DATA IS COMPARED WITH
*         EXPECTED ACCORDING TO WHETHER CHARACTER FILL  IS  SET.  THIS
*         SEQUENCE  CONTINUES  UNTIL  RECORD/FILE  MAX  OR   -EOT-  IS
*         ENCOUNTERED. AT THIS TIME AN EXIT IS PERFORMED. 
* 
*         TCT32 (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 214 IF WT IN ERROR (RECORD COUNT NE WT). 
*        10. RELEASE. 
*        11. GENERATE EXPECTED DATA PATTERN INTO OB.
*        12. COMPARE IB TO OB. REPORT EC 106 IF DATA COMPARES.
*        13. REPORT EC 107 IF CHARACTER FILL NOT SET AND SHOULD BE. 
*        14. REPORT EC 110 IF CHARACTER FILL SET AND SHOULD NOT BE. 
*        15. REPORT EC 214 IF WT IN ERROR (RECORD COUNT NE WT). 
*        16. COMPARE IB TO OB. REPORT EC 105 IF DATA MISCOMPARES. 
*        17. REPEAT STEPS 4-16 FOR 20 OCTAL RECORDS.
*        18. REPEAT STEPS 4-17 FOR *FILE MAX* FILES.
*        19. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT32 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         3. -EC 106- DATA COMPARED ON SHORT WRITE/READ SHOULD
*            NOT HAVE.
*         4. -EC 107- CHARACTER FILL NOT SET ON SHORT WRITE/READ
*            SHOULD BE. 
*         5. -EC 110- CHARACTER FILL SET ON SHORT WRITE/READ
*            SHOULD NOT BE. 
*         6. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         7. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         8. -EC 214- INCORRECT  RECORD  LENGTH  HAS  BEEN DETECTED  IN 
*            SHORT READ TCT32. -WT NOT EQUAL RECORD COUNT-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B11 = WORDS TRANSMITTED.
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT32 - SHORT READ TEST - 
2  FORMAT TCT32 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT32 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT32 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4010, ODDCT TO 40
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 32D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = P8                      *FILE MAX MAINT MODE 
   IF(B12.EQ.0) B12 = 1000D      *FILE MAX MAINT MODE 
   IF (P3.AND.40.NE.0) B12 = 100  *FILE MAX DIAG MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   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
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 53          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (WT.NE.B1) ERROR 2/214, GOTO 70  *RECORD ERROR
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TAP 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   B11 = WT 
   IF (B1.NE.B11) ERROR 2/214, GOTO 70  *WT ERROR 
* 
* --------COMPARE 
* 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
46 B5 = B1                       *SET COMPARE TO RECORD COUNT 
   OB(0) = 0422                  *HEX CHARACTERS 1 1 2
   OB(1) = 1063                  *HEX CHARACTERS 2 3 3
   OB(2) = 2105                  *HEX CHARACTERS 4 4 5
   OB(3) = 2546                  *HEX CHARACTERS 5 6 6
   OB(4) = 3570                  *HEX CHARACTERS 7 7 8
   OB(5) = 4231                  *HEX CHARACTERS 8 9 9
   OB(6) = 5253                  *HEX CHARACTERS A A B
   OB(7) = 5714                  *HEX CHARACTERS B C C
   OB(10)= 6736                  *HEX CHARACTERS D D E
   OB(11)= 7377                  *HEX CHARACTERS E F F
   OB(12)= 0642                  *HEX CHARACTERS 1 A 2
   OB(13)= 5474                  *HEX CHARACTERS B 3 C
   OB(14)= 2325                  *HEX CHARACTERS 4 D 5
   OB(15)= 7157                  *HEX CHARACTERS E 6 F
   OB(16)= 3641                  *HEX CHARACTERS 7 A 1
   OB(17)= 5454                  *HEX CHARACTERS B 2 C
47 COMPARE IB TO OB FOR B5, ABT 50
   ERROR 2/106, GOTO 70          *DATA SHOULD NOT COMPARE 
50 IF(B1.AND.1.EQ.1) GOTO 51     *NOT TIME FOR CHARACTER FILL 
   IF(SB(1).AND.ODDCT.EQ.0) ERROR 2/107, GOTO 70
   GOTO 52
51 IF(SB(1).AND.ODDCT.NE.0) ERROR 2/110, GOTO 70
52 B2 = IB(B5)
   B4 = OB(B5)
   IF(B1.AND.1.EQ.1) B2 = B2.AND.7760 
   IF(B1.AND.1.EQ.0) B2 = B2.AND.7400 
   IF(B1.AND.1.EQ.1) B4 = B4.AND.7760 
   IF(B1.AND.1.EQ.0) B4 = B4.AND.7400 
   IF(B2.NE.B4) ERROR 2/105, GOTO 70
* 
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 (B1.LT.20) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
57 MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 EXIT                          *EXIT THE MODULE 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 53                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   B8 = 0 
   GOTO 53                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   GOTO 57                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT32 - 
   MODULE TCT33,DCART(46,47)LOCK   -  LOCATE BLOCK TEST - 
*** TCT33  - LOCATE BLOCK TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*          TCT33  VERIFIES WRITE/READ DATA INTEGRITY BY COMPARING  THE
*          BLOCK  IDS  GENERATED  WHILE WRITING SPECIFIED DATA RECORDS
*          WITH  THE BLOCK IDS READ ON BLOCK ID COMMAND.  THE SEQUENCE
*          IS WRITE TWO RECORDS, BACKSPACE BOTH RECORDS, READ AND SAVE
*          BLOCK  IDS  BOTH RECORDS,  THEN LOCATE BLOCK, AND READ BOTH
*          RECORDS FOR EACH ITERATION.
* 
*          TESTING CONTINUES UNTIL FILE MAX OR EOT IS REACHED.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. SET WC TO (P2) OR 5, WHICHEVER IS GREATER. 
*         3. RESERVE. 
*         4. REWIND.
*         5. SET *FILE MAX* TO 64 IF RUNNING DIAGNOSTIC MODE. 
*         6. SET *FILE MAX* TO 200 IF P8 ZERO OR GT 200.
*         7. RESERVE. 
*         8. GENERATE SELECTED DATA PATTERN IN OB.
*         9. ADD ADDRESS CODING TO OB.
*        10. WRITE RECORD.
*        11. GO TO STEP 27 IF *EOT* STATUS. 
*        12. REPORT EC 200 IF STATUS ERROR. 
*        13. BKSP.
*        14. READ BLOCK ID AND SAVE FOR THIS RECORD.
*        15. READ FORWARD.
*        16. REPEAT STEPS 2-15 FOR THE SECOND RECORD. 
*        17. RESERVE. 
*        18. BKSP.
*        19. REPORT EC 253 IF STATUS ERROR. 
*        20. REPEAT STEPS 17-19 FOR THE FIRST RECORD. 
*        21. REWIND.
*        22. RESERVE. 
*        23. LOCATE BLOCK FOR RECORD. 
*        24. READ BLOCK ID FOR RECORD.
*        25. READ FORWARD.
*        26. REPORT EC 201 IF STATUS ERROR. 
*        27. REPORT EC 232 IF RECORD NUMBER ERROR.
*        28. REPORT EC 233 IF RECORD LENGTH ERROR.
*        29. REPORT EC 234 IF BLOCK ID MISCOMPARE (LOCATE/READ ID). 
*        30. REPEAT STEPS 22-29 FOR RECORD 2. 
*        31. REPEAT STEPS 6-30 FOR *FILE MAX* TIMES.
*        32. GO TO STEP 3 IF REPEAT MODULE IS SELECTED. 
*        33. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT33 - ERROR CODE = *OCT AT LINE (EA) = *OCT
*         3. -EC 200- AN  UNEXPECTED  BIT  APPEARED IN GENERAL  STATUS
*            DURING A WRITE OPERATION.  NOTE  THAT GENERAL STATUS  WAS
*            MASKED WITH 4070B. 
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*            DATA JUST READ.
*         5. EC 232 - THE RECORD COUNT IS IN ERROR DURING A -READ FWD-
*            IN THE LOCATE BLOCK TEST.
*         6. EC 233 - THE RECORD LENGTH IS IN  ERROR  DURING  A  -READ
*            FORWARD- IN THE LOCATE BLOCK SUBTEST.
*         7. EC 234 - THE  BLOCK  IDS FROM LOCATE BLOCK AND READ BLOCK
*            ID COMMANDS DO NOT COMPARE IN THE LOCATE BLOCK TEST. 
*            ACTUAL = AAAA AAAAAAA  EXPECTED = EEEE EEEEEEE 
*         8. EC 253 - A STATUS ERROR OCCURRED ON A BACKSPACE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT ITERATION (FILE) COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA STARTER.
*             = PATTERN FOR STORING.
*         B3  = FILE MAX. 
*         B4  = RECORD ONE BLOCK ID.
*         B5  = NUMBER OF WORDS TO STORE. 
*         B6  = ERROR INDICATOR FROM SUBMODULE. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = RECORD ONE BLOCK ID.
*         B9  = RECORD ONE BLOCK ID.
*         B10 = RECORD TWO BLOCK ID.
*         B11 = RECORD TWO BLOCK ID.
*         B12 = RECORD TWO BLOCK ID.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT33A - LOCATE BLOCK AND READ BLOCK IDS. 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT33 - LOCATE BLOCK TEST - 
2  FORMAT TCT33 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT33 - ITERATION (FILE) COUNT = *DEC (D) 
15 FORMAT TCT33 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 33D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   WC = P2                       *SET WORD COUNT
* 
* --------MODULE TEST 
* 
22 B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   GOSUB 62                      *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B3 = 100                      *FILE COUNT FOR DIAG. MODE 
   IF (P3.AND.40.EQ.0) GOTO 30   *DIAG. MODE SELECTED 
   B3 = P8                       *MAINT. MODE PASS COUNT FROM USER
   IF (P8.EQ.0) B3 = 200D        *MAX PASS COUNT 200D 
   IF (P8.GT.200D) B3 = 200D     *MAX PASS COUNT 200D 
* 
* --------MAIN LOOP 
* 
30 B0 = B0 + 1                   *BUMP FILE COUNT 
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   GOSUB 40                      *WRITE RECORD 1
   GOSUB 54                      *BACKSPACE OVER RECORD 1 
   GOSUB 64                      *READ BLOCK ID RECORD 1
   B4 = SB(44)                   *SAVE RECORD 1 BLOCK ID
   B8 = SB(45)                   *SAVE RECORD 1 BLOCK ID
   B9 = SB(46)                   *SAVE RECORD 1 BLOCK ID
   GOSUB 56                      *READ RECORD 1 
   GOSUB 40                      *WRITE RECORD 2
   GOSUB 54                      *BACKSPACE OVER RECORD 2 
   GOSUB 64                      *READ BLOCK ID RECORD 2
   B10 = SB(44)                  *SAVE RECORD 2 BLOCK ID
   B11 = SB(45)                  *SAVE RECORD 2 BLOCK ID
   B12 = SB(46)                  *SAVE RECORD 2 BLOCK ID
   GOSUB 56                      *READ RECORD 2 
   GOSUB 54                      *BACKSPACE OVER RECORD 2 
   GOSUB 54                      *BACKSPACE OVER RECORD 1 
   CALL 33A                      *DO LOCATE BLOCKS AND READS
   IF (B6.EQ.0) GOTO 31          *NO ERRORS IN SUBMODULE
   IF (EC.LT.4000) GOSUB 70      *MODULE DETECTED ERRORS
   IF (EC.GT.4000) GOTO 74       *PRODUCT OVERLAY ERRORS
31 IF (B3.EQ.0) GOTO 30          *IF INFINITE FILE MAX
   IF (B0.NE.B3) GOTO 30         *IF FILE MAX NOT REACHED 
* 
* --------MODULE REPEAT/EXIT
* 
32 IF (ES.AND.CM.NE.0) GOTO 22   *REPEAT MODULE,CONDITION 
   IF (B13.EQ.0) GOTO 36         *NO ERRORS 
34 MSG 15(B13) TO DAYFILE        *REPORT ERRORS TO DAYFILE
36 EXIT                          *NORMAL EXIT 
* 
* --------WRITE SUBROUTINE
* 
40 B1 = B1 + 1                   *BUMP RECORD COUNT 
   GOSUB 62                      *RESERVE 
   B7 = 10
   B5 = 500 
42 IF (P4.AND.7000.NE.2000) GOTO 46  *NOT RANDOM PATTERN
   B2 = P7                       *USER RANDOM SEED
   IF (P3.AND.4.NE.0) GOTO 44    *LOCK TO SEED
   B2 = RT                       *USE REAL TIME CLOCK FOR SEED
44 RANDOM TO OB FOR 500, START B2 
   GOTO 50
46 B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B7 BITS OF P4/B2 TO OB FOR B5
50 OB(1) = B0                    *ADD ADDRESS CODING
   OB(2) = B1 
   OB(3) = WC 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 22                      *COMMAND INDEX FOR WRITE 
   WRITE, ABT 74
   IF (SB(1).AND.EOT.NE.0) GOTO 52  *IF END OF TAPE 
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70
   RETURN 
52 ENDSUB, GOTO 32               *TERMINATE ON END OF TAPE
* 
* --------BACKSPACE SUBROUTINE
* 
54 GOSUB 62                      *RESERVE 
   B7 = 6                        *READ REVERSE MOTION CODE
   B1 = B1 - 1                   *DECREMENT RECORD COUNT
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   IF (SB(1).AND.EOT.NE.0) GOTO 32  *EOT
   IF (SB(1).AND.4000B.NE.0) ERROR 2/253, GOSUB 70  *ALERT
   RETURN 
* 
* --------READ FORWARD SUBROUTINE 
* 
56 GOSUB 62                      *RESERVE 
   B7 = 5                        *READ FORWARD MOTION CODE
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 60 
   IF (IB(2).NE.B1) ERROR 2/232, GOTO 60  *RECORD ERROR 
   IF (IB(3).NE.WC) ERROR 2/233, GOTO 60  *LENGTH ERROR 
57 RETURN 
60 GOSUB 70 
   RETURN 
* 
* --------RESERVE SUBROUTINE
* 
62 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------READ BLOCK ID SUBROUTINE
* 
64 GOSUB 62                      *RESERVE 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (B6.NE.0) GOTO 72          *DO NOT POST EM
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
75 CALL 97A                      *POST ABORT MESSAGE
76 GOTO 34                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT33 - 
   MODULE TCT33A,DCART(46,47)LOCK   -  LOCATE BLOCK TEST -
*** TCT33A  - LOCATE BLOCK TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DOES LOCATE BLOCK AND READS FOR MODULE TCT33. 
* 
*    1.2  METHOD- 
* 
*         1. SEE TCT33. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA STARTER.
*             = PATTERN FOR STORING.
*         B3  = FILE MAX. 
*         B4  = RECORD ONE BLOCK ID.
*         B5  = NUMBER OF WORDS TO STORE. 
*         B6  = ERROR INDICATOR FROM SUBMODULE. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = RECORD ONE BLOCK ID.
*         B9  = RECORD ONE BLOCK ID.
*         B10 = RECORD TWO BLOCK ID.
*         B11 = RECORD TWO BLOCK ID.
*         B12 = RECORD TWO BLOCK ID.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT33A - LOCATE BLOCK TEST -
2  FORMAT TCT33A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
* 
   EQUATE EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 33D                     *MODULE NUMBER 
   B6 = 0                        *CLEAR ERROR INDICATOR 
* 
* --------MODULE TEST 
* 
30 GOSUB 62                      *RESERVE 
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   GOSUB 66                      *LOCATE BLOCK RECORD 1 
   GOSUB 64                      *READ BLOCK ID RECORD 1
   GOSUB 56                      *READ RECORD 1 
   B4 = B10                      *SET BLOCK ID TO LOCATE RECORD 2 
   B8 = B11                      *SET BLOCK ID TO LOCATE RECORD 2 
   B9 = B12                      *SET BLOCK ID TO LOCATE RECORD 2 
   GOSUB 66                      *LOCATE BLOCK RECORD 2 
   GOSUB 64                      *READ BLOCK ID RECORD 2
   GOSUB 56                      *READ RECORD 2 
36 EXIT                          *NORMAL EXIT 
* 
* --------READ FORWARD SUBROUTINE 
* 
56 GOSUB 62                      *RESERVE 
   B7 = 5                        *READ FORWARD MOTION CODE
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 60 
   IF (IB(2).NE.B1) ERROR 2/232, GOTO 60  *RECORD ERROR 
   IF (IB(3).NE.WC) ERROR 2/233, GOTO 60  *LENGTH ERROR 
   IF (SB(45).NE.B8) ERROR 2/234, GOTO 60  *BLOCK ID ERROR
   IF (SB(46).NE.B9) ERROR 2/234, GOTO 60  *BLOCK ID ERROR
57 RETURN 
60 ENDSUB GOTO 70 
   RETURN 
* 
* --------RESERVE SUBROUTINE
* 
62 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------READ BLOCK ID SUBROUTINE
* 
64 B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   RETURN 
* 
* --------LOCATE BLOCK SUBROUTINE 
* 
66 B14 = 5                       *COMMAND INDEX FOR LOCATE BLOCK
   OB(0) = B4                    *SET BLOCK ID TO LOCATE RECORD 
   OB(1) = B8                    *SET BLOCK ID TO LOCATE RECORD 
   OB(2) = B9                    *SET BLOCK ID TO LOCATE RECORD 
   LOCATE BLOCK, ABT 74 
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B6 = B6 + 1                   *BUMP ERROR INDICATOR
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
   GOTO 36                       *EXIT TO MAIN MODULE FOR ERROR 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B6 = B6 + 1                   *BUMP ERROR INDICATOR
   GOTO 36                       *EXIT TO MAIN MODULE FOR ERROR 
   END 20 
COMPILE   - TCT33A -
   MODULE TCT35,DCART(46,47)LOCK   -  POSITION TEST - 
*** TCT35  - POSITION TEST -
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT35 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.  BLOCK IDS ARE SAVED WHEN EACH
*         RECORD IS WRITTEN AND ARE COMPARED WITH BLOCK IDS WHEN
*         EACH RECORD IS READ (INCLUDING THE END-OF-FILE).
* 
*         TCT35 RUNS TO EOT OR FILE MAX.
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE
*         MODE.  REPEAT MODULE IS SUPPORTED.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. REWIND.
*         3. WRITE RECORD 1.
*         4. WRITE RECORD 2.
*         5. WRITE FM.
*         6. WRITE RECORD 3.
*         7. WRITE RECORD 4.
*         8. BKSP OVER RECORD 4.
*         9. BKSP OVER RECORDS 3, FM, 2 AND 1.
*        10. READ AND VERIFY RECORDS 1,2,FM AND 3.
*        11. ERASE RECORD 4 (RECORD 4 NO LONGER EXISTS).
*        12. WRITE RECORD 5.
*        13. BKSP OVER RECORD 5.
*        14. BKSP OVER ERASED AREA AND RECORDS 3,FM,2 AND 1.
*        15. READ AND VERIFY RECORDS 1,2,FM AND 3.
*        16. ERASE THE ERASED AREA (WHERE RECORD 4 WAS).
*        17. ERASE RECORD 5 (RECORD 5 NO LONGER EXISTS).
*        18. WRITE RECORD 6.
*        19. BKSP OVER RECORD 6.
*        20. BKSP OVER ERASED AREAS AND RECORDS 3,FM,2 AND 1. 
*        21. READ AND VERIFY RECORDS 1,2,FM, AND 3. 
*        22. FORESPACE OVER ERASED AREAS AND RECORD 6.
*        23. VERIFY RECORD 6 STATUS AND BLOCK ID. 
*        24. REPEAT STEPS 3-23 FOR *FILE MAX* TIMES.
*        25. REPEAT MODULE OR EXIT. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT35 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. EC 122- NO  FM/TM  STATUS  IN  GENERAL  STATUS  AT END OF
*            OPERATION AFTER A WRITE FM/TM. 
*         4. EC 200 - AN  UNEXPECTED  BIT  APPEARED  IN GENERAL STATUS
*            DURING A WRITE OPERATION.  NOTE  THAT  GENERAL STATUS WAS
*            MASKED WITH 4070B. 
*         5. EC 241 - AN  ABNORMAL  STATUS  WAS   DETECTED   DURING  A
*            BACKSPACE IN THE POSITION SUBTEST. 
*         6. EC 242 - AN ABNORMAL STATUS WAS DETECTED  DURING  A  READ
*            FORWARD IN THE POSITION TEST.
*         7. EC 243 - A COMPARE ERROR HAS OCCURRED WHEN THE WRITE  AND
*            READ BLOCK IDS WERE COMPARED FOR RECORDS 1, 2 OR 3 IN THE
*            POSITION TEST.  ACTUAL = AAAAAAA  EXPECTED = EEEEEEE.
*         8. EC 244 - AN  ABNORMAL  STATUS  WAS  DETECTED  DURING  THE
*            FORESPACE OVER RECORD 6 IN THE POSITION TEST.
*         9. EC 245 - THE READ AND WRITE BLOCK IDS FOR RECORD  6  HAVE
*            FAILED TO COMPARE IN THE POSITION TEST.
*            ACTUAL = AAAAAAA  EXPECTED = EEEEEEE.
*        10. EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         NONE
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT ITERATION (FILE) COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = CURRENT RECORD CONTENTS.
*         B3  = PASS COUNT. 
*         B5  = FILE MAX. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = ERROR INDICATOR.
*         B9  = COMPARE REGISTER FOR BLOCK ID.
*         B10 = COMPARE REGISTER FOR BLOCK ID.
*         B11 = COMPARE REGISTER FOR BLOCK ID.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT35A - BACKSPACE, READ AND CHECK BLOCK IDS. 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT35 - POSITION TEST - 
2  FORMAT TCT35 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
3  FORMAT TCT35 ERROR(S) IN MODULE = *DEC 
6  FORMAT TCT35 - ITERATION (FILE) COUNT = *DEC (D) 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 35D                     *MODULE NUMBER 
22 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
   B5 = 100                      *FILE MAX FOR DIAG. MODE 
   IF (P3.AND.40.NE.0) B5 = P8
   IF (P8.EQ.0) B5 = 200D        *MAX PASS COUNT 200D 
   IF (P8.GT.200D) B5 = 200D     *MAX PASS COUNT 200D 
   GOSUB 40                      *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
24 B2 = 0                        *INITIALIZE DATA REGISTER
   B1 = 0                        *CLEAR RECORD COUNTER
   B6 = 400                      *INDEX TO BLOCK IDS
   B8 = 0                        *CLEAR ERROR INDICATOR 
   B0 = B0 + 1                   *BUMP FILE COUNT 
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   GOSUB 34                      *WRITE RECORD 1
   GOSUB 34                      *WRITE RECORD 2
   GOSUB 62                      *WRITE FM/TM 
   GOSUB 34                      *WRITE RECORD 3
   GOSUB 34                      *WRITE RECORD 4
   CALL 35A                      *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3 
   IF (B8.EQ.0) GOTO 25          *IF NO ERRORS IN SUBMODULE 
   IF (EC.LT.4000) GOTO 64       *MODULE DETECTED ERROR 
   IF (EC.GT.4000) GOTO 74       *PRODUCT OVERLAY ERRORS
25 GOSUB 40                      *RESERVE 
   GOSUB 60                      *ERASE RECORD 4
   GOSUB 34                      *WRITE RECORD 5
   CALL 35A                      *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3 
   IF (B8.EQ.0) GOTO 26          *IF NO ERRORS IN SUBMODULE 
   IF (EC.LT.4000) GOTO 64       *MODULE DETECTED ERROR 
   IF (EC.GT.4000) GOTO 74       *PRODUCT OVERLAY ERRORS
26 GOSUB 40                      *RESERVE 
   GOSUB 60                      *ERASE ERASED AREA 
   GOSUB 60                      *ERASE RECORD 5
   GOSUB 34                      *WRITE RECORD 6
   CALL 35A                      *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3 
   IF (B8.EQ.0) GOTO 27          *IF NO ERRORS IN SUBMODULE 
   IF (EC.LT.4000) GOTO 64       *MODULE DETECTED ERROR 
   IF (EC.GT.4000) GOTO 74       *PRODUCT OVERLAY ERRORS
27 GOSUB 40                      *RESERVE 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B7 = 5                        *FORWARD READ MOTION CODE
   B14 = 4                       *COMMAND INDEX FOR FSPACE
   FSPACE, ABT 74                *FORESPACE ERASED AREA AND RECORD 6
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   IF (SB(1).AND.4020.NE.0) ERROR 2/244, GOTO 64
   B9 = IB(B6)                   *MOVE DATA TO COMPARE REGS 
   B10 = IB(B6+1)                *MOVE DATA TO COMPARE REGS 
   B11 = IB(B6+2)                *MOVE DATA TO COMPARE REGS 
   IF (B10.NE.SB(45)) ERROR 2/245, GOSUB 70 
   IF (B11.NE.SB(46)) ERROR 2/245, GOSUB 70 
   IF (SB(1).AND.10.NE.0) GOTO 30  *EXIT IF EOT 
   IF (B5.EQ.0) GOTO 24          *IF INFINITE FILE MAX. 
   IF (B0.NE.B5) GOTO 24         *IF FILE MAX NOT REACHED 
* 
* --------MODULE REPEAT/EXIT
* 
30 B0 = 0                        *CLEAR LOOP COUNT
   IF (ES.AND.RM.NE.0) GOTO 22   *IF REPEAT MODULE
   IF (B13.NE.0) MSG 3(B13)TO DAYFILE 
32 EXIT 
* 
* --------WRITE A RECORD SUBROUTINE 
* 
34 B2 = B2 + 1111                *DATA TO WRITE IN THIS RECORD
   DUP B2 TO OB FOR 500 
   GOSUB 40                      *RESERVE 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   COPY SB (44) TO IB (B6) FOR 3  *SAVE BLOCK ID
   WC = P2                       *SET WORD COUNT
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   B6 = B6 + 3                   *BUMP INDEX COUNT
   IF (SB(1).AND.10.NE.0) ENDSUB GOTO 30  *EXIT IF EOT
   IF (SB(1).AND.4020.EQ.0) GOTO 36  *IF NO ERROR 
   ERROR 2/200, GOSUB 70
36 RETURN 
* 
* --------RESERVE SUBROUTINE
* 
40 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------ERASE SUBROUTINE
* 
60 B7 = 1                        *FORWARD WRITE CODE
   B14 = 3                       *COMMAND INDEX FOR ERASE 
   ERASE, ABT 74
   IF (SB(1).AND.4020.NE.0) ERROR 2/246, GOTO 64
   RETURN 
* 
* --------ENDFILE SUBROUTINE
* 
62 B7 = 1                        *FORWARD WRITE CODE
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   COPY SB (44) TO IB (B6) FOR 3  *SAVE BLOCK ID
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   B6 = B6 + 3                   *BUMP INDEX COUNT
   IF (SB(1).AND.4020.EQ.20) GOTO 36
   ERROR 2/122
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   B6 = B6 + 3                   *BUMP INDEX COUNT
   GOTO 36
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 GOSUB 70 
66 ENDSUB, GOTO 75               *RETRY 
* 
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (B8.NE.0) GOTO 72          *DO NOT POST EM
   MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   GOTO 66                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   CALL 97A                      *POST ABORT MESSAGE
   GOTO 66                       *END ALL SUBROUTINES 
75 MSG 0 TO DISPLAY 
   IF (B13.LT.2) GOTO 24         *RETRY 
   GOTO 30                       *REPEAT MODULE OR EXIT.
   END 20 
COMPILE   - TCT35 - 
   MODULE TCT35A,DCART(46,47)LOCK   -  POSITION TEST -
*** TCT35A  - POSITION TEST - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO BACKSPACE, READ AND CHECK BLOCK IDS FOR TCT35. 
* 
*    1.2  METHOD- 
* 
*         1. SEE TCT35. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         NONE
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT ITERATION (FILE) COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = CURRENT RECORD CONTENTS.
*         B3  = PASS COUNT. 
*         B5  = FILE MAX. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = ERROR INDICATOR.
*         B9  = COMPARE REGISTER FOR BLOCK ID.
*         B10 = COMPARE REGISTER FOR BLOCK ID.
*         B11 = COMPARE REGISTER FOR BLOCK ID.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT35A - POSITION TEST -
2  FORMAT TCT35A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 35D                     *MODULE NUMBER 
* 
* --------MODULE TEST 
* 
   GOSUB 40                      *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3 
30 EXIT 
* 
* --------BACKSPACE ALL RECORDS 
* --------THEN READ RECORDS 1,2, TAPE MARK, AND 3.
* 
40 B7 = 6                        *MOTION CODE FOR REVERSE WRITE 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP ABT 74
   B1 = B1 - 1                   *DECREMENT RECORD NUMBER 
   B6 = B6 - 3                   *DECREMENT INDEX TO MATCH RECORDS
   IF (SB(1).AND.4020.NE.0) ERROR 2/241, GOTO 64
42 BKSP, ABT 74 
   B1 = B1 - 1                   *DECREMENT RECORD NUMBER 
   B6 = B6 - 3                   *DECREMENT INDEX TO MATCH RECORDS
   IF (SB(1).AND.4020.EQ.0) GOTO 46 
   IF (B1.NE.2) GOTO 44          *IF NOT TIME FOR FM/TM 
   IF (SB(1).AND.20.NE.0) GOTO 46  *OK IF FM/TM 
44 ERROR 2/241, GOTO 64 
46 IF (B1.NE.0) GOTO 42          *BKSP ALL RECORDS
* 
* --------READ SUBROUTINE 
* 
50 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B7 = 5                        *READ FORWARD CODE 
   WC = 400                      *SET WC TO PROTECT IB(400-477) 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   IF (B1.NE.3) GOTO 54          *IF NOT TIME FOR FM/TM 
   IF (SB(1).AND.4020.EQ.20) GOTO 56  *OK IF FM/TM
52 ERROR 2/242, GOTO 64          *REPORT ERROR AND RESTART
54 IF (SB(1).AND.4020.NE.0) GOTO 52 
56 B9 = IB(B6)                   *MOVE BLOCK ID TO COMPARE REGISTER 
   B10 = IB(B6+1)                *MOVE BLOCK ID TO COMPARE REGISTER 
   B11 = IB(B6+2)                *MOVE BLOCK ID TO COMPARE REGISTER 
   IF (SB(45).NE.B10) ERROR 2/243, GOSUB 70 
   IF (SB(46).NE.B11) ERROR 2/243, GOSUB 70 
   B6 = B6 + 3                   *BUMP INDEX COUNT
   IF (B1.NE.4) GOTO 50          *READ 1,2,TM,3 
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 GOSUB 70 
66 ENDSUB, GOTO 75               *RETRY 
* 
* 
70 B8 = B8 + 1                   *BUMP ERROR COUNT
   MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
   GOTO 66                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B8 = B8 + 1                   *BUMP ERROR COUNT
75 GOTO 30                       *REPEAT MODULE OR EXIT.
   END 20 
COMPILE   - TCT35A -
   MODULE TCT37,DCART(46,47)LOCK   -  SYNCHRONIZE TEST -
*** TCT37  - SYNCHRONIZE TEST - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT37  VERIFIES  THE  ABILITY  OF  THE  TAPE   SUBSYSTEM  TO
*         SYNCHRONIZE THE BUFFER WITH TAPE  BY  WRITING  RECORDS  THEN
*         ISSUING A SYNCHRONIZE FUNCTION AND  READING THE BLOCK IDS TO
*         VERIFY THEY ARE THE SAME. THE TOTAL SEQUENCE  IS  RE-STARTED
*         IF AN ERROR IS DETECTED DURING  ANY  OPERATION. 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.  BLOCK IDS ARE SAVED WHEN
*         EACH  RECORD IS WRITTEN AND ARE COMPARED WITH BLOCK IDS WHEN
*         EACH RECORD IS READ (INCLUDING THE END-OF-FILE). THE  BUFFER
*         AND TAPE ARE SYNCHRONIZED AFTER EACH WRITE AND THE BLOCK IDS
*         FROM TAPE AND BUFFER ARE CHECKED IF THEY ARE EQUAL. 
* 
*         TCT37 RUNS TO EOT OR FILE MAX.
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE
*         MODE.  REPEAT MODULE IS SUPPORTED.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. REWIND.
*         3. WRITE RECORD 1.
*         4. SYNCHRONIZE AND READ BLOCK IDS.
*         5. WRITE RECORD 2.
*         6. SYNCHRONIZE AND READ BLOCK IDS.
*         7. WRITE FM.
*         8. WRITE RECORD 3.
*         9. SYNCHRONIZE AND READ BLOCK IDS.
*        10. WRITE RECORD 4.
*        11. SYNCHRONIZE AND READ BLOCK IDS.
*        12. WRITE RECORD 5.
*        13. SYNCHRONIZE AND READ BLOCK IDS.
*        14. WRITE RECORD 6.
*        15. SYNCHRONIZE AND READ BLOCK IDS.
*        16. BKSP OVER RECORDS 6, 5, 4, 3, FM, 2 AND 1. 
*        17. READ AND VERIFY RECORDS 1,2,FM,3,4,5 AND 6.
*        18. WRITE RECORD 1.
*        19. WRITE RECORD 2.
*        20. WRITE RECORD 3.
*        21. WRITE RECORD 4.
*        22. WRITE RECORD 5.
*        23. WRITE RECORD 6.
*        24. SYNCHRONIZE AND READ BLOCK IDS.
*        25. BKSP OVER RECORDS 6, 5, 4, 3, FM, 2 AND 1. 
*        26. READ AND VERIFY RECORDS 1,2,FM,3,4,5 AND 6.
*        27. REPEAT STEPS 3-26 FOR *FILE MAX* TIMES.
*        28. REPEAT MODULE OR EXIT. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT37 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. EC 122- NO  FM/TM  STATUS  IN  GENERAL  STATUS  AT END OF
*            OPERATION AFTER A WRITE FM/TM. 
*         4. EC 200 - AN UNEXPECTED BIT  APPEARED  IN  GENERAL  STATUS
*            DURING A WRITE OPERATION.  NOTE  THAT  GENERAL STATUS WAS
*            MASKED WITH 4070B. 
*         5. EC 241 - AN  ABNORMAL  STATUS  WAS  DETECTED   DURING   A
*            BACKSPACE IN THE POSITION SUBTEST. 
*         6. EC 235 - AN ABNORMAL STATUS WAS DETECTED  DURING  A  READ
*            FORWARD IN THE SYNCHRONIZE TEST. 
*         7. EC 236 - A COMPARE ERROR HAS OCCURRED WHEN THE WRITE  AND
*            READ BLOCK IDS WERE COMPARED FOR RECORDS 1, 2 OR 3 IN THE
*            SYNCHRONIZE TEST. ACTUAL = AAAAAAA  EXPECTED = EEEEEEE.
*         8. EC 246 - AN ALERT STATUS OCCURRED AFTER AN ERASE.
*         9. EC 247 - THE  FIRST  AND  SECOND BLOCK IDS HAVE FAILED TO
*            COMPARE AFTER A SYNCHRONIZE FUNCTION IN  THE  SYNCHRONIZE
*            TEST. SEE 1ST AND 2ND BLOCK ID.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         NONE
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT ITERATION (FILE) COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = CURRENT RECORD CONTENTS.
*         B3  = PASS COUNT. 
*         B5  = FILE MAX. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = ERROR INDICATOR.
*         B9  = COMPARE REGISTER FOR BLOCK ID.
*         B10 = COMPARE REGISTER FOR BLOCK ID.
*         B11 = COMPARE REGISTER FOR BLOCK ID.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT37A - BACKSPACE, READ AND CHECK BLOCK IDS. 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT37 - SYNCHRONIZE TEST -
2  FORMAT TCT37 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
3  FORMAT TCT37 ERROR(S) IN MODULE = *DEC 
6  FORMAT TCT37 - ITERATION (FILE) COUNT = *DEC (D) 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 37D                     *MODULE NUMBER 
22 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
   B5 = 100                      *FILE MAX FOR DIAG. MODE 
   IF (P3.AND.40.NE.0) B5 = P8
   GOSUB 40                      *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
24 B2 = 0                        *INITIALIZE DATA REGISTER
   B1 = 0                        *CLEAR RECORD COUNTER
   B6 = 400                      *INDEX TO BLOCK IDS
   B8 = 0                        *CLEAR ERROR INDICATOR 
   B0 = B0 + 1                   *BUMP FILE COUNT 
   MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   GOSUB 34                      *WRITE RECORD 1
   GOSUB 50                      *SYNCHRONIZE AND READ BLOCK IDS
   GOSUB 34                      *WRITE RECORD 2
   GOSUB 50                      *SYNCHRONIZE AND READ BLOCK IDS
   GOSUB 62                      *WRITE FM/TM 
   GOSUB 34                      *WRITE RECORD 3
   GOSUB 50                      *SYNCHRONIZE AND READ BLOCK IDS
   GOSUB 34                      *WRITE RECORD 4
   GOSUB 50                      *SYNCHRONIZE AND READ BLOCK IDS
   GOSUB 34                      *WRITE RECORD 5
   GOSUB 50                      *SYNCHRONIZE AND READ BLOCK IDS
   GOSUB 34                      *WRITE RECORD 6
   GOSUB 50                      *SYNCHRONIZE AND READ BLOCK IDS
   CALL 35A                      *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3,4 
   IF (B8.EQ.0) GOTO 25          *IF NO ERRORS IN SUBMODULE 
   IF (EC.LT.4000) GOTO 64       *MODULE DETECTED ERROR 
   IF (EC.GT.4000) GOTO 74       *PRODUCT OVERLAY ERRORS
25 B2 = 0                        *INITIALIZE DATA REGISTER
   B1 = 0                        *CLEAR RECORD COUNTER
   B6 = 400                      *INDEX TO BLOCK IDS
   B8 = 0                        *CLEAR ERROR INDICATOR 
   GOSUB 40                      *RESERVE 
   GOSUB 34                      *WRITE RECORD 1
   GOSUB 34                      *WRITE RECORD 2
   GOSUB 62                      *WRITE FM/TM 
   GOSUB 34                      *WRITE RECORD 3
   GOSUB 34                      *WRITE RECORD 4
   GOSUB 34                      *WRITE RECORD 5
   GOSUB 34                      *WRITE RECORD 6
   GOSUB 50                      *SYNCHRONIZE AND READ BLOCK IDS
   CALL 35A                      *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3,4 
   IF (B8.EQ.0) GOTO 26          *IF NO ERRORS IN SUBMODULE 
   IF (EC.LT.4000) GOTO 64       *MODULE DETECTED ERROR 
   IF (EC.GT.4000) GOTO 74       *PRODUCT OVERLAY ERRORS
26 GOSUB 40                      *RESERVE 
   IF (SB(1).AND.4020.NE.0) ERROR 2/244, GOTO 64
   IF (SB(1).AND.10.NE.0) GOTO 30  *EXIT IF EOT 
   IF (B5.EQ.0) GOTO 24         *IF FILE MAX NOT REACHED
   IF (B0.NE.B5) GOTO 24         *IF FILE MAX NOT REACHED 
* 
* --------MODULE REPEAT/EXIT
* 
30 B0 = 0                        *CLEAR LOOP COUNT
   IF (ES.AND.RM.NE.0) GOTO 22   *IF REPEAT MODULE
   IF (B13.NE.0) MSG 3(B13)TO DAYFILE 
32 EXIT 
* 
* --------WRITE A RECORD SUBROUTINE 
* 
34 B2 = B2 + 1111                *DATA TO WRITE IN THIS RECORD
   DUP B2 TO OB FOR 500 
   GOSUB 40                      *RESERVE 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   COPY SB (44) TO IB (B6) FOR 3  *SAVE BLOCK ID
   WC = P2                       *SET WORD COUNT
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   B6 = B6 + 3                   *BUMP INDEX COUNT
   IF (SB(1).AND.10.NE.0) ENDSUB GOTO 30  *EXIT IF EOT
   IF (SB(1).AND.4020.EQ.0) GOTO 36  *IF NO ERROR 
   ERROR 2/200, GOSUB 70
36 RETURN 
* 
* --------RESERVE SUBROUTINE
* 
40 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------SYNCHRONIZE AND READ BLOCK ID SUBROUTINE
* 
50 B14 = 20                      *COMMAND INDEX FOR SYNCHRO 
   SYNCHRO, ABT 74               *FLUSH THE BUFFER
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   IF (SB(45).NE.SB(51)) ERROR 2/247, GOSUB 70
   IF (SB(46).NE.SB(52)) ERROR 2/247, GOSUB 70
   RETURN 
* 
* --------ERASE SUBROUTINE
* 
60 B7 = 1                        *FORWARD WRITE CODE
   B14 = 3                       *COMMAND INDEX FOR ERASE 
   ERASE, ABT 74
   IF (SB(1).AND.4020.NE.0) ERROR 2/246, GOTO 64
   RETURN 
* 
* --------ENDFILE SUBROUTINE
* 
62 B7 = 1                        *FORWARD WRITE CODE
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   COPY SB (44) TO IB (B6) FOR 3  *SAVE BLOCK ID
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   B6 = B6 + 3                   *BUMP INDEX COUNT
   IF (SB(1).AND.4020.EQ.20) GOTO 36
   ERROR 2/122
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   B6 = B6 + 3                   *BUMP INDEX COUNT
   GOTO 36
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 GOSUB 70 
66 ENDSUB, GOTO 75               *RETRY 
* 
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (B8.NE.0) GOTO 72          *DO NOT POST EM
   MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   GOTO 66                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   CALL 97A                      *POST ABORT MESSAGE
   GOTO 66                       *END ALL SUBROUTINES 
75 MSG 0 TO DISPLAY 
   IF (B13.LT.2) GOTO 24         *RETRY 
   GOTO 30                       *REPEAT MODULE OR EXIT.
   END 20 
COMPILE   - TCT37 - 
   MODULE TCT37A,DCART(46,47)LOCK   -  SYNCHRONIZE TEST - 
*** TCT37A  - SYNCHRONIZE TEST -
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO BACKSPACE, READ AND CHECK BLOCK IDS FOR TCT37. 
* 
*    1.2  METHOD- 
* 
*         1. SEE TCT37. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         NONE
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT ITERATION(FILE) COUNT.
*         B1  = CURRENT RECORD COUNT. 
*         B2  = CURRENT RECORD CONTENTS.
*         B3  = PASS COUNT. 
*         B5  = FILE MAX. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = ERROR INDICATOR.
*         B9  = COMPARE REGISTER FOR BLOCK ID.
*         B10 = COMPARE REGISTER FOR BLOCK ID.
*         B11 = COMPARE REGISTER FOR BLOCK ID.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT37A - SYNCHRONIZE TEST - 
2  FORMAT TCT37A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 37D                     *MODULE NUMBER 
* 
* --------MODULE TEST 
* 
   GOSUB 40                      *BKSP, BKSP ALL RECORDS, READ 1,2,TM,3 
30 EXIT 
* 
* --------BACKSPACE ALL RECORDS 
* --------THEN READ RECORDS 1,2, TAPE MARK, 3,4,5, AND 6. 
* 
40 B7 = 6                        *MOTION CODE FOR REVERSE WRITE 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP ABT 74
   B1 = B1 - 1                   *DECREMENT RECORD NUMBER 
   B6 = B6 - 3                   *DECREMENT INDEX TO MATCH RECORDS
   IF (SB(1).AND.4020.NE.0) ERROR 2/241, GOTO 64
42 BKSP, ABT 74 
   B1 = B1 - 1                   *DECREMENT RECORD NUMBER 
   B6 = B6 - 3                   *DECREMENT INDEX TO MATCH RECORDS
   IF (SB(1).AND.4020.EQ.0) GOTO 46 
   IF (B1.NE.2) GOTO 44          *IF NOT TIME FOR FM/TM 
   IF (SB(1).AND.20.NE.0) GOTO 46  *OK IF FM/TM 
44 ERROR 2/241, GOTO 64 
46 IF (B1.NE.0) GOTO 42          *BKSP ALL RECORDS
* 
* --------READ SUBROUTINE 
* 
50 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B7 = 5                        *READ FORWARD CODE 
   WC = 400                      *SET WC TO PROTECT IB(400-477) 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   IF (B1.NE.3) GOTO 54          *IF NOT TIME FOR FM/TM 
   IF (SB(1).AND.4020.EQ.20) GOTO 56  *OK IF FM/TM
52 ERROR 2/235, GOTO 64          *REPORT ERROR AND RESTART
54 IF (SB(1).AND.4020.NE.0) GOTO 52 
56 B9 = IB(B6)                   *MOVE BLOCK ID TO COMPARE REGISTER 
   B10 = IB(B6+1)                *MOVE BLOCK ID TO COMPARE REGISTER 
   B11 = IB(B6+2)                *MOVE BLOCK ID TO COMPARE REGISTER 
   IF (SB(45).NE.B10) ERROR 2/236, GOSUB 70 
   IF (SB(46).NE.B11) ERROR 2/236, GOSUB 70 
   B6 = B6 + 3                   *BUMP INDEX COUNT
   IF (B1.NE.7) GOTO 50          *READ 1,2,TM,3 
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 GOSUB 70 
66 ENDSUB, GOTO 75               *RETRY 
* 
* 
70 B8 = B8 + 1                   *BUMP ERROR COUNT
   MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
   GOTO 66                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B8 = B8 + 1                   *BUMP ERROR COUNT
75 GOTO 30                       *REPEAT MODULE OR EXIT.
   END 20 
COMPILE   - TCT37A -
   MODULE TCT39,DCART(46,47)LOCK   -  WRITE/READ TO EOT TEST -
*** TCT39  - WRITE/READ TO EOT TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE FROM LOAD POINT  TO END OF TAPE.
*         RECORD LENGTHS VARY FROM 1 TO 7777 WORDS, THEN THE  TAPE  IS
*         REWOUND AND READ TO EOT. THE RECORD COUNT AND FILE COUNT ARE
*         CHECKED TO SO THE NUMBER OF RECORDS AND FILES READ  ARE  THE
*         SAME AS WRITTEN.
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE LOOP.
*         REPEAT MODULE IS SUPPORTED. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OB WITH SELECTED DATA PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. SET WC = 1.
*         6. RESERVE. 
*         7. WRITE. 
*         8. BUMP RECORD COUNT IN B0/B1.
*         9. GO TO STEP 13 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. 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).
*        12. REPEAT STEPS 6-11 UNTIL *EOT* IS DETECTED. 
*        13. WRITE DOUBLE END OF FILE.
*        14. SAVE RECORD COUNTS FROM THE WRITE. 
*        15. RESERVE. 
*        16. REWIND.
*        17. READ.
*        18. INCREMENT RECORD COUNT IN B0/B1. 
*        19. REPORT EC 202 IF STATUS ERROR. 
*        20. REPEAT STEPS 17-19 UNTIL DOUBLE EOF (*EOT*) IS DETECTED. 
*        21. REPORT  EC 267  IF  WRITE  RECORD COUNT NOT EQUAL TO READ
*            RECORD COUNT.
*        22. EXIT IF REPEAT MODULE IS NOT SELECTED. 
*        23. GO TO STEP 3 IF REPEAT MODULE IS SELECTED. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT39 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -WRITE-  OPERATION.  NOTE  THAT  GENERAL
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM SEED.
*         B3  = WC INCREMENT VALUE (1 OR 7776). 
*         B4  = PATTERN FOR STORING.
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = PASS COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = EOF FLAG FOR EOT. 
*         B10 = SAVED FILE COUNT. 
*         B11 = SAVED RECORD COUNT. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT39 - WRITE TO EOT TEST PASS COUNT = *DEC (D) - 
1  FORMAT TCT39 - READ TO EOT TEST PASS COUNT = *DEC (D) -
2  FORMAT TCT39 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TCT39 - WRITING RECORD = *OCT*OCTB
13 FORMAT TCT39 - READING RECORD = *OCT*OCTB
15 FORMAT TCT39 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE BOT TO 4, EOT TO 10, ERROR TO 4070
   EQUATE EOF TO 20 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 39D                     *MODULE NUMBER 
   B6 = 1 
   MSG 0 (B6)TO PRINT            *RUNNING MESSAGE.
* 
* --------MODULE TEST 
* 
22 MSG 0 (B6) TO DISPLAY         *RUNNING MESSAGE.
   IF (P4.AND.3000.EQ.2000) GOTO 24  *RANDOM PATTERN SELECTED 
   B4 = P4
   B8 = 10                       *NUMBER OF BITS
   B5 = 500 
* 
* --------FILL BUFFER 
* 
   IF (P4.AND.3000.EQ.1000) B4 = P4.XOR.7777
   DUP B8 BITS OF P4/B4 TO OB FOR B5
   GOTO 30
24 B2 = P7                       *RANDOM SEED TO B2 
   IF (P3.AND.4.NE.0) GOTO 26    *USE RANDOM SEED 
   B2 = RT                       *USE RT CLOCK FOR SEED 
26 RANDOM TO OB FOR 500, START B2 
30 B7 = 0                        *NO MOTION CODE
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B9 = 0                        *CLEAR EOF/EOT COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   WC = 1                        *SET WC TO WRITE 1 WORD
   B3 = 1                        *WC INCREMENT VALUE
* 
* --------WRITE FROM BOT TO EOT 
* 
32 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 1                        *WRITE FWD MOTION CODE 
   B14 = 22                      *COMMAND INDEX FOR WRITE 
   WRITE, ABT 74
   MSG 12 (B0,B1) TO LINE 20     *UPDATE WRITE RECORD COUNT 
   B1 = B1 + 1                   *BUMP RECORD COUNT 
   IF (B1.NE.0) GOTO 36          *IF NOT OVERFLOW 
   B0 = B0 + 1                   *BUMP FILE COUNT 
36 IF (SB(1).AND.EOT.NE.0) GOTO 40  *IF EOT 
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70
   WC = WC + B3                  *INCR/DECR. WORD COUNT 
   IF (WC.NE.0) GOTO 32          *IF NOT MAX/MIN WC 
   B3 = B3.XOR.7776              *TOGGLE B3 0001/7777 
   WC = B3
   GOTO 32
40 B7 = 1                        *FORWARD WRITE CODE
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   ENDFILE, ABT 74
   B10 = B0                      *SAVE FILE COUNT 
   B11 = B1                      *SAVE RECORD COUNT 
* 
* --------READ TAPE FORWARD FROM BOT TO EOT 
* 
   B9 = 1                        *SET EOT COUNT 
   WC = 500 
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
42 MSG 1 (B6) TO DISPLAY         *RUNNING MESSAGE.
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B5 = 13
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
43 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 13 (B0,B1) TO LINE 20     *UPDATE READ RECORD COUNT
   IF (SB(1).AND.EOF.NE.0) GOTO 52  *IF END OF TAPE 
44 B1 = B1 + 1                   *BUMP RECORD COUNT 
   IF (B1.EQ.0) GOTO 46          *IF RECORD COUNT UNDERFLOW 
   GOTO 50
46 B1 = 0                        *PRESET RECORD COUNT 
   B0 = B0 + 1                   *AND INCREMENT FILE COUNT
50 GOTO 43
52 B9 = B9 + 1                   *EOF PRESENT COUNT 
   IF (SB(1).AND.4000.NE.0) ERROR 2/202, GOSUB 70 
   IF (B9.EQ.2) GOTO 54          *DOUBLE END OF FILE TEST RECORD COUNT
   GOTO 43
54 IF (B0.NE.B10) GOTO 56        *IF FILE COUNT ERROR 
   IF (B1.EQ.B11) GOTO 57        *IF NO RECORD COUNT ERROR REWIND TAPE
56 ERROR 2/267, GOSUB 70         *RECORD COUNTS DO NOT COMPARE
57 B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
* 
* --------MODULE REPEAT/EXIT
* 
60 B6 = B6 + 1                   *BUMP PASS COUNT 
   IF (ES.AND.RM.NE.0) GOTO 22   *IF REPEAT MODULE
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
66 GOTO 77                       *END THE TEST SERIES 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   MSG 0 (B6) TO DISPLAY         *REPLACE RUN MESSAGE 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
76 CALL 97A                      *POST ABORT MESSAGE
   MSG 0 (B6) TO DISPLAY         *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 30         *NOT SECOND TRY
   GOTO 60                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT39 - 
   MODULE TCT41,DCART(46,47)LOCK   -  TAPE PATH DAMAGE -
*** TCT41  - TAPE PATH DAMAGE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT41  IS  DESIGNED  TO  WRITE  ONE  RECORD  OF  THE  LENGTH
*         SPECIFIED BY THE USER AND PERFORM A BACKSPACE AND READ  DATA
*         DATA WITH AUTOMATIC ERROR RECOVERY DISABLED. THE  READ  DATA
*         COMPARED WITH WRITE DATA AND PERFORM A  BACKSPACE  AND  4095
*         READ FORWARDS OVER THAT RECORD. THE DATA  IS  THEN  COMPARED
*         WITH THE FIRST READ. ALL TAPE ERRORS WILL  BE  REPORTED  AND
*         THE  USER COULD THEN  VISUALLY  INSPECT  THE TAPE FOR DAMAGE
*         IF THE CARTRIDGE CAN BE  OPENED.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OB WITH 7777 PATTERN. 
*         5. RESERVE. 
*         6. WRITE LONG.
*         7. REPORT EC 200 IF STATUS ERROR. 
*         8. RESERVE. 
*         9. BACKSPACE 1 RECORD.
*        10. READ FORWARD.
*        11. REPORT EC 226 IF STATUS ERROR. 
*        12. COMPARE THE DATA.
*        13. REPEAT STEPS 9-12 FOR 512 PASSES.
*        14. GOTO STEP 3 IF NOT 4095 PASSES.
*        15. COMPARE THE DATA.
*        16. GO TO STEP 2 IF REPEAT MODULE. 
*        17. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. PRODUCT OVERLAY ERRORS 
*         2. TCT41 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 200- AN  UNEXPECTED  STATUS BIT APPEARED IN A GENERAL
*            STATUS  DURING  A  -WRITE-  OPERATION.  NOTE THAT GENERAL
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         4. - EC 226- AN  ERROR  OCCURRED  DURING  A   READ   FORWARD
*            OPERATION IN THE TAPE PATH DAMAGE TEST.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = CURRENT COUNT FOR MESSAGES. 
*         B5  = NUMBER OF WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = RESERVE PARAMETERS. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT41 - TAPE PATH DAMAGE -
1  FORMAT TCT41 - TAPE PATH DAMAGE PASS COUNT *DEC (D) -
2  FORMAT TCT41 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
14 FORMAT TCT41 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT41 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4070 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 41D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B8 = P1.AND.7000 + 100        *SET DISABLE AUTOMATIC ERROR RECOVERY
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES B8, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
26 B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B2 = 1                        *SET RECORD COUNT FOR MESSAGES 
* 
* --------WRITE THE RECORD
* 
30 WC = P2                       *RECORD LENGTH TO WC REG 
   DUP 7777 TO OB FOR 500 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES B8, ABT 74                *RESERVE 
   B7 = 1                        *WRITE FORWARD MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 40  *NO WRITE ERRORS
   ERROR 2/200, GOSUB 70
   GOTO 26                       *RE-WRITE THE RECORD 
* 
* --------READ THE RECORD FORWARD 
* 
40 DELAY 20 MSEC
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES B8, ABT 74                *RESERVE 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/226, GOSUB 70
   IF (B1.EQ.0) GOSUB 60         *DO DATA COMPARE AFTER EACH WRITE
   MSG 1(B2) TO DISPLAY 
   B2 = B2 + 1                   *INCREMENT RECORD COUNT FOR MESSAGES 
   GOTO 40 WHILE (B1+1.NE.1000)  *DO 512D PASSES
   GOSUB 60                      *DO DATA COMPARE EVERY 512D PASSES 
   B1 = 0 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES B8, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   GOTO 30 WHILE (B0+1.NE.10)    *DO 4095 PASSES
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
* 
* --------MODULE REPEAT/EXIT
* 
50 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 54   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
54 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 56         *NO MODULE ERRORS
   MSG 15(B13) TO DAYFILE        *REPORT ERRORS 
56 GOTO 77                       *END MODULE EXECUTION
* 
* --------DATA COMPARE SUBROUTINE 
* 
60 B5 = 400 
   DUP 7777 TO OB FOR 400 
   B3 = SB(42).LS.7              *PUT WTA IN B5 
   B4 = WT.RS.5                  *PUT WT IN B4
   B4 = B3 + B4                  *PUT WTA AND WT IN B4
   IF (B4.GT.400) GOTO 62        *IF WT LARGER THAN BFR 
   B5 = WT - 1
62 COMPARE IB TO OB FOR B5, ABT 64
   GOTO 65
64 ERROR 2/105, GOSUB 70         *DATA COMPARE ERROR
65 RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 54                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT41 - 
   MODULE TCT43,DCART(46,47)LOCK   -  GENERAL/SENSE STATUS -
*** TCT43  - GENERAL/SENSE STATUS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT43  IS A REPAIR MODULE  THAT  SIMPLY  RESERVES  THE  UNIT
*         UNDER  TEST AND DISPLAYS GENERAL,  DETAIL AND  SENSE STATUS.
*         IT IS  DESIGNED TO BE  USED  TO  REPAIR  SUBSYSTEM  PROBLEMS
*         INVOLVING   THE  CONNECT  SEQUENCE.  THIS  MODULE  DOES  NOT
*         TERMINATE.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE BASED ON PARAMETERS IN P1 REGISTER.
*         3. DISPLAY GENERAL, DETAIL AND SENSE STATUS.
*         4. REPEAT STEPS 2 AND 3 UNTIL STOPPED BY THE OPERATOR OR  AN
*            ERROR OCCURS.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = SENSE STATUS WORD.
*         B1  = SENSE STATUS WORD.
*         B2  = LOOP COUNT. 
*         B4  = SENSE STATUS. 
*         B5  = MESSAGE NUMBER IN CASE OF ABORT.
*         B6  = MESSAGE LINE. 
*         B8  = SENSE STATUS. 
*         B9  = SENSE STATUS. 
*         B10 = SENSE STATUS. 
*         B11 = SENSE STATUS. 
*         B12 = SENSE STATUS. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT43 - GENERAL/SENSE STATUS -
5  FORMAT TCT43 - ERRS=*DEC LOOPS=*DEC
14 FORMAT          GENERAL STATUS = *OCT *OCT 
15 FORMAT  DS(1-7)  =*OCT *OCT *OCT *OCT *OCT *OCT *OCT 
16 FORMAT  DS(8-14) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT 
17 FORMAT  DS(15-21)=*OCT *OCT *OCT *OCT *OCT *OCT *OCT 
20 FORMAT  DS(22-26)=*OCT *OCT *OCT *OCT *OCT 
21 FORMAT              SENSE BYTE STATUS IN HEX 
22 FORMAT   SENSE BYTE 0-7  = *H  *H  *H  *H  *H  *H  *H  *H
23 FORMAT   SENSE BYTE 8-15 = *H  *H  *H  *H  *H  *H  *H  *H
24 FORMAT   SENSE BYTE 16-23= *H  *H  *H  *H  *H  *H  *H  *H
25 FORMAT   SENSE BYTE 24-31= *H  *H  *H  *H  *H  *H  *H  *H
26 FORMAT       FSC TAPE SUBSYSTEM ADAPTER INFORMATION
27 FORMAT       WORDS(23-26) = *OCTB *OCTB *OCTB *OCTB
* 
* --------MODULE INITIALIZATION 
* 
30 B15 = 43D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   MSG 0 TO LINE 2
* 
* --------MODULE TEST 
* 
32 B6 = 4 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 15                      *COMMAND INDEX FOR STATUS SENSE
   STATUS, ABT 74 
   MSG 14 2 WORDS FROM SB (1) TO LINE B6
   B6 = B6 + 1
   MSG 15 7 WORDS FROM SB (3) TO LINE B6
   B6 = B6 + 1
   MSG 16 7 WORDS FROM SB (12) TO LINE B6 
   B6 = B6 + 1
   MSG 17 7 WORDS FROM SB (21) TO LINE B6 
   B6 = B6 + 1
   MSG 20 5 WORDS FROM SB (30) TO LINE B6 
   B6 = B6 + 1
   MSG 21 TO LINE B6
   B6 = B6 + 1
   B14 = 440B 
   B0 = 0 
   B8 = 3 
52 B10 = SB(B8).RS.4
   B11 = SB(B8).AND.17B.LS.4
   B8 = B8 + 1
   B12 = SB(B8).RS.8
   B11 = B11 + B12
   B12 = SB(B8).AND.377B
   B8 = B8 + 1
   IB(B14) = B10
   B14 = B14 + 1
   IB(B14) = B11
   B14 = B14 + 1
   IB(B14) = B12
   B14 = B14 + 1
   GOTO 52 WHILE (B0+1.LE.12) 
   MSG 22 8 WORDS FROM IB (440) TO LINE B6
   B6 = B6 + 1
   MSG 23 8 WORDS FROM IB (450) TO LINE B6
   B6 = B6 + 1
   MSG 24 8 WORDS FROM IB (460) TO LINE B6
   B6 = B6 + 1
   MSG 25 8 WORDS FROM IB (470) TO LINE B6
   B6 = B6 + 1
   MSG 26 TO LINE B6
   B6 = B6 + 1
   MSG 27 4 WORDS FROM SB (31) TO LINE B6 
   B6 = B6 + 1
60 B2 = B2 + 1                   *BUMP LOOP COUNT 
   GOTO 32                       *LOOP
* 
* --------PROCESS MODULE DETECTED ERRORS AND ABORTS 
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *NOT SCOPING 
   MSG 5 (B13,B2) TO DISPLAY
   GOTO 60
75 CALL 97A                      *POST ABORT MESSAGE
   MSG 0 TO DISPLAY 
   MSG 0 TO LINE 2
   GOTO 60
   END 30 
COMPILE   - TCT43 - 
   MODULE TCT45,DCART(46,47)LOCK   -  SEARCH FILE MARK TEST - 
*** TCT45  - SEARCH FILE MARK TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         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 TCT45 DOES SEARCH
*         FILEMARK, WHICH IF THE FILE MARK IS A LONG DISTANCE FROM THE
*         PRESENT TAPE POSITION COULD CAUSE THE CONTROLLER SELECTED TO
*         BE BUSY FOR A GREATER LENGTH OF TIME THAN COULD BE TOLERATED
*         BY THE OPERATING SYSTEM.  FAILURE TO SET THE ACCESS LEVEL TO
*         10 CAUSES TESTING TO BE ABORTED.
* 
*         PARAMETER REGISTER P9 CONTROLS THE NUMBER OF ITERATIONS THIS
*         MODULE EXECUTES.  IF P9 = 0, ALL OF TAPE IS USED. 
* 
*         THIS MODULE DOES NOT SUPPORT REPEAT CONDITION OR SCOPE LOOP.
*         REPEAT MODULE IS SUPPORTED. 
* 
*         THIS MODULE WILL TERMINATE AFTER ONE MODULE DETECTED  ERROR,
*         OR ONE COMMAND ABORT. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. IF ACCESS LESS THAN 10 POST ACCESS LEVEL TOO LOW  AND END
*            THE MODULE.
*         3. RESERVE THE UNIT AND  REWIND.  REPORT A 262 ERROR IF FILE
*            MARK STATUS IS UP AFTER THE REWIND HAS  COMPLETED. 
*         4. RESERVE THE UNIT AND WRITE ONE RECORD OF 500 WORDS.
*         5. WRITE A FILE MARK AND ANOTHER 500 WORD RECORD.  REPORT  A
*            122 ERROR IF NO END-OF-FILE STATUS AFTER THE WRITE OF THE
*            FILE MARK. 
*         6. SEARCH FILE MARK REVERSE.  REPORT A  261 ERROR IF NO FILE
*            MARK STATUS. 
*         7. RESERVE THE UNIT AND BACKSPACE ONE RECORD. 
*         8. SEARCH  FILE MARK FORWARD.  REPORT A 260 ERROR IF NO FILE
*            MARK STATUS. 
*         9. REPEAT  STEPS  4  THRU 8 THE NUMBER OF TIMES SPECIFIED BY
*            PARAMETER REGISTER P9. 
*        10. REPEAT STEPS  3-9 IF REPEAT CONDITION OR REPEAT MODULE IS
*            SELECTED.  OTHERWISE, TERMINATE. 
* 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERROR MESSAGES.
*         2. -EC 122 - NO END-OF-FILE STATUS AFTER AN ENDFILE.
*         3. -EC 260 - NO FILE MARK STATUS AFTER SEARCH FM FWD  IN THE
*            SEARCH FILE MARK TEST. 
*         4. -EC 261 - NO FILE MARK STATUS AFTER SEARCH FM REV  IN THE
*            SEARCH FILE MARK TEST. 
*         5. -EC 262 - FILE MARK STATUS AT LOAD POINT  IN  THE  SEARCH
*            FILE MARK TEST.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER 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.
*         B8  = DELAY VALUE TO SET TO NORMAL. 
*         B9  = DELAY VALUE TO SET TO NORMAL. 
*         B11 = DELAY VALUE TO SET TO 1 SEC FOR ENDFILE AFTER REWIND. 
*         B12 = DELAY VALUE TO SET TO 1 SEC FOR ENDFILE AFTER REWIND. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT96I - POST ABORT MESSAGE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT45 - SEARCH FILE MARK TEST 
2  FORMAT TCT45 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT45 - ITERATION (FILE) COUNT = *DEC (D) 
10 FORMAT TCT45 - NEEDS AL=10 TO EXECUTE AL SELECTED = *OCT 
11 FORMAT TCT45 - NOT EXECUTED BECAUSE THE AL IS TOO LOW. 
12 FORMAT   NEEDS AL 10 OR GREATER AL SELECTED = *OCT 
25 FORMAT TCT45 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE BOT TO 4, FILEMK TO 20, BUSY TO 2, EOT TO 10
* 
* --------MODULE INITIALIZATION 
* 
26 B15 = 45D                     *MODULE NUMBER 
   MSG 0 TO PRINT                *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
   IF (AL.GE.10) GOTO 30         *IF AL OK
   MSG 11 TO LINE 1              *IF AL NOT HIGH ENOUGH 
   MSG 12 (AL) TO LINE 2         *IF AL NOT HIGH ENOUGH 
   MSG 10 (AL) TO DISPLAY,PRINT  *AL TOO LOW
   PICTURE
   PAUSE
   GOTO 77
* 
* --------RESERVE UNIT, REWIND AND WRITE ONE RECORD 
* 
30 MSG 0 TO DISPLAY              *RUNNING MESSAGE 
   GOSUB 44                      *RESERVE THE UNIT
   GOSUB 54                      *REWIND
32 MSG 6 (B0) TO LINE 20         *ITERATION COUNT 
   GOSUB 66                      *WRITE ONE RECORD
   IF (SB(1).AND.EOT.NE.0) GOTO 36  *IF END OF TAPE 
* 
* --------WRITE END-OF-FILE AND ANOTHER RECORD
* 
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE A FILE MARK 
   IF (SB(1).AND.EOT.NE.0) GOTO 36  *IF END OF TAPE 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOTO 70  *NO EOF 
   GOSUB 66                      *WRITE ONE RECORD
   IF (SB(1).AND.EOT.NE.0) GOTO 36  *IF END OF TAPE 
* 
* --------SEARCH FILE MARK REVERSE
* 
   B14 = 27                      *COMMAND INDEX FOR SFMREV
   SEARCH FM REV, ABT 74         *SEARCH FILE MARK REVERSE
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/261, GOTO 70  *NO FM
* 
* --------BACKSPACE ONE RECORD
* 
   GOSUB 44                      *RESERVE 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
* 
* --------SEARCH FILE MARK FORWARD
* 
   B14 = 26                      *COMMAND INDEX FOR SFMFWD
   SEARCH FM FWD, ABT 74         *SEARCH FILE MARK FORWARD
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/260, GOTO 70  *NO FM
   IF (SB(1).AND.EOT.NE.0) GOTO 36  *IF END OF TAPE 
34 IF (P9.EQ.0) GOTO 32 
   GOTO 32 WHILE (B0+1.NE.P9)    *DO P9 SEQUENCES 
* 
* --------MODULE REPEAT/EXIT
* 
36 B0 = 0                        *CLEAR FILE(ITERATION) COUNT 
37 IF (ES.AND.RM.NE.0) GOTO 30   *IF REPEAT MODULE
   IF (B13.EQ.0) GOTO 42         *IF NO MODULE ERRORS 
40 MSG 25(B13) TO DAYFILE        *REPORT ERRORS TO DAYFILE
42 GOSUB 50                      *RELEASE UNIT IF CONNECTED 
   GOTO 77                       *TERMINATE 
* 
* --------RESERVE SUBROUTINE
* 
44 IF (B2.EQ.0) GOTO 46          *IF UNIT NOT CONNECTED 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE UNIT
   B2 = 0                        *INDICATE UNIT NOT CONNECTED 
46 B14 = 12                      *COMMAND INDEX FOR RESERVE COMMAND 
   RES P1, ABT 74                *RESERVE 
   RETURN 
* 
* --------RELEASE SUBROUTINE
* 
50 B14 = 13                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE I/O CHANNEL 
   B2 = 0                        *INDICATE NOT CONNECTED
   RETURN 
* 
* --------REWIND SUBROUTINE 
* 
54 GOSUB 44                      *RESERVE 
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   IF (SB(1).AND.FILEMK.NE.0) ERROR 2/262, GOTO 70  *IF EOF 
   RETURN 
* 
* --------WRITE ONE 500B WORD RECORD SUBROUTINE 
* 
66 GOSUB 44                      *RESERVE 
   WC = 500                      *SET WORD COUNT TO 500 
   B14 = 22                      *COMMAND INDEX FOR WRITE 
   WRITE, ABT 74
   RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
   ENDSUB                        *END ALL SUBROUTINES 
71 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 76                       *TEST REPEAT MODULE
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   ENDSUB                        *END ALL SUBROUTINES 
   CALL 97A                      *POST ABORT MESSAGE
76 GOTO 37                       *CHECK RM
77 END 26 
COMPILE   - TCT45 - 
   MODULE TCT47,DCART(46,47)LOCK   -  READ BUFFERED LOG - 
*** TCT47  - READ BUFFERED LOG
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT47  IS A REPAIR MODULE  THAT  SIMPLY  RESERVES  THE  UNIT
*         UNDER TEST AND DISPLAYS THE BUFFERED LOG DATA.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE BASED ON PARAMETERS IN P1 REGISTER.
*         3. DISPLAY BUFFERED LOG DATA. 
*         4. END THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT53B - DISPLAY BUFFERED LOG DATA. 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT47 - READ BUFFERED LOG - 
5  FORMAT TCT47 - ERRS=*DEC 
* 
* --------MODULE INITIALIZATION 
* 
30 B15 = 47D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
* 
* --------MODULE TEST 
* 
32 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 10                      *COMMAND INDEX FOR READ BUFFERED LOG 
   READ BUFFERED LOG, ABT 74
   CALL 53B                      *FORMAT AND DISPLAY BUFFERED LOG DATA
   PICTURE
   GOTO 77                       *END THE MODULE
* 
* --------PROCESS MODULE DETECTED ERRORS AND ABORTS 
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *NOT SCOPING 
   MSG 5 (B13) TO DISPLAY,PRINT 
   GOTO 77
75 CALL 97A                      *POST ABORT MESSAGE
   MSG 0 TO DISPLAY 
77 END 30 
COMPILE   - TCT47 - 
   MODULE TCT51,DCART(46,47)LOCK   -  COMPATIBILITY TEST -
*** TCT51  - COMPATIBILITY TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE ALLOWS THE USER  TO  VERIFY  READ  COMPATIBILITY
*         BETWEEN  5680 CARTRIDGE TAPE UNITS. TO ACCOMPLISH THIS TASK,
*         A -COMPAT- TAPE IS GENERATED SUCH THAT EACH UNIT IN A SYSTEM
*         HAS A FILE OF DATA ON THE TAPE. 
* 
*         THIS  TEST OPERATES IN TWO MODES, DETERMINED BY THE PRESENCE
*         OR  ABSENCE  OF WRITE ENABLE FROM THE UNIT TO BE TESTED.  IF
*         WRITE ENABLE IS  PRESENT IT INDICATES THAT THE USER WANTS TO
*         ADD  A  NEW FILE OF DATA TO THE -COMPAT- TAPE.  THIS WILL BE
*         ACCOMPLISHED AS FOLLOWS;
* 
*         1. READ THE TAPE FORWARD FROM LOAD POINT TO DOUBLE EOF. 
*         2. BACKSPACE OVER THE SECOND EOF. 
*         3. WRITE A FILE OF DATA AND DOUBLE EOF. 
* 
*         THE READ OPERATIONS VERIFY THE ABILITY OF THIS UNIT TO  READ
*         DATA ON THE TAPE WRITTEN BY PREVIOUS UNITS. PRIOR TO RUNNING
*         THE COMPATIBILITY TEST IN A WRITE MODE, A NORMAL RUN  OF TCT
*         SHOULD BE MADE TO ENSURE THE UNIT IS OPERATIONAL. NORMALLY A
*         LOT OF TIME AND EFFORT WILL BE INVESTED IN THE COMPATIBILITY
*         TAPE AND CARE MUST BE USED TO ENSURE THAT A  BAD  UNIT  DOES
*         NOT DESTROY IT.  SHOULD IT BE NECESSARY,  IT MAY BE POSSIBLE
*         TO CLEAN UP THE TAPE USING MODULE TCT52.
* 
*         SINCE  A  SEARCH  IS  MADE FOR DOUBLE END-OF-FILES IN EITHER
*         MODE,  THE  USER MUST ENSURE THAT A NEW -COMPAT- TAPE HAS AT
*         LEAST  TWO END-OF-FILES OFF LOAD POINT WHEN THE FIRST RUN OF
*         THIS TEST IS MADE.  THIS CAN BE ACCOMPLISHED WITH THE USE OF
*         MODULE TCT13 (WRITE FILE MARKS TEST). THIS PROCEDURE IS ONLY
*         REQUIRED ON THE FIRST RUN TO INITIALIZE THE -COMPAT- TAPE.
* 
*         THE  SECOND MODE OF OPERATION IS USED IF WRITE ENABLE IS NOT
*         PRESENT.  THIS INDICATES THAT THE USER IS SIMPLY TESTING FOR
*         READ  COMPATIBILITY  AND NO WRITING IS TO BE PERFORMED.  THE
*         TAPE IS REWOUND AND READ FORWARD TO DOUBLE END-OF-FILES.
* 
*         THE  FILE OF DATA ADDED TO THE TAPE IN A WRITE MODE CONTAINS
*         200  DECIMAL  RECORDS  OF RANDOM DATA.  THE RECORD LENGTH IS
*         DEFINED BY THE USER IN  PARAMETER REGISTER P2.  ACTUALLY, P2
*         WILL  BE  MULTIPLIED  BY  32  TO OBTAIN THE ACTUAL NUMBER OF
*         WORDS TO WRITE.  TYPICALLY  A VALUE OF 1250 OCTAL SHOULD  BE
*         USED IN P2 SUCH THAT 52400 OCTAL  PP WORDS ARE WRITTEN. THIS
*         IS THE NORMAL RECORD SIZE  FOR  OPERATING SYSTEM TAPES.  THE
*         RECORD LENGTH SELECTED IS QUITE  IMPORTANT SINCE IT CONTROLS
*         THE  NUMBER  OF  UNITS  THAT  MAY HAVE A FILE OF DATA ON THE
*         -COMPAT- TAPE. FOR  EXAMPLE,  USING  THE  ABOVE FIGURES, THE
*         FOLLOWING INDICATES  THE  NUMBER OF UNITS THAT COULD SHARE A
*         CARTRIDGE OF TAPE.  IF MORE UNITS THAN THOSE INDICATED  MUST
*         BE TESTED, THE USER MUST USE SHORTER RECORDS OR USE MULTIPLE
*         TAPES.  TO  ENSURE  A  REASONABLE TEST,  A WORD COUNT OF 240
*         OCTAL IS USED IF THE USER SETS REGISTER P2 LESS THAN 240. 
* 
*         TO  ASSIST  IN ISOLATING UNITS THAT ARE NOT COMPATIBLE, EACH
*         RECORD  WRITTEN   CONTAINS   INFORMATION   WITHIN   IT  THAT
*         IDENTIFIES  WHICH  FILE  IT IS IN, WHAT RECORD NUMBER IT IS,
*         IT'S LENGTH  AND  THE CHANNEL, EQUIPMENT, UNIT AND SYSTEM ID
*         OF THE UNIT THAT HAS WRITTEN THE DATA.  THIS DATA IS WRITTEN
*         WITHIN THE  RECORD  SUCH  THAT  IT IS AVAILABLE ON A FORWARD
*         READ IN THE FOLLOWING WORDS OF THE INPUT BUFFER.
* 
*            IB(1) = FILE NUMBER
*            IB(2) = RECORD NUMBER
*            IB(3) = LENGTH/32
*            IB(4) = CHANNEL
*            IB(5) = EQUIPMENT
*            IB(6) = UNIT 
*            IB(7) = SYSTEM NUMBER
* 
*         IN ORDER TO IDENTIFY THE SYSTEM NUMBER IN A  MULTI-MAINFRAME
*         ENVIRONMENT,  THE  VALUE  SUPPLIED  BY THE USER IN PARAMETER
*         REGISTER P6 IS USED DURING A WRITE MODE AS THE SYSTEM NUMBER. 
*         ACTUALLY  THIS CAN BE ANY OCTAL VALUE THE USER CHOOSES.  FOR
*         EXAMPLE, IT  MAY  INDICATE  THE EST, OR SYSTEM AND EST OR AN
*         OCTAL  BOX  NUMBER  OF  THE UNIT BEING TESTED.  IT SHOULD BE
*         UNDERSTOOD  THAT  THE DATA IN IB(1-7) MAY BE INVALID IF READ
*         ERRORS OCCUR.  HOWEVER, THE FILE NUMBER BEING PROCESSED THAT
*         IS  REPORTED  IN  OUTPUT  IS  CORRECT  AND  CAN  BE  USED TO
*         DETERMINE THE UNIT THAT WROTE THE DATA (THE USER MUST KEEP A
*         GOOD COPY OF THE OUTPUT OF MODULE 51 TO BE ABLE TO DETERMINE
*         WHICH FILE WAS WRITTEN BY WHICH UNIT).
* 
*         IT IS IMPORTANT THAT A CERTIFIED TAPE BE USED FOR THIS TEST.
*         DURING  A WRITE MODE, WRITE ERRORS ARE RECOVERED IF POSSIBLE
*         BY  DOING  A  LOCATE  BLOCK TO LAST GOOD RECORD, ERASING AND
*         RE-WRITING A RECORD OR FILE MARK MARK UP TO THREE TIMES.  IF
*         THIS PROCESS IS NOT SUCCESSFUL, OR IF AN ERROR OCCURS ON THE
*         ERASE, THE WRITE IS ABORTED. TO TRY AND SAVE  THE  FORMAT OF
*         THE  -COMPAT-  TAPE,  A  SEARCH IS MADE REVERSE FOR THE LAST
*         END-OF-FILE AND AN ATTEMPT IS MADE TO  ADD  ANOTHER  END-OF-
*         FILE TO  THE  TAPE SUCH THAT IT  IS  PROPERLY TERMINATED FOR
*         SUBSEQUENT RUNS. HOWEVER, CARE MUST BE USED IF NON-RECOVERED
*         WRITES  OCCUR  SINCE  THE  TAPE  MAY  NO  LONGER BE PROPERLY
*         TERMINATED.  WRITING ALSO  TERMINATES  ONCE  END-OF-TAPE  IS
*         DETECTED AND THE USER SHOULD NOT ATTEMPT TO  ADD  MORE FILES
*         TO THE TAPE (NO MORE WRITES ARE ALLOWED). 
* 
*         IN A READ MODE NO RECOVERY IS ATTEMPTED. ERRORS ARE REPORTED
*         AND  READING CONTINUES.  IN ADDITION TO STATUS CHECKS DURING
*         THE  READING,  CHECKS  ARE  MADE  TO ENSURE THAT THE CORRECT
*         NUMBER OF RECORDS ARE READ FOR EACH FILE ON  FORWARD  READS.
*         SINCE ERROR RECOVERY IS PERFORMED ON WRITE OPERATIONS,  ZERO
*         ERRORS ARE EXPECTED ON READ.  ANY ERROR  INDICATES A FAILURE
*         OF THE TEST AND THE CAUSE MUST BE FOUND.
* 
*         IT IS RECOMMENDED THAT ERROR RECOVERY BE DISABLED DURING THE
*         COMPATIBILITY TEST.  THE TEST SHOULD BE  EXECUTED  IN A READ
*         MODE AT LEAST ONCE EVERY MONTH ON ALL  UNITS  AND  THE WRITE
*         MODE SHOULD BE PERFORMED ON A UNIT  IF  MAJOR  ELECTRICAL OR
*         MECHANICAL   ADJUSTMENT/REPLACEMENTS  ARE  MADE  THAT  COULD
*         IMPACT TAPE SKEW, TAPE TRACKING OR TAPE-TO-HEAD CONTACT.
* 
*         THE COMPATIBILITY TEST IS ACTUALLY MADE UP OF TWO MODULES AS
*         FOLLOWS;
* 
*            TCT51  - READ FORWARD
*            TCT51A - WRITE 
* 
*         TO  REDUCE  COMPLEXITY,  EACH  MODULE  WILL   BE   DESCRIBED
*         SEPARATELY SINCE EACH  PERFORMS A  SPECIFIC  FUNCTION IN THE
*         OVERALL TEST. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. CALCULATE  WORD  COUNT  AND BUFFER INDEXES IN CASE WRITES
*            ARE PERFORMED LATER.  SET THE WORD COUNT TO 500. 
*         3. RESERVE. 
*         4. REWIND.
*         5. READ THE FIRST RECORD FORWARD. 
*         6. IF THE FIRST  RECORD  IS NOT AN END-OF-FILE, REPORT EC070
*            AND TERMINATE (NOT A -COMPAT- TAPE). 
*         7. INITIALIZE THE FILE COUNTER, RECORD COUNTER AND NUMBER OF
*            FILE MARKS READ TO 1.
*         8. RESERVE. 
*         9. READ A RECORD FORWARD. 
*        10. IF END-OF-TAPE IS ENCOUNTERED, REPORT THE FACT AND EXIT. 
*        11. IF END-OF-FILE STATUS,  BUMP THE FILE COUNTER AND NUMBER 
*            OF CONSECUTIVE FILE  MARKS  COUNTER.  IF TWO CONSECUTIVE 
*            FILE MARKS  HAVE  BEEN  ENCOUNTERED,  BACKSPACE OVER THE 
*            SECOND END-OF-FILE AND EXIT TO TCT51A (WRITE MODULE). IF 
*            NOT  TWO  FILE  MARKS,  VERIFY THAT THE PROPER NUMBER OF 
*            RECORDS  WERE  READ  IN  THE LAST  FILE.  IF NOT, REPORT 
*            EC071. RESET THE RECORD COUNTER TO 1 AND GO TO STEP 8 TO 
*            CONTINUE THE READ. 
*        12. IF AN ABNORMAL STATUS ERROR OCCURRED ON THE READ, REPORT 
*            EC201. 
*        13. WE  ARRIVE  AT THIS STEP IF AN END-OF-FILE WAS NOT READ. 
*            RESET THE  FILE  MARK COUNTER.  REPORT A RUNNING MESSAGE 
*            IF THE PREVIOUS READ WAS THE FIRST RECORD OF A NEW FILE. 
*            INCREMENT THE  RECORD COUNT AND GO TO STEP 8 TO CONTINUE 
*            THE READ.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. -EC070- TAPE MOUNTED IS NOT A -COMPAT- TAPE. 
*         3. -EC071- RECORD COUNT=RRRR IN FILE FFFF, EXP=0311.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = TOTAL FILE COUNTER. 
*         B1  = RECORD COUNTER PER FILE.
*         B2  = INDEX INTO OB FOR RECORD CODING.
*         B3  = WORD COUNT FOR LATER WRITE OPERATIONS.
*         B4  = CONSECUTIVE FILE MARKS COUNTER. 
*         B5  = ABORT MESSAGE POINTER.
*         B7  = MOTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT51 - COMPATIBILITY FORWARD READ -
2  FORMAT TCT51 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
12 FORMAT TCT51 - FILE=*OCT CH=*OCT EQ=*OCT UN=*OCT SYS=*OCT
13 FORMAT TCT51 - END OF TAPE ENCOUNTERED AT RECORD *OCT
14 FORMAT TCT51 ERROR(S) IN MODULE = *DEC - 
* 
   EQUATE EOT TO 10, EOF TO 20, RING TO 200, STERR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 51D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
* 
* --------CALCULATE INDEX INTO OB FOR  READ DATA
* 
   B3 = P2                       *USER SELECTED WORD COUNT
   IF (B3.GE.240) GOTO 21        *IF .GE. MINIMUM 
   B3 = 240                      *SET IT TO MINIMUM 
* 
* --------MODULE TEST 
* 
21 B2 = B3                       *COMPUTE INDEX TO OB 
22 IF (B2-50.LE.0) GOTO 24       *IF REMAINDER FOUND
   B2 = B2 - 50                  *DIVIDE BY 50
   GOTO 22
24 B2 = B2.LS.3-10               *COMPUTE INDEX 
   IF (B2.GT.10) GOTO 26         *IF NOT ON TOP OF FORWARD DATA 
   B2 = B2 + 10                  *ADVANCE IT
   B3 = B3 + 1                   *AND BUMP WORD COUNT 
* 
* --------DETERMINE IF WE HAVE A -COMPAT- TAPE MOUNTED
* 
26 WC = 500 
   B5 = P3.RS.6 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FIRST RECORD 
   IF (SB(1).AND.EOF.NE.0) GOTO 30  *IF EOF ON FIRST READ 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   ERROR 2/070 GOSUB 70          *PROCESS THE ERROR 
   GOTO 76                       *TERMINATE, NOT -COMPAT- TAPE
30 B0 = 1                        *SET FILE COUNT TO 1 
   B4 = 1                        *SET CONSECUTIVE FILES TO 1
* 
* --------READ TAPE FORWARD COUNTING RECORDS AND FILES. 
* 
32 B1 = 1                        *SET RECORD COUNT TO 1 
34 MSG 6 (B0,B1) TO LINE 20      *UPDATE RECORD/FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
36 IF (SB(1).AND.STERR.EQ.0) GOTO 40  *IF NO ERROR,EOF OR EOT 
   IF (SB(1).AND.EOF.NE.0) GOTO 44  *IF END OF FILE 
   IF (SB(1).AND.EOT.NE.0) GOTO 54  *IF END OF TAPE 
   ERROR 2/201, GOSUB 70         *REPORT THE READ ERROR 
40 B4 = 0                        *CLEAR CONSECUTIVE FILES CNTR. 
   IF (B1.NE.1) GOTO 42          *IF NOT FIRST RECORD OF FILE 
   MSG 12 (B0,IB(4),IB(5),IB(6),IB(7)) TO DISPLAY,PRINT 
42 B1 = B1 + 1                   *BUMP RECORD COUNTER 
   GOTO 34
44 B4 = B4 + 1                   *BUMP CONSECUTIVE FILES CNTR.
   IF (B4.EQ.2) GOTO 52          *IF DOUBLE END OF FILES
   IF (B1.NE.201D) GOTO 46       *IF RECORD COUNT INCORRECT 
   B0 = B0 + 1                   *BUMP FILE COUNT 
   IF (SB(1).AND.EOT.EQ.0) GOTO 32  *IF NOT END OF TAPE 
   B1 = 200D                     *RESET RECORD COUNT
   GOTO 54
46 ERROR 2/071 GOSUB 70          *PROCESS THE ERROR 
50 B0 = B0 + 1                   *BUMP FILE COUNT 
   IF (SB(1).AND.EOT.EQ.0) GOTO 32  *IF NOT END OF TAPE 
   B1 = 200D                     *RESET RECORD COUNT
   GOTO 54
* 
* --------DOUBLE END-OF-FILES OR EOT DETECTED.  EXIT WITH 
*         B0 = FILES READ AND B1 = RECORDS READ IN LAST FILE. 
* 
52 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 6                        *REVERSE READ MOTION CODE
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74                  *BACK OVER SECOND END OF FILE
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   B1 = 200D                     *RESET RECORD COUNT
   IF (SB(1).AND.EOT.NE.0) GOTO 54  *IF END OF TAPE 
   IF (SB(1).AND.RING.EQ.0) GOTO 56  *IF NO WRITE ENABLE
   EXIT TO 51A                   *EXIT TO WRITE TAPE
54 MSG 13 (B1) TO DISPLAY,PRINT  *INDICATE EOT DETECTED 
56 EXIT                          *EXIT THE MODULE 
* 
* --------PROCESS MODULE ERRORS 
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNTER
   MSG EM (EC,EA) TO LINE 1      *REPORT ERROR CODE/LINE
   CALL 98A                      *PROCESS ERROR CODE
   RETURN 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNTER
   CALL 97A                      *POST ABORT MESSAGE
76 MSG 14 (B13) TO DAYFILE       *REPORT ERRORS TO DAYFILE
   END 20 
COMPILE   - TCT51 - 
   MODULE TCT51A,DCART(46,47)LOCK  -  COMPATIBILITY WRITE - 
*** TCT51A - COMPATIBILITY WRITE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
*         WRITES A  NEW FILE OF DATA TO THE -COMPAT- TAPE.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. GENERATE RANDOM DATA TO THE OUTPUT BUFFER USING THE REAL-
*            TIME CLOCK AS THE STARTER. 
*         3. INSERT  RECORD  CODING  DATA  INTO THE OUTPUT BUFFER THAT
*            IDENTIFIES THIS RECORD. ALL WORDS EXCEPT THE RECORD COUNT
*            ARE INSERTED.
*         4. CLEAR THE RECORD COUNTER.  SET THE WORD COUNT FOR WRITES.
*         5. RESERVE. 
*         6. BUMP THE RECORD COUNT BY 1.
*         7. INSERT THE RECORD COUNT INTO THE OUTPUT BUFFER.
*         8. WRITE LONG (32 TIMES WC) ONE RECORD. 
*         9. SYNCHRONIZE TO FLUSH THE BUFFER AND SAVE BLOCK IDS.
*        10. IF END-OF-TAPE IS ENCOUNTERED, REPORT THE FACT AND EXIT. 
*        11. IF  NO ERRORS OCCURRED ON THE WRITE AND 200D RECORDS HAVE
*            NOT BEEN WRITTEN, GO TO STEP 4 TO CONTINUE THE WRITE.  IF
*            200D  RECORDS  HAVE  BEEN WRITTEN, WRITE TWO END-OF-FILES
*            AND EXIT. IF AN ERROR HAS OCCURRED ON THE WRITE OR OCCURS
*            ON THE WRITE OF THE TWO FILE MARKS, THE ERROR IS REPORTED
*            AND  RECOVERY  IS  THEN   ATTEMPTED.   AFTER   SUCCESSFUL
*            RECOVERY, PROGRAM FLOW CONTINUES AS THOUGH THE ERROR  DID
*            NOT OCCUR. THE STEPS BELOW IDENTIFY THE RECOVERY SEQUENCE
*            FOR BOTH WRITE AND END-OF-FILE ERRORS. 
*        12. RESERVE. 
*        13. LOCATE BLOCK TO LAST GOOD RECORD.
*        14. ERASE. 
*        15. IF  A  STATUS  ERROR  OCCURS ON THE ERASE, GO TO STEP 16.
*            OTHERWISE,  RETRY THE WRITE OR ENDFILE OPERATION.  IF THE
*            ERROR PERSISTS,  REPEAT STEPS 12-14 THREE TIME.  EXIT THE
*            RECOVERY SEQUENCE  IF THE ERROR IS RECOVERED WITHIN THREE
*            ATTEMPTS.
*        15. WE  GET TO THIS STEP IF AN ERROR OCCURS ON AN ERASE OR IF
*            A  WRITE  OR ENDFILE OPERATION CANNOT BE CORRECTED WITH 3
*            RETRIES.  RESERVE  AND  BACKSPACE THE TAPE UNTIL THE LAST
*            GOOD  END-OF-FILE  IS  DETECTED.  ABORT  THE TEST IF LOAD
*            POINT  IS  DETECTED BEFORE THE END-OF-FILE.  READ FORWARD
*            OVER THE END-OF-FILE AND WRITE A SECOND END-OF-FILE IN AN
*            ATTEMPT  TO  PROPERLY  TERMINATE  THE TAPE (STATUS IS NOT
*            TESTED ON THIS WRITE).  THE TEST IS THEN ABORTED.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. EC122- NO  FM/TM  STATUS  IN  GENERAL  STATUS  AT  END OF
*            OPERATION AFTER A WRITE FM/TM. 
*         3. EC200- AN UNEXPECTED BIT APPEARED IN GENERAL STATUS AFTER
*            A WRITE OPERATION.  NOTE THAT GENERAL STATUS  WAS  MASKED
*            WITH 4070B.
*         4. EC246- AN ALERT STATUS OCCURRED AFTER AN ERASE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = TOTAL FILE COUNTER. 
*         B1  = RECORD COUNTER PER FILE.
*         B2  = INDEX INTO OB FOR RECORD CODING.
*         B3  = WORD COUNT FOR WRITE OPERATIONS.
*         B5  = ABORT MESSAGE POINTER.
*         B6  = WRITE AND ENDFILE RETRY COUNTER.
*         B7  = MOTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT51A - COMPATIBILITY WRITE (FILE *OCT)
2  FORMAT TCT51A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
6  FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
13 FORMAT TCT51A - END OF TAPE ENCOUNTERED AT RECORD *OCT 
14 FORMAT TCT51A TERMINATED- UNRECOVERABLE WRITE
15 FORMAT TCT51A TERMINATED- BOT DETECTED ON WRITE RECOVERY 
16 FORMAT TCT51A ERROR(S) IN MODULE = *DEC
* 
   EQUATE BOT TO 4, EOT TO 10, EOF TO 20, STERR TO 4070 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 51D                     *MODULE NUMBER 
   MSG 0 (B0) TO DISPLAY,PRINT   *RUNNING MESSAGE 
   RANDOM TO OB FOR 500, START RT 
   OB(1) = B0                    *FILE COUNT
   OB(B2+6) = B0
   OB(3) = B3                    *RECORD LENGTH 
   OB(B2+4) = B3
   OB(4) = SB(37)                *CHANNEL 
   OB(B2+3) = SB(37)
   OB(5) = SB(40)                *EQUIPMENT 
   OB(B2+2) = SB(40)
   OB(6) = SB(41)                *UNIT
   OB(B2+1) = SB(41)
   OB(7) = P6                    *SYSTEM ID 
   OB(B2) = P6
   B1 = 0                        *CLEAR RECORD COUNTER
   WC = B3                       *SET WORD COUNT FOR WRITES 
* 
* --------MODULE TEST 
* 
* 
* --------WRITE A FILE OF DATA
* 
30 MSG 6 (B0,B1) TO LINE 20      *UPDATE RECORD/FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B1 = B1 + 1                   *BUMP RECORD NUMBER
   OB(2) = B1                    *RECORD NUMBER FOR WRITE DATA
   OB(B2+5) = B1
   B6 = 1                        *RETRY COUNTER FOR RECOVERY
34 B7 = 1                        *WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   B14 = 20                      *COMMAND INDEX FOR SYNCHRO 
   SYNCHRO, ABT 74               *FLUSH THE BUFFER
40 IF (SB(1).AND.STERR.EQ.EOT) GOTO 44  *IF GOOD WRITE/EOT
   IF (SB(1).AND.STERR.EQ.0) GOTO 42  *IF SUCCESSFUL WRITE
   ERROR 2/200, GOSUB 70         *REPORT THE WRITE ERROR
   GOSUB 50                      *POSITION TAPE FOR RECOVERY
   GOTO 34 WHILE(B6+1.LE.32D)    *TRY IT THIRTY TWO TIMES 
   GOTO 54                       *UNRECOVERABLE ERROR 
42 B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B8 = SB(44)                   *SAVE LAST GOOD BLOCK ID 
   B9 = SB(45)                   *SAVE LAST GOOD BLOCK ID 
   B10 = SB(46)                  *SAVE LAST GOOD BLOCK ID 
   IF (B1.NE.200D) GOTO 30       *WRITE 200D RECORDS
   GOSUB 62                      *WRITE AN END OF FILE
   GOSUB 62                      *WRITE A SECOND END OF FILE
   GOTO 46
44 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE SECOND END OF FILE
   ENDFILE, ABT 74               *WRITE SECOND END OF FILE
   MSG 13 (B1) TO DISPLAY,PRINT  *REPORT EOT ENCOUNTERED
46 B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   EXIT                          *EXIT THE MODULE 
* 
* --------REPOSITION TAPE FOR WRITE/ENDFILE RETRY 
* 
50 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 5                       *COMMAND INDEX FOR LOCATE BLOCK
   IB(0) = OB(0)                 *SAVE DATA 
   IB(1) = OB(1)                 *SAVE DATA 
   IB(2) = OB(2)                 *SAVE DATA 
   OB(0) = B8                    *SET BLOCK ID TO LOCATE RECORD 
   OB(1) = B9                    *SET BLOCK ID TO LOCATE RECORD 
   OB(2) = B10                   *SET BLOCK ID TO LOCATE RECORD 
   LOCATE BLOCK, ABT 74 
   OB(0) = IB(0)                 *RESTORE 
   OB(1) = IB(1)                 *RESTORE 
   OB(2) = IB(2)                 *RESTORE 
   B4 = B6                       *SET ERASE COUNT 
   B7 = 1                        *WRITE MOTION CODE 
51 B14 = 3                       *COMMAND INDEX FOR ERASE 
   ERASE, ABT 74                 *ERASE BAD RECORD
   IF (SB(1).AND.4060B.NE.0) GOTO 52  *TERMINATE ON ERROR 
   GOTO 51 WHILE (B4-1.NE.0)     *DECREMENT THE ERASE COUNT 
   RETURN 
52 ENDSUB 
   ERROR 2/246, GOSUB 70         *REPORT ERASE ERROR
* 
* --------ERASE ERROR OR UNRECOVERABLE WRITE.  REPOSITION 
*         TO LAST GOOD END OF FILE AND TRY TO WRITE AN EOF. 
* 
54 MSG 14 TO DISPLAY,PRINT       *REPORT UNRECOVERABLE ERROR
56 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 6                        *REVERSE READ MOTION CODE
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   IF (SB(1).AND.BOT.NE.0) GOTO 60  *IF LOAD POINT
   IF (SB(1).AND.EOF.EQ.0) GOTO 56  *SEARCH UNTIL EOF FOUND 
   B7 = 5                        *READ FORWARD MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *SKIP OVER THE EOF 
   B7 = 1                        *WRITE MOTION CODE 
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE SECOND END OF FILE
   GOTO 76
60 MSG 15 TO DISPLAY,PRINT       *REPORT TERMINATION MESSAGE
   GOTO 77
* 
* --------WRITE END OF FILE SUBROUTINE
* 
62 B6 = 3                        *RETRY COUNT 
64 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 1                        *WRITE MOTION CODE 
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.EOF.NE.0) GOTO 66  *IF SUCCESSFUL EOF
   ERROR 2/122, GOSUB 70         *REPORT EOF ERROR
   GOSUB 50                      *REPOSITION TAPE FOR RETRY 
   GOTO 64 WHILE(B6-1.NE.0)      *TRY THREE TIMES 
   GOTO 54                       *TERMINATE 
66 B0 = B0 + 1                   *BUMP FILE COUNT 
   RETURN 
* 
* --------PROCESS MODULE ERRORS 
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNTER
   MSG EM (EC,EA) TO LINE 1      *REPORT ERROR CODE AND LINE
   CALL 98A                      *ERROR CODE PROCESSOR
   RETURN 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNTER
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 16 (B13) TO DAYFILE       *REPORT ERROR TO DAYFILE 
77 END 20 
COMPILE   - TCT51A -
   MODULE TCT52,DCART(46,47)LOCK   -  COMPATIBILITY CLEANUP - 
*** TCT52  - COMPATIBILITY TAPE CLEAN-UP
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS  MODULE  IS  A  UTILITY  TO BE USED IN CONJUNCTION WITH
*         MODULE 51, TAPE  COMPATIBILITY  TEST.  IT IS  DESIGNED TO BE
*         USED TO PROPERLY TERMINATE A COMPATIBILITY TAPE WITH  DOUBLE
*         END-OF-FILES IN SITUATIONS WHERE THE TAPE  IS  NOT  PROPERLY
*         TERMINATED OR CONTAINS UN-READABLE FILES.  THE  TAPE IS READ
*         FORWARD THE  NUMBER  OF  FILES  SPECIFIED  BY  THE  USER  IN
*         PARAMETER REGISTER P8 AND ANOTHER FILE MARK IS THEN WRITTEN.
*         THE USER SHOULD INDICATE THE NUMBER OF  GOOD  FILES  ON  THE
*         TAPE IN REGISTER P8. (FILE 1 IS THE FIRST FILE, NOT 0). 
* 
*         THE  NORMAL  CHECKS  MADE BY THE READ FORWARD SECTION OF THE
*         COMPATIBILITY TEST ARE MADE BY THIS MODULE.  IF WRITE ENABLE
*         IS  NOT  PRESENT,  DOUBLE  END-OF-FILES  ARE   READ   BEFORE
*         PROCESSING  (P8)  FILES,  OR  IF  END-OF-TAPE IS ENCOUNTERED
*         PRIOR  TO  READING  (P8)  FILES,  THE  MODULE  IS TERMINATED
*         WITHOUT WRITING THE FILE MARK.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. SET THE WORD COUNT TO 500. 
*         3. RESERVE. 
*         4. REWIND.  IF THE UNIT DOES NOT HAVE WRITE  ENABLE,  REPORT
*            THE FACT AND TERMINATE.
*         5. READ THE FIRST RECORD FORWARD. 
*         6. IF  THE  FIRST RECORD IS NOT AN END-OF-FILE, REPORT EC070
*            AND TERMINATE (NOT A -COMPAT- TAPE). 
*         7. INITIALIZE THE FILE COUNTER, RECORD COUNTER AND NUMBER OF
*            FILE MARKS READ TO 1.
*         8. RESERVE. 
*         9. READ A RECORD FORWARD. 
*        10. IF  END-OF-TAPE  IS ENCOUNTERED, REPORT THE FACT AND EXIT
*            WITHOUT WRITING THE FILE MARK. 
*        11. IF  END-OF-FILE STATUS,  BUMP THE FILE COUNTER AND NUMBER
*            OF  CONSECUTIVE  FILE  MARKS COUNTER.  IF TWO CONSECUTIVE
*            FILE  MARKS  HAVE  BEEN  ENCOUNTERED, REPORT THE FACT AND
*            TERMINATE. IF NOT TWO CONSECUTIVE FILE MARKS, VERIFY THAT
*            THE PROPER NUMBER OF RECORDS WERE READ IN THE LAST  FILE.
*            IF NOT, REPORT EC071.  RESET THE RECORD COUNTER TO 1.  IF
*            THE SELECTED NUMBER OF FILES HAVE  NOT  BEEN  READ, GO TO
*            STEP 8 TO CONTINUE THE READ.  OTHERWISE, WRITE AN END-OF-
*            FILE AND TERMINATE.
*        12. IF  AN ABNORMAL STATUS ERROR OCCURRED ON THE READ, REPORT
*            EC201. 
*        13. WE  ARRIVE  AT  THIS STEP IF AN END-OF-FILE WAS NOT READ.
*            RESET THE FILE MARK COUNTER.  REPORT A RUNNING MESSAGE IF
*            THE  PREVIOUS  READ  WAS  THE FIRST RECORD OF A NEW FILE.
*            INCREMENT  THE  RECORD COUNT AND GO TO STEP 8 TO CONTINUE
*            THE READ.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. -EC070- TAPE MOUNTED IS NOT A -COMPAT- TAPE. 
*         3. -EC071- RECORD COUNT=RRRR IN FILE FFFF, EXP=0311.
*         4. -EC122- NO FM/TM  STATUS IN  GENERAL  STATUS  AT  END  OF
*            OPERATION AFTER A WRITE FM/TM. 
*         5. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = TOTAL FILE COUNTER. 
*         B1  = RECORD COUNTER PER FILE.
*         B2  = ENDFILE RETRY COUNTER.
*         B4  = CONSECUTIVE FILE MARKS COUNTER. 
*         B5  = ABORT MESSAGE POINTER.
*         B7  = MOTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT97F - STATUS ANALYSIS MODULE.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT52 - COMPATIBILITY TAPE CLEANUP -
2  FORMAT TCT52 ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
12 FORMAT TCT52 - FILE=*OCT CH=*OCT EQ=*OCT UN=*OCT SYS=*OCT
13 FORMAT TCT52 TERMINATED ON EOT - NO EOF WRITTEN
14 FORMAT TCT52 ERROR(S) IN MODULE = *DEC - 
17 FORMAT TCT52 TERMINATED ON DOUBLE EOF - NO EOF WRITTEN 
20 FORMAT TCT52 TERMINATED ON NO WRITE ENABLE-NO EOF WRITTEN
21 FORMAT TCT52 TERMINATED ON UNRECOVERABLE WRITE OF EOF
* 
   EQUATE EOT TO 10, EOF TO 20, RING TO 200, STERR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
22 B15 = 52D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
* 
* --------MODULE TEST 
* 
* 
* --------DETERMINE IF WE HAVE A -COMPAT- TAPE MOUNTED
* 
   WC = 500 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   IF (SB(1).AND.RING.NE.0) GOTO 24  *IF WRITE ENABLED
   MSG 20 TO DISPLAY,PRINT       *INDICATE NO RING
   GOTO 77                       *TERMINATE 
24 B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FIRST RECORD 
   IF (SB(1).AND.EOF.NE.0) GOTO 26  *IF EOF ON FIRST READ 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   ERROR 2/070 GOSUB 70          *PROCESS THE ERROR 
   GOTO 76                       *TERMINATE, NOT -COMPAT- TAPE
26 B0 = 1                        *SET FILE COUNT TO 1 
   B4 = 1                        *SET CONSECUTIVE FILES TO 1
* 
* --------READ TAPE FORWARD COUNTING RECORDS AND FILES. 
* 
30 B1 = 1                        *SET RECORD COUNT TO 1 
32 MSG 6 (B0,B1) TO LINE 20      *UPDATE RECORD/FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
34 IF (SB(1).AND.STERR.EQ.0) GOTO 36  *IF NO ERROR,EOF OR EOT 
   IF (SB(1).AND.EOF.NE.0) GOTO 42  *IF END OF FILE 
   IF (SB(1).AND.EOT.NE.0) GOTO 54  *IF END OF TAPE 
   ERROR 2/201, GOSUB 70         *REPORT THE READ ERROR 
36 B4 = 0                        *CLEAR CONSECUTIVE FILES CNTR. 
   IF (B1.NE.1) GOTO 40          *IF NOT FIRST RECORD OF FILE 
   MSG 12 (B0,IB(4),IB(5),IB(6),IB(7)) TO DISPLAY,PRINT 
40 B1 = B1 + 1                   *BUMP RECORD COUNTER 
   GOTO 32
42 B4 = B4 + 1                   *BUMP CONSECUTIVE FILES CNTR.
   IF (B4.EQ.2) GOTO 50          *IF DOUBLE END OF FILES
   IF (B1.NE.201D) GOTO 44       *IF RECORD COUNT INCORRECT 
   B0 = B0 + 1                   *BUMP FILE COUNT 
   IF (B0-1.EQ.P8) GOTO 60       *IF REQUESTED FILES READ 
   IF (SB(1).AND.EOT.EQ.0) GOTO 30  *IF NOT END OF TAPE 
   GOTO 54
44 ERROR 2/071 GOSUB 70          *PROCESS THE ERROR 
46 B0 = B0 + 1                   *BUMP FILE COUNT 
   IF (B0-1.EQ.P8) GOTO 60       *IF REQUESTED FILES READ 
   IF (SB(1).AND.EOT.EQ.0) GOTO 30  *IF NOT END OF TAPE 
   B1 = 200D                     *RESET RECORD COUNT
   GOTO 54
* 
* --------DOUBLE END-OF-FILES OR EOT DETECTED.  REPORT
* --------THE CONDITION AND TERMINATE WITHOUT WRITING EOF.
* 
50 MSG 17 TO DISPLAY,PRINT       *INDICATE DOUBLE EOF FOUND 
   GOTO 77                       *TERMINATE 
54 MSG 13 TO DISPLAY,PRINT       *INDICATE EOT ENCOUNTERED
   GOTO 77                       *TERMINATE 
* 
* --------REQUESTED FILES HAVE BEEN READ. WRITE END-OF-FILE.
* 
60 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 1                        *WRITE MOTION CODE 
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.EOF.NE.0) GOTO 64  *IF GOOD END OF FILE
   ERROR 2/122, GOSUB 70         *REPORT EOF ERROR
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 6                        *READ REVERSE MOTION CODE
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74                  *BACKSPACE OVER BAD EOF
   GOTO 60 WHILE (B2+1.NE.10D)   *KEEP TRYING 
   MSG 21 TO DISPLAY,PRINT       *INDICATE UNRECOVERABLE WRITE
   GOTO 77                       *TERMINATE 
64 B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 77                       *NORMAL TERMINATION
* 
* --------PROCESS MODULE ERRORS 
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNTER
   MSG EM (EC,EA) TO LINE 1      *REPORT ERROR CODE/LINE
   CALL 98A                      *ERROR CODE PROCESSOR
   RETURN 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNTER
   CALL 97A                      *POST ABORT MESSAGE
   GOTO 76                       *END MODULE
75 CALL 97F                      *STATUS ANALYSIS 
76 MSG 14 (B13) TO DAYFILE       *REPORT ERRORS TO DAYFILE
77 END 22 
COMPILE   - TCT52 - 
   MODULE TCT53,DCART(46,47)LOCK   -  FIXED/RANDOM PATTERN WRITE TEST - 
*** TCT53  - FIXED/RANDOM PATTERN WRITE TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE ALLOWS THE USER TO TAKE A SNAPSHOT OF HOW WELL A
*         UNIT  IS  WRITING  TAPES  WITH A CANNED DATA PATTERN THAT IS
*         KNOWN TO CREATE PEAK SHIFT PROBLEMS ON GCR UNITS. 
* 
*         RANDOM DATA CAN ALSO BE SELECTED BY THE USE OF P4. IF RANDOM
*         DATA IS SELECTED, THE RT CLOCK IS USED FOR SEED.
* 
*         THE  NORMAL ERROR OUTPUT OF TCT IS NOT USED TO REPORT MODULE
*         DETECTED ERRORS, THEREFORE NO STATUS IS  AVAILABLE.  PRODUCT
*         OVERLAY ABORTS WILL BE PROCESSED NORMALLY,  AND  THE  MODULE
*         WILL TERMINATE ABNORMALLY AFTER TWO COMMAND ABORTS. 
* 
*         THE  TAPE  IS  REWOUND AND WRITTEN FROM LOAD POINT TO END OF
*         TAPE.  THE  NUMBER  OF  RECORDS  WRITTEN  IS  DISPLAYED. THE
*         BUFFERED  ERROR  LOG  IS THEN READ AND PICTURED. THE TAPE IS
*         REWOUND  AND  READ  TO  EOT  WITH THE NUMBER OF RECORDS READ
*         BEING DISPLAYED. THE BUFFERED ERROR LOG IS THEN  AGAIN  READ
*         AND PICTURED. 
* 
*         REPEAT  CONDITION  OR  SCOPE  LOOP  IS NOT SUPPORTED BY THIS
*         MODULE. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. SET WORD COUNT TO P2.
*         3. REWIND.
*         4. BUMP THE RECORD COUNTER. 
*         5. WRITE A RECORD AND DISPLAY THE RECORD COUNT. 
*         6. REPORT EC 200 IF STATUS ERROR. 
*         7. ONCE END OF TAPE IS ENCOUNTERED,  CALL TCT53B TO READ THE
*            BUFFERED ERROR LOG.
*         8. SEND A PICTURE OF THE DISPLAY TO OUTPUT. 
*         9. REWIND.
*        10. BUMP THE RECORD COUNTER. 
*        11. READ A RECORD AND DISPLAY THE RECORD COUNT.
*        12. REPORT EC 201 IF STATUS ERROR. 
*        13. ONCE END OF TAPE IS ENCOUNTERED,  CALL TCT53B TO READ THE
*            BUFFERED ERROR LOG.
*        14. SEND A PICTURE OF THE DISPLAY TO OUTPUT. 
*        15. REPORT A MESSAGE TO DAYFILE IF ERRORS WERE ENCOUNTERED.
*        16. TERMINATE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A -MAINTENANCE WRITE- OPERATION.  NOTE THAT
*            GENERAL STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         3. -EC 203- THE ALERT BIT IN GENERAL STATUS WAS SET DURING A
*            READ OPERATION. THE INPUT BUFFER CONTAINS  THE DATA READ.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = UPPER 3 DIGITS OF THE RECORDS WRITTEN COUNTER.
*         B1  = LOWER 2 DIGITS OF THE RECORDS WRITTEN COUNTER.
*         B2  = UPPER 2 DIGITS OF THE RECORDS WITH ERRORS COUNTER.
*         B3  = LOWER 3 DIGITS OF THE RECORDS WITH ERRORS COUNTER.
*         B6  = LINE NUMBER FOR DISPLAY OF BUFFERED LOG.
*         B7  = MOTION CODE FOR STATUS ANALYSIS MODULES ON ABORTS.
*         B8  = RECORDS WITH ERRORS KEY.
*         B10 = MODULE LOCATION KEY.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT53A - GENERATE FIXED DATA PATTERN. 
*         TCT53B - DISPLAY BUFFERED LOG DATA. 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT53 WRITE TEST RANDOM PATTERN 
1  FORMAT TCT53 WRITE TEST FIXED PATTERN
2  FORMAT TCT53 READ TEST RANDOM PATTERN
3  FORMAT TCT53 READ TEST FIXED PATTERN 
10 FORMAT TCT53 ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL RECORDS WRITTEN = *DE*D (D) 
13 FORMAT TOTAL RECORDS READ = *DE*D (D)
14 FORMAT TCT53 ERROR(S) IN MODULE = *DEC - 
16 FORMAT TCT53 - ABNORMAL TERMINATION
* 
   EQUATE FILEMK TO 20, ALERT TO 4000, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 53D                     *MODULE NUMBER 
   WC = P2                       *SET WORD COUNT
   IF (P4.AND.2000.NE.0) MSG 0 TO DISPLAY,PRINT 
   IF (P4.AND.2000.EQ.0) MSG 1 TO DISPLAY,PRINT 
   IF (P4.AND.2000.EQ.0) CALL 53A  *NO RANDOM DATA
   IF (P4.AND.2000.EQ.0) GOTO 22  *NO RANDOM DATA 
   RANDOM TO OB FOR 500, START RT 
* 
* --------MODULE TEST 
* 
22 B10 = 0                       *MODULE LOCATION KEY 
   B7 = 0                        *NO MOTION 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B14 = 10                      *COMMAND INDEX FOR READ BUFFERED LOG 
   READ BUFFERED LOG, ABT 74     *CLEAR LOG BEFORE MODULE 
* 
* --------WRITE FIXED PATTERN FROM BOT TO EOT 
* 
24 B7 = 0                        *NO MOTION 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
30 B1 = B1 + 1                   *BUMP RECORD COUNTER B0/B1 
   IF (B1.LT.100D) GOTO 34       *IF NO LOWER DIGITS OVERFLOW 
   B1 = 0 
   B0 = B0 + 1
34 B10 = 1                       *MODULE LOCATION KEY 
   B7 = 1                        *WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   IF (SB(1).AND.10.NE.0) GOTO 36  *IF END OF TAPE
   IF (SB(1).AND.ALERT.NE.0) ERROR 10/200 GOSUB 70  *IF ALERT 
   B8 = 0                        *NO ERRORS KEY 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS WRITTEN
   GOTO 24                       *RESUME TESTING
* 
* --------PROCESS END OF TAPE 
* 
36 MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS WRITTEN
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   B7 = 1 
   ENDFILE, ABT 74               *WRITE DOUBLE END OF FILE AT EOT 
   ENDFILE, ABT 74
   B14 = 10                      *COMMAND INDEX FOR READ BUFFERED LOG 
   READ BUFFERED LOG, ABT 74
   CALL 53B                      *FORMAT DATA TO SCREEN 
   PICTURE                       *SENT DISPLAY TO OUTPUT
   IF (P4.AND.2000.NE.0) MSG 2 TO DISPLAY,PRINT 
   IF (P4.AND.2000.EQ.0) MSG 3 TO DISPLAY,PRINT 
   B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   BLANK                         *BLANK THE DISPLAY FOR READ
   B0 = 0 
   B1 = 0 
* 
* --------START OF READ LOOP
* 
40 B1 = B1 +1                    *INCREMENT RECORD COUNT (LOWER DIGIT)
   IF (B1.LT.100D) GOTO 42
   B1 = 0 
   B0 = B0 + 1                   *INCREMENT RECORD COUNT (UPPER DIGIT)
42 B10 = 2                       *MODULE LOCATION KEY 
   B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   MSG 13 (B0,B1) TO LINE 20     *UPDATE RECORDS READ 
44 IF (SB(1).AND.FILEMK.NE.0) GOTO 60  *FILEMK DETECTED 
46 IF (SB(1).AND.ALERT.NE.0) ERROR 10/203 GOSUB 70  *IF ALERT 
   GOTO 40
* 
* --------FILE MARK FOUND 
* 
60 GOTO 42 WHILE (B9+1.LT.2)     *IF NOT DOUBLE END OF FILE 
   B14 = 10                      *COMMAND INDEX FOR READ BUFFERED LOG 
   READ BUFFERED LOG, ABT 74
   CALL 53B                      *FORMAT DATA TO SCREEN 
   PICTURE                       *SENT DISPLAY TO OUTPUT
   MSG 13 (B0,B1) TO DAYFILE,PRINT
   GOTO 77                       *TERMINATE 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1
75 CALL 97A                      *POST ABORT MESSAGE
   IF (B13.LT.2) GOTO 76         *RETRY 
   MSG 16 TO DAYFILE,PRINT
   MSG 14 (B13) TO DAYFILE
   GOTO 77
76 MSG 0 (P4) TO DISPLAY
   IF (B10.EQ.0) GOTO 22         *RESTART HERE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   GOTO 34                       *RESTART HERE
77 END 20 
COMPILE   - TCT53 - 
   MODULE TCT53A,DCART(46,47)LOCK  -  FIXED PATTERN GENERATOR-
*** TCT53A - FIXED PATTERN GENERATOR
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE  GENERATES  FIXED PATTERNS FOR TCT53 AND TCT59. 
* 
*    1.2  METHOD- 
* 
*         1. OB (0) TO OB (377) CONTAINS FIXED DATA.
*         2. DUP OB (0) TO OB (400) FOR 400 OCTAL WORDS.
*         3. EXIT THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. NONE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         NONE
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         NONE -
* 
* --------DATA DIVISION 
* 
* 
   DATA(OB(000),CON) 0000,0100,0000,0100,0001,0000,0100,0006
   DATA(OB(010),CON) 0000,0776,7777,7777,7777,7777,7776,0000
   DATA(OB(020),CON) 0000,0000,0000,0000,7777,7777,7777,7777
   DATA(OB(030),CON) 7776,0000,0000,0000,0000,0000,7777,7777
   DATA(OB(040),CON) 7777,7777,7776,0000,0000,0000,0000,0000
   DATA(OB(050),CON) 7777,7777,7777,7777,7776,0000,0000,0000
   DATA(OB(060),CON) 0000,0000,0000,0000,0000,0000,0004,7777
   DATA(OB(070),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(100),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(110),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(120),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(130),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(140),CON) 7777,7777,7777,7777,7777,7777,7777,7777
   DATA(OB(150),CON) 7776,0000,0000,0000,0000,0000,0000,0000
   DATA(OB(160),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(170),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(200),CON) 7777,7777,7777,7777,7777,7777,7776,0000
   DATA(OB(210),CON) 0000,0000,0000,0000,7777,7777,7777,7777
   DATA(OB(220),CON) 7776,0000,0000,0000,0000,0000,0000,0000
   DATA(OB(230),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(240),CON) 7777,7777,7777,7777,7776,0000,0000,0000
   DATA(OB(250),CON) 0000,0000,0000,0000,0000,0000,0004,7777
   DATA(OB(260),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(270),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(300),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(310),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(320),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(330),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(340),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(350),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(360),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(370),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(400),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(410),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(420),CON) 0000,0000,0004,7777,7777,7777,7777,7777
   DATA(OB(430),CON) 0000,0000,0000,0000,0004,7777,7777,7777
   DATA(OB(440),CON) 7777,7777,0000,0000,0000,0000,0004,7777
   DATA(OB(450),CON) 7777,7777,7777,7777,0000,0000,0000,0000
   DATA(OB(460),CON) 0004,7777,7777,7777,7777,7777,0000,0000
   DATA(OB(470),CON) 0000,0000,0004,7777,7777,7777,7777,7777
* 
* --------MODULE INITIALIZATION 
* 
20 PASS                          *SET BUFFER
   EXIT                          *RETURN TO CALLING MODULE
77 END 20 
COMPILE   - TCT53A -
   MODULE TCT53B,DCART(46,47)LOCK  -  BUFFERED LOG DATA DISPLAY - 
*** TCT53B - BUFFERED LOG DATA DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DISPLAYS BUFFERED LOG DATA FOR ANY MODULE.
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT53B CAN BE CALLED FROM ANY MODULE IN TCT.  MODULES TCT53B
*         AND TCT53C FORMAT AND DISPLAY  DATA  FROM  READ BUFFERED LOG
*         COMMAND.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         IB (0) - IB (100) OCTAL CONTAIN THE BUFFERED LOG DATA.
*         IB (400) - IB (410) OCTAL SAVES THE REGISTERS USED. 
*         B0  = INDEX TO LOG DATA.
*         B1  = TEMPORARY USAGE.
*         B2  = TEMPORARY USAGE.
*         B3  = TEMPORARY USAGE.
*         B4  = TEMPORARY USAGE.
*         B5  = TEMPORARY USAGE.
*         B6  = LINE NUMBER FOR DISPLAY.
*         B7  = TEMPORARY USAGE.
*         B8  = TEMPORARY USAGE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT              LOG DATA  (OCTAL)
2  FORMAT           TEMPORARY DATA CHECKS 
3  FORMAT    READ = *O*OCTB        WRITE = *O*OCTB
4  FORMAT BLOCKS CORRECTED  READ = *O*OCTB  WRITE = *O*OCTB 
5  FORMAT    TEMPORARY CONTROL UNIT ERRORS = *O*OCTB
6  FORMAT      COUNT OF BYTES PROCESSED TIMES 7640B 
7  FORMAT   READ = *OC*OCT*OCTB   WRITE = *OC*OCT*OCTB
10 FORMAT      COUNT OF  BLOCKS PROCESSED TIMES 20B 
11 FORMAT         READ = *O*OCTB  WRITE = *O*OCTB 
12 FORMAT     TEMPORARY DATA CHECKS W/O HARDWARE IND
13 FORMAT         READ = *O*OCTB  WRITE = *O*OCTB 
* 
30 IB (400) = B0                 *SAVE REGISTERS
   IB (401) = B1
   IB (402) = B2
   IB (403) = B3
   IB (404) = B4
   IB (405) = B5
   IB (406) = B6
   IB (407) = B7
   IB (410) = B8
   B0 = 0 
   B6 = 0 
   MSG 1 TO LINE B6              *LOG MESSAGE 
   B6 = B6 + 1                   *LINE 1
   MSG 2 TO LINE B6              *TEMPORARY MSG 
   B6 = B6 + 1                   *LINE 2
   B1 = IB(B0).RS.8              *UPPER 4 BITS READ DATA
   B2 = IB(B0).AND.377.LS.4      *NEXT 8 BITS READ DATA 
   B0 = B0 + 1                   *IB(1) 
   B3 = IB(B0).RS.8              *LOWER 4 BITS READ DATA
   B2 = B2 + B3                  *LOWER 12 BITS READ DATA 
   B0 = B0 + 1                   *IB(2) 
   B3 = IB(B0).AND.17            *LOWER 4 BITS WRITE DATA 
   B0 = B0 + 1                   *IB(3) 
   B4 = IB(B0)                   *LOWER 12 BITS WRITE DATA
   MSG 3 (B1,B2,B3,B4) TO LINE B6  *READ, WRITE 
   B6 = B6 + 1                   *LINE 3
   B0 = B0 + 1                   *IB(4) 
   B1 = IB(B0).RS.8              *UPPER 4 BITS READ BLOCKS CORRECTED
   B2 = IB(B0).AND.377.LS.4      *NEXT 8 BITS READ BLOCKS 
   B0 = B0 + 1                   *IB(5) 
   B3 = IB(B0).RS.8              *LOWER 4 BITS READ BLOCKS
   B2 = B2 + B3                  *LOWER 12 BITS READ BLOCKS 
   B3 = IB(B0).AND.377.RS.4      *UPPER 4 BITS WRITE BLOCKS 
   B4 = IB(B0).AND.17.LS.8       *NEXT 4 BITS WRITE BLOCKS
   B0 = B0 + 1                   *IB(6) 
   B5 = IB(B0).RS.4              *LOWER 8 BITS WRITE BLOCKS 
   B4 = B4 + B5                  *LOWER 12 BITS WRITE BLOCKS
   MSG 4 (B1,B2,B3,B4) TO LINE B6  *BLOCKS CORRECTED
   B6 = B6 + 1                   *LINE 4
   B1 = IB(B0).AND.17B           *UPPER 4 BITS CONTROL UNIT ERRS
   B0 = B0 + 1                   *IB(7) 
   B2 = IB(B0)                   *LOWER 12 BITS CONTROL UNIT ERRS 
   MSG 5 (B1,B2) TO LINE B6      *TEMPORARY CONTROL UNIT ERRORS 
   B6 = B6 + 1                   *LINE 5
   B0 = B0 + 1                   *IB(10)
   B1 = IB(B0).RS.4              *UPPER 8 BITS READ BYTES PROCESSED 
   B2 = IB(B0).AND.17.LS.8       *NEXT 4 BITS READ BYTES PROCESSED
   B0 = B0 + 1                   *IB(11)
   B3 = IB(B0).RS.4              *NEXT 8 BITS READ BYTES PROCESSED
   B2 = B2 + B3                  *MIDDLE 12 BITS READ BYTES PROCESSED 
   B3 = IB(B0).AND.17.LS.8       *NEXT 4 BITS READ BYTES PROCESSED
   B0 = B0 + 1                   *IB(12)
   B4 = IB(B0).RS.4              *NEXT 8 BITS READ BYTES PROCESSED
   B3 = B3 + B4                  *LOWER 12 BITS READ BYTES PROCESSED
   B4 = IB(B0).AND.17B.LS.4      *NEXT 4 BITS WRITE BYTES PROCESSED 
   B0 = B0 + 1                   *IB(13)
   B5 = IB(B0).RS.8              *NEXT 4 BITS WRITE BYTES PROCESSED 
   B4 = B4 + B5                  *UPPER 8 BITS WRITE BYTES PROCESSED
   B5 = IB(B0).AND.377.LS.4      *NEXT 8 BITS WRITE BYTES PROCESSED 
   B0 = B0 + 1                   *IB(14)
   B7 = IB(B0).RS.8              *NEXT 4 BITS WRITE BYTES PROCESSED 
   B5 = B5 + B7                  *MIDDLE 12 BITS WRITE BYTES PROCESSED
   B7 = IB(B0).AND.377.LS.4      *NEXT 8 BITS WRITE BYTES PROCESSED 
   B0 = B0 + 1                   *IB(15)
   B8 = IB(B0).RS.8              *NEXT 4 BITS WRITE BYTES PROCESSED 
   B7 = B7 + B8                  *LOWER 12 BITS WRITE BYTES PROCESSED 
   MSG 6 TO LINE B6              *BYTES PROCESSED 
   B6 = B6 + 1                   *LINE 6
   MSG 7 (B1,B2,B3,B4,B5,B7) TO LINE B6  *BYTES PROCESSED 
   B6 = B6 + 1                   *LINE 7
   B1 = IB(B0).AND.377.RS.4      *UPPER 4 BITS READ BLOCKS PROCESSED
   B2 = IB(B0).AND.17.LS.8       *NEXT 4 BITS READ BLOCKS PROCESSED 
   B0 = B0 + 1                   *IB(16)
   B3 = IB(B0).RS.4              *NEXT 8 BITS READ BLOCKS PROCESSED 
   B2 = B2 + B3                  *LOWER 12 BITS READ BLOCKS PROCESSED 
   B3 = IB(B0).AND.17            *UPPER 4 BITS WRITE BLOCKS PROCESSED 
   B0 = B0 + 1                   *IB(17)
   B4 = IB(B0)                   *LOWER 12 BITS WRITE BLOCKS PROCESSED
   MSG 10 TO LINE B6             *BLOCKS PROCESSED
   B6 = B6 + 1                   *LINE 10 
   MSG 11 (B1,B2,B3,B4) TO LINE B6  *BLOCKS PROCESSED 
   B6 = B6 + 1                   *LINE 11 
   B0 = B0 + 1                   *IB(20)
   B1 = IB(B0).RS.8              *UPPER 4 BITS WRITE DATA W/O HW IND
   B2 = IB(B0).AND.377.LS.4      *NEXT 8 BITS WRITE DATA W/O HW IND 
   B0 = B0 + 1                   *IB(21)
   B3 = IB(B0).RS.8              *NEXT 4 BITS WRITE DATA W/O HW IND 
   B2 = B2 + B3                  *LOWER 12 BITS WRITE DATA W/O HW IND 
   B3 = IB(B0).AND.377.RS.4      *UPPER 4 BITS READ DATA W/O HW IND 
   B4 = IB(B0).AND.17.LS.8       *NEXT 4 BITS READ DATA W/O HW IND
   B0 = B0 + 1                   *IB(22)
   B5 = IB(B0).RS.4.             *NEXT 8 BITS READ DATA W/O HW IND
   B4 = B4 + B5                  *LOWER 12 BITS READ DATA W/O HW IND
   MSG 12 TO LINE B6             *TEMP DATA CHECKS W/O HDWR 
   B6 = B6 + 1                   *LINE 12 
   MSG 13 (B1,B2,B3,B4) TO LINE B6  *READ/WRITE 
   EXIT TO 53C                   *DECODE THE REST OF LOG DATA 
77 END 30 
COMPILE   - TCT53B -
   MODULE TCT53C,DCART(46,47)LOCK  -  BUFFERED LOG DATA DISPLAY - 
*** TCT53C - BUFFERED LOG DATA DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         COMPLETES THE DISPLAY OF LOG DATA FOR TCT53B. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
14 FORMAT           ERASE GAP COUNTS = *O*OCTB
15 FORMAT       TEMPORARY DRIVE ERRORS = *O*OCTB
16 FORMAT         CONTROL UNIT EC LEVEL = *O
17 FORMAT     CONTROL UNIT SERIAL NUMBER *HE*HE 
20 FORMAT       READ RECOVERY RETRY COUNT = *OCB
* 
30 B6 = B6 + 1                   *LINE 13 
   B1 = IB(B0).AND.17            *UPPER 4 BITS ERASE GAP COUNTS 
   B0 = B0 + 1                   *IB(23)
   B2 = IB(B0)                   *LOWER 12 BITS ERASE GAP COUNTS
   MSG 14 (B1,B2) TO LINE B6     *ERASE GAP COUNTS
   B6 = B6 + 1                   *LINE 14 
   B0 = B0 + 1                   *IB(24)
   B1 = IB(B0).RS.8              *UPPER 4 BITS TEMP DRIVE ERRS
   B2 = IB(B0).AND.377.LS.4      *NEXT 8 BITS TEMP DRIVE ERRS 
   B0 = B0 + 1                   *IB(25)
   B3 = IB(B0).RS.8              *NEXT 4 BITS TEMP DRIVE ERRS 
   B2 = B2 + B3                  *LOWER 12 BITS TEMP DRIVE ERRS 
   MSG 15 (B1,B2) TO LINE B6     *TEMPORARY DRIVE ERRORS
   B6 = B6 + 1                   *LINE 15 
   B1 = IB(B0).AND.300.RS.6      *2 BITS OF CONTROL UNIT EC LEVEL 
   MSG 16 (B1) TO LINE B6        *CONTROL UNIT EC LEVEL 
   B6 = B6 + 1                   *LINE 16 
   B0 = B0 + 1                   *IB(26)
   B1 = IB(B0).AND.777B          *UPPER 9 BITS CONTROL UNIT SN
   B0 = B0 + 1                   *IB(27)
   B2 = IB(B0)                   *LOWER 12 BITS CONTROL UNIT SN 
   MSG 17 (B1,B2) TO LINE B6     *CONTROL UNIT SERIAL NUMBER
   B6 = B6 + 1                   *LINE 17 
   B0 = B0 + 1                   *IB(30)
   B1 = IB(B0).AND.17.LS.4       *NEXT 4 BITS OF READ RECOVERY RETRY COUN 
   B0 = B0 + 1                   *IB(31)
   B2 = IB(B0).RS.8              *LOWER 4 BITS OF READ RECOVERY RETRY COU 
   B1 = B1 + B2                  *8 BITS OF READ RECOVER RETRY COUNT
   MSG 20 (B1) TO LINE B6        *READ RECOVERY RETRY COUNT 
   B0 = IB (400)                 *RESTORE REGISTERS 
   B1 = IB (401)
   B2 = IB (402)
   B3 = IB (403)
   B4 = IB (404)
   B5 = IB (405)
   B6 = IB (406)
   B7 = IB (407)
   B8 = IB (410)
   EXIT                          *RETURN TO CALLING MODULE
77 END 30 
COMPILE   - TCT53C -
   MODULE TCT55,DCART(46,47)LOCK   -  MAINTENANCE LONG WRITE -
*** TCT55  - MAINTENANCE LONG WRITE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE  PATTERN  SELECTED BY THE
*         *PARAM* DIRECTIVE.  MAXIMUM SIZE RECORDS ARE *P2* TIMES  32,
*         SO THE MAXIMUM RECORD SIZE  IS  4095 X  32 = 131040  DECIMAL
*         12  BIT  PP WORDS OR 196560 DECIMAL 8 BIT BYTES.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* OR *EOT*
*         IS REACHED. AN EXIT IS THEN PERFORMED TO TCT55A TO READ  AND
*         COMPARE THE DATA WRITTEN. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         6. APPLY ADDRESS CODING IF SELECTED.
*         7. RESERVE. 
*         8. WRITE. 
*         9. GO TO STEP 15 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. REPEAT STEPS 5-10 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        12. ENDFILE. 
*        13. REPORT EC 122 IF NO *EOF* STATUS.
*        14. REPEAT STEPS 5-13 UNTIL *FILE MAX* FILES WRITTEN.
*        15. REPEAT MODULE OR EXIT TO TCT55A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT55 - ERROR CODE = EEEE  AT LINE (EA) = LLLL.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA PATTERN FLAG. 
*         B3  = PATTERN FOR STORING.
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM SEED.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
0  FORMAT TCT55 - MAINTENANCE LONG WRITE -
2  FORMAT TCT55 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT55 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT55 - ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 55D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE.
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
   IF (P4.AND.3000.EQ.2000) GOTO 26  *RANDOM PATTERN SELECTED 
   B8 = 10
   B5 = 500 
   B3 = P4
* 
* --------FILL BUFFER 
* 
24 IF (P4.AND.3000.EQ.1000) B3 = P4.XOR.7777
   DUP B8 BITS OF P4/B3 TO OB FOR B5
   GOTO 32
26 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 30    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
30 RANDOM TO OB FOR 500, START B9 
32 WC = P2                       *RECORD LENGTH TO WC REG 
34 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
40 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
   IF (B2.EQ.0) GOTO 42          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
42 IF (P3.AND.1.NE.0) GOTO 44    *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
52 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 54  *NO ERROR DETECTED
   ERROR 2/200, GOSUB 70
54 IF (P9.EQ.0) GOTO 40          *WRITE TO EOT IF P9 ZERO 
   IF (B1.NE.P9) GOTO 40         *P9 RECORDS NOT DONE 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
56 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (P8.EQ.0) GOTO 40          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.P8) GOTO 40         *P8 FILES NOT PROCESSED
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *IF END OF MODULE BUT NOT EOT
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 34                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 34   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT TO 55A                   *NORMAL TERMINATION DO READ
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 34                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 34         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT55 - 
   MODULE TCT55A,DCART(46,47)LOCK   -  MAINTENANCE LONG READ TEST - 
*** TCT55A  - MAINTENANCE LONG READ TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         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.
*         WT AND WTA ARE COMPARED WITH CALCULATED WORD COUNT FROM  P2.
*         THIS  SEQUENCE  CONTINUES  UNTIL RECORD/FILE MAX OR -EOT- IS
*         ENCOUNTERED. AT THIS TIME AN EXIT IS PERFORMED. 
* 
*         TCT55A (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND 
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 221 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 222 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 15. 
*        12. GENERATE EXPECTED DATA PATTERN INTO OB.
*        13. ADD EXPECTED ADDRESS CODING TO OB. 
*        14. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        15. REPEAT STEPS 4-14 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT55A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 221- INCORRECT  FILE  DETECTED  DURING A READ. 
*         7. -EC 222- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B10 = NUMBER OF BITS TO DUP (8).
*         B11 = WORDS TRANSMITTED.
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT55A - MAINTENANCE LONG READ TEST - 
2  FORMAT TCT55A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT55A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT TCT55A ERROR(S) IN MODULE = *DEC
* 
   EQUATE ERROR TO 4050, FILEMK TO 20 
   EQUATE ALERT TO 4000, EOT TO 10
* 
* --------MODULE INITIALIZATION 
* 
20 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   WC = P2                       *SET WC REG
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B3 = 0                        *CLEAR FM/TM FLAG
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/221, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/222, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TAP 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   IF (WC.RS.7D.NE.SB(42)) ERROR 2/256, GOTO 70 
   B5 = WC.LS.5.AND.7740
   IF (WT.NE.B5) ERROR 2/256, GOTO 70  *NO WORD TRANSMITTED ERROR 
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   IF (P4.AND.3000.NE.2000) GOTO 44  *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 46
44 B10 = 10 
   B4 = 500 
   B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B10 BITS OF P4/B2 TO OB FOR B4 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   IF (WC.LT.B5) B5 = WC
   IF (WT.GT.B5) GOTO 50
   IF (SB(42).NE.0) GOTO 50 
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
57 MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 GOTO 77                       *END THE MODULE
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   GOTO 57                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT55A -
   MODULE TCT56,DCART(46,47)LOCK   -  MAINTENANCE DOUBLE LONG WRITE - 
*** TCT56  - MAINTENANCE DOUBLE LONG WRITE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE  PATTERN  SELECTED BY THE
*         *PARAM* DIRECTIVE.  MAXIMUM SIZE RECORDS ARE *P2* TIMES  64,
*         SO THE MAXIMUM RECORD SIZE  IS  4095 X  64 = 262080  DECIMAL
*         12  BIT  PP WORDS OR 393120 DECIMAL 8 BIT BYTES. HOWEVER DUE
*         TO HARDWARE LONG BLOCK PROBLEMS MAXIMUM WORD COUNT IS SET TO
*         5240 OCTAL OR 2720 DECIMAL 12  BIT WORDS.  THEREFORE MAXIMUM
*         RECORD  SIZE IS  2720  DECIMAL X 64 = 174070  DECIMAL 12 BIT
*         WORDS OR 261120 DECIMAL 8 BIT BYTES.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* OR *EOT*
*         IS REACHED. AN EXIT IS THEN PERFORMED TO TCT56A TO READ  AND
*         COMPARE THE DATA WRITTEN. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         6. APPLY ADDRESS CODING IF SELECTED.
*         7. RESERVE. 
*         8. WRITE. 
*         9. GO TO STEP 15 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. REPEAT STEPS 5-10 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        12. ENDFILE. 
*        13. REPORT EC 122 IF NO *EOF* STATUS.
*        14. REPEAT STEPS 5-13 UNTIL *FILE MAX* FILES WRITTEN.
*        15. REPEAT MODULE OR EXIT TO TCT56A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT56 - ERROR CODE = EEEE  AT LINE (EA) = LLLL.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA PATTERN FLAG. 
*         B3  = PATTERN FOR STORING.
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM SEED.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT56 - MAINTENANCE DOUBLE LONG WRITE - 
2  FORMAT TCT56 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT56 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT56 - ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 56D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE.
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
   IF (P4.AND.3000.EQ.2000) GOTO 26  *RANDOM PATTERN SELECTED 
   B8 = 10
   B5 = 500 
   B3 = P4
* 
* --------FILL BUFFER 
* 
24 IF (P4.AND.3000.EQ.1000) B3 = P4.XOR.7777
   DUP B8 BITS OF P4/B3 TO OB FOR B5
   GOTO 32
26 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 30    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
30 RANDOM TO OB FOR 500, START B9 
32 WC = P2                       *RECORD LENGTH TO WC REG 
   IF (P2.GT.5240) WC = 5240     *MAX RECORD LENGTH TO WC 
34 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
40 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
   IF (B2.EQ.0) GOTO 42          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
42 IF (P3.AND.1.NE.0) GOTO 44    *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .WC. TIMES 64 SPECIFIED BY *P2* 
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 24                      *COMMAND INDEX FOR WRITE DOUBLE LONG 
   WRITE DOUBLE LONG, ABT 74
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
52 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 54  *NO ERROR DETECTED
   ERROR 2/200, GOSUB 70
54 IF (P9.EQ.0) GOTO 40          *WRITE TO EOT IF P9 ZERO 
   IF (B1.NE.P9) GOTO 40         *P9 RECORDS NOT DONE 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
56 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (P8.EQ.0) GOTO 40          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.P8) GOTO 40         *P8 FILES NOT PROCESSED
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *IF END OF MODULE BUT NOT EOT
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 34                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 34   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT TO 56A                   *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 34                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 34         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT56 - 
   MODULE TCT56A,DCART(46,47)LOCK   -  MAINT. DOUBLE LONG READ TEST - 
*** TCT56A  - MAINTENANCE DOUBLE LONG READ TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         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.
*         WT AND WTA ARE COMPARED WITH CALCULATED WORD COUNT FROM  P2.
*         THIS  SEQUENCE  CONTINUES  UNTIL RECORD/FILE MAX OR -EOT- IS
*         ENCOUNTERED. AT THIS TIME AN EXIT IS PERFORMED. 
* 
*         TCT56A (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND 
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 221 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 222 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 15. 
*        12. GENERATE EXPECTED DATA PATTERN INTO OB.
*        13. ADD EXPECTED ADDRESS CODING TO OB. 
*        14. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        15. REPEAT STEPS 4-16 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-17 FOR *FILE MAX* FILES.
*        17. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT56A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 221- INCORRECT  FILE  DETECTED  DURING A READ. 
*         7. -EC 222- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B10 = NUMBER OF BITS TO DUP (8).
*         B11 = WORDS TRANSMITTED.
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT56A - MAINTENANCE DOUBLE LONG READ TEST -
2  FORMAT TCT56A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT56A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT TCT56A ERROR(S) IN MODULE = *DEC
* 
   EQUATE ERROR TO 4050, ODDCT TO 40
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   WC = P2                       *SET WC REG
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B3 = 0                        *CLEAR FM/TM FLAG
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/221, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/222, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TAP 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   IF (WC.RS.6D.NE.SB(42)) ERROR 2/256, GOTO 70 
   B5 = WC.LS.6.AND.7700
   IF (WT.NE.B5) ERROR 2/256, GOTO 70  *NO WORD TRANSMITTED ERROR 
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   IF (P4.AND.3000.NE.2000) GOTO 44  *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 46
44 B10 = 10 
   B4 = 500 
   B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B10 BITS OF P4/B2 TO OB FOR B4 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   IF (WC.LT.B5) B5 = WC
   IF (WT.GT.B5) GOTO 50
   IF (SB(42).NE.0) GOTO 50 
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
57 MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 GOTO 77                       *END THE MODULE
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   GOTO 57                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT56A -
   MODULE TCT57,DCART(46,47)LOCK   -  MAINTENANCE QUAD LONG WRITE - 
*** TCT57  - MAINTENANCE QUAD LONG WRITE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE  PATTERN  SELECTED BY THE
*         *PARAM* DIRECTIVE.  MAXIMUM SIZE RECORDS ARE *P2* TIMES 128,
*         SO THE MAXIMUM RECORD SIZE  IS  4095 X 128 = 524160  DECIMAL
*         12  BIT  PP WORDS OR 786240 DECIMAL 8 BIT BYTES. HOWEVER DUE
*         TO HARDWARE LONG BLOCK PROBLEMS MAXIMUM WORD COUNT IS SET TO
*         2520 OCTAL OR 1360 DECIMAL 12  BIT WORDS.  THEREFORE MAXIMUM
*         RECORD SIZE IS  1320  DECIMAL X 128 = 174070  DECIMAL 12 BIT
*         WORDS OR 261120 DECIMAL 8 BIT BYTES.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* OR *EOT*
*         IS REACHED. AN EXIT IS THEN PERFORMED TO TCT57A TO READ  AND
*         COMPARE THE DATA WRITTEN. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         6. APPLY ADDRESS CODING IF SELECTED.
*         7. RESERVE. 
*         8. WRITE QUAD LONG. 
*         9. GO TO STEP 15 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. REPEAT STEPS 5-10 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        12. ENDFILE. 
*        13. REPORT EC 122 IF NO *EOF* STATUS.
*        14. REPEAT STEPS 5-13 UNTIL *FILE MAX* FILES WRITTEN.
*        15. REPEAT MODULE OR EXIT TO TCT57A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT57 - ERROR CODE = EEEE  AT LINE (EA) = LLLL.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA PATTERN FLAG. 
*         B3  = PATTERN FOR STORING.
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM SEED.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
0  FORMAT TCT57 - MAINTENANCE QUAD LONG WRITE - 
2  FORMAT TCT57 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT57 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT57 - ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 57D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE.
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
   IF (P4.AND.3000.EQ.2000) GOTO 26  *RANDOM PATTERN SELECTED 
   B8 = 10
   B5 = 500 
   B3 = P4
* 
* --------FILL BUFFER 
* 
24 IF (P4.AND.3000.EQ.1000) B3 = P4.XOR.7777
   DUP B8 BITS OF P4/B3 TO OB FOR B5
   GOTO 32
26 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 30    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
30 RANDOM TO OB FOR 500, START B9 
32 WC = P2                       *RECORD LENGTH TO WC REG 
   IF (P2.GT.2520) WC = 2520     *MAX RECORD LENGTH TO WC 
34 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
40 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
   IF (B2.EQ.0) GOTO 42          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
42 IF (P3.AND.1.NE.0) GOTO 44    *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 31                      *COMMAND INDEX FOR WRITE LONG
   WRITE QUAD LONG, ABT 74
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
52 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 54  *NO ERROR DETECTED
   ERROR 2/200, GOSUB 70
54 IF (P9.EQ.0) GOTO 40          *WRITE TO EOT IF P9 ZERO 
   IF (B1.NE.P9) GOTO 40         *P9 RECORDS NOT DONE 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
56 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (P8.EQ.0) GOTO 40          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.P8) GOTO 40         *P8 FILES NOT PROCESSED
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *IF END OF MODULE BUT NOT EOT
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 34                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 34   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT TO 57A                   *NORMAL TERMINATION DO READ
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 34                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 34         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT57 - 
   MODULE TCT57A,DCART(46,47)LOCK   -  MAINTENANCE QUAD LONG READ TEST -
*** TCT57A  - MAINTENANCE QUAD LONG READ TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         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.
*         WT AND WTA ARE COMPARED WITH CALCULATED WORD COUNT FROM  P2.
*         THIS  SEQUENCE  CONTINUES  UNTIL RECORD/FILE MAX OR -EOT- IS
*         ENCOUNTERED. AT THIS TIME AN EXIT IS PERFORMED. 
* 
*         TCT57A (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND 
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 221 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 222 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 15. 
*        12. GENERATE EXPECTED DATA PATTERN INTO OB.
*        13. ADD EXPECTED ADDRESS CODING TO OB. 
*        14. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        15. REPEAT STEPS 4-14 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT57A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 221- INCORRECT  FILE  DETECTED  DURING A READ. 
*         7. -EC 222- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B10 = NUMBER OF BITS TO DUP (8).
*         B11 = WORDS TRANSMITTED.
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT57A - MAINTENANCE QUAD LONG READ TEST -
2  FORMAT TCT57A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT57A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT TCT57A ERROR(S) IN MODULE = *DEC
* 
   EQUATE ERROR TO 4050, ODDCT TO 40
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B3 = 0                        *CLEAR FM/TM FLAG
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/221, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/222, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TAP 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   IF (WC.RS.5D.NE.SB(42)) ERROR 2/256, GOTO 70 
   B5 = WC.LS.7.AND.7600
   IF (WT.NE.B5) ERROR 2/256, GOTO 70  *NO WORD TRANSMITTED ERROR 
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   IF (P4.AND.3000.NE.2000) GOTO 44  *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 46
44 B10 = 10 
   B4 = 500 
   B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B10 BITS OF P4/B2 TO OB FOR B4 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   IF (WC.LT.B5) B5 = WC
   IF (WT.GT.B5) GOTO 50
   IF (SB(42).NE.0) GOTO 50 
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
57 MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 GOTO 77                       *END THE MODULE
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   GOTO 57                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT57A -
   MODULE TCT58,DCART(46,47)LOCK   -  MAINT. QUAD DOUBLE LONG WRITE - 
*** TCT58  - MAINTENANCE QUAD DOUBLE LONG WRITE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE  PATTERN  SELECTED BY THE
*         *PARAM* DIRECTIVE.  MAXIMUM SIZE RECORDS ARE *P2* TIMES 256,
*         SO THE MAXIMUM RECORD SIZE  IS 4095 X 256 = 1048320  DECIMAL
*         12  BIT PP WORDS OR 1572480 DECIMAL 8 BIT BYTES. HOWEVER DUE
*         TO HARDWARE LONG BLOCK PROBLEMS MAXIMUM WORD COUNT IS SET TO
*         1250 OCTAL OR  680 DECIMAL 12  BIT WORDS.  THEREFORE MAXIMUM
*         RECORD SIZE IS  680  DECIMAL X 256  = 174070  DECIMAL 12 BIT
*         WORDS OR 261120 DECIMAL 8 BIT BYTES.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* OR *EOT*
*         IS REACHED. AN EXIT IS THEN PERFORMED TO TCT58A TO READ  AND
*         COMPARE THE DATA WRITTEN. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         6. APPLY ADDRESS CODING IF SELECTED.
*         7. RESERVE. 
*         8. WRITE QUAD DOUBLE LONG.
*         9. GO TO STEP 15 IF *EOT*.
*        10. REPORT EC 200 IF STATUS ERROR. 
*        11. REPEAT STEPS 5-10 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        12. ENDFILE. 
*        13. REPORT EC 122 IF NO *EOF* STATUS.
*        14. REPEAT STEPS 5-13 UNTIL *FILE MAX* FILES WRITTEN.
*        15. REPEAT MODULE OR EXIT TO TCT58A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT58 - ERROR CODE = EEEE  AT LINE (EA) = LLLL.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA PATTERN FLAG. 
*         B3  = PATTERN FOR STORING.
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM SEED.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT58 - MAINTENANCE QUAD DOUBLE LONG WRITE -
2  FORMAT TCT58 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT58 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT58 - ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 58D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE.
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
   IF (P4.AND.3000.EQ.2000) GOTO 26  *RANDOM PATTERN SELECTED 
   B8 = 10
   B5 = 500 
   B3 = P4
* 
* --------FILL BUFFER 
* 
24 IF (P4.AND.3000.EQ.1000) B3 = P4.XOR.7777
   DUP B8 BITS OF P4/B3 TO OB FOR B5
   GOTO 32
26 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 30    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
30 RANDOM TO OB FOR 500, START B9 
32 WC = P2                       *RECORD LENGTH TO WC REG 
   IF (P2.GT.1250) WC = 1250     *MAX RECORD LENGTH TO WC 
34 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
40 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
   IF (B2.EQ.0) GOTO 42          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
42 IF (P3.AND.1.NE.0) GOTO 44    *BYPASS ADDRESS CODING 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .WC. TIMES 64 SPECIFIED BY *P2* 
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 32                      *COMMAND INDEX FOR WRITE DOUBLE LONG 
   WRITE QUAD DOUBLE LONG, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
52 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 54  *NO ERROR DETECTED
   ERROR 2/200, GOSUB 70
54 IF (P9.EQ.0) GOTO 40          *WRITE TO EOT IF P9 ZERO 
   IF (B1.NE.P9) GOTO 40         *P9 RECORDS NOT DONE 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
56 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (P8.EQ.0) GOTO 40          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.P8) GOTO 40         *P8 FILES NOT PROCESSED
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *IF END OF MODULE BUT NOT EOT
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 34                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 34   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT TO 58A                   *NORMAL TERMINATION DO READ
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 34                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 34         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT58 - 
   MODULE TCT58A,DCART(46,47)LOCK   -  MAINT. QUAD DOUBLE LONG READ - 
*** TCT58A  - MAINTENANCE QUAD DOUBLE LONG READ TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         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.
*         WT AND WTA ARE COMPARED WITH CALCULATED WORD COUNT FROM  P2.
*         THIS  SEQUENCE  CONTINUES  UNTIL RECORD/FILE MAX OR -EOT- IS
*         ENCOUNTERED. AT THIS TIME AN EXIT IS PERFORMED. 
* 
*         TCT58A (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND 
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 221 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 222 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 15. 
*        12. GENERATE EXPECTED DATA PATTERN INTO OB.
*        13. ADD EXPECTED ADDRESS CODING TO OB. 
*        14. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        15. REPEAT STEPS 4-14 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT58A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 221- INCORRECT  FILE  DETECTED  DURING A READ. 
*         7. -EC 222- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B10 = NUMBER OF BITS TO DUP (8).
*         B11 = WORDS TRANSMITTED.
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT58A - MAINTENANCE QUAD DOUBLE LONG READ TEST - 
2  FORMAT TCT58A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT58A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT TCT58A ERROR(S) IN MODULE = *DEC
* 
   EQUATE ERROR TO 4050, ODDCT TO 40
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B3 = 0                        *CLEAR FM/TM FLAG
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/221, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/222, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TAP 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   IF (WC.RS.4D.NE.SB(42)) ERROR 2/256, GOTO 70 
   B5 = WC.LS.8.AND.7400
   IF (WT.NE.B5) ERROR 2/256, GOTO 70  *NO WORD TRANSMITTED ERROR 
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   IF (P4.AND.3000.NE.2000) GOTO 44  *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 46
44 B10 = 10 
   B4 = 500 
   B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B10 BITS OF P4/B2 TO OB FOR B4 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   IF (WC.LT.B5) B5 = WC
   IF (WT.GT.B5) GOTO 50
   IF (SB(42).NE.0) GOTO 50 
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
57 MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 GOTO 77                       *END THE MODULE
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   GOTO 57                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT58A -
   MODULE TCT59,DCART(46,47)LOCK   -  WRITE TEST ERROR TRACK SENSING -
*** TCT59  - WRITE TEST ERROR TRACK SENSING 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE  ALLOWS  THE USER TO TAKE A SNAPSHOT OF HOW GOOD
*         THE MEDIA IS. 
* 
*         RANDOM DATA CAN ALSO BE SELECTED BY THE USE OF P4. IF RANDOM
*         DATA IS SELECTED, THE RT CLOCK IS USED FOR SEED.
* 
*         THE  NORMAL ERROR OUTPUT OF TCT IS NOT USED TO REPORT MODULE
*         DETECTED ERRORS, THEREFORE NO STATUS IS  AVAILABLE.  PRODUCT
*         OVERLAY ABORTS WILL BE PROCESSED NORMALLY,  AND  THE  MODULE
*         WILL TERMINATE ABNORMALLY AFTER TWO COMMAND ABORTS. 
* 
*         THE  TAPE  IS  REWOUND AND WRITTEN FROM LOAD POINT TO END OF
*         TAPE.  THE  NUMBER  OF  RECORDS  WRITTEN  IS  DISPLAYED. ANY
*         READ ERROR  FORMATS  ARE  PROCESSED AND ANY TRACK ERRORS ARE
*         DISPLAYED. THE BUFFERED ERROR LOG IS THEN READ AND PICTURED.
* 
*         REPEAT  CONDITION  OR  SCOPE  LOOP  IS NOT SUPPORTED BY THIS
*         MODULE. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. SET WORD COUNT TO P2.
*         3. REWIND.
*         4. BUMP THE RECORD COUNTER. 
*         5. WRITE A RECORD.
*         6. SYNCHRONIZE TO FLUSH THE BUFFER. 
*         7. IF ALERT STATUS GO TO STEP 12. 
*         8. READ BLOCK ID AND SAVE.
*         9. DISPLAY THE RECORD COUNT.
*        10. IF NOT END OF TAPE GO TO STEP 4. 
*        11. IF END OF TAPE  IS  ENCOUNTERED,  CALL TCT53B TO READ THE
*            BUFFERED ERROR LOG.
*        12. SEND A PICTURE OF THE DISPLAY TO OUTPUT. 
*        13. EXIT THE MODULE. 
*        14. BUMP THE ERROR COUNTER.
*        15. CALL 61A TO DISPLAY ERROR INFORMATION. 
*        16. LOCATE TO LAST GOOD BLOCK. 
*        17. ERASE THE NUMBER IN ERASE COUNTER. 
*        18. WRITE A RECORD.
*        19. SYNCHRONIZE TO FLUSH THE BUFFER. 
*        20. IF ALERT STATUS BUMP ERASE COUNTER AND GO TO STEP 16.
*        21. IF ERASE COUNTER EXHAUSTED REPORT EC 264.
*        22. IF NO ALERT GO TO STEP 8.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. EC 264 - POSITION LOST AFTER 32 DECIMAL ERASES  IN  TCT59
*            WRITE WITH ERROR TRACK SENSING.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = UPPER 3 DIGITS OF THE RECORDS WRITTEN COUNTER.
*         B1  = LOWER 2 DIGITS OF THE RECORDS WRITTEN COUNTER.
*         B2  = UPPER 3 DIGITS OF THE RECORDS WITH ERRORS COUNTER.
*         B3  = LOWER 2 DIGITS OF THE RECORDS WITH ERRORS COUNTER.
*         B4  = LAST GOOD BLOCK ID. 
*         B5  = LAST GOOD BLOCK ID. 
*         B6  = LAST GOOD BLOCK ID. 
*         B7  = MOTION CODE FOR STATUS ANALYSIS MODULES ON ABORTS.
*         B8  = TEMPORARY STORAGE.
*         B9  = TEMPORARY STORAGE.
*         B10 = MODULE LOCATION KEY.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = RES PARAMETERS. 
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT53A - GENERATE FIXED DATA PATTERN. 
*         TCT53B - DISPLAY BUFFERED LOG DATA. 
*         TCT61A - DISPLAY ERROR TRACKS.
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT59 WRITE TEST RANDOM PATTERN ERROR TRACK SENSE 
1  FORMAT TCT59 WRITE TEST FIXED PATTERN ERROR TRACK SENSE
10 FORMAT TCT59 ERROR CODE = *OCT  AT LINE (EA) = *OCT
11 FORMAT TOTAL RECORDS IN ERROR = *DE*D (D)
12 FORMAT TOTAL RECORDS WRITTEN = *DE*D (D) 
14 FORMAT TCT59 ERROR(S) IN MODULE = *DEC - 
16 FORMAT TCT59 - ABNORMAL TERMINATION
* 
   EQUATE FILEMK TO 20, ALERT TO 4000, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 59D                     *MODULE NUMBER 
   BA = P1.AND.7000 + 100        *DISABLE AUTOMATIC ERROR RECOVERY
   WC = P2                       *SET WORD COUNT
   IF (P4.AND.2000.NE.0) MSG 0 TO DISPLAY,PRINT 
   IF (P4.AND.2000.EQ.0) MSG 1 TO DISPLAY,PRINT 
   IF (P4.AND.2000.EQ.0) CALL 53A  *NO RANDOM DATA
   IF (P4.AND.2000.EQ.0) GOTO 22  *NO RANDOM DATA 
   RANDOM TO OB FOR 500, START RT 
* 
* --------MODULE TEST 
* 
22 B10 = 0                       *MODULE LOCATION KEY 
   B7 = 0                        *NO MOTION 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES BA, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B14 = 10                      *COMMAND INDEX FOR READ BUFFERED LOG 
   READ BUFFERED LOG, ABT 74     *CLEAR LOG BEFORE MODULE 
   CALL 61A                      *FORMAT ERROR TRACKS 
* 
* --------WRITE FIXED PATTERN FROM BOT TO EOT 
* 
24 B7 = 0                        *NO MOTION 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES BA, ABT 74                *RESERVE 
34 B10 = 1                       *MODULE LOCATION KEY 
   B7 = 1                        *WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   GOSUB 40                      *INCREMENT THE RECORD COUNTS 
   IF (SB(1).AND.10.NE.0) GOTO 36  *IF END OF TAPE
   B14 = 20                      *COMMAND INDEX FOR SYNCHRO 
   SYNCHRO, ABT 74               *FLUSH THE BUFFER
   IF (SB(1).AND.ALERT.NE.0) GOSUB 50  *IF ALERT
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B4 = SB(44)                   *SAVE LAST GOOD BLOCK ID 
   B5 = SB(45)                   *SAVE LAST GOOD BLOCK ID 
   B6 = SB(46)                   *SAVE LAST GOOD BLOCK ID 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS WRITTEN
   GOTO 24                       *RESUME TESTING
* 
* --------PROCESS END OF TAPE 
* 
36 MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS WRITTEN
   MSG 11 (B2,B3) TO LINE 17     *UPDATE RECORDS WITH ERRORS
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   B7 = 1 
   ENDFILE, ABT 74               *WRITE DOUBLE END OF FILE AT EOT 
   ENDFILE, ABT 74
   PICTURE                       *SENT DISPLAY TO OUTPUT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES BA, ABT 74                *RESERVE 
   B14 = 10                      *COMMAND INDEX FOR READ BUFFERED LOG 
   READ BUFFERED LOG, ABT 74
   CALL 53B                      *FORMAT DATA TO SCREEN 
   PICTURE                       *SENT DISPLAY TO OUTPUT
   GOTO 77                       *TERMINATE 
* 
* --------INCREMENT RECORD COUNT SUBROUTINE 
* 
40 B1 = B1 + 1                   *BUMP RECORD COUNTER B0/B1 
   IF (B1.LT.100D) GOTO 44       *IF NO LOWER DIGITS OVERFLOW 
   B1 = 0                        *CLEAR LOWER DIGITS
   B0 = B0 + 1                   *INCREMENT UPPER DIGITS
44 RETURN 
* 
* --------LOCATE BLOCK SUBROUTINE 
* 
50 CALL 61A                      *POST ERROR INFORMATION
   B8 = 1                        *SET NUMBER OF ERASES
51 B3 = B3 + 1                   *BUMP ERROR COUNTER B2/B3
   IF (B3.LT.100D) GOTO 52       *IF NO LOWER DIGITS OVERFLOW 
   B3 = 0 
   B2 = B2 + 1
52 B14 = 12                      *COMMAND INDEX FOR RES 
   MSG 11 (B2,B3) TO LINE 17     *UPDATE RECORDS IN ERROR 
   RES BA, ABT 74                *RESERVE 
   B14 = 5                       *COMMAND INDEX FOR LOCATE BLOCK
   IB(0) = OB(0)                 *SAVE DATA 
   IB(1) = OB(1)                 *SAVE DATA 
   IB(2) = OB(2)                 *SAVE DATA 
   OB(0) = B4                    *SET BLOCK ID TO LOCATE RECORD 
   OB(1) = B5                    *SET BLOCK ID TO LOCATE RECORD 
   OB(2) = B6                    *SET BLOCK ID TO LOCATE RECORD 
   LOCATE BLOCK, ABT 74 
   OB(0) = IB(0)                 *RESTORE DATA
   OB(1) = IB(1)                 *RESTORE DATA
   OB(2) = IB(2)                 *RESTORE DATA
   B9 = B8                       *NUMBER OF ERASES TO DO
55 B14 = 3                       *COMMAND INDEX FOR ERASE 
   ERASE, ABT 74                 *ERASE 
   B9 = B9 - 1
   IF (B9.NE.0) GOTO 55 
   B7 = 1                        *WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   B14 = 20                      *COMMAND INDEX FOR SYNCHRO 
   SYNCHRO, ABT 74               *FLUSH THE BUFFER
   GOSUB 40                      *INCREMENT THE RECORD COUNTS 
   IF (SB(1).AND.ALERT.NE.0) GOTO 56  *IF ALERT 
   RETURN                        *ENTER BACK INTO NORMAL READ 
56 CALL 61A                      *POST ERROR INFORMATION
   B8 = B8 + 1                   *INCREMENT THE NUMBER OF ERASES
   IF (B8.GE.32D) ERROR 2/264 GOTO 70 
   GOTO 51                       *LOCATE AND ERASE
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1
75 CALL 97A                      *POST ABORT MESSAGE
   IF (B13.LT.2) GOTO 76         *RETRY 
   MSG 16 TO DAYFILE,PRINT
   MSG 14 (B13) TO DAYFILE
   GOTO 77
76 IF (B10.EQ.0) GOTO 22         *RESTART HERE
   GOTO 24                       *RESTART HERE
77 END 20 
COMPILE   - TCT59 - 
   MODULE TCT61,DCART(46,47)LOCK   -  READ ANY TAPE DISPL BUFFERED LOG -
*** TCT61  - READ ANY TAPE DISPLAY BUFFERED LOG 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS  MODULE  WILL READ A TAPE CARTRIDGE  GENERATED  BY MOST
*         ANY SOURCE, WITH ERROR CORRECTION DISABLED. 
* 
*         DATA IS READ  WITH ERROR CORRECTION FORCED DISABLED. RECORDS
*         ARE READ TO EOF.
* 
*         READING WILL CONTINUE UNTIL ONE DOUBLE END OF FILE IS FOUND.
* 
*         THIS MODULE WILL TERMINATE ON ONE  MODULE DETECTED ERROR  OR
*         COMMAND ABORT.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE WITH ERROR CORRECTION DISABLED.
*         3. REWIND.
*         4. POST ERROR DISPLAY 
*         5. RESERVE WITH ERROR CORRECTION DISABLED 
*         6. READ FORWARD.
*         7. IF ALERT SET GO TO STEP 11.
*         8. READ GOOD BLOCK ID AND SAVE. 
*         9. IF FILE MARK STATUS GOTO STEP 16.
*        10. GOTO STEP 5. 
*        11. LOCATE TO LAST GOOD BLOCK ID.
*        12. FORESPACE RECORD(S). 
*        13. READ FORWARD.
*        14. IF ALERT SET AND FORESPACE LT 3 RECORDS GO TO STEP 11. 
*        15. ELSE ERROR 263 LOST POSITION.
*        16. RETURN TO STEP 5 IF NOT DOUBLE END OF FILE.
*        17. READ BUFFERED ERROR LOG. 
*        18. END OF MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. EC 123 - TAPE UNIT NOT READY 
*         3. EC 263 - POSITION LOST AFTER THREE  FORESPACES  IN  TCT61
*            READ ANY TAPE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = RECORD COUNTER UPPER. 
*         B1  = RECORD COUNTER LOWER. 
*         B2  = FORESPACE COUNTER.
*         B3  = FORESPACE COUNTER.
*         B4  = LAST GOOD BLOCK ID. 
*         B5  = LAST GOOD BLOCK ID. 
*         B6  = LAST GOOD BLOCK ID. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = EOF COUNTER.
*         B9  = EOF FLAG FOR EOT. 
*         B10 = UPPER 3 DIGITS OF THE RECORDS WITH ERRORS COUNTER.
*         B11 = LOWER 2 DIGITS OF THE RECORDS WITH ERRORS COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = RES PARAMETERS. 
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT53B - DISPLAY BUFFERED LOG DATA. 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT61 - READ ANY TAPE DISPLAY BUFFERED LOG
2  FORMAT TCT61 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
6  FORMAT TCT61 - END OF TAPE - 
10 FORMAT TCT61 - ONE (*O) DOUBLE END OF FILES READ 
11 FORMAT TOTAL RECORDS IN ERROR = *DE*D (D)
12 FORMAT TOTAL RECORDS READ = *DE*D (D)
20 FORMAT TCT61 - ERRORS IN MODULE=*DEC (D) 
* 
* --------MODULE INITIALIZATION 
* 
30 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B15 = 61D                     *MODULE NUMBER 
   BA = P1.AND.7000 + 100        *DISABLE AUTOMATIC ERROR RECOVERY
* 
* --------MODULE TEST 
* 
   WC = 0                        *SET WORD COUNT TO END OF RECORD 
   B5 = 1                        *NUMBER OF DOUBLE EOFS TO READ 
   B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES BA, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B14 = 10                      *COMMAND INDEX FOR READ BUFFERED LOG 
   READ BUFFERED LOG, ABT 74     *CLEAR LOG BEFORE MODULE 
   CALL 61A                      *POST ERROR INFORMATION
32 B1 = B1 + 1                   *BUMP RECORD CNTR B0/B1
   IF (B1.LT.100D) GOTO 34       *CHECK LOWER REG OVERFLOW
   B1 = 0 
   B0 = B0 + 1
34 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES BA, ABT 74                *RESERVE 
   IF (SB(1).AND.1.NE.0) GOTO 36  *CHECK IF UNIT IS READY 
   ERROR 2/123 GOSUB 70 
36 B7 = 5                        *READ MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (SB(1).AND.4000.NE.0) GOSUB 50  *IF ALERT 
   B14 = 7                       *COMMAND INDEX FOR READ BLOCK ID 
   READ BLOCK ID, ABT 74
   B4 = SB(44)                   *SAVE LAST GOOD BLOCK ID 
   B5 = SB(45)                   *SAVE LAST GOOD BLOCK ID 
   B6 = SB(46)                   *SAVE LAST GOOD BLOCK ID 
   B7 = 15
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS WRITTEN
   IF (SB(1).AND.20.NE.0) GOTO 40  *IF FILE MARK
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
   GOTO 32                       *RESUME TESTING
40 IF (B9.AND.1.EQ.1) GOTO 42 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32
42 B9 = B9+1                     *INCREMENT EOF 
   IF (B9.RS.1.LT.B8) GOTO 32 
   IF (B8.EQ.0) B8 = 1
   MSG 11 (B10,B11) TO LINE 17   *UPDATE RECORDS WITH ERRORS
   MSG 10 (B8) TO LINE 21        *DISPLAY EOF 
   PICTURE                       *PICTURE ERROR INFORMATION 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES BA, ABT 74                *RESERVE 
   B14 = 10                      *COMMAND INDEX FOR READ BUFFERED LOG 
   READ BUFFERED LOG, ABT 74
   CALL 53B                      *READ BUFFERED LOG 
   PICTURE
   GOTO 77
* 
* --------LOCATE BLOCK SUBROUTINE 
* 
50 CALL 61A                      *POST ERROR INFORMATION
   B2 = 1                        *SET NUMBER OF FORESPACES
51 B11 = B11 + 1                 *BUMP ERROR COUNTER B10/B11
   IF (B11.LT.100D) GOTO 52      *IF NO LOWER DIGITS OVERFLOW 
   B11 = 0
   B10 = B10 + 1
52 B14 = 12                      *COMMAND INDEX FOR RES 
   MSG 11 (B10,B11) TO LINE 17   *UPDATE RECORDS IN ERROR 
   RES BA, ABT 74                *RESERVE 
   B14 = 5                       *COMMAND INDEX FOR LOCATE BLOCK
   OB(0) = B4                    *SET BLOCK ID TO LOCATE RECORD 
   OB(1) = B5                    *SET BLOCK ID TO LOCATE RECORD 
   OB(2) = B6                    *SET BLOCK ID TO LOCATE RECORD 
   LOCATE BLOCK, ABT 74 
   B3 = B2                       *NUMBER OF FORESPACES TO DO
55 B14 = 4                       *COMMAND INDEX FOR FSPACE
   FSPACE, ABT 74                *FORESPACE 1 RECORD
   B3 = B3 - 1
   IF (B3.NE.0) GOTO 55 
   B7 = 5                        *READ MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (SB(1).AND.4000.NE.0) GOTO 56  *IF ALERT
   RETURN                        *ENTER BACK INTO NORMAL READ 
56 CALL 61A                      *POST ERROR INFORMATION
   B2 = B2 + 1                   *INCREMENT THE NUMBER OF FORESPACES
   IF (B2.GE.3) ERROR 2/263 GOTO 70 
   GOTO 51                       *LOCATE AND FORESPACE
  
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 PICTURE                       *PICTURE ERROR INFORMATION 
   B13 = B13 + 1                 *BUMP ERROR COUNT
   MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 PICTURE                       *PICTURE ERROR INFORMATION 
   B13 = B13 + 1                 *BUMP ERROR COUNT
   MSG EM TO LINE 1              *POST ERROR MESSAGE
75 CALL 97A                      *POST ABORT MESSAGE
77 END 30 
COMPILE   - TCT61 - 
   MODULE TCT61A,DCART(46,47)LOCK  -  LOG AND DISPLAY TRACK ERRORS -
*** TCT61A - LOG AND DISPLAY TRACK ERRORS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         LOG AND DISPLAY TRACK ERRORS FOR TCT61. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT61A IS EXITED TO  FROM  TCT61.  MODULE  TCT61A  LOGS  AND
*         DISPLAYS TRACK ERRORS IF READ ERROR FORMAT IS DETECTED. 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT61A  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*         IB (200-221) =  TOTAL TRACK ERRORS. 
*         IB (300-303) =  TRACK IN ERROR THIS ERROR.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT TCT*D  ERROR TRACKS 
2  FORMAT ERRORS IN TRACK 18=*DEC(D) 17=*DEC(D) 16=*DEC(D)
3  FORMAT ERRORS IN TRACK 15=*DEC(D) 14=*DEC(D) 13=*DEC(D)
4  FORMAT ERRORS IN TRACK 12=*DEC(D) 11=*DEC(D) 10=*DEC(D)
5  FORMAT ERRORS IN TRACK 09=*DEC(D) 08=*DEC(D) 07=*DEC(D)
6  FORMAT ERRORS IN TRACK 06=*DEC(D) 05=*DEC(D) 04=*DEC(D)
7  FORMAT ERRORS IN TRACK 03=*DEC(D) 02=*DEC(D) 01=*DEC(D)
10 FORMAT LAST TRACK(S) IN ERROR  111111111000000000
11 FORMAT                         876543210987654321
12 FORMAT                         *O*OCT*OCT*OCT*OCT
* 
   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 IB (400) = B0                 *SAVE B REGS 
   IB (401) = B1                 *SAVE B REGS 
   IB (402) = B2                 *SAVE B REGS 
   B0 = 7                        *WORD 7 OF SB SENSE BYTE 6 AND 7 
   B1 = SB (B0).AND.17.LS.4 
   B0 = B0 + 1                   *WORD 10 OF SB SENSE BYTE 7 AND 8
   B2 = SB (B0).AND.7400.RS.8 
   B1 = B1 + B2                  *FORMAT CODE 
   IF (SB(B0).AND.BIT7.NE.0) GOTO 70  *NOT READ ERROR FORMAT
   IF (SB(B0).AND.BIT6.EQ.0) GOTO 70  *NOT READ ERROR FORMAT
* 
   DUP 0 TO IB(300) FOR 22       *CLEAR TRACK IN ERROR
   B0 = 17                       *WORD 17 OF SB SENSE BYTE 18 AND 19
   IF (SB(B0).AND.BIT1.EQ.0) GOTO 40  *NOT TRACK 18 ERROR 
   IB(200) = IB(200) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(300) = 10                  *SET TRACK 18 IN ERROR 
40 IF (SB(B0).AND.BIT0.EQ.0) GOTO 41  *NOT TRACK 17 ERROR 
   IB(201) = IB(201) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(300) = IB(300) + 1         *SET TRACK 17 IN ERROR 
   B0 = B0 + 1
41 IF (SB(B0).AND.BIT11.EQ.0) GOTO 42  *NOT TRACK 16 ERROR
   IB(202) = IB(202) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(301) = 1000                *SET TRACK 16 IN ERROR 
42 IF (SB(B0).AND.BIT10.EQ.0) GOTO 43  *NOT TRACK 15 ERROR
   IB(203) = IB(203) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(301) = IB(301) + 100       *SET TRACK 15 IN ERROR 
43 IF (SB(B0).AND.BIT9.EQ.0) GOTO 44  *NOT TRACK 14 ERROR 
   IB(204) = IB(204) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(301) = IB(301) + 10        *SET TRACK 14 IN ERROR 
44 IF (SB(B0).AND.BIT8.EQ.0) GOTO 45  *NOT TRACK 13 ERROR 
   IB(205) = IB(205) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(301) = IB(301) + 1         *SET TRACK 13 IN ERROR 
45 IF (SB(B0).AND.BIT5.EQ.0) GOTO 46  *NOT TRACK 12 ERROR 
   IB(206) = IB(206) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(302) = 1000                *SET TRACK 12 IN ERROR 
46 IF (SB(B0).AND.BIT4.EQ.0) GOTO 47  *NOT TRACK 11 ERROR 
   IB(207) = IB(207) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(302) = IB(302) + 100       *SET TRACK 11 IN ERROR 
47 IF (SB(B0).AND.BIT3.EQ.0) GOTO 50  *NOT TRACK 10 ERROR 
   IB(210) = IB(210) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(302) = IB(302) + 10        *SET TRACK 10 IN ERROR 
50 IF (SB(B0).AND.BIT2.EQ.0) GOTO 51  *NOT TRACK 9 ERROR
   IB(211) = IB(211) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(302) = IB(302) + 1         *SET TRACK 9 IN ERROR
51 IF (SB(B0).AND.BIT1.EQ.0) GOTO 52  *NOT TRACK 8 ERROR
   IB(212) = IB(212) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(303) = 1000                *SET TRACK 8 IN ERROR
52 IF (SB(B0).AND.BIT0.EQ.0) GOTO 53  *NOT TRACK 7 ERROR
   IB(213) = IB(213) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(303) = IB(303) + 100       *SET TRACK 7 IN ERROR
   B0 = B0 + 1
53 IF (SB(B0).AND.BIT9.EQ.0) GOTO 54  *NOT TRACK 6 ERROR
   IB(214) = IB(214) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(303) = IB(303) + 10        *SET TRACK 6 IN ERROR
54 IF (SB(B0).AND.BIT8.EQ.0) GOTO 55  *NOT TRACK 5 ERROR
   IB(215) = IB(215) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(303) = IB(303) + 1         *SET TRACK 5 IN ERROR
55 IF (SB(B0).AND.BIT7.EQ.0) GOTO 56  *NOT TRACK 4 ERROR
   IB(216) = IB(216) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(304) = 1000                *SET TRACK 4 IN ERROR
56 IF (SB(B0).AND.BIT6.EQ.0) GOTO 57  *NOT TRACK 3 ERROR
   IB(217) = IB(217) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(304) = IB(304) + 100       *SET TRACK 3 IN ERROR
57 IF (SB(B0).AND.BIT5.EQ.0) GOTO 60  *NOT TRACK 2 ERROR
   IB(220) = IB(220) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(304) = IB(304) + 10        *SET TRACK 2 IN ERROR
60 IF (SB(B0).AND.BIT4.EQ.0) GOTO 70  *NOT TRACK 1 ERROR
   IB(221) = IB(221) + 1         *INCREMENT TOTAL ERROR COUNTER 
   IB(304) = IB(304) + 1         *SET TRACK 18IN ERROR
* 
* --------POST DATA FOR ERRORS
* 
70 MSG 1 (B15) TO LINE 1
   MSG 2 3 WORDS FROM IB (200) TO LINE 3
   MSG 3 3 WORDS FROM IB (203) TO LINE 4
   MSG 4 3 WORDS FROM IB (206) TO LINE 5
   MSG 5 3 WORDS FROM IB (211) TO LINE 6
   MSG 6 3 WORDS FROM IB (214) TO LINE 7
   MSG 7 3 WORDS FROM IB (217) TO LINE 10 
   MSG 10 TO LINE 12
   MSG 11 TO LINE 13
   MSG 12 5 WORDS FROM IB (300) TO LINE 14
   B0 = IB (400)                 *RESTORE B REGS
   B1 = IB (401)                 *RESTORE B REGS
   B2 = IB (402)                 *RESTORE B REGS
   EXIT 
77 END 30 
COMPILE   - TCT61A -
   MODULE TCT63,DCART(46,47)LOCK   -  FILE PROTECT/UNLOAD TEST -
*** TCT63  - FILE PROTECT/UNLOAD TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT63  IS A REPAIR MODULE THAT TESTS FOR FILE PROTECT STATUS
*         WRITES  A RECORD THEN PAUSES TO HAVE  FILE  PROTECT SET THEN
*         TRIES  TO WRITE TO A FILE PROTECTED CARTRIDGE  AND READS THE
*         DATA  THAT WAS WRITTEN FROM THE FIRST WRITE.   IF  THE  DATA
*         FROM  THE SECOND WRITE IS IN THE RECORD A COMPARE  ERROR  IS
*         GENERATED. WHEN  COMPLETED  THE CARTRIDGE IS UNLOADED.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OB WITH 7777 PATTERN. 
*         5. RESERVE. 
*         6. REPORT EC 200 IF STATUS ERROR. 
*         7. WRITE LONG.
*         8. REPORT EC 200 IF STATUS ERROR. 
*         9. MESSAGE AND PAUSE TO SET FILE PROTECT. 
*        10. GO TO STEP 9 IF WRITE ENABLE STILL PRESENT.
*        11. FILL OB WITH 2525 PATTERN. 
*        12. RESERVE. 
*        13. REWIND.
*        14. TRY TO WRITE LONG. 
*        15. REPORT EC 200 IF STATUS ERROR. 
*        16. RESERVE. 
*        17. REWIND.
*        18. READ FORWARD.
*        19. REPORT EC 227 IF STATUS ERROR. 
*        20. FILL OB WITH 7777 PATTERN. 
*        21. COMPARE THE DATA.
*        22. REPORT EC 105 IF DATA DOES NOT COMPARE.
*        23. UNLOAD THE CARTRIDGE.
*        24. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. PRODUCT OVERLAY ERRORS.
*         2. TCT63 - ERROR CODE = EEEE  AT LINE (EA) = LLLL.
*         3. -EC 200- AN  UNEXPECTED  STATUS BIT APPEARED IN A GENERAL
*            STATUS DURING A WRITE OPERATION. NOTE THAT GENERAL STATUS
*            WAS MASKED WITH LOGICAL PRODUCT 4070B. 
*         4. - EC 227- AN  ERROR  OCCURRED  DURING  A   READ   FORWARD
*            OPERATION IN THE FILE PROTECT/UNLOAD TEST TEST.
*         5. - EC 270 - WRITE  WITH  NO  ERRORS  ON  A  FILE PROTECTED
*            CARTRIDGE SHOULD NOT HAVE. 
*         6. - EC 271- A  STATUS  ERROR  OCCURRED  AFTER   AN   UNLOAD
*            OPERATION IN THE FILE PROTECT/UNLOAD TEST TEST.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B3  = WTA.
*         B4  = WTA AND WT SHIFTED FOR WC.
*         B5  = NUMBER OF WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT63 - FILE PROTECT/UNLOAD TEST -
2  FORMAT TCT63 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
3  FORMAT TCT63 - WRITE HAS COMPLETED ON CARTRIDGE. 
4  FORMAT SET FILE PROTECT ON CARTRIDGE AND GIVE A GO.
5  FORMAT TCT63 - PAUSE TO SET FILE PROTECT 
14 FORMAT TCT63 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT63 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4070, ERROR1 TO 4230 
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 63D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   WC = P2                       *RECORD LENGTH TO WC REG 
   DUP 7777 TO OB FOR 500 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B7 = 1                        *WRITE FORWARD MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 74 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 24  *NO STATUS ERRORS 
   ERROR 2/200, GOSUB 70
24 MSG 3 TO LINE 1
25 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 25                      *COMMAND INDEX FOR UNLOAD
   UNLOAD, ABT 74 
   MSG 4 TO LINE 2
   PICTURE
   MSG 5 TO DISPLAY, PRINT
   PAUSE
   BLANK
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   IF (SB(1).AND.ERROR1.NE.0) GOTO 25  *NO STATUS ERRORS
26 B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   WC = P2                       *RECORD LENGTH TO WC REG 
   DUP 2525 TO OB FOR 500 
* 
* --------TRY TO WRITE THE RECORD 
* 
30 B0 = 0                        *CLEAR FILE COUNT
   B1 = 1                        *SET RECORD COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 1                        *WRITE FORWARD MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG, ABT 32 
   IF (SB(1).AND.ERROR.NE.0) GOTO 40  *EXPECTED WRITE ERRORS
32 IF (EC.EQ.7516) GOTO 40       *EXPECTED WRITE ERRORS 
* 
   ERROR 2/270, GOSUB 70
* 
* --------READ THE RECORD FORWARD 
* 
40 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74 
   B7 = 5                        *READ FORWARD MOTION CODE
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (SB(1).AND.ERROR1.NE.0) ERROR 2/227, GOSUB 70 
   GOSUB 60                      *DO DATA COMPARE AT THE END
   B14 = 25                      *COMMAND INDEX FOR UNLOAD
   UNLOAD, ABT 74 
   IF (SB(1).AND.7.NE.0) ERROR 2/271, GOSUB 70
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
* 
* --------MODULE REPEAT/EXIT
* 
50 B6 = B6 + 1                   *LOOP COUNT
   IF (B13.EQ.0) GOTO 56         *NO MODULE ERRORS
   MSG 15(B13) TO DAYFILE        *REPORT ERRORS 
56 GOTO 77                       *END MODULE EXECUTION
* 
* --------DATA COMPARE SUBROUTINE 
* 
60 B5 = 400 
   DUP 7777 TO OB FOR 400 
   B3 = SB(42).LS.7              *PUT WTA IN B3 
   B4 = WT.RS.5                  *PUT WT IN B4
   B4 = B3 + B4                  *PUT WTA AND WT IN B4
   IF (B4.GT.400) GOTO 62        *IF WT LARGER THAN BFR 
   B5 = WT - 1
62 COMPARE IB TO OB FOR B5, ABT 64
   GOTO 65
64 ERROR 2/105, GOSUB 70         *DATA COMPARE ERROR
65 RETURN 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 50                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT63 - 
   MODULE TCT71,DCART(46,47)LOCK   -  RANDOM SHORT WRITE TEST - 
*** TCT71  - RANDOM SHORT WRITE TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT71 CREATES THE TAPE USED FOR RANDOM READ IN MODULE TCT72.
* 
*         THIS MODULE WILL WRITE RANDOM LENGTH RECORDS  FROM  0005  TO
*         7777  BY  READING  THE  REAL  TIME  CLOCK.  EACH RECORD WILL
*         CONTAIN UNIQUE ADDRESSING INFORMATION (RECORD, FILE, LENGTH,
*         AND DELAY), THAT WILL BE UTILIZED IN  RANDOM  SHORT  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.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. FILL OB WITH SELECTED DATA PATTERN.
*         5. IF P5 EQUALS ZERO SET DELAY COUNT TO RANDOM VALUE BETWEEN
*            1 AND 777 ELSE SET DELAY COUNT TO P5.
*         6. SET WC TO RANDOM VALUE BETWEEN 5 AND 7777. 
*         7. RESERVE. 
*         8. BUMP RECORD COUNTER. 
*         9. ADD ADDRESS CODING.
*        10. WRITE SHORT WITH DELAY.
*        11. GO TO STEP 18 IF *EOT* STATUS. 
*        12. REPORT EC 200 IF STATUS ERROR. 
*        13. REPEAT STEPS 6-12 FOR *RECORD MAX* RECORDS.
*        14. RESERVE. 
*        15. ENDFILE. 
*        16. REPORT EC 122 IF STATUS IS NOT *EOF*.
*        17. REPEAT STEPS 5-16 FOR *FILE MAX* FILES.
*        18. GO TO STEP 2 IF REPEAT MODULE. 
*        19. RELEASE. 
*        20. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT71 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 122- NO  FM/TM  STATUS  IN  GENERAL STATUS, AT END OF
*            OPERATION, AFTER A WRITE FM/TM.
*         4. -EC 200- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A WRITE OPERATION. NOTE THAT GENERAL STATUS
*            WAS MASKED WITH LOGICAL PRODUCT 4070B. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM SEED FOR PATTERN GENERATOR.
*         B3  = RANDOM DELAY COUNT BETWEEN BLOCKS.
*         B4  = PATTERN FOR STORING.
*         B5  = NUMBER OF BITS TO DUP (8).
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT71 - RANDOM SHORT WRITE TEST - 
2  FORMAT TCT71 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT71 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT71 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4070 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 71D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B13 = 0                       *CLEAR ERROR COUNTER 
   B8 = 100                      *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 22   *DIAGNOSTIC MODE SELECTED
   B8 = P8                       *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   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 34  *IF RANDOM PATTERN 
   B5 = 10
   B2 = 500 
30 B4 = P4
   IF (P4.AND.3000.EQ.1000) B4 = P4.XOR.7777
   DUP B5 BITS OF P4/B4 TO OB FOR B2
   GOTO 35
34 RANDOM TO OB FOR 500, START P7 
* 
* --------ADDRESS CODING ALWAYS WRITTEN 
* 
35 IF (P5.EQ.0) B3 = RT          *GENERATE RANDOM DELAY COUNT 
   IF (P5.NE.0) B3 = P5          *GENERATE RANDOM DELAY COUNT 
36 WC = RT                       *GENERATE RANDOM WORD COUNT
   IF (WC.LT.5) GOTO 36 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
40 B1 = B1 + 1
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
42 OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
   OB(4) = B3.AND.777 
* 
* --------WRITE RANDOM LENGTH RECORDS (4-7777)
* 
   B7 = 1                        *FORWARD WRITE CODE
   B14 = 34                      *COMMAND INDEX FOR SHORT WRITE WITH DEL
   WRITE SHORT WITH DELAY B3, ABT 74
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
46 IF (SB(1).AND.EOT.NE.0) GOTO 50  * -EOT- DETECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/200, GOSUB 70
   IF (P9.EQ.0) GOTO 36          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 36         *LOOP RECORD MAX TIMES 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCR FILE COUNT 
* 
* --------WRITE -EOF- 
* 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (B8.EQ.0) GOTO 35          *INFINITE FILE COUNT 
   IF (B0.LE.B8) GOTO 35         *LOOP FILE MAX TIMES 
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 54                       *IF END OF MODULE BUT NOT EOT
50 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
54 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 56   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 22                       *RESTART 
56 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 60         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
60 EXIT                          *NORMAL TERMINATION
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 22         *NOT SECOND TRY
   GOTO 56                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT71 - 
   MODULE TCT72,DCART(46,47)LOCK   -  RANDOM READ SHORT TEST -
*** TCT72  - RANDOM READ SHORT TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THE  TAPE  USED  BY  THIS MODULE MUST BE CREATED BY -TCT71-.
* 
*         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 IS PERFORMED. 
* 
*         TCT72 (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 211 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 212 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. REPORT EC 213 IF WT IN ERROR     (WORD 3 OF IB IN ERROR).
*        12. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 16. 
*        13. GENERATE EXPECTED DATA PATTERN INTO OB.
*        14. ADD EXPECTED ADDRESS CODING TO OB. 
*        15. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        16. REPEAT STEPS 4-15 FOR *RECORD MAX* RECORDS.
*        17. REPEAT STEPS 4-16 FOR *FILE MAX* FILES.
*        18. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT72 - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4010B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 211- INCORRECT  FILE  DETECTED  DURING A RANDOM READ.
*         7. -EC 212- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            RANDOM READ. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B10 = NUMBER OF BITS TO DUP (8).
*         B11 = WORDS TRANSMITTED.
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT72 - RANDOM READ SHORT TEST -
2  FORMAT TCT72 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT72 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT72 ERROR(S) IN MODULE = *DEC 
* 
   EQUATE ERROR TO 4010 
   EQUATE ALERT TO 4000, EOT TO 10, FILEMK TO 20
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 72D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = 100                     *FILE MAX DIAG MODE
   IF (P3.AND.40.EQ.0) GOTO 22   *DIAGNOSTIC MODE SELECTED
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   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
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/211, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/212, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TA
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   B11 = WT 
   IF (IB(3).NE.B11) ERROR 2/213, GOTO 70  *WT ERROR
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   IF (P4.AND.3000.NE.2000) GOTO 44  *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 46
44 B10 = 10 
   B4 = 500 
   B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B10 BITS OF P4/B2 TO OB FOR B4 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   OB(4) = IB(4)
   IF (WT.GT.B5) GOTO 50
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
   MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 EXIT                          *EXIT THE MODULE 
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 22                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
   END 20 
COMPILE   - TCT72 - 
   MODULE TCT73,DCART(46,47)LOCK   -  LONG WRITE WITH DELAY - 
*** TCT73  - LONG WRITE WITH DELAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE  PATTERN  SELECTED BY THE
*         *PARAM* DIRECTIVE.  MAXIMUM SIZE RECORDS ARE *P2* TIMES  32,
*         SO THE MAXIMUM RECORD SIZE  IS  4095 X  32 = 131040  DECIMAL
*         12 BIT PP WORDS OR 196560 DECIMAL  8  BIT  BYTES.  DELAY  IS
*         P5 OR RANDOM IF P5 IS EQUAL TO ZERO.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* OR *EOT*
*         IS REACHED. AN EXIT IS THEN PERFORMED TO TCT73A TO READ  AND
*         COMPARE THE DATA WRITTEN. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. SET DELAY BETWEEN BLOCKS WITH RANDOM OR P5 IF SELECTED.
*         6. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         7. APPLY ADDRESS CODING.
*         8. RESERVE. 
*         9. WRITE LONG WITH DELAY. 
*        10. GO TO STEP 16 IF *EOT*.
*        11. REPORT EC 200 IF STATUS ERROR. 
*        12. REPEAT STEPS 6-11 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        13. ENDFILE. 
*        14. REPORT EC 122 IF NO *EOF* STATUS.
*        15. REPEAT STEPS 5-14 UNTIL *FILE MAX* FILES WRITTEN.
*        16. REPEAT MODULE OR EXIT TO TCT73A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT73 - ERROR CODE = EEEE  AT LINE (EA) = LLLL.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA PATTERN FLAG. 
*         B3  = PATTERN FOR STORING.
*         B4  = DELAY COUNT BETWEEN BLOCKS. 
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM SEED.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
0  FORMAT TCT73 - LONG WRITE WITH DELAY - 
2  FORMAT TCT73 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT73 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT73 - ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 73D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE.
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
   B4 = P5
   IF (P4.AND.3000.EQ.2000) GOTO 26  *RANDOM PATTERN SELECTED 
   B8 = 10
   B5 = 500 
   B3 = P4
* 
* --------FILL BUFFER 
* 
24 IF (P4.AND.3000.EQ.1000) B3 = P4.XOR.7777
   DUP B8 BITS OF P4/B3 TO OB FOR B5
   GOTO 32
26 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 30    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
30 RANDOM TO OB FOR 500, START B9 
32 WC = P2                       *RECORD LENGTH TO WC REG 
34 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
37 IF (P5.EQ.0) B4 = RT          *SET DELAY COUNT 
40 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
   IF (B2.EQ.0) GOTO 42          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
42 OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
   OB(4) = B4.AND.777 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 23                      *COMMAND INDEX FOR WRITE LONG
   WRITE LONG WITH DELAY B4, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
52 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 54  *NO ERROR DETECTED
   ERROR 2/200, GOSUB 70
54 IF (P9.EQ.0) GOTO 40          *WRITE TO EOT IF P9 ZERO 
   IF (B1.NE.P9) GOTO 40         *P9 RECORDS NOT DONE 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
56 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (P8.EQ.0) GOTO 37          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.P8) GOTO 37         *P8 FILES NOT PROCESSED
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *IF END OF MODULE BUT NOT EOT
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 34                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 34   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT TO 73A                   *NORMAL TERMINATION DO READ
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 34                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 34         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT73 - 
   MODULE TCT73A,DCART(46,47)LOCK   -  LONG READ TEST - 
*** TCT73A  - LONG READ TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         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.
*         WT AND WTA ARE COMPARED WITH CALCULATED WORD COUNT FROM  P2.
*         THIS  SEQUENCE  CONTINUES  UNTIL RECORD/FILE MAX OR -EOT- IS
*         ENCOUNTERED. AT THIS TIME AN EXIT IS PERFORMED. 
* 
*         TCT73A (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND 
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 221 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 222 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 15. 
*        12. GENERATE EXPECTED DATA PATTERN INTO OB.
*        13. ADD EXPECTED ADDRESS CODING TO OB. 
*        14. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        15. REPEAT STEPS 4-14 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT73A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 221- INCORRECT  FILE  DETECTED  DURING A READ. 
*         7. -EC 222- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B10 = NUMBER OF BITS TO DUP (8).
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT73A - LONG READ TEST - 
2  FORMAT TCT73A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT73A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT TCT73A ERROR(S) IN MODULE = *DEC
* 
   EQUATE ERROR TO 4050, FILEMK TO 20 
   EQUATE ALERT TO 4000, EOT TO 10
* 
* --------MODULE INITIALIZATION 
* 
20 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   WC = P2                       *SET WC REG
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B3 = 0                        *CLEAR FM/TM FLAG
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/221, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/222, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TA
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   IF (WC.RS.7D.NE.SB(42)) ERROR 2/213, GOTO 70 
   B5 = WC.LS.5.AND.7740
   IF (WT.NE.B5) ERROR 2/213, GOTO 70  *INCORRECT RECORD LENGTH 
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   IF (P4.AND.3000.NE.2000) GOTO 44  *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 46
44 B10 = 10 
   B4 = 500 
   B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B10 BITS OF P4/B2 TO OB FOR B4 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   OB(4) = IB(4)
   IF (WC.LT.B5) B5 = WC
   IF (WT.GT.B5) GOTO 50
   IF (SB(42).NE.0) GOTO 50 
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
57 MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 EXIT                          *END THE MODULE
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   GOTO 57                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT73A -
   MODULE TCT75,DCART(46,47)LOCK   -  SHORT WRITE PLUS WITH DELAY - 
*** TCT75  - SHORT WRITE PLUS WITH DELAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         RECORDS ARE WRITTEN ON TAPE AT THE  PATTERN  SELECTED BY THE
*         *PARAM* DIRECTIVE.  MAXIMUM SIZE RECORDS ARE *P2* TIMES  32,
*         PLUS P6 OR RANDOM IF P6 IS EQUAL TO  ZERO,  SO  THE  MAXIMUM
*         RECORD SIZE IS 4095 X 32 + 31 = 131071  DECIMAL  12  BIT  PP
*         WORDS OR 196606.5 DECIMAL  8  BIT  BYTES.  DELAY  IS  P5  OR
*         RANDOM IF P5 IS EQUAL TO ZERO.
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* OR *EOT*
*         IS REACHED. AN EXIT IS THEN PERFORMED TO TCT75A TO READ  AND
*         COMPARE THE DATA WRITTEN. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. SET DELAY BETWEEN BLOCKS WITH RANDOM OR P5 IF SELECTED.
*         6. SET PLUS WORDS WITH RANDOM OR P6 IF SELECTED.
*         7. FILL OUTPUT BUFFER WITH RANDOM PATTERN IF SELECTED.
*         8. APPLY ADDRESS CODING.
*         9. RESERVE. 
*        10. WRITE SHORT PLUS WITH DELAY. 
*        11. GO TO STEP 17 IF *EOT*.
*        12. REPORT EC 200 IF STATUS ERROR. 
*        13. REPEAT STEPS 7-12 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        14. ENDFILE. 
*        15. REPORT EC 122 IF NO *EOF* STATUS.
*        16. REPEAT STEPS 5-15 UNTIL *FILE MAX* FILES WRITTEN.
*        17. REPEAT MODULE OR EXIT TO TCT75A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT75 - ERROR CODE = EEEE  AT LINE (EA) = LLLL.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA PATTERN FLAG. 
*         B3  = PATTERN FOR STORING.
*         B4  = DELAY COUNT BETWEEN BLOCKS. 
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM SEED.
*         B10 = PLUS WORD TO TEST ODD BYTE. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
0  FORMAT TCT75 - SHORT WRITE PLUS WITH DELAY - 
2  FORMAT TCT75 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT75 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT75 - ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 75D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE.
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
   B4 = P5
   B10 = P6 
   IF (P4.AND.3000.EQ.2000) GOTO 26  *RANDOM PATTERN SELECTED 
   B8 = 10
   B5 = 500 
   B3 = P4
* 
* --------FILL BUFFER 
* 
24 IF (P4.AND.3000.EQ.1000) B3 = P4.XOR.7777
   DUP B8 BITS OF P4/B3 TO OB FOR B5
   GOTO 32
26 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 30    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
30 RANDOM TO OB FOR 500, START B9 
32 WC = P2                       *RECORD LENGTH TO WC REG 
34 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
37 IF (P5.EQ.0) B4 = RT          *SET DELAY COUNT 
   IF (P6.EQ.0) B10 = RT         *SET PLUS WORDS
40 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
   IF (B2.EQ.0) GOTO 42          *RANDOM PATTERN NOT SELECTED 
   RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
42 OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
   OB(4) = B4.AND.777 
   OB(5) = B10.AND.37 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 36                      *COMMAND INDEX FOR WRITE LONG
   WRITE SHORT PLUS B10 WITH DELAY B4, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
52 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 54  *NO ERROR DETECTED
   ERROR 2/200, GOSUB 70
54 IF (P9.EQ.0) GOTO 40          *WRITE TO EOT IF P9 ZERO 
   IF (B1.NE.P9) GOTO 40         *P9 RECORDS NOT DONE 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
56 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (P8.EQ.0) GOTO 37          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.P8) GOTO 37         *P8 FILES NOT PROCESSED
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *IF END OF MODULE BUT NOT EOT
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 34                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 34   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT TO 75A                   *NORMAL TERMINATION DO READ
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 34                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 34         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT75 - 
   MODULE TCT75A,DCART(46,47)LOCK   -  SHORT READ PLUS TEST - 
*** TCT75A  - SHORT READ PLUS TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         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.
*         WT AND WTA ARE COMPARED WITH CALCULATED WORD COUNT FROM  P2.
*         THIS  SEQUENCE  CONTINUES  UNTIL RECORD/FILE MAX OR -EOT- IS
*         ENCOUNTERED. AT THIS TIME AN EXIT IS PERFORMED. 
* 
*         TCT75A (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND 
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 221 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 222 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 15. 
*        12. GENERATE EXPECTED DATA PATTERN INTO OB.
*        13. ADD EXPECTED ADDRESS CODING TO OB. 
*        14. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        15. REPEAT STEPS 4-14 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT75A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 221- INCORRECT  FILE  DETECTED  DURING A READ. 
*         7. -EC 222- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B10 = NUMBER OF BITS TO DUP (8).
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT75A - SHORT READ PLUS TEST - 
2  FORMAT TCT75A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT75A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT TCT75A ERROR(S) IN MODULE = *DEC
* 
   EQUATE ERROR TO 4010, FILEMK TO 20 
* 
* --------MODULE INITIALIZATION 
* 
20 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
*  WC = P2                       *SET WC REG
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B3 = 0                        *CLEAR FM/TM FLAG
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/221, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/222, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST/TAPE 
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   IF (WC.RS.7D.NE.SB(42)) GOTO 41
   B5 = WC.LS.5.AND.7740
   B5 = B5 + IB(5)
   IF (WT.EQ.B5) GOTO 42          *NOT INCORRECT RECORD LENGTH
41 ERROR 2/213, GOTO 70           *INCORRECT RECORD LENGTH
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   IF (P4.AND.3000.NE.2000) GOTO 44  *NOT RANDOM
   RANDOM TO OB FOR 500, START IB 
   GOTO 46
44 B10 = 10 
   B4 = 500 
   B2 = P4
   IF (P4.AND.3000.EQ.1000)B2 = P4.XOR.7777 
   DUP B10 BITS OF P4/B2 TO OB FOR B4 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   OB(4) = IB(4)
   OB(5) = IB(5)
   IF (WC.LT.B5) B5 = WC
   IF (WT.GT.B5) GOTO 50
   IF (SB(42).NE.0) GOTO 50 
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
57 MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 EXIT                          *END THE MODULE
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   GOTO 57                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT75A -
   MODULE TCT77,DCART(46,47)LOCK   -  RANDOM SHORT WRITE PLUS W/DELAY - 
*** TCT77  - RANDOM SHORT WRITE PLUS WITH DELAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE WILL WRITE RANDOM LENGTH RECORDS  FROM  0001  TO
*         7777  TIMES 40 OCTAL BY  READING  THE  REAL TIME CLOCK. EACH
*         RECORD WILL  CONTAIN  UNIQUE ADDRESSING INFORMATION (RECORD,
*         FILE, LENGTH, AND DELAY), THAT WILL BE  UTILIZED  IN  RANDOM
*         SHORT  READ TO  DETERMINE IF ALL DATA WRITTEN IS READ. DELAY
*         IS P5 OR RANDOM IF P5 IS EQUAL TO ZERO. 
* 
*         WRITING CONTINUES UNTIL *RECORD MAX* AND *FILE MAX* OR *EOT*
*         IS REACHED. AN EXIT IS THEN PERFORMED TO TCT77A TO READ  AND
*         COMPARE THE DATA WRITTEN. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. FILL OUTPUT BUFFER WITH SELECTED PATTERN.
*         3. RESERVE. 
*         4. REWIND.
*         5. SET DELAY BETWEEN BLOCKS WITH RANDOM OR P5 IF SELECTED.
*         6. SET PLUS WORDS WITH RANDOM OR P6 IF SELECTED.
*         7. SET WC TO RANDOM VALUE BETWEEN 1 AND 7777. 
*         8. FILL OUTPUT BUFFER WITH RANDOM PATTERN.
*         9. APPLY ADDRESS CODING.
*        10. RESERVE. 
*        11. WRITE SHORT PLUS WITH DELAY. 
*        12. GO TO STEP 18 IF *EOT*.
*        13. REPORT EC 200 IF STATUS ERROR. 
*        14. REPEAT STEPS 8-13 UNTIL *RECORD MAX* RECORDS WRITTEN.
*        15. ENDFILE. 
*        16. REPORT EC 122 IF NO *EOF* STATUS.
*        17. REPEAT STEPS 5-16 UNTIL *FILE MAX* FILES WRITTEN.
*        18. REPEAT MODULE OR EXIT TO TCT77A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. TCT77 - ERROR CODE = EEEE  AT LINE (EA) = LLLL.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = RANDOM DATA PATTERN FLAG. 
*         B3  = PATTERN FOR STORING.
*         B4  = DELAY COUNT BETWEEN BLOCKS. 
*         B5  = NUMBER OF WORDS TO DUP. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = NUMBER OF BITS TO DUP (8).
*         B9  = RANDOM SEED.
*         B10 = PLUS WORD TO TEST ODD BYTE. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
0  FORMAT TCT77 - RANDOM SHORT WRITE PLUS WITH DELAY -
2  FORMAT TCT77 - ERROR CODE = *OCT  AT LINE (EA) = *OCT
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT77 - ERRS=*DEC LOOPS=*DEC
15 FORMAT TCT77 - ERROR(S) IN MODULE = *DEC 
* 
   EQUATE FILEMK TO 20, EOT TO 10, ERROR TO 4070
* 
* --------MODULE INITIALIZATION 
* 
20 B15 = 77D                     *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE.
   B13 = 0                       *INITIALIZE ABORT COUNTER
* 
* --------MODULE TEST 
* 
26 B4 = P5
   B10 = P6 
* 
* --------REWIND TAPE 
* 
30 B7 = 0                        *NO MOTION CODE
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
* 
* --------FILL BUFFER 
* 
32 B9 = P7                       *RANDOM SEED 
   IF (P3.AND.4.NE.0) GOTO 34    *USE RANDOM SEED 
   B2 = 1                        *SET FLAG
   B9 = RT                       *USE RT CLOCK FOR SEED 
34 RANDOM TO OB FOR 500, START B9 
   IF (P5.EQ.0) B4 = RT          *SET DELAY COUNT 
   IF (P6.EQ.0) B10 = RT         *SET PLUS WORDS
36 WC = RT                       *GENERATE RANDOM WORD COUNT
   IF (WC.LT.1) GOTO 36 
40 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 40       *BUMP RECORD COUNT 
   IF (B2.EQ.0) GOTO 42          *RANDOM PATTERN NOT SELECTED 
*  RANDOM TO OB FOR 500, START RT 
* 
* --------ADDRESS CODING
* 
42 OB(1) = B0 
   OB(2) = B1 
   OB(3) = WC 
   OB(4) = B4.AND.777 
   OB(5) = B10.AND.37 
44 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .WC. SPECIFIED BY *P2*
* 
   B7 = 1                        *FORWARD WRITE MOTION CODE 
   B14 = 36                      *COMMAND INDEX FOR WRITE LONG
   WRITE SHORT PLUS B10 WITH DELAY B4, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
52 IF (SB(1).AND.EOT.NE.0) GOTO 60  *EOT DETECTED 
   IF (SB(1).AND.ERROR.EQ.0) GOTO 54  *NO ERROR DETECTED
   ERROR 2/200, GOSUB 70
54 IF (P9.EQ.0) GOTO 36          *WRITE TO EOT IF P9 ZERO 
   IF (B1.NE.P9) GOTO 36         *P9 RECORDS NOT DONE 
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------WRITE .EOF. 
* 
56 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   IF (P8.EQ.0) GOTO 32          *LOOP IF INFINITE FILE COUNT 
   IF (B0.LT.P8) GOTO 32         *P8 FILES NOT PROCESSED
   ENDFILE, ABT 74               *IF END WRITE SECOND EOF 
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74
   GOTO 62                       *IF END OF MODULE BUT NOT EOT
60 B14 = 2                       *COMMAND INDEX FOR ENDFILE 
   ENDFILE, ABT 74               *WRITE DOUBLE EOF
   ENDFILE, ABT 74
   IF (SB(1).AND.FILEMK.EQ.0) ERROR 2/122, GOSUB 70 
* 
* --------MODULE REPEAT/EXIT
* 
62 B6 = B6 + 1                   *LOOP COUNT
   IF (ES.AND.SL.EQ.0) GOTO 64   *IF NOT SCOPING
   MSG 14 (B13,B6) TO DISPLAY    *POST SCOPING MSG
   GOTO 30                       *RESTART 
64 IF (ES.AND.CM.NE.0) GOTO 30   *IF REPEAT MODULE/CONDITION
   IF (B13.EQ.0) GOTO 66         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE       *REPORT ERRORS 
66 EXIT TO 77A                   *NORMAL TERMINATION DO READ
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   RETURN                        *RETURN
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   RETURN                        *RETURN
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 30                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B13.LT.2) GOTO 30         *NOT SECOND TRY
   GOTO 64                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT77 - 
   MODULE TCT77A,DCART(46,47)LOCK   -  RANDOM SHORT READ PLUS TEST -
*** TCT77A  - RANDOM SHORT READ PLUS TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         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.
*         WT AND WTA ARE COMPARED WITH CALCULATED WORD COUNT FROM  P2.
*         THIS  SEQUENCE  CONTINUES  UNTIL RECORD/FILE MAX OR -EOT- IS
*         ENCOUNTERED. AT THIS TIME AN EXIT IS PERFORMED. 
* 
*         TCT77A (READ FORWARD) SUPPORTS REPEAT CONDITION BY  A  REWIND 
*         OF THE TAPE AND CONTINUING THE READ FORWARD.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE. 
*         3. REWIND.
*         4. RESERVE. 
*         5. READ FORWARD.
*         6. GO TO STEP 18 IF *EOT* STATUS. 
*         7. REPORT EC 207 IF *EOF* STATUS DETECTED AND  NOT  EXPECTED
*            (IF REQUESTED TO DO SO BY THE USER). 
*         8. REPORT EC 201 IF STATUS ERROR. 
*         9. REPORT EC 221 IF FILE COUNT ERROR (WORD 1 OF IB IN ERROR). 
*        10. REPORT EC 222 IF RECORD ERROR    (WORD 2 OF IB IN ERROR).
*        11. RELEASE IF DATA COMPARE SELECTED. OTHERWISE,GO TO STEP 15. 
*        12. GENERATE EXPECTED DATA PATTERN INTO OB.
*        13. ADD EXPECTED ADDRESS CODING TO OB. 
*        14. COMPARE IB TO OB. REPORT EC 105 IF ERROR.
*        15. REPEAT STEPS 4-14 FOR *RECORD MAX* RECORDS.
*        16. REPEAT STEPS 4-15 FOR *FILE MAX* FILES.
*        17. EXIT.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. TCT77A - ERROR CODE = *OCT  AT LINE (EA) = *OCT
*         3. -EC 105- DATA COMPARE ERROR. THE FIRST 400B WORDS (OR THE
*            WORD LENGTH IN PARAM -P2-), THAT WERE TRANSFERRED  DO NOT
*            COMPARE ALTHOUGH NO SUBSYSTEM ERRORS WERE REPORTED.
*         4. -EC 201- AN  UNEXPECTED  STATUS  BIT  APPEARED IN GENERAL
*            STATUS DURING A  -READ-  OPERATION.  NOTE  THAT  GENERAL 
*            STATUS WAS MASKED WITH LOGICAL PRODUCT 4070B.
*         5. -EC 207- A FM/TM WAS DETECTED DURING A  MAINTENANCE READ.
*            YOU  ARE  TO  NOTE  THAT  THIS  ERROR IS DEPENDENT ON THE
*            CONFIRMED PRESENCE OF A FM/TM.  NOTE THAT IF  *P4* = 4XXX
*            IS SET, THIS ERROR WILL BE REPORTED. 
*         6. -EC 221- INCORRECT  FILE  DETECTED  DURING A READ. 
*         7. -EC 222- INCORRECT  RECORD  HAS  BEEN  DETECTED  DURING A
*            READ.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = CURRENT FILE COUNT. 
*         B1  = CURRENT RECORD COUNT. 
*         B2  = PATTERNS FOR STORING. 
*         B3  = FM FLAG.
*         B4  = BUFFER LIMIT FOR DUP. 
*         B5  = WORDS TO COMPARE. 
*         B6  = LOOP COUNT. 
*         B7  = ACTION CODE FOR ERROR ISOLATION.
*         B8  = COMPARE CHECK FLAG. 
*         B9  = EOF FLAG FOR EOT. 
*         B12 = FILE MAX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97A - POST ABORT MESSAGE PROCESSOR.
*         TCT98A - ERROR CODE PROCESSOR.
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT77A - RANDOM SHORT READ PLUS TEST -
2  FORMAT TCT77A - ERROR CODE = *OCT  AT LINE (EA) = *OCT 
12 FORMAT TOTAL FILES = *DEC (D)  TOTAL RECORDS = *DEC (D)
14 FORMAT TCT77A - ERRS=*DEC LOOPS=*DEC 
15 FORMAT TCT77A ERROR(S) IN MODULE = *DEC
* 
   EQUATE ERROR TO 4010, FILEMK TO 20 
* 
* --------MODULE INITIALIZATION 
* 
20 MSG 0 TO DISPLAY,PRINT        *RUNNING MESSAGE 
   B12 = P8                      *FILE MAX MAINT MODE 
* 
* --------MODULE TEST 
* 
22 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------REWIND
* 
   B7 = 3                        *REWIND MOTION CODE
   B14 = 14                      *COMMAND INDEX FOR REWIND
   REWIND, ABT 74                *REWIND
   WC = 400                      *SET WC REG
   B0 = 0                        *CLEAR FILE COUNT
   B1 = 0                        *CLEAR RECORD COUNT
   B3 = 0                        *CLEAR FM/TM FLAG
24 B1 = B1 + 1                   *INCREMENT RECORD COUNT
   IF (B1.EQ.7777) GOTO 24       *BUMP RECORD COUNT 
   B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
* 
* --------READ FORWARD
* 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   MSG 12 (B0,B1) TO LINE 20     *UPDATE RECORDS/FILES WRITTEN
* 
* --------TEST STATUS 
* 
25 IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B9 = B9.AND.7776B             *SET EOF FLAG BACK TO EVEN 
32 IF (SB(1).AND.FILEMK.EQ.0) GOTO 40  *NO FM/TM
   IF (B3.EQ.1) GOTO 52          *FM/TM EXPECTED
   IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
34 B14 = 12                      *COMMAND INDEX FOR RES 
   RES P1, ABT 74                *RESERVE 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74                  *READ FORWARD
   IF (SB(1).AND.FILEMK.NE.0) GOTO 36  *FILEMARK DETECTED CHECK EOT 
   B14 = 1                       *COMMAND INDEX FOR BKSP
   BKSP, ABT 74 
   BKSP, ABT 74 
   B7 = 5                        *READ FORWARD CODE 
   B14 = 6                       *COMMAND INDEX FOR READ
   READ, ABT 74 
   IF (P4.AND.4000.EQ.0) ERROR 2/207, GOTO 70  *REPORT 207
   IF (IB(1).NE.B0) ERROR 2/221, GOTO 70  *FILE ERROR 
   IF (IB(2).NE.B1) ERROR 2/222, GOTO 70  *RECORD ERROR 
   GOTO 40                       *CONTINUE
36 IF (B9.AND.1.EQ.1) GOTO 56    *SECOND EOF INDICATES END OF TEST OR TA
   B9 = B9+1                     *INCREMENT EOF 
   GOTO 32                       *CHECK FOR EOT 
40 IF (SB(1).AND.ERROR.NE.0) ERROR 2/201, GOTO 70 
   IF (IB(3).RS.7D.NE.SB(42)) GOTO 41 
   B5 = IB(3).LS.5.AND.7740 
   B5 = B5 + IB(5)
   IF (WT.EQ.B5) GOTO 42          *NOT INCORRECT RECORD LENGTH
41 ERROR 2/213, GOTO 70           *INCORRECT RECORD LENGTH
* 
* --------COMPARE 
* 
42 IF (P3.AND.2.EQ.0) GOTO 52    *NO DATA COMPARE 
   B14 = 11                      *COMMAND INDEX FOR REL 
   REL, ABT 74                   *RELEASE 
   RANDOM TO OB FOR 500, START IB 
46 B5 = 400 
   OB(1) = B0 
   OB(2) = B1 
   OB(3) = IB(3)
   OB(4) = IB(4)
   OB(5) = IB(5)
   IF (WC.LT.B5) B5 = WC
   IF (WT.GT.B5) GOTO 50
   IF (SB(42).NE.0) GOTO 50 
   B5 = WT - 1
50 COMPARE IB TO OB FOR B5, ABT 64
52 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 24          *LOOP IF RECORD MAX IS ZERO
   IF (B1.LT.P9) GOTO 24         *LOOP RECORD MAX TIMES 
   B3 = 1                        *FM/TM FLAG
   B1 = 0                        *ZERO RECORD COUNT 
   B0 = B0 + 1                   *INCREMENT FILE COUNT
   IF (B12.EQ.0) GOTO 24         *FILE COUNT ZERO 
   IF (B0.LT.B12) GOTO 24        *LOOP FILEMAX TIMES
* 
* --------MODULE REPEAT/EXIT
* 
56 B6 = B6 + 1
   IF (ES.AND.SL.EQ.0) GOTO 60   *NOT SCOPING 
57 MSG 14(B13,B6) TO DISPLAY
   GOTO 22
60 IF (ES.AND.CM.NE.0) GOTO 22   *IF REPEAT CONDITION OR MODULE 
   IF (B13.EQ.0) GOTO 62         *NO ERRORS 
   MSG 15 (B13) TO DAYFILE
62 GOTO 77                       *END THE MODULE
* 
* --------PROCESS MODULE DETECTED ERRORS
* 
64 ERROR 2/105                   *DATA COMPARE ERROR
   B8 = 1                        *SET COMPARE CHECK FLAG
70 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 71   *SCOPE LOOP NOT SELECTED 
   MSG 14 (B13,B6) TO DISPLAY    *ERROR MESSAGE 
   GOTO 52                       *CONTINUE TESTING
71 MSG EM(EC,EA) TO LINE 1       *ERROR CODE MESSAGE
72 CALL 98A                      *ERROR CODE PROCESSOR
   MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   IF (B8.EQ.0) GOTO 42          *COMPARE 
   B8 = 0 
   GOTO 52                       *CONTINUE TESTING
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
74 B13 = B13 + 1                 *BUMP ERROR COUNT
   IF (ES.AND.SL.EQ.0) GOTO 75   *SCOPE LOOP NOT SELECTED 
   GOTO 57                       *RESTART 
75 CALL 97A                      *POST ABORT MESSAGE
76 MSG 0 TO DISPLAY              *REPLACE RUN MESSAGE 
   GOTO 56                       *ABNORMAL TERMINATION
77 END 20 
COMPILE   - TCT77A -
   MODULE TCT97A,DCART(46,47)LOCK  -  DISPLAY CMD ABORT MESSAGES -
*** TCT97A - DISPLAY COMMAND ABORT MESSAGES 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         MODULE TCT97A CAN BE CALLED BY ANY TEST MODULE THAT MAKES UP
*         TCT. TCT97A WILL POST B14 MESSAGE WHICH IS THE COMMAND INDEX. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B14 = COMMAND MESSAGE INDEX.
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97F - STATUS ANALYSIS MODULE.
* 
* --------DATA DIVISION 
* 
* 
0  FORMAT TCT - CARTRIDGE TAPE SUBSYSTEM TEST 
1  FORMAT TCT*D - ABORT ON .BKSP. COMMAND - 
2  FORMAT TCT*D - ABORT ON .ENDFILE. COMMAND -
3  FORMAT TCT*D - ABORT ON .ERASE. COMMAND
4  FORMAT TCT*D - ABORT ON .FSPACE. COMMAND - 
5  FORMAT TCT*D - ABORT ON .LOCATE BLOCK. COMMAND - 
6  FORMAT TCT*D - ABORT ON .READ. COMMAND - 
7  FORMAT TCT*D - ABORT ON .READ BLOCK ID. COMMAND -
10 FORMAT TCT*D - ABORT ON .READ BUFFERED LOG. COMMAND -
11 FORMAT TCT*D - ABORT ON .REL. COMMAND -
12 FORMAT TCT*D - ABORT ON .RES. COMMAND -
13 FORMAT TCT*D - ABORT ON .RESET. COMMAND -
14 FORMAT TCT*D - ABORT ON .REWIND. COMMAND - 
30 MSG 0 TO LINE 0               *TEST HEADER MESSAGE 
   IF (EM.LT.100) GOTO 71        *NO DRIVER ERROR 
   IF (B14.GT.14) EXIT TO 97B    *PROCESS ABORTS GT 20B 
   MSG B14 (B15)TO LINE 1        *POST COMMAND ABORT
   MSG EM (EC,EA) TO LINE 2      *PRODUCT OVERLAY ERROR MESSAGE 
71 EXIT TO 97F                   *STATUS ANALYSIS 
76 END 30 
COMPILE   - TCT97A -
   MODULE TCT97B,DCART(46,47)LOCK  -  DISPLAY CMD ABORT MESSAGES -
*** TCT97B - DISPLAY COMMAND ABORT  MESSAGES
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         MODULE TCT97B IS EXITED TO FROM TCT97A IF ABORT MESSAGES ARE
*         GREATER THAN 20.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B14 = COMMAND MESSAGE INDEX.
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97F - STATUS ANALYSIS MODULE.
* 
* --------DATA DIVISION 
* 
* 
15 FORMAT TCT*D - ABORT ON .STATUS. COMMAND - 
16 FORMAT TCT*D - ABORT ON .STATUS GENERAL. COMMAND - 
17 FORMAT TCT*D - ABORT ON .STATUS SENSE. COMMAND - 
20 FORMAT TCT*D - ABORT ON .SYNCHRO. COMMAND -
22 FORMAT TCT*D - ABORT ON .WRITE. COMMAND -
23 FORMAT TCT*D - ABORT ON .WRITE LONG. COMMAND - 
24 FORMAT TCT*D - ABORT ON .WRITE DOUBLE LONG. COMMAND -
25 FORMAT TCT*D - ABORT ON .UNLOAD. COMMAND - 
26 FORMAT TCT*D - ABORT ON .SEARCH FM FWD. COMMAND -
27 FORMAT TCT*D - ABORT ON .SEARCH FM REV. COMMAND -
30 FORMAT TCT*D - ABORT ON .WRITE SHORT. COMMAND -
31 FORMAT TCT*D - ABORT ON .WRITE QUAD LONG. COMMAND -
32 FORMAT TCT*D - ABORT ON .WRITE QUAD DOUBLE LONG. COMMAND - 
33 FORMAT TCT*D - ABORT ON .EXECUTE CCC ROM DIAG. COMMAND - 
34 FORMAT TCT*D - ABORT ON .WRITE SHORT WITH DELAY. CMD - 
35 FORMAT TCT*D - ABORT ON .WRITE LONG WITH DELAY. COMMAND -
36 FORMAT TCT*D - ABORT ON .WRITE SHORT PLUS W DELAY. CMD - 
40 IF (EM.LT.100) GOTO 71        *NO DRIVER ERROR 
   MSG B14 (B15)TO LINE 1        *POST COMMAND ABORT
   MSG EM (EC,EA) TO LINE 2      *PRODUCT OVERLAY ERROR MESSAGE 
71 EXIT TO 97F                   *STATUS ANALYSIS 
76 END 40 
COMPILE   - TCT97B -
   MODULE TCT97F,DCART(46,47)LOCK  -  STATUS ANALYSIS - 
*** TCT97F - TCT971, TCT981 - TCT988 - STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*        TCT97F CAN BE ENTERED FROM ANY TEST MODULE THAT MAKES UP TCT,
*        OR  FROM MODULES  TCT98A  -  TCT98I  (ERROR  CODE  PROCESSING
*        MODULES).  TCT97F WILL  SAVE  THE  BA, AND B REGISTERS IN IB.
*        TCT97F ASSUMES THAT THE STATUS BUFFER CONTAINS CURRENT STATUS
*        FROM THE DEVICE AND IS ASSOCIATED WITH  THE  CURRENT FAILURE.
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
20 IF (B7.EQ.7777) GOTO 40       *IF ENTERED FROM TCT98A-G
   IB(417B) = BA
   IB(420B) = B0                 *SAVE REGISTERS
   IB(421B) = B1
   IB(422B) = B2
   IB(423B) = B3
   IB(424B) = B4
   IB(425B) = B5
   IB(426B) = B6
   IB(427B) = B7
   IB(430B) = B8                 *SAVE REGISTERS
   IB(431B) = B9
   IB(432B) = B10 
   IB(433B) = B11 
   IB(434B) = B12 
   IB(435B) = B13 
   IB(436B) = B14 
   IB(437B) = B15 
   B7 = 7777B                    *FLAG REGISTERS SAVED
   B6 = 3                        *SET LINE NUMBER TO 3
40 EXIT TO 97H                   *STATUS ANALYZER 
   END 20 
COMPILE   - TCT97F -
   MODULE TCT97H,DCART(46,47)LOCK  -  POST STATUS AND REGISTERS - 
*** TCT97H - POST STATUS AND REGISTERS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT97H IS ENTERED  FROM  TCT97F  AND  ASSUMES THAT STATUS IS
*         ASSOCIATED  WITH  THE  CURRENT FAILURE. 
* 
*         IT ALSO ASSUMES THAT REGISTER  B7 CONTAINS THE CURRENT  CODE
*         DESCRIBING WHAT TEST ACTION WAS IN PROGRESS AT THE  TIME  OF
*         THE  FAILURE.  A  BREAKDOWN  OF BIT  MEANINGS  IN  B7  IS AS
*         FOLLOWS - 
* 
*          X2XX = IGNORE EARLY READ AFTER WRITE EOP STATUS
*          X4XX = IGNORE DATA INTEGRITY STATUS
*          X6XX = IGNORE EARLY EOP AND DATA INTEGRITY STATUS
* 
*          XXX0 = NO MOTION 
*          XXX1 = FWD WRITE MOTION
*          XXX2 = NOT USED
*          XXX3 = REWIND MOTION 
*          XXX4 = NO MOTION (NOT USED)
*          XXX5 = FWD READ MOTION 
*          XXX6 = REV READ MOTION 
*          XXX7 = REWIND (NOT USED) 
* 
*         TCT97H WILL  ADD  9  LINES  OF INFORMATION TO THE PP DISPLAY
*         CONCERNING REGISTER AND BUFFER CONTENTS AT THE TIME  OF  THE
*         CURRENT FAILURE. IT WILL THEN START A SYSTEMATIC ANALYSIS OF
*         THE STATUS BUFFER TO DETERMINE THE MOST SERIOUS  ERROR  THAT
*         EXISTS.  EXITS WILL BE MADE TO OTHER SUBMODULES TO ASSIST IN
*         THIS ANALYSIS BASED ON THE CURRENT CODE IN REGISTER  B7  AND
*         WHAT  STATUS  EXISTS  IN  THE  STATUS BUFFER.  THE FOLLOWING
*         BREAKDOWN  DOCUMENTS  THE  PRIMARY PURPOSE  OF  EACH  STATUS
*         ANALYSIS MODULE.
* 
* 
*          TCT97F - SAVE REGISTERS
*          TCT97H - POST STATUS AND REGISTERS 
*          TCT97I - POST DATA ERRORS
*          TCT97J - UNIT STATUS ANALYSIS
*          TCT97L - LOG DATA STATUS ANALYSIS
*          TCT97N - STATUS ANALYSIS WORD 25 EC 170
*          TCT97P - STATUS ANALYSIS WORD 25 EC 171
*          TCT970 - STATUS ANALYSIS WORD 2 OF GENERAL STATUS
*          TCT971 - STATUS ANALYSIS WORD 2 OF GENERAL STATUS
*          TCT972 - SENSE BYTE STATUS ANALYSIS
*          TCT973 - TAPE DRIVE ERROR STATUS ANALYSIS
*          TCT974 - READ ERROR FORMAT STATUS ANALYSIS 
*          TCT975 - READ ERROR FORMAT STATUS ANALYSIS 
*          TCT976 - INTERFACE ERROR STATUS ANALYSIS 
*          TCT977 - WRITE/BUFFER/DMA ERROR STATUS ANALYSIS
*          TCT978 - WRITE/BUFFER/DMA ERROR STATUS ANALYSIS
*          TCT979 - BLOCK ID MISCOMPARE/DEFAULT ERROR STATUS ANALYSIS 
* 
*         WHEN THE ANALYSIS IS COMPLETE,MODULE TCT970 OR  TCT971  WILL
*         TAKE A PICTURE OF THE FAILURE DATA AND HALT(IF STOP ON ERROR
*         IS SELECTED). AFTER A -GO- FROM THE USER,  A CHECK  IS  MADE
*         TO  INSURE THAT THE ADAPTER IS FUNCTIONAL (RESERVE)  AND  IF
*         NOT,  A  RESET  COMMAND  IS  EXECUTED  TO MASTER  CLEAR  THE
*         ADAPTER.  REGISTERS  ARE RESTORED AND CONTROL IS RETURNED TO
*         THE MODULE THAT DETECTED THE  FAILURE.   (NOTE  THAT  BEFORE
*         RETURNING,  THE  DISPLAY IS BLANKED TO ERASE THE INFORMATION
*         CONCERNING THE FAILURE).
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT  CH=*OCT EQ=*OCT UN=*OCT DC=*OCT  ERROR COUNT=*OCT
2  FORMAT  LF=*OCT LMF=*OCT LSF=*OCT LMSF=*OCT  RETRIES=*OCT
3  FORMAT  FILE=*OCT  RECORD=*OCT  WC=*OCT  WT=*OCT*OCT 
4  FORMAT  P0-P4   =*OCT *OCT *OCT *OCT *OCT
5  FORMAT  P5-P9   =*OCT *OCT *OCT *OCT *OCT
6  FORMAT  OB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
7  FORMAT  IB(0-7) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
10 FORMAT  B0-B7   =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
11 FORMAT  B8-B15  =*OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
12 FORMAT  GENERAL STATUS   LAST=*OCT *OCT   FIRST=*OCT *OCT
13 FORMAT  BLOCK ID  1ST=*OCT *OC*OCT   2ND=*OCT *OC*OCT
14 FORMAT            SUBSYSTEM STATUS (OCTAL) 
15 FORMAT  DS(1-7)  =*OCT *OCT *OCT *OCT *OCT *OCT *OCT 
16 FORMAT  DS(8-14) =*OCT *OCT *OCT *OCT *OCT *OCT *OCT 
17 FORMAT  DS(15-21)=*OCT *OCT *OCT *OCT *OCT *OCT *OCT 
20 FORMAT  DS(22-26)=*OCT *OCT *OCT *OCT *OCT 
21 FORMAT              SENSE BYTE STATUS IN HEX 
22 FORMAT   SENSE BYTE 0-7  = *H  *H  *H  *H  *H  *H  *H  *H
23 FORMAT   SENSE BYTE 8-15 = *H  *H  *H  *H  *H  *H  *H  *H
24 FORMAT   SENSE BYTE 16-23= *H  *H  *H  *H  *H  *H  *H  *H
25 FORMAT   SENSE BYTE 24-31= *H  *H  *H  *H  *H  *H  *H  *H
26 FORMAT       FSC TAPE SUBSYSTEM ADAPTER INFORMATION
27 FORMAT       WORDS(23-26) = *OCTB *OCTB *OCTB *OCTB
* 
40 IF (B7.NE.7777B) GOTO 44      *NOT COMING FROM REGISTER STORE
   B7 = IB(427B)                 *RELOAD B7 
44 MSG 1 (SB(37),SB(40),SB(41),DC,IB(435)) TO LINE B6 
   B6 = B6 + 1
   MSG 2 (LF,SB(54),SB,SB(55),SB(43)) TO LINE B6
   B6 = B6 + 1
   MSG 3 (IB(420),IB(421),WC,SB(42),WT) TO LINE B6
47 B6 = B6 + 1
   MSG 4 (P0,P1,P2,P3,P4) TO LINE B6
   B6 = B6 + 1
   MSG 5 (P5,P6,P7,P8,P9) TO LINE B6
   B6 = B6 + 1
   MSG 6 8 WORDS FROM OB TO LINE B6 
   B6 = B6 + 1
   MSG 7 8 WORDS FROM IB TO LINE B6 
   B6 = B6 + 1
   MSG 10 8 WORDS FROM IB(420B) TO LINE B6
   B6 = B6 + 1
   MSG 11 8 WORDS FROM IB(430B) TO LINE B6
   B6 = B6 + 1
   MSG 12 (SB(1),SB(2),SB(35),SB(36)) TO LINE B6
   B6 = B6 + 1
   B8 = SB(44).RS.4 
   B9 = SB(45).RS.4 
   B10 = SB(45).AND.17.LS.8 
   B11 = SB(46).RS.4
   B10 = B10 + B11
   B11 = SB(50).RS.4
   B12 = SB(51).RS.4
   B13 = SB(51).AND.17.LS.8 
   B14 = SB(52).RS.4
   B13 = B13 + B14
   MSG 13 (B8,B9,B10,B11,B12,B13) TO LINE B6
   B6 = B6 + 1
   IF (EC.NE.105B) GOTO 50       *IF NOT DATA COMPARE ERROR 
   EXIT TO 97I                   *DATA COMPARE ERROR PROCESSOR
50 IF (P0.AND.7.EQ.0) GOTO 51 
   MSG 14 TO LINE B6
   B6 = B6 + 1
   MSG 15 7 WORDS FROM SB (3) TO LINE B6
   B6 = B6 + 1
   MSG 16 7 WORDS FROM SB (12) TO LINE B6 
   B6 = B6 + 1
   MSG 17 7 WORDS FROM SB (21) TO LINE B6 
   B6 = B6 + 1
   MSG 20 5 WORDS FROM SB (30) TO LINE B6 
   B6 = B6 + 1
51 MSG 21 TO LINE B6
   B6 = B6 + 1
   B14 = 440B 
   B0 = 0 
   B8 = 3 
52 B10 = SB(B8).RS.4
   B11 = SB(B8).AND.17B.LS.4
   B8 = B8 + 1
   B12 = SB(B8).RS.8
   B11 = B11 + B12
   B12 = SB(B8).AND.377B
   B8 = B8 + 1
   IB(B14) = B10
   B14 = B14 + 1
   IB(B14) = B11
   B14 = B14 + 1
   IB(B14) = B12
   B14 = B14 + 1
   GOTO 52 WHILE (B0+1.LE.12) 
   MSG 22 8 WORDS FROM IB (440) TO LINE B6
   B6 = B6 + 1
   MSG 23 8 WORDS FROM IB (450) TO LINE B6
   B6 = B6 + 1
   MSG 24 8 WORDS FROM IB (460) TO LINE B6
   B6 = B6 + 1
   MSG 25 8 WORDS FROM IB (470) TO LINE B6
   B6 = B6 + 1
   MSG 26 TO LINE B6
   B6 = B6 + 1
   MSG 27 4 WORDS FROM SB (31) TO LINE B6 
   B6 = B6 + 1
* 
* --------NO MICRO DIAG ERROR 
* 
64 IF (SB(1B).AND.5000B.NE.5000B) GOTO 66 
   IF (B7.AND.30B.EQ.20B) EXIT TO 980  *FIPS
66 EXIT TO 97J                   *CONTINUE UNIT ANALYSIS
   END 40 
COMPILE   - TCT97H -
   MODULE TCT97I,DCART(46,47)LOCK  -  POST DATA ERRORS -
*** TCT97I - POST DATA ERRORS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT97I IS  ENTERED  FROM  TCT97H  AND  POSTS DATA ERRORS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
30 FORMAT              DATA ERROR(S)
31 FORMAT   ERR.. WD=*OCT  AC=*OCT  EX=*OCT  DIFF=*OCT
* 
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
40 MSG 30 TO LINE B6
   B8 = 400B                     *SET BUFFER SIZE 
   IF (WT.EQ.0) GOTO 50          *CHECK ONLY 400 WORDS
   IF (WT.LE.B8) B8 = WT
50 B6 = B6 + 1
   B5 = 0                        *INDEX TO BUFFERS
   B3 = B6 + 4                   *TERMINATING MESSAGE LINE
60 B4 = IB(B5).XOR.OB(B5) 
   IF (B4.EQ.0) GOTO 62          *IF WORDS COMPARE
   MSG 31(B5,IB(B5),OB(B5),B4) TO LINE B6 
   B6 = B6 + 1
62 B5 = B5 + 1                   *BUMP BUFFER INDEX 
   IF (B8-1.EQ.B5) GOTO 74       *IF ALL WORDS DONE 
   IF (B6.NE.B3) GOTO 60         *IF 4 ERRORS NOT REPORTED
74 PICTURE
   HALT 
   BLANK
76 EXIT TO 98Z                   *RELOAD REGISTERS
   END 40 
COMPILE   - TCT97I -
   MODULE TCT97J,DCART(46,47)LOCK  -  STATUS ANALYSIS - 
*** TCT97J - STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT97J  DOES  STATUS  ANALYSIS ON THE SECOND WORD OF GENERAL
*         STATUS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT97J  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT EC 0300 18 BIT TAPE NOT CONNECTED - SHOULD BE 
2  FORMAT EC 0323 TAPE UNIT NOT AT BOT AFTER A REWIND 
3  FORMAT EC 0328 TAPE UNIT NOT READY 
4  FORMAT EC 0400 CCC DETECTED CHANNEL PARITY ERROR ON WRITE
5  FORMAT EC 0401 CCC DETECTED MEMORY PARITY ERROR ON READ
6  FORMAT EC 0402 CCC DEADMAN TIMEOUT 
7  FORMAT EC 0403 CONTROL PACKAGE PARITY ERROR
10 FORMAT EC GS01 VALID ERROR CODE IN WORD 2 OF GS
11 FORMAT EC GS02 UNIT CHECK
12 FORMAT EC GS03 EQUIPMENT CHECK-DETAIL IN SENSE BYTES 0-31
13 FORMAT EC GS04 DATA CHECK - AN ERROR ON WRITE OR READ
14 FORMAT EC GS05 DEFERRED UNIT CHECK - ON EARLIER COMMAND
15 FORMAT EC GS06 ERROR CODE = *OCT 
16 FORMAT EC GS07 NO ERROR CODE IN GS WORD 2
* 
   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
* 
* --------NO CONNECT
* 
30 IF (SB(1B).AND.BIT8.EQ.0) ERROR 1/0, GOTO 56 
* 
* --------READY ERROR 
* 
36 IF (SB(1B).AND.BIT0.EQ.0) ERROR 3/0, GOTO 56 
40 IF (SB(1B).AND.BIT2.NE.0) GOTO 42  *IF BOT 
   IF (B7.AND.3.EQ.3) ERROR 2/0, GOTO 56  *REWIND-NOT AT BOT
* 
* --------READY ERROR 
* 
42 IF (SB(1B).AND.BIT0.EQ.0) ERROR 3/0, GOTO 56 
   B5 = 110 
   IF (SB(2B).AND.BIT11.NE.0) GOSUB 70
   B5 = 111 
   IF (SB(2B).AND.BIT10.NE.0) GOSUB 70
   B5 = 112 
   IF (SB(2B).AND.BIT9.NE.0) GOSUB 70 
   B5 = 113 
   IF (SB(2B).AND.BIT8.NE.0) GOSUB 70 
   B5 = 114 
   IF (SB(2B).AND.BIT7.NE.0) GOSUB 70 
   B5 = 104 
   IF (SB(32B).AND.BIT6.NE.0) GOSUB 70
   B5 = 105 
   IF (SB(32B).AND.BIT5.NE.0) GOSUB 70
   B5 = 106 
   IF (SB(32B).AND.BIT4.NE.0) GOSUB 70
   B5 = 107 
   IF (SB(32B).AND.BIT3.NE.0) GOSUB 70
   GOTO 60                       *CONTINUE ANALYSIS 
* 
* ------POST PROBLEM DETECTION CODE AND MESSAGE---- 
* 
56 BA = B7.AND.3 + EC            *FORM ERROR CODE 
   MSG EM(BA) TO LINE B6
   B6 = B6 + 1                   *BUMP LINE NUMBER
60 IF (SB(2B).AND.177.NE.0) BA = SB(2).AND.177
   IF (BA.EQ.0) MSG 16 (BA) TO LINE B6
   IF (BA.EQ.0) B6 = B6 + 1 
   IF (SB(2B).AND.177B.GT.55B) GOTO 62  *ERROR .GT. 54B 
   EXIT TO 970                   *ENTER EC DS PROCESSOR 
62 EXIT TO 971                   *ENTER EC DS PROCESSOR 
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT97J -
   MODULE TCT97L,DCART(46,47)LOCK  -  LOG DATA STATUS ANALYSIS -
*** TCT97L - LOG DATA STATUS ANALYSIS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO STATUS ANALYSIS ON LOG DATA SENSE BYTE INFORMATION.
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT97L IS EXITED TO FROM TCT972. MODULE TCT97L DOES ANALYSIS
*         ON THE SENSE BYTES IN THE STATUS BUFFER.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT97L  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT                   LOG DATA
2  FORMAT             TEMPORARY DATA CHECKS 
3  FORMAT            READ = *H   WRITE = *H 
4  FORMAT   BLOCKS CORRECTED    READ = *H  WRITE = *H 
5  FORMAT       TEMPORARY CONTROL UNIT ERRORS = *H
6  FORMAT  BYTES PROCESSED   READ = *H*H  WRITE = *H*H
7  FORMAT   BLOCKS PROCESSED  READ = *HE   WRITE = *HE
10 FORMAT     TEMPORARY DATA CHECKS W/O HARDWARE IND
11 FORMAT            READ = *H   WRITE = *H 
12 FORMAT            ERASE GAP COUNTS = *H
13 FORMAT         TEMPORARY DRIVE ERRORS = *H 
14 FORMAT         CONTROL UNIT EC LEVEL = *H
15 FORMAT      CONTROL UNIT SERIAL NUMBER *H*H*H
16 FORMAT        READ RECOVERY RETRY COUNT = *H 
* 
   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 B0 = 10
   MSG 1 TO LINE B6              *LOG MESSAGE 
   B6 = B6 + 1
   MSG 2 TO LINE B6              *TEMPORARY MSG 
   B6 = B6 + 1
   B1 = SB(B0).AND.377B 
   B0 = B0 + 1
   B2 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B3 = B3 + B4 
   MSG 3 (B1,B3) TO LINE B6      *READ, WRITE 
   B6 = B6 + 1
   B1 = SB(B0).AND.377B 
   B0 = B0 + 1
   B2 = SB(B0).RS.4 
   MSG 4 (B1,B2) TO LINE B6      *BLOCKS CORRECTED
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   MSG 5 (B1) TO LINE B6         *TEMPORARY CONTROL UNIT ERRORS 
   B6 = B6 + 1
   B1 = SB(B0).AND.377B 
   B0 = B0 + 1
   B2 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B3 = SB(B0).RS.8 
   B3 = B3 + B4 
   B4 = SB(B0).AND.377B 
   MSG 6 (B1,B2,B3,B4) TO LINE B6  *BYTES PROCESSED 
   B6 = B6 + 1
   B0 = B0 + 1
   B1 = SB(B0).RS.4 
   B2 = SB(B0+5).AND.740.RS.4 
   B3 = SB(B0).AND.17.LS.4
   B4 = SB(B0).RS.8 
   B3 = B3 + B4 
   B5 = SB(B0+5).AND.740.RS.4 
   B1 = B1.LS.4 
   B1 = B1 + B2 
   B2 = B3 + B4 
   B2 = B2.LS.4 
   B2 = B2 + B5 
   MSG 7 (B1,B2) TO LINE B6      *BLOCKS PROCESSED
   B6 = B6 + 1
   B0 = B0 + 1
   B1 = SB(B0).AND.17.LS.4
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   MSG 10 TO LINE B6             *TEMP DATA CHECKS W/O HDWR 
   B6 = B6 + 1
   MSG 11 (B1,B2) TO LINE B6     *READ/WRITE
   B6 = B6 + 1
   B0 = B0 + 1
   B1 = SB(B0).RS.4 
   MSG 12 (B1) TO LINE B6        *ERASE GAP COUNTS
   B6 = B6 + 1
   B1 = SB(B0).AND.17.LS.4
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   MSG 13 (B1) TO LINE B6        *TEMPORARY DRIVE ERRORS
   B6 = B6 + 1
   B0 = B0 + 1
   B1 = SB(B0).RS.10D 
   MSG 14 (B1) TO LINE B6        *CONTROL UNIT EC LEVEL 
   B6 = B6 + 1
   B1 = SB(B0).AND.777B.RS.4
   B2 = SB(B0).AND.17.LS.4
   B0 = B0 + 1
   B3 = SB(B0).RS.8 
   B2 = B2 + B3 
   B3 = SB(B0).AND.377B 
   MSG 14 (B1,B2,B3) TO LINE B6  *CONTROL UNIT SERIAL NUMBER
   B6 = B6 + 1
   B0 = B0 + 1
   B1 = SB(B0).RS.4 
   MSG 14 (B1) TO LINE B6        *READ RECOVERY RETRY COUNT 
   B6 = B6 + 1
60 PICTURE                       *POST ERRORS 
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
77 END 30 
COMPILE   - TCT97L -
   MODULE TCT97N,DCART(46,47)LOCK  -  STATUS ANALYSIS WORD 25 - 
*** TCT97N - STATUS ANALYSIS WORD 25
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO STATUS ANALYSIS ON DETAILED STATUS IN WORD 25 OF DETAILED
*         STATUS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT97N  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT EC FS01 TIMEOUT ON FIPS TRANSFER
2  FORMAT EC FS02 ADDRESS MISCOMPARE ON SELECT SEQUENCE 
3  FORMAT EC FS03 NO REQUEST IN DURING POLLING SEQUENCE 
4  FORMAT EC FS04 SELECT-IN RECEIVED ON A SELECT SEQUENCE 
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
30 B0 = 33                       *WORD 33 OF SB 
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 B5 = 101 
   IF (SB(B0).AND.BIT3.NE.0) GOSUB 70  *TIMEOUT ON FIPS XFER
   B5 = 102 
   IF (SB(B0).AND.BIT2.NE.0) GOSUB 70  *ADDRESS MISCOMPARE ON SEL SEQ 
   B5 = 103 
   IF (SB(B0).AND.BIT1.NE.0) GOSUB 70  *NO REQ IN DURING A POLLING SEQ
   B5 = 104 
   IF (SB(B0).AND.BIT0.NE.0) GOSUB 70  *SEL IN RECD ON A SEL SEQ
42 EXIT TO 972                   *CONTINUE STATUS ANALYSIS
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT97N -
   MODULE TCT97P,DCART(46,47)LOCK  -  STATUS ANALYSIS WORD 25 - 
*** TCT97P - STATUS ANALYSIS WORD 25
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO STATUS ANALYSIS ON DETAILED STATUS IN WORD 25 OF DETAILED
*         STATUS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT97P  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT EC FD01 BUFFER UNDERRUN 
2  FORMAT EC FD02 MBL NOT MET ON READ 
3  FORMAT EC FD03 FLAG BIT DETECTED 
4  FORMAT EC FD04 TAG OR BUS OUT FAULT
5  FORMAT EC FD05 BUS IN PARITY ERROR 
6  FORMAT EC FD06 READ PATH PARITY ERROR
7  FORMAT EC FD07 MEMORY PARITY ERROR 
10 FORMAT EC FD10 WRITE PATH PARITY ERROR 
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
30 B0 = 33                       *WORD 33 OF SB 
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 B5 = 101 
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *BUFFER UNDERRUN 
   B5 = 102 
   IF (SB(B0).AND.BIT6.NE.0) GOSUB 70  *MBL NOT MET ON READ 
   B5 = 103 
   IF (SB(B0).AND.BIT5.NE.0) GOSUB 70  *FLAG BIT DETECTED 
   B5 = 104 
   IF (SB(B0).AND.BIT4.NE.0) GOSUB 70  *TAG OR BUS OUT FAULT
   B5 = 105 
   IF (SB(B0).AND.BIT3.NE.0) GOSUB 70  *BUS IN PARITY ERROR 
   B5 = 106 
   IF (SB(B0).AND.BIT2.NE.0) GOSUB 70  *READ PATH PARITY ERROR
   B5 = 107 
   IF (SB(B0).AND.BIT1.NE.0) GOSUB 70  *MEMORY PARITY ERROR 
   B5 = 110 
   IF (SB(B0).AND.BIT0.NE.0) GOSUB 70  *WRITE PATH PARITY ERROR 
42 EXIT TO 972                   *CONTINUE STATUS ANALYSIS
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT97P -
   MODULE TCT97Z,DCART(46,47)LOCK  -  BYTES 24-31 STATUS ANALYSIS - 
*** TCT97Z - BYTES 24-31 STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO  STATUS  ANALYSIS ON SENSE BYTES 24-31 WHEN BYTE 7 IS  19
*         OR 20: ALL FORMATS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT97Z IS EXITED TO FROM ANY MODULE THAT DOES ANALYSIS  WHEN
*         BYTE 7 IS 19 OR 20: ALL FORMATS.  TCT97Z  DOES  ANALYSIS  ON
*         SENSE BYTES 24 THROUGH 31.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT97Z  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT CHANNEL ADAPTERS *A*A*A*A INSTALLED 
2  FORMAT CHANNEL TYPE IS INTERLOCK 1.5 MB (NON-DATA-STREAM)
3  FORMAT CHANNEL TYPE IS 2 MB DATA-STREAMING 
4  FORMAT CHANNEL TYPE IS 3 MB DATA-STREAMING 
5  FORMAT TWO CONTROL UNIT CONFIGURATION
6  FORMAT 512K BUFFER 
7  FORMAT AUTOMATIC CARTRIDGE LOADER FEATURE
10 FORMAT CONTROL UNIT MICROCODE COMPOSITE LEVEL = *H 
11 FORMAT CONTROL UNIT MICROCODE EC LEVEL = *H
12 FORMAT CONTROL UNIT HARDWARE LEVEL = *H
13 FORMAT MODEL B11 TRANSPORTS
14 FORMAT MODEL B22 TRANSPORTS
15 FORMAT CONTROL UNIT EC LEVEL = *H
16 FORMAT CONTROL UNIT SERIAL NUMBER = *H*H*H 
17 FORMAT LOGICAL TRANSPORT ADDRESS = *H
20 FORMAT PHYSICAL TRANSPORT ADDRESS = *H 
21 FORMAT DATA BYTE COUNT TIMES 4096 (DECIMAL) = *H 
22 FORMAT HALT    -GO-  TO ANALYZE SENSE BYTES 24-31
24 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 (P0.AND.70.EQ.0) GOTO 60
   IF (B6.LE.21) GOTO 33         *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 22 TO LINE B6
   PICTURE
   HALT 
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 B0 = 23                       *WORD 23 OF SB SENSE BYTE 24 AND 25
   B5 = SB(B0).RS.8 
   B1 = 0                        *PRESET TO 0 FOR SO BLANK ALPHA CHAR 
   IF (B5.AND.10.EQ.10) B1 = 1   *SET CHANNEL ADAPTER A INSTALLED 
   B2 = 0                        *PRESET TO 0 FOR SO BLANK ALPHA CHAR 
   IF (B5.AND.4.EQ.4) B2 = 2     *SET CHANNEL ADAPTER B INSTALLED 
   B3 = 0                        *PRESET TO 0 FOR SO BLANK ALPHA CHAR 
   IF (B5.AND.2.EQ.2) B3 = 3     *SET CHANNEL ADAPTER C INSTALLED 
   B4 = 0                        *PRESET TO 0 FOR SO BLANK ALPHA CHAR 
   IF (B5.AND.1.EQ.1) B4 = 4     *SET CHANNEL ADAPTER D INSTALLED 
   MSG 1 (B1,B2,B3,B4) TO LINE B6  *CHANNEL ADAPTERS INSTALLED
   B6 = B6 + 1
   B1 = SB(B0).AND.377.RS.4      *CHANNEL TYPE
   IF (B1.EQ.1) MSG 2 TO LINE B6   *CHANNEL TYPE 1.5 MB 
   IF (B1.EQ.5) MSG 3 TO LINE B6   *CHANNEL TYPE 2 MB 
   IF (B1.EQ.6) MSG 4 TO LINE B6   *CHANNEL TYPE 3 MB 
   B6 = B6 + 1
   B5 = 105 
   IF (SB(B0).AND.BIT3.NE.0) GOSUB 70  *TWO CONTROL UNIT CONFIGURATION
   B0 = B0 + 1                   *WORD 24 OF SB SENSE BYTE 25 AND 26
   B5 = 106 
   IF (SB(B0).AND.BIT10.NE.0) GOSUB 70  *512K BUFFER
   B5 = 107 
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *AUTO CARTRIDGE
   B1 = SB(B0).AND.377.RS.4 
   MSG 10 (B1) TO LINE B6        *CU MICROCODE COMPOSITE LEVEL
   B6 = B6 + 1
   B1 = SB(B0).AND.17 
   MSG 11 (B1) TO LINE B6        *CU MICROCODE EC LEVEL 
   B6 = B6 + 1
   B0 = B0 + 1                   *WORD 25 OF SB SENSE BYTE 27 AND 28
   B1 = SB(B0).RS.10D 
   MSG 12 (B1) TO LINE B6        *CU HARDWARE LEVEL 
   B6 = B6 + 1
   B5 = 113 
   IF (SB(B0).AND.BIT9.EQ.0) GOSUB 70  *MODEL B11 TRANSPORTS
   B5 = 114 
   IF (SB(B0).AND.BIT9.NE.0) GOSUB 70  *MODEL B11 TRANSPORTS
   B1 = SB(B0).AND.400.RS.8 
   MSG 15 (B1) TO LINE B6        *CU HARDWARE LEVEL 
   B6 = B6 + 1
   B1 = SB(B0).AND.377.RS.4      *UPPER 4 BITS OF SN
   B2 = SB(B0).AND.17.LS.4       *NEXT 4 BITS OF SN 
   B0 = B0 + 1                   *WORD 26 OF SB SENSE BYTE 28 AND 29
   B3 = SB(B0).RS.8              *NEXT 4 BITS OF SN 
   B2 = B2 + B3                  *MIDDLE 8 BITS OF SN 
   B3 = SB(B0).AND.377           *LOWER 8 BITS OF SN
   MSG 16 (B1,B2,B3) TO LINE B6  *CU SERIAL NUMBER
   B6 = B6 + 1
   B0 = B0 + 1                   *WORD 27 OF SB SENSE BYTE 30 AND 31
   B1 = SB(B0).RS.8              *LOGICAL TRANSPORT ADDRESS 
   B2 = SB(B0).AND.377.RS.4      *PHYSICAL TRANSPORT ADDRESS
   MSG 17 (B1) TO LINE B6        *LOGICAL TRANSPORT ADDRESS 
   B6 = B6 + 1
   MSG 20 (B2) TO LINE B6        *PHYSICAL TRANSPORT ADDRESS
   B6 = B6 + 1
   B1 = SB(B0).AND.17.LS.4       *UPPER 4 BITS DATA BYTE COUNT
   B0 = B0 + 1                   *WORD 30 OF SB SENSE BYTE 31 
   B2 = SB(B0).RS.8              *LOWER 4 BITS DATA BYTE COUNT
   B1 = B1 + B2                  *ALL 8 BITS OF BYTE COUNT
   MSG 21 (B1) TO LINE B6        *BYTE COUNT
   B6 = B6 + 1
60 MSG 24 TO LINE B6
   B6 = B6 + 1
   PICTURE                       *POST ERRORS 
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT97Z -
   MODULE TCT970,DCART(46,47)LOCK  -  STATUS ANALYSIS - 
*** TCT970 - STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO  STATUS  ANALYSIS ON DETAILED STATUS IN WORD 2 OF GENERAL
*         STATUS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT970  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT EC DS001 UNIT OFF-LINE, NOT POWERED ON, NOT CABLED
2  FORMAT EC DS003 PHYSICAL END OF TAPE 
3  FORMAT EC DS004 FUNCTION REJECT, TAPE UNIT NOT READY 
4  FORMAT EC DS005 UNIT WENT FROM READY TO NOT READY
5  FORMAT EC DS006 WRITE NOT EXECUTED MISSING WRITE ENABLE
6  FORMAT EC DS007 UNIT NOT CAPABLE OF TAPES DENSITY
7  FORMAT EC DS010 OVER 8.8.INCHES OF BLANK TAPE
10 FORMAT EC DS012 UNABLE TO WRITE FROM BOT BAD TAPE
11 FORMAT EC DS030 BACKWARD MOTION ATTEMPTED AT BOT 
12 FORMAT EC DS032 CONNECT REJECT DUE TO UNIT BUSY
13 FORMAT EC DS033 CONNECT REJECT DUE TO CONTROLLER BUSY
14 FORMAT EC DS050 UNRECOGNIZED FUNCTION CODE 
15 FORMAT EC DS051 NO TAPE UNIT CONNECTED 
16 FORMAT EC DS052 NO FUNCTION PARAMETERS SENT
17 FORMAT EC DS053 ILLEGAL FUNCTION DURING CCR IDLE 
20 FORMAT EC DS054 CONTINUE FUNCTION WHEN CCR IDLE NOT ACTIVE 
21 FORMAT EC DS055 ILLEGAL FUNCTION IN BUSY RETRY 
22 FORMAT EC DS*OCT UNRECOGNIZED EC DSCODE
23 FORMAT --------------------------------------------------
24 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
60 IF (SB(1B).NE.7777B) GOTO 62  *IF STATUS RETURNED
   IF (SB(2B).NE.7777B) GOTO 62  *IF STATUS RETURNED
   GOTO 74                       *STATUS NOT RETURNED 
62 BA = SB(2B).AND.177B          *DS ERROR CODE 
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 23 TO LINE B6
   B6 = B6 + 1
   MSG 24 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 IF (BA.EQ.0) GOTO 72          *IF NO ERROR 
   IF (BA.EQ.1) ERROR 1/0, GOTO 70       *EC = 1
   IF (BA.EQ.3) ERROR 2/0, GOTO 70       *EC = 2
   IF (BA.EQ.4) ERROR 3/0, GOTO 70       *EC = 4
   IF (BA.EQ.5) ERROR 4/0, GOTO 70       *EC = 5
   IF (BA.EQ.6) ERROR 5/0, GOTO 70       *EC = 6
   IF (BA.EQ.7) ERROR 6/0, GOTO 70       *EC = 7
   IF (BA.EQ.10) ERROR 7/0, GOTO 70      *EC = 10 
   IF (BA.EQ.12) ERROR 10/0, GOTO 70     *EC = 12 
   IF (BA.EQ.30) ERROR 11/0, GOTO 70     *EC = 30 
   IF (BA.EQ.32) ERROR 12/0, GOTO 70     *EC = 32 
   IF (BA.EQ.33) ERROR 13/0, GOTO 70     *EC = 33 
   IF (BA.EQ.50) ERROR 14/0, GOTO 70     *EC = 50 
   IF (BA.EQ.51) ERROR 15/0, GOTO 70     *EC = 51 
   IF (BA.EQ.52) ERROR 16/0, GOTO 70     *EC = 52 
   IF (BA.EQ.53) ERROR 17/0, GOTO 70     *EC = 53 
   IF (BA.EQ.54) ERROR 20/0, GOTO 70     *EC = 54 
   IF (BA.EQ.55) ERROR 21/0, GOTO 70     *EC = 55 
   MSG 22(BA) TO LINE B6
   GOTO 71
70 MSG EM TO LINE B6
71 B6 = B6 + 1
72 EXIT TO 972
74 MSG 23 TO LINE B6
   B6 = B6 + 1
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 60 
COMPILE   - TCT970 -
   MODULE TCT971,DCART(46,47)LOCK  -  STATUS ANALYSIS - 
*** TCT971 - STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO  STATUS  ANALYSIS ON DETAILED STATUS IN WORD 2 OF GENERAL
*         STATUS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT971  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
2  FORMAT EC DS155 TIMEOUT ON EXPECTED FIPS-DI RESPONSE 
3  FORMAT EC DS156 TIMEOUT ON EXPECTED C170-DI RESPONSE 
4  FORMAT EC DS157 TIMEOUT ON EXPECTED REQUEST IN STAT
5  FORMAT EC DS160 FIPS ABNORMAL STATUS ON LOADING TRANS REG
11 FORMAT EC DS164 FIPS ABNORMAL STATUS ON SYS RESET COMMAND
12 FORMAT EC DS165 FIPS ABNORMAL END STAT ON SENSE COMMAND
13 FORMAT EC DS170 FIPS SEQUENCE ERROR. SEE WORD 25 OF DS.
14 FORMAT EC DS171 FIPS INTERFACE ERROR. SEE WORD 25 OF DS. 
15 FORMAT EC DS172 C170-DI CHANNEL PARITY ERROR 
16 FORMAT EC DS173 C170-DI MEMORY PARITY ERROR
17 FORMAT EC DS174 C170-DI CONTROL PACKAGE PARITY ERROR 
20 FORMAT EC DS175 C170-DI DEADMAN TIMER EXPIRED
21 FORMAT EC DS176 FIPS-DI UNDEFINED STATUS BIT ERROR 
22 FORMAT EC DS177 C170-DI UNDEFINED STATUS BIT ERROR 
23 FORMAT EC DS*OCT UNRECOGNIZED EC DSCODE
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
60 IF (SB(1B).NE.7777B) GOTO 62  *IF STATUS RETURNED
   IF (SB(2B).NE.7777B) GOTO 62  *IF STATUS RETURNED
   GOTO 74                       *STATUS NOT RETURNED 
62 BA = SB(2B).AND.177B          *DS ERROR CODE 
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 IF (BA.EQ.0) GOTO 72          *IF NO ERROR 
   IF (BA.EQ.155) ERROR 2/0, GOTO 70       *EC = 155
   IF (BA.EQ.156) ERROR 3/0, GOTO 70       *EC = 156
   IF (BA.EQ.157) ERROR 4/0, GOTO 70       *EC = 157
   IF (BA.EQ.160) ERROR 5/0, GOTO 70       *EC = 160
   IF (BA.EQ.164) ERROR 11/0, GOTO 70      *EC = 164
   IF (BA.EQ.165) ERROR 12/0, GOTO 70      *EC = 165
   IF (BA.EQ.170) ERROR 13/0, GOTO 70      *EC = 170
   IF (BA.EQ.171) ERROR 14/0, GOTO 70      *EC = 171
   IF (BA.EQ.172) ERROR 15/0, GOTO 70      *EC = 172
   IF (BA.EQ.173) ERROR 16/0, GOTO 70      *EC = 173
   IF (BA.EQ.174) ERROR 17/0, GOTO 70      *EC = 174
   IF (BA.EQ.175) ERROR 20/0, GOTO 70      *EC = 175
   IF (BA.EQ.176) ERROR 21/0, GOTO 70      *EC = 176
   IF (BA.EQ.177) ERROR 22/0, GOTO 70      *EC = 177
   MSG 23(BA) TO LINE B6
   GOTO 71
70 MSG EM TO LINE B6
71 B6 = B6 + 1
   IF (BA.EQ.170) EXIT TO 97N              *EC = 170
   IF (BA.EQ.171) EXIT TO 97P              *EC = 171
72 EXIT TO 972
74 MSG 24 TO LINE B6
   B6 = B6 + 1
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 60 
COMPILE   - TCT971 -
   MODULE TCT972,DCART(46,47)LOCK  -  SENSE BYTE STATUS ANALYSIS -
*** TCT972 - SENSE BYTE STATUS ANALYSIS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO STATUS ANALYSIS ON SENSE BYTE INFORMATION. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT972 IS EXITED TO FROM TCT971. MODULE TCT972 DOES ANALYSIS
*         ON THE FIRST 5 WORDS OF THE SENSE BYTES IN THE STATUS BUFFER. 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT972  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT EC SB01-COMMAND REJECT. 
2  FORMAT EC SB02-INTERVENTION REQUIRED.
3  FORMAT EC SB03-BUS OUT CHECK.
4  FORMAT EC SB04-EQUIPMENT CHECK.
5  FORMAT EC SB05-DATA CHECK. 
6  FORMAT EC SB06-OVERRUN.
7  FORMAT EC SB07 UNIT CHECK TIMING (DEFERRED UNIT CHECK).
10 FORMAT EC SB10 ASSIGNED ELSEWHERE BIT SET. 
11 FORMAT EC SB11 LOCATE BLOCK FUNCTION FAILED. 
12 FORMAT EC SB12 OUT OF SEQUENCE RECORD. 
13 FORMAT EC SB13 NOT CAPABLE-CANNOT READ FIRST DATA BLOCK. 
14 FORMAT   ERPA CODE = *H
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
30 B0 = 3                        *WORD 3 OF SB SENSE BYTE 0 AND 1 
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 B5 = 101 
   IF (SB(B0).AND.BIT11.NE.0) GOSUB 70  *COMMAND REJECT 
   B5 = 102 
   IF (SB(B0).AND.BIT10.NE.0) GOSUB 70  *INTERVENTION REQUIRED
   B5 = 103 
   IF (SB(B0).AND.BIT9.NE.0) GOSUB 70  *BUS OUT CHECK 
   B5 = 104 
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *EQUIPMENT CHECK 
   B5 = 105 
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *DATA CHECK
   B5 = 106 
   IF (SB(B0).AND.BIT6.NE.0) GOSUB 70  *OVER RUN
   B5 = 107 
   IF (SB(B0).AND.BIT5.NE.0) GOSUB 70  *UNIT CHECK TIMING BIT SET 
   B5 = 110 
   IF (SB(B0).AND.BIT4.NE.0) GOSUB 70  *ASSIGNED ELSEWHERE BIT SET
   B5 = 111 
   IF (SB(B0).AND.BIT3.NE.0) GOSUB 70  *LOCATE BLOCK FUNCTION FAILED
   B5 = 112 
   IF (SB(B0).AND.BIT0.NE.0) GOSUB 70  *OUT OF SEQUENCE RECORD
   B0 = B0+1                     *WORD 4 OF SB SENSE BYTE 1 AND 2 
   B5 = 113 
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *NOT CAPABLE BIT 
   B0 = B0+1                     *WORD 5 OF SB SENSE BYTE 3 AND 4 
   B1 = SB(B0).AND.7760.RS.4
   MSG 14 (B1) TO LINE B6        *ERPA CODE 
   B6 = B6 + 1
42 EXIT TO 973                   *CONTINUE STATUS ANALYSIS
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT972 -
   MODULE TCT973,DCART(46,47)LOCK  -  TAPE DRIVE ERROR STATUS ANALYSIS -
*** TCT973 - TAPE DRIVE ERROR STATUS ANALYSIS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO  STATUS  ANALYSIS ON SENSE BYTE INFORMATION IF TAPE DRIVE
*         ERROR FORMAT. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT973 IS EXITED TO FROM TCT972. MODULE TCT973 DOES ANALYSIS
*         ON THE SENSE BYTES IN THE STATUS BUFFER.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT973  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT              TAPE DRIVE FORMAT
2  FORMAT TCU ERP CODE = *H  TAPE DRIVE FAILING COMMAND = *H
3  FORMAT              FAULT SYMPTOM CODE 
4  FORMAT 1ST ERR = *H*H  2ND ERR = *H*H  LAST ERR = *H*H 
5  FORMAT   TAPE DRIVE FAILING COMMAND 2 = *H 
6  FORMAT TAPE DRIVE SECOND ERROR FSC = *H*H
7  FORMAT EC TD01 OPERATION INTERVENTION REQUIRED.
10 FORMAT EC TD02 LOAD CHECK. 
11 FORMAT EC TD03 VOLTAGE ERROR.
12 FORMAT EC TD04 HIGH TEMP.
14 FORMAT EC TD05 SERVO HARDWARE FAILURE. 
15 FORMAT EC TD06 UNIT CHECK. 
17 FORMAT EC TD07 NEEDS CLEANING. 
20 FORMAT EC TD07 NEEDS CLEANING. 
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
30 B0 = 7                        *WORD 7 OF SB SENSE BYTE 6 AND 7 
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 B1 = SB (B0).AND.17.LS.4 
   B0 = B0 + 1                   *WORD 10 OF SB SENSE BYTE 7 AND 8
   B2 = SB (B0).AND.7400.RS.8 
   B1 = B1 + B2                  *FORMAT CODE 
   IF (B1.EQ.41B) EXIT TO 97L    *LOG DATA MODULE 
   IF (SB(B0).AND.BIT7.EQ.0) GOTO 40
   IF (SB(B0).AND.BIT6.EQ.0) EXIT TO 976  *INTERFACE ERROR FORMAT 
   EXIT TO 977                   *WRITE/BUFFER/DMA ERROR FORMAT 
40 IF (SB(B0).AND.BIT6.EQ.0) GOTO 50
   EXIT TO 974                   *READ ERROR FORMAT 
50 IF (B1.EQ.0) GOTO 60          *NO CODE DO NOT ANALYZE
   B1 = SB(B0).AND.77B
   B0 = B0 + 1                   *WORD 11 OF SB SENSE BYTE 9 AND 10 
   B2 = SB(B0).RS.4 
   MSG 1 TO LINE B6              *TAPE DRIVE FORMAT 
   B6 = B6 + 1
   MSG 2 (B1,B2) TO LINE B6      *TCU ERP CODE/FAILING COMMAND
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1                   *WORD 12 OF SB SENSE BYTE 10 AND 11
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   B0 = B0 + 1                   *WORD 13 OF SB SENSE BYTE 12 AND 13
   B7 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1                   *WORD 14 OF SB SENSE BYTE 13 AND 14
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   B3 = B7
   B7 = SB(B0).AND.377B 
   B0 = B0 + 1                   *WORD 15 OF SB SENSE BYTE 15 AND 16
   B8 = SB(B0).RS.4 
   MSG 3 TO LINE B6              *FAULT SYMPTOM CODE
   B6 = B6 + 1
   MSG 4 (B1,B2,B3,B4,B7,B8) TO LINE B6  *1ST/2ND/LAST ERROR
   B6 = B6 + 1
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1                   *WORD 16 OF SB SENSE BYTE 16 AND 17
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   MSG 5 (B4) TO LINE B6         *TAPE DRIVE FAILING COMMAND
   B6 = B6 + 1
   B3 = SB(B0).AND.377B 
   B0 = B0 + 1                   *WORD 17 OF SB SENSE BYTE 18 AND 19
   B4 = SB(B0).RS.4 
   MSG 6 (B3,B4) TO LINE B6      *TAPE DRIVE SECOND ERROR FSC 
   B6 = B6 + 1
   B0 = B0 + 1                   *WORD 20 OF SB SENSE BYTE 19 AND 20
   B5 = 107 
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *OPERATOR INTERVENTION REQUIRED
   B5 = 110 
   IF (SB(B0).AND.BIT6.NE.0) GOSUB 70  *LOAD CHECK
   B5 = 111 
   IF (SB(B0).AND.BIT5.NE.0) GOSUB 70  *VOLTAGE ERROR 
   B5 = 112 
   IF (SB(B0).AND.BIT4.NE.0) GOSUB 70  *HIGH TEMP 
   B5 = 114 
   IF (SB(B0).AND.BIT0.NE.0) GOSUB 70  *SERVO HARDWARE FAILURE
   B0 = B0 + 2                   *WORD 22 OF SB SENSE BYTE 22 AND 23
   B5 = 115 
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *UNIT CHECK
   B5 = 117 
   IF (SB(B0).AND.BIT0.NE.0) GOSUB 70  *NEEDS CLEANING
   EXIT TO 97Z                   *CONTINUE PROCESSING 
60 MSG 24 TO LINE B6
   B6 = B6 + 1
   PICTURE                       *POST ERRORS 
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT973 -
   MODULE TCT974,DCART(46,47)LOCK  -  READ ERROR FORMAT STATUS ANALYSIS - 
*** TCT974 - READ ERROR FORMAT STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO  STATUS  ANALYSIS ON SENSE BYTE INFORMATION IF READ ERROR
*         FORMAT. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT974 IS EXITED TO FROM TCT972. MODULE TCT974 DOES ANALYSIS
*         ON THE SENSE BYTES IN THE STATUS BUFFER.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT974  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT              READ ERROR FORMAT
2  FORMAT PRS STATUS REGISTER = *H
3  FORMAT              FAULT SYMPTOM CODE 
4  FORMAT 1ST ERR = *H*H  2ND ERR = *H*H  LAST ERR = *H*H 
5  FORMAT   READ SEQUENCER PATTERN REGISTER = *H
6  FORMAT EC RE01 POSTAMBLE ERROR.
7  FORMAT EC RE02 FORMAT ERROR. 
10 FORMAT EC RE03 BUFFER PARITY ERROR.
11 FORMAT EC RE04 BUFFER XFER ERROR.
12 FORMAT EC RE05 READ SEQUENCE HARDWARE ERROR. 
13 FORMAT EC RE06 HARDWARE ERROR INTERRUPT. 
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
30 B0 = 10
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 B0 = B0 + 1
   B2 = SB(B0).RS.4 
   MSG 1 TO LINE B6              *READ ERROR FORMAT 
   B6 = B6 + 1
   MSG 2 (B2) TO LINE B6         *PSR STATUS REGISTER 
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   B0 = B0 + 1
   B7 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   B3 = B7
   B7 = SB(B0).AND.377B 
   B0 = B0 + 1
   B8 = SB(B0).RS.4 
   MSG 3 TO LINE B6              *FAULT SYMPTOM CODE
   B6 = B6 + 1
   MSG 4 (B1,B2,B3,B4,B7,B8) TO LINE B6  *1ST,2ND,LAST ERROR
   B6 = B6 + 1
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   MSG 5 (B4) TO LINE B6         *READ SEQUENCER PATTERN REG
   B6 = B6 + 1
   B5 = 106 
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *POSTAMBLE ERROR 
   B5 = 107 
   IF (SB(B0).AND.BIT6.NE.0) GOSUB 70  *FORMAT ERROR
   B5 = 110 
   IF (SB(B0).AND.BIT5.NE.0) GOSUB 70  *BUFFER PARITY ERROR 
   B5 = 111 
   IF (SB(B0).AND.BIT4.NE.0) GOSUB 70  *BUFFER XFER ERROR 
   B5 = 112 
   IF (SB(B0).AND.BIT3.NE.0) GOSUB 70  *READ SEQUENCE ERROR 
   B5 = 113 
   IF (SB(B0).AND.BIT2.NE.0) GOSUB 70  *HARDWARE ERROR INTERRUPT
   EXIT TO 975                   *PROCESS REST OF THE READ ERR
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 (B1) TO LINE B6 
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT974 -
   MODULE TCT975,DCART(46,47)LOCK  -  READ ERROR FORMAT STATUS ANALYSIS - 
*** TCT975 - READ ERROR FORMAT STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO  STATUS  ANALYSIS ON SENSE BYTE INFORMATION IF READ ERROR
*         FORMAT. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT975 IS EXITED TO FROM TCT972. MODULE TCT975 DOES ANALYSIS
*         ON THE SENSE BYTES IN THE STATUS BUFFER.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT975  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
14 FORMAT EC RE07 PRS ERROR.
15 FORMAT EC RE08 HARDWARE ERROR. 
16 FORMAT EC RE09 WRITE CHECK.
17 FORMAT EC RE10 CRC CHECK.
20 FORMAT EC RE11 UNCORRECTED ERROR.
21 FORMAT EC RE12 MULTIPLE TRACK ERROR. 
22 FORMAT EC RE13 CORRECTED DATA. 
23 FORMAT EC RE14 ERROR IN TRACK *DD
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
30 B0 = B0 + 1
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 B5 = 114 
   IF (SB(B0).AND.BIT10.NE.0) GOSUB 70  *PRS ERROR
   B5 = 115 
   IF (SB(B0).AND.BIT9.NE.0) GOSUB 70  *HARDWARE ERROR
   B5 = 116 
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *WRITE CHECK 
   B5 = 117 
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *CRC ERROR 
   B5 = 120 
   IF (SB(B0).AND.BIT6.NE.0) GOSUB 70  *UNCORRECTED ERROR 
   B5 = 121 
   IF (SB(B0).AND.BIT5.NE.0) GOSUB 70  *MULTIPLE TRACK ERROR
   B5 = 122 
   IF (SB(B0).AND.BIT4.NE.0) GOSUB 70  *CORRECTED DATA
   B5 = 123 
   B1 = 18D 
   IF (SB(B0).AND.BIT1.NE.0) GOSUB 70  *TRACK 18 ERROR
   B5 = 123 
   B1 = 17D 
   IF (SB(B0).AND.BIT0.NE.0) GOSUB 70  *TRACK 17 ERROR
   B0 = B0 + 1
   B5 = 123 
   B1 = 16D 
   IF (SB(B0).AND.BIT11.NE.0) GOSUB 70  *TRACK 16 ERROR 
   B5 = 123 
   B1 = 15D 
   IF (SB(B0).AND.BIT10.NE.0) GOSUB 70  *TRACK 15 ERROR 
   B5 = 123 
   B1 = 14D 
   IF (SB(B0).AND.BIT9.NE.0) GOSUB 70  *TRACK 14 ERROR
   B5 = 123 
   B1 = 13D 
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *TRACK 13 ERROR
   B5 = 123 
   B1 = 12D 
   IF (SB(B0).AND.BIT5.NE.0) GOSUB 70  *TRACK 12 ERROR
   B5 = 123 
   B1 = 11D 
   IF (SB(B0).AND.BIT4.NE.0) GOSUB 70  *TRACK 11 ERROR
   B5 = 123 
   B1 = 10D 
   IF (SB(B0).AND.BIT3.NE.0) GOSUB 70  *TRACK 10 ERROR
   B5 = 123 
   B1 = 9D
   IF (SB(B0).AND.BIT2.NE.0) GOSUB 70  *TRACK 9 ERROR 
   B5 = 123 
   B1 = 8D
   IF (SB(B0).AND.BIT1.NE.0) GOSUB 70  *TRACK 8 ERROR 
   B5 = 123 
   B1 = 7D
   IF (SB(B0).AND.BIT0.NE.0) GOSUB 70  *TRACK 7 ERROR 
   B0 = B0 + 1
   B5 = 123 
   B1 = 6D
   IF (SB(B0).AND.BIT9.NE.0) GOSUB 70  *TRACK 6 ERROR 
   B5 = 123 
   B1 = 5D
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *TRACK 5 ERROR 
   B5 = 123 
   B1 = 4D
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *TRACK 4 ERROR 
   B5 = 123 
   B1 = 3D
   IF (SB(B0).AND.BIT6.NE.0) GOSUB 70  *TRACK 3 ERROR 
   B5 = 123 
   B1 = 2D
   IF (SB(B0).AND.BIT5.NE.0) GOSUB 70  *TRACK 2 ERROR 
   B5 = 123 
   B1 = 1D
   IF (SB(B0).AND.BIT4.NE.0) GOSUB 70  *TRACK 1 ERROR 
   EXIT TO 97Z                   *CONTINUE PROCESSING 
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 (B1) TO LINE B6 
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT975 -
   MODULE TCT976,DCART(46,47)LOCK  -  INTERFACE ERROR STATUS ANALYSIS - 
*** TCT976 - INTERFACE ERROR STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO  STATUS  ANALYSIS ON SENSE BYTE INFORMATION IF  INTERFACE
*         ERROR FORMAT. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT976 IS EXITED TO FROM TCT972. MODULE TCT976 DOES ANALYSIS
*         ON THE SENSE BYTES IN THE STATUS BUFFER.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT976  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT              INTERFACE ERROR
3  FORMAT              FAULT SYMPTOM CODE 
4  FORMAT 1ST ERR = *H*H  2ND ERR = *H*H  LAST ERR = *H*H 
5  FORMAT EC IF01 DEVICE ALERT INTERRUPT. 
6  FORMAT EC IF02 RPI INTERRUPT.
7  FORMAT EC IF03 PARITY ERROR WRITE DATA INTERRUPT.
10 FORMAT EC IF04 PARITY ERROR DEVICE INTERRUPT.
11 FORMAT EC IF05 UNIT CHECK. 
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
30 B0 = 7 
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 B0 = B0 + 1
   MSG 1 TO LINE B6              *INTERFACE ERROR 
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   B0 = B0 + 1
   B7 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   B3 = B7
   B7 = SB(B0).AND.377B 
   B0 = B0 + 1
   B8 = SB(B0).RS.4 
   MSG 3 TO LINE B6              *FAULT SYMPTOM CODE
   B6 = B6 + 1
   MSG 4 (B1,B2,B3,B4,B7,B8) TO LINE B6  *1ST,2ND,LAST ERROR
   B6 = B6 + 1
   B0 = B0 + 2
   B5 = 105 
   IF (SB(B0).AND.BIT3.NE.0) GOSUB 70  *DEVICE ALERT INTERRUPT
   B5 = 106 
   IF (SB(B0).AND.BIT2.NE.0) GOSUB 70  *RPI INTERRUPT 
   B0 = B0 + 1
   B5 = 107 
   IF (SB(B0).AND.BIT11.NE.0) GOSUB 70  *PARITY ERROR WRITE DATA INTERRUP 
   B5 = 110 
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *PARITY ERROR DEVICE INTERRUPT 
   B5 = 111 
   IF (SB(B0).AND.BIT1.NE.0) GOSUB 70  *UNIT CHECK
   EXIT TO 97Z                   *CONTINUE PROCESSING 
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 (B1) TO LINE B6 
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT976 -
   MODULE TCT977,DCART(46,47)LOCK  -  WRITE/BUFF/DMA ERR STAT ANALYSIS -
*** TCT977 - WRITE/BUFFER/DMA ERROR STATUS ANALYSIS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO STATUS ANALYSIS ON SENSE BYTE INFORMATION IF WRITE/BUFFER
*         /DMA ERROR FORMAT.
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT977 IS EXITED TO FROM TCT972. MODULE TCT977 DOES ANALYSIS
*         ON THE SENSE BYTES IN THE STATUS BUFFER.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT977  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT            WRITE/BUFFER/DMA ERROR 
3  FORMAT              FAULT SYMPTOM CODE 
4  FORMAT 1ST ERR = *H*H  2ND ERR = *H*H  LAST ERR = *H*H 
27 FORMAT WRITE SEQUENCER COMMAND REGISTER = *H 
30 FORMAT BUFFER COMMAND REGISTER = *H
31 FORMAT --------------------------------------------------
32 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
34 B0 = 10
   IF (B6.LE.30D) GOTO 37        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 35 
   MSG 31 TO LINE B6
   B6 = B6 + 1
   MSG 32 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 36
35 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
36 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
37 B1 = SB(B0).AND.77B
   IF (B1.EQ.0) GOTO 40          *WRITE/BUFFER/DMA ERROR
   IF (B1.EQ.1) EXIT TO 979      *BLOCK ID MISCOMPARE 
   EXIT TO 979                   *DEFAULT ERROR FORMAT
40 B0 = B0 + 1
   MSG 1 TO LINE B6              *WRITE/BUFFER/DMA ERROR
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   B0 = B0 + 1
   B7 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   B3 = B7
   B7 = SB(B0).AND.377B 
   B0 = B0 + 1
   B8 = SB(B0).RS.4 
   MSG 3 TO LINE B6              *FAULT SYMPTOM CODE
   B6 = B6 + 1
   MSG 4 (B1,B2,B3,B4,B7,B8) TO LINE B6  *1ST,2ND,LAST ERROR
   B6 = B6 + 1
   B0 = B0 + 1
   B3 = SB(B0).AND.377B 
   MSG 27 (B3) TO LINE B6        *WRITE SEQUENCER COMMAND REG 
   B6 = B6 + 1
   B0 = B0 + 1
   B3 = SB(B0).RS.4 
   MSG 30 (B3) TO LINE B6        *BUFFER COMMAND REGISTER 
   B6 = B6 + 1
   EXIT TO 978                   *CONTINUE PROCESSING 
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 (B1) TO LINE B6 
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 34 
COMPILE   - TCT977 -
   MODULE TCT978,DCART(46,47)LOCK  -  WRITE/BUFF/DMA ERR STAT ANALYSIS -
*** TCT978 - WRITE/BUFFER/DMA ERROR STATUS ANALYSIS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO STATUS ANALYSIS ON SENSE BYTE INFORMATION IF WRITE/BUFFER
*         /DMA ERROR FORMAT.
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT978 IS EXITED TO FROM TCT977. MODULE TCT978 DOES ANALYSIS
*         ON THE SENSE BYTES IN THE STATUS BUFFER.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT978  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
5  FORMAT EC WB01 BUFFER XFER ERROR.
6  FORMAT EC WB02 COMMAND REGISTER PARITY ERROR.
7  FORMAT EC WB03 MODE REGISTER PARITY ERROR. 
10 FORMAT EC WB04 INTERRUPT ENABLED REG PARITY ERROR. 
11 FORMAT EC WB05 WRITE DENSITY ID COMMAND ERROR. 
12 FORMAT EC WB06 INPUT DATA PARITY ERROR.
13 FORMAT EC WB07 TRANSLATOR MUX PARITY ERROR.
14 FORMAT EC WB08 WRITE TRIGGER VERTICAL REDUNDANCY CHECK.
15 FORMAT EC WB09 CONTROL ERRORS. 
16 FORMAT EC WB10 DATA ERRORS.
17 FORMAT EC WB11 BUFFER STATUS REG CORRECTION REQUIRED.
20 FORMAT EC WB12 BUFFER STATUS REG PARITY ERROR. 
21 FORMAT EC WB13 BUFFER STATUS REG UNCORRECTED ERROR.
22 FORMAT EC WB14 BUFFER STATUS REG BYTE COUNT OVER.
23 FORMAT EC WB15 BUFFER STATUS REG MET BARRIER.
24 FORMAT EC WB16 BUFFER STATUS REG OVER/UNDERRUN.
25 FORMAT EC WB17 PARITY ERROR WRITE DATA INTERRUPT.
26 FORMAT EC WB18 PARITY ERROR FROM DEVICE INTERRUPT. 
31 FORMAT --------------------------------------------------
32 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
34 B0 = 10
   B5 = 105 
   IF (SB(B0).AND.BIT11.NE.0) GOSUB 70  *BUFFER XFER ERROR
   B5 = 106 
   IF (SB(B0).AND.BIT10.NE.0) GOSUB 70  *COMMAND REG PARITY ERROR 
   B5 = 107 
   IF (SB(B0).AND.BIT9.NE.0) GOSUB 70  *MODE REGISTER PARITY ERROR
   B5 = 110 
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *INTERRUPT ENABLED REG PARITY ERRO 
   B5 = 111 
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *WRITE DENSITY ID COMMAND ERROR
   B5 = 112 
   IF (SB(B0).AND.BIT6.NE.0) GOSUB 70  *INPUT DATA PARITY ERROR 
   B5 = 113 
   IF (SB(B0).AND.BIT5.NE.0) GOSUB 70  *TRANSLATOR MUX PARITY ERROR 
   B5 = 114 
   IF (SB(B0).AND.BIT4.NE.0) GOSUB 70  *WRITE TRIGGER VERTICAL REDUNDANCY 
   B0 = 15
   B5 = 115 
   IF (SB(B0).AND.BIT2.NE.0) GOSUB 70  *CONTROL ERRORS
   B5 = 116 
   IF (SB(B0).AND.BIT1.NE.0) GOSUB 70  *DATA ERRORS 
   B0 = B0 + 2
   B5 = 117 
   IF (SB(B0).AND.BIT1.NE.0) GOSUB 70  *CORRECTION REQUIRED 
   B5 = 120 
   IF (SB(B0).AND.BIT0.NE.0) GOSUB 70  *BUFFER STATUS REG PARITY ERROR
   B0 = B0 + 1
   B5 = 121 
   IF (SB(B0).AND.BIT11.NE.0) GOSUB 70  *BUFFER STATUS REG UNCORRECTED ER 
   B5 = 122 
   IF (SB(B0).AND.BIT10.NE.0) GOSUB 70  *BUFFER STATUS REG BYTE COUNT OVE 
   B5 = 123 
   IF (SB(B0).AND.BIT9.NE.0) GOSUB 70  *BUFFER STATUS REG MET BARRIER 
   B5 = 124 
   IF (SB(B0).AND.BIT8.NE.0) GOSUB 70  *BUFFER STATUS REG OVER/UNDERRUN 
   B5 = 125 
   IF (SB(B0).AND.BIT7.NE.0) GOSUB 70  *PARITY ERROR WRITE DATA INTERRUPT 
   B5 = 126 
   IF (SB(B0).AND.BIT6.NE.0) GOSUB 70  *PARITY ERROR FROM DEVICE INTERRUP 
   EXIT TO 97Z                   *CONTINUE PROCESSING 
* 
* --------POST PROBLEM DETECTION CODE AND MESSAGE 
* 
70 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
71 MSG B4 (B1) TO LINE B6 
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 71 WHILE (B5-1.NE.0)     *DO ALL LINES
   RETURN                        *CONTINUE PROCESSING 
77 END 34 
COMPILE   - TCT978 -
   MODULE TCT979,DCART(46,47)LOCK  -  BLOCK ID MISCOMPARE STAT ANALYSIS - 
*** TCT979 - BLOCK ID MISCOMPARE/DEFAULT ERROR STATUS ANALYSIS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DO  STATUS  ANALYSIS ON SENSE BYTE INFORMATION IF  BLOCK  ID
*         MISCOMPARE OR DEFAULT ERROR FORMAT. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         TCT979 IS EXITED TO FROM TCT972. MODULE TCT979 DOES ANALYSIS
*         ON THE SENSE BYTES IN THE STATUS BUFFER.
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT979  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT            BLOCK ID MISCOMPARE ERROR
2  FORMAT                DEFAULT ERROR
3  FORMAT              FAULT SYMPTOM CODE 
4  FORMAT 1ST ERR = *H*H  2ND ERR = *H*H  LAST ERR = *H*H 
5  FORMAT BLOCK ID READ FROM TAPE  *H*H*H*H 
6  FORMAT BLOCK ID EXPECTED        *H*H*H*H 
24 FORMAT --------------------------------------------------
25 FORMAT PAUSE  -GO-  TO POST REST OF ERROR ANALYSIS 
* 
   EQUATE BIT0 TO 1,BIT1 TO 2,BIT2 TO 4,BIT3 TO 8,BIT4 TO 20
   EQUATE BIT5 TO 40,BIT6 TO 100,BIT7 TO 200,BIT8 TO 400
   EQUATE BIT9 TO 1000,BIT10 TO 2000,BIT11 TO 4000
* 
30 B0 = 10
   IF (B6.LE.30D) GOTO 33        *POST MESSAGES DO NOT PAUSE
   IF (ES.AND.TM.EQ.TM) GOTO 31 
   MSG 24 TO LINE B6
   B6 = B6 + 1
   MSG 25 TO LINE B6
   PICTURE
   PAUSE
   BLANK
   GOTO 32
31 PICTURE                       *PICTURE THE DATA FOR OUTPUT 
   BLANK
32 B6 = 0                        *SET LINE NUMBER TO 0 FOR NO OVERFLOW
33 IF (B1.NE.1) GOTO 40          *DEFAULT ERROR 
   B0 = B0 + 1
   MSG 1 TO LINE B6              *BLOCK ID MISCOMPARE 
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   B0 = B0 + 1
   B7 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   B3 = B7
   B7 = SB(B0).AND.377B 
   B0 = B0 + 1
   B8 = SB(B0).RS.4 
   MSG 3 TO LINE B6              *FAULT SYMPTOM CODE
   B6 = B6 + 1
   MSG 4 (B1,B2,B3,B4,B7,B8) TO LINE B6  *1ST,2ND,LAST ERROR
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   B0 = B0 + 1
   B7 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   B3 = B7
   MSG 5 (B1,B2,B3,B4) TO LINE B6  *BLOCK ID READ FROM TAPE 
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   B0 = B0 + 1
   B7 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   B3 = B7
   MSG 6 (B1,B2,B3,B4) TO LINE B6  *BLOCK ID EXPECTED 
   B6 = B6 + 1
   GOTO 70                       *EXIT
40 B0 = B0 + 1
   MSG 2 TO LINE B6              *DEFAULT ERROR 
   B6 = B6 + 1
   B1 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B2 = SB(B0).RS.8 
   B1 = B1 + B2 
   B2 = SB(B0).AND.377B 
   B0 = B0 + 1
   B7 = SB(B0).RS.4 
   B3 = SB(B0).AND.17B.LS.4 
   B0 = B0 + 1
   B4 = SB(B0).RS.8 
   B4 = B3 + B4 
   B3 = B7
   B7 = SB(B0).AND.377B 
   B0 = B0 + 1
   B8 = SB(B0).RS.4 
   MSG 3 TO LINE B6              *FAULT SYMPTOM CODE
   B6 = B6 + 1
   MSG 4 (B1,B2,B3,B4,B7,B8) TO LINE B6  *1ST,2ND,LAST ERROR
   B6 = B6 + 1
70 EXIT TO 97Z                   *CONTINUE PROCESSING 
77 END 30 
COMPILE   - TCT979 -
   MODULE TCT98A,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98A - TCT98I - ERROR CODE PROCESSING 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         MODULE TCT98A CAN BE CALLED BY ANY TEST MODULE THAT MAKES UP
*         TCT.  TCT98A WILL ANALYZE  THE  CONTENTS  OF  THE ERROR CODE
*         REGISTER (EC) AND WILL POST THE APPROPRIATE MESSAGE(S)  THAT
*         DESCRIBE THE ERROR CODE. AN EXIT IS THEN MADE TO  TCT97H  OR
*         TCT97F TO PERFORM STATUS ANALYSIS AND TO PRESENT A COMPOSITE
*         PICTURE OF THE FAILURE TO THE USER. 
* 
*         TCT98A WILL ANALYZE THE ERROR  CODE  AND  PROCESS  THE  CODE
*         DIRECTLY, OR EXIT TO A SPECIFIC MODULE THAT CAN  PROCESS THE
*         CODE.  THE FOLLOWING DOCUMENTS WHICH MODULE PROCESSES  WHICH
*         CODES.
* 
*           TCT98A -  ERROR CODES 060 - 077 
*           TCT98B -  ERROR CODES 100 - 177 
*           TCT98C -  ERROR CODES 200 - 207 
*           TCT98D -  ERROR CODES 210 - 217 
*           TCT98E -  ERROR CODES 220 - 227 
*           TCT98F -  ERROR CODES 230 - 237 
*           TCT98G -  ERROR CODES 240 - 247 
*           TCT98H -  ERROR CODES 250 - 257 
*           TCT98I -  ERROR CODES 260 - 271 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         NOTE   BEFORE ANY REGISTERS ARE USED, TCT98A SAVES REGISTERS
*                B0-B15 AND BA IN THE INPUT BUFFER WORDS 417-437.   B7
*                IS THEN SET TO 7777 TO FLAG TCT97F-TCT97H THAT IT  IS
*                BEING  ENTERED   FROM   TCT98A-TCT98I   (B7  NORMALLY
*                CONTAINS THE ACTION CODE  FOR  ERROR  ISOLATION,  AND
*                7777 IS AN ILLEGAL ACTION CODE).  THE REGISTERS  WILL
*                ALWAYS   BE   RESTORED   BY  TCT98Z  SEQUENCE  BEFORE
*                RETURNING TO THE FAILING MODULE. 
* 
*         B4  = START OF FORMAT STATEMENT NUMBERS FOR EC. 
*         B5  = NUMBER OF FORMAT STATEMENTS FOR EC TO BE PROCESSED. 
*         B6  = DISPLAY LINE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED-
* 
*         TCT97F - STATUS ANALYSIS MODULE 
* 
* --------DATA DIVISION 
* 
0  FORMAT TCT - CARTRIDGE TAPE SUBSYSTEM TEST 
/ 
                                                           *
1  FORMAT EC 060-EOT DETECTED BEFORE DETECTING EOF, EITHER
2  FORMAT THE UNIT CANNOT DETECT EOF OR TAPE NOT WRITTEN BY 
3  FORMAT THE CORRECT TCT MODULE...CHECK PARAMETERS.. 
4  FORMAT 
/ 
10 FORMAT EC070- TAPE MOUNTED IS NOT A -COMPAT- TAPE
/ 
11 FORMAT EC071- RECORD COUNT=*OCT IN FILE *OCT, EXP=0311 
/ 
31 FORMAT --TCT98A .... UNDEFINED ERROR CODE .... 
/ 
40 IB(417B) = BA
   IB(420B) = B0                 *SAVE REGISTERS
   IB(421B) = B1
   IB(422B) = B2
   IB(423B) = B3
   IB(424B) = B4
   IB(425B) = B5
   IB(426B) = B6
   IB(427B) = B7
   IB(430B) = B8                 *SAVE REGISTERS
   IB(431B) = B9
   IB(432B) = B10 
   IB(433B) = B11 
   IB(434B) = B12 
   IB(435B) = B13 
   IB(436B) = B14 
   IB(437B) = B15 
   B7 = 7777                     *SET FLAG FOR TCT97H/97F 
   B6 = 2                        *LINE NUMBER 
   MSG 0 TO LINE 0               *TEST HEADER MESSAGE 
   IF (EC.LT.100) GOTO 50        *0 - 77
   IF (EC.LT.200) EXIT TO 98B    *100 - 177 
   IF (EC.LE.207) EXIT TO 98C    *200 - 207 
   IF (EC.LE.217) EXIT TO 98D    *210 - 217 
   IF (EC.LE.227) EXIT TO 98E    *220 - 227 
   IF (EC.LE.237) EXIT TO 98F    *230 - 237 
   IF (EC.LE.247) EXIT TO 98G    *240 - 247 
   IF (EC.LE.257) EXIT TO 98H    *250 - 257 
   IF (EC.LE.271) EXIT TO 98I    *260 - 271 
/ 
44 B5 = 131                      *ILLEGAL ERROR CODE
   GOTO 60
/ 
50 B5 = 401 
   IF (EC.EQ.060) GOTO 60 
   B5 = 110 
   IF (EC.EQ.070) GOTO 60 
   B5 = 111 
   IF (EC.EQ.071) GOTO 60 
   B5 = 131                      *ILLEGAL ERROR CODE
/ 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 (IB(421),IB(420)) TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
76 END 40 
COMPILE   - TCT98A -
   MODULE TCT98B,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98B - TEXT FOR ERROR CODES  100 - 177
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEXT FOR ERROR CODES  100 - 177 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
/ 
1  FORMAT EC 105-DATA COMPARE ERROR. THE FIRST 400B WORDS 
2  FORMAT (OR THE RECORD LENGTH IN -P2-), THAT WERE 
3  FORMAT TRANSFERRED DO NOT COMPARE ALTHOUGH NO SUBSYSTEM
4  FORMAT ERRORS WERE REPORTED. 
/ 
5  FORMAT EC 122-NO FM/TM STATUS IN GENERAL STATUS,AT END OF
6  FORMAT OPERATION, AFTER A WRITE FM/TM. 
/ 
7  FORMAT EC 123-TAPE UNIT NOT READY
/ 
10 FORMAT EC 132-ABNORMAL STATUS
/ 
11 FORMAT EC 137-STILL AT BOT AFTER AN ERASE
/ 
12 FORMAT EC 106-DATA COMPARED ON SHORT WRITE/READ SHOULD 
13 FORMAT NOT HAVE. 
/ 
14 FORMAT EC 107-CHARACTER FILL NOT SET ON SHORT WRITE/ 
15 FORMAT READ SHOULD BE. 
/ 
16 FORMAT EC 110-CHARACTER FILL SET ON SHORT WRITE/ 
17 FORMAT READ SHOULD NOT BE. 
/ 
20 FORMAT EC 120-STATUS ERROR AFTER EXECUTE CCC ROM DIAG
/ 
31 FORMAT --TCT98B .... UNDEFINED ERROR CODE .... 
/ 
/ 
40 B5 = 401 
   IF (EC.EQ.105) GOTO 60 
   B5 = 212 
   IF (EC.EQ.106) GOTO 60 
   B5 = 214 
   IF (EC.EQ.107) GOTO 60 
   B5 = 216 
   IF (EC.EQ.110) GOTO 60 
   B5 = 120 
   IF (EC.EQ.120) GOTO 60 
   B5 = 205 
   IF (EC.EQ.122) GOTO 60 
   B5 = 107 
   IF (EC.EQ.123) GOTO 60 
   B5 = 110 
   IF (EC.EQ.132) GOTO 60 
   B5 = 111 
   IF (EC.EQ.137) GOTO 60 
   B5 = 131                      *ILLEGAL ERROR CODE
/ 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
76 END 40 
COMPILE   - TCT98B -
   MODULE TCT98C,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98C - TEXT FOR ERROR CODES  200 - 207
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEXT FOR ERROR CODES  200 - 207 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
/ 
1  FORMAT EC 200- AN UNEXPECTED  BIT APPEARED IN GENERAL
2  FORMAT STATUS DURING A WRITE OPERATION.
3  FORMAT NOTE THAT GENERAL STATUS WAS MASKED WITH 4070B. 
/ 
4  FORMAT EC 201- AN UNEXPECTED  BIT APPEARED IN GENERAL
5  FORMAT STATUS DURING A READ OPERATION. 
6  FORMAT NOTE THAT GENERAL STATUS WAS MASKED WITH 4070B. 
/ 
7  FORMAT EC 203- ALERT BIT IN GENERAL STATUS WAS SET DURING
10 FORMAT A READ FORWARD OPERATION. 
11 FORMAT THE INPUT BUFFER CONTAINS THE DATA JUST READ. 
/ 
12 FORMAT EC 207-A FM/TM WAS DETECTED OUT OF EXPECTED 
13 FORMAT POSITION ON A READ OPERATION.  FOR THIS ERROR TO
14 FORMAT BE REPORTED, P4 = 4XXX MUST BE SET. 
/ 
31 FORMAT --TCT98C .... UNDEFINED ERROR CODE .... 
/ 
40 B5 = 301 
   IF (EC.EQ.200) GOTO 60 
   B5 = 304 
   IF (EC.EQ.201) GOTO 60 
   B5 = 307 
   IF (EC.EQ.203) GOTO 60 
   B5 = 312 
   IF (EC.EQ.207) GOTO 60 
   B5 = 131                      *ILLEGAL ERROR CODE
/ 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
76 END 40 
COMPILE   - TCT98C -
   MODULE TCT98D,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98D - TEXT FOR ERROR CODES  210 - 217
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEXT FOR ERROR CODES  210 - 217 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
/ 
1  FORMAT EC 211-INCORRECT FILE DETECTED DURING A RANDOM
2  FORMAT READ. 
/ 
3  FORMAT EC 212-INCORRECT RECORD HAS BEEN DETECTED DURING A
4  FORMAT RANDOM READ.
/ 
5  FORMAT EC 213-INCORRECT RECORD LENGTH HAS BEEN DETECTED
6  FORMAT DURING A RANDOM READ. 
/ 
7  FORMAT EC 214-INCORRECT RECORD LENGTH HAS BEEN DETECTED
10 FORMAT IN SHORT READ TCT32. -WT NOT EQUAL RECORD COUNT-
/ 
11 FORMAT EC 215 - THE BLOCK IDS FROM LOCATE BLOCK
12 FORMAT AND READ BLOCK ID COMMANDS DO NOT COMPARE 
13 FORMAT IN THE SHORT LOCATE BLOCK TEST. 
14 FORMAT ACTUAL = *OCT *OC*OCT  EXPECTED = *OCT *OC*OCT
/ 
31 FORMAT --TCT98D .... UNDEFINED ERROR CODE .... 
/ 
40 B5 = 201 
   IF (EC.EQ.211) GOTO 60 
   B5 = 203 
   IF (EC.EQ.212) GOTO 60 
   B5 = 205 
   IF (EC.EQ.213) GOTO 60 
   B5 = 207 
   IF (EC.EQ.214) GOTO 60 
   B5 = 411 
   IF (EC.EQ.215) GOTO 50 
   B5 = 131                      *ILLEGAL ERROR CODE
   GOTO 60
/ 
50 B5 = B8
   B8 = SB(44).RS.4 
   B9 = SB(45).RS.4 
   B10 = SB(45).AND.17.LS.8 
   B11 = SB(46).RS.4
   B10 = B10 + B11
   B11 = OB(B5).RS.4
   B5 = B5 + 1
   B12 = OB(B5).RS.4
   B13 = OB(B5).AND.17.LS.8 
   B5 = B5 + 1
   B14 = OB(B5).RS.4
   B13 = B13 + B14
53 MSG 11 TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 12 TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 13 TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 14 (B8,B9,B10,B11,B12,B13) TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   EXIT TO 97F                   *GO PROCESS STATUS 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
   END 40 
COMPILE   - TCT98D -
   MODULE TCT98E,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98E - TEXT FOR ERROR CODES  220 - 227
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEXT FOR ERROR CODES  220 - 227 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
/ 
1  FORMAT EC 221-INCORRECT FILE DETECTED DURING A READ. 
/ 
3  FORMAT EC 222-INCORRECT RECORD HAS BEEN DETECTED DURING A
4  FORMAT READ. 
/ 
7  FORMAT EC 226-ERROR HAS OCCURRED DURING A READ FORWARD 
10 FORMAT OPERATION IN THE -TAPE PATH DAMAGE- TEST. 
/ 
11 FORMAT EC 227-ERROR HAS OCCURRED DURING A READ FORWARD 
12 FORMAT OPERATION IN THE -FILE PROTECT/UNLOAD- TEST.
/ 
31 FORMAT --TCT98E .... UNDEFINED ERROR CODE .... 
/ 
40 B5 = 101 
   IF (EC.EQ.221) GOTO 60 
   B5 = 203 
   IF (EC.EQ.222) GOTO 60 
   B5 = 207 
   IF (EC.EQ.226) GOTO 60 
   B5 = 211 
   IF (EC.EQ.227) GOTO 60 
   B5 = 131 
   GOTO 60
/ 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
   END 40 
COMPILE   - TCT98E -
   MODULE TCT98F,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98F - TEXT FOR ERROR CODES  230 - 237
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEXT FOR ERROR CODES  230 - 237 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
/ 
1  FORMAT EC 232-THE RECORD COUNT IS IN ERROR DURING A -READ
2  FORMAT FWD- IN THE LOCATE BLOCK TEST.
/ 
3  FORMAT EC 233-THE RECORD LENGTH IS IN ERROR DURING A 
4  FORMAT -READ FORWARD- IN THE LOCATE BLOCK SUBTEST. 
/ 
5  FORMAT EC 234 - THE BLOCK IDS FROM LOCATE BLOCK
6  FORMAT AND READ BLOCK ID COMMANDS DO NOT COMPARE 
7  FORMAT IN THE LOCATE BLOCK TEST. 
10 FORMAT ACTUAL = *OCT *OC*OCT  EXPECTED = *OCT *OC*OCT
/ 
11 FORMAT EC 235-AN ABNORMAL STATUS WAS DETECTED DURING A 
12 FORMAT -READ FORWARD- IN THE -SYNCHRONIZE- TEST. 
/ 
13 FORMAT EC 236-A COMPARE ERROR HAS OCCURRED WHEN THE WRITE
14 FORMAT AND READ BLOCK IDS WERE COMPARED FOR RECORDS
15 FORMAT 1, 2 OR 3 IN THE -SYNCHRONIZE- TEST.
/ 
31 FORMAT --TCT98F .... UNDEFINED ERROR CODE .... 
/ 
40 B5 = 201 
   IF (EC.EQ.232) GOTO 60 
   B5 = 203 
   IF (EC.EQ.233) GOTO 60 
   B5 = 405 
   IF (EC.EQ.234) GOTO 50 
   B5 = 211 
   IF (EC.EQ.235) GOTO 60 
   B5 = 313 
   IF (EC.EQ.236) GOTO 50 
   B5 = 131 
   GOTO 60
/ 
50 B5 = 424 
   B8 = SB(44).RS.4 
   B9 = SB(45).RS.4 
   B10 = SB(45).AND.17.LS.8 
   B11 = SB(46).RS.4
   B10 = B10 + B11
   B11 = IB(B5).RS.4
   B5 = B5 + 4
   B12 = IB(B5).RS.4
   B13 = IB(B5).AND.17.LS.8 
   B5 = B5 + 1
   B14 = IB(B5).RS.4
   B13 = B13 + B14
   IF (EC.EQ.234) GOTO 54 
53 MSG 13 TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 14 TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 15 TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 55
54 MSG 5 TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 6 TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 7 TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
55 MSG 10 (B8,B9,B10,B11,B12,B13) TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   EXIT TO 97F                   *GO PROCESS STATUS 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
   END 40 
COMPILE   - TCT98F -
   MODULE TCT98G,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98G - TEXT FOR ERROR CODES  240 - 247
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEXT FOR ERROR CODES  240 - 247 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
/ 
1  FORMAT EC 241-AN ABNORMAL STATUS WAS DETECTED DURING A 
2  FORMAT -BACKSPACE- IN THE -POSITION- SUBTEST.
/ 
3  FORMAT EC 242-AN ABNORMAL STATUS WAS DETECTED DURING A 
4  FORMAT -READ FORWARD- IN THE -POSITION- TEST.
/ 
5  FORMAT EC 243-A COMPARE ERROR HAS OCCURRED WHEN THE WRITE
6  FORMAT AND READ BLOCK IDS WERE COMPARED FOR RECORDS
7  FORMAT 1, 2 OR 3 IN THE -POSITION- TEST. 
/ 
10 FORMAT EC 244-AN ABNORMAL STATUS WAS DETECTED DURING THE 
11 FORMAT -FORESPACE- OVER RECORD 6 IN THE -POSITION- TEST. 
/ 
12 FORMAT EC 245-THE READ AND WRITE BLOCK IDS FOR RECORD 6
13 FORMAT HAVE FAILED TO COMPARE IN THE POSITION TEST.
14 FORMAT ACTUAL = *OC*OCT  EXPECTED = *OC*OCT
/ 
15 FORMAT EC 246-AN ALERT STATUS OCCURRED AFTER AN ERASE. 
/ 
16 FORMAT EC 247-THE FIRST AND SECOND BLOCK IDS HAVE FAILED 
17 FORMAT TO COMPARE AFTER A SYNCHRONIZE FUNCTION IN
20 FORMAT THE SYNCHRONIZE TEST. SEE 1ST AND 2ND BLOCK ID. 
/ 
31 FORMAT --TCT98G .... UNDEFINED ERROR CODE .... 
/ 
40 B5 = 201 
   IF (EC.EQ.241) GOTO 60 
   B5 = 203 
   IF (EC.EQ.242) GOTO 60 
   B5 = 305 
   IF (EC.EQ.243) GOTO 50 
   B5 = 210 
   IF (EC.EQ.244) GOTO 60 
   B5 = 312 
   IF (EC.EQ.245) GOTO 50 
   B5 = 115 
   IF (EC.EQ.246) GOTO 60 
   B5 = 316 
   IF (EC.EQ.247) GOTO 60 
   B5 = 131 
   GOTO 60
/ 
50 B5 = 424 
   B8 = SB(44).RS.4 
   B9 = SB(45).RS.4 
   B10 = SB(45).AND.17.LS.8 
   B11 = SB(46).RS.4
   B10 = B10 + B11
   B11 = IB(B5).RS.4
   B5 = B5 + 4
   B12 = IB(B5).RS.4
   B13 = IB(B5).AND.17.LS.8 
   B5 = B5 + 1
   B14 = IB(B5).RS.4
   B13 = B13 + B14
   MSG 12 TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 13 TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
55 MSG 14 (B8,B9,B10,B11,B12,B13) TO LINE B6
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   EXIT TO 97F                   *GO PROCESS STATUS 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
   END 40 
COMPILE   - TCT98G -
   MODULE TCT98H,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98H - TEXT FOR ERROR CODES  250 - 257
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEXT FOR ERROR CODES  250 - 257 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT EC 251-FILE MARK STATUS IS MISSING AT END-OF-OP 
2  FORMAT DURING A READ FILE MARK REVERSE.
/ 
3  FORMAT EC 252-FILE MARK STATUS IS MISSING AT END-OF-OP 
4  FORMAT DURING A READ FILE MARK FORWARD.
/ 
5  FORMAT EC 253-A STATUS ERROR OCCURRED ON A BACKSPACE.
/ 
6  FORMAT EC 256-WORDS TRANSMITTED ERROR. 
/ 
7  FORMAT EC 257-IF RECORD COUNT ERROR (FIRST WORD OF 
10 FORMAT IB NOT EQUAL TO RECORD NUMBER). 
/ 
31 FORMAT --TCT98H .... UNDEFINED ERROR CODE .... 
40 B5 = 201 
   IF (EC.EQ.251) GOTO 60 
   B5 = 203 
   IF (EC.EQ.252) GOTO 60 
   B5 = 105 
   IF (EC.EQ.253) GOTO 60 
   B5 = 106 
   IF (EC.EQ.256) GOTO 60 
   B5 = 207 
   IF (EC.EQ.257) GOTO 60 
   B5 = 131                      *ILLEGAL ERROR CODE
   GOTO 60
50 B5 = 431 
   B8 = SB(44).RS.4 
   B9 = SB(45).RS.4 
   B10 = SB(45).AND.17.LS.8 
   B11 = SB(46).RS.4
   B10 = B10 + B11
   B11 = IB(B5).RS.4
   B5 = B5 + 1
   B12 = IB(B5).RS.4
   B13 = IB(B5).AND.17.LS.8 
   B5 = B5 + 1
   B14 = IB(B5).RS.4
   B13 = B13 + B14
   IF (EC.EQ.245) GOTO 53 
   MSG 1 TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 2 TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 3 TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 54
53 MSG 6 TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   MSG 7 TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
54 MSG 10 (B9,B10,B12,B13) TO LINE B6 
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   EXIT TO 97F                   *GO PROCESS STATUS 
/ 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
   END 40 
COMPILE   - TCT98H -
   MODULE TCT98I,DCART(46,47)LOCK  -  ERROR CODE PROCESSING - 
*** TCT98I - TEXT FOR ERROR CODES  260 - 271
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEXT FOR ERROR CODES  260 - 271 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
/ 
1  FORMAT EC 260 - NO FILE MARK STATUS AFTER SEARCH FM FWD
2  FORMAT IN THE SEARCH FILE MARK TEST. 
/ 
3  FORMAT EC 261 - NO FILE MARK STATUS AFTER SEARCH FM REV
4  FORMAT IN THE SEARCH FILE MARK TEST. 
/ 
5  FORMAT EC 262 - FILE MARK STATUS AT LOAD POINT 
6  FORMAT IN THE SEARCH FILE MARK TEST. 
/ 
7  FORMAT EC 263 - POSITION LOST AFTER THREE FORESPACES 
10 FORMAT IN TCT61 READ ANY TAPE MODULE.
/ 
11 FORMAT EC 264 - POSITION LOST AFTER 32 DECIMAL ERASES
12 FORMAT IN TCT59 WRITE WITH ERROR TRACK SENSING.
/ 
13 FORMAT EC 267 - WRITE RECORD COUNT NOT EQUAL TO READ 
14 FORMAT RECORD COUNT. 
/ 
15 FORMAT EC 270 - WRITE WITH NO ERRORS ON A FILE PROTECTED 
16 FORMAT CARTRIDGE SHOULD NOT HAVE.
/ 
17 FORMAT EC 271 - A STATUS ERROR OCCURRED AFTER AN UNLOAD
20 FORMAT OPERATION IN THE FILE PROTECT/UNLOAD TEST TEST. 
/ 
31 FORMAT --TCT98I .... UNDEFINED ERROR CODE .... 
40 B5 = 201 
   IF (EC.EQ.260) GOTO 60 
   B5 = 203 
   IF (EC.EQ.261) GOTO 60 
   B5 = 205 
   IF (EC.EQ.262) GOTO 60 
   B5 = 207 
   IF (EC.EQ.263) GOTO 60 
   B5 = 211 
   IF (EC.EQ.264) GOTO 60 
   B5 = 213 
   IF (EC.EQ.267) GOTO 60 
   B5 = 215 
   IF (EC.EQ.270) GOTO 60 
   B5 = 217 
   IF (EC.EQ.271) GOTO 60 
   B5 = 131                      *ILLEGAL ERROR CODE
/ 
60 B4 = B5.AND.77                *FORMAT NUMBER 
   B5 = B5.RS.6                  *NUMBER OF LINES IN MESSAGE
61 MSG B4 TO LINE B6
   B4 = B4 + 1                   *BUMP FORMAT NUMBER
   B6 = B6 + 1                   *BUMP DISPLAY LINE NUMBER
   GOTO 61 WHILE (B5-1.NE.0)     *DO ALL LINES
   EXIT TO 97F                   *GO PROCESS STATUS 
   END 40 
COMPILE   - TCT98I -
   MODULE TCT980,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT980 - ROM ERROR CODE STATUS ANALYSIS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT980  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5100 SWITCHES NOT SET CORRECTLY
2  FORMAT ROM EC 5121 LD XFER REGS.  WR PATH PE UPPER.
3  FORMAT ROM EC 5122 LD XFER REGS.  WR PATH PE LOWER.
4  FORMAT ROM EC 5123 LD XFER REGS.  MEMORY PE. 
5  FORMAT ROM EC 5124 LD XFER REGS.  BUS IN OR RD PATH PE.
6  FORMAT ROM EC 5125 LD XFER REGS.  READ PATH PE.
7  FORMAT ROM EC 5126 LD XFER REGS.  BUS OUT FAULT. 
10 FORMAT ROM EC 5127 LD XFER REGS.  TAG OUT FAULT UPPER. 
11 FORMAT ROM EC 5130 LD XFER REGS.  TAG OUT FAULT LOWER. 
12 FORMAT ROM EC 5131 LD XFER REGS.  FLAG BIT DETECTED. 
13 FORMAT ROM EC 5132 LD XFER REGS.  MIN BLK LENG NOT MET.
14 FORMAT ROM EC 5133 LD XFER REGS.  SELECT IN RECEIVED.
15 FORMAT ROM EC 5134 LD XFER REGS.  NO REQ IN ON POLL SEQ. 
16 FORMAT ROM EC 5135 LD XFER REGS.  DEVICE ADDR MISCOMPARE.
17 FORMAT ROM EC 5136 LD XFER REGS.  TIME OUT ON FIPS XFER. 
20 FORMAT ROM EC 5137 LD XFER REGS.  UNDEFINED ERROR. 
21 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
22 FORMAT --------------------------------------------------
60 BA = SB(1B).AND.777B          *ROM ERROR CODE
   IF (BA.LT.100) GOTO 70        *BAD ERROR CODE
   IF (BA.GT.605) GOTO 70        *BAD ERROR CODE
   IF (BA.GT.137) EXIT TO 981    *MORE ERROR CODES
   IF (BA.EQ.100) ERROR 1/0, GOTO 71       *EC = 100
   IF (BA.EQ.121) ERROR 2/0, GOTO 71       *EC = 121
   IF (BA.EQ.122) ERROR 3/0, GOTO 71       *EC = 122
   IF (BA.EQ.123) ERROR 4/0, GOTO 71       *EC = 123
   IF (BA.EQ.124) ERROR 5/0, GOTO 71       *EC = 124
   IF (BA.EQ.125) ERROR 6/0, GOTO 71       *EC = 125
   IF (BA.EQ.126) ERROR 7/0, GOTO 71       *EC = 126
   IF (BA.EQ.127) ERROR 10/0, GOTO 71      *EC = 127
   IF (BA.EQ.130) ERROR 11/0, GOTO 71      *EC = 130
   IF (BA.EQ.131) ERROR 12/0, GOTO 71      *EC = 131
   IF (BA.EQ.132) ERROR 13/0, GOTO 71      *EC = 132
   IF (BA.EQ.133) ERROR 14/0, GOTO 71      *EC = 133
   IF (BA.EQ.134) ERROR 15/0, GOTO 71      *EC = 134
   IF (BA.EQ.135) ERROR 16/0, GOTO 71      *EC = 135
   IF (BA.EQ.136) ERROR 17/0, GOTO 71      *EC = 136
   IF (BA.EQ.137) ERROR 20/0, GOTO 71      *EC = 137
70 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 21(BA) TO LINE B6
   GOTO 72
71 MSG EM TO LINE B6
72 B6 = B6 + 1
   MSG 22 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 60 
COMPILE   - TCT980 -
   MODULE TCT981,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT981 - ROM ERROR CODE STATUS ANALYSIS - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT981  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5141 RD XFER REGS.  WR PATH PE UPPER.
2  FORMAT ROM EC 5142 RD XFER REGS.  WR PATH PE LOWER.
3  FORMAT ROM EC 5143 RD XFER REGS.  MEMORY PE. 
4  FORMAT ROM EC 5144 RD XFER REGS.  BUS IN OR RD PATH PE.
5  FORMAT ROM EC 5145 RD XFER REGS.  READ PATH PE.
6  FORMAT ROM EC 5146 RD XFER REGS.  BUS OUT FAULT. 
7  FORMAT ROM EC 5147 RD XFER REGS.  TAG OUT FAULT UPPER. 
10 FORMAT ROM EC 5150 RD XFER REGS.  TAG OUT FAULT LOWER. 
11 FORMAT ROM EC 5151 RD XFER REGS.  FLAG BIT DETECTED. 
12 FORMAT ROM EC 5152 RD XFER REGS.  MIN BLK LENG NOT MET.
13 FORMAT ROM EC 5153 RD XFER REGS.  SELECT IN RECEIVED.
14 FORMAT ROM EC 5154 RD XFER REGS.  NO REQ IN ON POLL SEQ. 
15 FORMAT ROM EC 5155 RD XFER REGS.  DEVICE ADDR MISCOMPARE.
16 FORMAT ROM EC 5156 RD XFER REGS.  TIME OUT ON FIPS XFER. 
17 FORMAT ROM EC 5157 RD XFER REGS.  UNDEFINED ERROR. 
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
30 IF (BA.GT.157) EXIT TO 982    *MORE ERROR CODES
   IF (BA.EQ.141) ERROR 1/0, GOTO 60       *EC = 141
   IF (BA.EQ.142) ERROR 2/0, GOTO 60       *EC = 142
   IF (BA.EQ.143) ERROR 3/0, GOTO 60       *EC = 143
   IF (BA.EQ.144) ERROR 4/0, GOTO 60       *EC = 144
   IF (BA.EQ.145) ERROR 5/0, GOTO 60       *EC = 145
   IF (BA.EQ.146) ERROR 6/0, GOTO 60       *EC = 146
   IF (BA.EQ.147) ERROR 7/0, GOTO 60       *EC = 147
   IF (BA.EQ.150) ERROR 10/0, GOTO 60      *EC = 150
   IF (BA.EQ.151) ERROR 11/0, GOTO 60      *EC = 151
   IF (BA.EQ.152) ERROR 12/0, GOTO 60      *EC = 152
   IF (BA.EQ.153) ERROR 13/0, GOTO 60      *EC = 153
   IF (BA.EQ.154) ERROR 14/0, GOTO 60      *EC = 154
   IF (BA.EQ.155) ERROR 15/0, GOTO 60      *EC = 155
   IF (BA.EQ.156) ERROR 16/0, GOTO 60      *EC = 156
   IF (BA.EQ.157) ERROR 17/0, GOTO 60      *EC = 157
50 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 70
60 MSG EM TO LINE B6
70 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 30 
COMPILE   - TCT981 -
   MODULE TCT982,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT982 - ROM ERROR CODE STATUS ANALYSIS - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT982  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5161 DIAG WR SEQ.  WR PATH PE UPPER. 
2  FORMAT ROM EC 5162 DIAG WR SEQ.  WR PATH PE LOWER. 
3  FORMAT ROM EC 5163 DIAG WR SEQ.  MEMORY PE.
4  FORMAT ROM EC 5164 DIAG WR SEQ.  BUS IN OR RD PATH PE. 
5  FORMAT ROM EC 5165 DIAG WR SEQ.  READ PATH PE. 
6  FORMAT ROM EC 5166 DIAG WR SEQ.  BUS OUT FAULT.
7  FORMAT ROM EC 5167 DIAG WR SEQ.  TAG OUT FAULT UPPER.
10 FORMAT ROM EC 5170 DIAG WR SEQ.  TAG OUT FAULT LOWER.
11 FORMAT ROM EC 5171 DIAG WR SEQ.  FLAG BIT DETECTED.
12 FORMAT ROM EC 5172 DIAG WR SEQ.  MIN BLK LENG NOT MET. 
13 FORMAT ROM EC 5173 DIAG WR SEQ.  SELECT IN RECEIVED. 
14 FORMAT ROM EC 5174 DIAG WR SEQ.  NO REQ IN ON POLL SEQ.
15 FORMAT ROM EC 5175 DIAG WR SEQ.  DEVICE ADDR MISCOMPARE. 
16 FORMAT ROM EC 5176 DIAG WR SEQ.  TIME OUT ON FIPS XFER.
17 FORMAT ROM EC 5177 DIAG WR SEQ.  UNDEFINED ERROR.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5160 TRANSFER REGISTER DATA MISCOMPARE.
30 IF (BA.GT.177) EXIT TO 983    *MORE ERROR CODES
   IF (BA.EQ.160) ERROR 22/0, GOTO 60      *EC = 160
   IF (BA.EQ.161) ERROR 1/0, GOTO 60       *EC = 161
   IF (BA.EQ.162) ERROR 2/0, GOTO 60       *EC = 162
   IF (BA.EQ.163) ERROR 3/0, GOTO 60       *EC = 163
   IF (BA.EQ.164) ERROR 4/0, GOTO 60       *EC = 164
   IF (BA.EQ.165) ERROR 5/0, GOTO 60       *EC = 165
   IF (BA.EQ.166) ERROR 6/0, GOTO 60       *EC = 166
   IF (BA.EQ.167) ERROR 7/0, GOTO 60       *EC = 167
   IF (BA.EQ.170) ERROR 10/0, GOTO 60      *EC = 170
   IF (BA.EQ.171) ERROR 11/0, GOTO 60      *EC = 171
   IF (BA.EQ.172) ERROR 12/0, GOTO 60      *EC = 172
   IF (BA.EQ.173) ERROR 13/0, GOTO 60      *EC = 173
   IF (BA.EQ.174) ERROR 14/0, GOTO 60      *EC = 174
   IF (BA.EQ.175) ERROR 15/0, GOTO 60      *EC = 175
   IF (BA.EQ.176) ERROR 16/0, GOTO 60      *EC = 176
   IF (BA.EQ.177) ERROR 17/0, GOTO 60      *EC = 177
50 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 70
60 MSG EM TO LINE B6
70 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 30 
COMPILE   - TCT982 -
   MODULE TCT983,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT983 - ROM ERROR CODE STATUS ANALYSIS - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT983  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5201 RD BLOCK ID.  WR PATH PE UPPER. 
2  FORMAT ROM EC 5202 RD BLOCK ID.  WR PATH PE LOWER. 
3  FORMAT ROM EC 5203 RD BLOCK ID.  MEMORY PE.
4  FORMAT ROM EC 5204 RD BLOCK ID.  BUS IN OR RD PATH PE. 
5  FORMAT ROM EC 5205 RD BLOCK ID.  READ PATH PE. 
6  FORMAT ROM EC 5206 RD BLOCK ID.  BUS OUT FAULT.
7  FORMAT ROM EC 5207 RD BLOCK ID.  TAG OUT FAULT UPPER.
10 FORMAT ROM EC 5210 RD BLOCK ID.  TAG OUT FAULT LOWER.
11 FORMAT ROM EC 5211 RD BLOCK ID.  FLAG BIT DETECTED.
12 FORMAT ROM EC 5212 RD BLOCK ID.  MIN BLK LENG NOT MET. 
13 FORMAT ROM EC 5213 RD BLOCK ID.  SELECT IN RECEIVED. 
14 FORMAT ROM EC 5214 RD BLOCK ID.  NO REQ IN ON POLL SEQ.
15 FORMAT ROM EC 5215 RD BLOCK ID.  DEVICE ADDR MISCOMPARE. 
16 FORMAT ROM EC 5216 RD BLOCK ID.  TIME OUT ON FIPS XFER.
17 FORMAT ROM EC 5217 RD BLOCK ID.  UNDEFINED ERROR.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5200 FULL/EMPTY CNTR WRONG AFTER WR DIAG SEQ.
30 IF (BA.GT.217) EXIT TO 984    *MORE ERROR CODES
   IF (BA.EQ.200) ERROR 22/0, GOTO 60      *EC = 200
   IF (BA.EQ.201) ERROR 1/0, GOTO 60       *EC = 201
   IF (BA.EQ.202) ERROR 2/0, GOTO 60       *EC = 202
   IF (BA.EQ.203) ERROR 3/0, GOTO 60       *EC = 203
   IF (BA.EQ.204) ERROR 4/0, GOTO 60       *EC = 204
   IF (BA.EQ.205) ERROR 5/0, GOTO 60       *EC = 205
   IF (BA.EQ.206) ERROR 6/0, GOTO 60       *EC = 206
   IF (BA.EQ.207) ERROR 7/0, GOTO 60       *EC = 207
   IF (BA.EQ.210) ERROR 10/0, GOTO 60      *EC = 210
   IF (BA.EQ.211) ERROR 11/0, GOTO 60      *EC = 211
   IF (BA.EQ.212) ERROR 12/0, GOTO 60      *EC = 212
   IF (BA.EQ.213) ERROR 13/0, GOTO 60      *EC = 213
   IF (BA.EQ.214) ERROR 14/0, GOTO 60      *EC = 214
   IF (BA.EQ.215) ERROR 15/0, GOTO 60      *EC = 215
   IF (BA.EQ.216) ERROR 16/0, GOTO 60      *EC = 216
   IF (BA.EQ.217) ERROR 17/0, GOTO 60      *EC = 217
50 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 70
60 MSG EM TO LINE B6
70 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 30 
COMPILE   - TCT983 -
   MODULE TCT984,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT984 - ROM ERROR CODE STATUS ANALYSIS - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT984  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5221 DIAG RD SEQ.  WR PATH PE UPPER. 
2  FORMAT ROM EC 5222 DIAG RD SEQ.  WR PATH PE LOWER. 
3  FORMAT ROM EC 5223 DIAG RD SEQ.  MEMORY PE.
4  FORMAT ROM EC 5224 DIAG RD SEQ.  BUS IN OR RD PATH PE. 
5  FORMAT ROM EC 5225 DIAG RD SEQ.  READ PATH PE. 
6  FORMAT ROM EC 5226 DIAG RD SEQ.  BUS OUT FAULT.
7  FORMAT ROM EC 5227 DIAG RD SEQ.  TAG OUT FAULT UPPER.
10 FORMAT ROM EC 5230 DIAG RD SEQ.  TAG OUT FAULT LOWER.
11 FORMAT ROM EC 5231 DIAG RD SEQ.  FLAG BIT DETECTED.
12 FORMAT ROM EC 5232 DIAG RD SEQ.  MIN BLK LENG NOT MET. 
13 FORMAT ROM EC 5233 DIAG RD SEQ.  SELECT IN RECEIVED. 
14 FORMAT ROM EC 5234 DIAG RD SEQ.  NO REQ IN ON POLL SEQ.
15 FORMAT ROM EC 5235 DIAG RD SEQ.  DEVICE ADDR MISCOMPARE. 
16 FORMAT ROM EC 5236 DIAG RD SEQ.  TIME OUT ON FIPS XFER.
17 FORMAT ROM EC 5237 DIAG RD SEQ.  UNDEFINED ERROR.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5220 BLOCK ID WRONG AFTER DIAG WRITE SEQ.
30 IF (BA.GT.237) EXIT TO 985    *MORE ERROR CODES
   IF (BA.EQ.220) ERROR 22/0, GOTO 60      *EC = 220
   IF (BA.EQ.221) ERROR 1/0, GOTO 60       *EC = 221
   IF (BA.EQ.222) ERROR 2/0, GOTO 60       *EC = 222
   IF (BA.EQ.223) ERROR 3/0, GOTO 60       *EC = 223
   IF (BA.EQ.224) ERROR 4/0, GOTO 60       *EC = 224
   IF (BA.EQ.225) ERROR 5/0, GOTO 60       *EC = 225
   IF (BA.EQ.226) ERROR 6/0, GOTO 60       *EC = 226
   IF (BA.EQ.227) ERROR 7/0, GOTO 60       *EC = 227
   IF (BA.EQ.230) ERROR 10/0, GOTO 60      *EC = 230
   IF (BA.EQ.231) ERROR 11/0, GOTO 60      *EC = 231
   IF (BA.EQ.232) ERROR 12/0, GOTO 60      *EC = 232
   IF (BA.EQ.233) ERROR 13/0, GOTO 60      *EC = 233
   IF (BA.EQ.234) ERROR 14/0, GOTO 60      *EC = 234
   IF (BA.EQ.235) ERROR 15/0, GOTO 60      *EC = 235
   IF (BA.EQ.236) ERROR 16/0, GOTO 60      *EC = 236
   IF (BA.EQ.237) ERROR 17/0, GOTO 60      *EC = 237
50 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 70
60 MSG EM TO LINE B6
70 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 30 
COMPILE   - TCT984 -
   MODULE TCT985,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT985 - ROM ERROR CODE STATUS ANALYSIS - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT985  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5240 FIPS ADDR INCORRECT AFTER DIAG WR SEQ.
2  FORMAT ROM EC 5250 DIAGNOSTIC RD DATA PATTERN INCORRECT. 
3  FORMAT ROM EC 5251 XFER REG ERROR AFTER DIAG RD SEQ. 
4  FORMAT ROM EC 5252 BLOCK ID WRONG AFTER DIAG RD SEQ. 
5  FORMAT ROM EC 5253 FIPS I/F SEQUENCE DID NOT COMPLETE. 
6  FORMAT ROM EC 5254 DATA STREAM DIAG READ TIME OUT. 
7  FORMAT ROM EC 5255 DATA STREAM DIAG WRITE TIME OUT.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
30 IF (BA.GT.255) EXIT TO 986    *MORE ERROR CODES
   IF (BA.EQ.240) ERROR 1/0, GOTO 60       *EC = 240
   IF (BA.EQ.250) ERROR 2/0, GOTO 60       *EC = 250
   IF (BA.EQ.251) ERROR 3/0, GOTO 60       *EC = 251
   IF (BA.EQ.252) ERROR 4/0, GOTO 60       *EC = 252
   IF (BA.EQ.253) ERROR 5/0, GOTO 60       *EC = 253
   IF (BA.EQ.254) ERROR 6/0, GOTO 60       *EC = 254
   IF (BA.EQ.255) ERROR 7/0, GOTO 60       *EC = 255
50 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 70
60 MSG EM TO LINE B6
70 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 30 
COMPILE   - TCT985 -
   MODULE TCT986,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT986 - ROM ERROR CODE STATUS ANALYSIS - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT986  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5261 STRM DIAG ERR.  WR PATH PE UPPER. 
2  FORMAT ROM EC 5262 STRM DIAG ERR.  WR PATH PE LOWER. 
3  FORMAT ROM EC 5263 STRM DIAG ERR.  MEMORY PE.
4  FORMAT ROM EC 5264 STRM DIAG ERR.  BUS IN OR RD PATH PE. 
5  FORMAT ROM EC 5265 STRM DIAG ERR.  READ PATH PE. 
6  FORMAT ROM EC 5266 STRM DIAG ERR.  BUS OUT FAULT.
7  FORMAT ROM EC 5267 STRM DIAG ERR.  TAG OUT FAULT UPPER.
10 FORMAT ROM EC 5270 STRM DIAG ERR.  TAG OUT FAULT LOWER.
11 FORMAT ROM EC 5271 STRM DIAG ERR.  FLAG BIT DETECTED.
12 FORMAT ROM EC 5272 STRM DIAG ERR.  MIN BLK LENG NOT MET. 
13 FORMAT ROM EC 5273 STRM DIAG ERR.  SELECT IN RECEIVED. 
14 FORMAT ROM EC 5274 STRM DIAG ERR.  NO REQ IN ON POLL SEQ.
15 FORMAT ROM EC 5275 STRM DIAG ERR.  DEVICE ADDR MISCOMPARE. 
16 FORMAT ROM EC 5276 STRM DIAG ERR.  TIME OUT ON FIPS XFER.
17 FORMAT ROM EC 5277 STRM DIAG ERR.  UNDEFINED ERROR.
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5300 DATA STREAM DIAG RD BLOCK ID WRONG. 
30 IF (BA.GT.300) EXIT TO 987    *MORE ERROR CODES
   IF (BA.EQ.300) ERROR 22/0, GOTO 60      *EC = 300
   IF (BA.EQ.261) ERROR 1/0, GOTO 60       *EC = 261
   IF (BA.EQ.262) ERROR 2/0, GOTO 60       *EC = 262
   IF (BA.EQ.263) ERROR 3/0, GOTO 60       *EC = 263
   IF (BA.EQ.264) ERROR 4/0, GOTO 60       *EC = 264
   IF (BA.EQ.265) ERROR 5/0, GOTO 60       *EC = 265
   IF (BA.EQ.266) ERROR 6/0, GOTO 60       *EC = 266
   IF (BA.EQ.267) ERROR 7/0, GOTO 60       *EC = 267
   IF (BA.EQ.270) ERROR 10/0, GOTO 60      *EC = 270
   IF (BA.EQ.271) ERROR 11/0, GOTO 60      *EC = 271
   IF (BA.EQ.272) ERROR 12/0, GOTO 60      *EC = 272
   IF (BA.EQ.273) ERROR 13/0, GOTO 60      *EC = 273
   IF (BA.EQ.274) ERROR 14/0, GOTO 60      *EC = 274
   IF (BA.EQ.275) ERROR 15/0, GOTO 60      *EC = 275
   IF (BA.EQ.276) ERROR 16/0, GOTO 60      *EC = 276
   IF (BA.EQ.277) ERROR 17/0, GOTO 60      *EC = 277
50 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 70
60 MSG EM TO LINE B6
70 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 30 
COMPILE   - TCT986 -
   MODULE TCT987,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT987 - ROM ERROR CODE STATUS ANALYSIS - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT987  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5311 WR STS STRM DIAG.  WR PATH PE UPPER.
2  FORMAT ROM EC 5312 WR STS STRM DIAG.  WR PATH PE LOWER.
3  FORMAT ROM EC 5313 WR STS STRM DIAG.  MEMORY PE. 
4  FORMAT ROM EC 5314 WR STS STRM DIAG.  BUS IN OR WR PATH PE.
5  FORMAT ROM EC 5315 WR STS STRM DIAG.  READ PATH PE.
6  FORMAT ROM EC 5316 WR STS STRM DIAG.  BUS OUT FAULT. 
7  FORMAT ROM EC 5317 WR STS STRM DIAG.  TAG OUT FAULT UPPER. 
10 FORMAT ROM EC 5320 WR STS STRM DIAG.  TAG OUT FAULT LOWER. 
11 FORMAT ROM EC 5321 WR STS STRM DIAG.  FLAG BIT DETECTED. 
12 FORMAT ROM EC 5322 WR STS STRM DIAG.  MIN BLK LENG NOT MET.
13 FORMAT ROM EC 5323 WR STS STRM DIAG.  SELECT IN RECEIVED.
14 FORMAT ROM EC 5324 WR STS STRM DIAG.  NO REQ IN ON POLL SEQ. 
15 FORMAT ROM EC 5325 WR STS STRM DIAG.  DEVICE ADDR MISCOMPARE.
16 FORMAT ROM EC 5326 WR STS STRM DIAG.  TIME OUT ON FIPS XFER. 
17 FORMAT ROM EC 5327 WR STS STRM DIAG.  UNDEFINED ERROR. 
20 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
21 FORMAT --------------------------------------------------
22 FORMAT ROM EC 5330 DATA STREAM DIAG WRITE BLOCK ID WRONG.
30 IF (BA.GT.330) EXIT TO 988    *MORE ERROR CODES
   IF (BA.EQ.330) ERROR 22/0, GOTO 60      *EC = 330
   IF (BA.EQ.311) ERROR 1/0, GOTO 60       *EC = 311
   IF (BA.EQ.312) ERROR 2/0, GOTO 60       *EC = 312
   IF (BA.EQ.313) ERROR 3/0, GOTO 60       *EC = 313
   IF (BA.EQ.314) ERROR 4/0, GOTO 60       *EC = 314
   IF (BA.EQ.315) ERROR 5/0, GOTO 60       *EC = 315
   IF (BA.EQ.316) ERROR 6/0, GOTO 60       *EC = 316
   IF (BA.EQ.317) ERROR 7/0, GOTO 60       *EC = 317
   IF (BA.EQ.320) ERROR 10/0, GOTO 60      *EC = 320
   IF (BA.EQ.321) ERROR 11/0, GOTO 60      *EC = 321
   IF (BA.EQ.322) ERROR 12/0, GOTO 60      *EC = 322
   IF (BA.EQ.323) ERROR 13/0, GOTO 60      *EC = 323
   IF (BA.EQ.324) ERROR 14/0, GOTO 60      *EC = 324
   IF (BA.EQ.325) ERROR 15/0, GOTO 60      *EC = 325
   IF (BA.EQ.326) ERROR 16/0, GOTO 60      *EC = 326
   IF (BA.EQ.327) ERROR 17/0, GOTO 60      *EC = 327
50 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 20(BA) TO LINE B6
   GOTO 70
60 MSG EM TO LINE B6
70 B6 = B6 + 1
   MSG 21 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 30 
COMPILE   - TCT987 -
   MODULE TCT988,DCART(46,47)LOCK  -  ROM ERROR CODE STATUS ANALYSIS -
*** TCT988 - ROM ERROR CODE STATUS ANALYSIS - 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ROM ERROR CODE STATUS ANALYSIS. 
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         TCT988  ASSUMES  THAT  THE  STATUS  BUFFER  CONTAINS CURRENT
*         STATUS FROM THE DEVICE AND IS ASSOCIATED  WITH  THE  CURRENT
*         FAILURE.
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
1  FORMAT ROM EC 5401 SYSTEM RESET ERR AFTER CKSM MICROCODE.
2  FORMAT ROM EC 5402 CYBER I/F STATUS ERR DURING AUTOLOAD. 
3  FORMAT ROM EC 5403 RAM RESIDENT CKSM ERR AFTER AUTOLOAD. 
4  FORMAT ROM EC 5404 RAM MEM TEST ERR BEFORE ATLD MICROCODE. 
5  FORMAT ROM EC 5501 TIME OUT FROM DISK DEVICE.
6  FORMAT ROM EC 5502 DISK SEEK ERR.
7  FORMAT ROM EC 5503 DISK SEEK ENDING STATUS ERR.
10 FORMAT ROM EC 5504 DOUBLE TAPE MARK ERR ON TAPE 6UU FCN. 
11 FORMAT ROM EC 5505 TAPE OR DISK READ DATA RECORD ERR.
12 FORMAT ROM EC 5507 SYSTEM RESET SEQUENCE ERR.
13 FORMAT ROM EC 5510 DISK SEARCH/READ TIME OUT ERROR.
14 FORMAT ROM EC 5600 SYSTEM RESET SEQUENCE ERR.
15 FORMAT ROM EC 5601 INITIAL SELECT/REWIND SEQUENCE ERR. 
16 FORMAT ROM EC 5602 CAN'T LOCATE MICROCODE RECORD ON TAPE.
17 FORMAT ROM EC 5603 INPUT MICROCODE RECORD ERR. 
20 FORMAT ROM EC 5604 RAM MICROCODE CHECKSUM ERR. 
22 FORMAT ROM EC 5605 FINAL SELECT/REWIND SEQUENCE ERR. 
23 FORMAT ROM EC *OCT UNRECOGNIZED ROM ERROR CODE 
24 FORMAT --------------------------------------------------
30 IF (BA.EQ.605) ERROR 22/0, GOTO 60      *EC = 630
   IF (BA.EQ.401) ERROR 1/0, GOTO 60       *EC = 401
   IF (BA.EQ.402) ERROR 2/0, GOTO 60       *EC = 402
   IF (BA.EQ.403) ERROR 3/0, GOTO 60       *EC = 403
   IF (BA.EQ.404) ERROR 4/0, GOTO 60       *EC = 404
   IF (BA.EQ.501) ERROR 5/0, GOTO 60       *EC = 501
   IF (BA.EQ.502) ERROR 6/0, GOTO 60       *EC = 502
   IF (BA.EQ.503) ERROR 7/0, GOTO 60       *EC = 503
   IF (BA.EQ.504) ERROR 10/0, GOTO 60      *EC = 504
   IF (BA.EQ.505) ERROR 11/0, GOTO 60      *EC = 505
   IF (BA.EQ.507) ERROR 12/0, GOTO 60      *EC = 507
   IF (BA.EQ.510) ERROR 13/0, GOTO 60      *EC = 510
   IF (BA.EQ.600) ERROR 14/0, GOTO 60      *EC = 324
   IF (BA.EQ.601) ERROR 15/0, GOTO 60      *EC = 325
   IF (BA.EQ.602) ERROR 16/0, GOTO 60      *EC = 326
   IF (BA.EQ.603) ERROR 17/0, GOTO 60      *EC = 327
   IF (BA.EQ.604) ERROR 20/0, GOTO 60      *EC = 327
50 BA = BA+5000                  *ILLEGAL ERROR CODE
   MSG 23(BA) TO LINE B6
   GOTO 70
60 MSG EM TO LINE B6
70 B6 = B6 + 1
   MSG 23 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT TO 98Z                   *RELOAD REGISTERS
   END 30 
COMPILE   - TCT988 -
   MODULE TCT98Z,DCART(46,47)LOCK  -  LOAD REGISTERS/RESTART CONTROLLER - 
*** TCT98Z - LOAD REGISTERS AND RESTART CONTROLLER -
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         LOAD REGISTERS AND RESTART CONTROLLER.
* 
*    1.2  METHOD- 
* 
*    1.3  ERRORS REPORTED-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*    2.3  SUBMODULES REFERENCED-
* 
* 
* --------DATA DIVISION 
* 
20 BA = IB(417B)
   B0 = IB(420B)
   B1 = IB(421B)
   B2 = IB(422B)                 *RELOAD REGISTERS
   B3 = IB(423B)
   B4 = IB(424B)
   B5 = IB(425B)
   B6 = IB(426B)
   B7 = IB(427B)
   B8 = IB(430B)
   B9 = IB(431B)
   B10 = IB(432B) 
   B11 = IB(433B) 
   B12 = IB(434B) 
   B13 = IB(435B) 
   B14 = IB(436B) 
   B15 = IB(437B) 
*         ATTEMPT TO INSURE CONTROLLER IS RUNNING 
   RES P1, ABT 60                *RESERVE 
   IF (SB(1).EQ.7777) GOTO 60 
   REL, ABT 76
60 RESET, ABT 64                 *RESTART CONTROLLER ON ABORT 
   GOTO 70
64 RESET, ABT 70                 *TRY TO START IT TWICE 
70 REL, ABT 76
76 EXIT 
   END 20 
COMPILE   - TCT98Z -
   MODULE TCT99,DCART(46,47)LOCK   -  DOCUMENTATION OVERVIEW -
*** TCT99  - DOCUMENTATION OVERVIEW 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT99 PROVIDES THE DOCUMENTATION OVERVIEW FOR TCT99 MODULES.
* 
  
 1 PAUSE
   EXIT TO 99A
/         FOR ADDITIONAL DOCUMENTATION, SEE THE FOLLOWING 
/         MODULES-- 
/ 
/         TCT99              OVERVIEW 
/         TCT99A             LIST OF MODULES
/         TCT99B             PARAMETER DESCRIPTION
   END 1
COMPILE,SOURCE   - TCT99 -
   MODULE TCT99A,DCART(46,47)LOCK  -  TCT MODULES LIST -
*** TCT99A - TCT MODULES LIST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT99A PROVIDES A BRIEF DESCRIPTION OF THE MODULES THAT MAKE
*         UP THE TCT TEST SERIES. THIS LIST CAN BE VIEWED VIA THE LOAD
*         TCT99A DISPLAY OR PRINTED.
* 
  
/ 
/   1.2   PART ONE - DIAGNOSTIC PASS
/ 
/      1. VERIFY PARAMETERS 
/ 
/         TCT00 - PARAMETER VALIDATION
/ 
*IF DEF,CMSE17X 
/      2. INSURE CCC IS OPERATIONAL 
/ 
/         TCT01 - EXECUTE CCC ROM DIAGNOSTICS 
/ 
*ENDIF
/      3. VERIFY TAPE HANDLING CAPABILITIES 
/ 
/         TCT03 - TAPE MOTION TEST
/         TCT05 - RANDOM TAPE MOTION TEST 
/ 
/      4. PRELIMINARY DATA INTEGRITY TESTING BY BIT 
/ 
/         TCT07 - BUFFER/TAPE TEST
/ 
/      5. TEST DATA INTEGRITY OF SINGLE OPERATIONS
/ 
/         TCT11 - ERASE TEST
/         TCT13 - WRITE TAPE MARK/FILE MARK 
/         TCT14 - READ TAPE MARK/FILE MARK
/         TCT15 - MAINTENANCE WRITE 
/         TCT16 - MAINTENANCE READ
/         TCT19 - SHORT LOCATE BLOCK TEST 
/ 
/      6. PERFORMANCE TEST USING SEQUENCES OF OPERATIONS
/ 
/         TCT21 - BACKSPACE TEST
/         TCT23 - BACKSPACE TEST INCREMENTING LENGTH
/         TCT25 - WRITE BACKSPACE AND ERASE 
/         TCT27 - WRITE BACKSPACE AND ERASE INCR. LENGTH
/         TCT29 - RANDOM WRITE TEST 
/         TCT30 - RANDOM READ TEST
/         TCT33 - LOCATE BLOCK TEST 
/         TCT35 - POSITION TEST 
/         TCT37 - SYNCHRONIZE TEST
/         TCT39 - WRITE/READ TO EOT TEST
/ 
/   1.3   PART TWO - REPAIR MODULES 
/ 
/         TCT41 - TAPE PATH DAMAGE
/         TCT43 - GENERAL STATUS
/         TCT45 - SEARCH FILE MARK TEST (AL 10 REQUIRED)
/         TCT47 - READ BUFFERED LOG 
/         TCT51 - COMPATIBILITY TEST
/         TCT52 - COMPATIBILITY TAPE CLEANUP
/         TCT53 - FIXED/RANDOM PATTERN WRITE TEST 
/         TCT55 - MAINTENANCE LONG WRITE
/         TCT56 - MAINTENANCE DOUBLE LONG WRITE 
/         TCT57 - MAINTENANCE QUAD LONG WRITE 
/         TCT58 - MAINTENANCE QUAD DOUBLE LONG WRITE
/         TCT59 - WRITE TEST ERROR TRACK SENSING
/         TCT61 - READ ANY TAPE DISPLAY BUFFERED LOG
/         TCT63 - FILE PROTECT/UNLOAD TEST
/ 
/  1.4    PART THREE - MODULES TO TEST FCO CA 51479 
/ 
/         TCT71 - RANDOM SHORT WRITE WITH DELAY TEST
/         TCT72 - RANDOM SHORT READ TEST
/         TCT73 - LONG WRITE WITH DELAY TEST
/         TCT75 - WRITE SHORT PLUS WITH DELAY TEST
/         TCT77 - RANDOM WRITE SHORT PLUS WITH DELAY TEST 
/ 
 1 PAUSE
   EXIT TO 99B
   END 1
COMPILE,SOURCE   - TCT99 -
   MODULE TCT99B,DCART(46,47)LOCK  -  TCT PARAMETERS -
*** TCT99B - TCT PARAMETERS (P0 - P9) 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TCT99B PROVIDES  A DESCRIPTION OF THE PARAMETERS FOR VIEWING
*         VIA THE  LOAD  TCT99B  COMMAND.  THESE  HAVE BEEN PREVIOUSLY
*         DESCRIBED IN THE EXTERNAL DOCUMENTATION.
* 
  
/  -PARAMETER REGISTER SETTINGS-
/ 
/  P0 = 0000  DO NOT POST SENSE STATUS OR ANALYZE 
/             SENSE BYTES 24-31 UPON ERROR
/       XXX1  POST SENSE STATUS UPON ERROR
/       XX1X  ANALYZE AND POST SENSE BYTES 24-31
/ 
/  P1 = CE00
/  CX00 - SELECT CODE CONVERSION TABLE
/       0000 = NO CODE CONVERSION SELECTED
/       1X00-7X00 = SELECT CODE CONVERSION TABLE 1-7
/       NOTE-IN STREAMING MODE CODE CONVERSION IS NOT USED
/  XE00 - AUTOMATIC ERROR RECOVERY ENABLED/DISABLED 
/       X000 = AUTOMATIC ERROR RECOVERY ENABLED 
/       X100 = AUTOMATIC ERROR RECOVERY DISABLED
/ 
/  P2 = RECORD LENGTH 
/ 
/  P3 = FLAG BITS 
/  XXFF - FLAG BITS 
/    -- XX4X =  MAINTENANCE MODE (0=DIAGNOSTIC PASS)
/       XXX4 =  LOCK TO BASE NUMBER - IF RANDOM PATTERN IS
/               SELECTED P7 WILL CONTAIN THE BASE NUMBER FOR
/               PATTERN GENERATION. 
/       XXX2 =  COMPARE DATA - COMPARES THE FIRST 400 OCTAL 
/               WORDS OF THE INPUT BUFFER EVEN IF NO ERRORS 
/               OCCUR.
/       XXX1 =  BYPASS RECORD NUMBERING 
/               IF THE BIT IS CLEAR POSITION DATA IS PLACED 
/               IN THE OUTPUT BUFFER DURING WRITE OPERATIONS
/               AS FOLLOWS -
/               OB(1) = CURRENT FILE NUMBER 
/               OB(2) = CURRENT RECORD NUMBER 
/               OB(3) = RECORD LENGTH 
/ 
/  P4 - DATA PATTERN GENERATION CONTROL 
/       4XXX - REPORT FM/TM ERRORS (ERR - 207)
/       2XXX - SELECT RANDOM PATTERN
/              THE RANDOM PATTERN GENERATED IS DETERMINED BY
/              THE BASE RANDOM NUMBER(P7).AND.THE LOCK TO 
/              BASE NUMBER BIT(P3=XXX4).
/       1XXX - SELECT ALTERNATE PATTERN XXX 
/              PATTERN XXX IS STORED IN THE 1ST,3RD,5TH,ETC 
/              6 OR 8 BIT BYTES OF THE OUTPUT BUFFER. THE 
/              COMPLEMENT OF XXX IS STORED IN THE 2ND, 4TH, 
/              6TH ETC BYTES. 
/       0XXX - SELECT FIXED PATTERN XXX 
/              XXX IS A 6 OR 8 BIT PATTERN. 
/ 
/ 
/  P5 - DELAY COUNT 
/       0XXX = DELAY BETWEEN 500B BLOCKS TO SIMULATE CENTRAL
/              MEMORY CONFLICTS.  (FOR MODULES TCT71 - TCT77
/              ONLY)
/ 
/  P6 - PLUS COUNT FOR ODD BYTES
/       00XX = ADDITION  OF PP WORDS TO THE WRITE SHORT PLUS
/              COMMAND.  USED  TO  TEST  ODD BYTES WITH LONG
/              RECORDS. (FOR MODULES TCT73 - TCT77 ONLY)
/ 
/  P6 - SYSTEM ID 
/       SSSS - SYSTEM ID (FOR MODULE TCT51 ONLY)
/ 
/  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 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   - TCT99A - 
