*DECK,FEP 
***       FEP - FMD/ESM PATH TEST 
***       REVISION HISTORY
**
*         FEP - FMD/ESM PATH TEST 
* 
*         AUTHOR - R.  F.  FELLRATH      SEPT., 1982
* 
*                     COPYRIGHT CONTROL DATA 1892 
*                          ALL RIGHTS RESERVED
* 
* 
*         CONTAINED HEREIN ARE SOFTWARE PRODUCTS COPYRIGHTED
*         BY CONTROL DATA CORPORATION.  REPRODUCTION WITHOUT
*         PERMISSION IS PROHIBITED.  THE COPYRIGHT NOTICE MUST
*         APPEAR ON ALL AUTHORIZED COMPLETE OR PARTIAL COPIES.
* 
* 
*** 1.0   INTRODUCTION
**
*   1.0   INTRODUCTION
*         ------------
* 
*         THE DIRECT  EXTENDED MEMORY ACCESS (DEMA) HARDWARE ALLOWS THE 
*         OPERATING SYSTEM TO TRANSFER DATA BETWEEN FOUR HEADS PARALLEL 
*         885-4X  DRIVES  AND EXTENDED SEMICONDUCTOR MEMORY (ESM) USING 
*         THE LOW SPEED PORT (LSP).  THE PP IN THE CYBER 170  MAINFRAME 
*         IS  USED  TO  CONTROL  THE  DATA TRANSFERS BETWEEN THE 885-4X 
*         DRIVES AND ESM, BUT IS NOT USED AS PART OF THE DATA PATH. 
* 
*         THE PURPOSE  OF  THE  FMD/ESM  PATH TEST (FEP) IS TO TEST THE 
*         HARDWARE IN THE PATH BETWEEN THE 7155-401 DISK CONTROLLER AND 
*         ESM.  THIS IS ACCOMPLISHED BY FIRST TRANSFERRING DATA BETWEEN 
*         THE 7155-401 DISK CONTROLLER AND ESM  AND  THEN  TRANSFERRING 
*         DATA BETWEEN A 885-4X DRIVE AND ESM.
* 
*         DATA TRANSFERS BETWEEN THE 885-4X DRIVE AND ESM WILL FIRST BE 
*         ONE SECTOR, THEN ONE TRACK (32 DECIMAL SECTORS), AND THEN ONE 
*         CYLINDER  (320  DECIMAL SECTORS).  DATA TRANSFERS BETWEEN ESM 
*         AND THE 885-4X DRIVE INVOLVING MORE THAN ONE SECTOR  WILL  BE 
*         DONE  IN  AN  1  TO  1  INTERLACE MODE THEREBY EXERCISING THE 
*         HARDWARE AT ITS MAXIMUM CAPACITY. 
* 
* 
*** 1.1   RESTRICTIONS
**
*   1.1   RESTRICTIONS
*         ------------
* 
*         1.  THE 7155 MA722-A CONTROLWARE MUST  HAVE  PREVIOUSLY  BEEN 
*             LOADED INTO THE 7155-401 SUBSYSTEM. 
* 
*         2.  THE FEP TEST  ASSUMES  THAT  THE  7155-401 CONTROLLER AND 
*             FOUR HEADS PARALLEL 885-4X DRIVE ARE  IN  PROPER  WORKING 
*             ORDER.
* 
*         3.  THE FEP TEST  ASSUMES  THAT  ESM  IS  IN  PROPER  WORKING 
*             ORDER.
* 
*         4.  THE FEP TEST IS DESIGNED TO RUN IN AN ON-LINE ENVIRONMENT 
*             ONLY. 
* 
*         5.  IN ORDER TO INCREASE THE STRESS OF DATA TRANSFERS FROM/TO 
*             ESM TO/FROM THE  DEMA  CONTROLLER,  THE FEP FULL CYLINDER 
*             TRANSFER MODULES SHOULD BE RUN ON ALL DEMA CONTROLLERS ON 
*             THE SYSTEM AT THE SAME TIME WITH REPEAT MODULE SELECTED.
* 
* 
* 
*** 1.2   CHARACTERISTICS 
**
*   1.2   CHARACTERISTICS 
*         --------------- 
* 
*         1.  PROGRAM NAME......................................FEP 
* 
*         2.  TEST/DIAG/UTILITY/SYSTEM.........................DIAG 
* 
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER............MALET 
* 
*         4.  RUN TIME (DEFAULT)....................2 MIN.,  9 SEC. 
* 
*         5.  RUN TIME/QUICK LOOK (DEFAULT).........2 MIN.,  9 SEC. 
* 
*         6.  LEVEL OF ISOLATION...............................PSFG 
* 
*         7.  ON-LINE/OFF-LINE/BOTH.........................ON-LINE 
* 
*         8.  ON-LINE SYSTEM.............................NOS,NOS/BE 
* 
*         9.  OFF-LINE SYSTEM..................................NONE 
* 
*         10. ASSEMBLY LANGUAGE...............................MALET 
* 
*         11. SOURCE CODE MAINTENANCE........................UPDATE 
* 
* 
*** 2.0   APPLICABLE DOCUMENTS
**
*   2.0   APPLICABLE DOCUMENTS
*         --------------------
* 
*         CML REFERENCE MANUAL                                60455980
*         CYBER PARALLEL DATA DISK STORAGE SPEC.              64036900
*         DEMA MAINTENANCE SOFTWARE DEVELOPMENT PLAN          ARH4621 
*         FMD SUBSYSTEM CONTROLLER SPEC.                      22938611
*         MALET MODULE CODING SPEC.                           ARH3297 
*         MALET REFERENCE MANUAL                              60456020
*         MA722-A CONTROLWARE ERS                             52706628
* 
* 
*** 3.0   PROGRAM DESCRIPTION 
**
*   3.0   PROGRAM DESCRIPTION 
*         ------------------- 
* 
*** 3.1   FEP 
**
*   3.1   FEP 
*         --- 
* 
*** 3.1.1 ABSTRACT
**
*   3.1.1 ABSTRACT
*         --------
* 
*         THE FEP TEST IS USED TO DETECT AND ISOLATE HARDWARE  FAILURES 
*         IN  THE  PATH  BETWEEN  THE  7155-401 CONTROLLER AND ESM TO A 
*         PSFG.  ALL DATA TRANSFERS BETWEEN ESM AND  THE  885-4X  DRIVE 
*         INVOLVING  MORE THAN ONE SECTOR WILL BE DONE IN AN ONE TO ONE 
*         INTERLACE MODE. 
* 
*         REPEAT CONDITION AND REPEAT MODULE LOOPS ARE PROVIDED IN  ALL 
*         OF  THE  MODULES  IN THE FEP TEST.  THE USER CAN ALSO DISABLE 
*         THE STOP ON ERROR WHEN REPEAT CONDITION OR REPEAT  MODULE  IS 
*         ENABLED TO  PROVIDE  HIM  WITH  A  SCOPING  LOOP.   IF  AFTER 
*         REPORTING  AN  ERROR  IT  IS  DETERMINED  THAT  THE  7155-401 
*         CONTROLLER  IS  HUNG  OR  THE  MA722-A  CONTROLWARE  IS   NOT 
*         RESPONDING  CORRECTLY, REPEAT CONDITION AND REPEAT MODULE ARE 
*         NOT PROVIDED. 
* 
*         THE FEP  TEST  IS DESIGNED TO FIRST TEST THE MINIMAL HARDWARE 
*         NEEDED IN THE DATA PATH AND THEN USES THE HARDWARE PREVIOUSLY 
*         TESTED TO TEST THE HARDWARE FOLLOWING THE HARDWARE PREVIOUSLY 
*         TESTED.  AFTER ALL HARDWARE IN THE  PATH  FROM  THE  7155-401 
*         CONTROLLER  TO  ESM  HAS BEEN TESTED BY DOING ONE SECTOR DATA 
*         TRANSFERS, ONE TO ONE INTERLACE MODE DATA TRANSFERS INVOLVING 
*         ONE  TRACK  AND  ONE  CYLINDER  WILL  BE DONE TO EXERCISE THE 
*         HARDWARE AT ITS MAXIMUM TRANSFER RATE.
* 
*         MODULE       DESCRIPTION
*         ------       -----------
* 
*         FEP01        WRITE AND  READ  SEVERAL  DATA PATTERNS INTO AND 
*                      FROM  THE  BUFFER   MEMORY   IN   THE   7155-401 
*                      CONTROLLER  TO  VERIFY THAT NO HARDWARE PROBLEMS 
*                      EXIST IN THAT MEMORY.
* 
*         FEP03        CHECK THE  CONTENTS  OF  THE  GENERAL   EXTENDED 
*                      STATUS  WORDS  USING  SEVERAL  DATA  PATTERNS BY 
*                      WRITING THE DATA INTO THE BUFFER MEMORY  IN  THE 
*                      7155-401 CONTROLLER AND PERFORMING A READ OF THE 
*                      GENERAL EXTENDED STATUS. 
* 
*         FEP05        VERIFY THAT THE STATUS OF  THE  LOW  SPEED  PORT 
*                      (LSP) IS CORRECT AFTER THE LSP MASTER CLEARED. 
* 
*         FEP07        USING THE MAINTENANCE WRITE AND MAINTENANCE READ 
*                      FUNCTIONS IN THE LSP, ECHO DATA THROUGH THE  LSP 
*                      TO  VERIFY  THAT  DATA CAN BE TRANSFERRED TO AND 
*                      FROM THE LSP CORRECTLY.
* 
*         FEP09        WRITE AND READ  DATA  INTO/FROM  ESM  USING  THE 
*                      SYSWR  AND  SYSRD  MALET COMMANDS TO VERIFY THAT 
*                      DATA CAN BE WRITTEN INTO AND READ BACK FROM  ESM 
*                      CORRECTLY  THROUGH  THE  ESM  HIGH  SPEED  PORT. 
*                      SEVERAL DATA PATTERNS WILL BE USED TO  TEST  THE 
*                      PATH TO ESM. 
* 
*         FEP11        WRITE DATA INTO ESM FROM THE 7155-401 CONTROLLER 
*                      BUFFER MEMORY USING THE DIAGNOSTIC WRITE COMMAND 
*                      AND THEN READ THE DATA WRITTEN  INTO  ESM  USING 
*                      THE SCRATCH FILE.  SEVERAL DATA PATTERNS WILL BE 
*                      USED TO TEST PATH TO ESM.
* 
*         FEP13        WRITE DATA INTO ESM USING THE SCRATCH  FILE  AND 
*                      THEN WRITE THE DATA INTO THE 7155-401 CONTROLLER 
*                      MEMORY BUFFER FROM ESM USING THE DIAGNOSTIC READ 
*                      COMMAND.  SEVERAL  DATA PATTERNS WILL BE USED TO 
*                      TEST THE PATH FROM ESM.
* 
*         FEP15        READ ONE  SECTOR  OF  DATA  FROM  A  SECTOR   IN 
*                      CYLINDER  1512  OCTAL  OF  THE  885-4X DRIVE AND 
*                      WRITE THE DATA INTO ESM.  SEVERAL DATA  PATTERNS 
*                      WILL BE USED.
* 
*         FEP17        READ ONE  SECTOR  OF DATA FROM ESM AND WRITE THE 
*                      DATA INTO A SECTOR IN CYLINDER 1512 OCTAL OF THE 
*                      885-4X  DRIVE.   SEVERAL  DATA  PATTERNS WILL BE 
*                      USED.
* 
*         FEP19        WRITE VERIFY ONE SECTOR OF DATA FROM A SECTOR IN 
*                      CYLINDER 1512 OCTAL OF THE 885-4X DRIVE WITH ONE 
*                      SECTOR FROM ESM.  SEVERAL DATA PATTERNS WILL  BE 
*                      USED.
* 
*         FEP21        WRITE VERIFY ONE SECTOR OF DATA FROM A SECTOR IN 
*                      CYLINDER 1512 OCTAL OF THE 885-4X DRIVE WITH ONE 
*                      SECTOR OF DATA FROM ESM EXPECTING A WRITE VERIFY 
*                      ERROR   TO   BE   DETECTED   BY   THE   7155-401 
*                      CONTROLLER.    SEVERAL  DATA  PATTERNS  WILL  BE 
*                      USED.
* 
*         FEP23        READ THIRTY-TWO DECIMAL SECTORS (ONE  TRACK)  OF 
*                      DATA  FROM A TRACK IN CYLINDER 1512 OCTAL OF THE 
*                      885-4X  DRIVE  AND  WRITE  THE  DATA  INTO  ESM. 
*                      SEVERAL DATA PATTERNS WILL BE USED.
* 
*         FEP25        WRITE VERIFY  THIRTY-TWO  DECIMAL  SECTORS  (ONE 
*                      TRACK) OF DATA FROM A  TRACK  IN  CYLINDER  1512 
*                      OCTAL   ON  THE  885-4X  DRIVE  WITH  THIRTY-TWO 
*                      DECIMAL SECTORS OF DATA FROM ESM.  SEVERAL  DATA 
*                      PATTERNS WILL BE USED. 
* 
*         FEP27        READ THIRTY-TWO  DECIMAL  SECTORS (ONE TRACK) OF 
*                      DATA FROM ESM AND WRITE THE DATA INTO A TRACK IN 
*                      CYLINDER   1512   OCTAL  OF  THE  885-4X  DRIVE. 
*                      SEVERAL DATA PATTERNS WILL BE USED.
* 
*         FEP29        READ THREE HUNDRED AND  TWENTY  DECIMAL  SECTORS 
*                      (ONE  CYLINDER) OF DATA FROM CYLINDER 1512 OCTAL 
*                      OF THE 885-4X DRIVE  AND  WRITE  THE  DATA  INTO 
*                      ESM.  SEVERAL DATA PATTERNS WILL BE USED.
* 
*         FEP31        WRITE VERIFY  THREE  HUNDRED  AND TWENTY DECIMAL 
*                      SECTORS (ONE CYLINDER)  OF  DATA  FROM  CYLINDER 
*                      1512  OCTAL  ON  THE  885-4X  DRIVE  WITH  THREE 
*                      HUNDRED AND TWENTY DECIMAL SECTORS OF DATA  FROM 
*                      ESM.  SEVERAL DATA PATTERNS WILL BE USED.
* 
*         FEP33        READ THREE  HUNDRED  AND  TWENTY DECIMAL SECTORS 
*                      (ONE CYLINDER) OF DATA FROM ESM  AND  WRITE  THE 
*                      DATA  INTO  CYLINDER  1512  OCTAL  OF THE 885-4X 
*                      DRIVE.  SEVERAL DATA PATTERNS WILL BE USED.
* 
* 
***       ERROR PROCESSING
**
*         ERROR PROCESSING
*         ----------------
* 
*             FEP ERROR PROCESSING FLOWCHART. 
* 
*                *********
*                 *ENTER*                           ***** 
*                  *   *                            * A * 
*                   * *                              * *
*                    *                                * 
*                    V                                V 
*                    V                                V 
*         -----------------------          -----------------------
*         *       98A-98B       *          *       98J-98P       *
*         *                     *          *                     *
*         * . FEP TITLE MESSAGE *          * . GENERAL STATUS    *
*         * . MODULE TITLE MSG  *          *   ANALYSIS LINE     *
*         -----------------------          -----------------------
*                    V                                V 
*                    V                                V 
*         -----------------------          -----------------------
*         *       98C-97D       *          *       98Q-98R       *
*         *                     *          *                     *
*         * . DRIVER OR MODULE  *          * . 885-4X STATUS     *
*         *   ERROR MESSAGE     *          *   ANALYSIS LINE     *
*         -----------------------          -----------------------
*                    V                                V 
*                    V                                V 
*         -----------------------          -----------------------
*         *       98E-98F       *          *         98S         *
*         *                     *          *                     *
*         * . ABORT MESSAGE     *          * . PRESERVICE        *
*         -----------------------          *   FORECAST LINE     *
*                    V                     -----------------------
*                    V                                V 
*         -----------------------                     V 
*         *       98G-98H       *          -----------------------
*         *                     *          *         98T         *
*         * . LAST FUNCTION MSG *          *                     *
*         -----------------------          * . CONTROLLER RESET  *
*                    V                     *   IF REQUIRED       *
*                    V                     -----------------------
*         -----------------------                     V 
*         *         98I         *                     V 
*         *                     *                     * 
*         * . OPTIONAL BUF/REG, *                    * *
*         *   CYL, DATA ERROR,  *                   *   * 
*         *   STATUS ,AND WT    *                  *     *
*         *   LINES             *                 *  EXIT * 
*         -----------------------                 ********* 
*                    V
*                    V
*                    *
*                   * * 
*                  * A *
*                  *****
*** 3.1.2 DESCRIPTION DETAILED
**
*   3.1.2 DESCRIPTION DETAILED
*         --------------------
* 
* 
***       OPERATIONAL PROCEDURE 
**
*         OPERATIONAL PROCEDURE 
*         --------------------- 
* 
*         1.  REFER TO THE MALET REFERENCE  MANUAL  (PUB. NO. 60456020) 
*             FOR A DETAILED DESCRIPTION OF THE MALET LANGUAGE. 
* 
*         2.  REFER TO THE CML REFERENCE MANUAL (PUB. NO. 60455980)  TO 
*             RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS.
* 
* 
***       LOADING PROCEDURE 
**
*         LOADING PROCEDURE 
*         ----------------- 
* 
*         1.  REFER TO THE  CML REFERENCE MANUAL (PUB. NO. 60455980) TO 
*             RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS.
* 
* 
***       RUNNING PROCEDURE 
**
*         RUNNING PROCEDURE 
*         ----------------- 
* 
*         1.  REFER TO THE CML REFERENCE MANUAL (PUB. NO. 60455980)  TO 
*             RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS.
* 
* 
***       PARAMETERS
**
*         PARAMETERS
*         ----------
* 
*         THE FOLLOWING PARAMETERS ARE USED BY FEP- 
* 
*         P0 - NOT USED.
* 
*         P1 - NOT USED.
* 
*         P2 - NOT USED.
* 
*         P3 - NOT USED.
* 
*         P4 - XXXX - ENABLES 
*              XXX1 - NOT USED. 
*              XXX2 - NOT USED. 
*              XXX4 - NOT USED. 
*              XX1X - NOT USED. 
*              XX2X - NOT USED. 
*              XX4X - DISPLAY THE CONTENTS OF THE B0    THROUGH     B15 
*                     REGISTERS   AND   CONTENTS  OF  THE  FIRST  EIGHT 
*                     LOCATIONS IN THE INPUT AND OUTPUT  BUFFERS  AFTER 
*                     AN ERROR HAS BEEN REPORTED TO THE USER. 
*              X1XX - NOT USED. 
*              X2XX - NOT USED. 
*              X4XX - NOT USED. 
*              1XXX - NOT USED. 
*              2XXX - NOT USED. 
*              4XXX - NOT USED. 
* 
*         P5 - NOT USED.
* 
*         P6 - XXXX - RANDOM NUMBER GENERATOR STARTER 
*                     SETTING THIS PARAMETER WORD TO  A  NONZERO  VALUE 
*                     WILL  CAUSE THE MODULES TO USE THIS NUMBER AS THE 
*                     STARTER FOR THE RANDOM NUMBER GENERATOR.
* 
*         P7 - NOT USED.
* 
*         P8 - NOT USED.
* 
*         P9 - NOT USED.
* 
* 
***       MESSAGES
**
*         MESSAGES
*         --------
* 
***       NORMAL MESSAGES 
**
*         NORMAL MESSAGES 
*         --------------- 
* 
*         1.  FEP01 - CONTROLLER DIAG. W/R
*             THIS MESSAGE INDICATES THAT MODULE FEP01 IS NOW  RUNNING. 
* 
*         2.  FEP03 - GEN. EXTENDED STATUS
*             THIS MESSAGE INDICATES THAT  MODULE FEP03 IS NOW RUNNING. 
* 
*         3.  FEP05 - LSP STATUS
*             THIS MESSAGE INDICATES THAT MODULE FEP05 IS NOW  RUNNING. 
* 
*         4.  FEP07 - LSP ECHO CHECK
*             THIS MESSAGE INDICATES THAT  MODULE FEP07 IS NOW RUNNING. 
* 
*         5.  FEP09 - ESM SYSWR/SYSRD TEST
*             THIS MESSAGE INDICATES THAT MODULE FEP09 IS NOW  RUNNING. 
* 
*         6.  FEP11 - ESM DIAG. WRITE 
*             THIS MESSAGE INDICATES THAT  MODULE FEP11 IS NOW RUNNING. 
* 
*         7.  FEP13 - ESM DIAG. READ
*             THIS MESSAGE INDICATES THAT MODULE FEP13 IS NOW  RUNNING. 
* 
*         8.  FEP15 - ESM ONE SECTOR READ 
*             THIS MESSAGE INDICATES THAT  MODULE FEP15 IS NOW RUNNING. 
* 
*         9.  FEP17 - ESM ONE SECTOR WRITE
*             THIS MESSAGE INDICATES THAT MODULE FEP17 IS NOW  RUNNING. 
* 
*         10. FEP19 - ESM ONE SECTOR VERIFY 
*             THIS MESSAGE INDICATES THAT  MODULE FEP21 IS NOW RUNNING. 
* 
*         11. FEP21 - ESM VERIFY ERROR
*             THIS MESSAGE INDICATES THAT MODULE FEP19 IS NOW  RUNNING. 
* 
*         12. FEP23 - ESM ONE TRACK READ
*             THIS MESSAGE INDICATES THAT  MODULE FEP23 IS NOW RUNNING. 
* 
*         13. FEP25 - ESM ONE TRACK VERIFY
*             THIS MESSAGE INDICATES THAT MODULE FEP25 IS NOW  RUNNING. 
* 
*         14. FEP27 - ESM ONE TRACK WRITE 
*             THIS MESSAGE INDICATES THAT  MODULE FEP27 IS NOW RUNNING. 
* 
*         15. FEP29 - ESM ONE CYLINDER READ 
*             THIS MESSAGE INDICATES THAT MODULE FEP29 IS NOW  RUNNING. 
* 
*         16. FEP31 - ESM ONE CYL. VERIFY 
*             THIS MESSAGE INDICATES THAT  MODULE FEP31 IS NOW RUNNING. 
* 
*         17. FEP33 - ESM ONE CYLINDER WRITE
*             THIS MESSAGE INDICATES THAT MODULE FEP33 IS NOW  RUNNING. 
* 
* 
***       DAYFILE MESSAGES
**
*         DAYFILE MESSAGES
*         ----------------
* 
*         1.  FEPNN ERROR(S) = XXXXD
*             NN   = THE NUMBER OF THE MODULE IN FEP. 
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*             THIS DAYFILE MESSAGE   INDICATES   THAT   MODULE  NN  HAD 
*             DETECTED XXXX  DECIMAL  NUMBER  OF  ERRORS  WHEN  IT  HAD 
*             COMPLETED EXECUTION.
* 
*         2.  FEPNN MODULE ABORTED - CONTROLLER NOT RESPONDING
*             NN   = THE NUMBER OF THE MODULE IN FEP. 
*             THIS DAYFILE MESSAGE  INDICATES  THAT EXECUTION OF MODULE 
*             NN AND THE FEP  TEST  WILL  BE  TERMINATED.   THE  STATUS 
*             INFORMATION  FROM  THE 7155-401 CONTROLLER INDICATES THAT 
*             EITHER A HARDWARE PROBLEM EXISTS  IN  THE  CONTROLLER  OR 
*             THAT A CONTROLWARE PROBLEM EXISTS.
* 
* 
***       ERROR MESSAGES
**
*         ERROR MESSAGES
*         --------------
* 
*         THE FOLLOWING  DISPLAY FORMAT IS USED BY FEP TO REPORT ERRORS 
*         TO THE USER WHEN THE GENERAL STATUS IS NONZERO AND  NO  ERROR 
*         RECOVERY WAS ATTEMPTED. 
* 
*           00    FEP = FMD/ESM PATH TEST 
*           01    FEPNN - MODULE TITLE
*           02    PRESERVICE FORECAST GROUP PSFG
*           03
*           04    FEP ABORTED ON C--------------------C COMMAND 
*           05    LAST FUNCTION = FFFF (F-------------------F)
*           06     FEPNN  EXXXX LXXX  M------------------M
*           07    WT=WWWWB  RETRIES=RRB  ERRORS=EEEED  SEED=SSSSB 
*           10    CYL=CCCCB TRK=TTB SEC=SSB 
*           11
*           12                     WORD    DETAILED STATUS (OCTAL)
*           13                       1     DDDD DDDD DDDD DDDD DDDD 
*           14    LAST GENERAL       6     DDDD DDDD DDDD DDDD DDDD 
*           15    STATUS = GGGGB    11D    DDDD DDDD DDDD DDDD DDDD 
*           16                      16D    DDDD DDDD DDDD DDDD DDDD 
*           17
*           20    S------------------------M. 
* 
* 
*           WHERE-
*           NN     = MODULE NUMBER. 
*           RRB    = RETRY COUNT (RR) IN OCTAL (B). 
*           SSB    = SECTOR NUMBER (SS) IN OCTAL (B). 
*           TTB    = TRACK NUMBER (TT) IN OCTAL (B).
*           CCCCB  = CYLINDER NUMBER (CCCC) IN OCTAL (B). 
*           C---C  = COMMAND ON WHICH THE ABORT OCCURRED. 
*           DDDD   = DETAILED STATUS WORDS IN OCTAL.
*           EEEED  = NUMBER OF ERRORS (EEEE) DETECTED BY THIS MODULE IN 
*                    DECIMAL (D). 
*           EXXXX  = PRODUCT OVERLAY OR MODULE ERROR CODE.
*           FFFF   = LAST FUNCTION CODE ISSUED  TO  THE  CONTROLLER  IN 
*                    OCTAL. 
*           F---F  = VERBAL DESCRIPTION OF LAST FUNCTION EXECUTED.
*           GGGGB  = GENERAL STATUS WORD (GGGG) IN OCTAL (B). 
*           LXXX   = LINE NUMBER ON WHICH ERROR OCCURRED. 
*           M---M  = VERBAL DESCRIPTION OF THE ERROR CODE.
*           PSFG   = PRESERVICE FORECAST GROUP. 
*           S---M  = STATUS ANALYSIS MESSAGE FOR THE GENERAL STATUS.
*           SSSSB  = SEED NUMBER  (SSSS)  IN  OCTAL  (B)  USED  AS  THE 
*                    STARTER FOR THE RANDOM NUMBER GENERATOR IN IN THIS 
*                    MODULE.  ALL ZEROS INDICATES THAT THE  NUMBER  HAS 
*                    BEEN INITIALIZED BY THE MODULE YET.
*           WWWWB  = WORDS TRANSFERRED (WWWW) DURING LAST DATA TRANSFER 
*                    IN OCTAL (B).
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY FEP TO REPORT  ERRORS 
*         TO  THE  USER WHEN THE GENERAL STATUS IS NONZERO AND RECOVERY 
*         HAS BEEN ATTEMPTED. 
* 
*           00    FEP = FMD/ESM PATH TEST 
*           01    FEPNN - MODULE TITLE
*           02    PRESERVICE FORECAST GROUP PSFG
*           03
*           04    FEP ABORTED ON C--------------------C COMMAND 
*           05    LAST FUNCTION = FFFF (F-------------------F)
*           06     FEPNN  EXXXX LXXX  M------------------M
*           07    WT=WWWWB  RETRIES=RRB  ERRORS=EEEED  SEED=SSSSB 
*           10    CYL=CCCCB TRK=TTB SEC=SSB  - R-------------------M
*           11
*           12                     WORD    DETAILED STATUS (OCTAL)
*           13                       1     DDDD DDDD DDDD DDDD DDDD 
*           14    FIRST GENERAL      6     DDDD DDDD DDDD DDDD DDDD 
*           15    STATUS = GGGGB    11D    DDDD DDDD DDDD DDDD DDDD 
*           16                      16D    DDDD DDDD DDDD DDDD DDDD 
*           17
*           20                       1     DDDD DDDD DDDD DDDD DDDD 
*           21    LAST GENERAL       6     DDDD DDDD DDDD DDDD DDDD 
*           22    STATUS = GGGGB    11D    DDDD DDDD DDDD DDDD DDDD 
*           23                      16D    DDDD DDDD DDDD DDDD DDDD 
*           24
*           25    S------------------------M. 
* 
* 
*           WHERE-
*           NN     = MODULE NUMBER. 
*           RRB    = RETRY COUNT (RR) IN OCTAL (B). 
*           SSB    = SECTOR NUMBER (SS) IN OCTAL (B). 
*           TTB    = TRACK NUMBER (TT) IN OCTAL (B).
*           CCCCB  = CYLINDER NUMBER (CCCC) IN OCTAL (B). 
*           C---C  = COMMAND ON WHICH THE ABORT OCCURRED. 
*           DDDD   = DETAILED STATUS WORDS IN OCTAL.
*           EEEED  = NUMBER OF ERRORS (EEEE) DETECTED BY THIS MODULE IN 
*                    DECIMAL (D). 
*           EXXXX  = PRODUCT OVERLAY OR MODULE ERROR CODE.
*           FFFF   = LAST FUNCTION CODE ISSUED  TO  THE  CONTROLLER  IN 
*                    OCTAL. 
*           F---F  = VERBAL DESCRIPTION OF LAST FUNCTION EXECUTED.
*           GGGGB  = GENERAL STATUS WORD (GGGG) IN OCTAL (B). 
*           LXXX   = LINE NUMBER ON WHICH ERROR OCCURRED. 
*           M---M  = VERBAL DESCRIPTION OF THE ERROR CODE.
*           PSFG   = PRESERVICE FORECAST GROUP. 
*           R---M  = SUCCESSFUL OR UNSUCCESSFUL RECOVERY MESSAGE. 
*           S---M  = STATUS ANALYSIS MESSAGE FOR THE GENERAL STATUS.
*           SSSSB  = SEED NUMBER  (SSSS)  IN  OCTAL  (B)  USED  AS  THE 
*                    STARTER FOR THE RANDOM NUMBER GENERATOR IN IN THIS 
*                    MODULE.  ALL ZEROS INDICATES THAT THE  NUMBER  HAS 
*                    BEEN INITIALIZED BY THE MODULE YET.
*           WWWWB  = WORDS TRANSFERRED (WWWW) DURING LAST DATA TRANSFER 
*                    IN OCTAL (B).
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY FEP TO REPORT  ERRORS 
*         TO THE USER WHEN THE GENERAL STATUS IS EQUAL TO ZERO. 
* 
*           00    FEP = FMD/ESM PATH TEST 
*           01    FEPNN - MODULE TITLE
*           02    PRESERVICE FORECAST GROUP PSFG
*           03
*           04    FEP ABORTED ON C--------------------C COMMAND 
*           05    LAST FUNCTION = FFFF (F-------------------F)
*           06     FEPNN  EXXXX LXXX  M------------------M
*           07    WT=WWWWB  RETRIES=RRB  ERRORS=EEEED  SEED=SSSSB 
*           10    CYL=CCCCB TRK=TTB SEC=SSB 
* 
* 
*           WHERE-
*           NN     = MODULE NUMBER. 
*           RRB    = RETRY COUNT (RR) IN OCTAL (B). 
*           SSB    = SECTOR NUMBER (SS) IN OCTAL (B). 
*           TTB    = TRACK NUMBER (TT) IN OCTAL (B).
*           CCCCB  = CYLINDER NUMBER (CCCC) IN OCTAL (B). 
*           C---C  = COMMAND ON WHICH THE ABORT OCCURRED. 
*           EEEED  = NUMBER OF ERRORS (EEEE) DETECTED BY THIS MODULE IN 
*                    DECIMAL (D). 
*           EXXXX  = PRODUCT OVERLAY OR MODULE ERROR CODE.
*           FFFF   = LAST FUNCTION CODE ISSUED  TO  THE  CONTROLLER  IN 
*                    OCTAL. 
*           F---F  = VERBAL DESCRIPTION OF LAST FUNCTION EXECUTED.
*           LXXX   = LINE NUMBER ON WHICH ERROR OCCURRED. 
*           M---M  = VERBAL DESCRIPTION OF THE ERROR CODE.
*           PSFG   = PRESERVICE FORECAST GROUP. 
*           SSSSB  = SEED NUMBER  (SSSS)  IN  OCTAL  (B)  USED  AS  THE 
*                    STARTER FOR THE RANDOM NUMBER GENERATOR IN IN THIS 
*                    MODULE.  ALL ZEROS INDICATES THAT THE  NUMBER  HAS 
*                    BEEN INITIALIZED BY THE MODULE YET.
*           WWWWB  = WORDS TRANSFERRED (WWWW) DURING LAST DATA TRANSFER 
*                    IN OCTAL (B).
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY FEP TO REPORT  ERRORS 
*         TO  THE  USER  WHEN AFTER REPORTING AN ERROR TO THE USER, THE 
*         CAUSE OF  THE  ERROR  INDICATED  THAT  A  RESET  COMMAND  WAS 
*         REQUIRED  TO CORRECT THE PROBLEM AND THE RESET COMMAND FAILED 
*         TO CORRECT THE PROBLEM. 
* 
*           00    FEP = FMD/ESM PATH TEST 
*           01    FEPNN - MODULE TITLE
*           02    PRESERVICE FORECAST GROUP PSFG
*           03
*           04    FEP ABORTED ON C--------------------C COMMAND 
*           05    LAST FUNCTION = FFFFB 
*           06     FEPNNN EXXXX LXXX  M------------------M
*           07    WT=WWWWB  RETRIES=RRB  ERRORS=EEEED  SEED=SSSSB 
*           10
*           11    POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM
* 
* 
*           WHERE-
*           NNN    = MODULE NUMBER. 
*           RRB    = RETRY COUNT (RR) IN OCTAL (B). 
*           SSB    = SECTOR NUMBER (SS) IN OCTAL (B). 
*           TTB    = TRACK NUMBER (TT) IN OCTAL (B).
*           CCCCB  = CYLINDER NUMBER (CCCC) IN OCTAL (B). 
*           C---C  = COMMAND ON WHICH THE ABORT OCCURRED. 
*           EEEED  = NUMBER OF ERRORS (EEEE) DETECTED BY THIS MODULE IN 
*                    DECIMAL (D). 
*           EXXXX  = PRODUCT OVERLAY OR MODULE ERROR CODE.
*           FFFFB  = LAST FUNCTION CODE ISSUED  TO  THE  CONTROLLER  IN 
*                    OCTAL (B). 
*           LXXX   = LINE NUMBER ON WHICH ERROR OCCURRED. 
*           M---M  = VERBAL DESCRIPTION OF THE ERROR CODE.
*           PSFG   = PRESERVICE FORECAST GROUP. 
*           R---M  = SUCCESSFUL OR UNSUCCESSFUL RECOVERY MESSAGE. 
*           SSSSB  = SEED NUMBER  (SSSS)  IN  OCTAL  (B)  USED  AS  THE 
*                    STARTER FOR THE RANDOM NUMBER GENERATOR IN IN THIS 
*                    MODULE.  ALL ZEROS INDICATES THAT THE  NUMBER  HAS 
*                    BEEN INITIALIZED BY THE MODULE YET.
*           WWWWB  = WORDS TRANSFERRED (WWWW) DURING LAST DATA TRANSFER 
*                    IN OCTAL (B).
* 
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS USED BY FEP TO REPORT DATA 
*         ERRORS TO THE USER WHEN DATA ERRORS HAVE BEEN DETECTED. 
* 
*           00    FEP = FMD/ESM PATH TEST 
*           01    FEPNN - MODULE TITLE
*           02    PRESERVICE FORECAST GROUP PSFG
*           03
*           04    FEP ABORTED ON C--------------------C COMMAND 
*           05    LAST FUNCTION = FFFF (F-------------------F)
*           06     FEPNN  EXXXX LXXX  M------------------M
*           07    WT=WWWWB  RETRIES=RRB  ERRORS=EEEED  SEED=SSSSB 
*           10    CYL=CCCCB TRK=TTB SEC=SSB 
*           11
*           12    DATA ERROR - WDATAB  EDATAB  ADATAB  DDATAB 
*           13    DATA ERROR - WDATAB  EDATAB  ADATAB  DDATAB 
*           14    DATA ERROR - WDATAB  EDATAB  ADATAB  DDATAB 
*           15    DATA ERROR - WDATAB  EDATAB  ADATAB  DDATAB 
* 
* 
*           WHERE-
*           NN     = MODULE NUMBER. 
*           RRB    = RETRY COUNT (RR) IN OCTAL (B). 
*           SSB    = SECTOR NUMBER (SS) IN OCTAL (B). 
*           TTB    = TRACK NUMBER (TT) IN OCTAL (B).
*           ADATAB = THE ACTUAL (A) DATA WORD (DATA) IN OCTAL (B).
*           CCCCB  = CYLINDER NUMBER (CCCC) IN OCTAL (B). 
*           C---C  = COMMAND ON WHICH THE ABORT OCCURRED. 
*           DDATAB = THE DIFFERENCE (D) IN THE  DATA  WORDS  (DATA)  IN 
*                    OCTAL (B). 
*           EDATAB = THE EXPECTED (E) DATA WORD (DATA) IN OCTAL (B).
*           EEEED  = NUMBER OF ERRORS (EEEE) DETECTED BY THIS MODULE IN 
*                    DECIMAL (D). 
*           EXXXX  = PRODUCT OVERLAY OR MODULE ERROR CODE.
*           FFFF   = LAST FUNCTION CODE ISSUED  TO  THE  CONTROLLER  IN 
*                    OCTAL. 
*           F---F  = VERBAL DESCRIPTION OF LAST FUNCTION EXECUTED.
*           LXXX   = LINE NUMBER ON WHICH ERROR OCCURRED. 
*           M---M  = VERBAL DESCRIPTION OF THE ERROR CODE.
*           PSFG   = PRESERVICE FORECAST GROUP. 
*           SSSSB  = SEED NUMBER  (SSSS)  IN  OCTAL  (B)  USED  AS  THE 
*                    STARTER FOR THE RANDOM NUMBER GENERATOR IN IN THIS 
*                    MODULE.  ALL ZEROS INDICATES THAT THE  NUMBER  HAS 
*                    BEEN INITIALIZED BY THE MODULE YET.
*           WDATAB = THE NUMBER OF THE WORD (W) IN THE DATA  BUFFER  IN 
*                    WHICH  THE DATA ERROR (DATA) WAS DETECTED IN OCTAL 
*                    (B). 
*           WWWWB  = WORDS TRANSFERRED (WWWW) DURING LAST DATA TRANSFER 
*                    IN OCTAL (B).
* 
* 
***       ERROR CODES 
**
*         ERROR CODES 
*         ----------- 
* 
*         MODULE  ERROR     ERROR 
*         NUMBER  CODE   DESCRIPTION
*         ------  -----  -----------
* 
*         FEP01   E0001  LXXX  CNTR DIAG.  W/R COMPARE ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA ERROR WAS  DETECTED  IN  THE  DATA 
*                               READ   FROM   THE  7155-401  CONTROLLER 
*                               DURING  A  DIAGNOSTIC  WRITE/DIAGNOSTIC 
*                               READ SEQUENCE.
* 
*         FEP03   E0003  LXXX  GEN.  EXT.  STATUS COMPARE ERROR 
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               STATUS COMPARE ERROR  WAS  DETECTED  IN 
*                               THE  GENERAL EXTENDED STATUS WORDS READ 
*                               FROM THE 7155-401 CONTROLLER. 
* 
*         FEP05   E0005  LXXX  ESM LSP STATUS COMPARE ERROR 
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               STATUS  COMPARE  ERROR  WAS DETECTED IN 
*                               THE  LOW  SPEED  STATUS  WORD  AFTER  A 
*                               MASTER CLEAR  WAS  ISSUED  TO  THE  LOW 
*                               SPEED PORT. 
* 
*         FEP07   E0007  LXXX  LSP MAINT.  W/R COMPARE ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA COMPARE ERROR WAS DETECTED IN  THE 
*                               MAINTENANCE READ DATA READ FROM THE LOW 
*                               SPEED   PORT   DURING   A   MAINTENANCE 
*                               WRITE/MAINTENANCE   READ   (LSP   ECHO) 
*                               SEQUENCE. 
* 
*         FEP09   E0011  LXXX  CPU-ESM W/R COMPARE ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA  COMPARE ERROR WAS DETECTED IN THE 
*                               DATA READ FROM ESM DURING A SYSWR/SYSRD 
*                               ESM SEQUENCE. 
* 
*         FEP11   E0013  LXXX  CNTR/ESM DIAGWR COMPARE ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA COMPARE ERROR WAS DETECTED IN  THE 
*                               DATA WRITTEN INTO ESM FROM THE 7155-401 
*                               CONTROLLER THROUGH THE  LSP  USING  THE 
*                               ESM DIAGNOSTIC WRITE COMMAND.  THE DATA 
*                               WAS READ USING THE SYSRD ESM COMMAND. 
* 
*         FEP13   E0015  LXXX  CNTR/ESM DIAGRD COMPARE ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA  COMPARE ERROR WAS DETECTED IN THE 
*                               DATA READ FROM ESM THROUGH THE LSP  AND 
*                               7155-401   CONTROLLER   USING  THE  ESM 
*                               DIAGNOSTIC READ COMMAND.  THE DATA  WAS 
*                               WRITTEN   INTO   ESM   USING   THE  ESM 
*                               DIAGNOSTIC WRITE COMMAND. 
* 
*         FEP15   E0017  LXXX  ONE SECTOR READ COMPARE ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA  COMPARE ERROR WAS DETECTED IN THE 
*                               ESM DATA WHICH WAS READ FROM THE 885-4X 
*                               DRIVE INTO ESM DURING A ONE SECTOR READ 
*                               TO ESM SEQUENCE.  THE DATA WAS  WRITTEN 
*                               INTO THE SECTOR ON THE DISK FROM THE PP 
*                               USING A ONE SECTOR PP WRITE COMMAND.
* 
*         FEP17   E0021  LXXX  ONE SECTOR WRITE COMPARE ERROR 
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA  COMPARE ERROR WAS DETECTED IN THE 
*                               DATA WRITTEN ON THE DISK DURING  A  ONE 
*                               SECTOR  ESM  WRITE  SEQUENCE.  THE DATA 
*                               WAS READ FROM THE DISK USING ONE SECTOR 
*                               ESM READ COMMAND. 
* 
*         FEP19   E0023  LXXX  ONE SECTOR WRITE VERIFY ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               WRITE VERIFY ERROR WAS DETECTED  DURING 
*                               A  ONE  SECTOR  WRITE  VERIFY  FROM ESM 
*                               SEQUENCE.  THE DATA WAS WRITTEN ON  THE 
*                               DISK  USING A ONE SECTOR WRITE FROM ESM 
*                               COMMAND.
* 
*         FEP21   E0025  LXXX  VERIFY ERROR NOT DETECTED
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               WRITE  VERIFY  ERROR  WAS  NOT DETECTED 
*                               DURING A ONE SECTOR WRITE  VERIFY  FROM 
*                               ESM  SEQUENCE  WHEN  A VERIFY ERROR WAS 
*                               FORCED.  THE DATA WAS  WRITTEN  ON  THE 
*                               DISK  USING A ONE SECTOR WRITE FROM THE 
*                               PP COMMAND. 
* 
*         FEP23   E0027  LXXX  ONE TRACK READ COMPARE ERROR 
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA  COMPARE ERROR WAS DETECTED IN THE 
*                               ESM DATA WHICH WAS READ FROM THE 885-4X 
*                               DRIVE  INTO  ESM  FOR  THE  LAST SECTOR 
*                               DURING A READ OF  TEN  DECIMAL  SECTORS 
*                               (ONE  TRACK) TO ESM SEQUENCE.  THE DATA 
*                               WAS WRITTEN INTO THE SECTOR ON THE DISK 
*                               FROM THE PP USING A ONE SECTOR PP WRITE 
*                               COMMAND.
* 
*         FEP25   E0031  LXXX  ONE TRACK WRITE VERIFY ERROR 
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               WRITE  VERIFY ERROR WAS DETECTED DURING 
*                               A TEN DECIMAL SECTOR (ONE TRACK)  WRITE 
*                               VERIFY FROM ESM SEQUENCE.  THE DATA WAS 
*                               WRITTEN ON THE DISK USING A ONE  SECTOR 
*                               PP WRITE COMMAND. 
* 
*         FEP27   E0033  LXXX  ONE TRACK WRITE COMPARE ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA COMPARE ERROR WAS DETECTED IN  THE 
*                               DATA  WRITTEN  ON THE DISK DURING A TEN 
*                               DECIMAL SECTOR (ONE  TRACK)  ESM  WRITE 
*                               SEQUENCE.   THE  DATA WAS CHECKED USING 
*                               THE WRITE VERIFY FROM ESM COMMAND.
* 
*         FEP29   E0035  LXXX  ONE CYL.  READ COMPARE ERROR 
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA  COMPARE ERROR WAS DETECTED IN THE 
*                               ESM DATA WHICH WAS READ FROM THE 885-4X 
*                               DRIVE  INTO  ESM  FOR  THE  LAST SECTOR 
*                               DURING A  READ  OF  THREE  HUNDRED  AND 
*                               TWENTY  DECIMAL  SECTORS (ONE CYLINDER) 
*                               TO ESM SEQUENCE.  THE DATA WAS  WRITTEN 
*                               INTO THE SECTOR ON THE DISK FROM THE PP 
*                               USING A ONE SECTOR PP WRITE COMMAND.
* 
*         FEP31   E0037  LXXX  ONE CYLINDER VERIFY ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               WRITE  VERIFY ERROR WAS DETECTED DURING 
*                               A  THREE  HUNDRED  AND  TWENTY  DECIMAL 
*                               SECTOR (ONE CYLINDER) WRITE VERIFY FROM 
*                               ESM SEQUENCE.  THE DATA WAS WRITTEN  ON 
*                               THE  DISK  USING  A ONE SECTOR PP WRITE 
*                               COMMAND.
* 
*         FEP33   E0041  LXXX  ONE CYL.  WRITE COMPARE ERROR
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES   THAT   A 
*                               DATA  COMPARE ERROR WAS DETECTED IN THE 
*                               DATA WRITTEN ON THE DISK DURING  A  ONE 
*                               HUNDRED  AND TWENTY DECIMAL SECTOR (ONE 
*                               CYLINDER) ESM WRITE SEQUENCE.  THE DATA 
*                               WAS CHECKED USING THE WRITE VERIFY FROM 
*                               ESM COMMAND.
* 
*         FEPNN   E0100  LXXX  SYSRD STATUS ERROR (STATUS=SS) 
*                        NN   = FEP MODULE NUMBER.
*                        SS   = SYSRD ESM STATUS. 
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES       THAT 
*                               STATUS  FROM  A ESM SYSRD WAS NOT EQUAL 
*                               TO ZERO AFTER COMPLETION OF THE  SYSRD. 
*                               THE  STATUS FROM THE SYSRD IS DISPLAYED 
*                               IN THE ERROR MESSAGE.  A  STATUS  OF  1 
*                               INDICATES   THAT  A  END-OF-RECORD  WAS 
*                               ENCOUNTERED, A STATUS  OF  2  INDICATES 
*                               THAT A END-OF-FILE WAS ENCOUNTERED, AND 
*                               A STATUS OF 3 INDICATES THAT A  ECS/ESM 
*                               SYSTRANSFER ERROR WAS DETECTED. 
* 
*         FEPNNN  E0102  LXXX  CONTROLLER RESPONSE ERROR
*                        NNN  = FEP MODULE NUMBER.
*                        XXX  = LINE NUMBER ON WHICH ERROR OCCURRED.
*                               THIS ERROR MESSAGE INDICATES THAT AFTER 
*                               REPORTING  AN ERROR ASSOCIATED WITH THE 
*                               RES COMMAND, THE CONTROLLER  FAILED  TO 
*                               RESPOND   CORRECTLY   TO  A  ZERO  WORD 
*                               AUTOLOAD  SEQUENCE.   THE  FAILURE   TO 
*                               RESPOND  CORRECTLY  TO  THE  ZERO  WORD 
*                               AUTOLOAD SEQUENCE INDICATES A  7155-401 
*                               CONTROLLER   OR   MA722-A   CONTROLWARE 
*                               PROBLEM.  AFTER REPORTING  THIS  ERROR, 
*                               EXECUTION  OF  THIS  MODULE AND THE FEP 
*                               TEST WILL BE TERMINATED.
* 
* 
* 
***       MODULE DESCRIPTIONS 
**
*         MODULE DESCRIPTIONS 
*         ------------------- 
* 
   MODULE FEP01,DEMA3(14),LOCK
***       FEP01 - CONTROLLER DIAG. W/R
**
*         FEP01 - CONTROLLER DIAG. W/R
*         ----------------------------
* 
*         PURPOSE-
*         FEP01 VERIFIES THAT DATA  CAN  BE  WRITTEN  INTO  THE  BUFFER 
*         MEMORY  OF  THE 7155-401 CONTROLLER AND THEN READ BACK TO THE 
*         PP CORRECTLY.  ONLY THE LAST 500 OCTAL WORDS READ  BACK  FROM 
*         THE BUFFER MEMORY WILL BE CHECKED FOR DATA ERRORS.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A 500 OCTAL WORD DATA BUFFER OF THE DATA  BUFFER 
*             TO  BE  TESTED  IN  THE  OUTPUT BUFFER.  THE INITIAL DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  RESERVE THE 7155-401 CONTROLLER.
*         5.  DIAGNOSTIC WRITE THE DATA PATTERN IN  THE  OUTPUT  BUFFER 
*             INTO THE BUFFER MEMORY IN THE 7155-401 CONTROLLER.
*         6.  DIAGNOSTIC READ  THE  BUFFER  MEMORY  IN   THE   7155-401 
*             CONTROLLER. 
*         7.  COMPARE THE LAST 500 OCTAL  WORDS  OF  THE  DATA  PATTERN 
*             WRITTEN  INTO  THE 7155-401 CONTROLLER WITH THE DATA READ 
*             FROM THE CONTROLLER AND REPORT ANY DATA ERRORS. 
*         8.  IF REPEAT  CONDITION  IS SELECTED, REPEAT STEPS 3 THROUGH 
*             7.
*         9.  REPEAT STEPS  2  THROUGH  8  FOR  THE  DATA PATTERNS 7777 
*             OCTAL, 5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM  DATA 
*             PATTERNS. 
*         10. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 9. 
*         11. IF  ANY  ERRORS  WERE  DETECTED  DURING  EXECUTION OF THE 
*             MODULE, SEND A MESSAGE  TO  DAYFILE,  DISPLAY  AND  PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         12. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM   DATA   SEED  SAVED  FOR  REPEATING  THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA  SEED SAVED FOR REPEATING THE MODULE. 
*         B7  = CYLINDER NUMBER (INVALID CYLINDER FLAG).
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-477) - DIAGNOSTIC READ DATA BUFFER.
*         OB(0-477) - DIAGNOSTIC WRITE DATA BUFFER. 
* 
1  FORMAT FEP01 CONTROLLER DIAG. W/R
2  FORMAT FEP01 ERROR(S) = *DECD
3  FORMAT FEP01 EC=*DECD, LC=*DECD
4  FORMAT FEP01 DIAGWR/DIAGRD LC=*DECD
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE DGRD=1, DGWR=3, RESC=13, CMPR=34
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 1                        *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE DIAG. WRITE/READ
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE DIAG. WRITE/READ
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE DIAG. WRITE/READ
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE DIAG. WRITE/READ
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE DIAG. WRITE/READ
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE DIAG. WRITE/READ
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------DIAGWR/DIAGRD SUBROUTINE PROCESS. 
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B8 = RESC
   RES CONTROLLER, ABT 76        *RESERVE 7155 CONTROLLER 
   B8 = DGWR
   DIAGWR, ABT 76                *DIAGNOSTIC WRITE
   B8 = DGRD
   DIAGRD, ABT 76                *DIAGNOSTIC READ 
   B8 = B8.LS.6+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
62 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 ERROR 00/1001                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 62    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 62          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP01 CONTROLLER DIAG. W/R
   MODULE FEP03,DEMA3(14),LOCK
***       FEP03 - GEN. EXTENDED STATUS
**
*         FEP03 - GEN. EXTENDED STATUS
*         ----------------------------
* 
*         PURPOSE-
*         FEP03 VERIFIES THAT THE  LAST  FOUR  WORDS  OF  THE  EXTENDED 
*         GENERAL  DETAILED  STATUS  REFLECT THE CONTENTS OF FIRST FOUR 
*         WORDS IN THE BUFFER MEMORY IN THE 7155-401 CONTROLLER.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE  A  4 WORD DATA BUFFER OF THE DATA PATTERN TO BE 
*             TESTED IN THE OUTPUT BUFFER.  THE INITIAL DATA PATTERN TO 
*             BE TESTED WILL BE ALL ZEROS.
*         3.  DISPLAY THE MODULE RUNNING MESSAGE  IF  REPEAT  CONDITION 
*             AND   REPEAT   MODULE   ARE   DISABLED,   OR  THE  REPEAT 
*             CONDITION/MODULE RUNNING MESSAGE IF REPEAT  CONDITION  OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  RESERVE THE 7155-401 CONTROLLER.
*         5.  DIAGNOSTIC WRITE  THE  DATA  PATTERN IN THE OUTPUT BUFFER 
*             INTO THE BUFFER MEMORY IN THE 7155-401 CONTROLLER.
*         6.  READ THE   GENERAL  EXTENDED  STATUS  FROM  THE  7155-401 
*             CONTROLLER. 
*         7.  CHECK THE  LAST  FOUR  WORD  OF  GENERAL  EXTENDED STATUS 
*             INPUTTED FROM THE 7155-401  CONTROLLER  AND  VERIFY  THAT 
*             THEY ARE CORRECT. 
*         8.  IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  3  THROUGH 
*             7.
*         9.  REPEAT STEPS 2 THROUGH  8  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         10. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 9. 
*         11. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         12. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B7  = CYLINDER NUMBER (INVALID CYLINDER FLAG).
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-3) - ACTUAL GENERAL EXTENDED STATUS. 
*         OB(0-3) - GENERAL EXTENDED STATUS DATA BUFFER.
* 
1  FORMAT FEP03 GEN. EXTENDED STATUS
2  FORMAT FEP03 ERROR(S) = *DECD
3  FORMAT FEP03 EC=*DECD, LC=*DECD
4  FORMAT FEP03 EXT. STATUS LC=*DECD
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE DGWR=3, RESC=13, STATGE=24, CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 3                        *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 4                        *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *READ AND CHECK EXT. STATUS
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *READ AND CHECK EXT. STATUS
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *READ AND CHECK EXT. STATUS
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *READ AND CHECK EXT. STATUS
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *READ AND CHECK EXT. STATUS
   B10 = 5                       *SUBTEST 5 
   B2 = OB(3) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *READ AND CHECK EXT. STATUS
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------EXTENDED STATUS SUBROUTINE PROCESS. 
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B8 = RESC
   RES CONTROLLER, ABT 76        *RESERVE 7155 CONTROLLER 
   B8 = DGWR
   DIAGWR, ABT 76                *DIAGNOSTIC WRITE
   B8 = STATGE
   STATUS GENERAL EXTENDED, ABT 76  *GENERAL EXTENDED STATUS
   COPY SB(1) TO IB FOR 4        *MOVE STATUS TO IB 
   WC = 4                        *SET STATUS WORD COUNT 
   B8 = B8.LS.6+CMPR
   COMPARE OB TO IB FOR WC, ABT 72  *CHECK STATUS 
62 IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 WC = 4                        *SET STATUS WORD COUNT 
   ERROR 00/2003                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 62    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 62          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP03 GEN EXTENDED STATUS 
   MODULE FEP05,DEMA3(14),LOCK
***       FEP05 - LSP STATUS
**
*         FEP05 - LSP STATUS
*         ------------------
* 
*         PURPOSE-
*         FEP05 VERIFIES THAT THE STATUS OF THE LOW SPEED PORT (LSP) IN 
*         EXTENDED SEMICONDUCTOR MEMORY (ESM) CAN BE READ AND THAT  THE 
*         CONTENTS OF THE STATUS WORD IS CORRECT. 
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  DISPLAY THE MODULE RUNNING MESSAGE  IF  REPEAT  CONDITION 
*             AND   REPEAT   MODULE   ARE   DISABLED,   OR  THE  REPEAT 
*             CONDITION/MODULE RUNNING MESSAGE IF REPEAT  CONDITION  OR 
*             REPEAT MODULE IS ENABLED. 
*         3.  RESERVE THE 7155-401 CONTROLLER.
*         4.  MASTER CLEAR THE LOW SPEED PORT.
*         5.  READ THE STATUS OF THE LOW SPEED PORT.
*         6.  CHECK THE  LOW  SPEED  PORT  STATUS  WORD  AND REPORT ANY 
*             ERRORS. 
*         7.  IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  2  THROUGH 
*             6.
*         8.  REPEAT STEPS 2 THROUGH 7 TEN TIMES. 
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 8. 
*         10. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         11. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B7  = CYLINDER NUMBER (INVALID CYLINDER FLAG).
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         OB(0) - EXPECTED LOW SPEED PORT STATUS. 
*         IB(0) - ACTUAL LOW SPEED PORT STATUS. 
* 
1  FORMAT FEP05 LSP STATUS
2  FORMAT FEP05 ERROR(S) = *DECD
3  FORMAT FEP05 EC=*DECD, LC=*DECD
4  FORMAT FEP05 LSP STATUS LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RESC=13, MCLSP=16, STATLSP=22, CMPR=34
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 5                        *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B8 = RESC
   RES CONTROLLER, ABT 76        *RESERVE 7155 CONTROLLER 
   B8 = MCLSP 
   RESET LSP, ABT 76             *MASTER CLEAR LSP
   B8 = STATLSP 
   STATUS ESM LSP, ABT 76        *READ LSP STATUS 
   IB = SB(19D)                  *MOVE STATUS WORD TO IB
   WC = 1                        *STATUS WORD COUNT 
   B8 = B8.LS.6+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK LSP STATUS 
40 IF(ES.AND.RC.EQ.0) GOTO 44    *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 34                       *REPEAT THE CONDITION
44 GOTO 34 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 WC = 1                        *STATUS WORD COUNT 
   ERROR 04/2005                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 40    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 40          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP05 LSP STATUS
   MODULE FEP07,DEMA3(14),LOCK
***       FEP07 - LSP ECHO CHECK
**
*         FEP07 - LSP ECHO CHECK
*         ----------------------
* 
*         PURPOSE-
*         FEP07  VERIFIES  DATA  CAN BE WRITTEN INTO THE LOW SPEED PORT 
*         AND THEN READ BACK CORRECTLY USING THE MAINTENANCE WRITE  AND 
*         MAINTENANCE READ FUNCTIONS IN THE LOW SPEED PORT. 
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A 120 OCTAL WORD DATA BUFFER OF THE DATA  BUFFER 
*             TO  BE  TESTED  IN  THE  OUTPUT BUFFER.  THE INITIAL DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  RESERVE THE 7155-401 CONTROLLER.
*         5.  MASTER CLEAR THE LOW SPEED PORT.
*         6.  USING THE   MAINTENANCE   WRITE   AND   MAINTENANCE  READ 
*             FUNCTIONS IN THE LOW SPEED PORT, LOOP  THE  DATA  IN  THE 
*             OUTPUT BUFFER THROUGH THE LOW SPEED PORT. 
*         7.  CHECK THE DATA READ FROM THE LOW SPEED  PORT  AND  REPORT 
*             ANY DATA ERRORS.
*         8.  IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  3  THROUGH 
*             7.
*         9.  REPEAT STEPS 2 THROUGH  8  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         10. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 9. 
*         11. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         12. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B7  = CYLINDER NUMBER (INVALID CYLINDER FLAG).
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-177) - MAINTENANCE MODE READ DATA BUFFER.
*         OB(0-117) - MAINTENANCE MODE WRITE DATA BUFFER. 
* 
1  FORMAT FEP07 LSP ECHO CHECK
2  FORMAT FEP07 ERROR(S) = *DECD
3  FORMAT FEP07 EC=*DECD, LC=*DECD
4  FORMAT FEP07 LSP ECHO LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE LSPECHO=5, RESC=13, MCLSP=16, CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 7                        *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 120                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE LSP ECHO CHECK
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE LSP ECHO CHECK
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE LSP ECHO CHECK
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE LSP ECHO CHECK
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE LSP ECHO CHECK
   B10 = 5                       *SUBTEST 5 
   B2 = OB(117) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE LSP ECHO CHECK
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------LSP ECHO CHECK SUBROUTINE PROCESS.
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B8 = RESC
   RES CONTROLLER, ABT 76        *RESERVE 7155 CONTROLLER 
   B8 = MCLSP 
   RESET LSP, ABT 76             *MASTER CLEAR LSP
   B8 = LSPECHO 
   LSP ECHO, ABT 76              *ECHO LSP DATA 
   B8 = B8.LS.6+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
62 WC = 120                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 WC = 120                      *BUFFER WORD COUNT 
   ERROR 04/2007                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 62    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 62          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP07 LSP ECHO CHECK
   MODULE FEP09,DEMA3(14),LOCK
***       FEP09 - ESM SYSWR/SYSRD TEST
**
*         FEP09 - ESM SYSWR/SYSRD TEST
*         ----------------------------
* 
*         PURPOSE-
*         FEP09  VERIFIES  THAT DATA CAN BE WRITTEN INTO THE ESM MEMORY 
*         AND THEN READ BACK FROM THE ESM MEMORY CORRECTLY.  ONE SECTOR 
*         (2000 OCTAL WORDS) WILL BE CHECKED IN THE ESM MEMORY. 
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A 500 OCTAL WORD DATA BUFFER OF THE DATA  BUFFER 
*             TO  BE  TESTED  IN  THE  OUTPUT BUFFER.  THE INITIAL DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  REWIND THE ESM SCRATCH FILE.
*         5.  WRITE THE DATA PATTERN INTO ESM USING THE SYSWR  COMMAND. 
*         6.  REWIND THE ESM SCRATCH FILE.
*         7.  READ A 500 OCTAL BLOCK OF DATA FROM THE SCRATCH  FILE  IN 
*             ESM.
*         8.  CHECK THE DATA READ FROM ESM AND REPORT ANY DATA  ERRORS. 
*         9.  REPEAT STEPS  7 AND 8 UNTIL FOUR 500 OCTAL WORD BLOCKS OF 
*             DATA HAVE BEEN READ AND CHECKED.
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 3 THROUGH 
*             9.
*         11. REPEAT  STEPS  2  THROUGH  10  FOR THE DATA PATTERNS 7777 
*             OCTAL, 5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM  DATA 
*             PATTERNS. 
*         12. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH  11. 
*         13. IF  ANY  ERRORS  WERE  DETECTED  DURING  EXECUTION OF THE 
*             MODULE, SEND A MESSAGE  TO  DAYFILE,  DISPLAY  AND  PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         14. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM   DATA   SEED  SAVED  FOR  REPEATING  THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA  SEED SAVED FOR REPEATING THE MODULE. 
*         B7  = CYLINDER NUMBER (INVALID CYLINDER FLAG).
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         B15 = TEMPORARY STORAGE.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-477) - SYSRD ESM DATA BUFFER.
*         OB(0-477) - SYSWR ESM DATA BUFFER.
* 
1  FORMAT FEP09 SYSWR/SYSRD ESM TEST
2  FORMAT FEP09 ERROR(S) = *DECD
3  FORMAT FEP09 EC=*DECD, LC=*DECD
4  FORMAT FEP09 ESM SYSWR/RD LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE SYSRD=25, CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 9D                       *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE SYSWR/SYSRD ESM 
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE SYSWR/SYSRD ESM 
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE SYSWR/SYSRD ESM 
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE SYSWR/SYSRD ESM 
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE SYSWR/SYSRD ESM 
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE SYSWR/SYSRD ESM 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM SYSWR/SYSRD SUBROUTINE PROCESS. 
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
   B9 = 0                        *INITIALIZE INT. LOOP COUNT
62 SYSWR ESM                     *WRITE 500 WORDS INTO ESM
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
   B9 = 0                        *INITIALIZE INT. LOOP COUNT
64 B8 = SYSRD 
   SYSRD ESM, STATUS TO B15      *READ 500 WORDS FROM ESM 
   IF(B15.NE.0)ERROR 05/0100 GOTO 76  *IF SYSRD ERROR 
   B8 = B8.LS.6+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
   GOTO 64 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
66 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 ERROR 05/1011                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 66    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 66          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP09 SYSWR/SYSRD ESM TEST
   MODULE FEP11,DEMA3(14),LOCK
***       FEP11 - ESM DIAG. WRITE 
**
*         FEP11 - ESM DIAG. WRITE 
*         ----------------------- 
* 
*         PURPOSE-
*         FEP11 VERIFIES THAT DATA CAN BE WRITTEN  INTO  ESM  FROM  THE 
*         DATA  BUFFER IN THE 7155-401 CONTROLLER THROUGH THE LOW SPEED 
*         PORT (LSP) CORRECTLY.  ALL DATA  WRITTEN  INTO  ESM  WILL  BE 
*         CHECKED FOR BEING CORRECT.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A 500 OCTAL WORD DATA BUFFER OF THE DATA PATTERN 
*             TO  BE  TESTED  IN  THE  OUTPUT BUFFER.  THE INITIAL DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  RESERVE THE 7155-401 CONTROLLER.
*         5.  DIAGNOSTIC WRITE THE DATA PATTERN IN  THE  OUTPUT  BUFFER 
*             INTO THE BUFFER MEMORY OF THE 7155-401 CONTROLLER.
*         6.  DIAGNOSTIC WRITE  THE  DATA  PATTERN  IN   THE   7155-401 
*             CONTROLLER  BUFFER  MEMORY  INTO  EXTENDED  SEMICONDUCTOR 
*             MEMORY THROUGH THE LOW SPEED PORT.
*         7.  REWIND THE SCRATCH FILE.
*         8.  READ A 500 OCTAL WORD BLOCK OF DATA FROM THE SCRATCH FILE 
*             IN ESM. 
*         9.  CHECK THE DATA READ FROM ESM AND REPORT ANY DATA  ERRORS. 
*         10. REPEAT  STEPS 8 AND 9 UNTIL FOUR 500 OCTAL WORD BLOCKS OF 
*             DATA HAVE BEEN READ AND CHECKED.
*         11. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 3 THROUGH 
*             10. 
*         12. REPEAT  STEPS  2  THROUGH  11  FOR THE DATA PATTERNS 7777 
*             OCTAL, 5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM  DATA 
*             PATTERNS. 
*         13. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH  12. 
*         13. IF  ANY  ERRORS  WERE  DETECTED  DURING  EXECUTION OF THE 
*             MODULE, SEND A MESSAGE  TO  DAYFILE,  DISPLAY  AND  PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         14. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM   DATA   SEED  SAVED  FOR  REPEATING  THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA  SEED SAVED FOR REPEATING THE MODULE. 
*         B7  = CYLINDER NUMBER (INVALID CYLINDER FLAG).
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         B15 = SYSRD STATUS. 
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-477) - SYSRD DATA BUFFER.
*         OB(0-477) - ESM DIAGNOSTIC WRITE DATA BUFFER. 
* 
1  FORMAT FEP11 ESM DIAG. WRITE 
2  FORMAT FEP11 ERROR(S) = *DECD
3  FORMAT FEP11 EC=*DECD, LC=*DECD
4  FORMAT FEP11 ESM DIAGWR LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE DGWR=3, DGWRE=4, RESC=13, SYSRD=25, CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 11D                      *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM DIAG. WRITE 
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM DIAG. WRITE 
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM DIAG. WRITE 
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM DIAG. WRITE 
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM DIAG. WRITE 
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM DIAG. WRITE 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM DIAGWR SUBROUTINE PROCESS.
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B8 = RESC
   RES CONTROLLER, ABT 76        *RESERVE 7155 CONTROLLER 
   B8 = DGWR
   DIAGWR, ABT 76                *DIAGNOSTIC WRITE
   B8 = DGWRE 
   DIAGWR TO ESM, ABT 76         *DIAGNOSTIC WRITE ESM
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
   B9 = 0                        *INITIALIZE INT. LOOP COUNT
   B8 = B8.LS.6 
62 B8 = B8.AND.7700+SYSRD 
   SYSRD ESM, STATUS TO B15      *READ 500 WORDS FROM ESM 
   IF(B15.NE.0)ERROR 05/0100 GOTO 76  *IF SYSRD ERROR 
   B8 = B8.AND.7700+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 ERROR 04/1013                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 64    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 64          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP11 ESM DIAG. WRITE 
   MODULE FEP13,DEMA3(14),LOCK
***       FEP13 - ESM DIAG. READ
**
*         FEP13 - ESM DIAG. READ
*         ----------------------
* 
*         PURPOSE-
*         FEP13 VERIFIES THAT DATA CAN BE READ FROM ESM THROUGH THE LOW 
*         SPEED   PORT   INTO   THE   BUFFER  MEMORY  IN  THE  7155-401 
*         CONTROLLER.  ALL OF THE DATA READ FROM ESM  WILL  BE  CHECKED 
*         FOR BEING CORRECT.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A 500 OCTAL WORD DATA BUFFER OF THE DATA PATTERN 
*             TO  BE  TESTED  IN  THE  OUTPUT BUFFER.  THE INITIAL DATA 
*             PATTERN WILL BE ALL ZEROS.
*         3.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  RESERVE THE 7155-401 CONTROLLER.
*         5.  DIAGNOSTIC WRITE THE DATA PATTERN INTO THE MEMORY  BUFFER 
*             OF THE 7155-401 CONTROLLER. 
*         6.  DIAGNOSTIC WRITE  THE  DATA  PATTERN  IN   THE   7155-401 
*             CONTROLLER  BUFFER  MEMORY  INTO  EXTENDED  SEMICONDUCTOR 
*             MEMORY. 
*         7.  DIAGNOSTIC READ  THE  DATA  FROM  EXTENDED  SEMICONDUCTOR 
*             MEMORY  INTO  THE   BUFFER   MEMORY   OF   THE   7155-401 
*             CONTROLLER. 
*         8.  DIAGNOSTIC WRITE   THE   DATA  PATTERN  IN  THE  7155-401 
*             CONTROLLER BUFFER MEMORY INTO ESM.
*         9.  REWIND THE SCRATCH FILE.
*         10. READ A 500 OCTAL WORD BLOCK OF DATA FROM THE SCRATCH FILE 
*             IN ESM. 
*         11. CHECK THE DATA READ FROM ESM AND REPORT ANY DATA  ERRORS. 
*         12. REPEAT  STEPS  10 AND 11 UNTIL FOUR 500 OCTAL WORD BLOCKS 
*             OF DATA HAVE BEEN READ AND CHECKED. 
*         13. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 3 THROUGH 
*             12. 
*         14. REPEAT  STEPS  2  THROUGH  13  FOR THE DATA PATTERNS 7777 
*             OCTAL, 5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM  DATA 
*             PATTERNS. 
*         15. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH  14. 
*         16. IF  ANY  ERRORS  WERE  DETECTED  DURING  EXECUTION OF THE 
*             MODULE, SEND A MESSAGE  TO  DAYFILE,  DISPLAY  AND  PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         17. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM   DATA   SEED  SAVED  FOR  REPEATING  THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA  SEED SAVED FOR REPEATING THE MODULE. 
*         B7  = CYLINDER NUMBER (INVALID CYLINDER FLAG).
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         B15 = SYSRD STATUS. 
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-477) - ESM DIAGNOSTIC READ DATA BUFFER.
*         OB(0-477) - ESM DIAGNOSTIC WRITE DATA BUFFER. 
* 
1  FORMAT FEP13 ESM DIAG. READ
2  FORMAT FEP13 ERROR(S) = *DECD
3  FORMAT FEP13 EC=*DECD, LC=*DECD
4  FORMAT FEP13 ESM DIAGRD LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE DGRDE=2, DGWR=3, DGWRE=4, RESC=13, SYSRD=25,
   EQUATE CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 13D                      *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM DIAG. READ
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM DIAG. READ
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM DIAG. READ
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM DIAG. READ
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM DIAG. READ
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM DIAG. READ
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM DIAGRD SUBROUTINE PROCESS.
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B8 = RESC
   RES CONTROLLER, ABT 76        *RESERVE 7155 CONTROLLER 
   B8 = DGWR
   DIAGWR, ABT 76                *DIAGNOSTIC WRITE
   B8 = DGWRE 
   DIAGWR TO ESM, ABT 76         *DIAGNOSTIC WRITE ESM
   B8 = DGRDE 
   DIAGRD FROM ESM, ABT 76       *DIAGNOSTIC READ ESM 
   B8 = DGWRE 
   DIAGWR TO ESM, ABT 76         *DIAGNOSTIC WRITE ESM
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
   B9 = 0                        *INITIALIZE INT. LOOP COUNT
   B8 = B8.LS.6 
62 B8 = B8.AND.7700+SYSRD 
   SYSRD ESM, STATUS TO B15      *READ 500 WORDS FROM ESM 
   IF(B15.NE.0)ERROR 05/0100 GOTO 76  *IF SYSRD ERROR 
   B8 = B8.AND.7700+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 ERROR 04/1015                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 64    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 64          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP13 ESM DIAG. READ
   MODULE FEP15,DEMA3(14),LOCK
***       FEP15 - ESM ONE SECTOR READ 
**
*         FEP15 - ESM ONE SECTOR READ 
*         --------------------------- 
* 
*         PURPOSE-
*         FEP15 VERIFIES THAT ONE SECTOR OF DATA CAN  BE  WRITTEN  INTO 
*         ESM  FROM  THE 885-4X DRIVE CORRECTLY.  ALL DATA WRITTEN INTO 
*         ESM WILL BE CHECKED FOR BEING CORRECT.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  DISPLAY THE MODULE RUNNING MESSAGE  IF  REPEAT  CONDITION 
*             AND   REPEAT   MODULE   ARE   DISABLED,   OR  THE  REPEAT 
*             CONDITION/MODULE RUNNING MESSAGE IF REPEAT  CONDITION  OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         5.  WRITE SECTOR  0, TRACK 0, CYLINDER 1512 OCTAL FROM THE PP 
*             WITH THE DATA IN THE OUTPUT BUFFER. 
*         6.  READ ONE  SECTOR OF DATA TO ESM FROM CYLINDER 1512 OCTAL, 
*             TRACK 0, SECTOR 0.
*         7.  REWIND THE SCRATCH FILE.
*         8.  READ A 500 OCTAL WORD BLOCK OF DATA FROM THE SCRATCH FILE 
*             IN ESM. 
*         9.  CHECK THE DATA READ FROM ESM AND REPORT ANY DATA  ERRORS. 
*         10. REPEAT  STEPS 8 AND 9 UNTIL FOUR 500 OCTAL WORD BLOCKS OF 
*             DATA HAVE BEEN READ AND CHECKED.
*         11. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 3 THROUGH 
*             10. 
*         12. REPEAT  STEPS  2  THROUGH  11  FOR THE DATA PATTERNS 7777 
*             OCTAL, 5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM  DATA 
*             PATTERNS. 
*         13. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH  12. 
*         14. IF  ANY  ERRORS  WERE  DETECTED  DURING  EXECUTION OF THE 
*             MODULE, SEND A MESSAGE  TO  DAYFILE,  DISPLAY  AND  PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         15. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM   DATA   SEED  SAVED  FOR  REPEATING  THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA  SEED SAVED FOR REPEATING THE MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         B15 = SYSRD STATUS. 
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-503) - READ DATA BUFFER. 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP15 ESM ONE SECTOR READ 
2  FORMAT FEP15 ERROR(S) = *DECD
3  FORMAT FEP15 EC=*DECD, LC=*DECD
4  FORMAT FEP15 READ 1 SECTOR LC=*DECD
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RDCSECE=11, RESD=14, WRCSEC=31, SYSRD=25, CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 15D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE SEC. READ 
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE SEC. READ 
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE SEC. READ 
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE SEC. READ 
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM ONE SEC. READ 
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM ONE SEC. READ 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------READ 1 SECTOR SUBROUTINE PROCESS. 
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B4 = 1                        *SECTOR COUNT
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B8 = WRCSEC
   WRITE ONE C SEC AT CYL B7 TRK B6 SEC B5, ABT 76  *WRITE
   B8 = RDCSECE 
   READ TO ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 76 
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
   B9 = 0                        *INITIALIZE INT. LOOP COUNT
   B8 = B8.LS.6 
62 B8 = B8.AND.7700+SYSRD 
   SYSRD ESM, STATUS TO B15      *READ 500 WORDS FROM ESM 
   IF(B15.NE.0)ERROR 05/0100 GOTO 76  *IF SYSRD ERROR 
   B8 = B8.AND.7700+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 ERROR 04/1017                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 64    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 64          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP15 ESM ONE SECTOR READ 
   MODULE FEP17,DEMA3(14),LOCK
***       FEP17 - ESM ONE SECTOR WRITE
**
*         FEP17 - ESM ONE SECTOR WRITE
*         ----------------------------
* 
*         PURPOSE-
*         FEP17  VERIFIES  THAT  ONE SECTOR OF DATA CAN BE WRITTEN FROM 
*         ESM TO THE 885-4X DRIVE CORRECTLY.  ALL OF THE  DATA  IN  THE 
*         SECTOR WILL BE CHECKED FOR BEING CORRECT. 
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A 500 OCTAL WORD DATA BUFFER OF THE DATA PATTERN 
*             TO  BE  TESTED  IN  THE  OUTPUT BUFFER.  THE INITIAL DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  REWIND THE SCRATCH FILE.
*         4.  WRITE ONE SECTOR OF DATA FROM THE OUTPUT DATA BUFFER INTO 
*             ESM USING THE SCRATCH FILE. 
*         5.  DISPLAY THE MODULE RUNNING MESSAGE  IF  REPEAT  CONDITION 
*             AND   REPEAT   MODULE   ARE   DISABLED,   OR  THE  REPEAT 
*             CONDITION/MODULE RUNNING MESSAGE IF REPEAT  CONDITION  OR 
*             REPEAT MODULE IS ENABLED. 
*         6.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         7.  WRITE SECTOR  0,  TRACK  0,  CYLINDER  1512  OCTAL OF THE 
*             885-4X DRIVE FROM ESM WITH THE DATA WRITTEN IN ESM. 
*         8.  SAVE THE DATA PATTERN  IN  THE  OUTPUT  DATA  BUFFER  AND 
*             GENERATE  A  500 OCTAL WORD DATA PATTERN OF 1234 OCTAL IN 
*             THE OUTPUT BUFFER.
*         9.  DIAGNOSTIC WRITE THE DATA PATTERN IN  THE  OUTPUT  BUFFER 
*             INTO THE BUFFER MEMORY OF THE 7155-401 CONTROLLER.
*         10. DIAGNOSTIC  WRITE  THE  DATA  PATTERN  IN  THE   7155-401 
*             CONTROLLER BUFFER MEMORY INTO ESM.
*         11. RESTORE THE DATA PATTERN WRITTEN TO THE 885-4X  DRIVE  IN 
*             THE OUTPUT DATA BUFFER. 
*         12. READ SECTOR 0, TRACK 0, CYLINDER 1512 OCTAL INTO ESM FROM 
*             THE 885-4X DRIVE. 
*         13. REWIND THE SCRATCH FILE.
*         14. READ A 500 OCTAL WORD BLOCK OF DATA FROM THE SCRATCH FILE 
*             IN ESM. 
*         15. CHECK THE  DATA READ FROM ESM AND REPORT ANY DATA ERRORS. 
*         16. REPEAT STEPS 14 AND 15 UNTIL FOUR 500 OCTAL  WORD  BLOCKS 
*             OF DATA HAVE BEEN READ AND CHECKED. 
*         17. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  5  THROUGH 
*             16. 
*         18. REPEAT STEPS 2 THROUGH 17  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         19. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 18. 
*         20. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         21. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         B15 = SYSRD STATUS. 
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-503) - READ DATA BUFFER. 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP17 ESM ONE SECTOR WRITE
2  FORMAT FEP17 ERROR(S) = *DECD
3  FORMAT FEP17 EC=*DECD, LC=*DECD
4  FORMAT FEP17 WRITE SECTOR LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE DGWR=3, DGWRE=4, RDCSECE=11, RESD=14, SYSRD=25
   EQUATE WRCSECE=33, CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 17D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE SEC. WRITE
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE SEC. WRITE
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE SEC. WRITE
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE SEC. WRITE
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM ONE SEC. WRITE
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM ONE SEC. WRITE
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------WRITE 1 SECTOR SUBROUTINE PROCESS.
* 
60 B9 = 0                        *INITIALIZE INT. LOOP COUNT
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
62 SYSWR ESM                     *WRITE 500 WORDS INTO ESM
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B4 = 1                        *SECTOR COUNT
   B8 = WRCSECE 
   WRITE FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 76
   COPY OB TO IB FOR WC          *SAVE OB IN IB 
   DUP 1234 TO OB FOR WC         *GENERATE 1234 DATA PATTERN
   B8 = DGWR
   DIAGWR, ABT 76                *WRITE PATTERN INTO CNTR 
   B8 = DGWRE 
   DIAGWR TO ESM, ABT 76         *WRITE PATTERN INTO ESM
   COPY IB TO OB FOR WC          *RESTORE PATTERN IN OB 
   B4 = 1                        *SECTOR COUNT
   B8 = RDCSECE 
   READ TO ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 76 
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
   B9 = 0                        *INITIALIZE INT. LOOP COUNT
   B8 = B8.LS.6 
66 B8 = B8.AND.7700+SYSRD 
   SYSRD ESM, STATUS TO B15      *READ 500 WORDS FROM ESM 
   IF(B15.NE.0)ERROR 05/0100 GOTO 76  *IF SYSRD ERROR 
   B8 = B8.AND.7700+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
   GOTO 66 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
70 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 64                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 ERROR 04/1021                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 70    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 70          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP17 ESM ONE SECTOR WRITE
   MODULE FEP19,DEMA3(14),LOCK
***       FEP19 - ESM ONE SECTOR VERIFY 
**
*         FEP19 - ESM ONE SECTOR VERIFY 
*         ----------------------------- 
* 
*         PURPOSE-
*         FEP19 VERIFIES THAT A ONE SECTOR WRITE  VERIFY  CAN  BE  DONE 
*         CORRECTLY WHILE VERIFYING DATA FROM ESM WITH THE DATA WRITTEN 
*         IN A SECTOR ON THE 885-4X DRIVE.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  REWIND THE SCRATCH FILE.
*         4.  WRITE ONE  SECTOR OF DATA FROM THE OUTPUT BUFFER INTO ESM 
*             USING THE SCRATCH FILE. 
*         5.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         6.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         7.  WRITE SECTOR 0, TRACK 0, CYLINDER 1512 OCTAL FROM THE  PP 
*             WITH THE DATA PATTERN IN THE OUTPUT BUFFER. 
*         8.  WRITE VERIFY SECTOR 0, TRACK 0, CYLINDER 1512 OCTAL  WITH 
*             THE DATA CONTAINED IN ESM.
*         9.  REPORT ANY  ERRORS  DETECTED  DURING  THE  WRITE   VERIFY 
*             OPERATION.
*         10. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  5  THROUGH 
*             9.
*         11. REPEAT STEPS 2 THROUGH 10  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         12. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 11. 
*         13. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         14. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP19 ESM ONE SECTOR VERIFY 
2  FORMAT FEP19 ERROR(S) = *DECD
3  FORMAT FEP19 EC=*DECD, LC=*DECD
4  FORMAT FEP19 VERIFY SECTOR LC=*DECD
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RESD=14, VFYCSEC=27, WRCSEC=31
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 19D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 SEC. VERIFY 
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 SEC. VERIFY 
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 SEC. VERIFY 
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 SEC. VERIFY 
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM 1 SEC. VERIFY 
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM 1 SEC. VERIFY 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------VERIFY 1 SECTOR SUBROUTINE PROCESS. 
* 
60 B9 = 0                        *INITIALIZE INT. LOOP COUNT
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
62 SYSWR ESM                     *WRITE 500 WORDS INTO ESM
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B4 = 1                        *SECTOR COUNT
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B8 = WRCSEC
   WRITE ONE C SEC AT CYL B7 TRK B6 SEC B5, ABT 76  *WRITE
   B8 = VFYCSEC 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 72 
66 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 64                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 IF(SB.NE.5000) GOTO 76        *NOT WRITE VERIFY ERROR
   IF(SB(21).AND.2.EQ.0)GOTO 76  *IF NOT DATA FIELD ERROR 
   IF(SB(20).AND.1.EQ.0)GOTO 76  *IF NOT WRITE VERIFY ERROR 
   ERROR 04/0023                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 66    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 66          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP19 ESM ONE SECTOR VERIFY 
   MODULE FEP21,DEMA3(14),LOCK
***       FEP21 - ESM VERIFY ERROR
**
*         FEP21 - ESM VERIFY ERROR
*         ------------------------
* 
*         PURPOSE-
*         FEP21 VERIFIES THAT WHEN A WRITE VERIFY IS DONE FROM ESM, THE 
*         7155-401  CONTROLLER  WILL  DETECT AND REPORT AN ERROR WHEN A 
*         VERIFY ERROR IS DETECTED IN THE DATA BEING COMPARED.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  REWIND THE SCRATCH FILE.
*         4.  WRITE ONE  SECTOR OF DATA FROM THE OUTPUT BUFFER INTO ESM 
*             USING THE SCRATCH FILE WITH THE LAST WORD IN  THE  SECTOR 
*             OF DATA COMPLIMENTED FROM ITS ORIGINAL VALUE. 
*         5.  DISPLAY THE MODULE RUNNING MESSAGE  IF  REPEAT  CONDITION 
*             AND   REPEAT   MODULE   ARE   DISABLED,   OR  THE  REPEAT 
*             CONDITION/MODULE RUNNING MESSAGE IF REPEAT  CONDITION  OR 
*             REPEAT MODULE IS ENABLED. 
*         6.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         7.  WRITE SECTOR  0, TRACK 0, CYLINDER 1512 OCTAL FROM THE PP 
*             WITH THE DATA PATTERN IN THE OUTPUT BUFFER. 
*         8.  WRITE VERIFY  SECTOR 0, TRACK 0, CYLINDER 1512 OCTAL WITH 
*             THE DATA CONTAINED IN ESM.
*         9.  IF A  WRITE  VERIFY  IS  NOT  DETECTED  BY  THE  7155-401 
*             CONTROLLER, REPORT AN ERROR  INDICATING  THAT  THE  WRITE 
*             VERIFY FROM ESM FAILED. 
*         10. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  5  THROUGH 
*             9.
*         11. REPEAT STEPS 2 THROUGH 10  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         12. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 11. 
*         13. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         14. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP21 ESM VERIFY ERROR
2  FORMAT FEP21 ERROR(S) = *DECD
3  FORMAT FEP21 EC=*DECD, LC=*DECD
4  FORMAT FEP21 VERIFY ERROR LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RESD=14, VFYCSEC=27, WRCSEC=31
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 21D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM VERIFY ERROR
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM VERIFY ERROR
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM VERIFY ERROR
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM VERIFY ERROR
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM VERIFY ERROR
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM VERIFY ERROR
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM VERIFY ERROR SUBROUTINE PROCESS.
* 
60 B9 = 0                        *INITIALIZE INT. LOOP COUNT
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
62 SYSWR ESM                     *WRITE 500 WORDS INTO ESM
   GOTO 62 WHILE(B9+1.LT.3)      *LOOP 3 TIMES
   OB(477) = OB(477).XOR.7777    *COMPLIMENT LAST DATA WORD 
   SYSWR ESM                     *WRITE 500 WORDS INTO ESM
   OB(477) = OB(477).XOR.7777    *COMPLIMENT LAST DATA WORD 
64 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B4 = 1                        *SECTOR COUNT
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B8 = WRCSEC
   WRITE ONE C SEC AT CYL B7 TRK B6 SEC B5, ABT 76
   B8 = VFYCSEC 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 72 
   ERROR 04/0025 GOTO 76         *WRITE VERIFY ERROR
66 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 64                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 IF(SB.NE.5000) GOTO 76        *NOT WRITE VERIFY ERROR
   IF(SB(21).AND.2.EQ.0)GOTO 76  *IF NOT DATA FIELD ERROR 
   IF(SB(20).AND.1.NE.0)GOTO 66  *IF WRITE VERIFY ERROR 
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 66    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 66          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP21 ESM VERIFY ERROR
   MODULE FEP23,DEMA3(14),LOCK
***       FEP23 - ESM ONE TRACK READ
**
*         FEP23 - ESM ONE TRACK READ
*         --------------------------
* 
*         PURPOSE-
*         FEP23 VERIFIES THAT THIRTY-TWO DECIMAL SECTORS (ONE TRACK) OF 
*         DATA   CAN   BE  WRITTEN  INTO  ESM  FROM  THE  885-4X  DRIVE 
*         CORRECTLY.  ONLY THE DATA FROM THE LAST SECTOR  WRITTEN  INTO 
*         ESM  WILL BE CHECKED FOR BEING CORRECT.  THE DATA TRANSFER IS 
*         DONE IN ONE TO ONE INTERLACE MODE.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  DISPLAY THE MODULE RUNNING MESSAGE  IF  REPEAT  CONDITION 
*             AND   REPEAT   MODULE   ARE   DISABLED,   OR  THE  REPEAT 
*             CONDITION/MODULE RUNNING MESSAGE IF REPEAT  CONDITION  OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         5.  WRITE ALL  SECTORS  IN  TRACK 0, CYLINDER 1512 OCTAL FROM 
*             THE PP WITH THE DATA IN THE OUTPUT BUFFER.
*         6.  READ ALL  SECTORS  FROM TRACK 0, CYLINDER 1512 OCTAL INTO 
*             ESM.
*         7.  REWIND THE SCRATCH FILE.
*         8.  READ A 500 OCTAL WORD BLOCK OF DATA FROM THE SCRATCH FILE 
*             IN ESM. 
*         9.  CHECK THE DATA READ FROM ESM AND REPORT ANY DATA  ERRORS. 
*         10. REPEAT  STEPS 8 AND 9 UNTIL FOUR 500 OCTAL WORD BLOCKS OF 
*             DATA HAVE BEEN READ AND CHECKED.
*         11. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 3 THROUGH 
*             10. 
*         12. REPEAT  STEPS  2  THROUGH  11  FOR THE DATA PATTERNS 7777 
*             OCTAL, 5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM  DATA 
*             PATTERNS. 
*         13. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH  12. 
*         14. IF  ANY  ERRORS  WERE  DETECTED  DURING  EXECUTION OF THE 
*             MODULE, SEND A MESSAGE  TO  DAYFILE,  DISPLAY  AND  PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         15. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM   DATA   SEED  SAVED  FOR  REPEATING  THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA  SEED SAVED FOR REPEATING THE MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         B15 = SYSRD STATUS. 
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-477) - READ DATA BUFFER. 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP23 ESM ONE TRACK READ
2  FORMAT FEP23 ERROR(S) = *DECD
3  FORMAT FEP23 EC=*DECD, LC=*DECD
4  FORMAT FEP23 READ TRACK LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RDCSECE=11, RESD=14, WRCSEC=31, SYSRD=25, CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 23D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK READ
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK READ
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK READ
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK READ
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM 1 TRACK READ
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM 1 TRACK READ
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM READ 1 TRACK SUBROUTINE PROCESS.
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B8 = WRCSEC
62 WRITE ONE C SEC AT CYL B7 TRK B6 SEC B5, ABT 76
   GOTO 62 WHILE (B5+1.LT.32D)   *WRITE ALL SECTORS 
   B4 = 32D                      *SECTOR COUNT
   B5 = 0                        *SECTOR 0
   B8 = RDCSECE 
   READ TO ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 76 
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
   B9 = 0                        *INITIALIZE INT. LOOP COUNT
   B8 = B8.LS.6 
64 B8 = B8.AND.7700+SYSRD 
   SYSRD ESM, STATUS TO B15      *READ 500 WORDS FROM ESM 
   IF(B15.NE.0)ERROR 05/0100 GOTO 76  *IF SYSRD ERROR 
   B8 = B8.AND.7700+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
   GOTO 64 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
66 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 ERROR 04/1027                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 66    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 66          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP23 ESM ONE TRACK READ
   MODULE FEP25,DEMA3(14),LOCK
***       FEP25 - ESM ONE TRACK VERIFY
**
*         FEP25 - ESM ONE TRACK VERIFY
*         ----------------------------
* 
*         PURPOSE-
*         FEP25  VERIFIES  THAT A THIRTY-TWO DECIMAL SECTOR (ONE TRACK) 
*         WRITE VERIFY CAN BE DONE CORRECTLY WHILE VERIFYING DATA  FROM 
*         ESM  WITH  DATA  WRITTEN IN A TRACK ON THE 885-4X DRIVE.  THE 
*         WRITE VERIFY IS DONE IN ONE TO ONE INTERLACE MODE.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  REWIND THE SCRATCH FILE.
*         4.  WRITE ONE  SECTOR OF DATA FROM THE OUTPUT BUFFER INTO ESM 
*             USING THE SCRATCH FILE. 
*         5.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         6.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         7.  WRITE ALL SECTORS (ONE TRACK) OF TRACK 0,  CYLINDER  1512 
*             OCTAL FROM THE PP WITH THE DATA IN THE OUTPUT BUFFER. 
*         8.  WRITE VERIFY ALL SECTORS (ONE TRACK) OF TRACK 0, CYLINDER 
*             1512 OCTAL WITH THE DATA CONTAINED IN ESM.
*         9.  REPORT ANY  ERRORS  DETECTED  DURING  THE  WRITE   VERIFY 
*             OPERATION.
*         10. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  5  THROUGH 
*             9.
*         11. REPEAT STEPS 2 THROUGH 10  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         12. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 11. 
*         13. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         14. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP25 ESM ONE TRACK VERIFY
2  FORMAT FEP25 ERROR(S) = *DECD
3  FORMAT FEP25 EC=*DECD, LC=*DECD
4  FORMAT FEP25 VERIFY TRACK LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RESD=14, VFYCSEC=27, WRCSEC=31
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 25D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK VERIFY
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK VERIFY
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK VERIFY
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK VERIFY
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM 1 TRACK VERIFY
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM 1 TRACK VERIFY
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM 1 TRACK VERIFY SUBROUTINE PROCESS.
* 
60 B9 = 0                        *INITIALIZE INT. LOOP COUNT
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
62 SYSWR ESM                     *WRITE DATA INTO ESM 
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B8 = WRCSEC
66 WRITE ONE C SEC AT CYL B7 TRK B6 SEC B5, ABT 76
   GOTO 66 WHILE (B5+1.LT.32D)   *WRITE ALL SECTORS 
   B4 = 32D                      *SECTOR COUNT
   B5 = 0                        *SECTOR 0
   B8 = VFYCSEC 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 72 
70 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 64                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 IF(SB.NE.5000) GOTO 76        *NOT WRITE VERIFY ERROR
   IF(SB(21).AND.2.EQ.0)GOTO 76  *IF NOT DATA FIELD ERROR 
   IF(SB(20).AND.1.EQ.0)GOTO 76  *IF NOT WRITE VERIFY ERROR 
   ERROR 04/0031                 *VERIFY ERROR
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 70    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 70          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP25 ESM ONE TRACK VERIFY
   MODULE FEP27,DEMA3(14),LOCK
***       FEP27 - ESM ONE TRACK WRITE 
**
*         FEP27 - ESM ONE TRACK WRITE 
*         --------------------------- 
* 
*         PURPOSE-
*         FEP27 VERIFIES THAT THIRTY-TWO DECIMAL SECTORS (ONE TRACK) OF 
*         DATA  CAN  BE WRITTEN FROM ESM TO THE 885-4X DRIVE CORRECTLY. 
*         ALL OF THE DATA IN ALL OF THE SECTORS WRITTEN WILL BE CHECKED 
*         FOR  BEING  CORRECT.  THE DATA TRANSFER IS DONE IN ONE TO ONE 
*         INTERLACE MODE. 
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  REWIND THE ESM SCRATCH FILE AND WRITE THE DATA PATTERN IN 
*             THE  OUTPUT BUFFER INTO ESM TO GENERATE A 2000 OCTAL WORD 
*             DATA BUFFER IN ESM. 
*         4.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         5.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         6.  WRITE ALL SECTORS IN TRACK 0, CYLINDER  1512  OCTAL  FROM 
*             ESM.
*         7.  WRITE VERIFY ALL SECTORS (ONE TRACK) OF TRACK 0, CYLINDER 
*             1512 OCTAL WITH THE DATA CONTAINED IN ESM.
*         8.  IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  4  THROUGH 
*             7.
*         9.  REPEAT STEPS 2 THROUGH  8  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         10. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 9. 
*         11. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         12. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP27 ESM ONE TRACK WRITE 
2  FORMAT FEP27 ERROR(S) = *DECD
3  FORMAT FEP27 EC=*DECD, LC=*DECD
4  FORMAT FEP27 WRITE TRACK LC=*DECD
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RESD=14, VFYCSEC=27, WRCSECE=32 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 27D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK WRITE 
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK WRITE 
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK WRITE 
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 TRACK WRITE 
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM 1 TRACK WRITE 
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM 1 TRACK WRITE 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM 1 TRACK WRITE SUBROUTINE PROCESS. 
* 
60 B9 = 0                        *INITIALIZE INT. LOOP COUNT
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
62 SYSWR ESM                     *WRITE DATA INTO ESM 
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B4 = 32D                      *SECTOR COUNT
   B8 = WRCSECE 
   WRITE FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 76
   B4 = 32D                      *SECTOR COUNT
   B5 = 0                        *SECTOR 0
   B8 = VFYCSEC 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 72 
66 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 64                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 IF(SB.NE.5000) GOTO 76        *NOT WRITE VERIFY ERROR
   IF(SB(21).AND.2.EQ.0)GOTO 76  *IF NOT DATA FIELD ERROR 
   IF(SB(20).AND.1.EQ.0)GOTO 76  *IF NOT WRITE VERIFY ERROR 
   ERROR 04/0033                 *WRITE ERROR 
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 66    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 66          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP27 ESM ONE TRACK WRITE 
   MODULE FEP29,DEMA3(14),LOCK
***       FEP29 - ESM ONE CYLINDER READ 
**
*         FEP29 - ESM ONE CYLINDER READ 
*         ----------------------------- 
* 
*         PURPOSE-
*         FEP29 VERIFIES THAT THREE HUNDRED AND TWENTY DECIMAL  SECTORS 
*         (ONE  CYLINDER)  OF  DATA  CAN  BE  WRITTEN INTO ESM FROM THE 
*         885-4X DRIVE CORRECTLY.  ONLY THE DATA FROM THE  LAST  SECTOR 
*         WRITTEN INTO ESM WILL BE CHECKED FOR BEING CORRECT.  THE DATA 
*         TRANSFER IS DONE IN ONE TO ONE INTERLACE MODE.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  DISPLAY THE MODULE RUNNING MESSAGE  IF  REPEAT  CONDITION 
*             AND   REPEAT   MODULE   ARE   DISABLED,   OR  THE  REPEAT 
*             CONDITION/MODULE RUNNING MESSAGE IF REPEAT  CONDITION  OR 
*             REPEAT MODULE IS ENABLED. 
*         4.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         5.  WRITE ALL SECTORS IN CYLINDER 1512 OCTAL FROM THE PP WITH 
*             THE DATA IN THE OUTPUT BUFFER.
*         6.  READ ALL SECTORS FROM CYLINDER 1512 OCTAL TO ESM. 
*         7.  REWIND THE SCRATCH FILE.
*         8.  READ A 500 OCTAL WORD BLOCK OF DATA FROM THE SCRATCH FILE 
*             IN ESM. 
*         9.  CHECK THE DATA  READ FROM ESM AND REPORT ANY DATA ERRORS. 
*         10. REPEAT STEPS 8 AND 9 UNTIL FOUR 500 OCTAL WORD BLOCKS  OF 
*             DATA HAVE BEEN READ AND CHECKED.
*         11. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  3  THROUGH 
*             10. 
*         12. REPEAT STEPS 2 THROUGH 11  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         13. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 12. 
*         14. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         15. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         B15 = SYSRD STATUS. 
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         IB(0-477) - READ DATA BUFFER. 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP29 ESM ONE CYLINDER READ 
2  FORMAT FEP29 ERROR(S) = *DECD
3  FORMAT FEP29 EC=*DECD, LC=*DECD
4  FORMAT FEP29 READ CYL. LC=*DECD
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RDCSECE=11, RESD=14, WRCSEC=31, SYSRD=25, CMPR=34 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 29D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE CYL. READ 
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE CYL. READ 
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE CYL. READ 
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE CYL. READ 
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM ONE CYL. READ 
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM ONE CYL. READ 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM 1 CYLINDER READ SUBROUTINE PROCESS. 
* 
60 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B8 = WRCSEC
62 WRITE ONE C SEC AT CYL B7 TRK B6 SEC B5, ABT 76
   GOTO 62 WHILE (B5+1.LT.32D)   *WRITE ONE TRACK 
   B5 = 0                        *RESET SECTOR NUMBER 
   GOTO 62 WHILE (B6+1.LT.10D)   *WRITE ONE CYLINDER
   B4 = 320D                     *SECTOR COUNT
   B5 = 0                        *SECTOR 0
   B6 = 0                        *TRACK 0 
   B8 = RDCSECE 
   READ TO ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 76 
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
   B9 = 0                        *INITIALIZE INT. LOOP COUNT
   B8 = B8.LS.6 
64 B8 = B8.AND.7700+SYSRD 
   SYSRD ESM, STATUS TO B15      *READ 500 WORDS FROM ESM 
   IF(B15.NE.0)ERROR 05/0100 GOTO 76  *IF SYSRD ERROR 
   B8 = B8.AND.7700+CMPR
   COMPARE IB TO OB FOR WC, ABT 72  *CHECK DATA 
   GOTO 64 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
66 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 60                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 ERROR 04/1035                 *ERROR CODE
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 66    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 66          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP29 ESM ONE CYLINDER READ 
   MODULE FEP31,DEMA3(14),LOCK
***       FEP31 - ESM ONE CYLINDER VERIFY 
**
*         FEP31 - ESM ONE CYLINDER VERIFY 
*         ------------------------------- 
* 
*         PURPOSE-
*         FEP31 VERIFIES THAT A THREE HUNDRED AND  TWENTY  SECTOR  (ONE 
*         CYLINDER)  WRITE VERIFY CAN BE DONE CORRECTLY WHILE VERIFYING 
*         DATA FROM ESM WITH DATA WRITTEN IN A CYLINDER ON  THE  885-4X 
*         DRIVE.   THE  WRITE  VERIFY  IS  DONE IN ONE TO ONE INTERLACE 
*         MODE. 
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  REWIND THE SCRATCH FILE.
*         4.  WRITE ONE SECTOR OF DATA FROM THE OUTPUT BUFFER INTO  ESM 
*             USING THE SCRATCH FILE. 
*         5.  DISPLAY THE MODULE RUNNING MESSAGE  IF  REPEAT  CONDITION 
*             AND   REPEAT   MODULE   ARE   DISABLED,   OR  THE  REPEAT 
*             CONDITION/MODULE RUNNING MESSAGE IF REPEAT  CONDITION  OR 
*             REPEAT MODULE IS ENABLED. 
*         6.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         7.  WRITE ALL  SECTORS  (ONE CYLINDER) OF CYLINDER 1512 OCTAL 
*             FROM THE PP WITH THE DATA IN THE OUTPUT BUFFER. 
*         8.  WRITE VERIFY ALL SECTORS (ONE CYLINDER) OF CYLINDER  1512 
*             OCTAL WITH THE DATA CONTAINED IN ESM. 
*         9.  REPORT ANY  ERRORS  DETECTED  DURING  THE  WRITE   VERIFY 
*             OPERATION.
*         10. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  5  THROUGH 
*             9.
*         11. REPEAT STEPS 2 THROUGH 10  FOR  THE  DATA  PATTERNS  7777 
*             OCTAL,  5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM DATA 
*             PATTERNS. 
*         12. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 11. 
*         13. IF ANY ERRORS  WERE  DETECTED  DURING  EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE  TO  DAYFILE, DISPLAY AND PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         14. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM  DATA  SEED  SAVED  FOR   REPEATING   THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR REPEATING THE  MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP31 ESM ONE CYL. VERIFY 
2  FORMAT FEP31 ERROR(S) = *DECD
3  FORMAT FEP31 EC=*DECD, LC=*DECD
4  FORMAT FEP31 VERIFY CYL. LC=*DECD
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RESD=14, VFYCSEC=27, WRCSEC=31
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 31D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 CYL. VERIFY 
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 CYL. VERIFY 
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 CYL. VERIFY 
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM 1 CYL. VERIFY 
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM 1 CYL. VERIFY 
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM 1 CYL. VERIFY 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   EXIT                          *EXIT THE MODULE 
* 
/---------ESM 1 CYLINDER VERIFY SUBROUTINE PROCESS. 
* 
60 B9 = 0                        *INITIALIZE INT. LOOP COUNT
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
62 SYSWR ESM                     *WRITE DATA INTO ESM 
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B8 = WRCSEC
66 WRITE ONE C SEC AT CYL B7 TRK B6 SEC B5, ABT 76
   GOTO 66 WHILE (B5+1.LT.32D)   *WRITE ONE TRACK 
   B5 = 0                        *RESET SECTOR NUMBER 
   GOTO 66 WHILE (B6+1.LT.10D)   *WRITE ONE CYLINDER
   B4 = 320D                     *SECTOR COUNT
   B5 = 0                        *SECTOR 0
   B6 = 0                        *TRACK 0 
   B8 = VFYCSEC 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 72 
70 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 64                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 IF(SB.NE.5000) GOTO 76        *NOT WRITE VERIFY ERROR
   IF(SB(21).AND.2.EQ.0)GOTO 76  *IF NOT DATA FIELD ERROR 
   IF(SB(20).AND.1.EQ.0)GOTO 76  *IF NOT WRITE VERIFY ERROR 
   ERROR 04/0037                 *VERIFY ERROR
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 70    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 70          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP31 ESM ONE CYLINDER VERIFY 
   MODULE FEP33,DEMA3(14),LOCK
***       FEP33 - ESM ONE CYLINDER WRITE
**
*         FEP33 - ESM ONE CYLINDER WRITE
*         ------------------------------
* 
*         PURPOSE-
*         FEP33 VERIFIES THAT THREE HUNDRED AND TWENTY DECIMAL  SECTORS 
*         (ONE  CYLINDER) OF DATA CAN BE WRITTEN FROM ESM TO THE 885-4X 
*         DRIVE CORRECTLY.  ALL OF THE  DATA  IN  ALL  OF  THE  SECTORS 
*         WRITTEN WILL BE CHECKED FOR BEING CORRECT.  THE DATA TRANSFER 
*         IS DONE IN ONE TO ONE INTERLACE MODE. 
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE MODULE TITLE MESSAGE. 
*         2.  GENERATE A  500 OCTAL WORD DATA BUFFER OF THE DATA BUFFER 
*             TO BE TESTED IN THE  OUTPUT  BUFFER.   THE  INITIAL  DATA 
*             PATTERN TO BE TESTED WILL BE ALL ZEROS. 
*         3.  REWIND THE ESM SCRATCH FILE AND WRITE THE DATA PATTERN IN 
*             THE  OUTPUT BUFFER INTO ESM TO GENERATE A 2000 OCTAL WORD 
*             DATA BUFFER IN ESM. 
*         4.  DISPLAY  THE  MODULE  RUNNING MESSAGE IF REPEAT CONDITION 
*             AND  REPEAT  MODULE   ARE   DISABLED,   OR   THE   REPEAT 
*             CONDITION/MODULE  RUNNING  MESSAGE IF REPEAT CONDITION OR 
*             REPEAT MODULE IS ENABLED. 
*         5.  RESERVE THE 7155-401 CONTROLLER AND 885-4X DRIVE. 
*         6.  WRITE ALL SECTORS IN CYLINDER 1512 OCTAL FROM ESM.
*         7.  WRITE VERIFY  ALL SECTORS (ONE CYLINDER) IN CYLINDER 1512 
*             OCTAL WITH THE DATA CONTAINED IN ESM. 
*         8.  IF REPEAT  CONDITION  IS SELECTED, REPEAT STEPS 4 THROUGH 
*             7.
*         9.  REPEAT STEPS  2  THROUGH  8  FOR  THE  DATA PATTERNS 7777 
*             OCTAL, 5252  OCTAL,  2525  OCTAL,  AND  TWO  RANDOM  DATA 
*             PATTERNS. 
*         10. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 2 THROUGH 9. 
*         11. IF  ANY  ERRORS  WERE  DETECTED  DURING  EXECUTION OF THE 
*             MODULE, SEND A MESSAGE  TO  DAYFILE,  DISPLAY  AND  PRINT 
*             INDICATING THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         12. EXIT THE MODULE.
* 
/ 
*         ENTRY-
*         NO ENTRY REQUIREMENTS.
* 
*         EXIT- 
*         NO EXIT REQUIREMENTS. 
* 
*         SUBMODULES CALLED-
*         FEP98A - PROCESS MODULE AND DRIVER DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  = EXTERNAL LOOP COUNT.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM   DATA   SEED  SAVED  FOR  REPEATING  THE 
*               MODULE. 
*         B3  = FIRST RANDOM DATA  SEED SAVED FOR REPEATING THE MODULE. 
*         B4  = SECTOR COUNT. 
*         B5  = SECTOR NUMBER.
*         B6  = TRACK NUMBER. 
*         B7  = CYLINDER NUMBER.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE.
*         B10 = INTERNAL LOOP COUNT.
*         B11 = ERROR COUNTER.
*         EC  = ERROR FORMAT NUMBER AND ERROR CODE NUMBER.
*         EM  = PRESERVICE FORECAST GROUP NUMBER. 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
*         OB(0-503) - WRITE DATA BUFFER.
* 
1  FORMAT FEP33 ESM ONE CYLINDER WRITE
2  FORMAT FEP33 ERROR(S) = *DECD
3  FORMAT FEP33 EC=*DECD, LC=*DECD
4  FORMAT FEP33 WRITE CYL. LC=*DECD 
* 
/---------EQUATES FOR MALET COMMANDS IN THE MODULE. 
* 
   EQUATE RESD=14, VFYCSEC=27, WRCSECE=32 
* 
/---------MODULE INITIALIZATION.
* 
30 MSG 1 TO DISPLAY,PRINT        *DIS., PRINT MODULE TITLE
   B1 = 33D                      *MODULE NUMBER 
   B7 = 1512B                    *CYLINDER FLAG 
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
34 WC = 500                      *BUFFER WORD COUNT 
   B10 = 0                       *SUBTEST 0 
   DUP 0000 TO OB FOR WC         *WRITE 0000 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE CYL. WRITE
   B10 = 1                       *SUBTEST 1 
   DUP 7777 TO OB FOR WC         *WRITE 7777 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE CYL. WRITE
   B10 = 2                       *SUBTEST 2 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE CYL. WRITE
   B10 = 3                       *SUBTEST 3 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 60                      *EXECUTE ESM ONE CYL. WRITE
   B10 = 4                       *SUBTEST 4 
   IF(P6.NE.0) B3 = P6           *IF PRESET RANDOM NO. SEED 
   IF(B3.EQ.0) GOTO 40           *IF NOT RM OR PRESET SEED
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOTO 42
40 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
42 GOSUB 60                      *EXECUTE ESM ONE CYL. WRITE
   B10 = 5                       *SUBTEST 5 
   B2 = OB(477) 
   RANDOM TO OB FOR WC, START B2  *RANDOM DATA PATTERN 2
   GOSUB 60                      *EXECUTE ESM ONE CYL. WRITE
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2(B11)TO DAYFILE,DISPLAY,PRINT  *ERRORS
   GOTO 77                       *EXIT THE MODULE 
* 
/---------ESM 1 CYLINDER WRITE SUBROUTINE PROCESS.
* 
60 B9 = 0                        *INITIALIZE INT. LOOP COUNT
   SYSREW ESM                    *REWIND ESM SCRATCH FILE 
62 SYSWR ESM                     *WRITE DATA INTO ESM 
   GOTO 62 WHILE(B9+1.LT.4)      *LOOP 4 TIMES
64 IF(ES.AND.SL.EQ.0)MSG 4 (B10) TO DISPLAY  *IF NOT SCOPING
   IF(ES.AND.SL.NE.0)MSG 3 (B11,B0) TO DISPLAY  *IF SCOPING 
   B5 = 0                        *SECTOR NUMBER 
   B6 = 0                        *TRACK NUMBER
   B8 = RESD
   RES DRIVE, ABT 76             *RESERVE 885 DRIVE 
   B4 = 320D                     *SECTOR COUNT
   B8 = WRCSECE 
   WRITE FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 76
   B4 = 320D                     *SECTOR COUNT
   B5 = 0                        *SECTOR 0
   B8 = VFYCSEC 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 72 
66 WC = 500                      *BUFFER WORD COUNT 
   IF(ES.AND.RC.EQ.0) RETURN     *IF NO REPEAT CONDITION
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   GOTO 64                       *REPEAT THE CONDITION
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
72 IF(SB.NE.5000) GOTO 76        *NOT WRITE VERIFY ERROR
   IF(SB(21).AND.2.EQ.0)GOTO 76  *IF NOT DATA FIELD ERROR 
   IF(SB(20).AND.1.EQ.0)GOTO 76  *IF NOT WRITE VERIFY ERROR 
   ERROR 04/0041                 *WRITE ERROR 
* 
/---------PROCESS COMMAND ABORTS. 
* 
76 B11 = B11+1                   *INCREMENT ERROR COUNT 
   IF(ES.AND.SL.EQ.0) CALL 98A   *IF NOT SCOPING
   IF(ES.AND.CM.NE.0) GOTO 66    *IF REPEAT MODULE OR COND. 
   IF(B11.LT.5) GOTO 66          *CONTINUE THE TEST 
   ENDSUB GOTO 50                *ABORT THE MODULE
77 END 30                        *END OF THE MODULE 
COMPILE                      *FEP33 ESM ONE CYLINDER WRITE
   MODULE FEP98A,DEMA3(14),LOCK 
***       FEP98A - POST MODULE TITLE
**
*         FEP98A - POST MODULE TITLE
*         --------------------------
* 
*         PURPOSE-
*         FEP98A WILL  BEGIN  BUILDING  THE  ERROR  DISPLAY  BUFFER  BY 
*         POSTING  THE  FEP  TEST  TITLE  MESSAGE  AND THE MODULE TITLE 
*         MESSAGE FOR MODULES FEP01 THROUGH FEP21.
* 
*         METHOD- 
*         1.  POST THE  TITLE MESSAGE FOR THE FEP TEST IN LINE 0 OF THE 
*             DISPLAY BUFFER. 
*         2.  IF THE  NUMBER  OF  THE  MODULES  IN  THE  B1 REGISTER IS 
*             GREATER THAN 26 OCTAL, EXIT TO MODULE FEP98B. 
*         3.  POST THE  TITLE  MESSAGE  FOR  THE  MODULES FEP01 THROUGH 
*             FEP21 IN LINE 1 OF THE DISPLAY BUFFER.
*         4.  EXIT TO MODULE FEP98C.
* 
/ 
*         ENTRY-
*         B1 REGISTER  CONTAINS  THE  NUMBER OF THE MODULE IN WHICH THE 
*            ERROR WAS DETECTED.
* 
*         EXIT- 
*         LINE 0  OF THE DISPLAY BUFFER CONTAINS THE FEP TITLE MESSAGE. 
*         EXIT TO MODULE FEP98B IF THE NUMBER OF THE MODULE IN  THE  B1 
*            REGISTER IS GREATER THAN 26 OCTAL. 
*         EXIT TO MODULE FEP98C IF THE NUMBER OF THE MODULES IN THE  B1 
*            REGISTER  IS  LESS  THAN  27  OCTAL  WITH THE MODULE TITLE 
*            MESSAGE IN LINE 1 OF THE DISPLAY BUFFER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98B - POST THE  MODULE  TITLE  MESSAGE  FOR  MODULES FEP23 
*                  THROUGH FEP33. 
*         FEP98C - POST THE ERROR MESSAGE IN THE DISPLAY BUFFER.
* 
*         REGISTERS USED- 
*         B12 - TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
* 
/---------MODULE TITLES FOR MODULES FEP01 - FEP21.
* 
0  FORMAT FEP - FMD/ESM PATH TEST 
2  FORMAT FEP01 - CONTROLLER DIAG. W/R
4  FORMAT FEP03 - GEN. EXTENDED STATUS
6  FORMAT FEP05 - LSP STATUS
10 FORMAT FEP07 - LSP ECHO CHECK
12 FORMAT FEP09 - SYSWR/SYSWR ESM TEST
14 FORMAT FEP11 - ESM DIAG. WRITE 
16 FORMAT FEP13 - ESM DIAG. READ
20 FORMAT FEP15 - ESM ONE SECTOR READ 
22 FORMAT FEP17 - ESM ONE SECTOR WRITE
24 FORMAT FEP19 - ESM ONE SECTOR VERIFY 
26 FORMAT FEP21 - ESM VERIFY ERROR
* 
/---------POST THE TEST AND MODULE TITLE MESSAGES.
* 
30 MSG 0 TO LINE 0               *POST TEST TITLE MESSAGE 
   IF(B1.GE.27B) EXIT TO 98B     *IF MESSAGE IN NEXT MODULE 
   B12 = B1+1                    *ADJUST MODULE NUMBER
   MSG B12 TO LINE 1             *POST THE MODULE TITLE 
   EXIT TO 98C                   *EXIT TO NEXT MODULE 
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP98A POST MODULE TITLE
   MODULE FEP98B,DEMA3(14),LOCK 
***       FEP98B - POST MODULE TITLE
**
*         FEP98B - POST MODULE TITLE
*         --------------------------
* 
*         PURPOSE-
*         FEP98B  WILL  POST THE MODULE TITLE MESSAGE FOR MODULES FEP23 
*         THROUGH FEP33 IN LINE 1 OF THE ERROR DISPLAY BUFFER.
* 
*         METHOD- 
*         1.  POST THE  TITLE  MESSAGE  FOR  THE  MODULES FEP23 THROUGH 
*             FEP33 IN LINE 1 OF THE DISPLAY BUFFER.
*         2.  EXIT TO MODULE FEP98C.
* 
/ 
*         ENTRY-
*         B1 REGISTER  CONTAINS  THE  NUMBER OF THE MODULE IN WHICH THE 
*            ERROR WAS DETECTED.
* 
*         EXIT- 
*         EXIT TO MODULE FEP98C WITH THE MODULE TITLE MESSAGE IN LINE 1 
*            OF THE DISPLAY BUFFER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98C - POST THE ERROR MESSAGE IN THE DISPLAY BUFFER.
* 
*         REGISTERS USED- 
*         B12 - TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
* 
/---------MODULE TITLES FOR MODULES FEP23 - FEP33.
* 
0  FORMAT FEP23 - ESM ONE TRACK READ
2  FORMAT FEP25 - ESM ONE TRACK VERIFY
4  FORMAT FEP27 - ESM ONE TRACK WRITE 
6  FORMAT FEP29 - ESM ONE CYLINDER READ 
10 FORMAT FEP31 - ESM ONE CYL. VERIFY 
12 FORMAT FEP33 - ESM ONE CYLINDER WRITE
* 
/---------POST THE MODULE TITLE MESSAGE FOR THE MODULE. 
* 
30 B12 = B1-27B              *ADJUST MODULE NUMBER
   MSG B12 TO LINE 1         *POST MODULE TITLE 
   EXIT TO 98C               *EXIT TO NEXT MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98B POST MODULE TITLE
   MODULE FEP98C,DEMA3(14),LOCK 
***       FEP98C - POST ERROR MESSAGE 
**
*         FEP98C - POST ERROR MESSAGE 
*         --------------------------- 
* 
*         PURPOSE-
*         FEP98C  WILL  POST THE ERROR MESSAGES FOR ALL DRIVER DETECTED 
*         ERRORS AND THE ERROR MESSAGES FOR THE MODULE  DETECTED  ERROR 
*         CODES 0001 OCTAL THROUGH 0027 OCTAL.
* 
*         METHOD- 
*         1.  IF THE TEST IS BEING RUN FROM A TERMINAL, SET THE DISPLAY 
*             LINE  NUMBER  IN THE B12 REGISTER TO 3, OTHERWISE SET THE 
*             DISPLAY LINE NUMBER TO 4. 
*         2.  IF THE ERROR CODE IN THE EC REGISTER IS GREATER THAN 3777 
*             OCTAL, POST THE ERROR MESSAGE IN THE EM REGISTER AND EXIT 
*             TO MODULE FEP98E. 
*         3.  IF BITS 0-8 DECIMAL OF THE EC REGISTER ARE  EQUAL TO  100 
*             OCTAL,  POST  THE  SYSRD ERROR MESSAGE AND EXIT TO MODULE 
*             FEP98E. 
*         4.  IF BITS 0-8 DECIMAL OF THE EC REGISTER ARE  EQUAL  TO  OR 
*             GREATER THAN 30 OCTAL, EXIT TO MODULE FEP98D. 
*         5.  POST THE ERROR MESSAGE FOR THE ERROR  CODE  IN  BITS  0-8 
*             DECIMAL OF THE EC REGISTER AND EXIT TO MODULE FEP98E. 
* 
/ 
*         ENTRY-
*         B1 REGISTER  CONTAINS  THE  NUMBER OF THE MODULE IN WHICH THE 
*            ERROR WAS DETECTED.
*         B15 REGISTER  CONTAINS THE STATUS FROM THE SYSRD COMMAND IF A 
*            SYSRD STATUS ERROR IS TO BE REPORTED.
*         EA REGISTER  CONTAINS  THE  LINE  NUMBER  OF THE ERROR IN THE 
*            MODULE.
*         EC REGISTER BITS 0-11 DECIMAL CONTAIN THE ERROR CODE IF IT IS 
*            A DRIVER DETECTED ERROR, OR BITS 0-8 IF  IT  IS  A  MODULE 
*            DETECTED ERROR.
*         EM REGISTER CONTAINS THE ERROR MESSAGE ADDRESS  IF  IT  IS  A 
*            DRIVER DETECTED ERROR. 
* 
*         EXIT- 
*         B12 REGISTER CONTAINS THE LINE NUMBER IN THE  DISPLAY  BUFFER 
*            AT WHICH THE ERROR MESSAGE WILL BE POSTED. 
*         B13 REGISTER CONTAINS THE ERROR CODE NUMBER  IF  EXIT  IS  TO 
*            MODULE FEP98D. 
*         EXIT TO MODULE FEP98D IF THE MODULE DETECTED  ERROR  CODE  IS 
*            EQUAL TO OR GREATER THAN 30 OCTAL. 
*         EXIT TO MODULE FEP98E IF THE MODULE DETECTED  ERROR  CODE  IS 
*            LESS THAN 30 OCTAL, OR IF A DRIVER DETECTED ERROR IS BEING 
*            REPORTED WITH THE ERROR  MESSAGE  POSTED  IN  THE  DISPLAY 
*            BUFFER.
* 
*         SUBMODULES REFERENCED-
*         FEP98D - POST THE MESSAGE FOR THE ERROR CODES  30  OCTAL  AND 
*                  ABOVE. 
*         FEP98E - POST THE COMMAND ABORTED MESSAGE.
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
* 
/---------MODULE DETECTED ERROR MESSAGES. 
* 
0  FORMAT  FEP*D  E0100 L*OC  SYSRD STATUS ERROR (STATUS=*O)
1  FORMAT  FEP01  E0001 L*OC  CNTR DIAG. W/R COMPARE ERROR
3  FORMAT  FEP03  E0003 L*OC  GEN. EXT. STATUS COMPARE ERROR
5  FORMAT  FEP05  E0005 L*OC  ESM LSP STATUS COMPARE ERROR
7  FORMAT  FEP07  E0007 L*OC  LSP MAINT. W/R COMPARE ERROR
11 FORMAT  FEP09  E0011 L*OC  CPU-ESM W/R COMPARE ERROR 
13 FORMAT  FEP11  E0013 L*OC  CNTR/ESM DIAGWR COMPARE ERROR 
15 FORMAT  FEP13  E0015 L*OC  CNTR/ESM DIAGRD COMPARE ERROR 
17 FORMAT  FEP15  E0017 L*OC  ONE SECTOR READ COMPARE ERROR 
21 FORMAT  FEP17  E0021 L*OC  ONE SECTOR WRITE COMPARE ERROR
23 FORMAT  FEP19  E0023 L*OC  ONE SECTOR WRITE VERIFY ERROR 
25 FORMAT  FEP21  E0025 L*OC  VERIFY ERROR NOT DETECTED 
27 FORMAT  FEP23  E0027 L*OC  ONE TRACK READ COMPARE ERROR
* 
/---------DETERMINE TERMINAL/KL DISPLAY STARTING LINE NO. 
* 
30 B12 = 4                       *KL DISPLAY LINE NUMBER
   IF(ES.AND.TM.NE.0) B12 = 3    *TERMINAL MODE LINE NUMBER 
* 
/---------DETERMINE IF MODULE DETECTED ERROR. 
* 
   IF(EC.LT.4000) GOTO 36        *NOT PRODUCT OVERLAY ERROR 
   MSG EM TO LINE B12+2          *PRODUCT OVERLAY ERROR 
   EXIT TO 98E                   *EXIT TO NEXT MODULE 
* 
/---------POST THE MODULE DETECTED ERROR MESSAGE. 
* 
36 B13 = EC.AND.777              *MESSAGE FORMAT NUMBER 
   IF(EC.NE.100) GOTO 40         *IF NOT SYSRD ERROR CODE 
   MSG 0 (B1,EA,B15) TO LINE B12+2  *SYSRD ERROR
   EXIT TO 98E                   *EXIT TO NEXT MODULE 
40 IF(B13.GE.30)EXIT TO 98D      *IF MESSAGE IN NEXT MODULE 
   MSG B13 (EA) TO LINE B12+2    *POST ERROR MESSAGE
   EXIT TO 98E                   *EXIT TO NEXT MODULE 
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP98C POST MODULE DETECTED ERRORS
   MODULE FEP98D,DEMA3(14),LOCK 
***       FEP98D - POST MODULE DETECTED ERRORS
**
*         FEP98D - POST MODULE DETECTED ERRORS
*         ------------------------------------
* 
*         PURPOSE-
*         FEP98D WILL POST THE ERROR MESSAGES FOR THE  MODULE  DETECTED 
*         ERROR CODES 0031 OCTAL THROUGH 0057 OCTAL.
* 
*         METHOD- 
*         1.  SET THE B13 REGISTER EQUAL TO THE  CONTENTS  OF  THE  B13 
*             REGISTER MINUS 30 OCTAL.
*         2.  POST THE ERROR MESSAGE FOR THE ERROR  CODE  IN  BITS  0-8 
*             DECIMAL OF THE EC REGISTER. 
*         3.  EXIT TO MODULE FEP98E.
* 
/ 
*         ENTRY-
*         B12 REGISTER CONTAINS THE NUMBER OF THE LINE IN  THE  DISPLAY 
*            BUFFER AT WHICH TO POST THE ERROR MESSAGE. 
*         B13 REGISTER CONTAINS THE ERROR CODE OF THE  MODULE  DETECTED 
*            ERROR. 
*         EA REGISTER CONTAINS THE LINE NUMBER  OF  THE  ERROR  IN  THE 
*            MODULE.
* 
*         EXIT- 
*         B12 REGISTER CONTAINS THE LINE NUMBER IN THE  DISPLAY  BUFFER 
*            AT WHICH THE ERROR MESSAGE WAS POSTED. 
*         EXIT IS TO MODULE FEP98E. 
* 
*         SUBMODULES REFERENCED-
*         FEP98E - POST THE COMMAND ABORTED MESSAGE.
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
* 
/---------MODULE DETECTED ERROR MESSAGES. 
* 
1  FORMAT  FEP25  E0031 L*OC  ONE TRACK WRITE VERIFY ERROR
3  FORMAT  FEP27  E0033 L*OC  ONE TRACK WRITE COMPARE ERROR 
5  FORMAT  FEP29  E0035 L*OC  ONE CYL. READ COMPARE ERROR 
7  FORMAT  FEP31  E0037 L*OC  ONE CYLINDER VERIFY ERROR 
11 FORMAT  FEP33  E0041 L*OC  ONE CYL. WRITE COMPARE ERROR
* 
/---------POST THE MODULE DETECTED ERROR MESSAGE. 
* 
30 B13 = B13-30B                 *ADJUST MESSAGE NUMBER 
   MSG B13 (EA) TO LINE B12+2    *POST ERROR MESSAGE
   EXIT TO 98E                   *EXIT TO NEXT MODULE 
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP98D POST MODULE DETECTED ERRORS
   MODULE FEP98E,DEMA3(14),LOCK 
***       FEP98E - COMMAND ABORT PROCESSOR
**
*         FEP98E - COMMAND ABORT PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         FEP98E  WILL  POST  A  MESSAGE  IN THE DISPLAY BUFFER FOR THE 
*         MALET COMMAND THAT WAS BEING  EXECUTED  WHEN  THE  ERROR  WAS 
*         DETECTED  FOR  THE  NUMBERS  1  THROUGH  27  OCTAL  IN THE B8 
*         REGISTER. 
* 
*         METHOD- 
*         1.  SET  THE B13 REGISTER EQUAL TO THE LOWER 6 BITS OF THE B8 
*             REGISTER. 
*         2.  IF THE LOWER 8 BITS OF THE B8 REGISTER ARE EQUAL TO ZERO, 
*             EXIT TO MODULE FEP98G.
*         3.  IF THE NUMBER IN THE B13 REGISTER  IS  GREATER  THAN  27, 
*             EXIT TO MODULE FEP98F.
*         4.  POST THE FORMAT  MESSAGE  NUMBER  CONTAINED  IN  THE  B13 
*             REGISTER  IN  THE  DISPLAY  BUFFER  AT  THE  LINE  NUMBER 
*             CONTAINED IN THE B12 REGISTER.
*         5.  EXIT TO MODULE FEP98G.
* 
/ 
*         ENTRY-
*         B8 REGISTER  CONTAINS  THE  NUMBER  FOR THE MALET I/O COMMAND 
*            BEING EXECUTED AT THE TIME THE ERROR WAS DETECTED. 
*         B12  REGISTER  CONTAINS THE NUMBER OF THE LINE IN THE DISPLAY 
*            BUFFER AT WHICH TO POST THE COMMAND MESSAGE. 
* 
*         EXIT- 
*         IF BITS  0-5  OF THE B8 REGISTER CONTAIN ZERO, EXIT TO MODULE 
*            FEP98G WITHOUT POSTING ANY COMMAND MESSAGE.
*         IF THE B8 REGISTER CONTAINS A NUMBER FROM 1 THROUGH 27 OCTAL, 
*            THE COMMAND MESSAGE POSTED IN THE DISPLAY  BUFFER  AT  THE 
*            LINE  NUMBER  CONTAINED  IN  THE  B12 REGISTER AND EXIT TO 
*            MODULE FEP98G. 
*         IF THE  B8  REGISTER CONTAINS A NUMBER GREATER THAN 27 OCTAL, 
*            EXIT TO MODULE FEP98F WITH THE NUMBER OF  THE  COMMAND  IN 
*            THE B13 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         FEP98F - COMMAND ABORT PROCESSOR
*         FEP98G - PROCESS THE  LAST FUNCTION CODE SENT TO THE 7155-401 
*                  CONTROLLER.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR MALET I/O COMMANDS USED BY FEP.
* 
1  FORMAT FEP ABORT ON .DIAGRD. COMMAND 
2  FORMAT FEP ABORT ON .DIAGRD FROM ESM. COMMAND
3  FORMAT FEP ABORT ON .DIAGWR. COMMAND 
4  FORMAT FEP ABORT ON .DIAGWR TO ESM. COMMAND
5  FORMAT FEP ABORT ON .LSP ECHO. COMMAND 
6  FORMAT FEP ABORT ON .READ ONE SECTOR. COMMAND
7  FORMAT FEP ABORT ON .READ ONE CODED SECTOR. COMMAND
10 FORMAT FEP ABORT ON .READ TO ESM X SECTORS. COMMAND
11 FORMAT FEP ABORT ON .READ TO ESM X CODED SECTORS. COMMAND
12 FORMAT FEP ABORT ON .REL. COMMAND
13 FORMAT FEP ABORT ON .RES CONTROLLER. COMMAND 
14 FORMAT FEP ABORT ON .RES DRIVE. COMMAND
15 FORMAT FEP ABORT ON .RESET. COMMAND
16 FORMAT FEP ABORT ON .RESET LSP. COMMAND
17 FORMAT FEP ABORT ON .SEEK. COMMAND 
20 FORMAT FEP ABORT ON .SHORTRD. COMMAND
21 FORMAT FEP ABORT ON .STATUS DETAIL. COMMAND
22 FORMAT FEP ABORT ON .STATUS ESM LSP. COMMAND 
23 FORMAT FEP ABORT ON .STATUS GENERAL. COMMAND 
24 FORMAT FEP ABORT ON .STATUS GENERAL EXT. COMMAND 
25 FORMAT FEP ABORT ON .SYSRD ESM. COMMAND
26 FORMAT FEP ABORT ON .VERIFY FROM ESM X SECTORS. COMMAND
27 FORMAT FEP ABORT ON .VERIFY FROM ESM X CODED SEC. COMMAND
* 
/---------PROCESS LAST MALET COMMAND EXECUTED.
* 
30 B13 = B8.AND.77
   IF(B13.EQ.0) EXIT TO 98G  *IF NOT VALID COMMAND NUMBER 
   IF(B13.GE.30)EXIT TO 98F  *IF MESSAGE IN NEXT MODULE 
   MSG B13 TO LINE B12       *COMMAND ABORT MESSAGE 
   EXIT TO 98G               *EXIT TO NEXT SUBMODULE
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98E COMMAND ABORT PROCESSOR
   MODULE FEP98F,DEMA3(14),LOCK 
***       FEP98F - COMMAND ABORT PROCESSOR
**
*         FEP98F - COMMAND ABORT PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         FEP98F  WILL  POST  A  MESSAGE  IN THE DISPLAY BUFFER FOR THE 
*         MALET COMMAND THAT WAS BEING  EXECUTED  WHEN  THE  ERROR  WAS 
*         DETECTED  FOR  THE  NUMBERS  30 OCTAL THROUGH 34 OCTAL IN THE 
*         LOWER 6 BITS OF THE B8 REGISTER.
* 
*         METHOD- 
*         1.  SET THE  B13  REGISTER  EQUAL  TO THE CONTENTS OF THE B13 
*             REGISTER MINUS 30 OCTAL.
*         2.  POST THE  FORMAT  MESSAGE  NUMBER  CONTAINED  IN  THE B13 
*             REGISTER  IN  THE  DISPLAY  BUFFER  AT  THE  LINE  NUMBER 
*             CONTAINED IN THE B12 REGISTER.
*         3.  EXIT TO MODULE FEP98G.
* 
/ 
*         ENTRY-
*         B13 REGISTER CONTAINS THE NUMBER FOR THE  MALET  I/O  COMMAND 
*            BEING EXECUTED AT THE TIME THE ERROR WAS DETECTED. 
*         B12 REGISTER CONTAINS THE NUMBER OF THE LINE IN  THE  DISPLAY 
*            BUFFER AT WHICH TO POST THE COMMAND MESSAGE. 
* 
*         EXIT- 
*         THE COMMAND MESSAGE POSTED IN THE DISPLAY BUFFER AT THE  LINE 
*            NUMBER CONTAINED IN THE B12 REGISTER.
*         EXIT WILL ALWAYS BE TO MODULE FEP98F. 
* 
*         SUBMODULES REFERENCED-
*         FEP98G - PROCESS THE  LAST FUNCTION CODE SENT TO THE 7155-401 
*                  CONTROLLER.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR MALET I/O COMMANDS USED BY FEP.
* 
0  FORMAT FEP ABORT ON .WRITE ONE SEC. COMMAND
1  FORMAT FEP ABORT ON .WRITE ONE CODED SEC. COMMAND
2  FORMAT FEP ABORT ON .WRITE FROM ESM X SEC. COMMAND 
3  FORMAT FEP ABORT ON .WRITE FROM ESM X CODED SEC. COMMAND 
4  FORMAT FEP ABORT ON .COMPARE. COMMAND
* 
/---------PROCESS LAST I/O COMMAND EXECUTED.
* 
30 B13 = B13-30B             *ADJUST MESSAGE NUMBER 
   MSG B13 TO LINE B12       *COMMAND ABORT MESSAGE 
   EXIT TO 98G               *EXIT TO NEXT SUBMODULE
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98F COMMAND ABORT PROCESSOR
   MODULE FEP98G,DEMA3(14),LOCK 
***       FEP98G - LAST FUNCTION PROCESSOR
**
*         FEP98G - LAST FUNCTION PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         FEP98G WILL PLACE A MESSAGE IN THE DISPLAY BUFFER  INDICATING 
*         THE  LAST MAJOR FUNCTION CODE FOR FUNCTION CODES 0 THROUGH 37 
*         OCTAL ISSUED TO THE 7155-401 CONTROLLER PRIOR TO THE  CURRENT 
*         FAILURE.
* 
*         METHOD- 
*         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 WORD AS 
*             DEFINED BY THE B13 REGISTER, GO TO STEP 5.
*         4.  IF  DETAILED STATUS WORD EIGHTEEN DECIMAL IS NOT EQUAL TO 
*             7777 OCTAL AND BITS 8  THROUGH  11  DECIMAL  IN  DETAILED 
*             STATUS WORD EIGHTEEN DECIMAL ARE NOT EQUAL TO ZERO, GO TO 
*             STEP 6. 
*         5.  SET THE  B13  REGISTER  EQUAL  TO  THE CONTENTS OF 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.  SET THE B14 REGISTER EQUAL TO 7777 OCTAL. 
*         8.  IF THE FUNCTION CODE IN THE B13 REGISTER IS 0, OR  1,  OR 
*             4,  OR  5,  OR  6,  OR 7, OR 10 OCTAL, OR 12 OCTAL, OR 14 
*             OCTAL, OR 16 OCTAL, OR 20  OCTAL,  OR  21  OCTAL,  OR  23 
*             OCTAL, OR 35 OCTAL, OR 36 OCTAL, OR 37 OCTAL, SET THE B14 
*             REGISTER EQUAL  TO  THE  NUMBER  OF  THE  FORMAT  MESSAGE 
*             INDICATING   THE   FUNCTION   ISSUED   TO   THE  7155-401 
*             CONTROLLER. 
*         9.  IF THE  B14  REGISTER  IS  EQUAL  TO  7777 OCTAL, EXIT TO 
*             MODULE FEP98H.
*         10. POST  THE FORMAT MESSAGE FOR THE NUMBER OF THE MESSAGE IN 
*             THE B14 REGISTER AT THE DISPLAY LINE NUMBER PLUS  ONE  IN 
*             THE B12 REGISTER. 
*         11. EXIT TO MODULE FEP98I.
* 
/ 
*         ENTRY-
*         B12 REGISTER CONTAINS THE NUMBER OF THE LINE IN  THE  DISPLAY 
*            BUFFER AT WHICH TO POST THE FUNCTION MESSAGE.
*         LF REGISTER CONTAINS THE LAST FUNCTION SENT TO  THE  7155-401 
*            CONTROLLER.
*         STATUS BUFFER CONTAINS STATUS INFORMATION.
* 
*         EXIT- 
*         IF THE  FUNCTION  CODE  SENT TO THE 7155-401 CONTROLLER WAS A 
*            CODE FROM 0 THROUGH 37 OCTAL,  A  MESSAGE  POSTED  IN  THE 
*            DISPLAY  BUFFER  INDICATING  THE LAST FUNCTION SENT TO THE 
*            7155-401 CONTROLLER AND EXIT MADE TO MODULE FEP98I.
*         IF THE  FUNCTION  CODE  WAS  GREATER  THAN 37, EXIT TO MODULE 
*            FEP98H WITH THE FUNCTION CODE NUMBER IN THE B13  REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98H - LAST FUNCTION PROCESSOR. 
*         FEP98I - DISPLAY STATUS INFORMATION.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
*         B14 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR THE FUNCTIONS SENT TO THE CONTROLLER.
* 
0  FORMAT LAST FUNCTION = 000B (CONNECT)
1  FORMAT LAST FUNCTION = 001B (SEEK 1 TO 1 INTERLACE)
4  FORMAT LAST FUNCTION = 004B (READ) 
5  FORMAT LAST FUNCTION = 005B (WRITE)
6  FORMAT LAST FUNCTION = 006B (WRITE VERIFY) 
7  FORMAT LAST FUNCTION = 007B (READ CHECKWORD) 
10 FORMAT LAST FUNCTION = 010B (OPERATION COMPLETE) 
11 FORMAT LAST FUNCTION = 012B (GENERAL STATUS) 
12 FORMAT LAST FUNCTION = 014B (CONTINUE) 
13 FORMAT LAST FUNCTION = 016B (FORMAT PACK)
20 FORMAT LAST FUNCTION = 020B (DRIVE RELEASE)
21 FORMAT LAST FUNCTION = 021B (RETURN CYLINDER ADDRESS)
22 FORMAT LAST FUNCTION = 023B (20-WORD DETAILED STATUS)
24 FORMAT LAST FUNCTION = 035B (WRITE LAST SECTOR)
25 FORMAT LAST FUNCTION = 036B (WRITE VERIFY LAST SECTOR) 
26 FORMAT LAST FUNCTION = 037B (WRITE PROTECTED SECTOR) 
* 
/---------DETERMINE THE FUNCTION ISSUED CAUSING THE ERROR.
* 
30 B13=0                           *BUFFER INDEX IF NO RETRY
   IF(SB(52).NE.0) B13=25          *BUFFER INDEX ON RETRY 
   IF(SB.EQ.7777) GOTO 32          *IF NO GENERAL STATUS
   IF(SB(B13).AND.4000.EQ.0)GOTO 32  *IF NO DETAILED STATUS 
   IF(SB(B13+22).EQ.7777)GOTO 32     *IF NO VALID STATUS
   IF(SB(B13+22).RS.8.NE.0) GOTO 34  *IF CONNECT BIT SET
32 B13 = LF                        *USE LF REGISTER AS INDEX
   GOTO 36
34 B13 = SB(B13+3).RS.4      *LAST FUNCTION FROM CONTROLWARE
* 
/---------CHECK FOR A KNOWN FUNCTION CODE.
* 
36 B14 = 7777B
   IF(B13.EQ.0) B14 = 0      *IF KNOWN FUNCTION 
   IF(B13.EQ.1) B14 = 1      *IF KNOWN FUNCTION 
   IF(B13.EQ.4) B14 = 4      *IF KNOWN FUNCTION 
   IF(B13.EQ.5) B14 = 5      *IF KNOWN FUNCTION 
   IF(B13.EQ.6) B14 = 6      *IF KNOWN FUNCTION 
   IF(B13.EQ.7) B14 = 7      *IF KNOWN FUNCTION 
   IF(B13.EQ.10) B14 = 10    *IF KNOWN FUNCTION 
   IF(B13.EQ.12) B14 = 11    *IF KNOWN FUNCTION 
   IF(B13.EQ.14) B14 = 12    *IF KNOWN FUNCTION 
   IF(B13.EQ.16) B14 = 13    *IF KNOWN FUNCTION 
   IF(B13.EQ.20) B14 = 20    *IF KNOWN FUNCTION 
   IF(B13.EQ.21) B14 = 21    *IF KNOWN FUNCTION 
   IF(B13.EQ.23) B14 = 22    *IF KNOWN FUNCTION 
   IF(B13.EQ.35) B14 = 24    *IF KNOWN FUNCTION 
   IF(B13.EQ.36) B14 = 25    *IF KNOWN FUNCTION 
   IF(B13.EQ.37) B14 = 26    *IF KNOWN FUNCTION 
   IF(B14.EQ.7777)EXIT TO 98H  *EXIT TO NEXT MODULE 
* 
/---------POST THE MESSAGE FOR THE LAST FUNCTION. 
* 
   MSG B14 TO LINE B12+1     *POST LAST FUNCTION MESSAGE
   EXIT TO 98I               *EXIT TO THE NEXT MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98G LAST FUNCTION PROCESSOR
   MODULE FEP98H,DEMA3(14),LOCK 
***       FEP98H - LAST FUNCTION PROCESSOR
**
*         FEP98H - LAST FUNCTION PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         FEP98H  WILL PLACE A MESSAGE IN THE DISPLAY BUFFER INDICATING 
*         THE LAST MAJOR FUNCTION CODE  FOR  FUNCTION  CODES  40  OCTAL 
*         THROUGH 5022 OCTAL ISSUED TO THE 7155-401 CONTROLLER PRIOR TO 
*         THE CURRENT FAILURE.
* 
*         METHOD- 
*         1.  IF THE  FUNCTION CODE IN THE B13 REGISTER IS 40 OCTAL, OR 
*             41 OCTAL, OR 43 OCTAL, OR 47 OCTAL, OR 66  OCTAL,  OR  70 
*             OCTAL,  OR  71  OCTAL,  OR  72 OCTAL, OR 73 OCTAL, OR 414 
*             OCTAL, OR 5004 OCTAL, OR 5010 OCTAL, OR  5021  OCTAL,  OR 
*             5022  OCTAL,  SET  THE  B14 REGISTER TO THE NUMBER OF THE 
*             FORMAT MESSAGE INDICATING  THE  FUNCTION  ISSUED  TO  THE 
*             7155-401 CONTROLLER.
*         2.  IF THE B14 REGISTER  IS  EQUAL  TO  7777  OCTAL,  POST  A 
*             MESSAGE  IN  THE DISPLAY BUFFER AT THE LINE NUMBER IN THE 
*             B12 REGISTER PLUS ONE INDICATING THE FUNCTION CODE NUMBER 
*             AND  THE  FUNCTION  CODE  IS  UNKNOWN, AND EXIT TO MODULE 
*             FEP98I. 
*         3.  POST THE  FORMAT MESSAGE FOR THE NUMBER OF THE MESSAGE IN 
*             THE B14 REGISTER AT THE DISPLAY NUMBER PLUS  ONE  IN  THE 
*             B12 REGISTER. 
*         4.  EXIT TO MODULE FEP98I.
* 
/ 
*         ENTRY-
*         B12  REGISTER  CONTAINS THE NUMBER OF THE LINE IN THE DISPLAY 
*            BUFFER AT WHICH TO POST THE FUNCTION MESSAGE.
*         B13  REGISTER CONTAINS THE LAST FUNCTION SENT TO THE 7155-401 
*            CONTROLLER.
* 
*         EXIT- 
*         A MESSAGE  POSTED  IN  THE DISPLAY BUFFER INDICATING THE LAST 
*            FUNCTION SENT TO THE 7155-401 CONTROLLER AND EXIT MADE  TO 
*            MODULE FEP98I. 
* 
*         SUBMODULES REFERENCED-
*         FEP98I - DISPLAY STATUS INFORMATION.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
*         B14 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR THE FUNCTION SENT TO THE CONTROLLER. 
* 
0  FORMAT LAST FUNCTION = 040B (READ SHORT) 
1  FORMAT LAST FUNCTION = 041B (SELECT STROBES AND OFFSETS) 
3  FORMAT LAST FUNCTION = 043B (BUFFER READ)
5  FORMAT LAST FUNCTION = 047B (SCAN CYLINDER ADDRESSES)
7  FORMAT LAST FUNCTION = 066B (EXTENDED GENERAL STATUS)
13 FORMAT LAST FUNCTION = 070B (LRG SEC. BUFFER TO PP READ) 
14 FORMAT LAST FUNCTION = 071B (LRG SEC. PP TO BUFFER WRITE)
15 FORMAT LAST FUNCTION = 072B (LRG SEC. ESM TO BUFFER READ)
16 FORMAT LAST FUNCTION = 073B (LRG SEC. BUF. TO ESM WRITE) 
20 FORMAT LAST FUNCTION = 414B (AUTOLOAD FROM PP) 
22 FORMAT LAST FUNCTION = 5004B (READ STATUS BITS)
23 FORMAT LAST FUNCTION = 5010B (PORT MASTER CLEAR) 
24 FORMAT LAST FUNCTION = 5021B (MAINTENANCE MODE READ) 
25 FORMAT LAST FUNCTION = 5022B (MAINTENANCE MODE WRITE)
27 FORMAT LAST FUNCTION = *OCTB 
* 
/---------CHECK FOR A KNOWN FUNCTION CODE.
* 
30 IF(B13.EQ.40) B14 = 0     *IF KNOWN FUNCTION 
   IF(B13.EQ.41) B14 = 1     *IF KNOWN FUNCTION 
   IF(B13.EQ.43) B14 = 3     *IF KNOWN FUNCTION 
   IF(B13.EQ.47) B14 = 5     *IF KNOWN FUNCTION 
   IF(B13.EQ.66) B14 = 7     *IF KNOWN FUNCTION 
   IF(B13.EQ.70) B14 = 13    *IF KNOWN FUNCTION 
   IF(B13.EQ.71) B14 = 14    *IF KNOWN FUNCTION 
   IF(B13.EQ.72) B14 = 15    *IF KNOWN FUNCTION 
   IF(B13.EQ.73) B14 = 16    *IF KNOWN FUNCTION 
   IF(B13.EQ.414) B14 = 20   *IF KNOWN FUNCTION 
   IF(B13.EQ.5004) B14 = 22  *IF KNOWN FUNCTION 
   IF(B13.EQ.5010) B14 = 23  *IF KNOWN FUNCTION 
   IF(B13.EQ.5021) B14 = 24  *IF KNOWN FUNCTION 
   IF(B13.EQ.5022) B14 = 25  *IF KNOWN FUNCTION 
   IF(B14.NE.7777) GOTO 34   *IF KNOWN FUNCTION 
* 
/---------POST THE UNKNOWN FUNCTION MESSAGE.
* 
   MSG 27(B13) TO LINE B12+1  *POST UNKNOWN FUNCTION MESSAGE
   EXIT TO 98I               *EXIT TO THE NEXT MODULE 
* 
/---------POST THE MESSAGE FOR THE LAST FUNCTION. 
* 
34 MSG B14 TO LINE B12+1     *POST LAST FUNCTION MESSAGE
   EXIT TO 98I               *EXIT TO THE NEXT MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98H LAST FUNCTION PROCESSOR
   MODULE FEP98I,DEMA3(14),LOCK 
***       FEP98I - STATUS DISPLAY 
**
*         FEP98I - STATUS DISPLAY 
*         ----------------------- 
* 
*         PURPOSE-
*         FEP98I  WILL  DISPLAY  THE  VARIOUS STATUSES, DATA MISCOMPARE 
*         INFORMATION, AND OTHER  USEFUL  INFORMATION  RELATED  TO  THE 
*         CURRENT FAILURE.
* 
*         METHOD- 
*         1.  POST THE MESSAGE INDICATING THE WORDS TRANSFERRED, NUMBER 
*             OF RETRIES, AND NUMBER OF ERRORS DETECTED.
*         2.  IF THE B8 REGISTER CONTAINS 13 (RES,CONTROLLER  COMMAND), 
*             GO TO STEP 8. 
*         3.  IF THE B8 REGISTER CONTAINS 14 (RES,DRIVE COMMAND), GO TO 
*             STEP 8. 
*         4.  GO TO STEP 8 IF THE CYLINDER NUMBER CONTAINED IN  THE  B7 
*             REGISTER   IS  EQUAL  TO  7777  OCTAL  (INVALID  CYLINDER 
*             ADDRESS). 
*         5.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED), 
*             POST THE FORMAT MESSAGE INDICATING THE CURRENT  CYLINDER, 
*             TRACK, AND SECTOR, AND GO TO STEP 8.
*         6.  IF THE RETRY COUNT IS NONZERO AND THE LAST TAKEN  GENERAL 
*             STATUS  IS  ZERO,  POST THE FORMAT MESSAGE INDICATING THE 
*             CURRENT  CYLINDER,  TRACK,  AND  SECTOR  WITH  A  MESSAGE 
*             INDICATING SUCCESSFUL RECOVERY AND TO TO STEP 8.
*         7.  IF THE RETRY COUNT IS NONZERO AND THE LAST TAKEN  GENERAL 
*             STATUS  IS NONZERO POST THE FORMAT MESSAGE INDICATING THE 
*             CURRENT  CYLINDER,  TRACK,  AND  SECTOR  WITH  A  MESSAGE 
*             INDICATING UNSUCCESSFUL RECOVERY. 
*         8.  IF THE ERROR CODE IN THE EC  REGISTER  IS  NOT  EQUAL  TO 
*             5731, GO TO STEP 10.
*         9.  POST THE MESSAGES  INDICATING  THE  EXPECTED  AND  ACTUAL 
*             CYLINDER, TRACK, AND SECTOR FOR A COMPARE ERROR ON A READ 
*             CODED DRIVER COMMAND, AND GO TO STEP 16.
*         10. IF  THE UPPER 3 BITS OF THE ERROR CODE ARE EQUAL TO ZERO, 
*             GO TO STEP 16.
*         11. IF  THE  UPPER  3 BITS OF THE ERROR CODE ARE NOT EQUAL TO 
*             ONE, GO TO STEP 13. 
*         12. SET  THE  COMPARE WORD COUNT IN LOCATION IB(504) EQUAL TO 
*             500 OCTAL IF A READ SHORT COMMAND OR READ  CODED  COMMAND 
*             WAS  NOT  EXECUTED, 460 OCTAL IF A READ SHORT COMMAND WAS 
*             EXECUTED OR  504  OCTAL  IF  A  READ  CODED  COMMAND  WAS 
*             EXECUTED AND TO TO STEP 15. 
*         13. IF THE UPPER 3 BITS OF THE ERROR CODE ARE  NOT  EQUAL  TO 
*             TWO, GO TO STEP 16. 
*         14. SET THE COMPARE WORD COUNT IN LOCATION IB(500)  EQUAL  TO 
*             THE CONTENTS OF THE WC REGISTER.
*         15. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST A DATA 
*             COMPARE  FORMAT  MESSAGE  FOR EACH OF THE FIRST FOUR DATA 
*             DATA ERRORS DETECTED IN  THE  INPUT  DATA  BUFFER.
*         16. IF STATUS BUFFER WORD 0 IS EQUAL TO 7777  OCTAL,  OR  THE 
*             RETRY  COUNT IS EQUAL TO ZERO AND STATUS BUFFER WORD 0 IS 
*             EQUAL TO ZERO, GO TO STEP 20. 
*         17. POST  THE  MESSAGE HEADER MESSAGE FOR THE DETAILED STATUS 
*             DISPLAY.
*         18. IF  THE  RETRY  COUNT  IS  NOT  EQUAL  TO  ZERO, POST THE 
*             MESSAGES TO DISPLAY THE  GENERAL  AND  DETAILED  STATUSES 
*             FROM  LOCATIONS  25  OCTAL THROUGH 51 OCTAL IN THE STATUS 
*             BUFFER. 
*         19. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS 
*             BUFFER IS NOT EQUAL TO ZERO, POST THE MESSAGES TO DISPLAY 
*             THE  GENERAL  AND  DETAILED  STATUSES  FROM  LOCATIONS  0 
*             THROUGH 24 OCTAL IN THE STATUS BUFFER.
*         20. SET  THE  B14  REGISTER  EQUAL  TO 7777 OCTAL AND EXIT TO 
*             MODULE FEP98J.
* 
/ 
*         ENTRY-
*         B3 = RANDOM NUMBER GENERATOR STARTER. 
*         B5 = CURRENT SECTOR NUMBER. 
*         B6 = CURRENT TRACK NUMBER.
*         B7 = CURRENT CYLINDER NUMBER. 
*         B8 = NUMBER FOR THE LAST PRODUCT OVERLAY COMMAND EXECUTED.
*         B11 = NUMBER OF ERRORS DETECTED.
*         B12 = NUMBER OF THE LINE IN THE DISPLAY BUFFER. 
*         BA = THE BASE ADDRESS ON A DATA COMPARE ERRORS. 
*         EC = ERROR CODE NUMBER. 
*         WC = WORD COUNT IF ERROR CODE EQUALS 2XXX.
*         WT = NUMBER OF WORDS TRANSMITTED. 
*         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 FEP98J.
* 
*         SUBMODULES REFERENCED-
*         FEP98J - ANALYZE GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         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=*OCTB  RETRIES=*OB  ERRORS=*DECD  SEED=*OCTB 
6  FORMAT CYL=*OCTB TRK=*OB SEC=*OB 
7  FORMAT CYL=*OCTB TRK=*OB SEC=*OB  - SUCCESSFUL RECOVERY
10 FORMAT CYL=*OCTB TRK=*OB SEC=*OB  - UNSUCCESSFUL RECOVERY
11 FORMAT COMPARE ERROR- EXPECTED  CYL=*OCTB TRK=*OB SEC=*OB
12 FORMAT                ACTUAL    CYL=*OCTB TRK=*OB SEC=*OB
13 FORMAT DATA ERROR - W*OCTB  E*OCTB  A*OCTB  D*OCTB 
14 FORMAT                  WORD    DETAILED STATUS (OCTAL)
15 FORMAT                    1     *OCT *OCT *OCT *OCT *OCT 
16 FORMAT FIRST GENERAL      6     *OCT *OCT *OCT *OCT *OCT 
17 FORMAT LAST GENERAL       6     *OCT *OCT *OCT *OCT *OCT 
20 FORMAT STATUS= *OCTB     11D    *OCT *OCT *OCT *OCT *OCT 
21 FORMAT                   16D    *OCT *OCT *OCT *OCT *OCT 
* 
/---------BUILD THE STATUS DISPLAY FOR THE ERROR. 
* 
30 MSG 1(WT,SB(52),B11,B3)TO LINE B12+3  *DISPLAY LINE 7
32 B12 = B12+4               *LINE NUMBER ON THE DISPLAY
* 
/---------DISPLAY THE CURRENT CYLINDER, TRACK, AND SECTOR.
* 
   IF(B8.EQ.13) GOTO 34      *IF RES CONTROLLER COMMAND 
   IF(B8.EQ.14) GOTO 34      *IF RES DRIVE COMMAND
   IF(B7.EQ.7777) GOTO 34    *IF INVALID CYLINDER NUMBER
   B13 = 10                  *UNSUCCESSFUL RECOVERY MESSAGE 
   IF(SB.EQ.0) B13 = 7       *SUCCESSFUL RECOVERY MESSAGE 
   IF(SB(52).EQ.0) B13 = 6   *NO RECOVERY MESSAGE 
   MSG B13(B7,B6,B5)TO LINE B12  *POST THE MESSAGE
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
* 
/---------DISPLAY THE CYLINDER, TRACK, AND SECTOR ON A READ 
/---------CODED COMPARE ERROR.
* 
34 IF(ES.AND.TM.EQ.0)B12=B12+1   *SKIP LINE IF KL DISPLAY 
   IF(EC.NE.5731) GOTO 40    *IF NO READ CODED COMPARE ERROR
   MSG 11 (B7,B6,B5) TO LINE B12  *POST EXPECTED MESSAGE
   B12 = B12+1                 *UPDATE DISPLAY LINE NUMBER
   IF(B8.RS.6.EQ.11)COPY SB(1) TO IB(500) FOR 4  *READ CODED
   MSG 12 3 WORDS FROM IB(500) TO LINE B12  *POST ACTUAL
   B12 = B12+1                   *UPDATE DISPLAY LINE NUMBER
   GOTO 50                     *GO TO UPDATE DIS. LINE NO.
* 
/---------DISPLAY UP TO FOUR DATA ERRORS ON DATA BUFFER 
/---------COMPARE ERRORS. 
* 
40 IF(EC.RS.9.EQ.0) GOTO 52  *IF NO DATA COMPARE ERRORS 
   B13 = BA                  *SET DATA BUFFER INDEX 
   B14= 0                    *INITIALIZE ERROR COUNTER
   IF(EC.RS.9.NE.1) GOTO 42  *IF NO DATA COMPARE ERRORS 
   IB(504) = 500             *NORMAL WORD COUNT 
   IF(B8.EQ.2034) IB(504) = 460  *SHORTRD WORD COUNT
   IF(B8.EQ.734) IB(504) = 504   *READ CODED WORD COUNT 
   GOTO 44                   *GO TO CHECK THE DATA
42 IF(EC.RS.9.NE.2) GOTO 52  *IF NO DATA COMPARE ERRORS 
   IB(504) = WC              *SET WORD COUNT FROM WC REG. 
* 
/---------SEARCH FOR THE ERRORS IN THE DATA BUFFER. 
* 
44 B15 = IB(B13).XOR.OB(B13)    *CHECK WORDS FOR A ERROR
   IF(B15.EQ.0) GOTO 46            *IF NO DATA ERROR
   MSG 13 (B13,OB(B13),IB(B13),B15) TO LINE B12  *POST ERROR
   B12 = B12+1                   *UPDATE DISPLAY LINE NUMBER
   GOTO 50 WHILE (B14+1.GE.4)  *IF FOUR ERRORS POSTED 
46 GOTO 44 WHILE(B13+1.NE.IB(504))  *LOOP TO CHECK DATA BUFFER
* 
/---------DISPLAY STATUS BUFFER ERROR.
* 
50 IF(ES.AND.TM.EQ.0)B12=B12+1   *SKIP LINE IF KL DISPLAY 
* 
/---------CHECK IF GENERAL, DETAILED STATUS TO BE DISPLAYED.
* 
52 IF(SB.EQ.7777) GOTO 56    *IF INVALID GENERAL STATUS 
   IF(SB(52).NE.0) GOTO 54   *IF RETRY COUNT NONZERO
   IF(SB.EQ.0) GOTO 56       *IF NO DETAILED STATUS 
54 MSG 14 TO LINE B12        *FIRST LINE OF STATUS DISPLAY
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
* 
/---------DISPLAY FIRST GENERAL STATUS AND DETAILED STATUS. 
* 
   B13 = 25                  *INDEX IF RETRIES DONE 
   IF(SB(52).NE.0) GOSUB 70  *DISPLAY FIRST STATUS ON RETRY 
* 
/---------DISPLAY LAST GENERAL STATUS AND DETAILED STATUS.
* 
   B13 = 0                   *INDEX FOR THE LAST STATUS 
   IF(SB.NE.0) GOSUB 70      *DISPLAY THE LAST STATUS 
56 B14 = 7777                *PRESERVICE FORECAST GROUP FLAG
   EXIT TO 98J               *EXIT TO THE NEXT MODULE 
* 
/---------BUILD THE GENERAL AND DETAILED STATUS DISPLAY.
* 
70 MSG 15 5 WORDS FROM SB(B13+1) TO LINE B12  *WORDS 1-6
   B14 = 16                        *MESSAGE FOR FIRST STATUS
   IF(B13.EQ.0) B14 = 17           *MESSAGE FOR LAST STATUS 
   MSG B14 5 WORDS FROM SB(B13+6) TO LINE B12+1  *WORDS 6-10
   MSG 21 5 WORDS FROM SB(B13+20)TO LINE B12+3  *WORDS 16-20
   IB(502) = SB(B13+15)                      *STATUS WORD 13
   IB(503) = SB(B13+16)                      *STATUS WORD 14
   IB(504) = SB(B13+17)                      *STATUS WORD 15
   B14 = SB(B13+13)                          *STATUS WORD 11
   B15 = SB(B13+14)                          *STATUS WORD 12
   B13 = SB(B13)                             *GENERAL STATUS
   MSG 20 (B13,B14,B15,IB(502),IB(503),IB(504))TO LINE B12+2
   B12 = B12+4                   *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1   *SKIP LINE IF KL DISPLAY 
   RETURN                        *EXIT THE SUBROUTINE 
   END 30                        *END OF THE MODULE 
COMPILE                      *FEP98I STATUS DISPLAY 
   MODULE FEP98J,DEMA3(14),LOCK 
***       FEP98J - PROCESS GENERAL STATUS 
**
*         FEP98J - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         FEP98J  WILL  DETERMINE  THE  REASON  THE  GENERAL STATUS WAS 
*         NONZERO AFTER A OPERATION IN THE 7155-401 CONTROLLER. 
* 
*         METHOD- 
*         1.  IF THE  RETRY  COUNT  IS ZERO, SET THE INDEX (B13) TO THE 
*             STATUS BUFFER TO ZERO, OTHERWISE  SET  THE  INDEX  TO  25 
*             OCTAL.
*         2.  IF THE GENERAL STATUS IS EQUAL TO  0000  OR  7777  OCTAL, 
*             EXIT TO MODULE FEP98S.
*         3.  IF THE GENERAL STATUS IS 0002, 0010 OR 2XXX  OCTAL,  POST 
*             THE CORRECT MESSAGE.
*         4.  IF THE GENERAL STATUS  IS  5020  OCTAL,  EXIT  TO  MODULE 
*             FEP98Q. 
*         5.  IF  DETAILED STATUS WORD 1 IS EQUAL TO 7777 OCTAL OR BITS 
*             8 THROUGH 11 DECIMAL IN DETAILED STATUS WORD  18  DECIMAL 
*             ARE  EQUAL  TO  ZERO,  POST  THE  MESSAGE  GENERAL STATUS 
*             NONZERO, BUT NO DETAILED STATUS.
*         6.  IF THE GENERAL STATUS NOT EQUAL TO 5000  OCTAL,  EXIT  TO 
*             MODULE FEP98N.
*         7.  IF THE DETAILED STATUS INDICATES AN ILLEGAL PARAMETER  OR 
*             AN  ILLEGAL NUMBER OF PARAMETERS, POST THE CORRECT FORMAT 
*             MESSAGE.
*         8.  IF  BIT  0  IS  SET  IN  DETAILED STATUS WORD 3, POST THE 
*             MESSAGE CONTROLLER TO LSP FUNCTION NOT REPLIED TO.
*         9.  IF DETAILED STATUS WORD 19 DECIMAL IS EQUAL TO 7777 OCTAL 
*             OR BIT 6 IS NOT SET IN DETAILED STATUS WORD  19  DECIMAL, 
*             GO TO STEP 14.
*         10. IF  BIT 7 IS SET IN DETAILED STATUS WORD 19 DECIMAL, POST 
*             THE MESSAGE CONTROLLER DETECTED LSP CHANNEL PARITY ERROR. 
*         11. IF  BIT 4 IS SET IN DETAILED STATUS WORD 19 DECIMAL, POST 
*             THE MESSAGE ESM LSP DETECTED  CONTROLLER  CHANNEL  PARITY 
*             ERROR.
*         12. IF BIT 2 IS SET IN DETAILED STATUS WORD 19 DECIMAL,  POST 
*             THE MESSAGE ESM LSP DETECTED DOUBLE BIT ERROR IN ESM. 
*         13. IF BIT 0 IS SET IN DETAILED STATUS WORD 19 DECIMAL,  POST 
*             THE MESSAGE ESM ABORT STATUS ERROR. 
*         14. IF THE  FUNCTION SENT TO THE CONTROLLER CAUSING THE ERROR 
*             IS A BUFFER READ OR BUFFER WRITE FUNCTION, EXIT TO MODULE 
*             FEP98K. 
*         15. IF BIT 0 IS SET IN DETAILED STATUS WORD 17 DECIMAL,  EXIT 
*             MODULE FEP98L, OTHERWISE EXIT TO MODULE FEP98M. 
*         16. DETERMINE THE PRESERVICE FORECAST GROUP  NUMBER  FOR  ANY 
*             MESSAGE POSTED BY THIS MODULE AND PLACE THE NUMBER IN THE 
*             B14 REGISTER. 
*         17. EXIT TO MODULE FEP98S.
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE FEP98K IF THE GENERAL STATUS IS 5000 OCTAL AND 
*            A BUFFER READ OR BUFFER WRITE WAS BEING EXECUTED.
*         IF THE GENERAL STATUS IS 5000 OCTAL, EXIT TO MODULE FEP98L IF 
*            BIT 0 IS SET IN DETAILED STATUS WORD 16 DECIMAL, OR MODULE 
*            FEP98M IF BIT 0 IS NOT SET  IN  DETAILED  STATUS  WORD  16 
*            DECIMAL. 
*         EXIT TO MODULE FEP98Q IF THE GENERAL STATUS IS EQUAL TO  5020 
*            OCTAL OR THE DRIVE IS NOT READY AND SAFE.
*         EXIT TO MODULE FEP98N IF THE  GENERAL  STATUS  IS  NOT  0000, 
*            0002, 0010, 2XXX, 5000, OR 5020. 
*         EXIT TO MODULE FEP98S IF THE GENERAL STATUS IS 0000, 7777, OR 
*            IF  THE  CAUSE OF THE ERROR HAS BEEN POSTED IN THE DISPLAY 
*            BUFFER WITH THE PRESERVICE FORECAST GROUP  NUMBER  IN  THE 
*            B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         FEP98K - PROCESS BUFFER READ OR BUFFER WRITE ERROR. 
*         FEP98L - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         FEP98M - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         FEP98N - PROCESS 4400, 4600, 4700, AND 5200 GENERAL STATUS. 
*         FEP98Q - ISOLATE DRIVE FAULTS.
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
*         FLOWCHARTS- 
*         ************************************************************* 
*         *    ISOLATION FLOWCHART FOR THE GENERAL STATUS ERRORS.     * 
*         *                                                           * 
*         *         STEPS 1 THROUGH 20 ARE IN MODULE FEP98J.          * 
*         *         STEPS 21 THROUGH 38 ARE IN MODULE FEP98K.         * 
*         *         STEPS 39 THROUGH 64 ARE IN MODULE FEP98L.         * 
*         *         STEPS 65 THROUGH 82 ARE IN MODULE FEP98M.         * 
*         *         STEPS 83 THROUGH 100 ARE IN MODULE FEP98N.        * 
*         *                                                           * 
*         *    NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE       * 
*         *          TO MODULE FEP98S.                                * 
*         *                                                           * 
*         ************************************************************* 
* 
*         1.  IF THE RETRY COUNT IN THE STATUS BUFFER IS EQUAL TO  ZERO 
*             SET  THE  STATUS  BUFFER INDEX TO ZERO, OTHERWISE SET THE 
*             STATUS BUFFER INDEX TO 25 OCTAL.
*         2.  IF THE  GENERAL  STATUS  IS  EQUAL TO 7777 OCTAL, EXIT TO 
*             MODULE FEP98S.
*         3.  IF THE  GENERAL  STATUS  IS EQUAL TO ZERO, EXIT TO MODULE 
*             FEP98S. 
*         4.  IF THE  GENERAL  STATUS  IS EQUAL TO 0002 OCTAL, POST THE 
*             MESSAGE FMD CONTROLLER AND/OR DRIVE BUSY. 
*         5.  IF THE  GENERAL  STATUS  IS EQUAL TO 0010 OCTAL, POST THE 
*             MESSAGE FMD UNIT RESERVED BY ANOTHER CONTROLLER.
*         6.  IF THE  GENERAL  STATUS  IS EQUAL TO 2XXX OCTAL, POST THE 
*             MESSAGE CONTROLLER RESERVED BY ANOTHER MAINFRAME. 
*         7.  IF THE  GENERAL  STATUS  IS  EQUAL TO 5020 OCTAL, EXIT TO 
*             MODULE FEP98Q TO ISOLATE THE CAUSE OF THE DRIVE FAULT.
*         8.  IF  DETAILED STATUS WORD 1 IS EQUAL TO 7777 OCTAL OR BITS 
*             8 THROUGH 11 DECIMAL IN DETAILED STATUS WORD  18  DECIMAL 
*             ARE  EQUAL  TO  ZERO,  POST  THE  MESSAGE  GENERAL STATUS 
*             NONZERO, BUT NO DETAILED STATUS.
*         9.  IF THE GENERAL STATUS IS NOT EQUAL TO 5000 OCTAL,  GO  TO 
*             STEP 83.
*         10. IF BIT 3 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO  ZERO, 
*             POST THE MESSAGE CONTROLWARE ILLEGAL PARAMETER ERROR. 
*         11. IF BIT 2 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO  ZERO, 
*             POST THE MESSAGE CONTROLWARE ILLEGAL NUMBER OF PARAMETERS 
*             ERROR.
*         12. IF  BIT 0 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO, 
*             POST THE MESSAGE CONTROLLER TO LSP FUNCTION  NOT  REPLIED 
*             TO. 
*         13. IF DETAILED STATUS WORD 19 DECIMAL IS EQUAL TO 7777 OCTAL 
*             OR  IF  BIT 6 IN DETAILED STATUS WORD 19 DECIMAL IS EQUAL 
*             TO ZERO (NO LSP STATUS), GO TO STEP 18. 
*         14. IF BIT 7 IN DETAILED STATUS WORD 19 DECIMAL IS NOT  EQUAL 
*             ZERO,  POST  THE  MESSAGE CONTROLLER DETECTED LSP CHANNEL 
*             PARITY ERROR. 
*         15. IF  BIT 4 IN DETAILED STATUS WORD 19 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE  ESM  LSP  DETECTED  CONTROLLER 
*             CHANNEL PARITY ERROR. 
*         16. IF BIT 2 IN DETAILED STATUS WORD 19 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE ESM LSP DETECTED DOUBLE BIT 
*             ERROR IN ESM. 
*         17. IF  BIT 0 IN DETAILED STATUS WORD 19 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE ESM ABORT STATUS ERROR. 
*         18. IF  BITS  4  THROUGH 11 DECIMAL IN DETAILED STATUS WORD 3 
*             ARE EQUAL TO 43 OCTAL, GO TO STEP 21. 
*         19. IF  BITS  4  THROUGH 11 DECIMAL IN DETAILED STATUS WORD 3 
*             ARE EQUAL TO 44  OCTAL,  COMPLIMENT  BIT  6  IN  DETAILED 
*             STATUS WORD AND GO TO STEP 21.
*         20. IF BIT 0 IN DETAILED STATUS WORD 19 DECIMAL IS NOT  EQUAL 
*             ZERO, GO TO STEP 41, OTHERWISE GO TO STEP 65. 
*         21. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS  EQUAL  TO 
*             ZERO,  POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER 
*             FULL ERROR. 
*         22. IF  BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO,  POST  THE  MESSAGE  CONTROLLER  CHANNEL  ACTIVE 
*             ERROR.
*         23. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  CONTROLLER DEADMAN TIMEOUT 
*             ERROR.
*         24. IF  BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE  MESSAGE  CONTROLLER  CHANNEL  RESERVED 
*             ERROR.
*         25. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO   ZERO,  POST  THE  MESSAGE  CONTROLLER  BUFFER  INPUT 
*             REGISTER FULL ERROR.
*         26. IF  BIT  11 DECIMAL IN DETAILED STATUS WORD 17 DECIMAL IS 
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE  SEARCH 
*             IN PROGRESS ERROR.
*         27. IF BIT 8 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO  ZERO, POST THE MESSAGE FMD SYNC BYTE MISCOMPARE ERROR 
*             AND IF BIT 3 (LARGE SECTOR) IS  SET  IN  DETAILED  STATUS 
*             WORD  18  DECIMAL,  ALSO  POST  A  MESSAGE INDICATING THE 
*             HEAD(S) ON WHICH THE FAILURE WAS DETECTED.
*         28. IF  BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR  AND 
*             IF BIT 3 (LARGE SECTOR) IS SET IN DETAILED STATUS WORD 18 
*             DECIMAL, ALSO POST A MESSAGE INDICATING  THE  HEAD(S)  ON 
*             WHICH THE FAILURE WAS DETECTED. 
*         29. IF BIT 10 DECIMAL IN DETAILED STATUS WORD 17  DECIMAL  IS 
*             NOT  EQUAL  TO  ZERO,  POST THE MESSAGE CONTROLLER SECTOR 
*             LENGTH ERROR. 
*         30. IF  BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY  ERROR. 
*         31. IF  BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  CONTROLLER  BUFFER  OUTPUT 
*             REGISTER PARITY ERROR.
*         32. IF BIT 3 IN DETAILED STATUS WORD 16 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  CONTROLLER  UP/DOWN  COUNT 
*             NONZERO ERROR.
*         33. IF  BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER  LOST  CONTROL  WORD 
*             ERROR  AND  IF  BIT  3  (LARGE SECTOR) IS SET IN DETAILED 
*             STATUS WORD 18 DECIMAL, ALSO POST  A  MESSAGE  INDICATING 
*             THE HEAD(S) ON WHICH THE FAILURE WAS DETECTED.
*         34. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT  EQUAL 
*             TO   ZERO,   POST   THE   MESSAGE   CONTROLLER  PROCESSOR 
*             INSTRUCTION TIMEOUT ERROR.
*         35. IF  BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR. 
*         36. IF  BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  CONTROLLER  NONCORRECTABLE 
*             STATUS  ERROR  AND  IF  BIT  3  (LARGE  SECTOR) IS SET IN 
*             DETAILED STATUS WORD 18  DECIMAL,  ALSO  POST  A  MESSAGE 
*             INDICATING   THE   HEAD(S)   ON  WHICH  THE  FAILURE  WAS 
*             DETECTED. 
*         37. IF  BIT  11 DECIMAL IN DETAILED STATUS WORD 16 DECIMAL IS 
*             NOT EQUAL TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE 
*             CLOCK  ERROR  AND  IF  BIT  3  (LARGE  SECTOR)  IS SET IN 
*             DETAILED STATUS WORD 18  DECIMAL,  ALSO  POST  A  MESSAGE 
*             INDICATING   THE   HEAD(S)   ON  WHICH  THE  FAILURE  WAS 
*             DETECTED. 
*         38. POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         39. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE FMD ADD.  FIELD ERROR WHILE 
*             RECOVERING DATA FIELD.
*         40. IF  BIT  8  IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         41. IF  BITS  0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO ZERO, GO TO STEP 55. 
*         42. IF  BITS  0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 14  OCTAL,  POST  THE  MESSAGE  FMD  CYLINDER  ADDRESS 
*             MISCOMPARE ERROR. 
*         43. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1  ARE  EQUAL 
*             TO   12   OCTAL,  POST  THE  MESSAGE  FMD  TRACK  ADDRESS 
*             MISCOMPARE ERROR. 
*         44. IF  BITS  4  THROUGH 11 DECIMAL IN DETAILED STATUS WORD 3 
*             ARE EQUAL TO 30 OCTAL, GO TO STEP 46. 
*         45. IF  BITS  4  THROUGH 11 DECIMAL IN DETAILED STATUS WORD 3 
*             ARE NOT EQUAL TO 31 OCTAL, GO TO STEP 47. 
*         46. IF  BITS  10 AND 11 DECIMAL IN DETAILED STATUS WORD 1 ARE 
*             EQUAL TO ZERO, POST THE MESSAGE FMD TRACK EXPECTED TO  BE 
*             FLAWED BUT WAS NOT, OTHERWISE GO TO STEP 49.
*         47. IF BIT 10 DECIMAL IN DETAILED STATUS WORD 5 IS NOT  EQUAL 
*             TO ZERO,  POST THE MESSAGE FMD FACTORY FLAW MAP DETECTED. 
*         48. IF BIT 11 DECIMAL IN DETAILED STATUS WORD 5 IS NOT  EQUAL 
*             TO ZERO, POST THE MESSAGE FMD TRACK FLAW DETECTED.
*         49. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1  ARE  EQUAL 
*             TO   11  OCTAL,  POST  THE  MESSAGE  FMD  SECTOR  ADDRESS 
*             MISCOMPARE ERROR. 
*         50. IF  BITS  0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO  10  OCTAL,  POST  THE  MESSAGE  CONTROLWARE  ABNORMAL 
*             DETAILED STATUS.
*         51. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO  ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR AND 
*             IF BIT 3 (LARGE SECTOR) IS SET IN DETAILED STATUS WORD 18 
*             DECIMAL,  ALSO  POST  A MESSAGE INDICATING THE HEAD(S) ON 
*             WHICH THE FAILURE WAS DETECTED. 
*         52. IF  BIT  10 DECIMAL IN DETAILED STATUS WORD 17 DECIMAL IS 
*             NOT EQUAL TO ZERO, POST  THE  MESSAGE  CONTROLLER  SECTOR 
*             LENGTH ERROR. 
*         53. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT  EQUAL 
*             TO   ZERO,   POST   THE   MESSAGE   CONTROLLER  PROCESSOR 
*             INSTRUCTION TIMEOUT ERROR.
*         54. POST  THE  MESSAGE  CONTROLLER  ADDRESS  FIELD  ERROR NOT 
*             ISOLATED. 
*         55. IF  BIT  2 IN DETAILED STATUS WORD 16 DECIMAL IS EQUAL TO 
*             ZERO, TO TO STEP 57.
*         56. IF  BIT 7 IN DETAILED STATUS WORD 9 IS NOT EQUAL TO ZERO, 
*             POST THE MESSAGE  CONTROLLER  STATUS  INDICATES  FMD  NOT 
*             READY,  OTHERWISE  EXIT  TO  MODULE FEP98Q TO ISOLATE THE 
*             CAUSE OF THE DRIVE FAULT. 
*         57. IF  BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR  AND 
*             IF BIT 3 (LARGE SECTOR) IS SET IN DETAILED STATUS WORD 18 
*             DECIMAL, ALSO POST A MESSAGE INDICATING  THE  HEAD(S)  ON 
*             WHICH THE FAILURE WAS DETECTED. 
*         58. IF BIT 10 DECIMAL IN DETAILED STATUS WORD 17  DECIMAL  IS 
*             NOT  EQUAL  TO  ZERO,  POST THE MESSAGE CONTROLLER SECTOR 
*             LENGTH ERROR. 
*         59. IF  BIT  11 DECIMAL IN DETAILED STATUS WORD 17 DECIMAL IS 
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE  SEARCH 
*             IN PROGRESS ERROR.
*         60. IF BIT 8 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE FMD ADDRESS FIELD SYNC BYTE 
*             MISCOMPARE ERROR AND IF BIT 3 (LARGE SECTOR)  IS  SET  IN 
*             DETAILED  STATUS  WORD  18  DECIMAL,  ALSO POST A MESSAGE 
*             INDICATING  THE  HEAD(S)  ON  WHICH   THE   FAILURE   WAS 
*             DETECTED. 
*         61. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT  EQUAL 
*             TO   ZERO,   POST   THE   MESSAGE   CONTROLLER  PROCESSOR 
*             INSTRUCTION TIMEOUT ERROR.
*         62. IF  BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER  LOST  CONTROL  WORD 
*             ERROR  AND  IF  BIT  3  (LARGE SECTOR) IS SET IN DETAILED 
*             STATUS WORD 18 DECIMAL, ALSO POST  A  MESSAGE  INDICATING 
*             THE HEAD(S) ON WHICH THE FAILURE WAS DETECTED.
*         63. IF BITS 7 THROUGH 10 DECIMAL IN DETAILED STATUS  WORD  16 
*             DECIMAL   ARE   NOT  EQUAL  TO  ZERO,  POST  THE  MESSAGE 
*             CONTROLLER NONCORRECTABLE  STATUS  ERROR  AND  IF  BIT  3 
*             (LARGE SECTOR) IS SET IN DETAILED STATUS WORD 18 DECIMAL, 
*             ALSO POST A MESSAGE INDICATING THE HEAD(S) ON  WHICH  THE 
*             FAILURE WAS DETECTED. 
*         64. IF BIT 11 DECIMAL IN DETAILED STATUS WORD 16  DECIMAL  IS 
*             NOT EQUAL TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE 
*             CLOCK ERROR AND  IF  BIT  3  (LARGE  SECTOR)  IS  SET  IN 
*             DETAILED  STATUS  WORD  18  DECIMAL,  ALSO POST A MESSAGE 
*             INDICATING THE HEAD(S) ON WHICH THE FAILURE WAS DETECTED, 
*             OTHERWISE POST THE MESSAGE CONTROLLER ADDRESS FIELD ERROR 
*             NOT ISOLATED. 
*         65. IF  BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, GO TO STEP 67. 
*         66. IF  BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE  MESSAGE  CONTROLLER  PARITY  ERROR  ON 
*             PARAMETERS,  OTHERWISE  POST THE MESSAGE CONTROLLER ERROR 
*             NOT ISOLATED. 
*         67. IF  BIT  8  IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         68. IF  BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, EXIT TO MODULE FEP98Q TO ISOLATE  THE  CAUSE  OF 
*             THE DRIVE FAULT.
*         69. IF BIT 11 DECIMAL IN DETAILED STATUS WORD 17  DECIMAL  IS 
*             NOT  EQUAL  TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC 
*             BYTE SEARCH IN PROGRESS ERROR.
*         70. IF  BIT 8 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST  THE  MESSAGE  FMD  DATA  FIELD  SYNC  BYTE 
*             MISCOMPARE  ERROR  AND  IF BIT 3 (LARGE SECTOR) IS SET IN 
*             DETAILED STATUS WORD 18  DECIMAL,  ALSO  POST  A  MESSAGE 
*             INDICATING   THE   HEAD(S)   ON  WHICH  THE  FAILURE  WAS 
*             DETECTED. 
*         71. IF  BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR  AND 
*             IF BIT 3 (LARGE SECTOR) IS SET IN DETAILED STATUS WORD 18 
*             DECIMAL, ALSO POST A MESSAGE INDICATING  THE  HEAD(S)  ON 
*             WHICH THE FAILURE WAS DETECTED. 
*         72. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT  EQUAL 
*             TO ZERO,  POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR. 
*         73. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  CONTROLLER  BUFFER  OUTPUT 
*             REGISTER PARITY ERROR.
*         74. IF  BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER  LOST  CONTROL  WORD 
*             ERROR  AND  IF  BIT  3  (LARGE SECTOR) IS SET IN DETAILED 
*             STATUS WORD 18 DECIMAL, ALSO POST  A  MESSAGE  INDICATING 
*             THE HEAD(S) ON WHICH THE FAILURE WAS DETECTED.
*         75. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT  EQUAL 
*             TO   ZERO,   POST   THE   MESSAGE   CONTROLLER  PROCESSOR 
*             INSTRUCTION TIMEOUT ERROR.
*         76. IF  BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR. 
*         77. IF  BIT  11 DECIMAL IN DETAILED STATUS WORD 16 DECIMAL IS 
*             NOT EQUAL TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE 
*             CLOCK  ERROR  AND  IF  BIT  3  (LARGE  SECTOR)  IS SET IN 
*             DETAILED STATUS WORD 18  DECIMAL,  ALSO  POST  A  MESSAGE 
*             INDICATING   THE   HEAD(S)   ON  WHICH  THE  FAILURE  WAS 
*             DETECTED. 
*         78. IF  BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO,  POST  THE  MESSAGE  CONTROLLER  CHANNEL  ACTIVE 
*             ERROR.
*         79. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  CONTROLLER DEADMAN TIMEOUT 
*             ERROR.
*         80. IF  BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE  MESSAGE  CONTROLLER  CHANNEL  RESERVED 
*             ERROR.
*         81. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO   ZERO,  POST  THE  MESSAGE  CONTROLLER  BUFFER  INPUT 
*             REGISTER FULL ERROR.
*         82. IF  BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  CONTROLLER  BUFFER  OUTPUT 
*             REGISTER   FULL   ERROR,   OTHERWISE   POST  THE  MESSAGE 
*             CONTROLLER DATA FIELD ERROR NOT ISOLATED. 
*         83. IF  THE  GENERAL STATUS IS NOT EQUAL TO 4400 OCTAL, GO TO 
*             STEP 93.
*         84. IF  BIT  0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 90.
*         85. IF  BITS  0  THROUGH  3 IN DETAILED STATUS WORD 1 ARE NOT 
*             EQUAL TO ZERO, GO TO STEP 87. 
*         86. IF  BIT  11 DECIMAL IN DETAILED STATUS WORD 17 DECIMAL IS 
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD ADD.  FIELD  SYNC 
*             BYTE SEARCH IN PROGRESS ERROR, OTHERWISE POST THE MESSAGE 
*             FMD ADDRESS FIELD SYNC BYTE MISCOMPARE ERROR AND IF BIT 3 
*             (LARGE SECTOR) IS SET IN DETAILED STATUS WORD 18 DECIMAL, 
*             ALSO POST A MESSAGE INDICATING THE HEAD(S) ON  WHICH  THE 
*             FAILURE WAS DETECTED. 
*         87. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1  ARE  EQUAL 
*             TO  14  OCTAL,  POST  THE  MESSAGE  FMD  CYLINDER ADDRESS 
*             MISCOMPARE ERROR. 
*         88. IF  BITS  0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO  12  OCTAL,  POST  THE  MESSAGE  FMD   TRACK   ADDRESS 
*             MISCOMPARE ERROR. 
*         89. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1  ARE  EQUAL 
*             TO   11  OCTAL,  POST  THE  MESSAGE  FMD  SECTOR  ADDRESS 
*             MISCOMPARE ERROR, OTHERWISE POST THE  MESSAGE  CONTROLLER 
*             ERROR NOT ISOLATED. 
*         90. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 IS EQUAL TO 
*             ZERO, POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         91. IF BIT 11 DECIMAL IN DETAILED STATUS WORD 17  DECIMAL  IS 
*             NOT  EQUAL  TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC 
*             BYTE SEARCH IN PROGRESS ERROR.
*         92. POST  THE  MESSAGE  FMD  DATA  FIELD SYNC BYTE MISCOMPARE 
*             ERROR AND IF BIT 6 (LARGE  SECTOR)  IS  SET  IN  DETAILED 
*             STATUS  WORD  18  DECIMAL, ALSO POST A MESSAGE INDICATING 
*             HEAD(S) ON WHICH THE FAILURE WAS DETECTED.
*         93. IF  THE  GENERAL STATUS IS NOT EQUAL TO 4600 OCTAL, GO TO 
*             STEP 96.
*         94. IF  BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE  FMD  ADDRESS  FIELD  CHECKWORD 
*             ERROR  AND  IF  BIT  3  (LARGE SECTOR) IS SET IN DETAILED 
*             STATUS WORD 18 DECIMAL, ALSO POST  A  MESSAGE  INDICATING 
*             THE HEAD(S) ON WHICH THE FAILURE WAS DETECTED.
*         95. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO  ZERO, POST THE MESSAGE FMD DATA FIELD CHECKWORD ERROR 
*             AND IF BIT 3 (LARGE SECTOR) IS  SET  IN  DETAILED  STATUS 
*             WORD  18  DECIMAL,  ALSO  POST  A  MESSAGE INDICATING THE 
*             HEAD(S) ON WHICH THE FAILURE WAS DETECTED, OTHERWISE POST 
*             THE MESSAGE CONTROLLER ERROR NOT ISOLATED.
*         96. IF THE GENERAL STATUS IS EQUAL TO 4700  OCTAL,  POST  THE 
*             MESSAGE  FMD  ADDRESS  FIELD CHECKWORD ERROR AND IF BIT 3 
*             (LARGE SECTOR) IS SET IN DETAILED STATUS WORD 18 DECIMAL, 
*             ALSO  POST  A MESSAGE INDICATING THE HEAD(S) ON WHICH THE 
*             FAILURE WAS DETECTED. 
*         97. IF  THE  GENERAL  STATUS IS NOT EQUAL TO 5200 OCTAL, POST 
*             THE MESSAGE CONTROLWARE ABNORMAL GENERAL STATUS.
*         98. IF  BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST  THE  MESSAGE  FMD  NONCORRECTABLE  ADDRESS 
*             FIELD  CHECKWORD  ERROR  AND  IF BIT 3 IS SET IN DETAILED 
*             STATUS WORD 18 DECIMAL, ALSO POST  A  MESSAGE  INDICATING 
*             THE HEAD(S) ON WHICH THE FAILURE WAS DETECTED.
*         99. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST THE MESSAGE FMD NONCORRECTABLE DATA FIELD 
*             CHECKWORD ERROR AND IF BIT 3 IS SET  IN  DETAILED  STATUS 
*             WORD  18  DECIMAL,  ALSO  POST  A  MESSAGE INDICATING THE 
*             HEAD(S) ON WHICH THE FAILURE WAS DETECTED, OTHERWISE POST 
*             THE MESSAGE CONTROLLER ERROR NOT ISOLATED.
*        100. EXIT TO MODULE FEP98S.
* 
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR. 
* 
0  FORMAT FMD UNIT RESERVED BY ANOTHER CONTROLLER.
1  FORMAT CONTROLLER RESERVED BY ANOTHER MAINFRAME. 
2  FORMAT GENERAL STATUS NONZERO, BUT NO DETAILED STATUS. 
3  FORMAT CONTROLWARE ILLEGAL PARAMETER ERROR.
4  FORMAT CONTROLWARE ILLEGAL NUMBER OF PARAMETERS ERROR. 
5  FORMAT CONTROLLER ERROR NOT ISOLATED.
6  FORMAT FMD CONTROLLER AND/OR DRIVE BUSY. 
7  FORMAT CONTROLLER TO LSP FUNCTION NOT REPLIED TO.
10 FORMAT CONTROLLER DETECTED LSP CHANNEL PARITY ERROR. 
11 FORMAT ESM LSP DETECTED CONTROLLER CHANNEL PARITY ERROR. 
12 FORMAT ESM LSP DETECTED DOUBLE BIT ERROR IN ESM. 
13 FORMAT ESM ABORT STATUS ERROR. 
* 
/---------INITIALIZE THE INDEX TO THE STATUS BUFFER.
* 
30 B13=0                     *INDEX IF NOT RECOVERY ATTEMPT 
   IF(SB(52).NE.0)B13=25     *INDEX IF RECOVERY ATTEMPTED 
* 
/---------CHECK FOR GENERAL STATUS OF 7777 OR 0000. 
* 
   IF(SB(B13).EQ.7777) EXIT TO 98S  *IF INVALID STATUS
   IF(SB(B13).EQ.0) EXIT TO 98S     *IF NO STATUS ERROR 
   B15=6                            *MESSAGE NUMBER 
   IF(SB(B13).EQ.2) GOTO 70         *FMD SUBSYSTEM BUSY 
   B15=0                            *MESSAGE NUMBER 
   IF(SB(B13).EQ.10) GOTO 70        *DRIVE RESERVED 
   B15=1                            *MESSAGE NUMBER 
   IF(SB(B13).RS.9.EQ.2) GOTO 70    *IF CONTROLLER RESERVED 
   IF(SB(B13).EQ.5020) EXIT TO 98Q  *IF DRIVE MALFUNCTION 
   B15=2                            *MESSAGE NUMBER 
   IF(SB(B13+1).EQ.7777) GOTO 70    *IF NO DETAILED STATUS
   IF(SB(B13+22).RS.8.EQ.0)GOTO 70  *IF NO DETAILED STATUS
* 
/---------CHECK FOR GENERAL STATUS OF 5000. 
* 
   IF(SB(B13).NE 5000) EXIT TO 98N  *NO 5000 GENERAL STATUS 
   B15=3                            *MESSAGE NUMBER 
   IF(SB(B13+3).AND.10.NE.0)GOTO 70  *ILLEGAL PARAMETER 
   B15=4                            *MESSAGE NUMBER 
   IF(SB(B13+3).AND.4.NE.0)GOTO 70  *NUMBER OF PARAMETERS 
   B15=7                            *MESSAGE NUMBER 
   IF(SB(B13+3).AND.1.NE.0)GOTO 70  *NO LSP FUNCTION REPLY
   B14=SB(B13+23)                   *DETAILED STATUS WORD 19
   IF(B14.EQ.7777) GOTO 34          *NO LSP STATUS
   IF(B14.AND.100.EQ.0) GOTO 34     *NO LSP STATUS
   B15=10                           *MESSAGE NUMBER 
   IF(B14.AND.200.NE.0) GOTO 70     *LSP CHANNEL P.E. 
   B15=11                           *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *CONTROLLER CHANNEL P.E.
   B15=12                           *MESSAGE NUMBER 
   IF(B14.AND.4.NE.0) GOTO 70       *ESM DOUBLE BIT ERROR 
   B15=13                           *MESSAGE NUMBER 
   IF(B14.AND.1.NE.0) GOTO 70       *ESM ABORT STATUS 
34 B14=SB(B13+21)                   *DETAILED STATUS WORD 17
* 
/---------CHECK FOR BUFFER READ FUNCTION ISSUED.
* 
   IF(SB(B13+3).AND.7760.EQ.1060)EXIT TO 98K  *BUFFER READ
   B14=B14.XOR.100                  *TOGGLE BIT 6 
* 
/---------CHECK FOR BUFFER WRITE FUNCTION ISSUED. 
* 
   IF(SB(B13+3).AND.7760.EQ.1100)EXIT TO 98K  *BUFFER WRITE 
   IF(B14.AND.1.NE.0) EXIT TO 98L   *ADDRESS FIELD ERROR
   EXIT TO 98M                      *DATA FIELD ERROR 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.0) B14=1        *IF MESSAGE 0
   IF(B15.EQ.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.7) B14=4        *IF MESSAGE 7
   IF(B15.EQ.10) B14=4       *IF MESSAGE 10 
   IF(B15.EQ.11) B14=4       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=4       *IF MESSAGE 12 
   IF(B15.EQ.13) B14=4       *IF MESSAGE 13 
   EXIT TO 98S               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98J PROCESS GENERAL STATUS 
   MODULE FEP98K,DEMA3(14),LOCK 
***       FEP98K - PROCESS GENERAL STATUS 
**
*         FEP98K - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         FEP98K WILL DETERMINE REASON FOR THE FAILURE DURING A  BUFFER 
*         WRITE OR BUFFER READ OPERATION BY THE MA722-A CONTROLWARE.
* 
*         METHOD- 
*         1.  IF BIT 6 IS SET IN DETAILED STATUS WORD 17 DECIMAL,  POST 
*             THE   MESSAGE  CONTROLLER  BUFFER  OUTPUT  REGISTER  FULL 
*             ERROR.
*         2.  IF BIT  2 IS SET IN DETAILED STATUS WORD 17 DECIMAL, POST 
*             THE MESSAGE CONTROLLER CHANNEL ACTIVE ERROR.
*         3.  IF BIT  3 IS SET IN DETAILED STATUS WORD 17 DECIMAL, POST 
*             THE MESSAGE CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR. 
*         4.  IF BIT  4 IS SET IN DETAILED STATUS WORD 17 DECIMAL, POST 
*             THE MESSAGE CONTROLLER CHANNEL RESERVED ERROR.
*         5.  IF BIT  5 IS SET IN DETAILED STATUS WORD 17 DECIMAL, POST 
*             THE MESSAGE CONTROLLER BUFFER INPUT REGISTER FULL  ERROR. 
*         6.  IF  BIT  11  DECIMAL  IS  SET  IN DETAILED STATUS WORD 17 
*             DECIMAL,  POST  THE  MESSAGE  FMD  SYNC  BYTE  SEARCH  IN 
*             PROGRESS ERROR. 
*         7.  IF BIT  8  OR  BIT  9  ARE SET IN DETAILED STATUS WORD 17 
*             DECIMAL, EXIT TO MODULE FEP98O. 
*         8.  IF BIT  10  DECIMAL  IS  SET  IN  DETAILED STATUS WORD 17 
*             DECIMAL,  POST  THE  MESSAGE  CONTROLLER  SECTOR   LENGTH 
*             ERROR.
*         9.  IF BIT 0 IS SET IN DETAILED STATUS WORD 16 DECIMAL,  POST 
*             THE MESSAGE CONTROLLER WRITE VERIFY ERROR.
*         10. IF BIT 1 IS SET IN DETAILED STATUS WORD 16 DECIMAL,  POST 
*             THE  MESSAGE  CONTROLLER  BUFFER  OUTPUT  REGISTER PARITY 
*             ERROR.
*         11. IF  BIT 3 IS SET IN DETAILED STATUS WORD 16 DECIMAL, POST 
*             THE MESSAGE CONTROLLER UP/DOWN COUNT NONZERO ERROR. 
*         12. IF  BIT 4 IS SET IN DETAILED STATUS WORD 16 DECIMAL, EXIT 
*             TO MODULE FEP98O. 
*         13. IF  BIT 5 IS SET IN DETAILED STATUS WORD 16 DECIMAL, POST 
*             THE  MESSAGE  CONTROLLER  PROCESSOR  INSTRUCTION  TIMEOUT 
*             ERROR.
*         14. IF BIT 6 IS SET IN DETAILED STATUS WORD 16 DECIMAL,  POST 
*             THE MESSAGE CONTROLLER DATA PARITY ERROR. 
*         15. IF BIT 7 OR BIT 11 DECIMAL ARE  SET  IN  DETAILED  STATUS 
*             WORD 16 DECIMAL, EXIT TO MODULE FEP98O. 
*         16. POST THE MESSAGE CONTROLLER ERROR  NOT  ISOLATED  IF  THE 
*             REASON FOR THE FAILURE WAS NOT DETERMINED.
*         17. DETERMINE THE INDEX FOR  THE  PRESERVICE  FORECAST  GROUP 
*             NUMBER FOR  THE MESSAGE POSTED AND EXIT TO MODULE FEP98S. 
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         B13  CONTAINS  THE INDEX TO THE STATUS BUFFER FOR THE GENERAL 
*            AND DETAILED STATUS BEING ANALYSED.
*         B14  CONTAINS  THE  CONTENTS OF STATUS WORD 17 DECIMAL OF THE 
*            DETAILED STATUS. 
*         THE  STATUS  BUFFER CONTAINS THE CURRENT GENERAL AND DETAILED 
*            STATUS.
* 
*         EXIT- 
*         EXIT  IS  TO  MODULE  FEP98O  IF  THE CAUSE OF THE 5000 OCTAL 
*            GENERAL STATUS WAS CAUSED  BY  A  HEAD  FAILURE  WITH  THE 
*            MESSAGE FORMAT NUMBER IN THE B15 REGISTER. 
*         EXIT IS TO MODULE FEP98S IF THE MESSAGE INDICATING THE  CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98O - PROCESS GENERAL STATUS.
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR. 
* 
0  FORMAT CONTROLLER ERROR NOT ISOLATED.
1  FORMAT CONTROLLER BUFFER OUTPUT REGISTER FULL ERROR. 
2  FORMAT CONTROLLER CHANNEL ACTIVE ERROR.
3  FORMAT CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR. 
4  FORMAT CONTROLLER CHANNEL RESERVED ERROR.
5  FORMAT CONTROLLER BUFFER INPUT REGISTER FULL ERROR.
6  FORMAT FMD SYNC BYTE SEARCH IN PROGRESS ERROR
7  FORMAT CONTROLLER SECTOR LENGTH ERROR. 
10 FORMAT CONTROLLER WRITE VERIFY ERROR (SEE TRUE DISK ADD) 
11 FORMAT CONTROLLER BUFFER OUTPUT REGISTER PARITY ERROR. 
12 FORMAT CONTROLLER UP/DOWN COUNT NONZERO ERROR. 
13 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR. 
14 FORMAT CONTROLLER DATA PARITY ERROR. 
* 
/---------CHECK CONTROLLER INPUT CHANNEL 0 STATUS BITS. 
* 
30 B15=1                            *MESSAGE NUMBER 
   IF(B14.AND.100.NE.0) GOTO 70     *BUFFER OUTPUT REGISTER 
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4.NE.0) GOTO 70       *CHANNEL ACTIVE ERROR 
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.10.NE.0) GOTO 70      *DEADMAN TIMEOUT ERROR
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *CHANNEL RESERVED ERROR 
   B15=5                            *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *BUFFER INPUT REGISTER
   B15=6                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *SYNC BYTE SEARCH ERROR 
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.400.NE.0)EXIT TO 98O  *SYNC BYTE ERROR
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 98O  *LOST DATA ERROR 
   B15=7                            *MESSAGE NUMBER 
   IF(B14.AND.2000.NE.0) GOTO 70    *SECTOR LENGTH ERROR
* 
/---------CHECK CONTROLLER INPUT CHANNEL 1 STATUS BITS. 
* 
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16
   B15=10                           *MESSAGE NUMBER 
   IF(B14.AND.1.NE.0) GOTO 70       *WRITE VERIFY ERROR 
   B15=11                           *MESSAGE NUMBER 
   IF(B14.AND.2.NE.0) GOTO 70       *OUTPUT BUFFER PARITY 
   B15=12                           *MESSAGE NUMBER 
   IF(B14.AND.10.NE.0) GOTO 70      *UP/DOWN NONZERO ERROR
   B15=1                            *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) EXIT TO 98O  *LOST CONTROL WORD ERROR
   B15=13                           *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=14                           *MESSAGE NUMBER 
   IF(B14.AND.100.NE.0) GOTO 70     *DATA PARITY ERROR
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.200.NE.0)EXIT TO 98O  *NONCORRECTABLE ERROR 
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 98O  *LOST DRIVE CLOCK ERROR
   B15=0                            *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.10) B14=10      *IF MESSAGE 10 
   IF(B15.EQ.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.7) B14=1        *IF MESSAGE 7
   EXIT TO 98S               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98K PROCESS GENERAL STATUS 
   MODULE FEP98L,DEMA3(14),LOCK 
***       FEP98L - PROCESS GENERAL STATUS 
**
*         FEP98L - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         FEP98L  WILL DETERMINE THE REASON FOR THE 5000 GENERAL STATUS 
*         WHEN A ERROR HAS BEEN  DETECTED  WHILE  READING  THE  ADDRESS 
*         FIELD OF A SECTOR.
* 
*         METHOD- 
*         1.  POST THE MESSAGE FMD ADD.  FIELD ERROR  WHILE  RECOVERING 
*             DATA  FIELD  IF  BIT  1 IS SET IN DETAILED STATUS WORD 17 
*             DECIMAL.
*         2.  POST THE  MESSAGE  FMD NOT SELECTED AND RESERVED IF BIT 8 
*             DECIMAL IS SET IN DETAILED STATUS WORD 9 DECIMAL. 
*         3.  IF BITS  0-3 OF DETAILED STATUS WORD 1 ARE EQUAL TO ZERO, 
*             GO TO STEP 15.
*         4.  POST THE MESSAGE FMD CYLINDER ADDRESS MISCOMPARE ERROR IF 
*             BITS 0-3 OF DETAILED  STATUS  WORD  1  ARE  EQUAL  TO  14 
*             OCTAL.
*         5.  POST THE MESSAGE FMD TRACK ADDRESS  MISCOMPARE  ERROR  IF 
*             BITS  0-3  OF  DETAILED  STATUS  WORD  1  ARE EQUAL TO 12 
*             OCTAL.
*         6.  IF A  READ  FACTORY  MAP OR READ UTILITY MAP FUNCTION WAS 
*             NOT BEING EXECUTED, GO TO STEP 8. 
*         7.  POST THE  MESSAGE FMD TRACK EXPECTED TO BE FLAWED BUT WAS 
*             NOT IF BITS 10 DECIMAL AND 11 DECIMAL IN DETAILED  STATUS 
*             WORD  5  DECIMAL  ARE EQUAL TO ZERO, OTHERWISE GO TO STEP 
*             10. 
*         8.  POST THE  MESSAGE  FMD  FACTORY  FLAW  DETECTED IF BIT 10 
*             DECIMAL IS SET IN DETAILED STATUS WORD 5. 
*         9.  POST THE  MESSAGE  FMD  TRACK  FLAW  DETECTED  IF  BIT 11 
*             DECIMAL IS SET IN DETAILED STATUS WORD 5. 
*         10. POST  THE  MESSAGE FMD SECTOR ADDRESS MISCOMPARE ERROR IF 
*             BITS 0-3 OF DETAILED  STATUS  WORD  1  ARE  EQUAL  TO  11 
*             OCTAL.
*         11. POST THE MESSAGE CONTROLWARE ABNORMAL DETAILED STATUS  IF 
*             BITS  0-3  OF  DETAILED STATUS WORD 1 ARE NOT EQUAL TO 10 
*             OCTAL.
*         12. IF  BIT  9  DECIMAL  IS  SET  IN  DETAILED STATUS WORD 17 
*             DECIMAL, EXIT TO MODULE FEP98O TO PROCESS CONTROLLER LOST 
*             DATA STATUS.
*         13. POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR IF BIT 10 
*             DECIMAL IS SET IN DETAILED STATUS WORD 17 DECIMAL.
*         14. POST THE MESSAGE CONTROLLER PROCESSOR INSTRUCTION TIMEOUT 
*             ERROR IF BIT 5 IS SET IN DETAILED STATUS WORD 16 DECIMAL, 
*             OTHERWISE  POST  THE  MESSAGE  CONTROLLER  ADDRESS  FIELD 
*             ERROR NOT ISOLATED. 
*         15. IF BIT 2 IS NOT SET IN DETAILED STATUS WORD  16  DECIMAL, 
*             GO TO STEP 17.
*         16. IF BIT 7 IS NOT SET IN DETAILED STATUS  WORD  9  DECIMAL, 
*             EXIT  TO MODULE FEP98Q TO ISOLATE THE DRIVE NOT READY AND 
*             SAFE ERROR, OTHERWISE POST THE MESSAGE CONTROLLER  STATUS 
*             INDICATES FMD NOT READY.
*         17. IF BIT 9 DECIMAL  IS  SET  IN  DETAILED  STATUS  WORD  17 
*             DECIMAL,  EXIT  TO  MODULE  FEP98O TO PROCESS A LOST DATA 
*             ERROR STATUS. 
*         18. POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR IF BIT 10 
*             DECIMAL IS SET IN DETAILED STATUS WORD 17 DECIMAL.
*         19. POST  THE  MESSAGE  SYNC BYTE SEARCH IN PROGRESS ERROR IF 
*             BIT  11  DECIMAL  IS  SET  IN  DETAILED  STATUS  WORD  17 
*             DECIMAL.
*         20. IF BIT 8 DECIMAL  IS  SET  IN  DETAILED  STATUS  WORD  17 
*             DECIMAL,  EXIT  TO  MODULE  FEP98O TO PROCESS A SYNC BYTE 
*             COMPARE ERROR.
*         21. POST THE MESSAGE CONTROLLER PROCESSOR INSTRUCTION TIMEOUT 
*             ERROR IF  BIT  5  IS  SET  IN  DETAILED  STATUS  WORD  16 
*             DECIMAL.
*         22. IF BIT 4 IS SET IN DETAILED STATUS WORD 16 DECIMAL,  EXIT 
*             TO MODULE FEP98O TO PROCESS A LOST CONTROL WORD ERROR.
*         23. IF BITS 7-10 DECIMAL OF DETAILED STATUS WORD  16  DECIMAL 
*             ARE NOT EQUAL TO ZERO, EXIT TO MODULE FEP98O TO PROCESS A 
*             NONCORRECTABLE ERROR. 
*         24. IF  BIT  11  DECIMAL  IS  SET  IN DETAILED STATUS WORD 16 
*             DECIMAL, EXIT TO MODULE FEP98O TO PROCESS  A  LOST  DRIVE 
*             CLOCK   ERROR,  OTHERWISE  POST  THE  MESSAGE  CONTROLLER 
*             ADDRESS FIELD ERROR NOT ISOLATED. 
*         25. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR ANY 
*             MESSAGE POSTED BY THIS MODULE AND PLACE THE NUMBER IN THE 
*             B14 REGISTER. 
*         26. EXIT TO MODULE FEP98S.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY  BUFFER  FOR  THE 
*            NEXT MESSAGE.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT  IS  TO  MODULE  FEP98O  IF  THE CAUSE OF THE 5000 OCTAL 
*            GENERAL STATUS WAS CAUSED  BY  A  HEAD  FAILURE  WITH  THE 
*            MESSAGE NUMBER IN THE B15 REGISTER.
*         EXIT IS TO MODULE FEP98Q IF FMD IS NOT READY AND SAFE.
*         EXIT IS  TO MODULE FEP98S IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98O - PROCESS GENERAL STATUS.
*         FEP98Q - ISOLATE FMD FAULTS.
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR. 
* 
0  FORMAT CONTROLWARE ABNORMAL DETAILED STATUS. 
1  FORMAT CONTROLLER ADDRESS FIELD ERROR NOT ISOLATED.
3  FORMAT CONTROLLER SECTOR LENGTH ERROR. 
4  FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR. 
10 FORMAT SYNC BYTE SEARCH IN PROGRESS ERROR. 
11 FORMAT FMD ADD. FIELD ERROR WHILE RECOVERING DATA FIELD. 
12 FORMAT FMD CYLINDER ADDRESS MISCOMPARE ERROR.
13 FORMAT FMD TRACK ADDRESS MISCOMPARE ERROR. 
14 FORMAT READ DID NOT DETECT EXPECTED FACTORY MAP FLAW BIT.
15 FORMAT UNEXPECTED FACTORY MAP FLAW BIT DETECTED. 
16 FORMAT FMD TRACK FLAW DETECTED.
17 FORMAT FMD SECTOR ADDRESS MISCOMPARE ERROR.
20 FORMAT FMD NOT SELECTED AND RESERVED.
21 FORMAT CONTROLLER STATUS INDICATES FMD NOT READY.
* 
/---------CHECK FOR A ERROR IN THE ADDRESS FIELD. 
* 
30 B15=11                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR
   B15=20                              *MESSAGE NUMBER
   IF(SB(B13+9).AND.400.EQ.0) GOTO 70  *DRIVE NOT SELECTED
   IF(SB(B13+1).AND.17.EQ.0) GOTO 60   *IF NOT COMPARE ERROR
   B15=12                              *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.14) GOTO 70  *CYLINDER MISCOMPARE 
   B15=13                              *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.12) GOTO 70  *TRACK MISCOMPARE
* 
/---------CHECK FOR READ FACTORY DATA FUNCTION ISSUED.
* 
   IF(SB(B13+3).AND.7760.EQ.600)GOTO 34  *IF READ FACTORY 
* 
/---------CHECK FOR READ UTILITY MAP FUNCTION ISSUED. 
* 
   IF(SB(B13+3).AND.7760.NE.620)GOTO 40  *NOT READ UTILITY
34 B15=14                                *MESSAGE NUMBER
   IF(SB(B13+5).AND.6000.EQ.0) GOTO 70  *NO FLAW BIT SET
   GOTO 50
40 B15=15                              *MESSAGE NUMBER
* 
/---------CHECK FOR A FLAW BIT SET IN THE ADDRESS FIELD.
* 
   IF(SB(B13+5).AND.2000.NE.0)GOTO 70  *FACTORY FLAW ERROR
   B15=16                              *MESSAGE NUMBER
   IF(SB(B13+5).AND.4000.NE.0)GOTO 70  *TRACK FLAW ERROR
50 B15=17                              *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.11) GOTO 70  *SECTOR MISCOMPARE 
   B15=0                               *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.NE.10) GOTO 70  *ABNORMAL STATUS 
   B15=0                               *MESSAGE NUMBER
   IF(B14.AND.1000.NE.0) EXIT TO 98O   *LOST DATA ERROR 
   B15=3                               *MESSAGE NUMBER
   IF(B14.AND.2000.NE.0) GOTO 70       *SECTOR LENGTH ERROR 
   B15=4                               *MESSAGE NUMBER
   IF(SB(B13+20).AND.40.NE.0) GOTO 70  *INSTRUCTION TIMEOUT 
   B15=1                               *MESSAGE NUMBER
   GOTO 70
* 
/---------CHECK FOR A STATUS ERROR ON I/O CHANNEL 1.
* 
60 B14=SB(B13+20)                   *DETAILED STATUS WORD 16
   IF(B14.AND.4.EQ.0) GOTO 64       *IF DRIVE READY AND SAFE
   B15=21                           *MESSAGE NUMBER 
   IF(SB(B13+9)AND.200.NE.0)GOTO 70  *IF DRIVE IS READY 
   EXIT TO 98Q                      *GO PROCESS DRIVE FAULT 
64 B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 98O  *LOST DATA ERROR 
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.2000.NE.0) GOTO 70    *SECTOR LENGTH ERROR
   B15=10                           *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *SYNC BYTE SEARCH ERROR 
   B15=5                            *MESSAGE NUMBER 
   IF(B14.AND.400.NE.0)EXIT TO 98O  *SYNC BYTE COMPARE ERROR
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=1                            *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) EXIT TO 98O  *LOST CONTROL WORD
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.3600.NE.0)EXIT TO 98O  *NONCORRECTABLE ERROR
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 98O  *LOST DRIVE CLOCK
   B15=1                            *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=1                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.0) B14=0        *IF MESSAGE 0
   IF(B15.EQ.1) B14=0        *IF MESSAGE 1
   IF(B15.EQ.4) B14=0        *IF MESSAGE 4
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   EXIT TO 98S               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98L PROCESS GENERAL STATUS 
   MODULE FEP98M,DEMA3(14),LOCK 
***       FEP98M - PROCESS GENERAL STATUS 
**
*         FEP98M - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         FEP98M  WILL DETERMINE THE REASON FOR THE 5000 GENERAL STATUS 
*         WHEN A ERROR HAS BEEN DETECTED WHILE READING THE  DATA  FIELD 
*         OF A SECTOR.
* 
*         METHOD- 
*         1.  GO TO STEP 3 IF BIT 1 IS SET IN DETAILED STATUS  WORD  17 
*             DECIMAL.
*         2.  POST THE MESSAGE CONTROLLER PARITY  ERROR  ON  PARAMETERS 
*             IF  BIT  6  IS  SET  IN  DETAILED STATUS WORD 16 DECIMAL, 
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         3.  POST THE MESSAGE FMD NOT SELECTED AND RESERVED IF  BIT  8 
*             DECIMAL IS NOT SET IN DETAILED STATUS WORD 9 DECIMAL. 
*         4.  IF BIT 2 IS SET IN DETAILED STATUS WORD 16 DECIMAL,  EXIT 
*             TO  MODULE FEP98Q TO ISOLATE THE DRIVE NOT READY AND SAFE 
*             ERROR.
*         5.  POST THE  MESSAGE  FMD  DATA  FIELD  SYNC  BYTE SEARCH IN 
*             PROGRESS ERROR IF BIT  11  DECIMAL  IS  SET  IN  DETAILED 
*             STATUS WORD 17 DECIMAL. 
*         6.  IF BIT 8 DECIMAL  IS  SET  IN  DETAILED  STATUS  WORD  17 
*             DECIMAL, EXIT TO MODULE FEP98O TO PROCESS  A  DATA  FIELD 
*             SYNC BYTE COMPARE ERROR.
*         7.  IF BIT  9  DECIMAL  IS  SET  IN  DETAILED  STATUS WORD 17 
*             DECIMAL, EXIT TO MODULE FEP98O TO  PROCESS  A  LOST  DATA 
*             ERROR.
*         8.  POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR IF  BIT  0 
*             IS SET IN DETAILED STATUS WORD 16 DECIMAL.
*         9.  POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER PARITY 
*             ERROR  IF  BIT  1  IS  SET  IN  DETAILED  STATUS  WORD 16 
*             DECIMAL.
*         10. IF  BIT 4 IS SET IN DETAILED STATUS WORD 16 DECIMAL, EXIT 
*             TO MODULE FEP98O TO PROCESS A LOST CONTROL WORD ERROR.
*         11. POST THE MESSAGE CONTROLLER PROCESSOR INSTRUCTION TIMEOUT 
*             ERROR IF  BIT  5  IS  SET  IN  DETAILED  STATUS  WORD  16 
*             DECIMAL.
*         12. POST THE MESSAGE CONTROLLER DATA PARITY ERROR IF BIT 6 IS 
*             SET IN DETAILED STATUS WORD 16 DECIMAL. 
*         13. IF BIT 11 DECIMAL IS  SET  IN  DETAILED  STATUS  WORD  16 
*             DECIMAL,  EXIT  TO  MODULE FEP98O TO PROCESS A LOST DRIVE 
*             CLOCK ERROR.
*         14. POST THE MESSAGE CONTROLLER CHANNEL ACTIVE ERROR IF BIT 2 
*             IS SET IN DETAILED STATUS WORD 17 DECIMAL.
*         15. POST THE MESSAGE CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR 
*             IF BIT 3 SET IN DETAILED STATUS WORD 17 DECIMAL.
*         16. POST THE MESSAGE CONTROLLER CHANNEL RESERVED ERROR IF BIT 
*             4 IS SET IN DETAILED STATUS WORD 17 DECIMAL.
*         17. POST  THE  MESSAGE  CONTROLLER BUFFER INPUT REGISTER FULL 
*             ERROR IF  BIT  5  IS  SET  IN  DETAILED  STATUS  WORD  17 
*             DECIMAL.
*         18. POST THE MESSAGE CONTROLLER BUFFER OUTPUT  REGISTER  FULL 
*             ERROR IF BIT 6 IS SET IN DETAILED STATUS WORD 17 DECIMAL, 
*             OTHERWISE POST THE MESSAGE CONTROLLER  DATA  FIELD  ERROR 
*             NOT ISOLATED. 
*         19. DETERMINE THE PRESERVICE FORECAST GROUP  NUMBER  FOR  ANY 
*             MESSAGE POSTED BY THIS MODULE AND PLACE THE NUMBER IN THE 
*             B14 REGISTER. 
*         20. EXIT TO MODULE FEP98S.
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT  IS  TO  MODULE  FEP98O  IF  THE CAUSE OF THE 5000 OCTAL 
*            GENERAL STATUS WAS CAUSED  BY  A  HEAD  FAILURE  WITH  THE 
*            MESSAGE NUMBER IN THE B15 REGISTER.
*         EXIT IS TO MODULE FEP98Q IF FMD IS NOT READY AND SAFE.
*         EXIT IS  TO MODULE FEP98S IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98O - PROCESS GENERAL STATUS.
*         FEP98Q - ISOLATE DRIVE FAULTS.
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR. 
* 
0  FORMAT CONTROLLER ERROR NOT ISOLATED.
1  FORMAT CONTROLLER PARITY ERROR ON PARAMETERS.
2  FORMAT CONTROLLER BUFFER OUTPUT REGISTER FULL ERROR. 
3  FORMAT CONTROLLER CHANNEL ACTIVE ERROR.
4  FORMAT CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR. 
5  FORMAT CONTROLLER CHANNEL RESERVED ERROR.
6  FORMAT CONTROLLER BUFFER INPUT REGISTER FULL ERROR.
10 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR. 
11 FORMAT CONTROLLER WRITE VERIFY ERROR (SEE TRUE DISK ADD) 
12 FORMAT CONTROLLER BUFFER OUTPUT REGISTER PARITY ERROR. 
14 FORMAT CONTROLLER DATA PARITY ERROR. 
16 FORMAT FMD DATA FIELD SYNC BYTE SEARCH IN PROGRESS ERROR.
17 FORMAT FMD NOT SELECTED AND RESERVED.
20 FORMAT CONTROLLER DATA FIELD ERROR NOT ISOLATED. 
* 
/---------CHECK FOR A DATA FIELD TYPE ERROR.
* 
30 IF(B14.AND.2.NE.0) GOTO 34          *IF DATA FIELD ERROR 
   B15=1                               *MESSAGE NUMBER
   IF(SB(B13+20).AND.100.NE.0)GOTO 70  *PARAM PARITY ERROR
   B15=0                               *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
34 B15=17                              *MESSAGE NUMBER
   IF(SB(B13+9).AND.400.EQ.0)GOTO 70   *DRIVE NOT SELECTED
* 
/---------CHECK CONTROLLER INPUT CHANNEL 1 STATUS BITS. 
* 
   IF(SB(B13+20).AND.4.NE.0) EXIT TO 98Q  *ISOLATE FMD FAULT
   B15=16                           *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *SYNC BYTE SEARCH ERROR 
   B15=6                            *MESSAGE NUMBER 
   IF(B14.AND.400.NE.0)EXIT TO 98O  *SYNC BYTE ERROR
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 98O  *LOST DATA ERROR 
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16
   B15=11                           *MESSAGE NUMBER 
   IF(B14.AND.1.NE.0) GOTO 70       *WRITE VERIFY ERROR 
   B15=12                           *MESSAGE NUMBER 
   IF(B14.AND.2.NE.0) GOTO 70       *BUFFER OUTPUT REG. P.E.
   B15=1                            *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0)EXIT TO 98O   *LOST CONTROL WORD ERROR
   B15=10                           *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=14                           *MESSAGE NUMBER 
   IF(B14.AND.100.NE.0) GOTO 70     *DATA PARITY ERROR
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 98O  *LOST DRIVE CLOCK
* 
/---------CHECK CONTROLLER INPUT CHANNEL 0 STATUS BITS. 
* 
   B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.4.NE.0) GOTO 70       *CHANNEL ACTIVE ERROR 
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.10.NE.0) GOTO 70      *DEADMAN TIMEOUT ERROR
   B15=5                            *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *CHANNEL RESERVED ERROR 
   B15=6                            *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *BUFFER INPUT REGISTER
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.100.NE.0) GOTO 70     *BUFFER OUTPUT REGISTER 
   B15=20                           *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.11) B14=13      *IF MESSAGE 11 
   IF(B15.EQ.16) B14=3       *IF MESSAGE 16 
   IF(B15.EQ.17) B14=3       *IF MESSAGE 17 
   EXIT TO 98S               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98M PROCESS GENERAL STATUS 
   MODULE FEP98N,DEMA3(14),LOCK 
***       FEP98N - PROCESS GENERAL STATUS 
**
*         FEP98N - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         FEP98N  WILL  DETERMINE THE CAUSE OF THE 4400B, 4600B, 4700B, 
*         AND 5200B GENERAL STATUS ERRORS WHICH OCCURRED WHILE  READING 
*         OR WRITING A SECTOR ON THE 885 DRIVE. 
* 
*         METHOD- 
*         1.  GO TO STEP 10 IF THE GENERAL STATUS IS NOT EQUAL TO  4400 
*             OCTAL.
*         2.  GO TO  STEP 8 IF BIT 0 IS NOT SET IN DETAILED STATUS WORD 
*             17 DECIMAL. 
*         3.  IF BITS  0-3  IN  DETAILED STATUS WORD 1 ARE NOT EQUAL TO 
*             ZERO, GO TO STEP 5. 
*         4.  POST THE  MESSAGE  FMD  ADD.   FIELD  SYNC BYTE SEARCH IN 
*             PROGRESS ERROR IF BIT  11  DECIMAL  IS  SET  IN  DETAILED 
*             STATUS  WORD  17 DECIMAL, OTHERWISE EXIT TO MODULE FEP98O 
*             TO PROCESS A ADDRESS FIELD SYNC BYTE COMPARE ERROR. 
*         5.  POST THE MESSAGE FMD CYLINDER ADDRESS MISCOMPARE ERROR IF 
*             BITS 0-3 ARE EQUAL TO 14 OCTAL IN  DETAILED  STATUS  WORD 
*             1.
*         6.  POST THE MESSAGE FMD TRACK ADDRESS  MISCOMPARE  ERROR  IF 
*             BITS  0-3  ARE  EQUAL TO 12 OCTAL IN DETAILED STATUS WORD 
*             1.
*         7.  POST THE  MESSAGE  FMD SECTOR ADDRESS MISCOMPARE ERROR IF 
*             BITS 0-3 ARE EQUAL TO 11 OCTAL IN DETAILED STATUS WORD 1, 
*             OTHERWISE   POST   THE   MESSAGE   CONTROLLER  ERROR  NOT 
*             ISOLATED. 
*         8.  POST THE  MESSAGE  CONTROLLER  ERROR NOT ISOLATED IF BITS 
*             0-3 IN DETAILED STATUS WORD 1 ARE EQUAL TO ZERO.
*         9.  POST THE  MESSAGE  FMD  DATA  FIELD  SYNC  BYTE SEARCH IN 
*             PROGRESS ERROR IF BIT  11  DECIMAL  IS  SET  IN  DETAILED 
*             STATUS  WORD  17 DECIMAL, OTHERWISE EXIT TO MODULE FEP98O 
*             TO PROCESS A SYNC BYTE COMPARE ERROR. 
*         10. GO  TO STEP 13 IF THE GENERAL STATUS IS NOT EQUAL TO 4600 
*             OCTAL.
*         11. IF BIT 0 IS SET IN DETAILED STATUS  WORD  17  DECIMAL  IS 
*             SET, EXIT TO MODULE FEP98O TO PROCESS A FMD ADDRESS FIELD 
*             CHECKWORD ERROR.
*         12. IF  BIT  1  IS  SET IN DETAILED STATUS WORD 17 DECIMAL IS 
*             SET, EXIT TO MODULE FEP98O TO PROCESS A  FMD  DATA  FIELD 
*             CHECKWORD  ERROR,  OTHERWISE  POST THE MESSAGE CONTROLLER 
*             ERROR NOT ISOLATED. 
*         13. IF  THE  GENERAL  STATUS  IS EQUAL TO 4700 OCTAL, EXIT TO 
*             MODULE FEP98O TO PROCESS A FMD  ADDRESS  FIELD  CHECKWORD 
*             ERROR.
*         14. POST THE MESSAGE CONTROLLER ABNORMAL  GENERAL  STATUS  IF 
*             THE GENERAL STATUS IS NOT EQUAL TO 5200 OCTAL.
*         15. IF BIT 0 IS SET IN DETAILED STATUS WORD 17 DECIMAL,  EXIT 
*             TO  MODULE FEP98O TO PROCESS A FMD NONCORRECTABLE ADDRESS 
*             FIELD CHECKWORD ERROR.
*         16. IF  BIT 1 IS SET IN DETAILED STATUS WORD 17 DECIMAL, EXIT 
*             TO MODULE FEP98O TO PROCESS  A  FMD  NONCORRECTABLE  DATA 
*             FIELD   CHECKWORD   ERROR,  OTHERWISE  POST  THE  MESSAGE 
*             CONTROLLER ERROR NOT ISOLATED.
*         17. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR ANY 
*             MESSAGE POSTED BY THIS MODULE AND PLACE THE NUMBER IN THE 
*             B14 REGISTER. 
*         18. EXIT TO MODULE FEP98S.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY  BUFFER  FOR  THE 
*            NEXT MESSAGE.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT  IS  TO  MODULE  FEP98O  IF  THE CAUSE OF THE 5000 OCTAL 
*            GENERAL STATUS WAS CAUSED  BY  A  HEAD  FAILURE  WITH  THE 
*            MESSAGE NUMBER IN THE B15 REGISTER.
*         EXIT IS  TO MODULE FEP98S IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98O - PROCESS GENERAL STATUS 
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR. 
* 
0  FORMAT CONTROLWARE ABNORMAL GENERAL STATUS.
1  FORMAT CONTROLLER ERROR NOT ISOLATED.
2  FORMAT FMD ADD. FIELD SYNC BYTE SEARCH IN PROGRESS ERROR.
3  FORMAT FMD CYLINDER ADDRESS MISCOMPARE ERROR.
4  FORMAT FMD TRACK ADDRESS MISCOMPARE ERROR. 
5  FORMAT FMD SECTOR ADDRESS MISCOMPARE ERROR.
6  FORMAT FMD DATA FIELD SYNC BYTE SEARCH IN PROGRESS ERROR.
* 
/---------CHECK GENERAL STATUS FOR THE TYPE OF ERROR. 
* 
30 B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   IF(SB(B13).NE.4400) GOTO 50      *NOT 4400 GENERAL STATUS
* 
/         PROCESS 4400 OCTAL GENERAL STATUS ERROR.
* 
   IF(B14.AND.1.EQ.0) GOTO 40          *IF NOT ADDRESS FIELD
   IF(SB(B13+1).AND.17.NE.0) GOTO 34   *NOT SYNC BYTE ERROR 
   B15=2                               *MESSAGE NUMBER
   IF(B14.AND.4000.NE.0) GOTO 70       *SYNC BYTE SEARCH ERR
   B15=5                               *MESSAGE NUMBER
   EXIT TO 98O                         *SYNC BYTE ERROR 
34 B15=3                               *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.14) GOTO 70  *CYLINDER ADDRESS
   B15=4                               *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.12) GOTO 70  *TRACK ADDRESS 
   B15=5                               *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.11) GOTO 70  *SECTOR ADDRESS
   B15=1                               *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
40 B15=1                               *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.0) GOTO 70   *NOT SYNC BYTE ERROR 
   B15=6                               *MESSAGE NUMBER
   IF(B14.AND.4000.NE.0) GOTO 70       *SYNC BYTE SEARCH ERR
   B15=10                              *MESSAGE NUMBER
   EXIT TO 98O                         *SYNC BYTE ERROR 
50 IF(SB(B13).NE.4600) GOTO 60         *NOT 4600 STATUS 
* 
/---------PROCESS 4600 OCTAL GENERAL STATUS ERROR.
* 
   B15=7                               *MESSAGE NUMBER
   IF(B14.AND.1.NE.0) EXIT TO 98O      *ADDRESS FIELD ERROR 
   B15=11                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) EXIT TO 98O      *DATA FIELD ERROR
   B15=1                               *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
* 
/---------PROCESS 4700 OCTAL GENERAL STATUS ERROR.
* 
60 B15=7                               *MESSAGE NUMBER
   IF(SB(B13).EQ.4700) EXIT TO 98O     *IF 4700 STATUS
* 
/---------PROCESS 5200 OCTAL GENERAL STATUS ERROR.
* 
   B15=0                               *MESSAGE NUMBER
   IF(SB(B13).NE.5200) GOTO 70         *NOT 5200 STATUS 
   B15=10                              *MESSAGE NUMBER
   IF(B14.AND.1.NE.0) EXIT TO 98O      *ADDRESS FIELD 
   B15=12                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) EXIT TO 98O      *DATA FIELD ERROR
   B15=1                               *MESSAGE NUMBER
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=1                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.0) B14=0        *IF MESSAGE 0
   IF(B15.EQ.1) B14=0        *IF MESSAGE 1
   IF(B15.EQ.2) B14=3        *IF MESSAGE 2
   IF(B15.GE.6) B14=3        *IF MESSAGE 6 THRU 12
   EXIT TO 98S               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98N PROCESS GENERAL STATUS 
   MODULE FEP98O,DEMA3(14),LOCK 
***       FEP98O - PROCESS GENERAL STATUS 
**
*         FEP98O - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         FEP98O WILL POST THE MESSAGES FOR  LOST  DATA,  LOST  CONTROL 
*         WORD,  LOST  DRIVE  CLOCK,  SYNC  BYTE COMPARE, AND CHECKWORD 
*         ERRORS. 
* 
*         METHOD- 
*         1.  IF BIT 3 (LARGE SECTOR) IS SET IN DETAILED STATUS WORD 18 
*             DECIMAL, GO TO STEP 5.
*         2.  POST THE  MESSAGE FOR THE MESSAGE NUMBER CONTAINED IN THE 
*             B15 REGISTER. 
*         3.  DETERMINE THE  PRESERVICE  FORECAST  GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         4.  EXIT TO MODULE FEP98S.
*         5.  SET THE B14 REGISTER EQUAL  TO  THE  NUMBER  IN  THE  B15 
*             REGISTER  PLUS  14  OCTAL  AND  POST  THE MESSAGE FOR THE 
*             MESSAGE NUMBER CONTAINED IN THE B14 REGISTER. 
*         6.  EXIT TO MODULE FEP98P.
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         B13  CONTAINS  THE INDEX TO THE STATUS BUFFER FOR THE GENERAL 
*            AND DETAILED STATUS BE ANALYSED. 
*         B15 CONTAINS THE NUMBER OF THE MESSAGE TO BE POSTED.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT  TO  MODULE  FEP98S  IF BIT 3 IN DETAILED STATUS WORD 18 
*            DECIMAL IS NOT SET  WITH  THE  PRESERVICE  FORECAST  GROUP 
*            NUMBER IN THE B14 REGISTER.
*         EXIT TO MODULE FEP98P IF BIT 3 IN  DETAILED  STATUS  WORD  18 
*            DECIMAL IS SET.
* 
*         SUBMODULES REFERENCED-
*         FEP98P - DETERMINE FAILING HEADS. 
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = NUMBER OF THE FORMAT MESSAGE TO BE POSTED.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGE POSTED FOR SMALL SECTORS. 
* 
0  FORMAT CONTROLLER LOST DATA ERROR. 
1  FORMAT CONTROLLER LOST CONTROL WORD ERROR. 
2  FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.
3  FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR. 
4  FORMAT FMD SYNC BYTE MISCOMPARE ERROR. 
5  FORMAT FMD ADDRESS FIELD SYNC BYTE MISCOMPARE ERROR. 
6  FORMAT FMD DATA FIELD SYNC BYTE MISCOMPARE ERROR.
7  FORMAT FMD ADDRESS FIELD CHECKWORD ERROR.
10 FORMAT FMD NONCORRECTABLE ADDRESS FIELD CHECKWORD ERROR. 
11 FORMAT FMD DATA FIELD CHECKWORD ERROR. 
12 FORMAT FMD NONCORRECTABLE DATA FIELD CHECKWORD ERROR.
* 
/---------MESSAGES POSTED FOR LARGE SECTORS.
* 
14 FORMAT CONTROLLER LOST DATA ERROR- 
15 FORMAT CONTROLLER LOST CONTROL WORD ERROR- 
16 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR-
17 FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR- 
20 FORMAT FMD SYNC BYTE MISCOMPARE ERROR- 
21 FORMAT FMD ADDRESS FIELD SYNC BYTE MISCOMPARE ERROR- 
22 FORMAT FMD DATA FIELD SYNC BYTE MISCOMPARE ERROR-
23 FORMAT FMD ADDRESS FIELD CHECKWORD ERROR-
24 FORMAT FMD NONCORRECTABLE ADDRESS FIELD CHECKWORD ERROR- 
25 FORMAT FMD DATA FIELD CHECKWORD ERROR- 
26 FORMAT FMD NONCORRECTABLE DATA FIELD CHECKWORD ERROR-
* 
/---------DETERMINE IF SMALL OR LARGE SECTOR. 
* 
30 IF(SB(B13+22).AND 10.NE.0)GOTO 34  *IF LARGE SECTOR
* 
/---------POST SMALL SECTOR MESSAGE IN DISPLAY BUFFER.
* 
   MSG B15 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.2) B14=3        *IF MESSAGE 2
   IF(B15.EQ.4) B14=3        *IF MESSAGE 4
   IF(B15.EQ.5) B14=3        *IF MESSAGE 5
   IF(B15.EQ.6) B14=1        *IF MESSAGE 6
   IF(B15.EQ.7) B14=1        *IF MESSAGE 7
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   IF(B15.EQ.11) B14=1       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=1       *IF MESSAGE 12 
   EXIT TO 98S               *EXIT TO NEXT MODULE 
* 
/---------POST LARGE SECTOR MESSAGE IN DISPLAY BUFFER.
* 
34 B14=B15+14                *ADJUST MESSAGE NUMBER 
   MSG B14 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
* 
/---------EXIT TO NEXT MODULE POST FAILING HEAD(S) MESSAGE. 
* 
   EXIT TO 98P               *EXIT TO NEXT MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98O PROCESS GENERAL STATUS 
   MODULE FEP98P,DEMA3(14),LOCK 
***       FEP98P - PROCESS GENERAL STATUS 
**
*         FEP98P - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         FEP98P WILL POST A MESSAGE INDICATING THE  HEAD(S)  ON  WHICH 
*         THE LOST DATA, LOST CONTROL WORD, LOST DRIVE CLOCK, SYNC BYTE 
*         MISCOMPARE, OR CHECKWORD ERROR WAS DETECTED.
* 
*         METHOD- 
*         1.  SET BITS  0-3  OF  THE  B14  REGISTER  EQUAL TO BITS 8-11 
*             DECIMAL IN DETAILED STATUS WORD 20 DECIMAL. 
*         2.  IF THE  B15 REGISTER CONTAINS A NUMBER LESS THAN 7 (NOT A 
*             CHECKWORD ERROR), TO GO STEP 4. 
*         3.  SET BITS  0-3  OF  THE  B14  REGISTER  EQUAL TO BITS 7-10 
*             DECIMAL IN DETAILED STATUS WORD 16 DECIMAL. 
*         4.  POST THE  MESSAGE FOR THE MESSAGE NUMBER CONTAINED IN THE 
*             B14 REGISTER. 
*         5.  DETERMINE THE  PRESERVICE  FORECAST GROUP FOR THE MESSAGE 
*             POSTED AND PLACE THE NUMBER IN THE B14 REGISTER.
*         6.  EXIT TO MODULE FEP98S.
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY  BUFFER  FOR  THE 
*            NEXT MESSAGE.
*         B13 CONTAINS THE INDEX TO THE STATUS BUFFER FOR  THE  GENERAL 
*            AND DETAILED STATUS BE ANALYSED. 
*         B15 CONTAINS THE NUMBER OF THE MESSAGE TO BE POSTED.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE FEP98S TO COMPLETE THE ERROR DISPLAY WITH  THE 
*            PRESERVICE FORECAST GROUP NUMBER IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = NUMBER OF THE FORMAT MESSAGE TO BE POSTED.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES POSTED INDICATING THE HEAD(S) FAILURES.
* 
0  FORMAT NO HEADS ARE INDICATED. 
1  FORMAT HEAD 0 IS INDICATED.
2  FORMAT HEAD 1 IS INDICATED.
3  FORMAT HEADS 0 AND 1 ARE INDICATED.
4  FORMAT HEAD 2 IS INDICATED.
5  FORMAT HEADS 0 AND 2 ARE INDICATED.
6  FORMAT HEADS 1 AND 2 ARE INDICATED.
7  FORMAT HEADS 0, 1, AND 2 ARE INDICATED.
10 FORMAT HEAD 3 IS INDICATED.
11 FORMAT HEADS 0 AND 3 ARE INDICATED.
12 FORMAT HEADS 1 AND 3 ARE INDICATED.
13 FORMAT HEADS 0, 1, AND 3 ARE INDICATED.
14 FORMAT HEADS 2 AND 3 ARE INDICATED.
15 FORMAT HEADS 0, 2, AND 3 ARE INDICATED.
16 FORMAT HEADS 1, 2, AND 3 ARE INDICATED.
17 FORMAT HEADS 0, 1, 2, AND 3 ARE INDICATED. 
* 
/---------DETERMINE THE MESSAGE FOR THE FAILING HEAD(S).
* 
30 B14=SB(B13+24).RS.10      *STATUS WORD 20 DECIMAL
   IF(B15.LT.7) GOTO 34      *IF NOT CHECKWORD ERROR
   B14=SB(B13+20).RS.7       *STATUS WORD 16 DECIMAL
   B14=B14.AND.17 
* 
/---------POST MESSAGE IN DISPLAY BUFFER. 
* 
34 MSG B14 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.2) B14=3        *IF MESSAGE 2
   IF(B15.EQ.4) B14=3        *IF MESSAGE 4
   IF(B15.EQ.5) B14=3        *IF MESSAGE 5
   IF(B15.EQ.6) B14=1        *IF MESSAGE 6
   IF(B15.EQ.7) B14=1        *IF MESSAGE 7
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   IF(B15.EQ.11) B14=1       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=1       *IF MESSAGE 12 
   EXIT TO 98S               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98P PROCESS GENERAL STATUS 
   MODULE FEP98Q,DEMA3(14),LOCK 
***       FEP98Q - ISOLATE DRIVE FAULT
**
*         FEP98Q - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         FEP98Q  WILL  DETERMINE  THE CAUSE FOR THE FAULT IN THE FIXED 
*         MODULE DRIVE. 
* 
*         METHOD- 
*         1.  IF THE  GENERAL STATUS IS EQUAL TO 7777 OCTAL OR 0000, GO 
*             TO STEP 20. 
*         2.  IF BITS  8-11  DECIMAL  OF DETAILED STATUS WORD 2 ARE NOT 
*             EQUAL TO ZERO, GO TO STEP 20. 
*         3.  IF DETAILED  STATUS  WORD 14 DECIMAL IS EQUAL TO ZERO, TO 
*             GO STEP 20. 
*         4.  POST THE  MESSAGE  FMD NOT SELECTED AND RESERVED IF BIT 4 
*             IS NOT SET IN DETAILED STATUS WORD 14 DECIMAL.
*         5.  IF BITS  0-7 IN DETAILED STATUS WORD 13 DECIMAL ARE EQUAL 
*             TO ZERO, GO TO STEP 20. 
*         6.  POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED IF BITS 0-7 
*             IN DETAILED STATUS WORD 13 ARE EQUAL TO 377 OCTAL.
*         7.  POST THE  MESSAGE FMD STATUS VALID NOT ACTIVE IF BIT 1 IS 
*             NOT SET IN STATUS WORD 14 DECIMAL.
*         8.  IF BIT  4  IS NOT SET IS DETAILED STATUS WORD 18 DECIMAL, 
*             GO TO STEP 10.
*         9.  POST THE  MESSAGE CONTROLLER BUS OUT PARITY ERROR IF BITS 
*             0-7 IN DETAILED STATUS WORD 2 ARE NOT EQUAL TO 213 OCTAL, 
*             OTHERWISE  POST  THE  MESSAGE  FMD DECODE PARITY ERROR OR 
*             ILLEGAL DECODE. 
*         10. IF  BIT  3 IS NOT SET IN DETAILED STATUS WORD 14 DECIMAL, 
*             GO TO STEP 20.
*         11. POST  THE  MESSAGE  FMD  BUS IN DATA ERROR IF BITS 0-7 IN 
*             DETAILED STATUS WORD 13 ARE EQUAL TO 100  OCTAL,  OR  101 
*             OCTAL,  OR  102 OCTAL, OR 103 OCTAL, OR 104 OCTAL, OR 105 
*             OCTAL, OR 106 OCTAL.
*         12. POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED IF BITS 0-7 
*             IN DETAILED STATUS WORD 13 DECIMAL ARE NOT EQUAL  TO  110 
*             OCTAL, OR 111 OCTAL, OR 112 OCTAL.
*         13. POST THE MESSAGE FMD STATUS INDICATES DRIVE OFF  LINE  IF 
*             BIT 3 IS NOT SET IN DETAILED STATUS WORD 15 DECIMAL.
*         14. IF BIT 4 (WRITE/READ CHECK) IS NOT SET IN DETAILED STATUS 
*             WORD 15 DECIMAL, GO TO STEP 16. 
*         15. POST THE MESSAGE FMD WRITE/READ STATUS ERROR  ON  BUS  IN 
*             STATUS  IF  BIT  3  IS NOT SET IN DETAILED STATUS WORD 12 
*             DECIMAL, OTHERWISE GO TO STEP 20. 
*         16. IF BIT 5 (DRIVE CHECK) IS NOT SET IN DETAILED STATUS WORD 
*             15 DECIMAL, GO TO STEP 18.
*         17. POST  THE  MESSAGE FMD DRIVE CHECK STATUS ERROR ON BUS IN 
*             STATUS IF BIT 5 IS NOT SET IN  DETAILED  STATUS  WORD  12 
*             DECIMAL, OTHERWISE GO TO STEP 20. 
*         18. POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED  IF  BIT  6 
*             (ACCESS  ERROR)  IS  NOT  SET  IN DETAILED STATUS WORD 15 
*             DECIMAL.
*         19. POST THE MESSAGE FMD ACCESS CHECK STATUS ERROR ON BUS  IN 
*             STATUS  IF  BIT  0  IS NOT SET IN DETAILED STATUS WORD 12 
*             DECIMAL.
*         20. IF DETAILED STATUS WORD 1 IS EQUAL TO 7777 OCTAL, EXIT TO 
*             MODULE FEP98S.
*         21. POST  THE  MESSAGE FMD NOT SELECTED AND RESERVED IF BIT 8 
*             DECIMAL IS NOT SET IN DETAILED STATUS WORD 9 DECIMAL. 
*         22. IF  BIT  4 IS NOT SET IS DETAILED STATUS WORD 18 DECIMAL, 
*             GO TO STEP 24.
*         23. POST  THE MESSAGE CONTROLLER BUS OUT PARITY ERROR IF BITS 
*             0-7 IN DETAILED STATUS WORD 2 ARE NOT EQUAL TO 213 OCTAL, 
*             OTHERWISE  POST  THE  MESSAGE  FMD DECODE PARITY ERROR OR 
*             ILLEGAL DECODE. 
*         24. IF  BIT  0  (ACCESS  CHECK STATUS) IS NOT SET IN DETAILED 
*             STATUS WORD 12 DECIMAL, EXIT TO MODULE FEP98R 
*         25. POST  THE  MESSAGE  FMD SERVO OFF TRACK ERROR IF BIT 1 IS 
*             SET IN DETAILED STATUS WORD 9 DECIMAL.
*         26. POST THE MESSAGE FMD SEEK OVERSHOOT ERROR IF BIT 2 IS SET 
*             IN DETAILED STATUS WORD 9 DECIMAL.
*         27. POST  THE  MESSAGE FMD SEEK TIMEOUT ERROR IF BIT 3 IS SET 
*             IN DETAILED STATUS WORD 9  DECIMAL,  OTHERWISE  POST  THE 
*             MESSAGE FMD ACCESS CHECK ERROR CANNOT BE ISOLATED.
*         28. DETERMINE THE PRESERVICE FORECAST GROUP  NUMBER  FOR  ANY 
*             MESSAGE POSTED BY THIS MODULE AND PLACE THE NUMBER IN THE 
*             B14 REGISTER. 
*         29. EXIT TO MODULE FEP98S.
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         B13 CONTAINS THE INDEX TO THE STATUS BUFFER.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT  TO MODULE FEP98R IF THE CAUSE OF THE FAULT IN THE DRIVE 
*            HAS NOT BEEN DETERMINED. 
*         EXIT  TO MODULE FEP98S IF THE CAUSE OF THE FAULT IN THE DRIVE 
*            WAS DETERMINED WITH THE PRESERVICE FORECAST  GROUP  NUMBER 
*            IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98R - ISOLATE DRIVE FAULT. 
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
*         FLOWCHARTS- 
*         ************************************************************* 
*         *      ISOLATION FLOWCHART FOR THE FIXED MODULE DRIVE.      * 
*         *                                                           * 
*         *         STEPS 1 THROUGH 28 ARE IN MODULE FEP98Q.          * 
*         *         STEPS 29 THROUGH 49 ARE IN MODULE FEP98R.         * 
*         *                                                           * 
*         *      NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE     * 
*         *            TO MODULE FEP98S.                              * 
*         *                                                           * 
*         ************************************************************* 
* 
*         1.  IF GENERAL STATUS  IS EQUAL TO 7777 OCTAL, GO TO STEP 21. 
*         2.  IF GENERAL STATUS IS EQUAL TO 0000 OCTAL, GO TO STEP  21. 
*         3.  IF BITS 8 THOUGH 11 DECIMAL OF DETAILED STATUS WORD 2 ARE 
*             NOT EQUAL TO ZERO, GO TO STEP 21. 
*         4.  IF DETAILED  STATUS  WORD 14 DECIMAL IS EQUAL TO ZERO, GO 
*             TO STEP 21. 
*         5.  IF BIT  4  IS NOT SET IN DETAILED STATUS WORD 14 DECIMAL, 
*             POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         6.  IF BITS  0  THROUGH  7 IN DETAILED STATUS WORD 13 DECIMAL 
*             ARE EQUAL TO ZERO, GO TO STEP 21. 
*         7.  IF BITS  0  THROUGH  7 IN DETAILED STATUS WORD 13 DECIMAL 
*             ARE EQUAL TO 377 OCTAL, POST THE MESSAGE FMD FAULT CANNOT 
*             BE ISOLATED.
*         8.  IF BIT 1 IN DETAILED STATUS WORD 14 DECIMAL IS  EQUAL  TO 
*             ZERO, POST THE MESSAGE FMD STATUS VALID NOT ACTIVE. 
*         9.  IF BIT 4 IN DETAILED STATUS WORD 20 DECIMAL IS  NOT  SET, 
*             GO TO STEP 11.
*         10. IF BITS 00-07 OF DETAILED STATUS WORD 2 ARE NOT EQUAL  TO 
*             213  OCTAL,  POST  THE  MESSAGE CONTROLLER BUS OUT PARITY 
*             ERROR, OTHERWISE POST THE MESSAGE FMD DECODE PARITY ERROR 
*             OR ILLEGAL DECODE.
*         11. IF  BIT  3 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 21.
*         12. IF  BITS  0  THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL 
*             ARE EQUAL TO 100, 101, 102, 103, 104, 105, OR 106  OCTAL, 
*             POST THE MESSAGE FMD BUS IN DATA ERROR. 
*         13. IF BITS 0 THROUGH 7 IN DETAILED STATUS  WORD  13  DECIMAL 
*             ARE  NOT  EQUAL TO 110 OR 112 OCTAL, POST THE MESSAGE FMD 
*             FAULT CANNOT BE ISOLATED. 
*         14. IF  BIT  3 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD  STATUS  INDICATES  DRIVE  OFF 
*             LINE. 
*         15. IF BIT 4 IN DETAILED STATUS WORD 15 DECIMAL IS  EQUAL  TO 
*             ZERO, GO TO STEP 17.
*         16. IF BIT 3 IN DETAILED STATUS WORD 12 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  GO  TO STEP 20, OTHERWISE POST THE MESSAGE FMD 
*             WRITE/READ STATUS ERROR ON BUS IN STATUS. 
*         17. IF  BIT  5 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 19.
*         18. IF  BIT 5 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL 
*             TO ZERO, GO TO STEP 20, OTHERWISE POST  THE  MESSAGE  FMD 
*             DRIVE CHECK STATUS ERROR ON BUS IN STATUS.
*         19. IF BIT 6 IN DETAILED STATUS WORD 15 DECIMAL IS  EQUAL  TO 
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.
*         20. IF BIT 0 IN DETAILED STATUS WORD 12 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  GO  TO STEP 20, OTHERWISE POST THE MESSAGE FMD 
*             ACCESS CHECK STATUS ERROR ON BUS IN STATUS. 
*         21. IF  DETAILED  STATUS  WORD  1  IS  EQUAL TO 7777, EXIT TO 
*             MODULE FEP98S.
*         22. IF  BIT  4 IN DETAILED STATUS WORD 18 DECIMAL IS NOT SET, 
*             GO TO STEP 25.
*         23. IF  BIT  8  IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         24. IF  BITS 00-07 OF DETAILED STATUS WORD 2 ARE NOT EQUAL TO 
*             213 OCTAL, POST THE MESSAGE  CONTROLLER  BUS  OUT  PARITY 
*             ERROR, OTHERWISE POST THE MESSAGE FMD DECODE PARITY ERROR 
*             OR ILLEGAL DECODE.
*         25. IF  BIT  0 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 29.
*         26. IF  BIT  1 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD SERVO OFF TRACK ERROR.
*         27. IF  BIT  2 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD SEEK OVERSHOOT ERROR. 
*         28. IF  BIT  3 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  FMD  SEEK  TIMEOUT  ERROR, 
*             OTHERWISE  POST THE MESSAGE FMD ACCESS CHECK ERROR CANNOT 
*             BE ISOLATED.
*         29. IF  BIT  3 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 41.
*         30. IF  BIT 4 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD HEAD SHORT ERROR. 
*         31. IF  BIT 5 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD INDEX CHECK ERROR.
*         32. IF  BIT 6 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD CONTROL ERROR.
*         33. IF  BIT 7 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD WRITE TRANSITION ERROR. 
*         34. IF  BIT 8 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD WRITE CURRENT ERROR.
*         35. IF  BIT 9 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD MULTIPLE HEAD ERROR.
*         36. IF BIT 10 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD WRITE OVERRUN ERROR.
*         37. IF  BIT 11 IN DETAILED STATUS WORD 11 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 39.
*         38. IF  BIT  4  IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD NOT WRITE  ENABLED,  OTHERWISE 
*             POST THE MESSAGE FMD CAPABLE ENABLE ERROR.
*         39. IF BIT 2 IN DETAILED STATUS WORD 11 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  FMD  WRITE WHILE IN OFFSET 
*             ERROR.
*         40. IF  BIT 3 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE  MESSAGE  FMD  WRITE  OR  READ  AND  NO 
*             CONTROL  SELECT  ERROR,  OTHERWISE  POST  THE MESSAGE FMD 
*             WRITE/READ ERROR CANNOT BE ISOLATED.
*         41. IF  BIT  5 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.
*         42. IF  BIT  1  IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD START SWITCH NOT ON. 
*         43. IF  BIT  0  IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD DRIVE MOTOR NOT AT SPEED.
*         44. IF  BIT  2  IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD AIR SWITCH NOT MADE. 
*         45. IF  BIT  3 IN DETAILED STATUS WORD 2 DECIMAL IS NOT EQUAL 
*             TO ZERO,  POST  THE  MESSAGE  FMD  SEQUENCE  ERROR  LATCH 
*             ERROR.
*         46. IF BIT 7 IN DETAILED STATUS WORD 2 DECIMAL  IS  EQUAL  TO 
*             ZERO, POST THE MESSAGE FMD HDA SEQUENCE NOT COMPLETE. 
*         47. IF BIT 5 IN DETAILED STATUS WORD 11 DECIMAL IS NOT  EQUAL 
*             TO ZERO, POST THE MESSAGE FMD INDEX CHECK ERROR.
*         48. IF BIT 6 IN DETAILED STATUS WORD 12 DECIMAL IS NOT  EQUAL 
*             TO  ZERO,  POST  THE  MESSAGE  FMD  SECTOR COMPARE ERROR, 
*             OTHERWISE POST THE MESSAGE FMD DRIVE CHECK  ERROR  CANNOT 
*             BE ISOLATED.
*         49. EXIT TO MODULE FEP98S.
* 
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR. 
* 
0  FORMAT FMD NOT SELECTED AND RESERVED.
1  FORMAT FMD STATUS VALID NOT ACTIVE.
2  FORMAT CONTROLLER BUS OUT PARITY ERROR.
3  FORMAT FMD DECODE PARITY ERROR OR ILLEGAL DECODE.
4  FORMAT FMD BUS IN DATA ERROR.
5  FORMAT FMD STATUS INDICATES DRIVE OFF LINE.
6  FORMAT FMD WRITE/READ STATUS ERROR ON BUS IN STATUS. 
7  FORMAT FMD DRIVE CHECK STATUS ERROR ON BUS IN STATUS.
10 FORMAT FMD ACCESS CHECK STATUS ERROR ON BUS IN STATUS. 
11 FORMAT FMD FAULT CANNOT BE ISOLATED. 
12 FORMAT FMD SERVO OFF TRACK ERROR.
13 FORMAT FMD SEEK OVERSHOOT ERROR. 
14 FORMAT FMD SEEK TIMEOUT ERROR. 
15 FORMAT FMD ACCESS CHECK ERROR CANNOT BE ISOLATED.
* 
/---------CHECK THE GENERAL STATUS WORD.
* 
30 IF(SB(B13).EQ.7777) GOTO 54    *NO GENERAL STATUS
   IF(SB(B13).EQ.0) GOTO 54       *GENERAL STATUS IS ZERO 
* 
/---------CHECK FOR THE DRIVE SELECTED AND RESERVED.
* 
   IF(SB(B13+2)AND.7400.NE.0)GOTO 54     *CHECKWORD ERROR 
   IF(SB(B13+16).EQ.0) GOTO 54           *NOT COMMAND ERROR 
   B15=0
   IF(SB(B13+16).AND.20.EQ.0) GOTO 70    *DRIVE NOT SELECTED
   IF(SB(B13+15).AND.377.EQ.0) GOTO 54   *IF NO DRIVE STATUS
   IF(SB(B13+15).AND.377.EQ.377)GOTO 52  *NO DRIVE STATUS 
* 
/---------CHECK FOR STATUS VALID RECEIVED FROM THE DRIVE. 
* 
   B15=1                              *MESSAGE NUMBER 
   IF(SB(B13+16).AND.2.EQ.0) GOTO 70  *IF NO STATUS VALID 
* 
/---------CHECK FOR ECHO COMMAND OR ECHO BUS MODE ACTIVE. 
* 
   IF(SB(B13+22).AND.20.EQ.0)GOTO 32    *NOT ECHO MODE
   B15=2                                *MESSAGE NUMBER 
   IF(SB(B13+2).AND.377.NE.213)GOTO 70  *IF ECHO BUS MODE 
   B15=3                                *MESSAGE NUMBER 
   GOTO 70                              *ECHO COMMAND MODE
* 
/---------CHECK FOR THE DRIVE READY AND SAFE. 
* 
32 IF(SB(B13+16).AND.10.EQ.0)GOTO 54  *IF NOT READY AND SAFE
* 
/---------CHECK FOR BUS IN ERROR FOR THE COMMAND ISSUED.
* 
   B14=SB(B13+15).AND.377           *DETAILED STATUS WORD 13
   IF(B14.LT.100) GOTO 34           *IF COMMAND 00-3F HEX.
   B15=4                            *MESSAGE NUMBER 
   IF(B14.LE.106) GOTO 70           *IF COMMAND 40-46 HEX.
* 
/---------CHECK IF 48 OR 4A COMMAND ISSUED. 
* 
34 IF(B14.LT.110) GOTO 52           *IF NOT 48 HEX. COMMAND 
   IF(B14.GT.112) GOTO 52           *IF NOT 48, 4A COMMAND
* 
/---------CHECK FOR ON LINE STATUS ACTIVE IN BUS IN STATUS. 
* 
   B15=5                              *MESSAGE NUMBER 
   IF(SB(B13+17).AND.10.EQ.0)GOTO 70  *IF ON LINE NOT ACTIVE
   B14=SB(B13+14)                   *DETAILED STATUS WORD 12
* 
/---------CHECK READ/WRITE ERROR STATUS ON BUS IN.
* 
   IF(SB(B13+17).AND.20.EQ.0)GOTO 46  *NOT READ/WRITE ERROR 
   IF(B14.AND.10.NE.0) GOTO 54        *READ/WRITE ERROR 
   B15=6                              *MESSAGE NUMBER 
   GOTO 70                            *GO TO POST MESSAGE 
* 
/---------CHECK DRIVE CHECK ERROR STATUS ON BUS IN. 
* 
46 IF(SB(B13+17).AND.40.EQ.0)GOTO 50  *NOT DRIVE CHECK ERROR
   IF(B14.AND.40.NE.0) GOTO 54        * DRIVE CHECK ERROR 
   B15=7                              *MESSAGE NUMBER 
   GOTO 70                            *GO TO POST MESSAGE 
* 
/---------CHECK ACCESS CHECK ERROR STATUS ON BUS IN.
* 
50 IF(SB(B13+17).AND.100.EQ.0)GOTO 52  *NOT ACCESS CHECK ER.
   IF(B14.AND.1.NE.0) GOTO 54          *ACCESS CHECK ERROR
   B15=10                              *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
52 B15=11                              *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
* 
/---------CHECK FOR DETAILED STATUS IN THE STATUS BUFFER. 
* 
54 IF(SB(B13+1).EQ.7777) EXIT TO 98S   *NO GENERAL STATUS 
   B15=0                                 *MESSAGE NUMBER
   IF(SB(B13+9).AND.400.EQ.0) GOTO 70  *DRIVE NOT SELECTED
* 
/---------CHECK FOR ECHO COMMAND OR ECHO BUS MODE ACTIVE. 
* 
   IF(SB(B13+22).AND.20.EQ.0)GOTO 56    *NOT ECHO MODE
   B15=2                                *MESSAGE NUMBER 
   IF(SB(B13+2).AND.377.NE.213)GOTO 70  *IF ECHO BUS MODE 
   B15=3                                *MESSAGE NUMBER 
   GOTO 70                              *ECHO COMMAND MODE
* 
/---------CHECK FOR FIXED MODULE DRIVE ACCESS CHECK ERROR.
* 
56 IF(SB(B13+14).AND.1.EQ.0)EXIT TO 98R  *IF NOT ACCESS CHECK 
* 
/---------CHECK FOR DRIVE SERVO OFF TRACK.
* 
   B15=12                            *MESSAGE NUMBER
   IF(SB(B13+9).AND.2.NE.0) GOTO 70  *SERVO OFF TRACK ERROR 
* 
/---------CHECK FOR DRIVE SEEK OVERSHOOT ERROR. 
* 
   B15=13                            *MESSAGE NUMBER
   IF(SB(B13+9).AND.4.NE.0) GOTO 70  *SEEK OVERSHOOT ERROR
* 
/---------CHECK FOR DRIVE SEEK TIMEOUT ERROR. 
* 
   B15=14                            *MESSAGE NUMBER
   IF(SB(B13+9).AND.10.NE.0)GOTO 70  *SEEK TIMEOUT ERROR
   B15=15                            *MESSAGE NUMBER
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=1                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.2) B14=3        *IF MESSAGE 2
   IF(B15.EQ.3) B14=3        *IF MESSAGE 3
   IF(B15.EQ.4) B14=3        *IF MESSAGE 4
   IF(B15.EQ.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   IF(B15.EQ.11) B14=3       *IF MESSAGE 11 
   IF(B15.EQ.15) B14=3       *IF MESSAGE 15 
   EXIT TO 98S               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98Q ISOLATE DRIVE FAULT
   MODULE FEP98R,DEMA3(14),LOCK 
***       FEP98R - ISOLATE DRIVE FAULT
**
*         FEP98R - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         FEP98R  WILL  ISOLATE THE CAUSE OF THE DRIVE FAULTS CAUSED BY 
*         EITHER A WRITE/READ ERROR OR DRIVE CHECK ERROR. 
* 
*         METHOD- 
*         1.  IF BIT 3 (WRITE/READ STATUS ERROR) IS NOT SET IN DETAILED 
*             STATUS WORD 12 DECIMAL, GO TO STEP 13.
*         2.  POST THE  MESSAGE FMD HEAD SHORT ERROR IF BIT 4 IS SET IN 
*             DETAILED STATUS WORD 11 DECIMAL.
*         3.  POST THE MESSAGE FMD INDEX CHECK ERROR IF BIT 5 IS SET IN 
*             DETAILED STATUS WORD 11 DECIMAL.
*         4.  POST THE  MESSAGE  FMD  CONTROL  ERROR IF BIT 6 IS SET IN 
*             DETAILED STATUS WORD 11 DECIMAL.
*         5.  POST THE  MESSAGE  FMD WRITE TRANSITION ERROR IF BIT 7 IS 
*             SET IN DETAILED STATUS WORD 11 DECIMAL. 
*         6.  POST THE MESSAGE FMD WRITE CURRENT ERROR IF BIT 8 DECIMAL 
*             IS SET IN DETAILED STATUS WORD 11 DECIMAL.
*         7.  POST THE  MESSAGE FMD MULTIPLE HEAD ERROR IF BIT 9 IS SET 
*             IN IN DETAILED STATUS WORD 11 DECIMAL.
*         8.  POST THE  MESSAGE  FMD  WRITE  OVERRUN  ERROR  IF  BIT 10 
*             DECIMAL IS IN DETAILED STATUS WORD 11 DECIMAL.
*         9.  IF BIT  11  DECIMAL IS NOT SET IN DETAILED STATUS WORD 11 
*             DECIMAL, GO TO STEP 11. 
*         10. POST  THE  MESSAGE  FMD NOT WRITE ENABLED IF BIT 4 IS NOT 
*             SET IN DETAILED STATUS WORD 8 DECIMAL, OTHERWISE POST THE 
*             MESSAGE FMD CAPABLE ENABLE ERROR. 
*         11. POST THE MESSAGE FMD WRITE WHILE IN OFFSET ERROR IF BIT 2 
*             SET IN DETAILED STATUS WORD 11 DECIMAL. 
*         12. POST THE MESSAGE FMD WRITE OR READ AND NO CONTROL  SELECT 
*             ERROR IF BIT 3 IS SET IN DETAILED STATUS WORD 11 DECIMAL, 
*             OTHERWISE POST THE MESSAGE FMD WRITE/READ ERROR CANNOT BE 
*             ISOLATED. 
*         13. POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED  IF  BIT  5 
*             (DRIVE CHECK ERROR) IS NOT SET IN DETAILED STATUS WORD 12 
*             DECIMAL.
*         14. POST  THE MESSAGE FMD START SWITCH NOT ON IF BIT 1 IS NOT 
*             SET IN DETAILED STATUS WORD 8 DECIMAL.
*         15. POST THE MESSAGE FMD DRIVE MOTOR NOT AT SPEED IF BIT 0 IS 
*             NOT SET IN DETAILED STATUS WORD 8 DECIMAL.
*         16. POST  THE MESSAGE FMD AIR SWITCH NOT MADE IF BIT 2 IS NOT 
*             SET IN DETAILED STATUS WORD 8 DECIMAL.
*         17. POST  THE MESSAGE FMD SEQUENCE ERROR LATCH ERROR IF BIT 3 
*             IS SET IN DETAILED STATUS WORD 2. 
*         18. POST  THE  MESSAGE FMD HDA SEQUENCE NOT COMPLETE IF BIT 7 
*             IS NOT IN DETAILED STATUS WORD 2. 
*         19. POST THE MESSAGE FMD INDEX CHECK ERROR IF BIT 5 IS SET IN 
*             IN DETAILED STATUS WORD 11 DECIMAL. 
*         20. POST THE MESSAGE FMD SECTOR COMPARE ERROR IF BIT 6 IS SET 
*             IN IN DETAILED STATUS WORD 12 DECIMAL, OTHERWISE POST THE 
*             MESSAGE FMD DRIVE CHECK ERROR CANNOT BE ISOLATED. 
*         21. DETERMINE THE PRESERVICE FORECAST GROUP  NUMBER  FOR  THE 
*             MESSAGE POSTED BY THIS MODULE AND PLACE THE NUMBER IN THE 
*             B14 REGISTER AND EXIT TO MODULE FEP98S. 
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         B13 CONTAINS THE INDEX TO THE STATUS BUFFER.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT WILL ALWAYS BE MADE TO MODULE FEP98S WITH THE PRESERVICE 
*            FORECAST GROUP NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         FEP98S - COMPLETE THE ERROR MESSAGE.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR. 
* 
0  FORMAT FMD FAULT CANNOT BE ISOLATED. 
1  FORMAT FMD HEAD SHORT ERROR. 
2  FORMAT FMD INDEX CHECK ERROR.
3  FORMAT FMD CONTROL ERROR.
4  FORMAT FMD WRITE TRANSITION ERROR. 
5  FORMAT FMD WRITE CURRENT ERROR.
6  FORMAT FMD MULTIPLE HEAD ERROR.
7  FORMAT FMD WRITE OVERRUN ERROR.
10 FORMAT FMD NOT WRITE ENABLED.
11 FORMAT FMD CAPABLE ENABLE ERROR. 
12 FORMAT FMD WRITE WHILE IN OFFSET ERROR.
13 FORMAT FMD WRITE OR READ AND NO CONTROL SELECT ERROR.
14 FORMAT FMD WRITE/READ ERROR CANNOT BE ISOLATED.
15 FORMAT FMD START SWITCH NOT ON.
16 FORMAT FMD DRIVE MOTOR NOT AT SPEED. 
17 FORMAT FMD AIR SWITCH NOT MADE.
20 FORMAT FMD SEQUENCE ERROR LATCH ERROR. 
21 FORMAT FMD HDA SEQUENCE NOT COMPLETE.
22 FORMAT FMD INDEX CHECK ERROR.
23 FORMAT FMD SECTOR COMPARE ERROR. 
24 FORMAT FMD DRIVE CHECK ERROR CANNOT BE ISOLATED. 
* 
/---------CHECK FOR FIXED MODULE DRIVE READ/WRITE ERROR.
* 
30 IF(SB(B13+14).AND.10.EQ.0) GOTO 50  *NOT WRITE/READ ERROR
* 
/---------CHECK FOR HEAD SHORT ERROR. 
* 
   B14=SB(B13+13)                   *DETAILED STATUS WORD 11
   B15=1                            *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *IF HEAD SHORT ERROR
* 
/---------CHECK FOR INDEX CHECK ERROR.
* 
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *IF INDEX CHECK ERROR 
* 
/---------CHECK FOR CONTROL ERROR.
* 
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.100.NE.0) GOTO 70     *IF CONTROL ERROR 
* 
/---------CHECK FOR WRITE TRANSITION ERROR. 
* 
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.200.NE.0) GOTO 70     *IF WRITE TRANSITION
* 
/---------CHECK FOR WRITE CURRENT ERROR.
* 
   B15=5                            *MESSAGE NUMBER 
   IF(B14.AND.400.NE.0) GOTO 70     *IF WRITE CURRENT ERROR 
* 
/---------CHECK FOR MULTI HEAD ERROR
* 
   B15=6                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *IF MULTI HEAD ERROR
* 
/---------CHECK FOR WRITE OVERRUN ERROR.
* 
   B15=7                            *MESSAGE NUMBER 
   IF(B14.AND.2000.NE.0) GOTO 70    *IF WRITE OVERRUN ERROR 
* 
/---------CHECK FOR CAPABLE ENABLE TYPE ERROR.
* 
   IF(B14.AND.4000.EQ.0) GOTO 40    *IF NOT CAPABLE ENABLE
* 
/---------CHECK FOR WRITE DISABLE ERROR.
* 
   B15=10                            *MESSAGE NUMBER
   IF(SB(B13+8).AND.20.EQ.0)GOTO 70  *IF WRITE DISABLED 
   B15=11                            *MESSAGE NUMBER
   GOTO 70                           *GO TO POST MESSAGE
* 
/---------CHECK FOR WRITE WHILE IN OFFSET ERROR.
* 
40 B15=12                           *MESSAGE NUMBER 
   IF(B14.AND.4.NE.0) GOTO 70       *WRITE IN OFFSET ERROR
* 
/---------CHECK FOR WRITE/READ AND NO CONTROL SELECT ERROR. 
* 
   B15=13                           *MESSAGE NUMBER 
   IF(B14.AND.10.NE.0) GOTO 70      *IF CONTROL SELECT ERROR
   B15=14                           *MESSAGE NUMBER 
   GOTO 70                          *GO TO POST MESSAGE 
* 
/---------CHECK FOR FIXED MODULE DRIVE CHECK ERROR. 
* 
50 B15=0                              *MESSAGE NUMBER 
   IF(SB(B13+14).AND.40.EQ.0)GOTO 70  *NOT DRIVE CHECK ERROR
* 
/---------CHECK FOR DRIVE START SWITCH NOT ON.
* 
   B15=15                             *MESSAGE NUMBER 
   IF(SB(B13+8).AND.2.EQ.0) GOTO 70   *DRIVE SWITCH NOT ON
* 
/---------CHECK FOR DRIVE MOTOR NOT AT SPEED. 
* 
   B15=16                             *MESSAGE NUMBER 
   IF(SB(B13+8).AND.1.EQ.0) GOTO 70   *MOTOR NOT AT SPEED 
* 
/---------CHECK FOR DRIVE AIR SWITCH NOT MADE.
* 
   B15=17                             *MESSAGE NUMBER 
   IF(SB(B13+8).AND.4.EQ.0) GOTO 70   *AIR SWITCH NOT MADE
* 
/---------CHECK FOR SEQUENCE ERROR LATCH NOT MADE ERROR.
* 
   B15=20                             *MESSAGE NUMBER 
   IF(SB(B13+2).AND.10.NE.0) GOTO 70  *SEQUENCE LATCH ERROR 
* 
/---------CHECK FOR HDA SEQUENCE NOT COMPLETE ERROR.
* 
   B15=21                             *MESSAGE NUMBER 
   IF(SB(B13+2).AND.200.EQ.0)GOTO 70  *HDA SEQUENCE ERROR 
* 
/---------CHECK FOR INDEX CHECK ERROR.
* 
   B15=22                             *MESSAGE NUMBER 
   IF(SB(B13+13).AND.40.NE.0)GOTO 70  *IF INDEX CHECK ERROR 
* 
/---------CHECK FOR SECTOR COMPARE ERROR. 
* 
   B15=23                              *MESSAGE NUMBER
   IF(SB(B13+14).AND.100.NE.0)GOTO 70  *SECTOR COMPARE ERROR
   B15=24                              *MESSAGE NUMBER
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=1                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.0) B14=3        *IF MESSAGE 0
   IF(B15.EQ.13) B14=3       *IF MESSAGE 13 
   IF(B15.EQ.14) B14=2       *IF MESSAGE 14 
   IF(B15.EQ.24) B14=3       *IF MESSAGE 24 
   EXIT TO 98S               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *FEP98R ISOLATE DRIVE FAULT
   MODULE FEP98S,DEMA3(14),LOCK 
***       FEP98S - POST PRESERVICE FORECAST GROUP 
**
*         FEP98S - POST PRESERVICE FORECAST GROUP 
*         --------------------------------------- 
* 
*         PURPOSE-
*         FEP98S WILL POST THE PRESERVICE FORECAST  GROUP  MESSAGE  AND 
*         REPORT THE ERROR TO THE OPERATOR. 
* 
*         METHOD- 
*         1.  IF THE MODULE NUMBER IN THE B1 REGISTER IS  EQUAL  TO  1, 
*             SET  THE  PRESERVICE  FORECAST  GROUP  NUMBER  IN THE B14 
*             REGISTER FOR THE FOR THE FHDC PRESERVICE FORECAST  GROUP. 
*         2.  IF THE  ERROR  TO  BE  REPORTED  IS NOT A PRODUCT OVERLAY 
*             ERROR (ERROR CODE OF  LESS  THAN  4000  OCTAL),  SET  THE 
*             PRESERVICE  FORECAST  GROUP NUMBER IN THE B14 REGISTER TO 
*             THE PRESERVICE FORECAST GROUP NUMBER CONTAINED IN THE  EM 
*             REGISTER. 
*         3.  IF  THE  NUMBER  IN THE B14 REGISTER IS NOT EQUAL TO 7777 
*             OCTAL, GO TO STEP 6.
*         4.  SET THE DEFAULT PRESERVICE FORECAST GROUP NUMBER  IN  THE 
*             B14 REGISTER TO THE FHDC PRESERVICE FORECAST GROUP. 
*         5.  IF  THE  ERROR  CODE  IN THE EC REGISTER IS EQUAL TO 5731 
*             OCTAL (READ CODED  COMPARE  ERROR),  SET  THE  PRESERVICE 
*             FORECAST   GROUP  NUMBER  IN  THE  B14  REGISTER  TO  THE 
*             FHDC/FHDD PRESERVICE FORECAST GROUP.
*         6.  POST THE PRESERVICE FORECAST GROUP MESSAGE. 
*         7.  REPORT THE ERROR TO THE USER. 
*         8.  IF BIT 5 (BUFFER/B REGISTER DUMP DISPLAY) IS NOT  SET  IN 
*             PARAMETER WORD P4, GO TO STEP 12. 
*         9.  SENT THE TITLE  MESSAGE,  INPUT  BUFFER  MESSAGE,  OUTPUT 
*             BUFFER  MESSAGE,  AND  B REGISTER MESSAGES TO THE DISPLAY 
*             BUFFER AND TO PRINT.
*         10. IF STOP OF ERROR IS NOT SELECTED, GO TO STEP 12.
*         11. DISPLAY AND PRINT THE MESSAGE ENTER GO  TO  CONTINUE  AND 
*             THEN PAUSE WAITING FOR A GO FROM THE USER.
*         12. SENT A DASHED MESSAGE TO PRINT. 
*         13. EXIT TO MODULE FEP98T.
* 
/ 
*         ENTRY-
*         B1  = CONTAINS  THE  NUMBER  OF THE MODULE IN WHICH THE ERROR 
*               WAS DETECTED. 
*         B12 = NEXT LINE NUMBER IN THE DISPLAY BUFFER. 
*         B14 = 0 FOR  PRESERVICE FORECAST GROUP FHDC, 1 FOR PRESERVICE 
*               FORECAST GROUP FHDD, 2 FOR  PRESERVICE  FORECAST  GROUP 
*               FHDC/FHDD, 3 FOR PRESERVICE FORECAST GROUP FHDD/FHDC, 4 
*               FOR PRESERVICE FORECAST GROUP DESM, OR 5 FOR PRESERVICE 
*               GROUP CESM ON PRODUCT OVERLAY DETECTED ERRORS.
*         EC  = ERROR CODE NUMBER.
*         EM  = 0 FOR  PRESERVICE FORECAST GROUP FHDC, 1 FOR PRESERVICE 
*               FORECAST GROUP FHDD, 2 FOR  PRESERVICE  FORECAST  GROUP 
*               FHDC/FHDD, 3 FOR PRESERVICE FORECAST GROUP FHDD/FHDC, 4 
*               FOR PRESERVICE FORECAST GROUP DESM, OR 5 FOR PRESERVICE 
*               GROUP CESM ON MODULE DETECTED ERRORS. 
*         P4  = BIT 5 SET IN PARAMETER WORD P4 IF THE BUFFER/B REGISTER 
*               DUMP DISPLAY IS ENABLED.
* 
* 
*         EXIT- 
*         EXIT IS ALWAYS TO MODULE FEP98T.
*         THE CONTENTS OF ALL THE B REGISTERS DISPLAYED IF BIT 5 IS SET 
*            IN PARAMETER WORD P4.
*         THE CONTENTS OF THE FIRST TEN OCTAL LOCATIONS  OF  THE  INPUT 
*            AND  OUTPUT  BUFFER DISPLAYED IF BIT 5 IS SET IN PARAMETER 
*            WORD P4. 
* 
*         SUBMODULES REFERENCED-
*         FEP98T - RESTART CONTROLLER.
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES POSTED BY THE MODULE.
* 
0  FORMAT PRESERVICE FORECAST GROUP FHDC
1  FORMAT PRESERVICE FORECAST GROUP FHDD
2  FORMAT PRESERVICE FORECAST GROUP FHDC/FHDD 
3  FORMAT PRESERVICE FORECAST GROUP FHDD/FHDC 
4  FORMAT PRESERVICE FORECAST GROUP DESM
5  FORMAT PRESERVICE FORECAST GROUP CESM
10 FORMAT  -BUFFER/B REGISTER DISPLAY DUMP- 
11 FORMAT IB(0-7) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
12 FORMAT OB(0-7) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
13 FORMAT B0-B7   = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
14 FORMAT B8-B15  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
15 FORMAT ENTER GO TO CONTINUE
16 FORMAT --------------------------------------------------
17 FORMAT TRUE DISK ADD CYL=*OCT TRK=*O SEC=*O
* 
/---------SET PRESERVICE FORECAST GROUP IF MODULE FEP01.
* 
20 IF(B14.EQ.7777) GOTO 30   *CONTINUE
   IF(B14.LT.4) GOTO 30      *NOT A VERIFY ERROR
   B14 = B14 - 10            *RESET FORECAST INDEX
   B7 = SB(5).AND.77.LS.4 
   B6 = SB(6).RS.8D 
   B7 = B7 + B6              *CYLINDER ADDRESS
   B6 = SB(6).AND.377        *TRACK ADDRESS ON WRITE VERIFY 
   B5 = SB(7).AND.7760.RS.4   *UPDATED SECTOR ON WRITE VERIFY 
   MSG 17 (B7,B6,B5) TO LINE B12   *TRUE DISK ADD ON WRITE VERIFY 
   B12 = B12 + 1
   IF(ES.AND.TM.EQ.0)B12=B12+1   *IF KL DISPLAY 
30 IF(B1.EQ.1) B14=0         *IF MODULE IS FEP01
* 
/---------IF NOT A PRODUCT OVERLAY ERROR, USE THE PRESERVICE
/---------FORECAST GROUP IN THE EM REGISTER.
* 
   IF(EC.LT.4000) B14=EM     *SET USER SUPPLIED GROUP NO. 
   IF(B14.NE.7777) GOTO 40   *IF LEGAL PRESERVICE GROUP 
   B14=0                     *DEFAULT IS FHDC PRESERVICE
   IF(EC.AND.4077.EQ.4031)B14=2  *READ CODED COMPARE ERROR
* 
/---------POST THE MESSAGE IN THE DISPLAY DISPLAY BUFFER. 
* 
40 MSG B14 TO LINE 2         *PRESERVICE FORECAST MESSAGE 
* 
/---------DISPLAY THE ERROR MESSAGE AND HALT. 
* 
   PICTURE
   HALT                      *STOP ON THE ERROR 
* 
/---------PROCESS BUFFER/B REGISTER DISPLAY DUMP. 
* 
   IF(P4.AND.40.EQ.0) GOTO 60    *IF NOT BUFFER DUMP
   MSG 10 TO LINE B12            *DISPLAY INPUT BUFFER
   MSG 10 TO PRINT               *DISPLAY INPUT BUFFER
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 11 10 WORDS FROM IB TO LINE B12  *DIS. INPUT BUFFER
   MSG 11 10 WORDS FROM IB TO PRINT  *DISPLAY INPUT BUFFER
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 12 10 WORDS FROM OB TO LINE B12  *DIS. OUTPUT BUFFER 
   MSG 12 10 WORDS FROM OB TO PRINT  *DISPLAY OUTPUT BUFFER 
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 13 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B12  *B0-B7 
   MSG 13 (B0,B1,B2,B3,B4,B5,B6,B7) TO PRINT     *B0-B7 
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 14(B8,B9,B10,B11,B12,B13,B14,B15)TO LINE B12  *B8-B15
   MSG 14 (B8,B9,B10,B11,B12,B13,B14,B15) TO PRINT  *B8-B15 
   IF(ES.AND.SE.EQ.0) GOTO 60    *IF STOP ON ERROR DISALED
   MSG 15 TO DISPLAY, PRINT      *PAUSE MESSAGE 
   PAUSE                         *STOP ON ERROR 
60 MSG 16 TO PRINT               *TERMINATE THE MESSAGE 
   EXIT TO 98T               *EXIT THE MODULE 
   END 20                    *END OF MODULE 
COMPILE                      *FEP98S POST PRESERVICE FORECAST GROUP 
   MODULE FEP98T,DEMA3(14),LOCK 
***       FEP98T - RESTART CONTROLLER 
**
*         FEP98T - RESTART CONTROLLER 
*         --------------------------- 
* 
*         PURPOSE-
*         FEP98T  WILL ISSUE A RESET COMMAND TO THE 7155-401 CONTROLLER 
*         IF THE CONTROLLER DID NOT RESPOND CORRECTLY TO A RES COMMAND. 
* 
*         METHOD- 
*         1.  IF THE NUMBER IN THE  B8  REGISTER  IS  NOT  A  13  OCTAL 
*             (RES,CONTROLLER) OR A 14 OCTAL (RES DRIVE), GO TO STEP 6. 
*         2.  IF THE ERROR CODE IN THE EC REGISTER MASK WITH 4077 OCTAL 
*             IS NOT EQUAL TO 4024 OCTAL OR 4O25 OCTAL, GO TO STEP 6. 
*         3.  EXECUTE A  RES,CONTROLLER  COMMAND AND TO TO STEP 5 IF NO 
*             ABORT HAPPENS.
*         4.  IF THE ERROR CODE IN THE EC REGISTER MASK WITH 4077 OCTAL 
*             IS NOT EQUAL TO 4024 OCTAL OR 4O25 OCTAL, GO TO STEP 6. 
*         5.  EXECUTE  A RESET, STATUS DETAIL, AND REL COMMAND SEQUENCE 
*             AND IF AN ABORT OCCURS, GO TO STEP 7. 
*         6.  BLANK THE DISPLAY BUFFER AND EXIT THE MODULE. 
*         7.  REPORT AN  ERROR  INDICATING  THE  THE  PREVIOUS  COMMAND 
*             SEQUENCE  FAILED AND THAT THIS INDICATES A PROBLEM IN THE 
*             CONTROLLER OR A PROBLEM WITH THE CONTROLWARE. 
*         8.  SEND  A MESSAGE TO PRINT, DAYFILE, AND DISPLAY INDICATING 
*             THAT THE MODULE EXECUTION IS TO BE TERMINATED.
*         9.  IF REPEAT MODULE IS NOT SELECTED, GO TO STEP 12.
*         10. PRINT  AND  DISPLAY  THE MESSAGE //FEP98T RM SELECTED AND 
*             PAUSE.
*         11. GO TO STEP 9. 
*         12. TERMINATE EXECUTION OF THE PRIMARY MODULE.
* 
/ 
*         ENTRY-
*         B1 = MODULE NUMBER IN OCTAL.
*         B8 = COMMAND NUMBER FOR THE COMMAND THAT WAS BEING  EXECUTED. 
*         B11 = NUMBER OF ERRORS DETECTED.
*         EC = THE ERROR CODE FOR THE LAST ERROR REPORTED.
*         WT = NUMBER OF WORDS TRANSFERRED. 
* 
*         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  DOES  NOT  CORRECT  THE 
*            PROBLEM. 
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         B12 REGISTER CONTAINS THE NUMBER OF THE LINE IN  THE  DISPLAY 
*               BUFFER AT WHICH TO POST THE ERROR MESSAGE.
*         B13 = TEMPORARY STORAGE.
*         EA = RESET IF ERROR DETECTED. 
*         EC = RESET IF ERROR DETECTED. 
*         EM = RESET IF ERROR DETECTED. 
*         LF = LAST FUNCTION ISSUED.
* 
*         BUFFERS USED- 
*         STATUS BUFFER USED FOR GENERAL AND DETAILED STATUS. 
* 
/---------MESSAGES POSTED BY THIS MODULE. 
* 
1  FORMAT PRESERVICE FORECAST GROUP FHDC
2  FORMAT FEP ABORT ON .RESET. COMMAND
3  FORMAT FEP ABORT ON .STATUS DETAIL. COMMAND
4  FORMAT FEP ABORT ON .REL. COMMAND
5  FORMAT LAST FUNCTION = *OCTB 
6  FORMAT  FEP98T E0102 L*OC  CONTROLLER RESPONSE ERROR 
7  FORMAT WT=*OCTB RETRIES=*OB ERRORS=*DECD 
10 FORMAT POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM
11 FORMAT FEP*D MODULE ABORTED - CONTROLLER NOT RESPONDING
12 FORMAT 
13 FORMAT --------------------------------------------------
14 FORMAT //FEP98T RM SELECTED
* 
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.
* 
30 IF(B8.EQ.13) GOTO 32      *IF RES CONTROLLER COMMAND 
   IF(B8.NE.14) GOTO 40      *IF NOT RES COMMAND, EXIT
* 
/---------EXIT IF THE ERROR WAS BECAUSE OF NO RESERVE IN
/---------FIVE MINUTES OR ABNORMAL GENERAL STATUS.
* 
32 IF(EC.AND.4077.EQ.4024)GOTO 40  *IF RESERVE TIMEOUT, EXIT
   IF(EC.AND.4077.EQ.4025)GOTO 40  *IF ABNORMAL STATUS, EXIT
* 
/---------RESERVE THE CONTROLLER TO ISSUE A RESET COMMAND.
* 
   RES,CONTROLLER,ABT 34     *RESERVE THE CONTROLLER
   GOTO 36                   *GO TO ISSUE RESET 
* 
/---------PROCESS THE ABORT ON THE RES COMMAND. 
* 
34 IF(EC.AND.4077.EQ.4024)GOTO 40  *IF RESERVE TIMEOUT, EXIT
   IF(EC.AND.4077.EQ.4025)GOTO 40  *IF ABNORMAL STATUS, EXIT
* 
/---------ISSUE THE RESET COMMAND AND RELEASE THE CONTROLLER. 
* 
36 B13 = 2                   *COMMAND ABORT INDEX 
   RESET,ABT 50              *ZERO WORD AUTOLOAD
   B13 = 3                   *COMMAND ABORT INDEX 
   STATUS,DETAIL,ABT 50      *GET DETAILED STATUS 
   B13 = 4                   *COMMAND ABORT INDEX 
   REL,ABT 50                *RELEASE THE CONTROLLER
40 BLANK
   EXIT                      *EXIT THE MODULE 
* 
/---------DISPLAY CONTROLLER/CONTROLWARE ERROR MESSAGE. 
* 
50 ERROR 6/102               *RESET ERROR 
   B11 = B11+1               *UPDATE ERROR COUNT
   MSG 1 TO LINE 2           *PRESERVICE FORECAST GROUP MSG.
   B12 = 3                   *DISPLAY LINE NUMBER 
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
   MSG B13 TO LINE B12       *ABORT MESSAGE 
   MSG 5 (LF) TO LINE B12+1  *LAST FUNCTION MESSAGE 
   MSG 6 (EA) TO LINE B12+2  *ERROR MESSAGE 
   MSG 7 (WT,SB(52),B11) TO LINE B12+3
   B12 = B12+4               *UPDATE DISPLAY LINE NUMBER
   IF(ES.AND.TM.EQ.0)B12=B12+1  *IF KL DISPLAY
   MSG 10 TO LINE B12         *INFORMATION MESSAGE
   B12 = B12+1               *UPDATE DISPLAY LINE NUMBER
54 MSG 12 TO LINE B12        *BLANK DISPLAY LINE
   GOTO 54 WHILE (B12+1.NE.50)  *BLANK REMAINDER OF DISPLAY 
   PICTURE
   HALT                      *STOP ON ERROR 
   MSG 13 TO PRINT           *TERMINATE PRINT MESSAGES
   BLANK
   MSG 11 (B1) TO PRINT,DAYFILE,DISPLAY  *MODULE ABORT MSG. 
70 IF(ES.AND.RM.EQ.0) GOTO 76          *IF RM NOT SELECTED
* 
/---------PROCESS REPEAT MODULE.
* 
   MSG 14 TO DISPLAY, PRINT            *PAUSE MESSAGE 
   PAUSE                               *WAIT FOR GO 
   GOTO 70                             *LOOP
76 END 30                              *END OF THE MODULE 
COMPILE                      *FEP98T RESTART CONTROLLER 
   MODULE FEP99,DEMA3(14),LOCK
1  FORMAT COPYRIGHT CONTROL DATA 1982 
/ 
/   PARAMETER DESCRIPTION.
/ 
/         P0 - NOT USED.
/ 
/         P1 - NOT USED.
/ 
/         P2 - NOT USED.
/ 
/         P3 - NOT USED.
/ 
/         P4 - XXXX - ENABLES 
/              XXX1-XX2X - NOT USED.
/              XX4X - DISPLAY THE CONTENTS OF THE B0 THROUGH
/                     B15  REGISTERS  AND  CONTENTS  OF  THE
/                     FIRST EIGHT LOCATIONS IN THE INPUT AND
/                     OUTPUT BUFFERS AFTER AN ERROR HAS BEEN
/                     REPORTED TO THE USER. 
/              X1XX-4XXX - NOT USED.
/ 
/         P5 - NOT USED.
/ 
/         P6 - XXXX - RANDOM NUMBER GENERATOR STARTER 
/                     SETTING  THIS  PARAMETER  WORD  TO   A
/                     NONZERO  VALUE  WILL CAUSE THE MODULES
/                     TO USE THIS NUMBER AS THE STARTER  FOR
/                     RANDOM NUMBER GENERATOR.
/ 
/         P7 - NOT USED.
/ 
/         P8 - NOT USED.
/ 
/         P9 - NOT USED.
/ 
2  END 2                     *END OF THE MODULE 
COMPILE,SOURCE               *FEP99 PARAMETER DOCUMENTATION 
   MODULE FEP99A,DEMA3(14),LOCK 
/ 
/        MODULE         MODULE NAME           ACCESS   RUN
/        NUMBER       AND DESCRIPTION         LEVEL    TIME 
/        ------       ---------------         ------  ------
/ 
/         01   CONTROLLER DIAG. W/R             3     2 SEC.
/         03   GEN. EXTENDED STATUS             3     2 SEC.
/         05   LSP STATUS                       3     1 SEC.
/         07   LSP ECHO CHECK                   3     1 SEC.
/         09   SYSWR/SYSRD ESM TEST             3     3 SEC.
/         11   ESM DIAG. WRITE                  3     6 SEC.
/         13   ESM DIAG. READ                   3     9 SEC.
/         15   ESM ONE SECTOR READ              3     3 SEC.
/         17   ESM ONE SECTOR WRITE             3     7 SEC.
/         19   ESM ONE SECTOR VERIFY            3     3 SEC.
/         21   ESM VERIFY ERROR                 3     3 SEC.
/         23   ESM ONE TRACK READ               3     6 SEC.
/         25   ESM ONE TRACK WRITE              3     6 SEC.
/         27   ESM ONE TRACK VERIFY             3     3 SEC.
/         29   ESM ONE CYLINDER READ            3    37 SEC.
/         31   ESM ONE CYLINDER WRITE           3    37 SEC.
/         33   ESM ONE CYLINDER VERIFY          3     4 SEC.
/         --------------------------------------------------
/         TOTALS                               2 MIN. 9 SEC.
/ 
/ 
1  END 1                     *END OF THE MODULE 
COMPILE,SOURCE               *FEP99A DESCRIPTION DOCUMENTATION
   MODULE FEP99B,DEMA3(14),LOCK 
/ 
/         ABBREVIATIONS 
/ 
/ 
/         CNTR      - CONTROLLER
/         BUF.      - BUFFER
/         CNTR      - CONTROLLER
/         CPU       - CENTRAL PROCESSING UNIT 
/         CYL.      - CYLINDER
/         DEMA      - DIRECT EXTENDED MEMORY ACCESS 
/         DIAG.     - DIAGNOSTIC
/         ERS       - EXTERNAL REFERENCE SPECIFICATION
/         ESM       - EXTENDED SEMICONDUCTOR MEMORY 
/         EXT.      - EXTENDED
/         FMD       - FIXED MODULE DRIVE
/         GEN.      - GENERAL 
/         HSP       - HIGH SPEED PORT 
/         LRG       - LARGE 
/         LSP       - LOW SPEED PORT
/         LSP       - LOW SPEED PORT
/         MAINT.    - MAINTENANCE 
/         MALET     - MAINTENANCE APPLICATION LANGUAGE  FOR   EQUIPMENT 
/                     TESTING 
/         MIN.      - MINUTE
/         MSG       - MESSAGE 
/         M/S       - MAINTENANCE SOFTWARE
/         NO.       - NUMBER
/         PFSG      - PRESERVICE FORECAST GROUP 
/         SEC       - SECTOR
/         SEC.      - SECOND
/         SPEC.     - SPECIFICATION 
/         TRK       - TRACK 
/         W/R       - WRITE/READ
/ 
/ 
1  END 1
COMPILE,SOURCE               *FEP99B - ABBREVIATIONS
* 
* 
***       FEP - FMD/ESM PATH TEST 
***       APPLICATIONS
**
*         APPLICATIONS
*         ------------
* 
*         1.  THE MODULES IN THE FEP TEST PROVIDE  THE  USER  WITH  THE 
*             ABILITY  TO  LOOP  ON REPEAT CONDITION AND REPEAT MODULE. 
*             IF AFTER REPORTING AN ERROR IT  IS  DETERMINED  THAT  THE 
*             7155-401 CONTROLLER IS HUNG OR THE MA722-A CONTROLWARE IS 
*             NOT RESPONDING CORRECTLY,  REPEAT  CONDITION  AND  REPEAT 
*             MODULE ARE NOT PROVIDED.
* 
*         2.  ALL ERRORS REPORTED BY THE FEP TEST PROVIDE THE USER WITH 
*             A PRESERVICE FORECAST GROUP.
* 
*         3.  THE MODULES IN THE FEP TEST LIMIT THE  NUMBER  OF  ERRORS 
*             REPORTED  TO  THE  USER  TO  FIVE  IF REPEAT CONDITION OR 
*             REPEAT MODULE IS NOT SELECTED.  IF  AFTER  A  MODULE  HAS 
*             DETECTED  FIVE  ERRORS,  AND  REPEAT  CONDITION OR REPEAT 
*             MODULE IS NOT SELECTED, EXECUTION OF THE MODULE  WILL  BE 
*             ABORTED.
* 
*         4.  IF A ERROR  IS  DETECTED  WHILE  TRYING TO CONNECT TO THE 
*             7155-401 CONTROLLER, AND THE  ERROR  INDICATES  THAT  THE 
*             CONTROLLER  IS  HUNG,  THE  ERROR PROCESSING ROUTINE WILL 
*             ISSUE A RESET COMMAND TO THE CONTROLLER AUTOMATICALLY.
* 
*         5.  THE FEP  TEST  IS  DESIGNED  TO   RUN   IN   AN   ON-LINE 
*             ENVIRONMENT ONLY. 
* 
*         6.  IN ORDER TO INCREASE THE STRESS OF DATA TRANSFERS FROM/TO 
*             ESM TO/FROM THE  DEMA  CONTROLLER,  THE FEP FULL CYLINDER 
*             TRANSFER MODULES SHOULD BE RUN ON ALL DEMA CONTROLLERS ON 
*             THE SYSTEM AT THE SAME TIME WITH REPEAT MODULE SELECTED.
* 
* 
* 
*** 3.1.3 INTERFACES
**
*   3.1.3 INTERFACES
*         ----------
* 
*         REFER TO SECTION 3.1.2 FOR PARAMETERS AND MESSAGES. 
* 
* 
*** 3.1.4 TEST ABORTS 
**
*   3.1.4 TEST ABORTS 
*         ----------- 
* 
*         1.  THE MODULES IN  THE  FEP  TEST LIMIT THE NUMBER OF ERRORS 
*             REPORTED TO THE USER TO FIVE.  IF AFTER FIVE ERRORS  HAVE 
*             BEEN  DETECTED  WHEN EXECUTING A MODULE, EXECUTION OF THE 
*             MODULE WILL BE ABORTED  IF  REPEAT  CONDITION  OR  REPEAT 
*             MODULE IS NOT SELECTED. 
* 
*         2.  IF THE ERROR  PROCESSING  ROUTINE DETERMINES THAT A RESET 
*             COMMAND SHOULD BE ISSUED TO THE 7155-401  CONTROLLER  AND 
*             AFTER  ISSUING THE RESET COMMAND, THE 7155-401 CONTROLLER 
*             FAILS TO RESPOND CORRECTLY, EXECUTION  OF  THE  FEP  TEST 
*             WILL BE ABORTED.
* 
* 
*** 3.1.5 SYSTEM ABORTS 
**
*   3.1.5 SYSTEM ABORTS 
*         ------------- 
* 
*         NO SYSTEM  ABORTS  SHOULD  EVER  BE  CAUSED BY THE TEST.  THE 
*         PRODUCT OVERLAY DRIVER SHOULD PROTECT  THE  SYSTEM  FROM  ANY 
*         ABORTS. 
* 
* 
*** 3.1.6 ERRORS
**
*   3.1.6 ERRORS
*         ------
* 
*         FOR EASE  OF  REFERENCE,  THESE MESSAGES ARE GROUPED WITH ALL 
*         THE TEST MESSAGES IN SECTION 3.1.2. 
* 
* 
*** 3.1.7 PERFORMANCE 
**
*   3.1.7 PERFORMANCE 
*         ----------- 
* 
* 
***       HARDWARE
**
*         HARDWARE
*         --------
* 
*         1.  THE FEP TEST IS DESIGNED TO TEST THE HARDWARE IN THE PATH 
*             FROM THE 7155-401 CONTROLLER TO THE LSP IN ESM. 
* 
*         2.  THE FEP TEST  USES THE 885-4X DRIVE DURING DATA TRANSFERS 
*             BUT IT IS NOT DESIGNED TO BE USED TO ISOLATE  OR  CORRECT 
*             HARDWARE FAILURES IN THE 885-4X DRIVE.
* 
*         3.  THE FEP TEST  USES  THE ESM DURING DATA TRANSFERS, BUT IS 
*             NOT DESIGNED TO BE USED TO ISOLATE  OR  CORRECT  HARDWARE 
*             FAILURES IN ESM.
* 
*         4.  THE FEP TEST  PERFORMS ALL DATA TRANSFERS TO AND FROM ESM 
*             INVOLVING MORE THAN ONE SECTOR IN AN ONE TO ONE INTERLACE 
*             MODE. 
* 
* 
***       SOFTWARE
**
*         SOFTWARE
*         --------
* 
*         MODULE RUNNING TIMES AND ACCESS LEVELS. 
*         --------------------------------------- 
* 
*         MODULE            RUNNING          ACCESS 
*          NAME              TIME             LEVEL 
*         ------            -------          ------ 
* 
*         FEP01              2 SEC.             3 
*         FEP03              2 SEC.             3 
*         FEP05              1 SEC.             3 
*         FEP07              1 SEC.             3 
*         FEP09              3 SEC.             3 
*         FEP11              6 SEC.             3 
*         FEP13              9 SEC.             3 
*         FEP15              3 SEC.             3 
*         FEP17              7 SEC.             3 
*         FEP19              3 SEC.             3 
*         FEP21              3 SEC.             3 
*         FEP23              6 SEC.             3 
*         FEP25              6 SEC.             3 
*         FEP27              3 SEC.             3 
*         FEP29             37 SEC.             3 
*         FEP31             37 SEC.             3 
*         FEP33              4 SEC.             3 
*         ----------------------------------------- 
*         TOTALS            2 MIN.  9 SEC.
* 
* 
*         1.  THE RUNNING  TIMES  FOR  THE FEP TEST WERE MEASURED USING 
*             THE KL SYSTEM DISPLAY WITH MINIMAL  SYSTEM  ACTIVITY  AND 
*             MINIMAL ACTIVITY IN THE CONTROLLER AND DATA PATH. 
* 
*         2.  INCREASES IN   SYSTEM   ACTIVITY   AND  ACTIVITY  IN  THE 
*             CONTROLLER AND DATA PATH WILL CAUSE THE RUNNING TIMES FOR 
*             THE MODULES AND THE FEP TEST TO INCREASE. 
* 
*         3.  THE FEP  TEST WILL CAUSE DEGRADATION IN THE THROUGHPUT OF 
*             THE OPERATING SYSTEM. 
* 
* 
*** 3.1.8 INSTALLATION PARAMETERS 
**
*   3.1.8 INSTALLATION PARAMETERS 
*         ----------------------- 
* 
*         NO ASSEMBLY OPTIONS ARE PROVIDED IN THE FEP TEST. 
* 
* 
*** 4.0   PRODUCT LEVEL DESCRIPTION 
**
*   4.0   PRODUCT LEVEL DESCRIPTION 
*         ------------------------- 
* 
* 
*** 4.1   PUBLICATIONS AFFECTED 
**
*   4.1   PUBLICATIONS AFFECTED 
*         --------------------- 
* 
*         CHANGES TO FEP AFFECTS THE FOLLOWING PUBLICATIONS-
* 
*         CML REFERENCE MANUAL                             60455980 
* 
* 
*** 4.2   EQUIPMENT CONFIGURATION 
**
*   4.2   EQUIPMENT CONFIGURATION 
*         ----------------------- 
* 
*         1.  THE FEP TEST UTILIZES  THE  MA722-A  CONTROLWARE  IN  THE 
*             7155-401  CONTROLLER  WHILE  TESTING  THE HARDWARE IN THE 
*             PATH BETWEEN THE 7155-401 CONTROLLER AND ESM. 
* 
*         2.  THE HARDWARE TO THE 885-4X DRIVE AND THE HARDWARE IN  ESM 
*             IS  UTILIZED  BY  THE  FEP  TEST, BUT THE FEP TEST IS NOT 
*             DESIGNED TO DETECT AND ISOLATE HARDWARE FAILURES IN THESE 
*             PARTS OF THE HARDWARE.
* 
*         3.  THE FOLLOWING DIAGRAM  SHOWS  THE EQUIPMENT CONFIGURATION 
*             REQUIRED FOR THE FEP TEST IN ORDER TO TEST THE PATH  FROM 
*             THE 7155-401 CONTROLLER TO ESM. 
* 
*             ************************
*             *                      *
*             *       760/770        *
*             *                      *
*             ************************
*             * PERIPHERAL *   ESM   *
*             * PROCESSORS * COUPLER *
*             ************************
*                    !          ! 
*                    !          ! 
*                    !          ! 
*                    !          --------------- 
*             **************                  ! 
*             *            *                  ! 
*             *  7155-401  *                  ! 
*             * CONTROLLER *-------------     ! 
*             *            *            !     ! 
*             **************            !     ! 
*                    !                  !     ! 
*                    !                  !     ! 
*                    !               *******  ! 
*                    !               * LSP *  ! 
*                ********            *     *  ! 
*                *885-4X*      *******************
*                *DRIVE *      * LSP * HSP * HSP *
*                ********      *     *     *     *
*                              *******************************
*                                    *           *           *
*                                    *    MIU    *    BSU    *
*                                    *           *           *
*                                    *************************
* 
*** 4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS 
**
*   4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS 
*         ------------------------------------- 
* 
*         1.  THE FEP TEST INTERFACES TO THE MA722-A  CONTROLWARE  WHEN 
*             TESTING THE  PATH BETWEEN THE 7155-401 SUBSYSTEM AND ESM. 
* 
* 
*** 4.4   SECURITY
**
*   4.4   SECURITY
*         --------
* 
*         SECURITY IS PROVIDED BY  THE  OPERATING  SYSTEM  FOR  ON-LINE 
*         MALET THRU THE USE OF CVL.
* 
* 
*** 5.0   GLOSSARY
**
*   5.0   GLOSSARY
*         --------
* 
* 
*         BSU       - BASIC STORAGE UNIT
*         CML       - CONCURRENT MAINTENANCE LIBRARY
*         CNTR      - CONTROLLER
*         CVL       - CUSTOMER ENGINEERING VALIDATION 
*         CYL       - CYLINDER
*         DEMA      - DIRECT EXTENDED MEMORY ACCESS 
*         DIAG.     - DIAGNOSTIC
*         ERS       - EXTERNAL REFERENCE SPECIFICATION
*         ESM       - EXTENDED SEMICONDUCTOR MEMORY 
*         EXT.      - EXTERNAL
*         FMD       - FIXED MODULE DRIVE
*         GEN.      - GENERAL 
*         HSP       - HIGH SPEED PORT 
*         LRG       - LARGE 
*         LSP       - LOW SPEED PORT
*         MALET     - MAINTENANCE APPLICATION LANGUAGE  FOR   EQUIPMENT 
*                     TESTING 
*         MIN.      - MINUTE
*         MIU       - MEMORY INTERFACE UNIT 
*         MSG       - MESSAGE 
*         M/S       - MAINTENANCE SOFTWARE
*         NO.       - NUMBER
*         PFSG      - PRESERVICE FORECAST GROUP 
*         PUB.      - PUBLICATION 
*         RAM       - RELIABILITY, AVAILABILITY, AND MAINTAINABILITY
*         SEC       - SECTOR
*         SEC.      - SECOND
*         SPEC.     - SPECIFICATION 
*         TRK       - TRACK 
*         W/R       - WRITE/READ
