*DECK     F44 - FEDERAL STANDARD CHANNEL DISK SUBSYSTEM.
***       F44 - FEDERAL STANDARD CHANNEL DISK SUBSYSTEM.
***       REVISION HISTORY
**        F44 - FEDERAL STANDARD CHANNEL DISK SUBSYSTEM.
*         F44 - FEDERAL STANDARD CHANNEL DISK SUBSYSTEM.
* 
*         AUTHOR - K. MUSTAFA     MAY 8, 1980 
* 
*         COPYRIGHT CONTROL DATA CORP. 1979 
* 
*** 1.0   INTRODUCTION
**  1.0   INTRODUCTION
*   1.0   INTRODUCTION
*         ------------
* 
*         F44 IS A TEST FOR THE FEDERAL STANDARD  CHANNEL DISK
*         SUBSYSTEM IT INCLUDES 100 AND 200 MEGABYTE DISKS. IT IS 
*         A 10 MINUTES PER DRIVE  TEST TO ACQUIRE A HIGH DEGREE 
*         OF CONFIDENCE THAT THE SUBSYSTEM IS OPERATIONAL.
*         THE CONFIDENCE  PORTION  OF  THE TEST MUST BE RUN ON
*         ON EACH  SPINDLE  OF THE  DRIVE  TO  INSURE THAT THE
*         THE ENTIRE SUBSYSTEM IS OPERATIONAL.
* 
*         THE TEST IS DIVIDED INTO THREE PARTS. 
* 
*           PART I = CONFIDENCE/VERIFICATION MODULES
* 
*            THIS  SECTION  REQUIRES  NO  PARAMETER  INPUT. ITS 
*            FUNCTION IS TO PROVIDE THE OPERATOR WITH  A  LEVEL 
*            OF  CONFIDENCE IN  THE    SUBSYSTEM HARDWARE WHILE 
*            SHARING A DRIVE WITH THE SYSTEM. THE  MODULES  ARE 
*            ARRANGED  SO  THAT BASIC ADAPTER FUNCTIONS WILL
*            BE TESTED PRIOR TO MORE COMPLEX ADAPTER FUNCTIONS. 
*            FOLLOWING   THE   ADAPTER  VERIFICATION ,THE DRIVE 
*            WILL  BE  TESTED  IN  THE  SAME  BUILDING   BLOCK
*            PYRAMID  FASHION. ACCESS  LEVELS OF  1 AND 3 ARE 
*            REQUIRED WHEN RUNNING THE  CONFIDENCE  PORTION  OF 
*            THE  TEST  TO  OBTAIN  THE  BENEFITS  OF USING THE 
*            BUILDING BLOCK APPROACH. IF A LOWER  ACCESS  LEVEL 
*            IS  CHOSEN,  THE  OPERATOR  SHOULD  REFERENCE  THE 
*            SOFTWARE REQUIREMENTS SECTION OF THIS ERS (SECTION 
*            4.7)  FOR  INFORMATION AS TO WHAT  MODULES WILL BE 
*            RUN UNDER THIS CONDITION.  SCOPE  LOOPING  IS  NOT 
*            AVAILABLE IN THIS SECTION. 
* 
*           PART II = PARAMETER DRIVEN MODULES
* 
*            WHEN A MODULE OF THIS SECTION HAS BEEN SELECTED, 
*            THE USER CAN  ALSO  SET  THE  PARAMETER  REGISTERS 
*            TO   SELECT   AN   ADDRESS, DATA   PATTERN, WRITE/ 
*            READ OPTION, AND ITERATION    COUNT. THE   REPEAT
*            CONDITION/REPEAT MODULE AND STOP-ON-ERROR SWITCHES 
*            CAN BE USED AS AN AID IN LOCATING A FAILURE. THESE 
*            MODULES ARE CAPABLE OF READING/WRITING  OVER  THE
*            ENTIRE   DISK PACK.    THE OPERATOR MAY SELECT AN
*            ACCESS  LEVEL  OF  1  THRU  4  WHEN  RUNNING  THE
*            PARAMETER  DRIVEN  MODULES.  HOWEVER, THE ACCESS 
*            LEVEL   SELECTED MAY RESTRICT THE USABLE ADDRESS 
*            RANGE (SEE SECTION 4.7). 
* 
*           PART III = REPAIR MODULES 
* 
*            THE REPAIR MODULES MAY AID THE USER IN LOCATING A
*            SPECIFIC PROBLEM.THESE MODULES EXERCISE ONE FUNCTION 
*            AND  ALLOW THE OPERATOR TO RUN IN SCOPE LOOP MODE. 
*            PARAMETER INPUT IS AVAILABLE AND THE SWITCHES (EG
*            RC,RM,SE)- ARE SENSED. 
* 
*** 1.1   RESTRICTIONS
**  1.1   RESTRICTIONS
*   1.1   RESTRICTIONS
*         ------------
* 
*         1.  ANY MICROCODE OR CONTROLWARE IS ASSUMED TO BE LOADED. 
*         2.  ON MODULE DETECTED ERRORS, THE EC  REGISTER  IS  USED 
*             INTERNALLY BY THE TEST AND DO NOT CONTAIN ACTUAL ERROR
*             CODE  OR  ACTUAL ERROR  MESSAGE  FORMAT NUMBER. THE EC
*             REGISTER  IS  USED TO  INDICATE TO THE ERROR PROCESSING 
*             SUBMODULE IF DATA OR STATUS COMPARE ERROR INFORMATION IS
*             TO  BE  DISPLAYED IN  THE  ERROR MESSAGE DISPLAY. THE EC
*             REGISTER IS SET TO 0 IF NO DATA IS TO BE DISPLAYED, 1 IF
*             DATA  COMPARE ERRORS ARE TO BE DISPLAYED, 2 IF A STATUS 
*             WORD COMPARE ERROR  IS TO  BE  DISPLAYED  IN  THE  ERROR
*             MESSAGE  DISPLAY. 
* 
*         3.  THE UTILITY, FFU MUST HAVE PREVIOUSLY BEEN  USED  TO
*             PREWRITE SECTORS OF THE UTILITY CYLINDER WITH A WORST 
*             CASE DATA PATTERN. THESE SECTORS ARE USED BY MODULE 8.
* 
*         4.  F4412 SHOULD BE RUN BEFORE F4413, F4421 SHOULD
*             BE RUN BEFORE F4422.
* 
* 
*** 1.2   CHARACTERISTICS 
**  1.2   CHARACTERISTICS 
*   1.2   CHARACTERISTICS 
*         --------------- 
* 
*         1.  PROGRAM NAME..................................F44.
* 
*         2.  TEST/DIAG/UTILITY/SYSTEM.....................TEST.
* 
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER........MALET.
* 
*         4.  RUN TIME (DEFAULT).................3 MIN., 20 SEC.
* 
*         5.  RUN TIME/QUICK LOOK (DEFAULT).............N/A.
* 
*         6.  LEVEL OF ISOLATION......................DETECTION.
* 
*         7.  ON-LINE/OFF-LINE/BOTH........................BOTH.
* 
*         8.  ON-LINE SYSTEM.........................NOS,NOS/BE.
* 
*         9.  OFF-LINE SYSTEM............................MSL100.
* 
*         10. ASSEMBLY LANGUAGE...........................MALET.
* 
*         11. SOURCE CODE MAINTENANCE....................UPDATE.
* 
*** 2.0   APPLICABLE DOCUMENTS
**  2.0   APPLICABLE DOCUMENTS
*   2.0   APPLICABLE DOCUMENTS
*         --------------------
* 
*         1. ENGINEERING SPECIFICATION NO. 10358283, FEDERAL
*            STANDARD CHANNEL ADAPTER.
* 
*            FIPS PUB 60  I/O CHANNEL INTERFACE. CATEGORY 
*                         HARDWARE STANDARD, SUBCATEGORY_ 
*                         INTERFACE.
* 
*            FIPS PUB 61  CHANNEL LEVEL POWER CONTROL INTERFACE.
*                         CATEGORY_ HARDWARE STANDARD,
*                         SUBCATEGORY  INTERFACE. 
* 
*            FIPS PUB 63   OPERATIONAL SPECIFICATION FOR ROTATING 
*                          MASS STORAGE SUBSYSTEM.
* 
*            FEDERAL STANDARD CHANNEL ADAPTER MA454-A CONTROLWARE 
*            EXTERNAL REFERENCE SPECIFICATION PUB NO 53695245.
* 
*         2. MALET REFERENCE MANUAL (PUB. NO. 60456020) 
* 
*IF,-DEF,CMSE17X,1
*         3. CML REFERENCE MANUAL (PUB. NO. 60455860).
*ENDIF
*IF,DEF,CMSE17X 
*         3. DEMOT REFERENCE MANUAL (PUB.NO.60455310).
*ENDIF
*         4. MSL100 OFF-LINE MAINTENANCE SYSTEM LIBRARY,
*            VOLUME 1, REFERENCE MANUAL (PUB. NO. 60455770).
*         5. DEMOT REFERENCE MANUAL (PUB.NO. 60456310). 
* 
* 
*** 3.0   PROGRAM DESCRIPTION 
**  3.0   PROGRAM DESCRIPTION 
*   3.0   PROGRAM DESCRIPTION 
*         ------------------- 
* 
*   3.1   PROGRAM NAME
*         ------------
* 
*         --------
*         ABSTRACT
*         ----------
* 
*         F44 IS A   TEST  FOR  THE  100 AND 200  MEGABYTE  DISKS 
*         SUBSYSTEM. THE TEST IS  DIVIDED  INTO  THREE PARTS, THE 
*         CONFIDENCE/VERIFICATION MODULES (F4401-F4416),SELECTABLE
*         PARAMETER  MODULES  (F4420-F4423)  AND  REPAIR   MODULES
*         (F4430 - F4435) ALSO PARAMETER DRIVEN.
* 
*         THE MODULES ARE DESIGNED TO GIVE THE USER A HIGH
*         DEGREE OF CONFIDENCE THAT THE DISK SUBSYSTEM IS 
*         OPERATIONAL.
* 
* 
*** 3.1.1 MODULES 
**  3.1.1 MODULES 
*   3.1.1 MODULES 
*         ------- 
* 
*         F4401 - ADAPTER CONNECT TEST
*         ----------------------------
* 
*         PURPOSE-
*         F4401 HELPS TO VERIFY THE COMMUNICATION PATH TO 
*         THE ADAPTER.
* 
*         F4402 - ZERO WORD AUTOLOAD TEST 
*         ------------------------------- 
* 
*         PURPOSE - 
*         F4402 TEST THE RESET OPERATION. 
* 
*         F4403 - GENERAL STATUS TEST 
*         --------------------------- 
* 
*         PURPOSE-
*         F4403 CHECKS THE DATA PATH TO THE ADAPTER BY READING
*         AND COMPARING THE GENERAL STATUS. 
* 
*         F4404 - DETAILED STATUS TEST
*         ----------------------------
* 
*         PURPOSE-
*         F4404 CHECKS THE DATA PATH  TO THE ADAPTER BY READING 
*         AND COMPARING THE DETAILED STATUS.
* 
*         F4405 - C170 INTERFACE WRITE/READ TEST
*         ----------------------------------------
* 
*         PURPOSE-
*         F4405 WILL CHECK THAT THE CHANNEL  WILL TRANSFER   DATA 
*         TO    AND    FROM   THE  ADAPTER    BUFFER .   INITIALLY
*         MULTIPLE   READS OF THE  ADAPTER  BUFFER  ARE  EXECUTED 
*         TESTING FOR INTERMITTENT FAILURES.  THEN WRITE/ READS ARE 
*         ARE PERFORMED USING KNOWN DATA PATTERNS TO DETECT  SOLID
*         BIT  FAILURES.
* 
*         F4406 - WRITE/DMA READ TEST 
*         ----------------------------- 
* 
*         PURPOSE-
*         F4406 WILL CHECK THE DATA PATH    AND   WRITE   DATA
*         TO  THE  ADAPTER   BUFFER.  MULTIPLE  READ/WRITES ARE 
*         PERFORMED TO DETECT ANY SOLID BIT FAILURES.THE DRIVE IS 
*         ACCESSED IN THIS TEST.
* 
*         F4407- READ FLAW MAP TEST 
*         --------------------------
* 
*         PURPOSE-
*         F4407 DETERMINES IF THE SERIAL NUMBER, AND UTILITY FLAW MAP 
*         CAN BE READ OFF THE  PRE-RECORDED  SECTORS   OF A   FACTORY 
*         FORMATTED PACK.  SOLID BIT FAILURES MAY BE BE  DETECTED 
*         SINCE  THIS  DATA  IS NOT KNOWN.
* 
*         F4408 - READ PREWRITTEN SECTORS TEST
*         ------------------------------------
* 
*         PURPOSE-
*         F4408 THE PREWRITTEN  SECTORS  OF  THE  FLAW/MAP  DIAGNOSTIC
*         CYLINDER WERE ORIGINALLY WRITTEN WITH A WORST CASE PATTERN BY 
*         THE FFU UTILITY AT INSTALLATION TIME. F4408 IS USED TO VERIFY 
*         THAT THE HEAD POSITIONING IS THE SAME AS WHEN THESE  SECTORS
*         WERE WRITTEN BY THE FFU UTILITY. ALSO BY PERFORMING A READ ON 
*         A KNOWN DATA PATTERN, FAILING READ LOGIC CAN BE ISOLATED. 
* 
*         F4409 - WRITE PRE-ALLOCATED CYLINDER TEST 
*         ----------------------------------------- 
* 
*         PURPOSE-
*         F4409 IS A CROSS-CHECK FOR THE POSITIONER. SINCE EVERY SECTOR 
*         CODED DATA IS UNIQUE,IT IS EASY TO DETECT A POSITIONER FAULT. 
*         ALL HEADS AND SECTORS OF THE CYLINDER WILL BE USED DURING THIS
*         TEST  AND  THE ADDRESS CODING  INFORMATION  WRITTEN  IN  EACH 
*         SECTOR WILL BE USED TO  INSURE THAT  THE  DATA  WAS  RECORDED 
*         ON THE SURFACE WHERE  EXPECTED. DATA IS  WRITTEN  ON  THE  CE 
*         CYLINDER. 
* 
*         F4410 - WRITE/COMPARE PREALLOC.CYL. 
*         ----------------------------------------- 
* 
*         PURPOSE-
*         F4410 THE PURPOSE OF THIS MODULE IS  TO VERIFY THAT  THE
*         CYLINDER MODE WORKS. THIS MODULE IS RUN IN CYLINDER MODE
*         TO DETECT PROBLEMS THAT  WOULD NOT OCCUR IN TRACK MODE. 
* 
*         F4411 - RANDOM SEEK TEST
*         ------------------------
* 
*         PURPOSE-
*         F4411  PERFORMS  50B SEEKS  FROM  RANDOM  CYLINDERS  TO  THE
*         INNERMOST  CYLINDER  AND BACK TO THE  RANDOM  CYLINDER. THIS
*         MODULE CAN BE USED AS A HEAD SHAKE TEST TO  BOUNCE THE HEADS
*         AROUND AFTER ADJUSTMENTS  HAVE BEEN MADE. 
* 
*         F4412 - WRITE CODED CYLINDER TEST 
*         --------------------------------- 
* 
*         PURPOSE-
*         F4412 CYLINDER MODE WILL PERFORM WRITE CYLINDER FASTER  THAN
*         TRACK MODE,CREATING A WORST CASE CONDITION  TO  ENHANCE ERROR 
*         DETECTION.  WHEN F4412 WRITES CODED DATA,  EACH  SECTOR  WILL 
*         CONTAIN  UNIQUE  DATA  WHICH  WILL  MAKE A READ ERROR EASY TO 
*         ASSOCIATE WITH THE FAILING ADDRESS.  THIS TEST IS PRIMARILY A 
*         TEST  OF THE AUTOMATIC ADDRESS INCREMENTING PROCESS PERFORMED 
*         BY THE CONTROLWARE IN CYLINDER MODE.
* 
*         F4413 - READ/COMPARE A CODED CYLINDER 
*         --------------------------------------------
* 
*         PURPOSE-
*         F4413 THE PURPOSE OF THIS TEST IS TO CHECK THAT THE ADDRESS 
*         CODING WAS CORRECTLY WRITTEN BY THE PREVIOUS MODULE (F4412).
* 
*         F4414- READ SHORT.
*         ------------------
* 
*         PURPOSE-
*         READ SHORT EACH ONE OF THE SUBTEST PATTERNS LISTED
*         BELOW 3 TIMES.  THE CHANNEL IS RESERVED AND 
*         RELEASED ON EACH SUBTEST.  SECTOR 0 ON TRACK 0
*         OF THE FIRST PREALLOCATED CYLINDER WILL BE USED FOR 
*         TESTING.
* 
*         SUBTEST  WORD1   WORD2   REST  GENERAL STATUS 
*           1       0000   0000    0000      0
*           2       4000   0000    0000      0
*           3       4000   4000    0000      5020 
* 
*         F4415 - MEASURE SEEK TIME 
*         ------------------------
* 
*         PURPOSE-
*         F4415 CHECKS THAT THE SEEK TIME LIES IN RANGE 
*         (50-56D) MSEC.
* 
*         F4416 - READ SEQUENTIAL, CYLINDER MODE, THE ENTIRE DISK.
*         ----------------------------------------------------
* 
*         PURPOSE 
*         F4416 - READ SEQUENTIAL, CYLINDER MODE, ENTIRE DISK 
*         STARTING WITH SECTOR 0, TRACK 0, CYLINDER 0, THE
*         FULL DISK IS READ IN SEQUENTIAL, CYLINDER MODE. 
*         READ COMMAND IS USED TO READ THE PACK.
* 
*         F4420 - TRACK WRITE/READ
*         ------------------------
*         F4420 WILL WRITE AND READ EACH TRACK SELECTED ON THE DRIVE. 
* 
* 
*         F4421 - TRACK WRITE READ COMPARE
*         --------------------------------
* 
*         PURPOSE-
*         F4421  WILL  WRITE,  READ  AND COMPARE THE DATA READ FROM THE 
*         TRACK FOR EACH TRACK SELECTED.
* 
* 
*          F4422- CYLINDER WRITE READ 
*         --------------------------- 
* 
*         PURPOSE-
*         F4422 WILL WRITE AND READ EACH CYLINDER SELECTED
*         ON THE DRIVE. 
* 
*         F4422A - PARAMETER VERIFICATION 
*        -------------------------------- 
* 
*         PURPOSE-
*         F4422A  CHECKS  THE  PARAMETER  WORD  P3  TO  VERIFY THAT ALL 
*         SECTORS IN A TRACK ARE SELECTED.  IF PARAMETER P3 ENTRY ERROR 
*         IS  DETECTED, THE MODULE REPORTS AN ERROR SO THE OPERATOR CAN 
*         CORRECT THE PROBLEMS AND RERUN THE PRIMARY MODULE.
* 
*         F4423 - RANDOM WRITE/READ 
*         ------------------------- 
* 
*         PURPOSE-
*         F4423 WILL DO WRITES AND READS USING RANDOM CYLINDER NUMBERS, 
*         RANDOM TRACK NUMBERS, RANDOM SECTOR  NUMBERS,  AND  A  RANDOM 
*         NUMBER OF SECTORS.
* 
* 
*         F4423A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         F4423A CHECKS THAT WRITE IS ENABLED IN PARAMETER WORD P5. 
* 
*         F4430 - RESET MAINTENANCE TEST
*         ------------------------------
* 
*         PURPOSE-
*         F4430 ISSUES A RESET COMMAND TO THE  ADAPTER TO CORRECT 
*         A HUNG CONDITION. 
* 
*         F4431 - SEEK ADDRESS TEST 
*         ------------------------- 
* 
*         PURPOSE-
*         F4431  PERFORMS  A  SEEK TO THE ADDRESS SELECTED IN PARAMETER 
*         P0, P2, AND P3. 
* 
*         F4432 -  WRITE ONE SECTOR 
*         ------------------------- 
* 
*         PURPOSE-
*         F4432 WRITES THE SECTOR SELECTED IN PARAMETER P0,P2 AND P3. 
* 
*         F4433 - READ ONE SECTOR TEST
*         ----------------------------
* 
*         PURPOSE-
*         F4433 READS THE SECTOR SELECTED BY PARAMETERS P0,P2 AND P3. 
* 
*         F4434 - WRITE/READ ONE SECTOR 
*         ----------------------------- 
* 
*         PURPOSE-
*         F4434  WRITES AND READS ONE SECTOR AS SELECTED BY THE P0,P2,
*         AND P3 PARAMETERS.
* 
* 
*         F4435 - TOGGLE PARAMETER TEST 
*         ----------------------------- 
* 
*         PURPOSE-
*         F4435  TOGGLE BETWEEN THE UPPER AND LOWER ADDRESS BOUNDARIES
*         BY PERFORMING A SEEK AND READ OF THE DATA ON THESE
*         ADDRESSES.
* 
* 
* 
* 
* 
*** 3.1.2 DESCRIPTION DETAILED
**  3.1.2 DESCRIPTION DETAILED
*   3.1.2 DESCRIPTION DETAILED
*         --------------------
* 
*         OPERATIONAL PROCEDURE 
*         --------------------- 
* 
*         1.  REFER TO THE MALET REFERENCE MANUAL (PUB.  NO.60456020) 
*             FOR A DETAILED DESCRIPTION OF THE MALET LANGUAGE. 
* 
*IF -DEF,CMSE17X
*         2.  REFER TO THE CML REFERENCE MANUAL (PUB. NO. 60455980) TO
*             RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS.
*ENDIF
*         3.  REFER TO THE DEMOT REFERENCE MANUAL (PUB.  NO. 60456310)
*             TO RUN DEMOT UNDER THE CMSE OPERATING SYSTEM. 
* 
*         4.  REFER TO THE MSL100 OFF-LINE MAINTENANCE SYSTEM LIBRARY,
*             VOLUME 1, REFERENCE MANUAL (PUB. NO.60455770) TO RUN THE
*             CMSE OFF-LINE MAINTENANCE SYSTEM. 
* 
*** 3.1.3 LOADING PROCEDURE 
**  3.1.3 LOADING PROCEDURE 
*   3.1.3 LOADING PROCEDURE 
*         ----------------- 
*         ** WARNING ** - THE FOLLOWING LOADING PROCEDURES ARE  INTENDED
*                         AS  GENERAL  EXAMPLES  ONLY  AND  MAY  REQUIRE
*                         MODIFICATION WHEN USED IN A SPECIFIC  ENVIRON-
*                         MENT. 
* 
*IF -DEF,CMSE17X
*         TO LOAD THE F44 MALET MODULES WHILE  RUNNING  ON  THE  NOS/BE 
*         OPERATING SYSTEM, RUN THE FOLLOWING JOB-
* 
*         JOB/ACCOUNT CARDS.
*         REQUEST,OLDPL,MT,VSN=CML. 
*         UPDATE,Q. 
*         MALET,I=COMPILE,LO=LS,KL. 
*         7/8/9 
*         *C F44
*         6/7/8/9 
* 
*         TO LOAD THE F44  MALET MODULES  WHILE RUNNING  ON THE NOS 
*         OPERATING SYSTEM, RUN THE FOLLOWING JOB-
* 
*         JOB/USER/ACCOUNT CARDS. 
*         REQUEST,OLDPL,MT,D=HY,F=SI,LB=KU,VSN=CML. 
*         UPDATE,Q. 
*         MALET,I=COMPILE,LO=LS,KL. 
*         7/8/9 
*         *C F44
*         6/7/8/9 
* 
*         TO INSTALL THE F44 MALET MODULES AS PERMANENT  FILES ON THE 
*         NOS/BE OPERATING SYSTEM, RUN THE FOLLOWING JOB- 
* 
*         JOB/ACCOUNT CARDS.
*         REQUEST,OLDPL,MT,VSN=CML. 
*         UPDATE,Q. 
*         REQUEST,RFILE,*PF.
*         MALET,I=COMPILE,LO=LS.
*         CATALOG,RFILE,F44,ID=YOUR ID. 
*         UNLOAD,RFILE. 
*         7/8/9 
*         *C F44
*         6/7/8/9 
* 
*         TO  INSTALL  THE  F44 MALET MODULES AS PERMANENT FILES ON THE 
*         NOS OPERATING SYSTEM, RUN THE FOLLOWING JOB-
* 
*         JOB/USER/ACCOUNT CARDS. 
*         REQUEST,OLDPL,MT,D=HY,F=SI,LB=KU,VSN=CML. 
*         UPDATE,Q. 
*         DEFINE,RFILE=F44. 
*         MALET,I=COMPILE,LO=LS.
*         UNLOAD,RFILE. 
*         7/8/9 
*         *C F44
*         6/7/8/9 
* 
*** 3.1.4 RUNNING PROCEDURE 
**  3.1.4 RUNNING PROCEDURE 
*   3.1.4 RUNNING PROCEDURE 
*         ----------------- 
*         TO  RUN THE F44 MALET MODULES FROM THE PERMANENT FILE CREATED 
*         ON THE NOS/BE OPERATING SYSTEM, RUN THE FOLLOWING JOB-
* 
*         JOB/ACCOUNT CARDS.
*         ATTACH,RFILE,F44,ID=YOUR ID.
*         MALET,KL. 
*         7/8/9 
*         ASSIGN,EST=NN,AL=3
*         R,F44 
*         6/7/8/9 
* 
*         TO  RUN THE F44 MALET MODULES FROM THE PERMANENT FILE CREATED 
*         ON THE NOS OPERATING SYSTEM, RUN THE FOLLOWING JOB- 
* 
*         JOB/USER/ACCOUNT CARDS. 
*         ATTACH,RFILE=F44. 
*         MALET,KL. 
*         7/8/9 
*         ASSIGN,EST=NN,AL=3
*         R,F44 
*         6/7/8/9 
* 
*ENDIF
*IF DEF,CMSE17X 
*         TO  LOAD  THE  F44  DEMOT MODULES  WHILE RUNNING ON THE CMSE
*         OFF-LINE OPERATING SYSTEM, EITHER ENTER OR CREATE  A  COMMAND 
*         BUFFER OF THE FOLLOWING COMMANDS- 
* 
*         DP*4               (DEADSTART PP 4) 
*         DP*5               (DEADSTART PP 5) 
*         CP*4,MCX,0,5       (LOAD MCX (EXEC) TO PP 4)
*         CP*5,MLD,0,5       (LOAD MLD (DRIVER) TO PP 5)
*         RU*4,100           (RUN THE EXEC AT ADDRESS 100)
*         SQ*77,1,4          (WAIT UNTIL EXEC IS INITIALIZED) 
*         RU*5,100           (RUN THE DRIVER AT ADDRESS 100)
*         PP*4               (SELECT EXEC DISPLAY)
*         .RUN,F4401         (RUN F44)
*ENDIF
* 
*IF -DEF,CMSE17X
*         ALL NOS MALET DIRECTIVES MUST BE PRECEDED WITH THE
*         CHARACTERS, (K.).  UNDER NOS/BE, MALET COMMANDS ARE 
*         NOT PRECEDED WITH THE CHARACTERS, (K.) UNDER THE L
*         DISPLAY.
* 
*         THE ASSIGN COMMAND IS USED TO ASSIGN THE DEVICE TO BE TESTED. 
*         NOTE :- DC IS SET TO 10 OR 11 DEPENDING ON WHETHER
*         THE DEVICE IS 100 OR 200 MEGABYTE DISK. 
* 
*         EXAMPLES FOR ASSIGNING A DEVICE-
*         K.ASSIGN,DC=10 OR 11,CH=6,EQ=0,UN=40,AL=4,SN=123456 
*         K.A,DC=10 OR 11,CH=6,EQ=0,UN=40,AL=4,SN=123456
* 
*         THE  PARAM  COMMAND IS USED TO DISPLAY THE PARAMETERS FOR THE 
*         TEST AND ALSO CHANGE PARAMETERS FOR THE TEST. 
*         EXAMPLES OF USING THE PARAM COMMAND-
*         K.PARAM 
*         K.P 
*         K.PARAM,P0=10,P1=20,P3=10,P4=10 
*         K.P,P0=10,P1=20,P3=10,P4=10 
* 
* 
*         THE RUN COMMAND IS USED TO START EXECUTION OF A MODULE OR SET 
*         OF MODULES. 
*         EXAMPLES FOR RUNNING ALL MODULES IN THE TEST- 
*         K.RUN,F44 
*         K.R,F44 
* 
*         EXAMPLES FOR RUNNING ONE MODULE-
*         K.RUN,F44(01) 
*         K.R,F44(01) 
* 
*         EXAMPLES FOR RUNNING A SERIES OF MODULES- 
*         K.RUN,F44(01,02,03,04)
*         K.R,F44(01,02,03,04)
* 
*         THE STOP COMMAND IS USED TO STOP EXECUTION OF THE TEST. 
*         EXAMPLES OF STOPPING EXECUTION OF THE TEST- 
*         K.STOP
*         K.S 
* 
*         THE GO COMMAND IS USED TO RESTART EXECUTION OF THE TEST AFTER 
*         IT HAS STOPPED ON AN ERROR OR  WAS  STOPPED  USING  THE  STOP 
*         COMMAND.
*         EXAMPLES OF RESTARTING EXECUTION OF THE TEST- 
*         K.GO
*         K.G 
* 
*         THE  DROP COMMAND IS USED TO TERMINATE EXECUTION OF MALET AND 
*         DROP THE JOB OUT OF THE OPERATING SYSTEM. 
*         EXAMPLES OF USING THE DROP COMMAND- 
*         K.DROP
*ENDIF
*IF DEF,CMSE17X 
*         ALL SYSTEM COMMANDS MUST BE PRECEEDED WITH  THE  CHARACTER .
*         (PERIOD). 
* 
*         THE ASSIGN COMMAND IS USED TO ASSIGN THE DEVICE TO BE TESTED. 
*         EXAMPLES FOR ASSIGNING A DEVICE-
*         .ASSIGN,DC=10 OR 11,CH=6,EQ=0,UN=40,AL=4,SN=123456
*         .A,DC=10 OR 11,CH=6,EQ=0,UN=40,AL=4,SN=123456 
* 
*         THE  PARAM  COMMAND IS USED TO DISPLAY THE PARAMETERS FOR THE 
*         TEST AND ALSO CHANGE PARAMETERS FOR THE TEST. 
*         EXAMPLES OF USING THE PARAM COMMAND-
*         K.PARAM 
*         K.P 
*         K.PARAM,P0=10,P1=20,P3=10,P4=10 
*         K.P,P0=10,P1=20,P3=10,P4=10 
* 
*         THE RUN COMMAND IS USED TO START EXECUTION OF A MODULE OR SET 
*         OF MODULES. 
*         EXAMPLES FOR RUNNING ALL MODULES IN THE TEST- 
*         .RUN,F44
*         .R,F44
* 
*         EXAMPLES FOR RUNNING ONE MODULE-
*         .RUN,F44(01)
*         .R,F44(01)
* 
*         EXAMPLES FOR RUNNING A SERIES OF MODULES- 
*         .RUN,F44(01,03,05,07) 
*         .R,F44(01,03,05,07) 
* 
*         THE STOP COMMAND IS USED TO STOP EXECUTION OF THE TEST. 
*         EXAMPLES OF STOPPING EXECUTION OF THE TEST- 
*         .STOP 
*         .S
* 
*         THE GO COMMAND IS USED TO RESTART EXECUTION OF THE TEST AFTER 
*         IT HAS STOPPED ON AN ERROR OR  WAS  STOPPED  USING  THE  STOP 
*         COMMAND.
*         EXAMPLES OF RESTARTING EXECUTION OF THE TEST- 
*         .GO 
*         .G
* 
*         THE  DROP COMMAND IS USED TO TERMINATE EXECUTION OF MALET AND 
*         DROP THE JOB OUT OF THE OPERATING SYSTEM. 
*         EXAMPLES OF USING THE DROP COMMAND- 
*         .DROP 
*ENDIF
* 
*** 3.1.5 PARAMETERS
**  3.1.5 PARAMETERS
*   3.1.5 PARAMETERS
*         ----------
* 
*         THE FOLLOWING PARAMETERS ARE USED BY F44- 
* 
*         NOTE- THE CONFIDENCE PORTION OF THE TEST DOES  NOT  REFERENCE 
*               THE PARAMETER REGISTERS.
* 
*         P0 - LLLL - LOWER CYLINDER
*              (RIGHT JUSTIFIED, ZERO FILLED) 
* 
*         P1 - UUUU - UPPER CYLINDER
*              (RIGHT JUSTIFIED, ZERO FILLED) 
* 
*         P2 - LLUU - LOWER AND UPPER TRACKS
*              (RIGHT JUSTIFIED, ZERO FILLED) 
* 
*         P3 - LLUU - LOWER AND UPPER SECTORS 
*              (RIGHT JUSTIFIED, ZERO FILLED) 
* 
*         P4 - XXXX - ENABLES 
* 
*              XXX1 - FLAW REPORTING
*              XX1X - CHANGE PATTERN ON TRACK BOUNDARIES
*              XX2X - CHANGE PATTERN ON CYLINDER BOUNDARIES 
*              NOTE - IF  NEITHER  TRACK  OR  CYLINDER  BOUNDARIES  ARE 
*                     SELECTED, THE PATTERN CHANGE WILL DEFAULT TO DISK 
*                     BOUNDARIES. 
*              XX4X - DUMP  FIRST  EIGHT  LOCATIONS  OF  THE  INPUT AND 
*                     OUTPUT BUFFERS AND THE B0 THROUGH B15 REGISTERS.
* 
*         P5 - XXXX - DISABLES
* 
*              XXX1 - ADDRESS CODING
*              XXX2 - READ DISABLE
*              XXX4 - WRITE DISABLE 
*              XX1X - GENERATE FIXED PATTERN
* 
*         P6 - XXXX - DATA CONTROL SEED 
* 
*              0000 - RANDOM DATA SET 
*                     THE REAL TIME CLOCK WILL BE USED AS  THE  STARTER 
*                     FOR THE RANDOM NUMBER GENERATOR IF BIT 3 IS CLEAR 
*                     IN P5.
* 
*              XXXX - RANDOM DATA SET 
*         (NON-ZERO)  IF THIS WORD IS NONZERO AND BIT 3 IS CLEAR IN P5, 
*                     THIS WORD WILL BE USED AS  THE  STARTER FOR THE 
*                     RANDOM NUMBER GENERATOR.
* 
*              XXXX - RANDOM DATA DISABLED
*         (NON-ZERO)  IF  THIS  WORD IS NONZERO AND BIT 3 IS SET IN P5, 
*                     THIS WORD WILL BE USED TO GENERATE A  FIXED  DATA 
*                     PATTERN.
* 
*          P7 - XXXX - NOT USED 
* 
* 
*         P8 - XXXX - NOT USED
* 
*         P9 - 0000 - ITERATION COUNT 
*                     ITERATION COUNT TIMES 4096 IF RANDOM COUNT. 
* 
*** 3.1.6 MESSAGES
**  3.1.6 MESSAGES
*   3.1.6 MESSAGES
*         --------
* 
*         NORMAL MESSAGES 
*         --------------- 
* 
*         1.  F44NN MODULE NAME 
*             THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING. 
* 
*         2.  F44NN CYL=CCCB, T=TTB, S=SSB
*             THIS  RUNNING  MESSAGE  INDICATES  THAT  MODULE NN IS NOW 
*             TESTING CYLINDER CCC, TRACK TT, AND SECTOR SS.
* 
*         3.  F44NN EC=EEEED, LC=LLLLD
*             THIS  RUNNING MESSAGE INDICATES THAT MODULE NN IS LOOPING 
*             ON REPEAT CONDITION OR REPEAT MODULE. EEEE IS THE CURRENT 
*             ERROR COUNT AND LLLL IS THE CURRENT LOOP COUNT. 
* 
*         4.  F4401 RES ADAPTER LC*OCTB 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*             F4401.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*             COUNT INCREMENT.
* 
*         5.  F4402 AUTOLOAD LC=*DECD 
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE 
*             F4402.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*             COUNT INCREMENT.
* 
*         6.  F4403 GEN STATUS LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*             F4403.   GENERAL STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*             INCREMENT.
* 
*         7.  F4404 DETAIL STATUS LC=*DECD
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE 
*             F4404.  DETAILED STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*             INCREMENT.
* 
*         8.  F4405 DEVICE INTERFACE  R/W LC=*DECD
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*             F4405.   THE  WRITE/READ/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE 
*             LOOP COUNT IS INCREMENTED.
* 
*          9. F4406 SERIAL NO.   LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP COUNT OF THE FIRST 
*             SUBTEST  OF F4406.   HERE THE SERIAL NUMBER IS RETRIEVED
*             OFF OF THE DISK 2 SEPARATE  TIMES.   THE  LOOP  COUNT  IS 
*             INCREMENTED WITH EACH RETRIEVAL.
* 
*         10. F4407 FACTORY SECT LC=*DECD 
*             THIS RUNNING MESSAGE  DISPLAYS  THE  LOOP  COUNT  OF  THE 
*             SECOND  SUBTEST OF F4407.  HERE THE FACTORY FLAW MAPS ARE 
*             RETRIEVED OFF OF THE DISK  2  SEPARATE  TIMES.  THE  LOOP 
*             COUNT IS INCREMENTED WITH EACH RETRIEVAL. 
* 
*         11. F4408 UTILITY SECT LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP COUNT OF THE THIRD 
*             SUBTEST  OF  F4408.  HERE THE UTILITY FLAW MAPS ARE BEING 
*             RETRIEVED OFF OF THE DISK 2  SEPARATE  TIMES.   THE  LOOP 
*             COUNT IS INCREMENTED WITH EACH RETRIEVAL. 
* 
*         12. F4409 TRK=*OB  SECT=*OB 
*             THIS  RUNNING  MESSAGE  DISPLAYS  THE  TRACK  AND  SECTOR 
*             ADDRESS  ON WHICH A READ IS PRESENTLY BEING EXECUTED.  BY 
*             F4409.
* 
*         13. F4408 WRITE/DEVICE INTERFACE READ LC=*DECD
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE 
*             F4408.  THE WRITE/READ/COMPARE  PORTION  IS  REPEATED  10 
*             TIMES  FOR  EACH DATA PATTERN USED AND WITH EACH PASS THE 
*             LOOP COUNT IS INCREMENTED.
* 
*         14. F4409 WRITING TRACK=*OCTB 
*             THIS  RUNNING MESSAGE INDICATES THE TRACK ADDRESS THAT IS 
*             PRESENTLY BEING WRITTEN BY F4409. 
* 
*         15. F4410 TRK=*OB SECT=*OB
*             THIS  RUNNING  MESSAGE  INDICATES  THE  TRACK  AND SECTOR 
*             ADDRESS THAT IS PRESENTLY BEING READ BY F4410.
* 
*         16. F4410 WRITING CYLINDER 599D.
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  F4410  IS  IN 
*             ITS WRITING MODE. 
* 
*         17. F4410 VERIFYING CYLINDER 599D 
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  F4410  IS  IN 
*             ITS WRITE/VERIFY MODE.
* 
*         18. F4411 CYL=*OCTB LC=*DECD
*             THIS  RUNNING  MESSAGE  INDICATES  TO  WHICH CYLINDER THE 
*             HEADS ARE PRESENTLY SEEKING IN MODULE F4411.   EACH  SEEK 
*             OPERATION IS REPEATED 2 TIMES DURING WHICH THE LOOP COUNT 
*             IS INCREMENTED. 
* 
*         19. F4412 WRITE CODED CYL=*OCTB 
*             THIS RUNNING MESSAGE INDICATES THAT MODULE F4412 IS DOING 
*             A WRITE CODED  OPERATION  ON  CYLINDER  599D. 
* 
*         20. F4413 TRK=*OB SECT=*OB
*             THIS  RUNNING MESSAGE INDICATES AT WHICH TRACK AND SECTOR 
*             ADDRESS A READ AND VERIFY IS BEING  PERFORMED  BY  MODULE 
*             F4413.
* 
*** 3.1.7 DAYFILE MESSAGES
**  3.1.7 DAYFILE MESSAGES
*   3.1.7 DAYFILE MESSAGES
*         ----------------
* 
*         1.  F44NN ERROR(S) = XXXXD
*             NN   = THE NUMBER OF THE MODULE IN F44. 
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  DETECTED 
*             XXXX  NUMBER  OF  ERRORS  BY  THE  TIME  IT HAD COMPLETED 
*             EXECUTION.
* 
*         2.  F44NN MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
*             NN   = THE NUMBER OF THE MODULE IN F44. 
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  WAS  NOT 
*             EXECUTED BECAUSE OF SUSPECTED PARMETER ERRORS.
* 
*         3.  F44NN MODULE ABORTED - ACCESS LEVEL TOO LOW 
*             NN   = THE NUMBER OF THE MODULE IN F44. 
*             THIS  DAYFILE  MESSAGE  INDICATES  THAT MODULE NN WAS NOT 
*             EXECUTED.  THE  ACCESS  LEVEL IN THE ASSIGN STATEMENT WAS 
*             NOT HIGH ENOUGH, AND IF THE MODULE HAD BEEN EXECUTED, THE 
*             PRODUCT OVERLAY DRIVER  WOULD  HAVE  REPORTED  AN  ACCESS 
*             LEVEL ERROR AND TERMINATED EXECUTION OF THE MODULE. 
* 
*         4.  F44NN MODULE ABORTED - WRITE DISABLED IN P5 
*             NN   = THE NUMBER OF THE MODULE IN F44. 
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  WAS  NOT 
*             EXECUTED BECAUSE WRITE WAS DISABLED IN PARAMETER WORD P5. 
*             WRITE MUST BE ENABLED IN ORDER TO RUN THE MODULE. 
* 
*** 3.1.8 ERROR MESSAGES
**  3.1.8 ERROR MESSAGES
*   3.1.8 ERROR MESSAGES
*         --------------
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY F44 TO REPORT  ERRORS 
*         TO THE USER.
* 
*         00  F44 -  CONFIDENCE TEST
*         01  F44NN - MODULE TITLE
*         02  F44 ABORT ON C--------------C COMMAND 
*         03  F44NN EXXXX LXXXB (M-------------M) 
*         04  LAST FUNCTION = XXXX (F----------------F) 
*         05  WT=WTTTB RETRIES=RRB ERRORS=NEEEB 
*         06  CYL=CCCC TRK=TT  SEC=SS - S-----U RECOVERY
*         07   GENERAL STATUS = 5020B 
*         08  SENSE BYTE STATUS IN HEX
*         09  0-5   =*H  *H *H *H *H *H 
*         10  6-11  =*H  *H  *H  *H  *H 
*         11  12-17 =*H  *H  *H  *H  *H 
*         12  18-23 =*H  *H  *H  *H  *H 
*         13  DS WORD(17-20)D= 0000B 0000B 0000B 0000B
*         14  EC100- ABNORMAL TERMINATION CAUSE UNDETERMINED
*             ------------------------------------- 
* 
* 
*         NN    = MODULE NUMBER 
*         C--C  = COMMAND ON WHICH MODULE ABORTED 
*         EXXXX = PRODUCT OVERLAY OR MODULE ERROR CODE
*         LXXXB = LINE NUMBER ON WHICH ERROR OCCURRED IN OCTAL
*         M--M  = VERBAL DESCRIPTION OF ERROR CODE
*         XXXX  = THE LAST FUNCTION EXECUTED
*         F--F  = VERBAL DESCRIPTION OF LAST FUNCTION EXECUTED
*         WTTTB = NUMBER OF WORDS TRANSFERRED IN OCTAL
*         RRB   = NUMBER OF RETRIES IN OCTAL
*         NEEB  = NUMBER OF ERRORS THAT OCCURRED IN OCTAL 
*         CCCCB = LAST CYLINDER ACCESSED IN OCTAL 
*         TTB   = LAST TRACK ACCESSED IN OCTAL
*         SSB   = LAST SECTOR ACCESSED IN OCTAL 
*         S--U  = SUCCESSFUL OR UNSUCCESSFUL ERROR RECOVERY 
*         SESTATUS IN HEX 
*         DS(17-20)=DETAILED STATUS PRESENTATION IN OCTAL.
* 
*         THE  FOLLOWING  ERROR  MESSAGES  ARE  TO  BE  REPORTED BY THE 
*         PARAMETER CHECKING MODULES IF THEY DETECT AN ERROR. 
* 
*         F44MM NOT EXECUTED, SUSPECTED PARAMETER ERROR 
*                       MM = MODULE NUMBER. 
*                            AN ERROR HAS BEEN DETECTED IN ONE OR  MORE 
*                            OF  THE  PARAMETER WORDS FOR THE TEST. THE 
*                            ERROR DISPLAY WILL INDICATE THE  PARAMETER 
*                            WORDS IN WHICH  ERRORS  WERE DETECTED. THE 
*                            MODULE WILL ABORT EXECUTION OF THE PRIMARY 
*                            MODULE THAT CALLED THIS PARAMETER CHECKING 
*                            SUBMODULE AS A RESULT OF THE ERROR.
* 
*         F44MM NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*                       MM = MODULE NUMBER. 
*                            THE ACCESS LEVEL IS  NOT  HIGH  ENOUGH  TO 
*                            EXECUTE   THE   COMMANDS  IN  THE  CALLING 
*                            MODULE. THE MODULE WILL ABORT EXECUTION OF 
*                            THE   PRIMARY   MODULE   THAT  CALLED  THE 
*                            PARAMETER CHECKING SUBMODULE AS  A  RESULT 
*                            OF THE ERROR.
* 
*         F4430 NOT EXECUTED, WRITE DISABLED IN P5
*                            AN ERROR HAS BEEN  DETECTED  IN  PARAMETER 
*                            WORD  P5. MODULE F4430 REQUIRES THAT WRITE 
*                            NOT BE DISABLED IN PARAMETER WORD  P5. THE 
*                            MODULE WILL ABORT EXECUTION OF THE PRIMARY 
*                            MODULE THAT CALLED THIS PARAMETER CHECKING 
*                            SUBMODULE AS A RESULT OF THE ERROR.
* 
*** 3.1.9 ERROR CODES 
**  3.1.9 ERROR CODES 
*   3.1.9 ERROR CODES 
*         ----------- 
* 
*         THE FOLLOWING MESSAGES REPRESENT ERRORS DETECTED BY THE DISK
*         DRIVER AND CAUSE COMMANDS TO BE ABORTED.
* 
*         F44XXX ER5304 LYYY  BUFFER INDEX ERROR OR WC ERR. 
*         F44XXX ER5310 LYYY  CH NOT ASSIGNED 
*         F44XXX ER5311 LYYY  CH ACTIVE ON ENTRY
*         F44XXX ER5312 LYYY  NO INACTIVE TO LAST FUNC. 
*         F44XXX ER5313 LYYY  NO INACTIVE TO GENERAL STATUS 
*         F44XXX ER5314 LYYY  NO INACTIVE TO DETAIL STATUS
*         F44XXX ER5315 LYYY  GENERAL STATUS NOT RETURNED 
*         F44XXX ER5316 LYYY  INCOMPLETE STATUS RETURNED
*         F44XXX ER5317 LYYY  FUNC PARAMETER NOT ACCEPTED.
*         F44XXX ER5320 LYYY  ALL DATA NOT ACCEPTED FROM PP 
*         F44XXX ER5321 LYYY  INCOMPLETE DATA RETURNED TO PP
*         F44XXX ER5320 LYYY  CONTROLLER/DRIVE NOT CONNECTED
*         F44XXX ER5323 LYYY  ACCESS LEVEL TOO LOW FOR REQ
*         F44XXX ER5324 LYYY  RESERVE TIMEOUT 
*         F44XXX ER5325 LYYY  ABNORMAL GENERAL STATUS 
*         F44XXX ER5327 LYYY  UNIT HUNG BUSY ON SEEK
*         F44XXX ER5330 LYYY  SUCCESSFUL RETRY
*         F44XXX ER5331 LYYY  DATA COMPARE ERROR
*         F44XXX ER5332 LYYY  DEVICE CODE/STATUS MISMATCH 
*         F44XXX ER5333 LYYY  NO INACTIVE AFTER DATA XFER 
* 
*            XXX = MODULE/SUBMODULE NUMBER
*            YYY = LINE NUMBER WITHIN MODULE WHERE ERROR WAS DETECTED 
* 
*         THE  FOLLOWING  MESSAGES  REPRESENT ERROR CODES THAT ARE
*         REPORTED AS THE LAST LINES OF ERROR OUTPUT AS A RESULT OF 
*         STATUS ANALYSIS, IF NO RECOVERY HAS BEEN ATTEMPED (RETRY
*         COUNT IS ZERO), THE GENERAL/STATUS IS ANALYZED TO PRODUCE 
*         THE FOLLOWING ERROR MESSAGES. IF RECOVERY HAS BEEN REPORTED,
*         THE FIRST STATUS IS ANALYZED(THE REASON RECOVERY WAS REQUIRED). 
*         THE LAST TAKEN STATUS IS PROVIDED FOR CE ANALYSIS.
* 
* 
*         EC100- ABNORMAL TERMINATION.
*         EC101- CONTROL UNIT BUSY. 
*         EC102- DSU MALFUNCTION. 
*         EC103- BUSY.
*         EC104- COMMAND REJECT.
*         EC105- INTERVENTION REQUIRED. 
*         EC106- BUS OUT CHECK. 
*         EC107- EQUIPMENT CHECK. 
*         EC108- DATA CHECK.
*         EC109- OVERRUN. 
*         EC110- PERMANENT ERROR. 
*         EC111- INVALID TRACK FORMAT.
*         EC112- END OF CYLINDER. 
*         EC113- NO RECORD FOUND. 
*         EC114- FILE PROTECTED.
*         EC115- WRITE INHIBITED. 
*         EC116- OPERATION INCOMPLETE.
*         EC117- CORRECTABLE DATA ERROR.
*         EC118- REDUNDANT PATH.
*         EC119- ENVIRONMENT DATA PRESENT.
* 
*         DESCRIPTION OF ERROR CODES. 
* 
*         EC100- ABNORMAL TERMINATION.
* 
*               THE  PRECEDING  FUNCTION  TERMINATED  ABNORMALLY. 
*               EITHER BIT 8 (RECOVERY IN PROGRESS) OR BIT 9 (NON-
*               RECOVERABLE ERROR) WILL ALWAYS BE SET. DETAILED 
*               STATUS SHOULD BE OBTAINED TO DETERMINE THE EXACT
*               CAUSE OF TERMINATION. 
* 
*         NOTE- AFTER AUTOLOAD FROM PP, IF THIS BIT IS SET, BIT 0 
*               THROUGH 8 OF GENERAL STATUS WILL CONTAIN AN ERROR 
*               CODE. DETAILED STATUS IS NOT UPDATED. REFERENCE 
*               APPENDIX E (IN-LINE TESTS) OF FEDERAL STANDARD
*               STANDARD CHANNEL ADAPTER MA454-A CONTOLWARE EXTERNAL
*               REFERENCE SPECIFICATION (PUB NO 53695245).
* 
*         EC101- CONTROL UNIT BUSY. 
* 
*                THE CONTROL UNIT IS BEING USED BY ANOTHER ADAPTER. 
* 
*         NOTE - FUNCTION  SEQUENCES  TO  A FSC SUBSYSTEM NORMALLY
*                START WITH GENERAL STATUS TO CONNECT THE CONTROLLER
*                SINCE THE FSC ADAPTER HAS ONLY ONE ACCESS THIS BIT 
*                WILL ALWAYS BE ZERO IN THE INITIAL GENERAL STATUS. 
*                THIS BIT MUST BE CHECKED FOLLOWING THE SEEK,CONNECT
*                AND FORMAT FUNCTIONS SINCE THE CONTROL UNIT MAY BE 
*                MULTI ACCESS.
* 
*         EC102- DSU MALFUNCTION. 
* 
*                AN ERROR CONDITION HAS OCCURED WHICH DIRECTLY
*                INVOLVES THE CONTROL UNIT AND DEVICE. DETAILED STATUS
*                SPECIFIES THE SENSE BYTE STATUS AT THE  TIME OF
*                MALFUNCTION. 
* 
* 
*         EC103- BUSY.
* 
*                EITHER THE POSITIONER IS IN MOTION DUE TO A PRECEDING
*                SEEK, OR THE ADAPTER IS PROCESSING A FORMAT PACK OR
*                SCAN CYLINDER FUNCTION.
* 
*         EC104- COMMAND REJECT.
* 
*                INDICATES
*                (1)  INVALID COMMAND CODE. 
*                (2)  INVALID COMMAND SEQUENCE. 
*                (3)  INVALID OR INCOMPLETE ARGUMENT
*                     TRANSFERED BY A CONTROL COMMAND.
*                (4)  TRACK FORMATTED WITHOUT HOME ADDRESS. 
*                (5)  WRITE PORTION OF A FILE MASK VIOLATED.
*                (6)  WRITE COMMAND ISSUED WHEN WRITE PROTECTION
*                     MECHANISM ENABLED.
*                (7)  FORMAT WRITE ATTEMPED ON DEFECTIVE TRACK. 
* 
* 
*         EC105- INTERVENTION REQUIRED. 
* 
*               INDICATES 
*               (1)  ADDRESSED DEVICE NOT ATTACHED TO SYSTEM. 
*               (2)  ADDRESSED DEVICE NOT READY.
*               (3)  ADDRESSED DEVICE IN MAINTENANCE MODE AND 
*                    UNAVAILABLE FOR USE. 
* 
*         EC106- BUS OUT CHECK. 
* 
*                INDICATES THE CONTROL UNIT HAS DETECTED A PARITY 
*                ERROR IN THE DATA TRANSFERRED FROM CHANNEL.
* 
*         EC107- EQUIPMENT CHECK. 
* 
*                INDICATES AN UNUSUAL HARDWARE CONDITION SOMEWHERE
*                IN THE DEVICE OR CONTROL UNIT. THE CONDITION MAY 
*                BE FURTHER DEFINED IN SENSE BYTE 7 THROUGH 23. 
* 
* 
*         EC108- DATA CHECK.
* 
*                INDICATES A CORRECTABLE DATA ERROR WAS DETECTED IN 
*                INFORMATION RECIEVED FROM A DEVICE IF DETAILED STATUS
*                WORD 2 BIT 6 IS SET. OTHERWISE, AN UNCORRECTABLE DATA
*                ERROR WAS DETECTED AND IS DEFINED BY SENSE BYTES 7.
* 
* 
*         EC109- OVERRUN. 
* 
*                INDICATES INSUFFICIENT CHANNEL TRANSFER RATE TO KEEP 
*                UP WITH DEVICE TRANSFER RATE, ON EITHER A READ OR A
*                WRITE OPERATION. 
* 
* 
*         EC110- PERMANENT ERROR. 
* 
*                INDICATES AN ERROR NOT ABLE TO BE RECOVERED. 
*         EC111- INVALID TRACK FORMAT.
* 
*                INDICATES- 
*                (1)  AN ATTEMPT MADE TO WRITE DATA EXCEEDING TRACK 
*                     CAPACITY. 
*                (2)  INDEX ENCOUNTERED AT UNEXPECTED POINT DURING A
*                     READ OR SEARCH OPERATION. 
* 
*         EC112- END OF CYLINDER. 
* 
*                INDICATES- 
*                (1)  A MULTITRACK READ OR SEARCH ATTEMPED TO GO BEYOUND
*                     THE CYLINDER BOUNDARY.
*                (2)  AN OVERFLOW OPERATION ATTEMPED TO GO PAST THE 
*                     CYLINDER BOUNDARY.
* 
* 
*         EC113- NO RECORD FOUND. 
* 
*                INDICATES A PROGRAMMING ERROR DUE TO TWO INDEX POINTS
*                BEING SENSED IN COMMAND CHAIN WITH NO INTERVENNING 
*                READ IN HOME ADDRESS OR DATA AREA, OR WITHOUT A
*                WRITE,SENSE, OR CONTROL COMMAND. 
* 
*         EC114- FILE PROTECTED.
* 
*                INDICATES THE FILE MASK HAS BEEN VIOLATED BY_
*                (1)  SEEK COMMAND. 
*                (2)  MULTITRACK READ OR SEARCH.
*                (3)  OVERFLOW OPERATION. 
* 
* 
*         EC115- WRITE INHIBITED. 
* 
*                INDICATES A WRITE COMMAND ISSUED WHEN WRITE
*                PROTECTION MECHANISM ENABLED.
* 
*         EC116- OPERATION INCOMPLETE.
* 
*                INDICATES ONE OF THE FOLLOWING CONDITIONS OCCURED
*                WHEN PROCESSING AN OVERFLOW RECORD.
*                (1)  OVERFLOW TO A FILE PROTECTED BOUNDARY.
*                (2)  OVERFLOW BEYOND CYLINDER BOUNDARY.
*                (3)  CORRECTABLE DATA ERROR FOUND. 
*                (4)  UNCORRECTABLE DATA ERROR FOUND. 
*                (5)  DEFECTIVE OR ALTERNATE TRACK FOUND AFTER START
*                     OF DATA TRANSFER. 
*                (6)  SEEK ERROR IN SECOND OR LATER SEGMENT.
* 
*         EC117- CORRECTABLE DATA ERROR.
* 
*                INDICATES THAT THE DATA ERROR INDICATED BY DETAILED
*                STATUS WORD 1 BIT 7 IS CORRECTABLE. SENSE BYTE 15
*                THROUGH 22 CONTAIN ERROR RECOVERY INFORMATION. 
* 
* 
*         EC118- REDUNDANT PATH.
* 
*                INDICATES THAT THE CONNECTION BETWEEN CONTROL UNIT 
*                AND DEVICE IS VIA A REDUNDANT PATH. REDUNDANT PATHS
*                ARE USED TO ACHIEVE HIGHER AVAILABILITY. 
* 
* 
*         EC119- ENVIRONMENT DATA PRESENT.
* 
*                INDICATES THAT BYTES 8 THROUGH 23 CONTAIN EITHER 
*                USAGE/ERROR  STATISTICS (FORMAT 6) OR ERROR
*                LOGGING INFORMATION. 
* 
* 
*         F4402  E0001 LXXX GEN.STATUS ERROR ON RESET-A=YYYYB 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                      YYYY= ABNORMAL GENERAL STATUS
*                            FOLLOWING  A  RESET  COMMAND, AN ABNORMAL
*                            GENERAL STATUS WAS RECEIVED. 
* 
*         F4403  E0002 LXXX GEN.STATUS MISCOMP. E0000  AYYYYB 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                      YYYY= ABNORMAL GENERAL STATUS
*                            FOLLOWING A RESERVE ADAPTER COMMAND, AN
*                            ABNORMAL GENERAL STATUS WAS RECEIVED.
* 
*         F4404  E0003 LXXX DETAILED STATUS MISCOMPARE
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            SUCCESSIVE RETRIEVALS OF DETAILED  STATUS
*                            FOLLOWING  A  RESERVE  ADAPTER  COMMAND
*                            DETECTED A STATUS  WORD  MISCOMPARE.  THE
*                            STATUS WORD ERROR WILL BE DISPLAYED. 
* 
*         F4405  E0004 LXXX MISCOMPARE ON MULTIPLE DIAGRD 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            SUCCESSIVE DIAGNOSTIC READS OF ADAPTER 
*                            BUFFER DETECTED A DATA WORD  MISCOMPARE. 
*                            THE DATA WORD IN ERROR WILL BE DISPLAYED.
* 
*         F4405  E0005 LXXX MISCOMPARE ON DIAGWR/DIAGRD 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A DIAGNOSTIC  READ FOLLOWING A DIAGNOSTIC
*                            WRITE ADAPTER BUFFER DETECTED A DATA WORD
*                            MISCOMPARE.  THE  DATA WORD IN ERROR WILL
*                            BE DISPLAYED.
* 
* 
* 
*         F4406  E0008 LXXX MISCOMPARE ON GET SERIAL TEST 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A  DATA  MISCOMPARE  WAS   DETECTED  WHEN
*                            RETRIEVING  THE  DISK SERIAL NUMBER OF 
*                            CYLINDER 1056B. THE DATA WORDS  IN  ERROR
*                            WILL BE DISPLAYED. 
* 
*         F4406  E0010 LXXX MISCOMPARE ON GET UTILITY TEST
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A DATA  MISCOMPARE   WAS   DETECTED  WHEN
*                            RETRIEVING DISK  UTILITY FLAW INFORMATION
*                            OFF OF CYLINDER 1056B. THE DATA WORDS  IN
*                            ERROR WILL BE DISPLAYED. 
* 
*         F4407  E0011 LXXX MISCOMPARE ON WC PATTERN READ 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A DATA ERROR WAS DETECTED WHEN READING THE 
*                            WORST  CASE  PATTERN  FROM CYLINDER 1056B. 
*                            THE DATA WORDS IN ERROR WILL BE DISPLAYED. 
* 
*         F4408  E0012 LXXX MISCOMPARE ON WRITE/DIAGRD
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A  WRITE  FOLLOWING  A   DIAGNOSTIC  READ
*                            DETECTED A DATA WORD MISCOMPARE. THE DATA
*                            WORD IN ERROR WILL BE DISPLAYED. 
* 
* 
* 
*         F4411  E0017 LXXX SEEK ERROR    EYYYYB     AZZZZB 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                      YYYY= EXPECTED SEEK ADDRESS
*                      ZZZZ= ACTUAL SEEK ADDRESS
*                            THE  MODULE FAILED TO SEEK TO THE REQUIRED 
*                            ADDRESS ON THE  PACK.   THE  EXPECTED  AND 
*                            ACTUAL SEEK ADDRESSES WILL BE DISPLAYED. 
* 
*         F4421  E0019 LXXX DATA COMPARE ERROR  (READ 1 TO 1) 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A DATA ERROR WAS DETECTED IN THE DATA READ 
*                            FROM THE DISK WHILE  READING  IN  1  TO  1 
*                            INTERLACE  MODE.  THE  DATA  ERROR WILL BE 
*                            DISPLAYED. 
* 
*         F4434  E0020 LXXX GENERAL STATUS YYYYB ON RESET 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                      YYYY= ABNORMAL GENERAL STATUS
*                            FOLLOWING A  RESET  COMMAND, AN  ABNORMAL
*                            GENERAL STATUS WAS RECEIVED. 
* 
* 
*** 4.0   MODULE DESCRIPTIONS 
*         ------------------- 
* 
   MODULE F4401,FMDFT(10,11),LOCK 
***       F4401 - ADAPTER CONNECT TEST
**        F4401 - ADAPTER CONNECT TEST
*         F4401 - ADAPTER CONNECT TEST
*         ------------------------------- 
* 
*         PURPOSE-
*         F4401 HELPS TO VERIFY THE COMMUNICATION PATH TO 
*         THE ADAPTER.
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  CONNECT THE ADAPTER.
*         2.  RELEASE THE ADAPTER.
*         3.  REPEAT STEPS 1,2 --10 TIMES.
*         4.  REPEAT MODULE LOOPS ON STEPS 1-3. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
* 
1  FORMAT F4401 - RESERVE ADAPTER 
2  FORMAT F4401 ERROR(S) = *DECD
5  FORMAT F4401 RES ADAPTER LC*OCTB 
7  FORMAT F4401 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 1D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 7777                     *INVALID CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B10 = 0                       *INITIALIZE INT. LOOP COUNT
26 IF(ES.AND.RM.EQ.0)MSG 5(B10)TO DISPLAY  *IF NO REPEAT MOD
   IF (ES.AND.RM.NE.0) MSG 7 (B11,B0) TO DISPLAY
   B8 = 40B 
   RES CONTROLLER, ABT 74 
   B8 = 46B 
   REL, ABT 74
30 GOTO 26 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1
   CALL 98C                      *CALL ERROR PROCESSOR
   GOTO 30 WHILE(B11+1.LE.2)     *RESTART 
   GOTO 50                       *EXIT
   END 20 
COMPILE                      *F4401 RESERVE ADAPTER TEST
   MODULE F4402,FMDFT(10,11),LOCK 
***       F4402 - ZERO WORD AUTOLOAD TEST 
**        F4402 - ZERO WORD AUTOLOAD TEST 
*         F4402 - ZERO WORD AUTOLOAD TEST 
*         ------------------------------- 
* 
*         PURPOSE - 
*         F4402 TEST THE RESET OPERATION. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  CONNECT THE ADAPTER.
*         2.  ISSUE THE RESET COMMAND.
*         3.  CHECK GENERAL STATUS FOR ALL ZEROS. 
*         4.  REPEAT STEPS 1-3,-- 10D TIMES.
*         5.  RELEASE THE ADAPTER.
*         6.  REPEAT MODULE LOOPS ON STEPS 1-5. 
/ 
*         ENTRY - 
*         A DRIVE IS REQUIRED.
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
1  FORMAT F4402 - ZERO WORD AUTOLOAD TST
2  FORMAT F4402 ERROR(S) = *DECD
4  FORMAT F4402 E0001 L*OCTB GEN.STATUS ERROR ON RESET-A=*OCTB
5  FORMAT F4402 AUTOLOAD  LC=*DECD
7  FORMAT F4402 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 2D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 7777                     *INVALID CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B10 = 0                       *INITIALIZE INT. LOOP COUNT
26 B8 = 40B 
   RES CONTROLLER, ABT 74 
   IF(ES.AND.RM.EQ.0) MSG 5(B10) TO DISPLAY  *IF NO REPEAT
   B8 = 42B 
   RESET, ABT 74                 *RESET ADAPTER 
   B8 = 04B 
   STATUS GENERAL, ABT 74        *GET GENERAL STATUS
   WC = 1                        *WORD COUNT FOR COMPARE
   B8 = 47B 
   COMPARE SB TO OB FOR WC, ABT 70
32 GOTO 26 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT 
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/02
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   MSG 4 (EA,SB) TO LINE 5       *DISPLAY ERROR MESSAGE 
   CALL 98C                     *CALL MODULE ERROR PROCESSOR
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4402 ZERO WORD AUTOLOAD
   MODULE F4403,FMDFT(10,11),LOCK 
***       F4403 - GENERAL STATUS TEST 
**        F4403 - GENERAL STATUS TEST 
*         F4403 - GENERAL STATUS TEST 
*         --------------------------- 
* 
*         PURPOSE-
*         F4403 CHECKS THE DATA PATH TO THE ADAPTER BY READING
*         AND COMPARING THE GENERAL STATUS. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  SET THE EXPECTED GENERAL STATUS TO  ZERO  IN  THE 
*             OUTPUT  BUFFER. 
*         2.  RESERVE ADAPTER.
*         3.  READ  THE  ADAPTER  GENERAL  STATUS  AND  COMPARE  THE
*             GENERAL STATUS READ WITH THE EXPECTED GENERAL STATUS. 
*         4.  REPEAT STEP 3 TEN TIMES.
*         5.  REPEAT STEPS 2-4 FOUR TIMES.
*         6.  RELEASE CHANNEL.
*         7.  REPEAT MODULE LOOPS ON STEPS 2-6. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
1  FORMAT F4403 - GENERAL STATUS TEST 
2  FORMAT F4403 ERROR(S) = *DECD
4  FORMAT F4403 E0002 L*OCTB GEN.STATUS MISCOMP.  E0000 A*OCTB
5  FORMAT F4403 GEN STATUS LC=*DECD 
7  FORMAT F4403 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 3D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 7777                     *INVALID CYLINDER NUMBER 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B2 = 0                        *INITIALIZE LOOP COUNTER 
26 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   B8 = 40B 
   RES CONTROLLER, ABT 74 
30 IF(ES.AND.RM.EQ.0) MSG 5(B10) TO DISPLAY  *IF RM NOT SET 
   B8 = 04B 
   STATUS GENERAL, ABT 74        *GET GENERAL STATUS
   IF (SB.NE.0)GOTO 70
   GOTO 30 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
32 GOTO 26 WHILE(B2+1.LT.4D)     *LOOP 4D TIMES 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/02
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   MSG 4 (EA,SB) TO LINE 5       *DISPLAY ERROR MESSAGE 
   CALL 98C                     *CALL MODULE ERROR PROCESSOR
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4403 GENERAL STATUS TEST 
   MODULE F4404,FMDFT(10,11),LOCK 
***       F4404 - DETAILED STATUS TEST
**        F4404 - DETAILED STATUS TEST
*         F4404 - DETAILED STATUS TEST
*         ----------------------------
* 
*         PURPOSE-
*         F4404 CHECKS THE DATA PATH  TO THE ADAPTER BY READING 
*         AND COMPARING THE DETAILED STATUS.
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  RESERVE ADAPTER.
*         2.  READ THE ADAPTER DETAILED STATUS AND SAVE THE DETAILED
*             STATUS IN THE OUTPUT BUFFER.
*         3.  READ  THE  ADAPTER  DETAILED  STATUS  AND  COMPARE THE
*             DETAILED STATUS SAVED  IN  THE  OUTPUT  BUFFER  WITH  THE 
*             DETAILED STATUS READ. 
*         4.  REPEAT STEP 3 TEN TIMES.
*         5.  REPEAT STEPS 1-4 FOUR TIMES.
*         6.  REPEAT MODULE LOOPS ON STEPS 1-5. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
1  FORMAT F4404 - DETAILED STATUS TEST
2  FORMAT F4404 ERROR(S) = *DECD
4  FORMAT F4404 E0003 L*OCTB DETAILED STATUS MISCOMPARE 
5  FORMAT F4404 DETAIL STATUS LC=*DECD
7  FORMAT F4404 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 4D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 7777                     *INVALID CYLINDER ADDRESS
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT.LOOP COUNT 
* 
/---------MODULE TEST.
* 
24 B2 = 0                        *INITIALIZE LOOP COUNTER 
26 B10 = 0                       *INITIALIZE INT.LOOP COUNT 
   B8 = 40B 
   RES CONTROLLER, ABT 74 
   B8 = 05B 
   STATUS DETAIL, ABT 74         *GET DETAILED STATUS 
   COPY SB(1) TO OB(1) FOR 20D   *SAVE DETAILED STATUS
30 IF(ES.AND.RM.EQ.0) MSG 5(B10) TO DISPLAY  *IF RM NOT SET 
   B8 = 05B 
   STATUS DETAIL, ABT 74
   WC = 20D                      *WORD COUNT FOR COMPARE
   B8 = 47B 
   COMPARE SB(1) TO OB(1) FOR WC, ABT 70
   GOTO 30 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
32 GOTO 26 WHILE(B2+1.LT.4D)     *LOOP 4 TIMES
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/02
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   MSG 4(EA)TO LINE 5            *POST ERROR MESSAGE
   CALL 98C                     *CALL MODULE ERROR PROCESSOR
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4404 DETAILED STATUS TEST
   MODULE F4405,FMDFT(10,11),LOCK 
***       F4405 - C170 INTERFACE WRITE/READ TEST
**        F4405 - C170 INTERFACE WRITE/READ TEST
*         F4405 - C170 INTERFACE WRITE/READ TEST
*         ----------------------------------------
* 
*         PURPOSE-
*         F4405 WILL VERIFY THAT THE CHANNEL  WILL TRANSFER   DATA
*         TO    AND    FROM   THE  ADAPTER    BUFFER .   INITIALLY
*         MULTIPLE   READS OF THE  ADAPTER  BUFFER  ARE  EXECUTED 
*         TESTING FOR INTERMITTENT FAILURES.  THEN WRITE/ READS ARE 
*         ARE PERFORMED USING KNOWN DATA PATTERNS TO DETECT  SOLID
*         BIT  FAILURES.
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  RESERVE ADAPTER.
*         2.  DEVICE INTERFACE READ THE ADAPTER AND SAVE THE INPUT
*             IN THE OUTPUT BUFFER. 
*         3.  DEVICE INTERFACE READ THE ADAPTER 10D TIMES COMPARING 
*             THE INPUT TO THE SAVED OUTPUT BUFFER. 
*         4.  RELEASE CHANNEL.
*         5.  C170 INTERFACE WRITE A 2525 PATTERN TO THE ADAPTER. 
*         6.  C170 INTERFACE READ AND COMPARE THE PATTERN 10D TIMES.
*         7.  C170 INTERFACE WRITE A 5252 PATTERN TO THE ADAPTER. 
*         8.  C170 INTERFACE READ AND COMPARE THE PATTERN 10D TIMES.
*         9.  C170 INTERFACE WRITE FIRST RANDOM PATTERN TO  ADAPTER.
*         10. C170 INTERFACE READ AND COMPARE THE PATTERN 10D TIMES.
*         11. C170 INTERFACE WRITE SECOND RANDOM PATTERN TO ADAPTER.
*         12. C170 INTERFACE READ AND COMPARE THE PATTERN 10D TIMES.
*         13  REPEAT MODULE LOOPS ON STEPS 1-12.
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498B - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = SUBTEST INDEX FOR FIRST SUBTEST.
*         B3  = RANDOM PATTERN SEED USED FOR FIRST RANDOM PATTERN.
*         B4  = RANDOM PATTERN SEED USED FOR SECOND RANDOM PATTERN. 
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED -
*         IB,OB 
* 
1  FORMAT F4405 - DIAGNOSTIC WRT/RD TEST
2  FORMAT F4405 ERROR(S) = *DECD
4  FORMAT F4405 E0004 L*OCTB MISCOMPARE ON MULTIPLE DIAGRD
5  FORMAT F4405 E0005 L*OCTB MISCOMPARE ON DIAGWR/DIAGRD
6  FORMAT F4405 DIAGNOSTIC R/W LC=*DECD 
7  FORMAT F4405 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 5D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 7777                     *INVALID CYLINDER ADDRESS
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 502B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B2 = 0                        *SUBTEST 0 
   GOSUB 40                      *PERFORM DIAGNOSTIC R/W
   B2 = 1                        *SUBTEST 1 
   DUP 2525 TO OB FOR WC         *WRITE 2525 IN OB
   GOSUB 42 
   DUP 5252 TO OB FOR WC         *WRITE 5252 IN OB
   GOSUB 42 
   IF(B0.EQ.0) GOTO 26           *IF RM, USE SEEDS B3/B4
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOSUB 42 
   RANDOM TO OB FOR WC, START B4  *USE B4 SEED FOR RM 
   GOSUB 42 
   GOTO 50
26 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
   GOSUB 42 
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 2
   B4 = OB(0) 
   GOSUB 42 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------DIAGWR/DIAGRD SUBROUTINE PROCESS. 
* 
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   B8 = 40B 
   RES CONTROLLER, ABT 74 
   B8 = 01B 
   DIAGRD, ABT 74                *DIAGRD ADAPTER BUFFER 
   COPY IB TO OB FOR WC          *SAVE ADAPTER BUFFER 
   GOTO 44
42 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   B8 = 40B 
   RES CONTROLLER, ABT 74 
   IF(ES.AND.RM.EQ.0) MSG 6 (B10) TO DISPLAY  *IF RM NOT SET
   B8 = 10B 
   DIAGWR, ABT 74                *DIAGNOSTIC WRITE
44 IF(ES.AND.RM.EQ.0) MSG 6 (B10) TO DISPLAY  *IF RM NOT SET
   B8 = 01B 
   DIAGRD, ABT 74                *DIAGNOSTIC READ 
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 44 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
46 RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/01
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   IF(B2.EQ.1) MSG 4(EA) TO LINE 5  *IF SUBTEST INDEX SET 
   IF(B2.EQ.0) MSG 5(EA) TO LINE 5  *IF INDEX NOT SET 
   CALL 98C                     *CALL MODULE ERROR PROCESSOR
   WC = 502B                     *SET BUFFER WORD COUNT 
   GOTO 46 WHILE (B11+1.LE.5)  *IF ERROR COUNT.LE.5-CONTINUE
   ENDSUB GOTO 50                *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                      *F4405 DIAGRD/DIAGWR TEST
* 
   MODULE F4406,FMDFT(10,11),LOCK 
***       F4406 - WRITE/DMA READ TEST 
**        F4406 - WRITE/DMA READ TEST 
*         F4406 - WRITE/DMA READ TEST 
*         ----------------------------- 
* 
*         PURPOSE-
*         F4406 WILL CHECK THE DATA PATH AND  WRITE   DATA TO 
*         THE  ADAPTER   BUFFER.  MULTIPLE   READ/WRITES ARE
*         PERFORMED TO DETECT ANY SOLID BIT FAILURES.THE DRIVE
*         IS ACCESSED IN THIS TEST. 
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  IF ACCESS LEVEL IS LESS THAN 3, PROCEED TO F4407. 
*         2.  RESERVE ADAPTER AND  DRIVE. 
*         3.  WRITE 2525 PATTERN TO DISK ON PRE-ALLOCATED CYLINDER
*             AND  SAVE THE PATTERN IN THE OUTPUT BUFFER. 
*         4.  DIAGNOSTIC READ THE ADAPTER 10D  TIMES  COMPARING  THE
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         5.  RESERVE ADAPTER AND  DRIVE. 
*         6.  WRITE 5252 PATTERN TO DISK ON PRE-ALLOCATED CYLINDER
*             AND SAVE THE PATTERN IN THE OUTPUT BUFFER.
*         7.  DMA READ THE ADAPTER 10D TIMES COMPARING THE INPUT TO 
*             THE SAVED OUTPUT BUFFER.
*         8.  RESERVE ADAPTER AND  DRIVE. 
*         9.  WRITE FIRST  RANDOM  PATTERN TO  DISK  ON  PRE-ALLOCATED
*             CYLINDER AND SAVE THE PATTERN IN THE OUTPUT BUFFER. 
*         10. DEVICE INTERFACE READ THE ADAPTER 10D TIMES COMPARING THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         11. RESERVE ADAPTER AND  DRIVE. 
*         12. WRITE SECOND RANDOM  PATTERN TO  DISK  ON  PRE-ALLOCATED
*             CYLINDER AND SAVE THE PATTERN IN THE OUTPUT BUFFER. 
*         13. REPEAT MODULE LOOPS ON STEPS 1-12.
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM DATA SEED SAVED FOR RM CONDITION. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR RM CONDITION.
*         B4  = NUMBER OF SECTORS TO WRITE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
* 
*         BUFFERS USED -
*         IB,OB 
* 
1  FORMAT F4406 - WRITE/DIAGNOSTIC READ 
2  FORMAT F4406 ERROR(S) = *DECD
4  FORMAT F4406 E0012 L*OCTB MISCOMPARE ON WRITE/READCB 
5  FORMAT F4406 WRITE/READCB LC=*DECD 
7  FORMAT F4406 EC=*DECD, LC=*DECD
10 FORMAT F4406 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 6D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B6 = 0                        *CURRENT TRACK 
   B7 = 631B                    *CURRENT CYLINDER 
   IF (DC.EQ.11) B7 = 1455B 
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 502B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 40                      *EXECUTE WRITE/READCB
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 40                      *EXECUTE WRITE/READCB
   IF(B0.EQ.0) GOTO 30           *IF RM, USE SEEDS B3/B2
   RANDOM TO OB FOR WC, START B3   *USE B3 SEED FOR RM
   GOSUB 40 
   RANDOM TO OB FOR WC, START B2   *USE B2 SEED FOR RM
   GOSUB 40 
   GOTO 50
30 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
   GOSUB 40 
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 2
   B2 = OB(0) 
   GOSUB 40 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------WRITE/READCB SUBROUTINE PROCESS.
* 
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   B5 = 0                        *CURRENT SECTOR ADDRESS
   B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B10) TO DISPLAY  *IF NO RM 
   B4 = 1                        *NUMBER OF SECTORS TO WRITE
   B8 = 30B 
   WRITE B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74 
44 B8 = 01B 
   READCB, ABT 74                *DIAGNOSTIC READ 
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 44 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
46 RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 02/01
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   MSG 4(EA) TO LINE 5           *DISPLAY ERROR MESSAGE 
   CALL 98C                    *CALL MODULE ERROR PROCESSOR 
   WC = 502B                     *SET BUFFER WORD COUNT 
   GOTO 46 WHILE (B11+1.LE.4)  *IF ERROR COUNT.LE.4-CONTINUE
   ENDSUB GOTO 50                *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                      *F4406 WRT/DIAGNOSTIC READ 
   MODULE F4407,FMDFT(10,11),LOCK 
***       F4407 - READ FLAW MAP TEST
**        F4407 - READ FLAW MAP TEST
*         F4407 - READ FLAW MAP TEST
*         --------------------------- 
* 
*         PURPOSE-
*         F4407 DETERMINES IF THE SERIAL NUMBER, AND UTILITY FLAW MAP 
*         CAN BE READ OFF THE  PRE-RECORDED  SECTORS   OF A   FACTORY 
*         FORMATTED PACK.  SOLID BIT FAILURES MAY NOT BE DETECTED 
*         SINCE  THIS  DATA  IS NOT KNOWN.
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  RESERVE ADAPTER AND DRIVE.
*         2.  READ DISK SERIAL NUMBER SECTOR AND  SAVE IN THE OUTPUT
*             BUFFER. 
*         3.  READ THE SERIAL NUMBER  SECTOR  2 TIMES COMPARING DATA
*             READ WITH DATA SAVED. 
*         4.  REPEAT CONDITION LOOP ON STEPS 1-3. 
*         5.  RESERVE ADAPTER AND DRIVE.
*         6.  READ DISK UTILITY FLAW SECTOR AND SAVE IN THE OUTPUT
*             BUFFER. 
*         7.  READ DISK UTILITY FLAW SECTOR 2 COMPARING DATA READ 
*             WITH DATA SAVED.
*         8.  REPEAT CONDITION LOOP ON STEPS 5-7. 
*         9.  REPEAT MODULE LOOPS ON STEPS 1-8. 
* 
* 
/ 
*         ENTRY - 
*         A DRIVE IS REQUIRED.
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = SUBTEST INDEX 
*         B5  = CURRENT SECTOR ADDRESS. 
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
* 
*         BUFFERS USED -
*         IB,OB 
* 
* 
1  FORMAT F4407 - READ FLAW MAPS
2  FORMAT F4407 ERROR(S) = *DECD
4  FORMAT F4407 E0008 L*OCTB MISCOMPARE ON GET SERIAL TEST
6  FORMAT F4407 E0010 L*OCTB MISCOMPARE ON GET UTILITY TEST 
7  FORMAT F4407 EC=*DECD, LC=*DECD
10 FORMAT F4407 SERIAL NO.
12 FORMAT F4407 UTILITY SECTOR=*OCTB
14 FORMAT F4407 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF (AL.GE.3) GOTO 21 
   MSG 14 TO DAYFILE,PRINT
   EXIT 
21 B1 = 7D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 631                     *INVALID CYLINDER ADDRESS 
   IF(DC.EQ.11) B7 =1455B 
   B11 = 0                       *CLEAR ERROR COUNT 
* 
/---------MODULE TEST.
* 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------GET SERIAL NUMBER.
* 
22 B9 = 0                        *SET FIRST READ MARGIN 
24 B2 = 1                        *SET SUBTEST INDEX 
   WC = 502B                     *SET BUFFER WORD COUNT 
   B6 = 0                        *TRACK NUMBER
   B5 = 0                        *SECTOR NUMBER 
   B8 = 41B 
   RES DRIVE, ABT 74
   B8 = 20B 
   GET SERIAL, ABT 74            *READ SERIAL NUMBER
   COPY IB TO OB FOR WC          *SAVE SERIAL NUMBER
   B10 = 0                       *INITIALIZE INT. LOOP COUNT
26 B8 = 41B 
   RES DRIVE, ABT 74
   B8 = 20B 
   GET SERIAL, ABT 74            *READ SERIAL NUMBER
   IF(ES.AND.RM.EQ.0) MSG 10 TO DISPLAY  *IF NO RM
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 26 WHILE (B10.+.1.NE.2)  *LOOP TWO TIMES
27 IF (ES.AND.RC.EQ.RC) GOTO 24  *IF REPEAT CONDITION SET 
* 
/---------GET UTILITY SECTOR. 
* 
40 B2 = 3                        *SET SUBTEST INDEX 
   WC = 362B                     *SET BUFFER WORD COUNT 
   B4 = 0                        *RE-INITIALIZE SECTOR COUNT
   B6 = 1                        *TRACK NUMBER
42 B8 = 41B 
   RES DRIVE, ABT 74
   B8 = 22B 
   B5 = B4+1                     *SECTOR NUMBER 
   GET UTILITY SECTOR B5, ABT 74  *READ UTILITY SECTOR
   COPY IB TO OB FOR WC          *SAVE UTILITY SECTOR DATA
   B10 = 0                       *INITIALIZE INT. LOOP COUNT
44 B8 = 41B 
   RES DRIVE, ABT 74
   B8 = 22B 
   GET UTILITY SECTOR B5, ABT 74  *READ UTILITY SECTOR
   IF(ES.AND.RM.EQ.0) MSG 12 (B5) TO DISPLAY  *IF NO RM 
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 44 WHILE (B10.+.1.NE.2)  *LOOP TWO TIMES
46 GOTO 42 WHILE(B4+1.LT.24)     *INCR. SECTOR COUNT, REPEAT
   IF (ES.AND.RC.EQ.RC) GOTO 40  *IF REPEAT CONDITION SET 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7 (B11,B0) TO DISPLAY     *DISPLAY ERROR,LOOP COUNT
   GOTO 22
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 02/01
   MSG 1 TO LINE 1
   IF(B2.EQ.1) MSG 4(EA) TO LINE 5  *IF SERIAL COMPARE ERR
   IF(B2.EQ.3) MSG 6(EA) TO LINE 5  *IF UTILITY COMPARE ERR 
   CALL 98C                  *CALL MODULE ERROR PROCESSOR 
   IF(ES.AND.RC.NE.0) MSG 7 (B11,B0) TO DISPLAY 
   IF (B2.EQ.1) WC = 502B        *SET BUFFER WORD COUNT 
   IF (B2.NE.1) WC = 362B        *SET BUFFER WORD COUNT 
   IF(B2.EQ.1) GOTO 27 WHILE(B11+1.LE.2)  *IF SERIAL TEST 
   IF(B2.EQ.3) GOTO 46 WHILE(B11+1.LE.2)  *IF UTILITY TST 
   GOTO 50                   *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   IF(B2.EQ.1) GOTO 27 WHILE(B11+1.LE.2)  *IF SERIAL TEST 
   IF(B2.EQ.3) GOTO 46 WHILE(B11+1.LE.2)  *IF UTILITY TEST
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4407 READ FLAW MAPS
   MODULE F4408,FMDFT(10,11),LOCK 
***       F4408 - READ PREWRITTEN SECTORS TEST
**        F4408 - READ PREWRITTEN SECTORS TEST
*         F4408 - READ PREWRITTEN SECTORS TEST
*         ------------------------------------
* 
*         PURPOSE-
*         F4408 THE PREWRITTEN  SECTORS  OF  THE  FLAW/MAP  DIAGNOSTIC
*         CYLINDER WERE ORIGINALLY WRITTEN WITH A WORST CASE PATTERN BY 
*         THE FFU UTILITY AT INSTALLATION TIME. F4408 IS USED TO  CHECK 
*         THAT THE HEAD POSITIONING IS THE SAME AS WHEN THESE  SECTORS
*         WERE WRITTEN BY THE FFU UTILITY. ALSO BY PERFORMING A READ ON 
*         A KNOWN DATA PATTERN, FAILING READ LOGIC CAN BE ISOLATED. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  RESERVE DRIVE AND ADAPTER.
*         2.  SEEK TO THE PREALLOCATED CYLINDER, TRACK 3. 
*         3.  READ PRE-RECORDED CODED SECTORS(32-33)IN 1/1 TRACK  MODE, 
*             ONE SECTOR AT A TIME COMPARING DATA.
*         4.  INCREMENT TRACK COUNT REPEATING STEPS 2-4 UNTIL TRACK 25B 
*             HAS BEEN READ.
*         5.  REPEAT MODULE LOOPS ON STEPS 1-4. 
* 
*         -   TRACKS  0,1 ARE FLAWED.  THESE TRACKS CONTAIN PREWRITTEN
*             DATA .   WHEN  THESE  TRACKS  ARE  ACCESSED,  THE MODULE
*             WILL  BYPASS  THESE  FLAWED  TRACKS NOT REPORTING ERRORS. 
*             THIS WILL INSURE  THAT  ALL  TRACKS  OF  THE  PREWRITTEN
*             CYLINDER CAN BE READ. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
*         SECTORS 32,33 MUST BE PREWRITTEN WITH THE WORST CASE PATTERN- 
*         E36A,AAAA-.  THE FFU UTILITY PROGRAM MAY BE USED TO PRE-WRITE 
*         THE DATA. 
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT AND MODULE ERROR.
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4  = NUMBER OF SECTORS TO READ.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED -
*         IB,OB 
* 
*         REMARKS-
*         ONLY TRACKS 0-25B ARE READ TO CONSERVE ON TIME. 
* 
1  FORMAT F4408 - READ PREWRITTEN SECTOR
2  FORMAT F4408 ERROR(S) = *DECD
4  FORMAT F4408 E0011 L*OCTB MISCOMPARE ON WC PATTERN READ
5  FORMAT F4408 TRK=*OB  SECT=*OB 
7  FORMAT F4408 EC=*DECD, LC*DECD 
10 FORMAT F4408 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
   DATA (OB,3H) E36A,AAAA,E36A,AAAA,E36A,AAAA 
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE TEST
   MSG 10 TO DAYFILE,PRINT       *PRINT MESSAGE-AL TOO LOW
   EXIT 
21 B1 = 8D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 632B                    *CURRENT CYLINDER 
   IF(DC.EQ.11) B7 = 1456B
   B11 = 0                       *CLEAR ERROR COUNT 
   BA = 4                        *SET BA TO BUFFER WORD 4 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B6 = 3                        *CURRENT TRACK 
30 B5 = 24                       *CURRENT SECTOR
32 B8 = 41B 
   RES DRIVE, ABT 74
   GOSUB 44                    *WRITE OB WITH CODED/WC PATT 
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM 
   B4 = 1                        *NUMBER OF SECTORS TO READ 
   B8 = 24B                      *READ CODED SECTORS
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 34
   GOTO 36
34 IF(SB(1).AND.4000.EQ.0) GOTO 74  *IF SECTOR NOT FLAWED 
36 B8 = 47B 
   WC = 476B                     *SET BUFFER WORD COUNT 
   COMPARE IB(4) TO OB(4) FOR WC, ABT 70
40 GOTO 32 WHILE(B5+1.LT.24B)    *REPEAT FOR ALL SECTORS
   GOTO 30 WHILE(B6+1.LT.23B)     *INCREMENT TRACK COUNT
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT 
   EXIT                          *AND DAYFILE 
* 
/---------WORST CASE GENERATOR SUBROUTINE.
* 
44 OB(0) = 7066 
   OB(1) = 5252 
   OB(2) = 5256 
   OB(3) = 1552 
   OB(4) = 5252 
   OB(5) = 5343 
   OB(6) = 3252 
   OB(7) = 5252 
   COPY OB TO OB(10) FOR 10 
   COPY OB TO OB(20) FOR 20 
   COPY OB TO OB(40) FOR 40 
   COPY OB TO OB(100) FOR 100 
   COPY OB TO OB(200) FOR 200 
   COPY OB TO OB(400) FOR 100 
   COPY OB TO OB(500) FOR 2 
   RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 02/01
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   MSG 4(EA) TO LINE 5           *DISPLAY ERROR MESSAGE 
   CALL 98C                    *CALL MODULE ERROR PROCESSOR 
   GOTO 40 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 40 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE            *F4408 READ PREWRITTEN SECTORS 
   MODULE F4409,FMDFT(10,11),LOCK 
***       F4409 - WRITE PRE-ALLOCATED CYLINDER TEST 
**        F4409 - WRITE PRE-ALLOCATED CYLINDER TEST 
*         F4409 - WRITE PRE-ALLOCATED CYLINDER TEST 
*         ----------------------------------------- 
* 
*         PURPOSE-
*         F4409 IS  A  CROSS-CHECK  FOR  THE  POSITIONER.  SINCE  EVERY 
*         SECTOR  CODED  DATA  IS  UNIQUE, IT IS EASY TO DETECT A POS-
*         ITIONER FAULT.  ALL HEADS AND SECTORS OF THE CYLINDER WILL BE 
*         USED  DURING  THIS  TEST  AND  THE ADDRESS CODING INFORMATION 
*         WRITTEN IN EACH SECTOR WILL BE USED TO INSURE THAT  THE  DATA 
*         WAS  RECORDED  ON THE SURFACE WHERE EXPECTED. DATA IS WRITTEN 
*         ON THE CE CYLINDER. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  IF ACCESS LEVEL IS LESS THAN 3, ABORT TO MODULE F4410.
*         2.  RESERVE DRIVE AND ADAPTER.
*         3.  FILL THE OUTPUT BUFFER WITH ADDRESS CODED+RANDOM DATA.
*         4.  SEEK TO THE PREALLOCATED CYLINDER.
*         5.  WRITE CODED SECTORS, 1/1 INTERLACE, TRACK MODE. 
*         6.  INCREMENT TRACK NUMBER AND REPEAT  ABOVE  SEQUENCE  UNTIL 
*             ALL 23B TRACKS HAVE BEEN WRITTEN. 
*         7.  REPEAT MODULE LOOPS ON STEPS 1-6. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498B - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
1  FORMAT F4409 - WRITE PREALLOC. CYL 
2  FORMAT F4409 ERROR(S) = *DECD
5  FORMAT F4409 WRITING TRACK=*OCTB 
7  FORMAT F4409 EC=*DECD, LC=*DECD
10 FORMAT F4409 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 9D                      *MODULE NUMBER
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 631B                    *CURRENT CYLINDER 
   IF (DC.EQ.11) B7 = 1455B 
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 476B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B6 = 0                        *CURRENT TRACK ADDRESS 
   IF(B0.EQ.0) RANDOM TO OB(4) FOR WC, START RT 
   IF(B0.EQ.0) B3 = OB(4)   *SAVE STARTER FOR REPEAT MODULE 
   IF(B0.NE.0) RANDOM TO OB(4) FOR WC, START B3 
26 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5(B6) TO DISPLAY  *IF NO RM 
   B5 = 0                        *CURRENT SECTOR ADDRESS
   B4 = 25B                      *NUMBER OF SECTORS TO WRITE
   B8 = 31B 
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72 
30 GOTO 26 WHILE (B6+1.LT.23B)   *REPEAT FOR ALL TRACKS 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.NE.5312) GOTO 74          *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 30 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4409 WRITE PREALLOCATED CYL. 
   MODULE F4410,FMDFT(10,11),LOCK 
***       F4410 - WRITE/COMPARE PREALLOC.CYL. 
**        F4410 - WRITE/COMPARE PREALLOC.CYL. 
*         F4410 - WRITE/COMPARE PREALLOC.CYL. 
*         ----------------------------------------- 
* 
*         PURPOSE-
*         F4410 THE PURPOSE OF THIS MODULE IS TO CHECK THAT A 1/1 INTER-
*         LACE CYLINDER MODE WORKS.  THIS MODULE IS RUN IN CYLINDER MODE
*         TO DETECT PROBLEMS THAT  WOULD NOT OCCUR IN TRACK MODE. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  IF ACCESS LEVEL IS LESS THAN 3, PROCEED TO F4411. 
*         2.  WRITE OB WITH RANDOM DATA PATTERN.
*         3.  RESERVE DRIVE AND ADAPTER.
*         4.  SEEK TO THE PREALLOCATED CYLINDER.
*         5.  WRITE CODED SECTORS IN CYLINDER MODE, 1/1.
*         6.  READ 840D SECTORS OF CODED+RANDOM DATA
*             COMPARING WITH EXPECTED DATA. 
*         7.  REPEAT MODULE LOOPS ON STEPS 1-6. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE/VERIFY.
*         B5  = CURRENT SECTOR
*         B6  = CURRENT TRACK 
*         B7  = CURRENT SECTOR
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
1  FORMAT F4410 - W/COMPARE PREALLOC. CYL 
2  FORMAT F4410 ERROR(S) = *DECD
4  FORMAT F4410 WRITING ON CYLINDER 
5  FORMAT F4410 COMPARE CYLINDER
6  FORMAT F4410 BAD SPOT CYL=*DECD, TRK=*DECD, SEC=*DECD
7  FORMAT F4410 EC=*DECD, LC=*DECD
10 FORMAT F4410 NOT EXECUTED,ACCESS LEVEL NOT HIGH ENOUGH 
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 10D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 631B                    *CURRENT CYLINDER 
   IF (DC.EQ.11) B7 =1455B
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 476B                     *BUFFER WORD COUNT 
   BA = 4                        *SET BA TO BUFFER WORD 4 
   B0 = 0                        *INITIALIZE EXT.LOOP COUNT 
* 
/---------MODULE TEST.
* 
24 IF(B0.EQ.0) RANDOM TO OB(4) FOR WC, START RT 
   IF(B0.EQ.0) B3 = OB(4)    *SAVE STARTER FOR RM 
   IF(B0.NE.0) RANDOM TO OB(4) FOR WC, START B3 
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK ADDRESS 
40 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 4 TO DISPLAY  *IF RM NOT SET
   B4 = 1D                      *NUMBER OF SECTORS TO WRITE 
   B8 = 31B 
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72 
   IF(ES.AND.RM.EQ.0) MSG 5 TO DISPLAY  *IF RM NOT SET
   B8 = 12B 
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72
   B8 = 47B 
   COMPARE IB TO OB FOR B4, ABT 45
   GOTO 46
45 MSG 6 (B7,B6,B5) TO DISPLAY
46 GOTO 40 WHILE (B5 + 1.LT.25) 
   B5 = 0 
   GOTO 40 WHILE (B6+1.LT.23) 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.NE.5312) GOTO 74          *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4410 W/COMPARE PREALLOC. CYL.
   MODULE F4411,FMDFT(10,11),LOCK 
***       F4411 - RANDOM SEEK TEST
**        F4411 - RANDOM SEEK TEST
*         F4411 - RANDOM SEEK TEST
*         ------------------------
* 
*         PURPOSE-
*         F4411  PERFORMS  50B SEEKS  FROM  RANDOM  CYLINDERS  TO THE 
*         632B,1456B  CYLINDER AND BACK TO THE  RANDOM  CYLINDER. THIS
*         MODULE CAN BE USED AS A HEAD SHAKE TEST  TO  BOUNCE THE HEADS 
*         AROUND AFTER ADJUSTMENTS  HAVE BEEN MADE. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  IF ACCESS LEVEL IS LESS THAN 3, PROCEED TO F4412. 
*         2.  WRITE 25 RANDOM CYLINDER ADDRESS (BETWEEN  ZERO  AND  THE 
*             MAXIMUM CYLINDER ON THE DRIVE) IN THE OUTPUT BUFFER.
*         3.  RESERVE DRIVE AND ADAPTER.
*         4.  SEEK TO  THE FIRST RANDOM CYLINDER ADDRESS IN THE OUTPUT
*             BUFFER. 
*         5.  SEEK THE MAXIMUM DISK ADDRESS (559D). 
*         6.  REPEAT ABOVE SEQUENCE FOR SAME RANDOM CYLINDER- 2 TIMES.
*         7.  REPEAT  ABOVE SEQUENCE FOR EACH OF THE 25 RANDOM CYLINDER 
*             ADDRESSES IN THE OUTPUT BUFFER.  THE CHANNEL IS  RELEASED 
*             AT THE END OF EACH CYLINDER SEEK. 
*         8.  REPEAT MODULE LOOPS ON STEPS 1-7. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
*         F4498D- ERROR PROCESSOR FOR MODULE ERROR. 
* 
*         REGISTER USED - 
*         B0  = EXTERNAL LOOP COUNTER 
*         B1  = MODULE NUMBER.
*         B2  = CYLINDER ADDRESS COUNT. 
*         B3  = ERROR COUNTER.
*         B4  = NUMBER OF SECTORS TO EXECUTE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
* 
*         BUFFERS USED -
*         IB
* 
1  FORMAT F4411 - RANDOM SEEK 
2  FORMAT F4411 ERROR(S) = *DECD
3  FORMAT F4411 SEEK ADDRESS MISCOMPARE 
4  FORMAT F4411 E0017 L*OCTB SEEK ERROR    E*OCTB     A*OCTB
5  FORMAT F4411 CYL=*OCTB LC=*DECD
7  FORMAT F4411 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 11D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B7 = 632B                    *MAX. CYL. ADDRESS
   IF(DC.EQ.11) B7 =1456B 
   B9 = B7
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT.LOOP COUNT 
* 
/---------MODULE TEST.
* 
   B10 = 0                       *INITIALIZE INT.LOOP COUNT 
* 
/---------GENERATE RANDOM DATA PATTERN. 
* 
   B2 = 0                        *CYLINDER ADDRESS COUNT
26 RANDOM TO OB(B2) FOR 1, START RT  *WRITE CYL NO. IN OB 
   IF (OB(B2).GT.B7) GOTO 26     *IF CYLINDER TOO LARGE 
   GOTO 26 WHILE (B2+1.LE.25D)   *NUMBER OF NEW SEEKS 
30 B2 = 0                      *INITIALIZE CYLINDER COUNTER 
* 
/---------CONTINUE MODULE TEST. 
* 
32 B8 = 41B 
   RES DRIVE, ABT 74
   B7 = OB(B2)                   *SET RANDOM CYLINDER 
   IF(ES.AND.RM.EQ.0) MSG 5 (B7,B10) TO DISPLAY  *IF NO RM
   B8 = 44B 
   SEEK CYL B7 TRK B6 SEC B5, ABT 74  *SEEK TO RANDOM CYL.
   IF(ES.AND.RM.EQ.0) MSG 5 (B7 B6 B5) TO DISPLAY  *IF NO RM
   B8 = 41B 
   RES DRIVE, ABT 74
   B7 = 632B                    *CURRENT CYLINDER 
   IF(DC.EQ.11) B7 = 1456B
   B8 = 44B 
   SEEK CYL B7 TRK B6 SEC B5, ABT 74  *SEEK CYLINDER
   GOTO 32 WHILE(B10+1.LT.2)    *LOOP 2 TIMES ON CYLINDER 
36 B10 = 0                   *INITIALIZE INTERNAL LOOP COUNT
   GOTO 32 WHILE(B2+1.LE.25D)    *REPEAT SEQUENCE FOR 25 CYL
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                 *INCREMENT EXTERNAL LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY  *DISPLAY ERROR COUNT,LOOP COUNT
   GOTO 30
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 02/00
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   MSG 3 TO LINE 4
   IF(B7.NE.B9) MSG 4(EA,OB(B2),IB) TO LINE 5 
   IF(B7.EQ.B9) MSG 4(EA,B7,IB) TO LINE 5 
   CALL 98D                    *CALL MODULE ERROR PROCESSOR 
   GOTO 36 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 36 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4411 RANDOM SEEK 
   MODULE F4412,FMDFT(10,11),LOCK 
***       F4412 - WRITE CODED CYLINDER TEST 
**        F4412 - WRITE CODED CYLINDER TEST 
*         F4412 - WRITE CODED CYLINDER TEST 
*         --------------------------------- 
* 
*         PURPOSE-
*         F4412 CYLINDER MODE WILL PERFORM WRITE CYLINDER FASTER  THAN
*         TRACK MODE,CREATING A WORST CASE CONDITION  TO  ENHANCE ERROR 
*         DETECTION.  WHEN F4412 WRITES CODED DATA,  EACH  SECTOR  WILL 
*         CONTAIN  UNIQUE  DATA  WHICH  WILL  MAKE A READ ERROR EASY TO 
*         ASSOCIATE WITH THE FAILING ADDRESS.  THIS TEST IS PRIMARILY A 
*         TEST  OF THE AUTOMATIC ADDRESS INCREMENTING PROCESS PERFORMED 
*         BY THE CONTROLWARE IN CYLINDER MODE.
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  IF ACCESS LEVEL IS LESS THAN 3, ABORT TO MODULE F4413.
*         2.  RESERVE DRIVE AND ADAPTER.
*         3.  WRITE  476B  WORDS  OF  RANDOM  DATA BEGINNING WITH WORDS 
*             OB(4).
*         4.  SEEK TO THE PREALLOCATED CYLINDER.
*         5.  WRITE CODED SECTORS IN CYLINDER MODE. THE CHANNEL  IS 
*             RELEASED AT THE END OF PRE-ALLOCATED CYLINDER.
*         6.  REPEAT CONDITION LOOPS ON THE CYLINDER. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
* 
1  FORMAT F4412 - WRITE CODED CYLINDER
2  FORMAT F4412 ERROR(S) = *DECD
5  FORMAT F4412 WRITE CODED CYL=*OCTB 
7  FORMAT F4412 EC=*DECD, LC=*DECD
10 FORMAT F4412 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 12D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 631B                    *CURRENT CYLINDER 
   IF(DC.EQ.11) B7 =1455B 
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 476B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 IF(B0.EQ.0) RANDOM TO OB(4) FOR WC, START RT 
   IF(B0.EQ.0) B3 = OB(4)   *SAVE FOR REPEAT MODULE 
   IF(B0.NE.0) RANDOM TO OB(4) FOR WC, START B3 
   B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B7) TO DISPLAY  *IF NO RM
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 399D                    *NUMBER OF SECTORS TO WRITE 
   B8 = 31B 
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.NE.5312) GOTO 74          *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4412 WRITE CODED CYLINDER
   MODULE F4413,FMDFT(10,11),LOCK 
***       F4413 - READ/COMPARE A CODED CYLINDER 
**        F4413 - READ/COMPARE A CODED CYLINDER 
*         F4413 - READ/COMPARE A CODED CYLINDER 
*         --------------------------------------------
* 
*         PURPOSE-
*         F4413 THE PURPOSE OF THIS TEST IS TO CHECK THAT THE ADDRESS 
*         CODING WAS CORRECTLY WRITTEN BY THE PREVIOUS MODULE (F4412).
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  IF ACCESS LEVEL IS LESS THAN 3, PROCEED TO F4414. 
*         2.  RESERVE DRIVE AND ADAPTER.
*         3.  SEEK TO THE PREALLOCATED CYLINDER.
*         4.  READ PRERECORDED CODED SECTORS IN CYLINDER MODE THAT WERE 
*             WRITTEN BY MODULE F4412.
*         5.  VERIFY CONTENTS OF OB WITH CONTENTS OF SECTOR ON PACK.
*         6.  REPEAT 5,6 FOR EACH SECTOR OF THE PRE-ALLOCATED CYLINDER. 
*         7.  REPEAT MODULE LOOPS ON THE CYLINDER.
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498B - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4  = NUMBER OF SECTORS TO READ.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED- 
*         IB,OB 
* 
1  FORMAT F4413 - READ/COMPARE C-CYLINDER 
2  FORMAT F4413 ERROR(S) = *DECD
5  FORMAT F4413 TRK=*OB SECT=*OB
7  FORMAT F4413 EC=*DECD, LC=*DECD
10 FORMAT F4413 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 13D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 631B                    *CURRENT CYLINDER 
   IF(DC.EQ.11) B7 =1455B 
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 476B                     *BUFFER WORD COUNT 
   BA = 4                        *SET BA TO WORD 4 OF BUFFER
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM 
   B4 = 1                        *NUMBER OF SECTORS TO READ 
   B5 = 0                    *INITIALIZE SECTOR ADDRESS 
   B6 = 0                    *INITIALIZE TRACK ADDRESS
   B8 = 24B 
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
   RANDOM TO OB(4) FOR WC, START IB(4)  *WRITE PATT IN OB 
   B6 = 0                        *CURRENT TRACK ADDRESS 
26 B5 = 0                        *CURRENT SECTOR ADDRESS
   B8 = 41B 
30 RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *NO RM
   B4 = 399D                        *NUMBER OF SECTORS TO READ
   B8 = 24B 
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
   B8 = 47B 
   COMPARE IB(4) TO OB(4) FOR B4, ABT 72
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.NE.5312) GOTO 74 
   STATUS GENERAL, ABT 74 
   STATUS DETAIL, ABT 74
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 30 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *F4413 READ/COMPARE CODED CYL. 
   MODULE F4414,FMDFT(10,11),LOCK 
***       F4414 - READ SHORT
**        F4414 - READ SHORT
*         F4414 - READ SHORT
*         ------------------
* 
*         PURPOSE-
*         READ SHORT EACH ONE OF THE SUBTEST PATTERNS LISTED
*         BELOW 3 TIMES.  THE CHANNEL IS RESERVED AND 
*         RELEASED ON EACH SUBTEST.  SECTOR 0 ON TRACK 0
*         OF THE FIRST PREALLOCATED CYLINDER WILL BE USED FOR 
*         TESTING.
* 
*         SUBTEST  WORD1   WORD2   REST  GENERAL STATUS 
*           1       0000   0000    0000      0
*           2       4000   0000    0000      0
*           3       4000   4000    0000      5020 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
* 
*         IS EXECUTED.
* 
* 
*         1.  DISPLAY MODULE FUNCTION.
*         2.  ZERO THE OUTPUT BUFFER, AND SET THE DATA WORD 
*             AT THE SPECIFIED BUFFER ADDRESS, RESERVE THE
*             DRIVE, AND WRITE ONE SECTOR.  WHEN READ SHORT 
*             COMPARING THE GENERAL STATUS WITH THE EXPECTED
*             GENERAL STATUS AND THE CORRECTION VECTORS 
*             RETURNED WITH THE EXPECTED CORRECTION VECTORS.
*             THE SHORT READ IS EXECUTED 3 TIMES. 
*         4.  REPEAT CONDITION LOOPS ON THE CURRENT BUFFER. 
*         5.  ERRORS ARE HANDLED THROUGH AN ERROR ROUTINE.
*             THE ERROR ROUTINE BYPASSES SECTOR AND TRACK 
*             FLAWS AND CALLS THE ERROR PROCESSOR 98C FOR 
*             ALL OTHER ERRORS. 
* 
/ 
*    REGISTER USAGE 
* 
*         B0 = PASS COUNTER.
*         B1 = NNN
*              NNN = MODULE NUMBER. 
*         B2 = INDEX COUNTER. 
*         B4 = NUMBER OF SECTORS TO EXECUTE.
*         B5 = CURRENT SECTOR.
*         B6 = CURRENT TRACK. 
*         B7 = CURRENT CYLINDER.
*         B9 = DATA INPUT WORD. 
*         B11 = ERROR COUNTER.
*         OB(502) = DATA INPUT WORD.
*         OB(503) = ADDRESS OF INPUT WORD.
*         OB(504) = EXPECTED GENERAL STATUS.
* 
 1 FORMAT F4414 - READ SHORT
 3 FORMAT F4414 - ERROR(S) = *DECD
 5 FORMAT //F4414 - NOT EXECUTED, NEEDS AL=0003, AL=*OCT // 
 6 FORMAT F4414 - CANNOT WRITE ON DISK
10 FORMAT STATUS ERR- EXP=*OCT,ACT=*OCT  DATA=*OCT ADDR=*OCT
20 MSG 1 TO DISPLAY, PRINT
   B1 = 14D 
   B11 = 0        *CLEAR ERROR COUNTER
   IF (AL GE 3) GOTO 21      *IF ACCESS LEVEL GOOD
   MSG 5 (AL) TO LINE 1 
   GOTO 32                   *END IT
21 WC = 474                  *READ BUFFER SIZE
   B5 = 0                    *CURRENT SECTOR
   B6 = 0                    *CURRENT TRACK 
   B7 = 631B                *CURRENT CYLINDER 
   IF(DC.EQ.11) B7 =1455B 
   OB(474) =1047
   OB(475) = 3372B
   OB(476) = 0040 
   OB(477) = 5752 
   OB(500) = 1220 
   OB(501) = 0000 
22 B0 = 1                    *FIRST PASS
   B9 = 0000            *DATA 
   OB(502) = 0000            *DATA
   OB(503) = 0               *ADDRESS 
   OB(504) = 0000            *EXPECTED GENERAL STATUS 
   GOSUB 35                  *TEST FIRST SECTION
   IF(ES.AND.RC.NE.0) GOTO 22    *IF REPEAT CONDITION 
23 B9 = 4000                *DATA 
   OB(502) = 0000                *DATA
   OB(503) = 0000                   *ADDRESS
   OB(504) = 0000                *EXPECTED GENERAL STATUS 
   B0 = 2                        *PASS 2
   GOSUB 35                      *SECOND TEST 
   IF(ES.AND.RC.NE.0) GOTO 23    *IF REPEAT CONDITION 
24 B9 = 4000                *DATA 
   OB(502) = 4000                *DATA
   OB(503) =0000                  *ADDRESS
   OB(504) = 5020                *EXPECTED GENERAL STATUS 
   B0 = 3                        *PASS 3
   GOSUB 35                      *THIRD TEST
   IF(ES.AND.RC.NE.0) GOTO 24    *IF REPEAT CONDITION 
   IF (B3 EQ 0) EXIT             *IF NO ERRORS
31 MSG 3 (B11) TO DAYFILE,PRINT   *POST ERROR COUNT TO DAYFILE
32 PICTURE
   EXIT                          *PROCEED TO NEXT MODULE
/         WRITE SECTOR SUBROUTINE 
35 DUP 0 TO OB FOR WC            *CLEAR BUFFER
   MSG 1 (B0) TO DISPLAY         *DISPLAY PASS COUNT
   B4 = OB(503)                  *SET ADDRESS 
   OB(B4) = B9              *SET DATA 
   B4 = 1                        *NUMBER OF SECTORS TO WRITE
   OB(B4) = OB(502)              *SET DATA
   B8 = 41B 
   RES DRIVE, ABT 60
37 B8 = 26B 
   WRITE B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 46 
   B4 = 0                             *LOOP COUNT 
41 B8 = 44B 
   SEEK CYL B7 TRK B6 SEC B5, ABT 60
   B8 =26B
   SHORTRD CYL B7 TRK B6 SEC B5, ABT 60 
   IF(SB.NE.OB(504)) ERROR 0/0, GOTO 65    *DATA ERROR
44 GOTO 41 WHILE (B4+1 LE 2)   *SHORT READ 3 TIMES
   B8 = 20B 
   REL, ABT 53
45 RETURN 
/         ERROR ROUTINE 
46 IF (SB EQ 7777B) GOTO 47          *IF BC HUNG
   IF (SB(4) NE 7777B) GOTO 50       *IF BC GOOD
47 GOTO 53
50 IF (SB EQ 0) GOTO 53              *ASSUME NO DETAIL
   IF (SB(1) AND 4000 EQ 0) GOTO 53    *IF NOT A FLAW 
   ERROR 0/0                         *CLEAR ERROR 
51 GOTO 35 WHILE (B6+1 LE 22)        *TRY NEXT TRACK
   MSG 6 TO LINE 1
   GOTO 31                           *END IT
53 CALL 98C                          *CALL ERROR PROCESSOR
   B11 = B11+1               *INCREMENT ERROR COUNT 
   GOTO 45
60 IF (SB EQ 7777B) GOTO 47          *IF BC HUNG
   IF(SB(4).EQ.7777B)GOTO 47       IF BC HUNG 
   GOTO 53
65 MSG 10(OB(504),SB,OB(502),OB(503)) TO LINE 1   *STATUS ERR 
   GOTO 53
77 END 20 
COMPILE          *F4414 READ SHORT
   MODULE F4415,FMDFT(10,11),LOCK 
***       F4415 - MEASURE SEEK TIME 
**        F4415 - MEASURE SEEK TIME 
*         F4415 - MEASURE SEEK TIME 
*         ------------------------
* 
*         PURPOSE-
*         F4415 CHECKS THAT THE SEEK TIME LIES IN 
*         RANGE (25-56D) MSEC.
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
*         1. RESERVE THE DRIVE. 
*         2. SEEK TO CYLINDER 0.
*         3. SEEK TO CYLINDER 632B. 
*         4. CHECK THAT THE SEEK TIME IS IN RANGE (25-56D) MSEC 
*            IF NOT REPORT ERRORS . 
*         5. REPEAT STEPS 2-4  10 TIMES.
* 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTER USED - 
*         B0  = LOOP SWITCH 
*         B1  = MODULE NUMBER.
*         B2  = CYLINDER ADDRESS COUNT. 
*         B3  = ERROR COUNTER.
*         B4  = NUMBER OF SECTORS TO EXECUTE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         IB
* 
1  FORMAT F4415 - MEASURE SEEK TIME 
2  FORMAT F4415 ERROR(S) = *DECD
4  FORMAT TIME FOR CDC PLUG DISK CYL 0-808D 
6  FORMAT TIME FOR CDC PLUG DISK CYL 0-404D 
5  FORMAT F4415  SEEK TIME=*DECD MSEC.
7  FORMAT F4415 EC=*DECD, LC=*DECD
* 
   EQUATE MINT TO 20B 
   EQUATE MAXT TO 70B 
/---------MODULE INITIALIZATION.
* 
20 B0 =0          *LOOP SWITCH
   B9 = 624B
   IF(DC.EQ.11) B9 =1450B 
   B1 = 15D         *SET MODULE NUMBER
   B5 = 0           *CURRENT SECTOR 
   B6 = 0          * CURRENT TRACK
   B7 = 0          *CURRENT CYLINDER
   B8 = 41B        *COMMAND INDEX FOR ABORT 
   B10 = 0         * LOOP COUNT 
   B11 = 0         * CLEAR ERROR COUNT
   B15 = 1
   B14 = 6
   IF(DC.EQ.11) B14 = 4 
   MSG 1 TO DISPLAY,PRINT   *PRINT MODULE TITTLE
   MSG 1 TO LINE B15
   B15 = B15 + 1
   MSG B14 TO LINE B15
30 B8 = 41B 
   B7 = 0 
   RES DRIVE, ABT 75
   B0 = 0 
   B8 = 44B 
   SEEK CYL B7 TRK B6 SEC B5, ABT 75
40 B0 = 1 
   B7 = B9
   B8 = 44B 
   SEEK CYL B7 TRK B6 SEC B5 , ABT 75 
   B15 = B15 + 1
   MSG 5 (SB(60)) TO LINE B15 
   IF (SB(60).GT.MAXT) GOTO 70
   IF (ES.AND.RM.EQ.0) MSG 5 (SB(60)) TO DISPLAY
50 IF (SB(60).LT.MINT) GOTO 70
55 GOTO 30 WHILE(B10+1.LT.10) 
60 IF (B11.NE.0) MSG 2 (B11) TO DAYFILE 
   PICTURE
   EXIT 
70 MSG 1 TO LINE 1
   B11 = B11 + 1
   MSG 5 (SB(60)) TO LINE 2 
75 CALL 98C 
   MSG 1 TO DISPLAY 
   GOTO 55
   END 20 
COMPILE          *F4415 MEASURE SEEK TIME 
   MODULE F4416,FMDFT(10,11),LOCK 
***       F4416 - READ SEQUENTIAL ENTIRE DISK 
**        F4416 - READ SEQUENTIAL ENTIRE DISK 
*         F4416 - READ SEQUENTIAL ENTIRE DISK 
*         ------------------------------------- 
*         F4416- READ SEQUENTIAL, CYLINDER MODE, THE ENTIRE DISK. 
*         STARTING WITH SECTOR 0, TRACK 0, CYLINDER 0, THE
*         FULL DISK IS READ IN SEQUENTIAL, CYLINDER MODE. 
*         READ COMMAND IS USED TO READ PACK.
* 
*         PARAMETERS- REPEAT CONDITION. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  DISPLAY MODULE FUNCTION.
*         2.  RESERVE DRIVE.
*         3.  SEEK TO CYLINDER ZERO AND READ IN CYLINDER MODE,
*             THE ENTIRE DISK SURFACE.
*         4.  REPEAT CONDITION LOOPS ON THE CURRENT CYLINDER. 
*         5.  ERRORS ARE HANDLED THROUGH AN ERROR ROUTINE.
*             THE ERROR ROUTINE BYPASSES SECTOR AND TRACK 
*             FLAWS AND CALLS THE ERROR PROCESSOR 98C FOR 
*             ALL OTHER ERRORS. 
* 
/    REGISTER USAGE 
* 
*         B0 = COMPARE WORD COUNT.
*         B1 = NNN
*              NNN = MODULE NUMBER. 
*         B3 = ERROR COUNTER. 
*         B4 = NUMBER OF SECTORS TO EXECUTE.
*         B5 = CURRENT SECTOR.
*         B6 = CURRENT TRACK. 
*         B7 = CURRENT CYLINDER.
*         B8 = COMMAND INDEX FOR COMMAND ABORT
*         B11 = ERROR COUNT 
*         OB(504) = FIRST PREALLOCATED CYLINDER.
* 
 1 FORMAT F4416 READ DISK SEQUENTIAL
 2 FORMAT F4416 ERROR(S) = *DECD
 3 FORMAT F4416 - ERROR(S) IN MODULE
 4 FORMAT F4416 - CYL *OCT, TRK *OCT, SEC *OCT
20 MSG 1 TO DISPLAY,PRINT 
   B1 = 16D 
   B3 = 0 
   B4 = 617B
   B5 = 0 
   B6 = 0 
   B7 = 0 
   OB(504) = 631B 
   IF(DC.EQ.11) OB(504) = 1455B 
   B8 = 41B 
22 RES DRIVE, ABT 65
   MSG 4 (B7,B6,B5) TO DISPLAY
   B8 = 24B 
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 60
25 B4 = 617B
   B5 = 0 
   B6 = 0 
   IF (ES.AND.RC.EQ.RC) GOTO 22 
   GOTO 22 WHILE (B7+1.LE.OB(504))
   REL, ABT 60
   IF (B11.EQ.0) GOTO 77
   GOTO 72
60 B11 = B11 + 1
   IF (SB.EQ.7777B) GOTO 65 
   IF (SB(4).NE.7777B) GOTO 62
   GOTO 65
62 IF (SB.EQ.0) GOTO 65 
   IF (SB(1).AND.4000.NE.0) GOTO 25     *TRACK FLAW 
65 CALL 98C 
   IF (ES.AND.CM.NE.0) GOTO 22
   IF (B11.EQ.0) GOTO 77
   IF (B11.GE.10) GOTO 72 
   GOTO 25
72 MSG 2 (B11) TO DAYFILE 
   PICTURE
77 END 20 
COMPILE          *F4416 READ SEQUENTIAL ENTIRE DISK 
   MODULE F4420,FMDFT(10,11),LOCK 
***       F4420 - TRACK WRITE/READ
**        F4420 - TRACK WRITE/READ
*         F4420 - TRACK WRITE/READ
*        ---------------------------------------- 
* 
*         PURPOSE-
*         F4420 WILL WRITE AND READ EACH TRACK SELECTED ON THE DRIVE
*         IN A 1 TO 1 INTERLACE MODE. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  CALL SUBMODULE F4498A TO CHECK THE PARAMETERS SETTING IN
*             P0 THROUGH P6.
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3. IF THE CYLINDER NUMBER IS EQUAL TO 632B,1456B, GO TO STEP
*             11. 
*         4   RESERVE THE ADAPTER AND DRIVE.
*         5.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED, 
*             GO TO STEP 8. 
*         6.  WRITE THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A 
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5 
*             PARAMETER.  THE  WRITE  SEQUENCE  WILL  BE DONE IN 1 TO 1 
*             INTERLACE MODE. 
*         7.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 10. 
*         8.  READ  THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A 
*             NORMAL READ OR READ CODED COMMAND AS SELECTED IN  THE  P5 
*             PARAMETER.  THE  READ  SEQUENCE  WILL  BE  DONE IN 1 TO 1 
*             INTERLACE MODE. 
*         9.  IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             8.
*         10. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2 
*             THROUGH 10 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE 
*             DONE. 
*         11. INCREMENT THE CYLINDER COUNT BY ONE.
*         12. REPEAT STEPS 2 THROUGH 11 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         13. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH  12  UNTIL  THE ITERATION COUNTER IS GREATER THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*            CHANGING.
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5,  OR THE ACCESS 
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*         F4498A - VALIDATE PARAMETERS
*         F4498C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
* 
1  FORMAT F4420 - TRACK 1 TO 1 W/R
2  FORMAT F4420 ERROR(S) = *DECD
3  FORMAT F4420 EC=*DECD, LC=*DECD
4  FORMAT F4420 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=20D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 98A                     *VALIDATE PARAMETERS
24 B6=P2.RS.6                   *FIRST TRACK NUMBER 
   B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA
* 
   B9 = 632B
   IF(DC.EQ.11) B9 = 1456B
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
30 IF(B7.EQ.B9) GOTO 44       *SKIP CYLINDER B9 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 70             *RESERVE DRIVE
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A TRACK IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=31                        *WRITE CODED FLAG 
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 66
   GOTO 34                      *JUMP 
32 B8=30                        *WRITE FLAG 
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66
34 IF(P5.AND.2.NE.0) GOTO 40    *IF READ DISABLED 
* 
/---------READ A TRACK IN 1 TO 1 INTERLACE MODE.
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED
   B8=24                        *READ CODED FLAG
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 70 
   GOTO 40                      *JUMP 
36 B8=23                        *READ FLAG
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
40 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 42   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.
* 
42 B10=P2.AND.77                *UPPER TRACK NUMBER 
   GOTO 44 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE 
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
44 B6=P2.RS.6                   *FIRST TRACK NUMBER 
46 GOTO 52 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
52 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
55 MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.RC.NE.0) GOTO 62      *REPEAT CONDITION ENABLED
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
66 IF(EC.NE.5312) GOTO 70          *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 70            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR
   IF(SB(1).AND.4000.NE.0)GOTO 40  *IF TRACK FLAW 
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
74 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 40                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *F4420 TRACK 1 TO 1 W/R
   MODULE F4421,FMDFT(10,11),LOCK 
***       F4421 - TRACK WRITE READ COMPARE
**        F4421 - TRACK WRITE READ COMPARE
*         F4421 - TRACK WRITE READ COMPARE
*         --------------------------------
* 
*         PURPOSE-
*         F4421 WILL WRITE, READ AND COMPARE THE DATA READ FROM THE 
*         TRACK FOR EACH TRACK SELECTED.
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  CALL SUBMODULE F4498A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P6.
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  IF PRE ALLOCATED CYLINDER NUMBER, GO TO STEP 13.
*         4.  RESERVE THE ADAPTER AND DRIVE.
*         5.  CHECK PARAMETER P5 FOR WRITE DISABLED, AND  IF  DISABLED, 
*             GO TO STEP 7. 
*         6.  WRITE THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A 
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5 
*             PARAMETER.
*         7.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 11. 
*         8.  READ A SECTOR  IN  THE  SELECTED  TRACK  USING  A   NORMAL
*             READ  OR  READ  CODED  COMMAND  AS  SELECTED  IN   THE  P5
*             PARAMETER. COMPARE THE DATA READ WITH THE  EXPECTED  DATA 
*             AND REPORT ANY DATA ERRORS. 
*         9.  REPEAT STEP 8 UNTIL ALL THE SECTORS SELECTED IN PARAMETER 
*             P3  ARE  READ.
*         10. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 9.
*         11. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2 
*             THROUGH 10 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE 
*             DONE. 
*         12. INCREMENT THE CYLINDER COUNT BY ONE.
*         13. REPEAT STEPS 2 THROUGH 12 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         14. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH  13  UNTIL  THE ITERATION COUNTER IS GREATER THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*            CHANGING.
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*            GENERATION.
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, OR THE ACCESS
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*         F4498A - VALIDATE PARAMETERS
*         F4498C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
*         OB(504) = ODD/EVEN PASS COUNT.
* 
1  FORMAT F4421 - TRACK 1 TO 1 W/R/C
2  FORMAT F4421 ERROR(S) = *DECD
3  FORMAT F4421 EC=*DECD, LC=*DECD
4  FORMAT F4421 CYL=*OCTB T=*OB S=*OB 
5  FORMAT F4421 E0019 L*OCTB DATA COMPARE ERROR  (READ 1 TO 1)
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=21D                       *MODULE NUMBER IN DECIMAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 98A                     *VALIDATE PARAMETERS
24 B6=P2.RS.6                   *FIRST TRACK NUMBER 
   B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA
* 
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
   B9 = 632B
   IF(DC.EQ.11) B9 =1456B 
30 IF(B7.EQ.B9) GOTO 52       *SKIP CYLINDER B9 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 72             *RESERVE DRIVE
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A TRACK IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=31                        *WRITE CODED FLAG 
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 70
   GOTO 34                      *JUMP 
32 B8=30                        *WRITE FLAG 
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70
34 IF(P5.AND.2.NE.0)GOTO 44     *IF READ DISABLED 
* 
/---------INITIALIZE THE REGISTER TO READ THE TRACK.
* 
   OB(504)=P3.AND.77            *UPPER SECTOR NUMBER
   B5=P3.RS.6                   *LOWER SECTOR NUMBER
* 
/---------READ A TRACK 1 TO 1 INTERLACE AND CHECK THE DATA. 
* 
36 GOSUB 60                     *DISPLAY CURRENT MESSAGE
   B4 =1                        *ONE SECTOR READ
   IF(P5.AND.1.NE.0) GOTO 40    *IF CODED NOT SELECTED
   B8=24                        *READ CODED FLAG
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 72 
   GOTO 42                      *JUMP TO COMPARE DATA 
40 B8=23                        *READ FLAG
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
* 
/---------CHECK THE DATA READ FROM THE TRACK. 
* 
42 B10=476                      *COMPARE COUNT
   B8=47                        *COMPARE FLAG 
   COMPARE IB(4) TO OB(4) FOR B10, ABT 66 
* 
/---------UPDATE THE REGISTER TO READ THE NEXT SECTOR.
* 
   GOTO 36 WHILE (B5+1 LE OB(504))  *COMPLETE FIRST PASS
44 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 46   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.
* 
46 B10=P2.AND.77                *UPPER TRACK NUMBER 
   GOTO 50 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE 
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
50 B6=P2.RS.6                   *FIRST TRACK NUMBER 
52 GOTO 56 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
56 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
57 IF(B11.NE.0)MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.RC.NE.0) GOTO 62      *REPEAT CONDITION ENABLED
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS DATA MISCOMPARE ERROR.
* 
66 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   ERROR 2/1                       *ERROR CODE
   MSG 5 (EA) TO LINE 5            *ERROR MESSAGE 
   GOTO 74                         *GO TO REPORT THE ERROR
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
70 IF(EC.NE.5312) GOTO 72          *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 72            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 74          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 74             *NOT GENERAL STATUS ERROR
   IF(SB(1).AND.4000.NE.0)GOTO 44  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   IF(B11.GT.10) GOTO 57
   GOTO 44                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                    *F4421 TRACK WRITE READ COMPARE
   MODULE F4422,FMDFT(10,11),LOCK 
***       F4422 - CYLINDER WRITE READ 
**        F4422 - CYLINDER WRITE READ 
*         F4422 - CYLINDER WRITE READ 
*         --------------------------- 
* 
*         PURPOSE-
*         F4422 WILL WRITE AND READ EACH CYLINDER SELECTED
*         ON THE DRIVE. 
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  CALL SUBMODULE F4498A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P6.
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  IF PRE ALLOCATED CYLINDER, GO TO STEP 11. 
*         4.  RESERVE THE ADAPTER AND THE DRIVE.
*         5.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED, 
*             GO TO STEP 7. 
*         6.  WRITE  ALL  OF  THE  SECTORS  IN A SELECTED TRACK USING A 
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5 
*             PARAMETER.
*         7.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED ,GO 
*             TO STEP 9.
*         8.  READ  ALL  OF  THE  SECTORS  IN  A SELECTED TRACK USING A 
*             NORMAL READ OR READ CODED COMMAND AS SELECTED IN  THE  P5 
*             PARAMETER.
*         9.  IF REPEAT CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 8.
*         10. INCREMENT THE CYLINDER COUNT BY ONE.
*         11. REPEAT STEPS 2 THROUGH 11 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         12. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 13 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*            (P3 MUST BE EQUAL TO 37.)
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, OR THE ACCESS
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*         F4498A - VALIDATE PARAMETERS. 
*         F4422A - VALIDATE PARAMETERS. 
*         F4498C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
* 
1  FORMAT F4422 - CYLINDER 1 TO 1 W/R 
2  FORMAT F4422 ERROR(S) = *DECD
3  FORMAT F4422 EC=*DECD, LC=*DECD
4  FORMAT F4422 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=22D                       *MODULE NUMBER IN DECIMAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 98A                     *VALIDATE PARAMETERS
   CALL 22A                     *VALIDATE PARAMETERS
24 B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA
* 
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
   B9 = 632 
   IF(DC.EQ.11) B9 = 1456 
30 IF(B7.EQ.B9) GOTO 42 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 70             *RESERVE DRIVE
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A CYLINDER IN 1 TO 1 INTERLACE MODE.
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=0                         *FIRST SECTOR NUMBER
   B6=P2.RS.6                   *FIRST TRACK NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=31                        *WRITE CODED FLAG 
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 66
   GOTO 34                      *JUMP 
32 B8=30                        *WRITE FLAG 
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66
34 IF(P5.AND.2.NE.0) GOTO 40    *IF READ DISABLED 
* 
/---------READ A CYLINDER IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=0                         *FIRST SECTOR NUMBER
   B6=P2.RS.6                   *FIRST TRACK NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED
   B8=24                        *READ CODED FLAG
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 70 
   GOTO 40                      *JUMP 
36 B8=23                        *READ FLAG
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
40 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 42   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL CYLINDERS DONE. 
* 
42 GOTO 46 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
46 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.RC.NE.0) GOTO 62      *REPEAT CONDITION ENABLED
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
66 IF(EC.NE.5312) GOTO 70          *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 70            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR
   IF(SB(1).AND.4000.NE.0)GOTO 40  *IF TRACK FLAW 
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
74 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 40                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *F4422 CYLINDER 1 TO 1 W/R 
   MODULE F4422A,FMDFT(10,11),LOCK
***       F4422A - PARAMETER VERIFICATION 
**        F4422A - PARAMETER VERIFICATION 
*         F4422A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         F4422A  CHECKS  THE  PARAMETER  WORD  P3  TO  VERIFY THAT ALL 
*         SECTORS IN A TRACK ARE SELECTED.  IF PARAMETER P3 ENTRY ERROR 
*         IS  DETECTED, THE MODULE REPORTS AN ERROR SO THE OPERATOR CAN 
*         CORRECT THE PROBLEMS AND RERUN THE PRIMARY MODULE.
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  CHECK THAT PARAMETER WORD P3 SET SO THAT ALL SECTORS IN A 
*             TRACK WILL BE TESTED. 
*         2.  IF ALL SECTORS ARE NOT SELECTED IN P3,  REPORT  AN  ERROR 
*             TERMINATE EXECUTION OF THE MODULE SERIES. 
*         3.  CALCULATE THE NUMBER OF SECTORS TO WRITE AND OR  READ  IN 
*             THE  CYLINDER  USING  THE  NUMBER  OF  TRACKS SELECTED IN 
*             PARAMETER P2 AND PLACE THE NUMBER  IN  THE  B2  REGISTER. 
* 
/ 
*         ENTRY-
*         PARAMETERS P2 SET FOR THE NUMBER OF TRACKS TO TEST. 
*         PARAMETERS P3 SET FOR THE NUMBER OF SECTORS TO TEST.
* 
*         EXIT- 
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE PARAMETER P3 
*           IS NOT SET TO TEST ALL SECTORS IN A TRACK.
*         RETURN TO THE CALLING MODULE IF THE PARAMETER P3 IS OK WITH 
*           THE B2 REGISTER SET FOR THE NUMBER OF SECTORS TO WRITE OR 
*           READ. 
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         B2  = TEMPORARY STORAGE.
*         B10 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
0  FORMAT F4422A - CHECK PARAMETERS 
1  FORMAT F44*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
10 FORMAT CHECK P3 - NOT ALL SECTORS SELECTED.
16 FORMAT F44 -  CONFIDENCE TEST
20 FORMAT F44*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
22 FORMAT P5,P6,P8,P9-- *OCT *OCT *OCT *OCT 
23 FORMAT PARAMETERS DESCRIBED IN MODULE F4499
24 FORMAT --------------------------------------------------
* 
/---------EQUATES FOR PARAMETER BITS. 
* 
   EQUATE MAXSEC=24B
* 
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B12=12                    *FIRST LINE OF ERROR DISPLAY 
* 
/---------CHECK FOR ALL SECTORS SELECTED IN PARAMETER P3. 
* 
   IF(P3.EQ.MAXSEC) GOTO 40  *IF ALL SECTORS SELECTED 
* 
/---------DISPLAY THE SECTORS PARAMETER ENTRY ERROR.
* 
   IF(ES.AND.TM.NE.0)GOTO 32  *IF TERMINAL MODE SELECTED
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY
32 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS 
   MSG 22 (P5,P6,P8,P9) TO LINE 10  *DISPLAY PARAMETERS 
   MSG 10 TO LINE 12         *MOVE ERROR MESSAGE TO DISPLAY 
   MSG 23 TO LINE 13         *MODULE INFORMATION LINE 
   PICTURE
   HALT                      *REPORT ERROR AND WAIT FOR GO
   BLANK
   MSG 24 TO PRINT
* 
/---------RECORD THE WARNING MESSAGE AND EXIT THE MODULE. 
* 
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.
   GOTO 77                              *EXIT THE MODULE
* 
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO. 
* 
40 B10=P2.RS.6               *LOWEST TRACK NUMBER 
   B10=P2.AND.77-B10         *NUMBER OF TRACKS MINUS ONE
   B10=B10+1                 *ACTUAL NUMBER OF TRACKS 
   B2=0                      *INITIALIZE SECTOR 
42 B2=B2+34                  *CALCULATE NO. OF SECTORS
   GOTO 42 WHILE (B10-1.NE.0) 
   EXIT                      *EXIT THE MODULE 
77 END 30                    *END OF THE MODULE 
COMPILE                      *F4416A VALIDATE PARAMETERS
   MODULE F4423,FMDFT(10,11),LOCK 
***       F4423 - RANDOM WRITE/READ 
**        F4423 - RANDOM WRITE/READ 
*         F4423 - RANDOM WRITE/READ 
*         ------------------------- 
* 
*         PURPOSE-
*         F4423 WILL DO WRITES AND READS USING RANDOM CYLINDER NUMBERS, 
*         RANDOM TRACK NUMBERS, RANDOM SECTOR  NUMBERS,  AND  A  RANDOM 
*         NUMBER OF SECTORS. THE RANDOMS ARE WITHIN THE PARAMETERS
*         SELECTED. 
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  CALL SUBMODULES F4498A AND F4423A TO CHECK THE  PARAMETER 
*             SETTINGS IN P0 THROUGH P6.
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  GENERATE A RANDOM DATA PATTERN IN THE INPUT BUFFER. 
*         4.  GENERATE  A  RANDOM  CYLINDER NUMBER WITHIN THE LIMITS OF 
*             PARAMETERS P0 AND P1 FROM THE RANDOM NUMBERS IN THE INPUT 
*             BUFFER. 
*         5.  GENERATE A RANDOM  TRACK  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P2 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         6.  GENERATE A RANDOM SECTOR  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P3 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         7.  GENERATE A RANDOM NUMBER FOR THE NUMBER OF SECTORS TO  DO 
*             LIMITING  THE  NUMBER FROM 1 TO 8 FROM THE RANDOM NUMBERS 
*             IN THE INPUT BUFFER.
*         8.  RESERVE THE ADAPTER AND THE DRIVE.
*         9.  WRITE  THE RANDOM NUMBER OF SECTORS AT THE RANDOM ADDRESS 
*             (CYLINDER, TRACK, AND SECTOR) USING  A  NORMAL  WRITE  OR 
*             WRITE CODED COMMAND AS SELECTED IN THE P5 PARAMETER.
*         10. CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 12. 
*         11. READ  THE  RANDOM NUMBER OF SECTORS AT THE RANDOM ADDRESS 
*             (CYLINDER, TRACK, AND SECTOR) USING A NORMAL READ OR READ 
*             CODED  COMMAND AS SELECTED IN THE P5 PARAMETER. 
*         12. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 7 THROUGH 
*             11. 
*         13. INCREMENT  THE  PASS  COUNT  BY  ONE  AND IF 4096 DECIMAL 
*             PASSES HAVE NOT BEEN DONE, GO TO STEP 2.
*         14. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 14 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5,  OR IF WRITE 
*         IS DISABLED IN PARAMETER P5, OR IF THE ACCESS LEVEL IS TOO
*         LOW.
* 
*         SUBMODULES REFERENCED-
*         F4498A - VALIDATE PARAMETERS. 
*         F4423A - VALIDATE PARAMETERS. 
*         F4498C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF TRACKS TO PROCESS.
*         B3  = PASS COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
*         OB(503) = TEMPORARY STORAGE.
*         OB(504) = ITERATION COUNTER.
* 
1  FORMAT F4423 - RANDOM WRITE/READ 
2  FORMAT F4423 ERROR(S) = *DECD
3  FORMAT F4423 EC=*DECD, LC=*DECD
4  FORMAT F4423 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
   B1=23D                       *MODULE NUMBER IN DECIMAL 
   B3=0                         *INIT. PASS COUNTER 
   OB(504)=0                    *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 98A                     *VALIDATE PARAMETERS
   CALL 23A                     *VALIDATE PARAMETERS
   B9 = 632 
   IF(DC.EQ.11) B9 =1456
24 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA
30 RANDOM TO IB(1) FOR WC START RT  *SET INPUT BUFFER 
* 
/---------GENERATE A RANDOM CYLINDER ADDRESS FOR THIS PASS. 
* 
   B4=0                         *INITIALIZE BUFFER INDEX
   B7=P0                        *DEFAULT CYINDER ADDRESS
   IF(P0.EQ.P1) GOTO 34         *IF SAME CYLINDERS
32 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO CYLINDER FOUND 
   B7=IB(B4).AND.1777B          *RANDOM CYLINDER
   IF(B7.LT.P0) GOTO 32         *IF CYLINDER TOO SMALL
   IF(B7.GT.P1) GOTO 32         *IF CYLINDER TOO LARGE
   IF(B7.EQ.B9) GOTO 32       *IF CYLINDER B9 
* 
/---------GENERATE A RANDOM TRACK ADDRESS FOR THIS PASS.
* 
34 B6=P2.RS.6                   *LOWER TRACK
   B2=P2.AND.77                 *UPPER TRACK NUMBER 
   IF(B6.EQ.B2) GOTO 40         *IF SAME TRACKS 
   B10=B6                       *SAVE LOWER TRACK NUMBER
   B4=0                         *INITIALIZE BUFFER INDEX
36 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO TRACK FOUND
   B6=IB(B4) AND 77B            *RANDOM TRACK 
   IF(B6.GT.B2) GOTO 36         *IF TRACK TOO SMALL 
   IF(B6.LT.B10) GOTO 36        *IF TRACK TOO LARGE 
* 
/---------GENERATE A RANDOM SECTOR ADDRESS FOR THIS PASS. 
* 
40 B5=P3.RS.6                   *LOWER SECTOR 
   B2=P3.AND.77                 *UPPER SECTOR 
   IF(B5.EQ.B2) GOTO 44         *IF SECTORS EQUAL 
   B10=B5                       *SAVE LOWER SECTOR
   B4=0                         *INITIALIZE BUFFER INDEX
42 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B5=IB(B4) AND 37B            *RANDOM SECTOR
   IF(B5.GT.B2) GOTO 42         *IF SECTOR TOO LARGE
   IF(B5.LT.B10) GOTO 42        *IF SECTOR TOO SMALL
* 
/---------GENERATE A RANDOM NUMBER OF SECTORS FOR THIS PASS.
* 
44 B10=B2-B5+1                  *MAXIMINE SECTORS COUNT 
   B2=1                         *DEFAULT SECTORS COUNT
   B4=0                         *INITIALIZE BUFFER INDEX
46 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B2=IB(B4).AND.7+1            *RANDOM SECTOR COUNT
   IF(B2.GT.B10) GOTO 46        *IF COUNT TOO LARGE 
   OB(503)=B5                   *SAVE SECTOR NUMBER 
* 
/---------BEGIN THE WRITE/READ SEQUENCE.
* 
50 B8=41                        *CONNECT FLAG 
   RES DRIVE,ABT 72 
* 
/---------WRITE THE SECTORS IN 1 TO 1 INTERLACE MODE. 
* 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2                        *NUMBER OF SECTORS
   IF(P5.AND.1.NE.0) GOTO 52    *IF CODED NOT SELECTED
   B8=31                        *WRITE CODED FLAG 
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 70
   GOTO 54                      *JUMP 
52 B8=30                        *WRITE FLAG 
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70
54 IF (P5.AND.2.NE.0) GOTO 42 
* 
/---------READ THE SECTORS IN 1 TO 1 INTERLACE MODE.
* 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2                        *NUMBER OF SECTORS
   B5=OB(503)                   *SECTOR NUMBER
   IF(P5.AND.1.NE.0) GOTO 56    *IF CODED NOT SELECTED
   B8=24                        *READ CODED FLAG
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 72 
   GOTO 60                      *JUMP 
56 B8=23                        *READ FLAG
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
60 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 62   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 50                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR 4096 DECIMAL PASSES DONE. 
* 
62 GOTO 24 WHILE (B3+1.NE.0)    *IF 4096D PASSES NOT DONE 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
   OB(504)=OB(504)+1            *INCREMENT ITERATION COUNT
   IF(OB(504).LT.P9) GOTO 24    *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
64 IF(ES.AND.RC.NE.0) GOTO 66      *REPEAT CONDITION ENABLED
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
66 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS COMMAND ABORT IN THE MODULE.
* 
70 IF(EC.NE.5312) GOTO 72          *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 72            *GET DETAILED STATUS 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.NE.5000) GOTO 74          *NOT 5000 GENERAL STATUS 
   IF(SB(1).AND.4000.NE.0)GOTO 60  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 60                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *F4423 RANDOM WRITE/READ 
   MODULE F4423A,FMDFT(10,11),LOCK
***       F4423A - PARAMETER VERIFICATION 
**        F4423A - PARAMETER VERIFICATION 
*         F4423A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         F4423A CHECKS THAT WRITE IS ENABLED IN PARAMETER WORD P5. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  CHECK IF WRITE IS ENABLED IN PARAMETER WORD P5. 
*         2.  IF  WRITE  IS NOT DISABLED IN PARAMETER WORD P5, EXIT THE 
*             MODULE. 
*         3.  DISPLAY  THE  PARAMETER  ERROR  THAT WRITE IS DISABLED IN 
*             PARAMETER WORD 5. 
*         4   TERMINATE EXECUTION OF MODULE F4423.
* 
/ 
*         ENTRY-
*         PARAMETER WORD P5 CONTAINS THE DISABLE WRITE BIT. 
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL. 
* 
*         EXIT- 
*         TERMINATE EXECUTION OF MODULE F4423 IF WRITE IS DISABLED IN 
*         PARAMETER WORD P5.
*         RETURN TO MODULE F4423 IF WRITE IS NOT DISABLED IN PARAMETER
*         WORD P5.
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
0  FORMAT F4423A - CHECK PARAMETERS 
1  FORMAT F44*D MODULE ABORTED - WRITE DISABLED IN P5 
13 FORMAT CHECK P5 - WRITE DISABLED 
16 FORMAT F44 -  CONFIDENCE TEST
20 FORMAT F44*D NOT EXECUTED, WRITE DISABLED IN P5
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
22 FORMAT P5,P6,P8,P9-- *OCT *OCT *OCT *OCT 
23 FORMAT PARAMETERS DESCRIBED IN MODULE F4499
24 FORMAT --------------------------------------------------
* 
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
* 
/---------CHECK P5 FOR BOTH WRITE AND READ DISABLED.
* 
   IF(P5.AND.4.EQ.0) EXIT    *IF WRITE NOT DISABLED 
* 
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.
* 
   IF(ES.AND.TM.NE.0)GOTO 70  *IF TERMINAL MODE SELECTED
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY
70 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS 
   MSG 22 (P5,P6,P8,P9) TO LINE 10  *DISPLAY PARAMETERS 
   MSG 13 TO LINE 12         *MOVE ERROR MESSAGE TO DISPLAY 
   MSG 23 TO LINE 13         *MODULE INFORMATION LINE 
   PICTURE
   HALT                      *REPORT ERROR AND WAIT FOR GO
   BLANK
   MSG 24 TO PRINT
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.
77 END 30                    *END OF THE MODULE 
COMPILE                      *F4423A VALIDATE PARAMETERS
   MODULE F4430,FMDFT(10,11),LOCK 
***       F4430 - RESET MAINTENANCE TEST
**        F4430 - RESET MAINTENANCE TEST
*         F4430 - RESET MAINTENANCE TEST
*         ------------------------------
* 
*         PURPOSE-
*         F4430 ISSUES A RESET COMMAND TO THE  ADAPTER TO CORRECT 
*         A HUNG CONDITION. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1.  CONNECT THE ADAPTER.
*         2.  ISSUE THE RESET COMMAND.
*         3.  VERIFY THAT GENERAL STATUS IS EQUAL TO ZERO.
*         4.  REPEAT MODULE/CONDITION LOOPS ON STEPS 1-3. 
*         5.  SCOPE LOOP DISPLAYS SCOPE LOOP MESSAGE TO THE DISPLAY AND 
*             LOOPS ON THE RESET COMMAND. 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
* 
1  FORMAT F4430 - RESET MAINTENANCE TEST
2  FORMAT F4430 ERROR(S) = *DECD
4  FORMAT F4430 E0020  L*OCTB    GENERAL STATUS *OCTB ON - RESET
7  FORMAT F4430 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 30D                      *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
* 
/---------MODULE TEST.
* 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
24 B8 = 40B 
   RES CONTROLLER, ABT 74 
   IF(ES.AND.CM.EQ.0) MSG 1 TO DISPLAY  *IF NO REPEAT 
   B8 = 42B 
   RESET, ABT 74                 *RESET ADAPTER 
   B8 = 04B 
   STATUS GENERAL, ABT 74        *GET GENERAL STATUS
   WC = 1                        *WORD COUNT FOR COMPARE
   B8 = 47B 
   COMPARE SB TO OB FOR WC, ABT 70
* 
/---------MODULE REPEAT/EXIT. 
* 
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT 
   GOTO 24
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   GOTO 77                       *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/02
   IF(ES.AND.SL.NE.0) GOTO 72   *IF SCOPE LOOPING SET 
   MSG 1 TO LINE 1              *DISPLAY MODULE TITLE 
   MSG 4(EA,SB) TO LINE 5 
   CALL 98C                     *CALL MODULE ERROR PROCESSOR
72 B11 = B11+1                  *INCREMENT ERROR COUNT
   GOTO 40
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
76 B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 40
77 END 20 
COMPILE                      *F4430 RESET MAINTENANCE TEST
   MODULE F4431,FMDFT(10,11),LOCK 
***       F4431 - SEEK ADDRESS TEST 
**        F4431 - SEEK ADDRESS TEST 
*         F4431 - SEEK ADDRESS TEST 
*         ------------------------- 
* 
*         PURPOSE-
*         F4431  PERFORMS  A  SEEK TO THE ADDRESS SELECTED IN PARAMETER 
*         P0, P2, AND P3. 
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1. CHECK THAT THE PARAMETERS P0, P2, AND P3 ARE CORRECT.
*         2. RESERVE  THE  DRIVE  AND  SEEK  TO THE CYLINDER, TRACK AND 
*            SECTOR SELECTED IN PARAMETERS P0, P2, AND P3.
*         3. REPEAT MODULE/CONDITION LOOPS ON STEPS 2-3.
*         4. SCOPE LOOP DISPLAYS SCOPE LOOP MESSAGE AND LOOPS ON  STEPS 
*            1-2. 
* 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
*         P0 CONTAINS THE CYLINDER NUMBER.
*         P2 CONTAINS THE TRACK NUMBER. 
*         P3 CONTAINS THE SECTOR NUMBER.
* 
*         EXIT -
* 
*         SUBMODULES REFERENCED - 
*         F4498A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B5  = SECTOR ADDRESS. 
*         B6  = TRACK ADDRESS.
*         B7  = CYLINDER ADDRESS. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
* 
* 
1  FORMAT F4431 - SEEK ADDRESS TEST 
2  FORMAT F4431 ERROR(S) = *DECD
5  FORMAT F4431 CYL=*OCTB T=*OB S=*OB 
7  FORMAT F4431 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 31D                      *MODULE NUMBER 
   B11 = 0                       *CLEAR ERROR COUNT 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
* 
/---------MODULE TEST.
* 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
   CALL 98A                      *VERIFY PARAMETERS AND AL
   B5 = P3.RS.6                  *SECTOR ADDRESS
   B6 = P2.RS.6                  *TRACK ADDRESS 
   B7 = P0                       *CYLINDER ADDRESS
24 B8 = 41B 
   RES DRIVE, ABT 74             *RESERVE THE DRIVE 
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM 
   B8 = 44B 
   SEEK CYL B7 TRK B6 SEC B5, ABT 74   *SEEK TO ADDRESS 
* 
/---------MODULE REPEAT/EXIT. 
* 
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT 
   GOTO 24
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   GOTO 77                       *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
76 B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 40
77 END 20 
COMPILE                      *F4431 SEEK ADDRESS TEST 
   MODULE F4432,FMDFT(10,11),LOCK 
***       F4432 -  WRITE ONE SECTOR 
**        F4432 -  WRITE ONE SECTOR 
*         F4432 -  WRITE ONE SECTOR 
*         ------------------------- 
* 
*         PURPOSE-
*         F4432 WRITES THE SECTOR SELECTED IN PARAMETER P0,P2 AND P3. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1. CHECK THAT THE PARAMETER REGISTERS AND  ACCESS  LEVEL ARE
*            CORRECT. 
*         2. RESERVE THE ADAPTER AND DRIVE. 
*         3. GENERATE A DATA PATTERN IN THE OUTPUT BUFFER DESCRIBED IN
*            THE PARAMETERS.
*         4. WRITE ONE SECTOR AS SELECTED IN THE PARAMETERS P0, P2 AND
*            P3.
*         5. REPEAT MODULE/CONDITION LOOPS ON STEPS 2-4.
*         6. SCOPE  LOOP DISPLAYS SCOPE LOOP MESSAGE AND LOOPS ON 
*            STEPS 2-4. 
* 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P2 CONTAINS THE TRACK NUMBER. 
*         P3 CONTAINS THE SECTOR NUMBER.
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.
*         P6 CONTAINS THE DATA CONTROL WORD.
* 
*         EXIT -
* 
*         SUBMODULES REFERENCED - 
*         F4498A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4 = NUMBER OF SECTORS. 
*         B5  = SECTOR ADDRESS. 
*         B6  = TRACK ADDRESS.
*         B7  = CYLINDER ADDRESS. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED -
*         OUTPUT BUFFER CONTAINS THE PATTERN WRITTEN INTO THE SECTOR. 
* 
* 
1  FORMAT F4432 - WRITE ONE SECTOR
2  FORMAT F4432 ERROR(S) = *DECD
5  FORMAT F4432 CYL=*OCTB T=*OB S=*OB 
7  FORMAT F4432 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 32D                      *MODULE NUMBER 
   B11 = 0                       *CLEAR ERROR COUNT 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
* 
/---------MODULE TEST.
* 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
   CALL 98A                      *VERIFY PARAMETERS, AL OK
   B5 = P3.RS.6                  *SECTOR ADDRESS
   B6 = P2.RS.6                  *TRACK ADDRESS 
   B7 = P0                       *CYLINDER ADDRESS
   WC = 502B                     *BUFFER WORD COUNT 
* 
/--------DATA CONTROL.
* 
22 IF(P5.AND.10.EQ.0) GOTO 24 
   DUP P6 TO OB FOR WC
   GOTO 26
24 IF(P6.NE.0) RANDOM TO OB FOR WC, START P6
   IF(P6.EQ.0) RANDOM TO OB FOR WC, START RT
26 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO RM 
   B4 = 1 
   B8 = 30B 
   WRITE B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74 
* 
/---------MODULE REPEAT/EXIT. 
* 
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT 
   IF (ES.AND.RC.NE.0) GOTO 26    *IF RC CONDITION
   GOTO 22
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   GOTO 77                       *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
76 B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 40
77 END 20 
COMPILE                      *F4432 WRITE ONE SECTOR
   MODULE F4433,FMDFT(10,11),LOCK 
***       F4433 - READ ONE SECTOR TEST
**        F4433 - READ ONE SECTOR TEST
*         F4433 - READ ONE SECTOR TEST
*         ----------------------------
* 
*         PURPOSE-
*         F4433 READS THE SECTOR SELECTED BY PARAMETERS P0,P2 AND P3. 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
*         1. CHECK THAT THE PARAMETER REGISTERS AND  THE  ACCESS LEVEL
*            ARE CORRECT. 
*         2. RESERVE THE ADAPTER AND THE DRIVE. 
*         3. READ ONE SECTOR AS SELECTED BY THE PARAMETERS P0, P1, AND
*            P3.
*         4. REPEAT MODULE/CONDITION LOOPS ON STEPS 2-3.
*         5. SCOPE LOOP DISPLAYS SCOPE LOOP MESSAGE AND LOOPS ON STEPS
*            2-3. 
* 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P2 CONTAINS THE TRACK NUMBER. 
*         P3 CONTAINS THE SECTOR NUMBER.
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.
*         P6 CONTAINS THE DATA CONTROL WORD.
* 
*         EXIT -
* 
*         SUBMODULES REFERENCED - 
*         F4498A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4 = NUMBER OF SECTORS. 
*         B5  = SECTOR ADDRESS. 
*         B6  = TRACK ADDRESS.
*         B7  = CYLINDER ADDRESS. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
* 
1  FORMAT F4433 - READ ONE SECTOR TEST
2  FORMAT F4433 ERROR(S) = *DECD
5  FORMAT F4433 CYL=*OCTB T=*OB S=*OB 
7  FORMAT F4433 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 33D                      *MODULE NUMBER 
   B11 = 0                       *CLEAR ERROR COUNT 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
* 
/---------MODULE TEST.
* 
22 B0 = 0                        *INITIALIZE EXT. LOOP COUNT
   CALL 98A                      *CHECK PARAMETERS, AL OK 
   B5 = P3.RS.6                  *SECTOR ADDRESS
   B6 = P2.RS.6                  *TRACK ADDRESS 
   B7 = P0                       *CYLINDER ADDRESS
24 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM 
   B4 = 1                      *NUMBER OF SECTORS 
   B8 = 23B 
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
* 
/---------MODULE REPEAT/EXIT. 
* 
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT 
   GOTO 24
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   GOTO 77                       *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
76 B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 40
77 END 20 
COMPILE                      *F4433 READ ONE SECTOR 
   MODULE F4434,FMDFT(10,11),LOCK 
***       F4434 - WRITE/READ ONE SECTOR AND COMPARE DATA
**        F4434 - WRITE/READ ONE SECTOR AND COMPARE DATA
*         F4434 - WRITE/READ ONE SECTOR AND COMPARE DATA
*         ----------------------------- 
* 
*         PURPOSE-
*         F4434  WRITES AND READS ONE SECTOR AS SELECTED BY THE P0,P2,
*         AND P3 PARAMETERS.
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1. CHECK THAT THE PARAMETER REGISTERS AND THE ACCESS LEVEL IS 
*            CORRECT. 
*         2. RESERVE THE ADAPTER AND DRIVE. 
*         3. WRITE  AND  READ ONE SECTOR AS SELECTED BY P0, P2, AND P3
*            PARAMETERS.
*         4. COMPARE DATA.
*         5. REPEAT MODULE/CONDITION LOOPS ON STEPS 3.
*         6. SCOPE LOOP DISPLAYS SCOPE LOOP MESSAGE AND LOOPS ON STEPS
*            3. 
* 
/ 
*         ENTRY - 
*         A  DRIVE IS REQUIRED. 
*         THE  ADAPTER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P2 CONTAINS THE TRACK NUMBER. 
*         P3 CONTAINS THE SECTOR NUMBER.
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.
*         P6 CONTAINS THE DATA CONTROL WORD.
* 
*         EXIT -
* 
*         SUBMODULES REFERENCED - 
*         F4498A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4  = NUMBER OF SECTORS.
*         B5  = SECTOR ADDRESS. 
*         B6  = TRACK ADDRESS.
*         B7  = CYLINDER ADDRESS. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED -
*         OUTPUT BUFFER HOLDS THE PATTERN WRITTEN IN THE SECTOR.
* 
1  FORMAT F4434 - WRITE/READ ONE SECTOR 
2  FORMAT F4434 ERROR(S) = *DECD
4  FORMAT F4434 E0020  L*OCTB     DATA COMPARE ERROR
7  FORMAT F4434 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 34D                      *MODULE NUMBER 
   B11 = 0                       *CLEAR ERROR COUNT 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
* 
/---------MODULE TEST.
* 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
   CALL 98A                      *CHECK PARAMETERS, AL OK 
   B5 = P3.RS.6                  *SECTOR ADDRESS
   B6 = P2.RS.6                  *TRACK ADDRESS 
   B7 = P0                       *CYLINDER ADDRESS
   WC = 502B                     *READ BUFFER SIZE
* 
/--------DATA CONTROL 
* 
22 IF(P5.AND.10.EQ.0) GOTO 24 
   DUP P6 TO OB FOR WC
   GOTO 26
24 IF(P6.NE.0) RANDOM TO OB FOR WC, START P6
   IF(P6.EQ.0) RANDOM TO OB FOR WC, START RT
26 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 1 TO DISPLAY  *IF NO RM 
27 B4 = 1                        *NUMBER OF SECTORS 
   B8 = 30B 
   WRITE B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74 
   B4 = 1 
   B8 = 23B 
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
   B8 = 47B 
   COMPARE IB(0) TO OB(0) FOR WC, ABT 70
* 
/---------MODULE REPEAT/EXIT. 
* 
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT 
   GOTO 22
   IF (ES.AND.RC.NE.0) GOTO 26
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   GOTO 77                       *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 IF(ES.AND.SL.NE.0) GOTO 72   *IF SCOPE LOOPING SET 
   ERROR 02/01
   MSG 1 TO LINE 1              *DISPLAY MODULE TITLE 
   MSG 4(EA) TO LINE 5          *DISPLAY LINE NO. OF ERROR
   CALL 98C                     *CALL MODULE ERROR PROCESSOR
72 B11 = B11+1                  *INCREMENT ERROR COUNT
   WC = 502B                     *SET BUFFER WORD COUNT 
   GOTO 40
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
76 B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 40
77 END 20 
COMPILE                      *F4434 WRITE/READ ONE SECTOR 
   MODULE F4435,FMDFT(10,11),LOCK 
***       F4435 - TOGGLE PARAMETER TEST 
**        F4435 - TOGGLE PARAMETER TEST 
*         F4435 - TOGGLE PARAMETER TEST 
*         ----------------------------- 
* 
*         PURPOSE-
*         F4435  TOGGLE BETWEEN THE UPPER AND LOWER ADDRESS BOUNDARIES
*         BY PERFORMING A SEEK AND READ OF THE DATA ON THESE
*         ADDRESSES.
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1. CHECK THE VALIDITY OF THE INPUT PARAMETERS.
*         2. CHECK THAT ACCESS LEVEL MEETS THE CRITERIA  OF  THE  INPUT 
*            PARAMETERS.
*         3. RESERVE THE DRIVE AND TOGGLE BETWEEN THE  DESCRIBED INPUT
*            PARAMETERS.
*         4. REPEAT MODULE/CONDITION LOOPS .
* 
/ 
*         ENTRY - 
*         A DRIVE IS REQUIRED.
*         THE ADAPTER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE FIRST AND LAST TRACK NUMBERS. 
*         P3 CONTAINS THE FIRST AND LAST SECTOR NUMBERS.
* 
*         EXIT -
* 
*         SUBMODULES REFERENCED - 
*         F4498A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         F4498C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4  = NUMBER OF SECTORS.
*         B5  = SECTOR ADDRESS. 
*         B6  = TRACK ADDRESS.
*         B7  = CYLINDER ADDRESS. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
* 
*         REMARKS - 
* 
1  FORMAT F4435 - TOGGLE PARAMETER TEST 
2  FORMAT F4435 ERROR(S) = *DECD
5  FORMAT F4435 CYL=*OCTB T=*OB S=*OB 
7  FORMAT F4435 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 35D                      *MODULE NUMBER 
   B11 = 0                   *CLEAR ERROR COUNT 
   MSG 1 TO PRINT            *PRINT MODULE TITLE
* 
/---------MODULE TEST.
* 
22 B0 = 0                    *INITIALIZE EXT. LOOP COUNT
   CALL 98A                  *CHECK PARAMETERS OK 
24 B7 = P0                   *LOW CYLINDER
   B6 = P2.RS.6              *LOW TRACK 
   B5 = P3.RS.6              *LOW SECTOR
26 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM 
   B4 = 1 
   B8 = 23B 
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
   B7 = P1                   *HIGH CYLINDER 
   B6 = P2.AND.77            *HIGH TRACK
   B5 = P3.AND.77            *HIGH SECTOR 
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM 
   B4 = 1 
   B8 = 23B 
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
* 
/---------MODULE REPEAT/EXIT. 
* 
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT 
   GOTO 24
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   GOTO 77                       *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
76 B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 40
77 END 20 
COMPILE                      *F4435 TOGGLE PARAMETER TEST 
   MODULE F4498A,FMDFT(10,11),LOCK
***       F4498A - PARAMETER VERIFICATION 
**        F4498A - PARAMETER VERIFICATION 
*         F4498A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         E8898A  CHECKS THE PARAMETER WORDS FOR THE CALLING MODULE  TO 
*         DETERMINE IF THERE ARE ANY ERRORS IN THE PARAMETER WORDS. THE 
*         MODULE WILL THEN EXIT TO MODULE F4498B TO ALLOW ANY ERRORS TO 
*         BE REPORTED.
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P0 IS 
*             NOT GREATER THAN 632 OR 1456 OCTAL. 
*         2.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P1 IS 
*             NOT GREATER THAN 632 OR 1456 OCTAL. 
*         3.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P0 IS 
*             EQUAL TO OR LESS THAN THE CYLINDER  NUMBER  IN  PARAMETER 
*             WORD P1.
*         4.  VERIFY THAT THE FIRST CYLINDER SELECTED IN  PARAMETER  P0 
*             IS NOT EQUAL TO 632 OR 1456 OCTAL.
*         5.  VERIFY THAT THE LAST CYLINDER SELECTED IN PARAMETER P1 IS 
*             NOT EQUAL TO 632 OR 1456 OCTAL. 
*         6.  VERIFY THAT THE LOWER TRACK NUMBER IN PARAMETER  WORD  P2 
*             IS NOT GREATER THAN 22 OCTAL. 
*         7.  VERIFY THAT THE UPPER TRACK NUMBER IN PARAMETER  WORD  P2 
*             IS NOT GREATER THAN 22 OCTAL. 
*         8.  VERIFY THAT THE LOWER TRACK NUMBER IN PARAMETER  WORD  P2 
*             IS  EQUAL  TO  OR  LESS  THAN  THE  UPPER TRACK NUMBER IN 
*             PARAMETER WORD P2.
*         9.  VERIFY  THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD P3 
*             IS NOT GREATER THAN 24 OCTAL. 
*         10. VERIFY  THAT THE UPPER SECTOR NUMBER IN PARAMETER WORD P3 
*             IS NOT GREATER THAN 24 OCTAL. 
*         11. VERIFY  THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD P3 
*             IS EQUAL TO OR LESS  THAN  THE  UPPER  SECTOR  NUMBER  IN 
*             PARAMETER WORD P3.
*         12. VERIFY THAT BOTH WRITE AND READ ARE NOT DISABLED  IN  THE 
*             P5 PARAMETER WORD.
*         13. IF WRITE IS NOT DISABLED, VERIFY THAT THE ACCESS LEVEL IS 
*             HIGH ENOUGH TO WRITE THE CYLINDERS SELECTED.
*         14. IF WRITE IS DISABLED AND READ IS ENABLED, VERIFY THAT THE 
*             ACCESS  LEVEL IS HIGH ENOUGH TO READ ALL OF THE CYLINDERS 
*             SELECTED. 
*         16. EXIT TO MODULE F4498B.
* 
/ 
*         ENTRY-
*         PARAMETER WORDS P0 THROUGH P9 CONTAIN THE PARAMETERS SELECTED 
*         BY THE OPERATOR AS DESCRIBED IN MODULE F4499A.
*         AL REGISTER CONTAINS THE ACCESS LEVEL AS DEFINED IN THE 
*           ASSIGN STATEMENT. 
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL. 
* 
*         EXIT- 
*         EXIT IS ALWAYS TO MODULE F4498B WITH THE REGISTERS SET AS 
*           FOLLOWS-
*         B12 CONTAINS THE NEXT LINE NUMBER TO PLACE THE NEXT MESSAGE.
* 
*         SUBMODULES REFERENCED-
*         F4498B - VALIDATE PARAMETERS. 
* 
*         REGISTERS USED- 
*         B10 = TEMPORARY STORAGE.
*         B12 = DISPLAY BUFFER LINE NUMBER. 
*         B13 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
1  FORMAT F4498A - CHECK PARAMETERS 
2  FORMAT CHECK P0 - LOWER CYLINDER NUMBER TOO LARGE
3  FORMAT CHECK P1 - UPPER CYLINDER NUMBER TOO LARGE
4  FORMAT CHECK P0, P1 - P0 GREATER THAN P1 
5  FORMAT CHECK P0, P1 - CYLINDER 632 OR 1456 CANNOT BE TESTED
6  FORMAT CHECK P2 - LOWER TRACK NUMBER TOO LARGE 
7  FORMAT CHECK P2 - UPPER TRACK NUMBER TOO LARGE 
10 FORMAT CHECK P2 - LOWER TRACK GREATER THAN UPPER TRACK 
11 FORMAT CHECK P3 - LOWER SECTOR NUMBER TOO LARGE
12 FORMAT CHECK P3 - UPPER SECTOR NUMBER TOO LARGE
13 FORMAT CHECK P3 - LOWER SECTOR GREATER THAN UPPER SECTOR 
14 FORMAT CHECK P5 - WRITE AND READ BOTH DISABLED 
16 FORMAT F44*D NEEDS ACCESS LEVEL *O, ACTUAL =*O 
* 
/---------EQUATES FOR PARAMETER VALUES. 
* 
   EQUATE MAXSEC=24, MAXTRK=22
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 1 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B9 = 632 
   IF(DC.EQ.11) B9 =1456B 
   B12=12                    *FIRST LINE OF ERROR DISPLAY 
* 
/---------CHECK LOWER CYLINDER PARAMETER WORD.
* 
   B13=2                     *MESSAGE FORMAT NUMBER 
   IF(P0.GT.B9)GOSUB 76  *UPPER CYLINDER TOO LARGE
* 
/---------CHECK UPPER CYLINDER PARAMETER WORD.
* 
   B13=3                     *MESSAGE FORMAT NUMBER 
   IF(P1.GT.B9)GOSUB 76  *UPPER CYLINDER TOO LARGE
* 
/---------CHECK IF LOWER CYLINDER NUMBER LARGER THAN THE
/         UPPER CYLINDER NUMBER.
* 
   B13=4                     *MESSAGE FORMAT NUMBER 
   IF(P0.GT.P1) GOSUB 76     *IF CONFLICT IN CYL. NUMBERS 
* 
/---------CHECK FOR CYLINDER B9 THE FIRST OR LAST CYLINDER
/---------SECLECTED TO BE TESTED. 
* 
   B13=5                     *MESSAGE FORMAT NUMBER 
   IF(P0.EQ.B9) GOSUB 76   *IF STARTING CYLINDER IS B9
   GOTO 40
   IF(P1.EQ.B9) GOSUB 76   *IF LAST CYLINDER IS B9
* 
/---------CHECK LOWER TRACK NUMBER IN PARAMETER WORD 2. 
* 
40 B13=6                     *MESSAGE FORMAT NUMBER 
   B2=P2 RS 6                *GET LOWER TRACK NUMBER
   IF(B2.GT.MAXTRK)GOSUB 76  *IF LOWER TRACK TOO LARGE
* 
/---------CHECK UPPER TRACK NUMBER IN PARAMETER WORD 2. 
* 
   B13=7                     *MESSAGE FORMAT NUMBER 
   B10=P2 AND 77             *GET UPPER TRACK NUMBER
   IF(B10.GT.MAXTRK)GOSUB 76  *IF UPPER TRACK TOO LARGE 
* 
/---------CHECK IF LOWER TRACK LARGER THAN UPPER TRACK. 
* 
   B13=10                    *MESSAGE FORMAT NUMBER 
   IF(B2.GT.B10) GOSUB 76    *IF CONFILICT IN TRACK NUMBERS 
* 
/---------CHECK LOWER SECTOR NUMBER IN PARAMETER WORD 3.
* 
   B13=11                    *MESSAGE FORMAT NUMBER 
   B2=P3 RS 6                *GET LOWER SECTOR NUMBER 
   IF(B2.GT.MAXSEC)GOSUB 76  *IF LOWER SECTOR TO0 LARGE 
* 
/---------CHECK UPPER SECTOR NUMBER IN PARAMETER WORD 3.
* 
   B13=12                    *MESSAGE FORMAT NUMBER 
   B10=P3 AND 77             *GET UPPER SECTOR NUMBER 
   IF(B10.GT.MAXSEC)GOSUB 76  *IF UPPER SECTOR TOO LARGE
* 
/---------CHECK IF LOWER SECTOR LARGER THAN UPPER SECTOR. 
* 
   B13=13                    *MESSAGE FORMAT NUMBER 
   IF(B2.GT.B10) GOSUB 76    *IF CONFLICT IN SECTOR NO. 
* 
/---------CHECK P5 FOR BOTH WRITE AND READ DISABLED.
* 
   IF(P5.AND.4.EQ.0)GOTO 50  *IF WRITE NOT DISABLED 
   IF(P5.AND.2.EQ.0)GOTO 52  *IF READ NOT DISABLED
   B13=14                    *MESSAGE FORMAT NUMBER 
   GOSUB 76                  *MOVE MESSAGE TO THE DISPLAY 
   GOTO 60                   *GO TO CHECK MARGIN PARAMETER
* 
/---------DETERMINE THE ACCESS LEVEL FOR WRITING THE .
* 
50 B2=4                      *ACCESS LEVEL TO WRITE ANYWHERE
   IF(P0.GE.B9) B2=3     *ACCESS LEVEL FOR CYL. 632 OR 1456 
* 
/---------DETERMINE THE ACCESS LEVEL FOR READING THE .
* 
52 B2=4                      *ACCESS LEVEL TO READ ANYWHERE 
   IF(P0.GE.B9) B2=1     *IF CYLINDER 632 OR 1456 ONLY
* 
/---------CHECK FOR THE ACCESS LEVEL TOO LOW. 
* 
60 B10=5                     *PARAMETER ENTRY ERROR MESSAGE 
   IF(AL.GE.B2) GOTO 62      *IF ACCESS LEVEL HIGH ENOUGH 
   MSG 16 (B1,B2,AL) TO LINE B12  *MOVE ERROR MESSAGE 
   IF(B12.EQ.12) B10=6       *ACCESS LEVEL ERROR MESSAGE
   B12=B12+1                 *INCREMENT LINE NUMBER 
62 EXIT TO 98B               *EXIT THE MODULE 
* 
/---------SUBROUTINE TO INSERT A MESSAGE IN THE DISPLAY.
* 
76 MSG B13 TO LINE B12       *MOVE ERROR MESSAGE TO DISPLAY 
   B12=B12+1                 *INCREMENT LINE NUMBER 
   RETURN                    *EXIT THE SUBROUTINE 
   END 30                    *END OF THE MODULE 
COMPILE                      *F4498A VALIDATE PARAMETERS
   MODULE F4498B,FMDFT(10,11),LOCK
***       F4498B - PARAMETER VERIFICATION 
**        F4498B - PARAMETER VERIFICATION 
*         F4498B - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         F4498B  CHECKS  TO  DETERMINE  IF  ANY  PARAMETER ERRORS WERE 
*         DETECTED BY MODULE F4498A AND IF THERE WERE ERRORS  DETECTED, 
*         REPORTS  THE  ERROR. IF NO ERRORS ARE DETECTED, THE REGISTERS 
*         AND THE OUTPUT BUFFER WILL BE INITIALIZED AND RETURN MADE  TO 
*         THE CALLING MODULE. 
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  IF THE B12 REGISTER  DOES  NOT  CONTAIN  THE  FIRST  LINE 
*             NUMBER OF THE ERROR DISPLAY, GO TO STEP 6.
*         2.  SET THE BA REGISTER TO 4  AND  THE  WC  REGISTER  TO  476 
*             OCTAL.
*         3.  DETERMINE THE NUMBER OF SECTORS TO BE WRITTEN AND OR READ 
*             FROM  PARAMETER  WORD  P3  AND PLACE THE NUMBER IN THE B2 
*             REGISTER. 
*         4.  IF BIT  3 IS SET IN PARAMETER WORD P5, DUPLICATE THE WORD 
*             IN PARAMETER WORD P6 IN THE ENTIRE OUTPUT BUFFER. 
*         5.  EXIT THE MODULE AND RETURN TO THE PRIMARY CALLING MODULE. 
*         6.  DISPLAY ANY PARAMETER ERRORS DETECTED.
*         7.  IF  BIT  3 IS SET IN PARAMETER WORD P5, DUPICATE THE WORD 
*             IN PARAMETER WORD P6 IN THE ENTIRE OUTPUT BUFFER. 
*         8.  EXIT THE MODULE AND RETURN TO THE PRIMARY CALLING MODULE. 
*         9.  POST A MESSAGE IN THE DAYFILE, PRINT  FILE,  AND  ON  THE 
*             DISPLAY  SCREEN  INDICATING THAT EXECUTION OF THE PRIMARY 
*             CALLING MODULE WILL BE ABORTED AND  THE  REASON  FOR  THE 
*             ABORT.
*         10. TERMINATE EXECUTION OF THE PRIMARY CALLING MODULE.
* 
/ 
*         ENTRY-
*         B1 CONTAINS THE OCTAL NUMBER OF THE PRIMARY CALLING MODULE. 
*         B12 REGISTER CONTAINS THE NEXT DISPLAY LINE NUMBER. 
*         B10 REGISTER CONTAINS THE NUMBER OF THE FORMAT STATEMENT
*           FOR THE ERROR MESSAGE TO BE DISPLAYED IF A PARAMETER OR 
*           ACCESS LEVEL ERROR WAS DETECTED.
* 
*         EXIT- 
*         TERMINATE EXECUTION OF THE CALLING MODULE IF A PARAMETER
*           ERROR IS DETECTED OR THE ACCESS LEVEL IS TOO LOW. 
*         RETURN TO THE CALLING MODULE IF NO PARAMETER ERROR IS 
*           DETECTED AND THE ACCESS LEVEL IS OK WITH THE REGISTERS
*           SET AS FOLLOWS- 
*         B2 CONTAINS THE NUMBER OF SECTORS TO PROCESS. 
*         WC REGISTER CONTAINS 476 OCTAL. 
*         BA REGISTER CONTAINS 4 OCTAL. 
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         B2  = TEMPORARY STORAGE.
*         B10 = TEMPORARY STORAGE.
*         B12 = DISPLAY BUFFER LINE NUMBER. 
* 
*         BUFFERS USED- 
*         OB(4-501) - DATA PATTERN WORD IN P6 IF BIT 3 IS SET IN
*                     PARAMETER WORD P5.
* 
1  FORMAT F4498B - CHECK PARAMETERS 
2  FORMAT F44*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
3  FORMAT F44*D MODULE ABORTED - ACCESS LEVEL TOO LOW 
4  FORMAT F44 -  CONFIDENCE TEST
5  FORMAT F44*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
6  FORMAT F44*D NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
7  FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
10 FORMAT P5,P6,P8,P9 *OCT *OCT *OCT *OCT 
11 FORMAT PARAMETERS DESCRIBED IN MODULE F4499
12 FORMAT --------------------------------------------------
* 
/---------DETERMINE IF ANY PARAMETER ERRORS WERE DETECTED.
* 
30 IF(B12.NE.12) GOTO 40     *NO PARAMETER ERRORS DETECTED
* 
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO. 
* 
   B2=P3.RS.6                *FIRST SECTOR NUMBER 
   B2=P3.AND.77-B2
   B2=B2+1                   *NUMBER OF SECTORS TO DO 
   BA=4                      *INITIALIZE BASE ADDRESS REG.
   WC=476                    *INITIALIZE WORD COUNT REGISTER
   IF(P5.AND.10.EQ.0)EXIT    *IF NO SET DATA PATTERN
* 
/---------THE OUTPUT BUFFER WITH THE DATA PATTERN IN P6.
* 
   DUP P6 TO OB(4) FOR WC    *GENERATE SET DATA PATTERN 
   EXIT                      *EXIT THE MODULE 
* 
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.
* 
40 IF(ES.AND.TM.NE.0)GOTO 42  *IF TERMINAL MODE SELECTED
   MSG 4 TO LINE 0           *TEST TITLE MESSAGE
   MSG 1 TO LINE 1           *MODULE NAME TO ERROR DISPLAY
42 MSG B10 (B1) TO LINE 5    *ERROR MESSAGE TO DISPLAY
   MSG 7 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS
   MSG 10 (P5,P6,P8,P9) TO LINE 10  *DISPLAY PARAMETERS 
   MSG 11 TO LINE B12        *MODULE INFORMATION LINE 
   PICTURE
   HALT                      *REPORT ERROR AND WAIT FOR GO
   MSG 12 TO PRINT
   BLANK
* 
/---------DETERMINE THE MESSAGE TO POST FOR THE ERRORS
/---------DETECTED AND POST THE MESSAGE IN THE DAYFILE, 
/---------PRINT FILE, AND ON THE DISPLAY SCREEN.
* 
   B2=2                      *PARAMETERS ERROR MESSAGE
   IF(B10.EQ.6) B2=3         *ACCESS LEVEL ERROR MESSAGE
   MSG B2 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG. 
   END 30                    *END OF THE MODULE 
COMPILE                      *F4498B VALIDATE PARAMETERS
   MODULE F4498C,FMDFT(10,11),LOCK
***       F4498C - COMMAND ABORT PROCESSOR
**        F4498C - COMMAND ABORT PROCESSOR
*         F4498C - COMMAND ABORT PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         DISPLAY  THE  COMMAND THAT  THE  ABORT TO OCCURRED ON AND THE 
*         ERROR MESSAGE GENERATED BY THE PRODUCT OVERLAY AT THE TIME OF 
*         THE ABORT.
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  IF THE B8 REGISTER CONTAINS ZERO, GO TO STEP 3. 
*         2.  POST  THE  FORMAT  MESSAGE  NUMBER  CONTAINED  IN  THE B8 
*             REGISTER. 
*         3.  IF  THE  ERROR  CODE IN THE EC REGISTER IS LESS THAN 4000 
*             OCTAL, EXIT THE MODULE. 
*         4.  POST THE ERROR MESSAGE CONTAINED IN THE EM REGISTER.
* 
/ 
*         ENTRY-
*         EC AND EM REGISTERS CONTAIN THE ERROR CODE AND ERROR
*            MESSAGE IF GENERATED BY THE PRODUCT OVERLAY ON AN ABORT. 
*         B8 REGISTER CONTAINS THE NUMBER FOR THE MALET I/O COMMAND 
*            BEING EXECUTED AT THE TIME OF THE ABORT. 
* 
*         EXIT- 
*         LINE 4 OF THE DISPLAY CONTAINS THE MESSAGE INDICATING THE I/O 
*           COMMAND BEING EXECUTED BY THE DRIVER AND LINE 5 CONTAINS
*IF -DEF,CMSE17X
*           THE ERROR MESSAGE IF THE ERROR CODE WAS GENERATED BY MALET. 
*ENDIF
*IF DEF,CMSE17X 
*           THE ERROR MESSAGE IF THE ERROR CODE WAS GENERATED BY DEMOT. 
*ENDIF
*         EXIT WILL ALWAYS BE TO MODULE F4498D. 
* 
*         SUBMODULES REFERENECED- 
*         F4498D - PROCESS THE LAST FUNCTION CODE SENT TO THE FSC 
*                  ADAPTER. 
* 
*         REGISTERS USED- 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B12 = TEMPORARY STORAGE.
*         B13 = TEMPORARY STORAGE.
*         B14 = TEMPORARY STORAGE.
*         EC  = DRIVER ERROR CODE 
*         EM  = ERROR MESSAGE ADDRESS 
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR MALET I/O COMMANDS USED BY F44.
* 
1  FORMAT F44 ABORT ON .DIAGRD. COMMAND 
2  FORMAT F44 ABORT ON .READCB. COMMAND 
4  FORMAT F44 ABORT ON .STATUS GENERAL. COMMAND 
5  FORMAT F44 ABORT ON .STATUS DETAIL. COMMAND
10 FORMAT F44 ABORT ON .*A*A*A. COMMAND 
12 FORMAT F44 ABORT ON .VERIFY CODED. COMMAND 
20 FORMAT F44 ABORT ON .GET SERIAL. COMMAND 
22 FORMAT F44 ABORT ON .GET UTILITY. COMMAND
23 FORMAT F44 ABORT ON .READ. COMMAND 
24 FORMAT F44 ABORT ON .READ CODED. COMMAND 
26 FORMAT F44 ABORT ON .SHORTRD. COMMAND
30 FORMAT F44 ABORT ON .WRITE. COMMAND
31 FORMAT F44 ABORT ON .WRITE CODED. COMMAND
40 FORMAT F44 ABORT ON .RES ADAPTER. COMMAND
41 FORMAT F44 ABORT ON .RES DRIVE. COMMAND
42 FORMAT F44 ABORT ON .RESET. COMMAND
44 FORMAT F44 ABORT ON .SEEK. COMMAND 
45 FORMAT F44 ABORT ON .PT. COMMAND 
46 FORMAT F44 ABORT ON .REL. COMMAND
47 FORMAT F44 ABORT ON .COMPARE. COMMAND
* 
/---------PROCESS LAST I/O MALET COMMAND EXECUTED.
* 
70 IF(B8.EQ.0) GOTO 76       *IF NOT COMMAND NUMBER 
   IF(B8.NE.10) GOTO 71      *IF NOT DIAGWR COMMAND 
   B12=411                   *DIAGWR IN DISPLAY CODE
   B13=107
   B14=2722 
   GOTO 72
71 IF(B8.NE.11) GOTO 73      *IF NOT VERIFY COMMAND 
   B12=2605                  *VERIFY IN DISPLAY CODE
   B13=2211 
   B14=631
72 MSG 10 (B12,B13,B14) TO LINE 4  *ABORT MESSAGE 
   GOTO 74
73 MSG B8 TO LINE 4          *ABORT MESSAGE 
74 IF(EC.LT.4000) GOTO 76    *IF NOT AN ABORT ERROR CODE
   MSG EM TO LINE 5          *PRODUCT OVERLAY ERROR MESSAGE 
76 EXIT TO 98D               *EXIT TO NEXT SUBMODULE
   END 70                    *END OF THE MODULE 
COMPILE                      *F4498C COMMAND ABORT PROCESSOR
   MODULE F4498D,FMDFT(10,11),LOCK
***       F4498D - LAST FUNCTION PROCESSOR
**        F4498D - LAST FUNCTION PROCESSOR
*         F4498D - LAST FUNCTION PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         DISPLAY  THE  LAST  MAJOR  FUNCTION  CODE  ISSUED TO THE FSC
*         ADAPTER PRIOR TO THE CURRENT FAILURE. 
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  SET  THE  B13  REGISTER TO ZERO IF THE RETRY COUNT IN THE 
*             STATUS BUFFER IS ZERO, OTHERWISE SET THE B13 REGISTER  TO 
*             25 OCTAL. 
*         2.  IF THE GENERAL STATUS IN THE STATUS BUFFER  IS  EQUAL  TO 
*             7777 OCTAL, GO TO STEP 5. 
*         3.  IF BIT 11 IS NOT SET IN THE GENERAL STATUS AS DEFINED  BY 
*             THE B13 REGISTER, GO TO STEP 5. 
*         4.  IF DETAILED STATUS WORD THREE IS NOT EQUAL TO 7777 OCTAL, 
*             GO TO STEP 6. 
*         5.  SET THE B13 REGISTER EQUAL TO THE LF REGISTER AND  GO  TO 
*             STEP 7. 
*         6.  SET THE B13 REGISTER  EQUAL  TO  BITS  4-11  OF  DETAILED 
*             STATUS  WORD  3  IN  THE STATUS BUFFER DEFINED BY THE B13 
*             REGISTER. 
*         7.  IF  THE  FUNCTION CODE IN THE B13 REGISTER IS 0, OR 1, OR 
*             2, OR 3, OR 4, OR 5, OR 6, OR 7, OR 10, OR 12, OR 14,  OR 
*             20,  OR  21, OR 23, OR 30, OR 31, OR 32, OR 33, OR 34, OR 
*             35, OR 36, OR 37, POST THE MESSAGE  INDICATING  THE  LAST 
*             FUNCTION SENT TO THE FSC ADAPTER. 
*         8.  IF THE FUNCTION CODE IN THE B13 REGISTER IS  NOT  ONE  OF 
*             THOSE LISTED IN STEP 7, EXIT TO MODULE F4498E.
* 
/ 
*         ENTRY-
*         LF REGISTER CONTAINS THE LAST FUNCTION SENT TO THE FSC
*            ADAPTER. 
*         STATUS BUFFER CONTAINS STATUS INFORMATION.
* 
*         EXIT- 
*         IF THE FUNCTION CODE SENT TO THE FSC ADAPTER WAS A CODE 
*            FROM 0 THROUGH 30, DISPLAY LINE 6 CONTAINS A MESSAGE 
*            INDICATING THE LAST FUNCTION SENT TO THE FSC ADAPTER 
*            AND EXIT IS ALWAYS TO MODULE F4498F. 
*         IF THE FUNCTION CODE WAS GREATER THAN 37, EXIT TO MODULE
*            F4498E.
* 
*         SUBMODULES REFERENCED-
*         F4498E - LAST FUNCTION PROCESSOR. 
*         F4498F - DISPLAY STATUS INFORMATION.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
*         LF  = LAST FUNCTION ISSUED. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR THE FUNCTIONS SENT TO THE ADAPTER. 
* 
0  FORMAT LAST FUNCTION = 000B (CONNECT)
1  FORMAT LAST FUNCTION = 001B (SEEK 1 TO 1 INTERLACE)
2  FORMAT LAST FUNCTION = 002B (SEEK 2 TO 1 INTERLACE)
4  FORMAT LAST FUNCTION = 004B (READ) 
5  FORMAT LAST FUNCTION = 005B (WRITE)
10 FORMAT LAST FUNCTION = 010B (OPERATION COMPLETE) 
12 FORMAT LAST FUNCTION = 012B (GENERAL STATUS) 
14 FORMAT LAST FUNCTION = 014B (CONTINUE) 
20 FORMAT LAST FUNCTION = 020B (DRIVE RELEASE)
23 FORMAT LAST FUNCTION = 023B (20-WORD DETAILED STATUS)
31 FORMAT LAST FUNCTION = 031B (READ UTILITY MAP) 
32 FORMAT LAST FUNCTION = 032B (BLOCK TRANSFER BUFFER READ) 
33 FORMAT LAST FUNCTION = 033B (BLOCK TRANSFER BUFFER WRITE)
34 FORMAT LAST FUNCTION = 034B (READ PROTECTED SECTOR)
35 FORMAT LAST FUNCTION = 035B (WRITE LAST SECTOR)
37 FORMAT LAST FUNCTION = 037B (WRITE PROTECTED SECTOR) 
* 
/---------DETERMINE THE FUNCTION ISSUED CAUSING THE ERROR.
* 
70 B13=0                           *BUFFER INDEX IF NO RETRY
   IF(SB(52).NE.0) B13=25          *BUFFER INDEX ON RETRY 
   IF(SB.EQ.7777) GOTO 71          *IF NO GENERAL STATUS
   IF(SB(B13).AND.4000.EQ.0)GOTO 71  *IF NO DETAILED STATUS 
   IF(SB(B13+3).NE.7777)GOTO 72      *IF VALID DETAIL STATUS
71 B13 = LF                        *USE LF REGISTER AS INDEX
   GOTO 73
72 B13 = SB(B13+3).RS.4      *LAST FUNCTION FROM CONTROLWARE
* 
/---------CHECK FOR A KNOWN FUNCTION CODE.
* 
73 IF(B13.LT.6) GOTO 74      *IF KNOWN FUNCTION 
   IF(B13.EQ.10) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.12) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.14) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.20) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.23) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.31) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.32) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.33) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.34) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.35) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.37) GOTO 74     *IF KNOWN FUNCTION 
   EXIT TO 98E               *EXIT TO NEXT MODULE 
* 
/---------POST THE MESSAGE FOR THE LAST FUNCTION. 
* 
74 MSG B13 TO LINE 6         *POST LAST FUNCTION MESSAGE
   EXIT TO 98F               *EXIT TO THE NEXT MODULE 
   END 70                    *END OF THE MODULE 
COMPILE                      *F4498D LAST FUNCTION PROCESSOR
   MODULE F4498E,FMDFT(10,11),LOCK
***       F4498E - LAST FUNCTION PROCESSOR
**        F4498E - LAST FUNCTION PROCESSOR
*         F4498E - LAST FUNCTION PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         DISPLAY  THE  LAST  MAJOR  FUNCTION  CODE  ISSUED TO THE FSC
*         ADAPTER PRIOR TO THE CURRENT FAILURE. 
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  IF THE FUNCTION CODE IN THE B13 REGISTER IS 40, OR 41, OR 
*             43, OR 46, OR 47, OR 56, OR 64, OR 414, POST THE  MESSAGE 
*             INDICATING  THE  FUNCTION  SENT  TO  THE FSC ADAPTER. 
*         2.  IF  THE  FUNCTION  CODE IN THE B13 REGISTER IS NOT ONE OF 
*             THOSE LISTED IN STEP 1, POST  A  MESSAGE INDICATING 
*             THE FUNCTION CODE SENT TO THE FSC ADAPTER.
* 
/ 
*         ENTRY-
*         B13 REGISTER CONTAINS THE LAST FUNCTION SENT TO THE FSC 
*           ADAPTER.
* 
*         EXIT- 
*         DISPLAY LINE 6 CONTAINS A MESSAGE INDICATING THE LAST 
*           FUNCTION SENT TO THE FSC ADAPTER. 
*         EXIT IS ALWAYS TO MODULE F4498F.
* 
*         SUBMODULES REFERENCED-
*         F4498F - DISPLAY STATUS INFORMATION.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR THE FUNCTIONS SENT TO THE ADAPTER. 
* 
40 FORMAT LAST FUNCTION = 040B (READ SHORT) 
43 FORMAT LAST FUNCTION = 043B (BUFFER READ)
44 FORMAT LAST FUNCTION = 044B (BUFFER WRITE) 
47 FORMAT LAST FUNCTION = 047B (SCAN CYLINDER ADDRESSES)
66 FORMAT LAST FUNCTION = 414B (AUTOLOAD FROM PP) 
67 FORMAT LAST FUNCTION = *OCTB 
* 
/---------CHECK FOR A KNOWN FUNCTION CODE.
* 
70 IF(B13.EQ.40) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.43) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.44) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.47) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.NE.414)GOTO 75     *IF UNKNOWN FUNCTION 
   B13 = 66                  *AUTOLOAD FUNCTION 
* 
/---------POST THE MESSAGE FOR THE LAST FUNCTION. 
* 
74 MSG B13 TO LINE 6         *POST LAST FUNCTION MESSAGE
   EXIT TO 98F               *EXIT TO THE NEXT MODULE 
75 MSG 67 (B13) TO LINE 6    *POST UNKNOWN FUNCTION MESSAGE 
   EXIT TO 98F               *EXIT TO THE NEXT MODULE 
   END 70                    *END OF THE MODULE 
COMPILE                      *F4498E LAST FUNCTION PROCESSOR
   MODULE F4498F,FMDFT(10,11),LOCK
***       F4498F - STATUS DISPLAY 
**        F4498F - STATUS DISPLAY 
*         F4498F - STATUS DISPLAY 
*         ----------------------- 
* 
*         PURPOSE-
*         DISPLAY  THE  VARIOUS  STATUSES  AND OTHER USEFUL INFORMATION 
*         RELATED TO THE CURRENT FAILURE. 
* 
* 
*         THE FOLLOWING STEPS ARE PERFORMED WHEN THIS MODULE
*         IS EXECUTED.
* 
* 
*         1.  POST  FORMAT  MESSAGE  1 TO LINE 7 (WT, RETRIES, MARGINS, 
*             AND ERRORS).
*         2.  GO  TO STEP 4 IF P4 BIT 5 (ENABLE BUFFER/REGISTER OUTPUT) 
*             IS NOT SET. 
*         3.  POST FORMAT MESSAGES 2, 3, 4 AND 5 TO THE DISPLAY (IB,OB, 
*             ALL B REGISTERS). 
*         4.  IF THE B8 REGISTER CONTAINS 40 (RES,ADAPTER  COMMAND),
*             GO TO STEP 10.
*         5.  IF THE B8 REGISTER CONTAINS 41 (RES,DRIVE COMMAND), GO TO 
*             STEP 10.
*         6.  GO  TO  STEP 10 IF THE CYLINDER IDENTIFIED BY REGISTER B7 
*             IS 7777 (INVALID CYLINDER ADDRESS). 
*         7.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED), 
*             POST FORMAT MESSAGE 6.
*         8.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS IS ZERO (SUCCESSFUL RECOVERY), POST FORMAT MESSAGE 
*             7.
*         9.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS  IS  NON-ZERO (UNSUCCESSFUL RECOVERY), POST FORMAT 
*             MESSAGE 10. 
*         10. IF  THE  ERROR  CODE  IN  THE EC REGISTER IS NOT EQUAL TO 
*             5331, GO TO STEP 12.
*         11. POST  MESSAGES  11 AND 12 INDICATING A COMPARE ERROR ON A 
*             READ CODED DRIVER COMMAND.
*         12. IF  THE  ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 1, 
*             GO TO STEP 15.
*         13. IF  THE NUMBER IN THE B8 REGISTER IS 24 INDICATING A READ 
*             CODED MALET COMMAND SET  THE  DATA  BUFFER  INDEX  TO  4, 
*             OTHERWISE SET THE INDEX TO 0. 
*         14. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST UP  TO 
*             FOUR MESSAGES (13). 
*         15. IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL  TO  2, 
*             GO TO STEP 17.
*         16. POST MESSAGES 22 INDICATING A STATUS ERROR ON  A  COMPARE 
*             OF TWO STATUS WORDS.
*         17. IF STATUS BUFFER WORD 0 IS EQUAL TO  7777  OR  THE  RETRY 
*             COUNT  AND  STATUS BUFFER WORD 0 ARE EQUAL TO ZERO, GO TO 
*             STEP 21.
*         18. POST MESSAGE 14.
*         19. IF THE RETRY COUNT IS NOT EQUAL TO  ZERO,  POST  MESSAGES 
*             15, 16, 20, AND 21 TO DISPLAY THE STATUSES FROM LOCATIONS 
*             25 OCTAL THROUGH 51 OCTAL IN THE STATUS BUFFER. 
*         20. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS 
*             BUFFER IS NOT EQUAL TO ZERO, POST MESSAGES  15,  17,  20, 
*             AND  21  TO DISPLAY THE STATUSES FROM LOCATIONS 0 THROUGH 
*             24 OCTAL IN THE STATUS BUFFER.
*         21. EXIT THE MODULE TO F4498G.
* 
/ 
*         ENTRY-
*         B5  = CURRENT SECTOR NUMBER.
*         B6  = CURRENT TRACK NUMBER. 
*         B7  = CURRENT CYLINDER NUMBER.
*         B8  = NUMBER FOR THE LAST PRODUCT OVERLAY COMMAND EXECUTED. 
*         EC  = ERROR CODE NUMBER.
*         WT  = NUMBER OF WORDS TRANSMITTED.
*         BA  = THE BASE ADDRESS ON A DATA COMPARE ERROR. 
*         OUTPUT DATA BUFFER CONTAINS THE EXPECTED DATA FOR COMPARE 
*           DATA ERRORS.
*         INPUT DATA BUFFER CONTAINS THE ACTUAL DATA FOR COMPARE DATA 
*           ERRORS. 
*         STATUS BUFFER CONTAINS THE GENERAL STATUS, DETAILED STATUS, 
*           AND RETRY COUNT.
* 
*         EXIT- 
*         B12 = NEXT LINE NUMBER IN THE DISPLAY BUFFER. 
*         MESSAGES POSTED FOR THE STATUSES TO BE DISPLAYED. 
*         EXIT IS ALWAYS TO MODULE F4498G.
* 
*         SUBMODULES REFERENCED-
*         F4498G - CRACK GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B11 = ERROR COUNTER.
*         B12 = DISPLAY LINE NUMBER 
*         B13 = TEMPORARY STORAGE.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         INPUT BUFFER LOCATIONS 502, 503, AND 504 ARE USED FOR 
*         TEMPORARY STORAGE.
* 
/---------MESSAGES FOR THE STATUSES TO BE DISPLAYED.
* 
1  FORMAT WT=*OCT  RETRIES=*O    ERRORS=*DEC
2  FORMAT IB(0-7) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
3  FORMAT OB(0-7) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
4  FORMAT B0-B7   = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
5  FORMAT B8-B15  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
6  FORMAT CYL=*OCT TRK=*O SEC=*O
7  FORMAT CYL=*OCT TRK=*O SEC=*O  - SUCCESSFUL RECOVERY 
10 FORMAT CYL=*OCT TRK=*O SEC=*O  - UNSUCCESSFUL RECOVERY 
11 FORMAT COMPARE ERROR - EXPECTED  CYL=*OCT  TRK=*O  SEC=*O
12 FORMAT                 ACTUAL    CYL=*OCT  TRK=*O  SEC=*O
13 FORMAT DATA ERROR - W*OCT  E*OCT  A*OCT  D*OCT 
14 FORMAT GENERAL STATUS =*OCTB 
24 FORMAT GENERAL STAUS NOT RECEIVED=*OCTB
15 FORMAT SENSE BYTE STATUS IN HEX
16 FORMAT 0-5  =*H  *H  *H  *H  *H  *H
17 FORMAT 6-11 =*H  *H  *H  *H  *H  *H
20 FORMAT 12-17=*H  *H  *H  *H  *H  *H
21 FORMAT 18-23=*H  *H  *H  *H  *H  *H
23 FORMAT DS WORD(17-20)D=*OCTB *OCTB *OCTB *OCTB 
22 FORMAT STATUS ERROR - W*OCT  E*OCT  A*OCT  D*OCT 
* 
/---------BUILD THE STATUS DISPLAY FOR THE ERROR. 
* 
30 B13=B11+1                           *UPDATE ERROR COUNT
   MSG 1 (WT,B9,B13) TO LINE 7  *DISPLAY LINE 7 
   IF(P4.AND.40.EQ.0) GOTO 32         *IF NOT BUFFER DUMP 
   MSG 2 10 WORDS FROM IB TO LINE 44  *DISPLAY INPUT BUFFER 
   MSG 3 10 WORDS FROM OB TO LINE 45  *DISPLAY OUTPUT BUFFER
   MSG 4 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE 46      *B0-B7 
   MSG 5 (B8,B9,B10,B11,B12,B13,B14,B15) TO LINE 47  *B8-B15
32 B12=10                    *LINE NUMBER ON THE DISPLAY
* 
/---------DISPLAY THE CURRENT CYLINDER, TRACK, AND SECTOR.
* 
   IF(B8.EQ.40) GOTO 36      *IF RES ADAPTER COMMAND
   IF(B8.EQ.41) GOTO 36      *IF RES DRIVE COMMAND
   IF(B7.EQ.7777) GOTO 36    *IF INVALID CYLINDER NUMBER
   B13=6                     *NO RECOVERY MESSAGE 
   IF(SB(52).EQ.0) GOTO 34   *IF NO RECOVERY ATTEMPTED
   B13=7                     *SUCCESSFUL RECOVERY MESSAGE 
   IF(SB.EQ.0) GOTO 34       *IF SUCCESSFUL RECOVERY
   B13=10                    *UNSUCCESSFUL RECOVERY MESSAGE 
34 MSG B13 (B7,B6,B5) TO LINE 10  *POST THE MESSAGE 
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
* 
/---------DISPLAY THE CYLINDER, TRACK, AND SECTOR ON A READ 
/---------CODED COMPARE ERROR.
* 
36 IF(EC.NE.5331) GOTO 40    *IF NO READ CODED COMPARE ERROR
   B12=B12+1                   *UPDATE DISPLAY LINE NUMBER
   MSG 11 (B7,B6,B5) TO LINE B12  *POST EXPECTED MESSAGE
   MSG 12 (IB(1),IB(2),IB(3)) TO LINE B12+1  *POST ACTUAL 
   B12=B12+2                     *UPDATE DISPLAY LINE NUMBER
* 
/---------DISPLAY UP TO FOUR DATA ERRORS ON DATA BUFFER 
/---------COMPARE ERRORS. 
* 
40 IF(EC.NE.1) GOTO 50       *IF NO DATA COMPARE ERRORS 
   B12=B12+1                 *UPDATE DISPLAY LINE NUMBER
   B13=BA                    *SET DATA BUFFER INDEX 
   IF(B8.EQ.24)B13=4         *IF READ CODED COMMAND 
   B14=0                     *INITIALIZE ERROR COUNTER
* 
/---------SEARCH FOR THE ERRORS IN THE DATA BUFFER. 
* 
42 B15=IB(B13) XOR OB(B13)      *CHECK WORDS FOR A ERROR
   IF(B15.EQ.0) GOTO 44            *IF NO DATA ERROR
   MSG 13 (B13,OB(B13),IB(B13),B15) TO LINE B12  *POST ERROR
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
   B14=B14+1                     *UPDATE ERROR COUNTER
   IF(B14.GE.4) GOTO 50          *IF FOUR ERRORS POSTED 
44 B15=502                       *NORMAL WORD COUNT 
   IF(B8.EQ.26)B15=476           *IF SHORTRD COMMAND
   GOTO 42 WHILE(B13+1 NE B15)   *LOOP TO CHECK DATA BUFFER 
* 
/---------DISPLAY STATUS BUFFER ERROR.
* 
50 IF(EC.NE.2) GOTO 52       *IF NO DATA COMPARE ERRORS 
   B15=OB(BA) XOR SB(BA)      *CHECK WORDS FOR A ERROR
   MSG 22 (BA,OB(BA),SB(BA),B15) TO LINE B12  *POST ERROR 
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
* 
/---------CHECK IF GENERAL, DETAILED STATUS TO BE DISPLAYED.
* 
52 IF(SB.NE.7777) GOTO 54    *IF INVALID GENERAL STATUS 
   B12 = B12 + 1
   MSG 24 (SB) TO LINE B12
54 B12 = B12 + 1
   B13 = 0
   IF(SB(52).NE.0) B13 = 25   *IF RETRY COUNT NONZERO 
   GOSUB 70 
56 EXIT TO 98G               *EXIT TO THE NEXT MODULE 
* 
/---------BUILD THE GENERAL AND DETAILED STATUS DISPLAY.
* 
70 MSG 14 (SB(B13)) TO LINE B12 
   B12 = B12 + 1
   MSG 15 TO LINE B12 
   B14 = 15 
   B15 = 0
72 B14 = B14 + 1
   B12 = B12 + 1
   B5 = SB(B13+1).RS.4
   B6 = SB(B13+1).AND.17.LS.4 
   B6 = SB(B13+2).RS.8.OR.B6
   B7 = SB(B13+3).RS.4
   B9 = SB(B13+3).AND.17.LS.4 
   B9 = SB(B13+4).RS.8.OR.B9
   IB(502) = SB(B13+2)
   IB(503) = SB(B13+4)
   MSG B14 (B5,B6,IB(502),B7,B9,IB(503)) TO LINE B12
   B13 = B13 + 4
   GOTO 72 WHILE (B15+1.LT.4) 
   B13 = B13 + 1
   B12 = B12 + 1
   B5 = SB(B13+1) 
   B6 = SB(B13+2) 
   B7 = SB(B13+3) 
   MSG 23 (SB(B13),B5,B6,B7) TO LINE B12
   RETURN                        *EXIT THE SUBROUTINE 
   END 30                        *END OF THE MODULE 
COMPILE                      *F4498F STATUS DISPLAY 
   MODULE F4498G,FMDFT(10,11)LOCK  -STATUS ANALYSIS 
***       F4498G - STATUS ANALYSIS
**        F4498G - STATUS ANALYSIS
*         F4498G - STATUS ANALYSIS
*         ------------------------
* 
*         PURPOSE-
*         THIS MODULE DOES STATUS ANALYSIS
*         BASED ON THS DATA IN THE STATUS 
*         BUFFER. 
* 
*         THE FOLLOWING BITS ARE CHECKED
*         WHEN THIS MODULE IS EXECUTED
* 
*         GENERAL STATUS WORD 
*         ------------------- 
* 
*         1.  IF BIT 11 IS SET THEN THE 
*             MESSAGE WILL BE:  
*             'ABNORMAL TERMINATION'
* 
*         2.  IF BIT 10 IS SET THEN THE 
*             MESSAGE WILL BE:  
*             'CONTROL UNIT BUSY' 
* 
*         3.  IF BIT 4 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'DSU MALFUNCTION' 
* 
*         4.  IF BIT 1 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'BUSY'
* 
*         WORD 1
*         ------
* 
*         5.  IF BIT 11 IS SET THEN THE 
*             MESSAGE WILL BE:  
*             'COMMAND REJECT'
* 
*         6.  IF BIT 10 IS SET THEN THE 
*             MESSAGE WILL BE:  
*             'INTERVENTION REQUIRED' 
* 
*         7.  IF BIT 9 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'BUS OUT CHECK' 
* 
*         8.  IF BIT 8 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'EQUIPMENT CHECK' 
* 
*         9.  IF BIT 7 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'DATA CHECK'
* 
*         10. IF BIT 6 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'OVERRUN' 
* 
*         11. IF BIT 3 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'PERMANENT ERROR' 
* 
1  FORMAT EC100- ABNORMAL TERMINATION.
2  FORMAT EC101- CONTROL UNIT BUSY. 
3  FORMAT EC102- DSU MALFUNCTION. 
4  FORMAT EC103- BUSY.
5  FORMAT EC104- COMMAND REJECT.
6  FORMAT EC105- INTERVENTION REQUIRED. 
7  FORMAT EC106- BUS OUT CHECK. 
10 FORMAT EC107- EQUIPMENT CHECK. 
11 FORMAT EC108- DATA CHECK.
12 FORMAT EC109- OVERRUN. 
13 FORMAT EC110- PERMANENT ERROR. 
31 FORMAT --------------------------------------------------
   EQUATE BIT0 TO 1, BIT1 TO 2, BIT2 TO 4, BIT3 TO 10 
   EQUATE BIT4 TO 20, BIT5 TO 40, BIT6 TO 100, BIT7 TO 200
   EQUATE BIT8 TO 400, BIT9 TO 1000, BIT10 TO 2000
   EQUATE BIT11 TO 4000 
40 B3 = 0                    *SET TO ANALYZE LAST STATUS
   B12 = B12 + 1
   IF(SB(52).EQ.0) GOTO 41   *IF NO RECOVERY
   B3 = 25                   *ANALYZE FIRST TAKEN STATUS
41 IF(SB(B3).EQ.7777) EXIT TO 98I 
   IF(SB(B3).AND.BIT11.EQ.0) GOTO 42
   MSG 1 TO LINE B12
   B12 = B12 + 1
42 IF (SB(B3).AND.BIT10.EQ.0) GOTO 43 
   MSG 2 TO LINE B12
   B12 = B12 + 1
43 IF (SB(B3).AND.BIT4.EQ.0) GOTO 44
   MSG 3 TO LINE B12
   B12 = B12 + 1
44 IF (SB(B3).AND.BIT1.EQ.0) GOTO 45
   MSG 4 TO LINE B12
   B12 = B12 +1 
45 B3 = B3 + 1
   IF (SB(B3).AND.BIT11.EQ.0) GOTO 46 
   MSG 5 TO LINE B12
   B12 = B12 + 1
46 IF (SB(B3).AND.BIT10.EQ.0) GOTO 47 
   MSG 6 TO LINE B12
   B12 = B12 + 1
47 IF (SB(B3).AND.BIT9.EQ.0) GOTO 49
   MSG 7 TO LINE B12
   B12 = B12 + 1
49 IF (SB(B3).AND.BIT8.EQ.0) GOTO 50
   MSG 10 TO LINE B12 
   B12 = B12 + 1
50 IF (SB(B3).AND.BIT7.EQ.0) GOTO 51
   MSG 11 TO LINE B12 
   B12 = B12 + 1
51 IF (SB(B3).AND.BIT6.EQ.0) GOTO 52
   MSG 12 TO LINE B12 
   B12 = B12 + 1
52 IF (SB(B3).AND.BIT3.EQ.0) GOTO 53
   MSG 13 TO LINE B12 
   B12 = B12 + 1
* 
53 EXIT TO 98H
   END 40 
COMPILE   - F4498G -
   MODULE F4498H,FMDFT(10,11) LOCK   - STATUS ANALYSIS
***       F4498H - STATUS ANALYSIS
**        F4498H - STATUS ANALYSIS
*         F4498H - STATUS ANALYSIS
*         ------------------------
* 
*         PURPOSE-
*         THIS MODULE DOES STATUS ANALYSIS
*         BASED ON THS DATA IN THE STATUS 
*         BUFFER. 
* 
*         THE FOLLOWING BITS ARE CHECKED
*         WHEN THIS MODULE IS EXECUTED
* 
*         WORD 1
*         ------
* 
*         1.  IF BIT 1 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'END OF CYLINDER' 
* 
*         WORD 2
*         ------
* 
*         2.  IF BIT 11 IS SET THEN THE 
*             MESSAGE WILL BE:  
*             'NO RECORD FOUND' 
* 
*         3.  IF BIT 10 IS SET THEN THE 
*             MESSAGE WILL BE:  
*             'FILE PROTECTED'
* 
*         4.  IF BIT 9 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'WRITE INHIBITED' 
* 
*         5.  IF BIT 8 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'OPERATION INCOMPLETE'
* 
*         6.  IF BIT 6 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'CORRECTABLE DATA ERROR'
* 
*         7.  IF BIT 5 IF SET THEN THE
*             MESSAGE WILL BE:  
*             'REDUNDAT PATH' 
* 
*         8.  IF BIT 4 IS SET THEN THE
*             MESSAGE WILL BE:  
*             'ENVIRONMENTAL DATA PRESENT'
* 
1  FORMAT EC111- INVALID TRACK FORMAT.
2  FORMAT EC112- END OF CYLINDER. 
3  FORMAT EC113- NO RECORD FOUND. 
4  FORMAT EC114- FILE PROTECTED.
5  FORMAT EC115- WRITE INHIBITED. 
6  FORMAT EC116- OPERATION INCOMPLETE.
7  FORMAT EC117- CORRECTABLE DATA ERROR.
10 FORMAT EC118- REDUNDANT PATH.
11 FORMAT EC119- ENVIRONMENT DATA PRESENT.
12 FORMAT --------------------------------------------------
   EQUATE BIT0 TO 1, BIT1 TO 2, BIT2 TO 4, BIT3 TO 10 
   EQUATE BIT4 TO 20, BIT5 TO 40, BIT6 TO 100, BIT7 TO 200
   EQUATE BIT8 TO 400, BIT9 TO 1000, BIT10 TO 2000
   EQUATE BIT11 TO 4000 
30 B3 = 0 
   IF (SB(52).EQ.0) GOTO 40 
   B3 = 25
40 IF(SB(B3+1).AND.BIT2.EQ.0) GOTO 41 
   MSG 1 TO LINE B12
   B12 = B12 + 1
41 IF(SB(B3+1).AND.BIT1.EQ.0) GOTO 42 
   MSG 2 TO LINE B12
   B12 = B12 + 1
42 IF (SB(B3+2).AND.BIT11.EQ.0) GOTO 43 
   MSG 3 TO LINE B12
   B12 = B12 + 1
43 IF (SB(B3+2).AND.BIT10.EQ.0) GOTO 44 
   MSG 4 TO LINE B12
   B12 = B12 + 1
44 IF (SB(B3+2).AND.BIT9.EQ.0) GOTO 45
   MSG 5 TO LINE B12
   B12 = B12 + 1
45 IF (SB(B3+2).AND.BIT8.EQ.0) GOTO 46
   MSG 6 TO LINE B12
   B12 = B12 + 1
46 IF (SB(B3+2).AND.BIT6.EQ.0) GOTO 47
   MSG 7 TO LINE B12
   B12 = B12 + 1
47 IF (SB(B3+2).AND.BIT5.EQ.0) GOTO 48
   MSG 10 TO LINE B12 
   B12 = B12 + 1
48 IF (SB(B3+2).AND.BIT4.EQ.0) GOTO 49
   MSG 11 TO LINE B12 
   B12 = B12 +1 
49 MSG 12 TO LINE B12 
   B12 = B12 + 1
   EXIT TO 98I
   END 30 
COMPILE   - F4498H -
   MODULE F4498I,FMDFT(10,11),LOCK
***       F4498I - RESTART ADAPTER
**        F4498I - RESTART ADAPTER
*         F4498I - RESTART ADAPTER
*         --------------------------- 
* 
*         PURPOSE-
*         F4498I  WILL  ISSUE A RESET COMMAND TO THE  ADAPTER IF
*         THE ADAPTER DOES NOT RESPOND CORRECTLY TO A RES COMMAND.
* 
*         METHOD- 
*         1.  IF  THE  NUMBER  IN  THE  B8  REGISTER  IS NOT A 40 OCTAL 
*             (RES,CONTROLLER) OR A  41  OCTAL  (RES  DRIVE),  EXIT  THE
*             MODULE. 
*         2.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5324 
*             OR 5325, EXIT THE MODULE
*         3.  EXECUTE A RES,ADAPTER COMMAND AND GO TO STEP 5  IF  NO
*             ABORT OCCURS. 
*         4.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5324 
*             OR 5325, EXIT THE MODULE
*         5.  EXECUTE A COMMAND SEQUENCE OF RESET,  STATUS,DETAIL,  AND 
*             REL AND GO TO STEP 7 IF AN ABORT OCCURS.
*         6.  EXIT TO NEXT MODULE.
*         7.  REPORT  AN  ERROR  INDICATING  THAT THE PREVIOUS  COMMAND 
*             SEQUENCE FAILED AND THAT THIS INDICATES A PROBLEM IN  THE 
*             CONTROLLER OR A PROBLEM WITH THE CONTROLWARE. 
*         8.  TERMINATE EXECUTION OF THE PRIMARY MODULE.
* 
/ 
*         ENTRY-
*         B1  = MODULE NUMBER IN OCTAL. 
*         B8  = COMMAND NUMBER FOR THE COMMAND THAT WAS BEING EXECUTED. 
*         EC  = THE ERROR CODE FOR THE LAST ERROR REPORTED. 
* 
*         EXIT- 
*         EXIT TO THE CALLING MODULE IF THE RESET COMMAND DOES NOT HAVE 
*         TO BE EXECUTED OR IF THE RESET COMMAND  CORRECTS THE PROBLEM. 
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE RESET
*         COMMAND MUST BE EXECUTED BUT IT DOES NOT CORRECT THE PROBLEM. 
* 
*         SUBMODULES REFERENCED-
*         F4498J - STATUS ANALYSIS. 
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
1  FORMAT - FMD CONFIDENCE TEST 
2  FORMAT F44*D MODULE ABORTED - ADAPTER NOT RESPONDING 
4  FORMAT ABNORMAL RESPONSE TO A RESET/DETAILED STATUS SEQ. 
5  FORMAT POSSIBLE ADAPTER OR CONTROLWARE PROBLEM.
6  FORMAT F44*D MODULE EXECUTION ABORTED
7  FORMAT --------------------------------------------------
* 
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.
* 
30 IF(B8.EQ.40) GOTO 32      *IF RES ADAPTER COMMAND
   IF(B8.NE.41) EXIT TO 98J         *IF NOT RES COMMAND, EXIT TO 98J
* 
/---------EXIT IF THE ERROR WAS BECAUSE OF NO RESERVE IN
/---------FIVE MINUTES OR ABNORMAL GENERAL STATUS.
* 
32 IF(EC.EQ.5324) EXIT TO 98J       *IF NO RESERVE ERROR, EXIT
   IF(EC.EQ.5325) EXIT TO 98J       *IF ABNORMAL STATUS, EXIT 
* 
/---------RESERVE THE ADAPTER TO ISSUE A RESET COMMAND. 
* 
   RES CONTROLLER,ABT 34     *RESERVE THE ADAPTER 
   GOTO 36                   *GO TO ISSUE RESET 
* 
/---------PROCESS THE ABORT ON THE RES COMMAND. 
* 
34 IF(EC.EQ.5324) EXIT TO 98J       *IF NO RESERVE ERROR, EXIT
   IF(EC.EQ.5325) EXIT TO 98J       *IF ABNORMOAL STATUS, EXIT
* 
/---------ISSUE THE RESET COMMAND AND RELEASE THE CONTROLLER. 
* 
36 RESET,ABT 40              *ZERO WORD AUTOLOAD
   STATUS,DETAIL,ABT 40      *GET DETAILED STATUS 
   REL,ABT 40                *RELEASE THE ADAPTER 
   EXIT TO 98J                      *EXIT THE MODULE
* 
/---------DISPLAY ADAPTER/CONTROLWARE ERROR MESSAGE.
* 
40 IF(ES.AND.TM.NE.0) GOTO 70 
   MSG 1 TO LINE 0           *TEST NAME MESSAGE 
70 MSG 4 TO LINE 5           *ERROR MESSAGE 
   MSG 5 TO LINE 7           *INFORMATION MESSAGE 
   MSG 6 (B1) TO LINE 10     *INFORMATION MESSAGE 
   PICTURE
   HALT                      *STOP ON ERROR 
   MSG 7 TO PRINT            *TERMINATE PRINT MESSAGES
   BLANK
   MSG 2 (B1) TO PRINT,DAYFILE,DISPLAY  *MODULE ABORT MSG.
   END 30                               *END OF THE MODULE
COMPILE                          *F4498I
   MODULE F4498J,FMDFT(10,11)LOCK   - STATUS ANALYSIS 
***       F4498J - STATUS ANALYSIS
**        F4498J - STATUS ANALYSIS
*         F4498J - STATUS ANALYSIS
*         ------------------------
* 
*         PURPOSE-
*         THIS MODULE WILL PUT OUT THE CONTENTS 
*         OF INPUT BUFFER IB 8 WORDS AT A TIME. 
* 
1  FORMAT TYPE GO TO CONTINUE 
2  FORMAT IB(*OCT) - IB(*OCT) IS BELOW
3  FORMAT      *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
4  FORMAT --------------------------------------------------
* 
   EQUATE BIT0 TO 1, BIT1 TO 2, BIT2 TO 4, BIT3 TO 10 
   EQUATE BIT4 TO 20, BIT5 TO 40, BIT6 TO 100, BIT7 TO 200
   EQUATE BIT8 TO 400, BIT9 TO 1000, BIT10 TO 2000
   EQUATE BIT11 TO 4000 
* 
40 MSG 4 TO LINE B12
   PICTURE
   HALT 
   BLANK
   IF(B1.AND.7.NE.1) GOTO 77    *IF NOT COMPARE ERROR 
   IF(P4.AND.BIT1.EQ.0)GOTO 77  *IF NO FULL BUFFER DUMP 
   B2 = 0                       *BUFFER INDEX 
   B3 = 77                      *LAST WORD OF BUFFER
   B12 = 0                       *LINE NUMBER 
72 MSG 2 (B2,B3) TO LINE B12
   B12 = B12 + 1
73 MSG 3, 8D WORDS FROM IB(B2) TO LINE B12
   B12 = B12 + 1
   GOTO 73 WHILE (B2+10.LT.B3)  *DO 64D WORDS (8 LINES) 
   GOTO 72 WHILE (B3+100.LT.400)  *DO 400B WORDS
   PICTURE
   IF(ES.AND.TM.NE.0) GOTO 74   *IF TERMINAL MODE 
   MSG 1 TO DISPLAY 
   PAUSE
74 BLANK
   B3 = 501                     *LAST WORD OF BUFFER
   B12 = 0                       *LINE NUMBER 
   MSG 2 (B2,B3) TO LINE B12
   B12 = B12 + 1
75 MSG 3, 8D WORDS FROM IB(B2) TO LINE B12
   B12 = B12 + 1
   GOTO 75 WHILE (B2+10.LT.500) 
   MSG 3, 2 WORDS FROM IB(B2) TO LINE B12 
   PICTURE
   IF(ES.AND.TM.NE.0) GOTO 76   *IF TERMINAL MODE 
   MSG 1 TO DISPLAY 
   PAUSE
76 BLANK
77 B2 = IB(503)              *RESTORE REGISTERS 
   B3 = IB(504) 
   B12 = OB(502)
   B5 = IB(502) 
   EXIT 
   END 40 
COMPILE  -F4498J
    MODULE F4499,FMDFT(10,11),LOCK
1   FORMAT COPYRIGHT CONTROL DATA CORP. 1979
/ 
/   PARAMETER DESCRIPTION.
/ 
/   NOTE - MODULE F4401 TO F4416 OF THE TEST DO NOT USE 
/          PARAMETERS.
/ 
/          P0 - LLLL - LOWER CYLINDER 
/               (RIGHT JUSTIFIED,ZERO FILLED) 
/ 
/          P1 - UUUU - UPPER CYLINDER 
/               (RIGHT JUSTIFIED, ZERO FILLED)
/ 
/          P2 - LLUU - LOWER AND UPPER TRACKS 
/               (RIGHT JUSTIFIED,ZERO FILLED) 
/ 
/          P3 - LLUU - LOWER AND UPPER SECTORS
/               (RIGHT JUSTIFIED,ZERO FILLED) 
/ 
/          P4 - XXXX - ENABLES
/               XXX1 - FLAW REPORTING 
/               XX1X - CHANGE PATTERN ON TRACK BOUNDARY 
/               XX2X - READ DISABLE 
/                    * IF NEIHER TRACK OR CYLINDER
/                      BOUNDARIES ARE SET, THE PATTERN
/                      CHANGE WILL DEFAULT TO DISK
/                      BOUNDARIES.
/               XX4X - DUMP FIRST EIGHT LOCATIONS OF THE
/                      INPUT AND OUTPUT BUFFERS AND B0
/                      THRU B15 REGISTERS.
/ 
/          P5 - XXXX - DISABLES 
/               XXX1 - ADDRESS CODING 
/               XXX2 - READ DISABLE 
/               XXX4 - WRITE DISABLE
/                      (EITHER WRITE OR READ MUST BE
/                      ENABLED.)
/               XX1X - RANDOM DATA SET DISABLE
/ 
/          P6 - XXXX - DATA CONTROL 
/               0000 - RANDOM DATA SET
/                      BIT 3 MUST BE CLEARED IN P5
/                      THE RANDOM START KEY WORD WILL COME
/                      FROM THE REAL TIME CLOCK.
/ 
/               XXXX - RANDOM DATA SET. 
/ 
/ 
/         (NON-ZERO)  BIT 3 MUST BE SET IN P5 
/                        THE BUFFER WILL BE FILLED WITH THIS
/                        FIXED DATA CONTROL WORD. 
/ 
/ 
/         P7 -XXXX - NOT USED 
/ 
/         P8 - XXXX - NOT USED
/ 
/         P9 - 0000 - ITERATION COUNT 
/                     ITERATION COUNT TIMES 4096 IF RANDOM
/                     COUNT 
/                     THIS PARAMETER IS USED BY MODULES 
/                     20-23 
/ 
2  END 2                     *END OF THE MODULE 
COMPILE,SOURCE               *F4499 PARAMETER DOCUMENTATION 
   MODULE F4499A,FMDFT(10,11),LOCK
/ 
/        MODULE         MODULE NAME           ACCESS   RUN
/        NUMBER       AND DESCRIPTION         LEVEL    TIME 
/        ------       ---------------         ------- ------
/    CONFIDENCE PORTION OF TEST 
/ 
/         01   ADAPTER CONNECT TEST               1    1 SEC
/         02   ZERO WORD AUTOLOAD TEST            1    2 SEC
/         03   GENERAL STATUS TEST                1    1 SEC
/         04   DETAILED STATUS TEST               1    1 SEC
/         05   C170 INTERFACE WRITE/READ TEST     1    1 SEC
/         06   WRITE/ DMA READ TEST               3    1 SEC
/         07   READ FLAW MAPS TEST                3   13 SEC
/         08   READ PREWRITTEN SECTORS            3   27 SEC
/         09   WRITE PREALLOCATED CYLINDER        3    4 SEC
/              TEST 
/         10   WRITE VERIFY PREALLOCATED          3    3 SEC
/              CYLINDER TEST AT 1/1 INTERLACE 
/         11   RANDOM SEEK TEST                   3   10 SEC
/         12   WRITE CODED CYLINDER TEST          3    2 SEC
/         13   READ/COMPARE CODED CYLINDER        3   46 SEC
/         14   READ SHORT                         3    3 SEC
/         15   MEASURE SEEK TIME                  3    5 SEC
/         16   READ SEQUENTIAL DISK               4    7 MIN
/ 
/ 
/    PARAMETER PORTION OF TEST
/ 
/         20   SEQUENTIAL WRITE/READ TEST         4    10 MIN 
/              TRACK MODE,1/1 INTERLACE 
/         21   SEQUENTIAL WRITE/READ COMPARE      4    10 MIN 
/              TEST TRACK MODE 1/1 INTERLACE
/         22   SEQUENTIAL WRITE/READ TEST         4     7 MIN 
/              CYLINDER MODE, 1/1 INTERLACE 
/         23   RANDOM WRITE/READ TEST             4    14 MIN 
/              SECTOR MODE, 1/1 INTERLACE 
/ 
/    REPAIR MODULES 
/ 
/         30   RESTART  ADAPTER                  1    1 SEC 
/         31   SEEK DISK ADDRESS                 4    1 SEC 
/         32   WRITE ONE SECTOR                  4    1 SEC 
/         33   READ ONE SECTOR                   4    1 SEC 
/         34   WRITE/READ ONE SECTOR             4    1 SEC 
/         35   TOGGLE PARAMETER READ TEST        4    1 SEC 
/ 
/ 
1  END 1                     *END OF THE MODULE 
COMPILE,SOURCE               *F4499A DESCRIPTION DOCUMENTATION
***       F44 - FEDERAL STANDARD CHANNEL DISK SUBSYSTEM.
*** 4.1   APPLICATIONS
**  4.1   APPLICATIONS
*   4.1   APPLICATIONS
*         ------------
* 
*         1.  WHEN RUNNING  THE  CONFIDENCE/VERIFICATION  PART  OF  THE 
*             TEST, A RUN,F44  COMMAND WILL RUN THE MODULES.
* 
*         2.  THE CONFIDENCE/VERIFICATION MODULES DO  NOT  PROVIDE  THE 
*             ABLILITY TO LOOP OR REPEAT THE CONDITION. 
* 
*         3.  IF A ERROR IS DETECTED WHILE TRYING  TO  CONNECT  TO  THE 
*             FSC  ADAPTER,  AND  THE ERROR  INDICATES  THAT  THE  FSC
*             ADAPTER  IS  HUNG, THE  ERROR   PROCESSING  ROUTINE  WILL 
*             ISSUE A RESET COMMAND TO THE ADAPTER AUTOMATICALLY. 
* 
* 
*** 4.2   INTERFACES
**  4.2   INTERFACES
*   4.2   INTERFACES
*         ----------
* 
*         REFER TO SECTION 3.1.5 AND 3.1.6 FOR PARAMETERS AND 
*         MESSAGES. 
* 
*** 4.3   TEST ABORTS 
**  4.3   TEST ABORTS 
*   4.3   TEST ABORTS 
*         ----------- 
* 
*         1.  IN ALL MODULES THAT WILL WRITE  AND/OR  READ  THE   DISK, 
*             THE  ACCESS LEVEL WILL BE CHECKED. IF THE ACCESS LEVEL IS 
*             TOO LOW TO DO THE WRITE AND/OR READ, THE TEST WILL  ABORT 
*             THE MODULE. 
* 
*         2.  IN  THE  PARAMETER DRIVEN AND SOME OF THE REPAIR MODULES, 
*             THE MODULE WILL CALL A SUBMODULE TO CHECK  THE  PARAMETER 
*             ENTRIES  FOR  THE  TEST.  IF  AN ERROR IS DETECTED IN THE 
*             PARAMETER WORDS, THE MODULE WILL BE ABORTED.
* 
*         3.  IF THE ERROR ROUTINE  DETERMINES  THAT  A  RESET  COMMAND 
*             SHOULD BE ISSUED TO THE FSC ADAPTER AND AFTER ISSUING 
*             THE RESET COMMAND, THE FSC ADAPTER FAILS  TO  RESPOND 
*             CORRECTLY,   THE  MODULE  CALLING  THE  ERROR  PROCESSING 
*             ROUTINE WILL BE ABORTED.
* 
*         4.  ALL CONFIDENCE TEST MODULES LIMIT THE  NUMBER  OF  ERRORS 
*             THAT  MAY  BE  REPORTED.  AFTER ONE  ERRORS  HAVE BEEN
*             DETECTED IN  ANY  ONE OF THE MODULES, THAT MODULE WILL BE 
*             ABORTED.
* 
*** 4.4   SYSTEM ABORTS 
**  4.4   SYSTEM ABORTS 
*   4.4   SYSTEM ABORTS 
*         ------------- 
* 
*         NO  SYSTEM  ABORTS  SHOULD  EVER  BE  CAUSED BY THE TEST. THE 
*         PRODUCT OVERLAY DRIVER  SHOULD  PROTECT THE  SYSTEM  FROM ANY 
*         ABORTS. 
* 
*** 4.5   ERRORS
**  4.5   ERRORS
*   4.5   ERRORS
*         ------
* 
*         FOR EASE OF REFERENCE THESE MESSAGES ARE GROUPED WITH ALL 
*         TEST MESSAGES IN 3.1.6,3.1.7 AND 3.1.8. 
* 
*** 4.6   PERFORMANCE 
**  4.6   PERFORMANCE 
*   4.6   PERFORMANCE 
*         ----------- 
* 
*         THE MAIN PURPOSE OF THE TEST F44 IS TO DETERMINE THAT THE 
*         DISKS AND ADAPTER ARE FUNCTIONING CORRECTLY. AN ERROR 
*         WILL INDICATE WHICH TEST  SHOULD  BE  RUN  NEXT  TO  ISOLATE
*         THE  FAILURE.  THE TEST IS DESIGNED TO DETECT FAILURES IN THE 
*         ADAPTER AND  DRIVE. 
* 
* 
* 
*** 4.7   SOFTWARE
**  4.7   SOFTWARE
*   4.7   SOFTWARE
*         --------
* 
*         MODULE RUNNING TIMES AND ACCESS LEVELS
*         --------------------------------------
* 
*         MODULE            RUNNING          ACCESS 
*          NAME              TIME            LEVEL
*         ------            -------          ------ 
* 
*         CONFIDENCE PORTION OF TEST
*         F4401                1  SEC.         1
*         F4402                2  SEC.         1
*         F4403                1  SEC.         1
*         F4404                1  SEC.         1
*         F4405                1  SEC.         1
*         F4406                1  SEC.         3
*         F4407                13 SEC.         3
*         F4408                27 SEC.         3
*         F4409                4  SEC.         3
*         F4410                3  SEC.         3
*         F4411                10 SEC.         3
*         F4412                 2 SEC.         3
*         F4413                46 SEC.         3
*         F4414                 3 SEC.         3
*         F4415                 5 SEC.         3
*         F4416                7  MIN          3
* 
*         PARAMETER PORTION OF TEST 
*         F4420        10 MIN                  4
*         F4421        10 MIN                  4
*         F4422        7  MIN                  4
*         F4423        14 MIN                  4
* 
*         REPAIR MODULES
*         F4430                1 SEC.          1
*         F4431                1 SEC.          4
*         F4432                1 SEC.          4
*         F4433                1 SEC.          4
*         F4434                1 SEC.          4
*         F4435                1 SEC.          4
* 
*** 4.8   INSTALLATION PARAMETERS 
**  4.8   INSTALLATION PARAMETERS 
*   4.8   INSTALLATION PARAMETERS 
*         ----------------------- 
* 
*         THE  FOLLOWING  NAMES  MUST BE DEFINED TO ASSEMBLE F44 DURING 
*         THE UPDATE RUN- 
* 
*         *DEFINE,TSP        TO COMPILE F44 
*         *DEFINE,CMSE17X    TO COMPILE F44 FOR OFF-LINE
* 
*** 4.9   PRODUCT LEVEL DESCRIPTION 
**  4.9   PRODUCT LEVEL DESCRIPTION 
*   4.9   PRODUCT LEVEL DESCRIPTION 
*         ------------------------- 
* 
*         NONE. 
* 
*** 5.0   PUBLICATIONS AFFECTED 
**  5.0   PUBLICATIONS AFFECTED 
*   5.0   PUBLICATIONS AFFECTED 
*         --------------------- 
* 
*         NONE. 
* 
*** 5.1   EQUIPMENT CONFIGURATION 
**  5.1   EQUIPMENT CONFIGURATION 
*   5.1   EQUIPMENT CONFIGURATION 
*         ----------------------- 
* 
*         1.  THE TEST REQUIRES THE USE OF ONE FSC ADAPTER AND  ONE 
*             DRIVE. THE  TEST  CAN  ONLY  TEST  ONE  ADAPTER  AND
*             DRIVE AT A TIME.
* 
*         2.  THE TEST USES THE CONTROLWARE IN THE FSC  ADAPTER  TO 
*             TEST THE SUBSYSTEM. 
* 
*         3.  THE  TEST  CANNOT  BE  USED TO TEST THE 317 
*             MEGABYTE SUBSYSTEM.  IF ANY ARE CONNECTED TO THE ADAPTER. 
*             ALSO THE INTERFACE HARDWARE FOR THE THE  DRIVES IN THE
*             ADAPTER  WILL  NOT  BE  TESTED  IF  IT  EXISTS  IN THE
*             SUBSYSTEM.
* 
*** 5.2   INTERFACES TO OTHER SOFTWARE PRODUCTS 
**  5.2   INTERFACES TO OTHER SOFTWARE PRODUCTS 
*   5.2   INTERFACES TO OTHER SOFTWARE PRODUCTS 
*         ------------------------------------- 
* 
*         THE FSC ADAPTER  FUNCTION  CODES  AND  THE  GENERAL   AND 
*         DETAILED STATUS,  AS  DEFINED  IN  THE MA454  CONTROLWARE, IS 
*         INTERPRETED BY THE ERROR PROCESSING SUBMODULES AND  PRESENTED 
*         AS PART OF ERROR MESSAGE DISPLAYS.
* 
*** 5.3   SECURITY
**  5.3   SECURITY
*   5.3   SECURITY
*         --------
* 
*IF -DEF,CMSE17X
*         SECURITY  IS  PROVIDED  BY  THE  OPERATING SYSTEM FOR ON-LINE 
*         MALET THRU THE USE OF CVL.
*ENDIF
*IF DEF,CMSE17X 
*         SECURITY FOR THE TEST, WHILE RUNNING UNDER DEMOT,IS  PROVIDED 
*         BY THE ACCESS LEVEL USED ON THE ASSIGN DIRECTIVE. 
*ENDIF
* 
*ENDIF
* 
* 
*** 5.4   RAM REQUIREMENTS. 
**  5.4   RAM REQUIREMENTS. 
*   5.4   RAM REQUIREMENTS. 
*         ----------------
* 
*         REFER TO FEDERAL STANDARD CHANNEL  DR  ARH3858. 
* 
