*DECK,D88                    D88 - FMD SUBSYSTEM CONFIDENCE TEST
*IF DEF,PFMD,7
***       DH8 - DEMA SUBSYSTEM CONFIDENCE TEST
***       REVISION HISTORY
**        DH8 - DEMA SUBSYSTEM CONFIDENCE TEST
*         DH8 - DEMA SUBSYSTEM CONFIDENCE TEST
* 
*         AUTHOR - H. N. STAUFFER      MARCH 15, 1982 
* 
*IF DEF,SFMD,7
***       D88 - FMD SUBSYSTEM CONFIDENCE TEST                            D88
***       REVISION HISTORY                                               D88
**        D88 - FMD SUBSYSTEM CONFIDENCE TEST                            D88
*         D88 - FMD SUBSYSTEM CONFIDENCE TEST                            D88
*                                                                        D88
*         AUTHORS - M. B. ANDERSON      MARCH 15, 1979                   D88
*                   R. F. FELLRATH                                       D88
*                                                                        D88
*IF DEF,LSFMD,7 
***       DL8 - LSFMD SUBSYSTEM CONFIDENCE TEST 
***       REVISION HISTORY
**        DL8 - LSFMD SUBSYSTEM CONFIDENCE TEST 
*         DL8 - LSFMD SUBSYSTEM CONFIDENCE TEST 
* 
*         AUTHOR - B. DANESHVAR      FEB 15, 1983 
* 
*         COPYRIGHT CONTROL DATA CORP. 1979                              D88
*                                                                        D88
*** 1.0   INTRODUCTION                                                   D88
**  1.0   INTRODUCTION                                                   D88
*   1.0   INTRODUCTION                                                   D88
*         ------------                                                   D88
*                                                                        D88
*IF DEF,PFMD,4
*         DH8 IS A 3 MINUTE CONFIDENCE TEST  USED  TO  ACQUIRE  A  HIGH 
*         DEGREE OF CONFIDENCE THAT THE 885-4X DRIVE AND CONTROLLER ARE 
*         OPERATIONAL.  IF AN ERROR IS DETECTED, A VARIETY  OF  MODULES 
*         ARE AVAILABLE TO DETERMINE WHETHER THE PROBLEM RESIDES IN THE 
*IF DEF,SFMD,4
*         D88 IS A 3 MINUTE CONFIDENCE TEST  USED  TO  ACQUIRE  A  HIGH  D88
*         DEGREE  OF  CONFIDENCE  THAT THE FMD DRIVE AND CONTROLLER ARE  D88
*         OPERATIONAL.  IF AN ERROR IS DETECTED, A VARIETY  OF  MODULES  D88
*         ARE AVAILABLE TO DETERMINE WHETHER THE PROBLEM RESIDES IN THE  D88
*IF DEF,LSFMD,4 
*         DL8 IS A 3 MINUTE CONFIDENCE TEST  USED  TO  ACQUIRE  A  HIGH 
*         DEGREE  OF  CONFIDENCE  THAT THE FMD DRIVE AND CONTROLLER ARE 
*         OPERATIONAL.  IF AN ERROR IS DETECTED, A VARIETY  OF  MODULES 
*         ARE AVAILABLE TO DETERMINE WHETHER THE PROBLEM RESIDES IN THE 
*IF DEF,PFMD,6
*         DRIVE,  CONTROLLER,  OR ESM DATA PATH.  THE  CONFIDENCE  TEST 
*         WILL DISPLAY  PRESERVICE FORECAST  GROUP (PSFG) ISOLATION IN- 
*         FORMATION WHICH WILL INDICATE  THE  PROPER HARDWARE  SUITCASE 
*         NEEDED  TO REPAIR THE FAILURE.  THE CONFIDENCE PORTION OF DH8 
*         MUST BE  RUN ON EACH SPINDLE  OF THE  885-4X DRIVE  TO INSURE 
*         THAT THE ENTIRE DEMA SUBSYSTEM HAS BEEN TESTED. 
*IF DEF,SFMD,6
*         DRIVE OR CONTROLLER.  THE CONFIDENCE TEST WILL  ALSO  DISPLAY  D88
*         PRESERVICE  FORECAST  GROUP  ISOLATION INFORMATION WHICH WILL  D88
*         INDICATE THE PROPER HARDWARE SUITCASE NEEDED  TO  REPAIR  THE  D88
*         FAILURE.   THE  CONFIDENCE  PORTION  OF  D88  MUST  BE RUN ON  D88
*         EACH SPINDLE OF THE 885-1X  DRIVE TO  INSURE THAT  THE ENTIRE 
*         SUBSYSTEM HAS BEEN TESTED.                                     D88
*IF DEF,LSFMD,6 
*         DRIVE OR CONTROLLER.  THE CONFIDENCE TEST WILL  ALSO  DISPLAY 
*         PRESERVICE  FORECAST  GROUP  ISOLATION INFORMATION WHICH WILL 
*         INDICATE THE PROPER HARDWARE SUITCASE NEEDED  TO  REPAIR  THE 
*         FAILURE.   THE  CONFIDENCE  PORTION  OF  DL8  MUST  BE RUN ON 
*         EACH SPINDLE OF THE 885-1X  DRIVE TO  INSURE THAT  THE ENTIRE 
*         SUBSYSTEM HAS BEEN TESTED.
*                                                                        D88
*IF DEF,PFMD,1
*         THERE ARE THREE PARTS TO THE DH8 DIAGNOSTIC.
*IF DEF,SFMD,1
*         THERE ARE THREE PARTS TO THE D88 DIAGNOSTIC.                   D88
*IF DEF,LSFMD,1 
*         THERE ARE THREE PARTS TO THE DL8 DIAGNOSTIC.
*                                                                        D88
*                 PART I = CONFIDENCE/VERIFICATION MODULES               D88
*                                                                        D88
*                    THIS  SECTION  REQUIRES  NO  PARAMETER  INPUT. ITS  D88PTR4
*                    FUNCTION IS TO PROVIDE THE OPERATOR WITH  A  LEVEL  D88
*IF DEF,PFMD,1
*                    OF CONFIDENCE IN THE DEMA SUBSYSTEM HARDWARE WHILE 
*IF DEF,SFMD,1
*                    OF  CONFIDENCE IN THE FMD SUBSYSTEM HARDWARE WHILE 
*IF DEF,LSFMD,1 
*                    OF  CONFIDENCE IN THE FMD SUBSYSTEM HARDWARE WHILE  D88
*                    SHARING A DRIVE WITH THE SYSTEM. THE  MODULES  ARE  D88
*                    ARRANGED  SO  THAT BASIC CONTROLLER FUNCTIONS WILL  D88
*                    BE TESTED PRIOR TO MORE COMPLEX  CONTROLLER  FUNC-  D88
*                    TIONS.   FOLLOWING  THE  CONTROLLER  VERIFICATION,  D88PTR4
*                    THE DRIVE WILL BE  TESTED  IN  THE  SAME  BUILDING  D88
*                    BLOCK  PYRAMID  FASHION.   AN ACCESS LEVEL OF 3 IS  D88
*                    REQUIRED WHEN RUNNING THE  CONFIDENCE  PORTION  OF  D88
*                    THE  TEST  TO  OBTAIN  THE  BENEFITS  OF USING THE  D88
*                    BUILDING BLOCK APPROACH. IF A LOWER  ACCESS  LEVEL  D88
*                    IS  CHOSEN,  THE  OPERATOR  SHOULD  REFERENCE  THE  D88
*                    SOFTWARE REQUIREMENTS SECTION OF THIS ERS (SECTION  D88
*                    2.2)    FOR INFORMATION AS TO WHAT MODULES WILL BE  D88
*                    RUN UNDER THIS CONDITION.  SCOPE  LOOPING  IS  NOT  D88
*                    AVAILABLE IN THIS SECTION.                          D88
*                                                                        D88
*                 PART II = PARAMETER DRIVEN MODULES                     D88
*                                                                        D88
*                    WHEN A MODULE OF THIS  SECTION HAS  BEEN SELECTED, 
*                    THE USER CAN  ALSO  SET  THE  PARAMETER  REGISTERS  D88PTR4
*                    TO SELECT AN ADDRESS,  DATA PATTERN,  READ MARGIN, 
*                    WRITE/READ OPTION, AND ITERATION COUNT. THE REPEAT  D88PTR4
*                    CONDITION/REPEAT MODULE AND STOP-ON-ERROR SWITCHES  D88PTR4
*                    CAN BE USED AS AN AID IN LOCATING A FAILURE. THESE  D88PTR4
*                    MODULES ARE  CAPABLE  OF READING/WRITING  OVER THE 
*                    ENTIRE DISK PACK.   THE OPERATOR MAY SELECT AN AC- 
*                    CESS LEVEL OF 1 THRU 4  WHEN RUNNING THE PARAMETER 
*                    DRIVEN MODULES.  HOWEVER, THE ACCESS LEVEL SELECT- 
*                    ED MAY RESTRICT THE USABLE ADDRESS RANGE.
*                                                                        D88
*                 PART III = REPAIR MODULES                              D88
*                                                                        D88
*                    THE REPAIR MODULES MAY  AID THE USER IN LOCATING A 
*                    SPECIFIC PROBLEM IF PREVIOUS TESTING HAS NOT FOUND  D88
*                    IT.  THESE MODULES EXERCISE ONE FUNCTION AND ALLOW 
*                    THE OPERATOR TO RUN IN SCOPE LOOP MODE.  PARAMETER 
*                    INPUT IS AVAILABLE AND  THE SWITCHES  EG. RC,RM,SE 
*                    - ARE SENSED.
*                                                                        D88
*** 1.1   RESTRICTIONS                                                   D88
**  1.1   RESTRICTIONS                                                   D88
*   1.1   RESTRICTIONS                                                   D88
*         ------------                                                   D88
*                                                                        D88
*IF DEF,PFMD,2
*         1.  THE MA722-A  CONTROLWARE MUST HAVE PREVIOUSLY BEEN LOADED 
*             INTO THE 7155-401 SUBSYSTEM.
*IF DEF,SFMD,2
*         1.  THE MA721-A  CONTROLWARE MUST HAVE PREVIOUSLY BEEN LOADED 
*             INTO THE 7155-1,1X SUBSYSTEM. 
*IF DEF,LSFMD,2 
*         1.  THE MA721-A  CONTROLWARE MUST HAVE PREVIOUSLY BEEN LOADED 
*             INTO THE 7155-1,1X SUBSYSTEM. 
*                                                                        D88
*         2.  ON MODULE DETECTED ERRORS, THE EC AND  EM  REGISTERS  ARE  D88
*             USED INTERNALLY BY THE TEST AND DO NOT CONTAIN THE ACTUAL  D88
*             ERROR CODE OR ACTUAL ERROR MESSAGE FORMAT NUMBER.  THE EC  D88
*             REGISTER  IS  USED  TO  INDICATE  TO THE ERROR PROCESSING  D88
*             SUBMODULES IF DATA OR STATUS COMPARE ERROR INFORMATION IS  D88
*             TO  BE  DISPLAYED  IN  THE  ERROR MESSAGE DISPLAY. THE EC  D88
*             REGISTER IS SET TO 0 IF NO DATA IS TO BE DISPLAYED, 1  IF  D88
*             DATA  COMPARE ERRORS ARE TO BE DISPLAYED OR 2 IF A STATUS  D88
*             WORD COMPARE ERROR  IS  TO  BE  DISPLAYED  IN  THE  ERROR  D88
*             MESSAGE  DISPLAY.  THE EM REGISTER IS USED TO INDICATE TO  D88PTR4
*             THE ERROR PROCESSING SUBMODULES WHICH PRESERVICE FORECAST  D88
*             GROUP  NUMBER  IS  TO  BE  DISPLAYED IN THE ERROR MESSAGE  D88
*             DISPLAY FOR THE ERROR BEING REPORTED.  THE EM REGISTER IS  D88
*IF DEF,PFMD,2
*             SET  TO 0 FOR FHDC,  1 FOR FHDD,  2 FOR FHDC/FHDD,  3 FOR 
*             FHDD/FHDC,  4 FOR DESM,  OR 5 FOR CESM. 
*IF DEF,SFMD,2
*             SET TO 0 FOR FMDC, 1 FOR FMDD,  2 FOR FMDC/FMDD, OR 3 FOR 
*             FMDD/FMDC.
*IF DEF,LSFMD,2 
*             SET TO 0 FOR FMDC, 1 FOR FMDD,  2 FOR FMDC/FMDD, OR 3 FOR 
*             FMDD/FMDC.
* 
*         3.  THE UTILITY,  FMU MUST HAVE PREVIOUSLY BEEN  USED TO PRE- 
*             WRITE  SECTORS OF THE  FACTORY CYLINDER WITH A WORST CASE 
*IF DEF,PFMD,2
*             DATA PATTERN.    THESE SECTORS ARE USED BY MODULES 17 AND 
*             18. 
*IF DEF,SFMD,1
*             DATA PATTERN.    THESE SECTORS ARE USED BY MODULES 17.
*IF DEF,LSFMD,1 
*             DATA PATTERN.    THESE SECTORS ARE USED BY MODULE 17. 
*                                                                        D88
*** 1.2   CHARACTERISTICS                                                D88
**  1.2   CHARACTERISTICS                                                D88
*   1.2   CHARACTERISTICS                                                D88
*         ---------------                                                D88
*                                                                        D88
*IF DEF,PFMD,1
*         1.  PROGRAM NAME...................................DH8
*IF DEF,SFMD,1
*         1.  PROGRAM NAME...................................D88         D88
*IF DEF,LSFMD,1 
*         1.  PROGRAM NAME...................................DL8
*                                                                        D88
*         2.  TEST/DIAG/UTILITY/SYSTEM......................TEST         D88
*                                                                        D88
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER.........MALET         D88
*                                                                        D88
*IF DEF,PFMD,1
*         4.  RUN TIME (DEFAULT).................2 MIN., 43 SEC.
*IF DEF,SFMD,1
*         4.  RUN TIME (DEFAULT).................3 MIN., 20 SEC.         D88
*IF DEF,LSFMD,1 
*         4.  RUN TIME (DEFAULT).................3 MIN., 20 SEC.
*                                                                        D88
*IF DEF,PFMD,1
*         5.  RUN TIME/QUICK LOOK (DEFAULT)......2 MIN., 43 SEC.
*IF DEF,SFMD,1
*         5.  RUN TIME/QUICK LOOK (DEFAULT)......3 MIN., 20 SEC.
*IF DEF,LSFMD,1 
*         5.  RUN TIME/QUICK LOOK (DEFAULT)......3 MIN., 20 SEC.         D88
*                                                                        D88
*         6.  LEVEL OF ISOLATION.......................DETECTION         D88
*                                                                        D88
*IF DEF,LSFMD,1 
*         7.  ON-LINE/OFF-LINE/BOTH........................BOTH.
*IF -DEF,LSFMD,1
*         7.  ON-LINE/OFF-LINE/BOTH......................ON-LINE         D88
*                                                                        D88
*         8.  ON-LINE SYSTEM..........................NOS,NOS/BE         D88
*                                                                        D88
*IF DEF,LSFMD,1 
*         9.  OFF-LINE SYSTEM.............................DEMOT.
*IF -DEF,LSFMD,1
*         9.  OFF-LINE SYSTEM...............................NONE         D88
*                                                                        D88
*         10. ASSEMBLY LANGUAGE............................MALET         D88
*                                                                        D88
*         11. SOURCE CODE MAINTENANCE.....................UPDATE         D88
*                                                                        D88
*** 2.0   APPLICABLE DOCUMENTS                                           D88
**  2.0   APPLICABLE DOCUMENTS                                           D88
*   2.0   APPLICABLE DOCUMENTS                                           D88
*         --------------------                                           D88
*                                                                        D88
*         1.  EQUIPMENT SPECIFICATION FOR FA211,  FV622,  FV670,  FV671  D88
*             FIXED MODULE DRIVE SUBSYSTEM CONTROLLER NO. 22938611.      D88
*                                                                        D88
*         2.  EQUIPMENT SPECIFICATION FOR CYBER SERIAL DISK STORAGE NO.  D88
*             64035300.                                                  D88
*                                                                        D88
*IF DEF,PFMD,2
*         3.  FA211-B/C  DISK  STORAGE  SUBSYSTEM  MA722-A  CONTROLWARE 
*             EXTERNAL REFERENCE SPECIFICATION NUMBER 52706628. 
*IF DEF,SFMD,2
*         3.  7155  DISK  STORAGE SUBSYSTEM MA721-A CONTROLWARE ERS NO.  D88
*             11897302.                                                  D88
*IF DEF,LSFMD,2 
*         3.  7155  DISK  STORAGE SUBSYSTEM MA721-A CONTROLWARE ERS NO. 
*             11897302. 
*                                                                        D88
*** 3.0   PROGRAM DESCRIPTION                                            D88
**  3.0   PROGRAM DESCRIPTION                                            D88
*   3.0   PROGRAM DESCRIPTION                                            D88
*         -------------------                                            D88
*                                                                        D88
*   3.1   PROGRAM NAME                                                   D88
*         ------------                                                   D88
*                                                                        D88
*         ABSTRACT                                                       D88
*         --------                                                       D88
*                                                                        D88
*IF DEF,PFMD,4
*         DH8 IS A CONFIDENCE TEST FOR THE  DEMA  DISK  SUBSYSTEM.  THE 
*         TEST IS DIVIDED INTO THREE PARTS, THE CONFIDENCE/VERIFICATION 
*         MODULES (DH801-DH839), THE PARAMETER  DRIVEN  MODULES (DH840- 
*         DH846), AND THE REPAIR MODULES (DH860-DH865). 
*IF DEF,SFMD,4
*         D88 IS A CONFIDENCE TEST FOR THE  FMD   DISK  SUBSYSTEM.  THE 
*         TEST IS DIVIDED INTO THREE PARTS, THE CONFIDENCE/VERIFICATION  D88
*         MODULES (D8801-D8839), THE PARAMETER  DRIVEN  MODULES (D8840-  D88
*         D8846), AND THE REPAIR MODULES (D8860-D8865).                  D88
*IF DEF,LSFMD,4 
*         DL8 IS A CONFIDENCE TEST FOR THE  FMD   DISK  SUBSYSTEM.  THE 
*         TEST IS DIVIDED INTO THREE PARTS, THE CONFIDENCE/VERIFICATION 
*         MODULES (DL801-DL839), THE PARAMETER  DRIVEN  MODULES (DL840- 
*         DL846), AND THE REPAIR MODULES (DL860-DL865). 
*                                                                        D88
*         THE  CONFIDENCE/VERIFICATION  MODULES  ARE  DESIGNED  TO  RUN  D88
*         WITHIN 3 MINUTES AND PROVIDE THE USER WITH  A HIGH  DEGREE OF 
*IF DEF,PFMD,1
*         CONFIDENCE THAT THE DEMA DISK SUBSYSTEM IS OPERATIONAL. THESE 
*IF DEF,SFMD,1
*         CONFIDENCE THAT THE FMD  DISK SUBSYSTEM IS OPERATIONAL. THESE 
*IF DEF,LSFMD,1 
*         CONFIDENCE THAT THE FMD  DISK SUBSYSTEM IS OPERATIONAL. THESE 
*         MODULES DO NOT REQUIRE ANY  PARAMETERS TO RUN AND DO NOT SUP- 
*         PORT REPEAT CONDITION OR SCOPE LOOP.
*                                                                        D88
*IF DEF,PFMD,1
*         DH801        TEST THE COMMUNICATION  PATHS  BETWEEN  THE  FMD 
*IF DEF,SFMD,1
*         D8801        TEST THE COMMUNICATION  PATHS  BETWEEN  THE  FMD  D88
*IF DEF,LSFMD,1 
*         DL801        TEST THE COMMUNICATION  PATHS  BETWEEN  THE  FMD 
*                      CONTROLLER AND THE CYBER 170/70 PP CHANNEL.       D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH803        TEST THE RESET OPERATION AND  THE 7155 PROCESSOR 
*IF DEF,SFMD,1
*         D8803        TEST THE RESET OPERATION AND  THE 7155 PROCESSOR 
*IF DEF,LSFMD,1 
*         DL803        TEST THE RESET OPERATION AND  THE 7155 PROCESSOR 
*                      BY EXECUTING THE ROM DIAGNOSTIC. 
*                                                                        D88
*IF DEF,PFMD,3
*         DH805        TEST  FOR INTERMITTENT FAILURES IN THE DATA PATH 
*                      BETWEEN THE  PP AND THE DEMA CONTROLLER BY READ- 
*                      ING GENERAL STATUS.
*IF DEF,SFMD,3
*         D8805        TEST  FOR INTERMITTENT FAILURES IN THE DATA PATH  D88
*                      BETWEEN THE PP AND THE FMD CONTROLLER BY READING  D88
*                      GENERAL STATUS.                                   D88
*IF DEF,LSFMD,3 
*         DL805        TEST  FOR INTERMITTENT FAILURES IN THE DATA PATH 
*                      BETWEEN THE PP AND THE FMD CONTROLLER BY READING 
*                      GENERAL STATUS.
*                                                                        D88
*IF DEF,PFMD,3
*         DH807        TEST FOR INTERMITTENT FAILURES IN THE DATA  PATH 
*                      BETWEEN THE  PP AND THE DEMA CONTROLLER BY READ- 
*                      ING DETAILED STATUS. 
*IF DEF,SFMD,3
*         D8807        TEST FOR INTERMITTENT FAILURES IN THE DATA  PATH  D88
*                      BETWEEN THE PP AND THE FMD CONTROLLER BY READING  D88
*                      DETAILED STATUS.                                  D88
*IF DEF,LSFMD,3 
*         DL807        TEST FOR INTERMITTENT FAILURES IN THE DATA  PATH 
*                      BETWEEN THE PP AND THE FMD CONTROLLER BY READING 
*                      DETAILED STATUS. 
*                                                                        D88
*IF DEF,PFMD,2
*         DH809        TEST  THAT  THE CYBER CHANNEL (CHANNEL 16)  WILL 
*                      TRANSFER DATA TO AND  FROM  THE  DEMA CONTROLLER 
*IF DEF,SFMD,2
*         D8809        TEST  THAT  THE CYBER CHANNEL (CHANNEL 16)  WILL  D88
*                      TRANSFER DATA TO AND  FROM  THE  FMD  CONTROLLER 
*IF DEF,LSFMD,2 
*         DL809        TEST  THAT  THE CYBER CHANNEL (CHANNEL 16)  WILL 
*                      TRANSFER DATA TO AND  FROM  THE  FMD  CONTROLLER  D88
*                      BUFFER.                                           D88
*                                                                        D88
*IF DEF,PFMD,3
*         DH811        TEST  THAT  THE  NORMAL  CHANNELS ARE CAPABLE OF 
*                      READING  DATA  FROM THE DEMA  CONTROLLER BUFFER. 
*                      THE 885-4X DRIVE IS NOT ACCESSED IN THIS MODULE. 
*IF DEF,SFMD,3
*         D8811        TEST  THAT  THE  NORMAL  CHANNELS ARE CAPABLE OF  D88
*                      READING DATA FROM THE FMD CONTROLLER BUFFER. THE  D88
*                      885-1X DRIVE IS NOT ACCESSED IN THIS MODULE. 
*IF DEF,LSFMD,3 
*         DL811        TEST  THAT  THE  NORMAL  CHANNELS ARE CAPABLE OF 
*                      READING DATA FROM THE FMD CONTROLLER BUFFER. THE 
*                      885-1X DRIVE IS NOT ACCESSED IN THIS MODULE. 
* 
*IF DEF,PFMD,2
*         DH812        TEST THE BUS OUT DATA PATH TO AND BUS IN DATA
*                      PATH FROM THE 885-4X DRIVE.
*IF DEF,SFMD,2
*         D8812        TEST THE BUS OUT DATA PATH TO AND BUS IN DATA
*                      PATH FROM THE 885-1X DRIVE.
*IF DEF,LSFMD,2 
*         DL812        TEST THE BUS OUT DATA PATH TO AND BUS IN DATA
*                      PATH FROM THE 885-1X DRIVE.
*                                                                        D88
*IF DEF,PFMD,2
*         DH813        MEASURE  THE  885-4X  SEEK  TIME  BY TIMING  THE 
*                      885-4X SERVO  USING A CONTROLWARE FUNCTION.
*IF DEF,SFMD,2
*         D8813        MEASURE  THE  885-1X  SEEK  TIME  BY TIMING  THE 
*                      885-1X SERVO  USING A CONTROLWARE FUNCTION.
*IF DEF,LSFMD,2 
*         DL813        MEASURE  THE  885-1X  SEEK  TIME  BY TIMING  THE 
*                      885-1X SERVO  USING A CONTROLWARE FUNCTION.
*                                                                        D88
*IF DEF,PFMD,5
*         DH814        TEST THE  PPU  TO ESM PATH  THRU  THE  OPERATING 
*                      SYSTEM.  THIS  TEST USES  THE  SYSWR, SYSRD, AND 
*                      COMPARE COMMANDS TO CHECK DATA TRANSMITTED.
* 
*         DH815        DETERMINE IF THE SERIAL NUMBER, THE FACTORY FLAW 
*IF DEF,SFMD,1
*         D8815        DETERMINE IF THE SERIAL NUMBER, THE FACTORY FLAW  D88
*IF DEF,LSFMD,1 
*         DL815        DETERMINE IF THE SERIAL NUMBER, THE FACTORY FLAW 
*                      MAP  AND  UTILITY  FLAW  MAP CAN BE READ OFF THE  D88
*                      PRE-RECORDED  SECTORS  OF  A  FACTORY  FORMATTED  D88
*                      PACK.                                             D88
*                                                                        D88
*IF DEF,PFMD,4
*         DH816        VERIFY THAT DATA CAN  BE TRANSMITTED BETWEEN THE 
*                      DEMA CONTROLLER AND ESM-S LOW SPEED PORT.
* 
*         DH817        VERIFY  THAT THE HEAD POSITIONING IS THE SAME AS 
*IF DEF,SFMD,1
*         D8817        VERIFY  THAT THE HEAD POSITIONING IS THE SAME AS  D88
*IF DEF,LSFMD,1 
*         DL817        VERIFY  THAT THE HEAD POSITIONING IS THE SAME AS 
*                      WHEN THESE  PREWRITTEN SECTORS  WERE  WRITTEN BY 
*                      THE FMU UTILITY. 
*                                                                        D88
*IF DEF,PFMD,5
*         DH818        VERIFY THAT THE DATA PREWRITTEN BY THE FMU UTIL- 
*                      ITY MAY BE READ UTILIZING THE DEMA PATH. 
* 
*         DH819        VERIFY  THAT  NORMAL  CHANNELS  (CHAN. 0-15) CAN 
*                      WRITE DATA TO THE DEMA CONTROLLER BUFFER.
*IF DEF,SFMD,2
*         D8819        VERIFY  THAT  NORMAL  CHANNELS  (CHAN. 0-15) CAN  D88
*                      WRITE DATA TO THE FMD CONTROLLER BUFFER.          D88
*IF DEF,LSFMD,2 
*         DL819        VERIFY  THAT  NORMAL  CHANNELS  (CHAN. 0-15) CAN 
*                      WRITE DATA TO THE FMD CONTROLLER BUFFER. 
*                                                                        D88
*IF DEF,PFMD,1
*         DH821        WRITE ADDRESS CODED INFORMATION IN 2/1 INTERLACE 
*IF DEF,SFMD,1
*         D8821        WRITE ADDRESS CODED INFORMATION IN 1/1 INTERLACE  D88
*IF DEF,LSFMD,1 
*         DL821        WRITE ADDRESS CODED INFORMATION IN 1/1 INTERLACE 
*                      MODE  IN  ALL SECTORS OF CYLINDER 1512 TO INSURE  D88
*                      THAT THE DATA WAS RECORDED ON THE SURFACE  WHERE  D88
*                      EXPECTED.                                         D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH822        DATA  PREVIOUSLY WRITTEN BY MODULE DH821 WILL BE 
*IF DEF,SFMD,1
*         D8823        DATA  PREVIOUSLY WRITTEN BY MODULE D8821 WILL BE  D88
*IF DEF,LSFMD,1 
*         DL823        DATA  PREVIOUSLY WRITTEN BY MODULE DL821 WILL BE 
*                      READ AND VERIFIED  AT 2/1 INTERLACE MODE.         D88
*                                                                        D88
*IF DEF,PFMD,8
*         DH823        WRITE ADDRESS CODED INFORMATION IN 1/1 INTERLACE 
*                      MODE  IN ALL  SECTORS OF CYLINDER 1512 TO INSURE 
*                      THAT DATA MAY BE WRITTEN USING THE DEMA PATH.
* 
*         DH824        DATA PREVIOUSLY WRITTEN  BY MODULE DH823 WILL BE 
*                      READ THRU THE DEMA PATH AT 1/1 INTERLACE MODE. 
* 
*         DH825        VERIFY  THAT  THE  HARDWARE   CAN   SUCCESSFULLY 
*IF DEF,SFMD,1
*         D8825        VERIFY  THAT  THE  HARDWARE   CAN   SUCCESSFULLY  D88
*IF DEF,LSFMD,1 
*         DL825        VERIFY  THAT  THE  HARDWARE   CAN   SUCCESSFULLY 
*                      CORRECT  UP  TO  8  BITS  OF BAD DATA BUT CANNOT  D88
*                      CORRECT MORE THAN 8 BITS OF BAD DATA.             D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH827        TO WRITE AND WRITE VERIFY CYLINDER 1512  IN  2/1 
*IF DEF,SFMD,1
*         D8827        TO WRITE AND WRITE VERIFY CYLINDER 1512  IN  2/1  D88
*IF DEF,LSFMD,1 
*         DL827        TO WRITE AND WRITE VERIFY CYLINDER 1512  IN  2/1 
*                      INTERLACE  IN  CYLINDER  MODE TO VERIFY THAT THE  D88
*                      WRITE VERIFY PERFORMS CORRECTLY.                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH829        VERIFY  THAT  A  WRITE  VERIFY  FAILURE  CAN  BE 
*IF DEF,SFMD,1
*         D8829        VERIFY  THAT  A  WRITE  VERIFY  FAILURE  CAN  BE  D88
*IF DEF,LSFMD,1 
*         DL829        VERIFY  THAT  A  WRITE  VERIFY  FAILURE  CAN  BE 
*                      DETECTED BY THE  CONTROLLER.                      D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH831        VERIFY   THE  ABILITY  OF  THE  CONTROLWARE  AND 
*IF DEF,SFMD,1
*         D8831        VERIFY   THE  ABILITY  OF  THE  CONTROLWARE  AND  D88
*IF DEF,LSFMD,1 
*         DL831        VERIFY   THE  ABILITY  OF  THE  CONTROLWARE  AND 
*                      CONTROLLER TO PERFORM A READ CHECKWORD SEQUENCE.  D88
*                                                                        D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH833        PERFORM A SEEK TO A  RANDOM  CYLINDER  AND  THEN 
*IF DEF,SFMD,1
*         D8833        PERFORM A SEEK TO A  RANDOM  CYLINDER  AND  THEN  D88
*IF DEF,LSFMD,1 
*         DL833        PERFORM A SEEK TO A  RANDOM  CYLINDER  AND  THEN 
*                      SEEK  TO  THE  INNERMOST  CYLINDER.  REPEAT THIS  D88PTR4
*                      SEQUENCE TWO TIMES, EACH TIME VERIFYING THE SEEK  D88
*                      ADDRESS  BY  USING  THE RETURN ADDRESS FUNCTION.  D88
*                      THIS SEQUENCE IS  REPEATED  25  TIMES  USING  25  D88
*                      RANDOM CYLINDER ADDRESSES.                        D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH835        WRITE CYLINDER 1512 WITH CODED DATA AND A UNIQUE 
*IF DEF,SFMD,1
*         D8835        WRITE CYLINDER 1512 WITH CODED DATA AND A UNIQUE  D88
*IF DEF,LSFMD,1 
*         DL835        WRITE CYLINDER 1512 WITH CODED DATA AND A UNIQUE 
*                      DATA PATTERN IN EACH  SECTOR  IN  1/1  INTERLACE  D88
*                      MODE  TO  CREATE  A  WORST CASE CONDITION IN THE  D88
*                      CYLINDER.                                         D88
*                                                                        D88
*IF DEF,PFMD,2
*         DH837        VERIFY THAT THE  ADDRESS  CODING  WAS  CORRECTLY 
*                      WRITTEN  BY  THE  PREVIOUS  MODULE (DH835) USING 
*IF DEF,SFMD,2
*         D8837        VERIFY THAT THE  ADDRESS  CODING  WAS  CORRECTLY  D88
*                      WRITTEN  BY  THE  PREVIOUS  MODULE (D8835) USING  D88
*IF DEF,LSFMD,2 
*         DL837        VERIFY THAT THE  ADDRESS  CODING  WAS  CORRECTLY 
*                      WRITTEN  BY  THE  PREVIOUS  MODULE (DL835) USING 
*                      INTERLACE 2/1 MODE.                               D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH839        VERIFY THE CURRENT SWITCH POINTS IN  THE  885-4X 
*IF DEF,SFMD,1
*         D8839        VERIFY THE CURRENT SWITCH POINTS IN  THE  885-1X 
*IF DEF,LSFMD,1 
*         DL839        VERIFY THE CURRENT SWITCH POINTS IN  THE  885-1X 
*                      DRIVE  BY DOING A READ CHECKWORD ON EVEN AND ODD  D88
*                      HEADS AT CYLINDERS 0, 512D, 513D, AND 842D.       D88
*                                                                        D88
*                                                                        D88
*         THE  PARAMETER  DRIVEN MODULES  ALLOW  THE OPERATOR  TO WRITE  D88PTR4
*IF DEF,PFMD,2
*         AND/OR READ ANYWHERE ON THE 885-4X  DISK.  THESE MODULES  USE 
*       COMBINATIONS OF THE PARAMETERS TO CONTROL TESTING OF THE 885-4X 
*IF DEF,SFMD,2
*         AND/OR READ ANYWHERE ON THE 885-1X  DISK.  THESE MODULES  USE 
*         PARAMETER WORDS P1 THRU  P9  TO CONTROL TESTING OF THE 885-1X 
*IF DEF,LSFMD,2 
*         AND/OR READ ANYWHERE ON THE 885-1X  DISK.  THESE MODULES  USE 
*         PARAMETER WORDS P1 THRU  P9  TO CONTROL TESTING OF THE 885-1X 
*         DRIVE.  CAUTION SHOULD BE USED  WHEN  RUNNING  THESE  MODULES  D88
*         BECAUSE CUSTOMER DATA COULD BE DESTROYED.                      D88
*IF DEF,PFMD
*         PARAMETER MODULES DH842-45 WILL USE THE DEMA PATH.
*ENDIF
*IF DEF,PFMD
*         THESE MODULES ARE STAND ALONE(ONLY 1 MODULE IS RUN AT A 
*         TIME). THIS IS BECAUSE THEY ARE MAINTENANCE MODULES THAT
*         ARE PARAMETER DRIVEN AND CAN WRITE AND READ ANYWHERE ON 
*         A PACK. 
*ENDIF
*                                                                        D88
*IF DEF,PFMD,1
*         DH840        WRITE AND READ EACH TRACK SELECTED ON THE 885-4X 
*IF DEF,SFMD,1
*         D8840        WRITE AND READ EACH TRACK SELECTED ON THE 885-1X 
*IF -DEF,LSFMD,1
*                      DRIVE IN A 2 TO 1 INTERLACE MODE.                 D88
*                                                                        D88
*IF DEF,PFMD,2
*         DH841        WRITE,  READ  AND COMPARE THE DATA READ FOR EACH 
*                      TRACK SELECTED ON THE  885-4X DRIVE  IN A 2 TO 1 
*IF DEF,SFMD,2
*         D8841        WRITE,  READ  AND COMPARE THE DATA READ FOR EACH 
*                      TRACK SELECTED ON THE  885-1X DRIVE  IN A 2 TO 1 
*IF -DEF,LSFMD,1
*                      INTERLACE MODE.
*                                                                        D88
*IF DEF,PFMD,2
*         DH842        WRITE AND READ EACH TRACK SELECTED ON THE 885-4X 
*                      DRIVE IN A 1 TO 1 INTERLACE MODE.  P7 NOT USED.
*IF DEF,SFMD,2
*         D8842        WRITE AND READ EACH TRACK SELECTED ON THE 885-1X 
*                      DRIVE IN A 1 TO 1 INTERLACE MODE.                 D88
*IF DEF,LSFMD,2 
*         DL842        WRITE AND READ EACH TRACK SELECTED ON THE 885-1X 
*                      DRIVE IN A 1 TO 1 INTERLACE MODE.
*                                                                        D88
*IF DEF,PFMD,3
*         DH843        WRITE, READ AND COMPARE THE DATA READ  FOR  EACH 
*                      TRACK SELECTED ON THE  885-4X DRIVE  IN A 1 TO 1 
*                      INTERLACE MODE.  P7 IS NOT USED. 
*IF DEF,SFMD,3
*         D8843        WRITE, READ AND COMPARE THE DATA READ  FOR  EACH 
*                      TRACK SELECTED ON THE  885-1X DRIVE  IN A 1 TO 1 
*                      INTERLACE MODE.
*IF DEF,LSFMD,3 
*         DL843        WRITE, READ AND COMPARE THE DATA READ  FOR  EACH 
*                      TRACK SELECTED ON THE  885-1X DRIVE  IN A 1 TO 1 
*                      INTERLACE MODE.
*                                                                        D88
*IF DEF,PFMD,3
*         DH844        WRITE AND  READ  EACH  CYLINDER SELECTED  ON THE 
*                      885-4X DRIVE IN A 1 TO 1 INTERLACE MODE.  P7  IS 
*                      NOT USED.
*IF DEF,SFMD,2
*         D8844        WRITE AND  READ  EACH  CYLINDER SELECTED  ON THE 
*                      885-1X DRIVE IN A 1 TO 1 INTERLACE MODE. 
*IF DEF,LSFMD,2 
*         DL844        WRITE AND  READ  EACH  CYLINDER SELECTED  ON THE 
*                      885-1X DRIVE IN A 1 TO 1 INTERLACE MODE. 
*                                                                        D88
*IF DEF,PFMD,1
*         DH845        DO   WRITES  AND  READS  USING  RANDOM  CYLINDER 
*IF DEF,SFMD,1
*         D8845        DO   WRITES  AND  READS  USING  RANDOM  CYLINDER  D88
*IF DEF,LSFMD,1 
*         DL845        DO   WRITES  AND  READS  USING  RANDOM  CYLINDER 
*                      NUMBERS, RANDOM  TRACK  NUMBERS,  RANDOM  SECTOR  D88
*                      NUMBERS,  AND  A RANDOM NUMBER OF SECTORS IN A 1  D88
*IF DEF,PFMD,1
*                      TO 1 INTERLACE MODE.  P7 IS NOT USED.
*IF DEF,SFMD,1
*                      TO 1 INTERLACE MODE.                              D88
*IF DEF,LSFMD,1 
*                      TO 1 INTERLACE MODE. 
*                                                                        D88
*IF DEF,PFMD,1
*         DH846        DO A READ CHECKWORD IN A 2 TO 1 INTERLACE  TRACK 
*IF DEF,SFMD,1
*         D8846        DO A READ CHECKWORD IN A 1 TO 1 INTERLACE  TRACK  D88
*IF DEF,LSFMD,1 
*         DL846        DO A READ CHECKWORD IN A 1 TO 1 INTERLACE  TRACK 
*                      MODE  ON  THE  CYLINDERS,  TRACKS,  AND  SECTORS  D88
*                      SELECTED IN THE PARAMETERS TO  VERIFY  THAT  THE  D88
*                      HEAD DISK ASSEMBLY CAN BE READ.                   D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH847        DO A READ CHECKWORD IN A 2 TO 1 INTERLACE  TRACK 
*IF DEF,SFMD,1
*         D8847        DO A READ CHECKWORD IN A 1 TO 1 INTERLACE  TRACK 
*IF DEF,LSFMD,1 
*         DL847        DO A READ CHECKWORD IN A 1 TO 1 INTERLACE  TRACK 
*                      MODE USING RANDOM CYLINDER NUMBERS, RANDOM TRACK 
*                      NUMBERS,  RANDOM  SECTOR  NUMBERS,  AND A RANDOM 
*                      NUMBER OF SECTORS. 
* 
*                                                                        D88
*         THE REPAIR MODULES ARE DESIGNED TO AID THE USER BY LOOPING ON  D88
*         A SPECIFIC FAILURE. THE USER CAN THEN USE A SCOPE TO FIND THE  D88
*         CAUSE OF THE FAILURE  AND  CORRECT THE PROBLEM.  SOME OF  THE 
*         MODULES  USE THE PARAMETER REGISTERS  FOR THE TEST.   CAUTION 
*         SHOULD BE USED WHEN  RUNNING THESE MODULES  BECAUSE  CUSTOMER 
*         DATA COULD BE DESTROYED.                                       D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH860        ISSUES A RESET COMMAND TO THE DEMA CONTROLLER TO 
*IF DEF,SFMD,1
*         D8860        ISSUES  A RESET COMMAND TO THE FMD CONTROLLER TO  D88
*IF DEF,LSFMD,1 
*         DL860        ISSUES  A RESET COMMAND TO THE FMD CONTROLLER TO 
*                      CORRECT A HUNG CONDITION.                         D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH861        PERFORM  A  SEEK  TO  THE  ADDRESS  SELECTED  IN 
*IF DEF,SFMD,1
*         D8861        PERFORM  A  SEEK  TO  THE  ADDRESS  SELECTED  IN  D88
*IF DEF,LSFMD,1 
*         DL861        PERFORM  A  SEEK  TO  THE  ADDRESS  SELECTED  IN 
*                      PARAMETER P0, P2, AND P3.                         D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH862        WRITE  THE  SECTOR SELECTED IN PARAMETER P0, P2, 
*IF DEF,SFMD,1
*         D8862        WRITE  THE  SECTOR SELECTED IN PARAMETER P0, P2,  D88
*IF DEF,LSFMD,1 
*         DL862        WRITE  THE  SECTOR SELECTED IN PARAMETER P0, P2, 
*                      AND P3.                                           D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH863        READ  THE  SECTOR  SELECTED  BY  PARAMETERS  P0, 
*IF DEF,SFMD,1
*         D8863        READ  THE  SECTOR  SELECTED  BY  PARAMETERS  P0,  D88PTR4
*IF DEF,LSFMD,1 
*         DL863        READ  THE  SECTOR  SELECTED  BY  PARAMETERS  P0, 
*                      P2, AND P3.                                       D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH864        WRITE AND READ ONE SECTOR AS SELECTED BY THE P0, 
*IF DEF,SFMD,1
*         D8864        WRITE AND READ ONE SECTOR AS SELECTED BY THE P0,  D88
*IF DEF,LSFMD,1 
*         DL864        WRITE AND READ ONE SECTOR AS SELECTED BY THE P0, 
*                      P2, AND P3 PARAMETERS.                            D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH865        TOGGLE  BETWEEN  THE  UPPER  AND  LOWER  ADDRESS 
*IF DEF,SFMD,1
*         D8865        TOGGLE BETWEEN  THE  UPPER  AND  LOWER  ADDRESS   D88
*IF DEF,LSFMD,1 
*         DL865        TOGGLE BETWEEN  THE  UPPER  AND  LOWER  ADDRESS
*                      BOUNDARIES  BY  PERFORMING A READ OF THE DATA ON  D88
*                      THESE ADDRESSES.                                  D88
*                                                                        D88
***       ERROR PROCESSING                                               D88
**        ERROR PROCESSING                                               D88
*         ERROR PROCESSING                                               D88
*         ----------------                                               D88
*IF DEF,PFMD,1
*             DH8 ERROR PROCESSING FLOW CHART 
*IF DEF,SFMD,1
*             D88 ERROR PROCESSING FLOW CHART                            D88
*IF DEF,LSFMD,1 
*             DL8 ERROR PROCESSING FLOW CHART 
*                  HALF-TRACK ERROR PROCESSING                           D88
*                                                                        D88
*                 ABORTS                      MODULE DETECTED ERRORS     D88
*                    V                                   V               D88
*         -----------------------             -----------------------    D88
*         *         97C         *             * . REPORT ERROR      *    D88
*         *                     *             *   INSIDE MODULE     *    D88
*         * . ABORT MESSAGE     *             *   THAT DETECTS      *    D88
*         * . P.OVERLAY MESSAGE *             *   THE ERROR         *    D88
*         -----------------------             -----------------------    D88
*                    V                                   V               D88
*                    V                                   V               D88
*         -----------------------                        V               D88
*         *       97D-97E       *-------------------------               D88
*         *                     *                                        D88
*         * . LAST FUNCTION MSG *                                        D88
*         -----------------------                                        D88
*                    V                                                   D88
*                    V                                                   D88
*         -----------------------                                        D88
*         *         97F         *                                        D88
*         *                     *                                        D88
*         * . WT LINE           *                                        D88
*         * . OPTIONAL BUF/REG  *                                        D88
*         * . CYL LINE          *                                        D88
*         * . STATUS            *                                        D88
*         * . DATA ERRORS       *                                        D88
*         -----------------------                                        D88
*                    V                                                   D88
*                    V                                                   D88
*         -----------------------             -----------------------    D88
*         *       97G-97J       *             *       97K-97L       *    D88
*         *                     *-------------*                     *    D88
*         * . GENERAL STATUS    *             * . DRIVE STATUS      *    D88
*         *   ANALYSIS LINE     *             *   ANALYSIS LINE     *    D88
*         -----------------------             -----------------------    D88
*                    V                                   V               D88
*                    V                                   V               D88
*         -----------------------                        V               D88
*         *         97M         *-------------------------               D88
*         *                     *                                        D88
*         * .PRESERVICE FORECAST*                                        D88
*         *  LINE               *                                        D88
*         -----------------------                                        D88
*                    V                                                   D88
*                    V                                                   D88
*         -----------------------                                        D88
*         *         97N         *                                        D88
*         *                     *                                        D88
*         * . RESET IF REQUIRED *                                        D88
*         -----------------------                                        D88
*                    V                                                   D88
*                  EXIT                                                  D88
*** 3.1.2 DESCRIPTION DETAILED                                           D88
**  3.1.2 DESCRIPTION DETAILED                                           D88
*   3.1.2 DESCRIPTION DETAILED                                           D88
*         --------------------                                           D88
*                                                                        D88
*         OPERATIONAL PROCEDURE                                          D88
*         ---------------------                                          D88
*                                                                        D88
*         1.  REFER TO THE MALET REFERENCE MANUAL (PUB.  NO.  60456020)  D88
*             FOR A DETAILED DESCRIPTION OF THE MALET LANGUAGE.          D88PTR4
*                                                                        D88
*IF -DEF,CMSE17X                                                         D88
*         2.  REFER TO THE CML REFERENCE MANUAL (PUB. NO. 60455980)  TO  D88
*             RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS.       D88
*ENDIF                                                                   D88
*IF DEF,CMSE17X                                                          D88
*         2.  REFER TO THE DEMOT REFERENCE MANUAL (PUB.  NO.  60456310)  D88
*             TO RUN DEMOT UNDER THE CMSE OPERATING SYSTEM.              D88
*                                                                        D88
*         3.  REFER  TO THE MSL100 OFF-LINE MAINTENANCE SYSTEM LIBRARY,  D88
*             VOLUME 1, REFERENCE MANUAL (PUB. NO. 60455770) TO RUN THE  D88
*             CMSE OFF-LINE MAINTENANCE SYSTEM.                          D88
*ENDIF                                                                   D88
*                                                                        D88
***       LOADING PROCEDURE                                              D88
**        LOADING PROCEDURE                                              D88
*         LOADING PROCEDURE                                              D88
*         -----------------                                              D88
* 
*         ** WARNING ** - THE FOLLOWING LOADING PROCEDURES ARE  INTENDED
*                         AS  GENERAL  EXAMPLES  ONLY  AND  MAY  REQUIRE
*                         MODIFICATION WHEN USED IN A SPECIFIC  ENVIRON-
*                         MENT. 
*                                                                        D88
*IF -DEF,CMSE17X                                                         D88
*IF DEF,PFMD,1
*         TO LOAD THE DH8 MALET MODULES WHILE  RUNNING  ON  THE  NOS/BE 
*IF DEF,SFMD,1
*         TO LOAD THE D88 MALET MODULES WHILE  RUNNING  ON  THE  NOS/BE  D88
*IF DEF,LSFMD,1 
*         TO LOAD THE DL8 MALET MODULES WHILE  RUNNING  ON  THE  NOS/BE 
*         OPERATING SYSTEM, RUN THE FOLLOWING JOB-                       D88
*                                                                        D88
*         JOB/ACCOUNT CARDS.                                             D88
*         REQUEST,OLDPL,MT,D=HY,F=SI,LB=KU,VSN=CML.                      D88
*         UPDATE,Q.                                                      D88
*         MALET,I=COMPILE,LO=LS,KL.                                      D88
*         7/8/9                                                          D88
*IF DEF,PFMD,2
*         *IDENT,DH8DEF 
*         *DEFINE,PFMD
*IF DEF,SFMD,2
*         *IDENT,D88DEF                                                  D88
*         *DEFINE,SFMD
*IF DEF,LSFMD,2 
*         *IDENT,DL8DEF 
*         *DEFINE,LSFMD 
*         *C D88                                                         D88
*         7/8/9                                                          D88
*         6/7/8/9                                                        D88
*                                                                        D88
*IF DEF,PFMD,1
*         TO LOAD THE DH8  MALET  MODULES  WHILE  RUNNING  ON  THE  NOS 
*IF DEF,SFMD,1
*         TO LOAD THE D88  MALET  MODULES  WHILE  RUNNING  ON  THE  NOS  D88
*IF DEF,LSFMD,1 
*         TO LOAD THE DL8  MALET  MODULES  WHILE  RUNNING  ON  THE  NOS 
*         OPERATING SYSTEM, RUN THE FOLLOWING JOB-                       D88
*                                                                        D88
*         JOB/USER/ACCOUNT CARDS.                                        D88
*         REQUEST,OLDPL,MT,D=HY,F=SI,LB=KU,VSN=CML.                      D88
*         UPDATE,Q.                                                      D88
*         MALET,I=COMPILE,LO=LS,KL.                                      D88
*         7/8/9                                                          D88
*IF DEF,PFMD,2
*         *IDENT,DH8DEF 
*         *DEFINE,PFMD
*IF DEF,SFMD,2
*         *IDENT,D88DEF                                                  D88
*         *DEFINE,SFMD
*IF DEF,LSFMD,2 
*         *IDENT,DL8DEF 
*         *DEFINE,LSFMD 
*         *C D88                                                         D88
*         7/8/9                                                          D88
*         6/7/8/9                                                        D88
*                                                                        D88
*IF DEF,PFMD,1
*         TO INSTALL THE DH8 MALET MODULES AS PERMANENT  FILES  ON  THE 
*IF DEF,SFMD,1
*         TO INSTALL THE D88 MALET MODULES AS PERMANENT  FILES  ON  THE  D88
*IF DEF,LSFMD,1 
*         TO INSTALL THE DL8 MALET MODULES AS PERMANENT  FILES  ON  THE 
*         NOS/BE OPERATING SYSTEM, RUN THE FOLLOWING JOB-                D88
*                                                                        D88
*         JOB/ACCOUNT CARDS.                                             D88
*         REQUEST,OLDPL,MT,D=HY,F=SI,LB=KU,VSN=CML.                      D88
*         UPDATE,Q.                                                      D88
*         DEFINE,RFILE,*PF.                                              D88
*         MALET,I=COMPILE,LO=LS.                                         D88
*IF DEF,PFMD,1
*         CATALOG,RFILE,DH8,ID=YOUR ID. 
*IF DEF,SFMD,1
*         CATALOG,RFILE,D88,ID=YOUR ID.                                  D88
*IF DEF,LSFMD,1 
*         CATALOG,RFILE,DL8,ID=YOUR ID. 
*         UNLOAD,RFILE.                                                  D88
*         7/8/9                                                          D88
*IF DEF,PFMD,2
*         *IDENT,DH8DEF 
*         *DEFINE,PFMD
*IF DEF,SFMD,2
*         *IDENT,D88DEF                                                  D88
*         *DEFINE,SFMD
*IF DEF,LSFMD,2 
*         *IDENT,DL8DEF 
*         *DEFINE,LSFMD 
*         *C D88                                                         D88
*         7/8/9                                                          D88
*         6/7/8/9                                                        D88
*                                                                        D88
*IF DEF,PFMD,1
*         TO  INSTALL  THE  DH8 MALET MODULES AS PERMANENT FILES ON THE 
*IF DEF,SFMD,1
*         TO  INSTALL  THE  D88 MALET MODULES AS PERMANENT FILES ON THE  D88
*IF DEF,LSFMD,1 
*         TO  INSTALL  THE  DL8 MALET MODULES AS PERMANENT FILES ON THE 
*         NOS OPERATING SYSTEM, RUN THE FOLLOWING JOB-                   D88
*                                                                        D88
*         JOB/USER/ACCOUNT CARDS.                                        D88
*         REQUEST,OLDPL,MT,D=HY,F=SI,LB=KU,VSN=CML.                      D88
*         UPDATE,Q.                                                      D88
*IF DEF,PFMD,1
*         DEFINE,RFILE=DH8. 
*IF DEF,SFMD,1
*         DEFINE,RFILE=D88.                                              D88
*IF DEF,LSFMD,1 
*         DEFINE,RFILE=DL8. 
*         MALET,I=COMPILE,LO=LS.                                         D88
*         UNLOAD,RFILE.                                                  D88
*         7/8/9                                                          D88
*IF DEF,PFMD,2
*         *IDENT,DH8DEF 
*         *DEFINE,PFMD
*IF DEF,SFMD,2
*         *IDENT,D88DEF                                                  D88
*         *DEFINE,SFMD
*IF DEF,LSFMD,2 
*         *IDENT,DL8DEF 
*         *DEFINE,LSFMD 
*         *C D88                                                         D88
*         7/8/9                                                          D88
*         6/7/8/9                                                        D88
*                                                                        D88
*IF DEF,PFMD,1
*         TO  RUN THE DH8 MALET MODULES FROM THE PERMANENT FILE CREATED 
*IF DEF,SFMD,1
*         TO  RUN THE D88 MALET MODULES FROM THE PERMANENT FILE CREATED  D88
*IF DEF,LSFMD,1 
*         TO  RUN THE DL8 MALET MODULES FROM THE PERMANENT FILE CREATED 
*         ON THE NOS/BE OPERATING SYSTEM, RUN THE FOLLOWING JOB-         D88
*                                                                        D88
*         JOB/ACCOUNT CARDS.                                             D88
*IF DEF,PFMD,1
*         ATTACH,RFILE,DH8,ID=YOUR ID.
*IF DEF,SFMD,1
*         ATTACH,RFILE,D88,ID=YOUR ID.                                   D88
*IF DEF,LSFMD,1 
*         ATTACH,RFILE,DL8,ID=YOUR ID.
*         MALET,KL.                                                      D88
*         7/8/9                                                          D88
*         ASSIGN,EST=NN,AL=3,SN=XXXXX.
*IF DEF,PFMD,1
*         R,DH8 
*IF DEF,SFMD,1
*         R,D88                                                          D88
*IF DEF,LSFMD,1 
*         R,DL8 
*         7/8/9                                                          D88
*         6/7/8/9                                                        D88
*                                                                        D88
*IF DEF,PFMD,1
*         TO  RUN THE DH8 MALET MODULES FROM THE PERMANENT FILE CREATED 
*IF DEF,SFMD,1
*         TO  RUN THE D88 MALET MODULES FROM THE PERMANENT FILE CREATED  D88
*IF DEF,LSFMD,1 
*         TO  RUN THE DL8 MALET MODULES FROM THE PERMANENT FILE CREATED 
*         ON THE NOS OPERATING SYSTEM, RUN THE FOLLOWING JOB-            D88
*                                                                        D88
*         JOB/USER/ACCOUNT CARDS.                                        D88
*IF DEF,PFMD,1
*         ATTACH,RFILE=DH8. 
*IF DEF,SFMD,1
*         ATTACH,RFILE=D88.                                              D88
*IF DEF,LSFMD,1 
*         ATTACH,RFILE=DL8. 
*         MALET,KL.                                                      D88
*         7/8/9                                                          D88
*         ASSIGN,EST=NN,AL=3,SN=XXXXX.
*IF DEF,PFMD,1
*         R,DH8 
*IF DEF,SFMD,1
*         R,D88                                                          D88
*IF DEF,LSFMD,1 
*         R,DL8 
*         7/8/9                                                          D88
*         6/7/8/9                                                        D88
*                                                                        D88
*ENDIF                                                                   D88
*IF DEF,CMSE17X                                                          D88
*IF DEF,PFMD,1
*         TO  LOAD  THE  DH8  DEMOT  MODULES  WHILE RUNNING ON THE CMSE 
*IF DEF,SFMD,1
*         TO  LOAD  THE  D88  DEMOT  MODULES  WHILE RUNNING ON THE CMSE  D88
*IF DEF,LSFMD,1 
*         TO  LOAD  THE  DL8  DEMOT  MODULES  WHILE RUNNING ON THE CMSE 
*         OFF-LINE OPERATING SYSTEM, EITHER ENTER OR CREATE  A  COMMAND  D88
*         BUFFER OF THE FOLLOWING COMMANDS-                              D88PTR4
*                                                                        D88
*         DP*4               (DEADSTART PP 4)                            D88
*         DP*5               (DEADSTART PP 5)                            D88
*         CP*4,MCX,0,5       (LOAD MCX (EXEC) TO PP 4)                   D88
*         CP*5,MLD,0,5       (LOAD MLD (DRIVER) TO PP 5)                 D88
*         RU*4,100           (RUN THE EXEC AT ADDRESS 100)               D88
*         SQ*77,1,4          (WAIT UNTIL EXEC IS INITIALIZED)            D88
*         RU*5,100           (RUN THE DRIVER AT ADDRESS 100)             D88
*         PP*4               (SELECT EXEC DISPLAY)                       D88
*IF DEF,PFMD,1
*         .RUN,DH801         (RUN DH8)
*IF DEF,SFMD,1
*         .RUN,D8801         (RUN D88)                                   D88
*IF DEF,LSFMD,1 
*         .RUN,DL801         (RUN DL8)
*ENDIF                                                                   D88
*                                                                        D88
***       RUNNING PROCEDURE                                              D88
**        RUNNING PROCEDURE                                              D88
*         RUNNING PROCEDURE                                              D88
*         -----------------                                              D88
*                                                                        D88
*IF -DEF,CMSE17X                                                         D88
*         ALL NOS MALET DIRECTIVES MUST BE PRECEDED WITH THE
*         CHARACTERS, (K.).  UNDER NOS/BE, MALET COMMANDS ARE NOT 
*         PRECEDED WITH THE CHARACTERS, (K.). 
*                                                                        D88
*         THE ASSIGN COMMAND IS USED TO ASSIGN THE DEVICE TO BE TESTED.  D88
*         EXAMPLES FOR ASSIGNING A DEVICE-                               D88
*IF DEF,PFMD,2
*         K.ASSIGN,DC=14,CH=6,EQ=0,UN=40,AL=4,SN=123456 
*         K.A,DC=14,CH=6,EQ=0,UN=40,AL=4,SN=123456
*IF DEF,SFMD,2
*         K.ASSIGN,DC=7,CH=6,EQ=0,UN=40,AL=4,SN=123456                   D88
*         K.A,DC=7,CH=6,EQ=0,UN=40,AL=4,SN=123456                        D88
*IF DEF,LSFMD,2 
*         K.ASSIGN,DC=7,CH=6,EQ=0,UN=40,AL=4,SN=123456
*         K.A,DC=7,CH=6,EQ=0,UN=40,AL=4,SN=123456 
*                                                                        D88
*         THE RUN COMMAND IS USED TO START EXECUTION OF A MODULE OR SET  D88
*         OF MODULES.                                                    D88
*         EXAMPLES FOR RUNNING ALL MODULES IN THE TEST-                  D88
*IF DEF,PFMD,2
*         K.RUN,DH8 
*         K.R,DH8 
*IF DEF,SFMD,2
*         K.RUN,D88                                                      D88
*         K.R,D88                                                        D88
*IF DEF,LSFMD,2 
*         K.RUN,DL8 
*         K.R,DL8 
*                                                                        D88
*         EXAMPLES FOR RUNNING ONE MODULE-                               D88
*IF DEF,PFMD,2
*         K.RUN,DH8(01) 
*         K.R,DH8(01) 
*IF DEF,SFMD,2
*         K.RUN,D88(01)                                                  D88
*         K.R,D88(01)                                                    D88
*IF DEF,LSFMD,2 
*         K.RUN,DL8(01) 
*         K.R,DL8(01) 
*                                                                        D88
*         EXAMPLES FOR RUNNING A SERIES OF MODULES-                      D88
*IF DEF,PFMD,2
*         K.RUN,DH8(01,03,05,07)
*         K.R,DH8(01,03,05,07)
*IF DEF,SFMD,2
*         K.RUN,D88(01,03,05,07)                                         D88
*         K.R,D88(01,03,05,07)                                           D88
*IF DEF,LSFMD,2 
*         K.RUN,DL8(01,03,05,07)
*         K.R,DL8(01,03,05,07)
*                                                                        D88
*         THE STOP COMMAND IS USED TO STOP EXECUTION OF THE TEST.        D88
*         EXAMPLES OF STOPPING EXECUTION OF THE TEST-                    D88
*         K.STOP                                                         D88
*         K.S                                                            D88
*                                                                        D88
*         THE GO COMMAND IS USED TO RESTART EXECUTION OF THE TEST AFTER  D88PTR4
*         IT HAS STOPPED ON AN ERROR OR  WAS  STOPPED  USING  THE  STOP  D88
*         COMMAND.                                                       D88
*         EXAMPLES OF RESTARTING EXECUTION OF THE TEST-                  D88
*         K.GO                                                           D88
*         K.G                                                            D88
*                                                                        D88
*         THE  PARAM  COMMAND IS USED TO DISPLAY THE PARAMETERS FOR THE  D88
*         TEST AND ALSO CHANGE PARAMETERS FOR THE TEST.                  D88
*         EXAMPLES OF USING THE PARAM COMMAND-                           D88
*         K.PARAM                                                        D88
*         K.P                                                            D88
*         K.PARAM,P0=10,P1=20,P3=10,P4=10                                D88
*         K.P,P0=10,P1=20,P3=10,P4=10                                    D88
*                                                                        D88
*         THE  DROP COMMAND IS USED TO TERMINATE EXECUTION OF MALET AND  D88
*         DROP THE JOB OUT OF THE OPERATING SYSTEM.                      D88
*         EXAMPLES OF USING THE DROP COMMAND-                            D88
*         K.DROP                                                         D88
*ENDIF                                                                   D88
*IF DEF,CMSE17X                                                          D88
*         ALL SYSTEM COMMANDS MUST BE PRECEEDED WITH  THE  CHARACTER  .  D88
*         (PERIOD).                                                      D88
*                                                                        D88
*         THE ASSIGN COMMAND IS USED TO ASSIGN THE DEVICE TO BE TESTED.  D88
*         EXAMPLES FOR ASSIGNING A DEVICE-                               D88
*         .ASSIGN,DC=7,CH=6,EQ=0,UN=40,AL=4,SN=123456                    D88
*         .A,DC=7,CH=6,EQ=0,UN=40,AL=4,SN=123456                         D88
*                                                                        D88
*         THE RUN COMMAND IS USED TO START EXECUTION OF A MODULE OR SET  D88
*         OF MODULES.                                                    D88
*         EXAMPLES FOR RUNNING ALL MODULES IN THE TEST-                  D88
*IF DEF,PFMD,2
*         .RUN,DH8
*         .R,DH8
*IF DEF,SFMD,2
*         .RUN,D88                                                       D88
*         .R,D88                                                         D88
*IF DEF,LSFMD,2 
*         .RUN,DL8
*         .R,DL8
*                                                                        D88
*         EXAMPLELS FOR RUNNING ONE MODULE- 
*IF DEF,PFMD,2
*         .RUN,DH8(01)
*         .R,DH8(01)
*IF DEF,SFMD,2
*         .RUN,D88(01)                                                   D88
*         .R,D88(01)                                                     D88
*IF DEF,LSFMD,2 
*         .RUN,DL8(01)
*         .R,DL8(01)
*                                                                        D88
*         EXAMPLES FOR RUNNING A SERIES OF MODULES-                      D88
*IF DEF,PFMD,2
*         .RUN,DH8(01,03,05,07) 
*         .R,DH8(01,03,05,07) 
*IF DEF,SFMD,2
*         .RUN,D88(01,03,05,07)                                          D88
*         .R,D88(01,03,05,07)                                            D88
*IF DEF,LSFMD,2 
*         .RUN,DL8(01,03,05,07) 
*         .R,DL8(01,03,05,07) 
*                                                                        D88
*         THE STOP COMMAND IS USED TO STOP EXECUTION OF THE TEST.        D88
*         EXAMPLES OF STOPPING EXECUTION OF THE TEST-                    D88
*         .STOP                                                          D88
*         .S                                                             D88
*                                                                        D88
*         THE GO COMMAND IS USED TO RESTART EXECUTION OF THE TEST AFTER  D88PTR4
*         IT HAS STOPPED ON AN ERROR OR  WAS  STOPPED  USING  THE  STOP  D88
*         COMMAND.                                                       D88
*         EXAMPLES OF RESTARTING EXECUTION OF THE TEST-                  D88
*         .GO                                                            D88
*         .G                                                             D88
*                                                                        D88
*         THE  PARAM  COMMAND IS USED TO DISPLAY THE PARAMETERS FOR THE  D88
*         TEST AND ALSO CHANGE PARAMETERS FOR THE TEST.                  D88
*         EXAMPLES OF USING THE PARAM COMMAND-                           D88
*         .PARAM                                                         D88
*         .P                                                             D88
*         .PARAM,P0=10,P1=20,P3=10,P4=10                                 D88
*         .P,P0=10,P1=20,P3=10,P4=10                                     D88
*                                                                        D88
*         THE  DROP COMMAND IS USED TO TERMINATE EXECUTION OF DEMOT AND 
*         DROP THE JOB OUT OF THE OPERATING SYSTEM.                      D88
*         EXAMPLES OF USING THE DROP COMMAND-                            D88
*         .DROP                                                          D88
*ENDIF                                                                   D88
*                                                                        D88
***       PARAMETERS                                                     D88
**        PARAMETERS                                                     D88
*         PARAMETERS                                                     D88
*         ----------                                                     D88
*                                                                        D88
*IF DEF,PFMD,1
*         THE FOLLOWING PARAMETERS ARE USED BY DH8- 
*IF DEF,SFMD,1
*         THE FOLLOWING PARAMETERS ARE USED BY D88-                      D88
*IF DEF,LSFMD,1 
*         THE FOLLOWING PARAMETERS ARE USED BY DL8- 
*                                                                        D88
*         NOTE- THE CONFIDENCE PORTION OF THE TEST DOES  NOT  REFERENCE  D88
*               THE PARAMETER REGISTERS.                                 D88
*                                                                        D88
*         P0 - LLLL - LOWER CYLINDER                                     D88
*              (RIGHT JUSTIFIED, ZERO FILLED)                            D88
*                                                                        D88
*         P1 - UUUU - UPPER CYLINDER                                     D88
*              (RIGHT JUSTIFIED, ZERO FILLED)                            D88
*                                                                        D88
*         P2 - LLUU - LOWER AND UPPER TRACKS                             D88
*              (RIGHT JUSTIFIED, ZERO FILLED)                            D88
*                                                                        D88
*         P3 - LLUU - LOWER AND UPPER SECTORS                            D88
*              (RIGHT JUSTIFIED, ZERO FILLED)                            D88
*                                                                        D88
*         P4 - XXXX - ENABLES                                            D88
*                                                                        D88
*              XXX1 - FLAW REPORTING                                     D88
*              XX1X - CHANGE PATTERN ON TRACK BOUNDARIES                 D88
*              XX2X - CHANGE PATTERN ON CYLINDER BOUNDARIES              D88
*              NOTE - IF  NEITHER  TRACK  OR  CYLINDER  BOUNDARIES  ARE  D88
*                     SELECTED, THE PATTERN CHANGE WILL DEFAULT TO DISK  D88
*                     BOUNDARIES.                                        D88
*              XX4X - DUMP  EIGHT  LOCATIONS  OF THE INPUT  AND  OUTPUT 
*                     BUFFERS AND THE B0 THROUGH B15 REGISTERS(SEE P8). 
*                                                                        D88
*         P5 - XXXX - DISABLES                                           D88
*                                                                        D88
*              XXX1 - ADDRESS CODING
*              XXX2 - READ DISABLE                                       D88
*              XXX4 - WRITE DISABLE                                      D88
*IF DEF,PFMD,1
*              XX1X - DISABLE RANDOM PATTERN.(USE FIXED PATTERN)
*IF DEF,SFMD,1
*              XX1X - GENERATE FIXED PATTERN                             D88
*IF DEF,LSFMD,1 
*              XX1X - GENERATE FIXED PATTERN
*                                                                        D88
*         P6 - XXXX - DATA CONTROL                                       D88
*                                                                        D88
*              0000 - RANDOM DATA SET                                    D88
*                     THE REAL TIME CLOCK WILL BE USED AS  THE  STARTER  D88
*                     FOR THE RANDOM NUMBER GENERATOR IF BIT 3 IS CLEAR  D88
*                     IN P5.                                             D88
*                                                                        D88
*              XXXX - RANDOM DATA SET                                    D88
*         (NON-ZERO)  IF THIS WORD IS NONZERO AND BIT 3 IS CLEAR IN P5,  D88
*                     THIS WORD WILL BE USED AS  THE  STARTER  FOR  THE  D88
*                     RANDOM NUMBER GENERATOR.                           D88
*                                                                        D88
*IF DEF,PFMD,2
*              XXXX - FIXED DATA PATTERN ENABLED
*                     IF BIT 3 IS SET IN P5 
*IF DEF,SFMD,2
*              XXXX - RANDOM DATA DISABLED                               D88
*         (NON-ZERO)  IF  THIS  WORD IS NONZERO AND BIT 3 IS SET IN P5,  D88
*IF DEF,LSFMD,2 
*              XXXX - RANDOM DATA DISABLED
*         (NON-ZERO)  IF  THIS  WORD IS NONZERO AND BIT 3 IS SET IN P5, 
*                     THIS WORD WILL BE USED TO GENERATE A  FIXED  DATA  D88
*                     PATTERN.                                           D88
*                                                                        D88
*         P7 - 00XY - MARGINS                                            D88
*                 Y - OFFSETS                 X - STROBES                D88
*              00X0 - NORMAL OFFSETS       000Y - NORMAL STROBES         D88
*              00X1 - EARLY OFFSETS        001Y - FORWARD STROBES        D88
*              00X2 - LATE OFFSETS         002Y - REVERSE STROBES        D88
*              0077 - RUN ALL MARGINS                                    D88PTR4
*                                                                        D88
*         P8 - 0000 - FIRST WORD ADDRESS OF BUFFER DUMP (SEE P4). 
*IF DEF,PFMD
*                     THE CONTENTS OF THIS PARAMETER WORD IS ASSUMED TO 
*                     BE A LEGAL BUFFER ADDRESS AND WILL NOT BE CHECKED 
*                     FOR BEING AN ILLEGAL BUFFER ADDRESS.
*ENDIF
*                                                                        D88
*         P9 - 0000 - ITERATION COUNT                                    D88
*                     ITERATION COUNT TIMES 4096 IF RANDOM COUNT.        D88
*IF DEF,PFMD
*                    THIS PARAMETER IS USED BY MODULES 40-45. 
*ENDIF
*                                                                        D88
***       NORMAL MESSAGES                                                D88
**        NORMAL MESSAGES                                                D88
*         NORMAL MESSAGES                                                D88
*         ---------------                                                D88
*                                                                        D88
*IF DEF,PFMD,1
*         1.  DH8NN MODULE NAME 
*IF DEF,SFMD,1
*         1.  D88NN MODULE NAME                                          D88
*IF DEF,LSFMD,1 
*         1.  DL8NN MODULE NAME 
*             THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.      D88
*                                                                        D88
*IF DEF,PFMD,1
*         2.  DH8NN CYL=CCCCB, T=TTB, S=SSB 
*IF DEF,SFMD,1
*         2.  D88NN CYL=CCCB, T=TTB, S=SSB                               D88
*IF DEF,LSFMD,1 
*         2.  DL8NN CYL=CCCB, T=TTB, S=SSB
*             THIS  RUNNING  MESSAGE  INDICATES  THAT  MODULE NN IS NOW  D88
*             TESTING CYLINDER CCC, TRACK TT, AND SECTOR SS.             D88
*                                                                        D88
*IF DEF,PFMD,1
*         3.  DH8NN EC=EEEED, LC=LLLLD
*IF DEF,SFMD,1
*         3.  D88NN EC=EEEED, LC=LLLLD                                   D88
*IF DEF,LSFMD,1 
*         3.  DL8NN EC=EEEED, LC=LLLLD
*             THIS  RUNNING MESSAGE INDICATES THAT MODULE NN IS LOOPING  D88
*             ON REPEAT CONDITION OR REPEAT MODULE. EEEE IS THE CURRENT  D88
*             ERROR COUNT AND LLLL IS THE CURRENT LOOP COUNT.            D88
*                                                                        D88
*IF DEF,PFMD,1
*         4.  DH801 RES CONTROLLER LC*OCTB
*IF DEF,SFMD,1
*         4.  D8801 RES CONTROLLER LC*OCTB                               D88
*IF DEF,LSFMD,1 
*         4.  DL801 RES CONTROLLER LC*OCTB
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE  D88
*IF DEF,PFMD,1
*             DH801.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*IF DEF,SFMD,1
*             D8801.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP  D88
*IF DEF,LSFMD,1 
*             DL801.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*             COUNT INCREMENT.                                           D88
*                                                                        D88
*IF DEF,PFMD,1
*         5.  DH803 AUTOLOAD LC=*DECD 
*IF DEF,SFMD,1
*         5.  D8803 AUTOLOAD LC=*DECD                                    D88
*IF DEF,LSFMD,1 
*         5.  DL803 AUTOLOAD LC=*DECD 
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE  D88
*IF DEF,PFMD,1
*             DH803.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*IF DEF,SFMD,1
*             D8803.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP  D88
*IF DEF,LSFMD,1 
*             DL803.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*             COUNT INCREMENT.                                           D88
*                                                                        D88
*IF DEF,PFMD,1
*         6.  DH805 GEN STATUS LC=*DECD 
*IF DEF,SFMD,1
*         6.  D8805 GEN STATUS LC=*DECD                                  D88
*IF DEF,LSFMD,1 
*         6.  DL805 GEN STATUS LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE  D88
*IF DEF,PFMD,1
*             DH805.   GENERAL STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*IF DEF,SFMD,1
*             D8805.   GENERAL STATUS IS RETRIEVED WITH EACH LOOP COUNT  D88
*IF DEF,LSFMD,1 
*             DL805.   GENERAL STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*             INCREMENT.                                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         7.  DH807 DETAIL STATUS LC=*DECD
*IF DEF,SFMD,1
*         7.  D8807 DETAIL STATUS LC=*DECD                               D88
*IF DEF,LSFMD,1 
*         7.  DL807 DETAIL STATUS LC=*DECD
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE  D88
*IF DEF,PFMD,1
*             DH807.  DETAILED STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*IF DEF,SFMD,1
*             D8807.  DETAILED STATUS IS RETRIEVED WITH EACH LOOP COUNT  D88
*IF DEF,LSFMD,1 
*             DL807.  DETAILED STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*             INCREMENT.                                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         8.  DH809 DIAG WRT/RD LC=*DECD
*IF DEF,SFMD,1
*         8.  D8809 DIAG WRT/RD LC=*DECD
*IF DEF,LSFMD,1 
*         8.  DL809 DIAG WRT/RD LC=*DECD
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE  D88
*IF DEF,PFMD,1
*             DH809.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*IF DEF,SFMD,1
*             D8809.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10  D88
*IF DEF,LSFMD,1 
*             DL809.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE  D88
*             LOOP COUNT IS INCREMENTED.                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         9.  DH811 WRITECB/READCB LC=*DECD 
*IF DEF,SFMD,1
*         9.  D8811 WRITECB/READCB LC=*DECD 
*IF DEF,LSFMD,1 
*         9.  DL811 WRITECB/READCB LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE  D88
*IF DEF,PFMD,1
*             DH811.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*IF DEF,SFMD,1
*             D8811.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10  D88
*IF DEF,LSFMD,1 
*             DL811.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE  D88
*             LOOP COUNT IS INCREMENTED.                                 D88
* 
*IF DEF,PFMD,2
*         9A. DH812 EC=*DECD, LC=*DECD
*             THIS MESSAGE IS DISPLAYED WHEN RM IS SELECTED 
*ENDIF
*         9A. D8812 EC=*DECD, LC=*DECD
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*IF DEF,PFMD,1
*             DH812. EACH OF FIVE DIFFERENT BUS OUT COMMANDS IS EXECUT- 
*IF DEF,SFMD,1
*             D8812. EACH OF FIVE DIFFERENT BUS OUT COMMANDS IS EXECUT- 
*IF DEF,LSFMD,1 
*             DL812. EACH OF FIVE DIFFERENT BUS OUT COMMANDS IS EXECUT- 
*             ED TEN TIMES. 
*                                                                        D88
*IF DEF,PFMD,4
*         9B. DH813 - SEEK TIME LC=*DECD
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*             DH813.  ONE SEEK IS TIMED WITH EACH LOOP COUNT INCREMENT. 
* 
*IF DEF,PFMD,1
*         10. DH813 SEEK TIME=*OCTB USEC
*IF DEF,SFMD,1
*         10. D8813 SEEK TIME=*OCTB USEC                                 D88
*IF DEF,LSFMD,1 
*         10. DL813 SEEK TIME=*OCTB USEC
*             THIS RUNNING  MESSAGE DISPLAYS THE AVERAGE SEEK TIME CAL- 
*             CULATED FROM 20 DIFFERENT SEEK OPERATIONS.
*                                                                        D88
*IF DEF,PFMD,7
*         10A.DH814 ESM SYSWR/RD LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*             DH814.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE 
*             LOOP COUNT IS INCREMENTED.
* 
*         11. DH815 SERIAL NO.
*IF DEF,SFMD,1
*         11. D8815 SERIAL NO.   LC=*DECD                                D88
*IF DEF,LSFMD,1 
*         11. DL815 SERIAL NO.   LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP COUNT OF THE FIRST  D88
*IF DEF,PFMD,1
*             SUBTEST  OF  DH815.   HERE THE SERIAL NUMBER IS RETRIEVED 
*IF DEF,SFMD,1
*             SUBTEST  OF  D8815.   HERE THE SERIAL NUMBER IS RETRIEVED  D88
*IF DEF,LSFMD,1 
*             SUBTEST  OF  DL815.   HERE THE SERIAL NUMBER IS RETRIEVED 
*             OFF OF THE DISK 2 SEPARATE  TIMES.   THE  LOOP  COUNT  IS  D88
*             INCREMENTED WITH EACH RETRIEVAL.                           D88
*                                                                        D88
*IF DEF,PFMD,1
*          12. DH815 FACTORY SECTOR=*OCTB 
*IF DEF,SFMD,1
*         12. D8815 FACTORY SECT LC=*DECD                                D88
*IF DEF,LSFMD,1 
*         12. DL815 FACTORY SECT LC=*DECD 
*             THIS RUNNING MESSAGE  DISPLAYS  THE  LOOP  COUNT  OF  THE  D88
*IF DEF,PFMD,1
*             SECOND  SUBTEST OF DH815.  HERE THE FACTORY FLAW MAPS ARE 
*IF DEF,SFMD,1
*             SECOND  SUBTEST OF D8815.  HERE THE FACTORY FLAW MAPS ARE  D88
*IF DEF,LSFMD,1 
*             SECOND  SUBTEST OF DL815.  HERE THE FACTORY FLAW MAPS ARE 
*             RETRIEVED OFF OF THE DISK  2  SEPARATE  TIMES.  THE  LOOP  D88
*             COUNT IS INCREMENTED WITH EACH RETRIEVAL.                  D88
*                                                                        D88
*IF DEF,PFMD,1
*          13. DH815 UTILITY SECTOR=*OCTB 
*IF DEF,SFMD,1
*         13. D8815 UTILITY SECT LC=*DECD                                D88
*IF DEF,LSFMD,1 
*         13. DL815 UTILITY SECT LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP COUNT OF THE THIRD  D88
*IF DEF,PFMD,1
*             SUBTEST  OF  DH815.  HERE THE UTILITY FLAW MAPS ARE BEING 
*IF DEF,SFMD,1
*             SUBTEST  OF  D8815.  HERE THE UTILITY FLAW MAPS ARE BEING  D88
*IF DEF,LSFMD,1 
*             SUBTEST  OF  DL815.  HERE THE UTILITY FLAW MAPS ARE BEING 
*             RETRIEVED OFF OF THE DISK 2  SEPARATE  TIMES.   THE  LOOP  D88
*             COUNT IS INCREMENTED WITH EACH RETRIEVAL.                  D88
*                                                                        D88
*IF DEF,PFMD,7
*         13A.DH816 ESM DIAGWR/RD LC=*DECD
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*             DH816.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE 
*             LOOP COUNT IS INCREMENTED.
* 
*         14. DH817 TRK=*OB  SECT=*OB 
*IF DEF,SFMD,1
*         14. D8817 TRK=*OB  SECT=*OB                                    D88
*IF DEF,LSFMD,1 
*         14. DL817 TRK=*OB  SECT=*OB 
*             THIS  RUNNING  MESSAGE  DISPLAYS  THE  TRACK  AND  SECTOR  D88
*             ADDRESS  ON WHICH A READ IS PRESENTLY BEING EXECUTED.  BY  D88
*IF DEF,PFMD,1
*             DH817.
*IF DEF,SFMD,1
*             D8817.                                                     D88
*IF DEF,LSFMD,1 
*             DL817.
*                                                                        D88
*IF DEF,PFMD,6
*         14A.DH818 TRK=*OB  SECT=*OB 
*             THIS  RUNNING  MESSAGE  DISPLAYS  THE  TRACK  AND  SECTOR 
*             ADDRESS  ON WHICH A READ IS PRESENTLY BEING EXECUTED.  BY 
*             DH818.
* 
*         15. DH819 WRITE/DIAGRD LC=*DECD 
*IF DEF,SFMD,1
*         15. D8819 WRITE/DIAGRD LC=*DECD                                D88
*IF DEF,LSFMD,1 
*         15. DL819 WRITE/DIAGRD LC=*DECD 
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE  D88
*IF DEF,PFMD,1
*             DH819.  THE WRITE/READ/COMPARE  PORTION  IS  REPEATED  10 
*IF DEF,SFMD,1
*             D8819.  THE WRITE/READ/COMPARE  PORTION  IS  REPEATED  10  D88
*IF DEF,LSFMD,1 
*             DL819.  THE WRITE/READ/COMPARE  PORTION  IS  REPEATED  10 
*             TIMES  FOR  EACH DATA PATTERN USED AND WITH EACH PASS THE  D88
*             LOOP COUNT IS INCREMENTED.                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         16. DH821 WRITING TRACK=*OCTB 
*IF DEF,SFMD,1
*         16. D8821 WRITING TRACK=*OCTB                                  D88
*IF DEF,LSFMD,1 
*         16. DL821 WRITING TRACK=*OCTB 
*             THIS  RUNNING MESSAGE INDICATES THE TRACK ADDRESS THAT IS  D88
*IF DEF,PFMD,1
*             PRESENTLY BEING WRITTEN BY DH821. 
*IF DEF,SFMD,1
*             PRESENTLY BEING WRITTEN BY D8821.                          D88
*IF DEF,LSFMD,1 
*             PRESENTLY BEING WRITTEN BY DL821. 
*                                                                        D88
*IF DEF,PFMD,1
*         17. DH822 TRK=*OB SECT=*OB
*IF DEF,SFMD,1
*         17. D8823 TRK=*OB SECT=*OB                                     D88
*IF DEF,LSFMD,1 
*         17. DL823 TRK=*OB SECT=*OB
*             THIS  RUNNING  MESSAGE  INDICATES  THE  TRACK  AND SECTOR  D88
*IF DEF,PFMD,1
*             ADDRESS THAT IS PRESENTLY BEING READ BY DH822.
*IF DEF,SFMD,1
*             ADDRESS THAT IS PRESENTLY BEING READ BY D8823.             D88
*IF DEF,LSFMD,1 
*             ADDRESS THAT IS PRESENTLY BEING READ BY DL823.
*                                                                        D88
*IF DEF,PFMD,9
*         17A.DH823 WRITING TRACK=*OCTB 
*             THIS  RUNNING MESSAGE INDICATES THE TRACK ADDRESS THAT IS 
*             PRESENTLY BEING WRITTEN BY DH823. 
* 
*         17B.DH824 READING TRACK=*OB 
*             THIS RUNNING MESSAGE INDICATES THE TRACK ADDRESS THAT IS
*             PRESENTLY BEING READ BY DH824.
* 
*         18. DH825 SUBTEST*O LC=*DECD
*IF DEF,SFMD,1
*         18. D8825 SUBTEST*O LC=*DECD                                   D88
*IF DEF,LSFMD,1 
*         18. DL825 SUBTEST*O LC=*DECD
*             THIS RUNNING MESSAGE INDICATES WHICH OF THE 4 SUBTESTS OF  D88
*IF DEF,PFMD,1
*             MODULE DH825 IS PRESENTLY  BEING  RUN.   THE  LOOP  COUNT 
*IF DEF,SFMD,1
*             MODULE D8825 IS PRESENTLY  BEING  RUN.   THE  LOOP  COUNT  D88
*IF DEF,LSFMD,1 
*             MODULE DL825 IS PRESENTLY  BEING  RUN.   THE  LOOP  COUNT 
*             INDICATES THE NUMBER OF PASSES MADE BY EACH SUBTEST.       D88
*                                                                        D88
*IF DEF,PFMD,2
*         19. DH827 WRITING CYLINDER 1512B
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  DH827  IS  IN 
*IF DEF,SFMD,2
*         19. D8827 WRITING CYLINDER 1512B                               D88
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  D8827  IS  IN  D88
*IF DEF,LSFMD,2 
*         19. DL827 WRITING CYLINDER 1512B
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  DL827  IS  IN 
*             ITS WRITING MODE.                                          D88
*                                                                        D88
*IF DEF,PFMD,2
*         20. DH827 VERIFYING CYLINDER 1512B
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  DH827  IS  IN 
*IF DEF,SFMD,2
*         20. D8827 VERIFYING CYLINDER 1512B                             D88
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  D8827  IS  IN  D88
*IF DEF,LSFMD,2 
*         20. DL827 VERIFYING CYLINDER 1512B
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  DL827  IS  IN 
*             ITS WRITE/VERIFY MODE.                                     D88
*                                                                        D88
*IF DEF,PFMD,2
*         21. DH829 WRITING CYL*OCTB
*             THIS  RUNNING  MESSAGE  INDICATES  THAT  MODULE DH829  IS 
*IF DEF,SFMD,2
*         21. D8829 WRITING CYL*OCTB                                     D88
*             THIS  RUNNING  MESSAGE  INDICATES  THAT  MODULE D8829  IS  D88PTR4
*IF DEF,LSFMD,2 
*         21. DL829 WRITING CYL*OCTB
*             THIS  RUNNING  MESSAGE  INDICATES  THAT  MODULE DL829  IS 
*             PRESENTLY WRITING A PATTERN  OUT  TO  DISK.   THIS  WRITE  D88PTR4
*             PRECEEDS  THE  FORCE-A-VERIFY-ERROR  PORTION OF THE TEST.  D88PTR4
*                                                                        D88
*IF DEF,PFMD,1
*         22. DH831 READCHECKWORD,MARGIN*O
*IF DEF,SFMD,1
*         22. D8831 READCHECKWORD,MARGIN*O                               D88
*IF DEF,LSFMD,1 
*         22. DL831 READCHECKWORD,MARGIN*O
*             THIS RUNNING  MESSAGE  INDICATES  WHICH  READ  MARGIN  IS  D88
*             PRESENTLY  BEING USED DURING THE READ CHECKWORD OPERATION  D88
*IF DEF,PFMD,1
*             OF MODULE DH831.
*IF DEF,SFMD,1
*             OF MODULE D8831.                                           D88
*IF DEF,LSFMD,1 
*             OF MODULE DL831.
*                                                                        D88
*IF DEF,PFMD,1
*         23. DH833 CYL=*OCTB LC=*DECD
*IF DEF,SFMD,1
*         23. D8833 CYL=*OCTB LC=*DECD                                   D88
*IF DEF,LSFMD,1 
*         23. DL833 CYL=*OCTB LC=*DECD
*             THIS  RUNNING  MESSAGE  INDICATES  TO  WHICH CYLINDER THE  D88
*IF DEF,PFMD,1
*             HEADS ARE PRESENTLY SEEKING IN MODULE DH833.   EACH  SEEK 
*IF DEF,SFMD,1
*             HEADS ARE PRESENTLY SEEKING IN MODULE D8833.   EACH  SEEK  D88
*IF DEF,LSFMD,1 
*             HEADS ARE PRESENTLY SEEKING IN MODULE DL833.   EACH  SEEK 
*             OPERATION IS REPEATED 2 TIMES DURING WHICH THE LOOP COUNT  D88
*             IS INCREMENTED.                                            D88
*                                                                        D88
*IF DEF,PFMD,2
*         24. DH835 WRITE CODED CYL=*OCTB 
*             THIS RUNNING MESSAGE INDICATES THAT MODULE DH835 IS DOING 
*IF DEF,SFMD,2
*         24. D8835 WRITE CODED CYL=*OCTB                                D88
*             THIS RUNNING MESSAGE INDICATES THAT MODULE D8835 IS DOING  D88
*IF DEF,LSFMD,2 
*         24. DL835 WRITE CODED CYL=*OCTB 
*             THIS RUNNING MESSAGE INDICATES THAT MODULE DL835 IS DOING 
*             A WRITE CODED  OPERATION  ON  CYLINDER  1512B.             D88
*                                                                        D88
*IF DEF,PFMD,1
*         25. DH837 TRK=*OB SECT=*OB
*IF DEF,SFMD,1
*         25. D8837 TRK=*OB SECT=*OB                                     D88
*IF DEF,LSFMD,1 
*         25. DL837 TRK=*OB SECT=*OB
*             THIS  RUNNING MESSAGE INDICATES AT WHICH TRACK AND SECTOR  D88
*             ADDRESS A READ AND VERIFY IS BEING  PERFORMED  BY  MODULE  D88
*IF DEF,PFMD,1
*             DH837.
*IF DEF,SFMD,1
*             D8837.                                                     D88
*IF DEF,LSFMD,1 
*             DL837.
*                                                                        D88
*IF DEF,PFMD,1
*         26. DH839 CYL *OCTB TRACK *OCTB 
*IF DEF,SFMD,1
*         26. D8839 CYL *OCTB TRACK *OCTB                                D88
*IF DEF,LSFMD,1 
*         26. DL839 CYL *OCTB TRACK *OCTB 
*             THIS RUNNING MESSAGE  INDICATES  AT  WHICH  CYLINDER  AND  D88
*             TRACK  ADDRESS  THE  WRITE  CURRENT SWITCH POINT IS BEING  D88
*IF DEF,PFMD,1
*             TESTED BY MODULE DH839. 
*IF DEF,SFMD,1
*             TESTED BY MODULE D8839.                                    D88
*IF DEF,LSFMD,1 
*             TESTED BY MODULE DL839. 
*                                                                        D88
***       DAYFILE MESSAGES                                               D88
**        DAYFILE MESSAGES                                               D88
*         DAYFILE MESSAGES                                               D88
*         ----------------                                               D88
*                                                                        D88
*IF DEF,PFMD,2
*         1.  DH8NN ERROR(S) = XXXXD
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*IF DEF,SFMD,2
*         1.  D88NN ERROR(S) = XXXXD                                     D88
*             NN   = THE NUMBER OF THE MODULE IN D88.                    D88
*IF DEF,LSFMD,2 
*         1.  DL8NN ERROR(S) = XXXXD
*             NN   = THE NUMBER OF THE MODULE IN DL8. 
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE.        D88PTR4
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  DETECTED  D88
*             XXXX  NUMBER  OF  ERRORS  BY  THE  TIME  IT HAD COMPLETED  D88
*             EXECUTION.                                                 D88
*                                                                        D88
*IF DEF,PFMD,2
*         2.  DH8NN MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*IF DEF,SFMD,2
*         2.  D88NN MODULE ABORTED - SUSPECTED PARAMETER ERRORS          D88
*             NN   = THE NUMBER OF THE MODULE IN D88.                    D88
*IF DEF,LSFMD,2 
*         2.  DL8NN MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
*             NN   = THE NUMBER OF THE MODULE IN DL8. 
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  WAS  NOT  D88
*             EXECUTED BECAUSE OF SUSPECTED PARMETER ERRORS.             D88
*                                                                        D88
*IF DEF,PFMD,2
*         3.  DH8NN MODULE ABORTED - ACCESS LEVEL TOO LOW 
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*IF DEF,SFMD,2
*         3.  D88NN MODULE ABORTED - ACCESS LEVEL TOO LOW                D88
*             NN   = THE NUMBER OF THE MODULE IN D88.                    D88
*IF DEF,LSFMD,2 
*         3.  DL8NN MODULE ABORTED - ACCESS LEVEL TOO LOW 
*             NN   = THE NUMBER OF THE MODULE IN DL8. 
*             THIS  DAYFILE  MESSAGE  INDICATES  THAT MODULE NN WAS NOT  D88PTR4
*             EXECUTED.  THE  ACCESS  LEVEL IN THE ASSIGN STATEMENT WAS  D88PTR4
*             NOT HIGH ENOUGH, AND IF THE MODULE HAD BEEN EXECUTED, THE  D88PTR4
*             PRODUCT OVERLAY DRIVER  WOULD  HAVE  REPORTED  AN  ACCESS  D88PTR4
*             LEVEL ERROR AND TERMINATED EXECUTION OF THE MODULE.        D88PTR4
*                                                                        D88
*IF DEF,PFMD,2
*         4.  DH8NN MODULE ABORTED - WRITE DISABLED IN P5 
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*IF DEF,SFMD,2
*         4.  D88NN MODULE ABORTED - WRITE DISABLED IN P5                D88
*             NN   = THE NUMBER OF THE MODULE IN D88.                    D88
*IF DEF,LSFMD,2 
*         4.  DL8NN MODULE ABORTED - WRITE DISABLED IN P5 
*             NN   = THE NUMBER OF THE MODULE IN DL8. 
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  WAS  NOT  D88
*             EXECUTED BECAUSE WRITE WAS DISABLED IN PARAMETER WORD P5.  D88
*             WRITE MUST BE ENABLED IN ORDER TO RUN THE MODULE.          D88
*IF DEF,PFMD,8
* 
*         5.  DH8NN MODULE ABORTED - CONTROLLER NOT RESPONDING
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*             THIS DAYFILE MESSAGE  INDICATES  THAT EXECUTION OF MODULE 
*             NN AND THE DH8  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.
*                                                                        D88
***       ERROR MESSAGES                                                 D88
**        ERROR MESSAGES                                                 D88
*         ERROR MESSAGES                                                 D88
*         --------------                                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         THE FOLLOWING DISPLAY FORMAT IS USED BY DH8 TO REPORT  ERRORS 
*IF DEF,SFMD,1
*         THE FOLLOWING DISPLAY FORMAT IS USED BY D88 TO REPORT  ERRORS  D88
*IF DEF,LSFMD,1 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY DL8 TO REPORT  ERRORS 
*         TO THE USER.                                                   D88
*                                                                        D88
*IF DEF,PFMD,2
*         00
*         01  DH8NN - MODULE TITLE
*IF DEF,SFMD,2
*         00  D88 - FMD CONFIDENCE TEST                                  D88
*         01  D88NN - MODULE TITLE                                       D88
*IF DEF,LSFMD,2 
*         00  DL8 - FMD CONFIDENCE TEST 
*         01  DL8NN - MODULE TITLE
*         02  PRESERVICE FORECAST GROUP ZZZZ
*         03                                                             D88
*IF DEF,PFMD,2
*         04  DH8 ABORT ON C--------------C COMMAND 
*         05   DH8NN EXXXX LXXX  (M-------------M)
*IF DEF,SFMD,2
*         04  D88 ABORT ON C--------------C COMMAND                      D88
*         05   D88NN EXXXX LXXX  (M-------------M)                       D88
*IF DEF,LSFMD,2 
*         04  DL8 ABORT ON C--------------C COMMAND 
*         05   DL8NN EXXXX LXXX  (M-------------M)
*         06  LAST FUNCTION = XXXX (F----------------F)                  D88
*         07  WT=WTTT  RETRIES=RR  MARGINS=MM  ERRORS=NEEE               D88
*         10  CYL=CCCC TRK=TT  SEC=SS - S-----U RECOVERY                 D88
*         11                                                             D88
*         12                   WORD    DETAILED STATUS (OCTAL)           D88
*         13                     1      NNNN NNNN NNNN NNNN NNNN         D88
*         14  F/L GENERAL        6      NNNN NNNN NNNN NNNN NNNN         D88
*         15  STATUS= GSSSB     11D     NNNN NNNN NNNN NNNN NNNN         D88
*         16                    16D     NNNN NNNN NNNN NNNN NNNN         D88
*         17                                                             D88
*         18  E-------------------------------------M                    D88
*                                                                        D88
*                                                                        D88
*         NN    = MODULE NUMBER                                          D88
*         ZZZZ  = PRESERVICE FORECAST GROUP (PSFG) IDENTIFIER 
*         C--C  = COMMAND ON WHICH MODULE ABORTED                        D88
*         EXXXX = PRODUCT OVERLAY OR MODULE ERROR CODE                   D88
*         LXXX  = LINE NUMBER ON WHICH ERROR OCCURRED                    D88
*         M--M  = VERBAL DESCRIPTION OF ERROR CODE                       D88
*         XXXX  = THE LAST FUNCTION EXECUTED                             D88
*         F--F  = VERBAL DESCRIPTION OF LAST FUNCTION EXECUTED           D88
*         WTTT  = NUMBER OF WORDS TRANSFERRED                            D88
*         RR    = NUMBER OF RETRIES                                      D88
*IF DEF,PFMD,1
*         MM    = MARGIN CONDITION PRESENTLY SET(NA FOR DEMA3 MODULES)
*IF DEF,SFMD,1
*         MM    = MARGIN CONDITION PRESENTLY SET
*IF DEF,LSFMD,1 
*         MM    = MARGIN CONDITION PRESENTLY SET                         D88
*         NEEE  = NUMBER OF ERRORS THAT OCCURRED                         D88
*         CCCC  = LAST CYLINDER ACCESSED                                 D88
*         TT    = LAST TRACK ACCESSED                                    D88
*         SS    = LAST SECTOR ACCESSED                                   D88
*         S--U  = SUCCESSFUL OR UNSUCCESSFUL ERROR RECOVERY              D88
*IF DEF,PFMD
*          THIS IS OPTIONAL DEPENDENT ON TYPE ERROR THAT OCCURRED.
*ENDIF
*         F/L   = FIRST OR LAST GENERAL STATUS                           D88
*         GSSS  = GENERAL STATUS                                         D88
*         NNNN  = WORDS 1-20D OF DETAILED STATUS                         D88
*         E--M  = SPECIFIC ERROR MESSAGE DERIVED FROM STATUS             D88
*                 CRACKING PROCESS.                                      D88
*IF DEF,PFMD,39 
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY DH8 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    DH8 = FMD/ESM PATH TEST 
*           01    DH8NN - MODULE TITLE
*           02    PRESERVICE FORECAST GROUP PSFG
*           03
*           04    DH8 ABORTED ON C--------------------C COMMAND 
*           05    LAST FUNCTION = FFFFB 
*           06     DH8NN  EXXXX LXXX  M------------------M
*           07    WT=WWWWB RETRIES=RRB ERRORS=EEEED 
*           10
*           11    POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM
* 
* 
*           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.
*           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. 
*           WWWWB  = WORDS TRANSFERRED (WWWW) DURING LAST DATA TRANSFER 
*                    IN OCTAL (B).
*                                                                        D88
*                                                                        D88
*         THE  FOLLOWING  ERROR  MESSAGES  ARE  TO  BE  REPORTED BY THE  D88PTR4
*         PARAMETER CHECKING MODULES IF THEY DETECT AN ERROR.            D88PTR4
*                                                                        D88
*IF DEF,PFMD,1
*         DH8MM NOT EXECUTED, SUSPECTED PARAMETER ERROR 
*IF DEF,SFMD,1
*         D88MM NOT EXECUTED, SUSPECTED PARAMETER ERROR                  D88
*IF DEF,LSFMD,1 
*         DL8MM NOT EXECUTED, SUSPECTED PARAMETER ERROR 
*                       MM = MODULE NUMBER.                              D88
*                            AN ERROR HAS BEEN DETECTED IN ONE OR  MORE  D88
*                            OF  THE  PARAMETER WORDS FOR THE TEST. THE  D88
*                            ERROR DISPLAY WILL INDICATE THE  PARAMETER  D88
*                            WORDS IN WHICH  ERRORS  WERE DETECTED. THE  D88PTR4
*                            MODULE WILL ABORT EXECUTION OF THE PRIMARY  D88
*                            MODULE THAT CALLED THIS PARAMETER CHECKING  D88PTR4
*                            SUBMODULE AS A RESULT OF THE ERROR.         D88PTR4
*                                                                        D88
*IF DEF,PFMD,1
*         DH8MM NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,SFMD,1
*         D88MM NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*IF DEF,LSFMD,1 
*         DL8MM NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*                       MM = MODULE NUMBER.                              D88
*                            THE ACCESS LEVEL IS  NOT  HIGH  ENOUGH  TO  D88PTR4
*                            EXECUTE   THE   COMMANDS  IN  THE  CALLING  D88PTR4
*                            MODULE. THE MODULE WILL ABORT EXECUTION OF  D88PTR4
*                            THE   PRIMARY   MODULE   THAT  CALLED  THE  D88PTR4
*                            PARAMETER CHECKING SUBMODULE AS  A  RESULT  D88PTR4
*                            OF THE ERROR.                               D88PTR4
*                                                                        D88
*IF DEF,PFMD,1
*         DH845 NOT EXECUTED, WRITE DISABLED IN P5
*IF DEF,SFMD,1
*         D8845 NOT EXECUTED, WRITE DISABLED IN P5                       D88
*IF DEF,LSFMD,1 
*         DL845 NOT EXECUTED, WRITE DISABLED IN P5
*                            AN ERROR HAS BEEN  DETECTED  IN  PARAMETER  D88
*IF DEF,PFMD,1
*                            WORD  P5. MODULE DH845 REQUIRES THAT WRITE 
*IF DEF,SFMD,1
*                            WORD  P5. MODULE D8845 REQUIRES THAT WRITE  D88
*IF DEF,LSFMD,1 
*                            WORD  P5. MODULE DL845 REQUIRES THAT WRITE 
*                            NOT BE DISABLED IN PARAMETER WORD  P5. THE  D88
*                            MODULE WILL ABORT EXECUTION OF THE PRIMARY  D88
*                            MODULE THAT CALLED THIS PARAMETER CHECKING  D88
*                            SUBMODULE AS A RESULT OF THE ERROR.         D88
*                                                                        D88
*IF DEF,PFMD
*         THE FOLLOWING DISPLAY FORMAT IS USED BY DH8 TO REPORT ERRORS
*         TO THE USER.
* 
*         00
*         01  DH8NN - MODULE TITLE
*         02  PRESERVICE FORECAST GROUP ZZZZ
*         03
*         04  DH8 ABORT ON C--------------C COMMAND 
*         05   DH8NN EXXXX LXXX (M-----------M) 
*         06  LAST FUNCTION = XXXX (F------------F) 
*         07  WT=WTTT  RETRIES=RR  MARGINS=MM  ERRORS=NEEE
*         10  CYL=CCCC TRK=TT  SEC=SS - S-----U RECOVERY
*         11
*         12                    WORD   DETAILED STATUS (OCTAL)
*         13                      1    NNNN NNNN NNNN NNNN NNNN 
*         14 FIRST GENERAL        6    NNNN NNNN NNNN NNNN NNNN 
*         15 STATUS=GSSSB        11D   NNNN NNNN NNNN NNNN NNNN 
*         16                     16D   NNNN NNNN NNNN NNNN NNNN 
*         17
*         18                      1    NNNN NNNN NNNN NNNN NNNN 
*         20 LAST GENERAL         6    NNNN NNNN NNNN NNNN NNNN 
*         21 STATUS= GSSSB       11D   NNNN NNNN NNNN NNNN NNNN 
*         22                     16D   NNNN NNNN NNNN NNNN NNNN 
*         23
*         24 E-------------------------------------M
* 
* 
*         NN    = MODULE NUMBER 
*         ZZZZ  = PRESERVICE FORECAST GROUP IDENTIFIER
*         C--C  = COMMAND ON WHICH MODULE ABORTED 
*         EXXXX = PRODUCT OVERLAY OR MODULE ERROR CODE
*         LXXX  = LINE NUMBER ON WHICH ERROR OCCURRED 
*         M--M  = VERBAL DESCRIPTION OF ERROR CODE
*         XXXX  = THE LAST FUNCTION EXECUTED
*         F--F  = VERBAL DESCRIPTION OF LAST FUNCTION EXECUTED
*         WTTT  = NUMBER OF WORDS TRANSFERRED 
*         RR    = NUMBER OF RETRIES 
*         MM    = MARGIN CONDITION PRESENTLY SET
*         NEEE  = NUMBER OF ERRORS THAT OCCURRED
*         CCCC  = LAST CYLINDER ACCESSED
*         TT    = LAST TRACK ACCESSED 
*         SS    = LAST SECTOR ACCESSED
*         S--U  = SUCCESSFUL OR UNSUCCESSFUL ERROR RECOVERY 
*         FIRST = THE FIRST GENERAL STATUS
*         STATUS
*         LAST  = THE LAST GENERAL STATUS 
*         STATUS
*         GSSS  = GENERAL STATUS
*         NNNN  = WORDS 1-20D OF DETAILED STATUS
*         E--M  = SPECIFIC ERROR MESSAGE DERIVED FROM STATUS
*                 CRACKING PROCESS. 
*ENDIF
* 
***       ERROR CODES                                                    D88
**        ERROR CODES                                                    D88
*         ERROR CODES                                                    D88
*         -----------                                                    D88
*                                                                        D88
*         MODULE  ERROR                                                  D88
*         NUMBER  CODE                                                   D88
*         ------  -----                                                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH803  E0001 LXXX GEN.STATUS ERROR ON RESET-A=YYYYB 
*IF DEF,SFMD,1
*         D8803  E0001 LXXX GEN.STATUS ERROR ON RESET-A=YYYYB            D88
*IF DEF,LSFMD,1 
*         DL803  E0001 LXXX GEN.STATUS ERROR ON RESET-A=YYYYB 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                      YYYY= ABNORMAL GENERAL STATUS                     D88
*                            FOLLOWING  A  RESET  COMMAND,  AN ABNORMAL  D88
*                            GENERAL STATUS WAS RECEIVED.                D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH805  E0002 LXXX GEN.STATUS MISCOMP. E0000  AYYYYB 
*IF DEF,SFMD,1
*         D8805  E0002 LXXX GEN.STATUS MISCOMP. E0000  AYYYYB            D88
*IF DEF,LSFMD,1 
*         DL805  E0002 LXXX GEN.STATUS MISCOMP. E0000  AYYYYB 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                      YYYY= ABNORMAL GENERAL STATUS                     D88
*                            FOLLOWING A RESERVE CONTROLLER COMMAND, AN  D88
*                            ABNORMAL GENERAL STATUS WAS RECEIVED.       D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH807  E0003 LXXX DETAILED STATUS MISCOMPARE
*IF DEF,SFMD,1
*         D8807  E0003 LXXX DETAILED STATUS MISCOMPARE                   D88
*IF DEF,LSFMD,1 
*         DL807  E0003 LXXX DETAILED STATUS MISCOMPARE
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            SUCCESSIVE RETRIEVALS OF  DETAILED  STATUS  D88
*                            FOLLOWING  A  RESERVE  CONTROLLER  COMMAND  D88
*                            DETECTED A STATUS  WORD  MISCOMPARE.   THE  D88
*                            STATUS WORD ERROR WILL BE DISPLAYED.        D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH809  E0004 LXXX MISCOMPARE ON MULTIPLE DIAGRD 
*IF DEF,SFMD,1
*         D8809  E0004 LXXX MISCOMPARE ON MULTIPLE DIAGRD                D88
*IF DEF,LSFMD,1 
*         DL809  E0004 LXXX MISCOMPARE ON MULTIPLE DIAGRD 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            SUCCESSIVE DIAGNOSTIC READS OF THE COUPLER  D88
*                            BUFFER DETECTED A  DATA  WORD  MISCOMPARE.  D88
*                            THE DATA WORD IN ERROR WILL BE DISPLAYED.   D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH809  E0005 LXXX MISCOMPARE ON DIAGWR/DIAGRD 
*IF DEF,SFMD,1
*         D8809  E0005 LXXX MISCOMPARE ON DIAGWR/DIAGRD                  D88
*IF DEF,LSFMD,1 
*         DL809  E0005 LXXX MISCOMPARE ON DIAGWR/DIAGRD 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A  DIAGNOSTIC  READ FOLLOWING A DIAGNOSTIC  D88
*                            WRITE COUPLER BUFFER DETECTED A DATA  WORD  D88
*                            MISCOMPARE.   THE  DATA WORD IN ERROR WILL  D88
*                            BE DISPLAYED.                               D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH811  E0006 LXXX MISCOMPARE ON WRITECB/READCB
*IF DEF,SFMD,1
*         D8811  E0006 LXXX MISCOMPARE ON WRITECB/READCB
*IF DEF,LSFMD,1 
*         DL811  E0006 LXXX MISCOMPARE ON WRITECB/READCB
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            AFTER A WRITE COUPLER  BUFFER WAS FOLLOWED 
*                            BY  A  READ  COUPLER  BUFFER,  A DATA WORD 
*                            MISCOMPARE WAS DETECTED.  THE DATA WORD IN 
*                            ERROR WILL BE DISPLAYED. 
*                                                                        D88
*IF DEF,PFMD,1
*         DH813  E0007 LXXX E=325-345D USEC  A=YYYYD USEC 
*IF DEF,SFMD,1
*         D8813  E0007 LXXX E=325-345D USEC  A=YYYYD USEC 
*IF DEF,LSFMD,1 
*         DL813  E0007 LXXX E=325-345D USEC  A=YYYYD USEC 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                      YYYY= AVERAGE  SEEK  TIME  IN  MICROSECONDS.   A  D88
*                            AVERAGE   OF  20  SEEK  TIME  MEASUREMENTS  D88
*                            EXCEEDS   THE   SPECIFICATION   LIMITS  OF  D88
*                            325D-345D  MICROSECONDS.  THE ILLEGAL SEEK 
*                            TIME MEASUREMENT IS DISPLAYED.              D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH815  E0008 LXXX MISCOMPARE ON GET SERIAL TEST 
*IF DEF,SFMD,1
*         D8815  E0008 LXXX MISCOMPARE ON GET SERIAL TEST                D88
*IF DEF,LSFMD,1 
*         DL815  E0008 LXXX MISCOMPARE ON GET SERIAL TEST 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A  DATA  MISCOMPARE   WAS   DETECTED  WHEN  D88
*                            RETRIEVING  THE  DISK SERIAL NUMBER OFF OF  D88
*                            CYLINDER 1511B.  THE DATA WORDS  IN  ERROR  D88
*                            WILL BE DISPLAYED.                          D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH815  E0009 LXXX MISCOMPARE ON GET FACTORY TEST
*IF DEF,SFMD,1
*         D8815  E0009 LXXX MISCOMPARE ON GET FACTORY TEST               D88
*IF DEF,LSFMD,1 
*         DL815  E0009 LXXX MISCOMPARE ON GET FACTORY TEST
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A   DATA   MISCOMPARE  WAS  DETECTED  WHEN  D88
*                            RETRIEVING DISK FACTORY  FLAW  INFORMATION  D88
*                            OFF  OF CYLINDER 1511B.  THE DATA WORDS IN  D88
*                            ERROR WILL BE DISPLAYED.                    D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH815  E0010 LXXX MISCOMPARE ON GET UTILITY TEST
*IF DEF,SFMD,1
*         D8815  E0010 LXXX MISCOMPARE ON GET UTILITY TEST               D88
*IF DEF,LSFMD,1 
*         DL815  E0010 LXXX MISCOMPARE ON GET UTILITY TEST
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A  DATA  MISCOMPARE   WAS   DETECTED  WHEN  D88
*                            RETRIEVING  DISK  UTILITY FLAW INFORMATION  D88
*                            OFF OF CYLINDER 1511B.  THE DATA WORDS  IN  D88
*                            ERROR WILL BE DISPLAYED.                    D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH817  E0011 LXXX MISCOMPARE ON WC PATTERN READ 
*IF DEF,SFMD,1
*         D8817  E0011 LXXX MISCOMPARE ON WC PATTERN READ                D88
*IF DEF,LSFMD,1 
*         DL817  E0011 LXXX MISCOMPARE ON WC PATTERN READ 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A DATA ERROR WAS DETECTED WHEN READING THE  D88
*                            WORST  CASE  PATTERN  FROM CYLINDER 1511B.  D88
*                            THE DATA WORDS IN ERROR WILL BE DISPLAYED.  D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH819  E0012 LXXX MISCOMPARE ON WRITE/DIAGRD
*IF DEF,SFMD,1
*         D8819  E0012 LXXX MISCOMPARE ON WRITE/DIAGRD                   D88
*IF DEF,LSFMD,1 
*         DL819  E0012 LXXX MISCOMPARE ON WRITE/DIAGRD
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A  WRITE  FOLLOWING   A   DIAGNOSTIC  READ  D88
*                            DETECTED  A DATA WORD MISCOMPARE. THE DATA  D88
*                            WORD IN ERROR WILL BE DISPLAYED.            D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH822  E0013 LXXX MISCOMPARE ON RANDOM PATT READ
*IF DEF,SFMD,1
*         D8823  E0013 LXXX MISCOMPARE ON RANDOM PATT READ               D88
*IF DEF,LSFMD,1 
*         DL823  E0013 LXXX MISCOMPARE ON RANDOM PATT READ
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A DATA ERROR WAS DETECTED WHEN READING THE  D88
*IF DEF,PFMD,1
*                            RANDOM PATTERN WRITTEN BY DH821.  THE DATA 
*IF DEF,SFMD,1
*                            RANDOM PATTERN WRITTEN BY D8821.  THE DATA  D88
*IF DEF,LSFMD,1 
*                            RANDOM PATTERN WRITTEN BY DL821.  THE DATA 
*                            WORDS IN ERROR WILL BE DISPLAYED.           D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH825  E0014 LXXX GEN S. E=YYYYB A=ZZZZB SUBTESTAA
*IF DEF,SFMD,1
*         D8825  E0014 LXXX GEN S. E=YYYYB A=ZZZZB SUBTESTAA             D88
*IF DEF,LSFMD,1 
*         DL825  E0014 LXXX GEN S. E=YYYYB A=ZZZZB SUBTESTAA
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                      YYYY= EXPECTED GENERAL STATUS                     D88
*                      ZZZZ= ACTUAL GENERAL STATUS                       D88
*                      AA  = SUBTEST BEING EXECUTED                      D88
*                            A  GENERAL  STATUS MISCOMPARE WAS DETECTED  D88
*                            FOLLOWING  A   SHORTREAD   COMMAND.    THE  D88
*                            EXPECTED AND ACTUAL GENERAL STATUS WILL BE  D88
*                            DISPLAYED.                                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH825  E0015 LXXX CORRECTION VECTOR ERROR SUBTESTAA 
*IF DEF,SFMD,1
*         D8825  E0015 LXXX CORRECTION VECTOR ERROR SUBTESTAA            D88
*IF DEF,LSFMD,1 
*         DL825  E0015 LXXX CORRECTION VECTOR ERROR SUBTESTAA 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                      AA  = SUBTEST BEING EXECUTED                      D88
*                            THE  CORRECTION  VECTOR  LOGIC  FAILED  TO  D88
*                            CORRECT THE BAD DATA  BITS  GENERATED  FOR  D88
*                            TESTING. THE DATA ERROR WILL BE DISPLAYED.  D88
*                                                                        D88
*IF DEF,PFMD
*         DH829  E0016 LXXX WRITE VERIFY ERROR NOT DETECTED 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            THE MODULE FAILED TO DETECT A WRITE VERIFY 
*                            ERROR THAT WAS PREVIOUSLY CREATED. 
*ENDIF
*IF DEF,SFMD
*         D8829  E0016 LXXX GS.YYYYB    DETAIL S.*OCTB                   D88
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                      YYYY= ACTUAL GENERAL STATUS                       D88
*                            THE MODULE FAILED TO DETECT A WRITE VERIFY  D88
*                            ERROR THAT WAS  PREVIOUSLY  CREATED.   THE  D88
*                            DATA ERROR WILL BE DISPLAYED.               D88
*ENDIF
*IF DEF,LSFMD 
*         DL829  E0016 LXXX GS.YYYYB    DETAIL S.*OCTB
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                      YYYY= ACTUAL GENERAL STATUS
*                            THE MODULE FAILED TO DETECT A WRITE VERIFY 
*                            ERROR THAT WAS  PREVIOUSLY  CREATED.   THE 
*                            DATA ERROR WILL BE DISPLAYED.
*ENDIF
*                                                                        D88
*IF DEF,PFMD,1
*         DH833  E0017 LXXX SEEK ERROR    EYYYYB     AZZZZB 
*IF DEF,SFMD,1
*         D8833  E0017 LXXX SEEK ERROR    EYYYYB     AZZZZB              D88
*IF DEF,LSFMD,1 
*         DL833  E0017 LXXX SEEK ERROR    EYYYYB     AZZZZB 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                      YYYY= EXPECTED SEEK ADDRESS                       D88
*                      ZZZZ= ACTUAL SEEK ADDRESS                         D88
*                            THE  MODULE FAILED TO SEEK TO THE REQUIRED  D88
*                            ADDRESS ON THE  PACK.   THE  EXPECTED  AND  D88
*                            ACTUAL SEEK ADDRESSES WILL BE DISPLAYED.    D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH841  E0018 LXXX DATA COMPARE ERROR  (READ 2 TO 1) 
*IF DEF,SFMD,1
*         D8841  E0018 LXXX DATA COMPARE ERROR  (READ 2 TO 1)            D88
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A DATA ERROR WAS DETECTED IN THE DATA READ  D88
*                            FROM THE DISK WHILE  READING  IN  2  TO  1  D88
*                            INTERLACE  MODE.  THE  DATA  ERROR WILL BE  D88
*                            DISPLAYED.                                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH843  E0019 LXXX DATA COMPARE ERROR  (READ 1 TO 1) 
*IF DEF,SFMD,1
*         D8843  E0019 LXXX DATA COMPARE ERROR  (READ 1 TO 1)            D88
*IF DEF,LSFMD,1 
*         DL843  E0019 LXXX DATA COMPARE ERROR  (READ 1 TO 1) 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A DATA ERROR WAS DETECTED IN THE DATA READ  D88
*                            FROM THE DISK WHILE  READING  IN  1  TO  1  D88
*                            INTERLACE  MODE.  THE  DATA  ERROR WILL BE  D88
*                            DISPLAYED.                                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH860  E0020 LXXX GENERAL STATUS YYYYB ON RESET 
*IF DEF,SFMD,1
*         D8860  E0020 LXXX GENERAL STATUS YYYYB ON RESET                D88
*IF DEF,LSFMD,1 
*         DL860  E0020 LXXX GENERAL STATUS YYYYB ON RESET 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                      YYYY= ABNORMAL GENERAL STATUS                     D88
*                            FOLLOWING A  RESET  COMMAND,  AN  ABNORMAL  D88
*                            GENERAL STATUS WAS RECEIVED.                D88
*                                                                        D88
*IF DEF,PFMD,1
*         DH864  E0021 LXXX DATA COMPARE ERROR
*IF DEF,SFMD,1
*         D8864  E0021 LXXX DATA COMPARE ERROR                           D88
*IF DEF,LSFMD,1 
*         DL864  E0021 LXXX DATA COMPARE ERROR
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED.        D88
*                            A DATA ERROR WAS DETECTED FOLLOWING A READ  D88
*                            COMMAND. THE DATA ERROR WILL BE DISPLAYED.  D88
* 
*IF DEF,PFMD,1
*         DH812  E0022 LXXX CONTROLLER LOOP 885 BUS ACTIVE
*IF DEF,SFMD,1
*         D8812  E0022 LXXX CONTROLLER LOOP 885 BUS ACTIVE
*IF DEF,LSFMD,1 
*         DL812  E0022 LXXX CONTROLLER LOOP 885 BUS ACTIVE
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A CHECK OF  THE  INPUT  CHANNELS INDICATES 
*                            ECHO MODE  WAS  SET AFTER  A  COMMAND  WAS 
*                            ISSUED ON BUS OUT. 
* 
*IF DEF,PFMD,1
*         DH812  E0023 LXXX CONTROLLER LOOP 885 DECODE ACTIVE 
*IF DEF,SFMD,1
*         D8812  E0023 LXXX CONTROLLER LOOP 885 DECODE ACTIVE 
*IF DEF,LSFMD,1 
*         DL812  E0023 LXXX CONTROLLER LOOP 885 DECODE ACTIVE 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A CHECK OF  THE  INPUT  CHANNELS INDICATES 
*                            ECHO MODE  WAS  SET AFTER  A  COMMAND  WAS 
*                            ISSUED ON BUS OUT. 
* 
*IF DEF,PFMD,1
*         DH812  E0024 LXXX BUS IN DATA ERROR 
*IF DEF,SFMD,1
*         D8812  E0024 LXXX BUS IN DATA ERROR 
*IF DEF,LSFMD,1 
*         DL812  E0024 LXXX BUS IN DATA ERROR 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            THE  DATA  RECIEVED ON THE  INPUT  CHANNEL 
*                            MISCOMPARES WITH THE DATA SENT ON THE OUT- 
*                            PUT CHANNEL. 
* 
*IF DEF,PFMD,1
*         DH812  E0025 LXXX BUS OUT P.E. OR ILLEGAL CMD DECODE
*IF DEF,SFMD,1
*         D8812  E0025 LXXX BUS OUT P.E. OR ILLEGAL CMD DECODE
*IF DEF,LSFMD,1 
*         DL812  E0025 LXXX BUS OUT P.E. OR ILLEGAL CMD DECODE
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            THE INPUT CHANNEL  STATUS  INDICATES  THAT 
*                            THE DRIVE WAS  NOT READY  DUE TO A  PARITY 
*                            ERROR OR ILLEGAL COMMAND.
*                                                                        D88
*IF DEF,PFMD
*         DH814  E0026 LXXX MISCOMPARE ON MULTIPLE SYSRD
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            SUCCESSIVE SYSTEM READS  OF THE ESM MEMORY 
*                            DETECTED A DATA WORD MISCOMPARE.  THE DATA 
*                            WORD IN ERROR WILL BE DISPLAYED. 
* 
*         DH814  E0027 LXXX MISCOMPARE ON SYSWR/SYSRD 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A SYSTEM READ FOLLOWING A SYSTEM WRITE DE- 
*                            TECTED A DATA WORD MISCOMPARE.    THE DATA 
*                            WORD IN ERROR WILL BE DISPLAYED. 
* 
*         DH816  E0028 LXXX MISCOMPARE ON MULTIPLE DIAGRD 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            SUCCESSIVE DIAGNOSTIC READS OF THE EXTEND- 
*                            ED MEMORY DETECTED A DATA WORD MISCOMPARE. 
*                            THE DATA WORD IN ERROR WILL BE DISPLAYED.
* 
*         DH816  E0029 LXXX MISCOMPARE ON DIAGWR/DIAGRD 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A  DIAGNOSTIC  READ FOLLOWING A DIAGNOSTIC 
*                            WRITE EXTENDED MEMORY DETECTED A DATA WORD 
*                            MISCOMPARE.   THE  DATA WORD IN ERROR WILL 
*                            BE DISPLAYED.
* 
*         DH818  E0030 LXXX MISCOMPARE ON WC PATTERN READ 
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A DATA ERROR WAS DETECTED WHEN READING THE 
*                            WORST  CASE  PATTERN  FROM CYLINDER 1511B. 
*                            THE DATA WORDS IN ERROR WILL BE DISPLAYED. 
* 
*         DH824  E0031 LXXX MISCOMPARE ON RANDOM PATT READ
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                            A DATA ERROR WAS DETECTED WHEN READING THE 
*                            RANDOM PATTERN WRITTEN BY DH823.  THE DATA 
*                            WORDS IN ERROR WILL BE DISPLAYED.
* 
*         DH8YY  E0032 LXXX ESM TRANSFER ERROR (STATUS=SS)
*                      SS  = SYSRD ESM STATUS.
*                      XXX = LINE NUMBER ON WHICH ERROR OCCURRED. 
*                      YY  = PRIMARY MODULE IN WHICH ERROR OCCURRED.
*                            AN ESM SYSTEM TRANSFER ERROR WAS  DETECTED 
*                            WHEN  READING  ESM.    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.
* 
*ENDIF
***       MODULE DESCRIPTIONS                                            D88
**        MODULE DESCRIPTIONS                                            D88
*         MODULE DESCRIPTIONS                                            D88
*         -------------------                                            D88
*                                                                        D88
*IF DEF,PFMD,4
   MODULE DH801,DEMA2(14),LOCK
***       DH801 - CONTROLLER CONNECT TEST 
**        DH801 - CONTROLLER CONNECT TEST 
*         DH801 - CONTROLLER CONNECT TEST 
*IF DEF,SFMD,4
   MODULE D8801,FMDFT(7),LOCK                                            D88
***       D8801 - CONTROLLER CONNECT TEST                                D88
**        D8801 - CONTROLLER CONNECT TEST                                D88
*         D8801 - CONTROLLER CONNECT TEST                                D88
*IF DEF,LSFMD,4 
   MODULE DL801,LSFMD2(16),LOCK 
***       DL801 - CONTROLLER CONNECT TEST 
**        DL801 - CONTROLLER CONNECT TEST 
*         DL801 - CONTROLLER CONNECT TEST 
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH801 WILL TEST  THE  COMMUNICATION  PATHS  BETWEEN  THE DEMA 
*IF DEF,SFMD,1
*         D8801 WILL TEST  THE  COMMUNICATION  PATHS  BETWEEN  THE  FMD  D88
*IF DEF,LSFMD,1 
*         DL801 WILL TEST  THE  COMMUNICATION  PATHS  BETWEEN  THE  FMD 
*         CONTROLLER AND THE CYBER 170/70 PP CHANNEL.                    D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  CONNECT THE CONTROLLER.                                    D88
*         2.  RELEASE THE CONTROLLER.                                    D88
*         3.  REPEAT STEPS 1,2 --10 TIMES.                               D88
*         4.  REPEAT MODULE LOOPS ON STEPS 1-3.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR  D88
*               TO OMIT ADDRESS REPORTING.                               D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH801 - RESERVE CONTROLLER
2  FORMAT DH801 ERROR(S) = *DECD
5  FORMAT DH801 RES CONTROLLER LC*OCTB
7  FORMAT DH801 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8801 - RESERVE CONTROLLER                                     D88
2  FORMAT D8801 ERROR(S) = *DECD                                         D88
5  FORMAT D8801 RES CONTROLLER LC*OCTB                                   D88
7  FORMAT D8801 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,4 
1  FORMAT DL801 - RESERVE CONTROLLER
2  FORMAT DL801 ERROR(S) = *DECD
5  FORMAT DL801 RES CONTROLLER LC*OCTB
7  FORMAT DL801 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 1D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 7777                     *INVALID CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
26 IF(ES.AND.RM.EQ.0)MSG 5(B10)TO DISPLAY  *IF NO REPEAT MOD             D88
   B8 = 40B                                                              D88
   RES CONTROLLER, ABT 74                                                D88
   B8 = 46B                                                              D88
   REL, ABT 74                                                           D88
30 GOTO 26 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES                         D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1                                                       D88
   CALL 98C                      *CALL ERROR PROCESSOR                   D88
   GOTO 30 WHILE(B11+1.LE.2)     *RESTART                                D88
   IF(ES.AND.RM.NE.0) GOTO 30    *IF REPEAT MODULE
   GOTO 50                       *EXIT                                   D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH801 RESERVE CONTROLLER TEST 
*IF DEF,SFMD,1
COMPILE                      *D8801 RESERVE CONTROLLER TEST              D88
*IF DEF,LSFMD,1 
COMPILE                      *DL801 RESERVE CONTROLLER TEST 
*IF DEF,PFMD,4
   MODULE DH803,DEMA2(14),LOCK
***       DH803 - ZERO WORD AUTOLOAD TEST 
**        DH803 - ZERO WORD AUTOLOAD TEST 
*         DH803 - ZERO WORD AUTOLOAD TEST 
*IF DEF,SFMD,4
   MODULE D8803,FMDFT(7),LOCK                                            D88
***       D8803 - ZERO WORD AUTOLOAD TEST                                D88
**        D8803 - ZERO WORD AUTOLOAD TEST                                D88
*         D8803 - ZERO WORD AUTOLOAD TEST                                D88
*IF DEF,LSFMD,4 
   MODULE DL803,LSFMD2(16),LOCK 
***       DL803 - ZERO WORD AUTOLOAD TEST 
**        DL803 - ZERO WORD AUTOLOAD TEST 
*         DL803 - ZERO WORD AUTOLOAD TEST 
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE -                                                      D88
*IF DEF,PFMD,1
*         DH803 EXISTS IN THE CONFIDENCE TEST ONLY AS A  CHECK  OF  THE 
*IF DEF,SFMD,1
*         D8803 EXISTS IN THE CONFIDENCE TEST ONLY AS A  CHECK  OF  THE  D88
*IF DEF,LSFMD,1 
*         DL803 EXISTS IN THE CONFIDENCE TEST ONLY AS A  CHECK  OF  THE 
*         RESET OPERATION.   IT ALSO TESTS THE 7155-S PROCESSOR BY EXE- 
*         CUTING THE ROM DIAGNOSTIC.
*                                                                        D88
*         METHOD -                                                       D88
*         1.  CONNECT THE CONTROLLER.                                    D88
*         2.  ISSUE THE RESET COMMAND.                                   D88
*         3.  CHECK GENERAL STATUS FOR ALL ZEROS.                        D88
*         4.  REPEAT STEPS 1-3,-- 10D TIMES.                             D88
*         5.  RELEASE THE CONTROLLER.                                    D88
*         6.  REPEAT MODULE LOOPS ON STEPS 1-5.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR  D88
*               TO OMIT ADDRESS REPORTING.                               D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*IF DEF,PFMD,5
1  FORMAT DH803 - ZERO WORD AUTOLOAD TST
2  FORMAT DH803 ERROR(S) = *DECD
4  FORMAT DH803 E0001 L*OC GEN.STATUS ERROR ON RESET-A=*OCTB
5  FORMAT DH803 AUTOLOAD  LC=*DECD
7  FORMAT DH803 EC=*DECD, LC=*DECD
*IF DEF,SFMD,5
1  FORMAT D8803-ZERO WORD AUTOLOAD TST                                   D88
2  FORMAT D8803 ERROR(S) = *DECD                                         D88
4  FORMAT D8803 E0001 L*OC GEN.STATUS ERROR ON RESET-A=*OCTB             D88
5  FORMAT D8803 AUTOLOAD  LC=*DECD                                       D88
7  FORMAT D8803 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,5 
1  FORMAT DL803-ZERO WORD AUTOLOAD TST
2  FORMAT DL803 ERROR(S) = *DECD
4  FORMAT DL803 E0001 L*OC GEN.STATUS ERROR ON RESET-A=*OCTB
5  FORMAT DL803 AUTOLOAD  LC=*DECD
7  FORMAT DL803 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 3D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 7777                     *INVALID CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
26 B8 = 40B                                                              D88
   RES CONTROLLER, ABT 74                                                D88
   IF(ES.AND.RM.EQ.0) MSG 5(B10) TO DISPLAY  *IF NO REPEAT               D88
   B8 = 42B                                                              D88
   RESET, ABT 74                 *RESET CONTROLLER                       D88
   B8 = 04B                                                              D88
   STATUS GENERAL, ABT 74        *GET GENERAL STATUS                     D88
   WC = 1                        *WORD COUNT FOR COMPARE
   B8 = 47B                                                              D88
   COMPARE SB TO OB FOR WC, ABT 70                                       D88
32 GOTO 26 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES                         D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT              D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 00/02                                                           D88
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 4 (EA,SB) TO LINE 5       *DISPLAY ERROR MESSAGE                  D88
   CALL 98C                     *CALL MODULE ERROR PROCESSOR             D88
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH803 ZERO WORD AUTOLOAD
*IF DEF,SFMD,1
COMPILE                      *D8803 ZERO WORD AUTOLOAD                   D88
*IF DEF,LSFMD,1 
COMPILE                      *DL803 ZERO WORD AUTOLOAD
*IF DEF,PFMD,4
   MODULE DH805,DEMA2(14),LOCK
***       DH805 - GENERAL STATUS TEST 
**        DH805 - GENERAL STATUS TEST 
*         DH805 - GENERAL STATUS TEST 
*IF DEF,SFMD,4
   MODULE D8805,FMDFT(7),LOCK                                            D88
***       D8805 - GENERAL STATUS TEST                                    D88
**        D8805 - GENERAL STATUS TEST                                    D88
*         D8805 - GENERAL STATUS TEST                                    D88
*IF DEF,LSFMD,4 
   MODULE DL805,LSFMD2(16),LOCK 
***       DL805 - GENERAL STATUS TEST 
**        DL805 - GENERAL STATUS TEST 
*         DL805 - GENERAL STATUS TEST 
*         ---------------------------                                    D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,2
*         DH805 DETECTS INTERMITTENT FAILURES IN THE DATA PATH  BETWEEN 
*         THE PP AND THE DEMA CONTROLLER BY READING GENERAL STATUS. 
*IF DEF,SFMD,2
*         D8805 DETECTS INTERMITTENT FAILURES IN THE DATA PATH  BETWEEN  D88
*         THE PP AND THE FMD CONTROLLER BY READING GENERAL STATUS.
*IF DEF,LSFMD,2 
*         DL805 DETECTS INTERMITTENT FAILURES IN THE DATA PATH  BETWEEN 
*         THE PP AND THE FMD CONTROLLER BY READING GENERAL STATUS.       D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  SET THE EXPECTED GENERAL STATUS TO  ZERO  IN  THE  OUTPUT  D88
*             BUFFER.                                                    D88
*         2.  RESERVE CONTROLLER.                                        D88
*         3.  READ  THE  CONTROLLER  GENERAL  STATUS  AND  COMPARE  THE  D88
*             GENERAL STATUS READ WITH THE EXPECTED GENERAL STATUS.      D88
*         4.  REPEAT STEP 3 TEN TIMES.                                   D88
*         5.  REPEAT STEPS 2-4 FOUR TIMES.                               D88
*         6.  RELEASE CHANNEL.                                           D88
*         7.  REPEAT MODULE LOOPS ON STEPS 2-6.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR  D88
*               TO OMIT ADDRESS REPORTING.                               D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*IF DEF,PFMD,5
1  FORMAT DH805 - GENERAL STATUS TEST 
2  FORMAT DH805 ERROR(S) = *DECD
4  FORMAT DH805 E0002 L*OC GEN.STATUS MISCOMP.  E0000 A*OCTB
5  FORMAT DH805 GEN STATUS LC=*DECD 
7  FORMAT DH805 EC=*DECD, LC=*DECD
*IF DEF,SFMD,5
1  FORMAT D8805 - GENERAL STATUS TEST                                    D88
2  FORMAT D8805 ERROR(S) = *DECD                                         D88
4  FORMAT D8805 E0002 L*OC GEN.STATUS MISCOMP.  E0000 A*OCTB             D88
5  FORMAT D8805 GEN STATUS LC=*DECD                                      D88
7  FORMAT D8805 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,5 
1  FORMAT DL805 - GENERAL STATUS TEST 
2  FORMAT DL805 ERROR(S) = *DECD
4  FORMAT DL805 E0002 L*OC GEN.STATUS MISCOMP.  E0000 A*OCTB
5  FORMAT DL805 GEN STATUS LC=*DECD 
7  FORMAT DL805 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 5D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 7777                     *INVALID CYLINDER NUMBER                D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
   OB = 0                        *EXPECTED GENERAL STATUS                D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B2 = 0                        *INITIALIZE LOOP COUNTER                D88
26 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
   B8 = 40B                                                              D88
   RES CONTROLLER, ABT 74                                                D88
30 IF(ES.AND.RM.EQ.0) MSG 5(B10) TO DISPLAY  *IF RM NOT SET              D88
   B8 = 04B                                                              D88
   STATUS GENERAL, ABT 74        *GET GENERAL STATUS                     D88
   WC = 1                        *WORD COUNT FOR COMPARE
   B8 = 47B                                                              D88
   COMPARE SB TO OB FOR WC, ABT 70                                       D88
   GOTO 30 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES                         D88
32 GOTO 26 WHILE(B2+1.LT.4D)     *LOOP 4D TIMES                          D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 00/02                                                           D88
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 4 (EA,SB) TO LINE 5       *DISPLAY ERROR MESSAGE                  D88
   CALL 98C                     *CALL MODULE ERROR PROCESSOR             D88
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH805 GENERAL STATUS TEST 
*IF DEF,SFMD,1
COMPILE                      *D8805 GENERAL STATUS TEST                  D88
*IF DEF,LSFMD,1 
COMPILE                      *DL805 GENERAL STATUS TEST 
*IF DEF,PFMD,4
   MODULE DH807,DEMA2(14),LOCK
***       DH807 - DETAILED STATUS TEST
**        DH807 - DETAILED STATUS TEST
*         DH807 - DETAILED STATUS TEST
*IF DEF,SFMD,4
   MODULE D8807,FMDFT(7),LOCK                                            D88
***       D8807 - DETAILED STATUS TEST                                   D88
**        D8807 - DETAILED STATUS TEST                                   D88
*         D8807 - DETAILED STATUS TEST                                   D88
*IF DEF,LSFMD,4 
   MODULE DL807,LSFMD2(16),LOCK 
***       DL807 - DETAILED STATUS TEST
**        DL807 - DETAILED STATUS TEST
*         DL807 - DETAILED STATUS TEST
*         ----------------------------                                   D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,2
*         DH807 DETECTS INTERMITTENT FAILURES IN THE DATA PATH  BETWEEN 
*         THE PP AND THE DEMA CONTROLLER BY READING DETAILED STATUS.
*IF DEF,SFMD,2
*         D8807 DETECTS INTERMITTENT FAILURES IN THE DATA PATH  BETWEEN  D88
*         THE PP AND THE FMD CONTROLLER BY READING DETAILED STATUS. 
*IF DEF,LSFMD,2 
*         DL807 DETECTS INTERMITTENT FAILURES IN THE DATA PATH  BETWEEN 
*         THE PP AND THE FMD CONTROLLER BY READING DETAILED STATUS.      D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  RESERVE CONTROLLER.                                        D88
*         2.  READ THE CONTROLLER DETAILED STATUS AND SAVE THE DETAILED  D88
*             STATUS IN THE OUTPUT BUFFER.                               D88
*         3.  READ  THE  CONTROLLER  DETAILED  STATUS  AND  COMPARE THE  D88
*             DETAILED STATUS SAVED  IN  THE  OUTPUT  BUFFER  WITH  THE  D88
*             DETAILED STATUS READ.                                      D88
*         4.  REPEAT STEP 3 TEN TIMES.                                   D88
*         5.  REPEAT STEPS 1-4 FOUR TIMES.                               D88
*         6.  REPEAT MODULE LOOPS ON STEPS 1-5.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR  D88
*               TO OMIT ADDRESS REPORTING.                               D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.             D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*IF DEF,PFMD,5
1  FORMAT DH807 - DETAILED STATUS TEST
2  FORMAT DH807 ERROR(S) = *DECD
4  FORMAT DH807 E0003 L*OC DETAILED STATUS MISCOMPARE 
5  FORMAT DH807 DETAIL STATUS LC=*DECD
7  FORMAT DH807 EC=*DECD, LC=*DECD
*IF DEF,SFMD,5
1  FORMAT D8807 - DETAILED STATUS TEST                                   D88
2  FORMAT D8807 ERROR(S) = *DECD                                         D88
4  FORMAT D8807 E0003 L*OC DETAILED STATUS MISCOMPARE                    D88
5  FORMAT D8807 DETAIL STATUS LC=*DECD                                   D88
7  FORMAT D8807 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,5 
1  FORMAT DL807 - DETAILED STATUS TEST
2  FORMAT DL807 ERROR(S) = *DECD
4  FORMAT DL807 E0003 L*OC DETAILED STATUS MISCOMPARE 
5  FORMAT DL807 DETAIL STATUS LC=*DECD
7  FORMAT DL807 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 7D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 7777                     *INVALID CYLINDER ADDRESS               D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   B0 = 0                        *INITIALIZE EXT.LOOP COUNT              D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B2 = 0                        *INITIALIZE LOOP COUNTER                D88
26 B10 = 0                       *INITIALIZE INT.LOOP COUNT              D88
   B8 = 40B                                                              D88
   RES CONTROLLER, ABT 74                                                D88
   B8 = 05B                                                              D88
   STATUS DETAIL, ABT 74         *GET DETAILED STATUS                    D88
   COPY SB(1) TO OB(1) FOR 20D   *SAVE DETAILED STATUS                   D88
30 IF(ES.AND.RM.EQ.0) MSG 5(B10) TO DISPLAY  *IF RM NOT SET              D88
   B8 = 05B                                                              D88
   STATUS DETAIL, ABT 74                                                 D88
   BA = 3                        *SET BA TO WORD 2 OF BUFFER             D88
   WC = 4                        *WORD COUNT FOR COMPARE
   B8 = 47B                                                              D88
   COMPARE SB(3) TO OB(3) FOR WC, ABT 70                                 D88
   WC = 4                        *WORD COUNT FOR COMPARE
   BA = 15                      *SET BA TO WORD 14 OF BUFFER             D88
   COMPARE SB(15) TO OB(15) FOR WC, ABT 70                               D88
   GOTO 30 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES                         D88
32 GOTO 26 WHILE(B2+1.LT.4D)     *LOOP 4 TIMES                           D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 00/02                                                           D88
   BA = BA+WC                    *ADJUST BA REGISTER
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 4(EA)TO LINE 5            *POST ERROR MESSAGE                     D88
   CALL 98C                     *CALL MODULE ERROR PROCESSOR             D88
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH807 DETAILED STATUS TEST
*IF DEF,SFMD,1
COMPILE                      *D8807 DETAILED STATUS TEST                 D88
*IF DEF,LSFMD,1 
COMPILE                      *DL807 DETAILED STATUS TEST
*IF DEF,PFMD,4
   MODULE DH809,DEMA2(14),LOCK
***       DH809 - DIAGNOSTIC WRITE/READ TEST
**        DH809 - DIAGNOSTIC WRITE/READ TEST
*         DH809 - DIAGNOSTIC WRITE/READ TEST
*IF DEF,SFMD,4
   MODULE D8809,FMDFT(7),LOCK                                            D88
***       D8809 - DIAGNOSTIC WRITE/READ TEST                             D88
**        D8809 - DIAGNOSTIC WRITE/READ TEST                             D88
*         D8809 - DIAGNOSTIC WRITE/READ TEST                             D88
*IF DEF,LSFMD,4 
   MODULE DL809,LSFMD2(16),LOCK 
***       DL809 - DIAGNOSTIC WRITE/READ TEST
**        DL809 - DIAGNOSTIC WRITE/READ TEST
*         DL809 - DIAGNOSTIC WRITE/READ TEST
*         ----------------------------------                             D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,2
*         DH809 WILL VERIFY THAT THE CYBER  CHANNEL(CHANNEL  16)   WILL 
*         TRANSFER   DATA  TO  AND  FROM  THE DEMA  CONTROLLER  BUFFER. 
*IF DEF,SFMD,2
*         D8809 WILL VERIFY THAT THE CYBER  CHANNEL(CHANNEL  16)   WILL  D88
*         TRANSFER   DATA  TO  AND  FROM  THE  FMD  CONTROLLER  BUFFER. 
*IF DEF,LSFMD,2 
*         DL809 WILL VERIFY THAT THE CYBER  CHANNEL(CHANNEL  16)   WILL 
*         TRANSFER   DATA  TO  AND  FROM  THE  FMD  CONTROLLER  BUFFER.  D88
*         INITIALLY MULTIPLE READS OF THE  CONTROLLER  BUFFER  ARE  EX-  D88
*         ECUTED  TESTING FOR INTERMITTENT FAILURES.  THEN WRITE/ READS  D88
*         ARE PERFORMED USING KNOWN DATA PATTERNS TO DETECT  SOLID  BIT  D88
*         FAILURES.                                                      D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  RESERVE CONTROLLER.                                        D88
*         2.  DIAGNOSTIC  READ THE CONTROLLER AND SAVE THE INPUT IN THE  D88
*             OUTPUT BUFFER.                                             D88
*         3.  DIAGNOSTIC  READ  THE  CONTROLLER 10D TIMES COMPARING THE  D88
*             INPUT TO THE SAVED OUTPUT BUFFER.                          D88
*         4.  RELEASE CHANNEL.                                           D88
*         5.  DIAGNOSTIC WRITE A 2525 PATTERN TO THE CONTROLLER.         D88
*         6.  DIAGNOSTIC READ AND COMPARE THE PATTERN 10D TIMES.         D88
*         7.  DIAGNOSTIC WRITE A 5252 PATTERN TO THE CONTROLLER.         D88
*         8.  DIAGNOSTIC READ AND COMPARE THE PATTERN 10D TIMES.         D88
*         9.  DIAGNOSTIC WRITE FIRST RANDOM PATTERN TO THE CONTROLLER.   D88
*         10. DIAGNOSTIC READ AND COMPARE THE PATTERN 10D TIMES.         D88
*         11. DIAGNOSTIC WRITE SECOND RANDOM PATTERN TO THE CONTROLLER.  D88
*         12. DIAGNOSTIC READ AND COMPARE THE PATTERN 10D TIMES.         D88
*         13  REPEAT MODULE LOOPS ON STEPS 1-12.                         D88
*IF DEF,PFMD
*         THE STARTING SEED FOR PATTERN ONE AND TWO IF RM IS SET
*         WILL INITIALLY BE ZERO. IF RM IS NOT SET THE STARTING 
*         SEED FOR PATTERNS ONE AND TWO WILL BE RT. 
*ENDIF
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = SUBTEST INDEX FOR FIRST SUBTEST.                         D88
*         B3  = RANDOM PATTERN SEED USED FOR FIRST RANDOM PATTERN.       D88
*         B4  = RANDOM PATTERN SEED USED FOR SECOND RANDOM PATTERN.      D88
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR  D88
*               TO OMIT ADDRESS REPORTING.                               D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         IB,OB                                                          D88
*                                                                        D88
*IF DEF,PFMD,6
1  FORMAT DH809 - DIAGNOSTIC WRT/RD TEST
2  FORMAT DH809 ERROR(S) = *DECD
4  FORMAT DH809 E0004 L*OC MISCOMPARE ON MULTIPLE DIAGRD
5  FORMAT DH809 E0005 L*OC MISCOMPARE ON DIAGWR/DIAGRD
6  FORMAT DH809 DIAG WRT/RD LC=*DECD
7  FORMAT DH809 EC=*DECD, LC=*DECD
*IF DEF,SFMD,6
1  FORMAT D8809-DIAGNOSTIC WRT/RD TEST                                   D88
2  FORMAT D8809 ERROR(S) = *DECD                                         D88
4  FORMAT D8809 E0004 L*OC MISCOMPARE ON MULTIPLE DIAGRD                 D88
5  FORMAT D8809 E0005 L*OC MISCOMPARE ON DIAGWR/DIAGRD                   D88
6  FORMAT D8809 DIAG WRT/RD LC=*DECD
7  FORMAT D8809 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,6 
1  FORMAT DL809-DIAGNOSTIC WRT/RD TEST
2  FORMAT DL809 ERROR(S) = *DECD
4  FORMAT DL809 E0004 L*OC MISCOMPARE ON MULTIPLE DIAGRD
5  FORMAT DL809 E0005 L*OC MISCOMPARE ON DIAGWR/DIAGRD
6  FORMAT DL809 DIAG WRT/RD LC=*DECD
7  FORMAT DL809 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 9D                       *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 7777                     *INVALID CYLINDER ADDRESS               D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   WC = 502B                     *BUFFER WORD COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B2 = 0                        *SUBTEST 0                              D88
   GOSUB 40                      *PERFORM DIAGNOSTIC R/W                 D88
   B2 = 1                        *SUBTEST 1                              D88
   DUP 2525 TO OB FOR WC         *WRITE 2525 IN OB                       D88
   GOSUB 42                                                              D88
   DUP 5252 TO OB FOR WC         *WRITE 5252 IN OB                       D88
   GOSUB 42                                                              D88
   IF(B0.EQ.0) GOTO 26           *IF RM, USE SEEDS B3/B4                 D88
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM                    D88
   GOSUB 42                                                              D88
   RANDOM TO OB FOR WC, START B4  *USE B4 SEED FOR RM                    D88
   GOSUB 42                                                              D88
   GOTO 50                                                               D88
26 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1                 D88
   B3 = OB(0)                                                            D88
   GOSUB 42                                                              D88
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 2                 D88
   B4 = OB(0)                                                            D88
   GOSUB 42                                                              D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------DIAGWR/DIAGRD SUBROUTINE PROCESS.                              D88
*                                                                        D88
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
   B8 = 40B                                                              D88
   RES CONTROLLER, ABT 74                                                D88
   B8 = 01B                                                              D88
   DIAGRD, ABT 74                *DIAGRD CONTROLLER BUFFER               D88
   COPY IB TO OB FOR WC          *SAVE CONTROLLER BUFFER                 D88
   GOTO 44                                                               D88
42 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
   B8 = 40B                                                              D88
   RES CONTROLLER, ABT 74                                                D88
   IF(ES.AND.RM.EQ.0) MSG 6 (B10) TO DISPLAY  *IF RM NOT SET             D88
   B8 = 10B                                                              D88
   DIAGWR, ABT 74                *DIAGNOSTIC WRITE                       D88
44 IF(ES.AND.RM.EQ.0) MSG 6 (B10) TO DISPLAY  *IF RM NOT SET             D88
   B8 = 01B                                                              D88
   DIAGRD, ABT 74                *DIAGNOSTIC READ                        D88
   B8 = 47B                                                              D88
   COMPARE IB TO OB FOR WC, ABT 70                                       D88
   GOTO 44 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES                         D88
46 RETURN                                                                D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 00/01                                                           D88
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   IF(B2.EQ.0) MSG 4(EA) TO LINE 5  *IF INDEX NOT SET 
   IF(B2.EQ.1) MSG 5(EA) TO LINE 5  *IF SUBTEST INDEX SET 
   CALL 98C                     *CALL MODULE ERROR PROCESSOR             D88
   WC = 502B                     *SET BUFFER WORD COUNT 
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 46    *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH809 DIAGRD/DIAGWR TEST
*IF DEF,SFMD,1
COMPILE                      *D8809 DIAGRD/DIAGWR TEST                   D88
*IF DEF,LSFMD,1 
COMPILE                      *DL809 DIAGRD/DIAGWR TEST
*IF DEF,PFMD,4
   MODULE DH811,DEMA2(14),LOCK
***       DH811 - WRITE/READ COUPLER BUFFER TEST
**        DH811 - WRITE/READ COUPLER BUFFER TEST
*         DH811 - WRITE/READ COUPLER BUFFER TEST
*IF DEF,SFMD,4
   MODULE D8811,FMDFT(7),LOCK 
***       D8811 - WRITE/READ COUPLER BUFFER TEST
**        D8811 - WRITE/READ COUPLER BUFFER TEST
*         D8811 - WRITE/READ COUPLER BUFFER TEST
*IF DEF,LSFMD,4 
   MODULE DL811,LSFMD2(16),LOCK 
***       DL811 - WRITE/READ COUPLER BUFFER TEST
**        DL811 - WRITE/READ COUPLER BUFFER TEST
*         DL811 - WRITE/READ COUPLER BUFFER TEST
*         --------------------------------                               D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,7
*         DH811 WILL TEST THAT THE NORMAL CHANNELS ARE CAPABLE OF READ- 
*         ING DATA FROM  THE  DEMA CONTROLLER BUFFER.  MULTIPLE  WRITE/ 
*         READS ARE PERFORMED USING KNOWN DATA PATTERNS TO DETECT SOLID 
*         BIT FAILURES.  A  VARIETY OF DATA PATTERNS IS USED  TO VERIFY 
*         THAT THE COUPLER BUFFER IS STABLE.  THIS MODULE ONLY  INSURES 
*         THAT THE PATH TO THE DRIVE THROUGH THE BUFFER IS OPERATIONAL. 
*         THE 885-4X DRIVE IS NOT ACCESSED IN THIS MODULE.
*IF DEF,SFMD,7
*         D8811 WILL TEST THAT THE NORMAL CHANNELS ARE CAPABLE OF READ-  D88
*         ING DATA FROM THE FMD CONTROLLER BUFFER. MULTIPLE WRITE/READS  D88
*         ARE PERFORMED USING KNOWN DATA PATTERNS TO DETECT  SOLID  BIT  D88
*         FAILURES.  A  VARIETY OF DATA PATTERNS IS USED TO VERIFY THAT  D88PTR4
*         THE COUPLER BUFFER IS STABLE.  THIS MODULE ONLY INSURES  THAT  D88
*         THE PATH TO THE DRIVE THROUGH THE BUFFER IS OPERATIONAL.  THE  D88
*         885-1X DRIVE IS NOT ACCESSED IN THIS MODULE.
*IF DEF,LSFMD,7 
*         DL811 WILL TEST THAT THE NORMAL CHANNELS ARE CAPABLE OF READ- 
*         ING DATA FROM THE FMD CONTROLLER BUFFER. MULTIPLE WRITE/READS 
*         ARE PERFORMED USING KNOWN DATA PATTERNS TO DETECT  SOLID  BIT 
*         FAILURES.  A  VARIETY OF DATA PATTERNS IS USED TO VERIFY THAT 
*         THE COUPLER BUFFER IS STABLE.  THIS MODULE ONLY INSURES  THAT 
*         THE PATH TO THE DRIVE THROUGH THE BUFFER IS OPERATIONAL.  THE 
*         885-1X DRIVE IS NOT ACCESSED IN THIS MODULE.
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF  ACCESS  LEVEL  IS LESS THAN 3, ABORT EXECUTION OF THE  D88
*             MODULE.                                                    D88
*         2.  RESERVE CONTROLLER.                                        D88
*         3.  WRITE COUPLER BUFFER WITH A GIVEN PATTERN.
*         4.  READ THE COUPLER BUFFER AND COMPARE THE DATA TW0 TIMES.    D88
*         5.  THE ABOVE SEQUENCE IS EXECUTED WITH A  0000,  5252,  2525  D88
*             AND 20 RANDOM DATA PATTERNS.                               D88
*         6.  REPEAT MODULE LOOPS ON STEPS 1-5.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = RANDOM PATTERN COUNTER.                                  D88
*IF DEF,PFMD,1
*         B3  = RANDOM NUMBER SEED USED FOR FIRST RANDOM PATTERN. 
*         B4  = EXTERNAL LOOP COUNTER 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         IB,OB                                                          D88
*                                                                        D88
*         REMARKS -                                                      D88
*         IF RM IS SELECTED, 20D DIFFERENT RANDOM DATA PATTERNS ARE      D88
*         USED EACH PASS OF THE MODULE.                                  D88
*                                                                        D88
*IF DEF,PFMD,5
1  FORMAT DH811 - WRITE/READ COUPLER BUFFER 
2  FORMAT DH811 ERROR(S) = *DECD
4  FORMAT DH811 E0006 L*OC MISCOMPARE ON WRITECB/READCB 
5  FORMAT DH811 WRITECB/READCB LC=*DECD 
7  FORMAT DH811 EC=*DECD, LC=*DECD
*IF DEF,SFMD,5
1  FORMAT D8811 - WRITE/READ COUPLER BUFFER 
2  FORMAT D8811 ERROR(S) = *DECD                                         D88
4  FORMAT D8811 E0006 L*OC MISCOMPARE ON WRITECB/READCB 
5  FORMAT D8811 WRITECB/READCB LC=*DECD 
7  FORMAT D8811 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,5 
1  FORMAT DL811 - WRITE/READ COUPLER BUFFER 
2  FORMAT DL811 ERROR(S) = *DECD
4  FORMAT DL811 E0006 L*OC MISCOMPARE ON WRITECB/READCB 
5  FORMAT DL811 WRITECB/READCB LC=*DECD 
7  FORMAT DL811 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 11D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 7777B                    *CURRENT CYLINDER                       D88
   B4 = 0                        *SET EXTERNAL LOOP COUNTER 
   B11 = 0                       *CLEAR ERROR COUNTER                    D88
   WC = 502B                     *BUFFER WORD COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B2 = 0                        *ZERO RANDOM PATT COUNTER               D88
   DUP 0 TO OB FOR WC            *WRITE ZEROS INTO OB                    D88
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE             D88
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB               D88
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE             D88
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB               D88
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE             D88
*IF DEF,PFMD,4
   IF(B0.EQ.0) B3 = RT           *INITIALIZE SEED NUMBER
   RANDOM TO OB FOR WC,START B3  *WRITE RANDOM PATT IN OB 
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE
26 RANDOM TO OB FOR WC,START OB(2)  *WRITE RANDOM PATT IN OB
*IF DEF,SFMD,1
26 RANDOM TO OB FOR WC, START RT  *WRITE RANDOM PATT IN OB               D88
*IF DEF,LSFMD,1 
26 RANDOM TO OB FOR WC, START RT  *WRITE RANDOM PATT IN OB
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE             D88
*IF DEF,PFMD,1
   GOTO 26 WHILE(B2+1.LT.19D)    *REPEAT 19D TIMES
*IF DEF,SFMD,1
   GOTO 26 WHILE(B2+1.LT.20D)    *REPEAT 20D TIMES
*IF DEF,LSFMD,1 
   GOTO 26 WHILE(B2+1.LT.20D)    *REPEAT 20D TIMES                       D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------SUBROUTINE PROCESS.                                            D88
*                                                                        D88
30 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
   B8 = 40B                                                              D88
   RES CONTROLLER, ABT 74                                                D88
   IF(ES.AND.RM.EQ.0) MSG 5 (B4) TO DISPLAY  *IF NO RM
   B8 = 07B 
   WRITECB, ABT 74
32 B8 = 02B                                                              D88
   READCB, ABT 74                *READ COUPLER BUFFER                    D88
   B8 = 47B                                                              D88
   COMPARE IB TO OB FOR WC, ABT 70                                       D88
   GOTO 32 WHILE(B10+1.LT.2D)    *LOOP 2D TIMES 
   B4 = B4 + 1                   *INCR. EXT. LOOP COUNTER 
34 RETURN                                                                D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 00/01                                                           D88
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 4(EA) TO LINE 5           *DISPLAY ERROR MESSAGE                  D88
   CALL 98C                    *CALL MODULE ERROR PROCESSOR              D88
   WC = 502B                     *SET BUFFER WORD COUNT 
   GOTO 34 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 34 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH811 WRITE/READ COUPLER BUFFER 
*IF DEF,SFMD,1
COMPILE                      *D8811 WRITE/READ COUPLER BUFFER 
*IF DEF,LSFMD,1 
COMPILE                      *DL811 WRITE/READ COUPLER BUFFER 
*IF DEF,PFMD,4
   MODULE DH812,DEMA1(14),LOCK
***       DH812 - DRIVE BUS OUT TEST
**        DH812 - DRIVE BUS OUT TEST
*         DH812 - DRIVE BUS OUT TEST
*IF DEF,SFMD,4
   MODULE D8812,FMDHT(7),LOCK 
***       D8812 - DRIVE BUS OUT TEST
**        D8812 - DRIVE BUS OUT TEST
*         D8812 - DRIVE BUS OUT TEST
*IF DEF,LSFMD,4 
   MODULE DL812,LSFMD1(16),LOCK 
***       DL812 - DRIVE BUS OUT TEST
**        DL812 - DRIVE BUS OUT TEST
*         DL812 - DRIVE BUS OUT TEST
*         --------------------------
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,2
*         DH812 DETECTS FAILURES ON THE BUS OUT PATH TO AND  BUS IN PATH
*         FROM THE 885-4X DRIVE.
*IF DEF,SFMD,2
*         D8812 DETECTS FAILURES ON THE BUS OUT PATH TO AND  BUS IN PATH
*         FROM THE 885-1X DRIVE.
*IF DEF,LSFMD,2 
*         DL812 DETECTS FAILURES ON THE BUS OUT PATH TO AND  BUS IN PATH
*         FROM THE 885-1X DRIVE.
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF  ACCESS  LEVEL  IS  LESS  THAN  3,  EXIT  THE  MODULE, 
*             OTHERWISE RESERVE THE CONTROLLER AND DRIVE. 
*         2.  DROP AND RAISE SELECT LINE. 
*         3.  ISSUE COMMAND TO DRIVE (10H,00H,FFH,43H,43H). 
*         4.  READ CHANNEL STATUSES.
*         5.  CHECK BUS IN DATA FOR COMMAND ISSUED. 
*         6.  DO STEPS 1-5 TEN TIMES FOR EACH COMMAND.
*         7.  DO STEPS 1-6 FIVE TIMES.
*         8.  REPEAT MODULE LOOPS ON STEPS 1-7. 
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,2
*         DH897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*         DH897N - ERROR ISOLATION PROCESSOR. 
*IF DEF,SFMD,2
*         D8897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*         D8897K - ERROR ISOLATION PROCESSOR. 
*IF DEF,LSFMD,2 
*         DL897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*         DL897K - ERROR ISOLATION PROCESSOR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*IF DEF,PFMD
*         INITIAL REGISTER VALUES MAY CHANGE AS THEY ARE USED WHEN
*         CALLED BY SUB MODULES.
*ENDIF
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = DRIVE COMMAND 
*         B3  = SUBTEST COUNTER 
*         B4  = BUS OUT DATA
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR  D88
*               TO OMIT ADDRESS REPORTING.                               D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         B12 = EXPECTED BUS IN DATA
*         B13 = ACTUAL BUS IN DATA
*         B14 = DIFFERENCE IN BUS IN DATA 
* 
*IF DEF,PFMD,7
1  FORMAT DH812 - DRIVE BUS OUT TEST
2  FORMAT DH812 ERROR(S) = *OCTD
3  FORMAT DH812 E0022 L*OC CONTROLLER LOOP 885 BUS ACTIVE 
4  FORMAT DH812 E0023 L*OC CONTROLLER LOOP 885 DECODE ACTIVE
5  FORMAT DH812 E0024 L*OC BUS IN DATA ERROR
6  FORMAT DH812 E0025 L*OC BUS OUT P.E. OR ILLEGAL DECODE 
7  FORMAT DH812 EC=*DECD, LC=*DECD
*IF DEF,SFMD,7
1  FORMAT D8812-DRIVE BUS OUT TEST
2  FORMAT D8812 ERROR(S) = *OCTD
3  FORMAT D8812 E0022 L*OC CONTROLLER LOOP 885 BUS ACTIVE 
4  FORMAT D8812 E0023 L*OC CONTROLLER LOOP 885 DECODE ACTIVE
5  FORMAT D8812 E0024 L*OC BUS IN DATA ERROR
6  FORMAT D8812 E0025 L*OC BUS OUT P.E. OR ILLEGAL DECODE 
7  FORMAT D8812 EC=*DECD, LC=*DECD
*IF DEF,LSFMD,7 
1  FORMAT DL812-DRIVE BUS OUT TEST
2  FORMAT DL812 ERROR(S) = *OCTD
3  FORMAT DL812 E0022 L*OC CONTROLLER LOOP 885 BUS ACTIVE 
4  FORMAT DL812 E0023 L*OC CONTROLLER LOOP 885 DECODE ACTIVE
5  FORMAT DL812 E0024 L*OC BUS IN DATA ERROR
6  FORMAT DL812 E0025 L*OC BUS OUT P.E. OR ILLEGAL DECODE 
7  FORMAT DL812 EC=*DECD, LC=*DECD
10 FORMAT COMMAND=*HH  E=*OCB  A=*OCB  D=*OCB 
*IF DEF,PFMD,2
12 FORMAT DH8 ABORT ON .RES DRIVE. COMMAND
13 FORMAT  DH812  E5225 L*OC  ABNORMAL GENERAL STATUS 
*IF DEF,SFMD,2
12 FORMAT D88 ABORT ON .RES DRIVE. COMMAND
13 FORMAT  D8812  E5225 L*OC  ABNORMAL GENERAL STATUS 
*IF DEF,LSFMD,2 
12 FORMAT DL8 ABORT ON .RES DRIVE. COMMAND
13 FORMAT  DL812  E5225 L*OC  ABNORMAL GENERAL STATUS 
14 FORMAT LAST FUNCTION = 000B (CONNECT)
15 FORMAT WT=0000  RETRIES=00  MARGINS=00  ERRORS=*OCT
16 FORMAT                  WORD    DETAILED STATUS (OCTAL)
17 FORMAT                    1     *OCT *OCT *OCT *OCT *OCT 
20 FORMAT LAST GENERAL       6     *OCT *OCT *OCT *OCT *OCT 
21 FORMAT STATUS= 5020B     11D    *OCT *OCT *OCT *OCT *OCT 
22 FORMAT                   16D    *OCT *OCT *OCT *OCT *OCT 
*IF DEF,PFMD,1
23 FORMAT DH812 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,SFMD,1
23 FORMAT D8812 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,LSFMD,1 
23 FORMAT DL812 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------COMMANDS TO BE ISSUED TO THE 885 DRIVE. 
* 
   DATA (OB(0),H) 1000,FF43,4300
* 
/---------DATA FOR THE 885 DRIVE COMMANDS TO BE ISSUED. 
* 
   DATA (OB(10),H) FFFF,0000,FF00 
* 
/---------MODULE INITIALIZATION.
* 
30 IF(AL.GE.3) GOTO 31           *IF AL.GE.3-CONTINUE TEST
   MSG 23 TO DAYFILE,PRINT       *PRINT MESSAGE-AL TOO LOW
   EXIT 
31 B1 = 12D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 7777                     *INVALID CYLINDER NUMBER 
   B11 = 0                       *CLEAR ERROR COUNT 
* 
/---------RESERVE THE DRIVE AND DROP/RAISE SELECT LINE. 
* 
32 B3 = 0                        *INITIALIZE SUBTEST NUMBER 
34 B10 = 0                       *INITIALIZE INT. LOOP COUNT
36 IF(ES.AND.RM.EQ.0)MSG 1 TO DISPLAY  *IF NOT REPEAT MODULE
   IF(ES.AND.RM.NE.0)MSG 7(B11,B0)TO DISPLAY  *REPEAT MODULE
   B2 = OB(B3)                   *885 DRIVE COMMAND 
   B4 = OB(B3+10)                *885 BUS OUT DATA
   B8 = 41                       *RESERVE DRIVE FLAG
   RES,DRIVE,FAULT,ABT 74        *RESERVE THE DRIVE 
   IF(SB(11)AND.200.EQ.0)ERROR 1/0 GOTO 70  *DRIVE NOT READY
   B8 = 50                       *OUT FLAG
   OUT CH=1,0,0,ABT 74           *DROP DRIVE SELECT LINE
   IF(B3.LE.2)OUT CH=1,10,100,ABT 74  *IF SUBTESTS 0-2
   IF(B3.GT.2)OUT CH=1,0,100,ABT 74   *IF SUBTESTS 3 OR 4 
* 
/---------ISSUED THE COMMANDS TO THE 885 DRIVE. 
* 
   OUT CH=8,B4,B2,ABT 74         *ISSUE COMMAND TO DRIVE
   B8 = 6                        *STATUS CHANNEL FLAG 
   STATUS CHANNEL,ABT 74         *READ CHANNEL STATUSES 
   B13 = SB(22)                  *BUS IN DATA 
* 
/---------CHECK THE BUS IN DATA FOR THE COMMAND ISSUED. 
* 
   IF(B3.GE.3) GOTO 40           *IF 43 COMMAND ISSUED
   B12 = B2                      *EXPECTED BUS IN DATA
   B14 = 3                       *LOOP BUS MESSAGE
   IF(B13.EQ.B4) GOTO 44         *IF LOOP 885 BUS ACTIVE
   IF(SB(21)AND.10.NE.0)GOTO 42  *IF LOOP 885 DECODE ACTIVE 
   GOTO 46                       *CHECK BUS IN DATA 
40 B12 = B4                      *EXPECTED BUS IN DATA
   B14 = 6                       *COMMAND ERROR MESSAGE 
   IF(SB(21)AND.10.EQ.0) GOTO 50  *IF COMMAND ERROR 
   IF(B13.NE.B2) GOTO 46         *IF NOT LOOP 885 DECODE
42 B14 = 4                       *LOOP DECODE MESSAGE 
*IF DEF,PFMD,1
44 ERROR 02/00                   *LOOP BUS/DECODE ERROR 
*IF DEF,SFMD,1
44 ERROR 00/00                   *LOOP BUS/DECODE ERROR 
*IF DEF,LSFMD,1 
44 ERROR 00/00                   *LOOP BUS/DECODE ERROR 
   GOTO 52                       *GO TO REPORT THE ERROR
46 IF(B13.EQ.B12) GOTO 54        *IF BUS IN DATA CORRECT
   B14 = 5                       *BUS IN ERROR MESSAGE
50 ERROR 03/00                   *BUS DATA ERROR
   B15 = B12.XOR.B13
   MSG 10(B2,B12,B13,B15) TO LINE 10  *INFORMATIVE MESSAGE
52 B8 = 0                        *SET NULL COMMAND
   MSG B14 (EA) TO LINE 5        *POST ERROR MESSAGE
   GOTO 74                       *GO TO REPORT THE ERROR
54 GOTO 36 WHILE (B10+1.LE.10D)  *LOOP 10D TIMES
   GOTO 34 WHILE (B3+1.NE.5)     *DO FIVE COMMANDS
* 
/---------MODULE REPEAT/EXIT. 
* 
60 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE
   IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *ERRORS TO PRINT,DAYFILE 
   EXIT 
* 
/---------PROCESS READY AND SAFE ERROR. 
* 
70 MSG 1 TO LINE 1               *MODULE TITLE
   MSG 12 TO LINE 4              *ABORT MESSAGE 
   MSG 13 (EA) TO LINE 5         *ERROR MESSAGE 
   MSG 14 TO LINE 6              *LAST FUNCTION MESSAGE 
   B13 = B11+1
   MSG 15 (B13) TO LINE 7        *ERROR COUNT MESSAGE 
   MSG 16 TO LINE 11             *DETAILED STATUS MESSAGE 
   MSG 17 5 WORDS FROM SB(1) TO LINE 12   *WORDS 1-6
   MSG 20 5 WORDS FROM SB(6) TO LINE 13   *WORDS 6-10 
   MSG 21 5 WORDS FROM SB(13) TO LINE 14  *WORDS 11-15
   MSG 22 5 WORDS FROM SB(20) TO LINE 15  *WORDS 16-21
   B12 = 17                      *DISPLAY LINE NUMBER 
   B13=0                         *SET STATUS BUFFER POINTER 
*IF DEF,PFMD,1
   CALL 97N                      *GO TO ISOLATE THE ERROR 
*IF DEF,SFMD,1
   CALL 97K                      *GO TO ISOLATE THE ERROR 
*IF DEF,LSFMD,1 
   CALL 97K                      *GO TO ISOLATE THE ERROR 
   GOTO 75
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR
75 GOTO 54 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 54    *IF REPEAT MODULE
   GOTO 60                       *ELSE EXIT 
   END 30                        *END OF THE MODULE 
*IF DEF,PFMD,1
COMPILE                          *DH812 DRIVE BUS OUT TEST
*IF DEF,SFMD,1
COMPILE                          *D8812 DRIVE BUS OUT TEST
*IF DEF,LSFMD,1 
COMPILE                      *DL812 DRIVE BUS OUT TEST
*IF DEF,PFMD,4
   MODULE DH813,DEMA1(14),LOCK
***       DH813 - SEEK TIME MEASUREMENT TEST
**        DH813 - SEEK TIME MEASUREMENT TEST
*         DH813 - SEEK TIME MEASUREMENT TEST
*IF DEF,SFMD,4
   MODULE D8813,FMDHT(7),LOCK                                            D88
***       D8813 - SEEK TIME MEASUREMENT TEST                             D88
**        D8813 - SEEK TIME MEASUREMENT TEST                             D88
*         D8813 - SEEK TIME MEASUREMENT TEST                             D88
*IF DEF,LSFMD,4 
   MODULE DL813,LSFMD1(16),LOCK 
***       DL813 - SEEK TIME MEASUREMENT TEST
**        DL813 - SEEK TIME MEASUREMENT TEST
*         DL813 - SEEK TIME MEASUREMENT TEST
*         ----------------------------------                             D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH813 WILL MEASURE THE 885-4X SEEK  TIME BY TIMING THE 885-4X 
*IF DEF,SFMD,1
*         D8813 WILL MEASURE THE 885-1X SEEK  TIME BY TIMING THE 885-1X 
*IF DEF,LSFMD,1 
*         DL813 WILL MEASURE THE 885-1X SEEK  TIME BY TIMING THE 885-1X 
*         SERVO USING A CONTROLWARE FUNCTION. 
*                                                                        D88
*         METHOD -                                                       D88
*         1.  RESERVE CONTROLLER.                                        D88
*         2.  ISSUE A SEEK TO CYLINDER ZERO.                             D88
*         3.  ISSUE A COMMAND TO EXECUTE THE CONTROLWARE FUNCTION WHICH  D88
*IF DEF,PFMD,1
*             WILL MEASURE THE 885-4X SEEK TIME.
*IF DEF,SFMD,1
*             WILL MEASURE THE 885-1X SEEK TIME.
*IF DEF,LSFMD,1 
*             WILL MEASURE THE 885-1X SEEK TIME.
*         4.  SAVE THE SEEK TIME RESULT.                                 D88
*         5.  REPEAT  ABOVE SEQUENCE 20 TIMES ADDING EACH NEW SEEK TIME  D88
*             TO A TOTAL SEEK TIME.                                      D88
*         6.  AVERAGE  THE  SEEK  TIMES  AND  DISPLAY,  ALSO DISPLAY IN  D88
*             DAYFILE AND PRINT FILE.                                    D88
*         7.  REPORT ERROR IF TIME EXCEEDS 335 +/- 10 USEC. 
*         8.  REPEAT MODULE LOOPS ON STEPS 1-7.                          D88
*         9.  TO DETERMINE THE ID SWITCHS OF THE CONTROLLER AND DRIVE 
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,2
*         DH897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*         DH897D - ERROR PROCESSOR FOR MODULE ERROR.
*IF DEF,SFMD,2
*         D8897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*         D8897D - ERROR PROCESSOR FOR MODULE ERROR.
*IF DEF,LSFMD,2 
*         DL897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*         DL897D - ERROR PROCESSOR FOR MODULE ERROR.
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = CARRY BIT IN SUMMING THE SEEK TIMES/                     D88
*               UPPER 12 BITS OF THE SEEK TIME/                          D88
*               AVERAGE SEEK TIME.                                       D88
*         B3  = LOWER 12 BITS OF THE SEEK TIME.                          D88
*         B4  = UPPER 12 BITS IN SUMMING THE SEEK TIMES.                 D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         B12 = LOWER 12 BITS IN SUMMING THE SEEK TIMES.                 D88
*                                                                        D88
*IF DEF,PFMD,7
1  FORMAT DH813 - SEEK TIME MEASUREMENT 
2  FORMAT DH813 ERROR(S) = *DECD
3  FORMAT DH813 SEEK TIMING ERROR 
4  FORMAT DH813 E0007 L*OC E=325-345D USEC   A=*DECD USEC 
5  FORMAT DH813 - SEEK TIME LC=*DECD
6  FORMAT DH813 SEEK TIME=*OCTB USEC
7  FORMAT DH813 EC=*DECD, LC=*DECD
*IF DEF,SFMD,7
1  FORMAT D8813-SEEK TIME MEASUREMENT                                    D88
2  FORMAT D8813 ERROR(S) = *DECD                                         D88
3  FORMAT D8813 SEEK TIMING ERROR                                        D88
4  FORMAT D8813 E0007 L*OC E=325-345D USEC   A=*DECD USEC 
5  FORMAT D8813 - SEEK TIME LC=*DECD                                     D88
6  FORMAT D8813 SEEK TIME=*OCTB USEC                                     D88
7  FORMAT D8813 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,7 
1  FORMAT DL813-SEEK TIME MEASUREMENT 
2  FORMAT DL813 ERROR(S) = *DECD
3  FORMAT DL813 SEEK TIMING ERROR 
4  FORMAT DL813 E0007 L*OC E=325-345D USEC   A=*DECD USEC 
5  FORMAT DL813 - SEEK TIME LC=*DECD
6  FORMAT DL813 SEEK TIME=*OCTB USEC
7  FORMAT DL813 EC=*DECD, LC=*DECD
10 FORMAT ID-SWITCH - CONTROLLER = *H HEX, DRIVE = *H HEX 
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 13D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 7777                     *INVALID CYLINDER ADDR.                 D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
26 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK                          D88
   B7 = 0                        *CURRENT CYLINDER                       D88
   B8 = 44B                                                              D88
   SEEK CYL B7 TRK B6 SEC B5, ABT 74  *SEEK CYLINDER 0                   D88
   B8 = 45B 
   FMDPT,B2,B3, ABT 74           *ISSUE SEEK TIME FUNCTION               D88
   IF(ES.AND.RM.EQ.0) MSG 5(B10) TO DISPLAY  *IF NO RM                   D88
   DELAY 100 MSEC                *WAIT FOR SEEK TO COMPLETE              D88
   B2 = B3+B12.RS.14             *B2 HOLDS CARRY BIT                     D88
   B4 = B4+B2                    *ADD CARRY+UPPER BITS                   D88
   B12 = B12+B3                  *ADD LOWER BITS                         D88
30 GOTO 26 WHILE(B10+1.LT.20D)   *LOOP 20D TIMES                         D88
*                                                                        D88
/---------CALCULATE AVERAGE SEEK TIME.                                   D88
*                                                                        D88
32 IF(B12-B10.LT.0) GOTO 34      *IF B12 LESS THAN 20D                   D88
   B12 = B12-B10                 *SUBTRACT B10 FROM B12                  D88
   B2 = B2+1                     *INCREMENT ORIGINAL TIME                D88
   GOTO 32                       *LOOP                                   D88
34 IF(B4.EQ.0) GOTO 36           *IF AVERAGING COMPLETED                 D88
   B4 = B4-1                     *SUBTR 1 FROM UPPER COUNT               D88
   B12 = B12-B10                 *SUBTRACT B10 FROM B12                  D88
   B12 = B12+1                   *INCREMENT B12                          D88
   B2 = B2+1                     *INCREMENT ORIGINAL TIME                D88
   GOTO 32                       *LOOP                                   D88
36 MSG 6(B2) TO DISPLAY,PRINT    *DISPLAY/PRINT SEEK TIME                D88
   DELAY 100 MSEC                                                        D88
   IF(B2.LE.345D) GOTO 37        *IF SEEK TIME .LE. 345D USEC.
   ERROR 01/00, GOTO 70          *SEEK TIME TOO HIGH - ERROR             D88
37 IF(B2.GE.325D) GOTO 50        *IF SEEK TIME .GE. 325D USEC.
   ERROR 01/00, GOTO 70          *SEEK TIME TOO LOW - ERROR              D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) GOTO 53          *IF NO ERRORS, 
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
53 B10=SB(24).AND.377            *MASK FOR CONTROLLER ID-SWITCH 
   B11=SB(7).AND.3.LS.6          *MASK/JUSTIFY UPPER 3-BITS DRIVE ID
   B11=SB(10).RS.6+B11           *CALCULATE 8-BIT DRIVE ID-SWITCH 
   MSG 10 (B10,B11) TO DISPLAY, PRINT, DAYFILE
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 3 TO LINE 4                                                       D88
   MSG 4 (EA,B2) TO LINE 5       *DISPLAY ERROR MESSAGE                  D88
   CALL 97D                    *CALL MODULE ERROR PROCESSOR              D88
   B11 = B11+1                   *INCREMENT ERROR COUNT                  D88
   GOTO 50                       *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 30 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 30    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH813 MEASURE SEEK TIME 
*IF DEF,SFMD,1
COMPILE                      *D8813 MEASURE SEEK TIME                    D88
*IF DEF,LSFMD,1 
COMPILE                      *DL813 MEASURE SEEK TIME 
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH814,DEMA3(14),LOCK
***       DH814 - ESM SYSWR/SYSRD TEST
**        DH814 - ESM SYSWR/SYSRD TEST
*         DH814 - ESM SYSWR/SYSRD TEST
*         ----------------------------
* 
*         PURPOSE-
*         DH814 WILL VERIFY THAT DATA MAY BE TRANSMITTED BETWEEN THE PP 
*         AND ESM BY  USE OF THE SYSWR AND SYSRD COMMANDS.  THIS MODULE 
*         DOES NOT PERFORM I/O TO THE DEMA CONTROLLER.
* 
*         METHOD- 
*         1.  SYSWR A 2525 PATTERN TO ESM 
*         2.  SYSRD AND COMPARE THE DATA
*         3.  SYSWR A 5252 PATTERN TO ESM 
*         4.  SYSRD AND COMPARE THE DATA
*         5.  GENERATE RANDOM DATA WITH RT AS SEED
*         6.  SYSWR/SYSRD AND COMPARE DATA
*         7.  IF RM SET USE B3-B4 AS SEED FOR RANDOM DATA 
*         8.  LOOP ON EACH DATA PATTERN 10D TIMES 
/ 
*         ENTRY-
*         AN ESM SUBSYSTEM IS REQUIRED. 
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = SUBTEST INDEX FOR FIRST SUBTEST.
*         B3  = RANDOM PATTERN SEED USED FOR FIRST RANDOM PATTERN.
*         B4  = RANDOM PATTERN SEED USED FOR SECOND RANDOM PATTERN. 
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         B12 = SYSRD STATUS
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED -
*         IB, OB. 
* 
*         REMARKS - 
* 
1  FORMAT DH814 - ESM SYSWR/SYSRD TEST
2  FORMAT DH814 ERROR(S) = *DECD
4  FORMAT DH814 E0026 L*OC MISCOMPARE ON MULTIPLE SYSRD 
5  FORMAT DH814 E0027 L*OC MISCOMPARE ON SYSWR/SYSRD
6  FORMAT DH814 ESM SYSWR/RD LC=*DECD 
7  FORMAT DH814 EC=*DECD, LC=*DECD
10 FORMAT DH814 E0032 L*OC ESM TRANSFER ERROR (STATUS=*O) 
* 
/---------MODULE INITIALIZATION 
* 
20 B1 = 14D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 7777                     *INVALID CYLINDER ADDRESS
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B2 = 0                        *SUBTEST 0 
   GOSUB 40                      *PERFORM SYSWR/SYSRD 
   B2 = 1                        *SUBTEST 1 
   DUP 2525 TO OB FOR WC         *WRITE 2525 IN OB
   GOSUB 42 
   DUP 5252 TO OB FOR WC         *WRITE 5252 IN OB
   GOSUB 42 
   IF(B0.EQ.0) GOTO 26           *IF RM, USE SEEDS B3/B4
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOSUB 42 
   RANDOM TO OB FOR WC, START B4  *USE B4 SEED FOR RM 
   GOSUB 42 
   GOTO 50
26 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
   GOSUB 42 
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 2
   B4 = OB(0) 
   GOSUB 42 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------SYSWR/SYSRD SUBROUTINE PROCESS. 
* 
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   SYSREW ESM                    *INITIALIZE ESM ADRS 
   B8 = 17B 
   SYSRD ESM, STATUS TO B12      *READ FROM ESM 
   IF (B12.NE.0) ERROR 05/00, GOTO 72 
   COPY IB TO OB FOR WC          *SAVE ESM BUFFER 
   GOTO 44
42 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) MSG 6 (B10) TO DISPLAY  *IF RM NOT SET
   SYSREW ESM                    *INITIALIZE ESM ADRS 
   SYSWR ESM                     *WRITE TO ESM
44 IF(ES.AND.RM.EQ.0) MSG 6 (B10) TO DISPLAY  *IF RM NOT SET
   SYSREW ESM                    *INITIALIZE ESM ADRS 
   B8 = 17B 
   SYSRD ESM, STATUS TO B12      *READ FROM ESM 
   IF (B12.NE.0) ERROR 05/00, GOTO 72 
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 44 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
46 RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 05/01
   IF(B2.EQ.0) MSG 4(EA) TO LINE 5  *IF INDEX NOT SET 
   IF(B2.EQ.1) MSG 5(EA) TO LINE 5  *IF SUBTEST INDEX SET 
   GOTO 74
72 MSG 10 (EA,B12) TO LINE 5     *ESM TRANSFER ERROR
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   WC = 500B                     *BUFFER WORD COUNT 
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                      *DH814 ESM SYSWR/SYSRD TEST
*ENDIF
*IF DEF,PFMD,4
   MODULE DH815,DEMA2(14),LOCK
***       DH815 - READ FLAW MAPS TEST 
**        DH815 - READ FLAW MAPS TEST 
*         DH815 - READ FLAW MAPS TEST 
*IF DEF,SFMD,4
   MODULE D8815,FMDFT(7),LOCK                                            D88
***       D8815 - READ FLAW MAPS TEST                                    D88
**        D8815 - READ FLAW MAPS TEST                                    D88
*         D8815 - READ FLAW MAPS TEST                                    D88
*IF DEF,LSFMD,4 
   MODULE DL815,LSFMD2(16),LOCK 
***       DL815 - READ FLAW MAPS TEST 
**        DL815 - READ FLAW MAPS TEST 
*         DL815 - READ FLAW MAPS TEST 
*         ---------------------------                                    D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH815 DETERMINES IF THE SERIAL NUMBER, THE  FACTORY  FLAW MAP 
*IF DEF,SFMD,1
*         D8815 DETERMINES IF THE SERIAL NUMBER, THE  FACTORY  FLAW MAP  D88PTR4
*IF DEF,LSFMD,1 
*         DL815 DETERMINES IF THE SERIAL NUMBER, THE  FACTORY  FLAW MAP 
*         AND UTILITY FLAW MAP CAN BE READ OFF THE PRE-RECORDED SECTORS  D88
*         OF A FACTORY FORMATTED PACK.  SOLID BIT FAILURES  MAY NOT  BE 
*         DETECTED  SINCE  THIS  DATA  IS NOT KNOWN.  THIS IS THE FIRST  D88
*IF DEF,PFMD,1
*         TIME DATA HAS BEEN READ FROM THE 885-4X DRIVE TO THE PPU. 
*IF DEF,SFMD,1
*         TIME DATA HAS BEEN READ FROM THE 885-1X DRIVE TO THE PPU. 
*IF DEF,LSFMD,1 
*         TIME DATA HAS BEEN READ FROM THE 885-1X DRIVE TO THE PPU. 
*                                                                        D88
*         METHOD -                                                       D88
*         1.  RESERVE CONTROLLER AND DRIVE.                              D88
*         2.  READ DISK SERIAL NUMBER SECTOR AND  SAVE  IN  THE  OUTPUT  D88
*             BUFFER.                                                    D88
*         3.  READ THE SERIAL NUMBER SECTOR 2 TIMES COMPARING DATA READ  D88
*             WITH DATA SAVED.                                           D88
*         4.  RESERVE CONTROLLER AND DRIVE. 
*         5.  READ  DISK  FACTORY  FLAW  SECTOR  AND SAVE IN THE OUTPUT 
*             BUFFER.                                                    D88
*         6.  READ  THE FACTORY FLAW SECTOR 2 TIMES COMPARING DATA READ 
*             WITH DATA SAVED.                                           D88
*         7.  RESERVE CONTROLLER AND DRIVE. 
*         8.  READ DISK UTILITY FLAW SECTOR  AND  SAVE  IN  THE  OUTPUT 
*             BUFFER.                                                    D88
*         9.  READ THE UTILITY FLAW SECTOR 2 TIMES COMPARING DATA  READ 
*             WITH DATA SAVED.                                           D88
*         10. REPEAT MODULE LOOPS ON STEPS 1-9. 
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = SUBTEST INDEX                                            D88
*         B5  = CURRENT SECTOR ADDRESS.                                  D88
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR  D88
*               TO OMIT ADDRESS REPORTING.                               D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT                                        D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         IB,OB                                                          D88
*                                                                        D88
*         REMARKS-                                                       D88
*         ONLY NORMAL READ MARGINS ARE SET IN THIS MODULE TO CONSERVE    D88
*         ON TIME.                                                       D88
*                                                                        D88
*IF DEF,PFMD,9
1  FORMAT DH815 - READ FLAW MAPS
2  FORMAT DH815 ERROR(S) = *DECD
4  FORMAT DH815 E0008 L*OC MISCOMPARE ON GET SERIAL TEST
5  FORMAT DH815 E0009 L*OC MISCOMPARE ON GET FACTORY TEST 
6  FORMAT DH815 E0010 L*OC MISCOMPARE ON GET UTILITY TEST 
7  FORMAT DH815 EC=*DECD, LC=*DECD
10 FORMAT DH815 SERIAL NO.
11 FORMAT DH815 FACTORY SECTOR=*OCTB
12 FORMAT DH815 UTILITY SECTOR=*OCTB
*IF DEF,SFMD,9
1  FORMAT D8815 - READ FLAW MAPS                                         D88
2  FORMAT D8815 ERROR(S) = *DECD                                         D88
4  FORMAT D8815 E0008 L*OC MISCOMPARE ON GET SERIAL TEST                 D88
5  FORMAT D8815 E0009 L*OC MISCOMPARE ON GET FACTORY TEST                D88
6  FORMAT D8815 E0010 L*OC MISCOMPARE ON GET UTILITY TEST                D88
7  FORMAT D8815 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8815 SERIAL NO.                                               D88
11 FORMAT D8815 FACTORY SECTOR=*OCTB                                     D88
12 FORMAT D8815 UTILITY SECTOR=*OCTB                                     D88
*IF DEF,LSFMD,9 
1  FORMAT DL815 - READ FLAW MAPS
2  FORMAT DL815 ERROR(S) = *DECD
4  FORMAT DL815 E0008 L*OC MISCOMPARE ON GET SERIAL TEST
5  FORMAT DL815 E0009 L*OC MISCOMPARE ON GET FACTORY TEST 
6  FORMAT DL815 E0010 L*OC MISCOMPARE ON GET UTILITY TEST 
7  FORMAT DL815 EC=*DECD, LC=*DECD
10 FORMAT DL815 SERIAL NO.
11 FORMAT DL815 FACTORY SECTOR=*OCTB
12 FORMAT DL815 UTILITY SECTOR=*OCTB
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 15D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 1511                     *INVALID CYLINDER ADDRESS               D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------GET SERIAL NUMBER.                                             D88
*                                                                        D88
22 B9 = 0                        *SET FIRST READ MARGIN                  D88
   B4 = 0                        *INITIALIZE LOOP COUNT 
24 B2 = 1                        *SET SUBTEST INDEX                      D88
   WC = 502B                     *SET BUFFER WORD COUNT                  D88
   B6 = 1                        *TRACK NUMBER
   B5 = 0                        *SECTOR NUMBER                          D88
   B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B8 = 20B                                                              D88
   GET SERIAL, ABT 74            *READ SERIAL NUMBER                     D88
   COPY IB TO OB FOR WC          *SAVE SERIAL NUMBER                     D88
   B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
26 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B8 = 20B                                                              D88
   GET SERIAL, ABT 74            *READ SERIAL NUMBER                     D88
   IF(ES.AND.RM.EQ.0) MSG 10 TO DISPLAY  *IF NO RM                       D88
   B8 = 47B                                                              D88
   COMPARE IB TO OB FOR WC, ABT 70                                       D88
   GOTO 26 WHILE (B10.+.1.NE.2)  *LOOP TWO TIMES                         D88
27 GOTO 24 WHILE(B4+1.LT.2)      *IF REPEAT CONDITION SET 
*                                                                        D88
/---------GET FACTORY SECTOR.                                            D88
*                                                                        D88
30 B2 = 2                        *SET SUBTEST INDEX                      D88
   WC = 362B                     *SET BUFFER WORD COUNT                  D88
   B4 = 0                        *RE-INITIALIZE SECTOR COUNT             D88
   B6 = 0                        *TRACK NUMBER
32 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B8 = 21B                                                              D88
   B5 = B4+1                     *SECTOR NUMBER                          D88
   GET FACTORY SECTOR B5, ABT 74  *READ ONE FACTORY SECTOR               D88
   COPY IB TO OB FOR WC          *SAVE FACTORY SECTOR DATA               D88
   B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
34 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B8 = 21B                                                              D88
   GET FACTORY SECTOR B5, ABT 74  *READ ONE FACTORY SECTOR               D88
   IF(ES.AND.RM.EQ.0) MSG 11 (B5) TO DISPLAY  *IF NO RM                  D88
   B8 = 47B                                                              D88
   COMPARE IB TO OB FOR WC, ABT 70                                       D88
   GOTO 34 WHILE (B10.+.1.NE.2)  *LOOP TWO TIMES                         D88
36 GOTO 32 WHILE(B4+1.LT.36)     *INCREMENT SECTOR COUNT                 D88
*                                                                        D88
/---------GET UTILITY SECTOR.                                            D88
*                                                                        D88
40 B2 = 3                        *SET SUBTEST INDEX                      D88
   WC = 362B                     *SET BUFFER WORD COUNT                  D88
   B4 = 0                        *RE-INITIALIZE SECTOR COUNT             D88
   B6 = 1                        *TRACK NUMBER                           D88
42 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B8 = 22B                                                              D88
   B5 = B4+1                     *SECTOR NUMBER                          D88
   GET UTILITY SECTOR B5, ABT 74  *READ UTILITY SECTOR                   D88
   COPY IB TO OB FOR WC          *SAVE UTILITY SECTOR DATA               D88
   B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
44 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B8 = 22B                                                              D88
   GET UTILITY SECTOR B5, ABT 74  *READ UTILITY SECTOR                   D88
   IF(ES.AND.RM.EQ.0) MSG 12 (B5) TO DISPLAY  *IF NO RM                  D88
   B8 = 47B                                                              D88
   COMPARE IB TO OB FOR WC, ABT 70                                       D88
   GOTO 44 WHILE (B10.+.1.NE.2)  *LOOP TWO TIMES                         D88
46 GOTO 42 WHILE(B4+1.LT.36)     *INCR. SECTOR COUNT, REPEAT             D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7 (B11,B0) TO DISPLAY     *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 22                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 02/01                                                           D88
   MSG 1 TO LINE 1                                                       D88
   IF(B2.EQ.1) MSG 4(EA) TO LINE 5  *IF SERIAL COMPARE ERR               D88
   IF(B2.EQ.2) MSG 5(EA) TO LINE 5  *IF FACTORY COMPARE ERR              D88
   IF(B2.EQ.3) MSG 6(EA) TO LINE 5  *IF UTILITY COMPARE ERR              D88
   CALL 98C                  *CALL MODULE ERROR PROCESSOR                D88
   IF (B2.EQ.1) WC = 502B        *SET BUFFER WORD COUNT 
   IF (B2.NE.1) WC = 362B        *SET BUFFER WORD COUNT 
   GOTO 75
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
75 GOTO 76 WHILE(B11+1.LE.2)     *IF NOT 3 ERRORS 
   IF(ES.AND.RM.EQ.0) GOTO 50    *IF NOT REPEAT MODULE
76 IF(B2.EQ.1) GOTO 27           *IF SERIAL TEST
   IF(B2.EQ.2) GOTO 36           *IF FACTORY TEST 
   IF(B2.EQ.3) GOTO 46           *IF UTILITY TEST 
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH815 READ FLAW MAPS
*IF DEF,SFMD,1
COMPILE                      *D8815 READ FLAW MAPS                       D88
*IF DEF,LSFMD,1 
COMPILE                      *DL815 READ FLAW MAPS
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH816,DEMA3(14),LOCK
***       DH816 - ESM DIAGWR/DIAGRD TEST
**        DH816 - ESM DIAGWR/DIAGRD TEST
*         DH816 - ESM DIAGWR/DIAGRD TEST
*         ------------------------------
* 
*         PURPOSE - 
*         DH816 WILL  VERIFY THAT DATA  MAY BE TRANSMITTED  BETWEEN THE 
*         PPU AND ESM  OVER  THE  DEMA PATH BY USE  OF THE  DIAGWR  AND 
*         DIAGRD COMMANDS.
* 
*         METHOD -
*         1.  RES. CONTROLLER.
*         2.  DIAGWR A 2525 PATTERN TO ESM. 
*         3.  DIAGRD AND COMPARE THE DATA.
*         4.  DIAGWR A 5252 PATTERN TO ESM. 
*         5.  DIAGRD AND COMPARE THE DATA.
*         6.  GENERATE RANDOM DATA WITH RT AS SEED. 
*         7.  DIAGWR/DIAGRD AND COMPARE DATA. 
*         8.  IF RM SET USE B3-B4 AS SEED FOR RANDOM DATA.
*          9.  LOOP ON EACH READ 4D TIMES.
/ 
*         ENTRY - 
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND
*         OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = SUBTEST INDEX FOR FIRST SUBTEST.
*         B3  = RANDOM PATTERN SEED USED FOR FIRST RANDOM PATTERN.
*         B4  = RANDOM PATTERN SEED USED FOR SECOND RANDOM PATTERN. 
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR 
*               TO OMIT ADDRESS REPORTING.
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED -
*         IB, OB. 
* 
*         REMARKS - 
* 
* 
1  FORMAT DH816 - ESM DIAGWR/RD TEST
2  FORMAT DH816 ERROR(S) = *DECD
4  FORMAT DH816 E0028 L*OC MISCOMPARE ON MULTIPLE DIAGRD
5  FORMAT DH816 E0029 L*OC MISCOMPARE ON DIAGWR/DIAGRD
6  FORMAT DH816 ESM DIAGWR/RD LC=*DECD
7  FORMAT DH816 EC=*DECD, LC=*DECD
* 
/---------MODULE INITIALIZATION.
* 
20 B1 = 16D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 7777                     *INVALID CYLINDER ADDRESS
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B2 = 0                        *SUBTEST 0 
   GOSUB 40                      *PERFORM DIAGNOSTIC R/W
   B2 = 1                        *SUBTEST 1 
   DUP 2525 TO OB FOR WC         *WRITE 2525 IN OB
   GOSUB 42 
   DUP 5252 TO OB FOR WC         *WRITE 5252 IN OB
   GOSUB 42 
   IF(B0.EQ.0) GOTO 26           *IF RM, USE SEEDS B3/B4
   RANDOM TO OB FOR WC, START B3  *USE B3 SEED FOR RM 
   GOSUB 42 
   RANDOM TO OB FOR WC, START B4  *USE B4 SEED FOR RM 
   GOSUB 42 
   GOTO 50
26 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
   GOSUB 42 
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 2
   B4 = OB(0) 
   GOSUB 42 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------DIAGWR/DIAGRD SUBROUTINE PROCESS. 
* 
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   B8 = 40B 
   RES CONTROLLER, ABT 74 
   B8 = 15B                      *DIAGNOSTIC READ FROM ESM
   DIAGRD FROM ESM, ABT 74
   B8 = 01B 
   DIAGRD, ABT 74                *DIAGRD CONTROLLER BUFFER
   COPY IB TO OB FOR WC          *SAVE ESM BUFFER 
   GOTO 44
42 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   B8 = 40B 
   RES CONTROLLER, ABT 74 
   IF(ES.AND.RM.EQ.0) MSG 6 (B10) TO DISPLAY  *IF RM NOT SET
   B8 = 10B 
   DIAGWR, ABT 74                *DIAGNOSTIC WRITE
   B8 = 7B                       *DIAGNOSTIC WRITE TO ESM 
   DIAGWR TO ESM, ABT 74
44 IF(ES.AND.RM.EQ.0) MSG 6 (B10) TO DISPLAY  *IF RM NOT SET
   B8 = 15B                      *DIAGNOSTIC READ FROM ESM
   DIAGRD FROM ESM, ABT 74
   B8 = 01B 
   DIAGRD, ABT 74                *DIAGNOSTIC READ 
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 44 WHILE(B10+1.LT.4)   *LOOP 4 TIMES
46 RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 04/01
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   IF(B2.EQ.0) MSG 4(EA) TO LINE 5  *IF INDEX NOT SET 
   IF(B2.EQ.1) MSG 5(EA) TO LINE 5  *IF SUBTEST INDEX SET 
   CALL 96C                     *CALL MODULE ERROR PROCESSOR
   WC = 500B                     *BUFFER WORD COUNT 
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   WC = 500B                     *BUFFER WORD COUNT 
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 46    *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                      *DH816 ESM DIAGWR/DIAGRD TEST
*ENDIF
*IF DEF,PFMD,5
   MODULE DH817,DEMA2(14),LOCK
***       DH817 - READ PREWRITTEN SECTORS TEST (2/1)
**        DH817 - READ PREWRITTEN SECTORS TEST (2/1)
*         DH817 - READ PREWRITTEN SECTORS TEST (2/1)
*         ------------------------------------------
*IF DEF,SFMD,5
   MODULE D8817,FMDFT(7),LOCK                                            D88
***       D8817 - READ PREWRITTEN SECTORS TEST                           D88
**        D8817 - READ PREWRITTEN SECTORS TEST                           D88
*         D8817 - READ PREWRITTEN SECTORS TEST                           D88
*         ------------------------------------                           D88
*IF DEF,LSFMD,5 
   MODULE DL817,LSFMD2(16),LOCK 
***       DL817 - READ PREWRITTEN SECTORS TEST
**        DL817 - READ PREWRITTEN SECTORS TEST
*         DL817 - READ PREWRITTEN SECTORS TEST
*         ------------------------------------
*                                                                        D88
*         PURPOSE-                                                       D88
*         THE PREWRITTEN SECTORS OF THE  FACTORY  CYLINDER  WERE  ORIG-  D88
*         INALLY  WRITTEN  WITH A WORST CASE PATTERN BY THE FMU UTILITY  D88
*IF DEF,PFMD,1
*         AT INSTALLATION TIME.   DH817 IS USED TO VERIFY THAT THE HEAD 
*IF DEF,SFMD,1
*         AT INSTALLATION TIME.   D8817 IS USED TO VERIFY THAT THE HEAD  D88PTR4
*IF DEF,LSFMD,1 
*         AT INSTALLATION TIME.   DL817 IS USED TO VERIFY THAT THE HEAD 
*         POSITIONING IS THE SAME AS WHEN THESE SECTORS WERE WRITTEN BY  D88
*         THE FMU UTILITY.  ALSO BY PERFORMING A READ ON A  KNOWN  DATA  D88
*         PATTERN, FAILING READ LOGIC CAN BE ISOLATED.                   D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  RESERVE DRIVE AND CONTROLLER.                              D88
*         2.  SEEK TO THE PREALLOCATED CYLINDER(1511B), TRACK 3.
*IF DEF,PFMD,1
*         3.  READ PRE-RECORDED CODED SECTORS(36-37)IN 2/1 TRACK  MODE, 
*IF DEF,SFMD,1
*         3.  READ PRE-RECORDED CODED SECTORS(36-37)IN 1/1 TRACK  MODE,  D88
*IF DEF,LSFMD,1 
*         3.  READ PRE-RECORDED CODED SECTORS(36-37)IN 1/1 TRACK  MODE, 
*             ONE SECTOR AT A TIME COMPARING DATA.                       D88
*IF DEF,PFMD,1
*         4.  INCREMENT TRACK COUNT REPEATING STEPS 2-4 UNTIL TRACK  9D 
*IF DEF,SFMD,1
*         4.  INCREMENT TRACK COUNT REPEATING STEPS 2-4 UNTIL TRACK 25B 
*IF DEF,LSFMD,1 
*         4.  INCREMENT TRACK COUNT REPEATING STEPS 2-4 UNTIL TRACK 25B  D88
*             HAS BEEN READ.                                             D88
*         5.  CHANGE THE READ MARGIN  AND  REPEAT  THE  ABOVE  SEQUENCE  D88
*             UNTIL ALL 9 READ MARGIN VARIATIONS ARE USED.               D88
*             CHANNEL IS RELEASED BETWEEN EACH TRACK.                    D88
*         6.  REPEAT MODULE LOOPS ON STEPS 1-5.                          D88PTR4
*                                                                        D88
*IF DEF,PFMD,3
*             TRACKS 0,1, AND 2 ARE FLAWED. THESE TRACKS CONTAIN PRE- 
*             WRITTEN DATA. THE MODULE WILL BYPASS THESE FLAWED TRACKS
*             NOT REPORTING ERRORS. 
*IF DEF,SFMD,5
*         -   TRACKS  0,1, AND 2 ARE FLAWED.  THESE TRACKS CONTAIN PRE-  D88
*             WRITTEN  DATA.   WHEN  THESE  TRACKS  ARE  ACCESSED,  THE 
*             MODULE  WILL  BYPASS  THESE  FLAWED  TRACKS NOT REPORTING  D88
*             ERRORS. THIS WILL INSURE THAT  ALL  TRACKS  OF  THE  PRE-  D88
*             WRITTEN CYLINDER CAN BE READ.                              D88
*IF DEF,LSFMD,5 
*         -   TRACKS  0,1, AND 2 ARE FLAWED.  THESE TRACKS CONTAIN PRE- 
*             WRITTEN  DATA.   WHEN  THESE  TRACKS  ARE  ACCESSED,  THE 
*             MODULE  WILL  BYPASS  THESE  FLAWED  TRACKS NOT REPORTING 
*             ERRORS. THIS WILL INSURE THAT  ALL  TRACKS  OF  THE  PRE- 
*             WRITTEN CYLINDER CAN BE READ. 
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*         SECTORS 36,37 MUST BE PREWRITTEN WITH THE WORST CASE PATTERN-  D88
*         E36A,AAAA-.  THE FMU UTILITY PROGRAM MAY BE USED TO PRE-WRITE  D88PTR4
*         THE DATA.                                                      D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT AND MODULE ERROR.   D88
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT AND MODULE ERROR.
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B4  = NUMBER OF SECTORS TO READ.                               D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B9  = READ MARGIN CONDITION.                                   D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT                                        D88
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.             D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         IB,OB                                                          D88
*                                                                        D88
*         REMARKS-                                                       D88
*IF DEF,PFMD,1
*         ONLY SECTORS 36/37 OF TRACKS 3-9 ARE READ TO CONSERVE ON TIME.
*IF DEF,SFMD,1
*         ONLY TRACKS 0-25B ARE READ TO CONSERVE ON TIME.                D88
*IF DEF,LSFMD,1 
*         ONLY TRACKS 0-25B ARE READ TO CONSERVE ON TIME. 
*                                                                        D88
*IF DEF,PFMD,10 
1  FORMAT DH817 - READ PREWRITTEN SECTOR
2  FORMAT DH817 ERROR(S) = *DECD
4  FORMAT DH817 E0011 L*OC MISCOMPARE ON WC PATTERN READ
5  FORMAT DH817 TRK=*OB  SECT=*OB 
7  FORMAT DH817 EC=*DECD, LC*DECD 
10 FORMAT DH817 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
   DATA (OB,3H) E36E,36E3,6E36,AAAA,AAAA,AAAA 
   DATA (OB(10),3H) AAEA,AEAA,EAAE,36A3,6A36,A36A 
   DATA (OB(20),3H) AAAA,AAAA,AAAA,AE3A,E3AE,3AE3 
   DATA (OB(30),3H) 6AA6,AA6A,A6AA,AAAA,AAAA,AAAA 
*IF DEF,SFMD,7
1  FORMAT D8817-READ PREWRITTEN SECTOR                                   D88
2  FORMAT D8817 ERROR(S) = *DECD                                         D88
4  FORMAT D8817 E0011 L*OC MISCOMPARE ON WC PATTERN READ                 D88
5  FORMAT D8817 TRK=*OB  SECT=*OB                                        D88
7  FORMAT D8817 EC=*DECD, LC*DECD                                        D88
10 FORMAT D8817 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
   DATA (OB,3H) E36A,AAAA,E36A,AAAA,E36A,AAAA                            D88
*IF DEF,LSFMD,7 
1  FORMAT DL817-READ PREWRITTEN SECTOR
2  FORMAT DL817 ERROR(S) = *DECD
4  FORMAT DL817 E0011 L*OC MISCOMPARE ON WC PATTERN READ
5  FORMAT DL817 TRK=*OB  SECT=*OB 
7  FORMAT DL817 EC=*DECD, LC*DECD 
10 FORMAT DL817 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
   DATA (OB,3H) E36A,AAAA,E36A,AAAA,E36A,AAAA 
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE TEST               D88
   MSG 10 TO DAYFILE,PRINT       *PRINT MESSAGE-AL TOO LOW               D88
   EXIT                                                                  D88
21 B1 = 17D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 1511B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*IF DEF,PFMD,1
   BA = 0                        *SET BA TO BUFFER WORD 0 
*IF DEF,SFMD,1
   BA = 4                        *SET BA TO BUFFER WORD 4                D88
*IF DEF,LSFMD,1 
   BA = 4                        *SET BA TO BUFFER WORD 4 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B9 = 0                        *SET FIRST READ MARGIN                  D88
26 B8 = 43B 
   MARGINS B9, ABT 74            *SET READ MARGINS
   B6 = 3                        *CURRENT TRACK                          D88
*IF DEF,LSFMD,1 
30 B5 = 6                        *CURRENT SECTOR
*IF -DEF,LSFMD,1
30 B5 = 36                       *CURRENT SECTOR                         D88
32 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   GOSUB 44                    *WRITE OB WITH CODED/WC PATT              D88
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM                D88
   B4 = 1                        *NUMBER OF SECTORS TO READ              D88
   B8 = 24B                      *READ CODED SECTORS                     D88
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 34                 D88
   GOTO 36                                                               D88
34 IF(SB(5).AND.6000.NE.0) GOTO 41   *TRACK FLAW OR FACTORY MAP 
   GOTO 74                   *ELSE ERROR
36 B8 = 47B                                                              D88
*IF DEF,PFMD,3
   OB(502) = B5                  *SET SECTOR NUMBER 
   WC = 504B                     *BUFFER WORD COUNT 
   COMPARE IB TO OB FOR WC, ABT 70
*IF DEF,SFMD,2
   WC = 476B                     *SET BUFFER WORD COUNT 
   COMPARE IB(4) TO OB(4) FOR WC, ABT 70                                 D88
*IF DEF,LSFMD,2 
   WC = 500B                     *SET BUFFER WORD COUNT 
   COMPARE IB(0) TO OB(0) FOR WC, ABT 70
*IF -DEF,LSFMD,1
40 GOTO 32 WHILE(B5+1.LT.40B)    *REPEAT FOR ALL SECTORS                 D88
*IF DEF,LSFMD,1 
40 GOTO 32 WHILE(B5+1.LT.10B)    *REPEAT FOR ALL SECTORS
*IF DEF,PFMD,1
41 GOTO 30 WHILE(B6+1.LT.9D)     *INCREMENT THE TRACK COUNT 
*IF DEF,SFMD,1
41 GOTO 30 WHILE(B6+1.LT.25B)    *INCREMENT THE TRACK COUNT 
*IF DEF,LSFMD,1 
41 GOTO 30 WHILE(B6+1.LT.25B)    *INCREMENT THE TRACK COUNT 
   GOSUB 60                      *SET READ MARGINS                       D88
   GOTO 26 WHILE(B9+0.LT.23)     *SET ALL READ MARGINS                   D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT                      D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------WORST CASE GENERATOR SUBROUTINE.                               D88
*                                                                        D88
*IF DEF,SFMD,2
44 COPY OB TO OB(10) FOR 10 
   COPY OB TO OB(20) FOR 20                                              D88
*IF DEF,LSFMD,2 
44 COPY OB TO OB(10) FOR 10 
   COPY OB TO OB(20) FOR 20 
*IF DEF,PFMD,1
44 COPY OB TO OB(40) FOR 40 
*IF DEF,SFMD,1
   COPY OB TO OB(40) FOR 40                                              D88
*IF DEF,LSFMD,1 
   COPY OB TO OB(40) FOR 40 
   COPY OB TO OB(100) FOR 100                                            D88
   COPY OB TO OB(200) FOR 200                                            D88
   COPY OB TO OB(400) FOR 100                                            D88
*IF DEF,SFMD,1
   COPY OB TO OB(500) FOR 2                                              D88
*IF DEF,LSFMD,1 
   COPY OB TO OB(500) FOR 4 
*IF DEF,PFMD,2
   OB(500) = B7                  *SET CYLINDER NUMBER 
   OB(501) = B6                  *SET TRACK NUMBER
   RETURN                                                                D88
*                                                                        D88
/---------SET READ MARGINS.                                              D88
*                                                                        D88
60 IF(B9.NE.2) GOTO 62                                                   D88
   B9 = 10                       *CHANGE READ STROBE MARGIN              D88
   RETURN                                                                D88
62 IF(B9.NE.12) GOTO 64                                                  D88
   B9 = 20                       *CHANGE READ STROBE MARGIN              D88
   RETURN                                                                D88
64 B9 = B9+1                     *CHANGE READ OFFSET MARGIN              D88
   RETURN                                                                D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 03/01
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 4(EA) TO LINE 5           *DISPLAY ERROR MESSAGE                  D88
   CALL 98C                    *CALL MODULE ERROR PROCESSOR              D88
   GOTO 40 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 40    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 40 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 40    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH817 READ PREWRITTEN SECT
*IF DEF,SFMD,1
COMPILE                      *D8817 READ PREWRITTEN SECT                 D88
*IF DEF,LSFMD,1 
COMPILE                      *DL817 READ PREWRITTEN SECT
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH818,DEMA3(14),LOCK
***       DH818 - READ PREWRITTEN SECTORS TEST (1/1)
**        DH818 - READ PREWRITTEN SECTORS TEST (1/1)
*         DH818 - READ PREWRITTEN SECTORS TEST (1/1)
*         ------------------------------------------
* 
*         PURPOSE - 
*         THE PREWRITTEN SECTORS OF THE  FACTORY  CYLINDER  WERE  ORIG- 
*         INALLY  WRITTEN  WITH A WORST CASE PATTERN BY THE FMU UTILITY 
*         AT INSTALLATION TIME.   DH818 IS USED TO VERIFY THAT THE HEAD 
*         POSITIONING IS THE SAME AS WHEN THESE SECTORS WERE WRITTEN BY 
*         THE FMU UTILITY.  ALSO BY PERFORMING A READ ON A  KNOWN  DATA 
*         PATTERN, FAILING READ LOGIC IN THE DEMA PATH CAN BE DETECTED. 
*         THIS MODULE USES THE DEMA PATH. 
* 
*         METHOD -
*         1.  RESERVE CONTROLLER AND DRIVE. 
*         2.  SEEK TO THE PREALLOCATED CYLINDER(1511B), TRACK 3.
*         3.  READ PRE-RECORDED CODED SECTORS(36-37)TO ESM IN 1/1 TRACK 
*             MODE, ONE SECTOR AT A TIME. 
*         4.  READ SECTOR FROM ESM (SYSRD ESM). 
*         5.  COMPARE DATA. 
*         6.  INCREMENT TRACK COUNT REPEATING STEPS 2-5 UNTIL TRACK  9D 
*             HAS BEEN READ.
*             CHANNEL IS RELEASED BETWEEN EACH TRACK. 
*         7.  REPEAT MODULE LOOPS ON STEPS 1-5. 
* 
*             TRACKS 0,1, AND 2 ARE FLAWED. THESE TRACKS CONTAIN PRE- 
*             WRITTEN DATA. THE MODULE WILL BYPASS THESE FLAWED TRACKS
*             NOT REPORTING ERRORS. 
/ 
*         ENTRY - 
*         AN 885-4X DRIVE IS REQUIRED.
*         A 7155-401 CONTROLLER IS REQUIRED.
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
*         SECTORS 36,37 MUST BE PREWRITTEN WITH THE WORST CASE PATTERN- 
*         E36A,AAAA-.  THE FMU UTILITY PROGRAM MAY BE USED TO PRE-WRITE 
*         THE DATA. 
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT AND MODULE ERROR.
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4  = NUMBER OF SECTORS TO READ.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = ESM BLOCK INDEX 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         B12 = SYSRD STATUS
*         WC  = BUFFER WORD COUNT 
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED -
*         IB,OB 
* 
*         REMARKS-
*         ONLY TRACKS 3-9D ARE READ TO CONSERVE ON TIME 
* 
1  FORMAT DH818 - READ PREWRITTEN SECTOR(1/1) 
2  FORMAT DH818 ERROR(S) = *DECD
3  FORMAT DH818 E0032 L*OC ESM TRANSFER ERROR (STATUS=*O) 
4  FORMAT DH818 E0030 L*OC MISCOMPARE ON WC PATTERN READ
5  FORMAT DH818 TRK=*OB  SECT=*OB 
7  FORMAT DH818 EC=*DECD, LC*DECD 
10 FORMAT DH818 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
   DATA (OB,3H) E36E,36E3,6E36,AAAA,AAAA,AAAA 
   DATA (OB(10),3H) AAEA,AEAA,EAAE,36A3,6A36,A36A 
   DATA (OB(20),3H) AAAA,AAAA,AAAA,AE3A,E3AE,3AE3 
   DATA (OB(30),3H) 6AA6,AA6A,A6AA,AAAA,AAAA,AAAA 
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE TEST
   MSG 10 TO DAYFILE,PRINT       *PRINT MESSAGE-AL TOO LOW
   EXIT 
21 B1 = 18D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1511B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   BA = 0                        *SET BA TO BUFFER WORD 0 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
26 B6 = 3                        *CURRENT TRACK 
30 B5 = 36                       *CURRENT SECTOR
32 B8 = 41B 
   RES DRIVE, ABT 74
   GOSUB 44                    *WRITE OB WITH CODED/WC PATT 
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM 
   B4 = 1                        *NUMBER OF SECTORS TO READ 
   B8 = 35B                      *READ CODED SECTORS TO ESM 
   READ TO ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 34 
   GOTO 36
34 IF(SB(5).AND.6000.EQ.0) GOTO 74  *IF SECTOR NOT FLAWED 
36 B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
37 B8 = 17B 
   SYSRD ESM, STATUS TO B12      *READ DATA FROM ESM
   IF (B12.NE.0) ERROR 05/00, GOTO 72 
   WC = 500B                     *BUFFER WORD COUNT 
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 37 WHILE (B9+1.LT.4)     *REPEAT FOR ALL BLOCKS 
40 GOTO 32 WHILE(B5+1.LT.40B)    *REPEAT FOR ALL SECTORS
   GOTO 30 WHILE(B6+1.LT.9D)     *INCREMENT TRACK COUNT 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 26
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT 
   EXIT                          *AND DAYFILE 
* 
/---------WORST CASE GENERATOR SUBROUTINE.
* 
44 COPY OB TO OB(40) FOR 40 
   COPY OB TO OB(100) FOR 100 
   COPY OB TO OB(200) FOR 200 
   COPY OB TO OB(400) FOR 100 
   RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 03/01
   MSG 4(EA) TO LINE 5           *DISPLAY ERROR MESSAGE 
   GOTO 74
72 MSG 3 (EA,B12) TO LINE 5      *ESM TRANSFER ERROR
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 40 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 40    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DH818 READ PREWRITTEN SECT(1/1) 
*ENDIF
*IF DEF,SFMD
   MODULE D8819,FMDFT(7),LOCK                                            D88
***       D8819 - WRITE/DIAG. READ TEST                                  D88
**        D8819 - WRITE/DIAG. READ TEST                                  D88
*         D8819 - WRITE/DIAG. READ TEST                                  D88
*         -----------------------------                                  D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8819 WILL VERIFY THAT NORMAL CHANNELS (CHAN. 0-15) CAN WRITE  D88
*         DATA  TO THE FMD CONTROLLER BUFFER.  MULTIPLE READ/WRITES ARE  D88
*         PERFORMED TO DETECT ANY SOLID BIT FAILURES.  THE 885-1X DRIVE 
*         IS ACCESSED IN THIS TEST. 
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE CONTROLLER AND 885-1X DRIVE.
*         3.  WRITE 2525 PATTERN TO DISK ON PRE-ALLOCATED CYLINDER  AND  D88
*             SAVE THE PATTERN IN THE OUTPUT BUFFER.                     D88
*         4.  DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER.                          D88
*         5.  RESERVE CONTROLLER AND 885-1X DRIVE.
*         6.  WRITE 5252 PATTERN TO DISK ON PRE-ALLOCATED CYLINDER  AND  D88
*             SAVE THE PATTERN IN THE OUTPUT BUFFER.                     D88
*         7.  DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER.                          D88
*         8.  RESERVE CONTROLLER AND 885-1X DRIVE.
*         9.  WRITE FIRST  RANDOM  PATTERN  TO  DISK  ON  PRE-ALLOCATED  D88
*             CYLINDER AND SAVE THE PATTERN IN THE OUTPUT BUFFER.        D88
*         10. DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER.                          D88
*         11. RESERVE CONTROLLER AND 885-1X DRIVE.
*         12. WRITE SECOND RANDOM  PATTERN  TO  DISK  ON  PRE-ALLOCATED  D88
*             CYLINDER AND SAVE THE PATTERN IN THE OUTPUT BUFFER.        D88
*         13. DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER.                          D88
*         14. REPEAT MODULE LOOPS ON STEPS 1-13.                         D88
/                                                                        D88
*         ENTRY -                                                        D88
*         A 885-1X DRIVE IS REQUIRED. 
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = SECOND RANDOM DATA SEED SAVED FOR RM CONDITION.          D88
*         B3  = FIRST RANDOM DATA SEED SAVED FOR RM CONDITION.           D88
*         B4  = NUMBER OF SECTORS TO WRITE.                              D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT                                        D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         IB,OB                                                          D88
*                                                                        D88
1  FORMAT D8819-WRITE/DIAGNOSTIC READ                                    D88
2  FORMAT D8819 ERROR(S) = *DECD                                         D88
4  FORMAT D8819 E0012 L*OC MISCOMPARE ON WRITE/DIAGRD                    D88
5  FORMAT D8819 WRITE/DIAGRD LC=*DECD                                    D88
7  FORMAT D8819 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8819 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
21 B1 = 19D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B6 = 0                        *CURRENT TRACK                          D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   WC = 502B                     *BUFFER WORD COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB               D88
   GOSUB 40                      *EXECUTE WRITE/DIAGRD                   D88
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB               D88
   GOSUB 40                      *EXECUTE WRITE/DIAGRD                   D88
   IF(B0.EQ.0) GOTO 30           *IF RM, USE SEEDS B3/B2                 D88
   RANDOM TO OB FOR WC, START B3   *USE B3 SEED FOR RM                   D88
   GOSUB 40                                                              D88
   RANDOM TO OB FOR WC, START B2   *USE B2 SEED FOR RM                   D88
   GOSUB 40                                                              D88
   GOTO 50                                                               D88
30 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1                 D88
   B3 = OB(0)                                                            D88
   GOSUB 40                                                              D88
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 2                 D88
   B2 = OB(0)                                                            D88
   GOSUB 40                                                              D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------WRITE/DIAGRD SUBROUTINE PROCESS.                               D88
*                                                                        D88
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
   B5 = 0                        *CURRENT SECTOR ADDRESS                 D88
   B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(ES.AND.RM.EQ.0) MSG 5 (B10) TO DISPLAY  *IF NO RM                  D88
   B4 = 1                        *NUMBER OF SECTORS TO WRITE             D88
   B8 = 30B                                                              D88
   WRITE B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                      D88
44 B8 = 01B                                                              D88
   DIAGRD, ABT 74                *DIAGNOSTIC READ                        D88
   B8 = 47B                                                              D88
   COMPARE IB TO OB FOR WC, ABT 70                                       D88
   GOTO 44 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES                         D88
46 RETURN                                                                D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 00/01
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 4(EA) TO LINE 5           *DISPLAY ERROR MESSAGE                  D88
   CALL 98C                    *CALL MODULE ERROR PROCESSOR              D88
   WC = 502B                     *SET BUFFER WORD COUNT 
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT                             D88
   END 20                                                                D88
COMPILE                      *D8819 WRT/DIAGNOSTIC READ                  D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL819,LSFMD2(16),LOCK 
***       DL819 - WRITE/DIAG. READ TEST 
**        DL819 - WRITE/DIAG. READ TEST 
*         DL819 - WRITE/DIAG. READ TEST 
*         ----------------------------- 
* 
*         PURPOSE-
*         DL819 WILL VERIFY THAT NORMAL CHANNELS (CHAN. 0-15) CAN WRITE 
*         DATA  TO THE FMD CONTROLLER BUFFER.  MULTIPLE READ/WRITES ARE 
*         PERFORMED TO DETECT ANY SOLID BIT FAILURES.  THE 885-1X DRIVE 
*         IS ACCESSED IN THIS TEST. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE CONTROLLER AND 885-1X DRIVE.
*         3.  WRITE 2525 PATTERN TO DISK ON PRE-ALLOCATED CYLINDER  AND 
*             SAVE THE PATTERN IN THE OUTPUT BUFFER.
*         4.  DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         5.  RESERVE CONTROLLER AND 885-1X DRIVE.
*         6.  WRITE 5252 PATTERN TO DISK ON PRE-ALLOCATED CYLINDER  AND 
*             SAVE THE PATTERN IN THE OUTPUT BUFFER.
*         7.  DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         8.  RESERVE CONTROLLER AND 885-1X DRIVE.
*         9.  WRITE FIRST  RANDOM  PATTERN  TO  DISK  ON  PRE-ALLOCATED 
*             CYLINDER AND SAVE THE PATTERN IN THE OUTPUT BUFFER. 
*         10. DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         11. RESERVE CONTROLLER AND 885-1X DRIVE.
*         12. WRITE SECOND RANDOM  PATTERN  TO  DISK  ON  PRE-ALLOCATED 
*             CYLINDER AND SAVE THE PATTERN IN THE OUTPUT BUFFER. 
*         13. DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         14. REPEAT MODULE LOOPS ON STEPS 1-13.
/ 
*         ENTRY - 
*         A 885-1X DRIVE IS REQUIRED. 
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM DATA SEED SAVED FOR RM CONDITION. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR RM CONDITION.
*         B4  = NUMBER OF SECTORS TO WRITE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
          B12 = FIRST 300 WORDS 
          B13 = SECOND 202 WORDS
*         WC  = BUFFER WORD COUNT 
* 
*         BUFFERS USED -
*         IB,OB 
* 
1  FORMAT DL819-WRITE/DIAGNOSTIC READ 
2  FORMAT DL819 ERROR(S) = *DECD
4  FORMAT DL819 E0012 L*OC MISCOMPARE ON WRITE/DIAGRD 
5  FORMAT DL819 WRITE/DIAGRD LC=*DECD 
7  FORMAT DL819 EC=*DECD, LC=*DECD
10 FORMAT DL819 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 19D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B6 = 0                        *CURRENT TRACK 
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 502B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 40                      *EXECUTE WRITE/DIAGRD
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 40                      *EXECUTE WRITE/DIAGRD
   IF(B0.EQ.0) GOTO 30           *IF RM, USE SEEDS B3/B2
   RANDOM TO OB FOR WC, START B3   *USE B3 SEED FOR RM
   GOSUB 40 
   RANDOM TO OB FOR WC, START B2   *USE B2 SEED FOR RM
   GOSUB 40 
   GOTO 50
30 RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
   GOSUB 40 
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 2
   B2 = OB(0) 
   GOSUB 40 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------WRITE/DIAGRD SUBROUTINE PROCESS.
* 
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   B5 = 0                        *CURRENT SECTOR ADDRESS
   B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B10) TO DISPLAY  *IF NO RM 
   B4 = 1                        *NUMBER OF SECTORS TO WRITE
   B8 = 30B 
   WRITE B4 SM SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
44 B8 = 01B 
   DIAGRD, ABT 74                *DIAGNOSTIC READ 
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 44 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
46 RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/01
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   MSG 4(EA) TO LINE 5           *DISPLAY ERROR MESSAGE 
   CALL 98C                    *CALL MODULE ERROR PROCESSOR 
   WC = 502B                     *SET BUFFER WORD COUNT 
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                      *DL819 WRT/DIAGNOSTIC READ 
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH819,DEMA3(14),LOCK
***       DH819 - WRITE/DIAG. READ TEST 
**        DH819 - WRITE/DIAG. READ TEST 
*         DH819 - WRITE/DIAG. READ TEST 
*         ----------------------------- 
* 
*         PURPOSE-
*         DH819 WILL VERIFY THAT NORMAL CHANNELS (CHAN. 0-15) CAN WRITE 
*         DATA TO THE DEMA CONTROLLER BUFFER.  MULTIPLE READ/WRITES ARE 
*         PERFORMED TO DETECT ANY SOLID BIT FAILURES.  THE 885-4X DRIVE 
*         IS ACCESSED IN THIS TEST. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE CONTROLLER AND 885-4X DRIVE.
*         3.  WRITE 2525 PATTERN TO DISK ON PRE-ALLOCATED CYLINDER  AND 
*             SAVE THE PATTERN IN THE OUTPUT BUFFER.
*         4.  DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         5.  RESERVE CONTROLLER AND 885-4X DRIVE.
*         6.  WRITE 5252 PATTERN TO DISK ON PRE-ALLOCATED CYLINDER  AND 
*             SAVE THE PATTERN IN THE OUTPUT BUFFER.
*         7.  DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         8.  RESERVE CONTROLLER AND 885-4X DRIVE.
*         9.  WRITE FIRST  RANDOM  PATTERN  TO  DISK  ON  PRE-ALLOCATED 
*             CYLINDER AND SAVE THE PATTERN IN THE OUTPUT BUFFER. 
*         10. DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         11. RESERVE CONTROLLER AND 885-4X DRIVE.
*         12. WRITE SECOND RANDOM  PATTERN  TO  DISK  ON  PRE-ALLOCATED 
*             CYLINDER AND SAVE THE PATTERN IN THE OUTPUT BUFFER. 
*         13. DIAGNOSTIC READ THE CONTROLLER 10D  TIMES  COMPARING  THE 
*             INPUT TO THE SAVED OUTPUT BUFFER. 
*         14. REPEAT MODULE LOOPS ON STEPS 1-13.
/ 
*         ENTRY - 
*         A 885-4X DRIVE IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = SECOND RANDOM DATA SEED SAVED FOR RM CONDITION. 
*         B3  = FIRST RANDOM DATA SEED SAVED FOR RM CONDITION.
*         B4  = NUMBER OF SECTORS TO WRITE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
* 
*         BUFFERS USED -
*         IB,OB 
* 
1  FORMAT DH819 - WRITE/DIAGNOSTIC READ 
2  FORMAT DH819 ERROR(S) = *DECD
4  FORMAT DH819 E0012 L*OC MISCOMPARE ON WRITE/DIAGRD 
5  FORMAT DH819 WRITE/DIAGRD LC=*DECD 
7  FORMAT DH819 EC=*DECD, LC=*DECD
10 FORMAT DH819 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 19D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B6 = 0                        *CURRENT TRACK 
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 WC = 500                      *BUFFER WORD COUNT 
   DUP 2525 TO OB FOR WC         *WRITE 2525 PATTERN IN OB
   GOSUB 40                      *EXECUTE WRITE/DIAGRD
   WC = 500                      *BUFFER WORD COUNT 
   DUP 5252 TO OB FOR WC         *WRITE 5252 PATTERN IN OB
   GOSUB 40                      *EXECUTE WRITE/DIAGRD
   IF(B0.EQ.0) GOTO 30           *IF RM, USE SEEDS B3/B2
   WC = 500                      *BUFFER WORD COUNT 
   RANDOM TO OB FOR WC, START B3   *USE B3 SEED FOR RM
   GOSUB 40 
   WC = 500                      *BUFFER WORD COUNT 
   RANDOM TO OB FOR WC, START B2   *USE B2 SEED FOR RM
   GOSUB 40 
   GOTO 50
30 WC = 500                      *BUFFER WORD COUNT 
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 1
   B3 = OB(0) 
   GOSUB 40 
   WC = 500                      *BUFFER WORD COUNT 
   RANDOM TO OB FOR WC, START RT  *RANDOM DATA PATTERN 2
   B2 = OB(0) 
   GOSUB 40 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------WRITE/DIAGRD SUBROUTINE PROCESS.
* 
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   B5 = 0                        *CURRENT SECTOR ADDRESS
   B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B10) TO DISPLAY  *IF NO RM 
   B8 = 30B                      *WRITE 
   WRITE ONE SEC AT CYL B7 TRK B6 SEC B5, ABT 74
44 B8 = 01B 
   DIAGRD, ABT 74                *DIAGNOSTIC READ 
   B8 = 47B 
   WC = 500 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 44 WHILE(B10+1.LT.10D)   *LOOP 10D TIMES
46 RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/01
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   MSG 4(EA) TO LINE 5           *DISPLAY ERROR MESSAGE 
   CALL 96C                    *CALL MODULE ERROR PROCESSOR 
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 46 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                      *DH819 WRT/DIAGNOSTIC READ 
*ENDIF
*IF DEF,PFMD,4
   MODULE DH821,DEMA2(14),LOCK
***       DH821 - WRITE PRE-ALLOCATED CYLINDER TEST 
**        DH821 - WRITE PRE-ALLOCATED CYLINDER TEST 
*         DH821 - WRITE PRE-ALLOCATED CYLINDER TEST 
*IF DEF,SFMD,4
   MODULE D8821,FMDFT(7),LOCK                                            D88
***       D8821 - WRITE PRE-ALLOCATED CYLINDER TEST                      D88
**        D8821 - WRITE PRE-ALLOCATED CYLINDER TEST                      D88
*         D8821 - WRITE PRE-ALLOCATED CYLINDER TEST                      D88
*IF DEF,LSFMD,4 
   MODULE DL821,LSFMD2(16),LOCK 
***       DL821 - WRITE PRE-ALLOCATED CYLINDER TEST 
**        DL821 - WRITE PRE-ALLOCATED CYLINDER TEST 
*         DL821 - WRITE PRE-ALLOCATED CYLINDER TEST 
*         -----------------------------------------                      D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH821 IS  A  CROSS-CHECK  FOR  THE  POSITIONER.  SINCE  EVERY 
*IF DEF,SFMD,1
*         D8821 IS  A  CROSS-CHECK  FOR  THE  POSITIONER.  SINCE  EVERY  D88
*IF DEF,LSFMD,1 
*         DL821 IS  A  CROSS-CHECK  FOR  THE  POSITIONER.  SINCE  EVERY 
*         SECTORS CODED  DATA  IS  UNIQUE, IT IS EASY TO DETECT A POSI- 
*         TIONER FAULT.   ALL HEADS AND SECTORS OF THE CYLINDER WILL BE 
*         USED  DURING  THIS  TEST  AND  THE ADDRESS CODING INFORMATION  D88
*         WRITTEN IN EACH SECTOR WILL BE USED TO INSURE THAT  THE  DATA  D88
*         WAS  RECORDED  ON THE SURFACE WHERE EXPECTED. DATA IS WRITTEN  D88
*         ON THE CE CYLINDER.                                            D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER.                              D88
*IF DEF,PFMD,1
*         3.  THE OUTPUT BUFFER IS FILLED WITH RANDOM DATA. 
*IF DEF,SFMD,1
*         3.  FILL THE OUTPUT BUFFER WITH ADDRESS CODED+RANDOM DATA.     D88
*IF DEF,LSFMD,1 
*         3.  FILL THE OUTPUT BUFFER WITH ADDRESS CODED+RANDOM DATA.
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*IF DEF,PFMD,1
*         5.  WRITE CODED SECTORS, 2/1 INTERLACE, TRACK MODE. 
*IF DEF,SFMD,1
*         5.  WRITE CODED SECTORS, 1/1 INTERLACE, TRACK MODE.            D88
*IF DEF,LSFMD,1 
*         5.  WRITE CODED SECTORS, 1/1 INTERLACE, TRACK MODE. 
*         6.  INCREMENT TRACK NUMBER AND REPEAT  ABOVE  SEQUENCE  UNTIL  D88
*IF DEF,PFMD,1
*             ALL 10D TRACKS HAVE BEEN WRITTEN. 
*IF DEF,SFMD,1
*             ALL 50B TRACKS HAVE BEEN WRITTEN.                          D88
*IF DEF,LSFMD,1 
*             ALL 50B TRACKS HAVE BEEN WRITTEN. 
*         7.  REPEAT MODULE LOOPS ON STEPS 1-6.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION.    D88
*         B4  = NUMBER OF SECTORS TO WRITE.                              D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*IF DEF,PFMD,5
1  FORMAT DH821 - WRITE PREALLOC. CYL 
2  FORMAT DH821 ERROR(S) = *DECD
5  FORMAT DH821 WRITING TRACK=*OCTB 
7  FORMAT DH821 EC=*DECD, LC=*DECD
10 FORMAT DH821 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,SFMD,5
1  FORMAT D8821 - WRITE PREALLOC. CYL                                    D88
2  FORMAT D8821 ERROR(S) = *DECD                                         D88
5  FORMAT D8821 WRITING TRACK=*OCTB                                      D88
7  FORMAT D8821 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8821 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*IF DEF,LSFMD,5 
1  FORMAT DL821 - WRITE PREALLOC. CYL 
2  FORMAT DL821 ERROR(S) = *DECD
5  FORMAT DL821 WRITING TRACK=*OCTB 
7  FORMAT DL821 EC=*DECD, LC=*DECD
10 FORMAT DL821 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
21 B1 = 21D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*IF DEF,PFMD,1
   WC = 500B                     *BUFFER WORD COUNT 
*IF DEF,SFMD,1
   WC = 476B                     *BUFFER WORD COUNT                      D88
*IF DEF,LSFMD,1 
   WC = 500B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B6 = 0                        *CURRENT TRACK ADDRESS                  D88
*IF DEF,PFMD,3
   IF(B0.EQ.0) RANDOM TO OB FOR WC, START RT
   IF(B0.EQ.0) B3 = OB
   IF(B0.NE.0) RANDOM TO OB FOR WC, START B3
*IF DEF,SFMD,3
   IF(B0.EQ.0) RANDOM TO OB(4) FOR WC, START RT                          D88
   IF(B0.EQ.0) B3 = OB(4)                                                D88
   IF(B0.NE.0) RANDOM TO OB(4) FOR WC, START B3                          D88
*IF DEF,LSFMD,3 
   IF(B0.EQ.0) RANDOM TO OB(0) FOR WC, START RT 
   IF(B0.EQ.0) B3 = OB(0) 
   IF(B0.NE.0) RANDOM TO OB(0) FOR WC, START B3 
26 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
*IF DEF,PFMD,3
   B5 = 0                        *CURRENT SECTOR ADDRESS
27 IF(ES.AND.RM.EQ.0) MSG 5(B6) TO DISPLAY  *IF NO RM 
   B4 = 20B                      *NUMBER OF SECTORS TO WRITE
*IF DEF,SFMD,3
   IF(ES.AND.RM.EQ.0) MSG 5(B6) TO DISPLAY  *IF NO RM                    D88
   B5 = 0                        *CURRENT SECTOR ADDRESS                 D88
   B4 = 40B                      *NUMBER OF SECTORS TO WRITE             D88
*IF DEF,LSFMD,3 
   IF(ES.AND.RM.EQ.0) MSG 5(B6) TO DISPLAY  *IF NO RM 
   B5 = 0                        *CURRENT SECTOR ADDRESS
   B4 = 10B                      *NUMBER OF SECTORS TO WRITE
   B8 = 31B                                                              D88
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72                D88
*IF DEF,PFMD,3
   B5 = B5.AND.1                 *MASK
   GOTO 27 WHILE (B5+1.LE.1)     *REPEAT FOR HALF TRACK 
30 GOTO 26 WHILE (B6+1.LT.10D)   *REPEAT FOR ALL TRACKS 
*IF DEF,SFMD,1
30 GOTO 26 WHILE (B6+1.LT.50B)   *REPEAT FOR ALL TRACKS 
*IF DEF,LSFMD,1 
30 GOTO 26 WHILE (B6+1.LT.50B)   *REPEAT FOR ALL TRACKS                  D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
72 IF(EC.AND.4077.NE.4012)GOTO 74  *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 74           *GET GENERAL STATUS                   D88
   STATUS,DETAIL,ABT 74            *GET DETAILED STATUS                  D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 30 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 30    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH821 WRITE PREALLOCATED CYL. 
*IF DEF,SFMD,1
COMPILE                      *D8821 WRITE PREALLOCATED CYL.              D88
*IF DEF,LSFMD,1 
COMPILE                      *DL821 WRITE PREALLOCATED CYL. 
*IF DEF,PFMD,4
   MODULE DH822,DEMA1(14),LOCK
***       DH822 - READ PRE-ALLOCATED CYLINDER TEST
**        DH822 - READ PRE-ALLOCATED CYLINDER TEST
*         DH822 - READ PRE-ALLOCATED CYLINDER TEST
*IF DEF,SFMD,4
   MODULE D8823,FMDHT(7),LOCK                                            D88
***       D8823 - READ PRE-ALLOCATED CYLINDER TEST                       D88
**        D8823 - READ PRE-ALLOCATED CYLINDER TEST                       D88
*         D8823 - READ PRE-ALLOCATED CYLINDER TEST                       D88
*IF DEF,LSFMD,4 
   MODULE DL823,LSFMD1(16),LOCK 
***       DL823 - READ PRE-ALLOCATED CYLINDER TEST
**        DL823 - READ PRE-ALLOCATED CYLINDER TEST
*         DL823 - READ PRE-ALLOCATED CYLINDER TEST
*         ----------------------------------------                       D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,3
*         DH822 TESTS THE READ-FROM-DISK FUNCTION. DATA WAS  PREVIOUSLY 
*         WRITTEN  BY DH821.  THIS DATA WILL BE READ AND VERIFIED.  THE 
*         THE DATA WAS  WRITTEN  AT  2/1  INTERLACE  AND  READ  AT  2/1 
*IF DEF,SFMD,3
*         D8823 TESTS THE READ-FROM-DISK FUNCTION. DATA WAS  PREVIOUSLY  D88
*         WRITTEN  BY D8821.  THIS DATA WILL BE READ AND VERIFIED.  THE  D88
*         THE DATA WAS  WRITTEN  AT  1/1  INTERLACE  AND  READ  AT  2/1  D88
*IF DEF,LSFMD,3 
*         DL823 TESTS THE READ-FROM-DISK FUNCTION. DATA WAS  PREVIOUSLY 
*         WRITTEN  BY DL821.  THIS DATA WILL BE READ AND VERIFIED.  THE 
*         THE DATA WAS  WRITTEN  AT  1/1  INTERLACE  AND  READ  AT  2/1 
*         INTERLACE  TO FURTHER TEST THE ADDRESS SCHEME OF THE CONTROL-  D88
*         WARE AND HARDWARE.   IF  NUMEROUS  ERRORS  ARE  DETECTED  AND  D88
*IF DEF,PFMD,2
*         MODULE  DH819  RAN  CORRECTLY,  THE  DATA  MAY  NOT HAVE BEEN 
*         WRITTEN CORRECTLY BY  DH821.   DATA  IS  WRITTEN  ON  THE  CE 
*IF DEF,SFMD,2
*         MODULE  D8819  RAN  CORRECTLY,  THE  DATA  MAY  NOT HAVE BEEN  D88
*         WRITTEN CORRECTLY BY  D8821.   DATA  IS  WRITTEN  ON  THE  CE  D88
*IF DEF,LSFMD,2 
*         MODULE  DL819  RAN  CORRECTLY,  THE  DATA  MAY  NOT HAVE BEEN 
*         WRITTEN CORRECTLY BY  DL821.   DATA  IS  WRITTEN  ON  THE  CE 
*         CYLINDER.                                                      D88
*                                                                        D88
*         METHOD -                                                       D88
*IF DEF,PFMD,2
*         1.  SET EARLY OFFSET/FORWARD STROBE READ MARGIN CONDITION.
*         2.  RESERVE DRIVE AND CONTROLLER. 
*IF DEF,SFMD,2
*         1.  RESERVE DRIVE AND CONTROLLER.                              D88
*         2.  SET EARLY OFFSET/FORWARD STROBE READ MARGIN CONDITION.     D88
*IF DEF,LSFMD,2 
*         1.  RESERVE DRIVE AND CONTROLLER. 
*         2.  SET EARLY OFFSET/FORWARD STROBE READ MARGIN CONDITION.
*IF DEF,PFMD,1
*         3.  WRITE A RANDOM PATTERN IN OB(0-500B). 
*IF DEF,SFMD,1
*         3.  WRITE A RANDOM PATTERN IN OB(4-501B). 
*IF DEF,LSFMD,1 
*         3.  WRITE A RANDOM PATTERN IN OB(0-477B). 
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  READ  CODED  SECTORS,  IN  2/1  INTERLACE,  TRACK   MODE,  D88
*IF DEF,PFMD,1
*             COMPARING  DATA  ON  EACH  SECTOR  USING IB(0) AS SEED TO 
*IF DEF,SFMD,1
*             COMPARING  DATA  ON  EACH  SECTOR  USING IB(4) AS SEED TO  D88
*IF DEF,LSFMD,1 
*             COMPARING  DATA  ON  EACH  SECTOR  USING IB(0) AS SEED TO 
*             GENERATE EXPECTED DATA PATTERN                             D88
*         6.  INCREMENT  TRACK  NUMBER  AND REPEAT ABOVE SEQUENCE UNTIL  D88
*IF DEF,PFMD,1
*             ALL 10D TRACKS HAVE BEEN READ.
*IF DEF,SFMD,1
*             ALL 50B TRACKS HAVE BEEN READ.
*IF DEF,LSFMD,1 
*             ALL 50B TRACKS HAVE BEEN READ.                             D88
*         7.  SET  LATE OFFSET/REVERSE STROBE READ MARGIN CONDITION AND  D88
*             REPEAT SEQUENCE 2-6.
*         8.  REPEAT MODULE LOOPS ON STEPS 1-7.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*IF DEF,PFMD,1
*         MODULE DH821 MUST BE RUN PRIOR TO DH822.
*IF DEF,SFMD,1
*         MODULE D8821 MUST BE RUN PRIOR TO D8823.                       D88
*IF DEF,LSFMD,1 
*         MODULE DL821 MUST BE RUN PRIOR TO DL823.
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,LSFMD,1 
*         DL897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B4  = NUMBER OF SECTORS TO READ.                               D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B9  = READ MARGIN CONDITION.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.             D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         IB,OB                                                          D88
*                                                                        D88
*         REMARKS-                                                       D88
*         SET EARLY OFFSET/FORWARD STROBE AND LATE OFFSET/REVERSE        D88
*         STROBE READ MARGIN CONDITION TO CONSERVE ON TIME.              D88
*                                                                        D88
*IF DEF,PFMD,6
1  FORMAT DH822 - READ PREALLOC. CYL
2  FORMAT DH822 ERROR(S) = *DECD
4  FORMAT DH822 E0013 L*OC MISCOMPARE ON RANDOM PATTERN READ
5  FORMAT DH822 TRK=*OB SECT=*OB
7  FORMAT DH822 EC=*DECD, LC=*DECD
10 FORMAT DH822 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,SFMD,6
1  FORMAT D8823 - READ PREALLOC. CYL                                     D88
2  FORMAT D8823 ERROR(S) = *DECD                                         D88
4  FORMAT D8823 E0013 L*OC MISCOMPARE ON RANDOM PATTERN READ             D88
5  FORMAT D8823 TRK=*OB SECT=*OB                                         D88
7  FORMAT D8823 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8823 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*IF DEF,LSFMD,6 
1  FORMAT DL823 - READ PREALLOC. CYL
2  FORMAT DL823 ERROR(S) = *DECD
4  FORMAT DL823 E0013 L*OC MISCOMPARE ON RANDOM PATTERN READ
5  FORMAT DL823 TRK=*OB SECT=*OB
7  FORMAT DL823 EC=*DECD, LC=*DECD
10 FORMAT DL823 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
*IF DEF,PFMD,1
21 B1 = 22D                      *MODULE NUMBER 
*IF DEF,SFMD,1
21 B1 = 23D                      *MODULE NUMBER 
*IF DEF,LSFMD,1 
21 B1 = 23D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*IF DEF,PFMD,1
   BA = 0                        *SET BA TO BUFFER WORD 0 
*IF DEF,SFMD,2
   WC = 476B                     *BUFFER WORD COUNT                      D88
   BA = 4                        *SET BA TO BUFFER WORD 4 
*IF DEF,LSFMD,2 
   WC = 500B                     *BUFFER WORD COUNT 
   BA = 0                        *SET BA TO BUFFER WORD 4 
   B0 = 0                        *INITIALIZE LOOP COUNT                  D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B9 = 11                       *SET FIRST READ MARGIN                  D88
26 B6 = 0                        *INITIALIZE TRACK ADDRESS               D88
   B5 = 0                        *INITIALIZE SECTOR ADDRESS              D88
   B8 = 41B                                                              D88
22 RES DRIVE, ABT 75
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM                D88
   B4 = 1                        *NUMBER OF SECTORS TO READ              D88
   B8 = 24B                                                              D88
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 75
*IF DEF,PFMD,3
   WC = 500B                     *BUFFER WORD COUNT 
   RANDOM TO OB FOR WC, START IB  *WRITE RANDOM PATT
   OB(500) = B7                  *SET CURRENT CYLINDER
*IF DEF,SFMD,1
   RANDOM TO OB(4) FOR WC, START IB(4)  *WRITE RANDOM PATT               D88
*IF DEF,LSFMD,1 
   RANDOM TO OB(0) FOR WC, START IB(0)  *WRITE RANDOM PATT
   B8 = 43B 
   MARGINS B9, ABT 75            *SET READ MARGINS
30 B5 = 0                        *CURRENT SECTOR                         D88
*IF DEF,PFMD,1
   OB(501) = B6                  *SET CURRENT TRACK 
   B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
32 IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM                D88
   B4 = 1                        *NUMBER OF SECTORS TO READ              D88
   B8 = 24B                                                              D88
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                 D88
   B8 = 47B                                                              D88
*IF DEF,PFMD,3
   OB(502) = B5                  *SET CURRENT SECTOR
   WC = 504B                     *SET BUFFER WORD COUNT 
   COMPARE IB TO OB FOR WC, ABT 70
*IF DEF,SFMD,1
   COMPARE IB(4) TO OB(4) FOR WC, ABT 70                                 D88
*IF DEF,LSFMD,3 
   COMPARE IB(0) TO OB(0) FOR WC, ABT 70
   GOTO 32 WHILE(B5+1.LT.10B)    *REPEAT FOR ALL SECTORS
   IF (B5.EQ.11) GOTO 34         *IF ALL SECTORS COMPLETE 
*IF -DEF,LSFMD,4
   GOTO 32 WHILE(B5+2.LT.40B)    *REPEAT FOR ALL SECTORS                 D88
   IF (B5.EQ.41) GOTO 34         *IF ALL SECTORS COMPLETE                D88
   B5 = 1                        *READ ODD SECTORS                       D88
   GOTO 32                                                               D88
*IF DEF,PFMD,1
34 GOTO 30 WHILE(B6+1.LT.10D)    *REPEAT FOR ALL TRACKS 
*IF DEF,SFMD,1
34 GOTO 30 WHILE(B6+1.LT.50B)    *REPEAT FOR ALL TRACKS 
*IF DEF,LSFMD,1 
34 GOTO 30 WHILE(B6+1.LT.50B)    *REPEAT FOR ALL TRACKS                  D88
   IF(B9.EQ.22) GOTO 50          *SET READ MARGIN                        D88
   B9 = 22                                                               D88
   GOTO 26                                                               D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT                      D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 02/01                                                           D88
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 4(EA) TO LINE 5                                                   D88
   CALL 97C                    *CALL MODULE ERROR PROCESSOR              D88
*IF DEF,PFMD,1
   WC = 504B                     *SET BUFFER WORD COUNT 
*IF DEF,SFMD,1
   WC = 476B                     *SET BUFFER WORD COUNT 
*IF DEF,LSFMD,1 
   WC = 500B                     *SET BUFFER WORD COUNT 
   GOTO 34 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 34 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
75 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 22 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 22    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH822 READ PREALLOCATED CYL.
*IF DEF,SFMD,1
COMPILE                      *D8823 READ PREALLOCATED CYL.               D88
*IF DEF,LSFMD,1 
COMPILE                      *DL823 READ PREALLOCATED CYL.
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH823,DEMA3(14),LOCK
***       DH823 - WRITE PRE-ALLOCATED CYLINDER TEST (1/1) 
**        DH823 - WRITE PRE-ALLOCATED CYLINDER TEST (1/1) 
*         DH823 - WRITE PRE-ALLOCATED CYLINDER TEST (1/1) 
*         ----------------------------------------------- 
* 
*         PURPOSE-
*         DH823 IS  A  CROSS-CHECK  FOR  THE  POSITIONER.  SINCE  EVERY 
*         SECTORS CODED  DATA  IS  UNIQUE, IT IS EASY TO DETECT A POSI- 
*         IIONER FAULT.   ALL HEADS AND SECTORS OF THE CYLINDER WILL BE 
*         USED  DURING  THIS  TEST  AND  THE ADDRESS CODING INFORMATION 
*         WRITTEN IN EACH SECTOR WILL BE USED TO INSURE THAT  THE  DATA 
*         WAS RECORDED  ON THE SURFACE WHERE EXPECTED.  DATA IS WRITTEN 
*         ON THE CE CYLINDER USING THE DEMA PATH. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER. 
*         3.  THE OUTPUT BUFFER IS FILLED WITH RANDOM DATA. 
*         4.  TRANSMIT OUTPUT BUFFER TO ESM (SYSWR ESM).
*         5.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         6.  WRITE CODED SECTORS FROM ESM, 1/1 INTERLACE, TRACK MODE.
*         7.  INCREMENT TRACK NUMBER AND REPEAT  ABOVE  SEQUENCE  UNTIL 
*             ALL 10D TRACKS HAVE BEEN WRITTEN. 
*         8.  REPEAT MODULE LOOPS ON STEPS 1-7. 
/ 
*         ENTRY - 
*         AN 885-4X DRIVE IS REQUIRED.
*         A 7155-401 CONTROLLER IS REQUIRED.
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = ESM BLOCK INDEX 
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
* 
1  FORMAT DH823 - WRITE PREALLOC. CYL (1/1) 
2  FORMAT DH823 ERROR(S) = *DECD
5  FORMAT DH823 WRITING TRACK=*OCTB 
7  FORMAT DH823 EC=*DECD, LC=*DECD
10 FORMAT DH823 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 23D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B6 = 0                        *CURRENT TRACK ADDRESS 
   IF(B0.EQ.0) RANDOM TO OB FOR WC, START RT
   IF(B0.EQ.0) B3 = OB
   IF(B0.NE.0) RANDOM TO OB FOR WC, START B3
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
25 SYSWR ESM                     *WRITE BLOCK TO ESM
   GOTO 25 WHILE (B9+1.LT.4)     *REPEAT FOR 4 BLOCKS 
26 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5(B6) TO DISPLAY  *IF NO RM 
   B5 = 0                        *CURRENT SECTOR ADDRESS
   B4 = 40B                      *NUMBER OF SECTORS TO WRITE
   B8 = 33B                      *WRITE FROM ESM CODED
   WRITE FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 72
30 GOTO 26 WHILE (B6+1.LT.10D)   *REPEAT FOR ALL TRACKS 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.AND.4077.NE.4012)GOTO 74  *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 30 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 30    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                 *DH823 WRITE PREALLOCATED CYL. (1/1)
   MODULE DH824,DEMA3(14),LOCK
***       DH824 - READ PRE-ALLOCATED CYLINDER TEST (1/1)
**        DH824 - READ PRE-ALLOCATED CYLINDER TEST (1/1)
*         DH824 - READ PRE-ALLOCATED CYLINDER TEST (1/1)
*         ----------------------------------------------
* 
*         PURPOSE-
*         DH824 TESTS THE READ-FROM-DISK FUNCTION. DATA WAS  PREVIOUSLY 
*         WRITTEN  BY DH823.  THIS DATA WILL BE READ AND VERIFIED.  THE 
*         THE DATA WAS  WRITTEN  AT  1/1  INTERLACE  AND  READ  AT  1/1 
*         INTERLACE  TO FURTHER TEST THE ADDRESS SCHEME OF THE CONTROL- 
*         WARE AND HARDWARE.   IF  NUMEROUS  ERRORS  ARE  DETECTED  AND 
*         MODULE  DH819  RAN  CORRECTLY,  THE  DATA  MAY  NOT HAVE BEEN 
*         WRITTEN CORRECTLY BY  DH823.   DATA  IS  READ  FROM   THE  CE 
*         CYLINDER USING THE DEMA PATH. 
* 
*         METHOD -
*         1.  RESERVE DRIVE AND CONTROLLER. 
*         2.  READ CODED SECTOR TO ESM. 
*         3.  GENERATE A RANDOM  PATTERN IN OB(0-500B)  USING IB(0)  AS 
*             THE SEED. 
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  READ CODED SECTORS TO ESM, IN 1/1  INTERLACE, TRACK MODE. 
*         6.  READ DATA FROM ESM (SYSRD ESM). 
*         7.  COMPARE DATA. 
*         8.  INCREMENT  SECTOR NUMBER AND REPEAT  ABOVE SEQUENCE UNTIL 
*             ALL 40B SECTORS HAVE BEEN READ. 
*         9.  INCREMENT  TRACK  NUMBER  AND REPEAT ABOVE SEQUENCE UNTIL 
*             ALL 10D TRACKS HAVE BEEN READ.
*         10. REPEAT MODULE LOOPS ON STEPS 1-9. 
/ 
*         ENTRY - 
*         AN 885-4X DRIVE IS REQUIRED.
*         A 7155-401 CONTROLLER IS REQUIRED.
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
*         MODULE DH823 MUST BE RUN PRIOR TO DH824.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4  = NUMBER OF SECTORS TO READ.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = ESM BLOCK INDEX 
*         B11 = ERROR COUNTER.
*         B12 = SYSRD STATUS
*         WC  = BUFFER WORD COUNT.
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED -
*         IB,OB 
* 
*         REMARKS-
* 
1  FORMAT DH824 - READ PREALLOC. CYL (1/1)
2  FORMAT DH824 ERROR(S) = *DECD
3  FORMAT DH824 E0032 L*OC ESM TRANSFER ERROR (STATUS=*O) 
4  FORMAT DH824 E0031 L*OC MISCOMPARE ON RANDOM PATTERN READ
5  FORMAT DH824 READING TRACK=*OB 
7  FORMAT DH824 EC=*DECD, LC=*DECD
10 FORMAT DH824 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 24D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   BA = 0                        *SET BA TO BUFFER WORD 0 
   B0 = 0                        *INITIALIZE LOOP COUNT 
* 
/---------MODULE TEST.
* 
26 B6 = 0                        *INITIALIZE TRACK ADDRESS
   B5 = 0                        *INITIALIZE SECTOR ADDRESS 
22 B8 = 41B 
   RES DRIVE, ABT 75
   IF(ES.AND.RM.EQ.0) MSG 5 (B6) TO DISPLAY  *IF NO RM
   B8 = 24B                      *READ CODED
   READ ONE C SEC AT CYL B7 TRK B6 SEC B5, ABT 75 
   WC = 500B                     *BUFFER WORD COUNT 
   RANDOM TO OB FOR WC, START IB  *WRITE RANDOM PATT
   B6 = 0                        *INITIALIZE TRACK ADDRESS
30 B5 = 0                        *CURRENT SECTOR
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM 
32 B8 = 41B 
   RES DRIVE, ABT 74
   B4 = 1                        *NUMBER OF SECTORS TO READ 
   B8 = 35B                      *READ TO ESM CODED 
   READ TO ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 74 
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
33 B8 = 17B 
   SYSRD ESM, STATUS TO B12      *READ ON ESM BLOCK 
   IF (B12.NE.0) ERROR 05/00, GOTO 72 
   WC = 500B                     *BUFFER WORD COUNT 
   B8 = 47B 
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 33 WHILE (B9+1.LT.4)     *REPEAT FOR ALL ESM BLOCKS 
   GOTO 32 WHILE(B5+1.LT.40B)    *REPEAT FOR ALL SECTORS
34 GOTO 30 WHILE(B6+1.LT.10D)    *REPEAT FOR ALL TRACKS 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 26
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 04/01
   MSG 4(EA) TO LINE 5
   GOTO 74
72 MSG 3 (EA,B12) TO LINE 5      *ESM TRANSFER ERROR
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 34 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT
75 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 22 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 22    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                  *DH824 READ PREALLOCATED CYL. (1/1)
*ENDIF
*IF DEF,SFMD
   MODULE D8825,FMDFT(7),LOCK                                            D88
***       D8825 - CORRECTION VECTOR LOGIC TEST                           D88
**        D8825 - CORRECTION VECTOR LOGIC TEST                           D88
*         D8825 - CORRECTION VECTOR LOGIC TEST                           D88
*         ------------------------------------                           D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         THE SHORT READ CAPABILITY OF THE DISK SUBSYSTEM  IS  USED  TO  D88
*         VERIFY  THAT  THE  HARDWARE  CAN SUCCESSFULLY CORRECT UP TO 8  D88
*         BITS OF BAD DATA BUT CANNOT  CORRECT  MORE  THAN  8  BITS  OF  D88PTR4
*         BAD  DATA.  D8825 IS PRIMARILY A TEST OF THE DISK CONTROLWARE  D88
*         AND NOT THE DISK UNIT.                                         D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         3.  SEEK TO PRE-ALLOCATED CYLINDER (1512B). 
*         4.  WRITE  ONE  SECTOR WITH 476 WORDS OF ZEROS AND 4 WORDS OF 
*             7777 FOLLOWED BY WRITING 4000 INTO OB(0). 
*         5.  THEN EXECUTE A SHORTREAD FUNCTION.                         D88
*         6.  COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS.  D88
*             SHORT READ IS EXECUTED 2 TIMES.                            D88
*         7.  APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY  D88
*             THAT THE DATA WAS PROPERLY CORRECTED.                      D88
*         8.  WRITE  ONE  SECTOR WITH 476 WORDS OF ZEROS AND 4 WORDS OF 
*             7777 FOLLOWED BY WRITING 7760 INTO OB(0). 
*         9.  THEN EXECUTE A SHORTREAD FUNCTION.                         D88
*         10. COMPARE GENERAL STATUS WITH THE EXPECTED GENERAL  STATUS.  D88
*             SHORT READ IS EXECUTED 2 TIMES.                            D88
*         11. APPLY THE CORRECTION VECTOR TO THE DATA READ  AND  VERIFY  D88
*             THAT THE DATA WAS PROPERLY CORRECTED.                      D88
*         12. WRITE  ONE  SECTOR WITH 476 WORDS OF ZEROS AND 4 WORDS OF 
*             7777 FOLLOWED BY WRITING 7777 INTO OB(0). 
*         13. THEN EXECUTE A SHORTREAD FUNCTION.                         D88
*         14. COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS.  D88
*             SHORT READ IS EXECUTED 2 TIMES.                            D88
*         15. APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY  D88
*             THAT THE DATA WAS NOT CORRECTED.                           D88
*         16. WRITE  ONE  SECTOR WITH 476 WORDS OF ZEROS AND 4 WORDS OF 
*             7777 FOLLOWED BY WRITING FAILING 1 THRU 8 BITS OF A  RAN- 
*             DOM DATA PATTERN.  THE WORD THAT  THIS PATTERN IS WRITTEN 
*             INTO IS  RANDOMLY SELECTED.  THE SECTOR ADDRESS  IS  ALSO 
*             RANDOMLY SELECTED.
*         17. THEN EXECUTE A SHORTREAD FUNCTION.                         D88
*         18. COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS.  D88
*             SHORT READ IS EXECUTED 2 TIMES.                            D88
*         19. APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY  D88
*             THAT THE DATA WAS PROPERLY CORRECTED.                      D88
*         20. THIS SEQUENCE(16-19) IS REPEATED 10D TIMES.                D88
*         21. REPEAT CONDITION LOOPS ON THE CURRENT DATA PATTERN.        D88
*                                                                        D88
*         NOTE_ READ MARGINS WILL NOT BE SET BECAUSE THE SHORTREAD       D88
*               PROCESS HANDLES THIS AUTOMATICALLY.                      D88
*                                                                        D88
*         SUBTEST      PATTERN      GENERAL STATUS EXPECTED              D88
*         -------      -------      -----------------------              D88
*           1           0001  2000       0000 
*           2           7760             0000                            D88
*           3           7777             5200                            D88
*           4-13        1-8 BIT FIELD    0000                            D88
/                                                                        D88
*         ENTRY -                                                        D88
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*         D8898D - ERROR PROCESSOR FOR MODULE ERROR.                     D88
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = RANDOM PATTERN COUNT.                                    D88
*         B3  = SUBTEST INDEX.                                           D88
*         B4  = NUMBER OF WORDS TO WRITE/CORRECTION WORD INDEX/          D88
*               CHECKWORD INDEX.                                         D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK .                                          D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.             D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         IB,BO                                                          D88
*                                                                        D88
1  FORMAT D8825-COR. VECTOR LOGIC TEST                                   D88
2  FORMAT D8825 ERROR(S) = *DECD                                         D88
3  FORMAT D8825 GENERAL STATUS ACTUAL/EXPECTED MISCOMPARE                D88
4  FORMAT D8825 E0014 L*OC GEN S. E=*OCTB  A=*OCTB SUBTEST*O             D88
5  FORMAT D8825 E0015 L*OC CORRECTION VECTOR ERROR SUBTEST*O             D88
6  FORMAT D8825 SUBTEST*O LC=*DECD                                       D88
7  FORMAT D8825 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8825 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
11 FORMAT D8825 CORRECTION LOGIC FAILED TO CORRECT BAD DATA              D88
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
21 B1 = 25D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B2 = 0                        *RANDOM PATTERN COUNTER                 D88
   B3 = 0                        *SUBTEST INDEX                          D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK                          D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B10 = 4                       *WORD COUNT                             D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   WC = 502B                     *BUFFER WORD COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B3 = 1                        *SUBTEST 1                              D88
   OB(502) = 0001                *DATA
   OB(503) = 0                   *ADDRESS                                D88
   OB(504) = 0000                *EXPECTED GENERAL STATUS                D88
   GOSUB 40                      *PERFORM TEST                           D88
   IF (ES.AND.RC.EQ.RC) GOTO 24  *IF REPEAT CONDITION                    D88
30 B3 = 2                        *SUBTEST 2                              D88
   OB(502) = 7760                *DATA                                   D88
   OB(503) = 0                   *ADDRESS                                D88
   OB(504) = 0000                *EXPECTED GENERAL STATUS                D88
   GOSUB 40                      *PERFORM TEST                           D88
   IF (ES.AND.RC.EQ.RC) GOTO 30  *IF REPEAT CONDITION                    D88
32 B3 = 3                        *SUBTEST 3                              D88
   OB(502) = 7777                *DATA                                   D88
   OB(503) = 0                   *ADDRESS                                D88
   OB(504) = 5200                *EXPECTED GENERAL STATUS                D88
   GOSUB 40                      *PERFORM TEST                           D88
   IF (ES.AND.RC.EQ.RC) GOTO 32  *IF REPEAT CONDITION                    D88
34 B3 = 4                                                                D88
   OB(502) = RT                  *RANDOMLY SELECTED 1-8                  D88
   OB(502) = OB(502) AND 377     *BITS OF CORRECTABLE DATA               D88
   B5 = RT.AND.37                *RANDOM SECTOR ADDRESS                  D88
36 OB(503) = RT                                                          D88
   OB(503) = OB(503) AND 777     *RANDOM WORD ADDRESS                    D88
   IF (OB(503) GT 450B) GOTO 36  *IF ADDRESS TOO LARGE                   D88
   OB(504) = 0000                *EXPECTED GENERAL STATUS                D88
   GOSUB 40                      *PERFORM TEST                           D88
   IF (ES.AND.RC.EQ.RC) GOTO 34  *IF REPEAT CONDITION                    D88
   GOTO 34 WHILE(B2+1.LT.10D)    *IF B2.NE.10D,REPEAT RANDOM             D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------WRITE SECTOR SUBROUTINE.                                       D88
*                                                                        D88
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT             D88
   DUP 0 TO OB FOR WC            *WRITE ZEROS IN OB                      D88
   B4 = 4                        *SIZE OF CKWD.                          D88
   DUP 7777 TO OB(476) FOR B4    *WRITE CHECKWORD IN OB                  D88
   B4 = OB(503)                                                          D88
   OB(B4) = OB(502)              *WRITE BAD DATA IN OB                   D88
   IF(B3.EQ.1) OB(B4+1) = 2000   *SECOND BAD DATA WORD
   B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B4 = 1                        *NUMBER OF SECTORS TO WRITE             D88
   B8 = 30B                                                              D88
   WRITE B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                      D88
42 IF(ES.AND.RM.EQ.0) MSG 6 (B3,B10) TO DISPLAY  *IF NO RM               D88
   B8 = 26B                                                              D88
   SHORTRD CYL B7 TRK B6 SEC B5, ABT 74                                  D88
   IF (SB.XOR.OB(504) NE 0) GOTO 70  *IF GEN. STATUS ERROR               D88
   IF (B3.EQ.3) GOTO 44          *IF SUBTEST 3 IN PROGRESS               D88
   B4 = SB(13D) AND 777B         *CORRECTION ADDRESS                     D88
   BA = B4                     *BA=ADDR.OF CORRECTABLE DATA              D88
   IF (IB(B4).NE.0) GOTO 72      *IF CORRECTION ERROR                    D88
   IF (IB(B4+1).NE.0) GOTO 72    *IF CORRECTION ERROR                    D88
   GOTO 46                                                               D88
44 B4 = SB(13D) AND 777B         *CORRECTION ADDRESS                     D88
   BA = B4                     *BA=ADDR.OF CORRECTABLE DATA              D88
   IF (IB(B4).NE.7777) GOTO 72   *IF CORRECTION ERROR                    D88
   IF (IB(B4+1).NE.0) GOTO 72    *IF CORRECTION ERROR                    D88
46 GOTO 42 WHILE(B10+1.LT.2B)   *SHORT READ 2B TIMES
47 RETURN                                                                D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 00/00
   MSG 3 TO LINE 4                                                       D88
   MSG 4 (EA,OB(504),SB(0),B3) TO LINE 5                                 D88
   GOTO 73                                                               D88
72 ERROR 00/01
   MSG 11 TO LINE 4                                                      D88
   MSG 5 (EA,B3) TO LINE 5                                               D88
73 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98D                    *CALL MODULE ERROR PROCESSOR              D88
   GOTO 47 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 47 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT                             D88
   END 20                                                                D88
COMPILE                      *D8825 CORRECT.VECTOR LOGIC                 D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL825,LSFMD2(16),LOCK 
***       DL825 - CORRECTION VECTOR LOGIC TEST
**        DL825 - CORRECTION VECTOR LOGIC TEST
*         DL825 - CORRECTION VECTOR LOGIC TEST
*         ------------------------------------
* 
*         PURPOSE-
*         THE SHORT READ CAPABILITY OF THE DISK SUBSYSTEM  IS  USED  TO 
*         VERIFY  THAT  THE  HARDWARE  CAN SUCCESSFULLY CORRECT UP TO 8 
*         BITS OF BAD DATA BUT CANNOT  CORRECT  MORE  THAN  8  BITS  OF 
*         BAD  DATA.  DL825 IS PRIMARILY A TEST OF THE DISK CONTROLWARE 
*         AND NOT THE DISK UNIT.
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         3.  SEEK TO PRE-ALLOCATED CYLINDER (1512B). 
*         4.  WRITE  ONE  SECTOR WITH 476 WORDS OF ZEROS AND 4 WORDS OF 
*             7777 FOLLOWED BY WRITING 4000 INTO OB(0). 
*         5.  THEN EXECUTE A SHORTREAD FUNCTION.
*         6.  COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS. 
*             SHORT READ IS EXECUTED 2 TIMES. 
*         7.  APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY 
*             THAT THE DATA WAS PROPERLY CORRECTED. 
*         8.  WRITE  ONE  SECTOR WITH 476 WORDS OF ZEROS AND 4 WORDS OF 
*             7777 FOLLOWED BY WRITING 7760 INTO OB(0). 
*         9.  THEN EXECUTE A SHORTREAD FUNCTION.
*         10. COMPARE GENERAL STATUS WITH THE EXPECTED GENERAL  STATUS. 
*             SHORT READ IS EXECUTED 2 TIMES. 
*         11. APPLY THE CORRECTION VECTOR TO THE DATA READ  AND  VERIFY 
*             THAT THE DATA WAS PROPERLY CORRECTED. 
*         12. WRITE  ONE  SECTOR WITH 476 WORDS OF ZEROS AND 4 WORDS OF 
*             7777 FOLLOWED BY WRITING 7777 INTO OB(0). 
*         13. THEN EXECUTE A SHORTREAD FUNCTION.
*         14. COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS. 
*             SHORT READ IS EXECUTED 2 TIMES. 
*         15. APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY 
*             THAT THE DATA WAS NOT CORRECTED.
*         16. WRITE  ONE  SECTOR WITH 476 WORDS OF ZEROS AND 4 WORDS OF 
*             7777 FOLLOWED BY WRITING FAILING 1 THRU 8 BITS OF A  RAN- 
*             DOM DATA PATTERN.  THE WORD THAT  THIS PATTERN IS WRITTEN 
*             INTO IS  RANDOMLY SELECTED.  THE SECTOR ADDRESS  IS  ALSO 
*             RANDOMLY SELECTED.
*         17. THEN EXECUTE A SHORTREAD FUNCTION.
*         18. COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS. 
*             SHORT READ IS EXECUTED 2 TIMES. 
*         19. APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY 
*             THAT THE DATA WAS PROPERLY CORRECTED. 
*         20. THIS SEQUENCE(16-19) IS REPEATED 10D TIMES. 
*         21. REPEAT CONDITION LOOPS ON THE CURRENT DATA PATTERN. 
* 
*         NOTE_ READ MARGINS WILL NOT BE SET BECAUSE THE SHORTREAD
*               PROCESS HANDLES THIS AUTOMATICALLY. 
* 
*         SUBTEST      PATTERN      GENERAL STATUS EXPECTED 
*         -------      -------      ----------------------- 
*           1           0001  2000       0000 
*           2           7760             0000 
*           3           7777             5200 
*           4-13        1-8 BIT FIELD    0000 
/ 
*         ENTRY - 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*         DL898D - ERROR PROCESSOR FOR MODULE ERROR.
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = RANDOM PATTERN COUNT. 
*         B3  = SUBTEST INDEX.
*         B4  = NUMBER OF WORDS TO WRITE/CORRECTION WORD INDEX/ 
*               CHECKWORD INDEX.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK . 
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED -
*         IB,BO 
* 
1  FORMAT DL825-COR. VECTOR LOGIC TEST
2  FORMAT DL825 ERROR(S) = *DECD
3  FORMAT DL825 GENERAL STATUS ACTUAL/EXPECTED MISCOMPARE 
4  FORMAT DL825 E0014 L*OC GEN S. E=*OCTB  A=*OCTB SUBTEST*O
5  FORMAT DL825 E0015 L*OC CORRECTION VECTOR ERROR SUBTEST*O
6  FORMAT DL825 SUBTEST*O LC=*DECD
7  FORMAT DL825 EC=*DECD, LC=*DECD
10 FORMAT DL825 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
11 FORMAT DL825 CORRECTION LOGIC FAILED TO CORRECT BAD DATA 
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 25D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B2 = 0                        *RANDOM PATTERN COUNTER
   B3 = 0                        *SUBTEST INDEX 
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B7 = 1512B                    *CURRENT CYLINDER
   B10 = 4                       *WORD COUNT
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 502B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B3 = 1                        *SUBTEST 1 
   OB(502) = 0001                *DATA
   OB(503) = 0                   *ADDRESS 
   OB(504) = 0000                *EXPECTED GENERAL STATUS 
   GOSUB 40                      *PERFORM TEST
   IF (ES.AND.RC.EQ.RC) GOTO 24  *IF REPEAT CONDITION 
30 B3 = 2                        *SUBTEST 2 
   OB(502) = 7760                *DATA
   OB(503) = 0                   *ADDRESS 
   OB(504) = 0000                *EXPECTED GENERAL STATUS 
   GOSUB 40                      *PERFORM TEST
   IF (ES.AND.RC.EQ.RC) GOTO 30  *IF REPEAT CONDITION 
32 B3 = 3                        *SUBTEST 3 
   OB(502) = 7777                *DATA
   OB(503) = 0                   *ADDRESS 
   OB(504) = 5200                *EXPECTED GENERAL STATUS 
   GOSUB 40                      *PERFORM TEST
   IF (ES.AND.RC.EQ.RC) GOTO 32  *IF REPEAT CONDITION 
34 B3 = 4 
   OB(502) = RT                  *RANDOMLY SELECTED 1-8 
   OB(502) = OB(502) AND 377     *BITS OF CORRECTABLE DATA
   B5 = RT.AND.37                *RANDOM SECTOR ADDRESS 
36 OB(503) = RT 
   OB(503) = OB(503) AND 777     *RANDOM WORD ADDRESS 
   IF (OB(503) GT 450B) GOTO 36  *IF ADDRESS TOO LARGE
   OB(504) = 0000                *EXPECTED GENERAL STATUS 
   GOSUB 40                      *PERFORM TEST
   IF (ES.AND.RC.EQ.RC) GOTO 34  *IF REPEAT CONDITION 
   GOTO 34 WHILE(B2+1.LT.10D)    *IF B2.NE.10D,REPEAT RANDOM
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------WRITE SECTOR SUBROUTINE.
* 
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   DUP 0 TO OB FOR WC            *WRITE ZEROS IN OB 
   B4 = 4                        *SIZE OF CKWD. 
   DUP 7777 TO OB(476) FOR B4    *WRITE CHECKWORD IN OB 
   B4 = OB(503) 
   OB(B4) = OB(502)              *WRITE BAD DATA IN OB
   IF(B3.EQ.1) OB(B4+1) = 2000   *SECOND BAD DATA WORD
   B8 = 41B 
   RES DRIVE, ABT 74
   B4 = 1                        *NUMBER OF SECTORS TO WRITE
   B8 = 30B 
   WRITE B4 SM SEC AT CYL B7 TRK B6 SEC B5, ABT 74
42 IF(ES.AND.RM.EQ.0) MSG 6 (B3,B10) TO DISPLAY  *IF NO RM
   B8 = 26B 
   SHORTRD CYL B7 TRK B6 SEC B5, ABT 74 
   IF (SB.XOR.OB(504) NE 0) GOTO 70  *IF GEN. STATUS ERROR
   IF (B3.EQ.3) GOTO 44          *IF SUBTEST 3 IN PROGRESS
   B4 = SB(13D) AND 777B         *CORRECTION ADDRESS
   BA = B4                     *BA=ADDR.OF CORRECTABLE DATA 
   IF (IB(B4).NE.0) GOTO 72      *IF CORRECTION ERROR 
   IF (IB(B4+1).NE.0) GOTO 72    *IF CORRECTION ERROR 
   GOTO 46
44 B4 = SB(13D) AND 777B         *CORRECTION ADDRESS
   BA = B4                     *BA=ADDR.OF CORRECTABLE DATA 
   IF (IB(B4).NE.7777) GOTO 72   *IF CORRECTION ERROR 
   IF (IB(B4+1).NE.0) GOTO 72    *IF CORRECTION ERROR 
46 GOTO 42 WHILE(B10+1.LT.2B)   *SHORT READ 2B TIMES
47 RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/00
   MSG 3 TO LINE 4
   MSG 4 (EA,OB(504),SB(0),B3) TO LINE 5
   GOTO 73
72 ERROR 00/01
   MSG 11 TO LINE 4 
   MSG 5 (EA,B3) TO LINE 5
73 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98D                    *CALL MODULE ERROR PROCESSOR 
   GOTO 47 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 47 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                      *DL825 CORRECT.VECTOR LOGIC
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH825,DEMA3(14),LOCK
***       DH825 - CORRECTION VECTOR LOGIC TEST
**        DH825 - CORRECTION VECTOR LOGIC TEST
*         DH825 - CORRECTION VECTOR LOGIC TEST
*         ------------------------------------
* 
*         PURPOSE-
*         THE SHORT READ CAPABILITY OF THE DISK SUBSYSTEM  IS  USED  TO 
*         VERIFY  THAT  THE  HARDWARE  CAN SUCCESSFULLY CORRECT UP TO 8 
*         BITS OF BAD DATA BUT CANNOT  CORRECT  MORE  THAN  8  BITS  OF 
*         BAD DATA.  DH825 PRIMARILY A TEST OF THE DISK CONTROLLER
*         AND NOT THE DISK UNIT.  THIS MODULE USES THE DEMA PATH. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE THE CONTROLLER AND 885-4X DRIVE.
*         3.  SEEK TO PRE-ALLOCATED CYLINDER (1512B). 
*         4.  WRITE FROM ESM ONE SECTOR WITH 2520 WORDS OF ZEROS AND 20 
*             WORDS OF 7777 FOLLOWED BY WRITING 4000 INTO OB(0).
*         5.  THEN EXECUTE A SHORTREAD FUNCTION.
*         6.  COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS. 
*             SHORT READ IS EXECUTED 2 TIMES. 
*         7.  APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY 
*             THAT THE DATA WAS PROPERLY CORRECTED. 
*         8.  WRITE FROM ESM ONE SECTOR WITH 2520 WORDS OF ZEROS AND 20 
*             WORDS OF 7777 FOLLOWED BY WRITING 7760 INTO OB(0).
*         9.  THEN EXECUTE A SHORTREAD FUNCTION.
*         10. COMPARE GENERAL STATUS WITH THE EXPECTED GENERAL  STATUS. 
*             SHORT READ IS EXECUTED 2 TIMES. 
*         11. APPLY THE CORRECTION VECTOR TO THE DATA READ  AND  VERIFY 
*             THAT THE DATA WAS PROPERLY CORRECTED. 
*         12. WRITE FROM ESM ONE SECTOR WITH 2520 WORDS OF ZEROS AND 20 
*             WORDS OF 7777 FOLLOWED BY WRITING 7777 INTO OB(0).
*         13. THEN EXECUTE A SHORTREAD FUNCTION.
*         14. COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS. 
*             SHORT READ IS EXECUTED 2 TIMES. 
*         15. APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY 
*             THAT THE DATA WAS NOT CORRECTED.
*         16. WRITE FROM ESM ONE SECTOR WITH 2520 WORDS OF ZEROS AND 20 
*             WORDS OF 7777 FOLLOWED BY WRITING  FAILING  1 THRU 8 BITS 
*             OF A RANDOM PATTERN.  THE WORD THAT THIS PATTERN IS WRIT- 
*             TEN INTO IS RANDOMLY SELECTED. THE SECTOR ADDRESS IS ALSO 
*             RANDOMLY SELECTED.
*         17. THEN EXECUTE A SHORTREAD FUNCTION.
*         18. COMPARE  GENERAL STATUS WITH THE EXPECTED GENERAL STATUS. 
*             SHORT READ IS EXECUTED 2 TIMES. 
*         19. APPLY  THE  CORRECTION VECTOR TO THE DATA READ AND VERIFY 
*             THAT THE DATA WAS PROPERLY CORRECTED. 
*         20. THIS SEQUENCE(16-19) IS REPEATED 10D TIMES. 
* 
*         NOTE_ READ MARGINS WILL NOT BE SET BECAUSE THE SHORTREAD
*               PROCESS HANDLES THIS AUTOMATICALLY. 
* 
*         SUBTEST      PATTERN      GENERAL STATUS EXPECTED 
*         -------      -------      ----------------------- 
*           1        NEXT 8 WORDS       0000
*                       0001
*                       0001
*                       0001
*                       0001
*                       2000
*                       2000
*                       2000
*                       2000
*           2           7760             0000 
*           3           7777             5200 
*           4-13        1-8 BIT FIELD    0000 
/ 
*         ENTRY - 
*         AN 885-4X DRIVE IS REQUIRED.
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT. 
*         DH896D - ERROR PROCESSOR FOR MODULE ERROR.
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = SUBTEST INDEX.
*         B4  = NUMBER OF WORDS TO WRITE/CORRECTION WORD INDEX/ 
*               CHECKWORD INDEX.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK . 
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = ESM BLOCK INDEX 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED -
*         IB,BO 
* 
1  FORMAT DH825 - COR. VECTOR LOGIC TEST
2  FORMAT DH825 ERROR(S) = *DECD
3  FORMAT DH825 GENERAL STATUS ACTUAL/EXPECTED MISCOMPARE 
4  FORMAT DH825 E0014 L*OC GEN S. E=*OCTB  A=*OCTB SUBTEST*O
5  FORMAT DH825 E0015 L*OC CORRECTION VECTOR ERROR SUBTEST*O
6  FORMAT DH825 SUBTEST*O LC=*DECD
7  FORMAT DH825 EC=*DECD, LC=*DECD
10 FORMAT DH825 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
11 FORMAT DH825 CORRECTION LOGIC FAILED TO CORRECT BAD DATA 
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 25D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B3 = 0                        *SUBTEST INDEX 
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B3 = 1                        *SUBTEST 1 
   IB(501) = 0                   *EXPECTED DATA 
   IB(502) = 0001                *DATA
   IB(503) = 0                   *ADDRESS 
   IB(504) = 0000                *EXPECTED GENERAL STATUS 
   GOSUB 40                      *PERFORM TEST
30 B3 = 2                        *SUBTEST 2 
   IB(501) = 0                   *EXPECTED DATA 
   IB(502) = 7760                *DATA
   IB(503) = 0                   *ADDRESS 
   IB(504) = 0000                *EXPECTED GENERAL STATUS 
   GOSUB 40                      *PERFORM TEST
32 B3 = 3                        *SUBTEST 3 
   IB(501) = 7777                *EXPECTED DATA 
   IB(502) = 7777                *DATA
   IB(503) = 0                   *ADDRESS 
   IB(504) = 5200                *EXPECTED GENERAL STATUS 
   GOSUB 40                      *PERFORM TEST
34 B3 = 4 
35 IB(501) = 0                   *EXPECTED DATA 
   IB(502) = RT                  *RANDOMLY SELECTED 1-8 
   IB(502) = IB(502) AND 377     *BITS OF CORRECTABLE DATA
   B5 = RT.AND.37                *RANDOM SECTOR ADDRESS 
36 IB(503) = RT 
   IB(503) = IB(503) AND 377     *RANDOM WORD ADDRESS 
   IF (IB(503) GT 370B) GOTO 36  *IF ADDRESS TOO LARGE
   IB(504) = 0000                *EXPECTED GENERAL STATUS 
   GOSUB 40                      *PERFORM TEST
   GOTO 35 WHILE(B3+1.LT.14D)    *IF B3.NE.14D,REPEAT RANDOM
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------WRITE SECTOR SUBROUTINE.
* 
40 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   DUP 0 TO OB FOR WC            *WRITE ZEROS IN OB 
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
41 SYSWR ESM                     *WRITE BLOCK TO ESM
   GOTO 41 WHILE (B9+1.LT.3)     *REPEAT FOR 3 BLOCKS 
   B4 = 20                       *SIZE OF CKWD. 
   DUP 7777 TO OB(460) FOR B4    *WRITE CHECKWORD IN OB 
   B4 = IB(503) 
   OB(B4) = IB(502)              *WRITE BAD DATA IN OB
   IF(B3.NE.1) GOTO 45           *IF NOT FIRST PASS 
43 OB(B4) = 0001                 *SET BAD DATA WORD 
   GOTO 43 WHILE (B4+1.LT.4)     *SET FOUR WORDS
44 OB(B4) = 2000                 *SET BAD DATA WORD 
   GOTO 44 WHILE (B4+1.LE.7)     *SET FOUR MORE WORDS 
45 SYSWR ESM                     *WRITE LAST BLOCK TO ESM 
   B8 = 41B 
   RES DRIVE, ABT 74
   B4 = 1                        *NUMBER OF SECTORS TO WRITE
   B8 = 32B                      *WRITE FROM ESM
   WRITE FROM ESM B4 SEC AT CYL B7 TRK B6 SEC B5,ABT 74 
42 IF(ES.AND.RM.EQ.0) MSG 6 (B3,B10) TO DISPLAY  *IF NO RM
   B8 = 26B 
   SHORTRD CYL B7 TRK B6 SEC B5, ABT 74 
   IF (SB.XOR.IB(504) NE 0) GOTO 70  *IF GEN. STATUS ERROR
   B4 = IB(503) + 20B            *IB ADRS OF CORR. DATA 
   BA = IB(503)                  *OB ADRS OF CORR. DATA 
   IF(IB(B4).NE.IB(501))GOTO 72  *IF CORRECTION ERROR 
   IF(IB(B4+1).NE.0)GOTO 72      *IF CORRECTION ERROR 
46 GOTO 42 WHILE(B10+1.LT.2B)   *SHORT READ 2B TIMES
47 RETURN 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 00/00
   MSG 3 TO LINE 4
   MSG 4 (EA,IB(504),SB(0),B3) TO LINE 5
   GOTO 73
72 ERROR 00/03
   MSG 11 TO LINE 4 
   MSG 5 (EA,B3) TO LINE 5
73 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96D                    *CALL MODULE ERROR PROCESSOR 
   GOTO 47 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 47 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN    *IF REPEAT MODULE 
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                      *DH825 CORRECT.VECTOR LOGIC
*ENDIF
*IF DEF,SFMD
   MODULE D8827,FMDHT(7),LOCK                                            D88
***       D8827 - WRITE VERIFY PREALLOC.CYL. AT 2/1                      D88
**        D8827 - WRITE VERIFY PREALLOC.CYL. AT 2/1                      D88
*         D8827 - WRITE VERIFY PREALLOC.CYL. AT 2/1                      D88
*         -----------------------------------------                      D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8827 PERFORMS A WRITE VERIFY OF THE TOTAL CYLINDER TO INSURE  D88
*         THAT  THE VERIFY CAPABILITY OF THE CONTROLLER AND CONTROLWARE  D88
*         ARE OPERATIONAL.  THIS DATA COMPARE  METHOD  IS  FASTER  THAN  D88
*         WRITE/READ/COMPARE  METHOD  BECAUSE  THE CONTROLWARE PERFORMS  D88
*         THE COMPARE RATHER THAN THE PP. THE PURPOSE OF THIS MODULE IS  D88
*         TO  VERIFY  THAT A  2/1 WRITE  IN  CYLINDER MODE WORKS.  THIS  D88PTR4
*         MODULE IS RUN IN CYLINDER MODE TO DETECT PROBLEMS THAT  WOULD  D88
*         NOT OCCUR IN TRACK MODE.                                       D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  WRITE OB WITH RANDOM DATA PATTERN.                         D88
*         3.  RESERVE DRIVE AND CONTROLLER.                              D88
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  WRITE CODED SECTORS IN CYLINDER MODE, 2/1.                 D88
*         6.  VERIFY 1280D SECTORS OF CODED+RANDOM DATA.                 D88
*         7.  REPEAT MODULE LOOPS ON STEPS 1-6.                          D88PTR4
/                                                                        D88
*         ENTRY -                                                        D88
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*         D8897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION.    D88
*         B4  = NUMBER OF SECTORS TO WRITE/VERIFY.                       D88
*         B5  = CURRENT SECTOR                                           D88
*         B6  = CURRENT TRACK                                            D88
*         B7  = CURRENT SECTOR                                           D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT                                        D88
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.             D88
*                                                                        D88
1  FORMAT D8827-W/VERIFY PREALLOC. CYL                                   D88
2  FORMAT D8827 ERROR(S) = *DECD                                         D88
4  FORMAT D8827 WRITING CYLINDER 1512B                                   D88
5  FORMAT D8827 VERIFY CYLINDER 1512B                                    D88PTR4
7  FORMAT D8827 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8827 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
21 B1 = 27D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   WC = 476B                     *BUFFER WORD COUNT                      D88
   BA = 4                        *SET BA TO BUFFER WORD 4 
   B0 = 0                        *INITIALIZE EXT.LOOP COUNT              D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 IF(B0.EQ.0) RANDOM TO OB(4) FOR WC, START RT                          D88
   IF(B0.EQ.0) B3 = OB(4)                                                D88
   IF(B0.NE.0) RANDOM TO OB(4) FOR WC, START B3                          D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK ADDRESS                  D88
   B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(ES.AND.RM.EQ.0) MSG 4 TO DISPLAY  *IF RM NOT SET                   D88
   B4 = 1280D                    *NUMBER OF SECTORS TO WRITE             D88
   B8 = 31B                                                              D88
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72                D88
   IF(ES.AND.RM.EQ.0) MSG 5 TO DISPLAY  *IF RM NOT SET                   D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK ADDRESS                  D88
   B4 = 1280D                   *NUMBER OF SECTORS TO VERIFY             D88
   B8 = 12B                                                              D88
   VERIFY B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72               D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT                      D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
72 IF(EC.AND.4077.NE.4012)GOTO 74  *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 74           *GET GENERAL STATUS                   D88
   STATUS,DETAIL,ABT 74            *GET DETAILED STATUS                  D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR             D88
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
COMPILE                      *D8827 W/VERIFY PREALLOC. CYL.              D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL827,LSFMD1(16),LOCK 
***       DL827 - WRITE VERIFY PREALLOC.CYL. AT 1/1 
**        DL827 - WRITE VERIFY PREALLOC.CYL. AT 2/1 
*         DL827 - WRITE VERIFY PREALLOC.CYL. AT 2/1 
*         ----------------------------------------- 
* 
*         PURPOSE-
*         DL827 PERFORMS A WRITE VERIFY OF THE TOTAL CYLINDER TO INSURE 
*         THAT  THE VERIFY CAPABILITY OF THE CONTROLLER AND CONTROLWARE 
*         ARE OPERATIONAL.  THIS DATA COMPARE  METHOD  IS  FASTER  THAN 
*         WRITE/READ/COMPARE  METHOD  BECAUSE  THE CONTROLWARE PERFORMS 
*         THE COMPARE RATHER THAN THE PP. THE PURPOSE OF THIS MODULE IS 
*         TO  VERIFY  THAT A  2/1 WRITE  IN  CYLINDER MODE WORKS.  THIS 
*         MODULE IS RUN IN CYLINDER MODE TO DETECT PROBLEMS THAT  WOULD 
*         NOT OCCUR IN TRACK MODE.
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  WRITE OB WITH RANDOM DATA PATTERN.
*         3.  RESERVE DRIVE AND CONTROLLER. 
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  WRITE CODED SECTORS IN CYLINDER MODE, 1/1.
*         6.  VERIFY 320D SECTORS OF CODED+RANDOM DATA. 
*         7.  REPEAT MODULE LOOPS ON STEPS 1-6. 
/ 
*         ENTRY - 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DL897C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE/VERIFY.
*         B5  = CURRENT SECTOR
*         B6  = CURRENT TRACK 
*         B7  = CURRENT SECTOR
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
1  FORMAT DL827-W/VERIFY PREALLOC. CYL
2  FORMAT DL827 ERROR(S) = *DECD
4  FORMAT DL827 WRITING CYLINDER 1512B
5  FORMAT DL827 VERIFY CYLINDER 1512B 
7  FORMAT DL827 EC=*DECD, LC=*DECD
10 FORMAT DL827 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 27D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   BA = 4                        *SET BA TO BUFFER WORD 4 
   B0 = 0                        *INITIALIZE EXT.LOOP COUNT 
* 
/---------MODULE TEST.
* 
24 IF(B0.EQ.0) RANDOM TO OB(0) FOR WC, START RT 
   IF(B0.EQ.0) B3 = OB(0) 
   IF(B0.NE.0) RANDOM TO OB(0) FOR WC, START B3 
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK ADDRESS 
   B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 4 TO DISPLAY  *IF RM NOT SET
   B4 = 320D                    *NUMBER OF SECTORS TO WRITE 
   B8 = 31B 
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72 
   IF(ES.AND.RM.EQ.0) MSG 5 TO DISPLAY  *IF RM NOT SET
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK ADDRESS 
   B4 = 320D                   *NUMBER OF SECTORS TO VERIFY 
   B8 = 12B 
   VERIFY B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.AND.4077.NE.4012)GOTO 74  *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DL827 W/VERIFY PREALLOC. CYL. 
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH827,DEMA3(14),LOCK
***       DH827 - WRITE VERIFY PREALLOC.CYL. AT 1/1 
**        DH827 - WRITE VERIFY PREALLOC.CYL. AT 1/1 
*         DH827 - WRITE VERIFY PREALLOC.CYL. AT 1/1 
*         ----------------------------------------- 
* 
*         PURPOSE-
*         DH827 PERFORMS A WRITE VERIFY OF THE TOTAL CYLINDER TO INSURE 
*         THAT  THE VERIFY CAPABILITY OF THE CONTROLLER AND CONTROLWARE 
*         ARE OPERATIONAL.  THIS DATA COMPARE  METHOD  IS  FASTER  THAN 
*         WRITE/READ/COMPARE  METHOD  BECAUSE  THE CONTROLWARE PERFORMS 
*         THE COMPARE RATHER THAN THE PP. THE PURPOSE OF THIS MODULE IS 
*         TO  VERIFY  THAT A  1/1 WRITE  IN  CYLINDER MODE WORKS.  THIS 
*         MODULE IS RUN IN CYLINDER MODE TO DETECT PROBLEMS THAT  WOULD 
*         NOT OCCUR IN TRACK MODE.  THIS MODULE USES THE DEMA PATH. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  WRITE ESM WITH RANDOM DATA PATTERN (SYSWR ESM). 
*         3.  RESERVE DRIVE AND CONTROLLER. 
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  WRITE FROM ESM CODED SECTORS IN CYLINDER MODE, 1/1. 
*         6.  VERIFY FROM ESM 320D SECTORS OF CODED+RANDOM DATA.
*         7.  REPEAT MODULE LOOPS ON STEPS 1-6. 
/ 
*         ENTRY - 
*         AN 885-4X DRIVE IS REQUIRED.
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE/VERIFY.
*         B5  = CURRENT SECTOR
*         B6  = CURRENT TRACK 
*         B7  = CURRENT SECTOR
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = ESM BLOCK INDEX 
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
1  FORMAT DH827 - W/VERIFY PREALLOC. CYL
2  FORMAT DH827 ERROR(S) = *DECD
4  FORMAT DH827 WRITING CYLINDER 1512B
5  FORMAT DH827 VERIFY CYLINDER 1512B 
7  FORMAT DH827 EC=*DECD, LC=*DECD
10 FORMAT DH827 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 27D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   BA = 0                        *SET BA TO BUFFER WORD 0 
   B0 = 0                        *INITIALIZE EXT.LOOP COUNT 
* 
/---------MODULE TEST.
* 
24 IF(B0.EQ.0) RANDOM TO OB FOR WC, START RT
   IF(B0.EQ.0) B3 = OB
   IF(B0.NE.0) RANDOM TO OB FOR WC, START B3
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
25 SYSWR ESM                     *WRITE BLOCK TO ESM
   GOTO 25 WHILE (B9+1.LT.4)     *REPEAT FOR 4 BLOCKS 
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK ADDRESS 
   B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 4 TO DISPLAY  *IF RM NOT SET
   B4 = 320D                     *NUMBER OF SECTORS TO WRITE
   B8 = 33B                      *WRITE FROM ESM CODED
   WRITE FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5,ABT 72 
   IF(ES.AND.RM.EQ.0) MSG 5 TO DISPLAY  *IF RM NOT SET
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK ADDRESS 
   B4 = 320D                    *NUMBER OF SECTORS TO VERIFY
   B8 = 14B                      *VERIFY FROM ESM CODED 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5,ABT 72
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *PRINT ERROR COUNT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.AND.4077.NE.4012)GOTO 74  *NOT FUNCTION REPLY ERROR
   STATUS,GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS,DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 24 WHILE (B11+1.LE.2)      *REPEAT FOR 2 ERRORS 
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DH827 W/VERIFY PREALLOC. CYL. 
*ENDIF
*IF DEF,SFMD
   MODULE D8829,FMDFT(7),LOCK                                            D88
***       D8829 - FORCE A WRITE VERIFY ERROR                             D88
**        D8829 - FORCE A WRITE VERIFY ERROR                             D88
*         D8829 - FORCE A WRITE VERIFY ERROR                             D88
*         ----------------------------------                             D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8829 CHECKS FOR LOGIC'S DETECTION OF WRITE VERIFY ERROR.  TO  D88
*         INSURE  THAT  A  WRITE  VERIFY FAILURE CAN BE DETECTED BY THE  D88
*         CONTROLLER, INCORRECT DATA IS OUTPUT FOR  ONE  SECTOR  AND  A  D88
*         WRITE VERIFY ERROR IS EXPECTED.                                D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER.                              D88
*         3.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         4.  WRITE SECTOR 0 WITH RANDOM PATTERN.                        D88
*         5.  VERIFY SECTOR 0 RANDOM DATA PATTERN.                       D88
*         6.  COMPLEMENT  WORD  40  IN  OUTPUT BUFFER TO CREATE A WRITE  D88
*             VERIFY ERROR.                                              D88
*         7.  VERIFY  THAT A WRITE VERIFY ERROR OCCURRED ON SECTOR ZERO  D88
*             OF PRE-ALLOCATED CYLINDER.  CHECK WORD 20 OF  THE  STATUS  D88
*             BUFFER FOR A 1. AND CHECK GENERAL STATUS FOR A ZERO. IF A  D88
*             FAILURE DOES NOT OCCUR, AN ERROR WILL BE REPORTED.         D88
*         8.  REPEAT MODULE LOOPS ON STEPS 2-7.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = WORD COUNT FOR COMPARE.                                  D88
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION.    D88
*         B4  = NUMBER OF SECTORS TO WRITE/VERIFY.                       D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B9  = TEMPORARY STORAGE 
*         B10 = ERROR MESSAGE INDEX.                                     D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.             D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         SB,OB                                                          D88
*                                                                        D88
1  FORMAT D8829 - FORCE W/VERIFY ERROR                                   D88
2  FORMAT D8829 ERROR(S) = *DECD                                         D88
3  FORMAT D8829 WRITE VERIFY ERROR NOT DETECTED                          D88
4  FORMAT D8829 E0016 L*OC GEN.S.*OCTB  DETAIL.S.*OCTB                   D88
5  FORMAT D8829 WRITING CYL*OCTB                                         D88
6  FORMAT D8829 FORCE WRT VERIFY ERROR                                   D88
7  FORMAT D8829 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8829 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
21 B1 = 29D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B2 = 1                        *WORD COUNT FOR COMPARE                 D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   WC = 476B                     *BUFFER WORD COUNT                      D88
   BA = 20                      *SET BA TO WORD 20 OF BUFFER
   B0 = 0                        *INITIALIZE LOOP COUNT                  D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(B0.EQ.0) RANDOM TO OB(4) FOR WC, START RT                          D88
   IF(B0.EQ.0) B3 = OB(4)                                                D88
   IF(B0.NE.0) RANDOM TO OB(4) FOR WC, START B3                          D88
   IF(ES.AND.RM.EQ.0) MSG 5 (B7) TO DISPLAY  *IF NO RM                   D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK                          D88
   B4 = 1                        *NUMBER OF SECTORS TO WRITE             D88
   B8 = 31B                                                              D88
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK                          D88
   B4 = 1                       *NUMBER OF SECTORS TO VERIFY             D88
   B8 = 12B                                                              D88
   VERIFY B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72               D88
*                                                                        D88
/---------FORCE A VERIFY ERROR.                                          D88
*                                                                        D88
   OB(40) = OB(40).XOR.7777B     *COMPLEMENT OB(40)                      D88
   IF(ES.AND.RM.EQ.0) MSG 6 TO DISPLAY                                   D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK                          D88
   B4 = 1                       *NUMBER OF SECTORS TO VERIFY             D88
   B8 = 0                        *B8.EQ.0 FOR NO ABT MSG
   VERIFY B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 32               D88
   GOTO 70                       *NO VERIFY ERROR FOUND                  D88
32 B8 = 04B                                                              D88
   STATUS GENERAL, ABT 74                                                D88
   OB(0) = 5000                                                          D88
   B9 = B8
   B8 = 47B 
   COMPARE SB(0) TO OB(0) FOR B2, ABT 70                                 D88
   B8 = 05B                                                              D88
   STATUS DETAIL, ABT 74                                                 D88
   OB(20) = 1                                                            D88
   B9 = B8
   B8 = 47B 
   COMPARE SB(20) TO OB(20) FOR B2, ABT 70                               D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 02/02                                                           D88
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   IF(B9.EQ.4) MSG 4(EA,SB(0)) TO LINE 5  *DISPLAY ERR.MSG. 
   IF(B9.EQ.5) MSG 4(EA,SB(0),SB(20)) TO LINE 5 
   CALL 98C                    *CALL MODULE ERROR PROCESSOR              D88
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
72 IF(EC.AND.4077.NE.4012) GOTO 74
   STATUS GENERAL, ABT 74                                                D88
   STATUS DETAIL, ABT 74                                                 D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL MODULE ERROR PROCESSOR 
   B2 = 1                        *WORD COUNT FOR COMPARE
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
COMPILE                      *D8829 FORCE WRITE/VERIFY ERROR             D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL829,LSFMD2(16),LOCK 
***       DL829 - FORCE A WRITE VERIFY ERROR
**        DL829 - FORCE A WRITE VERIFY ERROR
*         DL829 - FORCE A WRITE VERIFY ERROR
*         ----------------------------------
* 
*         PURPOSE-
*         DL829 CHECKS FOR LOGIC'S DETECTION OF WRITE VERIFY ERROR.  TO 
*         INSURE  THAT  A  WRITE  VERIFY FAILURE CAN BE DETECTED BY THE 
*         CONTROLLER, INCORRECT DATA IS OUTPUT FOR  ONE  SECTOR  AND  A 
*         WRITE VERIFY ERROR IS EXPECTED. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER. 
*         3.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         4.  WRITE SECTOR 0 WITH RANDOM PATTERN. 
*         5.  VERIFY SECTOR 0 RANDOM DATA PATTERN.
*         6.  COMPLEMENT  WORD  40  IN  OUTPUT BUFFER TO CREATE A WRITE 
*             VERIFY ERROR. 
*         7.  VERIFY  THAT A WRITE VERIFY ERROR OCCURRED ON SECTOR ZERO 
*             OF PRE-ALLOCATED CYLINDER.  CHECK WORD 20 OF  THE  STATUS 
*             BUFFER FOR A 1. AND CHECK GENERAL STATUS FOR A ZERO. IF A 
*             FAILURE DOES NOT OCCUR, AN ERROR WILL BE REPORTED.
*         8.  REPEAT MODULE LOOPS ON STEPS 2-7. 
/ 
*         ENTRY - 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = WORD COUNT FOR COMPARE. 
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE/VERIFY.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = TEMPORARY STORAGE 
*         B10 = ERROR MESSAGE INDEX.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED -
*         SB,OB 
* 
1  FORMAT DL829 - FORCE W/VERIFY ERROR
2  FORMAT DL829 ERROR(S) = *DECD
3  FORMAT DL829 WRITE VERIFY ERROR NOT DETECTED 
4  FORMAT DL829 E0016 L*OC GEN.S.*OCTB  DETAIL.S.*OCTB
5  FORMAT DL829 WRITING CYL*OCTB
6  FORMAT DL829 FORCE WRT VERIFY ERROR
7  FORMAT DL829 EC=*DECD, LC=*DECD
10 FORMAT DL829 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 29D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B2 = 1                        *WORD COUNT FOR COMPARE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   BA = 20                      *SET BA TO WORD 20 OF BUFFER
   B0 = 0                        *INITIALIZE LOOP COUNT 
* 
/---------MODULE TEST.
* 
24 B8 = 41B 
   RES DRIVE, ABT 74
   IF(B0.EQ.0) RANDOM TO OB(0) FOR WC, START RT 
   IF(B0.EQ.0) B3 = OB(0) 
   IF(B0.NE.0) RANDOM TO OB(0) FOR WC, START B3 
   IF(ES.AND.RM.EQ.0) MSG 5 (B7) TO DISPLAY  *IF NO RM
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 1                        *NUMBER OF SECTORS TO WRITE
   B8 = 31B 
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74 
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 1                       *NUMBER OF SECTORS TO VERIFY
   B8 = 12B 
   VERIFY B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72
* 
/---------FORCE A VERIFY ERROR. 
* 
   OB(40) = OB(40).XOR.7777B     *COMPLEMENT OB(40) 
   IF(ES.AND.RM.EQ.0) MSG 6 TO DISPLAY
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 1                       *NUMBER OF SECTORS TO VERIFY
   B8 = 0                        *B8.EQ.0 FOR NO ABT MSG
   VERIFY B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 32
   GOTO 70                       *NO VERIFY ERROR FOUND 
32 B8 = 04B 
   STATUS GENERAL, ABT 74 
   OB(0) = 5000 
   B9 = B8
   B8 = 47B 
   COMPARE SB(0) TO OB(0) FOR B2, ABT 70
   B8 = 05B 
   STATUS DETAIL, ABT 74
   OB(20) = 11
   B9 = B8
   B8 = 47B 
   COMPARE SB(20) TO OB(20) FOR B2, ABT 70
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 02/02
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   IF(B9.EQ.4) MSG 4(EA,SB(0)) TO LINE 5  *DISPLAY ERR.MSG. 
   IF(B9.EQ.5) MSG 4(EA,SB(0),SB(20)) TO LINE 5 
   CALL 98C                    *CALL MODULE ERROR PROCESSOR 
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.AND.4077.NE.4012) GOTO 74
   STATUS GENERAL, ABT 74 
   STATUS DETAIL, ABT 74
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL MODULE ERROR PROCESSOR 
   B2 = 1                        *WORD COUNT FOR COMPARE
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DL829 FORCE WRITE/VERIFY ERROR
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH829,DEMA3(14),LOCK
***       DH829 - FORCE A WRITE VERIFY ERROR
**        DH829 - FORCE A WRITE VERIFY ERROR
*         DH829 - FORCE A WRITE VERIFY ERROR
*         ----------------------------------
* 
*         PURPOSE-
*         DH829 CHECKS FOR LOGIC-S DETECTION OF WRITE VERIFY ERROR.  TO 
*         INSURE  THAT  A  WRITE  VERIFY FAILURE CAN BE DETECTED BY THE 
*         CONTROLLER, INCORRECT DATA IS OUTPUT FOR  ONE  SECTOR  AND  A 
*         WRITE VERIFY ERROR IS  EXPECTED.  THIS  MODULE USES  THE DEMA 
*         PATH. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  WRITE ESM WITH RANDOM DATA PATTERN (SYSWR ESM). 
*         3.  RESERVE DRIVE AND CONTROLLER. 
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  WRITE FROM ESM SECTOR 0 WITH RANDOM PATTERN.
*         6.  VERIFY FROM ESM SECTOR 0 RANDOM DATA PATTERN. 
*         7.  COMPLEMENT WORD  40 IN EXTENDED  MEMORY TO CREATE A WRITE 
*             VERIFY ERROR. 
*         8.  VERIFY  THAT A WRITE VERIFY ERROR OCCURRED ON SECTOR ZERO 
*             OF PRE-ALLOCATED CYLINDER.  IF NO ABORT OCCURRED  ON  THE 
*             VERIFY  COMMAND, REPORT AN ERROR INDICATING THAT A VERIFY 
*             ERROR WAS NOT DETECTED.  IF THE VERIFY  COMMAND  ABORTED, 
*             VERIFY  THAT  ABORTED  BECAUSE IT DETECTED A WRITE VERIFY 
*             ERROR.  IF IT ABORTED FOR  ANY  OTHER  REASON  BESIDES  A 
*             WRITE VERIFY ERROR, REPORT THE ERROR. 
*         9.  REPEAT MODULE LOOPS ON STEPS 2-8. 
/ 
*         ENTRY - 
*         AN 885-4X DRIVE IS REQUIRED.
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B2  = WORD COUNT FOR COMPARE. 
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE/VERIFY.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = ESM BLOCK INDEX 
*         B10 = ERROR MESSAGE INDEX.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT.
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED -
*         SB,OB 
* 
1  FORMAT DH829 - FORCE W/VERIFY ERROR
2  FORMAT DH829 ERROR(S) = *DECD
3  FORMAT DH829 E0016 L*OC WRITE VERIFY ERROR NOT DETECTED
5  FORMAT DH829 WRITING CYL*OCTB
6  FORMAT DH829 FORCE WRT VERIFY ERROR
7  FORMAT DH829 EC=*DECD, LC=*DECD
10 FORMAT DH829 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 29D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B2 = 1                        *WORD COUNT FOR COMPARE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   BA = 20                      *SET BA TO WORD 20 OF BUFFER
   B0 = 0                        *INITIALIZE LOOP COUNT 
* 
/---------MODULE TEST.
* 
24 IF(B0.EQ.0) RANDOM TO OB FOR WC, START RT
   IF(B0.EQ.0) B3 = OB
   IF(B0.NE.0) RANDOM TO OB FOR WC, START B3
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
25 SYSWR ESM                     *WRITE BLOCK TO ESM
   GOTO 25 WHILE (B9+1.LT.4)     *REPEAT FOR 4 BLOCKS 
   IF(ES.AND.RM.EQ.0) MSG 5 (B7) TO DISPLAY  *IF NO RM
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 1                        *NUMBER OF SECTORS TO WRITE
   B8 = 41B 
   RES DRIVE, ABT 74
   B8 = 33B                      *WRITE FROM ESM CODED
   WRITE FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5,ABT 74 
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 1                       *NUMBER OF SECTORS TO VERIFY
   B8 = 14B                      *VERIFY FROM ESM CODED 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5,ABT 74
* 
/---------FORCE A VERIFY ERROR. 
* 
   OB(40) = OB(40).XOR.7777B     *COMPLEMENT OB(40) 
   SYSREW ESM                    *INIT. ESM ADRS
   SYSWR ESM                     *WRITE BAD BLOCK TO ESM
   IF(ES.AND.RM.EQ.0) MSG 6 TO DISPLAY
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 1                       *NUMBER OF SECTORS TO VERIFY
   B8 = 41B 
   RES DRIVE, ABT 74
   B8 = 0                        *B8.EQ.0 FOR NO ABT MSG
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5,ABT 32
   GOTO 70                       *NO VERIFY ERROR FOUND 
32 IF(SB.NE.5000) GOTO 74        *NOT WRITE VERIFY ERROR
   IF(SB(21).AND.2.EQ.0)GOTO 74  *IF NOT DATA FIELD ERROR 
   IF(SB(20).AND.1.EQ.0)GOTO 74  *IF NOT WRITE VERIFY ERROR 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS MODULE DETECTED ERRORS. 
* 
70 ERROR 2/0                     *NO WRITE VERIFY ERROR 
    MSG 3 (EA) TO LINE 5         *DISPLAY ERROR MESSAGE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 24 WHILE (B11+1.LE.2)      *REPEAT FOR 2 ERRORS 
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DH829 FORCE WRITE/VERIFY ERROR
*ENDIF
*IF DEF,PFMD,4
   MODULE DH831,DEMA2(14),LOCK
***       DH831 - READ CHECKWORD TEST 
**        DH831 - READ CHECKWORD TEST 
*         DH831 - READ CHECKWORD TEST 
*IF DEF,SFMD,4
   MODULE D8831,FMDFT(7),LOCK                                            D88
***       D8831 - READ CHECKWORD TEST                                    D88
**        D8831 - READ CHECKWORD TEST                                    D88
*         D8831 - READ CHECKWORD TEST                                    D88
*IF DEF,LSFMD,4 
   MODULE DL831,LSFMD2(16),LOCK 
***       DL831 - READ CHECKWORD TEST 
**        DL831 - READ CHECKWORD TEST 
*         DL831 - READ CHECKWORD TEST 
*         ---------------------------                                    D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH831 READS CHECKWORDS OF THE PREALLOCATED  CYLINDER  AT  2/1 
*IF DEF,SFMD,1
*         D8831 READS CHECKWORDS OF THE PREALLOCATED  CYLINDER  AT  1/1  D88
*IF DEF,LSFMD,1 
*         DL831 READS CHECKWORDS OF THE PREALLOCATED  CYLINDER  AT  1/1 
*         INTERLACE.   THIS TEST VERIFIES THE ABILITY OF THE CONTROLLER  D88
*         AND CONTROLWARE TO PERFORM A READ  CHECKWORD  SEQUENCE.   THE  D88
*         READ  CHECKWORD  IS  PERFORMED  ON  THE  CHECKWORD PREVIOUSLY  D88
*IF DEF,PFMD,1
*         WRITTEN BY MODULE DH829 SO THAT THE DATA IS VERIFIED FOR  THE 
*IF DEF,SFMD,1
*         WRITTEN BY MODULE D8829 SO THAT THE DATA IS VERIFIED FOR  THE  D88
*IF DEF,LSFMD,1 
*         WRITTEN BY MODULE DL829 SO THAT THE DATA IS VERIFIED FOR  THE 
*         SECOND TIME.                                                   D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  RESERVE DRIVE AND CONTROLLER.                              D88
*         2.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*IF DEF,PFMD,1
*         3.  READ  CHECKWORD  THE  FULL  CYLINDER  IN  2/1  INTERLACE, 
*IF DEF,SFMD,1
*         3.  READ  CHECKWORD  THE  FULL  CYLINDER  IN  1/1  INTERLACE, 
*IF DEF,LSFMD,1 
*         3.  READ  CHECKWORD  THE  FULL  CYLINDER  IN  1/1  INTERLACE,  D88
*             CYLINDER MODE.                                             D88
*         4.  REPEAT THE ENTIRE SEQUENCE RE-SETTING  THE  READ  MARGINS  D88
*             UNTIL  ALL  9  READ  MARGIN  CONDITIONS  HAVE  BEEN USED.  D88
*             CHANNEL IS RELEASED AT THE END OF CYLINDER.                D88
*         5.  REPEAT MODULE LOOPS ON STEPS 1-4.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B4  = NUMBER OF SECTORS TO WRITE.                              D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B9  = READ MARGIN CONDITION.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH831 - READ CHECKWORD
2  FORMAT DH831 ERROR(S) = *DECD
5  FORMAT DH831 READCHECKWORD,MARGIN*O
7  FORMAT DH831 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8831 - READ CHECKWORD                                         D88
2  FORMAT D8831 ERROR(S) = *DECD                                         D88
5  FORMAT D8831 READCHECKWORD,MARGIN*O                                   D88
7  FORMAT D8831 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,4 
1  FORMAT DL831 - READ CHECKWORD
2  FORMAT DL831 ERROR(S) = *DECD
5  FORMAT DL831 READCHECKWORD,MARGIN*O
7  FORMAT DL831 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 31D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B9 = 0                        *SET FIRST READ MARGIN                  D88
26 B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK                          D88
   B8 = 43B 
   MARGINS B9, ABT 74            *SET READ MARGINS                       D88
   B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(ES.AND.RM.EQ.0) MSG 5(B9) TO DISPLAY  *IF NO RM                    D88
*IF DEF,PFMD,1
   B4 = 320D                     *NUMBER OF SECTORS TO READ 
*IF DEF,SFMD,1
   B4 = 1280D                    *NUMBER OF SECTORS TO READ              D88
*IF DEF,LSFMD,1 
   B4 = 320D                   *NUMBER OF SECTORS TO READ 
   B8 = 25B                                                              D88
   READCW B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                     D88
   GOSUB 60                      *SET READ MARGINS                       D88
30 GOTO 26 WHILE(B9+0.LT.23)     *SET ALL READ MARGINS                   D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------SET READ MARGINS.                                              D88
*                                                                        D88
60 IF(B9.NE.2) GOTO 62                                                   D88
   B9 = 10                       *CHANGE READ STROBE MARGIN              D88
   RETURN                                                                D88
62 IF(B9.NE.12) GOTO 64                                                  D88
   B9 = 20                       *CHANGE READ STROBE MARGIN              D88
   RETURN                                                                D88
64 B9 = B9+1                     *CHANGE READ OFFSET MARGIN              D88
   RETURN                                                                D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 30 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 30    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH831 READ CHECKWORD
*IF DEF,SFMD,1
COMPILE                      *D8831 READ CHECKWORD                       D88
*IF DEF,LSFMD,1 
COMPILE                      *DL831 READ CHECKWORD
*IF DEF,PFMD,4
   MODULE DH833,DEMA2(14),LOCK
***       DH833 - RANDOM SEEK TEST
**        DH833 - RANDOM SEEK TEST
*         DH833 - RANDOM SEEK TEST
*IF DEF,SFMD,4
   MODULE D8833,FMDFT(7),LOCK                                            D88
***       D8833 - RANDOM SEEK TEST                                       D88
**        D8833 - RANDOM SEEK TEST                                       D88
*         D8833 - RANDOM SEEK TEST                                       D88
*IF DEF,LSFMD,4 
   MODULE DL833,LSFMD2(16),LOCK 
***       DL833 - RANDOM SEEK TEST
**        DL833 - RANDOM SEEK TEST
*         DL833 - RANDOM SEEK TEST
*         ------------------------                                       D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH833  PERFORMS  625  SEEKS  FROM  RANDOM  CYLINDERS  TO  THE 
*IF DEF,SFMD,1
*         D8833  PERFORMS  625  SEEKS  FROM  RANDOM  CYLINDERS  TO  THE  D88
*IF DEF,LSFMD,1 
*         DL833  PERFORMS  625  SEEKS  FROM  RANDOM  CYLINDERS  TO  THE 
*         INNERMOST  CYLINDER  AND BACK TO THE RANDOM CYLINDER.  RETURN  D88
*         ADDRESS FUNCTION IS USED TO VERIFY THAT THE DISK  DRIVE  WENT  D88
*         TO  THE EXPECTED CYLINDER.  THIS MODULE CAN BE USED AS A HEAD  D88
*         SHAKE TEST TO BOUNCE THE HEADS AROUND AFTER ADJUSTMENTS  HAVE  D88
*         BEEN MADE.                                                     D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  WRITE 25 RANDOM CYLINDER ADDRESS (BETWEEN  ZERO  AND  THE  D88
*             MAXIMUM CYLINDER ON THE DRIVE) IN THE OUTPUT BUFFER.       D88
*         2.  RESERVE DRIVE AND CONTROLLER.                              D88
*         3.  SEEK  TO  THE FIRST RANDOM CYLINDER ADDRESS IN THE OUTPUT  D88
*             BUFFER.                                                    D88
*         4.  PERFORM A RETURN ADDRESS COMMAND PLACING THE SEEK ADDRESS  D88
*             INTO THE INPUT BUFFER WORD 0.                              D88
*IF DEF,PFMD,1
*         5.  COMPARE IB(0) WITH THE EXPECTED ADDRESS IN OB(B2).
*IF DEF,SFMD,1
*         5.  COMPARE IB(0) WITH THE EXPECTED ADDRESS IN OB(0).          D88
*IF DEF,LSFMD,1 
*         5.  COMPARE IB(0) WITH THE EXPECTED ADDRESS IN OB(0). 
*         6.  SEEK THE MAXIMUM DISK ADDRESS (1512B).                     D88
*         7.  PERFORM A RETURN ADDRESS COMMAND PLACING THE SEEK ADDRESS  D88
*             INTO THE INPUT BUFFER WORD 0.                              D88
*         8.  COMPARE IB(0) WITH 1512B.                                  D88
*         9.  REPEAT ABOVE SEQUENCE FOR SAME B2 CYLINDER- 2 TIMES.       D88
*         10. REPEAT  ABOVE SEQUENCE FOR EACH OF THE 25 RANDOM CYLINDER  D88
*             ADDRESSES IN THE OUTPUT BUFFER.  THE CHANNEL IS  RELEASED  D88
*             AT THE END OF EACH CYLINDER SEEK.                          D88
*         11. REPEAT MODULE LOOPS ON STEPS 1-10.                         D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,2
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*         DH898D - ERROR PROCESSOR FOR MODULE ERROR.
*IF DEF,SFMD,2
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*         D8898D - ERROR PROCESSOR FOR MODULE ERROR.                     D88
*IF DEF,LSFMD,2 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*         DL898D - ERROR PROCESSOR FOR MODULE ERROR.
*                                                                        D88
*         REGISTER USED -                                                D88
*         B0  = EXTERNAL LOOP COUNTER                                    D88
*         B1  = MODULE NUMBER.                                           D88
*         B2  = CYLINDER ADDRESS COUNT.                                  D88
*         B3  = ERROR COUNTER.                                           D88
*         B4  = NUMBER OF SECTORS TO EXECUTE.                            D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT                                        D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         IB                                                             D88
*                                                                        D88
*IF DEF,PFMD,7
1  FORMAT DH833 - RANDOM SEEK 
2  FORMAT DH833 ERROR(S) = *DECD
3  FORMAT DH833 SEEK ADDRESS MISCOMPARE 
4  FORMAT DH833 E0017 L*OC SEEK ERROR    E*OCTB     A*OCTB
5  FORMAT DH833 CYL=*OCTB LC=*DECD
7  FORMAT DH833 EC=*DECD, LC=*DECD
10 FORMAT DH833 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,SFMD,7
1  FORMAT D8833 - RANDOM SEEK                                            D88
2  FORMAT D8833 ERROR(S) = *DECD                                         D88
3  FORMAT D8833 SEEK ADDRESS MISCOMPARE                                  D88
4  FORMAT D8833 E0017 L*OC SEEK ERROR    E*OCTB     A*OCTB               D88
5  FORMAT D8833 CYL=*OCTB LC=*DECD                                       D88
7  FORMAT D8833 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8833 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*IF DEF,LSFMD,7 
1  FORMAT DL833 - RANDOM SEEK 
2  FORMAT DL833 ERROR(S) = *DECD
3  FORMAT DL833 SEEK ADDRESS MISCOMPARE 
4  FORMAT DL833 E0017 L*OC SEEK ERROR    E*OCTB     A*OCTB
5  FORMAT DL833 CYL=*OCTB LC=*DECD
7  FORMAT DL833 EC=*DECD, LC=*DECD
10 FORMAT DL833 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
21 B1 = 33D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK                          D88
   B7 = 1512B                    *MAX. CYL. ADDRESS                      D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   B0 = 0                        *INITIALIZE EXT.LOOP COUNT              D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
   B10 = 0                       *INITIALIZE INT.LOOP COUNT              D88
*                                                                        D88
/---------GENERATE RANDOM DATA PATTERN.                                  D88
*                                                                        D88
   B2 = 0                        *CYLINDER ADDRESS COUNT                 D88
26 RANDOM TO OB(B2) FOR 1, START RT  *WRITE CYL NO. IN OB                D88
   IF (OB(B2).GT.B7) GOTO 26     *IF CYLINDER TOO LARGE                  D88
   GOTO 26 WHILE (B2+1.LE.25D)   *NUMBER OF NEW SEEKS                    D88
30 B2 = 0                      *INITIALIZE CYLINDER COUNTER              D88
*                                                                        D88
/---------CONTINUE MODULE TEST.                                          D88
*                                                                        D88
32 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B7 = OB(B2)                   *SET RANDOM CYLINDER                    D88
   IF(ES.AND.RM.EQ.0) MSG 5 (B7,B10) TO DISPLAY  *IF NO RM               D88
   B8 = 44B                                                              D88
   SEEK CYL B7 TRK B6 SEC B5, ABT 74  *SEEK TO RANDOM CYL.               D88
   B8 = 03B                                                              D88
   RTNADDR TO IB, ABT 74     *STORE RANDOM CYL ADDRESS IN IB             D88
   IF (IB.NE.OB(B2)) GOTO 70  *IF CYLINDER ADDR. MISCOMPARE              D88
   IF(ES.AND.RM.EQ.0) MSG 5 (B7 B6 B5) TO DISPLAY  *IF NO RM             D88
   B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B8 = 44B                                                              D88
   SEEK CYL B7 TRK B6 SEC B5, ABT 74  *SEEK CYLINDER 1512B               D88
   B8 = 03B                                                              D88
   RTNADDR TO IB, ABT 74     *STORE RANDOM CYL ADDRESS IN IB             D88
   IF (IB.NE.B7) GOTO 70     *IF CYLINDER ADDRESS MISCOMPARE             D88
   GOTO 32 WHILE(B10+1.LT.2B)    *LOOP 10D TIMES ON CYLINDER             D88
36 B10 = 0                   *INITIALIZE INTERNAL LOOP COUNT             D88
   GOTO 32 WHILE(B2+1.LE.25D)    *REPEAT SEQUENCE FOR 25 CYL             D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                 *INCREMENT EXTERNAL LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY  *DISPLAY ERROR COUNT,LOOP COUNT             D88
   GOTO 30                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 03/00
   MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   MSG 3 TO LINE 4                                                       D88
   IF(B7.NE.1512B) MSG 4(EA,OB(B2),IB) TO LINE 5                         D88
   IF(B7.EQ.1512B) MSG 4(EA,B7,IB) TO LINE 5                             D88
   CALL 98D                    *CALL MODULE ERROR PROCESSOR              D88
   GOTO 36 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 36    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 36 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 36    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH833 RANDOM SEEK 
*IF DEF,SFMD,1
COMPILE                      *D8833 RANDOM SEEK                          D88
*IF DEF,LSFMD,1 
COMPILE                      *DL833 RANDOM SEEK 
*IF DEF,SFMD
   MODULE D8835,FMDFT(7),LOCK                                            D88
***       D8835 - WRITE CODED CYLINDER TEST                              D88
**        D8835 - WRITE CODED CYLINDER TEST                              D88
*         D8835 - WRITE CODED CYLINDER TEST                              D88
*         ---------------------------------                              D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         CYLINDER MODE WILL PERFORM WRITE CYLINDER FASTER  THAN  TRACK  D88
*         MODE,  CREATING  A  WORST  CASE  CONDITION  TO  ENHANCE ERROR  D88
*         DETECTION.  WHEN D8835 WRITES CODED DATA,  EACH  SECTOR  WILL  D88
*         CONTAIN  UNIQUE  DATA  WHICH  WILL  MAKE A READ ERROR EASY TO  D88
*         ASSOCIATE WITH THE FAILING ADDRESS.  THIS TEST IS PRIMARILY A  D88
*         TEST  OF THE AUTOMATIC ADDRESS INCREMENTING PROCESS PERFORMED  D88
*         BY THE CONTROLWARE IN CYLINDER MODE.  THIS IS THE FIRST  TIME  D88
*         1/1 INTERLACE  IN  CYLINDER MODE HAS BEEN USED DURING A WRITE  D88
*         OPERATION.                                                     D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER.                              D88
*         3.  WRITE  476B  WORDS  OF  RANDOM  DATA BEGINNING WITH WORDS  D88
*             OB(4).                                                     D88
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  WRITE CODED SECTORS IN 1/1 CYLINDER MODE. THE CHANNEL  IS  D88
*             RELEASED AT THE END OF PRE-ALLOCATED CYLINDER.             D88
*         6.  REPEAT CONDITION LOOPS ON THE CYLINDER.                    D88
/                                                                        D88
*         ENTRY -                                                        D88
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION.    D88
*         B4  = NUMBER OF SECTORS TO WRITE.                              D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT                                        D88
*                                                                        D88
1  FORMAT D8835 - WRITE CODED CYLINDER                                   D88
2  FORMAT D8835 ERROR(S) = *DECD                                         D88
5  FORMAT D8835 WRITE CODED CYL=*OCTB                                    D88
7  FORMAT D8835 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8835 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
21 B1 = 35D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   WC = 476B                     *BUFFER WORD COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 IF(B0.EQ.0) RANDOM TO OB(4) FOR WC, START RT                          D88
   IF(B0.EQ.0) B3 = OB(4)                                                D88
   IF(B0.NE.0) RANDOM TO OB(4) FOR WC, START B3                          D88
   B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(ES.AND.RM.EQ.0) MSG 5 (B7) TO DISPLAY  *IF NO RM                   D88
   B5 = 0                        *CURRENT SECTOR                         D88
   B6 = 0                        *CURRENT TRACK                          D88
   B4 = 1280D                    *NUMBER OF SECTORS TO WRITE             D88
   B8 = 31B                                                              D88
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72                D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
72 IF(EC.AND.4077.NE.4012)GOTO 74  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
COMPILE                      *D8835 WRITE CODED CYLINDER                 D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL835,LSFMD2(16),LOCK 
***       DL835 - WRITE CODED CYLINDER TEST 
**        DL835 - WRITE CODED CYLINDER TEST 
*         DL835 - WRITE CODED CYLINDER TEST 
*         --------------------------------- 
* 
*         PURPOSE-
*         CYLINDER MODE WILL PERFORM WRITE CYLINDER FASTER  THAN  TRACK 
*         MODE,  CREATING  A  WORST  CASE  CONDITION  TO  ENHANCE ERROR 
*         DETECTION.  WHEN DL835 WRITES CODED DATA,  EACH  SECTOR  WILL 
*         CONTAIN  UNIQUE  DATA  WHICH  WILL  MAKE A READ ERROR EASY TO 
*         ASSOCIATE WITH THE FAILING ADDRESS.  THIS TEST IS PRIMARILY A 
*         TEST  OF THE AUTOMATIC ADDRESS INCREMENTING PROCESS PERFORMED 
*         BY THE CONTROLWARE IN CYLINDER MODE.  THIS IS THE FIRST  TIME 
*         1/1 INTERLACE  IN  CYLINDER MODE HAS BEEN USED DURING A WRITE 
*         OPERATION.
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER. 
*         3.  WRITE  500B  WORDS  OF  RANDOM  DATA BEGINNING WITH WORDS 
*             OB(0).
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  WRITE CODED SECTORS IN 1/1 CYLINDER MODE. THE CHANNEL  IS 
*             RELEASED AT THE END OF PRE-ALLOCATED CYLINDER.
*         6.  REPEAT CONDITION LOOPS ON THE CYLINDER. 
/ 
*         ENTRY - 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
* 
1  FORMAT DL835 - WRITE CODED CYLINDER
2  FORMAT DL835 ERROR(S) = *DECD
5  FORMAT DL835 WRITE CODED CYL=*OCTB 
7  FORMAT DL835 EC=*DECD, LC=*DECD
10 FORMAT DL835 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 35D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 IF(B0.EQ.0) RANDOM TO OB(0) FOR WC, START RT 
   IF(B0.EQ.0) B3 = OB(0) 
   IF(B0.NE.0) RANDOM TO OB(0) FOR WC, START B3 
   B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B7) TO DISPLAY  *IF NO RM
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 320D                    *NUMBER OF SECTORS TO WRITE 
   B8 = 31B 
   WRITE B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.AND.4077.NE.4012)GOTO 74  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR
   B11 = B11+1                 *INCREMENT ERROR COUNT 
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DL835 WRITE CODED CYLINDER
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH835,DEMA3(14),LOCK
***       DH835 - WRITE CODED CYLINDER TEST 
**        DH835 - WRITE CODED CYLINDER TEST 
*         DH835 - WRITE CODED CYLINDER TEST 
*         --------------------------------- 
* 
*         PURPOSE-
*         CYLINDER MODE WILL PERFORM WRITE CYLINDER FASTER  THAN  TRACK 
*         MODE,  CREATING  A  WORST  CASE  CONDITION  TO  ENHANCE ERROR 
*         DETECTION.  WHEN DH835 WRITES CODED DATA,  EACH  SECTOR  WILL 
*         CONTAIN  UNIQUE  DATA  WHICH  WILL  MAKE A READ ERROR EASY TO 
*         ASSOCIATE WITH THE FAILING ADDRESS.  THIS TEST IS PRIMARILY A 
*         TEST  OF THE AUTOMATIC ADDRESS INCREMENTING PROCESS PERFORMED 
*         BY THE CONTROLWARE IN CYLINDER MODE.  THIS IS THE FIRST  TIME 
*         1/1 INTERLACE  IN  CYLINDER MODE HAS BEEN USED DURING A WRITE 
*         OPERATION.  THIS MODULE USES THE DEMA PATH. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  WRITE TO ESM  2400B  WORDS OF RANDOM  DATA BEGINNING WITH 
*             WORDS OB(0) (SYSWR ESM).
*         3.  RESERVE DRIVE AND CONTROLLER. 
*         4.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         5.  WRITE FROM  ESM  CODED SECTORS IN 1/1 CYLINDER MODE.  THE 
*             CHANNEL IS RELEASED AT THE END OF PRE-ALLOCATED CYLINDER. 
*         6.  REPEAT CONDITION LOOPS ON THE CYLINDER. 
/ 
*         ENTRY - 
*         AN 885-4X DRIVE IS REQUIRED.
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B3  = RANDOM NUMBER SEED SAVED FOR REPEAT MODULE CONDITION. 
*         B4  = NUMBER OF SECTORS TO WRITE. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = ESM BLOCK INDEX 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
* 
1  FORMAT DH835 - WRITE CODED CYLINDER
2  FORMAT DH835 ERROR(S) = *DECD
5  FORMAT DH835 WRITE CODED CYL=*OCTB 
7  FORMAT DH835 EC=*DECD, LC=*DECD
10 FORMAT DH835 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 35D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 IF(B0.EQ.0) RANDOM TO OB FOR WC, START RT
   IF(B0.EQ.0) B3 = OB
   IF(B0.NE.0) RANDOM TO OB FOR WC, START B3
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
25 SYSWR ESM                     *WRITE BLOCK TO ESM
   GOTO 25 WHILE (B9+1.LT.4)     *REPEAT FOR 4 BLOCKS 
   B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B7) TO DISPLAY  *IF NO RM
   B5 = 0                        *CURRENT SECTOR
   B6 = 0                        *CURRENT TRACK 
   B4 = 320D                     *NUMBER OF SECTORS TO WRITE
   B8 = 33B                      *WRITE FROM ESM CODED
   WRITE FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5,ABT 72 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.AND.4077.NE.4012)GOTO 74  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 74           *GET GENERAL STATUS
   STATUS DETAIL,ABT 74            *GET DETAILED STATUS 
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 24 WHILE (B11+1.LE.2)      *REPEAT FOR 2 ERRORS 
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DH835 WRITE CODED CYLINDER
*ENDIF
*IF DEF,SFMD
   MODULE D8837,FMDHT(7),LOCK                                            D88
***       D8837 - READ/VERIFY A CODED CYLINDER AT 2/1                    D88
**        D8837 - READ/VERIFY A CODED CYLINDER AT 2/1                    D88
*         D8837 - READ/VERIFY A CODED CYLINDER AT 2/1                    D88
*         -------------------------------------------                    D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         THE PURPOSE OF D8837 IS TO VERIFY THAT THE ADDRESS CODING WAS  D88
*         CORRECTLY  WRITTEN  BY THE PREVIOUS MODULE (D8835). INTERLACE  D88
*         2/1 IS USED TO VERIFY THE 1/1 INTERLACE PROCESS.               D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER.                              D88
*         3.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         4.  READ PRERECORDED CODED SECTORS IN CYLINDER MODE THAT WERE  D88
*             WRITTEN BY MODULE D8835.                                   D88
*         5.  VERIFY CONTENTS OF OB WITH CONTENTS OF SECTOR ON PACK.     D88
*         6.  REPEAT 4,5 FOR EACH SECTOR OF THE PRE-ALLOCATED CYLINDER. 
*         7.  REPEAT MODULE LOOPS ON THE CYLINDER.                       D88
/                                                                        D88
*         ENTRY -                                                        D88
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*         D8897C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B4  = NUMBER OF SECTORS TO READ.                               D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B10 = INTERNAL LOOP COUNTER.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT                                        D88
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.             D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         IB,OB                                                          D88
*                                                                        D88
1  FORMAT D8837-READ/VERIFY C-CYLINDER                                   D88
2  FORMAT D8837 ERROR(S) = *DECD                                         D88
5  FORMAT D8837 TRK=*OB SECT=*OB                                         D88
7  FORMAT D8837 EC=*DECD, LC=*DECD                                       D88
10 FORMAT D8837 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE                    D88
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW             D88
   EXIT                                                                  D88
21 B1 = 37D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B7 = 1512B                    *CURRENT CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   WC = 476B                     *BUFFER WORD COUNT                      D88
   BA = 4                        *SET BA TO WORD 4 OF BUFFER             D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM                D88
   B4 = 1                        *NUMBER OF SECTORS TO READ              D88
   B5 = 0                    *INITIALIZE SECTOR ADDRESS                  D88PTR4
   B6 = 0                    *INITIALIZE TRACK ADDRESS                   D88PTR4
   B8 = 24B                                                              D88
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                 D88
   RANDOM TO OB(4) FOR WC, START IB(4)  *WRITE PATT IN OB                D88
   B6 = 0                        *CURRENT TRACK ADDRESS                  D88
26 B5 = 0                        *CURRENT SECTOR ADDRESS                 D88
30 IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM                D88
   B4 = 1                        *NUMBER OF SECTORS TO READ              D88
   B8 = 24B                                                              D88
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                 D88
   B4 = 1                       *NUMBER OF SECTORS TO VERIFY             D88
   B8 = 12B                                                              D88
   VERIFY B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72               D88
   GOTO 30 WHILE(B5+2.LT.40B)    *READ ALL EVEN SECTORS                  D88
   IF(B5.EQ.41) GOTO 34          *READ ALL SECTORS                       D88
   B5 = 1                        *READ ALL ODD SECTORS                   D88
   GOTO 30                                                               D88
34 GOTO 26 WHILE(B6+1.LT.50B)    *READ ALL TRACKS                        D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   EXIT                          *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
72 IF(EC.AND.4077.NE.4012) GOTO 74
   STATUS GENERAL, ABT 74                                                D88
   STATUS DETAIL, ABT 74                                                 D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR             D88
   GOTO 34 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
   END 20                                                                D88
COMPILE                      *D8837 READ/VERIFY CODED CYL.               D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL837,LSFMD1(16),LOCK 
***       DL837 - READ/VERIFY A CODED CYLINDER AT 1/1 
**        DL837 - READ/VERIFY A CODED CYLINDER AT 1/1 
*         DL837 - READ/VERIFY A CODED CYLINDER AT 1/1 
*         ------------------------------------------- 
* 
*         PURPOSE-
*         THE PURPOSE OF DL837 IS TO VERIFY THAT THE ADDRESS CODING WAS 
*         CORRECTLY  WRITTEN  BY THE PREVIOUS MODULE (DL835). INTERLACE 
*         1/1 IS USED TO VERIFY THE 1/1 INTERLACE PROCESS.
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER. 
*         3.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         4.  READ PRERECORDED CODED SECTORS IN CYLINDER MODE THAT WERE 
*             WRITTEN BY MODULE DL835.
*         5.  VERIFY CONTENTS OF OB WITH CONTENTS OF SECTOR ON PACK.
*         6.  REPEAT 4,5 FOR EACH SECTOR OF THE PRE-ALLOCATED CYLINDER. 
*         7.  REPEAT MODULE LOOPS ON THE CYLINDER.
/ 
*         ENTRY - 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DL897C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4  = NUMBER OF SECTORS TO READ.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED- 
*         IB,OB 
* 
1  FORMAT DL837-READ/VERIFY C-CYLINDER
2  FORMAT DL837 ERROR(S) = *DECD
5  FORMAT DL837 TRK=*OB SECT=*OB
7  FORMAT DL837 EC=*DECD, LC=*DECD
10 FORMAT DL837 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 37D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   BA = 4                        *SET BA TO WORD 4 OF BUFFER
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM 
   B4 = 1                        *NUMBER OF SECTORS TO READ 
   B5 = 0                    *INITIALIZE SECTOR ADDRESS 
   B6 = 0                    *INITIALIZE TRACK ADDRESS
   B8 = 24B 
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
   RANDOM TO OB(0) FOR WC, START IB(0)  *WRITE PATT IN OB 
   B6 = 0                        *CURRENT TRACK ADDRESS 
26 B5 = 0                        *CURRENT SECTOR ADDRESS
   B8 = 41B 
   RES DRIVE, ABT 74
30 IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM 
   B4 = 1                        *NUMBER OF SECTORS TO READ 
   B8 = 24B 
   READ B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74
   B4 = 1                       *NUMBER OF SECTORS TO VERIFY
   B8 = 12B 
   VERIFY B4 CODED SECTORS AT CYL B7 TRK B6 SEC B5, ABT 72
   GOTO 30 WHILE(B5+1.LT.10B)    *INCREMENT SECTOR
   IF(B5.EQ.11) GOTO 34          *READ ALL SECTORS
34 GOTO 26 WHILE(B6+1.LT.50B)    *READ ALL TRACKS 
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.AND.4077.NE.4012) GOTO 74
   STATUS GENERAL, ABT 74 
   STATUS DETAIL, ABT 74
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 34 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DL837 READ/VERIFY CODED CYL.
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH837,DEMA3(14),LOCK
***       DH837 - READ/VERIFY A CODED CYLINDER AT 1/1 
**        DH837 - READ/VERIFY A CODED CYLINDER AT 1/1 
*         DH837 - READ/VERIFY A CODED CYLINDER AT 1/1 
*         ------------------------------------------- 
* 
*         PURPOSE-
*         THE PURPOSE OF DH837 IS TO VERIFY THAT THE ADDRESS CODING WAS 
*         CORRECTLY  WRITTEN  BY THE PREVIOUS MODULE (DH835). INTERLACE 
*         1/1 IS USED TO VERIFY THE 1/1 INTERLACE PROCESS.  THIS MODULE 
*         USES THE DEMA PATH. 
* 
*         METHOD -
*         1.  IF ACCESS LEVEL IS LESS THAN 3, EXIT. 
*         2.  RESERVE DRIVE AND CONTROLLER. 
*         3.  SEEK TO THE PREALLOCATED CYLINDER (1512B).
*         4.  READ  TO ESM PRERECORDED  CODED  SECTORS IN CYLINDER MODE 
*             THAT WERE WRITTEN BY DH835. 
*         5.  WRITE VERIFY FROM ESM PRERECORDED CODED SECTORS IN CYLIN- 
*             DER MODE THAT WERE WRITTEN BY DH835.
*         6.  REPEAT MODULE LOOPS ON THE CYLINDER.
/ 
*         ENTRY - 
*         AN 885-4X DRIVE IS REQUIRED.
*         AN ESM SUBSYSTEM IS REQUIRED. 
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*         SUBMODULES REFERENCED - 
*         DH896C - ERROR PROCESSOR FOR COMMAND ABORT. 
* 
*         REGISTERS USED -
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MODULE NUMBER.
*         B4  = NUMBER OF SECTORS TO READ.
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND INDEX FOR COMMAND ABORTS. 
*         B9  = ESM BLOCK INDEX 
*         B10 = INTERNAL LOOP COUNTER.
*         B11 = ERROR COUNTER.
*         WC  = BUFFER WORD COUNT 
*         BA  = FIRST BUFFER WORD USED IN COMPARE OPERATION.
* 
*         BUFFERS USED- 
*         IB,OB 
* 
1  FORMAT DH837 - READ/VERIFY C-CYLINDER
2  FORMAT DH837 ERROR(S) = *DECD
5  FORMAT DH837 TRK=*OB SECT=*OB
7  FORMAT DH837 EC=*DECD, LC=*DECD
10 FORMAT DH837 NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
* 
/---------MODULE INITIALIZATION.
* 
20 IF(AL.GE.3) GOTO 21           *IF AL.GE.3-CONTINUE 
   MSG 10 TO DAYFILE,PRINT       *INFORM OPERATOR AL TOO LOW
   EXIT 
21 B1 = 37D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE
   B7 = 1512B                    *CURRENT CYLINDER
   B11 = 0                       *CLEAR ERROR COUNT 
   WC = 500B                     *BUFFER WORD COUNT 
   BA = 0                        *SET BA TO BUFFER WORD 0 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
/---------MODULE TEST.
* 
24 B8 = 41B 
   RES DRIVE, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 5 (B6,B5) TO DISPLAY  *IF NO RM 
   B5 = 0                    *INITIALIZE SECTOR ADDRESS 
   B6 = 0                    *INITIALIZE TRACK ADDRESS
   B4 = 320D                     *NUMBER OF SECTORS TO READ 
   B8 = 35B                      *READ TO ESM CODED 
   READ TO ESM B4 C SEC AT CYL B7 TRK B6 SEC B5, ABT 74 
   B4 = 320D                    *NUMBER OF SECTORS TO VERIFY
   B8 = 14B                      *VERIFY FROM ESM CODED 
   VERIFY FROM ESM B4 C SEC AT CYL B7 TRK B6 SEC B5,ABT 72
* 
/---------MODULE REPEAT/EXIT. 
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B11.EQ.0) EXIT             *IF NO ERRORS
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
/---------PROCESS COMMAND ABORTS. 
* 
72 IF(EC.AND.4077.NE.4012) GOTO 74
   STATUS GENERAL, ABT 74 
   STATUS DETAIL, ABT 74
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 96C                    *CALL COMMAND ABORT PROCESSOR
   GOTO 24 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   GOTO 50                       *ELSE, EXIT
   END 20 
COMPILE                      *DH837 READ/VERIFY CODED CYL.
*ENDIF
*IF DEF,PFMD,4
   MODULE DH839,DEMA2(14),LOCK
***       DH839 - WRITE CURRENT SWITCH-POINT TEST 
**        DH839 - WRITE CURRENT SWITCH-POINT TEST 
*         DH839 - WRITE CURRENT SWITCH-POINT TEST 
*IF DEF,SFMD,4
   MODULE D8839,FMDFT(7),LOCK                                            D88
***       D8839 - WRITE CURRENT SWITCH-POINT TEST                        D88
**        D8839 - WRITE CURRENT SWITCH-POINT TEST                        D88
*         D8839 - WRITE CURRENT SWITCH-POINT TEST                        D88
*IF DEF,LSFMD,4 
   MODULE DL839,LSFMD2(16),LOCK 
***       DL839 - WRITE CURRENT SWITCH-POINT TEST 
**        DL839 - WRITE CURRENT SWITCH-POINT TEST 
*         DL839 - WRITE CURRENT SWITCH-POINT TEST 
*         ---------------------------------------                        D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH839 WILL SEEK TO AND READ  THE  ADDRESS  CHECKWORD  OF  THE 
*IF DEF,SFMD,1
*         D8839 WILL SEEK TO AND READ  THE  ADDRESS  CHECKWORD  OF  THE  D88
*IF DEF,LSFMD,1 
*         DL839 WILL SEEK TO AND READ  THE  ADDRESS  CHECKWORD  OF  THE 
*         CYLINDER  ADDRESSES WHICH SEPARATE THE WRITE ZONING SWITCHING  D88
*         POINTS.  THIS MUST BE PERFORMED USING AN EVEN NUMBER AND  ODD  D88
*         NUMBER  HEAD.   THE  READ  ADDRESS CHECKWORD FUNCTION WILL BE  D88
*         PERFORMED ON ADDRESSES 0,512D,513D,842D.                       D88
*                                                                        D88
*         METHOD -                                                       D88
*IF DEF,PFMD,3
*         1.  RESERVE THE DRIVE.
*         2.  PERFORM A READ CHECKWORD OF SECTOR ZERO IN FIRST TRACK. 
*         3.  LOOP 4 TIMES. 
*IF DEF,SFMD,5
*         1.  IF ACCESS LEVEL IS LESS THAN 3, END OF CONFIDENCE TEST.    D88
*         2.  SEEK TO CYLINDER 0.                                        D88
*         3.  PERFORM  A  READ CHECKWORD OF EACH SECTOR IN FIRST TRACK.  D88
*             (A READ CHECKWORD VERIFIES BOTH THE ADDRESS AND THE  DATA  D88
*             CHECKWORD.)                                                D88
*IF DEF,LSFMD,5 
*         1.  IF ACCESS LEVEL IS LESS THAN 3, END OF CONFIDENCE TEST. 
*         2.  SEEK TO CYLINDER 0. 
*         3.  PERFORM  A  READ CHECKWORD OF EACH SECTOR IN FIRST TRACK. 
*             (A READ CHECKWORD VERIFIES BOTH THE ADDRESS AND THE  DATA 
*             CHECKWORD.) 
*IF DEF,PFMD,1
*         4.  ONLY TRACKS ZERO AND ONE ARE USED.
*IF DEF,SFMD,2
*         4.  INCREMENT TRACK NUMBER AND  REPEAT  4  UNTIL  THE  ENTIRE  D88
*             CYLINDER IS READ.                                          D88
*IF DEF,LSFMD,2 
*         4.  INCREMENT TRACK NUMBER AND  REPEAT  4  UNTIL  THE  ENTIRE 
*             CYLINDER IS READ. 
*IF DEF,PFMD,2
*         5.  THE MODULE INCREMENTS THE CYLINDER READING TRACK 0 SECTOR 
*             0, AND THEN STARTS OVER READING TRACK 1 SECTOR ZERO.
*IF DEF,SFMD,2
*         5.  REPEAT ABOVE SEQUENCE FOR CYLINDERS  512,  513  AND  842.  D88
*             THE CHANNEL IS RELEASED BETWEEN EACH TRACK.                D88
*IF DEF,LSFMD,2 
*         5.  REPEAT ABOVE SEQUENCE FOR CYLINDERS  512,  513  AND  842. 
*             THE CHANNEL IS RELEASED BETWEEN EACH TRACK. 
*         6.  REPEAT MODULE LOOPS ON STEPS 2-5.                          D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*IF DEF,SFMD,1
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR.    D88
*IF DEF,LSFMD,1 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT OR MODULE ERROR. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B4  = NUMBER OF SECTORS TO READ.                               D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B11 = ERROR COUNTER.                                           D88
*IF DEF,LSFMD,1 
          B12 = INDEX FOR SMALL SECTOR
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH839 - WRT CURRENT SWITCH TST
2  FORMAT DH839 ERROR(S) = *DECD
5  FORMAT DH839 CYL *OCTB TRACK *OCTB 
7  FORMAT DH839 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8839-WRT CURRENT SWITCH TST                                   D88
2  FORMAT D8839 ERROR(S) = *DECD                                         D88
5  FORMAT D8839 CYL *OCTB TRACK *OCTB                                    D88
7  FORMAT D8839 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,6 
1  FORMAT DL839-WRT CURRENT SWITCH TST
2  FORMAT DL839 ERROR(S) = *DECD
5  FORMAT DL839 CYL *OCTB TRACK *OCTB 
7  FORMAT DL839 EC=*DECD, LC=*DECD
10 FORMAT LARGE SECTOR READ CHECKWORD IS ATTEMPTED
11 FORMAT SMALL SECTOR READ CHECKWORD IS ATTEMPTED
   DATA(OB(0),CON) 0,1000B,1001B,1512B                                   D88
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 39D                      *MODULE NUMBER 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
   MSG 1 TO DISPLAY              *DISPLAY MODULE TITLE                   D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
*IF DEF,LSFMD,1 
   B12 = 0
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
24 B6 = 0                     *READ USING EVEN NUMBERED HEAD             D88
26 B2 = 0                        *INITIALIZE CYLINDER INDEX              D88
30 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   B7 = OB(B2)
   IF(ES.AND.RM.EQ.0) MSG 5(B7,B6) TO DISPLAY                            D88
   B5 = 0                        *CURRENT SECTOR ADDRESS                 D88
   B4 = 1                        *NUMBER OF SECTORS TO READ              D88
   B8 = 25B                                                              D88
*IF -DEF,LSFMD,1
   READCW B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                     D88
*IF DEF,LSFMD 
   MSG 10 TO LINE 45
   READCW B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 32
   GOTO 40
32 B4=4 
   MSG 11 TO LINE 45
   READCW B4 SM SEC AT CYL B7 TRK B6 SEC B5, ABT 74 
40 GOTO 30 WHILE(B2+1.LT.4) 
*ENDIF
*IF -DEF,LSFMD,1
32 GOTO 30 WHILE(B2+1.LT.4)                                              D88
   GOTO 26 WHILE(B6+1.LT.2)    *READ USING ODD NUMBERED HEAD             D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE                    D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT               D88
   GOTO 24                                                               D88
52 IF(B11.EQ.0) GOTO 54          *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
54 GOTO 77                       *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 MSG 1 TO LINE 1               *DISPLAY MODULE TITLE                   D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
*IF DEF,LSFMD,2 
   GOTO 40 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 40    *IF REPEAT MODULE
*IF -DEF,LSFMD,2
   GOTO 32 WHILE (B11+1.LE.2)  *IF ERROR COUNT.LE.2-CONTINUE             D88
   IF(ES.AND.RM.NE.0) GOTO 32    *IF REPEAT MODULE
   GOTO 50                       *ELSE, EXIT                             D88
77 END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH839 WRITE CURRENT-SWITCH TST
*IF DEF,SFMD,1
COMPILE                      *D8839 WRITE CURRENT-SWITCH TST             D88
*IF DEF,LSFMD,1 
COMPILE                      *DL839 WRITE CURRENT-SWITCH TST
*IF DEF,PFMD,4
   MODULE DH840,DEMA1(14),LOCK
***       DH840 - TRACK 2 TO 1 W/R
**        DH840 - TRACK 2 TO 1 W/R
*         DH840 - TRACK 2 TO 1 W/R
*IF DEF,SFMD,4
   MODULE D8840,FMDHT(7),LOCK                                            D88
***       D8840 - TRACK 2 TO 1 W/R                                       D88
**        D8840 - TRACK 2 TO 1 W/R                                       D88
*         D8840 - TRACK 2 TO 1 W/R                                       D88
*         ------------------------                                       D88
*IF -DEF,LSFMD
*                                                                        D88
*         PURPOSE-                                                       D88
*ENDIF
*IF DEF,PFMD,1
*         DH840  WILL  WRITE  AND  READ  EACH TRACK SELECTED ON THE 885 
*IF DEF,SFMD,1
*         D8840  WILL  WRITE  AND  READ  EACH TRACK SELECTED ON THE 885  D88
*         DRIVE IN A 2 TO 1 INTERLACE MODE.                              D88
*IF -DEF,LSFMD
*                                                                        D88
*         METHOD -                                                       D88
*ENDIF
*IF DEF,PFMD,1
*         1.  CALL SUBMODULE DH897A TO CHECK THE PARAMETERS SETTINGS IN 
*IF DEF,SFMD,1
*         1.  CALL SUBMODULE D8897A TO CHECK THE PARAMETERS SETTINGS IN  D88
*IF -DEF,LSFMD
*             P0 THROUGH P7.                                             D88
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA  D88
*             PATTERN AS DESCRIBED IN PARAMETERS.                        D88
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP  D88
*             12.                                                        D88
*         4.  RESERVE THE CONTROLLER AND 885 DRIVE.                      D88
*         5.  SET READ MARGIN SELECTED.                                  D88
*         6.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED,  D88
*             GO TO STEP 8.                                              D88
*         7.  WRITE THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A  D88
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5  D88
*             PARAMETER.  THE  WRITE  SEQUENCE  WILL  BE DONE IN 2 TO 1  D88
*             INTERLACE MODE.                                            D88
*         8.  CHECK  PARAMETER P5 FOR READ DISABLED, AND IF DISABLED GO  D88
*             TO STEP 10.                                                D88
*         9.  READ  THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A  D88
*             NORMAL READ OR READ CODED COMMAND AS SELECTED IN  THE  P5  D88
*             PARAMETER.  THE  READ  SEQUENCE  WILL  BE  DONE IN 2 TO 1  D88
*             INTERLACE MODE.                                            D88
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH  D88
*             9.                                                         D88
*         11. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2  D88
*             THROUGH 10 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE  D88
*             DONE.                                                      D88
*         12. INCREMENT THE CYLINDER COUNT BY ONE.                       D88
*         13. REPEAT STEPS 2 THROUGH 12 UNTIL ALL CYLINDERS SELECTED IN  D88
*             PARAMETERS P0 THROUGH P1 ARE DONE.                         D88
*         14. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2  D88
*             THROUGH 13 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN  D88
*             THE ITERATION COUNT IN PARAMETER P9.                       D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P1 CONTAINS THE LAST CYLINDER NUMBER.                          D88
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.               D88
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS.              D88
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN         D88
*           CHANGING.                                                    D88
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN          D88
*           GENERATION.                                                  D88
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*         P7 CONTAINS THE READ MARGIN SELECTED.                          D88
*         P9 CONTAINS THE ITERATION COUNT.                               D88
*                                                                        D88
*         EXIT -                                                         D88
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS        D88
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR THE ACCESS   D88
*         LEVEL IS TOO LOW.                                              D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*ENDIF
*IF DEF,PFMD,2
*         DH897A - VALIDATE PARAMETERS
*         DH897C - REPORT ERRORS DETECTED WITHIN THE MODULE.
*IF DEF,SFMD,2
*         D8897A - VALIDATE PARAMETERS                                   D88
*         D8897C - REPORT ERRORS DETECTED WITHIN THE MODULE.             D88
*IF -DEF,LSFMD
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B0  = LOOP COUNTER.                                            D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B2  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B3  = MODULE ITERATION COUNTER.                                D88
*         B4  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.             D88
*                                                                        D88
*ENDIF
*IF DEF,PFMD,4
1  FORMAT DH840 - TRACK 2 TO 1 W/R
2  FORMAT DH840 ERROR(S) = *DECD
3  FORMAT DH840 EC=*DECD, LC=*DECD
4  FORMAT DH840 CYL=*OCTB T=*OB S=*OB 
*IF DEF,SFMD,4
1  FORMAT D8840 - TRACK 2 TO 1 W/R                                       D88
2  FORMAT D8840 ERROR(S) = *DECD                                         D88
3  FORMAT D8840 EC=*DECD, LC=*DECD                                       D88
4  FORMAT D8840 CYL=*OCTB T=*OB S=*OB                                    D88
*IF -DEF,LSFMD
*                                                                        D88
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.                     D88
*                                                                        D88
20 MSG 1 TO PRINT            *PRINT MODULE NAME                          D88
22 MSG 1 TO DISPLAY          *DISPLAY MODULE NAME                        D88
*                                                                        D88
/---------INITIALIZE THE REGISTER FOR THE MODULE.                        D88
*                                                                        D88
   B1=40D                    *MODULE NUMBER IN OCTAL                     D88
   B3=0                      *INITIALIZE ITERATION COUNTER               D88
*                                                                        D88
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.               D88
*                                                                        D88
   CALL 97A                    *VALIDATE PARAMETERS                      D88
24 B6=P2.RS.6                  *FIRST TRACK NUMBER                       D88
   B7=P0                       *FIRST CYLINDER NUMBER                    D88
26 IF(P5.AND.10.NE.0) GOTO 30  *IF FIXED DATA PATTERN                    D88
*                                                                        D88
/---------GENERATE A RANDOM DATA PATTERN.                                D88
*                                                                        D88
   B10=P6                           *IF FIXED RANDOM DATA                D88
   IF(P6.EQ.0) B10=RT               *IF RANDOM STARTER                   D88
*ENDIF
*IF DEF,PFMD,1
   RANDOM TO OB FOR WC START B10  *GENERATE RANDOM DATA 
*IF DEF,SFMD,1
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA               D88
*IF -DEF,LSFMD
*                                                                        D88
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.                         D88
*                                                                        D88
30 IF(B7.EQ.1511) GOTO 42       *SKIP CYLINDER 1511                      D88
   B8=41                        *RESERVE DRIVE FLAG                      D88
   RES,DRIVE,ABT 70             *RESERVE DRIVE                           D88
   B8=43                        *MARGINS FLAG                            D88
   MARGINS,B9,ABT 70            *SELECT READ MARGIN                      D88
   IF(P5.AND.4.NE.0) GOTO 32    *IF WRITE DISABLED                       D88
*                                                                        D88
/---------WRITE A TRACK IN 2 TO 1 INTERLACE MODE.                        D88
*                                                                        D88
   B4=B2+1.RS.1                 *NUMBER OF SECTORS FIRST                 D88
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER                    D88
   GOSUB 50                     *CALL WRITE SUBROUTINE                   D88
   B4=B2.RS.1                   *NUMBER OF SECTORS LEFT                  D88
   B5=P3.RS.6+1                 *SECOND LOWEST SECTOR                    D88
*ENDIF
*IF DEF,PFMD,1
   IF(B4.EQ.0) GOTO 32          *IF ALL SECTORS DONE
*IF -DEF,LSFMD
   GOSUB 50                     *CALL WRITE SUBROUTINE                   D88
32 IF(P5.AND.2.NE.0) GOTO 34    *IF READ DISABLED                        D88
*                                                                        D88
/---------READ A TRACK IN 2 TO 1 INTERLACE MODE.                         D88
*                                                                        D88
   B4=B2+1.RS.1                 *NUMBER OF SECTORS FIRST                 D88
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER                    D88
   GOSUB 54                     *CALL READ SUBROUTINE                    D88
   B4=B2.RS.1                   *NUMBER OF SECTORS LEFT                  D88
   B5=P3.RS.6+1                 *SECOND LOWEST SECTOR                    D88
*ENDIF
*IF DEF,PFMD,1
   IF(B4.EQ.0) GOTO 34          *IF ALL SECTORS DONE
*IF -DEF,LSFMD
   GOSUB 54                     *CALL READ SUBROUTINE                    D88
34 ENDSUB                                                                D88
   IF(ES.AND.SL.EQ.0) GOTO 36   *IF NOT SCOPE LOOP, 
   B0=B0+1                      *INCREMENT THE LOOP COUNT                D88
   GOTO 30                      *REPEAT THE CONDITION                    D88
*                                                                        D88
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.                       D88
*                                                                        D88
36 B10=P2.AND.77                *UPPER TRACK NUMBER                      D88
   GOTO 40 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE                  D88
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
40 B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
42 GOTO 44 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE                   D88
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
*                                                                        D88
/---------CHECK FOR THE ITERATION COUNT SATISFIED.                       D88
*                                                                        D88
44 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT              D88
*                                                                        D88
/---------CHECK FOR REPEAT MODULE SELECTED.                              D88
*                                                                        D88
   IF(ES.AND.RM.NE.0) GOTO 22   *IF REPEAT MODULE                        D88
   IF(B11.EQ.0) GOTO 77         *IF NO ERRORS DETECTED                   D88
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS               D88
   GOTO 77                      *EXIT THE MODULE                         D88
*                                                                        D88
/---------SUBROUTINE TO WRITE ONE TRACK 2 TO 1 INTERLACE.                D88
*                                                                        D88
50 GOSUB 60                        *DISPLAY CURRENT MESSAGE              D88
   IF(P5.AND.1.NE.0) GOTO 52       *IF CODED NOT SELECTED                D88
   B8=31                           *WRITE CODED FLAG                     D88
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 66                     D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
52 B8=30                           *WRITE FLAG                           D88
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66                           D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------SUBROUTINE TO READ ONE TRACK 2 TO 1 INTERLACE.                 D88
*                                                                        D88
54 GOSUB 60                        *DISPLAY CURRENT MESSAGE              D88
   IF(P5.AND.1.NE.0) GOTO 56       *IF CODED NOT SELECTED                D88
   B8=24                           *READ CODED FLAG                      D88
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 70                      D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
56 B8=23                           *READ FLAG                            D88
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70                            D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.                 D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE                   D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------PROCESS ABORT ON A WRITE COMMAND.                              D88
*                                                                        D88
66 IF(EC.AND.4077.NE.4012)GOTO 70  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS DETAIL,ABT 70            *GET DETAILED STATUS 
*                                                                        D88
/---------PROCESS ERRORS DETECTED IN THE MODULE.                         D88
*                                                                        D88
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON                   D88
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON              D88
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS                 D88
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR             D88
   IF(SB(5).AND.4000.NE.0)GOTO 34  *IF TRACK FLAW                        D88
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE             D88
   CALL 97C                        *CALL ERROR PROCESSOR                 D88
74 B11=B11+1                       *INCREMENT ERROR COUNT                D88
   GOTO 34                         *EXIT THE SUBROUTINE                  D88
77 END 20                          *END OF THE MODULE                    D88
*ENDIF
*IF DEF,PFMD,1
COMPILE                      *DH840 TRACK 2 TO 1 W/R
*IF DEF,SFMD,1
COMPILE                      *D8840 TRACK 2 TO 1 W/R                     D88
*IF DEF,PFMD,4
   MODULE DH841,DEMA1(14),LOCK
***       DH841 - TRACK 2 TO 1 W/R/C
**        DH841 - TRACK 2 TO 1 W/R/C
*         DH841 - TRACK 2 TO 1 W/R/C
*IF DEF,SFMD,4
   MODULE D8841,FMDHT(7),LOCK                                            D88
***       D8841 - TRACK 2 TO 1 W/R/C                                     D88
**        D8841 - TRACK 2 TO 1 W/R/C                                     D88
*         D8841 - TRACK 2 TO 1 W/R/C                                     D88
*IF -DEF,LSFMD
*         --------------------------                                     D88
*                                                                        D88
*         PURPOSE-                                                       D88
*ENDIF
*IF DEF,PFMD,1
*         DH841  WILL  WRITE,  READ  AND COMPARE THE DATA READ FROM THE 
*IF DEF,SFMD,1
*         D8841  WILL  WRITE,  READ  AND COMPARE THE DATA READ FROM THE  D88
*IF -DEF,LSFMD
*         TRACK FOR EACH TRACK SELECTED ON THE 885 DRIVE IN A  2  TO  1  D88
*         INTERLACE MODE.                                                D88
*                                                                        D88
*         METHOD -                                                       D88
*ENDIF
*IF DEF,PFMD,1
*         1.  CALL SUBMODULE DH897A TO CHECK THE PARAMETERS SETTINGS IN 
*IF DEF,SFMD,1
*         1.  CALL SUBMODULE D8897A TO CHECK THE PARAMETERS SETTINGS IN  D88
*IF -DEF,LSFMD
*             P0 THROUGH P7.                                             D88
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA  D88
*             PATTERN AS DESCRIBED IN PARAMETERS.                        D88
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP  D88
*             13.                                                        D88
*         4.  RESERVE THE CONTROLLER AND 885 DRIVE.                      D88
*         5.  SET READ MARGIN SELECTED.                                  D88
*         6.  CHECK PARAMETER P5 FOR WRITE DISABLED, AND  IF  DISABLED,  D88
*             GO TO STEP 8.                                              D88
*         7.  WRITE THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A  D88
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5  D88
*             PARAMETER. THE WRITE SEQUENCE WILL BE  DONE  IN  2  TO  1  D88
*             INTERLACE MODE.                                            D88
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO  D88
*             TO STEP 11.                                                D88
*         9.  READ A SECTOR FROM THOSE  SELECTED IN THE TRACK  USING  A 
*             NORMAL  READ  OR READ CODED COMMAND AS SELECTED IN THE P5  D88
*             PARAMETER. COMPARE THE DATA READ WITH THE  EXPECTED  DATA  D88
*             AND REPORT ANY DATA ERRORS.                                D88
*         10. REPEAT STEP 9 TO READ ALL THE SECTORS SELECTED IN THE  P3  D88
*             PARAMETER.  THE  READ  SEQUENCE  WILL  BE  DONE IN 2 TO 1  D88
*             INTERLACE MODE.                                            D88
*         11. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH  D88
*             10.                                                        D88
*         12. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2  D88
*             THROUGH 11 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE  D88
*             DONE.                                                      D88
*         13. INCREMENT THE CYLINDER COUNT BY ONE.                       D88
*         14. REPEAT STEPS 2 THROUGH 13 UNTIL ALL CYLINDERS SELECTED IN  D88
*             PARAMETERS P0 THROUGH P1 ARE DONE.                         D88
*         15. IF  ALL READ MARGINS ARE SELECTED IN PARAMETER P7, REPEAT  D88
*             STEPS 2 THROUGH 14 UNTIL ALL 9  READ  MARGINS  HAVE  BEEN  D88
*             TESTED.                                                    D88
*         16. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2  D88
*             THROUGH  15  UNTIL  THE ITERATION COUNTER IS GREATER THAN  D88
*             THE ITERATION COUNT IN PARAMETER P9.                       D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P1 CONTAINS THE LAST CYLINDER NUMBER.                          D88
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.               D88
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS.              D88
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN         D88
*           CHANGING.                                                    D88
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN          D88
*           GENERATION.                                                  D88
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*         P7 CONTAINS THE READ MARGIN SELECTED.                          D88
*         P9 CONTAINS THE ITERATION COUNT.                               D88
*                                                                        D88
*         EXIT -                                                         D88
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS        D88
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR THE ACCESS   D88
*         LEVEL IS TOO LOW.                                              D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*ENDIF
*IF DEF,PFMD,2
*         DH897A - VALIDATE PARAMETERS
*         DH897C - REPORT ERRORS DETECTED WITHIN THE MODULE.
*IF DEF,SFMD,2
*         D8897A - VALIDATE PARAMETERS                                   D88
*         D8897C - REPORT ERRORS DETECTED WITHIN THE MODULE.             D88
*IF -DEF,LSFMD
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B0  = LOOP COUNTER.                                            D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B2  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B3  = MODULE ITERATION COUNTER.                                D88
*         B4  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.             D88
*         OB(503) = ODD/EVEN PASS COUNT.                                 D88
*         OB(504) = UPPER SECTOR.                                        D88
*ENDIF
*                                                                        D88
*IF DEF,PFMD,5
1  FORMAT DH841 - TRACK 2 TO 1 W/R/C
2  FORMAT DH841 ERROR(S) = *DECD
3  FORMAT DH841 EC=*DECD, LC=*DECD
4  FORMAT DH841 CYL=*OCTB T=*OB S=*OB 
5  FORMAT DH841 E0018 L*OC DATA COMPARE ERROR  (READ 2 TO 1)
*IF DEF,SFMD,5
1  FORMAT D8841 - TRACK 2 TO 1 W/R/C                                     D88
2  FORMAT D8841 ERROR(S) = *DECD                                         D88
3  FORMAT D8841 EC=*DECD, LC=*DECD                                       D88
4  FORMAT D8841 CYL=*OCTB T=*OB S=*OB                                    D88
5  FORMAT D8841 E0018 L*OC DATA COMPARE ERROR  (READ 2 TO 1)             D88
*IF -DEF,LSFMD
*                                                                        D88
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.                     D88
*                                                                        D88
20 MSG 1 TO PRINT               *PRINT MODULE NAME                       D88
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME                     D88
*                                                                        D88
/---------INITIALIZE THE REGISTER FOR THE MODULE.                        D88
*                                                                        D88
   B1=41D                       *MODULE NUMBER IN OCTAL                  D88
   B3=0                         *INIT. ITERATION COUNTER                 D88
*                                                                        D88
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.               D88
*                                                                        D88
   CALL 97A                     *VALIDATE PARAMETERS                     D88
24 B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
   B7=P0                        *FIRST CYLINDER NUMBER                   D88
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN                   D88
*                                                                        D88
/---------GENERATE A RANDOM DATA PATTERN.                                D88
*                                                                        D88
   B10=P6                       *IF FIXED RANDOM DATA                    D88
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER                       D88
*IF DEF,PFMD,1
   RANDOM TO OB FOR WC START B10  *GENERATE RANDOM DATA 
*IF DEF,SFMD,1
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA               D88
*IF DEF,LSFMD,1 
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA
*                                                                        D88
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.                         D88
*                                                                        D88
30 IF(B7.EQ.1511) GOTO 50       *SKIP CYLINDER 1511                      D88
   B8=41                        *RESERVE DRIVE FLAG                      D88
   RES,DRIVE,ABT 72             *RESERVE DRIVE                           D88
   B8=43                        *MARGINS FLAG                            D88
   MARGINS,B9,ABT 72            *SELECT READ MARGINS                     D88
   IF(P5.AND.4.NE.0) GOTO 32    *IF WRITE DISABLED                       D88
*                                                                        D88
/---------WRITE A TRACK IN 2 TO 1 INTERLACE MODE.                        D88
*                                                                        D88
   B4=B2+1.RS.1                 *NUMBER OF SECTORS FIRST                 D88
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER                    D88
   GOSUB 56                     *CALL WRITE SUBROUTINE                   D88
   B4=B2.RS.1                   *NUMBER OF SECTORS LEFT                  D88
   B5=P3.RS.6+1                 *SECOND LOWEST SECTOR                    D88
*ENDIF
*IF DEF,PFMD,1
   IF(B4.EQ.0) GOTO 32          *IF ALL SECTORS DONE
*IF -DEF,LSFMD
   GOSUB 56                     *CALL WRITE SUBROUTINE                   D88
32 IF(P5.AND.2.NE.0)GOTO 42     *IF READ DISABLED                        D88
*                                                                        D88
/---------INITIALIZE THE REGISTER TO READ THE TRACK.                     D88
*                                                                        D88
*ENDIF
*IF DEF,PFMD,1
   IB(504)=0
*IF DEF,SFMD,1
   OB(503)=0                                                             D88
*IF -DEF,LSFMD
   OB(504)=P3.AND.77            *UPPER SECTOR NUMBER                     D88
   B5=P3.RS.6                   *LOWER SECTOR NUMBER                     D88
*                                                                        D88
/---------READ A TRACK 2 TO 1 INTERLACE AND CHECK THE DATA.              D88
*                                                                        D88
34 GOSUB 62                     *DISPLAY CURRENT MESSAGE                 D88
   B4 =1                        *ONE SECTOR READ                         D88
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED                   D88
   B8=24                        *READ CODED FLAG                         D88
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 72                      D88
   GOTO 40                      *JUMP TO COMPARE DATA                    D88
36 B8=23                        *READ FLAG                               D88
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72                            D88
*                                                                        D88
/---------CHECK THE DATA READ FROM THE TRACK.                            D88
*                                                                        D88
*ENDIF
*IF DEF,PFMD,6
40 IF(P5.AND.1.NE.0) GOTO 41    *IF CODED NOT SELECTED, 
   OB(500) = B7                 *SET CURRENT CYLINDER 
   OB(501) = B6                 *SET CURRENT TRACK
   OB(502) = B5                 *SET CURRENT SECTOR 
41 B8 = 47                      *COMPARE FLAG 
   COMPARE IB TO OB FOR WC, ABT 66
*IF DEF,SFMD,3
40 B10=476                      *COMPARE COUNT                           D88
   B8=47                        *COMPARE FLAG                            D88
   COMPARE IB(4) TO OB(4) FOR B10, ABT 66                                D88
*IF -DEF,LSFMD
*                                                                        D88
/---------UPDATE THE REGISTER TO READ THE NEXT SECTOR.                   D88
*                                                                        D88
   GOTO 34 WHILE (B5+2.LE.OB(504))  *COMPLETE FIRST PASS                 D88
*ENDIF
*IF DEF,PFMD,2
   IB(504)=IB(504)+1               *COUNT FOR SECOND PASS 
   IF(IB(504).EQ.2) GOTO 42     *IF EQUAL TO SECOND PASS
*IF DEF,SFMD,2
   OB(503)=OB(503)+1               *COUNT FOR SECOND PASS                D88
   IF(OB(503).EQ.2) GOTO 42     *IF EQUAL TO SECOND PASS                 D88
*IF -DEF,LSFMD
   B5=P3.RS.6+1                 *LOW SECTOR PLUS 1                       D88
   IF(B5.LE.OB(504)) GOTO 34    *IF ONE SECTOR READ                      D88
*ENDIF
*IF DEF,PFMD,1
42 IF(ES.AND.SL.EQ.0) GOTO 44   *IF NOT SCOPE LOOP, 
*IF DEF,SFMD,2
42 ENDSUB                                                                D88
   IF(ES.AND.RC.EQ.0) GOTO 44   *IF NO REPEAT CONDITION                  D88
*IF -DEF,LSFMD
   B0=B0+1                      *INCREMENT THE LOOP COUNT                D88
   GOTO 30                      *REPEAT THE CONDITION                    D88
*                                                                        D88
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.                       D88
*                                                                        D88
44 B10=P2.AND.77                *UPPER TRACK NUMBER                      D88
   GOTO 46 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE                  D88
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
46 B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
50 GOTO 52 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE                   D88
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
*                                                                        D88
/---------CHECK FOR ALL READ MARGINS TRIED.                              D88
*                                                                        D88
52 IF(P7.NE.77) GOTO 54         *IF ONLY ONE READ MARGIN                 D88
   B9=B9+1                      *UPDATE READ MARGIN                      D88
   IF(B9.AND.3.NE.3) GOTO 24    *IF ALL STROBES NOT TRIED                D88
   B9=B9+5                      *UPDATE NEXT OFFSET TO USE               D88
   IF(B9.AND.30.NE.30) GOTO 24  *IF ALL OFFSETS NOT TRIED                D88
*ENDIF
*IF DEF,PFMD
   B9=0                         *INITIALIZE MARGINS 
*ENDIF
*IF -DEF,LSFMD
54 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT              D88
*                                                                        D88
/---------CHECK FOR REPEAT MODULE SELECTED.                              D88
*                                                                        D88
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE                     D88
   IF(B11.NE.0)MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *ERRORS             D88
   GOTO 77                         *EXIT THE MODULE                      D88
*                                                                        D88
/---------SUBROUTINE TO WRITE ONE TRACK 2 TO 1 INTERLACE.                D88
*                                                                        D88
56 GOSUB 62                        *DISPLAY CURRENT MESSAGE              D88
   IF(P5.AND.1.NE.0) GOTO 60       *IF CODED NOT SELECTED                D88
   B8=31                           *WRITE CODED FLAG                     D88
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC,B5,ABT 70                     D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
60 B8=30                           *WRITE FLAG                           D88
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70                           D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
*ENDIF
*IF DEF,PFMD,2
62 IF(ES.AND.SL.EQ.0)MSG 4(B7,B6,B5)TO DISPLAY  *IF NORMAL
   IF(ES.AND.SL.NE.0)MSG 3(B11,B0)TO DISPLAY  *IF SCOPING,
*IF DEF,SFMD,4
62 IF(ES.AND.RC.NE.0) GOTO 64      *REPEAT CONDITION ENABLED             D88
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.                 D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
64 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE                   D88
*IF -DEF,LSFMD
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------PROCESS DATA MISCOMPARE ERROR.                                 D88
*                                                                        D88
*ENDIF
*IF DEF,PFMD,1
66 IF(ES.AND.SL.NE.0) GOTO 75      *IF SCOPING LOOP ON
*IF DEF,SFMD,1
66 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON                   D88
*IF -DEF,LSFMD
   ERROR 02/01                     *DATA COMPARE ERROR
   MSG 5 (EA) TO LINE 5            *ERROR MESSAGE                        D88
   GOTO 74                         *GO TO REPORT THE ERROR
*                                                                        D88
/---------PROCESS COMMAND ABORTS IN THE MODULE.                          D88
*                                                                        D88
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
*ENDIF
*IF DEF,PFMD,1
72 IF(ES.AND.SL.NE.0) GOTO 75      *IF SCOPING LOOP ON
*IF DEF,SFMD,1
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON                   D88
*IF -DEF,LSFMD
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON              D88
   IF(SB.NE.5000) GOTO 74          *IF NO GENERAL STATUS                 D88
*ENDIF
*IF DEF,PFMD,1
   IF(SB(5).AND.4000.NE.0)GOTO 76  *IF TRACK FLAW 
*IF DEF,SFMD,1
   IF(SB(5).AND.4000.NE.0)GOTO 42  *IF TRACK FLAW                        D88
*IF -DEF,LSFMD
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE             D88
   CALL 97C                        *CALL ERROR PROCESSOR                 D88
*ENDIF
*IF DEF,PFMD,2
75 B11=B11+1                       *INCREMENT ERROR COUNT 
76 ENDSUB GOTO 42                  *EXIT THE SUBROUTINE 
*IF DEF,SFMD,2
76 B11=B11+1                       *INCREMENT ERROR COUNT                D88
   GOTO 42                         *EXIT THE SUBROUTINE                  D88
*IF -DEF,LSFMD
77 END 20                          *END OF THE MODULE                    D88
*ENDIF
*IF DEF,PFMD,1
COMPILE                      *DH841 TRACK 2 TO 1 W/R/C
*IF DEF,SFMD,1
COMPILE                      *D8841 TRACK 2 TO 1 W/R/C                   D88
*IF DEF,SFMD
   MODULE D8842,FMDFT(7),LOCK                                            D88
***       D8842 - TRACK 1 TO 1 W/R                                       D88
**        D8842 - TRACK 1 TO 1 W/R                                       D88
*         D8842 - TRACK 1 TO 1 W/R                                       D88
*         ------------------------                                       D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8842 WILL WRITE AND  READ  EACH TRACK SELECTED ON THE 885-1X 
*         DRIVE IN A 1 TO 1 INTERLACE MODE.                              D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  CALL SUBMODULE D8898A TO CHECK THE PARAMETERS SETTINGS IN  D88
*             P0 THROUGH P7.                                             D88
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA  D88
*             PATTERN AS DESCRIBED IN PARAMETERS.                        D88
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP  D88
*             12.                                                        D88
*         4.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         5.  SET READ MARGIN SELECTED.                                  D88
*         6.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED,  D88
*             GO TO STEP 8.                                              D88
*         7.  WRITE THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A  D88
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5  D88
*             PARAMETER.  THE  WRITE  SEQUENCE  WILL  BE DONE IN 1 TO 1  D88
*             INTERLACE MODE.                                            D88
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO  D88
*             TO STEP 10.                                                D88
*         9.  READ  THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A  D88
*             NORMAL READ OR READ CODED COMMAND AS SELECTED IN  THE  P5  D88
*             PARAMETER.  THE  READ  SEQUENCE  WILL  BE  DONE IN 1 TO 1  D88
*             INTERLACE MODE.                                            D88
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH  D88
*             9.                                                         D88
*         11. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2  D88
*             THROUGH 10 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE  D88
*             DONE.                                                      D88
*         12. INCREMENT THE CYLINDER COUNT BY ONE.                       D88
*         13. REPEAT STEPS 2 THROUGH 12 UNTIL ALL CYLINDERS SELECTED IN  D88
*             PARAMETERS P0 THROUGH P1 ARE DONE.                         D88
*         14. IF  ALL READ MARGINS ARE SELECTED IN PARAMETER P7, REPEAT  D88
*             STEPS 2 THROUGH 13 UNTIL ALL 9  READ  MARGINS  HAVE  BEEN  D88
*             TESTED.                                                    D88
*         15. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2  D88
*             THROUGH  14  UNTIL  THE ITERATION COUNTER IS GREATER THAN  D88
*             THE ITERATION COUNT IN PARAMETER P9.                       D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P1 CONTAINS THE LAST CYLINDER NUMBER.                          D88
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.               D88
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS.              D88
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN         D88
*           CHANGING.                                                    D88
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN          D88
*           GENERATION.                                                  D88
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*         P7 CONTAINS THE READ MARGIN SELECTED.                          D88
*         P9 CONTAINS THE ITERATION COUNT.                               D88
*                                                                        D88
*         EXIT -                                                         D88
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS        D88
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR THE ACCESS   D88
*         LEVEL IS TOO LOW.                                              D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898A - VALIDATE PARAMETERS                                   D88
*         D8898C - REPORT ERRORS DETECTED WITHIN THE MODULE.             D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B0  = LOOP COUNTER.                                            D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B2  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B3  = MODULE ITERATION COUNTER.                                D88
*         B4  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.             D88
*                                                                        D88
1  FORMAT D8842 - TRACK 1 TO 1 W/R                                       D88
2  FORMAT D8842 ERROR(S) = *DECD                                         D88
3  FORMAT D8842 EC=*DECD, LC=*DECD                                       D88
4  FORMAT D8842 CYL=*OCTB T=*OB S=*OB                                    D88
*                                                                        D88
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.                     D88
*                                                                        D88
20 MSG 1 TO PRINT               *PRINT MODULE NAME                       D88
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME                     D88
*                                                                        D88
/---------INITIALIZE THE REGISTER FOR THE MODULE.                        D88
*                                                                        D88
   B1=42D                       *MODULE NUMBER IN OCTAL                  D88
   B3=0                         *INIT. ITERATION COUNTER                 D88
*                                                                        D88
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.               D88
*                                                                        D88
   CALL 98A                     *VALIDATE PARAMETERS                     D88
24 B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
   B7=P0                        *FIRST CYLINDER NUMBER                   D88
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN                   D88
*                                                                        D88
/---------GENERATE A RANDOM DATA PATTERN.                                D88
*                                                                        D88
   B10=P6                       *IF FIXED RANDOM DATA                    D88
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER                       D88
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA               D88
*                                                                        D88
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.                         D88
*                                                                        D88
30 IF(B7.EQ.1511) GOTO 44       *SKIP CYLINDER 1511                      D88
   B8=41                        *RESERVE DRIVE FLAG                      D88
   RES,DRIVE,ABT 70             *RESERVE DRIVE                           D88
   B8=43                        *MARGINS FLAG                            D88
   MARGINS,B9,ABT 70            *SELECT READ MARGIN                      D88
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED                       D88
*                                                                        D88
/---------WRITE A TRACK IN 1 TO 1 INTERLACE MODE.                        D88
*                                                                        D88
   B4=B2                        *NUMBER OF SECTORS                       D88
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER                    D88
   GOSUB 60                     *DISPLAY CURRENT MESSAGE                 D88
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED                   D88
   B8=31                        *WRITE CODED FLAG                        D88
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 66
   GOTO 34                      *JUMP                                    D88
32 B8=30                        *WRITE FLAG                              D88
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66                           D88
34 IF(P5.AND.2.NE.0) GOTO 40    *IF READ DISABLED                        D88
*                                                                        D88
/---------READ A TRACK IN 1 TO 1 INTERLACE MODE.                         D88
*                                                                        D88
   B4=B2                        *NUMBER OF SECTORS                       D88
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER                    D88
   GOSUB 60                     *DISPLAY CURRENT MESSAGE                 D88
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED                   D88
   B8=24                        *READ CODED FLAG                         D88
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
   GOTO 40                      *JUMP                                    D88
36 B8=23                        *READ FLAG                               D88
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70                            D88
40 ENDSUB                                                                D88
   IF(ES.AND.RC.EQ.0) GOTO 42   *IF NO REPEAT CONDITION                  D88
   B0=B0+1                      *INCREMENT THE LOOP COUNT                D88
   GOTO 30                      *REPEAT THE CONDITION                    D88
*                                                                        D88
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.                       D88
*                                                                        D88
42 B10=P2.AND.77                *UPPER TRACK NUMBER                      D88
   GOTO 44 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE                  D88
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
44 B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
46 GOTO 50 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE                   D88
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
*                                                                        D88
/---------CHECK FOR ALL READ MARGINS TRIED.                              D88
*                                                                        D88
50 IF(P7.NE.77) GOTO 52         *IF ONLY ONE READ MARGIN                 D88
   B9=B9+1                      *UPDATE READ MARGIN                      D88
   IF(B9.AND.3.NE.3) GOTO 24    *IF ALL STROBES NOT TRIED                D88
   B9=B9+5                      *UPDATE NEXT OFFSET TO USE               D88
   IF(B9.AND.30.NE.30) GOTO 24  *IF ALL OFFSETS NOT TRIED                D88
   B9 = 0        *CLEAR MARGINS FOR NEXT ITERATION
*                                                                        D88
/---------CHECK FOR THE ITERATION COUNT SATISFIED.                       D88
*                                                                        D88
52 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT              D88
*                                                                        D88
/---------CHECK FOR REPEAT MODULE SELECTED.                              D88
*                                                                        D88
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE                     D88
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED                D88
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS               D88
   GOTO 77                         *EXIT THE MODULE                      D88
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.                 D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE                   D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------PROCESS ABORT ON A WRITE COMMAND.                              D88
*                                                                        D88
66 IF(EC.AND.4077.NE.4012)GOTO 70  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS DETAIL,ABT 70            *GET DETAILED STATUS 
*                                                                        D88
/---------PROCESS ERRORS DETECTED IN THE MODULE.                         D88
*                                                                        D88
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON                   D88
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON              D88
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS                 D88
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR             D88
   IF(SB(5).AND.4000.NE.0)GOTO 40  *IF TRACK FLAW                        D88
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE             D88
   CALL 98C                        *CALL ERROR PROCESSOR                 D88
74 B11=B11+1                       *INCREMENT ERROR COUNT                D88
   GOTO 40                         *EXIT THE SUBROUTINE                  D88
77 END 20                          *END OF THE MODULE                    D88
COMPILE                      *D8842 TRACK 1 TO 1 W/R                     D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL842,LSFMD2(16),LOCK 
***       DL842 - TRACK 1 TO 1 W/R
**        DL842 - TRACK 1 TO 1 W/R
*         DL842 - TRACK 1 TO 1 W/R
*         ------------------------
* 
*         PURPOSE-
*         DL842 WILL WRITE AND  READ  EACH TRACK SELECTED ON THE 885-1X 
*         DRIVE IN A 1 TO 1 INTERLACE MODE. 
* 
*         METHOD -
*         1.  CALL SUBMODULE DL898A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P7.
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP 
*             12. 
*         4.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         5.  SET READ MARGIN SELECTED. 
*         6.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED, 
*             GO TO STEP 8. 
*         7.  WRITE THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A 
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5 
*             PARAMETER.  THE  WRITE  SEQUENCE  WILL  BE DONE IN 1 TO 1 
*             INTERLACE MODE. 
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 10. 
*         9.  READ  THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A 
*             NORMAL READ OR READ CODED COMMAND AS SELECTED IN  THE  P5 
*             PARAMETER.  THE  READ  SEQUENCE  WILL  BE  DONE IN 1 TO 1 
*             INTERLACE MODE. 
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             9.
*         11. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2 
*             THROUGH 10 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE 
*             DONE. 
*         12. INCREMENT THE CYLINDER COUNT BY ONE.
*         13. REPEAT STEPS 2 THROUGH 12 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         14. IF  ALL READ MARGINS ARE SELECTED IN PARAMETER P7, REPEAT 
*             STEPS 2 THROUGH 13 UNTIL ALL 9  READ  MARGINS  HAVE  BEEN 
*             TESTED. 
*         15. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH  14  UNTIL  THE ITERATION COUNTER IS GREATER THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P7 CONTAINS THE READ MARGIN SELECTED. 
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR THE ACCESS
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*         DL898A - VALIDATE PARAMETERS
*         DL898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = CURRENT MARGINS SELECTION.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
* 
1  FORMAT DL842 - TRACK 1 TO 1 W/R
2  FORMAT DL842 ERROR(S) = *DECD
3  FORMAT DL842 EC=*DECD, LC=*DECD
4  FORMAT DL842 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=42D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 98A                     *VALIDATE PARAMETERS
24 B6=P2.RS.6                   *FIRST TRACK NUMBER 
   B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA
* 
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
30 IF(B7.EQ.1511) GOTO 44       *SKIP CYLINDER 1511 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 70             *RESERVE DRIVE
   B8=43                        *MARGINS FLAG 
   MARGINS,B9,ABT 70            *SELECT READ MARGIN 
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A TRACK IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=31                        *WRITE CODED FLAG 
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 66
   GOTO 34                      *JUMP 
32 B8=30                        *WRITE FLAG 
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66
34 IF(P5.AND.2.NE.0) GOTO 40    *IF READ DISABLED 
* 
/---------READ A TRACK IN 1 TO 1 INTERLACE MODE.
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED
   B8=24                        *READ CODED FLAG
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
   GOTO 40                      *JUMP 
36 B8=23                        *READ FLAG
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
40 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 42   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.
* 
42 B10=P2.AND.77                *UPPER TRACK NUMBER 
   GOTO 44 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE 
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
44 B6=P2.RS.6                   *FIRST TRACK NUMBER 
46 GOTO 50 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
/---------CHECK FOR ALL READ MARGINS TRIED. 
* 
50 IF(P7.NE.77) GOTO 52         *IF ONLY ONE READ MARGIN
   B9=B9+1                      *UPDATE READ MARGIN 
   IF(B9.AND.3.NE.3) GOTO 24    *IF ALL STROBES NOT TRIED 
   B9=B9+5                      *UPDATE NEXT OFFSET TO USE
   IF(B9.AND.30.NE.30) GOTO 24  *IF ALL OFFSETS NOT TRIED 
   B9=0 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
52 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
66 IF(EC.AND.4077.NE.4012)GOTO 70  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS DETAIL,ABT 70            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR
   IF(SB(5).AND.4000.NE.0)GOTO 40  *IF TRACK FLAW 
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
74 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 40                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DL842 TRACK 1 TO 1 W/R
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH842,DEMA3(14),LOCK
***       DH842 - TRACK 1 TO 1 W/R
**        DH842 - TRACK 1 TO 1 W/R
*         DH842 - TRACK 1 TO 1 W/R
*         ------------------------
* 
*         PURPOSE-
*         DH842 WILL WRITE AND  READ  EACH TRACK SELECTED ON THE 885-4X 
*         DRIVE IN A  1 TO 1 INTERLACE MODE.  THIS MODULE USES THE DEMA 
*         PATH. 
* 
*         METHOD -
*         1.  CALL SUBMODULE DH896A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P6.
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP 
*             12. 
*         4.  WRITE PATTERN IN ESM (SYSWR ESM). 
*         5.  RESERVE THE CONTROLLER AND 885-4X DRIVE.
*         6.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED, 
*             GO TO STEP 8. 
*         7.  WRITE  FROM  ESM  THE  NUMBER OF SECTORS  SELECTED IN THE 
*             TRACK USING  A NORMAL WRITE  OR WRITE  CODED  COMMAND  AS 
*             SELECTED IN THE P5 PARAMETER.  THE  WRITE  SEQUENCE  WILL 
*             BE DONE IN 1 TO 1 INTERLACE MODE. 
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 10. 
*         9.  READ  TO ESM THE NUMBER OF SECTORS SELECTED  IN THE TRACK 
*             USING A NORMAL READ OR  READ CODED COMMAND AS SELECTED IN 
*             THE P5 PARAMETER.  THE READ SEQUENCE WILL BE DONE IN 1 TO 
*             1 INTERLACE MODE. 
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             9.
*         11. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2 
*             THROUGH 10 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE 
*             DONE. 
*         12. INCREMENT THE CYLINDER COUNT BY ONE.
*         13. REPEAT STEPS 2 THROUGH 12 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         14. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH  13  UNTIL  THE ITERATION COUNTER IS GREATER THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, OR THE ACCESS
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*IF DEF,PFMD,2
*         DH896A - VALIDATE PARAMETERS
*         DH896C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = ESM BLOCK INDEX 
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
* 
1  FORMAT DH842 - TRACK 1 TO 1 W/R
2  FORMAT DH842 ERROR(S) = *DECD
3  FORMAT DH842 EC=*DECD, LC=*DECD
4  FORMAT DH842 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=42D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 96A                     *VALIDATE PARAMETERS
24 B6=P2.RS.6                   *FIRST TRACK NUMBER 
   B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB FOR WC START B10  *GENERATE RANDOM DATA 
* 
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
30 IF(B7.EQ.1511) GOTO 44       *SKIP CYLINDER 1511 
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
31 SYSWR ESM                     *WRITE BLOCK TO ESM
   GOTO 31 WHILE (B9+1.LT.4)     *REPEAT FOR 4 BLOCKS 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 70             *RESERVE DRIVE
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A TRACK IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=33                        *WRITE FROM ESM CODED 
   WRITE FROM ESM B4 C SEC AT CYL B7,TRK B6,SEC B5,ABT 66 
   GOTO 34                      *JUMP 
32 B8=32B                       *WRITE FROM ESM 
   WRITE FROM ESM B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66 
34 IF(P5.AND.2.NE.0) GOTO 40    *IF READ DISABLED 
* 
/---------READ A TRACK IN 1 TO 1 INTERLACE MODE.
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED
   B8=35                        *READ TO ESM CODED
   READ TO ESM B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70
   GOTO 40                      *JUMP 
36 B8=34                        *READ TO ESM
   READ TO ESM B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70
40 ENDSUB 
   IF(ES.AND.SL.EQ.0) GOTO 42   *IF NOT SCOPE LOOP, 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.
* 
42 B10=P2.AND.77                *UPPER TRACK NUMBER 
   GOTO 44 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE 
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
44 B6=P2.RS.6                   *FIRST TRACK NUMBER 
46 GOTO 52 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
52 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
66 IF(EC.AND.4077.NE.4012)GOTO 70  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS DETAIL,ABT 70            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR
   IF(SB(5).AND.4000.NE.0)GOTO 40  *IF TRACK FLAW 
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 96C                        *CALL ERROR PROCESSOR
74 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 40                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DH842 TRACK 1 TO 1 W/R
*ENDIF
*IF DEF,SFMD
   MODULE D8843,FMDFT(7),LOCK                                            D88
***       D8843 - TRACK 1 TO 1 W/R/C                                     D88
**        D8843 - TRACK 1 TO 1 W/R/C                                     D88
*         D8843 - TRACK 1 TO 1 W/R/C                                     D88
*         --------------------------                                     D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8843  WILL  WRITE,  READ  AND COMPARE THE DATA READ FROM THE  D88
*         TRACK FOR EACH TRACK SELECTED ON THE 885-1X DRIVE IN A 1 TO 1 
*         INTERLACE MODE.                                                D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  CALL SUBMODULE D8898A TO CHECK THE PARAMETERS SETTINGS IN  D88
*             P0 THROUGH P7.                                             D88
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA  D88
*             PATTERN AS DESCRIBED IN PARAMETERS.                        D88
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP  D88
*             14.                                                        D88
*         4.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         5.  SET READ MARGIN SELECTED.                                  D88
*         6.  CHECK PARAMETER P5 FOR WRITE DISABLED, AND  IF  DISABLED,  D88
*             GO TO STEP 8.                                              D88
*         7.  WRITE THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A  D88
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5  D88
*             PARAMETER. THE WRITE SEQUENCE WILL BE  DONE  IN  1  TO  1  D88
*             INTERLACE MODE.                                            D88
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO  D88
*             TO STEP 11.                                                D88
*         9.  READ A SECTOR IN  THE  SELECTED  TRACK  USING  A   NORMAL 
*             READ  OR  READ  CODED  COMMAND  AS  SELECTED  IN  THE  P5 
*             PARAMETER. COMPARE THE DATA READ WITH THE  EXPECTED  DATA  D88
*             AND REPORT ANY DATA ERRORS.                                D88
*         10. REPEAT STEP 9 UNTIL ALL THE SECTORS SELECTED IN PARAMETER  D88
*             P3  ARE  READ.  THE  READ SEQUENCE WILL BE DONE IN 1 TO 1  D88
*             INTERLACE MODE.                                            D88
*         11. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH  D88
*             10.                                                        D88
*         12. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2  D88
*             THROUGH 11 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE  D88
*             DONE.                                                      D88
*         13. INCREMENT THE CYLINDER COUNT BY ONE.                       D88
*         14. REPEAT STEPS 2 THROUGH 13 UNTIL ALL CYLINDERS SELECTED IN  D88
*             PARAMETERS P0 THROUGH P1 ARE DONE.                         D88
*         15. IF  ALL READ MARGINS ARE SELECTED IN PARAMETER P7, REPEAT  D88
*             STEPS 2 THROUGH 14 UNTIL ALL 9  READ  MARGINS  HAVE  BEEN  D88
*             TESTED.                                                    D88
*         16. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2  D88
*             THROUGH  15  UNTIL  THE ITERATION COUNTER IS GREATER THAN  D88
*             THE ITERATION COUNT IN PARAMETER P9.                       D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P1 CONTAINS THE LAST CYLINDER NUMBER.                          D88
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.               D88
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS.              D88
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN         D88
*           CHANGING.                                                    D88
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN          D88
*           GENERATION.                                                  D88
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*         P7 CONTAINS THE READ MARGIN SELECTED.                          D88
*         P9 CONTAINS THE ITERATION COUNT.                               D88
*                                                                        D88
*         EXIT -                                                         D88
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS        D88
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR THE ACCESS   D88
*         LEVEL IS TOO LOW.                                              D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898A - VALIDATE PARAMETERS                                   D88
*         D8898C - REPORT ERRORS DETECTED WITHIN THE MODULE.             D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B0  = LOOP COUNTER.                                            D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B2  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B3  = MODULE ITERATION COUNTER.                                D88
*         B4  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.             D88
*         OB(504) = ODD/EVEN PASS COUNT.                                 D88
*                                                                        D88
1  FORMAT D8843 - TRACK 1 TO 1 W/R/C                                     D88
2  FORMAT D8843 ERROR(S) = *DECD                                         D88
3  FORMAT D8843 EC=*DECD, LC=*DECD                                       D88
4  FORMAT D8843 CYL=*OCTB T=*OB S=*OB                                    D88
5  FORMAT D8843 E0019 L*OC DATA COMPARE ERROR  (READ 1 TO 1)             D88
*                                                                        D88
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.                     D88
*                                                                        D88
20 MSG 1 TO PRINT               *PRINT MODULE NAME                       D88
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME                     D88
*                                                                        D88
/---------INITIALIZE THE REGISTER FOR THE MODULE.                        D88
*                                                                        D88
   B1=43D                       *MODULE NUMBER IN OCTAL                  D88
   B3=0                         *INIT. ITERATION COUNTER                 D88
*                                                                        D88
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.               D88
*                                                                        D88
   CALL 98A                     *VALIDATE PARAMETERS                     D88
24 B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
   B7=P0                        *FIRST CYLINDER NUMBER                   D88
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN                   D88
*                                                                        D88
/---------GENERATE A RANDOM DATA PATTERN.                                D88
*                                                                        D88
   B10=P6                       *IF FIXED RANDOM DATA                    D88
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER                       D88
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA               D88
*                                                                        D88
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.                         D88
*                                                                        D88
30 IF(B7.EQ.1511) GOTO 52       *SKIP CYLINDER 1511                      D88
   B8=41                        *RESERVE DRIVE FLAG                      D88
   RES,DRIVE,ABT 72             *RESERVE DRIVE                           D88
   B8=43                        *MARGINS FLAG                            D88
   MARGINS,B9,ABT 72            *SELECT READ MARGINS                     D88
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED                       D88
*                                                                        D88
/---------WRITE A TRACK IN 1 TO 1 INTERLACE MODE.                        D88
*                                                                        D88
   B4=B2                        *NUMBER OF SECTORS                       D88
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER                    D88
   GOSUB 60                     *DISPLAY CURRENT MESSAGE                 D88
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED                   D88
   B8=31                        *WRITE CODED FLAG                        D88
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70
   GOTO 34                      *JUMP                                    D88
32 B8=30                        *WRITE FLAG                              D88
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70                           D88
34 IF(P5.AND.2.NE.0)GOTO 44     *IF READ DISABLED                        D88
*                                                                        D88
/---------INITIALIZE THE REGISTER TO READ THE TRACK.                     D88
*                                                                        D88
   OB(504)=P3.AND.77            *UPPER SECTOR NUMBER                     D88
   B5=P3.RS.6                   *LOWER SECTOR NUMBER                     D88
*                                                                        D88
/---------READ A TRACK 1 TO 1 INTERLACE AND CHECK THE DATA.              D88
*                                                                        D88
36 GOSUB 60                     *DISPLAY CURRENT MESSAGE                 D88
   B4 =1                        *ONE SECTOR READ                         D88
   IF(P5.AND.1.NE.0) GOTO 40    *IF CODED NOT SELECTED                   D88
   B8=24                        *READ CODED FLAG                         D88
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
   GOTO 42                      *JUMP TO COMPARE DATA                    D88
40 B8=23                        *READ FLAG                               D88
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72                            D88
*                                                                        D88
/---------CHECK THE DATA READ FROM THE TRACK.                            D88
*                                                                        D88
42 B10=476                      *COMPARE COUNT                           D88
   B8=47                        *COMPARE FLAG                            D88
   COMPARE IB(4) TO OB(4) FOR B10, ABT 66                                D88
*                                                                        D88
/---------UPDATE THE REGISTER TO READ THE NEXT SECTOR.                   D88
*                                                                        D88
   GOTO 36 WHILE (B5+1 LE OB(504))  *COMPLETE FIRST PASS                 D88
44 ENDSUB                                                                D88
   IF(ES.AND.RC.EQ.0) GOTO 46   *IF NO REPEAT CONDITION                  D88
   B0=B0+1                      *INCREMENT THE LOOP COUNT                D88
   GOTO 30                      *REPEAT THE CONDITION                    D88
*                                                                        D88
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.                       D88
*                                                                        D88
46 B10=P2.AND.77                *UPPER TRACK NUMBER                      D88
   GOTO 50 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE                  D88
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
50 B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
52 GOTO 54 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE                   D88
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
*                                                                        D88
/---------CHECK FOR ALL READ MARGINS TRIED.                              D88
*                                                                        D88
54 IF(P7.NE.77) GOTO 56         *IF ONLY ONE READ MARGIN                 D88
   B9=B9+1                      *UPDATE READ MARGIN                      D88
   IF(B9.AND.3.NE.3) GOTO 24    *IF ALL STROBES NOT TRIED                D88
   B9=B9+5                      *UPDATE NEXT OFFSET TO USE               D88
   IF(B9.AND.30.NE.30) GOTO 24  *IF ALL OFFSETS NOT TRIED                D88
   B9 = 0        *CLEAR MARGINS FOR NEXT ITERATION
*                                                                        D88
/---------CHECK FOR THE ITERATION COUNT SATISFIED.                       D88
*                                                                        D88
56 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT              D88
*                                                                        D88
/---------CHECK FOR REPEAT MODULE SELECTED.                              D88
*                                                                        D88
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE                     D88
   IF(B11.NE.0)MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *ERRORS             D88
   GOTO 77                         *EXIT THE MODULE                      D88
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.                 D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE                   D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------PROCESS DATA MISCOMPARE ERROR.                                 D88PTR4
*                                                                        D88
66 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON                   D88
   ERROR 02/01                     *ERROR CODE
   MSG 5 (EA) TO LINE 5            *ERROR MESSAGE                        D88
   GOTO 74                         *GO TO REPORT THE ERROR               D88
*                                                                        D88
/---------PROCESS ABORT ON A WRITE COMMAND.                              D88
*                                                                        D88
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
*                                                                        D88
/---------PROCESS ERRORS DETECTED IN THE MODULE.                         D88
*                                                                        D88
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON                   D88
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON              D88
   IF(SB.EQ.7777) GOTO 74          *IF NO GENERAL STATUS                 D88
   IF(SB.EQ.0) GOTO 74             *NOT GENERAL STATUS ERROR             D88
   IF(SB(5).AND.4000.NE.0)GOTO 44  *IF TRACK FLAW                        D88
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE             D88
   CALL 98C                        *CALL ERROR PROCESSOR                 D88
76 B11=B11+1                       *INCREMENT ERROR COUNT                D88
   GOTO 44                         *EXIT THE SUBROUTINE                  D88
77 END 20                          *END OF THE MODULE                    D88
COMPILE                      *D8843 TRACK 1 TO 1 W/R/C                   D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL843,LSFMD2(16),LOCK 
***       DL843 - TRACK 1 TO 1 W/R/C
**        DL843 - TRACK 1 TO 1 W/R/C
*         DL843 - TRACK 1 TO 1 W/R/C
*         --------------------------
* 
*         PURPOSE-
*         DL843  WILL  WRITE,  READ  AND COMPARE THE DATA READ FROM THE 
*         TRACK FOR EACH TRACK SELECTED ON THE 885-1X DRIVE IN A 1 TO 1 
*         INTERLACE MODE. 
* 
*         METHOD -
*         1.  CALL SUBMODULE DL898A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P7.
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP 
*             14. 
*         4.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         5.  SET READ MARGIN SELECTED. 
*         6.  CHECK PARAMETER P5 FOR WRITE DISABLED, AND  IF  DISABLED, 
*             GO TO STEP 8. 
*         7.  WRITE THE NUMBER OF SECTORS SELECTED IN THE TRACK USING A 
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5 
*             PARAMETER. THE WRITE SEQUENCE WILL BE  DONE  IN  1  TO  1 
*             INTERLACE MODE. 
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 11. 
*         9.  READ A SECTOR IN  THE  SELECTED  TRACK  USING  A   NORMAL 
*             READ  OR  READ  CODED  COMMAND  AS  SELECTED  IN  THE  P5 
*             PARAMETER. COMPARE THE DATA READ WITH THE  EXPECTED  DATA 
*             AND REPORT ANY DATA ERRORS. 
*         10. REPEAT STEP 9 UNTIL ALL THE SECTORS SELECTED IN PARAMETER 
*             P3  ARE  READ.  THE  READ SEQUENCE WILL BE DONE IN 1 TO 1 
*             INTERLACE MODE. 
*         11. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             10. 
*         12. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2 
*             THROUGH 11 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE 
*             DONE. 
*         13. INCREMENT THE CYLINDER COUNT BY ONE.
*         14. REPEAT STEPS 2 THROUGH 13 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         15. IF  ALL READ MARGINS ARE SELECTED IN PARAMETER P7, REPEAT 
*             STEPS 2 THROUGH 14 UNTIL ALL 9  READ  MARGINS  HAVE  BEEN 
*             TESTED. 
*         16. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH  15  UNTIL  THE ITERATION COUNTER IS GREATER THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P7 CONTAINS THE READ MARGIN SELECTED. 
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR THE ACCESS
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*         DL898A - VALIDATE PARAMETERS
*         DL898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = CURRENT MARGINS SELECTION.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
*         OB(504) = ODD/EVEN PASS COUNT.
* 
1  FORMAT DL843 - TRACK 1 TO 1 W/R/C
2  FORMAT DL843 ERROR(S) = *DECD
3  FORMAT DL843 EC=*DECD, LC=*DECD
4  FORMAT DL843 CYL=*OCTB T=*OB S=*OB 
5  FORMAT DL843 E0019 L*OC DATA COMPARE ERROR  (READ 1 TO 1)
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=43D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 98A                     *VALIDATE PARAMETERS
24 B6=P2.RS.6                   *FIRST TRACK NUMBER 
   B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB(0) FOR WC START B10  *GENERATE RANDOM DATA
* 
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
30 IF(B7.EQ.1511) GOTO 52       *SKIP CYLINDER 1511 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 72             *RESERVE DRIVE
   B8=43                        *MARGINS FLAG 
   MARGINS,B9,ABT 72            *SELECT READ MARGINS
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A TRACK IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=31                        *WRITE CODED FLAG 
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70
   GOTO 34                      *JUMP 
32 B8=30                        *WRITE FLAG 
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70
34 IF(P5.AND.2.NE.0)GOTO 44     *IF READ DISABLED 
* 
/---------INITIALIZE THE REGISTER TO READ THE TRACK.
* 
   OB(504)=P3.AND.77            *UPPER SECTOR NUMBER
   B5=P3.RS.6                   *LOWER SECTOR NUMBER
* 
/---------READ A TRACK 1 TO 1 INTERLACE AND CHECK THE DATA. 
* 
36 GOSUB 60                     *DISPLAY CURRENT MESSAGE
   B4 =1                        *ONE SECTOR READ
   IF(P5.AND.1.NE.0) GOTO 40    *IF CODED NOT SELECTED
   B8=24                        *READ CODED FLAG
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
   GOTO 42                      *JUMP TO COMPARE DATA 
40 B8=23                        *READ FLAG
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
* 
/---------CHECK THE DATA READ FROM THE TRACK. 
* 
42 B10=500                      *COMPARE COUNT
   B8=47                        *COMPARE FLAG 
   COMPARE IB(0) TO OB(0) FOR B10, ABT 66 
* 
/---------UPDATE THE REGISTER TO READ THE NEXT SECTOR.
* 
   GOTO 36 WHILE (B5+1 LE OB(504))  *COMPLETE FIRST PASS
44 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 46   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.
* 
46 B10=P2.AND.77                *UPPER TRACK NUMBER 
   GOTO 50 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE 
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
50 B6=P2.RS.6                   *FIRST TRACK NUMBER 
52 GOTO 54 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
/---------CHECK FOR ALL READ MARGINS TRIED. 
* 
54 IF(P7.NE.77) GOTO 56         *IF ONLY ONE READ MARGIN
   B9=B9+1                      *UPDATE READ MARGIN 
   IF(B9.AND.3.NE.3) GOTO 24    *IF ALL STROBES NOT TRIED 
   B9=B9+5                      *UPDATE NEXT OFFSET TO USE
   IF(B9.AND.30.NE.30) GOTO 24  *IF ALL OFFSETS NOT TRIED 
   B9=0 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
56 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS DATA MISCOMPARE ERROR.
* 
66 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   ERROR 02/01                     *ERROR CODE
   MSG 5 (EA) TO LINE 5            *ERROR MESSAGE 
   GOTO 74                         *GO TO REPORT THE ERROR
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 74          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 74             *NOT GENERAL STATUS ERROR
   IF(SB(5).AND.4000.NE.0)GOTO 44  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 44                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DL843 TRACK 1 TO 1 W/R/C
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH843,DEMA3(14),LOCK
***       DH843 - TRACK 1 TO 1 W/R/C
**        DH843 - TRACK 1 TO 1 W/R/C
*         DH843 - TRACK 1 TO 1 W/R/C
*         --------------------------
* 
*         PURPOSE-
*         DH843  WILL  WRITE,  READ  AND COMPARE THE DATA READ FROM THE 
*         TRACK FOR EACH TRACK SELECTED ON THE 885-4X DRIVE IN A 1 TO 1 
*         INTERLACE MODE.  THIS MODULE USES THE DEMA PATH.
* 
*         METHOD -
*         1.  CALL SUBMODULE DH896A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P6.
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP 
*             14. 
*         4.  WRITE PATTERN TO ESM (SYSWR ESM). 
*         5.  RESERVE CONTROLLER AND 885-4X DRIVE.
*         6.  CHECK PARAMETER P5 FOR WRITE DISABLED, AND  IF  DISABLED, 
*             GO TO STEP 8. 
*         7.  WRITE  FROM  ESM  THE  NUMBER OF SECTORS  SELECTED IN THE 
*             TRACK USING  A NORMAL WRITE  OR WRITE  CODED  COMMAND  AS 
*             SELECTED IN THE P5 PARAMETER.  THE  WRITE  SEQUENCE  WILL 
*             BE DONE IN 1 TO 1 INTERLACE MODE. 
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 11. 
*         9.  READ TO ESM A SECTOR IN THE SELECTED TRACK USING A NORMAL 
*             READ  OR  READ  CODED  COMMAND  AS  SELECTED  IN  THE  P5 
*             PARAMETER.   COMPARE THE DATA READ (SYSRD ESM)  WITH  THE 
*             EXPECTED DATA AND REPORT ANY DATA ERRORS. 
*         10. REPEAT STEP 9 UNTIL ALL THE SECTORS SELECTED IN PARAMETER 
*             P3  ARE  READ.  THE  READ SEQUENCE WILL BE DONE IN 1 TO 1 
*             INTERLACE MODE. 
*         11. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             10. 
*         12. THE  TRACK COUNT IS INCREMENTED BY ONE AND REPEAT STEPS 2 
*             THROUGH 11 UNTIL ALL TRACKS SELECTED IN PARAMETER P2  ARE 
*             DONE. 
*         13. INCREMENT THE CYLINDER COUNT BY ONE.
*         14. REPEAT STEPS 2 THROUGH 13 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         15. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH  14  UNTIL  THE ITERATION COUNTER IS GREATER THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, OR THE ACCESS
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*         DH896A - VALIDATE PARAMETERS
*         DH896C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = ESM BLOCK INDEX 
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
*         B12 = SYSRD STATUS
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
*         OB(504) = ODD/EVEN PASS COUNT.
* 
1  FORMAT DH843 - TRACK 1 TO 1 W/R/C
2  FORMAT DH843 ERROR(S) = *DECD
3  FORMAT DH843 EC=*DECD, LC=*DECD
4  FORMAT DH843 CYL=*OCTB T=*OB S=*OB 
5  FORMAT DH843 E0019 L*OC DATA COMPARE ERROR  (READ 1 TO 1)
10 FORMAT DH843 E0032 L*OC ESM TRANSFER ERROR (STATUS=*O) 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=43D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 96A                     *VALIDATE PARAMETERS
24 B6=P2.RS.6                   *FIRST TRACK NUMBER 
   B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB FOR WC START B10  *GENERATE RANDOM DATA 
* 
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
30 IF(B7.EQ.1511) GOTO 52       *SKIP CYLINDER 1511 
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
31 SYSWR ESM                     *WRITE BLOCK TO ESM
   GOTO 31 WHILE (B9+1.LT.4)     *REPEAT FOR 4 BLOCKS 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 72             *RESERVE DRIVE
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A TRACK IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=P3.RS.6                   *LOWEST SECTOR NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=33                        *WRITE FROM ESM CODED 
   WRITE FROM ESM B4 C SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
   GOTO 34                      *JUMP 
32 B8=32                        *WRITE FROM ESM 
   WRITE FROM ESM B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
34 IF(P5.AND.2.NE.0)GOTO 44     *IF READ DISABLED 
* 
/---------INITIALIZE THE REGISTER TO READ THE TRACK.
* 
   OB(504)=P3.AND.77            *UPPER SECTOR NUMBER
   B5=P3.RS.6                   *LOWER SECTOR NUMBER
* 
/---------READ A TRACK 1 TO 1 INTERLACE AND CHECK THE DATA. 
* 
36 GOSUB 60                     *DISPLAY CURRENT MESSAGE
   B4 =1                        *ONE SECTOR READ
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 72             *RESERVE DRIVE
   IF(P5.AND.1.NE.0) GOTO 40    *IF CODED NOT SELECTED
   B8=35                        *READ TO ESM CODED
   READ TO ESM B4 C SEC AT CYL B7,TRK B6,SEC B5,ABT 72
   GOTO 42                      *JUMP TO COMPARE DATA 
40 B8=34                        *READ TO ESM
   READ TO ESM B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72
* 
/---------CHECK THE DATA READ FROM THE TRACK. 
* 
42 B9 = 0                       *INIT. ESM BLOCK INDEX
   SYSREW ESM                   *INIT. ESM ADRS 
43 B10=500                      *COMPARE COUNT
   B8 = 17B 
   SYSRD ESM, STATUS TO B12     *READ ONE ESM BLOCK 
   IF (B12.NE.0) ERROR 05/00, GOTO 67 
   B8=47                        *COMPARE FLAG 
   COMPARE IB TO OB FOR B10, ABT 66 
   GOTO 43 WHILE (B9+1.LT.4)    *REPEAT FOR 4 BLOCKS
* 
/---------UPDATE THE REGISTER TO READ THE NEXT SECTOR.
* 
   GOTO 36 WHILE (B5+1 LE OB(504))  *COMPLETE FIRST PASS
44 ENDSUB 
   IF(ES.AND.SL.EQ.0) GOTO 46   *IF NOT SCOPE LOOP, 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL TRACKS AND CYLINDERS DONE.
* 
46 B10=P2.AND.77                *UPPER TRACK NUMBER 
   GOTO 50 WHILE (B6+1.GT.B10)  *IF ALL NOT TRACKS DONE 
   IF(P4.AND.10.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
50 B6=P2.RS.6                   *FIRST TRACK NUMBER 
52 GOTO 56 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
56 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.NE.0)MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS DATA MISCOMPARE ERROR.
* 
66 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   ERROR 02/01                     *ERROR CODE
   MSG 5 (EA) TO LINE 5            *ERROR MESSAGE 
   GOTO 74                         *GO TO REPORT THE ERROR
* 
/---------PROCESS ESM TRANSFER ERROR
* 
67 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   MSG 10 (EA,B12) TO LINE 5       *ESM TRANSFER ERROR
   GOTO 74                         *GO TO REPORT THE ERROR
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 74          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 74             *NOT GENERAL STATUS ERROR
   IF(SB(5).AND.4000.NE.0)GOTO 44  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 96C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 44                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DH843 TRACK 1 TO 1 W/R/C
*ENDIF
*IF DEF,SFMD
   MODULE D8844,FMDFT(7),LOCK                                            D88
***       D8844 - CYLINDER 1 TO 1 W/R                                    D88
**        D8844 - CYLINDER 1 TO 1 W/R                                    D88
*         D8844 - CYLINDER 1 TO 1 W/R                                    D88
*         ---------------------------                                    D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8844 WRITES AND  READS EACH CYLINDER SELECTED  ON THE 885-1X 
*         DRIVE IN A 1 TO 1 INTERLACE MODE.                              D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  CALL SUBMODULE D8898A TO CHECK THE PARAMETERS SETTINGS IN  D88
*             P0 THROUGH P7.                                             D88
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA  D88
*             PATTERN AS DESCRIBED IN PARAMETERS.                        D88
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP  D88
*             11.                                                        D88
*         4.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         5.  SET READ MARGIN SELECTED.                                  D88
*         6.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED,  D88
*             GO TO STEP 8.                                              D88
*         7.  WRITE  ALL  OF  THE  SECTORS  IN A SELECTED TRACK USING A  D88
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5  D88
*             PARAMETER.  THE  WRITE  SEQUENCE  WILL  BE DONE IN 1 TO 1  D88
*             INTERLACE MODE.                                            D88
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED ,GO  D88
*             TO STEP 10.                                                D88
*         9.  READ  ALL  OF  THE  SECTORS  IN  A SELECTED TRACK USING A  D88
*             NORMAL READ OR READ CODED COMMAND AS SELECTED IN  THE  P5  D88
*             PARAMETER.  THE  READ  SEQUENCE  WILL  BE  DONE IN 1 TO 1  D88
*             INTERLACE MODE.                                            D88
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH  D88
*             9.                                                         D88
*         11. INCREMENT THE CYLINDER COUNT BY ONE.                       D88
*         12. REPEAT STEPS 2 THROUGH 11 UNTIL ALL CYLINDERS SELECTED IN  D88
*             PARAMETERS P0 THROUGH P1 ARE DONE.                         D88
*         13. IF ALL READ MARGINS ARE SELECTED IN PARAMETER P7,  REPEAT  D88
*             STEPS  2  THROUGH  12  UNTIL ALL 9 READ MARGINS HAVE BEEN  D88
*             TESTED.                                                    D88
*         14. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2  D88
*             THROUGH 13 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN  D88
*             THE ITERATION COUNT IN PARAMETER P9.                       D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P1 CONTAINS THE LAST CYLINDER NUMBER.                          D88
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.               D88
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS.              D88
*            (P3 MUST BE EQUAL TO 37.)                                   D88PTR4
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN         D88
*           CHANGING.                                                    D88
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN          D88
*           GENERATION.                                                  D88
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*         P7 CONTAINS THE READ MARGIN SELECTED.                          D88
*         P9 CONTAINS THE ITERATION COUNT.                               D88
*                                                                        D88
*         EXIT -                                                         D88
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS        D88
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR THE ACCESS   D88
*         LEVEL IS TOO LOW.                                              D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898A - VALIDATE PARAMETERS.                                  D88
*         D8844A - VALIDATE PARAMETERS.                                  D88
*         D8898C - REPORT ERRORS DETECTED WITHIN THE MODULE.             D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B0  = LOOP COUNTER.                                            D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B2  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B3  = MODULE ITERATION COUNTER.                                D88
*         B4  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.             D88
*                                                                        D88
1  FORMAT D8844 - CYLINDER 1 TO 1 W/R                                    D88
2  FORMAT D8844 ERROR(S) = *DECD                                         D88
3  FORMAT D8844 EC=*DECD, LC=*DECD                                       D88
4  FORMAT D8844 CYL=*OCTB T=*OB S=*OB                                    D88
*                                                                        D88
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.                     D88
*                                                                        D88
20 MSG 1 TO PRINT               *PRINT MODULE NAME                       D88
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME                     D88
*                                                                        D88
/---------INITIALIZE THE REGISTER FOR THE MODULE.                        D88
*                                                                        D88
   B1=44D                       *MODULE NUMBER IN OCTAL                  D88
   B3=0                         *INIT. ITERATION COUNTER                 D88
*                                                                        D88
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.               D88
*                                                                        D88
   CALL 98A                     *VALIDATE PARAMETERS                     D88
   CALL 44A                     *VALIDATE PARAMETERS                     D88
24 B7=P0                        *FIRST CYLINDER NUMBER                   D88
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN                   D88
*                                                                        D88
/---------GENERATE A RANDOM DATA PATTERN.                                D88
*                                                                        D88
   B10=P6                       *IF FIXED RANDOM DATA                    D88
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER                       D88
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA               D88
*                                                                        D88
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.                         D88
*                                                                        D88
30 IF(B7.EQ.1511) GOTO 42       *SKIP CYLINDER 1511                      D88
   B8=41                        *RESERVE DRIVE FLAG                      D88
   RES,DRIVE,ABT 70             *RESERVE DRIVE                           D88
   B8=43                        *MARGINS FLAG                            D88
   MARGINS,B9,ABT 70            *SELECT READ MARGIN                      D88
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED                       D88
*                                                                        D88
/---------WRITE A CYLINDER IN 1 TO 1 INTERLACE MODE.                     D88
*                                                                        D88
   B4=B2                        *NUMBER OF SECTORS                       D88
   B5=0                         *FIRST SECTOR NUMBER                     D88
   B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
   GOSUB 60                     *DISPLAY CURRENT MESSAGE                 D88
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED                   D88
   B8=31                        *WRITE CODED FLAG                        D88
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 66
   GOTO 34                      *JUMP                                    D88
32 B8=30                        *WRITE FLAG                              D88
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66                           D88
34 IF(P5.AND.2.NE.0) GOTO 40    *IF READ DISABLED                        D88
*                                                                        D88
/---------READ A CYLINDER IN 1 TO 1 INTERLACE MODE.                      D88
*                                                                        D88
   B4=B2                        *NUMBER OF SECTORS                       D88
   B5=0                         *FIRST SECTOR NUMBER                     D88
   B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
   GOSUB 60                     *DISPLAY CURRENT MESSAGE                 D88
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED                   D88
   B8=24                        *READ CODED FLAG                         D88
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
   GOTO 40                      *JUMP                                    D88
36 B8=23                        *READ FLAG                               D88
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70                            D88
40 ENDSUB                                                                D88
   IF(ES.AND.RC.EQ.0) GOTO 42   *IF NO REPEAT CONDITION                  D88
   B0=B0+1                      *INCREMENT THE LOOP COUNT                D88
   GOTO 30                      *REPEAT THE CONDITION                    D88
*                                                                        D88
/---------CHECK FOR ALL CYLINDERS DONE.                                  D88
*                                                                        D88
42 GOTO 44 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN                 D88
   GOTO 26                      *GO TO GENERATE NEXT PATTERN             D88
*                                                                        D88
/---------CHECK FOR ALL READ MARGINS TRIED.                              D88
*                                                                        D88
44 IF(P7.NE.77) GOTO 46         *IF ONLY ONE READ MARGIN                 D88
   B9=B9+1                      *UPDATE READ MARGIN                      D88
   IF(B9.AND.3.NE.3) GOTO 24    *IF ALL STROBES NOT TRIED                D88
   B9=B9+5                      *UPDATE NEXT OFFSET TO USE               D88
   IF(B9.AND.30.NE.30) GOTO 24  *IF ALL OFFSETS NOT TRIED                D88
   B9 = 0        *CLEAR MARGINS FOR NEXT ITERATION
*                                                                        D88
/---------CHECK FOR THE ITERATION COUNT SATISFIED.                       D88
*                                                                        D88
46 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT              D88
*                                                                        D88
/---------CHECK FOR REPEAT MODULE SELECTED.                              D88
*                                                                        D88
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE                     D88
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED                D88
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS               D88
   GOTO 77                         *EXIT THE MODULE                      D88
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.                 D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE                   D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------PROCESS ABORT ON A WRITE COMMAND.                              D88
*                                                                        D88
66 IF(EC.AND.4077.NE.4012)GOTO 70  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS DETAIL,ABT 70            *GET DETAILED STATUS 
*                                                                        D88
/---------PROCESS ERRORS DETECTED IN THE MODULE.                         D88
*                                                                        D88
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON                   D88
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON              D88
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS                 D88
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR             D88
   IF(SB(5).AND.4000.NE.0)GOTO 40  *IF TRACK FLAW                        D88
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE             D88
   CALL 98C                        *CALL ERROR PROCESSOR                 D88
74 B11=B11+1                       *INCREMENT ERROR COUNT                D88
   GOTO 40                         *EXIT THE SUBROUTINE                  D88
77 END 20                          *END OF THE MODULE                    D88
COMPILE                      *D8844 CYLINDER 1 TO 1 W/R                  D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL844,LSFMD2(16),LOCK 
***       DL844 - CYLINDER 1 TO 1 W/R 
**        DL844 - CYLINDER 1 TO 1 W/R 
*         DL844 - CYLINDER 1 TO 1 W/R 
*         --------------------------- 
* 
*         PURPOSE-
*         DL844 WRITES AND  READS EACH CYLINDER SELECTED  ON THE 885-1X 
*         DRIVE IN A 1 TO 1 INTERLACE MODE. 
* 
*         METHOD -
*         1.  CALL SUBMODULE DL898A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P7.
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP 
*             11. 
*         4.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         5.  SET READ MARGIN SELECTED. 
*         6.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED, 
*             GO TO STEP 8. 
*         7.  WRITE  ALL  OF  THE  SECTORS  IN A SELECTED TRACK USING A 
*             NORMAL WRITE OR WRITE CODED COMMAND AS SELECTED IN THE P5 
*             PARAMETER.  THE  WRITE  SEQUENCE  WILL  BE DONE IN 1 TO 1 
*             INTERLACE MODE. 
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED ,GO 
*             TO STEP 10. 
*         9.  READ  ALL  OF  THE  SECTORS  IN  A SELECTED TRACK USING A 
*             NORMAL READ OR READ CODED COMMAND AS SELECTED IN  THE  P5 
*             PARAMETER.  THE  READ  SEQUENCE  WILL  BE  DONE IN 1 TO 1 
*             INTERLACE MODE. 
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             9.
*         11. INCREMENT THE CYLINDER COUNT BY ONE.
*         12. REPEAT STEPS 2 THROUGH 11 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         13. IF ALL READ MARGINS ARE SELECTED IN PARAMETER P7,  REPEAT 
*             STEPS  2  THROUGH  12  UNTIL ALL 9 READ MARGINS HAVE BEEN 
*             TESTED. 
*         14. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 13 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*            (P3 MUST BE EQUAL TO 37.)
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P7 CONTAINS THE READ MARGIN SELECTED. 
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR THE ACCESS
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*         DL898A - VALIDATE PARAMETERS. 
*         DL844A - VALIDATE PARAMETERS. 
*         DL898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = CURRENT MARGINS SELECTION.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
* 
1  FORMAT DL844 - CYLINDER 1 TO 1 W/R 
2  FORMAT DL844 ERROR(S) = *DECD
3  FORMAT DL844 EC=*DECD, LC=*DECD
4  FORMAT DL844 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=44D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 98A                     *VALIDATE PARAMETERS
   CALL 44A                     *VALIDATE PARAMETERS
24 B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB(0) FOR WC START B10  *GENERATE RANDOM DATA
* 
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
30 IF(B7.EQ.1511) GOTO 42       *SKIP CYLINDER 1511 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 70             *RESERVE DRIVE
   B8=43                        *MARGINS FLAG 
   MARGINS,B9,ABT 70            *SELECT READ MARGIN 
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A CYLINDER IN 1 TO 1 INTERLACE MODE.
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=0                         *FIRST SECTOR NUMBER
   B6=P2.RS.6                   *FIRST TRACK NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=31                        *WRITE CODED FLAG 
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 66
   GOTO 34                      *JUMP 
32 B8=30                        *WRITE FLAG 
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66
34 IF(P5.AND.2.NE.0) GOTO 40    *IF READ DISABLED 
* 
/---------READ A CYLINDER IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=0                         *FIRST SECTOR NUMBER
   B6=P2.RS.6                   *FIRST TRACK NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED
   B8=24                        *READ CODED FLAG
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
   GOTO 40                      *JUMP 
36 B8=23                        *READ FLAG
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
40 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 42   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL CYLINDERS DONE. 
* 
42 GOTO 44 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
/---------CHECK FOR ALL READ MARGINS TRIED. 
* 
44 IF(P7.NE.77) GOTO 46         *IF ONLY ONE READ MARGIN
   B9=B9+1                      *UPDATE READ MARGIN 
   IF(B9.AND.3.NE.3) GOTO 24    *IF ALL STROBES NOT TRIED 
   B9=B9+5                      *UPDATE NEXT OFFSET TO USE
   IF(B9.AND.30.NE.30) GOTO 24  *IF ALL OFFSETS NOT TRIED 
   B9=0 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
46 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
66 IF(EC.AND.4077.NE.4012)GOTO 70  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS DETAIL,ABT 70            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR
   IF(SB(5).AND.4000.NE.0)GOTO 40  *IF TRACK FLAW 
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
74 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 40                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DL844 CYLINDER 1 TO 1 W/R 
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH844,DEMA3(14),LOCK
***       DH844 - CYLINDER 1 TO 1 W/R 
**        DH844 - CYLINDER 1 TO 1 W/R 
*         DH844 - CYLINDER 1 TO 1 W/R 
*         --------------------------- 
* 
*         PURPOSE-
*         DH844 WRITES AND  READS EACH CYLINDER SELECTED  ON THE 885-4X 
*         DRIVE IN  1 TO 1 INTERLACE MODE.  THIS  MODULE USES  THE DEMA 
*         PATH. 
* 
*         METHOD -
*         1.  CALL SUBMODULE DH896A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P6.
*         2.  IF  RANDOM  SELECTED,  SET  OUTPUT  BUFFER  WITH THE DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  IF THE CYLINDER NUMBER IS EQUAL TO 1511 OCTAL, GO TO STEP 
*             11. 
*         4.  WRITE PATTERN TO ESM (SYSWR ESM). 
*         5.  RESERVE THE CONTROLLER AND 885-4X DRIVE.
*         6.  CHECK  PARAMETER  P5 FOR WRITE DISABLED, AND IF DISABLED, 
*             GO TO STEP 8. 
*         7.  WRITE  FROM  ESM  ALL  OF  THE  SECTORS  IN   A  SELECTED 
*             TRACK USING  A NORMAL WRITE  OR WRITE  CODED  COMMAND  AS 
*             SELECTED IN THE P5 PARAMETER.  THE  WRITE  SEQUENCE  WILL 
*             BE DONE IN 1 TO 1 INTERLACE MODE. 
*         8.  CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED ,GO 
*             TO STEP 10. 
*         9.  READ  TO  ESM  ALL  OF THE  SECTORS  IN  A SELECTED TRACK 
*             USING A NORMAL READ OR  READ CODED COMMAND AS SELECTED IN 
*             THE P5 PARAMETER.  THE READ SEQUENCE WILL BE DONE IN 1 TO 
*             1 INTERLACE MODE. 
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             9.
*         11. INCREMENT THE CYLINDER COUNT BY ONE.
*         12. REPEAT STEPS 2 THROUGH 11 UNTIL ALL CYLINDERS SELECTED IN 
*             PARAMETERS P0 THROUGH P1 ARE DONE.
*         13. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 12 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*            (P3 MUST BE EQUAL TO 37.)
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, OR THE ACCESS
*         LEVEL IS TOO LOW. 
* 
*         SUBMODULES REFERENCED-
*         DH896A - VALIDATE PARAMETERS. 
*         DH844A - VALIDATE PARAMETERS. 
*         DH896C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF SECTORS TO PROCESS. 
*         B3  = MODULE ITERATION COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = ESM BLOCK INDEX 
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
* 
1  FORMAT DH844 - CYLINDER 1 TO 1 W/R 
2  FORMAT DH844 ERROR(S) = *DECD
3  FORMAT DH844 EC=*DECD, LC=*DECD
4  FORMAT DH844 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
* 
/---------INITIALIZE THE REGISTER FOR THE MODULE. 
* 
   B1=44D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 96A                     *VALIDATE PARAMETERS
   CALL 44A                     *VALIDATE PARAMETERS
24 B7=P0                        *FIRST CYLINDER NUMBER
26 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB FOR WC START B10  *GENERATE RANDOM DATA 
* 
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.
* 
30 IF(B7.EQ.1511) GOTO 42       *SKIP CYLINDER 1511 
   B9 = 0                        *INIT. ESM BLOCK INDEX 
   SYSREW ESM                    *INIT. ESM ADRS
31 SYSWR ESM                     *WRITE BLOCK TO ESM
   GOTO 31 WHILE (B9+1.LT.4)     *REPEAT FOR 4 BLOCKS 
   B8=41                        *RESERVE DRIVE FLAG 
   RES,DRIVE,ABT 70             *RESERVE DRIVE
   IF(P5.AND.4.NE.0) GOTO 34    *IF WRITE DISABLED
* 
/---------WRITE A CYLINDER IN 1 TO 1 INTERLACE MODE.
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=0                         *FIRST SECTOR NUMBER
   B6=P2.RS.6                   *FIRST TRACK NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 32    *IF CODED NOT SELECTED
   B8=33                        *WRITE FROM ESM CODED 
   WRITE FROM ESM B4 C SEC AT CYL B7,TRK B6,SEC B5,ABT 66 
   GOTO 34                      *JUMP 
32 B8=32                        *WRITE FROM ESM 
   WRITE FROM ESM B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 66 
34 IF(P5.AND.2.NE.0) GOTO 40    *IF READ DISABLED 
* 
/---------READ A CYLINDER IN 1 TO 1 INTERLACE MODE. 
* 
   B4=B2                        *NUMBER OF SECTORS
   B5=0                         *FIRST SECTOR NUMBER
   B6=P2.RS.6                   *FIRST TRACK NUMBER 
   GOSUB 60                     *DISPLAY CURRENT MESSAGE
   IF(P5.AND.1.NE.0) GOTO 36    *IF CODED NOT SELECTED
   B8=35                        *READ TO ESM CODED
   READ TO ESM B4 C SEC AT CYL B7,TRK B6,SEC B5,ABT 70
   GOTO 40                      *JUMP 
36 B8=34                        *READ TO ESM
   READ TO ESM B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70
40 ENDSUB 
   IF(ES.AND.SL.EQ.0) GOTO 42   *IF NOT SCOPE LOOP, 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 30                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR ALL CYLINDERS DONE. 
* 
42 GOTO 46 WHILE (B7+1.GT.P1)   *IF ALL CYLINDERS DONE
   IF(P4.AND.20.EQ.0) GOTO 30   *IF FIXED RANDOM PATTERN
   GOTO 26                      *GO TO GENERATE NEXT PATTERN
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
46 GOTO 24 WHILE (B3+1.LT.P9)   *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
60 IF(ES.AND.SL.NE.0) GOTO 62      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
62 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON A WRITE COMMAND. 
* 
66 IF(EC.AND.4077.NE.4012)GOTO 70  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 70           *GET GENERAL STATUS
   STATUS DETAIL,ABT 70            *GET DETAILED STATUS 
* 
/---------PROCESS ERRORS DETECTED IN THE MODULE.
* 
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON 
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR
   IF(SB(5).AND.4000.NE.0)GOTO 40  *IF TRACK FLAW 
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 96C                        *CALL ERROR PROCESSOR
74 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 40                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DH844 CYLINDER 1 TO 1 W/R 
*ENDIF
*IF DEF,SFMD
   MODULE D8844A,FMDFT(7),LOCK                                           D88
***       D8844A - PARAMETER VERIFICATION                                D88
**        D8844A - PARAMETER VERIFICATION                                D88
*         D8844A - PARAMETER VERIFICATION                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8844A  CHECKS  THE  PARAMETER  WORD  P3  TO  VERIFY THAT ALL  D88PTR4
*         SECTORS IN A TRACK ARE SELECTED.  IF PARAMETER P3 ENTRY ERROR  D88
*         IS  DETECTED, THE MODULE REPORTS AN ERROR SO THE OPERATOR CAN  D88
*         CORRECT THE PROBLEMS AND RERUN THE PRIMARY MODULE.             D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  CHECK THAT PARAMETER WORD P3 SET SO THAT ALL SECTORS IN A  D88
*             TRACK WILL BE TESTED.                                      D88
*         2.  IF ALL SECTORS ARE NOT SELECTED IN P3,  REPORT  AN  ERROR  D88
*             TERMINATE EXECUTION OF THE MODULE SERIES.                  D88
*         3.  CALCULATE THE NUMBER OF SECTORS TO WRITE AND OR  READ  IN  D88
*             THE  CYLINDER  USING  THE  NUMBER  OF  TRACKS SELECTED IN  D88
*             PARAMETER P2 AND PLACE THE NUMBER  IN  THE  B2  REGISTER.  D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         PARAMETERS P2 SET FOR THE NUMBER OF TRACKS TO TEST.            D88
*         PARAMETERS P3 SET FOR THE NUMBER OF SECTORS TO TEST.           D88
*                                                                        D88
*         EXIT-                                                          D88
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE PARAMETER P3  D88
*           IS NOT SET TO TEST ALL SECTORS IN A TRACK.                   D88
*         RETURN TO THE CALLING MODULE IF THE PARAMETER P3 IS OK WITH    D88
*           THE B2 REGISTER SET FOR THE NUMBER OF SECTORS TO WRITE OR    D88
*           READ.                                                        D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         NONE.                                                          D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B2  = TEMPORARY STORAGE.                                       D88PTR4
*         B10 = TEMPORARY STORAGE.                                       D88PTR4
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
0  FORMAT D8844A - CHECK PARAMETERS                                      D88
1  FORMAT D88*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS              D88
10 FORMAT CHECK P3 - NOT ALL SECTORS SELECTED.                           D88
16 FORMAT D88 - FMD CONFIDENCE TEST                                      D88
20 FORMAT D88*D NOT EXECUTED, SUSPECTED PARAMETER ERROR                  D88
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT                              D88
22 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT                              D88
23 FORMAT PARAMETERS DESCRIBED IN MODULE D8899                           D88
24 FORMAT --------------------------------------------------             D88
*                                                                        D88
/---------EQUATES FOR PARAMETER BITS.                                    D88
*                                                                        D88
   EQUATE MAXSEC=37                                                      D88
*                                                                        D88
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE                    D88
   B12=12                    *FIRST LINE OF ERROR DISPLAY                D88
*                                                                        D88
/---------CHECK FOR ALL SECTORS SELECTED IN PARAMETER P3.                D88
*                                                                        D88
   IF(P3.EQ.MAXSEC) GOTO 40  *IF ALL SECTORS SELECTED                    D88
*                                                                        D88
/---------DISPLAY THE SECTORS PARAMETER ENTRY ERROR.                     D88
*                                                                        D88
   IF(ES.AND.TM.NE.0)GOTO 32  *IF TERMINAL MODE SELECTED                 D88
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE                         D88
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY               D88
32 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY                   D88
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS                D88
   MSG 22 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS               D88
   MSG 10 TO LINE 12         *MOVE ERROR MESSAGE TO DISPLAY              D88
   MSG 23 TO LINE 13         *MODULE INFORMATION LINE                    D88
   PICTURE                                                               D88
   HALT                      *REPORT ERROR AND WAIT FOR GO               D88
   MSG 24 TO PRINT                                                       D88
   BLANK                                                                 D88
*                                                                        D88
/---------RECORD THE WARNING MESSAGE AND EXIT THE MODULE.                D88
*                                                                        D88
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.               D88
   GOTO 77                              *EXIT THE MODULE                 D88
*                                                                        D88
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO.                D88
*                                                                        D88
40 B10=P2.RS.6               *LOWEST TRACK NUMBER                        D88
   B10=P2.AND.77-B10         *NUMBER OF TRACKS MINUS ONE                 D88
   B10=B10+1                 *ACTUAL NUMBER OF TRACKS                    D88
   B2=0                      *INITIALIZE SECTOR                          D88
42 B2=B2+40                  *CALCULATE NO. OF SECTORS                   D88
   GOTO 42 WHILE (B10-1.NE.0)                                            D88
   EXIT                      *EXIT THE MODULE                            D88
77 END 30                    *END OF THE MODULE                          D88
COMPILE                      *D8844A VALIDATE PARAMETERS                 D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL844A,LSFMD2(16),LOCK
***       DL844A - PARAMETER VERIFICATION 
**        DL844A - PARAMETER VERIFICATION 
*         DL844A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         DL844A  CHECKS  THE  PARAMETER  WORD  P3  TO  VERIFY THAT ALL 
*         SECTORS IN A TRACK ARE SELECTED.  IF PARAMETER P3 ENTRY ERROR 
*         IS  DETECTED, THE MODULE REPORTS AN ERROR SO THE OPERATOR CAN 
*         CORRECT THE PROBLEMS AND RERUN THE PRIMARY MODULE.
* 
*         METHOD- 
*         1.  CHECK THAT PARAMETER WORD P3 SET SO THAT ALL SECTORS IN A 
*             TRACK WILL BE TESTED. 
*         2.  IF ALL SECTORS ARE NOT SELECTED IN P3,  REPORT  AN  ERROR 
*             TERMINATE EXECUTION OF THE MODULE SERIES. 
*         3.  CALCULATE THE NUMBER OF SECTORS TO WRITE AND OR  READ  IN 
*             THE  CYLINDER  USING  THE  NUMBER  OF  TRACKS SELECTED IN 
*             PARAMETER P2 AND PLACE THE NUMBER  IN  THE  B2  REGISTER. 
* 
/ 
*         ENTRY-
*         PARAMETERS P2 SET FOR THE NUMBER OF TRACKS TO TEST. 
*         PARAMETERS P3 SET FOR THE NUMBER OF SECTORS TO TEST.
* 
*         EXIT- 
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE PARAMETER P3 
*           IS NOT SET TO TEST ALL SECTORS IN A TRACK.
*         RETURN TO THE CALLING MODULE IF THE PARAMETER P3 IS OK WITH 
*           THE B2 REGISTER SET FOR THE NUMBER OF SECTORS TO WRITE OR 
*           READ. 
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         B2  = TEMPORARY STORAGE.
*         B10 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
0  FORMAT DL844A - CHECK PARAMETERS 
1  FORMAT DL8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
10 FORMAT CHECK P3 - NOT ALL SECTORS SELECTED.
16 FORMAT DL8 - FMD CONFIDENCE TEST 
20 FORMAT DL8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
22 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
23 FORMAT PARAMETERS DESCRIBED IN MODULE DL899
24 FORMAT --------------------------------------------------
* 
/---------EQUATES FOR PARAMETER BITS. 
* 
   EQUATE MAXSEC=07 
* 
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B12=12                    *FIRST LINE OF ERROR DISPLAY 
* 
/---------CHECK FOR ALL SECTORS SELECTED IN PARAMETER P3. 
* 
   IF(P3.EQ.MAXSEC) GOTO 40  *IF ALL SECTORS SELECTED 
* 
/---------DISPLAY THE SECTORS PARAMETER ENTRY ERROR.
* 
   IF(ES.AND.TM.NE.0)GOTO 32  *IF TERMINAL MODE SELECTED
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY
32 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS 
   MSG 22 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS
   MSG 10 TO LINE 12         *MOVE ERROR MESSAGE TO DISPLAY 
   MSG 23 TO LINE 13         *MODULE INFORMATION LINE 
   PICTURE
   HALT                      *REPORT ERROR AND WAIT FOR GO
   MSG 24 TO PRINT
   BLANK
* 
/---------RECORD THE WARNING MESSAGE AND EXIT THE MODULE. 
* 
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.
   GOTO 77                              *EXIT THE MODULE
* 
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO. 
* 
40 B10=P2.RS.6               *LOWEST TRACK NUMBER 
   B10=P2.AND.77-B10         *NUMBER OF TRACKS MINUS ONE
   B10=B10+1                 *ACTUAL NUMBER OF TRACKS 
   B2=0                      *INITIALIZE SECTOR 
42 B2=B2+10                  *CALCULATE NO. OF SECTORS
   GOTO 42 WHILE (B10-1.NE.0) 
   EXIT                      *EXIT THE MODULE 
77 END 30                    *END OF THE MODULE 
COMPILE                      *DL844A VALIDATE PARAMETERS
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH844A,DEMA3(14),LOCK 
***       DH844A - PARAMETER VERIFICATION 
**        DH844A - PARAMETER VERIFICATION 
*         DH844A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH844A  CHECKS  THE  PARAMETER  WORD  P3  TO  VERIFY THAT ALL 
*         SECTORS IN A TRACK ARE SELECTED.  IF PARAMETER P3 ENTRY ERROR 
*         IS  DETECTED, THE MODULE REPORTS AN ERROR SO THE OPERATOR CAN 
*         CORRECT THE PROBLEMS AND RERUN THE PRIMARY MODULE.
* 
*         METHOD- 
*         1.  CHECK THAT PARAMETER WORD P3 SET SO THAT ALL SECTORS IN A 
*             TRACK WILL BE TESTED. 
*         2.  IF ALL SECTORS ARE NOT SELECTED IN P3,  REPORT  AN  ERROR 
*             TERMINATE EXECUTION OF THE MODULE SERIES. 
*         3.  CALCULATE THE NUMBER OF SECTORS TO WRITE AND OR  READ  IN 
*             THE  CYLINDER  USING  THE  NUMBER  OF  TRACKS SELECTED IN 
*             PARAMETER P2 AND PLACE THE NUMBER  IN  THE  B2  REGISTER. 
* 
/ 
*         ENTRY-
*         PARAMETERS P2 SET FOR THE NUMBER OF TRACKS TO TEST. 
*         PARAMETERS P3 SET FOR THE NUMBER OF SECTORS TO TEST.
* 
*         EXIT- 
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE PARAMETER P3 
*           IS NOT SET TO TEST ALL SECTORS IN A TRACK.
*         RETURN TO THE CALLING MODULE IF THE PARAMETER P3 IS OK WITH 
*           THE B2 REGISTER SET FOR THE NUMBER OF SECTORS TO WRITE OR 
*           READ. 
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         B2  = TEMPORARY STORAGE.
*         B10 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
0  FORMAT DH844A - CHECK PARAMETERS 
1  FORMAT DH8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
10 FORMAT CHECK P3 - NOT ALL SECTORS SELECTED.
16 FORMAT DH8 - FMD CONFIDENCE TEST 
20 FORMAT DH8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
22 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
23 FORMAT PARAMETERS DESCRIBED IN MODULE DH899
24 FORMAT --------------------------------------------------
* 
/---------EQUATES FOR PARAMETER BITS. 
* 
   EQUATE MAXSEC=37 
* 
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B12=12                    *FIRST LINE OF ERROR DISPLAY 
* 
/---------CHECK FOR ALL SECTORS SELECTED IN PARAMETER P3. 
* 
   IF(P3.EQ.MAXSEC) GOTO 40  *IF ALL SECTORS SELECTED 
* 
/---------DISPLAY THE SECTORS PARAMETER ENTRY ERROR.
* 
   IF(ES.AND.TM.NE.0)GOTO 32  *IF TERMINAL MODE SELECTED
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY
32 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS 
   MSG 22 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS
   MSG 10 TO LINE 12         *MOVE ERROR MESSAGE TO DISPLAY 
   MSG 23 TO LINE 13         *MODULE INFORMATION LINE 
   PICTURE
   HALT                      *REPORT ERROR AND WAIT FOR GO
   MSG 24 TO PRINT
   BLANK
* 
/---------RECORD THE WARNING MESSAGE AND EXIT THE MODULE. 
* 
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.
   GOTO 77                              *EXIT THE MODULE
* 
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO. 
* 
40 B10=P2.RS.6               *LOWEST TRACK NUMBER 
   B10=P2.AND.77-B10         *NUMBER OF TRACKS MINUS ONE
   B10=B10+1                 *ACTUAL NUMBER OF TRACKS 
   B2=0                      *INITIALIZE SECTOR 
42 B2=B2+40                  *CALCULATE NO. OF SECTORS
   GOTO 42 WHILE (B10-1.NE.0) 
   EXIT                      *EXIT THE MODULE 
77 END 30                    *END OF THE MODULE 
COMPILE                      *DH844A VALIDATE PARAMETERS
*ENDIF
*IF DEF,SFMD
   MODULE D8845,FMDFT(7),LOCK                                            D88
***       D8845 - RANDOM WRITE/READ                                      D88
**        D8845 - RANDOM WRITE/READ                                      D88
*         D8845 - RANDOM WRITE/READ                                      D88
*         -------------------------                                      D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8845 WILL DO WRITES AND READS USING RANDOM CYLINDER NUMBERS,  D88
*         RANDOM TRACK NUMBERS, RANDOM SECTOR  NUMBERS,  AND  A  RANDOM  D88
*         NUMBER OF SECTORS IN A 1 TO 1 INTERLACE MODE.                  D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  CALL SUBMODULES D8898A AND D8845A TO CHECK THE  PARAMETER  D88
*             SETTINGS IN P0 THROUGH P7.                                 D88
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA  D88
*             PATTERN AS DESCRIBED IN PARAMETERS.                        D88
*         3.  GENERATE A RANDOM DATA PATTERN IN THE INPUT BUFFER.        D88
*         4.  GENERATE  A  RANDOM  CYLINDER NUMBER WITHIN THE LIMITS OF  D88
*             PARAMETERS P0 AND P1 FROM THE RANDOM NUMBERS IN THE INPUT  D88
*             BUFFER.                                                    D88
*         5.  GENERATE A RANDOM  TRACK  NUMBER  WITHIN  THE  LIMITS  OF  D88
*             PARAMETER P2 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER.  D88
*         6.  GENERATE A RANDOM SECTOR  NUMBER  WITHIN  THE  LIMITS  OF  D88
*             PARAMETER P3 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER.  D88
*         7.  GENERATE A RANDOM NUMBER FOR THE NUMBER OF SECTORS TO  DO  D88
*             LIMITING  THE  NUMBER FROM 1 TO 8 FROM THE RANDOM NUMBERS  D88
*             IN THE INPUT BUFFER.                                       D88
*         8.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         9.  SET READ MARGIN SELECTED.                                  D88
*         10. WRITE  THE RANDOM NUMBER OF SECTORS AT THE RANDOM ADDRESS  D88
*             (CYLINDER, TRACK, AND SECTOR) USING  A  NORMAL  WRITE  OR  D88
*             WRITE CODED COMMAND AS SELECTED IN THE P5 PARAMETER.  THE  D88
*             WRITE SEQUENCE WILL BE DONE IN 1 TO 1 INTERLACE MODE.      D88
*         11. CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO  D88
*             TO STEP 13.                                                D88
*         12. READ  THE  RANDOM NUMBER OF SECTORS AT THE RANDOM ADDRESS  D88
*             (CYLINDER, TRACK, AND SECTOR) USING A NORMAL READ OR READ  D88
*             CODED  COMMAND AS SELECTED IN THE P5 PARAMETER.  THE READ  D88
*             SEQUENCE WILL BE DONE IN 1 TO 1 INTERLACE MODE.            D88
*         13. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 8 THROUGH  D88
*             12.                                                        D88
*         14. INCREMENT  THE  PASS  COUNT  BY  ONE  AND IF 4096 DECIMAL  D88
*             PASSES HAVE NOT BEEN DONE, GO TO STEP 2.                   D88
*         15. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2  D88
*             THROUGH 14 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN  D88
*             THE ITERATION COUNT IN PARAMETER P9.                       D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P1 CONTAINS THE LAST CYLINDER NUMBER.                          D88
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.               D88
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS.              D88
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN         D88
*           CHANGING.                                                    D88
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN          D88
*           GENERATION.                                                  D88
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*         P7 CONTAINS THE READ MARGIN SELECTED.                          D88
*         P9 CONTAINS THE ITERATION COUNT.                               D88
*                                                                        D88
*         EXIT -                                                         D88
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS        D88
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR IF WRITE     D88
*         IS DISABLED IN PARAMETER P5, OR IF THE ACCESS LEVEL IS TOO     D88
*         LOW.                                                           D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898A - VALIDATE PARAMETERS.                                  D88
*         D8845A - VALIDATE PARAMETERS.                                  D88
*         D8898C - REPORT ERRORS DETECTED WITHIN THE MODULE.             D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B0  = LOOP COUNTER.                                            D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B2  = NUMBER OF TRACKS TO PROCESS.                             D88PTR4
*         B3  = PASS COUNTER.                                            D88
*         B4  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.             D88
*         OB(503) = TEMPORARY STORAGE.                                   D88
*         OB(504) = ITERATION COUNTER.                                   D88
*                                                                        D88
1  FORMAT D8845 - RANDOM WRITE/READ                                      D88
2  FORMAT D8845 ERROR(S) = *DECD                                         D88
3  FORMAT D8845 EC=*DECD, LC=*DECD                                       D88
4  FORMAT D8845 CYL=*OCTB T=*OB S=*OB                                    D88
*                                                                        D88
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.                     D88
*                                                                        D88
20 MSG 1 TO PRINT               *PRINT MODULE NAME                       D88
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME                     D88
   B1=45D                       *MODULE NUMBER IN OCTAL                  D88
   B3=0                         *INIT. PASS COUNTER                      D88
   OB(504)=0                    *INIT. ITERATION COUNTER                 D88
*                                                                        D88
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.               D88
*                                                                        D88
   CALL 98A                     *VALIDATE PARAMETERS                     D88
   CALL 45A                     *VALIDATE PARAMETERS                     D88
24 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN                   D88
*                                                                        D88
/---------GENERATE A RANDOM DATA PATTERN.                                D88
*                                                                        D88
   B10=P6                       *IF FIXED RANDOM DATA                    D88
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER                       D88
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA               D88
30 RANDOM TO IB(1) FOR WC START RT  *SET INPUT BUFFER                    D88
*                                                                        D88
/---------GENERATE A RANDOM CYLINDER ADDRESS FOR THIS PASS.              D88
*                                                                        D88
   B4=0                         *INITIALIZE BUFFER INDEX                 D88
   B7=P0                        *DEFAULT CYINDER ADDRESS                 D88
   IF(P0.EQ.P1) GOTO 34         *IF SAME CYLINDERS                       D88
32 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO CYLINDER FOUND                    D88
   B7=IB(B4).AND.1777B          *RANDOM CYLINDER                         D88
   IF(B7.LT.P0) GOTO 32         *IF CYLINDER TOO SMALL                   D88
   IF(B7.GT.P1) GOTO 32         *IF CYLINDER TOO LARGE                   D88
   IF(B7.EQ.1511) GOTO 32       *IF CYLINDER 1511                        D88
*                                                                        D88
/---------GENERATE A RANDOM TRACK ADDRESS FOR THIS PASS.                 D88
*                                                                        D88
34 B6=P2.RS.6                   *LOWER TRACK                             D88
   B2=P2.AND.77                 *UPPER TRACK NUMBER                      D88
   IF(B6.EQ.B2) GOTO 40         *IF SAME TRACKS                          D88
   B10=B6                       *SAVE LOWER TRACK NUMBER                 D88
   B4=0                         *INITIALIZE BUFFER INDEX                 D88
36 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO TRACK FOUND                       D88
   B6=IB(B4) AND 77B            *RANDOM TRACK                            D88
   IF(B6.GT.B2) GOTO 36         *IF TRACK TOO SMALL                      D88
   IF(B6.LT.B10) GOTO 36        *IF TRACK TOO LARGE                      D88
*                                                                        D88
/---------GENERATE A RANDOM SECTOR ADDRESS FOR THIS PASS.                D88
*                                                                        D88
40 B5=P3.RS.6                   *LOWER SECTOR                            D88
   B2=P3.AND.77                 *UPPER SECTOR                            D88
   IF(B5.EQ.B2) GOTO 44         *IF SECTORS EQUAL                        D88
   B10=B5                       *SAVE LOWER SECTOR                       D88
   B4=0                         *INITIALIZE BUFFER INDEX                 D88
42 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND                      D88
   B5=IB(B4) AND 37B            *RANDOM SECTOR                           D88
   IF(B5.GT.B2) GOTO 42         *IF SECTOR TOO LARGE                     D88
   IF(B5.LT.B10) GOTO 42        *IF SECTOR TOO SMALL                     D88
*                                                                        D88
/---------GENERATE A RANDOM NUMBER OF SECTORS FOR THIS PASS.             D88
*                                                                        D88
44 B10=B2-B5+1                  *MAXIMINE SECTORS COUNT                  D88
   B2=1                         *DEFAULT SECTORS COUNT                   D88
   B4=0                         *INITIALIZE BUFFER INDEX                 D88
46 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND                      D88
   B2=IB(B4).AND.7+1            *RANDOM SECTOR COUNT                     D88
   IF(B2.GT.B10) GOTO 46        *IF COUNT TOO LARGE                      D88
   OB(503)=B5                   *SAVE SECTOR NUMBER                      D88
*                                                                        D88
/---------BEGIN THE WRITE/READ SEQUENCE.                                 D88
*                                                                        D88
50 B8=41                        *CONNECT FLAG                            D88
   RES,DRIVE,ABT 72             *RESERVE CONTROLLER, DRIVE               D88
   B8=43                        *MARGINS FLAG                            D88
   MARGINS,B9,ABT 72            *SELECT READ MARGIN                      D88
*                                                                        D88
/---------WRITE THE SECTORS IN 1 TO 1 INTERLACE MODE.                    D88
*                                                                        D88
   GOSUB 64                     *DISPLAY CURRENT MESSAGE                 D88
   B4=B2                        *NUMBER OF SECTORS                       D88
   IF(P5.AND.1.NE.0) GOTO 52    *IF CODED NOT SELECTED                   D88
   B8=31                        *WRITE CODED FLAG                        D88
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70
   GOTO 54                      *JUMP                                    D88
52 B8=30                        *WRITE FLAG                              D88
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70                           D88
54 IF(P5.AND.2.NE.0) GOTO 60    *IF READ DISABLED,
*                                                                        D88
/---------READ THE SECTORS IN 1 TO 1 INTERLACE MODE.                     D88
*                                                                        D88
   GOSUB 64                     *DISPLAY CURRENT MESSAGE                 D88
   B4=B2                        *NUMBER OF SECTORS                       D88
   B5=OB(503)                   *SECTOR NUMBER                           D88
   IF(P5.AND.1.NE.0) GOTO 56    *IF CODED NOT SELECTED                   D88
   B8=24                        *READ CODED FLAG                         D88
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
   GOTO 60                      *JUMP                                    D88
56 B8=23                        *READ FLAG                               D88
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72                            D88
60 ENDSUB                                                                D88
   IF(ES.AND.RC.EQ.0) GOTO 62   *IF NO REPEAT CONDITION                  D88
   B0=B0+1                      *INCREMENT THE LOOP COUNT                D88
   GOTO 50                      *REPEAT THE CONDITION                    D88
*                                                                        D88
/---------CHECK FOR 4096 DECIMAL PASSES DONE.                            D88
*                                                                        D88
62 GOTO 24 WHILE (B3+1.NE.0)    *IF 4096D PASSES NOT DONE                D88
*                                                                        D88
/---------CHECK FOR THE ITERATION COUNT SATISFIED.                       D88
*                                                                        D88
   OB(504)=OB(504)+1            *INCREMENT ITERATION COUNT               D88
   IF(OB(504).LT.P9) GOTO 24    *REPEAT FOR ITERATION COUNT              D88
*                                                                        D88
/---------CHECK FOR REPEAT MODULE SELECTED.                              D88
*                                                                        D88
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE                     D88
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED                D88
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS               D88
   GOTO 77                         *EXIT THE MODULE                      D88
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
64 IF(ES.AND.SL.NE.0) GOTO 66      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.                 D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
66 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE                   D88
   RETURN                          *EXIT THE SUBROUTINE                  D88
*                                                                        D88
/---------PROCESS COMMAND ABORT IN THE MODULE.                           D88
*                                                                        D88
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON                   D88
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON              D88
   IF(SB.NE.5000) GOTO 74          *NOT 5000 GENERAL STATUS              D88
   IF(SB(5).AND.4000.NE.0)GOTO 60  *IF TRACK FLAW                        D88
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE             D88
   CALL 98C                        *CALL ERROR PROCESSOR                 D88
76 B11=B11+1                       *INCREMENT ERROR COUNT                D88
   GOTO 60                         *EXIT THE SUBROUTINE                  D88
77 END 20                          *END OF THE MODULE                    D88
COMPILE                      *D8845 RANDOM WRITE/READ                    D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL845,LSFMD2(16),LOCK 
***       DL845 - RANDOM WRITE/READ 
**        DL845 - RANDOM WRITE/READ 
*         DL845 - RANDOM WRITE/READ 
*         ------------------------- 
* 
*         PURPOSE-
*         DL845 WILL DO WRITES AND READS USING RANDOM CYLINDER NUMBERS, 
*         RANDOM TRACK NUMBERS, RANDOM SECTOR  NUMBERS,  AND  A  RANDOM 
*         NUMBER OF SECTORS IN A 1 TO 1 INTERLACE MODE. 
* 
*         METHOD -
*         1.  CALL SUBMODULES DL898A AND DL845A TO CHECK THE  PARAMETER 
*             SETTINGS IN P0 THROUGH P7.
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  GENERATE A RANDOM DATA PATTERN IN THE INPUT BUFFER. 
*         4.  GENERATE  A  RANDOM  CYLINDER NUMBER WITHIN THE LIMITS OF 
*             PARAMETERS P0 AND P1 FROM THE RANDOM NUMBERS IN THE INPUT 
*             BUFFER. 
*         5.  GENERATE A RANDOM  TRACK  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P2 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         6.  GENERATE A RANDOM SECTOR  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P3 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         7.  GENERATE A RANDOM NUMBER FOR THE NUMBER OF SECTORS TO  DO 
*             LIMITING  THE  NUMBER FROM 1 TO 8 FROM THE RANDOM NUMBERS 
*             IN THE INPUT BUFFER.
*         8.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         9.  SET READ MARGIN SELECTED. 
*         10. WRITE  THE RANDOM NUMBER OF SECTORS AT THE RANDOM ADDRESS 
*             (CYLINDER, TRACK, AND SECTOR) USING  A  NORMAL  WRITE  OR 
*             WRITE CODED COMMAND AS SELECTED IN THE P5 PARAMETER.  THE 
*             WRITE SEQUENCE WILL BE DONE IN 1 TO 1 INTERLACE MODE. 
*         11. CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 13. 
*         12. READ  THE  RANDOM NUMBER OF SECTORS AT THE RANDOM ADDRESS 
*             (CYLINDER, TRACK, AND SECTOR) USING A NORMAL READ OR READ 
*             CODED  COMMAND AS SELECTED IN THE P5 PARAMETER.  THE READ 
*             SEQUENCE WILL BE DONE IN 1 TO 1 INTERLACE MODE. 
*         13. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 8 THROUGH 
*             12. 
*         14. INCREMENT  THE  PASS  COUNT  BY  ONE  AND IF 4096 DECIMAL 
*             PASSES HAVE NOT BEEN DONE, GO TO STEP 2.
*         15. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 14 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P7 CONTAINS THE READ MARGIN SELECTED. 
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR IF WRITE
*         IS DISABLED IN PARAMETER P5, OR IF THE ACCESS LEVEL IS TOO
*         LOW.
* 
*         SUBMODULES REFERENCED-
*         DL898A - VALIDATE PARAMETERS. 
*         DL845A - VALIDATE PARAMETERS. 
*         DL898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF TRACKS TO PROCESS.
*         B3  = PASS COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = CURRENT MARGINS SELECTION.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
*         OB(503) = TEMPORARY STORAGE.
*         OB(504) = ITERATION COUNTER.
* 
1  FORMAT DL845 - RANDOM WRITE/READ 
2  FORMAT DL845 ERROR(S) = *DECD
3  FORMAT DL845 EC=*DECD, LC=*DECD
4  FORMAT DL845 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
   B1=45D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. PASS COUNTER 
   OB(504)=0                    *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 98A                     *VALIDATE PARAMETERS
   CALL 45A                     *VALIDATE PARAMETERS
24 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB(4) FOR WC START B10  *GENERATE RANDOM DATA
30 RANDOM TO IB(1) FOR WC START RT  *SET INPUT BUFFER 
* 
/---------GENERATE A RANDOM CYLINDER ADDRESS FOR THIS PASS. 
* 
   B4=0                         *INITIALIZE BUFFER INDEX
   B7=P0                        *DEFAULT CYINDER ADDRESS
   IF(P0.EQ.P1) GOTO 34         *IF SAME CYLINDERS
32 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO CYLINDER FOUND 
   B7=IB(B4).AND.1777B          *RANDOM CYLINDER
   IF(B7.LT.P0) GOTO 32         *IF CYLINDER TOO SMALL
   IF(B7.GT.P1) GOTO 32         *IF CYLINDER TOO LARGE
   IF(B7.EQ.1511) GOTO 32       *IF CYLINDER 1511 
* 
/---------GENERATE A RANDOM TRACK ADDRESS FOR THIS PASS.
* 
34 B6=P2.RS.6                   *LOWER TRACK
   B2=P2.AND.77                 *UPPER TRACK NUMBER 
   IF(B6.EQ.B2) GOTO 40         *IF SAME TRACKS 
   B10=B6                       *SAVE LOWER TRACK NUMBER
   B4=0                         *INITIALIZE BUFFER INDEX
36 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO TRACK FOUND
   B6=IB(B4) AND 77B            *RANDOM TRACK 
   IF(B6.GT.B2) GOTO 36         *IF TRACK TOO SMALL 
   IF(B6.LT.B10) GOTO 36        *IF TRACK TOO LARGE 
* 
/---------GENERATE A RANDOM SECTOR ADDRESS FOR THIS PASS. 
* 
40 B5=P3.RS.6                   *LOWER SECTOR 
   B2=P3.AND.77                 *UPPER SECTOR 
   IF(B5.EQ.B2) GOTO 44         *IF SECTORS EQUAL 
   B10=B5                       *SAVE LOWER SECTOR
   B4=0                         *INITIALIZE BUFFER INDEX
42 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B5=IB(B4) AND 37B            *RANDOM SECTOR
   IF(B5.GT.B2) GOTO 42         *IF SECTOR TOO LARGE
   IF(B5.LT.B10) GOTO 42        *IF SECTOR TOO SMALL
* 
/---------GENERATE A RANDOM NUMBER OF SECTORS FOR THIS PASS.
* 
44 B10=B2-B5+1                  *MAXIMINE SECTORS COUNT 
   B2=1                         *DEFAULT SECTORS COUNT
   B4=0                         *INITIALIZE BUFFER INDEX
46 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B2=IB(B4).AND.7+1            *RANDOM SECTOR COUNT
   IF(B2.GT.B10) GOTO 46        *IF COUNT TOO LARGE 
   OB(503)=B5                   *SAVE SECTOR NUMBER 
* 
/---------BEGIN THE WRITE/READ SEQUENCE.
* 
50 B8=41                        *CONNECT FLAG 
   RES,DRIVE,ABT 72             *RESERVE CONTROLLER, DRIVE
   B8=43                        *MARGINS FLAG 
   MARGINS,B9,ABT 72            *SELECT READ MARGIN 
* 
/---------WRITE THE SECTORS IN 1 TO 1 INTERLACE MODE. 
* 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2                        *NUMBER OF SECTORS
   IF(P5.AND.1.NE.0) GOTO 52    *IF CODED NOT SELECTED
   B8=31                        *WRITE CODED FLAG 
   WRITE B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 70
   GOTO 54                      *JUMP 
52 B8=30                        *WRITE FLAG 
   WRITE B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70
54 IF(P5.AND.2.NE.0) GOTO 60    *IF READ DISABLED,
* 
/---------READ THE SECTORS IN 1 TO 1 INTERLACE MODE.
* 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2                        *NUMBER OF SECTORS
   B5=OB(503)                   *SECTOR NUMBER
   IF(P5.AND.1.NE.0) GOTO 56    *IF CODED NOT SELECTED
   B8=24                        *READ CODED FLAG
   READ B4 CODED SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
   GOTO 60                      *JUMP 
56 B8=23                        *READ FLAG
   READ B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
60 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 62   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 50                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR 4096 DECIMAL PASSES DONE. 
* 
62 GOTO 24 WHILE (B3+1.NE.0)    *IF 4096D PASSES NOT DONE 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
   OB(504)=OB(504)+1            *INCREMENT ITERATION COUNT
   IF(OB(504).LT.P9) GOTO 24    *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
64 IF(ES.AND.SL.NE.0) GOTO 66      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
66 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS COMMAND ABORT IN THE MODULE.
* 
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.NE.5000) GOTO 74          *NOT 5000 GENERAL STATUS 
   IF(SB(5).AND.4000.NE.0)GOTO 60  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 60                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DL845 RANDOM WRITE/READ 
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH845,DEMA3(14),LOCK
***       DH845 - RANDOM WRITE/READ 
**        DH845 - RANDOM WRITE/READ 
*         DH845 - RANDOM WRITE/READ 
*         ------------------------- 
* 
*         PURPOSE-
*         DH845 WILL DO WRITES AND READS USING RANDOM CYLINDER NUMBERS, 
*         RANDOM TRACK NUMBERS, RANDOM SECTOR  NUMBERS,  AND  A  RANDOM 
*         NUMBER  OF SECTORS  IN A 1 TO 1 INTERLACE MODE.  THIS  MODULE 
*         USES THE DEMA PATH. 
* 
*         METHOD -
*         1.  CALL SUBMODULES DH896A AND DH845A TO CHECK THE  PARAMETER 
*             SETTINGS IN P0 THROUGH P6.
*         2.  IF RANDOM SELECTED,  SET  OUTPUT  BUFFER  WITH  THE  DATA 
*             PATTERN AS DESCRIBED IN PARAMETERS. 
*         3.  GENERATE A RANDOM DATA PATTERN IN THE INPUT BUFFER. 
*         4.  GENERATE  A  RANDOM  CYLINDER NUMBER WITHIN THE LIMITS OF 
*             PARAMETERS P0 AND P1 FROM THE RANDOM NUMBERS IN THE INPUT 
*             BUFFER. 
*         5.  GENERATE A RANDOM  TRACK  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P2 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         6.  GENERATE A RANDOM SECTOR  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P3 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         7.  GENERATE A RANDOM NUMBER FOR THE NUMBER OF SECTORS TO  DO 
*             LIMITING  THE  NUMBER FROM 1 TO 8 FROM THE RANDOM NUMBERS 
*             IN THE INPUT BUFFER.
*         8.  WRITE PATTERN INTO ESM (SYSWR ESM). 
*         9.  RESERVE THE CONTROLLER AND 885-4X DRIVE.
*         9A. CHECK PARAMETER P5 FOR WRITE DISABLED,AND IF DISABLED, GO 
*             TO STEP 11. 
*         10. WRITE  THE RANDOM NUMBER OF SECTORS AT THE RANDOM ADDRESS 
*             (CYLINDER, TRACK, AND SECTOR) USING  A  NORMAL  WRITE  OR 
*             WRITE CODED COMMAND AS SELECTED IN THE P5 PARAMETER.  THE 
*             WRITE SEQUENCE WILL BE DONE IN 1 TO 1 INTERLACE MODE. 
*         11. CHECK PARAMETER P5 FOR READ DISABLED, AND IF DISABLED, GO 
*             TO STEP 13. 
*         12. READ  THE  RANDOM NUMBER OF SECTORS AT THE RANDOM ADDRESS 
*             (CYLINDER, TRACK, AND SECTOR) USING A NORMAL READ OR READ 
*             CODED  COMMAND AS SELECTED IN THE P5 PARAMETER.  THE READ 
*             SEQUENCE WILL BE DONE IN 1 TO 1 INTERLACE MODE. 
*         13. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 8 THROUGH 
*             12. 
*         14. INCREMENT  THE  PASS  COUNT  BY  ONE  AND IF 4096 DECIMAL 
*             PASSES HAVE NOT BEEN DONE, GO TO STEP 2.
*         15. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 14 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, OR IF WRITE
*         IS DISABLED IN PARAMETER P5, OR IF THE ACCESS LEVEL IS TOO
*         LOW.
* 
*         SUBMODULES REFERENCED-
*         DH896A - VALIDATE PARAMETERS. 
*         DH845A - VALIDATE PARAMETERS. 
*         DH896C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF TRACKS TO PROCESS.
*         B3  = PASS COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = ESM BLOCK INDEX 
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
*         B12 = ITERATION COUNTER 
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
* 
1  FORMAT DH845 - RANDOM WRITE/READ 
2  FORMAT DH845 ERROR(S) = *DECD
3  FORMAT DH845 EC=*DECD, LC=*DECD
4  FORMAT DH845 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
   B1=45D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. PASS COUNTER 
   B12 = 0                      *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.
* 
   CALL 96A                     *VALIDATE PARAMETERS
   CALL 45A                     *VALIDATE PARAMETERS
24 IF(P5.AND.10.NE.0) GOTO 30   *IF FIXED DATA PATTERN
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
   B10=P6                       *IF FIXED RANDOM DATA 
   IF(P6.EQ.0) B10=RT           *IF RANDOM STARTER
   RANDOM TO OB FOR WC START B10  *GENERATE RANDOM DATA 
30 RANDOM TO IB(1) FOR WC START RT  *SET INPUT BUFFER 
* 
/---------GENERATE A RANDOM CYLINDER ADDRESS FOR THIS PASS. 
* 
   B4=0                         *INITIALIZE BUFFER INDEX
   B7=P0                        *DEFAULT CYINDER ADDRESS
   IF(P0.EQ.P1) GOTO 34         *IF SAME CYLINDERS
32 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO CYLINDER FOUND 
   B7=IB(B4).AND.1777B          *RANDOM CYLINDER
   IF(B7.LT.P0) GOTO 32         *IF CYLINDER TOO SMALL
   IF(B7.GT.P1) GOTO 32         *IF CYLINDER TOO LARGE
   IF(B7.EQ.1511) GOTO 32       *IF CYLINDER 1511 
* 
/---------GENERATE A RANDOM TRACK ADDRESS FOR THIS PASS.
* 
34 B6=P2.RS.6                   *LOWER TRACK
   B2=P2.AND.77                 *UPPER TRACK NUMBER 
   IF(B6.EQ.B2) GOTO 40         *IF SAME TRACKS 
   B10=B6                       *SAVE LOWER TRACK NUMBER
   B4=0                         *INITIALIZE BUFFER INDEX
36 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO TRACK FOUND
   B6=IB(B4) AND 77B            *RANDOM TRACK 
   IF(B6.GT.B2) GOTO 36         *IF TRACK TOO SMALL 
   IF(B6.LT.B10) GOTO 36        *IF TRACK TOO LARGE 
* 
/---------GENERATE A RANDOM SECTOR ADDRESS FOR THIS PASS. 
* 
40 B5=P3.RS.6                   *LOWER SECTOR 
   B2=P3.AND.77                 *UPPER SECTOR 
   IF(B5.EQ.B2) GOTO 44         *IF SECTORS EQUAL 
   B10=B5                       *SAVE LOWER SECTOR
   B4=0                         *INITIALIZE BUFFER INDEX
42 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B5=IB(B4) AND 37B            *RANDOM SECTOR
   IF(B5.GT.B2) GOTO 42         *IF SECTOR TOO LARGE
   IF(B5.LT.B10) GOTO 42        *IF SECTOR TOO SMALL
* 
/---------GENERATE A RANDOM NUMBER OF SECTORS FOR THIS PASS.
* 
44 B10=B2-B5+1                  *MAXIMINE SECTORS COUNT 
   B2=1                         *DEFAULT SECTORS COUNT
   B4=0                         *INITIALIZE BUFFER INDEX
46 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B2=IB(B4).AND.7+1            *RANDOM SECTOR COUNT
   IF(B2.GT.B10) GOTO 46        *IF COUNT TOO LARGE 
   IB(504)=B5                   *SAVE SECTOR NUMBER 
* 
/---------BEGIN THE WRITE/READ SEQUENCE.
* 
50 B9 = 0                       *INIT. ESM BLOCK INDEX
   SYSREW ESM                   *INIT. ESM ADRS 
51 SYSWR ESM                    *WRITE BLOCK TO ESM 
   GOTO 51 WHILE (B9+1.LT.4)    *REPEAT FOR 4 BLOCKS
   B8=41                        *CONNECT FLAG 
   RES,DRIVE,ABT 72             *RESERVE CONTROLLER, DRIVE
* 
/---------WRITE THE SECTORS IN 1 TO 1 INTERLACE MODE. 
* 
   IF(P5.AND.4.NE.0) GOTO 54    *IF WRITE DISABLED, 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2                        *NUMBER OF SECTORS
   IF(P5.AND.1.NE.0) GOTO 52    *IF CODED NOT SELECTED
   B8=33                        *WRITE FROM ESM CODED 
   WRITE FROM ESM B4 C SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
   GOTO 54                      *JUMP 
52 B8=32                        *WRITE FROM ESM 
   WRITE FROM ESM B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 70 
54 IF(P5.AND.2.NE.0) GOTO 60    *IF READ DISABLED,
* 
/---------READ THE SECTORS IN 1 TO 1 INTERLACE MODE.
* 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2                        *NUMBER OF SECTORS
   B5=IB(504)                   *SECTOR NUMBER
   IF(P5.AND.1.NE.0) GOTO 56    *IF CODED NOT SELECTED
   B8=35                        *READ TO ESM CODED
   READ TO ESM B4 C SEC AT CYL B7,TRK B6,SEC B5,ABT 72
   GOTO 60                      *JUMP 
56 B8=34                        *READ TO ESM
   READ TO ESM B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72
60 ENDSUB 
   IF(ES.AND.SL.EQ.0) GOTO 62   *IF NOT SCOPE LOOP, 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 50                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR 4096 DECIMAL PASSES DONE. 
* 
62 GOTO 24 WHILE (B3+1.NE.0)    *IF 4096D PASSES NOT DONE 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
   GOTO 24 WHILE (B12+1.LT.P9)  *IF P9 ITERATIONS DONE, 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
64 IF(ES.AND.SL.NE.0) GOTO 66      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
66 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS COMMAND ABORT IN THE MODULE.
* 
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.NE.5000) GOTO 74          *NOT 5000 GENERAL STATUS 
   IF(SB(5).AND.4000.NE.0)GOTO 60  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 96C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 60                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DH845 RANDOM WRITE/READ 
*ENDIF
*IF DEF,SFMD
   MODULE D8845A,FMDFT(7),LOCK                                           D88
***       D8845A - PARAMETER VERIFICATION                                D88
**        D8845A - PARAMETER VERIFICATION                                D88
*         D8845A - PARAMETER VERIFICATION                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8845A CHECKS THAT WRITE IS ENABLED IN PARAMETER WORD P5.      D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  CHECK IF WRITE IS ENABLED IN PARAMETER WORD P5.            D88PTR4
*         2.  IF  WRITE  IS NOT DISABLED IN PARAMETER WORD P5, EXIT THE  D88PTR4
*             MODULE.                                                    D88
*         3.  DISPLAY  THE  PARAMETER  ERROR  THAT WRITE IS DISABLED IN  D88
*             PARAMETER WORD 5.                                          D88
*         4.  TERMINATE EXECUTION OF MODULE D8845.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         PARAMETER WORD P5 CONTAINS THE DISABLE WRITE BIT.              D88
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL.                D88
*                                                                        D88
*         EXIT-                                                          D88
*         TERMINATE EXECUTION OF MODULE D8845 IF WRITE IS DISABLED IN    D88
*           PARAMETER WORD P5.                                           D88
*         RETURN TO MODULE D8845 IF WRITE IS NOT DISABLED IN PARAMETER   D88
*           WORD P5.                                                     D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         NONE.                                                          D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         NONE.                                                          D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
0  FORMAT D8845A - CHECK PARAMETERS                                      D88
1  FORMAT D88*D MODULE ABORTED - WRITE DISABLED IN P5                    D88
13 FORMAT CHECK P5 - WRITE DISABLED                                      D88
16 FORMAT D88 - FMD CONFIDENCE TEST                                      D88
20 FORMAT D88*D NOT EXECUTED, WRITE DISABLED IN P5                       D88
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT                              D88
22 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT                              D88
23 FORMAT PARAMETERS DESCRIBED IN MODULE D8899                           D88
24 FORMAT --------------------------------------------------             D88
*                                                                        D88
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE                    D88
*                                                                        D88
/---------CHECK P5 FOR BOTH WRITE AND READ DISABLED.                     D88
*                                                                        D88
   IF(P5.AND.4.EQ.0) EXIT    *IF WRITE NOT DISABLED                      D88
*                                                                        D88
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.                   D88
*                                                                        D88
   IF(ES.AND.TM.NE.0)GOTO 70  *IF TERMINAL MODE SELECTED                 D88
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE                         D88
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY               D88
70 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY                   D88
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS                D88
   MSG 22 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS               D88
   MSG 13 TO LINE 12         *MOVE ERROR MESSAGE TO DISPLAY              D88
   MSG 23 TO LINE 13         *MODULE INFORMATION LINE                    D88
   PICTURE                                                               D88
   HALT                      *REPORT ERROR AND WAIT FOR GO               D88
   MSG 24 TO PRINT                                                       D88
   BLANK                                                                 D88
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.               D88
77 END 30                    *END OF THE MODULE                          D88
COMPILE                      *D8845A VALIDATE PARAMETERS                 D88
*ENDIF
*IF DEF,LSFMD 
   MODULE DL845A,LSFMD2(16),LOCK
***       DL845A - PARAMETER VERIFICATION 
**        DL845A - PARAMETER VERIFICATION 
*         DL845A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         DL845A CHECKS THAT WRITE IS ENABLED IN PARAMETER WORD P5. 
* 
*         METHOD- 
*         1.  CHECK IF WRITE IS ENABLED IN PARAMETER WORD P5. 
*         2.  IF  WRITE  IS NOT DISABLED IN PARAMETER WORD P5, EXIT THE 
*             MODULE. 
*         3.  DISPLAY  THE  PARAMETER  ERROR  THAT WRITE IS DISABLED IN 
*             PARAMETER WORD 5. 
*         4.  TERMINATE EXECUTION OF MODULE DL845.
* 
/ 
*         ENTRY-
*         PARAMETER WORD P5 CONTAINS THE DISABLE WRITE BIT. 
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL. 
* 
*         EXIT- 
*         TERMINATE EXECUTION OF MODULE DL845 IF WRITE IS DISABLED IN 
*           PARAMETER WORD P5.
*         RETURN TO MODULE DL845 IF WRITE IS NOT DISABLED IN PARAMETER
*           WORD P5.
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
0  FORMAT DL845A - CHECK PARAMETERS 
1  FORMAT DL8*D MODULE ABORTED - WRITE DISABLED IN P5 
13 FORMAT CHECK P5 - WRITE DISABLED 
16 FORMAT DL8 - FMD CONFIDENCE TEST 
20 FORMAT DL8*D NOT EXECUTED, WRITE DISABLED IN P5
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
22 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
23 FORMAT PARAMETERS DESCRIBED IN MODULE DL899
24 FORMAT --------------------------------------------------
* 
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
* 
/---------CHECK P5 FOR BOTH WRITE AND READ DISABLED.
* 
   IF(P5.AND.4.EQ.0) EXIT    *IF WRITE NOT DISABLED 
* 
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.
* 
   IF(ES.AND.TM.NE.0)GOTO 70  *IF TERMINAL MODE SELECTED
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY
70 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS 
   MSG 22 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS
   MSG 13 TO LINE 12         *MOVE ERROR MESSAGE TO DISPLAY 
   MSG 23 TO LINE 13         *MODULE INFORMATION LINE 
   PICTURE
   HALT                      *REPORT ERROR AND WAIT FOR GO
   MSG 24 TO PRINT
   BLANK
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.
77 END 30                    *END OF THE MODULE 
COMPILE                      *DL845A VALIDATE PARAMETERS
*ENDIF
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH845A,DEMA3(14),LOCK 
***       DH845A - PARAMETER VERIFICATION 
**        DH845A - PARAMETER VERIFICATION 
*         DH845A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH845A CHECKS THAT WRITE IS ENABLED IN PARAMETER WORD P5. 
* 
*         METHOD- 
*         1.  CHECK IF WRITE IS ENABLED IN PARAMETER WORD P5. 
*         2.  IF  WRITE  IS NOT DISABLED IN PARAMETER WORD P5, EXIT THE 
*             MODULE. 
*         3.  DISPLAY  THE  PARAMETER  ERROR  THAT WRITE IS DISABLED IN 
*             PARAMETER WORD 5. 
*         4.  TERMINATE EXECUTION OF MODULE DH845.
* 
/ 
*         ENTRY-
*         PARAMETER WORD P5 CONTAINS THE DISABLE WRITE BIT. 
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL. 
* 
*         EXIT- 
*         TERMINATE EXECUTION OF MODULE DH845 IF WRITE IS DISABLED IN 
*           PARAMETER WORD P5.
*         RETURN TO MODULE DH845 IF WRITE IS NOT DISABLED IN PARAMETER
*           WORD P5.
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
0  FORMAT DH845A - CHECK PARAMETERS 
1  FORMAT DH8*D MODULE ABORTED - WRITE DISABLED IN P5 
13 FORMAT CHECK P5 - WRITE DISABLED 
16 FORMAT DH8 - FMD CONFIDENCE TEST 
20 FORMAT DH8*D NOT EXECUTED, WRITE DISABLED IN P5
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
22 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
23 FORMAT PARAMETERS DESCRIBED IN MODULE DH899
24 FORMAT --------------------------------------------------
* 
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
* 
/---------CHECK P5 FOR BOTH WRITE AND READ DISABLED.
* 
   IF(P5.AND.4.EQ.0) EXIT    *IF WRITE NOT DISABLED 
* 
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.
* 
   IF(ES.AND.TM.NE.0)GOTO 70  *IF TERMINAL MODE SELECTED
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY
70 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS 
   MSG 22 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS
   MSG 13 TO LINE 12         *MOVE ERROR MESSAGE TO DISPLAY 
   MSG 23 TO LINE 13         *MODULE INFORMATION LINE 
   PICTURE
   HALT                      *REPORT ERROR AND WAIT FOR GO
   MSG 24 TO PRINT
   BLANK
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.
77 END 30                    *END OF THE MODULE 
COMPILE                      *DH845A VALIDATE PARAMETERS
*ENDIF
*IF DEF,PFMD,4
   MODULE DH846,DEMA2(14),LOCK
***       DH846 - SWEEP HDA CHECKWORDS
**        DH846 - SWEEP HDA CHECKWORDS
*         DH846 - SWEEP HDA CHECKWORDS
*IF DEF,SFMD,4
   MODULE D8846,FMDFT(7),LOCK                                            D88
***       D8846 - SWEEP HDA CHECKWORDS                                   D88
**        D8846 - SWEEP HDA CHECKWORDS                                   D88
*         D8846 - SWEEP HDA CHECKWORDS                                   D88
*IF DEF,LSFMD,4 
   MODULE DL846,LSFMD2(16),LOCK 
***       DL846 - SWEEP HDA CHECKWORDS
**        DL846 - SWEEP HDA CHECKWORDS
*         DL846 - SWEEP HDA CHECKWORDS
*         ----------------------------                                   D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH846  WILL  DO  A READ CHECKWORD IN A 2 TO 1 INTERLACE TRACK 
*IF DEF,SFMD,1
*         D8846  WILL  DO  A READ CHECKWORD IN A 1 TO 1 INTERLACE TRACK  D88
*IF DEF,LSFMD,1 
*         DL846  WILL  DO  A READ CHECKWORD IN A 1 TO 1 INTERLACE TRACK 
*         MODE ON THE CYLINDERS, TRACKS, AND SECTORS  SELECTED  IN  THE  D88
*         PARAMETERS TO VERIFY THAT THE HEAD DISK ASSEMBLY CAN BE READ.  D88
*                                                                        D88
*         METHOD-                                                        D88
*IF DEF,PFMD,1
*         1.  CALL SUBMODULE DH846A TO CHECK THE PARAMETERS SETTINGS IN 
*IF DEF,SFMD,1
*         1.  CALL SUBMODULE D8846A TO CHECK THE PARAMETERS SETTINGS IN  D88
*IF DEF,LSFMD,1 
*         1.  CALL SUBMODULE DL846A TO CHECK THE PARAMETERS SETTINGS IN 
*             P0 THROUGH P7.                                             D88
*         2.  INITIALIZE REGISTER B7 WITH THE FIRST  CYLINDER  SELECTED  D88
*             IN P0 AND B10 WITH THE LAST TRACK SELECTED IN P2.          D88
*         3.  INITIALIZE REGISTER B6 WITH THE FIRST TRACK  SELECTED  IN  D88
*             P2.                                                        D88
*         4.  RESERVE THE CONTROLLER AND FIXED MODULE DRIVE.             D88
*         5.  SET READ MARGIN SELECTED.                                  D88
*         6.  INITIALIZE REGISTER B5 WITH THE FIRST SECTOR SELECTED  IN  D88
*             P3 AND B4 WITH THE NUMBER OF SECTORS TO BE READ.           D88
*         7.  GO TO STEP 10 IF THE NEXT  TRACKS  TO  BE  READ  ARE  NOT  D88
*             TRACKS 0 OR 1 OR 2 OF CYLINDER 1511 OCTAL.                 D88
*         8.  READ A SECTOR FROM CYLINDER 1511, TRACK 0 OR 1 OR  2  AND  D88
*             GO TO STEP 10.                                             D88
*         9.  DO A READ CHECKWORD SEQUENCE ON THE TRACK TO VERIFY  THAT  D88
*             THE  TRACK  CAN BE READ. THE READ CHECKWORD SEQUENCE WILL  D88
*IF DEF,PFMD,1
*             BE DONE IN 2 TO 1 INTERLACE MODE. 
*IF DEF,SFMD,1
*             BE DONE IN 1 TO 1 INTERLACE MODE.                          D88
*IF DEF,LSFMD,1 
*             BE DONE IN 1 TO 1 INTERLACE MODE. 
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH  D88
*             9.                                                         D88
*         11. GO  TO  STEP  13  IF  TRACKS 0 OR 1 OR 2 OF CYLINDER 1511  D88
*             OCTAL WAS NOT JUST READ.                                   D88
*         12. REPEAT  STEPS  4  THROUGH 11 TO READ THE SECTORS SELECTED  D88
*             IN PARAMETER P3.                                           D88PTR4
*         13. REPEAT  STEPS 4 THROUGH 12 TO READ THE TRACKS SELECTED IN  D88
*             PARAMETER P2.                                              D88
*         14. REPEAT  STEPS  3  THROUGH  13  TO  READ ALL THE CYLINDERS  D88
*             SELECTED IN PARAMETERS P0 AND P1.                          D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P1 CONTAINS THE LAST CYLINDER NUMBER.                          D88
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.               D88
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS.              D88
*         P4 CONTAINS THE ENABLE FOR FLAW REPORTING.                     D88
*         P7 CONTAINS THE READ MARGIN SELECTED.                          D88
*                                                                        D88
*         EXIT -                                                         D88
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS        D88
*         DETECTED IN PARAMETERS P0, P1, P2, P3, OR P7.                  D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,2
*         DH846A - VALIDATE PARAMETERS. 
*         DH898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
*IF DEF,SFMD,2
*         D8846A - VALIDATE PARAMETERS.                                  D88
*         D8898C - REPORT ERRORS DETECTED WITHIN THE MODULE.             D88
*IF DEF,LSFMD,2 
*         DL846A - VALIDATE PARAMETERS. 
*         DL898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B0  = LOOP COUNTER.                                            D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B2  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B4  = NUMBER OF SECTORS TO PROCESS.                            D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B11 = ERROR COUNTER.                                           D88
*IF DEF,LSFMD 
*         B12 = TEMPORARY STORAGE.
*         B13 = TEMPORARY STORAGE.
*ENDIF
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.             D88
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH846 - SWEEP HDA CHECKWORDS
2  FORMAT DH846 ERROR(S) = *DECD
3  FORMAT DH846 EC=*DECD, LC=*DECD
4  FORMAT DH846 CYL=*OCTB T=*OB S=*OB 
*IF DEF,SFMD,4
1  FORMAT D8846 - SWEEP HDA CHECKWORDS                                   D88
2  FORMAT D8846 ERROR(S) = *DECD                                         D88
3  FORMAT D8846 EC=*DECD, LC=*DECD                                       D88
4  FORMAT D8846 CYL=*OCTB T=*OB S=*OB                                    D88
*IF DEF,LSFMD,6 
1  FORMAT DL846 - SWEEP HDA CHECKWORDS
2  FORMAT DL846 ERROR(S) = *DECD
3  FORMAT DL846 EC=*DECD, LC=*DECD
4  FORMAT DL846 CYL=*OCTB T=*OB S=*OB 
5  FORMAT LARGE SECTOR READ CHECKWORD ATTEMPTED 
6  FORMAT SMALL SECTOR READ CHECKWORD ATTEMPTED 
*                                                                        D88
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.                     D88
*                                                                        D88
20 MSG 1 TO PRINT               *PRINT MODULE NAME                       D88
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME                     D88
*                                                                        D88
/---------INITIALIZE THE REGISTER FOR THE MODULE.                        D88
*                                                                        D88
   B1=46D                       *MODULE NUMBER IN OCTAL                  D88
*IF DEF,LSFMD 
   B12=0
   B13=0
   B14=0
*ENDIF
*                                                                        D88
/---------VALIDATE THE PARAMETERS AND GENERATE WRITE DATA.               D88
*                                                                        D88
   CALL 46A                     *VALIDATE PARAMETERS                     D88
   B7=P0                        *FIRST CYLINDER NUMBER                   D88
   B10=P2.AND.77                *LAST TRACK NUMBER                       D88
24 B6=P2.RS.6                   *FIRST TRACK NUMBER                      D88
*                                                                        D88
/---------BEGIN THE WRITE/READ A TRACK SEQUENCE.                         D88
*                                                                        D88
26 B5=P3.RS.6                   *FIRST SECTOR NUMBER                     D88
30 B8=41                        *CONNECT FLAG                            D88
   RES,DRIVE,ABT 70             *RESERVE CONTROLLER, DRIVE               D88
   B8=43                        *MARGINS FLAG                            D88
   MARGINS,B9,ABT 70            *SELECT READ MARGIN                      D88
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
   IF(ES.AND.SL.NE.0) GOTO 32      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY  *DISPLAY CURRENT ADD.                    D88
   GOTO 34                                                               D88
32 MSG 3 (B11,B0) TO DISPLAY    *DISPLAY RC MESSAGE                      D88
34 B4=B2                        *NUMBER OF SECTORS                       D88
*                                                                        D88
/---------CHECK FOR CYLINDER 1511, TRACKS 0 OR 1.                        D88
*                                                                        D88
   IF(B7.NE.1511) GOTO 42       *IF NOT CYLINDER 1511 
  
   IF(B6.GT.2) GOTO 42          *IF NOT TRACKS 0 OR 1                    D88
*IF -DEF,LSFMD,1
   IF(B6.EQ.2) GOTO 40          *IF TRACK 2                              D88
*IF DEF,LSFMD,1 
   IF(B6.EQ.2) GOTO 36
*IF DEF,LSFMD,1 
   IF(B6.EQ.1) GOTO 35          *IF TRACK 1 
*IF -DEF,LSFMD,1
   IF(B6.EQ.1) GOTO 36          *IF TRACK 1                              D88
*                                                                        D88
/---------READ TRACKS 0 AND 1 OF CYLINDER 1511 OCTAL.                    D88
*                                                                        D88
   B8=21                        *GET FACTORY FLAG                        D88
   GET,FACTORY,SEC B5,ABT 70    *READ A SECTOR ON TRACK 0                D88
*IF DEF,LSFMD,2 
   GOTO 45
35 B8 = 22
*IF -DEF,LSFMD,2
   GOTO 44                                                               D88
36 B8=22                        *GET UTILITY FLAG                        D88
   GET,UTILITY,SEC B5,ABT 70    *READ A SECTOR ON TRACK 1                D88
*IF -DEF,LSFMD,1
   GOTO 44                                                               D88
*IF DEF,LSFMD,2 
   GOTO 45
36 B4=1 
*IF -DEF,LSFMD,1
40 B4=1                                                                  D88
   B8=25                        *READ CHECKWORD FLAG                     D88
*IF -DEF,LSFMD,1
   READCW B4 SEC AT CYL B7,TRK B6,SEC,B5,ABT 66                          D88
*IF DEF,LSFMD 
   MSG 4(B7,B6,B5) TO DISPLAY 
   MSG 5 TO LINE 45             *DISPLAY CURRENT SEC.SIZE 
   READCW B4 SEC AT CYL B7,TRK B6,SEC,B5,ABT 40 
   GOTO 45
40 B12=B5                      *SAVE LARGE SEC ADD
   B4=4                        *NUMBER OF SMALL SEC.
   B5=B5.LS.2                  *FIRST SMALL SEC. ATTEMTED 
   MSG 6 TO LINE 45            *DISPLAY CURRENT SEC. SIZE 
   MSG 4(B7,B6,B5) TO DISPLAY  *DISPLAY CURRENT ADD.
   READCW B4 SM SEC AT CYL B7,TRK B6,SEC,B5,ABT 41
   B5=B12 
   GOTO 45
41 B5=B12 
   GOTO 66
*ENDIF
*IF -DEF,LSFMD,1
   GOTO 44                                                               D88
*                                                                        D88
*IF DEF,PFMD,1
/---------READ A TRACK IN 2 TO 1 INTERLACE MODE.
*IF DEF,SFMD,1
/---------READ A TRACK IN 1 TO 1 INTERLACE MODE.                         D88
*IF DEF,LSFMD,1 
/---------READ A TRACK IN 1 TO 1 INTERLACE MODE.
*                                                                        D88
42 B8=25                        *READ CHECKWORD FLAG                     D88
*IF DEF,PFMD,4
   B4=B2+1.RS.1                 *NUMBER OF SECTORS FIRST
   READCW B4 SEC AT CYL B7,TRK B6,SEC,B5,ABT 70 
   B4=B2.RS.1                   *NUMBER OF SECTORS LEFT 
   B5=P3.RS.6+1                 *SECOND LOWEST SECTOR 
*IF -DEF,LSFMD,1
   IF(B4.EQ.0) GOTO 44          *IF ALL SECTORS DONE
*IF DEF,LSFMD,1 
   IF(B4.EQ.0) GOTO 45
*IF -DEF,LSFMD,1
   READCW B4 SEC AT CYL B7,TRK B6,SEC,B5,ABT 70                          D88
*IF DEF,LSFMD 
   MSG 4(B7,B6,B5) TO DISPLAY 
   MSG 5 TO LINE 45       *DISPLAY SEC. SIZE MSG
   READCW B4 SEC AT CYL B7,TRK B6,SEC,B5,ABT 44 
   GOTO 45
44 B12=B5                       *SAVE LARGE SEC ADD 
   B13=B4                       *SAVE NUMBER OF LARGE SEC 
   B4=B4.LS.2                   *NUMBER OF SMALL SEC. 
   B5=B5.LS.2                   *ADD. OF SMALL SEC. 
   MSG 4(B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD
   MSG 6 TO LINE 45           *DISPLAY CURRENT SEC.SIZE 
   READCW B4 SM SEC AT CYL B7,TRK B6,SEC,B5,ABT 53
   B5=B12 
   B4=B13 
45 ENDSUB 
*ENDIF
*IF -DEF,LSFMD,1
44 ENDSUB                                                                D88
   IF(ES.AND.SL.EQ.0) GOTO 46   *IF NOT SCOPE LOOP, 
   B0=B0+1                      *INCREMENT THE LOOP COUNT                D88
   GOTO 26                      *REPEAT THE CONDITION                    D88
*                                                                        D88
/---------CHECK FOR CYLINDER 1511, TRACKS 0 OR 1.                        D88
*                                                                        D88
46 IF(B7.NE.1511) GOTO 50       *IF NOT CYLINDER 1511                    D88
   IF(B6.GT.2) GOTO 50          *IF NOT TRACKS 0-2                       D88
   B4=P3.AND.77                 *LAST SECTOR SELECTED                    D88
*                                                                        D88
/---------CHECK FOR ALL SECTORS DONE OF TRACKS 0 AND 1 OF                D88
/---------CYLINDER 1511 OCTAL.                                           D88
*                                                                        D88
   GOTO 30 WHILE (B5+1.LE.B4)   *LOOP TO READ ALL SECTORS                D88
*                                                                        D88
/---------CHECK FOR ALL TRACKS DONE FOR THIS CYLINDER.                   D88
*                                                                        D88
50 GOTO 26 WHILE (B6+1.LE.B10)  *IF NOT ALL TRACKS DONE                  D88
*                                                                        D88
/---------CHECK FOR ALL CYLINDERS DONE.                                  D88
*                                                                        D88
   GOTO 24 WHILE (B7+1.LE.P1)   *IF ALL CYLINDERS NOT DONE               D88
*                                                                        D88
/---------CHECK FOR REPEAT MODULE SELECTED.                              D88
*                                                                        D88
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE                     D88
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED                D88
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS               D88
   GOTO 77                         *EXIT THE MODULE                      D88
*                                                                        D88
/---------PROCESS ABORT ON READING TRACK 2 OF CYLINDER 1511.             D88PTR4
*                                                                        D88
*IF DEF,LSFMD 
53 B5=B12 
   B4=B13 
   GOTO 70
*ENDIF
66 IF(SB.NE.5000) GOTO 72          *NOT 5000 STATUS ERROR                D88
*IF -DEF,LSFMD,1
   IF(SB(5).AND.4000.EQ.0)GOTO 44  *IF TRACK FLAW                        D88
*IF DEF,LSFMD,1 
   IF(SB(5).AND.4000.EQ.0)GOTO 45  *IF TRACK FLAW 
*                                                                        D88
/---------PROCESS ERRORS DETECTED IN THE MODULE.                         D88
*                                                                        D88
70 IF(ES.AND.SL.NE.0) GOTO 74      *IF SCOPING LOOP ON                   D88
   IF(P4.AND.1.NE.0) GOTO 72       *IF REPORT TRACK FLAW ON              D88
   IF(SB.EQ.7777) GOTO 72          *IF NO GENERAL STATUS                 D88
   IF(SB.EQ.0) GOTO 72             *NOT GENERAL STATUS ERROR             D88
*IF -DEF,LSFMD,1
   IF(SB(5).AND.4000.NE.0)GOTO 44  *IF TRACK FLAW                        D88
*IF DEF,LSFMD,1 
   IF(SB(5).AND.4000.NE.0)GOTO 45  *IF TRACK FLAW 
72 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE             D88
   CALL 98C                        *CALL ERROR PROCESSOR                 D88
74 B11=B11+1                       *INCREMENT ERROR COUNT                D88
*IF -DEF,LSFMD,1
   GOTO 44                         *EXIT THE SUBROUTINE                  D88
*IF DEF,LSFMD,1 
   GOTO 45
77 END 20                          *END OF THE MODULE                    D88
*IF DEF,PFMD,1
COMPILE                      *DH846 SWEEP HDA CHECKWORDS
*IF DEF,SFMD,1
COMPILE                      *D8846 SWEEP HDA CHECKWORDS                 D88
*IF DEF,LSFMD,1 
COMPILE                      *DL846 SWEEP HDA CHECKWORDS
*IF DEF,PFMD,4
   MODULE DH846A,DEMA2(14),LOCK 
***       DH846A - PARAMETER VERIFICATION 
**        DH846A - PARAMETER VERIFICATION 
*         DH846A - PARAMETER VERIFICATION 
*IF DEF,SFMD,4
   MODULE D8846A,FMDFT(7),LOCK                                           D88
***       D8846A - PARAMETER VERIFICATION                                D88
**        D8846A - PARAMETER VERIFICATION                                D88
*         D8846A - PARAMETER VERIFICATION                                D88
*IF DEF,LSFMD,4 
   MODULE DL846A,LSFMD2(16),LOCK
***       DL846A - PARAMETER VERIFICATION 
**        DL846A - PARAMETER VERIFICATION 
*         DL846A - PARAMETER VERIFICATION 
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH846A  CHECKS  THE  PARAMETER  WORDS  FOR  MODULE  DH846  TO 
*IF DEF,SFMD,1
*         D8846A  CHECKS  THE  PARAMETER  WORDS  FOR  MODULE  D8846  TO 
*IF DEF,LSFMD,1 
*         DL846A  CHECKS  THE  PARAMETER  WORDS  FOR  MODULE  DL846  TO 
*         DETERMINE IF THERE ARE ANY ERRORS IN THE PARAMETER WORDS.  IF  D88
*         ANY  PARAMETER  ENTRY ERRORS ARE DETECTED, THE MODULE REPORTS  D88
*         AN ERROR SO THE OPERATOR CAN CORRECT THE PROBLEMS  AND  RERUN  D88
*         THE PRIMARY MODULE.                                            D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  VERIFY THAT THE CYLINDER NUMBER IN PARAMETER WORD  P0  IS  D88
*             NOT GREATER THAN 1512 OCTAL.                               D88
*         2.  VERIFY THAT THE CYLINDER NUMBER IN PARAMETER WORD  P1  IS  D88
*             NOT GREATER THAN 1512 OCTAL.                               D88
*         3.  VERIFY THAT THE CYLINDER NUMBER IN PARAMETER WORD  P0  IS  D88
*             EQUAL  TO  OR  LESS THAN THE CYLINDER NUMBER IN PARAMETER  D88
*             WORD P1.                                                   D88PTR4
*         4.  VERIFY  THAT  THE LOWER TRACK NUMBER IN PARAMETER WORD P2  D88
*IF DEF,PFMD,1
*             IS NOT GREATER THAN 11 OCTAL. 
*IF DEF,SFMD,1
*             IS NOT GREATER THAN 47 OCTAL.                              D88
*IF DEF,LSFMD,1 
*             IS NOT GREATER THAN 47 OCTAL. 
*         5.  VERIFY  THAT  THE UPPER TRACK NUMBER IN PARAMETER WORD P2  D88
*IF DEF,PFMD,1
*             IS NOT GREATER THAN 11 OCTAL. 
*IF DEF,SFMD,1
*             IS NOT GREATER THAN 47 OCTAL. 
*IF DEF,LSFMD,1 
*             IS NOT GREATER THAN 47 OCTAL.                              D88
*         6.  VERIFY  THAT  THE LOWER TRACK NUMBER IN PARAMETER WORD P2  D88
*             IS EQUAL TO OR  LESS  THAN  THE  UPPER  TRACK  NUMBER  IN  D88
*             PARAMETER WORD P2.                                         D88
*         7.  VERIFY THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD  P3  D88
*             IS NOT GREATER THAN 37 OCTAL.                              D88
*         8.  VERIFY THAT THE UPPER SECTOR NUMBER IN PARAMETER WORD  P3  D88
*             IS NOT GREATER THAN 37 OCTAL.                              D88
*         9.  VERIFY THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD  P3  D88
*             IS  EQUAL  TO  OR  LESS  THAN  THE UPPER SECTOR NUMBER IN  D88
*             PARAMETER WORD P3.                                         D88
*         10. VERIFY THAT THE MARGINS SELECTED IN PARAMETER WORD P7 ARE  D88
*             VALID.                                                     D88
*         11. DISPLAY ANY PARAMETER ERRORS DETECTED.                     D88
*         12. TERMINATE EXECUTION OF THE CALLING MODULE IF  ANY  ERRORS  D88
*             WERE DETECTED.                                             D88
*         12. DETERMINE THE NUMBER OF SECTORS TO BE READ FROM PARAMETER  D88
*             WORD P3 AND PLACE THE NUMBER IN THE B2 REGISTER.           D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         PARAMETER WORDS P0 THROUGH P9 CONTAIN THE PARAMETERS SELECTED  D88PTR4
*IF DEF,PFMD,1
*         BY THE OPERATOR AS DESCRIBED IN MODULE DH899A.
*IF DEF,SFMD,1
*         BY THE OPERATOR AS DESCRIBED IN MODULE D8899A.                 D88PTR4
*IF DEF,LSFMD,1 
*         BY THE OPERATOR AS DESCRIBED IN MODULE DL899A.
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL.                D88
*                                                                        D88
*         EXIT-                                                          D88
*         TERMINATE EXECUTION OF THE CALLING MODULE IF A PARAMETER       D88
*           ERROR IS DETECTED.                                           D88
*IF DEF,PFMD,1
*         RETURN TO MODULE DH846 IF NO PARAMETER ERRORS ARE DETECTED
*IF DEF,SFMD,1
*         RETURN TO MODULE D8846 IF NO PARAMETER ERRORS ARE DETECTED     D88
*IF DEF,LSFMD,1 
*         RETURN TO MODULE DL846 IF NO PARAMETER ERRORS ARE DETECTED
*           WITH THE REGISTERS SET AS FOLLOWS-                           D88
*         B2 CONTAINS THE NUMBER OF SECTORS TO PROCESS.                  D88
*         B9 CONTAINS THE FIRST READ MARGIN SELECTED.                    D88
*         WC REGISTER CONTAINS 476 OCTAL.                                D88
*         BA REGISTER CONTAINS 4 OCTAL.                                  D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         NONE.                                                          D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B2  = TEMPORARY STORAGE.                                       D88PTR4
*         B9  = READ MARGIN.                                             D88
*         B10 = TEMPORARY STORAGE.                                       D88PTR4
*         B12 = DISPLAY BUFFER LINE NUMBER.                              D88
*         B13 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*IF DEF,PFMD,2
0  FORMAT DH846A - CHECK PARAMETERS 
1  FORMAT DH8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
*IF DEF,SFMD,2
0  FORMAT D8846A - CHECK PARAMETERS                                      D88
1  FORMAT D88*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS              D88
*IF DEF,LSFMD,2 
0  FORMAT DL846A - CHECK PARAMETERS 
1  FORMAT DL8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
2  FORMAT CHECK P0 - LOWER CYLINDER NUMBER TOO LARGE                     D88
3  FORMAT CHECK P1 - UPPER CYLINDER NUMBER TOO LARGE                     D88
4  FORMAT CHECK P0, P1 - P0 GREATER THAN P1                              D88
5  FORMAT CHECK P2 - LOWER TRACK NUMBER TOO LARGE                        D88
6  FORMAT CHECK P2 - UPPER TRACK NUMBER TOO LARGE                        D88
7  FORMAT CHECK P2 - LOWER TRACK GREATER THAN UPPER TRACK                D88
10 FORMAT CHECK P3 - LOWER SECTOR NUMBER TOO LARGE                       D88
11 FORMAT CHECK P3 - UPPER SECTOR NUMBER TOO LARGE                       D88
12 FORMAT CHECK P3 - LOWER SECTOR GREATER THAN UPPER SECTOR              D88
15 FORMAT CHECK P7 - ERROR IN MARGIN PARAMETER WORD                      D88
*IF DEF,PFMD,2
16 FORMAT DH8 - FMD CONFIDENCE TEST 
20 FORMAT DH8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
*IF DEF,SFMD,2
16 FORMAT D88 - FMD CONFIDENCE TEST                                      D88
20 FORMAT D88*D NOT EXECUTED, SUSPECTED PARAMETER ERROR                  D88
*IF DEF,LSFMD,2 
16 FORMAT DL8 - FMD CONFIDENCE TEST 
20 FORMAT DL8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
21 FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT                              D88
22 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT                              D88
*IF DEF,PFMD,1
23 FORMAT PARAMETERS DESCRIBED IN MODULE DH899
*IF DEF,SFMD,1
23 FORMAT PARAMETERS DESCRIBED IN MODULE D8899                           D88
*IF DEF,LSFMD,1 
23 FORMAT PARAMETERS DESCRIBED IN MODULE DL899
24 FORMAT --------------------------------------------------             D88
*                                                                        D88
/---------EQUATES FOR PARAMETER BITS.                                    D88
*                                                                        D88
*IF DEF,PFMD,1
   EQUATE MAXCYL=1512, MAXSEC=37, MAXTRK=11 
*IF DEF,SFMD,1
   EQUATE MAXCYL=1512, MAXSEC=37, MAXTRK=47 
*IF DEF,LSFMD,1 
   EQUATE MAXCYL=1512, MAXSEC=07, MAXTRK=47 
*                                                                        D88
/         DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE                    D88
   BA=4                      *INITIALIZE BASE ADDRESS REG.               D88
   WC=476                    *INITIALIZE WORD COUNT REGISTER             D88
   B12=12                    *FIRST LINE OF ERROR DISPLAY                D88
*                                                                        D88
/---------CHECK LOWER CYLINDER PARAMETER WORD.                           D88
*                                                                        D88
   B13=2                     *MESSAGE FORMAT NUMBER                      D88
   IF(P0.GT.MAXCYL)GOSUB 76  *UPPER CYLINDER TOO LARGE                   D88
*                                                                        D88
/---------CHECK UPPER CYLINDER PARAMETER WORD.                           D88
*                                                                        D88
   B13=3                     *MESSAGE FORMAT NUMBER                      D88
   IF(P1.GT.MAXCYL)GOSUB 76  *UPPER CYLINDER TOO LARGE                   D88
*                                                                        D88
/---------CHECK IF LOWER CYLINDER NUMBER LARGER THAN THE                 D88
/         UPPER CYLINDER NUMBER.                                         D88
*                                                                        D88
   B13=4                     *MESSAGE FORMAT NUMBER                      D88
   IF(P0.GT.P1) GOSUB 76     *IF CONFILICT IN CYL. NUMBERS               D88
*                                                                        D88
/---------CHECK LOWER TRACK NUMBER IN PARAMETER WORD 2.                  D88
*                                                                        D88
   B13=5                     *MESSAGE FORMAT NUMBER                      D88
   B2=P2 RS 6                *GET LOWER TRACK NUMBER                     D88
   IF(B2.GT.MAXTRK)GOSUB 76  *IF LOWER TRACK TOO LARGE                   D88
*                                                                        D88
/---------CHECK UPPER TRACK NUMBER IN PARAMETER WORD 2.                  D88
*                                                                        D88
   B13=6                     *MESSAGE FORMAT NUMBER                      D88
   B10=P2 AND 77             *GET UPPER TRACK NUMBER                     D88
   IF(B10.GT.MAXTRK)GOSUB 76  *IF UPPER TRACK TOO LARGE                  D88
*                                                                        D88
/---------CHECK IF LOWER TRACK LARGER THAN UPPER TRACK.                  D88
*                                                                        D88
   B13=7                     *MESSAGE FORMAT NUMBER                      D88
   IF(B2.GT.B10) GOSUB 76    *IF CONFILICT IN TRACK NUMBERS              D88
*                                                                        D88
/---------CHECK LOWER SECTOR NUMBER IN PARAMETER WORD 3.                 D88
*                                                                        D88
   B13=10                    *MESSAGE FORMAT NUMBER                      D88
   B2=P3 RS 6                *GET LOWER SECTOR NUMBER                    D88
   IF(B2.GT.MAXSEC)GOSUB 76  *IF LOWER SECTOR TO0 LARGE                  D88
*                                                                        D88
/---------CHECK UPPER SECTOR NUMBER IN PARAMETER WORD 3.                 D88
*                                                                        D88
   B13=11                    *MESSAGE FORMAT NUMBER                      D88
   B10=P3 AND 77             *GET UPPER SECTOR NUMBER                    D88
   IF(B10.GT.MAXSEC)GOSUB 76  *IF UPPER SECTOR TOO LARGE                 D88
*                                                                        D88
/---------CHECK IF LOWER SECTOR LARGER THAN UPPER SECTOR.                D88
*                                                                        D88
   B13=12                    *MESSAGE FORMAT NUMBER                      D88
   IF(B2.GT.B10) GOSUB 76    *IF CONFILICT IN SECTOR NO.                 D88
*                                                                        D88
/---------CHECK FOR LEGAL MARGINS IN PARAMETER WORD P7.                  D88
*                                                                        D88
   B9=P7                     *MARGINS SELECTED IN P7                     D88
   IF(P7.EQ.77) B9=0         *IF ALL READ MARGINS SELECTED               D88
   B8 = 43B 
   MARGINS,B9,ABT 40         *CHECK IF LEGAL MARGINS ENTERED             D88
   GOTO 60                   *JUMP, LEGAL MARGINS ENTERED                D88
40 B13=15                    *MESSAGE FORMAT NUMBER                      D88
   GOSUB 76                  *MOVE MESSAGE TO THE DISPLAY                D88
60 IF(B12.EQ.12) GOTO 72     *NO PARAMETER ERRORS DETECTED               D88
*                                                                        D88
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.                   D88
*                                                                        D88
   IF(ES.AND.TM.NE.0)GOTO 70  *IF TERMINAL MODE SELECTED                 D88
   MSG 16 TO LINE 0          *TEST TITLE MESSAGE                         D88
   MSG 0 TO LINE 1           *MODULE NAME TO ERROR DISPLAY               D88
70 MSG 20 (B1) TO LINE 5     *ERROR MESSAGE TO DISPLAY                   D88
   MSG 21 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS                D88
   MSG 22 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS               D88
   MSG 23 TO LINE B12        *MODULE INFORMATION LINE                    D88
   PICTURE                                                               D88
   HALT                      *REPORT ERROR AND WAIT FOR GO               D88
   MSG 24 TO PRINT                                                       D88
   BLANK                                                                 D88
*                                                                        D88
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO.                D88
*                                                                        D88
72 B2=P3.RS.6                *FIRST SECTOR NUMBER                        D88
   B2=P3.AND.77-B2                                                       D88
   B2=B2+1                   *NUMBER OF SECTORS TO DO                    D88
   B10=B12-12                *NUMBER OF WARNING MESSAGES                 D88
   IF(B10.EQ.0) EXIT         *EXIT IF NO ERRORS DETECTED                 D88
   MSG 1 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.               D88
   GOTO 77                              *EXIT THE MODULE                 D88
*                                                                        D88
/---------SUBROUTINE TO INSERT A MESSAGE IN THE DISPLAY.                 D88
*                                                                        D88
76 MSG B13 TO LINE B12       *MOVE ERROR MESSAGE TO DISPLAY              D88
   B12=B12+1                 *INCREMENT LINE NUMBER                      D88
   RETURN                    *EXIT THE SUBROUTINE                        D88
77 END 30                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH846A VALIDATE PARAMETERS
*IF DEF,SFMD,1
COMPILE                      *D8846A VALIDATE PARAMETERS                 D88
*IF DEF,LSFMD,1 
COMPILE                      *DL846A VALIDATE PARAMETERS
*IF DEF,SFMD
   MODULE D8847,FMDFT(7),LOCK 
***       D8847 - RANDOM READ CHECKWORD 
**        D8847 - RANDOM READ CHECKWORD 
*         D8847 - RANDOM READ CHECKWORD 
*         ------------------------- 
* 
*         PURPOSE-
*         D8847  WILL  READ  CHECKWORDS  USING RANDOM CYLINDER NUMBERS, 
*         RANDOM TRACK NUMBERS, RANDOM SECTOR  NUMBERS,  AND  A  RANDOM 
*         NUMBER OF SECTORS IN A 1 TO 1 INTERLACE MODE. 
* 
*         METHOD -
*         1.  CALL SUBMODULE D8846A TO CHECK THE  PARAMETER SETTINGS IN 
*             P0 THROUGH P7.
*         2.  GENERATE A RANDOM DATA PATTERN IN THE INPUT BUFFER. 
*         3.  GENERATE  A  RANDOM  CYLINDER NUMBER WITHIN THE LIMITS OF 
*             PARAMETERS P0 AND P1 FROM THE RANDOM NUMBERS IN THE INPUT 
*             BUFFER. 
*         4.  GENERATE A RANDOM  TRACK  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P2 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         5.  GENERATE A RANDOM SECTOR  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P3 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         6.  GENERATE A RANDOM NUMBER FOR THE NUMBER OF SECTORS TO  DO 
*             LIMITING  THE  NUMBER FROM 1 TO 8 FROM THE RANDOM NUMBERS 
*             IN THE INPUT BUFFER.
*         7.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         8.  SET READ MARGIN SELECTED. 
*         9.  READ  CHECKWORD  OF  THE  RANDOM NUMBER OF SECTORS AT THE 
*             RANDOM ADDRESS (CYLINDER, TRACK, AND SECTOR) USING A READ 
*             CHECKWORD COMMAND.
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 7 THROUGH 
*             9.
*         11. INCREMENT  THE  PASS  COUNT  BY  ONE  AND IF 4096 DECIMAL 
*             PASSES HAVE NOT BEEN DONE, GO TO STEP 2.
*         12. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 11 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P7 CONTAINS THE READ MARGIN SELECTED. 
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR IF THE
*         THE ACCESS LEVEL IS TOO LOW.
* 
*         SUBMODULES REFERENCED-
*         D8846A - VALIDATE PARAMETERS. 
*         D8898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF TRACKS TO PROCESS.
*         B3  = PASS COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = CURRENT MARGINS SELECTION.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
*         OB(503) = TEMPORARY STORAGE.
*         OB(504) = ITERATION COUNTER.
* 
1  FORMAT D8847 - RANDOM READ CHECKWORD 
2  FORMAT D8847 ERROR(S) = *DECD
3  FORMAT D8847 EC=*DECD, LC=*DECD
4  FORMAT D8847 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
   B1=47D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. PASS COUNTER 
   OB(504)=0                    *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS.
* 
   CALL 46A                     *VALIDATE PARAMETERS
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
30 RANDOM TO IB(1) FOR WC START RT  *SET INPUT BUFFER 
* 
/---------GENERATE A RANDOM CYLINDER ADDRESS FOR THIS PASS. 
* 
   B4=0                         *INITIALIZE BUFFER INDEX
   B7=P0                        *DEFAULT CYINDER ADDRESS
   IF(P0.EQ.P1) GOTO 34         *IF SAME CYLINDERS
32 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO CYLINDER FOUND 
   B7=IB(B4).AND.1777B          *RANDOM CYLINDER
   IF(B7.LT.P0) GOTO 32         *IF CYLINDER TOO SMALL
   IF(B7.GT.P1) GOTO 32         *IF CYLINDER TOO LARGE
   IF(B7.EQ.1511) GOTO 32       *IF CYLINDER 1511 
* 
/---------GENERATE A RANDOM TRACK ADDRESS FOR THIS PASS.
* 
34 B6=P2.RS.6                   *LOWER TRACK
   B2=P2.AND.77                 *UPPER TRACK NUMBER 
   IF(B6.EQ.B2) GOTO 40         *IF SAME TRACKS 
   B10=B6                       *SAVE LOWER TRACK NUMBER
   B4=0                         *INITIALIZE BUFFER INDEX
36 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO TRACK FOUND
   B6=IB(B4) AND 77B            *RANDOM TRACK 
   IF(B6.GT.B2) GOTO 36         *IF TRACK TOO SMALL 
   IF(B6.LT.B10) GOTO 36        *IF TRACK TOO LARGE 
* 
/---------GENERATE A RANDOM SECTOR ADDRESS FOR THIS PASS. 
* 
40 B5=P3.RS.6                   *LOWER SECTOR 
   B2=P3.AND.77                 *UPPER SECTOR 
   IF(B5.EQ.B2) GOTO 44         *IF SECTORS EQUAL 
   B10=B5                       *SAVE LOWER SECTOR
   B4=0                         *INITIALIZE BUFFER INDEX
42 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B5=IB(B4) AND 37B            *RANDOM SECTOR
   IF(B5.GT.B2) GOTO 42         *IF SECTOR TOO LARGE
   IF(B5.LT.B10) GOTO 42        *IF SECTOR TOO SMALL
* 
/---------GENERATE A RANDOM NUMBER OF SECTORS FOR THIS PASS.
* 
44 B10=B2-B5+1                  *MAXIMINE SECTORS COUNT 
   B2=1                         *DEFAULT SECTORS COUNT
   B4=0                         *INITIALIZE BUFFER INDEX
46 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B2=IB(B4).AND.7+1            *RANDOM SECTOR COUNT
   IF(B2.GT.B10) GOTO 46        *IF COUNT TOO LARGE 
   OB(503)=B5                   *SAVE SECTOR NUMBER 
* 
/---------BEGIN THE READ CHECKWORD SEQUENCE.
* 
50 B8=41                        *CONNECT FLAG 
   RES,DRIVE,ABT 72             *RESERVE CONTROLLER, DRIVE
   B8=43                        *MARGINS FLAG 
   MARGINS,B9,ABT 72            *SELECT READ MARGIN 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2                        *NUMBER OF SECTORS
   B5=OB(503)                   *SECTOR NUMBER
56 B8=25                        *READ CHECKWORD FLAG
   READCW B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
60 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 62   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 50                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR 4096 DECIMAL PASSES DONE. 
* 
62 GOTO 30 WHILE (B3+1.NE.0)    *IF 4096D PASSES NOT DONE 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
   OB(504)=OB(504)+1            *INCREMENT ITERATION COUNT
   IF(OB(504).LT.P9) GOTO 30    *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
64 IF(ES.AND.SL.NE.0) GOTO 66      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
66 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS COMMAND ABORT IN THE MODULE.
* 
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.NE.5000) GOTO 74          *NOT 5000 GENERAL STATUS 
   IF(SB(5).AND.4000.NE.0)GOTO 60  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 60                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *D8847 RANDOM READ CHECKWORD 
*ENDIF
*IF DEF,LSFMD 
   MODULE DL847,LSFMD2(16),LOCK 
***       DL847 - RANDOM READ CHECKWORD 
**        DL847 - RANDOM READ CHECKWORD 
*         DL847 - RANDOM READ CHECKWORD 
*         ------------------------- 
* 
*         PURPOSE-
*         DL847 WILL  DO READ CHECKWORDS USING RANDOM CYLINDER NUMBERS, 
*         RANDOM TRACK NUMBERS, RANDOM SECTOR  NUMBERS,  AND  A  RANDOM 
*         NUMBER OF SECTORS.
* 
*         METHOD -
*         1.  CALL SUBMODULE DL846A TO CHECK THE  PARAMETER SETTINGS IN 
*             P0 THROUGH P7.
*         2.  GENERATE A RANDOM DATA PATTERN IN THE INPUT BUFFER. 
*         3.  GENERATE  A  RANDOM  CYLINDER NUMBER WITHIN THE LIMITS OF 
*             PARAMETERS P0 AND P1 FROM THE RANDOM NUMBERS IN THE INPUT 
*             BUFFER. 
*         4.  GENERATE A RANDOM  TRACK  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P2 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         5.  GENERATE A RANDOM SECTOR  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P3 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         6.  GENERATE A RANDOM NUMBER FOR THE NUMBER OF SECTORS TO  DO 
*             LIMITING  THE  NUMBER FROM 1 TO 8 FROM THE RANDOM NUMBERS 
*             IN THE INPUT BUFFER.
*         7.  RESERVE THE CONTROLLER AND 885-1X DRIVE.
*         8.  SET READ MARGIN SELECTED. 
*         9.  READ CHECKWORDS  AT  THE  RANDOM NUMBER OF SECTORS AT THE 
*             RANDOM ADDRESS (CYLINDER, TRACK, AND SECTOR) USING A READ 
*             CHECKWORD COMMAND.
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 7 THROUGH 
*             9.
*         11. INCREMENT  THE  PASS  COUNT  BY  ONE  AND IF 4096 DECIMAL 
*             PASSES HAVE NOT BEEN DONE, GO TO STEP 2.
*         12. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 11 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR FLAW REPORTING AND PATTERN
*           CHANGING. 
*         P5 CONTAINS THE DISABLES FOR WRITE, READ, AND PATTERN 
*           GENERATION. 
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P7 CONTAINS THE READ MARGIN SELECTED. 
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, P7, OR IF THE
*         ACCESS LEVEL IS TOO LOW.
* 
*         SUBMODULES REFERENCED-
*         DL846A - VALIDATE PARAMETERS. 
*         DL898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF TRACKS TO PROCESS.
*         B3  = PASS COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B9  = CURRENT MARGINS SELECTION.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
*         B12 = TEMPORARY STORAGE.
*         B13 = TEMPORARY STORAGE.
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
*         OB(503) = TEMPORARY STORAGE.
*         OB(504) = ITERATION COUNTER.
* 
1  FORMAT DL847 - RANDOM READ CHECKWORD 
2  FORMAT DL847 ERROR(S) = *DECD
3  FORMAT DL847 EC=*DECD, LC=*DECD
4  FORMAT DL847 CYL=*OCTB T=*OB S=*OB 
5  FORMAT LARGE SECTOR READ CHECKWORD ATTEMPTED 
6  FORMAT SMALL SECTOR READ CHECKWORD ATTEMPTED 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
   B1=47D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. PASS COUNTER 
   OB(504)=0                    *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS.
* 
   CALL 46A                     *VALIDATE PARAMETERS
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
30 RANDOM TO IB(1) FOR WC START RT  *SET INPUT BUFFER 
* 
/---------GENERATE A RANDOM CYLINDER ADDRESS FOR THIS PASS. 
* 
   B4=0                         *INITIALIZE BUFFER INDEX
   B7=P0                        *DEFAULT CYINDER ADDRESS
   IF(P0.EQ.P1) GOTO 34         *IF SAME CYLINDERS
32 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO CYLINDER FOUND 
   B7=IB(B4).AND.1777B          *RANDOM CYLINDER
   IF(B7.LT.P0) GOTO 32         *IF CYLINDER TOO SMALL
   IF(B7.GT.P1) GOTO 32         *IF CYLINDER TOO LARGE
   IF(B7.EQ.1511) GOTO 32       *IF CYLINDER 1511 
* 
/---------GENERATE A RANDOM TRACK ADDRESS FOR THIS PASS.
* 
34 B6=P2.RS.6                   *LOWER TRACK
   B2=P2.AND.77                 *UPPER TRACK NUMBER 
   IF(B6.EQ.B2) GOTO 40         *IF SAME TRACKS 
   B10=B6                       *SAVE LOWER TRACK NUMBER
   B4=0                         *INITIALIZE BUFFER INDEX
36 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO TRACK FOUND
   B6=IB(B4) AND 77B            *RANDOM TRACK 
   IF(B6.GT.B2) GOTO 36         *IF TRACK TOO SMALL 
   IF(B6.LT.B10) GOTO 36        *IF TRACK TOO LARGE 
* 
/---------GENERATE A RANDOM SECTOR ADDRESS FOR THIS PASS. 
* 
40 B5=P3.RS.6                   *LOWER SECTOR 
   B2=P3.AND.77                 *UPPER SECTOR 
   IF(B5.EQ.B2) GOTO 44         *IF SECTORS EQUAL 
   B10=B5                       *SAVE LOWER SECTOR
   B4=0                         *INITIALIZE BUFFER INDEX
42 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B5=IB(B4) AND 37B            *RANDOM SECTOR
   IF(B5.GT.B2) GOTO 42         *IF SECTOR TOO LARGE
   IF(B5.LT.B10) GOTO 42        *IF SECTOR TOO SMALL
* 
/---------GENERATE A RANDOM NUMBER OF SECTORS FOR THIS PASS.
* 
44 B10=B2-B5+1                  *MAXIMINE SECTORS COUNT 
   B2=1                         *DEFAULT SECTORS COUNT
   B4=0                         *INITIALIZE BUFFER INDEX
46 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B2=IB(B4).AND.7+1            *RANDOM SECTOR COUNT
   IF(B2.GT.B10) GOTO 46        *IF COUNT TOO LARGE 
   OB(503)=B5                   *SAVE SECTOR NUMBER 
* 
/---------BEGIN THE READ CHECKWORD SEQUENCE.
* 
50 B8=41                        *CONNECT FLAG 
   RES,DRIVE,ABT 72             *RESERVE CONTROLLER, DRIVE
   B8=43                        *MARGINS FLAG 
   MARGINS,B9,ABT 72            *SELECT READ MARGIN 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2                        *NUMBER OF SECTORS
   B5=OB(503)                   *SECTOR NUMBER
   MSG 5 TO LINE 45             *DISPLAY SEC SIZE MESSAGE 
56 B8=25                        *READ CHECKWORD FLAG
   READCW B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 57 
   GOTO 60
57 B12=B5 
   B4=B4.LS.2                   *NUMBER OF SMALL SECTORS
   B5=B5.LS.2                   *FIRST SMALL SEC ATTEMPTED
   GOSUB 64 
   MSG 6 TO LINE 45             *DISPLAY SEC SIZE MESSAGE 
   READCW B4 SM SEC AT CYL B7,TRK B6,SEC B5, ABT 72 
   B5=B12 
   B4=B13 
60 ENDSUB 
   IF(ES.AND.RC.EQ.0) GOTO 62   *IF NO REPEAT CONDITION 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 50                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR 4096 DECIMAL PASSES DONE. 
* 
62 GOTO 30 WHILE (B3+1.NE.0)    *IF 4096D PASSES NOT DONE 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
   OB(504)=OB(504)+1            *INCREMENT ITERATION COUNT
   IF(OB(504).LT.P9) GOTO 30    *REPEAT FOR ITERATION COUNT 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
64 IF(ES.AND.SL.NE.0) GOTO 66      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
66 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS COMMAND ABORT IN THE MODULE.
* 
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.NE.5000) GOTO 74          *NOT 5000 GENERAL STATUS 
   IF(SB(5).AND.4000.NE.0)GOTO 60  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 60                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DL847 RANDOM READ CHECKWORD 
*ENDIF
*IF DEF,PFMD
   MODULE DH847,DEMA2(14),LOCK
***       DH847 - RANDOM READ CHECKWORD 
**        DH847 - RANDOM READ CHECKWORD 
*         DH847 - RANDOM READ CHECKWORD 
*         ------------------------- 
* 
*         PURPOSE-
*         DH847  WILL DO READ CHECKWORDS USING RANDOM CYLINDER NUMBERS, 
*         RANDOM TRACK NUMBERS, RANDOM SECTOR  NUMBERS,  AND  A  RANDOM 
*         NUMBER  OF SECTORS  IN A 2 TO 1 INTERLACE MODE. 
* 
*         METHOD -
*         1.  CALL SUBMODULE DH846A TO CHECK THE  PARAMETER SETTINGS IN 
*             P0 THROUGH P7.
*         2.  GENERATE A RANDOM DATA PATTERN IN THE INPUT BUFFER. 
*         3.  GENERATE  A  RANDOM  CYLINDER NUMBER WITHIN THE LIMITS OF 
*             PARAMETERS P0 AND P1 FROM THE RANDOM NUMBERS IN THE INPUT 
*             BUFFER. 
*         4.  GENERATE A RANDOM  TRACK  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P2 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         5.  GENERATE A RANDOM SECTOR  NUMBER  WITHIN  THE  LIMITS  OF 
*             PARAMETER P3 FROM THE RANDOM NUMBERS IN THE INPUT BUFFER. 
*         6.  GENERATE A RANDOM NUMBER FOR THE NUMBER OF SECTORS TO  DO 
*             LIMITING  THE  NUMBER FROM 1 TO 8 FROM THE RANDOM NUMBERS 
*             IN THE INPUT BUFFER.
*         7.  RESERVE THE CONTROLLER AND 885-4X DRIVE.
*         8.  SET READ MARGIN SELECTED. 
*         9.  READ CHECKWORDS  THE  RANDOM  NUMBER  OF  SECTORS  AT THE 
*             RANDOM ADDRESS (CYLINDER, TRACK, AND SECTOR) USING A READ 
*             CHECKWORD COMMAND.
*         10. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 7 THROUGH 
*             9.
*         11. INCREMENT  THE  PASS  COUNT  BY  ONE  AND IF 4096 DECIMAL 
*             PASSES HAVE NOT BEEN DONE, GO TO STEP 2.
*         12. INCREMENT THE ITERATION COUNTER BY ONE AND REPEAT STEPS 2 
*             THROUGH 11 UNTIL THE ITERATION COUNTER  IS  GREATER  THAN 
*             THE ITERATION COUNT IN PARAMETER P9.
* 
/ 
*         ENTRY - 
*         P0 CONTAINS THE STARTING CYLINDER NUMBER. 
*         P1 CONTAINS THE LAST CYLINDER NUMBER. 
*         P2 CONTAINS THE STARTING AND LAST TRACK NUMBERS.
*         P3 CONTAINS THE STARTING AND LAST SECTOR NUMBERS. 
*         P4 CONTAINS THE ENABLES FOR PATTERN CHANGING. 
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.
*         P6 CONTAINS THE DATA CONTROL WORD.
*         P9 CONTAINS THE ITERATION COUNT.
* 
*         EXIT -
*         THE MODULE WILL NOT BE EXECUTED IF A PARAMETER ERROR IS 
*         DETECTED IN PARAMETERS P0, P1, P2, P3, P5, OR IF THE
*         ACCESS LEVEL IS TOO LOW.
* 
*         SUBMODULES REFERENCED-
*         DH846A - VALIDATE PARAMETERS. 
*         DH898C - REPORT ERRORS DETECTED WITHIN THE MODULE.
* 
*         REGISTERS USED- 
*         B0  = LOOP COUNTER. 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B2  = NUMBER OF TRACKS TO PROCESS.
*         B3  = PASS COUNTER. 
*         B4  = NUMBER OF SECTORS TO PROCESS. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B10 = TEMPORARY STORAGE.
*         B11 = ERROR COUNTER.
*         B12 = ITERATION COUNTER 
* 
*         BUFFERS USED -
*         INPUT, OUTPUT, AND STATUS BUFFER - STANDARD USAGE.
* 
1  FORMAT DH847 - RANDOM READ CHECKWORD 
2  FORMAT DH847 ERROR(S) = *DECD
3  FORMAT DH847 EC=*DECD, LC=*DECD
4  FORMAT DH847 CYL=*OCTB T=*OB S=*OB 
* 
/---------PRINT AND DISPLAY THE MODULE NAME MESSAGE.
* 
20 MSG 1 TO PRINT               *PRINT MODULE NAME
22 MSG 1 TO DISPLAY             *DISPLAY MODULE NAME
   B1=47D                       *MODULE NUMBER IN OCTAL 
   B3=0                         *INIT. PASS COUNTER 
   B12 = 0                      *INIT. ITERATION COUNTER
* 
/---------VALIDATE THE PARAMETERS.
* 
   CALL 46A                     *VALIDATE PARAMETERS
* 
/---------GENERATE A RANDOM DATA PATTERN. 
* 
30 RANDOM TO IB(1) FOR WC START RT  *SET INPUT BUFFER 
* 
/---------GENERATE A RANDOM CYLINDER ADDRESS FOR THIS PASS. 
* 
   B4=0                         *INITIALIZE BUFFER INDEX
   B7=P0                        *DEFAULT CYINDER ADDRESS
   IF(P0.EQ.P1) GOTO 34         *IF SAME CYLINDERS
32 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO CYLINDER FOUND 
   B7=IB(B4).AND.1777B          *RANDOM CYLINDER
   IF(B7.LT.P0) GOTO 32         *IF CYLINDER TOO SMALL
   IF(B7.GT.P1) GOTO 32         *IF CYLINDER TOO LARGE
   IF(B7.EQ.1511) GOTO 32       *IF CYLINDER 1511 
* 
/---------GENERATE A RANDOM TRACK ADDRESS FOR THIS PASS.
* 
34 B6=P2.RS.6                   *LOWER TRACK
   B2=P2.AND.77                 *UPPER TRACK NUMBER 
   IF(B6.EQ.B2) GOTO 40         *IF SAME TRACKS 
   B10=B6                       *SAVE LOWER TRACK NUMBER
   B4=0                         *INITIALIZE BUFFER INDEX
36 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO TRACK FOUND
   B6=IB(B4) AND 77B            *RANDOM TRACK 
   IF(B6.GT.B2) GOTO 36         *IF TRACK TOO SMALL 
   IF(B6.LT.B10) GOTO 36        *IF TRACK TOO LARGE 
* 
/---------GENERATE A RANDOM SECTOR ADDRESS FOR THIS PASS. 
* 
40 B5=P3.RS.6                   *LOWER SECTOR 
   B2=P3.AND.77                 *UPPER SECTOR 
   IF(B5.EQ.B2) GOTO 44         *IF SECTORS EQUAL 
   B10=B5                       *SAVE LOWER SECTOR
   B4=0                         *INITIALIZE BUFFER INDEX
42 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B5=IB(B4) AND 37B            *RANDOM SECTOR
   IF(B5.GT.B2) GOTO 42         *IF SECTOR TOO LARGE
   IF(B5.LT.B10) GOTO 42        *IF SECTOR TOO SMALL
* 
/---------GENERATE A RANDOM NUMBER OF SECTORS FOR THIS PASS.
* 
44 B10=B2-B5+1                  *MAXIMINE SECTORS COUNT 
   B2=1                         *DEFAULT SECTORS COUNT
   B4=0                         *INITIALIZE BUFFER INDEX
46 GOTO 30 WHILE (B4+1.GE.WC)   *IF NO SECTOR FOUND 
   B2=IB(B4).AND.7+1            *RANDOM SECTOR COUNT
   IF(B2.GT.B10) GOTO 46        *IF COUNT TOO LARGE 
   IB(504)=B5                   *SAVE SECTOR NUMBER 
* 
/---------BEGIN THE READ CHECKWORD SEQUENCE.
* 
50 B8=41                        *CONNECT FLAG 
   RES,DRIVE,ABT 72             *RESERVE CONTROLLER, DRIVE
   B8=43                        *MARGINS FLAG 
   MARGINS,B9,ABT 72            *SELECT READ MARGIN 
   GOSUB 64                     *DISPLAY CURRENT MESSAGE
   B4=B2+1.RS.1                 *NUMBER OF SECTORS
   B5=IB(504)                   *SECTOR NUMBER
56 B8=25                        *READ CHECKWORD FLAG
   READCW B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
   B4=B2.RS.1 
   B5=IB(504)+1                 *SECOND LOWEST SECTOR 
   IF(B4.EQ.0) GOTO 60          *IF ALL SECTORS DONE
   READCW B4 SEC AT CYL B7,TRK B6,SEC B5,ABT 72 
60 ENDSUB 
   IF(ES.AND.SL.EQ.0) GOTO 62   *IF NOT SCOPE LOOP, 
   B0=B0+1                      *INCREMENT THE LOOP COUNT 
   GOTO 50                      *REPEAT THE CONDITION 
* 
/---------CHECK FOR 4096 DECIMAL PASSES DONE. 
* 
62 GOTO 30 WHILE (B3+1.NE.0)    *IF 4096D PASSES NOT DONE 
* 
/---------CHECK FOR THE ITERATION COUNT SATISFIED.
* 
   GOTO 30 WHILE (B12+1.LT.P9)  *IF P9 ITERATIONS DONE, 
* 
/---------CHECK FOR REPEAT MODULE SELECTED. 
* 
   IF(ES.AND.RM.NE.0) GOTO 22      *IF REPEAT MODULE
   IF(B11.EQ.0) GOTO 77            *IF NO ERRORS DETECTED 
   MSG 2 (B11) TO PRINT,DAYFILE,DISPLAY  *NUMBER OF ERRORS
   GOTO 77                         *EXIT THE MODULE 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
64 IF(ES.AND.SL.NE.0) GOTO 66      *IF SCOPE LOOP ENABLED,
   MSG 4 (B7,B6,B5) TO DISPLAY     *DISPLAY CURRENT ADD.
   RETURN                          *EXIT THE SUBROUTINE 
66 MSG 3 (B11,B0) TO DISPLAY       *DISPLAY RC MESSAGE
   RETURN                          *EXIT THE SUBROUTINE 
* 
/---------PROCESS COMMAND ABORT IN THE MODULE.
* 
70 IF(EC.AND.4077.NE.4012)GOTO 72  *NOT FUNCTION REPLY ERROR
   STATUS GENERAL,ABT 72           *GET GENERAL STATUS
   STATUS DETAIL,ABT 72            *GET DETAILED STATUS 
72 IF(ES.AND.SL.NE.0) GOTO 76      *IF SCOPING LOOP ON
   IF(P4.AND.1.NE.0) GOTO 74       *IF REPORT TRACK FLAW ON 
   IF(SB.NE.5000) GOTO 74          *NOT 5000 GENERAL STATUS 
   IF(SB(5).AND.4000.NE.0)GOTO 60  *IF TRACK FLAW 
74 MSG 1 TO LINE 1                 *POST MODULE NAME MESSAGE
   CALL 98C                        *CALL ERROR PROCESSOR
76 B11=B11+1                       *INCREMENT ERROR COUNT 
   GOTO 60                         *EXIT THE SUBROUTINE 
77 END 20                          *END OF THE MODULE 
COMPILE                      *DH847 RANDOM READ CHECKWORD 
*ENDIF
*IF DEF,PFMD,4
   MODULE DH860,DEMA1(14),LOCK
***       DH860 - RESET MAINTENANCE TEST
**        DH860 - RESET MAINTENANCE TEST
*         DH860 - RESET MAINTENANCE TEST
*IF DEF,SFMD,4
   MODULE D8860,FMDHT(7),LOCK                                            D88
***       D8860 - RESET MAINTENANCE TEST                                 D88
**        D8860 - RESET MAINTENANCE TEST                                 D88
*         D8860 - RESET MAINTENANCE TEST                                 D88
*IF DEF,LSFMD,4 
   MODULE DL860,LSFMD1(16),LOCK 
***       DL860 - RESET MAINTENANCE TEST
**        DL860 - RESET MAINTENANCE TEST
*         DL860 - RESET MAINTENANCE TEST
*         ------------------------------                                 D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,2
*         DH860 ISSUES  A RESET COMMAND  TO THE 7155-401  CONTROLLER TO 
*         CORRECT A HUNG CONDITION. 
*IF DEF,SFMD,2
*         D8860 ISSUES A RESET COMMAND TO THE FMD CONTROLLER TO CORRECT  D88
*         A HUNG CONDITION. 
*IF DEF,LSFMD,2 
*         DL860 ISSUES A RESET COMMAND TO THE FMD CONTROLLER TO CORRECT 
*         A HUNG CONDITION.                                              D88
*                                                                        D88
*         METHOD -                                                       D88
*         1.  CONNECT THE CONTROLLER.                                    D88
*         2.  ISSUE THE RESET COMMAND.                                   D88
*         3.  VERIFY THAT GENERAL STATUS IS EQUAL TO ZERO.               D88
*         4.  REPEAT MODULE/CONDITION LOOPS ON STEPS 1-3.                D88
*         5.  SCOPE LOOP DISPLAYS SCOPE LOOP MESSAGE TO THE DISPLAY AND  D88
*             LOOPS ON THE RESET COMMAND.                                D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,1
*         DH897C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,SFMD,1
*         D8897C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*IF DEF,LSFMD,1 
*         DL897C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B7  = (7777) INVALID CYLINDER ADDRESS - FLAGS ERROR PROCESSOR  D88
*               TO OMIT ADDRESS REPORTING.                               D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH860 RESET MAINTENANCE TEST
2  FORMAT DH860 ERROR(S) = *DECD
4  FORMAT DH860 E0020  L*OC    GENERAL STATUS *OCTB ON RESET
7  FORMAT DH860 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8860 RESET MAINTENANCE TEST                                   D88
2  FORMAT D8860 ERROR(S) = *DECD                                         D88
4  FORMAT D8860 E0020  L*OC    GENERAL STATUS *OCTB ON RESET             D88
7  FORMAT D8860 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,4 
1  FORMAT DL860 RESET MAINTENANCE TEST
2  FORMAT DL860 ERROR(S) = *DECD
4  FORMAT DL860 E0020  L*OC    GENERAL STATUS *OCTB ON RESET
7  FORMAT DL860 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 60D                      *MODULE NUMBER 
   B7 = 7777                     *INVALID CYLINDER                       D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*IF DEF,PFMD,1
   MSG 1 TO PRINT,DISPLAY        *PRINT,DISPLAY MODULE TITLE
*IF DEF,SFMD,1
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
*IF DEF,LSFMD,1 
   MSG 1 TO PRINT                *PRINT MODULE TITLE
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
24 B8 = 40B                                                              D88
   RES CONTROLLER, ABT 74                                                D88
   IF(ES.AND.CM.EQ.0) MSG 1 TO DISPLAY  *IF NO REPEAT                    D88
   B8 = 42B                                                              D88
   RESET, ABT 74                 *RESET CONTROLLER                       D88
   B8 = 04B                                                              D88
   STATUS GENERAL, ABT 74        *GET GENERAL STATUS                     D88
   WC = 1                        *WORD COUNT FOR COMPARE
   B8 = 47B                                                              D88
   COMPARE SB TO OB FOR WC, ABT 70                                       D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC                         D88
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT              D88
   GOTO 24                                                               D88
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   GOTO 77                       *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 ERROR 00/02                                                           D88
   IF(ES.AND.SL.NE.0) GOTO 72   *IF SCOPE LOOPING SET                    D88
   MSG 1 TO LINE 1              *DISPLAY MODULE TITLE                    D88
   MSG 4(EA,SB) TO LINE 5                                                D88
   CALL 97C                     *CALL MODULE ERROR PROCESSOR
72 B11 = B11+1                  *INCREMENT ERROR COUNT                   D88
   GOTO 40                                                               D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET                     D88
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE                     D88
   CALL 97C                    *CALL COMMAND ABORT PROCESSOR             D88
76 B11 = B11+1                 *INCREMENT ERROR COUNT                    D88
   GOTO 40                                                               D88
77 END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH860 RESET MAINTENANCE TEST
*IF DEF,SFMD,1
COMPILE                      *D8860 RESET MAINTENANCE TEST               D88
*IF DEF,LSFMD,1 
COMPILE                      *DL860 RESET MAINTENANCE TEST
*IF DEF,PFMD,4
   MODULE DH861,DEMA2(14),LOCK
***       DH861 - SEEK ADDRESS TEST 
**        DH861 - SEEK ADDRESS TEST 
*         DH861 - SEEK ADDRESS TEST 
*IF DEF,SFMD,4
   MODULE D8861,FMDFT(7),LOCK                                            D88
***       D8861 - SEEK ADDRESS TEST                                      D88
**        D8861 - SEEK ADDRESS TEST                                      D88
*         D8861 - SEEK ADDRESS TEST                                      D88
*IF DEF,LSFMD,4 
   MODULE DL861,LSFMD2(16),LOCK 
***       DL861 - SEEK ADDRESS TEST 
**        DL861 - SEEK ADDRESS TEST 
*         DL861 - SEEK ADDRESS TEST 
*         -------------------------                                      D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH861  PERFORMS  A  SEEK TO THE ADDRESS SELECTED IN PARAMETER 
*IF DEF,SFMD,1
*         D8861  PERFORMS  A  SEEK TO THE ADDRESS SELECTED IN PARAMETER  D88
*IF DEF,LSFMD,1 
*         DL861  PERFORMS  A  SEEK TO THE ADDRESS SELECTED IN PARAMETER 
*         P0, P2, AND P3.                                                D88
*                                                                        D88
*         METHOD -                                                       D88
*         1. CHECK THAT THE PARAMETERS P0, P2, AND P3 ARE CORRECT.       D88
*         2. RESERVE  THE  DRIVE  AND  SEEK  TO THE CYLINDER, TRACK AND  D88
*            SECTOR SELECTED IN PARAMETERS P0, P2, AND P3.               D88
*         3. REPEAT MODULE/CONDITION LOOPS ON STEPS 1-2.                 D88
*         4. SCOPE LOOP DISPLAYS SCOPE LOOP MESSAGE AND LOOPS ON  STEPS  D88
*            1-2.                                                        D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*         P0 CONTAINS THE CYLINDER NUMBER.                               D88
*         P2 CONTAINS THE TRACK NUMBER.                                  D88
*         P3 CONTAINS THE SECTOR NUMBER.                                 D88
*                                                                        D88
*         EXIT -                                                         D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,2
*         DH898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,SFMD,2
*         D8898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL.            D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*IF DEF,LSFMD,2 
*         DL898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B5  = SECTOR ADDRESS.                                          D88
*         B6  = TRACK ADDRESS.                                           D88
*         B7  = CYLINDER ADDRESS.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH861 SEEK ADDRESS TEST 
2  FORMAT DH861 ERROR(S) = *DECD
5  FORMAT DH861 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DH861 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8861 SEEK ADDRESS TEST                                        D88
2  FORMAT D8861 ERROR(S) = *DECD                                         D88
5  FORMAT D8861 CYL=*OCTB T=*OB S=*OB                                    D88
7  FORMAT D8861 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,4 
1  FORMAT DL861 SEEK ADDRESS TEST 
2  FORMAT DL861 ERROR(S) = *DECD
5  FORMAT DL861 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DL861 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 61D                      *MODULE NUMBER                          D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*IF DEF,PFMD,1
   MSG 1 TO PRINT,DISPLAY        *PRINT,DISPLAY MODULE TITLE
*IF DEF,SFMD,1
   MSG 1 TO PRINT                *PRINT MODULE TITLE
*IF DEF,LSFMD,1 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
   CALL 98A                      *VERIFY PARAMETERS AND AL               D88
   B5 = P3.RS.6                  *SECTOR ADDRESS                         D88
   B6 = P2.RS.6                  *TRACK ADDRESS                          D88
   B7 = P0                       *CYLINDER ADDRESS                       D88
24 B8 = 41B                                                              D88
   RES DRIVE, ABT 74             *RESERVE THE DRIVE                      D88
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM              D88
   B8 = 44B                                                              D88
   SEEK CYL B7 TRK B6 SEC B5, ABT 74   *SEEK TO ADDRESS                  D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC                         D88
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT              D88
   GOTO 24                                                               D88
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   GOTO 77                       *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET                     D88
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE                     D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
76 B11 = B11+1                 *INCREMENT ERROR COUNT                    D88
   GOTO 40                                                               D88
77 END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH861 SEEK ADDRESS TEST 
*IF DEF,SFMD,1
COMPILE                      *D8861 SEEK ADDRESS TEST                    D88
*IF DEF,LSFMD,1 
COMPILE                      *DL861 SEEK ADDRESS TEST 
*IF DEF,PFMD,4
   MODULE DH862,DEMA2(14),LOCK
***       DH862 -  WRITE ONE SECTOR 
**        DH862 -  WRITE ONE SECTOR 
*         DH862 -  WRITE ONE SECTOR 
*IF DEF,SFMD,4
   MODULE D8862,FMDFT(7),LOCK                                            D88
***       D8862 -  WRITE ONE SECTOR                                      D88
**        D8862 -  WRITE ONE SECTOR                                      D88
*         D8862 -  WRITE ONE SECTOR                                      D88
*IF DEF,LSFMD,4 
   MODULE DL862,LSFMD2(16),LOCK 
***       DL862 -  WRITE ONE SECTOR 
**        DL862 -  WRITE ONE SECTOR 
*         DL862 -  WRITE ONE SECTOR 
*         -------------------------                                      D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH862 WRITES THE SECTOR SELECTED IN PARAMETER P0, P2, AND P3. 
*IF DEF,SFMD,1
*         D8862 WRITES THE SECTOR SELECTED IN PARAMETER P0, P2, AND P3.  D88
*IF DEF,LSFMD,1 
*         DL862 WRITES THE SECTOR SELECTED IN PARAMETER P0, P2, AND P3. 
*                                                                        D88
*         METHOD -                                                       D88
*         1. CHECK THAT THE PARAMETER REGISTERS AND  ACCESS  LEVEL  ARE  D88
*            CORRECT.                                                    D88
*IF DEF,PFMD,1
*         2. RESERVE THE CONTROLLER AND 885-4X DRIVE. 
*IF DEF,SFMD,1
*         2. RESERVE THE CONTROLLER AND 885-1X DRIVE. 
*IF DEF,LSFMD,1 
*         2. RESERVE THE CONTROLLER AND 885-1X DRIVE. 
*         3. GENERATE  A DATA PATTERN IN THE OUTPUT BUFFER DESCRIBED IN  D88
*            THE PARAMETERS.                                             D88
*         4. WRITE ONE SECTOR AS SELECTED IN THE PARAMETERS P0, P2, AND  D88
*            P3.                                                         D88
*         5. REPEAT MODULE/CONDITION LOOPS ON STEPS 1-4.                 D88
*         6. SCOPE  LOOP DISPLAYS SCOPE LOOP MESSAGE AND LOOPS ON STEPS  D88
*            1-4.                                                        D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P2 CONTAINS THE TRACK NUMBER.                                  D88
*         P3 CONTAINS THE SECTOR NUMBER.                                 D88
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.               D88PTR4
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*                                                                        D88
*         EXIT -                                                         D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,2
*         DH898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,SFMD,2
*         D8898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL.            D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*IF DEF,LSFMD,2 
*         DL898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B5  = SECTOR ADDRESS.                                          D88
*         B6  = TRACK ADDRESS.                                           D88
*         B7  = CYLINDER ADDRESS.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         OUTPUT BUFFER CONTAINS THE PATTERN WRITTEN INTO THE SECTOR.    D88
*                                                                        D88
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH862 WRITE ONE SECTOR
2  FORMAT DH862 ERROR(S) = *DECD
5  FORMAT DH862 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DH862 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8862 WRITE ONE SECTOR                                         D88
2  FORMAT D8862 ERROR(S) = *DECD                                         D88
5  FORMAT D8862 CYL=*OCTB T=*OB S=*OB                                    D88
7  FORMAT D8862 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,4 
1  FORMAT DL862 WRITE ONE SECTOR
2  FORMAT DL862 ERROR(S) = *DECD
5  FORMAT DL862 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DL862 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 62D                      *MODULE NUMBER                          D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*IF DEF,PFMD,1
   MSG 1 TO PRINT,DISPLAY        *PRINT,DISPLAY MODULE TITLE
*IF DEF,SFMD,1
   MSG 1 TO PRINT                *PRINT MODULE TITLE
*IF DEF,LSFMD,1 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
   CALL 98A                      *VERIFY PARAMETERS, AL OK               D88
   B5 = P3.RS.6                  *SECTOR ADDRESS                         D88
   B6 = P2.RS.6                  *TRACK ADDRESS                          D88
   B7 = P0                       *CYLINDER ADDRESS                       D88
*IF DEF,PFMD,1
   WC = 500B                     *BUFFER WORD COUNT 
*IF DEF,SFMD,1
   WC = 502B                     *BUFFER WORD COUNT                      D88
*IF DEF,LSFMD,1 
   WC = 502B                     *BUFFER WORD COUNT 
*                                                                        D88
/--------DATA CONTROL.                                                   D88
*                                                                        D88
22 IF(P5.AND.10.EQ.0) GOTO 24                                            D88
   DUP P6 TO OB FOR WC                                                   D88
   GOTO 26                                                               D88
24 IF(P6.NE.0) RANDOM TO OB FOR WC, START P6                             D88
   IF(P6.EQ.0) RANDOM TO OB FOR WC, START RT                             D88
26 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO RM              D88
   B4 = 1                                                                D88
   B8 = 30B                                                              D88
   WRITE B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                      D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC                         D88
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT              D88
   GOTO 22                                                               D88
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   GOTO 77                       *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET                     D88
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE                     D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
76 B11 = B11+1                 *INCREMENT ERROR COUNT                    D88
   GOTO 40                                                               D88
77 END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH862 WRITE ONE SECTOR
*IF DEF,SFMD,1
COMPILE                      *D8862 WRITE ONE SECTOR                     D88
*IF DEF,LSFMD,1 
COMPILE                      *DL862 WRITE ONE SECTOR
*IF DEF,PFMD,4
   MODULE DH863,DEMA2(14),LOCK
***       DH863 - READ ONE SECTOR TEST
**        DH863 - READ ONE SECTOR TEST
*         DH863 - READ ONE SECTOR TEST
*IF DEF,SFMD,4
   MODULE D8863,FMDFT(7),LOCK                                            D88
***       D8863 - READ ONE SECTOR TEST                                   D88
**        D8863 - READ ONE SECTOR TEST                                   D88
*         D8863 - READ ONE SECTOR TEST                                   D88
*IF DEF,LSFMD,4 
   MODULE DL863,LSFMD2(16),LOCK 
***       DL863 - READ ONE SECTOR TEST
**        DL863 - READ ONE SECTOR TEST
*         DL863 - READ ONE SECTOR TEST
*         ----------------------------                                   D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH863 READS THE SECTOR SELECTED BY PARAMETERS P0, P2, AND P3. 
*IF DEF,SFMD,1
*         D8863 READS THE SECTOR SELECTED BY PARAMETERS P0, P2, AND P3.  D88PTR4
*IF DEF,LSFMD,1 
*         DL863 READS THE SECTOR SELECTED BY PARAMETERS P0, P2, AND P3. 
*                                                                        D88
*         METHOD -                                                       D88
*         1. CHECK THAT THE PARAMETER REGISTERS AND  THE  ACCESS  LEVEL  D88
*            ARE CORRECT.                                                D88
*IF DEF,PFMD,1
*         2. RESERVE THE CONTROLLER AND 885-4X DRIVE. 
*IF DEF,SFMD,1
*         2. RESERVE THE CONTROLLER AND 885-1X DRIVE. 
*IF DEF,LSFMD,1 
*         2. RESERVE THE CONTROLLER AND 885-1X DRIVE. 
*         3. SET READ MARGIN SELECTED.                                   D88
*IF DEF,PFMD,1
*         4. READ  ONE SECTOR AS SELECTED BY THE PARAMETERS P0, P2, AND 
*IF DEF,SFMD,1
*         4. READ  ONE SECTOR AS SELECTED BY THE PARAMETERS P0, P1, AND 
*IF DEF,LSFMD,1 
*         4. READ  ONE SECTOR AS SELECTED BY THE PARAMETERS P0, P1, AND  D88
*            P3.                                                         D88
*         5. REPEAT MODULE/CONDITION LOOPS ON STEPS 1-4.                 D88
*         6. SCOPE LOOP DISPLAYS SCOPE LOOP MESSAGE AND LOOPS ON  STEPS  D88
*            2-4.                                                        D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P2 CONTAINS THE TRACK NUMBER.                                  D88
*         P3 CONTAINS THE SECTOR NUMBER.                                 D88
*IF DEF,SFMD,2
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.               D88
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*IF DEF,LSFMD,2 
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.
*         P6 CONTAINS THE DATA CONTROL WORD.
*ENDIF
*IF DEF,PFMD,1
*         P7 CONTAINS READ MARGIN SELECTED
*IF DEF,SFMD,1
*                                                                        D88
*IF DEF,LSFMD,1 
* 
*         EXIT -                                                         D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,2
*         DH898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,SFMD,2
*         D8898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL.            D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*IF DEF,LSFMD,2 
*         DL898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B5  = SECTOR ADDRESS.                                          D88
*         B6  = TRACK ADDRESS.                                           D88
*         B7  = CYLINDER ADDRESS.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B9  = READ MARGIN CONDITION.                                   D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH863 READ ONE SECTOR TEST
2  FORMAT DH863 ERROR(S) = *DECD
5  FORMAT DH863 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DH863 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8863 READ ONE SECTOR TEST                                     D88
2  FORMAT D8863 ERROR(S) = *DECD                                         D88
5  FORMAT D8863 CYL=*OCTB T=*OB S=*OB                                    D88
7  FORMAT D8863 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,4 
1  FORMAT DL863 READ ONE SECTOR TEST
2  FORMAT DL863 ERROR(S) = *DECD
5  FORMAT DL863 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DL863 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 63D                      *MODULE NUMBER                          D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*IF DEF,PFMD,1
   MSG 1 TO PRINT,DISPLAY        *PRINT,DISPLAY MODULE TITLE
*IF DEF,SFMD,1
   MSG 1 TO PRINT                *PRINT MODULE TITLE
*IF DEF,LSFMD,1 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
22 B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
   CALL 98A                      *CHECK PARAMETERS, AL OK                D88
   B5 = P3.RS.6                  *SECTOR ADDRESS                         D88
   B6 = P2.RS.6                  *TRACK ADDRESS                          D88
   B7 = P0                       *CYLINDER ADDRESS                       D88
24 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM              D88
   B8 = 43B                                                              D88
   MARGINS B9, ABT 74                                                    D88
   B4 = 1                      *NUMBER OF SECTORS                        D88
   B8 = 23B                                                              D88
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                       D88
*                                                                        D88
/---------SET READ MARGINS.                                              D88
*                                                                        D88
   IF(P7.NE.77) GOTO 40          *NOT ALL MARGINS SELECTED               D88
   B9=B9+1                       *UPDATE MARGIN                          D88
   IF(B9.AND.3.NE.3) GOTO 24                                             D88
   B9=B9+5                       *CHANGE READ STROBE MARGIN              D88
   IF(B9.AND.30.NE.30) GOTO 24                                           D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC                         D88
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT              D88
   GOTO 24                                                               D88
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   GOTO 77                       *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET                     D88
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE                     D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
76 B11 = B11+1                 *INCREMENT ERROR COUNT                    D88
   GOTO 40                                                               D88
77 END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH863 READ ONE SECTOR 
*IF DEF,SFMD,1
COMPILE                      *D8863 READ ONE SECTOR                      D88
*IF DEF,LSFMD,1 
COMPILE                      *DL863 READ ONE SECTOR 
*IF DEF,PFMD,4
   MODULE DH864,DEMA2(14),LOCK
***       DH864 - WRITE/READ ONE SECTOR 
**        DH864 - WRITE/READ ONE SECTOR 
*         DH864 - WRITE/READ ONE SECTOR 
*IF DEF,SFMD,4
   MODULE D8864,FMDFT(7),LOCK                                            D88
***       D8864 - WRITE/READ ONE SECTOR                                  D88
**        D8864 - WRITE/READ ONE SECTOR                                  D88
*         D8864 - WRITE/READ ONE SECTOR                                  D88
*IF DEF,LSFMD,4 
   MODULE DL864,LSFMD2(16),LOCK 
***       DL864 - WRITE/READ ONE SECTOR 
**        DL864 - WRITE/READ ONE SECTOR 
*         DL864 - WRITE/READ ONE SECTOR 
*         -----------------------------                                  D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH864  WRITES AND READS ONE SECTOR AS SELECTED BY THE P0, P2, 
*IF DEF,SFMD,1
*         D8864  WRITES AND READS ONE SECTOR AS SELECTED BY THE P0, P2,  D88
*IF DEF,LSFMD,1 
*         DL864  WRITES AND READS ONE SECTOR AS SELECTED BY THE P0, P2, 
*         AND P3 PARAMETERS.                                             D88
*                                                                        D88
*         METHOD -                                                       D88
*         1. CHECK THAT THE PARAMETER REGISTERS AND THE ACCESS LEVEL IS  D88
*            CORRECT.                                                    D88
*IF DEF,PFMD,1
*         2. RESERVE THE CONTROLLER AND 885-4X DRIVE. 
*IF DEF,SFMD,1
*         2. RESERVE THE CONTROLLER AND 885-1X DRIVE. 
*IF DEF,LSFMD,1 
*         2. RESERVE THE CONTROLLER AND 885-1X DRIVE. 
*         3. SET READ MARGIN SELECTED.                                   D88
*         4. WRITE  AND  READ ONE SECTOR AS SELECTED BY THE P0, P2, AND  D88
*            P3 PARAMETERS.                                              D88
*         5. REPEAT MODULE/CONDITION LOOPS ON STEPS 3-4.                 D88
*         6. SCOPE LOOP DISPLAYS SCOPE LOOP MESSAGE AND LOOPS ON  STEPS  D88
*            3-4.                                                        D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P2 CONTAINS THE TRACK NUMBER.                                  D88
*         P3 CONTAINS THE SECTOR NUMBER.                                 D88
*         P5 CONTAINS THE DISABLES FOR PATTERN GENERATION.               D88
*         P6 CONTAINS THE DATA CONTROL WORD.                             D88
*                                                                        D88
*         EXIT -                                                         D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,2
*         DH898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,SFMD,2
*         D8898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL.            D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*IF DEF,LSFMD,2 
*         DL898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B5  = SECTOR ADDRESS.                                          D88
*         B6  = TRACK ADDRESS.                                           D88
*         B7  = CYLINDER ADDRESS.                                        D88
*         B9  = READ MARGIN CONDITION.                                   D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B11 = ERROR COUNTER.                                           D88
*         WC  = BUFFER WORD COUNT.                                       D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*         OUTPUT BUFFER HOLDS THE PATTERN WRITTEN IN THE SECTOR.         D88
*                                                                        D88
*IF DEF,PFMD,5
1  FORMAT DH864 WRITE/READ ONE SECTOR 
2  FORMAT DH864 ERROR(S) = *DECD
4  FORMAT DH864 E0020  L*OC     DATA COMPARE ERROR
5  FORMAT DH864 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DH864 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8864 WRITE/READ ONE SECTOR                                    D88
2  FORMAT D8864 ERROR(S) = *DECD                                         D88
4  FORMAT D8864 E0020  L*OC     DATA COMPARE ERROR                       D88
7  FORMAT D8864 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,4 
1  FORMAT DL864 WRITE/READ ONE SECTOR 
2  FORMAT DL864 ERROR(S) = *DECD
4  FORMAT DL864 E0020  L*OC     DATA COMPARE ERROR
7  FORMAT DL864 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 64D                      *MODULE NUMBER                          D88
   B11 = 0                       *CLEAR ERROR COUNT                      D88
*IF DEF,PFMD,1
   MSG 1 TO PRINT,DISPLAY        *PRINT,DISPLAY MODULE TITLE
*IF DEF,SFMD,1
   MSG 1 TO PRINT                *PRINT MODULE TITLE
*IF DEF,LSFMD,1 
   MSG 1 TO PRINT                *PRINT MODULE TITLE                     D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT             D88
   CALL 98A                      *CHECK PARAMETERS, AL OK                D88
   B5 = P3.RS.6                  *SECTOR ADDRESS                         D88
   B6 = P2.RS.6                  *TRACK ADDRESS                          D88
   B7 = P0                       *CYLINDER ADDRESS                       D88
*IF DEF,PFMD,1
   WC = 500B                     *BUFFER WORD COUNT 
*IF DEF,SFMD,1
   WC = 502B                     *READ BUFFER SIZE                       D88
*IF DEF,LSFMD,1 
   WC = 502B                     *READ BUFFER SIZE
*                                                                        D88
/--------DATA CONTROL                                                    D88
*                                                                        D88
22 IF(P5.AND.10.EQ.0) GOTO 24                                            D88
   DUP P6 TO OB FOR WC                                                   D88
   GOTO 26                                                               D88
24 IF(P6.NE.0) RANDOM TO OB FOR WC, START P6                             D88
   IF(P6.EQ.0) RANDOM TO OB FOR WC, START RT                             D88
26 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
*IF DEF,PFMD
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM 
*ENDIF
   B8 = 43B                                                              D88
   MARGINS B9, ABT 74            *SET READ MARGINS                       D88
*IF DEF,SFMD,1
   IF(ES.AND.CM.EQ.0) MSG 1 TO DISPLAY  *IF NO RM                        D88
*IF DEF,LSFMD,1 
   IF(ES.AND.CM.EQ.0) MSG 1 TO DISPLAY  *IF NO RM 
27 B4 = 1                        *NUMBER OF SECTORS                      D88
   B8 = 30B                                                              D88
   WRITE B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                      D88
   B4 = 1                                                                D88
   B8 = 23B                                                              D88
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                       D88
   B8 = 47B                                                              D88
   COMPARE IB(0) TO OB(0) FOR WC, ABT 70                                 D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC                         D88
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT              D88
   GOTO 22                                                               D88
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   GOTO 77                       *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS MODULE DETECTED ERRORS.                                D88
*                                                                        D88
70 IF(ES.AND.SL.NE.0) GOTO 72   *IF SCOPE LOOPING SET                    D88
   ERROR 02/01                                                           D88
   MSG 1 TO LINE 1              *DISPLAY MODULE TITLE                    D88
   MSG 4(EA) TO LINE 5          *DISPLAY LINE NO. OF ERROR               D88
   CALL 98C                     *CALL MODULE ERROR PROCESSOR
72 B11 = B11+1                  *INCREMENT ERROR COUNT                   D88
*IF DEF,PFMD,1
   WC = 500B                     *BUFFER WORD COUNT 
*IF DEF,SFMD,1
   WC = 502B                     *SET BUFFER WORD COUNT 
*IF DEF,LSFMD,1 
   WC = 502B                     *SET BUFFER WORD COUNT 
   GOTO 40                                                               D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET                     D88
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE                     D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
76 B11 = B11+1                 *INCREMENT ERROR COUNT                    D88
   GOTO 40                                                               D88
77 END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH864 WRITE/READ ONE SECTOR 
*IF DEF,SFMD,1
COMPILE                      *D8864 WRITE/READ ONE SECTOR                D88
*IF DEF,LSFMD,1 
COMPILE                      *DL864 WRITE/READ ONE SECTOR 
*IF DEF,PFMD,4
   MODULE DH865,DEMA2(14),LOCK
***       DH865 - TOGGLE PARAMETER TEST 
**        DH865 - TOGGLE PARAMETER TEST 
*         DH865 - TOGGLE PARAMETER TEST 
*IF DEF,SFMD,4
   MODULE D8865,FMDFT(7),LOCK                                            D88
***       D8865 - TOGGLE PARAMETER TEST                                  D88
**        D8865 - TOGGLE PARAMETER TEST                                  D88
*         D8865 - TOGGLE PARAMETER TEST                                  D88
*IF DEF,LSFMD,4 
   MODULE DL865,LSFMD2(16),LOCK 
***       DL865 - TOGGLE PARAMETER TEST 
**        DL865 - TOGGLE PARAMETER TEST 
*         DL865 - TOGGLE PARAMETER TEST 
*         -----------------------------                                  D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH865  TOGGLES BETWEEN THE UPPER AND LOWER ADDRESS BOUNDARIES 
*IF DEF,SFMD,1
*         D8865  TOGGLES BETWEEN THE UPPER AND LOWER ADDRESS BOUNDARIES  D88
*IF DEF,LSFMD,1 
*         DL865  TOGGLES BETWEEN THE UPPER AND LOWER ADDRESS BOUNDARIES 
*         BY PERFORMING A READ OF THE DATA ON THESE ADDRESSES.           D88
*                                                                        D88
*         METHOD -                                                       D88
*         1. CHECK THE VALIDITY OF THE INPUT PARAMETERS.                 D88
*         2. CHECK THAT ACCESS LEVEL MEETS THE CRITERIA  OF  THE  INPUT  D88PTR4
*            PARAMETERS.                                                 D88
*         3. RESERVE THE DRIVE AND TOGGLE BETWEEN THE  DESCRIBED  INPUT  D88
*            PARAMETERS.                                                 D88
*         4. REPEAT MODULE/CONDITION LOOPS ON STEPS 3.                   D88
*         5. SCOPE  LOOP DISPLAYS SCOPE LOOP MESSAGE TO THE DISPLAY AND  D88
*            LOOPS ON STEP 3.                                            D88
*                                                                        D88
/                                                                        D88
*         ENTRY -                                                        D88
*IF DEF,PFMD,2
*         AN 885-4X DRIVE IS REQUIRED.
*         THE 7155-401 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,SFMD,2
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*IF DEF,LSFMD,2 
*         AN 885-1X DRIVE IS REQUIRED.
*         THE 7155 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.                               D88
*         P0 CONTAINS THE STARTING CYLINDER NUMBER.                      D88
*         P1 CONTAINS THE LAST CYLINDER NUMBER.                          D88
*         P2 CONTAINS THE FIRST AND LAST TRACK NUMBERS.                  D88
*         P3 CONTAINS THE FIRST AND LAST SECTOR NUMBERS.                 D88
*                                                                        D88
*         EXIT -                                                         D88
*                                                                        D88
*         SUBMODULES REFERENCED -                                        D88
*IF DEF,PFMD,2
*         DH898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DH898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*IF DEF,SFMD,2
*         D8898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL.            D88
*         D8898C - ERROR PROCESSOR FOR COMMAND ABORT.                    D88
*IF DEF,LSFMD,2 
*         DL898A - CHECK ADDRESS PARAMETERS AND ACCESS LEVEL. 
*         DL898C - ERROR PROCESSOR FOR COMMAND ABORT. 
*                                                                        D88
*         REGISTERS USED -                                               D88
*         B0  = EXTERNAL LOOP COUNTER.                                   D88
*         B1  = MODULE NUMBER.                                           D88
*         B5  = SECTOR ADDRESS.                                          D88
*         B6  = TRACK ADDRESS.                                           D88
*         B7  = CYLINDER ADDRESS.                                        D88
*         B8  = COMMAND INDEX FOR COMMAND ABORTS.                        D88
*         B11 = ERROR COUNTER.                                           D88
*                                                                        D88
*         BUFFERS USED -                                                 D88
*                                                                        D88
*         REMARKS -                                                      D88
*                                                                        D88
*IF DEF,PFMD,4
1  FORMAT DH865 TOGGLE PARAMETER TEST 
2  FORMAT DH865 ERROR(S) = *DECD
5  FORMAT DH865 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DH865 EC=*DECD, LC=*DECD
*IF DEF,SFMD,4
1  FORMAT D8865 TOGGLE PARAMETER TEST                                    D88
2  FORMAT D8865 ERROR(S) = *DECD                                         D88
5  FORMAT D8865 CYL=*OCTB T=*OB S=*OB                                    D88
7  FORMAT D8865 EC=*DECD, LC=*DECD                                       D88
*IF DEF,LSFMD,4 
1  FORMAT DL865 TOGGLE PARAMETER TEST 
2  FORMAT DL865 ERROR(S) = *DECD
5  FORMAT DL865 CYL=*OCTB T=*OB S=*OB 
7  FORMAT DL865 EC=*DECD, LC=*DECD
*                                                                        D88
/---------MODULE INITIALIZATION.                                         D88
*                                                                        D88
20 B1 = 65D                      *MODULE NUMBER 
   B11 = 0                   *CLEAR ERROR COUNT                          D88
*IF DEF,PFMD,1
   MSG 1 TO PRINT,DISPLAY        *PRINT,DISPLAY MODULE TITLE
*IF DEF,SFMD,1
   MSG 1 TO PRINT            *PRINT MODULE TITLE
*IF DEF,LSFMD,1 
   MSG 1 TO PRINT            *PRINT MODULE TITLE                         D88
*                                                                        D88
/---------MODULE TEST.                                                   D88
*                                                                        D88
22 B0 = 0                    *INITIALIZE EXT. LOOP COUNT                 D88
   CALL 98A                  *CHECK PARAMETERS OK                        D88
24 B7 = P0                   *LOW CYLINDER                               D88
   B6 = P2.RS.6              *LOW TRACK                                  D88
   B5 = P3.RS.6              *LOW SECTOR                                 D88
26 B8 = 41B                                                              D88
   RES DRIVE, ABT 74                                                     D88
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM              D88
   B4 = 1                                                                D88
   B8 = 23B                                                              D88
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                       D88
   B7 = P1                   *HIGH CYLINDER                              D88
   B6 = P2.AND.77            *HIGH TRACK                                 D88
   B5 = P3.AND.77            *HIGH SECTOR                                D88
   IF(ES.AND.CM.EQ.0) MSG 5(B7,B6,B5) TO DISPLAY  *IF NO CM              D88
   B4 = 1                                                                D88
   B8 = 23B                                                              D88
   READ B4 SECTORS AT CYL B7 TRK B6 SEC B5, ABT 74                       D88
*                                                                        D88
/---------MODULE REPEAT/EXIT.                                            D88
*                                                                        D88
40 IF(ES.AND.CM.EQ.0) GOTO 50    *IF NO RM OR RC                         D88
   B0 = B0+1                     *INCREMENT EXT. LOOP COUNT              D88
   MSG 7(B11,B0) TO DISPLAY      *DISPLAY ERROR, LOOP COUNT              D88
   GOTO 24                                                               D88
50 IF(B11.EQ.0) GOTO 77          *IF NO ERRORS                           D88
   MSG 2 (B11) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT              D88
   GOTO 77                       *AND DAYFILE                            D88
*                                                                        D88
/---------PROCESS COMMAND ABORTS.                                        D88
*                                                                        D88
74 IF(ES.AND.SL.NE.0) GOTO 76  *IF SCOPE LOOPING SET                     D88
   MSG 1 TO LINE 1             *DISPLAY MODULE TITLE                     D88
   CALL 98C                    *CALL COMMAND ABORT PROCESSOR             D88
76 B11 = B11+1                 *INCREMENT ERROR COUNT                    D88
   GOTO 40                                                               D88
77 END 20                                                                D88
*IF DEF,PFMD,1
COMPILE                      *DH865 TOGGLE PARAMETER TEST 
*IF DEF,SFMD,1
COMPILE                      *D8865 TOGGLE PARAMETER TEST 
*IF DEF,LSFMD,1 
COMPILE                      *DL865 TOGGLE PARAMETER TEST 
*IF -DEF,CMSE17X
*IF DEF,PFMD
   MODULE DH896A,DEMA3(14),LOCK 
***       DH896A - PARAMETER VERIFICATION 
**        DH896A - PARAMETER VERIFICATION 
*         DH896A - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896A  CHECKS THE PARAMETER WORDS FOR THE CALLING MODULE  TO 
*         DETERMINE IF THERE ARE ANY ERRORS IN THE PARAMETER WORDS. THE 
*         MODULE WILL THEN EXIT TO MODULE DH896B TO ALLOW ANY ERRORS TO 
*         BE REPORTED.
* 
*         METHOD- 
*         1.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P0 IS 
*             NOT GREATER THAN 1512 OCTAL.
*         2.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P1 IS 
*             NOT GREATER THAN 1512 OCTAL.
*         3.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P0 IS 
*             EQUAL TO OR LESS THAN THE CYLINDER  NUMBER  IN  PARAMETER 
*             WORD P1.
*         4.  VERIFY THAT THE FIRST CYLINDER SELECTED IN  PARAMETER  P0 
*             IS NOT EQUAL TO 1511 OCTAL. 
*         5.  VERIFY THAT THE LAST CYLINDER SELECTED IN PARAMETER P1 IS 
*             NOT EQUAL TO 1511 OCTAL.
*         6.  VERIFY THAT THE LOWER TRACK NUMBER IN PARAMETER  WORD  P2 
*             IS NOT GREATER THAN 11 OCTAL. 
*         7.  VERIFY THAT THE UPPER TRACK NUMBER IN PARAMETER  WORD  P2 
*             IS NOT GREATER THAN 11 OCTAL. 
*         8.  VERIFY THAT THE LOWER TRACK NUMBER IN PARAMETER  WORD  P2 
*             IS  EQUAL  TO  OR  LESS  THAN  THE  UPPER TRACK NUMBER IN 
*             PARAMETER WORD P2.
*         9.  VERIFY  THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD P3 
*             IS NOT GREATER THAN 37 OCTAL. 
*         10. VERIFY  THAT THE UPPER SECTOR NUMBER IN PARAMETER WORD P3 
*             IS NOT GREATER THAN 37 OCTAL. 
*         11. VERIFY  THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD P3 
*             IS EQUAL TO OR LESS  THAN  THE  UPPER  SECTOR  NUMBER  IN 
*             PARAMETER WORD P3.
*         12. VERIFY THAT BOTH WRITE AND READ ARE NOT DISABLED  IN  THE 
*             P5 PARAMETER WORD.
*         13. IF WRITE IS NOT DISABLED, VERIFY THAT THE ACCESS LEVEL IS 
*             HIGH ENOUGH TO WRITE THE CYLINDERS SELECTED.
*         14. IF WRITE IS DISABLED AND READ IS ENABLED, VERIFY THAT THE 
*             ACCESS  LEVEL IS HIGH ENOUGH TO READ ALL OF THE CYLINDERS 
*             SELECTED. 
*         15. EXIT TO MODULE DH896B.
* 
/ 
*         ENTRY-
*         PARAMETER WORDS P0 THROUGH P9 CONTAIN THE PARAMETERS SELECTED 
*         BY THE OPERATOR AS DESCRIBED IN MODULE DH899A.
*         AL REGISTER CONTAINS THE ACCESS LEVEL AS DEFINED IN THE 
*           ASSIGN STATEMENT. 
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL. 
* 
*         EXIT- 
*         EXIT IS ALWAYS TO MODULE DH896B WITH THE REGISTERS SET AS 
*           FOLLOWS-
*         B12 CONTAINS THE NEXT LINE NUMBER TO PLACE THE NEXT MESSAGE.
* 
*         SUBMODULES REFERENCED-
*         DH896B - VALIDATE PARAMETERS. 
* 
*         REGISTERS USED- 
*         B10 = TEMPORARY STORAGE.
*         B12 = DISPLAY BUFFER LINE NUMBER. 
*         B13 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
1  FORMAT DH896A - CHECK PARAMETERS 
2  FORMAT CHECK P0 - LOWER CYLINDER NUMBER TOO LARGE
3  FORMAT CHECK P1 - UPPER CYLINDER NUMBER TOO LARGE
4  FORMAT CHECK P0, P1 - P0 GREATER THAN P1 
5  FORMAT CHECK P0, P1 - CYLINDER 1511 CANNOT BE TESTED 
6  FORMAT CHECK P2 - LOWER TRACK NUMBER TOO LARGE 
7  FORMAT CHECK P2 - UPPER TRACK NUMBER TOO LARGE 
10 FORMAT CHECK P2 - LOWER TRACK GREATER THAN UPPER TRACK 
11 FORMAT CHECK P3 - LOWER SECTOR NUMBER TOO LARGE
12 FORMAT CHECK P3 - UPPER SECTOR NUMBER TOO LARGE
13 FORMAT CHECK P3 - LOWER SECTOR GREATER THAN UPPER SECTOR 
14 FORMAT CHECK P5 - WRITE AND READ BOTH DISABLED 
16 FORMAT DH8*D NEEDS ACCESS LEVEL *O, ACTUAL =*O 
* 
/---------EQUATES FOR PARAMETER VALUES. 
* 
   EQUATE MAXCYL=1512, MAXSEC=37, MAXTRK=11 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 1 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B12=12                    *FIRST LINE OF ERROR DISPLAY 
* 
/---------CHECK LOWER CYLINDER PARAMETER WORD.
* 
   B13=2                     *MESSAGE FORMAT NUMBER 
   IF(P0.GT.MAXCYL)GOSUB 76  *UPPER CYLINDER TOO LARGE
* 
/---------CHECK UPPER CYLINDER PARAMETER WORD.
* 
   B13=3                     *MESSAGE FORMAT NUMBER 
   IF(P1.GT.MAXCYL)GOSUB 76  *UPPER CYLINDER TOO LARGE
* 
/---------CHECK IF LOWER CYLINDER NUMBER LARGER THAN THE
/         UPPER CYLINDER NUMBER.
* 
   B13=4                     *MESSAGE FORMAT NUMBER 
   IF(P0.GT.P1) GOSUB 76     *IF CONFLICT IN CYL. NUMBERS 
* 
/---------CHECK FOR CYLINDER 1511 THE FIRST OR LAST CYLINDER
/---------SECLECTED TO BE TESTED. 
* 
   B13=5                     *MESSAGE FORMAT NUMBER 
   IF(P0.EQ.1511) GOSUB 76   *IF STARTING CYLINDER IS 1511
   GOTO 40
   IF(P1.EQ.1511) GOSUB 76   *IF LAST CYLINDER IS 1511
* 
/---------CHECK LOWER TRACK NUMBER IN PARAMETER WORD 2. 
* 
40 B13=6                     *MESSAGE FORMAT NUMBER 
   B2=P2 RS 6                *GET LOWER TRACK NUMBER
   IF(B2.GT.MAXTRK)GOSUB 76  *IF LOWER TRACK TOO LARGE
* 
/---------CHECK UPPER TRACK NUMBER IN PARAMETER WORD 2. 
* 
   B13=7                     *MESSAGE FORMAT NUMBER 
   B10=P2 AND 77             *GET UPPER TRACK NUMBER
   IF(B10.GT.MAXTRK)GOSUB 76  *IF UPPER TRACK TOO LARGE 
* 
/---------CHECK IF LOWER TRACK LARGER THAN UPPER TRACK. 
* 
   B13=10                    *MESSAGE FORMAT NUMBER 
   IF(B2.GT.B10) GOSUB 76    *IF CONFILICT IN TRACK NUMBERS 
* 
/---------CHECK LOWER SECTOR NUMBER IN PARAMETER WORD 3.
* 
   B13=11                    *MESSAGE FORMAT NUMBER 
   B2=P3 RS 6                *GET LOWER SECTOR NUMBER 
   IF(B2.GT.MAXSEC)GOSUB 76  *IF LOWER SECTOR TO0 LARGE 
* 
/---------CHECK UPPER SECTOR NUMBER IN PARAMETER WORD 3.
* 
   B13=12                    *MESSAGE FORMAT NUMBER 
   B10=P3 AND 77             *GET UPPER SECTOR NUMBER 
   IF(B10.GT.MAXSEC)GOSUB 76  *IF UPPER SECTOR TOO LARGE
* 
/---------CHECK IF LOWER SECTOR LARGER THAN UPPER SECTOR. 
* 
   B13=13                    *MESSAGE FORMAT NUMBER 
   IF(B2.GT.B10) GOSUB 76    *IF CONFLICT IN SECTOR NO. 
* 
/---------CHECK P5 FOR BOTH WRITE AND READ DISABLED.
* 
   IF(P5.AND.4.EQ.0)GOTO 50  *IF WRITE NOT DISABLED 
   IF(P5.AND.2.EQ.0)GOTO 52  *IF READ NOT DISABLED
   B13=14                    *MESSAGE FORMAT NUMBER 
   GOSUB 76                  *MOVE MESSAGE TO THE DISPLAY 
   GOTO 62                   *GO TO EXIT
* 
/---------DETERMINE THE ACCESS LEVEL FOR WRITING THE FMD. 
* 
50 B2=4                      *ACCESS LEVEL TO WRITE ANYWHERE
   IF(P0.GE.MAXCYL) B2=3     *ACCESS LEVEL FOR CYL. 1512
   GOTO 60                   *GO TO CHECK THE ACCESS LEVEL
* 
/---------DETERMINE THE ACCESS LEVEL FOR READING THE FMD. 
* 
52 B2=4                      *ACCESS LEVEL TO READ ANYWHERE 
   IF(P0.GE.MAXCYL) B2=1     *IF CYLINDER 1512 ONLY 
* 
/---------CHECK FOR THE ACCESS LEVEL TOO LOW. 
* 
60 B10=5                     *PARAMETER ENTRY ERROR MESSAGE 
   IF(AL.GE.B2) GOTO 62      *IF ACCESS LEVEL HIGH ENOUGH 
   MSG 16 (B1,B2,AL) TO LINE B12  *MOVE ERROR MESSAGE 
   IF(B12.EQ.12) B10=6       *ACCESS LEVEL ERROR MESSAGE
   B12=B12+1                 *INCREMENT LINE NUMBER 
62 EXIT TO 96B               *EXIT THE MODULE 
* 
/---------SUBROUTINE TO INSERT A MESSAGE IN THE DISPLAY.
* 
76 MSG B13 TO LINE B12       *MOVE ERROR MESSAGE TO DISPLAY 
   B12=B12+1                 *INCREMENT LINE NUMBER 
   RETURN                    *EXIT THE SUBROUTINE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896A VALIDATE PARAMETERS
   MODULE DH896B,DEMA3(14),LOCK 
***       DH896B - PARAMETER VERIFICATION 
**        DH896B - PARAMETER VERIFICATION 
*         DH896B - PARAMETER VERIFICATION 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896B  CHECKS  TO  DETERMINE  IF  ANY  PARAMETER ERRORS WERE 
*         DETECTED BY MODULE DH896A AND IF THERE WERE ERRORS  DETECTED, 
*         REPORTS  THE  ERROR. IF NO ERRORS ARE DETECTED, THE REGISTERS 
*         AND THE OUTPUT BUFFER WILL BE INITIALIZED ANE RETURN MADE  TO 
*         THE CALLING MODULE. 
* 
*         METHOD- 
*         1.  IF THE B12 REGISTER  DOES  NOT  CONTAIN  THE  FIRST  LINE 
*             NUMBER OF THE ERROR DISPLAY, GO TO STEP 6.
*         2.  SET THE BA REGISTER TO 4  AND  THE  WC  REGISTER  TO  504 
*             OCTAL.
*         3.  DETERMINE THE NUMBER OF SECTORS TO BE WRITTEN AND OR READ 
*             FROM  PARAMETER  WORD  P3  AND PLACE THE NUMBER IN THE B2 
*             REGISTER. 
*         4.  IF BIT  3 IS SET IN PARAMETER WORD P5, DUPLICATE THE WORD 
*             IN PARAMETER WORD P6 IN THE ENTIRE OUTPUT BUFFER. 
*         5.  EXIT THE MODULE AND RETURN TO THE PRIMARY CALLING MODULE. 
*         6.  DISPLAY ANY PARAMETER ERRORS DETECTED.
*         7.  IF  BIT  3 IS SET IN PARAMETER WORD P5, DUPICATE THE WORD 
*             IN PARAMETER WORD P6 IN THE ENTIRE OUTPUT BUFFER. 
*         8.  EXIT THE MODULE AND RETURN TO THE PRIMARY CALLING MODULE. 
*         9.  POST A MESSAGE IN THE DAYFILE, PRINT  FILE,  AND  ON  THE 
*             DISPLAY  SCREEN  INDICATING THAT EXECUTION OF THE PRIMARY 
*             CALLING MODULE WILL BE ABORTED AND  THE  REASON  FOR  THE 
*             ABORT.
*         10. TERMINATE EXECUTION OF THE PRIMARY CALLING MODULE.
* 
/ 
*         ENTRY-
*         B1 CONTAINS THE OCTAL NUMBER OF THE PRIMARY CALLING MODULE. 
*         B12 REGISTER CONTAINS THE NEXT DISPLAY LINE NUMBER. 
*         B10 REGISTER CONTAINS THE NUMBER OF THE FORMAT STATEMENT
*           FOR THE ERROR MESSAGE TO BE DISPLAYED IF A PARAMETER OR 
*           ACCESS LEVEL ERROR WAS DETECTED.
* 
*         EXIT- 
*         TERMINATE EXECUTION OF THE CALLING MODULE IF A PARAMETER
*           ERROR IS DETECTED OR THE ACCESS LEVEL IS TOO LOW. 
*         RETURN TO THE CALLING MODULE IF NO PARAMETER ERROR IS 
*           DETECTED AND THE ACCESS LEVEL IS OK WITH THE REGISTERS
*           SET AS FOLLOWS- 
*         B2 CONTAINS THE NUMBER OF SECTORS TO PROCESS. 
*         WC REGISTER CONTAINS 504 OCTAL. 
*         BA REGISTER CONTAINS 4 OCTAL. 
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         B2  = TEMPORARY STORAGE.
*         B10 = TEMPORARY STORAGE.
*         B12 = DISPLAY BUFFER LINE NUMBER. 
* 
*         BUFFERS USED- 
*         OB(4-501) - DATA PATTERN WORD IN P6 IF BIT 3 IS SET IN
*                     PARAMETER WORD P5.
* 
1  FORMAT DH896B - CHECK PARAMETERS 
2  FORMAT DH8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
3  FORMAT DH8*D MODULE ABORTED - ACCESS LEVEL TOO LOW 
4  FORMAT DH8 - FMD CONFIDENCE TEST 
5  FORMAT DH8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
6  FORMAT DH8*D NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
7  FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
10 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
11 FORMAT PARAMETERS DESCRIBED IN MODULE DH899
12 FORMAT --------------------------------------------------
* 
/---------DETERMINE IF ANY PARAMETER ERRORS WERE DETECTED.
* 
30 IF(B12.NE.12) GOTO 40     *NO PARAMETER ERRORS DETECTED
* 
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO. 
* 
   B2=P3.RS.6                *FIRST SECTOR NUMBER 
   B2=P3.AND.77-B2
   B2=B2+1                   *NUMBER OF SECTORS TO DO 
   BA = 0                    *INITIALIZE BASE ADDRESS REG.
   WC=504                    *INITIALIZE WORD COUNT REGISTER
   IF(P5.AND.10.EQ.0)EXIT    *IF NO SET DATA PATTERN
* 
/---------THE OUTPUT BUFFER WITH THE DATA PATTERN IN P6.
* 
   DUP P6 TO OB FOR WC       *GENERATE SET DATA PATTERN 
   EXIT                      *EXIT THE MODULE 
* 
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.
* 
40 IF(ES.AND.TM.NE.0)GOTO 42  *IF TERMINAL MODE SELECTED
   MSG 4 TO LINE 0           *TEST TITLE MESSAGE
   MSG 1 TO LINE 1           *MODULE NAME TO ERROR DISPLAY
42 MSG B10 (B1) TO LINE 5    *ERROR MESSAGE TO DISPLAY
   MSG 7 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS
   MSG 10 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS
   MSG 11 TO LINE B12        *MODULE INFORMATION LINE 
   PICTURE
   HALT                      *REPORT ERROR AND WAIT FOR GO
   MSG 12 TO PRINT
   BLANK
* 
/---------DETERMINE THE MESSAGE TO POST FOR THE ERRORS
/---------DETECTED AND POST THE MESSAGE IN THE DAYFILE, 
/---------PRINT FILE, AND ON THE DISPLAY SCREEN.
* 
   B2=2                      *PARAMETERS ERROR MESSAGE
   IF(B10.EQ.6) B2=3         *ACCESS LEVEL ERROR MESSAGE
   MSG B2 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG. 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896B VALIDATE PARAMETERS
   MODULE DH896C,DEMA3(14),LOCK 
***       DH896C - COMMAND ABORT PROCESSOR
**        DH896C - COMMAND ABORT PROCESSOR
*         DH896C - COMMAND ABORT PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         DISPLAY  THE  COMMAND THAT  THE  ABORT TO OCCURRED ON AND THE 
*         ERROR MESSAGE GENERATED BY THE PRODUCT OVERLAY AT THE TIME OF 
*         THE ABORT.
* 
*         METHOD- 
*         1.  IF THE B8 REGISTER CONTAINS ZERO, GO TO STEP 3. 
*         2.  POST  THE  FORMAT  MESSAGE  NUMBER  CONTAINED  IN  THE B8 
*             REGISTER. 
*         3.  IF  THE  ERROR  CODE IN THE EC REGISTER IS LESS THAN 4000 
*             OCTAL, EXIT THE MODULE. 
*         4.  POST THE ERROR MESSAGE CONTAINED IN THE EM REGISTER.
* 
/ 
*         ENTRY-
*         EC AND EM REGISTERS CONTAIN THE ERROR CODE AND ERROR
*           MESSAGE IF GENERATED BY THE PRODUCT OVERLAY ON AN ABORT.
*         B8 REGISTER CONTAINS THE NUMBER FOR THE MALET I/O COMMAND 
*           BEING EXECUTED AT THE TIME OF THE ABORT.
* 
*         EXIT- 
*         LINE 4 OF THE DISPLAY CONTAINS THE MESSAGE INDICATING THE I/O 
*           COMMAND BEING EXECUTED BY THE DRIVER AND LINE 5 CONTAINS
*IF -DEF,CMSE17X,1
*           THE ERROR MESSAGE IF THE ERROR CODE WAS GENERATED BY MALET. 
*IF DEF,CMSE17X,1 
*           THE ERROR MESSAGE IF THE ERROR CODE WAS GENERATED BY DEMOT. 
*         EXIT WILL ALWAYS BE TO MODULE DH896D. 
* 
*         SUBMODULES REFERENECED- 
*         DH896D - PROCESS THE LAST FUNCTION CODE SENT TO THE 7155
*                  CONTROLLER.
* 
*         REGISTERS USED- 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B12 = TEMPORARY STORAGE.
*         B13 = TEMPORARY STORAGE.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
*         EC  = DRIVER ERROR CODE 
*         EM  = ERROR MESSAGE ADDRESS 
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR MALET I/O COMMANDS USED BY DH8.
* 
1  FORMAT DH8 ABORT ON .*A*A*A ESM. COMMAND 
4  FORMAT DH8 ABORT ON .STATUS *A*A*A*A COMMAND 
5  FORMAT DH8 ABORT ON .STATUS DETAIL. COMMAND
10 FORMAT DH8 ABORT ON .*A*A*A. COMMAND 
12 FORMAT DH8 ABORT ON .VERIFY CODED. COMMAND 
14 FORMAT DH8 ABORT ON .VERIFY FROM ESM C. COMMAND
20 FORMAT DH8 ABORT ON .GET SERIAL. COMMAND 
21 FORMAT DH8 ABORT ON .GET FACTORY. COMMAND
22 FORMAT DH8 ABORT ON .GET UTILITY. COMMAND
23 FORMAT DH8 ABORT ON .READ. COMMAND 
24 FORMAT DH8 ABORT ON .READ CODED. COMMAND 
26 FORMAT DH8 ABORT ON .SHORTRD. COMMAND
30 FORMAT DH8 ABORT ON .WRITE. COMMAND
31 FORMAT DH8 ABORT ON .WRITE CODED. COMMAND
32 FORMAT DH8 ABORT ON .WRITE FROM ESM. COMMAND 
33 FORMAT DH8 ABORT ON .WRITE FROM ESM CODED. COMMAND 
34 FORMAT DH8 ABORT ON .READ TO ESM. COMMAND
35 FORMAT DH8 ABORT ON .READ TO ESM CODED. COMMAND
40 FORMAT DH8 ABORT ON .RES CONTROLLER. COMMAND 
41 FORMAT DH8 ABORT ON .RES DRIVE. COMMAND
42 FORMAT DH8 ABORT ON .RESET. COMMAND
44 FORMAT DH8 ABORT ON .SEEK. COMMAND 
46 FORMAT DH8 ABORT ON .*A*A COMMAND
47 FORMAT DH8 ABORT ON .COMPARE. COMMAND
* 
/---------PROCESS LAST I/O MALET COMMAND EXECUTED.
* 
60 IF(B8.EQ.0) GOTO 76       *IF NOT COMMAND NUMBER 
   B12=705                   *GENERAL. IN DISPLAY CODE
   B13=1605 
   B14=2201 
   B15=1457 
   IF(B8.EQ.4) GOTO 73       *IF STATUS GENERAL COMMAND 
   B12=0411                  *DIAGRD IN DISPLAY CODE
   B13=0107 
   B14=2204 
   IF(B8.EQ.1) GOTO 72       *IF DIAGRD COMMAND 
   IF(B8.EQ.15) GOTO 70      *IF DIAGRD ESM COMMAND 
   B14=2722                  *DIAGWR IN DISPLAY CODE
   IF(B8.EQ.10) GOTO 72      *IF DIAGWR COMMAND 
   IF(B8.EQ.7) GOTO 70       *IF DIAGWR ESM COMMAND 
   B12=310                   *CHANNEL. IN DISPLAY CODE
   B13=116
   B14=1605 
   B15=1457 
   IF(B8.EQ.6) GOTO 73       *IF CHANNEL STATUS COMMAND 
   B12=2331                  *SYSRD IN DISPLAY CODE 
   B13=2322 
   B14=0455 
   IF(B8.EQ.17) GOTO 70      *IF SYSRD ESM COMMAND
   B12=2605                  *VERIFY IN DISPLAY CODE
   B13=2211 
   B14=631
   IF(B8.EQ.11) GOTO 72      *IF VERIFY COMMAND 
   B12=2205                  *REL. IN DISPLAY CODE
   B13=1457 
   IF(B8.EQ.46) GOTO 71      *IF REL COMMAND
   B12=1725                  *OUT. IN DISPLAY CODE
   B13=2457 
   IF(B8.NE.50) GOTO 74      *IF NOT OUT COMMAND
   GOTO 71
70 MSG 1 (B12,B13,B14) TO LINE 4  *ABORT MESSAGE
   GOTO 75
71 MSG 46 (B12,B13) TO LINE 4  *ABORT MESSAGE 
   GOTO 75
72 MSG 10 (B12,B13,B14) TO LINE 4  *ABORT MESSAGE 
   GOTO 75
73 MSG 4(B12,B13,B14,B15) TO LINE 4  *ABORT MESSAGE 
   GOTO 75
74 MSG B8 TO LINE 4          *ABORT MESSAGE 
75 IF(EC.LT.4000) GOTO 76    *IF NOT AN ABORT ERROR CODE
   MSG EM TO LINE 5          *PRODUCT OVERLAY ERROR MESSAGE 
76 IF(B1.EQ.14D) EXIT TO 96F  *IF DH814, SKIP LF-DISPLAY
   EXIT TO 96D               *EXIT TO NEXT SUBMODULE
   END 60                    *END OF THE MODULE 
COMPILE                      *DH896C COMMAND ABORT PROCESSOR
   MODULE DH896D,DEMA3(14),LOCK 
***       DH896D - LAST FUNCTION PROCESSOR
**        DH896D - LAST FUNCTION PROCESSOR
*         DH896D - LAST FUNCTION PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         DISPLAY  THE  LAST  MAJOR  FUNCTION  CODE  ISSUED TO THE 7155 
*         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 AS DEFINED  BY 
*             THE B13 REGISTER, GO TO STEP 5. 
*         4.  IF DETAILED STATUS WORD THREE IS NOT EQUAL TO 7777 OCTAL, 
*             GO TO STEP 6. 
*         5.  SET THE B13 REGISTER EQUAL TO THE LF REGISTER AND  GO  TO 
*             STEP 7. 
*         6.  SET THE B13 REGISTER  EQUAL  TO  BITS  4-11  OF  DETAILED 
*             STATUS  WORD  3  IN  THE STATUS BUFFER DEFINED BY THE B13 
*             REGISTER. 
*         7.  IF  THE  FUNCTION CODE IN THE B13 REGISTER IS 0, OR 1, OR 
*             2, OR 3, OR 4, OR 5, OR 6, OR 7, OR 10, OR 12, OR 14,  OR 
*             20,  OR  21, OR 23, OR 30, OR 31, OR 32, OR 33, OR 34, OR 
*             35, OR 36, OR 37, POST THE MESSAGE  INDICATING  THE  LAST 
*             FUNCTION SENT TO THE 7155 CONTROLLER. 
*         8.  IF THE FUNCTION CODE IN THE B13 REGISTER IS  NOT  ONE  OF 
*             THOSE LISTED IN STEP 7, EXIT TO MODULE DH896E.
* 
/ 
*         ENTRY-
*         LF REGISTER CONTAINS THE LAST FUNCTION SENT TO THE 7155 
*           CONTROLLER. 
*         STATUS BUFFER CONTAINS STATUS INFORMATION.
* 
*         EXIT- 
*         IF THE FUNCTION CODE SENT TO THE 7155 CONTROLLER WAS A CODE 
*           FROM 0 THROUGH 30, DISPLAY LINE 6 CONTAINS A MESSAGE
*           INDICATING THE LAST FUNCTION SENT TO THE 7155 CONTROLLER
*           AND EXIT IS ALWAYS TO MODULE DH896F.
*         IF THE FUNCTION CODE WAS GREATER THAN 37, EXIT TO MODULE
*           DH896E. 
* 
*         SUBMODULES REFERENCED-
*         DH896E - LAST FUNCTION PROCESSOR. 
*         DH896F - DISPLAY STATUS INFORMATION.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
*         LF  = LAST FUNCTION ISSUED. 
* 
*         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)
2  FORMAT LAST FUNCTION = 002B (SEEK 2 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) 
12 FORMAT LAST FUNCTION = 012B (GENERAL STATUS) 
14 FORMAT LAST FUNCTION = 014B (CONTINUE) 
20 FORMAT LAST FUNCTION = 020B (DRIVE RELEASE)
21 FORMAT LAST FUNCTION = 021B (RETURN CYLINDER ADDRESS)
23 FORMAT LAST FUNCTION = 023B (20-WORD DETAILED STATUS)
30 FORMAT LAST FUNCTION = 030B (READ FACTORY DATA)
31 FORMAT LAST FUNCTION = 031B (READ UTILITY MAP) 
32 FORMAT LAST FUNCTION = 032B (BLOCK TRANSFER BUFFER READ) 
33 FORMAT LAST FUNCTION = 033B (BLOCK TRANSFER BUFFER WRITE)
34 FORMAT LAST FUNCTION = 034B (READ PROTECTED SECTOR)
35 FORMAT LAST FUNCTION = 035B (WRITE LAST SECTOR)
36 FORMAT LAST FUNCTION = 036B (WRITE VERIFY LAST SECTOR) 
37 FORMAT LAST FUNCTION = 037B (WRITE PROTECTED SECTOR) 
* 
/---------DETERMINE THE FUNCTION ISSUED CAUSING THE ERROR.
* 
70 B13=0                           *BUFFER INDEX IF NO RETRY
   IF(SB(52).NE.0) B13=25          *BUFFER INDEX ON RETRY 
   IF(SB.EQ.7777) GOTO 71          *IF NO GENERAL STATUS
   IF(SB(B13).AND.4000.EQ.0)GOTO 71  *IF NO DETAILED STATUS 
   IF(SB(B13+3).NE.7777)GOTO 72      *IF VALID DETAIL STATUS
71 B13 = LF                        *USE LF REGISTER AS INDEX
   GOTO 73
72 B13 = SB(B13+3).RS.4      *LAST FUNCTION FROM CONTROLWARE
* 
/---------CHECK FOR A KNOWN FUNCTION CODE.
* 
73 IF(B13.LT.11) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.12) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.14) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.20) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.21) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.23) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.LT.30) EXIT TO 96E  *EXIT TO NEXT MODULE
   IF(B13.GT.37) EXIT TO 96E  *EXIT TO NEXT MODULE
* 
/---------POST THE MESSAGE FOR THE LAST FUNCTION. 
* 
74 MSG B13 TO LINE 6         *POST LAST FUNCTION MESSAGE
   EXIT TO 96F               *EXIT TO THE NEXT MODULE 
   END 70                    *END OF THE MODULE 
COMPILE                      *DH896D LAST FUNCTION PROCESSOR
   MODULE DH896E,DEMA3(14),LOCK 
***       DH896E - LAST FUNCTION PROCESSOR
**        DH896E - LAST FUNCTION PROCESSOR
*         DH896E - LAST FUNCTION PROCESSOR
*         --------------------------------
* 
*         PURPOSE-
*         DISPLAY  THE  LAST  MAJOR  FUNCTION  CODE  ISSUED TO THE 7155 
*         CONTROLLER PRIOR TO THE CURRENT FAILURE.
* 
*         METHOD- 
*         1.  IF THE FUNCTION CODE IN THE B13 REGISTER IS 40, OR 41, OR 
*             43, OR 46, OR 47, OR 56, OR 64, OR 414, POST THE  MESSAGE 
*             INDICATING  THE  FUNCTION  SENT  TO  THE 7155 CONTROLLER. 
*         2.  IF  THE  FUNCTION  CODE IN THE B13 REGISTER IS NOT ONE OF 
*             THOSE LISTED IN STEP 7, POST  A  MESSAGE  INDICATING  THE 
*             FUNCTION CODE SENT TO THE 7155 CONTROLLER.
* 
/ 
*         ENTRY-
*         B13 REGISTER CONTAINS THE LAST FUNCTION SENT TO THE 7155
*           CONTROLLER. 
* 
*         EXIT- 
*         DISPLAY LINE 6 CONTAINS A MESSAGE INDICATING THE LAST 
*           FUNCTION SENT TO THE 7155 CONTROLLER. 
*         EXIT IS ALWAYS TO MODULE DH896F.
* 
*         SUBMODULES REFERENCED-
*         DH896F - DISPLAY STATUS INFORMATION.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
/---------MESSAGES FOR THE FUNCTIONS 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)
4  FORMAT LAST FUNCTION = 044B (BUFFER WRITE) 
6  FORMAT LAST FUNCTION = 046B (WRITE BUFFER TO DISK) 
7  FORMAT LAST FUNCTION = 047B (SCAN CYLINDER ADDRESSES)
10 FORMAT LAST FUNCTION = 050B (OUTPUT ON PROCESSOR CHANNEL)
12 FORMAT LAST FUNCTION = 052B (INPUT PROCESSOR CH. STATUS) 
16 FORMAT LAST FUNCTION = 056B (INPUT TIMING DATA)
24 FORMAT LAST FUNCTION = 064B (TIME DIFFERENCE COUNTER)
26 FORMAT LAST FUNCTION = 066B (EXTENDED GENERAL STATUS)
30 FORMAT LAST FUNCTION = 070B (LRG SEC. BUFFER TO PP READ) 
31 FORMAT LAST FUNCTION = 071B (LRG SEC. PP TO BUFFER WRITE)
32 FORMAT LAST FUNCTION = 072B (LRG SEC. ESM TO BUFFER READ)
33 FORMAT LAST FUNCTION = 073B (LRG SEC. BUF. TO ESM WRITE) 
41 FORMAT LAST FUNCTION = 414B (AUTOLOAD FROM PP) 
51 FORMAT LAST FUNCTION = 5004B (READ STATUS BITS)
52 FORMAT LAST FUNCTION = 5010B (PORT MASTER CLEAR) 
53 FORMAT LAST FUNCTION = 5021B (MAINTENANCE MODE READ) 
54 FORMAT LAST FUNCTION = 5022B (MAINTENANCE MODE WRITE)
67 FORMAT LAST FUNCTION = *OCTB 
* 
/---------CHECK FOR A KNOWN FUNCTION CODE.
* 
70 B14 = 7777B
   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.44) B14 = 4     *IF KNOWN FUNCTION 
   IF(B13.EQ.46) B14 = 6     *IF KNOWN FUNCTION 
   IF(B13.EQ.47) B14 = 7     *IF KNOWN FUNCTION 
   IF(B13.EQ.50) B14 = 10    *IF KNOWN FUNCTION 
   IF(B13.EQ.52) B14 = 12    *IF KNOWN FUNCTION 
   IF(B13.EQ.56) B14 = 16    *IF KNOWN FUNCTION 
   IF(B13.EQ.64) B14 = 24    *IF KNOWN FUNCTION 
   IF(B13.EQ.66) B14 = 26    *IF KNOWN FUNCTION 
   IF(B13.EQ.70) B14 = 30    *IF KNOWN FUNCTION 
   IF(B13.EQ.71) B14 = 31    *IF KNOWN FUNCTION 
   IF(B13.EQ.72) B14 = 32    *IF KNOWN FUNCTION 
   IF(B13.EQ.73) B14 = 33    *IF KNOWN FUNCTION 
   IF(B13.EQ.414) B14 = 41   *IF KNOWN FUNCTION 
   IF(B13.EQ.5004) B14 = 51  *IF KNOWN FUNCTION 
   IF(B13.EQ.5010) B14 = 52  *IF KNOWN FUNCTION 
   IF(B13.EQ.5021) B14 = 53  *IF KNOWN FUNCTION 
   IF(B13.EQ.5022) B14 = 54  *IF KNOWN FUNCTION 
   IF(B14.EQ.7777) GOTO 75   *IF UNKNOWN FUNCTION 
* 
/---------POST THE MESSAGE FOR THE LAST FUNCTION. 
* 
74 MSG B14 TO LINE 6         *POST LAST FUNCTION MESSAGE
   EXIT TO 96F               *EXIT TO THE NEXT MODULE 
75 MSG 67 (B13) TO LINE 6    *POST UNKNOWN FUNCTION MESSAGE 
   EXIT TO 96F               *EXIT TO THE NEXT MODULE 
   END 70                    *END OF THE MODULE 
COMPILE                      *DH896E LAST FUNCTION PROCESSOR
   MODULE DH896F,DEMA3(14),LOCK 
***       DH896F - STATUS DISPLAY 
**        DH896F - STATUS DISPLAY 
*         DH896F - STATUS DISPLAY 
*         ----------------------- 
* 
*         PURPOSE-
*         DISPLAY  THE  VARIOUS  STATUSES  AND OTHER USEFUL INFORMATION 
*         RELATED TO THE CURRENT FAILURE. 
* 
*         METHOD- 
*         1.  POST  FORMAT  MESSAGE  1 TO LINE 7 (WT, RETRIES, MARGINS, 
*             AND ERRORS).
*         2.  IF THE B8 REGISTER CONTAINS 40 (RES,CONTROLLER  COMMAND), 
*             GO TO STEP 8. 
*         3.  IF THE B8 REGISTER CONTAINS 41 (RES,DRIVE COMMAND), GO TO 
*             STEP 8. 
*         4.  GO  TO  STEP 10 IF THE CYLINDER IDENTIFIED BY REGISTER B7 
*             IS 7777 (INVALID CYLINDER ADDRESS). 
*         5.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED), 
*             POST FORMAT MESSAGE 6.
*         6.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS IS ZERO (SUCCESSFUL RECOVERY), POST FORMAT MESSAGE 
*             7.
*         7.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS  IS  NON-ZERO (UNSUCCESSFUL RECOVERY), POST FORMAT 
*             MESSAGE 10. 
*         8.  IF  THE  ERROR  CODE  IN  THE EC REGISTER IS NOT EQUAL TO 
*             5331, GO TO STEP 10.
*         9.  POST  MESSAGES  11 AND 12 INDICATING A COMPARE ERROR ON A 
*             READ CODED DRIVER COMMAND.
*         10. IF  THE  ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 1, 
*             GO TO STEP 13.
*         11. IF  THE NUMBER IN THE B8 REGISTER IS 24 INDICATING A READ 
*             CODED MALET COMMAND SET  THE  DATA  BUFFER  INDEX  TO  4, 
*             OTHERWISE SET THE INDEX TO 0. 
*         12. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST UP  TO 
*             FOUR MESSAGES (13). 
*         13. IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL  TO  2, 
*             GO TO STEP 15.
*         14. POST MESSAGES 22 INDICATING A STATUS ERROR ON  A  COMPARE 
*             OF TWO STATUS WORDS.
*         15. IF STATUS BUFFER WORD 0 IS EQUAL TO  7777  OR  THE  RETRY 
*             COUNT  AND  STATUS BUFFER WORD 0 ARE EQUAL TO ZERO, GO TO 
*             STEP 19.
*         16. POST MESSAGE 14.
*         17. IF THE RETRY COUNT IS NOT EQUAL TO  ZERO,  POST  MESSAGES 
*             15, 16, 20, AND 21 TO DISPLAY THE STATUSES FROM LOCATIONS 
*             25 OCTAL THROUGH 51 OCTAL IN THE STATUS BUFFER. 
*         18. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS 
*             BUFFER IS NOT EQUAL TO ZERO, POST MESSAGES  15,  17,  20, 
*             AND  21  TO DISPLAY THE STATUSES FROM LOCATIONS 0 THROUGH 
*             24 OCTAL IN THE STATUS BUFFER.
*         19. EXIT THE MODULE TO DH896G.
* 
/ 
*         ENTRY-
*         B5  = CURRENT SECTOR NUMBER.
*         B6  = CURRENT TRACK NUMBER. 
*         B7  = CURRENT CYLINDER NUMBER.
*         B8  = NUMBER FOR THE LAST PRODUCT OVERLAY COMMAND EXECUTED. 
*         EC  = ERROR CODE NUMBER.
*         WT  = NUMBER OF WORDS TRANSMITTED.
*         BA  = THE BASE ADDRESS ON A DATA COMPARE ERROR. 
*         OUTPUT DATA BUFFER CONTAINS THE EXPECTED DATA FOR COMPARE 
*           DATA ERRORS.
*         INPUT DATA BUFFER CONTAINS THE ACTUAL DATA FOR COMPARE DATA 
*           ERRORS. 
*         STATUS BUFFER CONTAINS THE GENERAL STATUS, DETAILED STATUS, 
*           AND RETRY COUNT.
* 
*         EXIT- 
*         B12 = NEXT LINE NUMBER IN THE DISPLAY BUFFER. 
*         MESSAGES POSTED FOR THE STATUSES TO BE DISPLAYED. 
*         EXIT IS ALWAYS TO MODULE DH896G.
* 
*         SUBMODULES REFERENCED-
*         DH896G - CRACK GENERAL AND DETAILED STATUS. 
* 
*         REGISTERS USED- 
*         B1  = MODULE NUMBER IN OCTAL. 
*         B5  = CURRENT SECTOR. 
*         B6  = CURRENT TRACK.
*         B7  = CURRENT CYLINDER. 
*         B8  = COMMAND NUMBER FOR ABORTS.
*         B11 = ERROR COUNTER.
*         B12 = DISPLAY LINE NUMBER 
*         B13 = TEMPORARY STORAGE.
*         B14 = TEMPORARY STORAGE.
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         INPUT BUFFER LOCATIONS 502, 503, AND 504 ARE USED FOR 
*           TEMPORARY STORAGE.
* 
/---------MESSAGES FOR THE STATUSES TO BE DISPLAYED.
* 
1  FORMAT WT=*OCT  RETRIES=*O  MARGINS=NA  ERRORS=*DEC
6  FORMAT CYL=*OCT TRK=*O SEC=*O
7  FORMAT CYL=*OCT TRK=*O SEC=*O  - SUCCESSFUL RECOVERY 
10 FORMAT CYL=*OCT TRK=*O SEC=*O  - UNSUCCESSFUL RECOVERY 
11 FORMAT COMPARE ERROR - EXPECTED  CYL=*OCT  TRK=*O  SEC=*O
12 FORMAT                 ACTUAL    CYL=*OCT  TRK=*O  SEC=*O
13 FORMAT DATA ERROR - W*OCT  E*OCT  A*OCT  D*OCT 
14 FORMAT                  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 
22 FORMAT STATUS ERROR - W*OCT  E*OCT  A*OCT  D*OCT 
* 
/---------BUILD THE STATUS DISPLAY FOR THE ERROR. 
* 
30 B13=B11+1                           *UPDATE ERROR COUNT
   MSG 1 (WT,SB(52),B13) TO LINE 7     *DISPLAY LINE 7
   B12=10                    *LINE NUMBER ON THE DISPLAY
* 
/---------DISPLAY THE CURRENT CYLINDER, TRACK, AND SECTOR.
* 
   IF(B8.EQ.40) GOTO 36      *IF RES CONTROLLER COMMAND 
   IF(B8.EQ.41) GOTO 36      *IF RES DRIVE COMMAND
   IF(B7.EQ.7777) GOTO 36    *IF INVALID CYLINDER NUMBER
   B13=6                     *NO RECOVERY MESSAGE 
   IF(SB(52).EQ.0) GOTO 34   *IF NO RECOVERY ATTEMPTED
   B13=7                     *SUCCESSFUL RECOVERY MESSAGE 
   IF(SB.EQ.0) GOTO 34       *IF SUCCESSFUL RECOVERY
   B13=10                    *UNSUCCESSFUL RECOVERY MESSAGE 
34 MSG B13 (B7,B6,B5) TO LINE 10  *POST THE MESSAGE 
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
* 
/---------DISPLAY THE CYLINDER, TRACK, AND SECTOR ON A READ 
/---------CODED COMPARE ERROR.
* 
36 IF(EC.AND.4177.NE.4131)GOTO 41  *IF NO RD CODED COMP ERR 
   B12=B12+1                   *UPDATE DISPLAY LINE NUMBER
   MSG 11 (B7,B6,B5) TO LINE B12  *POST EXPECTED MESSAGE
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
   IF (B8.NE.24) GOTO 37         *IF NOT PP READ CODED
   MSG 12 3 WORDS FROM IB(500) TO LINE B12  *POST ACTUAL
   GOTO 40                   *GO TO INCREMENT LINE NUMBER 
37 MSG 12 3 WORDS FROM SB(1) TO LINE B12  *POST ACTUAL
40 B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
* 
/---------DISPLAY UP TO FOUR DATA ERRORS ON DATA BUFFER 
/---------COMPARE ERRORS. 
* 
41 IF(EC.EQ.1) GOTO 42       *IF NO DATA COMPARE ERRORS 
   IF(EC.NE.3) GOTO 50       *IF NO SHORTRD CMP ERR 
42 B12=B12+1                 *UPDATE DISPLAY LINE NUMBER
   B13=BA                    *SET DATA BUFFER INDEX 
   B14=0                     *INITIALIZE ERROR COUNTER
* 
/---------SEARCH FOR THE ERRORS IN THE DATA BUFFER. 
* 
43 IF(EC.EQ.1)B15=IB(B13) XOR OB(B13)  *CHECK FOR A ERROR 
   IF(EC.EQ.3)B15=IB(B4) XOR OB(B13)  *CHECK FOR AN ERROR 
   IF(B15.EQ.0) GOTO 44            *IF NO DATA ERROR
   IF(EC.EQ.1)MSG 13(B13,OB(B13),IB(B13),B15)TO LINE B12
   IF(EC.EQ.3)MSG 13(B4,OB(B13),IB(B4),B15)TO LINE B12
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
   B14=B14+1                     *UPDATE ERROR COUNTER
   IF(EC.EQ.3)B4=B4+1            *UPDATE IB COUNTER 
   IF(B14.GE.4) GOTO 50          *IF FOUR ERRORS POSTED 
44 B15=504                       *NORMAL WORD COUNT 
   IF(B8.EQ.26)B15=460           *IF SHORTRD COMMAND
46 GOTO 43 WHILE(B13+1 NE B15)   *LOOP TO CHECK DATA BUFFER 
* 
/---------DISPLAY STATUS BUFFER ERROR.
* 
50 IF(EC.NE.2) GOTO 52       *IF NO DATA COMPARE ERRORS 
   B15=OB(BA) XOR SB(BA)      *CHECK WORDS FOR A ERROR
   MSG 22 (BA,OB(BA),SB(BA),B15) TO LINE B12  *POST ERROR 
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER
* 
/---------CHECK IF GENERAL, DETAILED STATUS TO BE DISPLAYED.
* 
52 IF(SB.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 B12=B12+1                 *UPDATE DISPLAY LINE NUMBER
   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 96G               *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
   B12=B12+2                     *UPDATE DISPLAY LINE NUMBER
   MSG 21 5 WORDS FROM SB(B13+20)TO LINE B12+1  *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
   B12=B12+3                     *UPDATE DISPLAY LINE NUMBER
   RETURN                        *EXIT THE SUBROUTINE 
   END 30                        *END OF THE MODULE 
COMPILE                      *DH896F STATUS DISPLAY 
   MODULE DH896G,DEMA3(14),LOCK 
***       DH896G - PROCESS GENERAL STATUS 
**
*         DH896G - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896G  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 DH896P.
*         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 
*             DH896N. 
*         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 DH896K.
*         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 
*             DH896H. 
*         15. IF BIT 0 IS SET IN DETAILED STATUS WORD 17 DECIMAL,  EXIT 
*             MODULE DH896I, OTHERWISE EXIT TO MODULE DH896J. 
*         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 DH896P.
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DH896H 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 DH896I IF 
*            BIT 0 IS SET IN DETAILED STATUS WORD 16 DECIMAL, OR MODULE 
*            DH896J IF BIT 0 IS NOT SET  IN  DETAILED  STATUS  WORD  16 
*            DECIMAL. 
*         EXIT TO MODULE DH896N IF THE GENERAL STATUS IS EQUAL TO  5020 
*            OCTAL OR THE DRIVE IS NOT READY AND SAFE.
*         EXIT TO MODULE DH896K IF THE  GENERAL  STATUS  IS  NOT  0000, 
*            0002, 0010, 2XXX, 5000, OR 5020. 
*         EXIT TO MODULE DH896P 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-
*         DH896H - PROCESS BUFFER READ OR BUFFER WRITE ERROR. 
*         DH896I - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DH896J - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DH896K - PROCESS 4400, 4600, 4700, AND 5200 GENERAL STATUS. 
*         DH896N - ISOLATE DRIVE FAULTS.
*         DH896P - 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 DH896G.          * 
*         *         STEPS 21 THROUGH 38 ARE IN MODULE DH896H.         * 
*         *         STEPS 39 THROUGH 64 ARE IN MODULE DH896I.         * 
*         *         STEPS 65 THROUGH 82 ARE IN MODULE DH896J.         * 
*         *         STEPS 83 THROUGH 100 ARE IN MODULE DH896K.        * 
*         *                                                           * 
*         *    NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE       * 
*         *          TO MODULE DH896P.                                * 
*         *                                                           * 
*         ************************************************************* 
* 
*         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 DH896P.
*         3.  IF THE  GENERAL  STATUS  IS EQUAL TO ZERO, EXIT TO MODULE 
*             DH896P. 
*         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 DH896N 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 DH896N 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 DH896N 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 DH896P.
* 
/---------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 96P  *IF INVALID STATUS
   IF(SB(B13).EQ.0) EXIT TO 96P     *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 96N  *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 96K  *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 96H  *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 96H  *BUFFER WRITE 
   IF(B14.AND.1.NE.0) EXIT TO 96I   *ADDRESS FIELD ERROR
   EXIT TO 96J                      *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 96P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896G PROCESS GENERAL STATUS 
   MODULE DH896H,DEMA3(14),LOCK 
***       DH896H - PROCESS GENERAL STATUS 
**
*         DH896H - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896H 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 DH896L. 
*         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 DH896L. 
*         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 DH896L. 
*         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 DH896P. 
* 
/ 
*         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  DH896L  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 DH896P IF THE MESSAGE INDICATING THE  CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH896L - PROCESS GENERAL STATUS.
*         DH896P - 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 96L  *SYNC BYTE ERROR
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 96L  *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 96L  *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 96L  *NONCORRECTABLE ERROR 
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 96L  *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.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.7) B14=0        *IF MESSAGE 7
   IF(B15.EQ.10) B14=13      *IF MESSAGE 10 
   IF(B15.EQ.13) B14=2       *IF MESSAGE 13 
   EXIT TO 96P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896H PROCESS GENERAL STATUS 
   MODULE DH896I,DEMA3(14),LOCK 
***       DH896I - PROCESS GENERAL STATUS 
**
*         DH896I - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896I  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 DH896L 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 DH896N 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  DH896L 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  DH896L 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 DH896L 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 DH896L TO PROCESS A 
*             NONCORRECTABLE ERROR. 
*         24. IF  BIT  11  DECIMAL  IS  SET  IN DETAILED STATUS WORD 16 
*             DECIMAL, EXIT TO MODULE DH896L 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 DH896P.
* 
/ 
*         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  DH896L  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 DH896N IF FMD IS NOT READY AND SAFE.
*         EXIT IS  TO MODULE DH896P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH896L - PROCESS GENERAL STATUS.
*         DH896N - ISOLATE FMD FAULTS.
*         DH896P - 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 96L   *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 96N                      *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 96L  *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 96L  *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 96L  *LOST CONTROL WORD
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.3600.NE.0)EXIT TO 96L  *NONCORRECTABLE ERROR
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 96L  *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=2        *IF MESSAGE 4
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   IF(B15.EQ.13) B14=2       *IF MESSAGE 13 
   IF(B15.EQ.21) B14=2       *IF MESSAGE 21 
   EXIT TO 96P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896I PROCESS GENERAL STATUS 
   MODULE DH896J,DEMA3(14),LOCK 
***       DH896J - PROCESS GENERAL STATUS 
**
*         DH896J - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896J  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 DH896N 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 DH896L 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 DH896L 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 DH896L 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 DH896L 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 DH896P.
* 
/ 
*         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  DH896L  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 DH896N IF FMD IS NOT READY AND SAFE.
*         EXIT IS  TO MODULE DH896P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH896L - PROCESS GENERAL STATUS.
*         DH896N - ISOLATE DRIVE FAULTS.
*         DH896P - 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 96N  *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 96L  *SYNC BYTE ERROR
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 96L  *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 96L   *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 96L  *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.10) B14=2       *IF MESSAGE 10 
   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 96P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896J PROCESS GENERAL STATUS 
   MODULE DH896K,DEMA3(14),LOCK 
***       DH896K - PROCESS GENERAL STATUS 
**
*         DH896K - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896K  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-4X 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 DH896L 
*             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 DH896L 
*             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 DH896L 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 DH896L 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 DH896L 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 DH896L TO PROCESS A FMD NONCORRECTABLE ADDRESS 
*             FIELD CHECKWORD ERROR.
*         16. IF  BIT 1 IS SET IN DETAILED STATUS WORD 17 DECIMAL, EXIT 
*             TO MODULE DH896L 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 DH896P.
* 
/ 
*         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  DH896L  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 DH896P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH896L - PROCESS GENERAL STATUS 
*         DH896P - 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.
7  FORMAT FMD TRACK FLAW DETECTED.
* 
/---------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 96L                         *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=7                               *MESSAGE NUMBER
   IF(SB(B13+5).AND.4000.NE.0)GOTO 70  *TRACK FLAW ERROR
   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 96L                         *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 96L      *ADDRESS FIELD ERROR 
   B15=11                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) EXIT TO 96L      *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 96L     *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 96L      *ADDRESS FIELD 
   B15=12                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) EXIT TO 96L      *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.EQ.4) B14=2        *IF MESSAGE 4
   IF(B15.EQ.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.7) B14=1        *IF MESSAGE 7
   EXIT TO 96P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896K PROCESS GENERAL STATUS 
   MODULE DH896L,DEMA3(14),LOCK 
***       DH896L - PROCESS GENERAL STATUS 
**
*         DH896L - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896L 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 DH896P.
*         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 DH896M.
* 
/ 
*         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  DH896P  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 DH896M IF BIT 3 IN  DETAILED  STATUS  WORD  18 
*            DECIMAL IS SET.
* 
*         SUBMODULES REFERENCED-
*         DH896M - DETERMINE FAILING HEADS. 
*         DH896P - 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=3       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=1       *IF MESSAGE 12 
   EXIT TO 96P               *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 96M               *EXIT TO NEXT MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896L PROCESS GENERAL STATUS 
   MODULE DH896M,DEMA3(14),LOCK 
***       DH896M - PROCESS GENERAL STATUS 
**
*         DH896M - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH896M 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 DH896P.
/ 
*         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 DH896P TO COMPLETE THE ERROR DISPLAY WITH  THE 
*            PRESERVICE FORECAST GROUP NUMBER IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DH896P - 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=2       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=1       *IF MESSAGE 12 
   EXIT TO 96P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896M PROCESS GENERAL STATUS 
   MODULE DH896N,DEMA3(14),LOCK 
***       DH896N - ISOLATE DRIVE FAULT
**
*         DH896N - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         DH896N  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 DH896P.
*         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 DH896O 
*         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 DH896P.
* 
/ 
*         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 DH896O IF THE CAUSE OF THE FAULT IN THE DRIVE 
*            HAS NOT BEEN DETERMINED. 
*         EXIT  TO MODULE DH896P IF THE CAUSE OF THE FAULT IN THE DRIVE 
*            WAS DETERMINED WITH THE PRESERVICE FORECAST  GROUP  NUMBER 
*            IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH896O - ISOLATE DRIVE FAULT. 
*         DH896P - 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 DH896N.          * 
*         *         STEPS 29 THROUGH 49 ARE IN MODULE DH896O.         * 
*         *                                                           * 
*         *      NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE     * 
*         *            TO MODULE DH896P.                              * 
*         *                                                           * 
*         ************************************************************* 
* 
*         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 DH896P.
*         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 DH896P.
* 
/---------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 96P   *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 96O  *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.5) B14=3        *IF MESSAGE 5
   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.13) B14=3       *IF MESSAGE 13 
   IF(B15.EQ.15) B14=3       *IF MESSAGE 15 
   EXIT TO 96P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896N ISOLATE DRIVE FAULT
   MODULE DH896O,DEMA3(14),LOCK 
***       DH896O - ISOLATE DRIVE FAULT
**
*         DH896O - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         DH896O  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. 
*         22. EXIT TO MODULE DH896P.
* 
/ 
*         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 DH896P WITH THE PRESERVICE 
*            FORECAST GROUP NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH896P - 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 96P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH896O ISOLATE DRIVE FAULT
   MODULE DH896P,DEMA3(14),LOCK 
***       DH896P - POST PRESERVICE FORECAST GROUP 
**
*         DH896P - POST PRESERVICE FORECAST GROUP 
*         --------------------------------------- 
* 
*         PURPOSE-
*         DH896P 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 DH896Q.
* 
/ 
*         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.
*         P8  = INPUT/OUTPUT BUFFERS DUMP ADDRESS.
* 
* 
*         EXIT- 
*         EXIT IS ALWAYS TO MODULE DH896Q.
*         THE CONTENTS OF ALL THE B REGISTERS DISPLAYED IF BIT 5 IS SET 
*            IN PARAMETER WORD P4.
*         THE CONTENTS OF THE TEN OCTAL  LOCATIONS  OF  THE  INPUT  AND 
*            BUFFER DISPLAYED STARTING AT THE INDEX IN PARAMETER WORD 8 
*            IF BIT 5 IS SET IN PARAMETER WORD P4.
* 
*         SUBMODULES REFERENCED-
*         DH896Q - RESTART CONTROLLER.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
*         B14 = PRESERVICE FORECAST GROUP NUMBER. 
* 
*         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(P8=*OCTB)/B REGISTER DISPLAY DUMP- 
11 FORMAT IB(P8)  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
12 FORMAT OB(P8)  = *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 DH801-11. 
* 
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.LE.11D) B14=0       *IF MODULE IS DH801-11 
* 
/---------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
   B13 = P8                      *INDEX FOR BUFFERS 
   MSG 10(B13) TO LINE B12       *DUMP DISPLAY MESSAGE
   MSG 10(B13) TO PRINT          *DUMP DISPLAY MESSAGE
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 11 10 WORDS FROM IB(B13) TO LINE B12  *INPUT BUFFER
   MSG 11 10 WORDS FROM IB(B13) TO PRINT  *INPUT BUFFER 
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 12 10 WORDS FROM OB(B13) TO LINE B12  *OUTPUT BUFFER 
   MSG 12 10 WORDS FROM OB(B13) TO PRINT  *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 DISABLED 
   MSG 15 TO DISPLAY, PRINT      *PAUSE MESSAGE 
   PAUSE                         *STOP ON ERROR 
60 MSG 16 TO PRINT               *TERMINATE THE MESSAGE 
   EXIT TO 96Q               *EXIT THE MODULE 
   END 20                    *END OF MODULE 
COMPILE                      *DH896P POST PRESERVICE FORECAST GROUP 
   MODULE DH896Q,DEMA3(14),LOCK 
***       DH896Q - RESTART CONTROLLER 
**
*         DH896Q - RESTART CONTROLLER 
*         --------------------------- 
* 
*         PURPOSE-
*         DH896Q  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  40  OCTAL 
*             (RES,CONTROLLER) OR A 41 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.  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.
*         WT = NUMBER OF WORDS TRANSFERRED. 
*         EC = THE ERROR CODE FOR THE LAST ERROR REPORTED.
* 
*         EXIT- 
*         EXIT TO THE CALLING MODULE IF THE RESET COMMAND DOES NOT HAVE 
*            TO  BE  EXECUTED  OR  IF  THE  RESET  COMMAND CORRECTS THE 
*            PROBLEM. 
*         TERMINATE  EXECUTION  OF  THE  CALLING  MODULE  IF  THE RESET 
*            COMMAND  MUST  BE  EXECUTED,  BUT  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. 
* 
*         BUFFERS USED- 
*         STATUS BUFFER USED FOR GENERAL AND DETAILED STATUS. 
* 
/---------MESSAGES POSTED BY THIS MODULE. 
* 
1  FORMAT PRESERVICE FORECAST GROUP FHDC
2  FORMAT DH8 ABORT ON .RESET. COMMAND
3  FORMAT DH8 ABORT ON .STATUS DETAIL. COMMAND
4  FORMAT DH8 ABORT ON .REL. COMMAND
5  FORMAT LAST FUNCTION = *OCTB 
6  FORMAT  DH896Q E0102 L*OC  CONTROLLER RESPONSE ERROR 
7  FORMAT WT=*OCTB RETRIES=*OB ERRORS=*DECD 
10 FORMAT POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM
11 FORMAT DH8*D MODULE ABORTED - CONTROLLER NOT RESPONDING
12 FORMAT 
13 FORMAT --------------------------------------------------
* 
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.
* 
30 IF(B8.EQ.40) GOTO 32      *IF RES CONTROLLER COMMAND 
   IF(B8.NE.41) 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 NO RES ERROR, 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 NO RES ERROR, 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.NE.0)GOTO 52  *IF KL DISPLAY
   MSG 12 TO LINE B12         *BLANK LINE 
   B12 = B12+1                *UPDATE DISPLAY LINE NUMBER 
52 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. 
   END 30                               *END OF THE MODULE
COMPILE                      *DH896Q RESTART CONTROLLER 
*ENDIF
*IF DEF,PFMD,4
   MODULE DH897A,DEMA1(14),LOCK 
***       DH897A - PARAMETER VERIFICATION 
**        DH897A - PARAMETER VERIFICATION 
*         DH897A - PARAMETER VERIFICATION 
*IF DEF,SFMD,4
   MODULE D8897A,FMDHT(7),LOCK                                           D88
***       D8897A - PARAMETER VERIFICATION                                D88
**        D8897A - PARAMETER VERIFICATION                                D88
*         D8897A - PARAMETER VERIFICATION                                D88
*IF DEF,LSFMD,4 
   MODULE DL897A,LSFMD1(16),LOCK
***       DL897A - PARAMETER VERIFICATION 
**        DL897A - PARAMETER VERIFICATION 
*         DL897A - PARAMETER VERIFICATION 
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH897A  CHECKS THE PARAMETER  WORDS FOR THE CALLING MODULE TO 
*IF DEF,SFMD,1
*         D8897A  CHECKS THE PARAMETER  WORDS FOR THE CALLING MODULE TO  D88PTR4
*IF DEF,LSFMD,1 
*         DL897A  CHECKS THE PARAMETER  WORDS FOR THE CALLING MODULE TO 
*         DETERMINE IF THERE ARE ANY ERRORS IN THE PARAMETER WORDS. THE  D88
*IF DEF,PFMD,1
*         MODULE WILL THEN EXIT TO MODULE DH897B TO ALLOW ANY ERRORS TO 
*IF DEF,SFMD,1
*         MODULE WILL THEN EXIT TO MODULE D8897B TO ALLOW ANY ERRORS TO 
*IF DEF,LSFMD,1 
*         MODULE WILL THEN EXIT TO MODULE D8897B TO ALLOW ANY ERRORS TO  D88
*         BE REPORTED.                                                   D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P0 IS  D88
*             NOT GREATER THAN 1512 OCTAL.                               D88
*         2.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P1 IS  D88
*             NOT GREATER THAN 1512 OCTAL.                               D88
*         3.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P0 IS  D88
*             EQUAL TO OR LESS THAN THE CYLINDER  NUMBER  IN  PARAMETER  D88
*             WORD P1.                                                   D88
*         4.  VERIFY THAT THE FIRST CYLINDER SELECTED IN  PARAMETER  P0  D88
*             IS NOT EQUAL TO 1511 OCTAL.                                D88
*         5.  VERIFY THAT THE LAST CYLINDER SELECTED IN PARAMETER P1 IS  D88
*             NOT EQUAL TO 1511 OCTAL.                                   D88
*         6.  VERIFY THAT THE LOWER TRACK NUMBER IN PARAMETER  WORD  P2  D88
*IF DEF,PFMD,1
*             IS NOT GREATER THAN 11 OCTAL. 
*IF DEF,SFMD,1
*             IS NOT GREATER THAN 47 OCTAL.                              D88
*IF DEF,LSFMD,1 
*             IS NOT GREATER THAN 47 OCTAL. 
*         7.  VERIFY THAT THE UPPER TRACK NUMBER IN PARAMETER  WORD  P2  D88
*IF DEF,PFMD,1
*             IS NOT GREATER THAN 11 OCTAL. 
*IF DEF,SFMD,1
*             IS NOT GREATER THAN 47 OCTAL. 
*IF DEF,LSFMD,1 
*             IS NOT GREATER THAN 47 OCTAL.                              D88
*         8.  VERIFY THAT THE LOWER TRACK NUMBER IN PARAMETER  WORD  P2  D88
*             IS  EQUAL  TO  OR  LESS  THAN  THE  UPPER TRACK NUMBER IN  D88
*             PARAMETER WORD P2.                                         D88
*         9.  VERIFY  THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD P3  D88
*             IS NOT GREATER THAN 37 OCTAL.                              D88
*         10. VERIFY  THAT THE UPPER SECTOR NUMBER IN PARAMETER WORD P3  D88
*             IS NOT GREATER THAN 37 OCTAL.                              D88
*         11. VERIFY  THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD P3  D88
*             IS EQUAL TO OR LESS  THAN  THE  UPPER  SECTOR  NUMBER  IN  D88
*             PARAMETER WORD P3.                                         D88
*         12. VERIFY THAT THE MARGINS SELECTED IN PARAMETER WORD P7 ARE 
*             VALID.
*         13. VERIFY THAT BOTH WRITE AND READ ARE NOT DISABLED  IN  THE 
*             P5 PARAMETER WORD.
*         14. IF WRITE IS NOT DISABLED, VERIFY THAT THE ACCESS LEVEL IS  D88
*             HIGH ENOUGH TO WRITE THE CYLINDERS SELECTED.               D88
*         15. IF WRITE IS DISABLED AND READ IS ENABLED, VERIFY THAT THE  D88
*             ACCESS  LEVEL IS HIGH ENOUGH TO READ ALL OF THE CYLINDERS  D88
*             SELECTED.                                                  D88
*IF DEF,PFMD,1
*         16. EXIT TO MODULE DH897B.
*IF DEF,SFMD,1
*         16. EXIT TO MODULE D8897B.                                     D88
*IF DEF,LSFMD,1 
*         16. EXIT TO MODULE DL897B.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         PARAMETER WORDS P0 THROUGH P9 CONTAIN THE PARAMETERS SELECTED  D88PTR4
*IF DEF,PFMD,1
*         BY THE OPERATOR AS DESCRIBED IN MODULE DH899A.
*IF DEF,SFMD,1
*         BY THE OPERATOR AS DESCRIBED IN MODULE D8899A.                 D88PTR4
*IF DEF,LSFMD,1 
*         BY THE OPERATOR AS DESCRIBED IN MODULE DL899A.
*         AL REGISTER CONTAINS THE ACCESS LEVEL AS DEFINED IN THE        D88
*           ASSIGN STATEMENT.                                            D88
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL.                D88
*                                                                        D88
*         EXIT-                                                          D88
*IF DEF,PFMD,1
*         EXIT IS ALWAYS TO MODULE DH897B WITH THE REGISTERS SET AS 
*IF DEF,SFMD,1
*         EXIT IS ALWAYS TO MODULE D8897B WITH THE REGISTERS SET AS      D88
*IF DEF,LSFMD,1 
*         EXIT IS ALWAYS TO MODULE DL897B WITH THE REGISTERS SET AS 
*           FOLLOWS-                                                     D88
*         B12 CONTAINS THE NEXT LINE NUMBER TO PLACE THE NEXT MESSAGE.   D88
*         B9 CONTAINS THE FIRST READ MARGIN SELECTED.                    D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,1
*         DH897B - VALIDATE PARAMETERS. 
*IF DEF,SFMD,1
*         D8897B - VALIDATE PARAMETERS.                                  D88
*IF DEF,LSFMD,1 
*         DL897B - VALIDATE PARAMETERS. 
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B9  = READ MARGIN.                                             D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B12 = DISPLAY BUFFER LINE NUMBER.                              D88
*         B13 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*IF DEF,PFMD,1
1  FORMAT DH897A - CHECK PARAMETERS 
*IF DEF,SFMD,1
1  FORMAT D8897A - CHECK PARAMETERS                                      D88
*IF DEF,LSFMD,1 
1  FORMAT DL897A - CHECK PARAMETERS 
2  FORMAT CHECK P0 - LOWER CYLINDER NUMBER TOO LARGE                     D88
3  FORMAT CHECK P1 - UPPER CYLINDER NUMBER TOO LARGE                     D88
4  FORMAT CHECK P0, P1 - P0 GREATER THAN P1                              D88
5  FORMAT CHECK P0, P1 - CYLINDER 1511 CANNOT BE TESTED                  D88
6  FORMAT CHECK P2 - LOWER TRACK NUMBER TOO LARGE                        D88
7  FORMAT CHECK P2 - UPPER TRACK NUMBER TOO LARGE                        D88
10 FORMAT CHECK P2 - LOWER TRACK GREATER THAN UPPER TRACK                D88
11 FORMAT CHECK P3 - LOWER SECTOR NUMBER TOO LARGE                       D88
12 FORMAT CHECK P3 - UPPER SECTOR NUMBER TOO LARGE                       D88
13 FORMAT CHECK P3 - LOWER SECTOR GREATER THAN UPPER SECTOR              D88
14 FORMAT CHECK P5 - WRITE AND READ BOTH DISABLED                        D88
15 FORMAT CHECK P7 - ERROR IN MARGIN PARAMETER WORD                      D88
*IF DEF,PFMD,1
16 FORMAT DH8*D NEEDS ACCESS LEVEL *O, ACTUAL =*O 
*IF DEF,SFMD,1
16 FORMAT D88*D NEEDS ACCESS LEVEL *O, ACTUAL =*O                        D88
*IF DEF,LSFMD,1 
16 FORMAT DL8*D NEEDS ACCESS LEVEL *O, ACTUAL =*O 
*                                                                        D88
/---------EQUATES FOR PARAMETER VALUES.                                  D88
*                                                                        D88
*IF DEF,PFMD,1
   EQUATE MAXCYL=1512, MAXSEC=37, MAXTRK=11 
*IF DEF,SFMD,1
   EQUATE MAXCYL=1512, MAXSEC=37, MAXTRK=47 
*IF DEF,LSFMD,1 
   EQUATE MAXCYL=1512, MAXSEC=07, MAXTRK=47 
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
30 MSG 1 TO DISPLAY          *DISPLAY RUNNING MESSAGE                    D88
   B12=12                    *FIRST LINE OF ERROR DISPLAY                D88
*                                                                        D88
/---------CHECK LOWER CYLINDER PARAMETER WORD.                           D88
*                                                                        D88
   B13=2                     *MESSAGE FORMAT NUMBER                      D88
   IF(P0.GT.MAXCYL)GOSUB 76  *UPPER CYLINDER TOO LARGE                   D88
*                                                                        D88
/---------CHECK UPPER CYLINDER PARAMETER WORD.                           D88
*                                                                        D88
   B13=3                     *MESSAGE FORMAT NUMBER                      D88
   IF(P1.GT.MAXCYL)GOSUB 76  *UPPER CYLINDER TOO LARGE                   D88
*                                                                        D88
/---------CHECK IF LOWER CYLINDER NUMBER LARGER THAN THE                 D88
/         UPPER CYLINDER NUMBER.                                         D88
*                                                                        D88
   B13=4                     *MESSAGE FORMAT NUMBER                      D88
   IF(P0.GT.P1) GOSUB 76     *IF CONFILICT IN CYL. NUMBERS               D88
*                                                                        D88
/---------CHECK FOR CYLINDER 1511 THE FIRST OR LAST CYLINDER             D88
/--------SELECTED TO BE TESTED.                                          D88PTR4
*                                                                        D88
   B13=5                     *MESSAGE FORMAT NUMBER                      D88
   IF(P0.EQ.1511) GOSUB 76   *IF STARTING CYLINDER IS 1511               D88
   GOTO 40                                                               D88
   IF(P1.EQ.1511) GOSUB 76   *IF LAST CYLINDER IS 1511                   D88
*                                                                        D88
/---------CHECK LOWER TRACK NUMBER IN PARAMETER WORD 2.                  D88
*                                                                        D88
40 B13=6                     *MESSAGE FORMAT NUMBER                      D88
   B2=P2 RS 6                *GET LOWER TRACK NUMBER                     D88
   IF(B2.GT.MAXTRK)GOSUB 76  *IF LOWER TRACK TOO LARGE                   D88
*                                                                        D88
/---------CHECK UPPER TRACK NUMBER IN PARAMETER WORD 2.                  D88
*                                                                        D88
   B13=7                     *MESSAGE FORMAT NUMBER                      D88
   B10=P2 AND 77             *GET UPPER TRACK NUMBER                     D88
   IF(B10.GT.MAXTRK)GOSUB 76  *IF UPPER TRACK TOO LARGE                  D88
*                                                                        D88
/---------CHECK IF LOWER TRACK LARGER THAN UPPER TRACK.                  D88
*                                                                        D88
   B13=10                    *MESSAGE FORMAT NUMBER                      D88
   IF(B2.GT.B10) GOSUB 76    *IF CONFILICT IN TRACK NUMBERS              D88
*                                                                        D88
/---------CHECK LOWER SECTOR NUMBER IN PARAMETER WORD 3.                 D88
*                                                                        D88
   B13=11                    *MESSAGE FORMAT NUMBER                      D88
   B2=P3 RS 6                *GET LOWER SECTOR NUMBER                    D88
   IF(B2.GT.MAXSEC)GOSUB 76  *IF LOWER SECTOR TO0 LARGE                  D88
*                                                                        D88
/---------CHECK UPPER SECTOR NUMBER IN PARAMETER WORD 3.                 D88
*                                                                        D88
   B13=12                    *MESSAGE FORMAT NUMBER                      D88
   B10=P3 AND 77             *GET UPPER SECTOR NUMBER                    D88
   IF(B10.GT.MAXSEC)GOSUB 76  *IF UPPER SECTOR TOO LARGE                 D88
*                                                                        D88
/---------CHECK IF LOWER SECTOR LARGER THAN UPPER SECTOR.                D88
*                                                                        D88
   B13=13                    *MESSAGE FORMAT NUMBER                      D88
   IF(B2.GT.B10) GOSUB 76    *IF CONFILICT IN SECTOR NO.                 D88
* 
/---------CHECK FOR LEGAL MARGINS IN PARAMETER WORD P7. 
* 
   B9 = P7                   *MARGINS SELECTED IN P7
   IF(P7.EQ.77) B9 = 0       *IF ALL READ MARGINS SELECTED, 
   MARGINS,B9,ABT 44         *CHECK IF LEGAL MARGINS ENTERED
   GOTO 46                   *JUMP, LEGAL MARGINS ENTERED 
44 B13 = 15                  *MESSAGE FORMAT NUMBER 
   GOSUB 76                  *MOVE MESSAGE TO THE DISPLAY 
*                                                                        D88
/---------CHECK P5 FOR BOTH WRITE AND READ DISABLED.                     D88
*                                                                        D88
46 IF(P5.AND.4.EQ.0)GOTO 50  *IF WRITE NOT DISABLED,
   IF(P5.AND.2.EQ.0)GOTO 52  *IF READ NOT DISABLED                       D88
   B13=14                    *MESSAGE FORMAT NUMBER                      D88
   GOSUB 76                  *MOVE MESSAGE TO THE DISPLAY                D88
   GOTO 62                   *GO TO EXIT
*                                                                        D88
/---------DETERMINE THE ACCESS LEVEL FOR WRITING THE FMD.                D88
*                                                                        D88
50 B2=4                      *ACCESS LEVEL TO WRITE ANYWHERE             D88
   IF(P0.GE.MAXCYL) B2=3     *ACCESS LEVEL FOR CYL. 1512                 D88
   GOTO 60                   *GO TO CHECK THE ACCESS LEVEL
*                                                                        D88
/---------DETERMINE THE ACCESS LEVEL FOR READING THE FMD.                D88
*                                                                        D88
52 B2=4                      *ACCESS LEVEL TO READ ANYWHERE              D88
   IF(P0.GE.MAXCYL) B2=1     *IF CYLINDER 1512 ONLY                      D88
*                                                                        D88
/---------CHECK FOR THE ACCESS LEVEL TOO LOW.                            D88
*                                                                        D88
60 B10=5                     *PARAMETER ENTRY ERROR MESSAGE              D88
   IF(AL.GE.B2) GOTO 62      *IF ACCESS LEVEL HIGH ENOUGH                D88
   MSG 16 (B1,B2,AL) TO LINE B12  *MOVE ERROR MESSAGE                    D88
   IF(B12.EQ.12) B10=6       *ACCESS LEVEL ERROR MESSAGE                 D88
   B12=B12+1                 *INCREMENT LINE NUMBER                      D88
62 EXIT TO 97B               *EXIT THE MODULE                            D88
*                                                                        D88
/---------SUBROUTINE TO INSERT A MESSAGE IN THE DISPLAY.                 D88
*                                                                        D88
76 MSG B13 TO LINE B12       *MOVE ERROR MESSAGE TO DISPLAY              D88
   B12=B12+1                 *INCREMENT LINE NUMBER                      D88
   RETURN                    *EXIT THE SUBROUTINE                        D88
   END 30                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH897A VALIDATE PARAMETERS
*IF DEF,SFMD,1
COMPILE                      *D8897A VALIDATE PARAMETERS                 D88
*IF DEF,LSFMD,1 
COMPILE                      *DL897A VALIDATE PARAMETERS
*IF DEF,PFMD,4
   MODULE DH897B,DEMA1(14),LOCK 
***       DH897B - PARAMETER VERIFICATION 
**        DH897B - PARAMETER VERIFICATION 
*         DH897B - PARAMETER VERIFICATION 
*IF DEF,SFMD,4
   MODULE D8897B,FMDHT(7),LOCK                                           D88
***       D8897B - PARAMETER VERIFICATION                                D88
**        D8897B - PARAMETER VERIFICATION                                D88
*         D8897B - PARAMETER VERIFICATION                                D88
*IF DEF,LSFMD,4 
   MODULE DL897B,LSFMD1(16),LOCK
***       DL897B - PARAMETER VERIFICATION 
**        DL897B - PARAMETER VERIFICATION 
*         DL897B - PARAMETER VERIFICATION 
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,2
*         DH897B  CHECKS  TO  DETERMINE  IF  ANY  PARAMETER ERRORS WERE 
*         DETECTED BY MODULE DH897A AND IF THERE WERE ERRORS  DETECTED, 
*IF DEF,SFMD,2
*         D8897B  CHECKS  TO  DETERMINE  IF  ANY  PARAMETER ERRORS WERE  D88
*         DETECTED BY MODULE D8897A AND IF THERE WERE ERRORS  DETECTED,  D88
*IF DEF,LSFMD,2 
*         DL897B  CHECKS  TO  DETERMINE  IF  ANY  PARAMETER ERRORS WERE 
*         DETECTED BY MODULE DL897A AND IF THERE WERE ERRORS  DETECTED, 
*         REPORTS  THE  ERROR. IF NO ERRORS ARE DETECTED, THE REGISTERS  D88
*         AND THE OUTPUT BUFFER WILL BE INITIALIZED ANE RETURN MADE  TO  D88
*         THE CALLING MODULE.                                            D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE B12 REGISTER  DOES  NOT  CONTAIN  THE  FIRST  LINE  D88
*             NUMBER OF THE ERROR DISPLAY, GO TO STEP 6.                 D88
*         2.  SET THE BA REGISTER TO 4  AND  THE  WC  REGISTER  TO  476  D88
*             OCTAL.                                                     D88
*         3.  DETERMINE THE NUMBER OF  SECTORS  TO  BE  WRITTEN  AND/OR  D88PTR4
*             READ FROM PARAMETER WORD P3 AND PLACE THE NUMBER  IN  THE  D88PTR4
*             B2 REGISTER.                                               D88PTR4
*         4.  IF BIT  3 IS SET IN PARAMETER WORD P5, DUPLICATE THE WORD  D88
*             IN PARAMETER WORD P6 IN THE ENTIRE OUTPUT BUFFER.          D88
*         5.  EXIT THE MODULE AND RETURN TO THE PRIMARY CALLING MODULE.  D88
*         6.  DISPLAY ANY PARAMETER ERRORS DETECTED.                     D88
*         7.  IF  BIT  3 IS SET IN PARAMETER WORD P5, DUPICATE THE WORD  D88
*             IN PARAMETER WORD P6 IN THE ENTIRE OUTPUT BUFFER.          D88
*         8.  EXIT THE MODULE AND RETURN TO THE PRIMARY CALLING MODULE.  D88
*         9.  POST A MESSAGE IN THE DAYFILE, PRINT  FILE,  AND  ON  THE  D88
*             DISPLAY  SCREEN  INDICATING THAT EXECUTION OF THE PRIMARY  D88
*             CALLING MODULE WILL BE ABORTED AND  THE  REASON  FOR  THE  D88
*             ABORT.                                                     D88
*         10. TERMINATE EXECUTION OF THE PRIMARY CALLING MODULE.         D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B1 CONTAINS THE OCTAL NUMBER OF THE PRIMARY CALLING MODULE.    D88
*         B12 REGISTER CONTAINS THE NEXT DISPLAY LINE NUMBER.            D88
*         B10 REGISTER CONTAINS THE NUMBER OF THE FORMAT STATEMENT       D88
*           FOR THE ERROR MESSAGE TO BE DISPLAYED IF A PARAMETER OR      D88
*           ACCESS LEVEL ERROR WAS DETECTED.                             D88
*                                                                        D88
*         EXIT-                                                          D88
*         TERMINATE EXECUTION OF THE CALLING MODULE IF A PARAMETER       D88
*           ERROR IS DETECTED OR THE ACCESS LEVEL IS TOO LOW.            D88
*         RETURN TO THE CALLING MODULE IF NO PARAMETER ERROR IS          D88
*           DETECTED AND THE ACCESS LEVEL IS OK WITH THE REGISTERS       D88
*           SET AS FOLLOWS-                                              D88
*         B2 CONTAINS THE NUMBER OF SECTORS TO PROCESS.                  D88
*         B9 CONTAINS THE FIRST READ MARGIN SELECTED.                    D88
*IF DEF,PFMD,1
*         WC REGISTER CONTAINS 504 OCTAL. 
*IF DEF,SFMD,1
*         WC REGISTER CONTAINS 476 OCTAL.                                D88
*IF DEF,LSFMD,1 
*         WC REGISTER CONTAINS 476 OCTAL. 
*         BA REGISTER CONTAINS 4 OCTAL.                                  D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         NONE.                                                          D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B2  = TEMPORARY STORAGE.                                       D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B12 = DISPLAY BUFFER LINE NUMBER.                              D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         OB(4-501) - DATA PATTERN WORD IN P6 IF BIT 3 IS SET IN         D88
*                     PARAMETER WORD P5.                                 D88
*                                                                        D88
*IF DEF,PFMD,6
1  FORMAT DH897A - CHECK PARAMETERS 
2  FORMAT DH8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
3  FORMAT DH8*D MODULE ABORTED - ACCESS LEVEL TOO LOW 
4  FORMAT DH8 - FMD CONFIDENCE TEST 
5  FORMAT DH8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
6  FORMAT DH8*D NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,SFMD,6
1  FORMAT D8897A - CHECK PARAMETERS                                      D88
2  FORMAT D88*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS              D88
3  FORMAT D88*D MODULE ABORTED - ACCESS LEVEL TOO LOW                    D88
4  FORMAT D88 - FMD CONFIDENCE TEST                                      D88
5  FORMAT D88*D NOT EXECUTED, SUSPECTED PARAMETER ERROR                  D88
6  FORMAT D88*D NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*IF DEF,LSFMD,6 
1  FORMAT DL897A - CHECK PARAMETERS 
2  FORMAT DL8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
3  FORMAT DL8*D MODULE ABORTED - ACCESS LEVEL TOO LOW 
4  FORMAT DL8 - FMD CONFIDENCE TEST 
5  FORMAT DL8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
6  FORMAT DL8*D NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
7  FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT                              D88
10 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT                              D88
*IF DEF,PFMD,1
11 FORMAT PARAMETERS DESCRIBED IN MODULE DH899
*IF DEF,SFMD,1
11 FORMAT PARAMETERS DESCRIBED IN MODULE D8899                           D88
*IF DEF,LSFMD,1 
11 FORMAT PARAMETERS DESCRIBED IN MODULE DL899
12 FORMAT --------------------------------------------------             D88
*                                                                        D88
/---------DETERMINE IF ANY PARAMETER ERRORS WERE DETECTED.               D88
*                                                                        D88
30 IF(B12.NE.12) GOTO 40     *NO PARAMETER ERRORS DETECTED               D88
*                                                                        D88
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO.                D88
*                                                                        D88
   B2=P3.RS.6                *FIRST SECTOR NUMBER                        D88
   B2=P3.AND.77-B2                                                       D88
   B2=B2+1                   *NUMBER OF SECTORS TO DO                    D88
*IF DEF,PFMD,2
   BA = 0                    *INITIALIZE BASE ADDRESS REG.
   WC=504                    *INITIALIZE WORD COUNT REGISTER
*IF DEF,SFMD,2
   BA=4                      *INITIALIZE BASE ADDRESS REG.               D88
   WC=476                    *INITIALIZE WORD COUNT REGISTER             D88
*IF DEF,LSFMD,2 
   BA=4                      *INITIALIZE BASE ADDRESS REG.
   WC=500                    *INITIALIZE WORD COUNT REGISTER
   IF(P5.AND.10.EQ.0)EXIT    *IF NO SET DATA PATTERN                     D88
*                                                                        D88
/---------THE OUTPUT BUFFER WITH THE DATA PATTERN IN P6.                 D88
*                                                                        D88
*IF DEF,PFMD,1
   DUP P6 TO OB FOR WC       *GENERATE SET DATA PATTERN 
*IF DEF,SFMD,1
   DUP P6 TO OB(4) FOR WC    *GENERATE SET DATA PATTERN 
*IF DEF,LSFMD,1 
   DUP P6 TO OB(4) FOR WC    *GENERATE SET DATA PATTERN                  D88
   EXIT                      *EXIT THE MODULE                            D88
*                                                                        D88
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.                   D88
*                                                                        D88
40 IF(ES.AND.TM.NE.0)GOTO 42  *IF TERMINAL MODE SELECTED                 D88
   MSG 4 TO LINE 0           *TEST TITLE MESSAGE                         D88
   MSG 1 TO LINE 1           *MODULE NAME TO ERROR DISPLAY               D88
42 MSG B10 (B1) TO LINE 5    *ERROR MESSAGE TO DISPLAY                   D88
   MSG 7 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS                 D88
   MSG 10 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS               D88
   MSG 11 TO LINE B12        *MODULE INFORMATION LINE                    D88
   PICTURE                                                               D88
   HALT                      *REPORT ERROR AND WAIT FOR GO               D88
   MSG 12 TO PRINT                                                       D88
   BLANK                                                                 D88
*                                                                        D88
/---------DETERMINE THE MESSAGE TO POST FOR THE ERRORS                   D88
/---------DETECTED AND POST THE MESSAGE IN THE DAYFILE,                  D88
/---------PRINT FILE, AND ON THE DISPLAY SCREEN.                         D88
*                                                                        D88
   B2=2                      *PARAMETERS ERROR MESSAGE                   D88
   IF(B10.EQ.6) B2=3         *ACCESS LEVEL ERROR MESSAGE                 D88
   MSG B2 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.              D88
   END 30                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH897B VALIDATE PARAMETERS
*IF DEF,SFMD,1
COMPILE                      *D8897B VALIDATE PARAMETERS                 D88
*IF DEF,LSFMD,1 
COMPILE                      *DL897B VALIDATE PARAMETERS
*IF DEF,PFMD,4
   MODULE DH897C,DEMA1(14),LOCK 
***       DH897C - COMMAND ABORT PROCESSOR
**        DH897C - COMMAND ABORT PROCESSOR
*         DH897C - COMMAND ABORT PROCESSOR
*IF DEF,SFMD,4
   MODULE D8897C,FMDHT(7),LOCK                                           D88
***       D8897C - COMMAND ABORT PROCESSOR                               D88
**        D8897C - COMMAND ABORT PROCESSOR                               D88
*         D8897C - COMMAND ABORT PROCESSOR                               D88
*IF DEF,LSFMD,4 
   MODULE DL897C,LSFMD1(16),LOCK
***       DL897C - COMMAND ABORT PROCESSOR
**        DL897C - COMMAND ABORT PROCESSOR
*         DL897C - COMMAND ABORT PROCESSOR
*         --------------------------------                               D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         DISPLAY  THE COMMAND  THAT  THE  ABORT  OCCURRED ON  AND  THE  D88PTR4
*         ERROR MESSAGE GENERATED BY THE PRODUCT OVERLAY AT THE TIME OF  D88
*         THE ABORT.                                                     D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE B8 REGISTER CONTAINS ZERO, GO TO STEP 3.            D88
*         2.  POST  THE  FORMAT  MESSAGE  NUMBER  CONTAINED  IN  THE B8  D88
*             REGISTER.                                                  D88
*         3.  IF  THE  ERROR  CODE IN THE EC REGISTER IS LESS THAN 4000  D88
*             OCTAL, EXIT THE MODULE.                                    D88
*         4.  POST THE ERROR MESSAGE CONTAINED IN THE EM REGISTER.       D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         EC AND EM REGISTERS CONTAIN THE  ERROR  CODE AND  ERROR        D88PTR4
*           MESSAGE IF GENERATED BY THE PRODUCT OVERLAY ON AN ABORT.     D88
*         B8 REGISTER CONTAINS THE NUMBER FOR THE MALET I/O COMMAND      D88PTR4
*           BEING EXECUTED AT THE TIME OF THE ABORT.                     D88
*                                                                        D88
*         EXIT-                                                          D88
*         LINE 4 OF THE DISPLAY CONTAINS THE MESSAGE INDICATING THE I/O  D88
*           COMMAND BEING EXECUTED BY THE DRIVER AND LINE 5 CONTAINS     D88
*IF -DEF,CMSE17X                                                         D88
*           THE ERROR MESSAGE IF THE ERROR CODE WAS GENERATED BY MALET.  D88
*ENDIF                                                                   D88
*IF DEF,CMSE17X                                                          D88
*           THE ERROR MESSAGE IF THE ERROR CODE WAS GENERATED BY DEMOT.  D88
*ENDIF                                                                   D88
*IF DEF,PFMD,1
*         EXIT WILL ALWAYS BE TO MODULE DH897D. 
*IF DEF,SFMD,1
*         EXIT WILL ALWAYS BE TO MODULE D8897D.                          D88
*IF DEF,LSFMD,1 
*         EXIT WILL ALWAYS BE TO MODULE DL897D. 
*                                                                        D88
*         SUBMODULES REFERENECED-                                        D88
*IF DEF,PFMD,1
*         DH897D - PROCESS THE LAST FUNCTION CODES SENT TO THE 7155 
*IF DEF,SFMD,1
*         D8897D - PROCESS THE LAST FUNCTION CODES SENT TO THE 7155      D88PTR4
*IF DEF,LSFMD,1 
*         DL897D - PROCESS THE LAST FUNCTION CODES SENT TO THE 7155 
*                  CONTROLLER.                                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B12 = TEMPORARY STORAGE.                                       D88
*         B13 = TEMPORARY STORAGE.                                       D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.
*         EC  = DRIVER ERROR CODE                                        D88
*         EM  = ERROR MESSAGE ADDRESS                                    D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*IF DEF,PFMD,1
/---------MESSAGES FOR MALET I/O COMMANDS USED BY DH8.
*IF DEF,SFMD,1
/---------MESSAGES FOR MALET I/O COMMANDS USED BY D88.                   D88
*IF DEF,LSFMD,1 
/---------MESSAGES FOR MALET I/O COMMANDS USED BY DL8.
*                                                                        D88
*IF DEF,PFMD,24 
1  FORMAT DH8 ABORT ON .DIAGRD. COMMAND 
2  FORMAT DH8 ABORT ON .READCB. COMMAND 
3  FORMAT DH8 ABORT ON .RTNADDR. COMMAND
4  FORMAT DH8 ABORT ON .STATUS *A*A*A*A COMMAND 
5  FORMAT DH8 ABORT ON .STATUS DETAIL. COMMAND
10 FORMAT DH8 ABORT ON .*A*A*A. COMMAND 
12 FORMAT DH8 ABORT ON .VERIFY CODED. COMMAND 
20 FORMAT DH8 ABORT ON .GET SERIAL. COMMAND 
21 FORMAT DH8 ABORT ON .GET FACTORY. COMMAND
22 FORMAT DH8 ABORT ON .GET UTILITY. COMMAND
23 FORMAT DH8 ABORT ON .READ. COMMAND 
24 FORMAT DH8 ABORT ON .READ CODED. COMMAND 
25 FORMAT DH8 ABORT ON .READCW. COMMAND 
26 FORMAT DH8 ABORT ON .SHORTRD. COMMAND
30 FORMAT DH8 ABORT ON .WRITE. COMMAND
31 FORMAT DH8 ABORT ON .WRITE CODED. COMMAND
40 FORMAT DH8 ABORT ON .RES CONTROLLER. COMMAND 
41 FORMAT DH8 ABORT ON .RES DRIVE. COMMAND
42 FORMAT DH8 ABORT ON .RESET. COMMAND
43 FORMAT DH8 ABORT ON .MARGINS. COMMAND
44 FORMAT DH8 ABORT ON .SEEK. COMMAND 
45 FORMAT DH8 ABORT ON .FMDPT. COMMAND
46 FORMAT DH8 ABORT ON .*A*A COMMAND
47 FORMAT DH8 ABORT ON .COMPARE. COMMAND
*IF DEF,SFMD,24 
1  FORMAT D88 ABORT ON .DIAGRD. COMMAND                                  D88
2  FORMAT D88 ABORT ON .READCB. COMMAND                                  D88
3  FORMAT D88 ABORT ON .RTNADDR. COMMAND                                 D88
4  FORMAT D88 ABORT ON .STATUS *A*A*A*A COMMAND 
5  FORMAT D88 ABORT ON .STATUS DETAIL. COMMAND                           D88
10 FORMAT D88 ABORT ON .*A*A*A. COMMAND                                  D88
12 FORMAT D88 ABORT ON .VERIFY CODED. COMMAND                            D88
20 FORMAT D88 ABORT ON .GET SERIAL. COMMAND                              D88
21 FORMAT D88 ABORT ON .GET FACTORY. COMMAND                             D88
22 FORMAT D88 ABORT ON .GET UTILITY. COMMAND                             D88
23 FORMAT D88 ABORT ON .READ. COMMAND                                    D88
24 FORMAT D88 ABORT ON .READ CODED. COMMAND                              D88
25 FORMAT D88 ABORT ON .READCW. COMMAND                                  D88
26 FORMAT D88 ABORT ON .SHORTRD. COMMAND                                 D88
30 FORMAT D88 ABORT ON .WRITE. COMMAND                                   D88
31 FORMAT D88 ABORT ON .WRITE CODED. COMMAND                             D88
40 FORMAT D88 ABORT ON .RES CONTROLLER. COMMAND                          D88
41 FORMAT D88 ABORT ON .RES DRIVE. COMMAND                               D88
42 FORMAT D88 ABORT ON .RESET. COMMAND                                   D88
43 FORMAT D88 ABORT ON .MARGINS. COMMAND                                 D88
44 FORMAT D88 ABORT ON .SEEK. COMMAND                                    D88
45 FORMAT D88 ABORT ON .FMDPT. COMMAND                                   D88
46 FORMAT D88 ABORT ON .*A*A COMMAND
47 FORMAT D88 ABORT ON .COMPARE. COMMAND                                 D88
*IF DEF,LSFMD,24
1  FORMAT DL8 ABORT ON .DIAGRD. COMMAND 
2  FORMAT DL8 ABORT ON .READCB. COMMAND 
3  FORMAT DL8 ABORT ON .RTNADDR. COMMAND
4  FORMAT DL8 ABORT ON .STATUS *A*A*A*A COMMAND 
5  FORMAT DL8 ABORT ON .STATUS DETAIL. COMMAND
10 FORMAT DL8 ABORT ON .*A*A*A. COMMAND 
12 FORMAT DL8 ABORT ON .VERIFY CODED. COMMAND 
20 FORMAT DL8 ABORT ON .GET SERIAL. COMMAND 
21 FORMAT DL8 ABORT ON .GET FACTORY. COMMAND
22 FORMAT DL8 ABORT ON .GET UTILITY. COMMAND
23 FORMAT DL8 ABORT ON .READ. COMMAND 
24 FORMAT DL8 ABORT ON .READ CODED. COMMAND 
25 FORMAT DL8 ABORT ON .READCW. COMMAND 
26 FORMAT DL8 ABORT ON .SHORTRD. COMMAND
30 FORMAT DL8 ABORT ON .WRITE. COMMAND
31 FORMAT DL8 ABORT ON .WRITE CODED. COMMAND
40 FORMAT DL8 ABORT ON .RES CONTROLLER. COMMAND 
41 FORMAT DL8 ABORT ON .RES DRIVE. COMMAND
42 FORMAT DL8 ABORT ON .RESET. COMMAND
43 FORMAT DL8 ABORT ON .MARGINS. COMMAND
44 FORMAT DL8 ABORT ON .SEEK. COMMAND 
45 FORMAT DL8 ABORT ON .FMDPT. COMMAND
46 FORMAT DL8 ABORT ON .*A*A COMMAND
47 FORMAT DL8 ABORT ON .COMPARE. COMMAND
*                                                                        D88
/---------PROCESS LAST I/O MALET COMMAND EXECUTED.                       D88
*                                                                        D88
70 IF(B8.EQ.0) GOTO 76       *IF NOT COMMAND NUMBER                      D88
   B12=705                   *GENERAL. IN DISPLAY CODE
   B13=1605 
   B14=2201 
   B15=1457 
   IF(B8.EQ.4) GOTO 73       *IF STATUS GENERAL COMMAND 
   B12=310                   *CHANNEL. IN DISPLAY CODE
   B13=116
   B14=1605 
   B15=1457 
   IF(B8.EQ.6) GOTO 73       *IF CHANNEL STATUS COMMAND 
   B12=411                   *DIAGWR IN DISPLAY CODE                     D88
   B13=107                                                               D88
   B14=2722                                                              D88
   IF(B8.EQ.10) GOTO 72      *IF DIAGWR COMMAND 
   B12=2605                  *VERIFY IN DISPLAY CODE                     D88
   B13=2211                                                              D88
   B14=631                                                               D88
   IF(B8.EQ.11) GOTO 72      *IF VERIFY COMMAND 
   B12=2205                  *REL. IN DISPLAY CODE
   B13=1457 
   IF(B8.EQ.46) GOTO 71      *IF REL COMMAND
   B12=1725                  *OUT. IN DISPLAY CODE
   B13=2457 
   IF(B8.NE.50) GOTO 74      *IF NOT OUT COMMAND
71 MSG 46 (B12,B13) TO LINE 4  *ABORT MESSAGE 
   GOTO 75
72 MSG 10 (B12,B13,B14) TO LINE 4  *ABORT MESSAGE                        D88
   GOTO 75
73 MSG 4(B12,B13,B14,B15) TO LINE 4  *ABORT MESSAGE 
   GOTO 75
74 MSG B8 TO LINE 4          *ABORT MESSAGE 
75 IF(EC.LT.4000) GOTO 76    *IF NOT AN ABORT ERROR CODE
   MSG EM TO LINE 5          *PRODUCT OVERLAY ERROR MESSAGE              D88
76 EXIT TO 97D               *EXIT TO NEXT SUBMODULE                     D88
   END 70                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH897C COMMAND ABORT PROCESSOR
*IF DEF,SFMD,1
COMPILE                      *D8897C COMMAND ABORT PROCESSOR             D88
*IF DEF,LSFMD,1 
COMPILE                      *DL897C COMMAND ABORT PROCESSOR
*IF DEF,PFMD,4
   MODULE DH897D,DEMA1(14),LOCK 
***       DH897D - LAST FUNCTION PROCESSOR
**        DH897D - LAST FUNCTION PROCESSOR
*         DH897D - LAST FUNCTION PROCESSOR
*IF DEF,SFMD,4
   MODULE D8897D,FMDHT(7),LOCK                                           D88
***       D8897D - LAST FUNCTION PROCESSOR                               D88
**        D8897D - LAST FUNCTION PROCESSOR                               D88
*         D8897D - LAST FUNCTION PROCESSOR                               D88
*IF DEF,LSFMD,4 
   MODULE DL897D,LSFMD1(16),LOCK
***       DL897D - LAST FUNCTION PROCESSOR
**        DL897D - LAST FUNCTION PROCESSOR
*         DL897D - LAST FUNCTION PROCESSOR
*         --------------------------------                               D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         DISPLAY  THE  LAST  MAJOR  FUNCTION  CODE  ISSUED TO THE 7155  D88
*         CONTROLLER PRIOR TO THE CURRENT FAILURE.                       D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  SET  THE  B13  REGISTER TO ZERO IF THE RETRY COUNT IN THE  D88
*             STATUS BUFFER IS ZERO, OTHERWISE SET THE B13 REGISTER  TO  D88
*             25 OCTAL.                                                  D88
*         2.  IF THE GENERAL STATUS IN THE STATUS BUFFER  IS  EQUAL  TO  D88
*             7777 OCTAL, GO TO STEP 5.                                  D88PTR4
*         3.  IF BIT 11 IS NOT SET IN THE GENERAL STATUS AS DEFINED  BY  D88
*             THE B13 REGISTER, GO TO STEP 5.                            D88
*         4.  IF DETAILED STATUS WORD THREE IS NOT EQUAL TO 7777 OCTAL,  D88
*             GO TO STEP 6.                                              D88PTR4
*         5.  SET THE B13 REGISTER EQUAL TO THE LF REGISTER AND  GO  TO  D88
*             STEP 7.                                                    D88
*         6.  SET THE B13 REGISTER  EQUAL  TO  BITS  4-11  OF  DETAILED  D88
*             STATUS  WORD  3  IN  THE STATUS BUFFER DEFINED BY THE B13  D88
*             REGISTER.                                                  D88
*         7.  IF  THE  FUNCTION CODE IN THE B13 REGISTER IS 0, OR 1, OR  D88
*             2, OR 3, OR 4, OR 5, OR 6, OR 7, OR 10, OR 12, OR 14,  OR  D88
*             20,  OR  21, OR 23, OR 30, OR 31, OR 32, OR 33, OR 34, OR  D88
*             35, OR 36, OR 37, POST THE MESSAGE  INDICATING  THE  LAST  D88
*             FUNCTION SENT TO THE 7155 CONTROLLER.                      D88
*         8.  IF THE FUNCTION CODE IN THE B13 REGISTER IS  NOT  ONE  OF  D88
*IF DEF,PFMD,1
*             THOSE LISTED IN STEP 7, EXIT TO MODULE DH897E.
*IF DEF,SFMD,1
*             THOSE LISTED IN STEP 7, EXIT TO MODULE D8897E.             D88
*IF DEF,LSFMD,1 
*             THOSE LISTED IN STEP 7, EXIT TO MODULE DL897E.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         LF REGISTER CONTAINS THE LAST FUNCTION SENT TO THE 7155        D88
*           CONTROLLER.                                                  D88
*         STATUS BUFFER CONTAINS STATUS INFORMATION.                     D88
*                                                                        D88
*         EXIT-                                                          D88
*         IF THE FUNCTION CODE SENT TO THE 7155 CONTROLLER WAS A CODE    D88
*           FROM 0 THROUGH 30, DISPLAY LINE 6 CONTAINS A MESSAGE         D88
*           INDICATING THE LAST FUNCTION SENT TO THE 7155 CONTROLLER     D88
*IF DEF,PFMD,1
*           AND EXIT IS ALWAYS TO MODULE DH897F.
*IF DEF,SFMD,1
*           AND EXIT IS ALWAYS TO MODULE D8897F.                         D88
*IF DEF,LSFMD,1 
*           AND EXIT IS ALWAYS TO MODULE DL897F.
*         IF THE FUNCTION CODE WAS GREATER THAN 37, EXIT TO MODULE       D88
*IF DEF,PFMD,1
*           DH897E. 
*IF DEF,SFMD,1
*           D8897E.                                                      D88
*IF DEF,LSFMD,1 
*           DL897E. 
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,2
*         DH897E - LAST FUNCTION PROCESSOR. 
*         DH897F - DISPLAY STATUS INFORMATION.
*IF DEF,SFMD,2
*         D8897E - LAST FUNCTION PROCESSOR.                              D88
*         D8897F - DISPLAY STATUS INFORMATION.                           D88
*IF DEF,LSFMD,2 
*         DL897E - LAST FUNCTION PROCESSOR. 
*         DL897F - DISPLAY STATUS INFORMATION.
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B13 = TEMPORARY STORAGE.                                       D88
*         LF  = LAST FUNCTION ISSUED.                                    D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES FOR THE FUNCTIONS SENT TO THE CONTROLLER.             D88
*                                                                        D88
0  FORMAT LAST FUNCTION = 000B (CONNECT)                                 D88
1  FORMAT LAST FUNCTION = 001B (SEEK 1 TO 1 INTERLACE)                   D88
2  FORMAT LAST FUNCTION = 002B (SEEK 2 TO 1 INTERLACE)                   D88
4  FORMAT LAST FUNCTION = 004B (READ)                                    D88
5  FORMAT LAST FUNCTION = 005B (WRITE)                                   D88
6  FORMAT LAST FUNCTION = 006B (WRITE VERIFY)                            D88
7  FORMAT LAST FUNCTION = 007B (READ CHECKWORD)                          D88
10 FORMAT LAST FUNCTION = 010B (OPERATION COMPLETE)                      D88
12 FORMAT LAST FUNCTION = 012B (GENERAL STATUS)                          D88
14 FORMAT LAST FUNCTION = 014B (CONTINUE)                                D88
20 FORMAT LAST FUNCTION = 020B (DRIVE RELEASE)                           D88
21 FORMAT LAST FUNCTION = 021B (RETURN CYLINDER ADDRESS)                 D88
23 FORMAT LAST FUNCTION = 023B (20-WORD DETAILED STATUS)                 D88
30 FORMAT LAST FUNCTION = 030B (READ FACTORY DATA)                       D88
31 FORMAT LAST FUNCTION = 031B (READ UTILITY MAP)                        D88
32 FORMAT LAST FUNCTION = 032B (BLOCK TRANSFER BUFFER READ)              D88
33 FORMAT LAST FUNCTION = 033B (BLOCK TRANSFER BUFFER WRITE)             D88
34 FORMAT LAST FUNCTION = 034B (READ PROTECTED SECTOR)                   D88
35 FORMAT LAST FUNCTION = 035B (WRITE LAST SECTOR)                       D88
36 FORMAT LAST FUNCTION = 036B (WRITE VERIFY LAST SECTOR)                D88
37 FORMAT LAST FUNCTION = 037B (WRITE PROTECTED SECTOR)                  D88
*                                                                        D88
/---------DETERMINE THE FUNCTION ISSUED CAUSING THE ERROR.               D88
*                                                                        D88
70 B13=0                           *BUFFER INDEX IF NO RETRY             D88
   IF(SB(52).NE.0) B13=25          *BUFFER INDEX ON RETRY                D88
   IF(SB.EQ.7777) GOTO 71          *IF NO GENERAL STATUS                 D88
   IF(SB(B13).AND.4000.EQ.0)GOTO 71  *IF NO DETAILED STATUS              D88
   IF(SB(B13+3).NE.7777)GOTO 72      *IF VALID DETAIL STATUS             D88
71 B13 = LF                        *USE LF REGISTER AS INDEX             D88
   GOTO 73                                                               D88
72 B13 = SB(B13+3).RS.4      *LAST FUNCTION FROM CONTROLWARE             D88
*                                                                        D88
/---------CHECK FOR A KNOWN FUNCTION CODE.                               D88
*                                                                        D88
73 IF(B13.LT.11) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.12) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.14) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.20) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.21) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.23) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.30) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.31) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.32) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.33) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.34) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.35) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.36) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.37) GOTO 74     *IF KNOWN FUNCTION                          D88
   EXIT TO 97E               *EXIT TO NEXT MODULE                        D88
*                                                                        D88
/---------POST THE MESSAGE FOR THE LAST FUNCTION.                        D88
*                                                                        D88
74 MSG B13 TO LINE 6         *POST LAST FUNCTION MESSAGE                 D88
   EXIT TO 97F               *EXIT TO THE NEXT MODULE                    D88
   END 70                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH897D LAST FUNCTION PROCESSOR
*IF DEF,SFMD,1
COMPILE                      *D8897D LAST FUNCTION PROCESSOR             D88
*IF DEF,LSFMD,1 
COMPILE                      *DL897D LAST FUNCTION PROCESSOR
*IF DEF,PFMD,4
   MODULE DH897E,DEMA1(14),LOCK 
***       DH897E - LAST FUNCTION PROCESSOR
**        DH897E - LAST FUNCTION PROCESSOR
*         DH897E - LAST FUNCTION PROCESSOR
*IF DEF,SFMD,4
   MODULE D8897E,FMDHT(7),LOCK                                           D88
***       D8897E - LAST FUNCTION PROCESSOR                               D88
**        D8897E - LAST FUNCTION PROCESSOR                               D88
*         D8897E - LAST FUNCTION PROCESSOR                               D88
*IF DEF,LSFMD,4 
   MODULE DL897E,LSFMD1(16),LOCK
***       DL897E - LAST FUNCTION PROCESSOR
**        DL897E - LAST FUNCTION PROCESSOR
*         DL897E - LAST FUNCTION PROCESSOR
*         --------------------------------                               D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         DISPLAY  THE  LAST  MAJOR  FUNCTION  CODE  ISSUED TO THE 7155  D88
*         CONTROLLER PRIOR TO THE CURRENT FAILURE.                       D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE FUNCTION CODE IN THE B13 REGISTER IS 40, OR 41, OR  D88
*             43, OR 46, OR 47, OR 56, OR 64, OR 414, POST THE  MESSAGE  D88
*             INDICATING  THE  FUNCTION  SENT  TO  THE 7155 CONTROLLER.  D88
*         2.  IF  THE  FUNCTION  CODE IN THE B13 REGISTER IS NOT ONE OF  D88
*             THOSE LISTED IN STEP 7, POST  A  MESSAGE  INDICATING  THE  D88
*             FUNCTION CODE IS SENT TO THE 7155 CONTROLLER.              D88PTR4
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B13 REGISTER CONTAINS THE LAST FUNCTION SENT TO THE 7155       D88
*           CONTROLLER.                                                  D88
*                                                                        D88
*         EXIT-                                                          D88
*         DISPLAY LINE 6 CONTAINS A MESSAGE INDICATING THE LAST          D88
*           FUNCTION SENT TO THE 7155 CONTROLLER.                        D88
*IF DEF,PFMD,1
*         EXIT IS ALWAYS TO MODULE DH897F.
*IF DEF,SFMD,1
*         EXIT IS ALWAYS TO MODULE D8897F.                               D88
*IF DEF,LSFMD,1 
*         EXIT IS ALWAYS TO MODULE DL897F.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,1
*         DH897F - DISPLAY STATUS INFORMATION.
*IF DEF,SFMD,1
*         D8897F - DISPLAY STATUS INFORMATION.                           D88
*IF DEF,LSFMD,1 
*         DL897F - DISPLAY STATUS INFORMATION.
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B13 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES FOR THE FUNCTIONS SENT TO THE CONTROLLER.             D88
*                                                                        D88
40 FORMAT LAST FUNCTION = 040B (READ SHORT)                              D88
41 FORMAT LAST FUNCTION = 041B (SELECT STROBES AND OFFSETS)              D88
43 FORMAT LAST FUNCTION = 043B (BUFFER READ)                             D88
44 FORMAT LAST FUNCTION = 044B (BUFFER WRITE)                            D88
46 FORMAT LAST FUNCTION = 046B (WRITE BUFFER TO DISK)                    D88
47 FORMAT LAST FUNCTION = 047B (SCAN CYLINDER ADDRESSES)                 D88
50 FORMAT LAST FUNCTION = 50B (OUTPUT ON PROCESSOR CHANNEL) 
52 FORMAT LAST FUNCTION = 52B (INPUT PROCESSOR CH. STATUS)
56 FORMAT LAST FUNCTION = 056B (INPUT TIMING DATA)                       D88
64 FORMAT LAST FUNCTION = 064B (TIME DIFFERENCE COUNTER)                 D88
66 FORMAT LAST FUNCTION = 414B (AUTOLOAD FROM PP)                        D88
67 FORMAT LAST FUNCTION = *OCTB                                          D88
*                                                                        D88
/---------CHECK FOR A KNOWN FUNCTION CODE.                               D88
*                                                                        D88
70 IF(B13.EQ.40) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.41) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.43) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.44) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.46) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.47) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.50) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.52) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.56) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.64) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.NE.414)GOTO 75     *IF UNKNOWN FUNCTION                        D88
   B13 = 66                  *AUTOLOAD FUNCTION                          D88
*                                                                        D88
/---------POST THE MESSAGE FOR THE LAST FUNCTION.                        D88
*                                                                        D88
74 MSG B13 TO LINE 6         *POST LAST FUNCTION MESSAGE                 D88
   EXIT TO 97F               *EXIT TO THE NEXT MODULE                    D88
75 MSG 67 (B13) TO LINE 6    *POST UNKNOWN FUNCTION MESSAGE              D88
   EXIT TO 97F               *EXIT TO THE NEXT MODULE                    D88
   END 70                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH897E LAST FUNCTION PROCESSOR
*IF DEF,SFMD,1
COMPILE                      *D8897E LAST FUNCTION PROCESSOR             D88
*IF DEF,LSFMD,1 
COMPILE                      *DL897E LAST FUNCTION PROCESSOR
*IF DEF,PFMD,4
   MODULE DH897F,DEMA1(14),LOCK 
***       DH897F - STATUS DISPLAY 
**        DH897F - STATUS DISPLAY 
*         DH897F - STATUS DISPLAY 
*IF DEF,SFMD,4
   MODULE D8897F,FMDHT(7),LOCK                                           D88
***       D8897F - STATUS DISPLAY                                        D88
**        D8897F - STATUS DISPLAY                                        D88
*         D8897F - STATUS DISPLAY                                        D88
*IF DEF,LSFMD,4 
   MODULE DL897F,LSFMD1(16),LOCK
***       DL897F - STATUS DISPLAY 
**        DL897F - STATUS DISPLAY 
*         DL897F - STATUS DISPLAY 
*         -----------------------                                        D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         DISPLAY  THE  VARIOUS  STATUSES  AND OTHER USEFUL INFORMATION  D88
*         RELATED TO THE CURRENT FAILURE.                                D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  POST  FORMAT  MESSAGE  1 TO LINE 7 (WT, RETRIES, MARGINS,  D88
*             AND ERRORS).                                               D88
*IF DEF,SFMD
*         2.  GO  TO STEP 4 IF P4 BIT 5 (ENABLE BUFFER/REGISTER OUTPUT)  D88
*             IS NOT SET.                                                D88
*         3.  POST FORMAT MESSAGES 2, 3, 4 AND 5 TO THE DISPLAY (IB,OB,  D88
*             ALL B REGISTERS).                                          D88
*         4.  IF  THE B8 REGISTER CONTAINS 40 (RES,CONTROLLER COMMAND),  D88
*             GO TO STEP 10.                                             D88
*         5.  IF THE B8 REGISTER CONTAINS 41 (RES,DRIVE COMMAND), GO TO  D88
*             STEP 10.                                                   D88
*         6.  GO TO STEP 10 IF THE CYLINDER IDENTIFIED BY  REGISTER  B7  D88
*             IS 7777 (INVALID CYLINDER ADDRESS).                        D88
*         7.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED),  D88
*             POST FORMAT MESSAGE 6.                                     D88
*         8.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL  D88
*             STATUS IS ZERO (SUCCESSFUL RECOVERY), POST FORMAT MESSAGE  D88
*             7.                                                         D88
*         9.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL  D88
*             STATUS  IS  NON-ZERO (UNSUCCESSFUL RECOVERY), POST FORMAT  D88
*             MESSAGE 10.                                                D88
*         10. IF  THE  ERROR  CODE  IN  THE EC REGISTER IS NOT EQUAL TO  D88
*             5231, GO TO STEP 12.                                       D88
*         11. POST  MESSAGES  11 AND 12 INDICATING A COMPARE ERROR ON A  D88
*             READ CODED DRIVER COMMAND.                                 D88
*         12. IF  THE  ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 1,  D88
*             GO TO STEP 15.                                             D88
*         13. IF  THE NUMBER IN THE B8 REGISTER IS 24 INDICATING A READ  D88
*             CODED MALET COMMAND SET  THE  DATA  BUFFER  INDEX  TO  4,  D88
*             OTHERWISE SET THE INDEX TO 0.                              D88
*         14. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST UP  TO  D88
*             FOUR MESSAGES (13).                                        D88
*         15. IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL  TO  2,  D88
*             GO TO STEP 17.                                             D88
*         16. POST MESSAGES 22 INDICATING A STATUS ERROR ON  A  COMPARE  D88
*             OF TWO STATUS WORDS.                                       D88
*         17. IF STATUS BUFFER WORD 0 IS EQUAL TO  7777  OR  THE  RETRY  D88
*             COUNT  AND  STATUS BUFFER WORD 0 ARE EQUAL TO ZERO, GO TO  D88
*             STEP 21.                                                   D88
*         18. POST MESSAGE 14.                                           D88
*         19. IF THE RETRY COUNT IS NOT EQUAL TO  ZERO,  POST  MESSAGES  D88
*             15, 16, 20, AND 21 TO DISPLAY THE STATUSES FROM LOCATIONS  D88
*             25 OCTAL THROUGH 51 OCTAL IN THE STATUS BUFFER.            D88
*         20. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS  D88
*             BUFFER IS NOT EQUAL TO ZERO, POST MESSAGES  15,  17,  20,  D88
*             AND  21  TO DISPLAY THE STATUSES FROM LOCATIONS 0 THROUGH  D88
*             24 OCTAL IN THE STATUS BUFFER.                             D88
*         21. EXIT THE MODULE TO D8897G.                                 D88
*ENDIF
*IF DEF,LSFMD 
*         2.  GO  TO STEP 4 IF P4 BIT 5 (ENABLE BUFFER/REGISTER OUTPUT) 
*             IS NOT SET. 
*         3.  POST FORMAT MESSAGES 2, 3, 4 AND 5 TO THE DISPLAY (IB,OB, 
*             ALL B REGISTERS). 
*         4.  IF  THE B8 REGISTER CONTAINS 40 (RES,CONTROLLER COMMAND), 
*             GO TO STEP 10.
*         5.  IF THE B8 REGISTER CONTAINS 41 (RES,DRIVE COMMAND), GO TO 
*             STEP 10.
*         6.  GO TO STEP 10 IF THE CYLINDER IDENTIFIED BY  REGISTER  B7 
*             IS 7777 (INVALID CYLINDER ADDRESS). 
*         7.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED), 
*             POST FORMAT MESSAGE 6.
*         8.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS IS ZERO (SUCCESSFUL RECOVERY), POST FORMAT MESSAGE 
*             7.
*         9.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS  IS  NON-ZERO (UNSUCCESSFUL RECOVERY), POST FORMAT 
*             MESSAGE 10. 
*         10. IF  THE  ERROR  CODE  IN  THE EC REGISTER IS NOT EQUAL TO 
*             5231, GO TO STEP 12.
*         11. POST  MESSAGES  11 AND 12 INDICATING A COMPARE ERROR ON A 
*             READ CODED DRIVER COMMAND.
*         12. IF  THE  ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 1, 
*             GO TO STEP 15.
*         13. IF  THE NUMBER IN THE B8 REGISTER IS 24 INDICATING A READ 
*             CODED MALET COMMAND SET  THE  DATA  BUFFER  INDEX  TO  4, 
*             OTHERWISE SET THE INDEX TO 0. 
*         14. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST UP  TO 
*             FOUR MESSAGES (13). 
*         15. IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL  TO  2, 
*             GO TO STEP 17.
*         16. POST MESSAGES 22 INDICATING A STATUS ERROR ON  A  COMPARE 
*             OF TWO STATUS WORDS.
*         17. IF STATUS BUFFER WORD 0 IS EQUAL TO  7777  OR  THE  RETRY 
*             COUNT  AND  STATUS BUFFER WORD 0 ARE EQUAL TO ZERO, GO TO 
*             STEP 21.
*         18. POST MESSAGE 14.
*         19. IF THE RETRY COUNT IS NOT EQUAL TO  ZERO,  POST  MESSAGES 
*             15, 16, 20, AND 21 TO DISPLAY THE STATUSES FROM LOCATIONS 
*             25 OCTAL THROUGH 51 OCTAL IN THE STATUS BUFFER. 
*         20. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS 
*             BUFFER IS NOT EQUAL TO ZERO, POST MESSAGES  15,  17,  20, 
*             AND  21  TO DISPLAY THE STATUSES FROM LOCATIONS 0 THROUGH 
*             24 OCTAL IN THE STATUS BUFFER.
*         21. EXIT THE MODULE TO DL897G.
*ENDIF
*IF DEF,PFMD
*         2.  IF THE B8 REGISTER CONTAINS 40 (RES,CONTROLLER  COMMAND), 
*             GO TO STEP 8. 
*         3.  IF THE B8 REGISTER CONTAINS 41 (RES,DRIVE COMMAND), GO TO 
*             STEP 8. 
*         4.  GO  TO  STEP 10 IF THE CYLINDER IDENTIFIED BY REGISTER B7 
*             IS 7777 (INVALID CYLINDER ADDRESS). 
*         5.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED), 
*             POST FORMAT MESSAGE 6.
*         6.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS IS ZERO (SUCCESSFUL RECOVERY), POST FORMAT MESSAGE 
*             7.
*         7.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS  IS  NON-ZERO (UNSUCCESSFUL RECOVERY), POST FORMAT 
*             MESSAGE 10. 
*         8.  IF  THE  ERROR  CODE  IN  THE EC REGISTER IS NOT EQUAL TO 
*             5331, GO TO STEP 10.
*         9.  POST  MESSAGES  11 AND 12 INDICATING A COMPARE ERROR ON A 
*             READ CODED DRIVER COMMAND.
*         10. IF  THE  ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 1, 
*             GO TO STEP 13.
*         11. IF  THE NUMBER IN THE B8 REGISTER IS 24 INDICATING A READ 
*             CODED MALET COMMAND SET  THE  DATA  BUFFER  INDEX  TO  4, 
*             OTHERWISE SET THE INDEX TO 0. 
*         12. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST UP  TO 
*             FOUR MESSAGES (13). 
*         13. IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL  TO  2, 
*             GO TO STEP 15.
*         14. POST MESSAGES 22 INDICATING A STATUS ERROR ON  A  COMPARE 
*             OF TWO STATUS WORDS.
*         15. IF STATUS BUFFER WORD 0 IS EQUAL TO  7777  OR  THE  RETRY 
*             COUNT  AND  STATUS BUFFER WORD 0 ARE EQUAL TO ZERO, GO TO 
*             STEP 19.
*         16. POST MESSAGE 14.
*         17. IF THE RETRY COUNT IS NOT EQUAL TO  ZERO,  POST  MESSAGES 
*             15, 16, 20, AND 21 TO DISPLAY THE STATUSES FROM LOCATIONS 
*             25 OCTAL THROUGH 51 OCTAL IN THE STATUS BUFFER. 
*         18. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS 
*             BUFFER IS NOT EQUAL TO ZERO, POST MESSAGES  15,  17,  20, 
*             AND  21  TO DISPLAY THE STATUSES FROM LOCATIONS 0 THROUGH 
*             24 OCTAL IN THE STATUS BUFFER.
*         19. EXIT THE MODULE TO DH896G.
*ENDIF
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B5  = CURRENT SECTOR NUMBER.                                   D88
*         B6  = CURRENT TRACK NUMBER.                                    D88
*         B7  = CURRENT CYLINDER NUMBER.                                 D88
*         B8  = NUMBER FOR THE LAST PRODUCT OVERLAY COMMAND EXECUTED.    D88
*         EC  = ERROR CODE NUMBER.                                       D88
*         WT  = NUMBER OF WORDS TRANSMITTED.                             D88
*         BA  = THE BASE ADDRESS ON A DATA COMPARE ERROR.                D88
*         OUTPUT DATA BUFFER CONTAINS THE EXPECTED DATA FOR COMPARE      D88
*           DATA ERRORS.                                                 D88
*         INPUT DATA BUFFER CONTAINS THE ACTUAL DATA FOR COMPARE DATA    D88
*           ERRORS.                                                      D88
*         STATUS BUFFER CONTAINS THE GENERAL STATUS, DETAILED STATUS,    D88
*           AND RETRY COUNT.                                             D88
*                                                                        D88
*         EXIT-                                                          D88
*         B12 = NEXT LINE NUMBER IN THE DISPLAY BUFFER.                  D88
*         MESSAGES POSTED FOR THE STATUSES TO BE DISPLAYED.              D88
*IF DEF,PFMD,1
*         EXIT IS ALWAYS TO MODULE DH897G.
*IF DEF,SFMD,1
*         EXIT IS ALWAYS TO MODULE D8897G.                               D88
*IF DEF,LSFMD,1 
*         EXIT IS ALWAYS TO MODULE DL897G.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,1
*         DH897G - CRACK GENERAL AND DETAILED STATUS. 
*IF DEF,SFMD,1
*         D8897G - CRACK GENERAL AND DETAILED STATUS.                    D88
*IF DEF,LSFMD,1 
*         DL897G - CRACK GENERAL AND DETAILED STATUS. 
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B11 = ERROR COUNTER.                                           D88
*         B12 = DISPLAY LINE NUMBER                                      D88
*         B13 = TEMPORARY STORAGE.                                       D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         INPUT BUFFER LOCATIONS 502, 503, AND 504 ARE USED FOR          D88
*           TEMPORARY STORAGE.                                           D88
*                                                                        D88
/---------MESSAGES FOR THE STATUSES TO BE DISPLAYED.                     D88
*                                                                        D88
1  FORMAT WT=*OCT  RETRIES=*O  MARGINS=*O  ERRORS=*DEC                   D88
*IF DEF,SFMD
2  FORMAT IB(P8)  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
3  FORMAT OB(P8)  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
4  FORMAT B0-B7   = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT              D88
5  FORMAT B8-B15  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT              D88
*ENDIF
*IF DEF,LSFMD 
2  FORMAT IB(P8)  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
3  FORMAT OB(P8)  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
4  FORMAT B0-B7   = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
5  FORMAT B8-B15  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
*ENDIF
6  FORMAT CYL=*OCT TRK=*O SEC=*O                                         D88
7  FORMAT CYL=*OCT TRK=*O SEC=*O  - SUCCESSFUL RECOVERY                  D88
10 FORMAT CYL=*OCT TRK=*O SEC=*O  - UNSUCCESSFUL RECOVERY                D88
11 FORMAT COMPARE ERROR - EXPECTED  CYL=*OCT  TRK=*O  SEC=*O             D88
12 FORMAT                 ACTUAL    CYL=*OCT  TRK=*O  SEC=*O             D88
13 FORMAT DATA ERROR - W*OCT  E*OCT  A*OCT  D*OCT                        D88
14 FORMAT                  WORD    DETAILED STATUS (OCTAL)               D88
15 FORMAT                    1     *OCT *OCT *OCT *OCT *OCT              D88
16 FORMAT FIRST GENERAL      6     *OCT *OCT *OCT *OCT *OCT              D88
17 FORMAT LAST GENERAL       6     *OCT *OCT *OCT *OCT *OCT              D88
20 FORMAT STATUS= *OCTB     11D    *OCT *OCT *OCT *OCT *OCT              D88
21 FORMAT                   16D    *OCT *OCT *OCT *OCT *OCT              D88
22 FORMAT STATUS ERROR - W*OCT  E*OCT  A*OCT  D*OCT                      D88
*IF DEF,LSFMD,1 
23 FORMAT SMALL SECTOR ADDRESS  CYL=*OCT  TRK=*O  SEC=*O
*                                                                        D88
/---------BUILD THE STATUS DISPLAY FOR THE ERROR.                        D88
*                                                                        D88
30 B13=B11+1                           *UPDATE ERROR COUNT               D88
   MSG 1 (WT,SB(52),B9,B13) TO LINE 7  *DISPLAY LINE 7                   D88
*IF DEF,SFMD
   IF(P4.AND.40.EQ.0) GOTO 32         *IF NOT BUFFER DUMP                D88
   B13 = P8 
   MSG 2 10 WORDS FROM IB(B13) TO LINE 44  *DISPLAY IB(P8)
   MSG 3 10 WORDS FROM OB(B13) TO LINE 45  *DISPLAY OB(P8)
   MSG 4 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE 46      *B0-B7                D88
   MSG 5 (B8,B9,B10,B11,B12,B13,B14,B15) TO LINE 47  *B8-B15             D88
32 B12=10                    *LINE NUMBER ON THE DISPLAY                 D88
*ENDIF
*IF DEF,LSFMD 
   IF(P4.AND.40.EQ.0) GOTO 32         *IF NOT BUFFER DUMP 
   B13 = P8 
   MSG 2 10 WORDS FROM IB(B13) TO LINE 44  *DISPLAY IB(P8)
   MSG 3 10 WORDS FROM OB(B13) TO LINE 45  *DISPLAY OB(P8)
   MSG 4 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE 46      *B0-B7 
   MSG 5 (B8,B9,B10,B11,B12,B13,B14,B15) TO LINE 47  *B8-B15
32 B12=10                    *LINE NUMBER ON THE DISPLAY
*ENDIF
*IF DEF,PFMD,1
   B12=10                    *LINE NUMBER ON THE DISPLAY
*                                                                        D88
/---------DISPLAY THE CURRENT CYLINDER, TRACK, AND SECTOR.               D88
*                                                                        D88
   IF(B8.EQ.40) GOTO 36      *IF RES CONTROLLER COMMAND                  D88
   IF(B8.EQ.41) GOTO 36      *IF RES DRIVE COMMAND                       D88
   IF(B7.EQ.7777) GOTO 36    *IF INVALID CYLINDER NUMBER                 D88
   B13=6                     *NO RECOVERY MESSAGE                        D88
   IF(SB(52).EQ.0) GOTO 34   *IF NO RECOVERY ATTEMPTED                   D88
   B13=7                     *SUCCESSFUL RECOVERY MESSAGE                D88
   IF(SB.EQ.0) GOTO 34       *IF SUCCESSFUL RECOVERY                     D88
   B13=10                    *UNSUCCESSFUL RECOVERY MESSAGE              D88
34 MSG B13 (B7,B6,B5) TO LINE 10  *POST THE MESSAGE                      D88
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER             D88
*IF DEF,LSFMD,3 
   B5 = SB(7).AND.7760.RS.4      *SECTOR ADDRESS FROM DETAILED STATUS 
   MSG 23 (B7,B6,B5) TO LINE 11  *SMALL SECTOR ADDRESS
   B12 = B12 + 1
*                                                                        D88
/---------DISPLAY THE CYLINDER, TRACK, AND SECTOR ON A READ              D88
/---------CODED COMPARE ERROR.                                           D88
*                                                                        D88
36 IF(EC.AND.4077.NE.4031)GOTO 40  *IF NO RD CODED COMP ERRR
   B12=B12+1                   *UPDATE DISPLAY LINE NUMBER               D88
   MSG 11 (B7,B6,B5) TO LINE B12  *POST EXPECTED MESSAGE                 D88
*IF DEF,PFMD,1
   MSG 12 3 WORDS FROM IB(500) TO LINE B12+1  *POST ACTUAL
*IF DEF,SFMD,1
   MSG 12 3 WORDS FROM IB(1) TO LINE B12+1  *POST ACTUAL
*IF DEF,LSFMD,1 
   MSG 12 3 WORDS FROM IB(500) TO LINE B12+1  *POST ACTUAL
   B12=B12+2                     *UPDATE DISPLAY LINE NUMBER             D88
*                                                                        D88
/---------DISPLAY UP TO FOUR DATA ERRORS ON DATA BUFFER                  D88
/---------COMPARE ERRORS.                                                D88
*                                                                        D88
40 IF(EC.NE.1) GOTO 50       *IF NO DATA COMPARE ERRORS                  D88
   B12=B12+1                 *UPDATE DISPLAY LINE NUMBER                 D88
   B13=BA                    *SET DATA BUFFER INDEX                      D88
*IF DEF,SFMD,1
   IF(B8.EQ.24)B13=4         *IF READ CODED COMMAND                      D88
*IF DEF,LSFMD,1 
   IF(B8.EQ.24)B13=4         *IF READ CODED COMMAND 
   B14=0                     *INITIALIZE ERROR COUNTER                   D88
*                                                                        D88
/---------SEARCH FOR THE ERRORS IN THE DATA BUFFER.                      D88
*                                                                        D88
42 B15=IB(B13) XOR OB(B13)      *CHECK WORDS FOR A ERROR                 D88
   IF(B15.EQ.0) GOTO 44            *IF NO DATA ERROR                     D88
   MSG 13 (B13,OB(B13),IB(B13),B15) TO LINE B12  *POST ERROR             D88
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER             D88
   B14=B14+1                     *UPDATE ERROR COUNTER                   D88
   IF(B14.GE.4) GOTO 50          *IF FOUR ERRORS POSTED                  D88
*IF DEF,PFMD,2
44 B15=504                       *NORMAL WORD COUNT 
   IF(B8.EQ.26)B15=460           *IF SHORTRD COMMAND
*IF DEF,SFMD,2
44 B15=502                       *NORMAL WORD COUNT 
   IF(B8.EQ.26)B15=476           *IF SHORTRD COMMAND
*IF DEF,LSFMD,2 
44 B15=502                       *NORMAL WORD COUNT                      D88
   IF(B8.EQ.26)B15=476           *IF SHORTRD COMMAND                     D88
   GOTO 42 WHILE(B13+1 NE B15)   *LOOP TO CHECK DATA BUFFER              D88
*                                                                        D88
/---------DISPLAY STATUS BUFFER ERROR.                                   D88
*                                                                        D88
50 IF(EC.NE.2) GOTO 52       *IF NO DATA COMPARE ERRORS                  D88
   B15=OB(BA) XOR SB(BA)      *CHECK WORDS FOR A ERROR                   D88
   MSG 22 (BA,OB(BA),SB(BA),B15) TO LINE B12  *POST ERROR                D88
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER             D88
*                                                                        D88
/---------CHECK IF GENERAL, DETAILED STATUS TO BE DISPLAYED.             D88
*                                                                        D88
52 IF(SB.EQ.7777) GOTO 56    *IF INVALID GENERAL STATUS                  D88
   IF(SB(52).NE.0) GOTO 54   *IF RETRY COUNT NONZERO                     D88
   IF(SB.EQ.0) GOTO 56       *IF NO DETAILED STATUS                      D88
54 B12=B12+1                 *UPDATE DISPLAY LINE NUMBER                 D88
   MSG 14 TO LINE B12        *FIRST LINE OF STATUS DISPLAY               D88
   B12=B12+1                 *UPDATE DISPLAY LINE NUMBER                 D88
*                                                                        D88
/---------DISPLAY FIRST GENERAL STATUS AND DETAILED STATUS.              D88
*                                                                        D88
   B13=25                    *INDEX IF RETRIES DONE                      D88
   IF(SB(52).NE.0) GOSUB 70  *DISPLAY FIRST STATUS ON RETRY              D88
*                                                                        D88
/---------DISPLAY LAST GENERAL STATUS AND DETAILED STATUS.               D88
*                                                                        D88
   B13=0                     *INDEX FOR THE LAST STATUS                  D88
   IF(SB.NE.0) GOSUB 70      *DISPLAY THE LAST STATUS                    D88
56 B14=7777                  *PRESERVICE FORECAST GROUP FLAG
   EXIT TO 97G               *EXIT TO THE NEXT MODULE 
*                                                                        D88
/---------BUILD THE GENERAL AND DETAILED STATUS DISPLAY.                 D88
*                                                                        D88
70 MSG 15 5 WORDS FROM SB(B13+1) TO LINE B12  *WORDS 1-6                 D88
   B14=16                          *MESSAGE FOR FIRST STATUS             D88
   IF(B13.EQ.0) B14=17             *MESSAGE FOR LAST STATUS              D88
   MSG B14 5 WORDS FROM SB(B13+6) TO LINE B12+1  *WORDS 6-10             D88
   B12=B12+2                     *UPDATE DISPLAY LINE NUMBER             D88
   MSG 21 5 WORDS FROM SB(B13+20)TO LINE B12+1  *WORDS 16-20             D88
   IB(502)=SB(B13+15)                        *STATUS WORD 13             D88
   IB(503)=SB(B13+16)                        *STATUS WORD 14             D88
   IB(504)=SB(B13+17)                        *STATUS WORD 15             D88
   B14=SB(B13+13)                            *STATUS WORD 11             D88
   B15=SB(B13+14)                            *STATUS WORD 12             D88
   B13=SB(B13)                               *GENERAL STATUS             D88
   MSG 20 (B13,B14,B15,IB(502),IB(503),IB(504))TO LINE B12               D88
   B12=B12+3                     *UPDATE DISPLAY LINE NUMBER             D88
   RETURN                        *EXIT THE SUBROUTINE                    D88
   END 30                        *END OF THE MODULE                      D88
*IF DEF,PFMD,1
COMPILE                      *DH897F STATUS DISPLAY 
*IF DEF,SFMD,1
COMPILE                      *D8897F STATUS DISPLAY                      D88
*IF DEF,LSFMD,1 
COMPILE                      *DL897F STATUS DISPLAY 
*IF DEF,SFMD
   MODULE D8897G,FMDHT(7),LOCK                                           D88
***       D8897G - PROCESS GENERAL STATUS                                D88
**        D8897G - PROCESS GENERAL STATUS                                D88
*         D8897G - PROCESS GENERAL STATUS                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         THIS  MODULE WILL DETERMINE THE REASON THE GENERAL STATUS WAS  D88
*         NONZERO AFTER A OPERATION IN THE 7155 CONTROLLER.              D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF  THE  RETRY  COUNT IS ZERO, SET THE INDEX (B13) TO THE  D88
*             STATUS BUFFER TO ZERO, OTHERWISE  SET  THE  INDEX  TO  25  D88
*             OCTAL.                                                     D88
*         2.  IF THE GENERAL STATUS IS EQUAL TO 0000 OR 7777,  EXIT  TO  D88
*             MODULE D8897M.                                             D88
*         3.  IF THE GENERAL STATUS IS 0010 OR 2000, POST  THE  CORRECT  D88
*             MESSAGE.                                                   D88
*         4.  IF THE GENERAL STATUS IS 5020, EXIT TO MODULE D8897K.      D88
*         5.  IF  DETAILED  STATUS  WORD  1  IS EQUAL TO 7777, POST THE  D88
*             FORMAT MESSAGE GENERAL STATUS NONZERO,  BUT  NO  DETAILED  D88
*             STATUS.                                                    D88
*         6.  IF THE GENERAL STATUS NOT EQUAL TO 5000,  EXIT  TO MODULE  D88PTR4
*             D8897J.                                                    D88
*         7.  IF THE DETAILED STATUS INDICATES AN ILLEGAL PARAMETER  OR  D88
*             AN  ILLEGAL NUMBER OF PARAMETERS, POST THE CORRECT FORMAT  D88
*             MESSAGE.                                                   D88
*         8.  IF THE FUNCTION SENT TO THE CONTROLLER CAUSING THE  ERROR  D88PTR4
*             WAS NOT A BUFFER READ OR BUFFER WRITE FUNCTION,  EXIT  TO  D88PTR4
*             MODULE D8897H.                                             D88
*         9.  DETERMINE THE CAUSE OF THE ERROR FOR THE BUFFER  READ  OR  D88
*             BUFFER WRITE FUNCTION AND POST THE CORRECT MESSAGE.        D88
*         10. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         11. EXIT TO MODULE D8897M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO MODULE D8897H IF THE CAUSE OF THE 5000 GENERAL STATUS  D88
*           HAS NOT BEEN DETERMINED BY THIS MODULE.                      D88
*         EXIT TO MODULE D8897J IF THE GENERAL STATUS IS NOT 0000,       D88
*           2000, 5000, OR 5020.                                         D88
*         EXIT TO MODULE D8897K IF FMD IS NOT READY AND SAFE.            D88
*         EXIT TO MODULE D8897M IF THE GENERAL STATUS IS 0000, 7777, OR  D88
*           IF THE CAUSE OF THE ERROR HAS BEEN POSTED IN THE DISPLAY     D88
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8897H - CONTINUE PROCESSING 5000 GENERAL STATUS.              D88
*         D8897J - PROCESS 4400, 4600, 4700, AND 5200 GENERAL STATUS.    D88
*         D8897K - ISOLATE FMD FAULTS.                                   D88
*         D8897M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*         FLOWCHARTS-                                                    D88
*         *************************************************************  D88
*         *    ISOLATION FLOWCHART FOR THE GENERAL STATUS ERRORS.     *  D88
*         *                                                           *  D88
*         *         STEPS 1 THROUGH 31 ARE IN MODULE D8897G.          *  D88
*         *         STEPS 32 THROUGH 53 ARE IN MODULE D8897H.         *  D88
*         *         STEPS 54 THROUGH 70 ARE IN MODULE D8897I.         *  D88
*         *         STEPS 70 THROUGH 84 ARE IN MODULE D8897J.         *  D88
*         *                                                           *  D88
*         *    NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE       *  D88
*         *          TO MODULE D8897M.                                *  D88
*         *                                                           *  D88
*         *************************************************************  D88
*                                                                        D88
*         1.  IF THE RETRY COUNT IN THE STATUS BUFFER IS EQUAL TO ZERO   D88
*             SET THE STATUS BUFFER INDEX TO ZERO, OTHERWISE SET THE     D88
*             STATUS BUFFER INDEX TO 25 OCTAL.                           D88
*         2.  IF THE GENERAL STATUS IS EQUAL TO 7777 OCTAL, EXIT TO      D88
*             MODULE D8897M.                                             D88
*         3.  IF THE GENERAL STATUS IS EQUAL TO ZERO, EXIT TO MODULE     D88
*             D8897M.                                                    D88
*         4.  IF THE GENERAL STATUS IS EQUAL TO 0010 OCTAL, POST THE     D88
*             MESSAGE FMD UNIT RESERVED BY ANOTHER CONTROLLER.           D88
*         5.  IF THE GENERAL STATUS IS EQUAL TO 2000 OCTAL, POST THE     D88
*             MESSAGE CONTROLLER RESERVED BY ANOTHER MAINFRAME.          D88
*         6.  IF THE GENERAL STATUS IS EQUAL TO 5020 OCTAL, EXIT TO      D88
*             MODULE D8897K TO ISOLATE THE CAUSE OF THE DRIVE FAULT.     D88
*         7.  IF DETAILED STATUS WORD 1 IS EQUAL TO 7777 OCTAL, POST     D88
*             THE MESSAGE GENERAL STATUS NONZERO, BUT NO DETAILED        D88
*             STATUS.                                                    D88
*         8.  IF THE GENERAL STATUS IS NOT EQUAL TO 5000 OCTAL, GO TO    D88
*             STEP 71.                                                   D88
*         9.  IF BIT 3 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO,   D88
*             POST THE MESSAGE CONTROLWARE ILLEGAL PARAMETER ERROR.      D88
*         10. IF BIT 2 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO,   D88
*             POST THE MESSAGE CONTROLWARE ILLEGAL NUMBER OF             D88
*             PARAMETERS ERROR.                                          D88
*         11. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT     D88
*             EQUAL TO 43 OCTAL, GO TO STEP 12.                          D88
*         12. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT         D88
*             REGISTER FULL ERROR, OTHERWISE GO TO STEP 15.              D88
*         13. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT     D88
*             EQUAL TO 44 OCTAL, GO TO STEP 32.                          D88
*         14. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER   D88
*             FULL ERROR.                                                D88
*         15. IF BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL ACTIVE        D88
*             ERROR.                                                     D88
*         16. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DEADMAN TIMEOUT       D88
*             ERROR.                                                     D88
*         17. IF BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL RESERVED      D88
*             ERROR.                                                     D88
*         18. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER INPUT          D88
*             REGISTER FULL ERROR.                                       D88
*         19. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE     D88
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE ERROR.   D88
*         20. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR.      D88
*         21. IF BIT 10 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR.  D88
*         22. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR.   D88
*         23. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT         D88
*             REGISTER PARITY ERROR.                                     D88
*         24. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, EXIT TO MODULE D8897K TO ISOLATE THE CAUSE OF     D88
*             THE DRIVE FAULT.                                           D88
*         25. IF BIT 3 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER UP/DOWN COUNT         D88
*             NONZERO ERROR.                                             D88
*         26. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD     D88
*             ERROR.                                                     D88
*         27. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR             D88
*             INSTRUCTION TIMEOUT ERROR.                                 D88
*         28. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR.    D88
*         29. IF BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER NONCORRECTABLE        D88
*             STATUS ERROR.                                              D88
*         30. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK      D88
*             ERROR.                                                     D88
*         31. POST THE MESSAGE CONTROLLER ERROR CANNOT BE ISOLATED.      D88
*         32. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 54.                                       D88
*         33. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD ADD. FIELD ERROR WHILE       D88
*             RECOVERING DATA FIELD.                                     D88
*         34. IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED.      D88
*         35. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE NOT      D88
*             EQUAL TO ZERO, GO TO STEP 49.                              D88
*         36. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 14 OCTAL, POST THE MESSAGE FMD CYLINDER ADDRESS         D88
*             MISCOMPARE ERROR.                                          D88
*         37. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 12 OCTAL, POST THE MESSAGE FMD TRACK ADDRESS            D88
*             MISCOMPARE ERROR.                                          D88
*         38. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE EQUAL   D88
*             TO 30 OCTAL, GO TO STEP 40.                                D88
*         39. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT     D88
*             EQUAL TO 31 OCTAL, GO TO STEP 41.                          D88
*         40. IF BITS 10 AND 11 IN DETAILED STATUS WORD 1 ARE EQUAL      D88
*             TO ZERO, POST THE MESSAGE FMD TRACK EXPECTED TO BE         D88
*             FLAWED BUT WAS NOT, OTHERWISE GO TO STEP 43.               D88
*         41. IF BIT 10 IN DETAILED STATUS WORD 5 IS NOT EQUAL TO ZERO,  D88
*             POST THE MESSAGE FMD FACTORY FLAW MAP DETECTED.            D88
*         42. IF BIT 11 IN DETAILED STATUS WORD 5 IS NOT EQUAL TO ZERO,  D88
*             POST THE MESSAGE FMD TRACK FLAW DETECTED.                  D88
*         43. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 11 OCTAL, POST THE MESSAGE FMD SECTOR ADDRESS           D88
*             MISCOMPARE ERROR.                                          D88
*         44. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 10 OCTAL, POST THE MESSAGE CONTROLWARE ABNORMAL         D88
*             DETAILED STATUS.                                           D88
*         45. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR.      D88
*         46. IF BIT 10 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR.  D88
*         47. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR             D88
*             INSTRUCTION TIMEOUT ERROR.                                 D88
*         48. POST THE MESSAGE CONTROLLER ERROR CANNOT BE ISOLATED.      D88
*         49. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, EXIT TO MODULE D8897K TO ISOLATE THE CAUSE OF     D88
*             THE DRIVE FAULT.                                           D88
*         50. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE     D88
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE ERROR.   D88
*         51. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD     D88
*             ERROR.                                                     D88
*         52. IF BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER NONCORRECTABLE        D88
*             STATUS ERROR.                                              D88
*         53. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK      D88
*             ERROR, OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT     D88
*             ISOLATED.                                                  D88
*         54. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, GO TO STEP 56.                                    D88
*         55. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR,    D88
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED.  D88
*         56. IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED.      D88
*         57. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, EXIT TO MODULE D8897K TO ISOLATE THE CAUSE OF     D88
*             THE DRIVE FAULT.                                           D88
*         58. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE     D88
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC    D88
*             BYTE ERROR.                                                D88
*         59. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR.      D88
*         60. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR.   D88
*         61. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT         D88
*             REGISTER PARITY ERROR.                                     D88
*         62. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD     D88
*             ERROR.                                                     D88
*         63. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR             D88
*             INSTRUCTION TIMEOUT ERROR.                                 D88
*         64. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR.    D88
*         65. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK      D88
*             ERROR.                                                     D88
*         66. IF BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL ACTIVE        D88
*             ERROR.                                                     D88
*         67. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DEADMAN TIMEOUT       D88
*             ERROR.                                                     D88
*         68. IF BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL RESERVED      D88
*             ERROR.                                                     D88
*         69. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER INPUT          D88
*             REGISTER FULL ERROR.                                       D88
*         70. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER   D88
*             FULL ERROR, OTHERWISE POST THE MESSAGE CONTROLLER ERROR    D88
*             NOT ISOLATED.                                              D88
*         71. IF THE GENERAL STATUS IS NOT EQUAL TO 4400 OCTAL, GO TO    D88
*             STEP 78.                                                   D88
*         72. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 77.                                       D88
*         73. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD ADDRESS FIELD SYNC BYTE      D88
*             ERROR.                                                     D88
*         74. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 14 OCTAL, POST THE MESSAGE FMD CYLINDER ADDRESS         D88
*             MISCOMPARE ERROR.                                          D88
*         75. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 12 OCTAL, POST THE MESSAGE FMD TRACK ADDRESS            D88
*             MISCOMPARE ERROR.                                          D88
*         76. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 11 OCTAL, POST THE MESSAGE FMD SECTOR ADDRESS           D88
*             MISCOMPARE ERROR, OTHERWISE POST THE MESSAGE CONTROLLER    D88
*             ERROR NOT ISOLATED.                                        D88
*         77. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC BYTE ERROR,  D88
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED.  D88
*         78. IF THE GENERAL STATUS IS NOT EQUAL TO 4600 OCTAL, GO TO    D88
*             STEP 81.                                                   D88
*         79. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD ADDRESS FIELD CHECKWORD      D88
*             ERROR.                                                     D88
*         80. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD DATA FIELD CHECKWORD ERROR,  D88
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED.  D88
*         81. IF THE GENERAL STATUS IS EQUAL TO 4700 OCTAL, POST THE     D88
*             MESSAGE FMD ADDRESS FIELD CHECKWORD ERROR.                 D88
*         82. IF THE GENERAL STATUS IS NOT EQUAL TO 5200 OCTAL, POST     D88
*             THE MESSAGE CONTROLWARE ABNORMAL GENERAL STATUS.           D88
*         83. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD NONCORRECTABLE ADDRESS       D88
*             FIELD CHECKWORD ERROR.                                     D88
*         84. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD NONCORRECTABLE DATA FIELD    D88
*             CHECKWORD ERROR, OTHERWISE POST THE MESSAGE CONTROLLER     D88
*             ERROR NOT ISOLATED.                                        D88
*         85. EXIT TO MODULE D8897M.                                     D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT FMD UNIT RESERVED BY ANOTHER CONTROLLER.                       D88
1  FORMAT CONTROLLER RESERVED BY ANOTHER MAINFRAME.                      D88
2  FORMAT GENERAL STATUS NONZERO, BUT NO DETAILED STATUS.                D88
3  FORMAT CONTROLWARE ILLEGAL PARAMETER ERROR.                           D88
4  FORMAT CONTROLWARE ILLEGAL NUMBER OF PARAMETERS ERROR.                D88
5  FORMAT CONTROLLER ERROR NOT ISOLATED.                                 D88
6  FORMAT CONTROLLER BUFFER OUTPUT REGISTER FULL ERROR.                  D88
7  FORMAT CONTROLLER CHANNEL ACTIVE ERROR.                               D88
10 FORMAT CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR.                      D88
11 FORMAT CONTROLLER CHANNEL RESERVED ERROR.                             D88
12 FORMAT CONTROLLER BUFFER INPUT REGISTER FULL ERROR.                   D88
13 FORMAT CONTROLLER LOST DATA ERROR.                                    D88
14 FORMAT CONTROLLER SECTOR LENGTH ERROR.                                D88
15 FORMAT CONTROLLER WRITE VERIFY ERROR (SEE TRUE DISK ADD) 
16 FORMAT CONTROLLER BUFFER OUTPUT REGISTER PARITY ERROR.                D88
17 FORMAT CONTROLLER UP/DOWN COUNT NONZERO ERROR.                        D88
20 FORMAT CONTROLLER LOST CONTROL WORD ERROR.                            D88
21 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR.                D88
22 FORMAT CONTROLLER DATA PARITY ERROR.                                  D88
23 FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR.                        D88
24 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.                             D88
25 FORMAT FMD SYNC BYTE ERROR.                                           D88
26 FORMAT FMD CONTROLLER AND/OR DRIVE BUSY. 
27 FORMAT FMD DRIVE ERROR RATE THRESHOLD EXCEEDED.
*                                                                        D88
/---------INITIALIZE THE INDEX TO THE STATUS BUFFER.                     D88
*                                                                        D88
30 B13=0                     *INDEX IF NOT RECOVERY ATTEMPT              D88
   IF(SB(52).NE.0)B13=25     *INDEX IF RECOVERY ATTEMPTED                D88
*                                                                        D88
/---------CHECK FOR GENERAL STATUS OF 7777 OR 0000.                      D88
*                                                                        D88
   IF(SB(B13).EQ.7777) EXIT TO 97M  *IF INVALID STATUS                   D88
   IF(SB(B13).EQ.0) EXIT TO 97M     *IF NO STATUS ERROR                  D88
   B15=26                           *MESSAGE NUMBER 
   IF(SB(B13).EQ.2) GOTO 70         *FMD SUBSYSTEM BUSY 
   B15=0                            *MESSAGE NUMBER                      D88
   IF(SB(B13).EQ.10) GOTO 70        *DRIVE RESERVED                      D88
   B15=1                            *MESSAGE NUMBER                      D88
   IF(SB(B13).EQ.2000) GOTO 70      *IF CONTROLLER RESERVED              D88
   IF(SB(B13).EQ.5020) EXIT TO 97K  *IF DRIVE MALFUNCTION                D88
   B15=2                            *MESSAGE NUMBER                      D88
   IF(SB(B13+1).EQ.7777) GOTO 70    *IF NO DETAILED STATUS               D88
*                                                                        D88
/---------CHECK FOR GENERAL STATUS OF 5000.                              D88
*                                                                        D88
   IF(SB(B13).NE 5000) EXIT TO 97J  *NO 5000 GENERAL STATUS              D88
   B14=SB(B13+21)                   *DETAILED STATUS WORD 17             D88
   B15=3                            *MESSAGE NUMBER                      D88
   IF(SB(B13+3).AND.10.NE.0)GOTO 70  *ILLEGAL PARAMETER                  D88
   B15=4                            *MESSAGE NUMBER                      D88
   IF(SB(B13+3).AND.4.NE.0)GOTO 70  *NUMBER OF PARMETERS                 D88
   B15=27                           *MESSAGE NUMBER 
   IF(SB(B13+3).AND.2.NE.0)GOTO 70  *ERROR THRESHOLD
   B15=6                            *MESSAGE NUMBER                      D88
*                                                                        D88
/---------CHECK FOR BUFFER READ FUNCTION ISSUED.                         D88
*                                                                        D88
   IF(SB(B13+3).AND.7760.NE.1060)GOTO 40  *NOT BUFFER READ               D88
   IF(B14.AND.100.NE.0) GOTO 70     *BUFFER OUTPUT REGISTER              D88
   GOTO 42                                                               D88
*                                                                        D88
/---------CHECK FOR BUFFER WRITE FUNCTION ISSUED.                        D88
*                                                                        D88
40 IF(SB(B13+3).AND.7760.NE.1100)EXIT TO 97H  *IF NOT WRITE              D88
   IF(B14.AND.100.EQ.0) GOTO 70     *BUFFER OUTPUT REGISTER              D88
*                                                                        D88
/---------CHECK CONTROLLER INPUT CHANNEL 0 STATUS BITS.                  D88
*                                                                        D88
42 B15=7                            *MESSAGE NUMBER                      D88
   IF(B14.AND.4.NE.0) GOTO 70       *CHANNEL ACTIVE ERROR                D88
   B15=10                           *MESSAGE NUMBER                      D88
   IF(B14.AND.10.NE.0) GOTO 70      *DEADMAN TIMEOUT ERROR               D88
   B15=11                           *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *CHANNEL RESERVED ERROR              D88
   B15=12                           *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *BUFFER INPUT REGISTER               D88
   B15=25                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR                     D88
   B15=13                           *MESSAGE NUMBER                      D88
   IF(B14.AND.1000.NE.0) GOTO 70    *LOST DATA ERROR                     D88
   B15=14                           *MESSAGE NUMBER                      D88
   IF(B14.AND.2000.NE.0) GOTO 70    *SECTOR LENGTH ERROR                 D88
*                                                                        D88
/---------CHECK CONTROLLER INPUT CHANNEL 1 STATUS BITS.                  D88
*                                                                        D88
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16             D88
   B15=15                           *MESSAGE NUMBER                      D88
   IF(B14.AND.1.NE.0) GOTO 70       *WRITE VERIFY ERROR                  D88
   B15=16                           *MESSAGE NUMBER                      D88
   IF(B14.AND.2.NE.0) GOTO 70       *OUTPUT BUFFER PARITY                D88
   B15=17                           *MESSAGE NUMBER                      D88
   IF(B14.AND.10.NE.0) GOTO 70      *UP/DOWN NONZERO ERROR               D88
   B15=20                           *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD ERROR             D88
   B15=21                           *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT                 D88
   B15=22                           *MESSAGE NUMBER                      D88
   IF(B14.AND.100.NE.0) GOTO 70     *DATA PARITY ERROR                   D88
   B15=23                           *MESSAGE NUMBER                      D88
   IF(B14.AND.200.NE.0) GOTO 70     *NONCORRECTABLE ERROR                D88
   B15=24                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK ERROR              D88
   B15=5                            *MESSAGE NUMBER                      D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE                           D88
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.0) B14=1        *IF MESSAGE 0
   IF(B15.EQ.14) B14=1       *IF MESSAGE 14 
   IF(B15.EQ.15) B14=13      *IF MESSAGE 15 
   IF(B15.EQ.24) B14=3       *IF MESSAGE 24 
   IF(B15.EQ.25) B14=3       *IF MESSAGE 25 
   IF(B15.EQ.26) B14=3       *IF MESSAGE 26 
   IF(B15.EQ.27) B14=1       *IF MESSAGE 27 
   EXIT TO 97M               *EXIT THE MODULE                            D88
   END 30                    *END OF THE MODULE                          D88
COMPILE                      *D8897G PROCESS GENERAL STATUS              D88
   MODULE D8897H,FMDHT(7),LOCK                                           D88
***       D8897H - PROCESS GENERAL STATUS                                D88
**        D8897H - PROCESS GENERAL STATUS                                D88
*         D8897H - PROCESS GENERAL STATUS                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8897H  WILL DETERMINE THE REASON FOR THE 5000 GENERAL STATUS  D88
*         WHEN A ERROR HAS BEEN  DETECTED  WHILE  READING  THE  ADDRESS  D88
*         FIELD OF A SECTOR.                                             D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE ERROR WAS NOT DETECTED WHILE READING  THE  ADDRESS  D88
*             FIELD OF A SECTOR, EXIT TO MODULE D8897I.                  D88
*         2.  POST FORMAT MESSAGE 11  IF  A  ADDRESS  FIELD  ERROR  WAS  D88
*             DETECTED  WHILE  RECOVERING  A ERROR IN THE DATA FIELD OF  D88
*             THE SECTOR.                                                D88
*         3.  POST FORMAT MESSAGE 20 IF BIT 8 IN DETAILED STATUS WORD 9  D88
*             DECIMAL IS EQUAL TO ZERO.                                  D88
*         4.  IF BITS 0 - 3 OF DETAILED STATUS  WORD  1  ARE  EQUAL  TO  D88
*             ZERO, GO TO STEP 15.                                       D88
*         5.  POST  FORMAT  MESSAGE 12 IF A CYLINDER ADDRESS MISCOMPARE  D88
*             WAS DETECTED OR FORMAT MESSAGE  13  IF  A  TRACK  ADDRESS  D88
*             MISCOMPARE  WAS  DETECTED  IN  THE  ADDRESS  FIELD OF THE  D88
*             SECTOR.                                                    D88
*         6.  IF  A  READ FACTORY MAP OR READ UTILITY MAP WAS NOT BEING  D88
*             EXECUTED, GO TO STEP 8.                                    D88
*         7.  POST  FORMAT MESSAGE 14 IF THE FACTORY OR TRACK FLAW BITS  D88
*             WERE NOT SET IN THE ADDRESS FIELD OF THE  SECTOR.  GO  TO  D88
*             STEP 9.                                                    D88
*         8.  POST FORMAT MESSAGE 15 IF A FACTORY FLAW BIT WAS  SET  IN  D88
*             THE ADDRESS FIELD OF THE SECTOR OR FORMAT MESSAGE 16 IF A  D88PTR4
*             TRACK FLAW BIT WAS SET IN THE ADDRESS FIELD OF THE         D88
*             SECTOR.                                                    D88
*         9.  POST FORMAT MESSAGE 17 IF A SECTOR ADDRESS MISCOMPARE WAS  D88
*             FOUND IN THE ADDRESS FIELD OF THE SECTOR.                  D88
*         10. POST FORMAT MESSAGE 0 IF BITS 0 - 3  OF  DETAILED  STATUS  D88
*             WORD 1 DOES NOT EQUAL 10.                                  D88
*         11. POST FORMAT MESSAGE 2 IF CONTROLLER LOST DATA  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         12. POST  FORMAT  MESSAGE 3 IF SECTOR LENGTH VIOLATION STATUS  D88
*             IS ACTIVE.                                                 D88
*         13. POST  FORMAT  MESSAGE  4 IF PROCESSOR INSTRUCTION TIMEOUT  D88
*             STATUS IS ACTIVE.                                          D88
*         14. POST FORMAT MESSAGE 1.                                     D88
*         15. EXIT  TO  MODULE  D8897K IF THE FIXED MODULE DRIVE IS NOT  D88
*             READY AND SAFE.                                            D88
*         16. POST FORMAT MESSAGE 10 IF A SYNC BYTE ERROR WAS DETECTED.  D88
*         17. POST  FORMAT  MESSAGE  5  IF  LOST CONTROL WORD STATUS IS  D88
*             ACTIVE.                                                    D88
*         18. POST FORMAT MESSAGE 6 IF NONCORRECTABLE STATUS IS ACTIVE.  D88
*         19. POST FORMAT MESSAGE 7  IF  LOST  DRIVE  CLOCK  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         20. POST FORMAT MESSAGE 1.                                     D88
*         21. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         22. EXIT TO MODULE D8897M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO MODULE D8897I IF THE CAUSE OF THE 5000 GENERAL STATUS  D88
*           HAS NOT BEEN DETERMINED BY THIS MODULE.                      D88
*         EXIT TO MODULE D8897K IF FMD IS NOT READY AND SAFE.            D88
*         EXIT TO MODULE D8897M IF THE CAUSE OF THE 5000 GENERAL STATUS  D88
*           HAS BEEN DETERMINED AND THE CAUSE POSTED IN THE DISPLAY      D88
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8897I - CONTINUE PROCESSING 5000 GENERAL STATUS.              D88
*         D8897K - ISOLATE FMD FAULTS.                                   D88
*         D8897M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT CONTROLWARE ABNORMAL DETAILED STATUS.                          D88
1  FORMAT CONTROLLER ERROR NOT ISOLATED.                                 D88
2  FORMAT CONTROLLER LOST DATA ERROR.                                    D88
3  FORMAT CONTROLLER SECTOR LENGTH ERROR.                                D88
4  FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR.                D88
5  FORMAT CONTROLLER LOST CONTROL WORD ERROR.                            D88
6  FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR.                        D88
7  FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.                             D88
10 FORMAT FMD ADDRESS FIELD SYNC BYTE ERROR.                             D88
11 FORMAT FMD ADD. FIELD ERROR WHILE RECOVERING DATA FIELD.              D88
12 FORMAT FMD CYLINDER ADDRESS MISCOMPARE ERROR.                         D88
13 FORMAT FMD TRACK ADDRESS MISCOMPARE ERROR.                            D88
14 FORMAT FMD TRACK EXPECTED TO BE FLAWED BUT WAS NOT.                   D88
15 FORMAT FMD FACTORY FLAW MAP DETECTED.                                 D88
16 FORMAT FMD TRACK FLAW DETECTED.                                       D88
17 FORMAT FMD SECTOR ADDRESS MISCOMPARE ERROR.                           D88
20 FORMAT FMD NOT SELECTED AND RESERVED.                                 D88
21 FORMAT CONTROLLER STATUS INDICATES FMD NOT READY 
*                                                                        D88
/---------CHECK FOR A ERROR IN THE ADDRESS FIELD.                        D88
*                                                                        D88
30 IF(B14.AND.1.EQ.0) EXIT TO 97I      *IF NOT ADDRESS FIELD             D88
   B15=11                              *MESSAGE NUMBER                   D88
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR                 D88
   B15=20                              *MESSAGE NUMBER                   D88
   IF(SB(B13+9).AND.400.EQ.0) GOTO 70  *DRIVE NOT SELECTED               D88
   IF(SB(B13+1).AND.17.EQ.0) GOTO 60   *IF NOT COMPARE ERROR             D88
   B15=12                              *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.14) GOTO 70  *CYLINDER MISCOMPARE              D88
   B15=13                              *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.12) GOTO 70  *TRACK MISCOMPARE                 D88
*                                                                        D88
/---------CHECK FOR READ FACTORY DATA FUNCTION ISSUED.                   D88
*                                                                        D88
   IF(SB(B13+3).AND.7760.EQ.600)GOTO 34  *IF READ FACTORY                D88
*                                                                        D88
/---------CHECK FOR READ UTILITY MAP FUNCTION ISSUED.                    D88
*                                                                        D88
   IF(SB(B13+3).AND.7760.NE.620)GOTO 40  *NOT READ UTILITY               D88
34 B15=14                                *MESSAGE NUMBER                 D88
   IF(SB(B13+5).AND.6000.EQ.0) GOTO 70  *NO FLAW BIT SET                 D88
   GOTO 50                                                               D88
40 B15=15                              *MESSAGE NUMBER                   D88
*                                                                        D88
/---------CHECK FOR A FLAW BIT SET IN THE ADDRESS FIELD.                 D88
*                                                                        D88
   IF(SB(B13+5).AND.2000.NE.0)GOTO 70  *FACTORY FLAW ERROR               D88
   B15=16                              *MESSAGE NUMBER                   D88
   IF(SB(B13+5).AND.4000.NE.0)GOTO 70  *TRACK FLAW ERROR                 D88
50 B15=17                              *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.11) GOTO 70  *SECTOR MISCOMPARE                D88
   B15=0                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.NE.10) GOTO 70  *ABNORMAL STATUS                  D88
   B15=2                               *MESSAGE NUMBER                   D88
   IF(B14.AND.1000.NE.0) GOTO 70       *LOST DATA ERROR                  D88
   B15=3                               *MESSAGE NUMBER                   D88
   IF(B14.AND.2000.NE.0) GOTO 70       *SECTOR LENGTH ERROR              D88
   B15=4                               *MESSAGE NUMBER                   D88
   IF(SB(B13+20).AND.40.NE.0) GOTO 70  *INSTRUCTION TIMEOUT              D88
   B15=1                               *MESSAGE NUMBER                   D88
   GOTO 70                                                               D88
*                                                                        D88
/---------CHECK FOR A STATUS ERROR ON I/O CHANNEL 1.                     D88
*                                                                        D88
60 B14=SB(B13+20)                   *DETAILED STATUS WORD 16             D88
   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 97K                      *GO PROCESS DRIVE FAULT 
64 B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *LOST DATA ERROR
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.2000.NE.0) GOTO 70    *SECTOR LENGTH ERROR
   B15=10                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR                     D88
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16             D88
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=5                            *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD                   D88
   B15=6                            *MESSAGE NUMBER                      D88
   IF(B14.AND.200.NE.0) GOTO 70     *NONCORRECTABLE ERROR                D88
   B15=7                            *MESSAGE NUMBER                      D88
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK                    D88
   B15=1                            *MESSAGE NUMBER                      D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE                           D88
* 
/---------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=0        *IF MESSAGE 2
   IF(B15.EQ.4) B14=0        *IF MESSAGE 4
   IF(B15.EQ.5) B14=3        *IF MESSAGE 5
   IF(B15.EQ.6) B14=0        *IF MESSAGE 6
   IF(B15.EQ.7) B14=3        *IF MESSAGE 7
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   EXIT TO 97M               *EXIT THE MODULE                            D88
   END 30                    *END OF THE MODULE                          D88
COMPILE                      *D8897H PROCESS GENERAL STATUS              D88
   MODULE D8897I,FMDHT(7),LOCK                                           D88
***       D8897I - PROCESS GENERAL STATUS                                D88
**        D8897I - PROCESS GENERAL STATUS                                D88
*         D8897I - PROCESS GENERAL STATUS                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8897I  WILL DETERMINE THE REASON FOR THE 5000 GENERAL STATUS  D88
*         WHEN A ERROR HAS BEEN DETECTED WHILE READING THE  DATA  FIELD  D88
*         OF A SECTOR.                                                   D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  GO TO STEP 4 IF BIT 1 IS SET IN DETAILED STATUS WORD 17.   D88
*         2.  POST  FORMAT  MESSAGE  1  IF  DATA PARITY ERROR STATUS IS  D88
*             ACTIVE.                                                    D88
*         3.  POST FORMAT MESSAGE 0.                                     D88
*         4.  POST FORMAT MESSAGE 17 IF BIT 8 IN DETAILED STATUS WORD 9  D88
*             DECIMAL IS EQUAL TO ZERO.                                  D88
*         5.  EXIT TO MODULE D8897K IF THE FIXED MODULE  DRIVE  IS  NOT  D88
*             READY AND SAFE.                                            D88
*         6.  POST FORMAT MESSAGE 16 IF A SYNC BYTE ERROR WAS DETECTED.  D88
*         7.  POST  FORMAT  MESSAGE 7 IF CONTROLLER LOST DATA STATUS IS  D88
*             ACTIVE.                                                    D88
*         8.  POST FORMAT MESSAGE 11 IF WRITE VERIFY STATUS IS ACTIVE.   D88
*         9.  POST FORMAT MESSAGE 12 IF BUFFER OUTPUT  REGISTER  PARITY  D88
*             STATUS IS ACTIVE.                                          D88
*         10. POST FORMAT MESSAGE 13 IF LOST  CONTROL  WORD  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         11. POST FORMAT MESSAGE 10 IF PROCESSOR  INSTRUCTION  TIMEOUT  D88
*             STATUS IS ACTIVE.                                          D88
*         12. POST FORMAT MESSAGE 14 IF DATA  PARITY  ERROR  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         13. POST FORMAT MESSAGE 15 IF  LOST  DRIVE  CLOCK  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         14. POST FORMAT MESSAGE 3 IF CHANNEL ACTIVE STATUS IS ACTIVE.  D88
*         15. POST  FORMAT  MESSAGE 4 IF CHANNEL DEADMAN TIMEOUT STATUS  D88
*             IS ACTIVE.                                                 D88
*         16. POST  FORMAT  MESSAGE  5  IF  CHANNEL  RESERVED STATUS IS  D88
*             ACTIVE.                                                    D88
*         17. POST  FORMAT  MESSAGE  6  IF  BUFFER  INPUT REGISTER FULL  D88
*             STATUS IS ACTIVE.                                          D88
*         18. POST  FORMAT  MESSAGE  12  IF BUFFER OUTPUT REGISTER FULL  D88
*             STATUS IS ACTIVE.                                          D88
*         19. POST FORMAT MESSAGE 0.                                     D88
*         20. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         21. EXIT TO MODULE D8897M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO MODULE D8897K IF FMD IS NOT READY AND SAFE.            D88
*         EXIT TO MODULE D8897M IF THE CAUSE OF THE 5000 GENERAL STATUS  D88
*           HAS BEEN DETERMINED AND THE CAUSE POSTED IN THE DISPLAY      D88
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8897K - ISOLATE FMD FAULTS.                                   D88
*         D8897M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT CONTROLLER ERROR NOT ISOLATED.                                 D88
1  FORMAT CONTROLLER PARITY ERROR ON PARAMETERS.                         D88
2  FORMAT CONTROLLER BUFFER OUTPUT REGISTER FULL ERROR.                  D88
3  FORMAT CONTROLLER CHANNEL ACTIVE ERROR.                               D88
4  FORMAT CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR.                      D88
5  FORMAT CONTROLLER CHANNEL RESERVED ERROR.                             D88
6  FORMAT CONTROLLER BUFFER INPUT REGISTER FULL ERROR.                   D88
7  FORMAT CONTROLLER LOST DATA ERROR.                                    D88
10 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR.                D88
11 FORMAT CONTROLLER WRITE VERIFY ERROR (SEE TRUE DISK ADD) 
12 FORMAT CONTROLLER BUFFER OUTPUT REGISTER PARITY ERROR.                D88
13 FORMAT CONTROLLER LOST CONTROL WORD ERROR.                            D88
14 FORMAT CONTROLLER DATA PARITY ERROR.                                  D88
15 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.                             D88
16 FORMAT FMD DATA FIELD SYNC BYTE ERROR.                                D88
17 FORMAT FMD NOT SELECTED AND RESERVED.                                 D88
*                                                                        D88
/---------CHECK FOR A DATA FIELD TYPE ERROR.                             D88
*                                                                        D88
30 IF(B14.AND.2.NE.0) GOTO 34          *IF DATA FIELD ERROR              D88
   B15=1                               *MESSAGE NUMBER                   D88
   IF(SB(B13+20).AND.100.NE.0)GOTO 70  *PARAM PARITY ERROR               D88
   B15=0                               *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
34 B15=17                              *MESSAGE NUMBER                   D88
   IF(SB(B13+9).AND.400.EQ.0)GOTO 70   *DRIVE NOT SELECTED               D88
*                                                                        D88
/---------CHECK CONTROLLER INPUT CHANNEL 1 STATUS BITS.                  D88
*                                                                        D88
   IF(SB(B13+20).AND.4.NE.0) EXIT TO 97K  *ISOLATE FMD FAULT             D88
   B15=16                           *MESSAGE NUMBER 
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR                     D88
   B15=7                            *MESSAGE NUMBER                      D88
   IF(B14.AND.1000.NE.0) GOTO 70    *LOST DATA ERROR                     D88
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16             D88
   B15=11                           *MESSAGE NUMBER                      D88
   IF(B14.AND.1.NE.0) GOTO 70       *WRITE VERIFY ERROR                  D88
   B15=12                           *MESSAGE NUMBER                      D88
   IF(B14.AND.2.NE.0) GOTO 70       *BUFFER OUTPUT REG. P.E.             D88
   B15=13                           *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD ERROR             D88
   B15=10                           *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT                 D88
   B15=14                           *MESSAGE NUMBER                      D88
   IF(B14.AND.100.NE.0) GOTO 70     *DATA PARITY ERROR                   D88
   B15=15                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK                    D88
*                                                                        D88
/---------CHECK CONTROLLER INPUT CHANNEL 0 STATUS BITS.                  D88
*                                                                        D88
   B14=SB(B13+21)                   *DETAILED STATUS WORD 17             D88
   B15=3                            *MESSAGE NUMBER                      D88
   IF(B14.AND.4.NE.0) GOTO 70       *CHANNEL ACTIVE ERROR                D88
   B15=4                            *MESSAGE NUMBER                      D88
   IF(B14.AND.10.NE.0) GOTO 70      *DEADMAN TIMEOUT ERROR               D88
   B15=5                            *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *CHANNEL RESERVED ERROR              D88
   B15=6                            *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *BUFFER INPUT REGISTER               D88
   B15=2                            *MESSAGE NUMBER                      D88
   IF(B14.AND.100.NE.0) GOTO 70     *BUFFER OUTPUT REGISTER              D88
   B15=0                            *MESSAGE NUMBER                      D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.11) B14=11      *IF MESSAGE 11 
   IF(B15.EQ.15) B14=3       *IF MESSAGE 15 
   IF(B15.EQ.16) B14=3       *IF MESSAGE 16 
   IF(B15.EQ.17) B14=3       *IF MESSAGE 17 
   EXIT TO 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *D8897I PROCESS GENERAL STATUS              D88
   MODULE D8897J,FMDHT(7),LOCK                                           D88
***       D8897J - PROCESS GENERAL STATUS                                D88
**        D8897J - PROCESS GENERAL STATUS                                D88
*         D8897J - PROCESS GENERAL STATUS                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8897J  WILL  DETERMINE THE CAUSE OF THE 4400B, 4600B, 4700B,  D88
*         AND 5200B GENERAL STATUS ERRORS WHICH OCCURRED WHILE  READING  D88
*         OR WRITING A SECTOR ON THE 885 DRIVE.                          D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  GO TO STEP 10 IF THE GENERAL STATUS IS NOT 4400 OCTAL.     D88
*         2.  GO  TO STEP 8 IF BIT 0 IS NOT SET IN DETAILED STATUS WORD  D88
*             17 DECIMAL.                                                D88
*         3.  POST FORMAT MESSAGE 2 IF A SYNC BYTE ERROR WAS DETECTED.   D88
*         4.  POST FORMAT MESSAGE 3 IF A  CYLINDER  ADDRESS  MISCOMPARE  D88
*             WAS DETECTED.                                              D88
*         5.  POST FORMAT MESSAGE 4 IF A TRACK ADDRESS  MISCOMPARE  WAS  D88
*             DETECTED.                                                  D88
*         6.  POST FORMAT MESSAGE 5 IF A SECTOR ADDRESS MISCOMPARE  WAS  D88
*             DETECTED.                                                  D88
*         7.  POST FORMAT MESSAGE 0.                                     D88
*         8.  POST  FORMAT MESSAGE 6 IF BIT 1 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         9.  POST FORMAT MESSAGE 1.                                     D88
*         10. GO TO STEP 14 IF THE GENERAL STATUS IS NOT 4600 OCTAL.     D88
*         11. POST  FORMAT MESSAGE 7 IF BIT 0 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         12. POST FORMAT MESSAGE 10 IF BIT 1 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         13. POST FORMAT MESSAGE 1.                                     D88
*         14. POST FORMAT MESSAGE 7  IF  THE  GENERAL  STATUS  IS  4700  D88
*             OCTAL.                                                     D88
*         15. POST FORMAT MESSAGE 0 IF THE GENERAL STATUS IS  NOT  5200  D88
*             OCTAL.                                                     D88
*         16. POST FORMAT MESSAGE 11 IF BIT 0 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         17. POST FORMAT MESSAGE 12 IF BIT 1 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         18. POST FORMAT MESSAGE 1.                                     D88
*         19. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         20. EXIT TO MODULE D8897M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT WILL ALWAYS BE MADE TO MODULE D8897M WITH THE PRESERVICE 
*           FORECAST GROUP NUMBER IN THE B14 REGISTER.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8897M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT CONTROLWARE ABNORMAL GENERAL STATUS.                           D88
1  FORMAT CONTROLLER ERROR NOT ISOLATED.                                 D88
2  FORMAT FMD ADDRESS FIELD SYNC BYTE ERROR.                             D88
3  FORMAT FMD CYLINDER ADDRESS MISCOMPARE ERROR.                         D88
4  FORMAT FMD TRACK ADDRESS MISCOMPARE ERROR.                            D88
5  FORMAT FMD SECTOR ADDRESS MISCOMPARE ERROR.                           D88
6  FORMAT FMD DATA FIELD SYNC BYTE ERROR.                                D88
7  FORMAT FMD ADDRESS FIELD CHECKWORD ERROR.                             D88
10 FORMAT FMD DATA FIELD CHECKWORD ERROR.                                D88
11 FORMAT FMD NONCORRECTABLE ADDRESS FIELD CHECKWORD ERROR.              D88
12 FORMAT FMD NONCORRECTABLE DATA FIELD CHECKWORD ERROR.                 D88
*                                                                        D88
/---------CHECK GENERAL STATUS FOR THE TYPE OF ERROR.                    D88
*                                                                        D88
30 B14=SB(B13+21)                   *DETAILED STATUS WORD 17             D88
   IF(SB(B13).NE.4400) GOTO 50      *NOT 4400 GENERAL STATUS             D88
*                                                                        D88
/         PROCESS 4400 OCTAL GENERAL STATUS ERROR.                       D88
*                                                                        D88
   IF(B14.AND.1.EQ.0) GOTO 40          *IF NOT ADDRESS FIELD             D88
   B15=2                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.0) GOTO 70   *SYNC BYTE ERROR                  D88
   B15=3                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.14) GOTO 70  *CYLINDER ADDRESS                 D88
   B15=4                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.12) GOTO 70  *TRACK ADDRESS                    D88
   B15=5                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.11) GOTO 70  *SECTOR ADDRESS                   D88
   B15=0                               *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
40 B15=6                               *MESSAGE NUMBER                   D88
   IF(B14.AND.1.NE.0) GOTO 70          *DATA FIELD ERROR                 D88
   B15=1                               *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
50 IF(SB(B13).NE.4600) GOTO 60         *NOT 4600 STATUS                  D88
*                                                                        D88
/---------PROCESS 4600 OCTAL GENERAL STATUS ERROR.                       D88
*                                                                        D88
   B15=7                               *MESSAGE NUMBER                   D88
   IF(B14.AND.1.NE.0) GOTO 70          *ADDRESS FIELD ERROR              D88
   B15=10                              *MESSAGE NUMBER                   D88
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR                 D88
   B15=1                               *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
*                                                                        D88
/---------PROCESS 4700 OCTAL GENERAL STATUS ERROR.                       D88
*                                                                        D88
60 B15=7                               *MESSAGE NUMBER                   D88
   IF(SB(B13).EQ.4700) GOTO 70         *IF 4700 STATUS                   D88
*                                                                        D88
/---------PROCESS 5200 OCTAL GENERAL STATUS ERROR.                       D88
*                                                                        D88
   B15=0                               *MESSAGE NUMBER                   D88
   IF(SB(B13).NE.5200) GOTO 70         *NOT 5200 STATUS                  D88
   B15=11                              *MESSAGE NUMBER                   D88
   IF(B14.AND.1.NE.0) GOTO 70          *ADDRESS FIELD                    D88
   B15=12                              *MESSAGE NUMBER                   D88
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR                 D88
   B15=1                               *MESSAGE NUMBER                   D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *D8897J PROCESS GENERAL STATUS              D88
   MODULE D8897K,FMDHT(7),LOCK                                           D88
***       D8897K - ISOLATE DRIVE FAULT                                   D88
**        D8897K - ISOLATE DRIVE FAULT                                   D88
*         D8897K - ISOLATE DRIVE FAULT                                   D88
*         ----------------------------                                   D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8897K  WILL  DETERMINE  THE CAUSE FOR THE FAULT IN THE FIXED  D88
*         MODULE DRIVE.                                                  D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF  THE  GENERAL STATUS IS EQUAL TO 7777 OR 0000, EXIT TO  D88
*             MODULE D8897M.                                             D88
*         2.  POST  FORMAT  MESSAGE  0 IF THE FIXED MODULE DRIVE IS NOT  D88
*             SELECTED AND RESERVED.                                     D88
*         3.  IF  THE  GENERAL  STATUS IS NOT EQUAL TO 5020, GO TO STEP  D88
*             21.                                                        D88
*         4.  IF  BITS 0-7 OF DETAILED STATUS WORD 13 DECIMAL ARE EQUAL  D88
*             TO 000 OR 377, GO TO STEP 21.                              D88
*         5.  POST FORMAT  MESSAGE  1  IF  THE  STATUS VALID BIT IS NOT  D88PTR4
*             ACTIVE IN STATUS WORD 12 DECIMAL.                          D88
*         6.  POST  FORMAT  MESSAGE  2 IF BITS 00-07 OF DETAILED STATUS  D88
*             WORD 2 IS EQUAL TO BITS 00-07 OF DETAILED STATUS WORD  12  D88
*             DECIMAL.                                                   D88
*         7.  POST FORMAT MESSAGE 3 IF BITS 0-7 OF DETAILED STATUS WORD  D88
*             12 DECIMAL IS EQUAL TO 216 OCTAL.                          D88
*         8.  GO TO STEP 21 IF BIT 3 (DRIVE READY AND SAFE) IS NOT  SET  D88
*             IN DETAILED STATUS WORD 12 DECIMAL.                        D88
*         9.  POST FORMAT MESSAGE 4 IF THE COMMAND ISSUED TO THE  DRIVE  D88
*             IN DETAILED STATUS WORD 13 DECIMAL IS EQUAL TO 40 THROUGH  D88
*             46 HEX.                                                    D88
*         10. POST FORMAT MESSAGE 11 IF THE COMMAND ISSUED TO THE DRIVE  D88
*             IN DETAILED STATUS WORD 13 DECIMAL IS NOT EQUAL TO 48  OR  D88
*             4A HEX.                                                    D88
*         11. POST FORMAT MESSAGE 5 IF BIT 3 (DRIVE OFF  LINE)  IS  NOT  D88
*             ACTIVE  IN  DETAILED  STATUS  WORD  15 DECIMAL.            D88
*         12. IF BIT 4 (WRITE/READ  STATUS  ERROR)  IS  NOT  ACTIVE  IN  D88
*             DETAILED STATUS WORD 15 DECIMAL, GO TO STEP 15.            D88
*         13. IF BIT 3 (WRITE/READ STATUS ERROR) IS ACTIVE IN  DETAILED  D88
*             STATUS WORD 12 DECIMAL, GO TO STEP 21.                     D88
*         14. POST FORMAT MESSAGE 6.                                     D88
*         15. IF  BIT  5  (DRIVE  CHECK  STATUS ERROR) IS NOT ACTIVE IN  D88
*             DETAILED STATUS WORD 15 DECIMAL, GO TO STEP 18.            D88
*         16. IF BIT 5 (DRIVE CHECK STATUS ERROR) IS ACTIVE IN DETAILED  D88
*             STATUS WORD 12 DECIMAL, GO TO STEP 21.                     D88
*         17. POST FORMAT MESSAGE 7.                                     D88
*         18. POST FORMAT MESSAGE 11 IF  BIT  6  (ACCESS  CHECK  STATUS  D88
*             ERROR) IS NOT ACTIVE IN DETAILED STATUS WORD 15 DECIMAL.   D88
*         19. IF BIT 00  (ACCESS  CHECK  STATUS  ERROR)  IS  ACTIVE  IN  D88
*             DETAILED STATUS WORD 12 DECIMAL, GO TO STEP 21.            D88
*         20. POST FORMAT MESSAGE 10.                                    D88
*         21. IF  THE  GENERAL  STATUS  IS EQUAL TO 7777 EXIT TO MODULE  D88
*             D8897M.                                                    D88
*         22. POST  FORMAT  MESSAGE  2 IF BITS 00-07 OF DETAILED STATUS  D88
*             WORD 2 IS EQUAL TO BITS 00-07 OF DETAILED STATUS WORD  12  D88
*             DECIMAL.                                                   D88
*         23. POST FORMAT MESSAGE 3 IF BITS 0-7 OF DETAILED STATUS WORD  D88
*             12 DECIMAL IS EQUAL TO 216 OCTAL.                          D88
*         24. EXIT TO MODULE D8897L IF BIT 0 (ACCESS CHECK STATUS ERROR  D88
*             IS NOT SET IN DETAILED STATUS WORD 12 DECIMAL.             D88
*         25. POST FORMAT MESSAGE 12 IF BIT  1  (FMD  SERVO  OFF  TRACK  D88
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL.        D88
*         26. POST FORMAT MESSAGE 13  IF  BIT  2  (FMD  SEEK  OVERSHOOT  D88
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL.        D88
*         27. POST FORMAT MESSAGE 14 IF BIT 3 (FMD SERVO TIMEOUT ERROR)  D88
*             IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL.               D88
*         28. POST FORMAT MESSAGE 15.                                    D88
*         29. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         30. EXIT TO MODULE D8897M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         B13 CONTAINS THE INDEX TO THE STATUS BUFFER.                   D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO MODULE D8897L IF THE CAUSE OF THE FAULT IN THE DRIVE   D88
*           HAS NOT BEEN DETERMINED.                                     D88
*         EXIT TO MODULE D8897M IF THE CAUSE OF THE FAULT IN THE DRIVE   D88
*           WAS DETERMINED WITH THE PRESERVICE FORECAST GROUP NUMBER
*           IN THE B14 REGISTER.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8897L - ISOLATE DRIVE FAULT.                                  D88
*         D8897M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*         FLOWCHARTS-                                                    D88
*         *************************************************************  D88
*         *      ISOLATION FLOWCHART FOR THE FIXED MODULE DRIVE.      *  D88
*         *                                                           *  D88
*         *         STEPS 1 THROUGH 26 ARE IN MODULE D8897K.          *  D88
*         *         STEPS 26 THROUGH 46 ARE IN MODULE D8897L.         *  D88
*         *                                                           *  D88
*         *      NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE     *  D88
*         *            TO MODULE D8897M.                              *  D88
*         *                                                           *  D88
*         *************************************************************  D88
*                                                                        D88
*         1.  IF GENERAL STATUS IS EQUAL TO 7777 OCTAL, GO TO STEP 20.   D88
*         2.  IF GENERAL STATUS IS EQUAL TO 0000 OCTAL, GO TO STEP 20.   D88
*         3.  IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED.      D88
*         4.  IF GENERAL STATUS IS NOT EQUAL TO 5020 OCTAL, GO TO STEP   D88
*             20.                                                        D88
*         5.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL     D88
*             ARE EQUAL TO ZERO, GO TO STEP 20.                          D88
*         6.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL     D88
*             ARE EQUAL TO 377 OCTAL, GO TO STEP 20.                     D88
*         7.  IF BIT 1 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE FMD STATUS VALID NOT ACTIVE.        D88
*         8.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 2 DECIMAL      D88
*             ARE EQUAL BITS 0 THROUGH 7 OF DETAILED STATUS WORD 12      D88
*             DECIMAL, POST THE MESSAGE CONTROLLER BUS OUT PARITY        D88
*             ERROR.                                                     D88
*         9.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 12 DECIMAL     D88
*             ARE EQUAL TO 216 OCTAL, POST THE MESSAGE FMD DECODE        D88
*             PARITY ERROR OR ILLEGAL DECODE.                            D88
*         10. IF BIT 3 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 20.                                       D88
*         11. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL     D88
*             ARE EQUAL TO 100, 101, 102, 103, 104, 105, OR 106 OCTAL,   D88
*             POST THE MESSAGE FMD BUS IN DATA ERROR.                    D88
*         12. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL     D88
*             ARE NOT EQUAL TO 110 OR 112 OCTAL, POST THE MESSAGE FMD    D88
*             FAULT CANNOT BE ISOLATED.                                  D88
*         13. IF BIT 3 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE FMD STATUS INDICATES DRIVE OFF      D88
*             LINE.                                                      D88
*         14. IF BIT 4 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 16.                                       D88
*         15. IF BIT 3 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, GO TO STEP 20, OTHERWISE POST THE MESSAGE FMD     D88
*             WRITE/READ STATUS ERROR ON BUS IN STATUS.                  D88
*         16. IF BIT 5 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 18.                                       D88
*         17. IF BIT 5 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, GO TO STEP 20, OTHERWISE POST THE MESSAGE FMD     D88
*             DRIVE CHECK STATUS ERROR ON BUS IN STATUS.                 D88
*         18. IF BIT 6 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.       D88
*         19. IF BIT 0 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, GO TO STEP 20, OTHERWISE POST THE MESSAGE FMD     D88
*             ACCESS CHECK STATUS ERROR ON BUS IN STATUS.                D88
*         20. IF DETAILED STATUS WORD 1 IS EQUAL TO 7777, EXIT TO        D88
*             MODULE D8897M.                                             D88
*         21. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 2 DECIMAL      D88
*             ARE EQUAL TO BITS 0 THROUGH 7 OF DETAILED STATUS WORD 12   D88PTR4
*             DECIMAL, POST THE MESSAGE CONTROLLER BUS OUT PARITY        D88
*             ERROR.                                                     D88
*         22. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 12 DECIMAL     D88
*             ARE EQUAL TO 216 OCTAL, POST THE MESSAGE FMD DECODE        D88
*             PARITY ERROR OR ILLEGAL DECODE.                            D88
*         23. IF BIT 0 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 27.                                       D88
*         24. IF BIT 1 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD SERVO OFF TRACK ERROR.       D88
*         25. IF BIT 2 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD SEEK OVERSHOOT ERROR.        D88
*         26. IF BIT 3 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD SEEK TIMEOUT ERROR,          D88
*             OTHERWISE POST THE MESSAGE FMD ACCESS CHECK ERROR CANNOT   D88
*             BE ISOLATED.                                               D88
*         27. IF BIT 3 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 39.                                       D88
*         28. IF BIT 4 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD HEAD SHORT ERROR.            D88
*         29. IF BIT 5 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD INDEX CHECK ERROR.           D88
*         30. IF BIT 6 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD CONTROL ERROR.               D88
*         31. IF BIT 7 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD WRITE TRANSITION ERROR.      D88
*         32. IF BIT 8 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD WRITE CURRENT ERROR.         D88
*         33. IF BIT 9 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD MULTIPLE HEAD ERROR.         D88PTR4
*         34. IF BIT 10 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE FMD WRITE OVERRUN ERROR.         D88
*         35. IF BIT 11 IN DETAILED STATUS WORD 11 DECIMAL IS EQUAL TO   D88
*             ZERO, GO TO STEP 37.                                       D88
*         36. IF BIT 4 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD NOT WRITE ENABLED, OTHERWISE    D88
*             POST THE MESSAGE FMD CAPABLE ENABLE ERROR.                 D88
*         37. IF BIT 2 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD WRITE WHILE IN OFFSET        D88
*             ERROR.                                                     D88
*         38. IF BIT 3 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD WRITE OR READ AND NO         D88
*             CONTROL SELECT ERROR, OTHERWISE POST THE MESSAGE FMD       D88
*             WRITE/READ ERROR CANNOT BE ISOLATED.                       D88
*         39. IF BIT 5 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.       D88
*         40. IF BIT 1 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD START SWITCH NOT ON.            D88
*         41. IF BIT 0 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD DRIVE MOTOR NOT AT SPEED.       D88
*         42. IF BIT 2 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD AIR SWITCH NOT MADE.            D88
*         43. IF BIT 3 IN DETAILED STATUS WORD 2 DECIMAL IS NOT EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD SEQUENCE ERROR LATCH ERROR.  D88
*         44. IF BIT 2 IN DETAILED STATUS WORD 7 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD HDA SEQUENCE NOT COMPLETE.      D88
*         45. IF BIT 6 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD SECTOR COMPARE ERROR.        D88
*         46. IF BIT 6 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD SECTOR COMPARE ERROR,        D88
*             OTHERWISE POST THE MESSAGE FMD DRIVE CHECK ERROR CANNOT    D88
*             BE ISOLATED.                                               D88
*         47. EXIT TO MODULE D8897M.                                     D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT FMD NOT SELECTED AND RESERVED.                                 D88
1  FORMAT FMD STATUS VALID NOT ACTIVE.                                   D88
2  FORMAT CONTROLLER BUS OUT PARITY ERROR.                               D88
3  FORMAT FMD DECODE PARITY ERROR OR ILLEGAL DECODE.                     D88
4  FORMAT FMD BUS IN DATA ERROR.                                         D88
5  FORMAT FMD STATUS INDICATES DRIVE OFF LINE.                           D88
6  FORMAT FMD WRITE/READ STATUS ERROR ON BUS IN STATUS.                  D88
7  FORMAT FMD DRIVE CHECK STATUS ERROR ON BUS IN STATUS.                 D88
10 FORMAT FMD ACCESS CHECK STATUS ERROR ON BUS IN STATUS.                D88
11 FORMAT FMD FAULT CANNOT BE ISOLATED.                                  D88
12 FORMAT FMD SERVO OFF TRACK ERROR.                                     D88
13 FORMAT FMD SEEK OVERSHOOT ERROR.                                      D88
14 FORMAT FMD SEEK TIMEOUT ERROR.                                        D88
15 FORMAT FMD ACCESS CHECK ERROR CANNOT BE ISOLATED.                     D88
*                                                                        D88
/---------CHECK THE GENERAL STATUS WORD.                                 D88
*                                                                        D88
30 IF(SB(B13).EQ.7777) GOTO 54    *NO GENERAL STATUS                     D88
   IF(SB(B13).EQ.0) GOTO 54       *GENERAL STATUS IS ZERO                D88
*                                                                        D88
/---------CHECK FOR THE DRIVE SELECTED AND RESERVED.                     D88
*                                                                        D88
   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                                                                 D88
   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             D88
   IF(SB(B13+15).AND.377.EQ.377)GOTO 52  *NO DRIVE STATUS                D88
*                                                                        D88
/---------CHECK FOR STATUS VALID RECEIVED FROM THE DRIVE.                D88
*                                                                        D88
   B15=1                              *MESSAGE NUMBER                    D88
   IF(SB(B13+16).AND.2.EQ.0) GOTO 70  *IF NO STATUS VALID                D88
*                                                                        D88
/---------CHECK FOR ECHO COMMAND OR ECHO BUS MODE ACTIVE.                D88
*                                                                        D88
   B14=SB(B13+14) AND 377           *DETAILED STATUS WORD 12             D88
   B15=2                                *MESSAGE NUMBER                  D88
   IF(SB(B13+2).AND.377.EQ.B14)GOTO 70  *IF ECHO BUS MODE                D88
   B15=3                                *MESSAGE NUMBER                  D88
   IF(B14.EQ.216) GOTO 70               *ECHO COMMAND MODE               D88
*                                                                        D88
/---------CHECK FOR THE DRIVE READY AND SAFE.                            D88
*                                                                        D88
   IF(SB(B13+16).AND.10.EQ.0)GOTO 54  *IF NOT READY AND SAFE             D88
*                                                                        D88
/---------CHECK FOR BUS IN ERROR FOR THE COMMAND ISSUED.                 D88
*                                                                        D88
   B14=SB(B13+15).AND.377           *DETAILED STATUS WORD 13             D88
   IF(B14.LT.100) GOTO 34           *IF COMMAND 00-3F HEX.               D88
   B15=4                            *MESSAGE NUMBER                      D88
   IF(B14.LE.106) GOTO 70           *IF COMMAND 40-46 HEX.               D88
*                                                                        D88
/---------CHECK IF 48 OR 4A COMMAND ISSUED.                              D88
*                                                                        D88
34 IF(B14.LT.110) GOTO 52           *IF NOT 48 HEX. COMMAND              D88
   IF(B14.GT.112) GOTO 52           *IF NOT 48, 4A COMMAND               D88
*                                                                        D88
/---------CHECK FOR ON LINE STATUS ACTIVE IN BUS IN STATUS.              D88
*                                                                        D88
   B15=5                              *MESSAGE NUMBER                    D88
   IF(SB(B13+17).AND.10.EQ.0)GOTO 70  *IF ON LINE NOT ACTIVE             D88
   B14=SB(B13+14)                   *DETAILED STATUS WORD 12             D88
*                                                                        D88
/---------CHECK READ/WRITE ERROR STATUS ON BUS IN.                       D88
*                                                                        D88
   IF(SB(B13+17).AND.20.EQ.0)GOTO 46  *NOT READ/WRITE ERROR              D88
   IF(B14.AND.10.NE.0) GOTO 54        *READ/WRITE ERROR                  D88
   B15=6                              *MESSAGE NUMBER                    D88
   GOTO 70                            *GO TO POST MESSAGE                D88
*                                                                        D88
/---------CHECK DRIVE CHECK ERROR STATUS ON BUS IN.                      D88
*                                                                        D88
46 IF(SB(B13+17).AND.40.EQ.0)GOTO 50  *NOT DRIVE CHECK ERROR             D88
   IF(B14.AND.40.NE.0) GOTO 54        * DRIVE CHECK ERROR                D88
   B15=7                              *MESSAGE NUMBER                    D88
   GOTO 70                            *GO TO POST MESSAGE                D88
*                                                                        D88
/---------CHECK ACCESS CHECK ERROR STATUS ON BUS IN.                     D88
*                                                                        D88
50 IF(SB(B13+17).AND.100.EQ.0)GOTO 52  *NOT ACCESS CHECK ER.             D88
   IF(B14.AND.1.NE.0) GOTO 54          *ACCESS CHECK ERROR               D88
   B15=10                              *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
52 B15=11                              *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
*                                                                        D88
/---------CHECK FOR DETAILED STATUS IN THE STATUS BUFFER.                D88
*                                                                        D88
54 IF(SB(B13+1).EQ.7777) EXIT TO 97M   *NO GENERAL STATUS                D88
   B15=0                                 *MESSAGE NUMBER
   IF(SB(B13+9).AND.400.EQ.0) GOTO 70  *DRIVE NOT SELECTED
*                                                                        D88
/---------CHECK FOR ECHO COMMAND OR ECHO BUS MODE ACTIVE.                D88
*                                                                        D88
   B14=SB(B13+14) AND 377           *DETAILED STATUS WORD 12             D88
   B15=2                                *MESSAGE NUMBER                  D88
   IF(SB(B13+2).AND.377.EQ.B14)GOTO 70  *IF ECHO BUS MODE                D88
   B15=3                                *MESSAGE NUMBER                  D88
   IF(B14.EQ.216) GOTO 70               *ECHO COMMAND MODE               D88
*                                                                        D88
/---------CHECK FOR FIXED MODULE DRIVE ACCESS CHECK ERROR.               D88
*                                                                        D88
   IF(B14.AND.1.EQ.0) EXIT TO 97L    *IF NOT ACCESS CHECK                D88
*                                                                        D88
/---------CHECK FOR DRIVE SERVO OFF TRACK.                               D88
*                                                                        D88
   B15=12                            *MESSAGE NUMBER                     D88
   IF(SB(B13+9).AND.2.NE.0) GOTO 70  *SERVO OFF TRACK ERROR              D88
*                                                                        D88
/---------CHECK FOR DRIVE SEEK OVERSHOOT ERROR.                          D88
*                                                                        D88
   B15=13                            *MESSAGE NUMBER                     D88
   IF(SB(B13+9).AND.4.NE.0) GOTO 70  *SEEK OVERSHOOT ERROR               D88
*                                                                        D88
/---------CHECK FOR DRIVE SEEK TIMEOUT ERROR.                            D88
*                                                                        D88
   B15=14                            *MESSAGE NUMBER                     D88
   IF(SB(B13+9).AND.10.NE.0)GOTO 70  *SEEK TIMEOUT ERROR                 D88
   B15=15                            *MESSAGE NUMBER                     D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *D8897K ISOLATE DRIVE FAULT                 D88
   MODULE D8897L,FMDHT(7),LOCK                                           D88
***       D8897L - ISOLATE DRIVE FAULT                                   D88
**        D8897L - ISOLATE DRIVE FAULT                                   D88
*         D8897L - ISOLATE DRIVE FAULT                                   D88
*         ----------------------------                                   D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         ISOLATE  THE  CAUSE  OF  THE  DRIVE FAULTS CAUSED BY EITHER A  D88
*         WRITE/READ ERROR OR DRIVE CHECK ERROR.                         D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF  BIT  3  (WRITE/READ  STATUS  ERROR)  IS NOT ACTIVE IN  D88
*             DETAILED STATUS WORD 12 DECIMAL, GO TO STEP 15.            D88
*         2.  POST  FORMAT  MESSAGE  1  IF  BIT 4 (HEAD SHORT ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         3.  POST  FORMAT  MESSAGE  2  IF BIT 5 (INDEX CHECK ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         4.  POST  FORMAT MESSAGE 3 IF BIT 6 (CONTROL ERROR) IS ACTIVE  D88
*             IN DETAILED STATUS WORD 11 DECIMAL.                        D88
*         5.  POST  FORMAT  MESSAGE 4 IF BIT 7 (WRITE TRANSITION ERROR)  D88
*             IS ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.              D88
*         6.  POST  FORMAT  MESSAGE 5 IF BIT 8 (WRITE CURRENT ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         7.  POST  FORMAT  MESSAGE 6 IF BIT 9 (MULTIPLE HEAD ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         8.  POST  FORMAT MESSAGE 7 IF BIT 10 (WRITE OVERRUN ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         9.  GO  TO STEP 12 IF BIT 11 IS NOT ACTIVE IN DETAILED STATUS  D88
*             WORD 11 DECIMAL.                                           D88
*         10. POST  FORMAT  MESSAGE 10 IF BIT 4 (FMD NOT WRITE ENABLED)  D88
*             IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.           D88
*         11. POST FORMAT MESSAGE 11.                                    D88
*         12. POST FORMAT MESSAGE 12 IF BIT 2 (WRITE  WHILE  IN  OFFSET  D88
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.       D88
*         13. POST FORMAT MESSAGE 13 IF BIT 3 (WRITE  OR  READ  AND  NO  D88
*             CONTROL  SELECT  ERROR) IS ACTIVE IN DETAILED STATUS WORD  D88
*             11 DECIMAL.                                                D88
*         14. POST FORMAT MESSAGE 14.                                    D88
*         15. POST FORMAT MESSAGE 0 IF BIT 5 (DRIVE CHECK ERROR) IS NOT  D88
*             ACTIVE IN DETAILED STATUS WORD 12 DECIMAL.                 D88
*         16. POST FORMAT MESSAGE 15 IF BIT 1 (FMD START SWITCH ON)  IS  D88
*             NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.              D88
*         17. POST FORMAT MESSAGE 16 IF BIT 0 (FMD DRIVE MOTOR  NOT  AT  D88
*             SPEED) IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.    D88
*         18. POST FORMAT MESSAGE 17 IF BIT 2 (FMD AIR SWITCH NOT MADE)  D88
*             IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.           D88
*         19. POST FORMAT MESSAGE 20 IF BIT 3 (SEQUENCE ERROR LATCH) IS  D88
*             NOT ACTIVE IN DETAILED STATUS WORD 2.                      D88
*         20. POST FORMAT MESSAGE  21  IF  BIT  07  (HDA  SEQUENCE  NOT  D88
*             COMPLETE) IS NOT ACTIVE IN DETAILED STATUS WORD 2.         D88
*         21. POST FORMAT MESSAGE 22 IF BIT 5 (INDEX  CHECK  ERROR)  IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         22. POST FORMAT MESSAGE 23 IF BIT 6 (SECTOR COMPARE ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 12 DECIMAL.                 D88
*         23. POST FORMAT MESSAGE 24.                                    D88
*         24. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         25. EXIT TO MODULE D8897M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         B13 CONTAINS THE INDEX TO THE STATUS BUFFER.                   D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT WILL ALWAYS BE MADE TO MODULE D8897M WITH THE PRESERVICE 
*           FORECAST GROUP NUMBER IN THE B14 REGISTER.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8897M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT FMD FAULT CANNOT BE ISOLATED.                                  D88
1  FORMAT FMD HEAD SHORT ERROR.                                          D88
2  FORMAT FMD INDEX CHECK ERROR.                                         D88
3  FORMAT FMD CONTROL ERROR.                                             D88
4  FORMAT FMD WRITE TRANSITION ERROR.                                    D88
5  FORMAT FMD WRITE CURRENT ERROR.                                       D88
6  FORMAT FMD MULTIPLE HEAD ERROR.                                       D88
7  FORMAT FMD WRITE OVERRUN ERROR.                                       D88
10 FORMAT FMD NOT WRITE ENABLED.                                         D88
11 FORMAT FMD CAPABLE ENABLE ERROR.                                      D88
12 FORMAT FMD WRITE WHILE IN OFFSET ERROR.                               D88
13 FORMAT FMD WRITE OR READ AND NO CONTROL SELECT ERROR.                 D88
14 FORMAT FMD WRITE/READ ERROR CANNOT BE ISOLATED.                       D88
15 FORMAT FMD START SWITCH NOT ON.                                       D88
16 FORMAT FMD DRIVE MOTOR NOT AT SPEED.                                  D88
17 FORMAT FMD AIR SWITCH NOT MADE.                                       D88
20 FORMAT FMD SEQUENCE ERROR LATCH ERROR.                                D88
21 FORMAT FMD HDA SEQUENCE NOT COMPLETE.                                 D88
22 FORMAT FMD INDEX CHECK ERROR.                                         D88
23 FORMAT FMD SECTOR COMPARE ERROR.                                      D88
24 FORMAT FMD DRIVE CHECK ERROR CANNOT BE ISOLATED.                      D88
*                                                                        D88
/---------CHECK FOR FIXED MODULE DRIVE READ/WRITE ERROR.                 D88
*                                                                        D88
30 IF(SB(B13+14).AND.10.EQ.0) GOTO 50  *NOT WRITE/READ ERROR             D88PTR4
*                                                                        D88
/---------CHECK FOR HEAD SHORT ERROR.                                    D88
*                                                                        D88
   B14=SB(B13+13)                   *DETAILED STATUS WORD 11             D88
   B15=1                            *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *IF HEAD SHORT ERROR                 D88
*                                                                        D88
/---------CHECK FOR INDEX CHECK ERROR.                                   D88
*                                                                        D88
   B15=2                            *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *IF INDEX CHECK ERROR                D88
*                                                                        D88
/---------CHECK FOR CONTROL ERROR.                                       D88
*                                                                        D88
   B15=3                            *MESSAGE NUMBER                      D88
   IF(B14.AND.100.NE.0) GOTO 70     *IF CONTROL ERROR                    D88
*                                                                        D88
/---------CHECK FOR WRITE TRANSITION ERROR.                              D88
*                                                                        D88
   B15=4                            *MESSAGE NUMBER                      D88
   IF(B14.AND.200.NE.0) GOTO 70     *IF WRITE TRANSITION                 D88
*                                                                        D88
/---------CHECK FOR WRITE CURRENT ERROR.                                 D88
*                                                                        D88
   B15=5                            *MESSAGE NUMBER                      D88
   IF(B14.AND.400.NE.0) GOTO 70     *IF WRITE CURRENT ERROR              D88
*                                                                        D88
/---------CHECK FOR MULTI HEAD ERROR                                     D88
*                                                                        D88
   B15=6                            *MESSAGE NUMBER                      D88
   IF(B14.AND.1000.NE.0) GOTO 70    *IF MULTI HEAD ERROR                 D88
*                                                                        D88
/---------CHECK FOR WRITE OVERRUN ERROR.                                 D88
*                                                                        D88
   B15=7                            *MESSAGE NUMBER                      D88
   IF(B14.AND.2000.NE.0) GOTO 70    *IF WRITE OVERRUN ERROR              D88
*                                                                        D88
/---------CHECK FOR CAPABLE ENABLE TYPE ERROR.                           D88
*                                                                        D88
   IF(B14.AND.4000.EQ.0) GOTO 40    *IF NOT CAPABLE ENABLE               D88
*                                                                        D88
/---------CHECK FOR WRITE DISABLE ERROR.                                 D88
*                                                                        D88
   B15=10                            *MESSAGE NUMBER                     D88
   IF(SB(B13+8).AND.20.EQ.0)GOTO 70  *IF WRITE DISABLED                  D88
   B15=11                            *MESSAGE NUMBER                     D88
   GOTO 70                           *GO TO POST MESSAGE                 D88
*                                                                        D88
/---------CHECK FOR WRITE WHILE IN OFFSET ERROR.                         D88
*                                                                        D88
40 B15=12                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4.NE.0) GOTO 70       *WRITE IN OFFSET ERROR               D88
*                                                                        D88
/---------CHECK FOR WRITE/READ AND NO CONTROL SELECT ERROR.              D88
*                                                                        D88
   B15=13                           *MESSAGE NUMBER                      D88
   IF(B14.AND.10.NE.0) GOTO 70      *IF CONTROL SELECT ERROR             D88
   B15=14                           *MESSAGE NUMBER                      D88
   GOTO 70                          *GO TO POST MESSAGE                  D88
*                                                                        D88
/---------CHECK FOR FIXED MODULE DRIVE CHECK ERROR.                      D88
*                                                                        D88
50 B15=0                              *MESSAGE NUMBER                    D88
   IF(SB(B13+14).AND.40.EQ.0)GOTO 70  *NOT DRIVE CHECK ERROR             D88
*                                                                        D88
/---------CHECK FOR DRIVE START SWITCH NOT ON.                           D88
*                                                                        D88
   B15=15                             *MESSAGE NUMBER                    D88
   IF(SB(B13+8).AND.2.EQ.0) GOTO 70   *DRIVE SWITCH NOT ON               D88
*                                                                        D88
/---------CHECK FOR DRIVE MOTOR NOT AT SPEED.                            D88PTR4
*                                                                        D88
   B15=16                             *MESSAGE NUMBER                    D88
   IF(SB(B13+8).AND.1.EQ.0) GOTO 70   *MOTOR NOT AT SPEED                D88
*                                                                        D88
/---------CHECK FOR DRIVE AIR SWITCH NOT MADE.                           D88
*                                                                        D88
   B15=17                             *MESSAGE NUMBER                    D88
   IF(SB(B13+8).AND.4.EQ.0) GOTO 70   *AIR SWITCH NOT MADE               D88
*                                                                        D88
/---------CHECK FOR SEQUENCE ERROR LATCH NOT MADE ERROR.                 D88
*                                                                        D88
   B15=20                             *MESSAGE NUMBER                    D88
   IF(SB(B13+2).AND.10.NE.0) GOTO 70  *SEQUENCE LATCH ERROR              D88
*                                                                        D88
/---------CHECK FOR HDA SEQUENCE NOT COMPLETE ERROR.                     D88
*                                                                        D88
   B15=21                             *MESSAGE NUMBER                    D88
   IF(SB(B13+2).AND.200.EQ.0)GOTO 70  *HDA SEQUENCE ERROR                D88
*                                                                        D88
/---------CHECK FOR INDEX CHECK ERROR.                                   D88
*                                                                        D88
   B15=22                             *MESSAGE NUMBER                    D88
   IF(SB(B13+13).AND.40.NE.0)GOTO 70  *IF INDEX CHECK ERROR              D88PTR4
*                                                                        D88
/---------CHECK FOR SECTOR COMPARE ERROR.                                D88
*                                                                        D88
   B15=23                              *MESSAGE NUMBER                   D88
   IF(SB(B13+14).AND.100.NE.0)GOTO 70  *SECTOR COMPARE ERROR             D88
   B15=24                              *MESSAGE NUMBER                   D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *D8897L ISOLATE DRIVE FAULT                 D88
   MODULE D8897M,FMDHT(7),LOCK                                           D88
***       D8897M - POST PRESERVICE FORECAST GROUP                        D88
**        D8897M - POST PRESERVICE FORECAST GROUP                        D88
*         D8897M - POST PRESERVICE FORECAST GROUP                        D88
*         ---------------------------------------                        D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         POST  THE  PRESERVICE  FORECAST  GROUP MESSAGE AND REPORT THE 
*         ERROR TO THE OPERATOR.
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE  MODULE  NUMBER IN THE B1 REGISTER IS LESS THAN 12 
*             DECIMAL OR LESS, SET THE PRESERVICE FORECAST GROUP NUMBER 
*             IN  THE  B14  REGISTER  FOR  THE  FOR THE FMDC 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 NUMBER IN THE EM REGISTER.
*         3.  POST THE PRESERVICE FORECAST GROUP MESSAGE. 
*         4.  REPORT THE ERROR TO THE OPERATOR. 
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B14 = 0 FOR PRESERVICE FORECAST GROUP FMDC,  1 FOR PRESERVICE 
*               FORECAST  GROUP FMDD,  2 FOR PRESERVICE FORECAST  GROUP 
*               FMDC/FMDD, OR 3 FOR PRESERVICE FORECAST GROUP FMDD/FMDC 
*               ON PRODUCT OVERLAY DETECTED ERRORS. 
*         EM  = 0 FOR PRESERVICE FORECAST GROUP FMDC,  1 FOR PRESERVICE 
*               FORECAST  GROUP FMDD,  2 FOR PRESERVICE FORECAST  GROUP 
*               FMDC/FMDD, OR 3 FOR PRESERVICE FORECAST GROUP FMDD/FMDC 
*               ON MODULE DETECTED ERRORS.
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT IS ALWAYS TO MODULE D8897N.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8897N - RESTART CONTROLLER.                                   D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = PRESERVICE FORECAST GROUP NUMBER. 
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*                                                                        D88
/---------MESSAGES POSTED BY THE MODULE.                                 D88
*                                                                        D88
1  FORMAT D88 - FMD CONFIDENCE TEST                                      D88
2  FORMAT PRESERVICE FORECAST GROUP FMDC                                 D88
3  FORMAT PRESERVICE FORECAST GROUP FMDD                                 D88
4  FORMAT PRESERVICE FORECAST GROUP FMDC/FMDD 
5  FORMAT PRESERVICE FORECAST GROUP FMDD/FMDC 
6  FORMAT --------------------------------------------------
7  FORMAT 
10 FORMAT TRUE DISK ADD CYL=*OCT TRK=*O SEC=*O
*                                                                        D88
/---------SET PRESERVICE FORECAST GROUP IF MODULES 1-11.
*                                                                        D88
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 
   B12 = B12 + 1
   IF(ES.AND.TM.EQ.0)B12=B12+1   *IF KL DISPLAY 
   MSG 10 (B7,B6,B5) TO LINE B12   *TRUE DISK ADD ON WRITE VERIFY 
30 IF(B14.NE.7777)B14=B14+2  *ADJUST MESSAGE NUMBER IN B14
   IF(B1.LE.11D) B14=2       *IF MODULES IS 1-11
*                                                                        D88
/---------IF NOT A PRODUCT OVERLAY ERROR, USE THE PRESERVICE
/---------FORECAST GROUP IN THE EM REGISTER.
*                                                                        D88
   IF(EC.LT.4000) B14=EM+2   *SET USER SUPPLIED GROUP NO. 
   IF(B14.NE.7777) GOTO 60   *IF LEGAL PRESERVICE GROUP 
   B14=2                     *DEFAULT IS FMDC PRESERVICE
   IF(EC.AND.4077.EQ.4031)B14=4  *IF COMPARE ERROR
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY DISPLAY BUFFER. 
*                                                                        D88
60 MSG B14 TO LINE 2         *PRESERVICE FORECAST MESSAGE 
*                                                                        D88
/---------IF TERMINAL MODE, BLANK FIRST TWO DISPLAY LINES.
*                                                                        D88
   IF(ES.AND.TM.EQ.0)GOTO 70  *IF NOT TERMINAL MODE 
   MSG 7 TO LINE 0           *BLANK FIRST TWO DISPLAY LINES 
   MSG 7 TO LINE 1
   GOTO 72                   *JUMP                                       D88
70 MSG 1 TO LINE 0           *TEST TITLE LINE                            D88
72 PICTURE                                                               D88
   HALT                      *STOP ON THE ERROR                          D88
   MSG 6 TO PRINT            *TERMINATE THE MESSAGE 
   BLANK                                                                 D88
   EXIT TO 97N               *EXIT THE MODULE                            D88
   END 20                    *END OF MODULE 
COMPILE                      *D8897M POST PRESERVICE FORECAST GROUP      D88
   MODULE D8897N,FMDHT(7),LOCK                                           D88
***       D8897N - RESTART CONTROLLER                                    D88
**        D8897N - RESTART CONTROLLER                                    D88
*         D8897N - RESTART CONTROLLER                                    D88
*         ---------------------------                                    D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8897N  WILL  ISSUE A RESET COMMAND TO THE 7155 CONTROLLER IF  D88
*         THE CONTROLLER DOES NOT RESPOND CORRECTLY TO A RES COMMAND.    D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF  THE  NUMBER  IN  THE  B8  REGISTER  IS NOT A 40 OCTAL  D88
*             (RES,CONTOLLER) OR A  41  OCTAL  (RES  DRIVE),  EXIT  THE  D88
*             MODULE.                                                    D88
*         2.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5224  D88
*             OR 5225, EXIT THE MODULE                                   D88
*         3.  EXECUTE A RES,CONTROLLER COMMAND AND TO TO STEP 5  IF  NO  D88
*             ABORT OCCURES.                                             D88
*         4.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5224  D88
*             OR 5225, EXIT THE MODULE                                   D88
*         5.  EXECUTE A COMMAND SEQUENCE OF RESET,  STATUS,DETAIL,  AND  D88
*             REL AND GO TO STEP 7 IF AN ABORT OCCURS.                   D88
*         6.  EXIT THE MODULE.                                           D88
*         7.  REPORT  AN  ERROR  INDICATING  THE  THE  PREVIOUS COMMAND  D88
*             SEQUENCE FAILED AND THAT THIS INDICATES A PROBLEM IN  THE  D88
*             CONTROLLER OR A PROBLEM WITH THE CONTROLWARE.              D88
*         8.  TERMINATE EXECUTION OF THE PRIMARY MODULE.                 D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B8  = COMMAND NUMBER FOR THE COMMAND THAT WAS BEING EXECUTED.  D88
*         EC  = THE ERROR CODE FOR THE LAST ERROR REPORTED.              D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO THE CALLING MODULE IF THE RESET COMMAND DOES NOT HAVE  D88
*           BE EXECUTED OR IF THE RESET COMMAND CORRECTS THE PROBLEM.    D88
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE RESET         D88
*           COMMAND MUST BE EXECUTE, BUT DOES NOT CORRECT THE PROBLEM.   D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         NONE.                                                          D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         NONE.                                                          D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
1  FORMAT D88 - FMD CONFIDENCE TEST                                      D88
2  FORMAT D88*D MODULE ABORTED - CONTROLLER NOT RESPONDING               D88
3  FORMAT PRESERVICE FORECAST GROUP FMDC                                 D88
4  FORMAT ABNORMAL RESPONSE TO A RESET/DETAILED STATUS SEQ.              D88
5  FORMAT POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM                     D88
6  FORMAT D88*D MODULE EXECUTION ABORTED                                 D88
7  FORMAT --------------------------------------------------             D88
*                                                                        D88
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.               D88
*                                                                        D88
30 IF(B8.EQ.40) GOTO 32      *IF RES CONTROLLER COMMAND                  D88
   IF(B8.NE.41) EXIT         *IF NOT RES COMMAND, EXIT                   D88
*                                                                        D88
/---------EXIT IF THE ERROR WAS BECAUSE OF NO RESERVE IN                 D88
/---------FIVE MINUTES OR ABNORMAL GENERAL STATUS.                       D88
*                                                                        D88
32 IF(EC.AND.4077.EQ.4024)EXIT  *IF NO RESERVE ERROR, EXIT
   IF(EC.AND.4077.EQ.4025)EXIT  *IF ABNORMAL STATUS, EXIT 
*                                                                        D88
/---------RESERVE THE CONTROLLER TO ISSUE A RESET COMMAND.               D88
*                                                                        D88
   RES,CONTROLLER,ABT 34     *RESERVE THE CONTROLLER                     D88
   GOTO 36                   *GO TO ISSUE RESET                          D88
*                                                                        D88
/---------PROCESS THE ABORT ON THE RES COMMAND.                          D88
*                                                                        D88
34 IF(EC.AND.4077.EQ.4024)EXIT  *IF NO RESERVE ERROR, EXIT
   IF(EC.AND.4077.EQ.4025)EXIT  *IF ABNORMAL STATUS, EXIT 
*                                                                        D88
/---------ISSUE THE RESET COMMAND AND RELEASE THE CONTROLLER.            D88PTR4
*                                                                        D88
36 RESET,ABT 40              *ZERO WORD AUTOLOAD                         D88
   STATUS,DETAIL,ABT 40      *GET DETAILED STATUS                        D88
   REL,ABT 40                *RELEASE THE CONTROLLER                     D88
   EXIT                      *EXIT THE MODULE                            D88
*                                                                        D88
/---------DISPLAY CONTROLLER/CONTROLWARE ERROR MESSAGE.                  D88PTR4
*                                                                        D88
40 IF(ES.AND.TM.NE.0) GOTO 70                                            D88
   MSG 1 TO LINE 0           *TEST NAME MESSAGE                          D88
70 MSG 3 TO LINE 2           *PRESERVICE FORECAST GROUP MSG.             D88
   MSG 4 TO LINE 5           *ERROR MESSAGE                              D88
   MSG 5 TO LINE 7           *INFORMATION MESSAGE                        D88
   MSG 6 (B1) TO LINE 10     *INFORMATION MESSAGE                        D88
   PICTURE                                                               D88
   HALT                      *STOP ON ERROR                              D88
   MSG 7 TO PRINT            *TERMINATE PRINT MESSAGES                   D88
   BLANK                                                                 D88
   MSG 2 (B1) TO PRINT,DAYFILE,DISPLAY  *MODULE ABORT MSG.               D88
   END 30                               *END OF THE MODULE               D88
COMPILE                      *D8897N RESTART CONTROLLER 
*ENDIF
*IF DEF,LSFMD 
   MODULE DL897G,LSFMD1(16),LOCK
***       DL897G - PROCESS GENERAL STATUS 
**        DL897G - PROCESS GENERAL STATUS 
*         DL897G - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         THIS  MODULE WILL DETERMINE THE REASON THE GENERAL STATUS WAS 
*         NONZERO AFTER A OPERATION IN THE 7155 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,  EXIT  TO 
*             MODULE DL897M.
*         3.  IF THE GENERAL STATUS IS 0010 OR 2000, POST  THE  CORRECT 
*             MESSAGE.
*         4.  IF THE GENERAL STATUS IS 5020, EXIT TO MODULE DL897K. 
*         5.  IF  DETAILED  STATUS  WORD  1  IS EQUAL TO 7777, POST THE 
*             FORMAT MESSAGE GENERAL STATUS NONZERO,  BUT  NO  DETAILED 
*             STATUS. 
*         6.  IF THE GENERAL STATUS NOT EQUAL TO 5000,  EXIT  TO MODULE 
*             DL897J. 
*         7.  IF THE DETAILED STATUS INDICATES AN ILLEGAL PARAMETER  OR 
*             AN  ILLEGAL NUMBER OF PARAMETERS, POST THE CORRECT FORMAT 
*             MESSAGE.
*         8.  IF THE FUNCTION SENT THE CONTROLLER CAUSING THE ERROR WAS 
*             NOT A BUFFER READ  OR  BUFFER  WRITE  FUNCTION,  EXIT  TO 
*             MODULE DL897H.
*         9.  DETERMINE THE CAUSE OF THE ERROR FOR THE BUFFER  READ  OR 
*             BUFFER WRITE FUNCTION AND POST THE CORRECT MESSAGE. 
*         10. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         11. EXIT TO MODULE DL897M.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE
*           NEXT MESSAGE. 
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DL897H IF THE CAUSE OF THE 5000 GENERAL STATUS 
*           HAS NOT BEEN DETERMINED BY THIS MODULE. 
*         EXIT TO MODULE DL897J IF THE GENERAL STATUS IS NOT 0000,
*           2000, 5000, OR 5020.
*         EXIT TO MODULE DL897K IF FMD IS NOT READY AND SAFE. 
*         EXIT TO MODULE DL897M 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-
*         DL897H - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DL897J - PROCESS 4400, 4600, 4700, AND 5200 GENERAL STATUS. 
*         DL897K - ISOLATE FMD FAULTS.
*         DL897M - 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 31 ARE IN MODULE DL897G.          * 
*         *         STEPS 32 THROUGH 53 ARE IN MODULE DL897H.         * 
*         *         STEPS 54 THROUGH 70 ARE IN MODULE DL897I.         * 
*         *         STEPS 70 THROUGH 84 ARE IN MODULE DL897J.         * 
*         *                                                           * 
*         *    NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE       * 
*         *          TO MODULE DL897M.                                * 
*         *                                                           * 
*         ************************************************************* 
* 
*         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 DL897M.
*         3.  IF THE GENERAL STATUS IS EQUAL TO ZERO, EXIT TO MODULE
*             DL897M. 
*         4.  IF THE GENERAL STATUS IS EQUAL TO 0010 OCTAL, POST THE
*             MESSAGE FMD UNIT RESERVED BY ANOTHER CONTROLLER.
*         5.  IF THE GENERAL STATUS IS EQUAL TO 2000 OCTAL, POST THE
*             MESSAGE CONTROLLER RESERVED BY ANOTHER MAINFRAME. 
*         6.  IF THE GENERAL STATUS IS EQUAL TO 5020 OCTAL, EXIT TO 
*             MODULE DL897K TO ISOLATE THE CAUSE OF THE DRIVE FAULT.
*         7.  IF DETAILED STATUS WORD 1 IS EQUAL TO 7777 OCTAL, POST
*             THE MESSAGE GENERAL STATUS NONZERO, BUT NO DETAILED 
*             STATUS. 
*         8.  IF THE GENERAL STATUS IS NOT EQUAL TO 5000 OCTAL, GO TO 
*             STEP 71.
*         9.  IF BIT 3 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO,
*             POST THE MESSAGE CONTROLWARE ILLEGAL PARAMETER ERROR. 
*         10. IF BIT 2 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO,
*             POST THE MESSAGE CONTROLWARE ILLEGAL NUMBER OF
*             PARAMETERS ERROR. 
*         11. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT
*             EQUAL TO 43 OCTAL, GO TO STEP 12. 
*         12. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT
*             REGISTER FULL ERROR, OTHERWISE GO TO STEP 15. 
*         13. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT
*             EQUAL TO 44 OCTAL, GO TO STEP 32. 
*         14. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER
*             FULL ERROR. 
*         15. IF BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL ACTIVE 
*             ERROR.
*         16. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DEADMAN TIMEOUT
*             ERROR.
*         17. IF BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL RESERVED 
*             ERROR.
*         18. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER INPUT 
*             REGISTER FULL ERROR.
*         19. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE ERROR.
*         20. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR. 
*         21. IF BIT 10 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR. 
*         22. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR.
*         23. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT
*             REGISTER PARITY ERROR.
*         24. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, EXIT TO MODULE DL897K TO ISOLATE THE CAUSE OF
*             THE DRIVE FAULT.
*         25. IF BIT 3 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER UP/DOWN COUNT
*             NONZERO ERROR.
*         26. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD
*             ERROR.
*         27. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR
*             INSTRUCTION TIMEOUT ERROR.
*         28. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR. 
*         29. IF BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER NONCORRECTABLE 
*             STATUS ERROR. 
*         30. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK 
*             ERROR.
*         31. POST THE MESSAGE CONTROLLER ERROR CANNOT BE ISOLATED. 
*         32. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 54.
*         33. 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.
*         34. IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         35. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE NOT 
*             EQUAL TO ZERO, GO TO STEP 49. 
*         36. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 14 OCTAL, POST THE MESSAGE FMD CYLINDER ADDRESS
*             MISCOMPARE ERROR. 
*         37. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 12 OCTAL, POST THE MESSAGE FMD TRACK ADDRESS 
*             MISCOMPARE ERROR. 
*         38. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE EQUAL
*             TO 30 OCTAL, GO TO STEP 40. 
*         39. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT
*             EQUAL TO 31 OCTAL, GO TO STEP 41. 
*         40. IF BITS 10 AND 11 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 43.
*         41. IF BIT 10 IN DETAILED STATUS WORD 5 IS NOT EQUAL TO ZERO, 
*             POST THE MESSAGE FMD FACTORY FLAW MAP DETECTED. 
*         42. IF BIT 11 IN DETAILED STATUS WORD 5 IS NOT EQUAL TO ZERO, 
*             POST THE MESSAGE FMD TRACK FLAW DETECTED. 
*         43. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 11 OCTAL, POST THE MESSAGE FMD SECTOR ADDRESS
*             MISCOMPARE ERROR. 
*         44. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 10 OCTAL, POST THE MESSAGE CONTROLWARE ABNORMAL
*             DETAILED STATUS.
*         45. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR. 
*         46. IF BIT 10 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR. 
*         47. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR
*             INSTRUCTION TIMEOUT ERROR.
*         48. POST THE MESSAGE CONTROLLER ERROR CANNOT BE ISOLATED. 
*         49. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, EXIT TO MODULE DL897K TO ISOLATE THE CAUSE OF
*             THE DRIVE FAULT.
*         50. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE ERROR.
*         51. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD
*             ERROR.
*         52. IF BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER NONCORRECTABLE 
*             STATUS ERROR. 
*         53. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK 
*             ERROR, OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT
*             ISOLATED. 
*         54. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, GO TO STEP 56. 
*         55. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR, 
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         56. IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         57. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, EXIT TO MODULE DL897K TO ISOLATE THE CAUSE OF
*             THE DRIVE FAULT.
*         58. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC 
*             BYTE ERROR. 
*         59. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR. 
*         60. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR.
*         61. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT
*             REGISTER PARITY ERROR.
*         62. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD
*             ERROR.
*         63. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR
*             INSTRUCTION TIMEOUT ERROR.
*         64. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR. 
*         65. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK 
*             ERROR.
*         66. IF BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL ACTIVE 
*             ERROR.
*         67. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DEADMAN TIMEOUT
*             ERROR.
*         68. IF BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL RESERVED 
*             ERROR.
*         69. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER INPUT 
*             REGISTER FULL ERROR.
*         70. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER
*             FULL ERROR, OTHERWISE POST THE MESSAGE CONTROLLER ERROR 
*             NOT ISOLATED. 
*         71. IF THE GENERAL STATUS IS NOT EQUAL TO 4400 OCTAL, GO TO 
*             STEP 78.
*         72. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 77.
*         73. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO ZERO, POST THE MESSAGE FMD ADDRESS FIELD SYNC BYTE 
*             ERROR.
*         74. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 14 OCTAL, POST THE MESSAGE FMD CYLINDER ADDRESS
*             MISCOMPARE ERROR. 
*         75. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 12 OCTAL, POST THE MESSAGE FMD TRACK ADDRESS 
*             MISCOMPARE ERROR. 
*         76. 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. 
*         77. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC BYTE ERROR, 
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         78. IF THE GENERAL STATUS IS NOT EQUAL TO 4600 OCTAL, GO TO 
*             STEP 81.
*         79. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD ADDRESS FIELD CHECKWORD 
*             ERROR.
*         80. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD DATA FIELD CHECKWORD ERROR, 
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         81. IF THE GENERAL STATUS IS EQUAL TO 4700 OCTAL, POST THE
*             MESSAGE FMD ADDRESS FIELD CHECKWORD ERROR.
*         82. IF THE GENERAL STATUS IS NOT EQUAL TO 5200 OCTAL, POST
*             THE MESSAGE CONTROLWARE ABNORMAL GENERAL STATUS.
*         83. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD NONCORRECTABLE ADDRESS
*             FIELD CHECKWORD ERROR.
*         84. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD NONCORRECTABLE DATA FIELD 
*             CHECKWORD ERROR, OTHERWISE POST THE MESSAGE CONTROLLER
*             ERROR NOT ISOLATED. 
*         85. EXIT TO MODULE DL897M.
* 
/---------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 CONTROLLER BUFFER OUTPUT REGISTER FULL ERROR. 
7  FORMAT CONTROLLER CHANNEL ACTIVE ERROR.
10 FORMAT CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR. 
11 FORMAT CONTROLLER CHANNEL RESERVED ERROR.
12 FORMAT CONTROLLER BUFFER INPUT REGISTER FULL ERROR.
13 FORMAT CONTROLLER LOST DATA ERROR. 
14 FORMAT CONTROLLER SECTOR LENGTH ERROR. 
15 FORMAT CONTROLLER WRITE VERIFY ERROR (SEE TRUE DISK ADD) 
16 FORMAT CONTROLLER BUFFER OUTPUT REGISTER PARITY ERROR. 
17 FORMAT CONTROLLER UP/DOWN COUNT NONZERO ERROR. 
20 FORMAT CONTROLLER LOST CONTROL WORD ERROR. 
21 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR. 
22 FORMAT CONTROLLER DATA PARITY ERROR. 
23 FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR. 
24 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.
25 FORMAT FMD SYNC BYTE ERROR.
26 FORMAT FMD CONTROLLER AND/OR DRIVE BUSY. 
27 FORMAT FMD DRIVE ERROR RATE THRESHOLD EXCEEDED.
* 
/---------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 97M  *IF INVALID STATUS
   IF(SB(B13).EQ.0) EXIT TO 97M     *IF NO STATUS ERROR 
   B15=26                           *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).EQ.2000) GOTO 70      *IF CONTROLLER RESERVED 
   IF(SB(B13).EQ.5020) EXIT TO 97K  *IF DRIVE MALFUNCTION 
   B15=2                            *MESSAGE NUMBER 
   IF(SB(B13+1).EQ.7777) GOTO 70    *IF NO DETAILED STATUS
* 
/---------CHECK FOR GENERAL STATUS OF 5000. 
* 
   IF(SB(B13).NE 5000) EXIT TO 97J  *NO 5000 GENERAL STATUS 
   B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   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 PARMETERS
   B15=27                           *MESSAGE NUMBER 
   IF(SB(B13+3).AND.2.NE.0)GOTO 70  *ERROR THRESHOLD
   B15=6                            *MESSAGE NUMBER 
* 
/---------CHECK FOR BUFFER READ FUNCTION ISSUED.
* 
   IF(SB(B13+3).AND.7760.NE.1060)GOTO 40  *NOT BUFFER READ
   IF(B14.AND.100.NE.0) GOTO 70     *BUFFER OUTPUT REGISTER 
   GOTO 42
* 
/---------CHECK FOR BUFFER WRITE FUNCTION ISSUED. 
* 
40 IF(SB(B13+3).AND.7760.NE.1100)EXIT TO 97H  *IF NOT WRITE 
   IF(B14.AND.100.EQ.0) GOTO 70     *BUFFER OUTPUT REGISTER 
* 
/---------CHECK CONTROLLER INPUT CHANNEL 0 STATUS BITS. 
* 
42 B15=7                            *MESSAGE NUMBER 
   IF(B14.AND.4.NE.0) GOTO 70       *CHANNEL ACTIVE ERROR 
   B15=10                           *MESSAGE NUMBER 
   IF(B14.AND.10.NE.0) GOTO 70      *DEADMAN TIMEOUT ERROR
   B15=11                           *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *CHANNEL RESERVED ERROR 
   B15=12                           *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *BUFFER INPUT REGISTER
   B15=25                           *MESSAGE NUMBER 
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR
   B15=13                           *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *LOST DATA ERROR
   B15=14                           *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=15                           *MESSAGE NUMBER 
   IF(B14.AND.1.NE.0) GOTO 70       *WRITE VERIFY ERROR 
   B15=16                           *MESSAGE NUMBER 
   IF(B14.AND.2.NE.0) GOTO 70       *OUTPUT BUFFER PARITY 
   B15=17                           *MESSAGE NUMBER 
   IF(B14.AND.10.NE.0) GOTO 70      *UP/DOWN NONZERO ERROR
   B15=20                           *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD ERROR
   B15=21                           *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=22                           *MESSAGE NUMBER 
   IF(B14.AND.100.NE.0) GOTO 70     *DATA PARITY ERROR
   B15=23                           *MESSAGE NUMBER 
   IF(B14.AND.200.NE.0) GOTO 70     *NONCORRECTABLE ERROR 
   B15=24                           *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK ERROR 
   B15=5                            *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.0) B14=1        *IF MESSAGE 0
   IF(B15.EQ.14) B14=1       *IF MESSAGE 14 
   IF(B15.EQ.15) B14=13      *IF MESSAGE 15 
   IF(B15.EQ.24) B14=3       *IF MESSAGE 24 
   IF(B15.EQ.25) B14=3       *IF MESSAGE 25 
   IF(B15.EQ.26) B14=3       *IF MESSAGE 26 
   IF(B15.EQ.27) B14=1       *IF MESSAGE 27 
   EXIT TO 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL897G PROCESS GENERAL STATUS 
   MODULE DL897H,LSFMD1(16),LOCK
***       DL897H - PROCESS GENERAL STATUS 
**        DL897H - PROCESS GENERAL STATUS 
*         DL897H - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DL897H  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.  IF THE ERROR WAS NOT DETECTED WHILE READING  THE  ADDRESS 
*             FIELD OF A SECTOR, EXIT TO MODULE DL897I. 
*         2.  POST FORMAT MESSAGE 11  IF  A  ADDRESS  FIELD  ERROR  WAS 
*             DETECTED  WHILE  RECOVERING  A ERROR IN THE DATA FIELD OF 
*             THE SECTOR. 
*         3.  POST FORMAT MESSAGE 20 IF BIT 8 IN DETAILED STATUS WORD 9 
*             DECIMAL IS EQUAL TO ZERO. 
*         4.  IF BITS 0 - 3 OF DETAILED STATUS  WORD  1  ARE  EQUAL  TO 
*             ZERO, GO TO STEP 15.
*         5.  POST  FORMAT  MESSAGE 12 IF A CYLINDER ADDRESS MISCOMPARE 
*             WAS DETECTED OR FORMAT MESSAGE  13  IF  A  TRACK  ADDRESS 
*             MISCOMPARE  WAS  DETECTED  IN  THE  ADDRESS  FIELD OF THE 
*             SECTOR. 
*         6.  IF  A  READ FACTORY MAP OR READ UTILITY MAP WAS NOT BEING 
*             EXECUTED, GO TO STEP 8. 
*         7.  POST  FORMAT MESSAGE 14 IF THE FACTORY OR TRACK FLAW BITS 
*             WERE NOT SET IN THE ADDRESS FIELD OF THE  SECTOR.  GO  TO 
*             STEP 9. 
*         8.  POST FORMAT MESSAGE 15 IF A FACTORY FLAW BIT WAS  SET  IN 
*             THE ADDRESS FIELD OF THE SECTOR OR FORMAT MESSAGE 16 IF A 
*             TRACK FLAW BIT WAS SET IN THE ADDRESS FIELD OF THE
*             SECTOR. 
*         9.  POST FORMAT MESSAGE 17 IF A SECTOR ADDRESS MISCOMPARE WAS 
*             FOUND IN THE ADDRESS FIELD OF THE SECTOR. 
*         10. POST FORMAT MESSAGE 0 IF BITS 0 - 3  OF  DETAILED  STATUS 
*             WORD 1 DOES NOT EQUAL 10. 
*         11. POST FORMAT MESSAGE 2 IF CONTROLLER LOST DATA  STATUS  IS 
*             ACTIVE. 
*         12. POST  FORMAT  MESSAGE 3 IF SECTOR LENGTH VIOLATION STATUS 
*             IS ACTIVE.
*         13. POST  FORMAT  MESSAGE  4 IF PROCESSOR INSTRUCTION TIMEOUT 
*             STATUS IS ACTIVE. 
*         14. POST FORMAT MESSAGE 1.
*         15. EXIT  TO  MODULE  DL897K IF THE FIXED MODULE DRIVE IS NOT 
*             READY AND SAFE. 
*         16. POST FORMAT MESSAGE 10 IF A SYNC BYTE ERROR WAS DETECTED. 
*         17. POST  FORMAT  MESSAGE  5  IF  LOST CONTROL WORD STATUS IS 
*             ACTIVE. 
*         18. POST FORMAT MESSAGE 6 IF NONCORRECTABLE STATUS IS ACTIVE. 
*         19. POST FORMAT MESSAGE 7  IF  LOST  DRIVE  CLOCK  STATUS  IS 
*             ACTIVE. 
*         20. POST FORMAT MESSAGE 1.
*         21. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         22. EXIT TO MODULE DL897M.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE
*           NEXT MESSAGE. 
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DL897I IF THE CAUSE OF THE 5000 GENERAL STATUS 
*           HAS NOT BEEN DETERMINED BY THIS MODULE. 
*         EXIT TO MODULE DL897K IF FMD IS NOT READY AND SAFE. 
*         EXIT TO MODULE DL897M IF THE CAUSE OF THE 5000 GENERAL STATUS 
*           HAS BEEN DETERMINED AND THE CAUSE POSTED IN THE DISPLAY 
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DL897I - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DL897K - ISOLATE FMD FAULTS.
*         DL897M - 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 ERROR NOT ISOLATED.
2  FORMAT CONTROLLER LOST DATA ERROR. 
3  FORMAT CONTROLLER SECTOR LENGTH ERROR. 
4  FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR. 
5  FORMAT CONTROLLER LOST CONTROL WORD ERROR. 
6  FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR. 
7  FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.
10 FORMAT FMD ADDRESS FIELD SYNC BYTE 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 FMD TRACK EXPECTED TO BE FLAWED BUT WAS NOT.
15 FORMAT FMD FACTORY FLAW MAP 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 IF(B14.AND.1.EQ.0) EXIT TO 97I      *IF NOT ADDRESS FIELD
   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=2                               *MESSAGE NUMBER
   IF(B14.AND.1000.NE.0) GOTO 70       *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 97K                      *GO PROCESS DRIVE FAULT 
64 B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *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.4400.NE.0) GOTO 70    *SYNC BYTE ERROR
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=5                            *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD
   B15=6                            *MESSAGE NUMBER 
   IF(B14.AND.200.NE.0) GOTO 70     *NONCORRECTABLE ERROR 
   B15=7                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK 
   B15=1                            *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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=0        *IF MESSAGE 2
   IF(B15.EQ.4) B14=0        *IF MESSAGE 4
   IF(B15.EQ.5) B14=3        *IF MESSAGE 5
   IF(B15.EQ.6) B14=0        *IF MESSAGE 6
   IF(B15.EQ.7) B14=3        *IF MESSAGE 7
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   EXIT TO 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL897H PROCESS GENERAL STATUS 
   MODULE DL897I,LSFMD1(16),LOCK
***       DL897I - PROCESS GENERAL STATUS 
**        DL897I - PROCESS GENERAL STATUS 
*         DL897I - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DL897I  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 4 IF BIT 1 IS SET IN DETAILED STATUS WORD 17.
*         2.  POST  FORMAT  MESSAGE  1  IF  DATA PARITY ERROR STATUS IS 
*             ACTIVE. 
*         3.  POST FORMAT MESSAGE 0.
*         4.  POST FORMAT MESSAGE 17 IF BIT 8 IN DETAILED STATUS WORD 9 
*             DECIMAL IS EQUAL TO ZERO. 
*         5.  EXIT TO MODULE DL897K IF THE FIXED MODULE  DRIVE  IS  NOT 
*             READY AND SAFE. 
*         6.  POST FORMAT MESSAGE 16 IF A SYNC BYTE ERROR WAS DETECTED. 
*         7.  POST  FORMAT  MESSAGE 7 IF CONTROLLER LOST DATA STATUS IS 
*             ACTIVE. 
*         8.  POST FORMAT MESSAGE 11 IF WRITE VERIFY STATUS IS ACTIVE.
*         9.  POST FORMAT MESSAGE 12 IF BUFFER OUTPUT  REGISTER  PARITY 
*             STATUS IS ACTIVE. 
*         10. POST FORMAT MESSAGE 13 IF LOST  CONTROL  WORD  STATUS  IS 
*             ACTIVE. 
*         11. POST FORMAT MESSAGE 10 IF PROCESSOR  INSTRUCTION  TIMEOUT 
*             STATUS IS ACTIVE. 
*         12. POST FORMAT MESSAGE 14 IF DATA  PARITY  ERROR  STATUS  IS 
*             ACTIVE. 
*         13. POST FORMAT MESSAGE 15 IF  LOST  DRIVE  CLOCK  STATUS  IS 
*             ACTIVE. 
*         14. POST FORMAT MESSAGE 3 IF CHANNEL ACTIVE STATUS IS ACTIVE. 
*         15. POST  FORMAT  MESSAGE 4 IF CHANNEL DEADMAN TIMEOUT STATUS 
*             IS ACTIVE.
*         16. POST  FORMAT  MESSAGE  5  IF  CHANNEL  RESERVED STATUS IS 
*             ACTIVE. 
*         17. POST  FORMAT  MESSAGE  6  IF  BUFFER  INPUT REGISTER FULL 
*             STATUS IS ACTIVE. 
*         18. POST  FORMAT  MESSAGE  12  IF BUFFER OUTPUT REGISTER FULL 
*             STATUS IS ACTIVE. 
*         19. POST FORMAT MESSAGE 0.
*         20. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         21. EXIT TO MODULE DL897M.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE
*           NEXT MESSAGE. 
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DL897K IF FMD IS NOT READY AND SAFE. 
*         EXIT TO MODULE DL897M IF THE CAUSE OF THE 5000 GENERAL STATUS 
*           HAS BEEN DETERMINED AND THE CAUSE POSTED IN THE DISPLAY 
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DL897K - ISOLATE FMD FAULTS.
*         DL897M - 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.
7  FORMAT CONTROLLER LOST DATA 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. 
13 FORMAT CONTROLLER LOST CONTROL WORD ERROR. 
14 FORMAT CONTROLLER DATA PARITY ERROR. 
15 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.
16 FORMAT FMD DATA FIELD SYNC BYTE ERROR. 
17 FORMAT FMD NOT SELECTED AND RESERVED.
* 
/---------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 97K  *ISOLATE FMD FAULT
   B15=16                           *MESSAGE NUMBER 
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR
   B15=7                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *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=13                           *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *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=15                           *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *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=0                            *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.11) B14=11      *IF MESSAGE 11 
   IF(B15.EQ.15) B14 = 3     *IF MESSAGE 15 
   IF(B15.EQ.16) B14=3       *IF MESSAGE 16 
   IF(B15.EQ.17) B14=3       *IF MESSAGE 17 
   EXIT TO 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL897I PROCESS GENERAL STATUS 
   MODULE DL897J,LSFMD1(16),LOCK
***       DL897J - PROCESS GENERAL STATUS 
**        DL897J - PROCESS GENERAL STATUS 
*         DL897J - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DL897J  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 4400 OCTAL.
*         2.  GO  TO STEP 8 IF BIT 0 IS NOT SET IN DETAILED STATUS WORD 
*             17 DECIMAL. 
*         3.  POST FORMAT MESSAGE 2 IF A SYNC BYTE ERROR WAS DETECTED.
*         4.  POST FORMAT MESSAGE 3 IF A  CYLINDER  ADDRESS  MISCOMPARE 
*             WAS DETECTED. 
*         5.  POST FORMAT MESSAGE 4 IF A TRACK ADDRESS  MISCOMPARE  WAS 
*             DETECTED. 
*         6.  POST FORMAT MESSAGE 5 IF A SECTOR ADDRESS MISCOMPARE  WAS 
*             DETECTED. 
*         7.  POST FORMAT MESSAGE 0.
*         8.  POST  FORMAT MESSAGE 6 IF BIT 1 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         9.  POST FORMAT MESSAGE 1.
*         10. GO TO STEP 14 IF THE GENERAL STATUS IS NOT 4600 OCTAL.
*         11. POST  FORMAT MESSAGE 7 IF BIT 0 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         12. POST FORMAT MESSAGE 10 IF BIT 1 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         13. POST FORMAT MESSAGE 1.
*         14. POST FORMAT MESSAGE 7  IF  THE  GENERAL  STATUS  IS  4700 
*             OCTAL.
*         15. POST FORMAT MESSAGE 0 IF THE GENERAL STATUS IS  NOT  5200 
*             OCTAL.
*         16. POST FORMAT MESSAGE 11 IF BIT 0 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         17. POST FORMAT MESSAGE 12 IF BIT 1 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         18. POST FORMAT MESSAGE 1.
*         19. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         20. EXIT TO MODULE DL897M.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE
*           NEXT MESSAGE. 
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT WILL ALWAYS BE MADE TO MODULE DL897M WITH THE PRESERVICE 
*           FORECAST GROUP NUMBER IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DL897M - 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 ADDRESS FIELD SYNC BYTE 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 ERROR. 
7  FORMAT FMD ADDRESS FIELD CHECKWORD ERROR.
10 FORMAT FMD DATA FIELD CHECKWORD ERROR. 
11 FORMAT FMD NONCORRECTABLE ADDRESS FIELD CHECKWORD ERROR. 
12 FORMAT FMD NONCORRECTABLE DATA FIELD CHECKWORD 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
   B15=2                               *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.0) GOTO 70   *SYNC BYTE ERROR 
   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=0                               *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
40 B15=6                               *MESSAGE NUMBER
   IF(B14.AND.1.NE.0) GOTO 70          *DATA FIELD ERROR
   B15=1                               *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
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) GOTO 70          *ADDRESS FIELD ERROR 
   B15=10                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) GOTO 70          *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) GOTO 70         *IF 4700 STATUS
* 
/---------PROCESS 5200 OCTAL GENERAL STATUS ERROR.
* 
   B15=0                               *MESSAGE NUMBER
   IF(SB(B13).NE.5200) GOTO 70         *NOT 5200 STATUS 
   B15=11                              *MESSAGE NUMBER
   IF(B14.AND.1.NE.0) GOTO 70          *ADDRESS FIELD 
   B15=12                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR
   B15=1                               *MESSAGE NUMBER
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL897J PROCESS GENERAL STATUS 
   MODULE DL897K,LSFMD1(16),LOCK
***       DL897K - ISOLATE DRIVE FAULT
**        DL897K - ISOLATE DRIVE FAULT
*         DL897K - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         DL897K  WILL  DETERMINE  THE CAUSE FOR THE FAULT IN THE FIXED 
*         MODULE DRIVE. 
* 
*         METHOD- 
*         1.  IF  THE  GENERAL STATUS IS EQUAL TO 7777 OR 0000, EXIT TO 
*             MODULE DL897M.
*         2.  POST  FORMAT  MESSAGE  0 IF THE FIXED MODULE DRIVE IS NOT 
*             SELECTED AND RESERVED.
*         3.  IF  THE  GENERAL  STATUS IS NOT EQUAL TO 5020, GO TO STEP 
*             21. 
*         4.  IF  BITS 0-7 OF DETAILED STATUS WORD 13 DECIMAL ARE EQUAL 
*             TO 000 OR 377, GO TO STEP 21. 
*         5.  POST FORMAT  MESSAGE  1  IF  THE  STATUS VALID BIT IS NOT 
*             ACTIVE IN STATUS WORD 12 DECIMAL. 
*         6.  POST  FORMAT  MESSAGE  2 IF BITS 00-07 OF DETAILED STATUS 
*             WORD 2 IS EQUAL TO BITS 00-07 OF DETAILED STATUS WORD  12 
*             DECIMAL.
*         7.  POST FORMAT MESSAGE 3 IF BITS 0-7 OF DETAILED STATUS WORD 
*             12 DECIMAL IS EQUAL TO 216 OCTAL. 
*         8.  GO TO STEP 21 IF BIT 3 (DRIVE READY AND SAFE) IS NOT  SET 
*             IN DETAILED STATUS WORD 12 DECIMAL. 
*         9.  POST FORMAT MESSAGE 4 IF THE COMMAND ISSUED TO THE  DRIVE 
*             IN DETAILED STATUS WORD 13 DECIMAL IS EQUAL TO 40 THROUGH 
*             46 HEX. 
*         10. POST FORMAT MESSAGE 11 IF THE COMMAND ISSUED TO THE DRIVE 
*             IN DETAILED STATUS WORD 13 DECIMAL IS NOT EQUAL TO 48  OR 
*             4A HEX. 
*         11. POST FORMAT MESSAGE 5 IF BIT 3 (DRIVE OFF  LINE)  IS  NOT 
*             ACTIVE  IN  DETAILED  STATUS  WORD  15 DECIMAL. 
*         12. IF BIT 4 (WRITE/READ  STATUS  ERROR)  IS  NOT  ACTIVE  IN 
*             DETAILED STATUS WORD 15 DECIMAL, GO TO STEP 15. 
*         13. IF BIT 3 (WRITE/READ STATUS ERROR) IS ACTIVE IN  DETAILED 
*             STATUS WORD 12 DECIMAL, GO TO STEP 21.
*         14. POST FORMAT MESSAGE 6.
*         15. IF  BIT  5  (DRIVE  CHECK  STATUS ERROR) IS NOT ACTIVE IN 
*             DETAILED STATUS WORD 15 DECIMAL, GO TO STEP 18. 
*         16. IF BIT 5 (DRIVE CHECK STATUS ERROR) IS ACTIVE IN DETAILED 
*             STATUS WORD 12 DECIMAL, GO TO STEP 21.
*         17. POST FORMAT MESSAGE 7.
*         18. POST FORMAT MESSAGE 11 IF  BIT  6  (ACCESS  CHECK  STATUS 
*             ERROR) IS NOT ACTIVE IN DETAILED STATUS WORD 15 DECIMAL.
*         19. IF BIT 00  (ACCESS  CHECK  STATUS  ERROR)  IS  ACTIVE  IN 
*             DETAILED STATUS WORD 12 DECIMAL, GO TO STEP 21. 
*         20. POST FORMAT MESSAGE 10. 
*         21. IF  THE  GENERAL  STATUS  IS EQUAL TO 7777 EXIT TO MODULE 
*             DL897M. 
*         22. POST  FORMAT  MESSAGE  2 IF BITS 00-07 OF DETAILED STATUS 
*             WORD 2 IS EQUAL TO BITS 00-07 OF DETAILED STATUS WORD  12 
*             DECIMAL.
*         23. POST FORMAT MESSAGE 3 IF BITS 0-7 OF DETAILED STATUS WORD 
*             12 DECIMAL IS EQUAL TO 216 OCTAL. 
*         24. EXIT TO MODULE DL897L IF BIT 0 (ACCESS CHECK STATUS ERROR 
*             IS NOT SET IN DETAILED STATUS WORD 12 DECIMAL.
*         25. POST FORMAT MESSAGE 12 IF BIT  1  (FMD  SERVO  OFF  TRACK 
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL. 
*         26. POST FORMAT MESSAGE 13  IF  BIT  2  (FMD  SEEK  OVERSHOOT 
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL. 
*         27. POST FORMAT MESSAGE 14 IF BIT 3 (FMD SERVO TIMEOUT ERROR) 
*             IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL.
*         28. POST FORMAT MESSAGE 15. 
*         29. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         30. EXIT TO MODULE DL897M.
* 
/ 
*         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 DL897L IF THE CAUSE OF THE FAULT IN THE DRIVE
*           HAS NOT BEEN DETERMINED.
*         EXIT TO MODULE DL897M IF THE CAUSE OF THE FAULT IN THE DRIVE
*           WAS DETERMINED WITH THE PRESERVICE FORECAST GROUP NUMBER
*           IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DL897L - ISOLATE DRIVE FAULT. 
*         DL897M - 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 26 ARE IN MODULE DL897K.          * 
*         *         STEPS 26 THROUGH 46 ARE IN MODULE DL897L.         * 
*         *                                                           * 
*         *      NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE     * 
*         *            TO MODULE DL897M.                              * 
*         *                                                           * 
*         ************************************************************* 
* 
*         1.  IF GENERAL STATUS IS EQUAL TO 7777 OCTAL, GO TO STEP 20.
*         2.  IF GENERAL STATUS IS EQUAL TO 0000 OCTAL, GO TO STEP 20.
*         3.  IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         4.  IF GENERAL STATUS IS NOT EQUAL TO 5020 OCTAL, GO TO STEP
*             20. 
*         5.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL
*             ARE EQUAL TO ZERO, GO TO STEP 20. 
*         6.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL
*             ARE EQUAL TO 377 OCTAL, GO TO STEP 20.
*         7.  IF BIT 1 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD STATUS VALID NOT ACTIVE. 
*         8.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 2 DECIMAL 
*             ARE EQUAL BITS 0 THROUGH 7 OF DETAILED STATUS WORD 12 
*             DECIMAL, POST THE MESSAGE CONTROLLER BUS OUT PARITY 
*             ERROR.
*         9.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 12 DECIMAL
*             ARE EQUAL TO 216 OCTAL, POST THE MESSAGE FMD DECODE 
*             PARITY ERROR OR ILLEGAL DECODE. 
*         10. IF BIT 3 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 20.
*         11. 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. 
*         12. 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. 
*         13. IF BIT 3 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD STATUS INDICATES DRIVE OFF 
*             LINE. 
*         14. IF BIT 4 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 16.
*         15. 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. 
*         16. IF BIT 5 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 18.
*         17. 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.
*         18. IF BIT 6 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.
*         19. 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. 
*         20. IF DETAILED STATUS WORD 1 IS EQUAL TO 7777, EXIT TO 
*             MODULE DL897M.
*         21. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 2 DECIMAL 
*             ARE EQUAL TO BITS 0 THROUGH 7 OF DETAILED STATUS WORD 12
*             DECIMAL, POST THE MESSAGE CONTROLLER BUS OUT PARITY 
*             ERROR.
*         22. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 12 DECIMAL
*             ARE EQUAL TO 216 OCTAL, POST THE MESSAGE FMD DECODE 
*             PARITY ERROR OR ILLEGAL DECODE. 
*         23. IF BIT 0 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 27.
*         24. IF BIT 1 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD SERVO OFF TRACK ERROR.
*         25. IF BIT 2 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD SEEK OVERSHOOT ERROR. 
*         26. 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.
*         27. IF BIT 3 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 39.
*         28. IF BIT 4 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD HEAD SHORT ERROR. 
*         29. IF BIT 5 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD INDEX CHECK ERROR.
*         30. IF BIT 6 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD CONTROL ERROR.
*         31. IF BIT 7 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD WRITE TRANSITION ERROR. 
*         32. IF BIT 8 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD WRITE CURRENT ERROR.
*         33. IF BIT 9 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD MULTIPLE HEAD ERROR.
*         34. IF BIT 10 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD WRITE OVERRUN ERROR.
*         35. IF BIT 11 IN DETAILED STATUS WORD 11 DECIMAL IS EQUAL TO
*             ZERO, GO TO STEP 37.
*         36. 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.
*         37. IF BIT 2 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD WRITE WHILE IN OFFSET 
*             ERROR.
*         38. 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.
*         39. IF BIT 5 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.
*         40. IF BIT 1 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD START SWITCH NOT ON. 
*         41. IF BIT 0 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD DRIVE MOTOR NOT AT SPEED.
*         42. IF BIT 2 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD AIR SWITCH NOT MADE. 
*         43. IF BIT 3 IN DETAILED STATUS WORD 2 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD SEQUENCE ERROR LATCH ERROR. 
*         44. IF BIT 2 IN DETAILED STATUS WORD 7 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD HDA SEQUENCE NOT COMPLETE. 
*         45. IF BIT 6 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD SECTOR COMPARE ERROR. 
*         46. 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.
*         47. EXIT TO MODULE DL897M.
* 
/---------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. 
* 
   B14=SB(B13+14) AND 377           *DETAILED STATUS WORD 12
   B15=2                                *MESSAGE NUMBER 
   IF(SB(B13+2).AND.377.EQ.B14)GOTO 70  *IF ECHO BUS MODE 
   B15=3                                *MESSAGE NUMBER 
   IF(B14.EQ.216) GOTO 70               *ECHO COMMAND MODE
* 
/---------CHECK FOR THE DRIVE READY AND SAFE. 
* 
   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 97M   *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. 
* 
   B14=SB(B13+14) AND 377           *DETAILED STATUS WORD 12
   B15=2                                *MESSAGE NUMBER 
   IF(SB(B13+2).AND.377.EQ.B14)GOTO 70  *IF ECHO BUS MODE 
   B15=3                                *MESSAGE NUMBER 
   IF(B14.EQ.216) GOTO 70               *ECHO COMMAND MODE
* 
/---------CHECK FOR FIXED MODULE DRIVE ACCESS CHECK ERROR.
* 
   IF(B14.AND.1.EQ.0) EXIT TO 97L    *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
* 
/---------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 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL897K ISOLATE DRIVE FAULT
   MODULE DL897L,LSFMD1(16),LOCK
***       DL897L - ISOLATE DRIVE FAULT
**        DL897L - ISOLATE DRIVE FAULT
*         DL897L - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         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 ACTIVE IN 
*             DETAILED STATUS WORD 12 DECIMAL, GO TO STEP 15. 
*         2.  POST  FORMAT  MESSAGE  1  IF  BIT 4 (HEAD SHORT ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         3.  POST  FORMAT  MESSAGE  2  IF BIT 5 (INDEX CHECK ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         4.  POST  FORMAT MESSAGE 3 IF BIT 6 (CONTROL ERROR) IS ACTIVE 
*             IN DETAILED STATUS WORD 11 DECIMAL. 
*         5.  POST  FORMAT  MESSAGE 4 IF BIT 7 (WRITE TRANSITION ERROR) 
*             IS ACTIVE IN DETAILED STATUS WORD 11 DECIMAL. 
*         6.  POST  FORMAT  MESSAGE 5 IF BIT 8 (WRITE CURRENT ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         7.  POST  FORMAT  MESSAGE 6 IF BIT 9 (MULTIPLE HEAD ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         8.  POST  FORMAT MESSAGE 7 IF BIT 10 (WRITE OVERRUN ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         9.  GO  TO STEP 12 IF BIT 11 IS NOT ACTIVE IN DETAILED STATUS 
*             WORD 11 DECIMAL.
*         10. POST  FORMAT  MESSAGE 10 IF BIT 4 (FMD NOT WRITE ENABLED) 
*             IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.
*         11. POST FORMAT MESSAGE 11. 
*         12. POST FORMAT MESSAGE 12 IF BIT 2 (WRITE  WHILE  IN  OFFSET 
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         13. POST FORMAT MESSAGE 13 IF BIT 3 (WRITE  OR  READ  AND  NO 
*             CONTROL  SELECT  ERROR) IS ACTIVE IN DETAILED STATUS WORD 
*             11 DECIMAL. 
*         14. POST FORMAT MESSAGE 14. 
*         15. POST FORMAT MESSAGE 0 IF BIT 5 (DRIVE CHECK ERROR) IS NOT 
*             ACTIVE IN DETAILED STATUS WORD 12 DECIMAL.
*         16. POST FORMAT MESSAGE 15 IF BIT 1 (FMD START SWITCH ON)  IS 
*             NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL. 
*         17. POST FORMAT MESSAGE 16 IF BIT 0 (FMD DRIVE MOTOR  NOT  AT 
*             SPEED) IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL. 
*         18. POST FORMAT MESSAGE 17 IF BIT 2 (FMD AIR SWITCH NOT MADE) 
*             IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.
*         19. POST FORMAT MESSAGE 20 IF BIT 3 (SEQUENCE ERROR LATCH) IS 
*             NOT ACTIVE IN DETAILED STATUS WORD 2. 
*         20. POST FORMAT MESSAGE  21  IF  BIT  07  (HDA  SEQUENCE  NOT 
*             COMPLETE) IS NOT ACTIVE IN DETAILED STATUS WORD 2.
*         21. POST FORMAT MESSAGE 22 IF BIT 5 (INDEX  CHECK  ERROR)  IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         22. POST FORMAT MESSAGE 23 IF BIT 6 (SECTOR COMPARE ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 12 DECIMAL.
*         23. POST FORMAT MESSAGE 24. 
*         24. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         25. EXIT TO MODULE DL897M.
* 
/ 
*         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 DL897M WITH THE PRESERVICE 
*           FORECAST GROUP NUMBER IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DL897M - 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
* 
/---------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 97M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL897L ISOLATE DRIVE FAULT
   MODULE DL897M,LSFMD1(16),LOCK
***       DL897M - POST PRESERVICE FORECAST GROUP 
**        DL897M - POST PRESERVICE FORECAST GROUP 
*         DL897M - POST PRESERVICE FORECAST GROUP 
*         --------------------------------------- 
* 
*         PURPOSE-
*         POST  THE  PRESERVICE  FORECAST  GROUP MESSAGE AND REPORT THE 
*         ERROR TO THE OPERATOR.
* 
*         METHOD- 
*         1.  IF THE  MODULE  NUMBER IN THE B1 REGISTER IS LESS THAN 12 
*             DECIMAL OR LESS, SET THE PRESERVICE FORECAST GROUP NUMBER 
*             IN  THE  B14  REGISTER  FOR  THE  FOR THE FMDC 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 NUMBER IN THE EM REGISTER.
*         3.  POST THE PRESERVICE FORECAST GROUP MESSAGE. 
*         4.  REPORT THE ERROR TO THE OPERATOR. 
* 
/ 
*         ENTRY-
*         B12 = DISPLAY LINE NUMBER.
*         B14 = 0 FOR PRESERVICE FORECAST GROUP FMDC,  1 FOR PRESERVICE 
*               FORECAST  GROUP FMDD,  2 FOR PRESERVICE FORECAST  GROUP 
*               FMDC/FMDD, OR 3 FOR PRESERVICE FORECAST GROUP FMDD/FMDC 
*               ON PRODUCT OVERLAY DETECTED ERRORS. 
*         EM  = 0 FOR PRESERVICE FORECAST GROUP FMDC,  1 FOR PRESERVICE 
*               FORECAST  GROUP FMDD,  2 FOR PRESERVICE FORECAST  GROUP 
*               FMDC/FMDD, OR 3 FOR PRESERVICE FORECAST GROUP FMDD/FMDC 
*               ON MODULE DETECTED ERRORS.
* 
*         EXIT- 
*         EXIT IS ALWAYS TO MODULE DL897N.
* 
*         SUBMODULES REFERENCED-
*         DL897N - RESTART CONTROLLER.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = PRESERVICE FORECAST GROUP NUMBER. 
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
* 
/---------MESSAGES POSTED BY THE MODULE.
* 
1  FORMAT DL8 - FMD CONFIDENCE TEST 
2  FORMAT PRESERVICE FORECAST GROUP FMDC
3  FORMAT PRESERVICE FORECAST GROUP FMDD
4  FORMAT PRESERVICE FORECAST GROUP FMDC/FMDD 
5  FORMAT PRESERVICE FORECAST GROUP FMDD/FMDC 
6  FORMAT --------------------------------------------------
7  FORMAT 
10 FORMAT TRUE DISK ADD CYL=*OCT TRK=*O SEC=*O
* 
/---------SET PRESERVICE FORECAST GROUP IF MODULES 1-11.
* 
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 
   B12 = B12 + 1
   IF(ES.AND.TM.EQ.0)B12=B12+1   *IF KL DISPLAY 
   MSG 10 (B7,B6,B5) TO LINE B12   *TRUE DISK ADD ON WRITE VERIFY 
30 IF(B14.NE.7777)B14=B14+2  *ADJUST MESSAGE NUMBER IN B14
   IF(B1.LE.11D) B14=2       *IF MODULES IS 1-11
* 
/---------IF NOT A PRODUCT OVERLAY ERROR, USE THE PRESERVICE
/---------FORECAST GROUP IN THE EM REGISTER.
* 
   IF(EC.LT.4000) B14=EM+2   *SET USER SUPPLIED GROUP NO. 
   IF(B14.NE.7777) GOTO 60   *IF LEGAL PRESERVICE GROUP 
   B14=2                     *DEFAULT IS FMDC PRESERVICE
   IF(EC.AND.4077.EQ.4031)B14=4  *IF COMPARE ERROR
* 
/---------POST THE MESSAGE IN THE DISPLAY DISPLAY BUFFER. 
* 
60 MSG B14 TO LINE 2         *PRESERVICE FORECAST MESSAGE 
* 
/---------IF TERMINAL MODE, BLANK FIRST TWO DISPLAY LINES.
* 
   IF(ES.AND.TM.EQ.0)GOTO 70  *IF NOT TERMINAL MODE 
   MSG 7 TO LINE 0           *BLANK FIRST TWO DISPLAY LINES 
   MSG 7 TO LINE 1
   GOTO 72                   *JUMP
70 MSG 1 TO LINE 0           *TEST TITLE LINE 
72 PICTURE
   HALT                      *STOP ON THE ERROR 
   MSG 6 TO PRINT            *TERMINATE THE MESSAGE 
   BLANK
   EXIT TO 97N               *EXIT THE MODULE 
   END 20                    *END OF MODULE 
COMPILE                      *DL897M POST PRESERVICE FORECAST GROUP 
   MODULE DL897N,LSFMD1(16),LOCK
***       DL897N - RESTART CONTROLLER 
**        DL897N - RESTART CONTROLLER 
*         DL897N - RESTART CONTROLLER 
*         --------------------------- 
* 
*         PURPOSE-
*         DL897N  WILL  ISSUE A RESET COMMAND TO THE 7155 CONTROLLER IF 
*         THE CONTROLLER DOES NOT RESPOND CORRECTLY TO A RES COMMAND. 
* 
*         METHOD- 
*         1.  IF  THE  NUMBER  IN  THE  B8  REGISTER  IS NOT A 40 OCTAL 
*             (RES,CONTOLLER) OR A  41  OCTAL  (RES  DRIVE),  EXIT  THE 
*             MODULE. 
*         2.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5224 
*             OR 5225, EXIT THE MODULE
*         3.  EXECUTE A RES,CONTROLLER COMMAND AND TO TO STEP 5  IF  NO 
*             ABORT OCCURES.
*         4.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5224 
*             OR 5225, EXIT THE MODULE
*         5.  EXECUTE A COMMAND SEQUENCE OF RESET,  STATUS,DETAIL,  AND 
*             REL AND GO TO STEP 7 IF AN ABORT OCCURS.
*         6.  EXIT 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.  TERMINATE EXECUTION OF THE PRIMARY MODULE.
* 
/ 
*         ENTRY-
*         B1  = MODULE NUMBER IN OCTAL. 
*         B8  = COMMAND NUMBER FOR THE COMMAND THAT WAS BEING EXECUTED. 
*         EC  = THE ERROR CODE FOR THE LAST ERROR REPORTED. 
* 
*         EXIT- 
*         EXIT TO THE CALLING MODULE IF THE RESET COMMAND DOES NOT HAVE 
*           BE EXECUTED OR IF THE RESET COMMAND CORRECTS THE PROBLEM. 
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE RESET
*           COMMAND MUST BE EXECUTE, BUT DOES NOT CORRECT THE PROBLEM.
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
1  FORMAT DL8 - FMD CONFIDENCE TEST 
2  FORMAT DL8*D MODULE ABORTED - CONTROLLER NOT RESPONDING
3  FORMAT PRESERVICE FORECAST GROUP FMDC
4  FORMAT ABNORMAL RESPONSE TO A RESET/DETAILED STATUS SEQ. 
5  FORMAT POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM
6  FORMAT DL8*D MODULE EXECUTION ABORTED
7  FORMAT --------------------------------------------------
* 
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.
* 
30 IF(B8.EQ.40) GOTO 32      *IF RES CONTROLLER COMMAND 
   IF(B8.NE.41) EXIT         *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)EXIT  *IF NO RESERVE ERROR, EXIT
   IF(EC.AND.4077.EQ.4025)EXIT  *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)EXIT  *IF NO RESERVE ERROR, EXIT
   IF(EC.AND.4077.EQ.4025)EXIT  *IF ABNORMAL STATUS, EXIT 
* 
/---------ISSUE THE RESET COMMAND AND RELEASE THE CONTROLLER. 
* 
36 RESET,ABT 40              *ZERO WORD AUTOLOAD
   STATUS,DETAIL,ABT 40      *GET DETAILED STATUS 
   REL,ABT 40                *RELEASE THE CONTROLLER
   EXIT                      *EXIT THE MODULE 
* 
/---------DISPLAY CONTROLLER/CONTROLWARE ERROR MESSAGE. 
* 
40 IF(ES.AND.TM.NE.0) GOTO 70 
   MSG 1 TO LINE 0           *TEST NAME MESSAGE 
70 MSG 3 TO LINE 2           *PRESERVICE FORECAST GROUP MSG.
   MSG 4 TO LINE 5           *ERROR MESSAGE 
   MSG 5 TO LINE 7           *INFORMATION MESSAGE 
   MSG 6 (B1) TO LINE 10     *INFORMATION MESSAGE 
   PICTURE
   HALT                      *STOP ON ERROR 
   MSG 7 TO PRINT            *TERMINATE PRINT MESSAGES
   BLANK
   MSG 2 (B1) TO PRINT,DAYFILE,DISPLAY  *MODULE ABORT MSG.
   END 30                               *END OF THE MODULE
COMPILE                      *DL897N RESTART CONTROLLER 
*ENDIF
*IF DEF,PFMD
   MODULE DH897G,DEMA1(14),LOCK 
***       DH897G - PROCESS GENERAL STATUS 
**
*         DH897G - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH897G  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 DH897P.
*         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 
*             DH897N. 
*         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 DH897K.
*         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 
*             DH897H. 
*         15. IF BIT 0 IS SET IN DETAILED STATUS WORD 17 DECIMAL,  EXIT 
*             MODULE DH897I, OTHERWISE EXIT TO MODULE DH897J. 
*         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 DH897P.
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DH897H 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 DH897I IF 
*            BIT 0 IS SET IN DETAILED STATUS WORD 16 DECIMAL, OR MODULE 
*            DH897J IF BIT 0 IS NOT SET  IN  DETAILED  STATUS  WORD  16 
*            DECIMAL. 
*         EXIT TO MODULE DH897N IF THE GENERAL STATUS IS EQUAL TO  5020 
*            OCTAL OR THE DRIVE IS NOT READY AND SAFE.
*         EXIT TO MODULE DH897K IF THE  GENERAL  STATUS  IS  NOT  0000, 
*            0002, 0010, 2XXX, 5000, OR 5020. 
*         EXIT TO MODULE DH897P 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-
*         DH897H - PROCESS BUFFER READ OR BUFFER WRITE ERROR. 
*         DH897I - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DH897J - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DH897K - PROCESS 4400, 4600, 4700, AND 5200 GENERAL STATUS. 
*         DH897N - ISOLATE DRIVE FAULTS.
*         DH897P - 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 DH897G.          * 
*         *         STEPS 21 THROUGH 38 ARE IN MODULE DH897H.         * 
*         *         STEPS 39 THROUGH 64 ARE IN MODULE DH897I.         * 
*         *         STEPS 65 THROUGH 82 ARE IN MODULE DH897J.         * 
*         *         STEPS 83 THROUGH 100 ARE IN MODULE DH897K.        * 
*         *                                                           * 
*         *    NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE       * 
*         *          TO MODULE DH897P.                                * 
*         *                                                           * 
*         ************************************************************* 
* 
*         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 DH897P.
*         3.  IF THE  GENERAL  STATUS  IS EQUAL TO ZERO, EXIT TO MODULE 
*             DH897P. 
*         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 DH897N 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 DH897N 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 DH897N 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 97.
*         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 DH897P.
* 
/---------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 97P  *IF INVALID STATUS
   IF(SB(B13).EQ.0) EXIT TO 97P     *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 97N  *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 97K  *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 97H  *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 97H  *BUFFER WRITE 
   IF(B14.AND.1.NE.0) EXIT TO 97I   *ADDRESS FIELD ERROR
   EXIT TO 97J                      *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 97P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897G PROCESS GENERAL STATUS 
   MODULE DH897H,DEMA1(14),LOCK 
***       DH897H - PROCESS GENERAL STATUS 
**
*         DH897H - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH897H 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 DH897L. 
*         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 DH897L. 
*         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 DH897L. 
*         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 DH897P. 
* 
/ 
*         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  DH897L  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 DH897P IF THE MESSAGE INDICATING THE  CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH897L - PROCESS GENERAL STATUS.
*         DH897P - 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 97L  *SYNC BYTE ERROR
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 97L  *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 97L  *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 97L  *NONCORRECTABLE ERROR 
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 97L  *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.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.7) B14=0        *IF MESSAGE 7
   IF(B15.EQ.10) B14=13      *IF MESSAGE 10 
   IF(B15.EQ.13) B14=2       *IF MESSAGE 13 
   EXIT TO 97P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897H PROCESS GENERAL STATUS 
   MODULE DH897I,DEMA1(14),LOCK 
***       DH897I - PROCESS GENERAL STATUS 
**
*         DH897I - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH897I  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 DH897L 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 DH897N 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  DH897L 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  DH897L 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 DH897L 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 DH897L TO PROCESS A 
*             NONCORRECTABLE ERROR. 
*         24. IF  BIT  11  DECIMAL  IS  SET  IN DETAILED STATUS WORD 16 
*             DECIMAL, EXIT TO MODULE DH897L 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 DH897P.
* 
/ 
*         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  DH897L  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 DH897N IF FMD IS NOT READY AND SAFE.
*         EXIT IS  TO MODULE DH897P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH897L - PROCESS GENERAL STATUS.
*         DH897N - ISOLATE FMD FAULTS.
*         DH897P - 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 97L   *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 97N                      *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 97L  *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 97L  *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 97L  *LOST CONTROL WORD
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.3600.NE.0)EXIT TO 97L  *NONCORRECTABLE ERROR
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 97L  *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=2        *IF MESSAGE 4
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   IF(B15.EQ.13) B14=2       *IF MESSAGE 13 
   IF(B15.EQ.21) B14=2       *IF MESSAGE 21 
   EXIT TO 97P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897I PROCESS GENERAL STATUS 
   MODULE DH897J,DEMA1(14),LOCK 
***       DH897J - PROCESS GENERAL STATUS 
**
*         DH897J - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH897J  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 DH897N 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 DH897L 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 DH897L 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 DH897L 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 DH897L 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 DH897P.
* 
/ 
*         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  DH897L  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 DH897N IF FMD IS NOT READY AND SAFE.
*         EXIT IS  TO MODULE DH897P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH897L - PROCESS GENERAL STATUS.
*         DH897N - ISOLATE DRIVE FAULTS.
*         DH897P - 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 97N  *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 97L  *SYNC BYTE ERROR
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 97L  *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 97L   *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 97L  *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.10) B14=2       *IF MESSAGE 10 
   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 97P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897J PROCESS GENERAL STATUS 
   MODULE DH897K,DEMA1(14),LOCK 
***       DH897K - PROCESS GENERAL STATUS 
**
*         DH897K - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH897K  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-4X 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 DH897L 
*             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 DH897L 
*             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 DH897L 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 DH897L 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 DH897L 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 DH897L TO PROCESS A FMD NONCORRECTABLE ADDRESS 
*             FIELD CHECKWORD ERROR.
*         16. IF  BIT 1 IS SET IN DETAILED STATUS WORD 17 DECIMAL, EXIT 
*             TO MODULE DH897L 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 DH897P.
* 
/ 
*         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  DH897L  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 DH897P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH897L - PROCESS GENERAL STATUS 
*         DH897P - 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.
7  FORMAT FMD TRACK FLAW DETECTED.
* 
/---------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 97L                         *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=7                               *MESSAGE NUMBER
   IF(SB(B13+5).AND.4000.NE.0)GOTO 70  *TRACK FLAW ERROR
   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 97L                         *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 97L      *ADDRESS FIELD ERROR 
   B15=11                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) EXIT TO 97L      *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 97L     *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 97L      *ADDRESS FIELD 
   B15=12                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) EXIT TO 97L      *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.EQ.4) B14=2        *IF MESSAGE 4
   IF(B15.EQ.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.7) B14=1        *IF MESSAGE 7
   EXIT TO 97P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897K PROCESS GENERAL STATUS 
   MODULE DH897L,DEMA1(14),LOCK 
***       DH897L - PROCESS GENERAL STATUS 
**
*         DH897L - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH897L 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 DH897P.
*         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 DH897M.
* 
/ 
*         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  DH897P  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 DH897M IF BIT 3 IN  DETAILED  STATUS  WORD  18 
*            DECIMAL IS SET.
* 
*         SUBMODULES REFERENCED-
*         DH897M - DETERMINE FAILING HEADS. 
*         DH897P - 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=3       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=1       *IF MESSAGE 12 
   EXIT TO 97P               *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 97M               *EXIT TO NEXT MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897L PROCESS GENERAL STATUS 
   MODULE DH897M,DEMA1(14),LOCK 
***       DH897M - PROCESS GENERAL STATUS 
**
*         DH897M - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH897M 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 DH897P.
/ 
*         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 DH897P TO COMPLETE THE ERROR DISPLAY WITH  THE 
*            PRESERVICE FORECAST GROUP NUMBER IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DH897P - 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=2       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=1       *IF MESSAGE 12 
   EXIT TO 97P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897M PROCESS GENERAL STATUS 
   MODULE DH897N,DEMA1(14),LOCK 
***       DH897N - ISOLATE DRIVE FAULT
**
*         DH897N - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         DH897N  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 DH897P.
*         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 DH897O 
*         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 DH897P.
* 
/ 
*         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 DH897O IF THE CAUSE OF THE FAULT IN THE DRIVE 
*            HAS NOT BEEN DETERMINED. 
*         EXIT  TO MODULE DH897P IF THE CAUSE OF THE FAULT IN THE DRIVE 
*            WAS DETERMINED WITH THE PRESERVICE FORECAST  GROUP  NUMBER 
*            IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH897O - ISOLATE DRIVE FAULT. 
*         DH897P - 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 DH897N.          * 
*         *         STEPS 29 THROUGH 49 ARE IN MODULE DH897O.         * 
*         *                                                           * 
*         *      NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE     * 
*         *            TO MODULE DH897P.                              * 
*         *                                                           * 
*         ************************************************************* 
* 
*         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 DH897P.
*         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 DH897P.
* 
/---------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 97P   *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 97O  *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.5) B14=3        *IF MESSAGE 5
   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.13) B14=3       *IF MESSAGE 13 
   IF(B15.EQ.15) B14=3       *IF MESSAGE 15 
   EXIT TO 97P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897N ISOLATE DRIVE FAULT
   MODULE DH897O,DEMA1(14),LOCK 
***       DH897O - ISOLATE DRIVE FAULT
**
*         DH897O - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         DH897O  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. 
*         22. EXIT TO MODULE DH897P.
* 
/ 
*         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 DH897P WITH THE PRESERVICE 
*            FORECAST GROUP NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH897P - 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 97P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH897O ISOLATE DRIVE FAULT
   MODULE DH897P,DEMA1(14),LOCK 
***       DH897P - POST PRESERVICE FORECAST GROUP 
**
*         DH897P - POST PRESERVICE FORECAST GROUP 
*         --------------------------------------- 
* 
*         PURPOSE-
*         DH897P 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 DH897Q.
*         13. EXIT TO MODULE DH897Q.
* 
/ 
*         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.
*         P8  = INPUT/OUTPUT BUFFERS DUMP ADDRESS.
* 
* 
*         EXIT- 
*         EXIT IS ALWAYS TO MODULE DH897Q.
*         THE CONTENTS OF ALL THE B REGISTERS DISPLAYED IF BIT 5 IS SET 
*            IN PARAMETER WORD P4.
*         THE CONTENTS OF THE TEN OCTAL  LOCATIONS  OF  THE  INPUT  AND 
*            BUFFER DISPLAYED STARTING AT THE INDEX IN PARAMETER WORD 8 
*            IF BIT 5 IS SET IN PARAMETER WORD P4.
* 
*         SUBMODULES REFERENCED-
*         DH897Q - RESTART CONTROLLER.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
*         B14 = PRESERVICE FORECAST GROUP NUMBER. 
* 
*         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(P8=*OCTB)/B REGISTER DISPLAY DUMP- 
11 FORMAT IB(P8)  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
12 FORMAT OB(P8)  = *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 DH801-11. 
* 
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.LE.11D) B14=0       *IF MODULE IS DH801-11 
* 
/---------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
   B13 = P8                      *INDEX FOR BUFFERS 
   MSG 10(B13) TO LINE B12       *DUMP DISPLAY MESSAGE
   MSG 10(B13) TO PRINT          *DUMP DISPLAY MESSAGE
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 11 10 WORDS FROM IB(B13) TO LINE B12  *INPUT BUFFER
   MSG 11 10 WORDS FROM IB(B13) TO PRINT  *INPUT BUFFER 
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 12 10 WORDS FROM OB(B13) TO LINE B12  *OUTPUT BUFFER 
   MSG 12 10 WORDS FROM OB(B13) TO PRINT  *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 DISABLED 
   MSG 15 TO DISPLAY, PRINT      *PAUSE MESSAGE 
   PAUSE                         *STOP ON ERROR 
60 MSG 16 TO PRINT               *TERMINATE THE MESSAGE 
   EXIT TO 97Q               *EXIT THE MODULE 
   END 20                    *END OF MODULE 
COMPILE                      *DH897P POST PRESERVICE FORECAST GROUP 
   MODULE DH897Q,DEMA1(14),LOCK 
***       DH897Q - RESTART CONTROLLER 
**
*         DH897Q - RESTART CONTROLLER 
*         --------------------------- 
* 
*         PURPOSE-
*         DH897Q  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  40  OCTAL 
*             (RES,CONTROLLER) OR A 41 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.  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. 
* 
*         BUFFERS USED- 
*         STATUS BUFFER USED FOR GENERAL AND DETAILED STATUS. 
* 
/---------MESSAGES POSTED BY THIS MODULE. 
* 
1  FORMAT PRESERVICE FORECAST GROUP FHDC
2  FORMAT DH8 ABORT ON .RESET. COMMAND
3  FORMAT DH8 ABORT ON .STATUS DETAIL. COMMAND
4  FORMAT DH8 ABORT ON .REL. COMMAND
5  FORMAT LAST FUNCTION = *OCTB 
6  FORMAT  DH897Q E0102 L*OC  CONTROLLER RESPONSE ERROR 
7  FORMAT WT=*OCTB RETRIES=*OB ERRORS=*DECD 
10 FORMAT POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM
11 FORMAT DH8*D MODULE ABORTED - CONTROLLER NOT RESPONDING
12 FORMAT 
13 FORMAT --------------------------------------------------
* 
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.
* 
30 IF(B8.EQ.40) GOTO 32      *IF RES CONTROLLER COMMAND 
   IF(B8.NE.41) 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 NO RES ERROR, 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 NO RES ERROR, 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.NE.0)GOTO 52  *IF KL DISPLAY
   MSG 12 TO LINE B12         *BLANK LINE 
   B12 = B12+1                *UPDATE DISPLAY LINE NUMBER 
52 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. 
   END 30                               *END OF THE MODULE
COMPILE                      *DH897Q RESTART CONTROLLER 
*ENDIF
*IF DEF,PFMD,4
   MODULE DH898A,DEMA2(14),LOCK 
***       DH898A - PARAMETER VERIFICATION 
**        DH898A - PARAMETER VERIFICATION 
*         DH898A - PARAMETER VERIFICATION 
*IF DEF,SFMD,4
   MODULE D8898A,FMDFT(7),LOCK                                           D88
***       D8898A - PARAMETER VERIFICATION                                D88
**        D8898A - PARAMETER VERIFICATION                                D88
*         D8898A - PARAMETER VERIFICATION                                D88
*IF DEF,LSFMD,4 
   MODULE DL898A,LSFMD2(16),LOCK
***       DL898A - PARAMETER VERIFICATION 
**        DL898A - PARAMETER VERIFICATION 
*         DL898A - PARAMETER VERIFICATION 
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,1
*         DH898A  CHECKS THE PARAMETER WORDS FOR THE CALLING MODULE  TO 
*IF DEF,SFMD,1
*         D8898A  CHECKS THE PARAMETER WORDS FOR THE CALLING MODULE  TO 
*IF DEF,LSFMD,1 
*         DL898A  CHECKS THE PARAMETER WORDS FOR THE CALLING MODULE  TO 
*         DETERMINE IF THERE ARE ANY ERRORS IN THE PARAMETER WORDS. THE  D88
*IF DEF,PFMD,1
*         MODULE WILL THEN EXIT TO MODULE DH898B TO ALLOW ANY ERRORS TO 
*IF DEF,SFMD,1
*         MODULE WILL THEN EXIT TO MODULE D8898B TO ALLOW ANY ERRORS TO  D88
*IF DEF,LSFMD,1 
*         MODULE WILL THEN EXIT TO MODULE DL898B TO ALLOW ANY ERRORS TO 
*         BE REPORTED.                                                   D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P0 IS  D88
*             NOT GREATER THAN 1512 OCTAL.                               D88
*         2.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P1 IS  D88
*             NOT GREATER THAN 1512 OCTAL.                               D88
*         3.  VERIFY  THAT  THE CYLINDER NUMBER IN PARAMETER WORD P0 IS  D88
*             EQUAL TO OR LESS THAN THE CYLINDER  NUMBER  IN  PARAMETER  D88
*             WORD P1.                                                   D88
*         4.  VERIFY THAT THE FIRST CYLINDER SELECTED IN  PARAMETER  P0  D88
*             IS NOT EQUAL TO 1511 OCTAL.                                D88
*         5.  VERIFY THAT THE LAST CYLINDER SELECTED IN PARAMETER P1 IS  D88
*             NOT EQUAL TO 1511 OCTAL.                                   D88
*         6.  VERIFY THAT THE LOWER TRACK NUMBER IN PARAMETER  WORD  P2  D88
*IF DEF,PFMD,1
*             IS NOT GREATER THAN 11 OCTAL. 
*IF DEF,SFMD,1
*             IS NOT GREATER THAN 47 OCTAL.                              D88
*IF DEF,LSFMD,1 
*             IS NOT GREATER THAN 47 OCTAL. 
*         7.  VERIFY THAT THE UPPER TRACK NUMBER IN PARAMETER  WORD  P2  D88
*IF DEF,PFMD,1
*             IS NOT GREATER THAN 11 OCTAL. 
*IF DEF,SFMD,1
*             IS NOT GREATER THAN 47 OCTAL. 
*IF DEF,LSFMD,1 
*             IS NOT GREATER THAN 47 OCTAL.                              D88
*         8.  VERIFY THAT THE LOWER TRACK NUMBER IN PARAMETER  WORD  P2  D88
*             IS  EQUAL  TO  OR  LESS  THAN  THE  UPPER TRACK NUMBER IN  D88
*             PARAMETER WORD P2.                                         D88
*         9.  VERIFY  THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD P3  D88
*             IS NOT GREATER THAN 37 OCTAL.                              D88
*         10. VERIFY  THAT THE UPPER SECTOR NUMBER IN PARAMETER WORD P3  D88
*             IS NOT GREATER THAN 37 OCTAL.                              D88
*         11. VERIFY  THAT THE LOWER SECTOR NUMBER IN PARAMETER WORD P3  D88
*             IS EQUAL TO OR LESS  THAN  THE  UPPER  SECTOR  NUMBER  IN  D88
*             PARAMETER WORD P3.                                         D88
*         12. VERIFY THAT THE MARGINS SELECTED IN PARAMETER WORD P7 ARE 
*             VALID.
*         13. VERIFY THAT BOTH WRITE AND READ ARE NOT DISABLED  IN  THE 
*             P5 PARAMETER WORD.
*         14. IF WRITE IS NOT DISABLED, VERIFY THAT THE ACCESS LEVEL IS  D88
*             HIGH ENOUGH TO WRITE THE CYLINDERS SELECTED.               D88
*         15. IF WRITE IS DISABLED AND READ IS ENABLED, VERIFY THAT THE  D88
*             ACCESS  LEVEL IS HIGH ENOUGH TO READ ALL OF THE CYLINDERS  D88
*             SELECTED.                                                  D88
*IF DEF,PFMD,1
*         16. EXIT TO MODULE DH898B.
*IF DEF,SFMD,1
*         16. EXIT TO MODULE D8898B.                                     D88
*IF DEF,LSFMD,1 
*         16. EXIT TO MODULE DL898B.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         PARAMETER WORDS P0 THROUGH P9 CONTAIN THE PARAMETERS SELECTED  D88PTR4
*IF DEF,PFMD,1
*         BY THE OPERATOR AS DESCRIBED IN MODULE DH899A.
*IF DEF,SFMD,1
*         BY THE OPERATOR AS DESCRIBED IN MODULE D8899A.                 D88PTR4
*IF DEF,LSFMD,1 
*         BY THE OPERATOR AS DESCRIBED IN MODULE DL899A.
*         AL REGISTER CONTAINS THE ACCESS LEVEL AS DEFINED IN THE        D88
*           ASSIGN STATEMENT.                                            D88
*         B1 CONTAINS THE CALLING MODULE NUMBER IN OCTAL.                D88
*                                                                        D88
*         EXIT-                                                          D88
*IF DEF,PFMD,1
*         EXIT IS ALWAYS TO MODULE DH898B WITH THE REGISTERS SET AS 
*IF DEF,SFMD,1
*         EXIT IS ALWAYS TO MODULE D8898B WITH THE REGISTERS SET AS      D88
*IF DEF,LSFMD,1 
*         EXIT IS ALWAYS TO MODULE DL898B WITH THE REGISTERS SET AS 
*           FOLLOWS-                                                     D88
*         B12 CONTAINS THE NEXT LINE NUMBER TO PLACE THE NEXT MESSAGE.   D88
*         B9 CONTAINS THE FIRST READ MARGIN SELECTED.                    D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,1
*         DH898B - VALIDATE PARAMETERS. 
*IF DEF,SFMD,1
*         D8898B - VALIDATE PARAMETERS.                                  D88
*IF DEF,LSFMD,1 
*         DL898B - VALIDATE PARAMETERS. 
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B9  = READ MARGIN.                                             D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B12 = DISPLAY BUFFER LINE NUMBER.                              D88
*         B13 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*IF DEF,PFMD,1
1  FORMAT DH898A - CHECK PARAMETERS 
*IF DEF,SFMD,1
1  FORMAT D8898A - CHECK PARAMETERS                                      D88
*IF DEF,LSFMD,1 
1  FORMAT DL898A - CHECK PARAMETERS 
2  FORMAT CHECK P0 - LOWER CYLINDER NUMBER TOO LARGE                     D88
3  FORMAT CHECK P1 - UPPER CYLINDER NUMBER TOO LARGE                     D88
4  FORMAT CHECK P0, P1 - P0 GREATER THAN P1                              D88
5  FORMAT CHECK P0, P1 - CYLINDER 1511 CANNOT BE TESTED                  D88
6  FORMAT CHECK P2 - LOWER TRACK NUMBER TOO LARGE                        D88
7  FORMAT CHECK P2 - UPPER TRACK NUMBER TOO LARGE                        D88
10 FORMAT CHECK P2 - LOWER TRACK GREATER THAN UPPER TRACK                D88
11 FORMAT CHECK P3 - LOWER SECTOR NUMBER TOO LARGE                       D88
12 FORMAT CHECK P3 - UPPER SECTOR NUMBER TOO LARGE                       D88
13 FORMAT CHECK P3 - LOWER SECTOR GREATER THAN UPPER SECTOR              D88
14 FORMAT CHECK P5 - WRITE AND READ BOTH DISABLED                        D88
15 FORMAT CHECK P7 - ERROR IN MARGIN PARAMETER WORD                      D88
*IF DEF,PFMD,1
16 FORMAT DH8*D NEEDS ACCESS LEVEL *O, ACTUAL =*O 
*IF DEF,SFMD,1
16 FORMAT D88*D NEEDS ACCESS LEVEL *O, ACTUAL =*O                        D88
*IF DEF,LSFMD,1 
16 FORMAT DL8*D NEEDS ACCESS LEVEL *O, ACTUAL =*O 
*                                                                        D88
/---------EQUATES FOR PARAMETER VALUES.                                  D88
*                                                                        D88
*IF DEF,PFMD,1
   EQUATE MAXCYL=1512, MAXSEC=37, MAXTRK=11 
*IF DEF,SFMD,1
   EQUATE MAXCYL=1512, MAXSEC=37, MAXTRK=47 
*IF DEF,LSFMD,1 
   EQUATE MAXCYL=1512, MAXSEC=07, MAXTRK=47 
*                                                                        D88
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE.                    D88
*                                                                        D88
30 MSG 1 TO DISPLAY          *DISPLAY RUNNING MESSAGE                    D88
   B12=12                    *FIRST LINE OF ERROR DISPLAY                D88
*                                                                        D88
/---------CHECK LOWER CYLINDER PARAMETER WORD.                           D88
*                                                                        D88
   B13=2                     *MESSAGE FORMAT NUMBER                      D88
   IF(P0.GT.MAXCYL)GOSUB 76  *UPPER CYLINDER TOO LARGE                   D88
*                                                                        D88
/---------CHECK UPPER CYLINDER PARAMETER WORD.                           D88
*                                                                        D88
   B13=3                     *MESSAGE FORMAT NUMBER                      D88
   IF(P1.GT.MAXCYL)GOSUB 76  *UPPER CYLINDER TOO LARGE                   D88
*                                                                        D88
/---------CHECK IF LOWER CYLINDER NUMBER LARGER THAN THE                 D88
/         UPPER CYLINDER NUMBER.                                         D88
*                                                                        D88
   B13=4                     *MESSAGE FORMAT NUMBER                      D88
   IF(P0.GT.P1) GOSUB 76     *IF CONFLICT IN CYL. NUMBERS                D88PTR4
*                                                                        D88
/---------CHECK FOR CYLINDER 1511 THE FIRST OR LAST CYLINDER             D88
/---------SECLECTED TO BE TESTED.                                        D88
*                                                                        D88
   B13=5                     *MESSAGE FORMAT NUMBER                      D88
   IF(P0.EQ.1511) GOSUB 76   *IF STARTING CYLINDER IS 1511               D88
   GOTO 40                                                               D88
   IF(P1.EQ.1511) GOSUB 76   *IF LAST CYLINDER IS 1511                   D88
*                                                                        D88
/---------CHECK LOWER TRACK NUMBER IN PARAMETER WORD 2.                  D88
*                                                                        D88
40 B13=6                     *MESSAGE FORMAT NUMBER                      D88
   B2=P2 RS 6                *GET LOWER TRACK NUMBER                     D88
   IF(B2.GT.MAXTRK)GOSUB 76  *IF LOWER TRACK TOO LARGE                   D88
*                                                                        D88
/---------CHECK UPPER TRACK NUMBER IN PARAMETER WORD 2.                  D88
*                                                                        D88
   B13=7                     *MESSAGE FORMAT NUMBER                      D88
   B10=P2 AND 77             *GET UPPER TRACK NUMBER                     D88
   IF(B10.GT.MAXTRK)GOSUB 76  *IF UPPER TRACK TOO LARGE                  D88
*                                                                        D88
/---------CHECK IF LOWER TRACK LARGER THAN UPPER TRACK.                  D88
*                                                                        D88
   B13=10                    *MESSAGE FORMAT NUMBER                      D88
   IF(B2.GT.B10) GOSUB 76    *IF CONFILICT IN TRACK NUMBERS              D88
*                                                                        D88
/---------CHECK LOWER SECTOR NUMBER IN PARAMETER WORD 3.                 D88
*                                                                        D88
   B13=11                    *MESSAGE FORMAT NUMBER                      D88
   B2=P3 RS 6                *GET LOWER SECTOR NUMBER                    D88
   IF(B2.GT.MAXSEC)GOSUB 76  *IF LOWER SECTOR TO0 LARGE                  D88
*                                                                        D88
/---------CHECK UPPER SECTOR NUMBER IN PARAMETER WORD 3.                 D88
*                                                                        D88
   B13=12                    *MESSAGE FORMAT NUMBER                      D88
   B10=P3 AND 77             *GET UPPER SECTOR NUMBER                    D88
   IF(B10.GT.MAXSEC)GOSUB 76  *IF UPPER SECTOR TOO LARGE                 D88
*                                                                        D88
/---------CHECK IF LOWER SECTOR LARGER THAN UPPER SECTOR.                D88
*                                                                        D88
   B13=13                    *MESSAGE FORMAT NUMBER                      D88
   IF(B2.GT.B10) GOSUB 76    *IF CONFLICT IN SECTOR NO.                  D88PTR4
* 
/---------CHECK FOR LEGAL MARGINS IN PARAMETER WORD P7. 
* 
   B9 = P7                   *MARGINS SELECTED IN P7
   IF(P7.EQ.77) B9 = 0       *IF ALL READ MARGINS SELECTED, 
   MARGINS,B9,ABT 44         *CHECK IF LEGAL MARGINS ENTERED
   GOTO 46                   *JUMP, LEGAL MARGINS ENTERED 
44 B13 = 15                  *MESSAGE FORMAT NUMBER 
   GOSUB 76                  *MOVE MESSAGE TO THE DISPLAY 
*                                                                        D88
/---------CHECK P5 FOR BOTH WRITE AND READ DISABLED.                     D88
*                                                                        D88
46 IF(P5.AND.4.EQ.0)GOTO 50  *IF WRITE NOT DISABLED,
   IF(P5.AND.2.EQ.0)GOTO 52  *IF READ NOT DISABLED                       D88
   B13=14                    *MESSAGE FORMAT NUMBER                      D88
   GOSUB 76                  *MOVE MESSAGE TO THE DISPLAY                D88
   GOTO 62                   *GO TO EXIT
*                                                                        D88
/---------DETERMINE THE ACCESS LEVEL FOR WRITING THE FMD.                D88
*                                                                        D88
50 B2=4                      *ACCESS LEVEL TO WRITE ANYWHERE             D88
   IF(P0.GE.MAXCYL) B2=3     *ACCESS LEVEL FOR CYL. 1512                 D88
   GOTO 60                   *GO TO CHECK THE ACCESS LEVEL
*                                                                        D88
/---------DETERMINE THE ACCESS LEVEL FOR READING THE FMD.                D88
*                                                                        D88
52 B2=4                      *ACCESS LEVEL TO READ ANYWHERE              D88
   IF(P0.GE.MAXCYL) B2=1     *IF CYLINDER 1512 ONLY                      D88
*                                                                        D88
/---------CHECK FOR THE ACCESS LEVEL TOO LOW.                            D88
*                                                                        D88
60 B10=5                     *PARAMETER ENTRY ERROR MESSAGE              D88
   IF(AL.GE.B2) GOTO 62      *IF ACCESS LEVEL HIGH ENOUGH                D88
   MSG 16 (B1,B2,AL) TO LINE B12  *MOVE ERROR MESSAGE                    D88
   IF(B12.EQ.12) B10=6       *ACCESS LEVEL ERROR MESSAGE                 D88
   B12=B12+1                 *INCREMENT LINE NUMBER                      D88
62 EXIT TO 98B               *EXIT THE MODULE                            D88
*                                                                        D88
/---------SUBROUTINE TO INSERT A MESSAGE IN THE DISPLAY.                 D88
*                                                                        D88
76 MSG B13 TO LINE B12       *MOVE ERROR MESSAGE TO DISPLAY              D88
   B12=B12+1                 *INCREMENT LINE NUMBER                      D88
   RETURN                    *EXIT THE SUBROUTINE                        D88
   END 30                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH898A VALIDATE PARAMETERS
*IF DEF,SFMD,1
COMPILE                      *D8898A VALIDATE PARAMETERS                 D88
*IF DEF,LSFMD,1 
COMPILE                      *DL898A VALIDATE PARAMETERS
*IF DEF,PFMD,4
   MODULE DH898B,DEMA2(14),LOCK 
***       DH898B - PARAMETER VERIFICATION 
**        DH898B - PARAMETER VERIFICATION 
*         DH898B - PARAMETER VERIFICATION 
*IF DEF,SFMD,4
   MODULE D8898B,FMDFT(7),LOCK                                           D88
***       D8898B - PARAMETER VERIFICATION                                D88
**        D8898B - PARAMETER VERIFICATION                                D88
*         D8898B - PARAMETER VERIFICATION                                D88
*IF DEF,LSFMD,4 
   MODULE DL898B,LSFMD2(16),LOCK
***       DL898B - PARAMETER VERIFICATION 
**        DL898B - PARAMETER VERIFICATION 
*         DL898B - PARAMETER VERIFICATION 
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*IF DEF,PFMD,2
*         DH898B  CHECKS  TO  DETERMINE  IF  ANY  PARAMETER ERRORS WERE 
*         DETECTED BY MODULE DH898A AND IF THERE WERE ERRORS  DETECTED, 
*IF DEF,SFMD,2
*         D8898B  CHECKS  TO  DETERMINE  IF  ANY  PARAMETER ERRORS WERE  D88
*         DETECTED BY MODULE D8898A AND IF THERE WERE ERRORS  DETECTED,  D88
*IF DEF,LSFMD,2 
*         DL898B  CHECKS  TO  DETERMINE  IF  ANY  PARAMETER ERRORS WERE 
*         DETECTED BY MODULE DL898A AND IF THERE WERE ERRORS  DETECTED, 
*         REPORTS  THE  ERROR. IF NO ERRORS ARE DETECTED, THE REGISTERS  D88
*         AND THE OUTPUT BUFFER WILL BE INITIALIZED ANE RETURN MADE  TO  D88
*         THE CALLING MODULE.                                            D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE B12 REGISTER  DOES  NOT  CONTAIN  THE  FIRST  LINE  D88
*             NUMBER OF THE ERROR DISPLAY, GO TO STEP 6.                 D88
*         2.  SET THE BA REGISTER TO 4  AND  THE  WC  REGISTER  TO  476  D88
*             OCTAL.                                                     D88
*         3.  DETERMINE THE NUMBER OF SECTORS TO BE WRITTEN AND OR READ  D88
*             FROM  PARAMETER  WORD  P3  AND PLACE THE NUMBER IN THE B2  D88
*             REGISTER.                                                  D88
*         4.  IF BIT  3 IS SET IN PARAMETER WORD P5, DUPLICATE THE WORD  D88
*             IN PARAMETER WORD P6 IN THE ENTIRE OUTPUT BUFFER.          D88
*         5.  EXIT THE MODULE AND RETURN TO THE PRIMARY CALLING MODULE.  D88
*         6.  DISPLAY ANY PARAMETER ERRORS DETECTED.                     D88
*         7.  IF  BIT  3 IS SET IN PARAMETER WORD P5, DUPICATE THE WORD  D88
*             IN PARAMETER WORD P6 IN THE ENTIRE OUTPUT BUFFER.          D88
*         8.  EXIT THE MODULE AND RETURN TO THE PRIMARY CALLING MODULE.  D88
*         9.  POST A MESSAGE IN THE DAYFILE, PRINT  FILE,  AND  ON  THE  D88
*             DISPLAY  SCREEN  INDICATING THAT EXECUTION OF THE PRIMARY  D88
*             CALLING MODULE WILL BE ABORTED AND  THE  REASON  FOR  THE  D88
*             ABORT.                                                     D88
*         10. TERMINATE EXECUTION OF THE PRIMARY CALLING MODULE.         D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B1 CONTAINS THE OCTAL NUMBER OF THE PRIMARY CALLING MODULE.    D88
*         B12 REGISTER CONTAINS THE NEXT DISPLAY LINE NUMBER.            D88
*         B10 REGISTER CONTAINS THE NUMBER OF THE FORMAT STATEMENT       D88
*           FOR THE ERROR MESSAGE TO BE DISPLAYED IF A PARAMETER OR      D88
*           ACCESS LEVEL ERROR WAS DETECTED.                             D88
*                                                                        D88
*         EXIT-                                                          D88
*         TERMINATE EXECUTION OF THE CALLING MODULE IF A PARAMETER       D88
*           ERROR IS DETECTED OR THE ACCESS LEVEL IS TOO LOW.            D88
*         RETURN TO THE CALLING MODULE IF NO PARAMETER ERROR IS          D88
*           DETECTED AND THE ACCESS LEVEL IS OK WITH THE REGISTERS       D88
*           SET AS FOLLOWS-                                              D88
*         B2 CONTAINS THE NUMBER OF SECTORS TO PROCESS.                  D88
*         B9 CONTAINS THE FIRST READ MARGIN SELECTED.                    D88
*IF DEF,PFMD,1
*         WC REGISTER CONTAINS 504 OCTAL. 
*IF DEF,SFMD,1
*         WC REGISTER CONTAINS 476 OCTAL.                                D88
*IF DEF,LSFMD,1 
*         WC REGISTER CONTAINS 500 OCTAL. 
*         BA REGISTER CONTAINS 4 OCTAL.                                  D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         NONE.                                                          D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B2  = TEMPORARY STORAGE.                                       D88
*         B10 = TEMPORARY STORAGE.                                       D88
*         B12 = DISPLAY BUFFER LINE NUMBER.                              D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         OB(4-501) - DATA PATTERN WORD IN P6 IF BIT 3 IS SET IN         D88
*                     PARAMETER WORD P5.                                 D88
*                                                                        D88
*IF DEF,PFMD,6
1  FORMAT DH898B - CHECK PARAMETERS 
2  FORMAT DH8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
3  FORMAT DH8*D MODULE ABORTED - ACCESS LEVEL TOO LOW 
4  FORMAT DH8 - FMD CONFIDENCE TEST 
5  FORMAT DH8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
6  FORMAT DH8*D NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,SFMD,6
1  FORMAT D8898B - CHECK PARAMETERS                                      D88
2  FORMAT D88*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS              D88
3  FORMAT D88*D MODULE ABORTED - ACCESS LEVEL TOO LOW                    D88
4  FORMAT D88 - FMD CONFIDENCE TEST                                      D88
5  FORMAT D88*D NOT EXECUTED, SUSPECTED PARAMETER ERROR                  D88
6  FORMAT D88*D NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH               D88
*IF DEF,LSFMD,6 
1  FORMAT DL898B - CHECK PARAMETERS 
2  FORMAT DL8*D MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
3  FORMAT DL8*D MODULE ABORTED - ACCESS LEVEL TOO LOW 
4  FORMAT DL8 - FMD CONFIDENCE TEST 
5  FORMAT DL8*D NOT EXECUTED, SUSPECTED PARAMETER ERROR 
6  FORMAT DL8*D NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
7  FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT                              D88
10 FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT                              D88
*IF DEF,PFMD,1
11 FORMAT PARAMETERS DESCRIBED IN MODULE DH899
*IF DEF,SFMD,1
11 FORMAT PARAMETERS DESCRIBED IN MODULE D8899                           D88
*IF DEF,LSFMD,1 
11 FORMAT PARAMETERS DESCRIBED IN MODULE DL899
12 FORMAT --------------------------------------------------             D88
*                                                                        D88
/---------DETERMINE IF ANY PARAMETER ERRORS WERE DETECTED.               D88
*                                                                        D88
30 IF(B12.NE.12) GOTO 40     *NO PARAMETER ERRORS DETECTED               D88
*                                                                        D88
/---------INITIALIZE B2 WITH THE NUMBER OF SECTORS TO DO.                D88
*                                                                        D88
   B2=P3.RS.6                *FIRST SECTOR NUMBER                        D88
   B2=P3.AND.77-B2                                                       D88
   B2=B2+1                   *NUMBER OF SECTORS TO DO                    D88
*IF DEF,PFMD,2
   BA = 0                    *INITIALIZE BASE ADDRESS REG.
   WC=504                    *INITIALIZE WORD COUNT REGISTER
*IF DEF,SFMD,2
   BA=4                      *INITIALIZE BASE ADDRESS REG.               D88
   WC=476                    *INITIALIZE WORD COUNT REGISTER             D88
*IF DEF,LSFMD,2 
   BA=4                      *INITIALIZE BASE ADDRESS REG.
   WC=500                    *INITIALIZE WORD COUNT REGISTER
   IF(P5.AND.10.EQ.0)EXIT    *IF NO SET DATA PATTERN                     D88
*                                                                        D88
/---------THE OUTPUT BUFFER WITH THE DATA PATTERN IN P6.                 D88
*                                                                        D88
*IF DEF,PFMD,1
   DUP P6 TO OB FOR WC       *GENERATE SET DATA PATTERN 
*IF DEF,SFMD,1
   DUP P6 TO OB(4) FOR WC    *GENERATE SET DATA PATTERN 
*IF DEF,LSFMD,1 
   DUP P6 TO OB(4) FOR WC    *GENERATE SET DATA PATTERN                  D88
   EXIT                      *EXIT THE MODULE                            D88
*                                                                        D88
/---------DISPLAY ANY PARAMETER ENTRY ERRORS DETECTED.                   D88
*                                                                        D88
40 IF(ES.AND.TM.NE.0)GOTO 42  *IF TERMINAL MODE SELECTED                 D88
   MSG 4 TO LINE 0           *TEST TITLE MESSAGE                         D88
   MSG 1 TO LINE 1           *MODULE NAME TO ERROR DISPLAY               D88
42 MSG B10 (B1) TO LINE 5    *ERROR MESSAGE TO DISPLAY                   D88
   MSG 7 (P0,P1,P2,P3,P4) TO LINE 7  *DISPLAY PARAMETERS                 D88
   MSG 10 (P5,P6,P7,P8,P9) TO LINE 10  *DISPLAY PARAMETERS               D88
   MSG 11 TO LINE B12        *MODULE INFORMATION LINE                    D88
   PICTURE                                                               D88
   HALT                      *REPORT ERROR AND WAIT FOR GO               D88
   MSG 12 TO PRINT                                                       D88
   BLANK                                                                 D88
*                                                                        D88
/---------DETERMINE THE MESSAGE TO POST FOR THE ERRORS                   D88
/---------DETECTED AND POST THE MESSAGE IN THE DAYFILE,                  D88
/---------PRINT FILE, AND ON THE DISPLAY SCREEN.                         D88
*                                                                        D88
   B2=2                      *PARAMETERS ERROR MESSAGE                   D88
   IF(B10.EQ.6) B2=3         *ACCESS LEVEL ERROR MESSAGE                 D88
   MSG B2 (B1) TO DISPLAY,PRINT,DAYFILE  *MODULE ABORT MSG.              D88
   END 30                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH898B VALIDATE PARAMETERS
*IF DEF,SFMD,1
COMPILE                      *D8898B VALIDATE PARAMETERS                 D88
*IF DEF,LSFMD,1 
COMPILE                      *DL898B VALIDATE PARAMETERS
*IF DEF,PFMD,4
   MODULE DH898C,DEMA2(14),LOCK 
***       DH898C - COMMAND ABORT PROCESSOR
**        DH898C - COMMAND ABORT PROCESSOR
*         DH898C - COMMAND ABORT PROCESSOR
*IF DEF,SFMD,4
   MODULE D8898C,FMDFT(7),LOCK                                           D88
***       D8898C - COMMAND ABORT PROCESSOR                               D88
**        D8898C - COMMAND ABORT PROCESSOR                               D88
*         D8898C - COMMAND ABORT PROCESSOR                               D88
*IF DEF,LSFMD,4 
   MODULE DL898C,LSFMD2(16),LOCK
***       DL898C - COMMAND ABORT PROCESSOR
**        DL898C - COMMAND ABORT PROCESSOR
*         DL898C - COMMAND ABORT PROCESSOR
*         --------------------------------                               D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         DISPLAY  THE  COMMAND THAT  THE  ABORT TO OCCURRED ON AND THE  D88
*         ERROR MESSAGE GENERATED BY THE PRODUCT OVERLAY AT THE TIME OF  D88
*         THE ABORT.                                                     D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE B8 REGISTER CONTAINS ZERO, GO TO STEP 3.            D88
*         2.  POST  THE  FORMAT  MESSAGE  NUMBER  CONTAINED  IN  THE B8  D88
*             REGISTER.                                                  D88
*         3.  IF  THE  ERROR  CODE IN THE EC REGISTER IS LESS THAN 4000  D88
*             OCTAL, EXIT THE MODULE.                                    D88
*         4.  POST THE ERROR MESSAGE CONTAINED IN THE EM REGISTER.       D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         EC AND EM REGISTERS CONTAIN THE ERROR CODE AND ERROR           D88PTR4
*           MESSAGE IF GENERATED BY THE PRODUCT OVERLAY ON AN ABORT.     D88
*         B8 REGISTER CONTAINS THE NUMBER FOR THE MALET I/O COMMAND      D88PTR4
*           BEING EXECUTED AT THE TIME OF THE ABORT.                     D88
*                                                                        D88
*         EXIT-                                                          D88
*         LINE 4 OF THE DISPLAY CONTAINS THE MESSAGE INDICATING THE I/O  D88
*           COMMAND BEING EXECUTED BY THE DRIVER AND LINE 5 CONTAINS     D88
*IF -DEF,CMSE17X                                                         D88
*           THE ERROR MESSAGE IF THE ERROR CODE WAS GENERATED BY MALET.  D88
*ENDIF                                                                   D88
*IF DEF,CMSE17X                                                          D88
*           THE ERROR MESSAGE IF THE ERROR CODE WAS GENERATED BY DEMOT.  D88
*ENDIF                                                                   D88
*IF DEF,PFMD,1
*         EXIT WILL ALWAYS BE TO MODULE DH898D. 
*IF DEF,SFMD,1
*         EXIT WILL ALWAYS BE TO MODULE D8898D.                          D88
*IF DEF,LSFMD,1 
*         EXIT WILL ALWAYS BE TO MODULE DL898D. 
*                                                                        D88
*         SUBMODULES REFERENECED-                                        D88
*IF DEF,PFMD,1
*         DH898D - PROCESS THE LAST FUNCTION CODE SENT TO THE 7155
*IF DEF,SFMD,1
*         D8898D - PROCESS THE LAST FUNCTION CODE SENT TO THE 7155       D88
*IF DEF,LSFMD,1 
*         DL898D - PROCESS THE LAST FUNCTION CODE SENT TO THE 7155
*                  CONTROLLER.                                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B12 = TEMPORARY STORAGE.                                       D88
*         B13 = TEMPORARY STORAGE.                                       D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.
*         EC  = DRIVER ERROR CODE                                        D88
*         EM  = ERROR MESSAGE ADDRESS                                    D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*IF DEF,PFMD,1
/---------MESSAGES FOR MALET I/O COMMANDS USED BY DH8.
*IF DEF,SFMD,1
/---------MESSAGES FOR MALET I/O COMMANDS USED BY D88.                   D88
*IF DEF,LSFMD,1 
/---------MESSAGES FOR MALET I/O COMMANDS USED BY DL8.
*                                                                        D88
*IF DEF,PFMD,24 
1  FORMAT DH8 ABORT ON .DIAGRD. COMMAND 
2  FORMAT DH8 ABORT ON .READCB. COMMAND 
3  FORMAT DH8 ABORT ON .RTNADDR. COMMAND
4  FORMAT DH8 ABORT ON .STATUS *A*A*A*A COMMAND 
5  FORMAT DH8 ABORT ON .STATUS DETAIL. COMMAND
10 FORMAT DH8 ABORT ON .*A*A*A*A COMMAND
12 FORMAT DH8 ABORT ON .VERIFY CODED. COMMAND 
20 FORMAT DH8 ABORT ON .GET SERIAL. COMMAND 
21 FORMAT DH8 ABORT ON .GET FACTORY. COMMAND
22 FORMAT DH8 ABORT ON .GET UTILITY. COMMAND
23 FORMAT DH8 ABORT ON .READ. COMMAND 
24 FORMAT DH8 ABORT ON .READ CODED. COMMAND 
25 FORMAT DH8 ABORT ON .READCW. COMMAND 
26 FORMAT DH8 ABORT ON .SHORTRD. COMMAND
30 FORMAT DH8 ABORT ON .WRITE. COMMAND
31 FORMAT DH8 ABORT ON .WRITE CODED. COMMAND
40 FORMAT DH8 ABORT ON .RES CONTROLLER. COMMAND 
41 FORMAT DH8 ABORT ON .RES DRIVE. COMMAND
42 FORMAT DH8 ABORT ON .RESET. COMMAND
43 FORMAT DH8 ABORT ON .MARGINS. COMMAND
44 FORMAT DH8 ABORT ON .SEEK. COMMAND 
45 FORMAT DH8 ABORT ON .FMDPT. COMMAND
46 FORMAT DH8 ABORT ON .*A*A COMMAND
47 FORMAT DH8 ABORT ON .COMPARE. COMMAND
*IF DEF,SFMD,24 
1  FORMAT D88 ABORT ON .DIAGRD. COMMAND                                  D88
2  FORMAT D88 ABORT ON .READCB. COMMAND                                  D88
3  FORMAT D88 ABORT ON .RTNADDR. COMMAND                                 D88
4  FORMAT D88 ABORT ON .STATUS *A*A*A*A COMMAND 
5  FORMAT D88 ABORT ON .STATUS DETAIL. COMMAND                           D88
10 FORMAT D88 ABORT ON .*A*A*A*A COMMAND
12 FORMAT D88 ABORT ON .VERIFY CODED. COMMAND                            D88
20 FORMAT D88 ABORT ON .GET SERIAL. COMMAND                              D88
21 FORMAT D88 ABORT ON .GET FACTORY. COMMAND                             D88
22 FORMAT D88 ABORT ON .GET UTILITY. COMMAND                             D88
23 FORMAT D88 ABORT ON .READ. COMMAND                                    D88
24 FORMAT D88 ABORT ON .READ CODED. COMMAND                              D88
25 FORMAT D88 ABORT ON .READCW. COMMAND                                  D88
26 FORMAT D88 ABORT ON .SHORTRD. COMMAND                                 D88
30 FORMAT D88 ABORT ON .WRITE. COMMAND                                   D88
31 FORMAT D88 ABORT ON .WRITE CODED. COMMAND                             D88
40 FORMAT D88 ABORT ON .RES CONTROLLER. COMMAND                          D88
41 FORMAT D88 ABORT ON .RES DRIVE. COMMAND                               D88
42 FORMAT D88 ABORT ON .RESET. COMMAND                                   D88
43 FORMAT D88 ABORT ON .MARGINS. COMMAND                                 D88
44 FORMAT D88 ABORT ON .SEEK. COMMAND                                    D88
45 FORMAT D88 ABORT ON .FMDPT. COMMAND                                   D88
46 FORMAT D88 ABORT ON .*A*A COMMAND
47 FORMAT D88 ABORT ON .COMPARE. COMMAND                                 D88
*IF DEF,LSFMD,24
1  FORMAT DL8 ABORT ON .DIAGRD. COMMAND 
2  FORMAT DL8 ABORT ON .READCB. COMMAND 
3  FORMAT DL8 ABORT ON .RTNADDR. COMMAND
4  FORMAT DL8 ABORT ON .STATUS *A*A*A*A COMMAND 
5  FORMAT DL8 ABORT ON .STATUS DETAIL. COMMAND
10 FORMAT DL8 ABORT ON .*A*A*A*A COMMAND
12 FORMAT DL8 ABORT ON .VERIFY CODED. COMMAND 
20 FORMAT DL8 ABORT ON .GET SERIAL. COMMAND 
21 FORMAT DL8 ABORT ON .GET FACTORY. COMMAND
22 FORMAT DL8 ABORT ON .GET UTILITY. COMMAND
23 FORMAT DL8 ABORT ON .READ. COMMAND 
24 FORMAT DL8 ABORT ON .READ CODED. COMMAND 
25 FORMAT DL8 ABORT ON .READCW. COMMAND 
26 FORMAT DL8 ABORT ON .SHORTRD. COMMAND
30 FORMAT DL8 ABORT ON .WRITE. COMMAND
31 FORMAT DL8 ABORT ON .WRITE CODED. COMMAND
40 FORMAT DL8 ABORT ON .RES CONTROLLER. COMMAND 
41 FORMAT DL8 ABORT ON .RES DRIVE. COMMAND
42 FORMAT DL8 ABORT ON .RESET. COMMAND
43 FORMAT DL8 ABORT ON .MARGINS. COMMAND
44 FORMAT DL8 ABORT ON .SEEK. COMMAND 
45 FORMAT DL8 ABORT ON .FMDPT. COMMAND
46 FORMAT DL8 ABORT ON .*A*A COMMAND
47 FORMAT DL8 ABORT ON .COMPARE. COMMAND
*                                                                        D88
/---------PROCESS LAST I/O MALET COMMAND EXECUTED.                       D88
*                                                                        D88
70 IF(B8.EQ.0) GOTO 76       *IF NOT COMMAND NUMBER                      D88
   B12=705                   *GENERAL. IN DISPLAY CODE
   B13=1605 
   B14=2201 
   B15=1457 
   IF(B8.EQ.4) GOTO 73       *IF STATUS GENERAL COMMAND 
   B12=310                   *CHANNEL. IN DISPLAY CODE
   B13=116
   B14=1605 
   B15=1457 
   IF(B8.EQ.6) GOTO 73       *IF CHANNEL STATUS COMMAND 
   B12=2722                  *WRITECB. IN DISPLAY CODE
   B13=1124 
   B14=0503 
   B15=0257 
   IF(B8.EQ.7) GOTO 72       *IF WRITECB COMMAND
   B12=411                   *DIAGWR IN DISPLAY CODE                     D88
   B13=107                                                               D88
   B14=2722                                                              D88
   B15=5755 
   IF(B8.EQ.10) GOTO 72      *IF DIAGWR COMMAND 
   B12=2605                  *VERIFY IN DISPLAY CODE                     D88
   B13=2211                                                              D88
   B14=631                                                               D88
   B15=5755 
   IF(B8.EQ.11) GOTO 72      *IF VERIFY COMMAND 
   B12=2205                  *REL. IN DISPLAY CODE
   B13=1457 
   IF(B8.EQ.46) GOTO 71      *IF REL COMMAND
   B12=1725                  *OUT. IN DISPLAY CODE
   B13=2457 
   IF(B8.NE.50) GOTO 74      *IF NOT OUT COMMAND
71 MSG 46 (B12,B13) TO LINE 4  *ABORT MESSAGE 
   GOTO 75
72 MSG 10 (B12,B13,B14,B15) TO LINE 4  *ABORT MESSAGE 
   GOTO 75
73 MSG 4(B12,B13,B14,B15) TO LINE 4  *ABORT MESSAGE 
   GOTO 75
74 MSG B8 TO LINE 4          *ABORT MESSAGE 
75 IF(EC.LT.4000) GOTO 76    *IF NOT AN ABORT ERROR CODE
   MSG EM TO LINE 5          *PRODUCT OVERLAY ERROR MESSAGE              D88
76 EXIT TO 98D               *EXIT TO NEXT SUBMODULE                     D88
   END 70                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH898C COMMAND ABORT PROCESSOR
*IF DEF,SFMD,1
COMPILE                      *D8898C COMMAND ABORT PROCESSOR             D88
*IF DEF,LSFMD,1 
COMPILE                      *DL898C COMMAND ABORT PROCESSOR
*IF DEF,PFMD,4
   MODULE DH898D,DEMA2(14),LOCK 
***       DH898D - LAST FUNCTION PROCESSOR
**        DH898D - LAST FUNCTION PROCESSOR
*         DH898D - LAST FUNCTION PROCESSOR
*IF DEF,SFMD,4
   MODULE D8898D,FMDFT(7),LOCK                                           D88
***       D8898D - LAST FUNCTION PROCESSOR                               D88
**        D8898D - LAST FUNCTION PROCESSOR                               D88
*         D8898D - LAST FUNCTION PROCESSOR                               D88
*IF DEF,LSFMD,4 
   MODULE DL898D,LSFMD2(16),LOCK
***       DL898D - LAST FUNCTION PROCESSOR
**        DL898D - LAST FUNCTION PROCESSOR
*         DL898D - LAST FUNCTION PROCESSOR
*         --------------------------------                               D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         DISPLAY  THE  LAST  MAJOR  FUNCTION  CODE  ISSUED TO THE 7155  D88
*         CONTROLLER PRIOR TO THE CURRENT FAILURE.                       D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  SET  THE  B13  REGISTER TO ZERO IF THE RETRY COUNT IN THE  D88
*             STATUS BUFFER IS ZERO, OTHERWISE SET THE B13 REGISTER  TO  D88
*             25 OCTAL.                                                  D88
*         2.  IF THE GENERAL STATUS IN THE STATUS BUFFER  IS  EQUAL  TO  D88
*             7777 OCTAL, GO TO STEP 5.                                  D88PTR4
*         3.  IF BIT 11 IS NOT SET IN THE GENERAL STATUS AS DEFINED  BY  D88
*             THE B13 REGISTER, GO TO STEP 5.                            D88
*         4.  IF DETAILED STATUS WORD THREE IS NOT EQUAL TO 7777 OCTAL,  D88
*             GO TO STEP 6.                                              D88PTR4
*         5.  SET THE B13 REGISTER EQUAL TO THE LF REGISTER AND  GO  TO  D88
*             STEP 7.                                                    D88
*         6.  SET THE B13 REGISTER  EQUAL  TO  BITS  4-11  OF  DETAILED  D88
*             STATUS  WORD  3  IN  THE STATUS BUFFER DEFINED BY THE B13  D88
*             REGISTER.                                                  D88
*         7.  IF  THE  FUNCTION CODE IN THE B13 REGISTER IS 0, OR 1, OR  D88
*             2, OR 3, OR 4, OR 5, OR 6, OR 7, OR 10, OR 12, OR 14,  OR  D88
*             20,  OR  21, OR 23, OR 30, OR 31, OR 32, OR 33, OR 34, OR  D88
*             35, OR 36, OR 37, POST THE MESSAGE  INDICATING  THE  LAST  D88
*             FUNCTION SENT TO THE 7155 CONTROLLER.                      D88
*         8.  IF THE FUNCTION CODE IN THE B13 REGISTER IS  NOT  ONE  OF  D88
*IF DEF,PFMD,1
*             THOSE LISTED IN STEP 7, EXIT TO MODULE DH898E.
*IF DEF,SFMD,1
*             THOSE LISTED IN STEP 7, EXIT TO MODULE D8898E.             D88
*IF DEF,LSFMD,1 
*             THOSE LISTED IN STEP 7, EXIT TO MODULE DL898E.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         LF REGISTER CONTAINS THE LAST FUNCTION SENT TO THE 7155        D88
*           CONTROLLER.                                                  D88
*         STATUS BUFFER CONTAINS STATUS INFORMATION.                     D88
*                                                                        D88
*         EXIT-                                                          D88
*         IF THE FUNCTION CODE SENT TO THE 7155 CONTROLLER WAS A CODE    D88
*           FROM 0 THROUGH 30, DISPLAY LINE 6 CONTAINS A MESSAGE         D88
*           INDICATING THE LAST FUNCTION SENT TO THE 7155 CONTROLLER     D88
*IF DEF,PFMD,1
*           AND EXIT IS ALWAYS TO MODULE DH898F.
*IF DEF,SFMD,1
*           AND EXIT IS ALWAYS TO MODULE D8898F.                         D88
*IF DEF,LSFMD,1 
*           AND EXIT IS ALWAYS TO MODULE DL898F.
*         IF THE FUNCTION CODE WAS GREATER THAN 37, EXIT TO MODULE       D88
*IF DEF,PFMD,1
*           DH898E. 
*IF DEF,SFMD,1
*           D8898E.                                                      D88
*IF DEF,LSFMD,1 
*           DL898E. 
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,2
*         DH898E - LAST FUNCTION PROCESSOR. 
*         DH898F - DISPLAY STATUS INFORMATION.
*IF DEF,SFMD,2
*         D8898E - LAST FUNCTION PROCESSOR.                              D88
*         D8898F - DISPLAY STATUS INFORMATION.                           D88
*IF DEF,LSFMD,2 
*         DL898E - LAST FUNCTION PROCESSOR. 
*         DL898F - DISPLAY STATUS INFORMATION.
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B13 = TEMPORARY STORAGE.                                       D88
*         LF  = LAST FUNCTION ISSUED.                                    D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES FOR THE FUNCTIONS SENT TO THE CONTROLLER.             D88
*                                                                        D88
0  FORMAT LAST FUNCTION = 000B (CONNECT)                                 D88
1  FORMAT LAST FUNCTION = 001B (SEEK 1 TO 1 INTERLACE)                   D88
2  FORMAT LAST FUNCTION = 002B (SEEK 2 TO 1 INTERLACE)                   D88
4  FORMAT LAST FUNCTION = 004B (READ)                                    D88
5  FORMAT LAST FUNCTION = 005B (WRITE)                                   D88
6  FORMAT LAST FUNCTION = 006B (WRITE VERIFY)                            D88
7  FORMAT LAST FUNCTION = 007B (READ CHECKWORD)                          D88
10 FORMAT LAST FUNCTION = 010B (OPERATION COMPLETE)                      D88
12 FORMAT LAST FUNCTION = 012B (GENERAL STATUS)                          D88
14 FORMAT LAST FUNCTION = 014B (CONTINUE)                                D88
20 FORMAT LAST FUNCTION = 020B (DRIVE RELEASE)                           D88
21 FORMAT LAST FUNCTION = 021B (RETURN CYLINDER ADDRESS)                 D88
23 FORMAT LAST FUNCTION = 023B (20-WORD DETAILED STATUS)                 D88
30 FORMAT LAST FUNCTION = 030B (READ FACTORY DATA)                       D88
31 FORMAT LAST FUNCTION = 031B (READ UTILITY MAP)                        D88
32 FORMAT LAST FUNCTION = 032B (BLOCK TRANSFER BUFFER READ)              D88
33 FORMAT LAST FUNCTION = 033B (BLOCK TRANSFER BUFFER WRITE)             D88
34 FORMAT LAST FUNCTION = 034B (READ PROTECTED SECTOR)                   D88
35 FORMAT LAST FUNCTION = 035B (WRITE LAST SECTOR)                       D88
36 FORMAT LAST FUNCTION = 036B (WRITE VERIFY LAST SECTOR)                D88
37 FORMAT LAST FUNCTION = 037B (WRITE PROTECTED SECTOR)                  D88
*                                                                        D88
/---------DETERMINE THE FUNCTION ISSUED CAUSING THE ERROR.               D88
*                                                                        D88
70 B13=0                           *BUFFER INDEX IF NO RETRY             D88
   IF(SB(52).NE.0) B13=25          *BUFFER INDEX ON RETRY                D88
   IF(SB.EQ.7777) GOTO 71          *IF NO GENERAL STATUS                 D88
   IF(SB(B13).AND.4000.EQ.0)GOTO 71  *IF NO DETAILED STATUS              D88
   IF(SB(B13+3).NE.7777)GOTO 72      *IF VALID DETAIL STATUS             D88
71 B13 = LF                        *USE LF REGISTER AS INDEX             D88
   GOTO 73                                                               D88
72 B13 = SB(B13+3).RS.4      *LAST FUNCTION FROM CONTROLWARE             D88
*                                                                        D88
/---------CHECK FOR A KNOWN FUNCTION CODE.                               D88
*                                                                        D88
73 IF(B13.LT.11) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.12) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.14) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.20) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.21) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.23) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.30) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.31) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.32) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.33) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.34) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.35) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.36) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.37) GOTO 74     *IF KNOWN FUNCTION                          D88
   EXIT TO 98E               *EXIT TO NEXT MODULE                        D88
*                                                                        D88
/---------POST THE MESSAGE FOR THE LAST FUNCTION.                        D88
*                                                                        D88
74 MSG B13 TO LINE 6         *POST LAST FUNCTION MESSAGE                 D88
   EXIT TO 98F               *EXIT TO THE NEXT MODULE                    D88
   END 70                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH898D LAST FUNCTION PROCESSOR
*IF DEF,SFMD,1
COMPILE                      *D8898D LAST FUNCTION PROCESSOR             D88
*IF DEF,LSFMD,1 
COMPILE                      *DL898D LAST FUNCTION PROCESSOR
*IF DEF,PFMD,4
   MODULE DH898E,DEMA2(14),LOCK 
***       DH898E - LAST FUNCTION PROCESSOR
**        DH898E - LAST FUNCTION PROCESSOR
*         DH898E - LAST FUNCTION PROCESSOR
*IF DEF,SFMD,4
   MODULE D8898E,FMDFT(7),LOCK                                           D88
***       D8898E - LAST FUNCTION PROCESSOR                               D88
**        D8898E - LAST FUNCTION PROCESSOR                               D88
*         D8898E - LAST FUNCTION PROCESSOR                               D88
*IF DEF,LSFMD,4 
   MODULE DL898E,LSFMD2(16),LOCK
***       DL898E - LAST FUNCTION PROCESSOR
**        DL898E - LAST FUNCTION PROCESSOR
*         DL898E - LAST FUNCTION PROCESSOR
*         --------------------------------                               D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         DISPLAY  THE  LAST  MAJOR  FUNCTION  CODE  ISSUED TO THE 7155  D88
*         CONTROLLER PRIOR TO THE CURRENT FAILURE.                       D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE FUNCTION CODE IN THE B13 REGISTER IS 40, OR 41, OR  D88
*             43, OR 46, OR 47, OR 56, OR 64, OR 414, POST THE  MESSAGE  D88
*             INDICATING  THE  FUNCTION  SENT  TO  THE 7155 CONTROLLER.  D88
*         2.  IF  THE  FUNCTION  CODE IN THE B13 REGISTER IS NOT ONE OF  D88
*             THOSE LISTED IN STEP 7, POST  A  MESSAGE  INDICATING  THE  D88
*             FUNCTION CODE SENT TO THE 7155 CONTROLLER.                 D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B13 REGISTER CONTAINS THE LAST FUNCTION SENT TO THE 7155       D88
*           CONTROLLER.                                                  D88
*                                                                        D88
*         EXIT-                                                          D88
*         DISPLAY LINE 6 CONTAINS A MESSAGE INDICATING THE LAST          D88
*           FUNCTION SENT TO THE 7155 CONTROLLER.                        D88
*IF DEF,PFMD,1
*         EXIT IS ALWAYS TO MODULE DH898F.
*IF DEF,SFMD,1
*         EXIT IS ALWAYS TO MODULE D8898F.                               D88
*IF DEF,LSFMD,1 
*         EXIT IS ALWAYS TO MODULE DL898F.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,1
*         DH898F - DISPLAY STATUS INFORMATION.
*IF DEF,SFMD,1
*         D8898F - DISPLAY STATUS INFORMATION.                           D88
*IF DEF,LSFMD,1 
*         DL898F - DISPLAY STATUS INFORMATION.
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B13 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES FOR THE FUNCTIONS SENT TO THE CONTROLLER.             D88
*                                                                        D88
40 FORMAT LAST FUNCTION = 040B (READ SHORT)                              D88
41 FORMAT LAST FUNCTION = 041B (SELECT STROBES AND OFFSETS)              D88
43 FORMAT LAST FUNCTION = 043B (BUFFER READ)                             D88
44 FORMAT LAST FUNCTION = 044B (BUFFER WRITE)                            D88
46 FORMAT LAST FUNCTION = 046B (WRITE BUFFER TO DISK)                    D88
47 FORMAT LAST FUNCTION = 047B (SCAN CYLINDER ADDRESSES)                 D88
50 FORMAT LAST FUNCTION = 50B (OUTPUT ON PROCESSOR CHANNEL) 
52 FORMAT LAST FUNCTION = 52B (INPUT PROCESSOR CH. STATUS)
56 FORMAT LAST FUNCTION = 056B (INPUT TIMING DATA)                       D88
64 FORMAT LAST FUNCTION = 064B (TIME DIFFERENCE COUNTER)                 D88
66 FORMAT LAST FUNCTION = 414B (AUTOLOAD FROM PP)                        D88
67 FORMAT LAST FUNCTION = *OCTB                                          D88
*                                                                        D88
/---------CHECK FOR A KNOWN FUNCTION CODE.                               D88
*                                                                        D88
70 IF(B13.EQ.40) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.41) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.43) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.44) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.46) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.47) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.50) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.52) GOTO 74     *IF KNOWN FUNCTION 
   IF(B13.EQ.56) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.EQ.64) GOTO 74     *IF KNOWN FUNCTION                          D88
   IF(B13.NE.414)GOTO 75     *IF UNKNOWN FUNCTION                        D88
   B13 = 66                  *AUTOLOAD FUNCTION                          D88
*                                                                        D88
/---------POST THE MESSAGE FOR THE LAST FUNCTION.                        D88
*                                                                        D88
74 MSG B13 TO LINE 6         *POST LAST FUNCTION MESSAGE                 D88
   EXIT TO 98F               *EXIT TO THE NEXT MODULE                    D88
75 MSG 67 (B13) TO LINE 6    *POST UNKNOWN FUNCTION MESSAGE              D88
   EXIT TO 98F               *EXIT TO THE NEXT MODULE                    D88
   END 70                    *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE                      *DH898E LAST FUNCTION PROCESSOR
*IF DEF,SFMD,1
COMPILE                      *D8898E LAST FUNCTION PROCESSOR             D88
*IF DEF,LSFMD,1 
COMPILE                      *DL898E LAST FUNCTION PROCESSOR
*IF DEF,PFMD,4
   MODULE DH898F,DEMA2(14),LOCK 
***       DH898F - STATUS DISPLAY 
**        DH898F - STATUS DISPLAY 
*         DH898F - STATUS DISPLAY 
*IF DEF,SFMD,4
   MODULE D8898F,FMDFT(7),LOCK                                           D88
***       D8898F - STATUS DISPLAY                                        D88
**        D8898F - STATUS DISPLAY                                        D88
*         D8898F - STATUS DISPLAY                                        D88
*IF DEF,LSFMD,4 
   MODULE DL898F,LSFMD2(16),LOCK
***       DL898F - STATUS DISPLAY 
**        DL898F - STATUS DISPLAY 
*         DL898F - STATUS DISPLAY 
*         -----------------------                                        D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         DISPLAY  THE  VARIOUS  STATUSES  AND OTHER USEFUL INFORMATION  D88
*         RELATED TO THE CURRENT FAILURE.                                D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  POST  FORMAT  MESSAGE  1 TO LINE 7 (WT, RETRIES, MARGINS,  D88
*             AND ERRORS).                                               D88
*IF DEF,SFMD
*         2.  GO  TO STEP 4 IF P4 BIT 5 (ENABLE BUFFER/REGISTER OUTPUT)  D88
*             IS NOT SET.                                                D88
*         3.  POST FORMAT MESSAGES 2, 3, 4 AND 5 TO THE DISPLAY (IB,OB,  D88
*             ALL B REGISTERS).                                          D88
*         4.  IF THE B8 REGISTER CONTAINS 40 (RES,CONTROLLER  COMMAND),  D88
*             GO TO STEP 10.                                             D88
*         5.  IF THE B8 REGISTER CONTAINS 41 (RES,DRIVE COMMAND), GO TO  D88
*             STEP 10.                                                   D88
*         6.  GO  TO  STEP 10 IF THE CYLINDER IDENTIFIED BY REGISTER B7  D88
*             IS 7777 (INVALID CYLINDER ADDRESS).                        D88
*         7.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED),  D88
*             POST FORMAT MESSAGE 6.                                     D88
*         8.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL  D88
*             STATUS IS ZERO (SUCCESSFUL RECOVERY), POST FORMAT MESSAGE  D88
*             7.                                                         D88
*         9.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL  D88
*             STATUS  IS  NON-ZERO (UNSUCCESSFUL RECOVERY), POST FORMAT  D88
*             MESSAGE 10.                                                D88
*         10. IF  THE  ERROR  CODE  IN  THE EC REGISTER IS NOT EQUAL TO  D88
*             5331, GO TO STEP 12.                                       D88
*         11. POST  MESSAGES  11 AND 12 INDICATING A COMPARE ERROR ON A  D88
*             READ CODED DRIVER COMMAND.                                 D88
*         12. IF  THE  ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 1,  D88
*             GO TO STEP 15.                                             D88
*         13. IF  THE NUMBER IN THE B8 REGISTER IS 24 INDICATING A READ  D88
*             CODED MALET COMMAND SET  THE  DATA  BUFFER  INDEX  TO  4,  D88
*             OTHERWISE SET THE INDEX TO 0.                              D88
*         14. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST UP  TO  D88
*             FOUR MESSAGES (13).                                        D88
*         15. IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL  TO  2,  D88
*             GO TO STEP 17.                                             D88
*         16. POST MESSAGES 22 INDICATING A STATUS ERROR ON  A  COMPARE  D88
*             OF TWO STATUS WORDS.                                       D88
*         17. IF STATUS BUFFER WORD 0 IS EQUAL TO  7777  OR  THE  RETRY  D88
*             COUNT  AND  STATUS BUFFER WORD 0 ARE EQUAL TO ZERO, GO TO  D88
*             STEP 21.                                                   D88
*         18. POST MESSAGE 14.                                           D88
*         19. IF THE RETRY COUNT IS NOT EQUAL TO  ZERO,  POST  MESSAGES  D88
*             15, 16, 20, AND 21 TO DISPLAY THE STATUSES FROM LOCATIONS  D88
*             25 OCTAL THROUGH 51 OCTAL IN THE STATUS BUFFER.            D88
*         20. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS  D88
*             BUFFER IS NOT EQUAL TO ZERO, POST MESSAGES  15,  17,  20,  D88
*             AND  21  TO DISPLAY THE STATUSES FROM LOCATIONS 0 THROUGH  D88
*             24 OCTAL IN THE STATUS BUFFER.                             D88
*         21. EXIT THE MODULE TO D8898G.                                 D88
*ENDIF
*IF DEF,LSFMD 
*         2.  GO  TO STEP 4 IF P4 BIT 5 (ENABLE BUFFER/REGISTER OUTPUT) 
*             IS NOT SET. 
*         3.  POST FORMAT MESSAGES 2, 3, 4 AND 5 TO THE DISPLAY (IB,OB, 
*             ALL B REGISTERS). 
*         4.  IF THE B8 REGISTER CONTAINS 40 (RES,CONTROLLER  COMMAND), 
*             GO TO STEP 10.
*         5.  IF THE B8 REGISTER CONTAINS 41 (RES,DRIVE COMMAND), GO TO 
*             STEP 10.
*         6.  GO  TO  STEP 10 IF THE CYLINDER IDENTIFIED BY REGISTER B7 
*             IS 7777 (INVALID CYLINDER ADDRESS). 
*         7.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED), 
*             POST FORMAT MESSAGE 6.
*         8.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS IS ZERO (SUCCESSFUL RECOVERY), POST FORMAT MESSAGE 
*             7.
*         9.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS  IS  NON-ZERO (UNSUCCESSFUL RECOVERY), POST FORMAT 
*             MESSAGE 10. 
*         10. IF  THE  ERROR  CODE  IN  THE EC REGISTER IS NOT EQUAL TO 
*             5331, GO TO STEP 12.
*         11. POST  MESSAGES  11 AND 12 INDICATING A COMPARE ERROR ON A 
*             READ CODED DRIVER COMMAND.
*         12. IF  THE  ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 1, 
*             GO TO STEP 15.
*         13. IF  THE NUMBER IN THE B8 REGISTER IS 24 INDICATING A READ 
*             CODED MALET COMMAND SET  THE  DATA  BUFFER  INDEX  TO  4, 
*             OTHERWISE SET THE INDEX TO 0. 
*         14. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST UP  TO 
*             FOUR MESSAGES (13). 
*         15. IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL  TO  2, 
*             GO TO STEP 17.
*         16. POST MESSAGES 22 INDICATING A STATUS ERROR ON  A  COMPARE 
*             OF TWO STATUS WORDS.
*         17. IF STATUS BUFFER WORD 0 IS EQUAL TO  7777  OR  THE  RETRY 
*             COUNT  AND  STATUS BUFFER WORD 0 ARE EQUAL TO ZERO, GO TO 
*             STEP 21.
*         18. POST MESSAGE 14.
*         19. IF THE RETRY COUNT IS NOT EQUAL TO  ZERO,  POST  MESSAGES 
*             15, 16, 20, AND 21 TO DISPLAY THE STATUSES FROM LOCATIONS 
*             25 OCTAL THROUGH 51 OCTAL IN THE STATUS BUFFER. 
*         20. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS 
*             BUFFER IS NOT EQUAL TO ZERO, POST MESSAGES  15,  17,  20, 
*             AND  21  TO DISPLAY THE STATUSES FROM LOCATIONS 0 THROUGH 
*             24 OCTAL IN THE STATUS BUFFER.
*         21. EXIT THE MODULE TO DL898G.
*ENDIF
*IF DEF,PFMD
*         2.  IF THE B8 REGISTER CONTAINS 40 (RES,CONTROLLER  COMMAND), 
*             GO TO STEP 8. 
*         3.  IF THE B8 REGISTER CONTAINS 41 (RES,DRIVE COMMAND), GO TO 
*             STEP 8. 
*         4.  GO  TO  STEP 10 IF THE CYLINDER IDENTIFIED BY REGISTER B7 
*             IS 7777 (INVALID CYLINDER ADDRESS). 
*         5.  IF THE RETRY COUNT IS ZERO (NO ERROR RECOVERY PERFORMED), 
*             POST FORMAT MESSAGE 6.
*         6.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS IS ZERO (SUCCESSFUL RECOVERY), POST FORMAT MESSAGE 
*             7.
*         7.  IF THE RETRY COUNT IS NON-ZERO AND THE LAST TAKEN GENERAL 
*             STATUS  IS  NON-ZERO (UNSUCCESSFUL RECOVERY), POST FORMAT 
*             MESSAGE 10. 
*         8.  IF  THE  ERROR  CODE  IN  THE EC REGISTER IS NOT EQUAL TO 
*             5331, GO TO STEP 10.
*         9.  POST  MESSAGES  11 AND 12 INDICATING A COMPARE ERROR ON A 
*             READ CODED DRIVER COMMAND.
*         10. IF  THE  ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 1, 
*             GO TO STEP 13.
*         11. IF  THE NUMBER IN THE B8 REGISTER IS 24 INDICATING A READ 
*             CODED MALET COMMAND SET  THE  DATA  BUFFER  INDEX  TO  4, 
*             OTHERWISE SET THE INDEX TO 0. 
*         12. COMPARE THE INPUT AND OUTPUT DATA BUFFERS AND POST UP  TO 
*             FOUR MESSAGES (13). 
*         13. IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL  TO  2, 
*             GO TO STEP 15.
*         14. POST MESSAGES 22 INDICATING A STATUS ERROR ON  A  COMPARE 
*             OF TWO STATUS WORDS.
*         15. IF STATUS BUFFER WORD 0 IS EQUAL TO  7777  OR  THE  RETRY 
*             COUNT  AND  STATUS BUFFER WORD 0 ARE EQUAL TO ZERO, GO TO 
*             STEP 19.
*         16. POST MESSAGE 14.
*         17. IF THE RETRY COUNT IS NOT EQUAL TO  ZERO,  POST  MESSAGES 
*             15, 16, 20, AND 21 TO DISPLAY THE STATUSES FROM LOCATIONS 
*             25 OCTAL THROUGH 51 OCTAL IN THE STATUS BUFFER. 
*         18. IF  THE  GENERAL  STATUS  IN  LOCATION ZERO OF THE STATUS 
*             BUFFER IS NOT EQUAL TO ZERO, POST MESSAGES  15,  17,  20, 
*             AND  21  TO DISPLAY THE STATUSES FROM LOCATIONS 0 THROUGH 
*             24 OCTAL IN THE STATUS BUFFER.
*         19. EXIT THE MODULE TO DH896G.
*ENDIF
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B5  = CURRENT SECTOR NUMBER.                                   D88
*         B6  = CURRENT TRACK NUMBER.                                    D88
*         B7  = CURRENT CYLINDER NUMBER.                                 D88
*         B8  = NUMBER FOR THE LAST PRODUCT OVERLAY COMMAND EXECUTED.    D88
*         EC  = ERROR CODE NUMBER.                                       D88
*         WT  = NUMBER OF WORDS TRANSMITTED.                             D88
*         BA  = THE BASE ADDRESS ON A DATA COMPARE ERROR.                D88
*         OUTPUT DATA BUFFER CONTAINS THE EXPECTED DATA FOR COMPARE      D88
*           DATA ERRORS.                                                 D88
*         INPUT DATA BUFFER CONTAINS THE ACTUAL DATA FOR COMPARE DATA    D88
*           ERRORS.                                                      D88
*         STATUS BUFFER CONTAINS THE GENERAL STATUS, DETAILED STATUS,    D88
*           AND RETRY COUNT.                                             D88
*                                                                        D88
*         EXIT-                                                          D88
*         B12 = NEXT LINE NUMBER IN THE DISPLAY BUFFER.                  D88
*         MESSAGES POSTED FOR THE STATUSES TO BE DISPLAYED.              D88
*IF DEF,PFMD,1
*         EXIT IS ALWAYS TO MODULE DH898G.
*IF DEF,SFMD,1
*         EXIT IS ALWAYS TO MODULE D8898G.                               D88
*IF DEF,LSFMD,1 
*         EXIT IS ALWAYS TO MODULE DL898G.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*IF DEF,PFMD,1
*         DH898G - CRACK GENERAL AND DETAILED STATUS. 
*IF DEF,SFMD,1
*         D8898G - CRACK GENERAL AND DETAILED STATUS.                    D88
*IF DEF,LSFMD,1 
*         DL898G - CRACK GENERAL AND DETAILED STATUS. 
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B5  = CURRENT SECTOR.                                          D88
*         B6  = CURRENT TRACK.                                           D88
*         B7  = CURRENT CYLINDER.                                        D88
*         B8  = COMMAND NUMBER FOR ABORTS.                               D88
*         B9  = CURRENT MARGINS SELECTION.                               D88
*         B11 = ERROR COUNTER.                                           D88
*         B12 = DISPLAY LINE NUMBER                                      D88
*         B13 = TEMPORARY STORAGE.                                       D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         INPUT BUFFER LOCATIONS 502, 503, AND 504 ARE USED FOR          D88
*           TEMPORARY STORAGE.                                           D88
*                                                                        D88
/---------MESSAGES FOR THE STATUSES TO BE DISPLAYED.                     D88
*                                                                        D88
1  FORMAT WT=*OCT  RETRIES=*O  MARGINS=*O  ERRORS=*DEC                   D88
*IF DEF,SFMD
2  FORMAT IB(0-7) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT              D88
3  FORMAT OB(0-7) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT              D88
4  FORMAT B0-B7   = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT              D88
5  FORMAT B8-B15  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT              D88
*ENDIF
*IF DEF,LSFMD 
2  FORMAT IB(0-7) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
3  FORMAT OB(0-7) = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
4  FORMAT B0-B7   = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
5  FORMAT B8-B15  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
*ENDIF
6  FORMAT CYL=*OCT TRK=*O SEC=*O                                         D88
7  FORMAT CYL=*OCT TRK=*O SEC=*O  - SUCCESSFUL RECOVERY                  D88
10 FORMAT CYL=*OCT TRK=*O SEC=*O  - UNSUCCESSFUL RECOVERY                D88
11 FORMAT COMPARE ERROR - EXPECTED  CYL=*OCT  TRK=*O  SEC=*O             D88
12 FORMAT                 ACTUAL    CYL=*OCT  TRK=*O  SEC=*O             D88
13 FORMAT DATA ERROR - W*OCT  E*OCT  A*OCT  D*OCT                        D88
14 FORMAT                  WORD    DETAILED STATUS (OCTAL)               D88
15 FORMAT                    1     *OCT *OCT *OCT *OCT *OCT              D88
16 FORMAT FIRST GENERAL      6     *OCT *OCT *OCT *OCT *OCT              D88
17 FORMAT LAST GENERAL       6     *OCT *OCT *OCT *OCT *OCT              D88
20 FORMAT STATUS= *OCTB     11D    *OCT *OCT *OCT *OCT *OCT              D88
21 FORMAT                   16D    *OCT *OCT *OCT *OCT *OCT              D88
22 FORMAT STATUS ERROR - W*OCT  E*OCT  A*OCT  D*OCT                      D88
*IF DEF,LSFMD,1 
23 FORMAT SMALL SECTOR ADDRESS  CYL=*OCT  TRK=*O  SEC=*O
*                                                                        D88
/---------BUILD THE STATUS DISPLAY FOR THE ERROR.                        D88
*                                                                        D88
30 B13=B11+1                           *UPDATE ERROR COUNT               D88
   MSG 1 (WT,SB(52),B9,B13) TO LINE 7  *DISPLAY LINE 7                   D88
*IF DEF,SFMD
   IF(P4.AND.40.EQ.0) GOTO 32         *IF NOT BUFFER DUMP                D88
   B13 = P8 
   MSG 2 10 WORDS FROM IB(B13) TO LINE 44  *DISPLAY IB(P8)
   MSG 3 10 WORDS FROM OB(B13) TO LINE 45  *DISPLAY OB(P8)
   MSG 4 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE 46      *B0-B7                D88
   MSG 5 (B8,B9,B10,B11,B12,B13,B14,B15) TO LINE 47  *B8-B15             D88
32 B12=10                    *LINE NUMBER ON THE DISPLAY                 D88
*ENDIF
*IF DEF,LSFMD 
   IF(P4.AND.40.EQ.0) GOTO 32         *IF NOT BUFFER DUMP 
   B13 = P8 
   MSG 2 10 WORDS FROM IB(B13) TO LINE 44  *DISPLAY IB(P8)
   MSG 3 10 WORDS FROM OB(B13) TO LINE 45  *DISPLAY OB(P8)
   MSG 4 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE 46      *B0-B7 
   MSG 5 (B8,B9,B10,B11,B12,B13,B14,B15) TO LINE 47  *B8-B15
32 B12=10                    *LINE NUMBER ON THE DISPLAY
*ENDIF
*IF DEF,PFMD,1
   B12=10                    *LINE NUMBER ON THE DISPLAY
*                                                                        D88
/---------DISPLAY THE CURRENT CYLINDER, TRACK, AND SECTOR.               D88
*                                                                        D88
   IF(B8.EQ.40) GOTO 36      *IF RES CONTROLLER COMMAND                  D88
   IF(B8.EQ.41) GOTO 36      *IF RES DRIVE COMMAND                       D88
   IF(B7.EQ.7777) GOTO 36    *IF INVALID CYLINDER NUMBER                 D88
   B13=6                     *NO RECOVERY MESSAGE                        D88
   IF(SB(52).EQ.0) GOTO 34   *IF NO RECOVERY ATTEMPTED                   D88
   B13=7                     *SUCCESSFUL RECOVERY MESSAGE                D88
   IF(SB.EQ.0) GOTO 34       *IF SUCCESSFUL RECOVERY                     D88
   B13=10                    *UNSUCCESSFUL RECOVERY MESSAGE              D88
34 MSG B13 (B7,B6,B5) TO LINE 10  *POST THE MESSAGE                      D88
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER             D88
*IF DEF,LSFMD,3 
   B5 = SB(7).AND.7760.RS.4      *SECTOR ADDRESS FROM DETAILED STATUS 
   MSG 23 (B7,B6,B5) TO LINE 11  *SMALL SECTOR ADDRESS
   B12 = B12 + 1
*                                                                        D88
/---------DISPLAY THE CYLINDER, TRACK, AND SECTOR ON A READ              D88
/---------CODED COMPARE ERROR.                                           D88
*                                                                        D88
36 IF(EC.AND.4077.NE.4031)GOTO 40  *IF NO RD CODED COMP ERR 
   B12=B12+1                   *UPDATE DISPLAY LINE NUMBER               D88
   MSG 11 (B7,B6,B5) TO LINE B12  *POST EXPECTED MESSAGE                 D88
*IF DEF,PFMD,1
   MSG 12 3 WORDS FROM IB(500) TO LINE B12+1  *POST ACTUAL
*IF DEF,SFMD,1
   MSG 12 3 WORDS FROM IB(1) TO LINE B12+1  *POST ACTUAL
*IF DEF,LSFMD,1 
   MSG 12 3 WORDS FROM IB(500) TO LINE B12+1  *POST ACTUAL
   B12=B12+2                     *UPDATE DISPLAY LINE NUMBER             D88
*                                                                        D88
/---------DISPLAY UP TO FOUR DATA ERRORS ON DATA BUFFER                  D88
/---------COMPARE ERRORS.                                                D88
*                                                                        D88
40 IF(EC.NE.1) GOTO 50       *IF NO DATA COMPARE ERRORS                  D88
   B12=B12+1                 *UPDATE DISPLAY LINE NUMBER                 D88
   B13=BA                    *SET DATA BUFFER INDEX                      D88
*IF DEF,SFMD,1
   IF(B8.EQ.24)B13=4         *IF READ CODED COMMAND                      D88
*IF DEF,LSFMD,1 
   IF(B8.EQ.24)B13=4         *IF READ CODED COMMAND 
   B14=0                     *INITIALIZE ERROR COUNTER                   D88
*                                                                        D88
/---------SEARCH FOR THE ERRORS IN THE DATA BUFFER.                      D88
*                                                                        D88
42 B15=IB(B13) XOR OB(B13)      *CHECK WORDS FOR A ERROR                 D88
   IF(B15.EQ.0) GOTO 44            *IF NO DATA ERROR                     D88
   MSG 13 (B13,OB(B13),IB(B13),B15) TO LINE B12  *POST ERROR             D88
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER             D88
   B14=B14+1                     *UPDATE ERROR COUNTER                   D88
   IF(B14.GE.4) GOTO 50          *IF FOUR ERRORS POSTED                  D88
*IF DEF,PFMD,2
44 B15=504                       *NORMAL WORD COUNT 
   IF(B8.EQ.26)B15=460           *IF SHORTRD COMMAND
*IF DEF,SFMD,2
44 B15=502                       *NORMAL WORD COUNT 
   IF(B8.EQ.26)B15=476           *IF SHORTRD COMMAND
*IF DEF,LSFMD,2 
44 B15=502                       *NORMAL WORD COUNT                      D88
   IF(B8.EQ.26)B15=476           *IF SHORTRD COMMAND                     D88
   GOTO 42 WHILE(B13+1 NE B15)   *LOOP TO CHECK DATA BUFFER              D88
*                                                                        D88
/---------DISPLAY STATUS BUFFER ERROR.                                   D88
*                                                                        D88
50 IF(EC.NE.2) GOTO 52       *IF NO DATA COMPARE ERRORS                  D88
   B15=OB(BA) XOR SB(BA)      *CHECK WORDS FOR A ERROR                   D88
   MSG 22 (BA,OB(BA),SB(BA),B15) TO LINE B12  *POST ERROR                D88
   B12=B12+1                     *UPDATE DISPLAY LINE NUMBER             D88
*                                                                        D88
/---------CHECK IF GENERAL, DETAILED STATUS TO BE DISPLAYED.             D88
*                                                                        D88
52 IF(SB.EQ.7777) GOTO 56    *IF INVALID GENERAL STATUS                  D88
   IF(SB(52).NE.0) GOTO 54   *IF RETRY COUNT NONZERO                     D88
   IF(SB.EQ.0) GOTO 56       *IF NO DETAILED STATUS                      D88
54 B12=B12+1                 *UPDATE DISPLAY LINE NUMBER                 D88
   MSG 14 TO LINE B12        *FIRST LINE OF STATUS DISPLAY               D88
   B12=B12+1                 *UPDATE DISPLAY LINE NUMBER                 D88
*                                                                        D88
/---------DISPLAY FIRST GENERAL STATUS AND DETAILED STATUS.              D88
*                                                                        D88
   B13=25                    *INDEX IF RETRIES DONE                      D88
   IF(SB(52).NE.0) GOSUB 70  *DISPLAY FIRST STATUS ON RETRY              D88
*                                                                        D88
/---------DISPLAY LAST GENERAL STATUS AND DETAILED STATUS.               D88
*                                                                        D88
   B13=0                     *INDEX FOR THE LAST STATUS                  D88
   IF(SB.NE.0) GOSUB 70      *DISPLAY THE LAST STATUS                    D88
56 B14=7777                  *PRESERVICE FORECAST GROUP FLAG
   EXIT TO 98G               *EXIT TO THE NEXT MODULE 
*                                                                        D88
/---------BUILD THE GENERAL AND DETAILED STATUS DISPLAY.                 D88
*                                                                        D88
70 MSG 15 5 WORDS FROM SB(B13+1) TO LINE B12  *WORDS 1-6                 D88
   B14=16                          *MESSAGE FOR FIRST STATUS             D88
   IF(B13.EQ.0) B14=17             *MESSAGE FOR LAST STATUS              D88
   MSG B14 5 WORDS FROM SB(B13+6) TO LINE B12+1  *WORDS 6-10             D88
   B12=B12+2                     *UPDATE DISPLAY LINE NUMBER             D88
   MSG 21 5 WORDS FROM SB(B13+20)TO LINE B12+1  *WORDS 16-20             D88
   IB(502)=SB(B13+15)                        *STATUS WORD 13             D88
   IB(503)=SB(B13+16)                        *STATUS WORD 14             D88
   IB(504)=SB(B13+17)                        *STATUS WORD 15             D88
   B14=SB(B13+13)                            *STATUS WORD 11             D88
   B15=SB(B13+14)                            *STATUS WORD 12             D88
   B13=SB(B13)                               *GENERAL STATUS             D88
   MSG 20 (B13,B14,B15,IB(502),IB(503),IB(504))TO LINE B12               D88
   B12=B12+3                     *UPDATE DISPLAY LINE NUMBER             D88
   RETURN                        *EXIT THE SUBROUTINE                    D88
   END 30                        *END OF THE MODULE                      D88
*IF DEF,PFMD,1
COMPILE                      *DH898F STATUS DISPLAY 
*IF DEF,SFMD,1
COMPILE                      *D8898F STATUS DISPLAY                      D88
*IF DEF,LSFMD,1 
COMPILE                      *DL898F STATUS DISPLAY 
*IF DEF,SFMD
   MODULE D8898G,FMDFT(7),LOCK                                           D88
***       D8898G - PROCESS GENERAL STATUS                                D88
**        D8898G - PROCESS GENERAL STATUS                                D88
*         D8898G - PROCESS GENERAL STATUS                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         THIS  MODULE WILL DETERMINE THE REASON THE GENERAL STATUS WAS  D88
*         NONZERO AFTER A OPERATION IN THE 7155 CONTROLLER.              D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF  THE  RETRY  COUNT IS ZERO, SET THE INDEX (B13) TO THE  D88
*             STATUS BUFFER TO ZERO, OTHERWISE  SET  THE  INDEX  TO  25  D88
*             OCTAL.                                                     D88
*         2.  IF THE GENERAL STATUS IS EQUAL TO 0000 OR 7777,  EXIT  TO  D88
*             MODULE D8898M.                                             D88
*         3.  IF THE GENERAL STATUS IS 0010 OR 2000, POST  THE  CORRECT  D88
*             MESSAGE.                                                   D88
*         4.  IF THE GENERAL STATUS IS 5020, EXIT TO MODULE D8898K.      D88
*         5.  IF  DETAILED  STATUS  WORD  1  IS EQUAL TO 7777, POST THE  D88
*             FORMAT MESSAGE GENERAL STATUS NONZERO,  BUT  NO  DETAILED  D88
*             STATUS.                                                    D88
*         6.  IF THE GENERAL STATUS NOT EQUAL TO 5000, EXIT  TO  MODULE  D88PTR4
*             D8898J.                                                    D88
*         7.  IF THE DETAILED STATUS INDICATES AN ILLEGAL PARAMETER  OR  D88
*             AN  ILLEGAL NUMBER OF PARAMETERS, POST THE CORRECT FORMAT  D88
*             MESSAGE.                                                   D88
*         8.  IF THE FUNCTION SENT THE CONTROLLER CAUSING THE ERROR WAS  D88
*             NOT A BUFFER READ  OR  BUFFER  WRITE  FUNCTION,  EXIT  TO  D88
*             MODULE D8898H.                                             D88
*         9.  DETERMINE THE CAUSE OF THE ERROR FOR THE BUFFER  READ  OR  D88
*             BUFFER WRITE FUNCTION AND POST THE CORRECT MESSAGE.        D88
*         10. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         11. EXIT TO MODULE D8898M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO MODULE D8898H IF THE CAUSE OF THE 5000 GENERAL STATUS  D88
*           HAS NOT BEEN DETERMINED BY THIS MODULE.                      D88
*         EXIT TO MODULE D8898J IF THE GENERAL STATUS IS NOT 0000,       D88
*           2000, 5000, OR 5020.                                         D88
*         EXIT TO MODULE D8898K IF FMD IS NOT READY AND SAFE.            D88
*         EXIT TO MODULE D8898M IF THE GENERAL STATUS IS 0000, 7777, OR  D88
*           IF THE CAUSE OF THE ERROR HAS BEEN POSTED IN THE DISPLAY     D88
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898H - CONTINUE PROCESSING 5000 GENERAL STATUS.              D88
*         D8898J - PROCESS 4400, 4600, 4700, AND 5200 GENERAL STATUS.    D88
*         D8898K - ISOLATE FMD FAULTS.                                   D88
*         D8898M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*         FLOWCHARTS-                                                    D88
*         *************************************************************  D88
*         *    ISOLATION FLOWCHART FOR THE GENERAL STATUS ERRORS.     *  D88
*         *                                                           *  D88
*         *         STEPS 1 THROUGH 31 ARE IN MODULE D8898G.          *  D88
*         *         STEPS 32 THROUGH 53 ARE IN MODULE D8898H.         *  D88
*         *         STEPS 54 THROUGH 70 ARE IN MODULE D8898I.         *  D88
*         *         STEPS 70 THROUGH 84 ARE IN MODULE D8898J.         *  D88
*         *                                                           *  D88
*         *    NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE       *  D88
*         *          TO MODULE D8898M.                                *  D88
*         *                                                           *  D88
*         *************************************************************  D88
*                                                                        D88
*         1.  IF THE RETRY COUNT IN THE STATUS BUFFER IS EQUAL TO ZERO   D88
*             SET THE STATUS BUFFER INDEX TO ZERO, OTHERWISE SET THE     D88
*             STATUS BUFFER INDEX TO 25 OCTAL.                           D88
*         2.  IF THE GENERAL STATUS IS EQUAL TO 7777 OCTAL, EXIT TO      D88
*             MODULE D8898M.                                             D88
*         3.  IF THE GENERAL STATUS IS EQUAL TO ZERO, EXIT TO MODULE     D88
*             D8898M.                                                    D88
*         4.  IF THE GENERAL STATUS IS EQUAL TO 0010 OCTAL, POST THE     D88
*             MESSAGE FMD UNIT RESERVED BY ANOTHER CONTROLLER.           D88
*         5.  IF THE GENERAL STATUS IS EQUAL TO 2000 OCTAL, POST THE     D88
*             MESSAGE CONTROLLER RESERVED BY ANOTHER MAINFRAME.          D88
*         6.  IF THE GENERAL STATUS IS EQUAL TO 5020 OCTAL, EXIT TO      D88
*             MODULE D8898K TO ISOLATE THE CAUSE OF THE DRIVE FAULT.     D88
*         7.  IF DETAILED STATUS WORD 1 IS EQUAL TO 7777 OCTAL, POST     D88
*             THE MESSAGE GENERAL STATUS NONZERO, BUT NO DETAILED        D88
*             STATUS.                                                    D88
*         8.  IF THE GENERAL STATUS IS NOT EQUAL TO 5000 OCTAL, GO TO    D88
*             STEP 71.                                                   D88
*         9.  IF BIT 3 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO,   D88
*             POST THE MESSAGE CONTROLWARE ILLEGAL PARAMETER ERROR.      D88
*         10. IF BIT 2 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO,   D88
*             POST THE MESSAGE CONTROLWARE ILLEGAL NUMBER OF             D88
*             PARAMETERS ERROR.                                          D88
*         11. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT     D88
*             EQUAL TO 43 OCTAL, GO TO STEP 12.                          D88
*         12. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT         D88
*             REGISTER FULL ERROR, OTHERWISE GO TO STEP 15.              D88
*         13. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT     D88
*             EQUAL TO 44 OCTAL, GO TO STEP 32.                          D88
*         14. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER   D88
*             FULL ERROR.                                                D88
*         15. IF BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL ACTIVE        D88
*             ERROR.                                                     D88
*         16. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DEADMAN TIMEOUT       D88
*             ERROR.                                                     D88
*         17. IF BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL RESERVED      D88
*             ERROR.                                                     D88
*         18. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER INPUT          D88
*             REGISTER FULL ERROR.                                       D88
*         19. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE     D88
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE ERROR.   D88
*         20. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR.      D88
*         21. IF BIT 10 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR.  D88
*         22. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR.   D88
*         23. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT         D88
*             REGISTER PARITY ERROR.                                     D88
*         24. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, EXIT TO MODULE D8898K TO ISOLATE THE CAUSE OF     D88
*             THE DRIVE FAULT.                                           D88
*         25. IF BIT 3 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER UP/DOWN COUNT         D88
*             NONZERO ERROR.                                             D88
*         26. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD     D88
*             ERROR.                                                     D88
*         27. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR             D88
*             INSTRUCTION TIMEOUT ERROR.                                 D88
*         28. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR.    D88
*         29. IF BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER NONCORRECTABLE        D88
*             STATUS ERROR.                                              D88
*         30. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK      D88
*             ERROR.                                                     D88
*         31. POST THE MESSAGE CONTROLLER ERROR CANNOT BE ISOLATED.      D88
*         32. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 54.                                       D88
*         33. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD ADD. FIELD ERROR WHILE       D88
*             RECOVERING DATA FIELD.                                     D88
*         34. IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED.      D88
*         35. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE NOT      D88
*             EQUAL TO ZERO, GO TO STEP 49.                              D88
*         36. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 14 OCTAL, POST THE MESSAGE FMD CYLINDER ADDRESS         D88
*             MISCOMPARE ERROR.                                          D88
*         37. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 12 OCTAL, POST THE MESSAGE FMD TRACK ADDRESS            D88
*             MISCOMPARE ERROR.                                          D88
*         38. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE EQUAL   D88
*             TO 30 OCTAL, GO TO STEP 40.                                D88
*         39. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT     D88
*             EQUAL TO 31 OCTAL, GO TO STEP 41.                          D88
*         40. IF BITS 10 AND 11 IN DETAILED STATUS WORD 1 ARE EQUAL      D88
*             TO ZERO, POST THE MESSAGE FMD TRACK EXPECTED TO BE         D88
*             FLAWED BUT WAS NOT, OTHERWISE GO TO STEP 43.               D88
*         41. IF BIT 10 IN DETAILED STATUS WORD 5 IS NOT EQUAL TO ZERO,  D88
*             POST THE MESSAGE FMD FACTORY FLAW MAP DETECTED.            D88
*         42. IF BIT 11 IN DETAILED STATUS WORD 5 IS NOT EQUAL TO ZERO,  D88
*             POST THE MESSAGE FMD TRACK FLAW DETECTED.                  D88
*         43. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 11 OCTAL, POST THE MESSAGE FMD SECTOR ADDRESS           D88
*             MISCOMPARE ERROR.                                          D88
*         44. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 10 OCTAL, POST THE MESSAGE CONTROLWARE ABNORMAL         D88
*             DETAILED STATUS.                                           D88
*         45. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR.      D88
*         46. IF BIT 10 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR.  D88
*         47. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR             D88
*             INSTRUCTION TIMEOUT ERROR.                                 D88
*         48. POST THE MESSAGE CONTROLLER ERROR CANNOT BE ISOLATED.      D88
*         49. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, EXIT TO MODULE D8898K TO ISOLATE THE CAUSE OF     D88
*             THE DRIVE FAULT.                                           D88
*         50. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE     D88
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE ERROR.   D88
*         51. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD     D88
*             ERROR.                                                     D88
*         52. IF BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER NONCORRECTABLE        D88
*             STATUS ERROR.                                              D88
*         53. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK      D88
*             ERROR, OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT     D88
*             ISOLATED.                                                  D88
*         54. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, GO TO STEP 56.                                    D88
*         55. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR,    D88
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED.  D88
*         56. IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED.      D88
*         57. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, EXIT TO MODULE D8898K TO ISOLATE THE CAUSE OF     D88
*             THE DRIVE FAULT.                                           D88
*         58. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE     D88
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC    D88
*             BYTE ERROR.                                                D88
*         59. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR.      D88
*         60. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR.   D88
*         61. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT         D88
*             REGISTER PARITY ERROR.                                     D88
*         62. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD     D88
*             ERROR.                                                     D88
*         63. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR             D88
*             INSTRUCTION TIMEOUT ERROR.                                 D88
*         64. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR.    D88
*         65. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK      D88
*             ERROR.                                                     D88
*         66. IF BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL ACTIVE        D88
*             ERROR.                                                     D88
*         67. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER DEADMAN TIMEOUT       D88
*             ERROR.                                                     D88
*         68. IF BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL RESERVED      D88
*             ERROR.                                                     D88
*         69. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER INPUT          D88
*             REGISTER FULL ERROR.                                       D88
*         70. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER   D88
*             FULL ERROR, OTHERWISE POST THE MESSAGE CONTROLLER ERROR    D88
*             NOT ISOLATED.                                              D88
*         71. IF THE GENERAL STATUS IS NOT EQUAL TO 4400 OCTAL, GO TO    D88
*             STEP 78.                                                   D88
*         72. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 77.                                       D88
*         73. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD ADDRESS FIELD SYNC BYTE      D88
*             ERROR.                                                     D88
*         74. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 14 OCTAL, POST THE MESSAGE FMD CYLINDER ADDRESS         D88
*             MISCOMPARE ERROR.                                          D88
*         75. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 12 OCTAL, POST THE MESSAGE FMD TRACK ADDRESS            D88
*             MISCOMPARE ERROR.                                          D88
*         76. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL    D88
*             TO 11 OCTAL, POST THE MESSAGE FMD SECTOR ADDRESS           D88
*             MISCOMPARE ERROR, OTHERWISE POST THE MESSAGE CONTROLLER    D88
*             ERROR NOT ISOLATED.                                        D88
*         77. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC BYTE ERROR,  D88
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED.  D88
*         78. IF THE GENERAL STATUS IS NOT EQUAL TO 4600 OCTAL, GO TO    D88
*             STEP 81.                                                   D88
*         79. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD ADDRESS FIELD CHECKWORD      D88
*             ERROR.                                                     D88
*         80. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD DATA FIELD CHECKWORD ERROR,  D88
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED.  D88
*         81. IF THE GENERAL STATUS IS EQUAL TO 4700 OCTAL, POST THE     D88
*             MESSAGE FMD ADDRESS FIELD CHECKWORD ERROR.                 D88
*         82. IF THE GENERAL STATUS IS NOT EQUAL TO 5200 OCTAL, POST     D88
*             THE MESSAGE CONTROLWARE ABNORMAL GENERAL STATUS.           D88
*         83. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD NONCORRECTABLE ADDRESS       D88
*             FIELD CHECKWORD ERROR.                                     D88
*         84. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD NONCORRECTABLE DATA FIELD    D88
*             CHECKWORD ERROR, OTHERWISE POST THE MESSAGE CONTROLLER     D88
*             ERROR NOT ISOLATED.                                        D88
*         85. EXIT TO MODULE D8898M.                                     D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT FMD UNIT RESERVED BY ANOTHER CONTROLLER.                       D88
1  FORMAT CONTROLLER RESERVED BY ANOTHER MAINFRAME.                      D88
2  FORMAT GENERAL STATUS NONZERO, BUT NO DETAILED STATUS.                D88
3  FORMAT CONTROLWARE ILLEGAL PARAMETER ERROR.                           D88
4  FORMAT CONTROLWARE ILLEGAL NUMBER OF PARAMETERS ERROR.                D88
5  FORMAT CONTROLLER ERROR NOT ISOLATED.                                 D88
6  FORMAT CONTROLLER BUFFER OUTPUT REGISTER FULL ERROR.                  D88
7  FORMAT CONTROLLER CHANNEL ACTIVE ERROR.                               D88
10 FORMAT CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR.                      D88
11 FORMAT CONTROLLER CHANNEL RESERVED ERROR.                             D88
12 FORMAT CONTROLLER BUFFER INPUT REGISTER FULL ERROR.                   D88
13 FORMAT CONTROLLER LOST DATA ERROR.                                    D88
14 FORMAT CONTROLLER SECTOR LENGTH ERROR.                                D88
15 FORMAT CONTROLLER WRITE VERIFY ERROR (SEE TRUE DISK ADD) 
16 FORMAT CONTROLLER BUFFER OUTPUT REGISTER PARITY ERROR.                D88
17 FORMAT CONTROLLER UP/DOWN COUNT NONZERO ERROR.                        D88
20 FORMAT CONTROLLER LOST CONTROL WORD ERROR.                            D88
21 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR.                D88
22 FORMAT CONTROLLER DATA PARITY ERROR.                                  D88
23 FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR.                        D88
24 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.                             D88
25 FORMAT FMD SYNC BYTE ERROR.                                           D88
26 FORMAT FMD CONTROLLER AND/OR DRIVE BUSY. 
27 FORMAT FMD DRIVE ERROR RATE THRESHOLD EXCEEDED.
*                                                                        D88
/---------INITIALIZE THE INDEX TO THE STATUS BUFFER.                     D88
*                                                                        D88
30 B13=0                     *INDEX IF NOT RECOVERY ATTEMPT              D88
   IF(SB(52).NE.0)B13=25     *INDEX IF RECOVERY ATTEMPTED                D88
*                                                                        D88
/---------CHECK FOR GENERAL STATUS OF 7777 OR 0000.                      D88
*                                                                        D88
   IF(SB(B13).EQ.7777) EXIT TO 98M  *IF INVALID STATUS                   D88
   IF(SB(B13).EQ.0) EXIT TO 98M     *IF NO STATUS ERROR                  D88
   B15=26                           *MESSAGE NUMBER 
   IF(SB(B13).EQ.2) GOTO 70         *FMD SUBSYSTEM BUSY 
   B15=0                            *MESSAGE NUMBER                      D88
   IF(SB(B13).EQ.10) GOTO 70        *DRIVE RESERVED                      D88
   B15=1                            *MESSAGE NUMBER                      D88
   IF(SB(B13).EQ.2000) GOTO 70      *IF CONTROLLER RESERVED              D88
   IF(SB(B13).EQ.5020) EXIT TO 98K  *IF DRIVE MALFUNCTION                D88
   B15=2                            *MESSAGE NUMBER                      D88
   IF(SB(B13+1).EQ.7777) GOTO 70    *IF NO DETAILED STATUS               D88
*                                                                        D88
/---------CHECK FOR GENERAL STATUS OF 5000.                              D88
*                                                                        D88
   IF(SB(B13).NE 5000) EXIT TO 98J  *NO 5000 GENERAL STATUS              D88
   B14=SB(B13+21)                   *DETAILED STATUS WORD 17             D88
   B15=3                            *MESSAGE NUMBER                      D88
   IF(SB(B13+3).AND.10.NE.0)GOTO 70  *ILLEGAL PARAMETER                  D88
   B15=4                            *MESSAGE NUMBER                      D88
   IF(SB(B13+3).AND.4.NE.0)GOTO 70  *NUMBER OF PARMETERS                 D88
   B15=27                           *MESSAGE NUMBER 
   IF(SB(B13+3).AND.2.NE.0)GOTO 70  *ERROR THRESHOLD
   B15=6                            *MESSAGE NUMBER                      D88
*                                                                        D88
/---------CHECK FOR BUFFER READ FUNCTION ISSUED.                         D88
*                                                                        D88
   IF(SB(B13+3).AND.7760.NE.1060)GOTO 40  *NOT BUFFER READ               D88
   IF(B14.AND.100.NE.0) GOTO 70     *BUFFER OUTPUT REGISTER              D88
   GOTO 42                                                               D88
*                                                                        D88
/---------CHECK FOR BUFFER WRITE FUNCTION ISSUED.                        D88
*                                                                        D88
40 IF(SB(B13+3).AND.7760.NE.1100)EXIT TO 98H  *IF NOT WRITE              D88
   IF(B14.AND.100.EQ.0) GOTO 70     *BUFFER OUTPUT REGISTER              D88
*                                                                        D88
/---------CHECK CONTROLLER INPUT CHANNEL 0 STATUS BITS.                  D88
*                                                                        D88
42 B15=7                            *MESSAGE NUMBER                      D88
   IF(B14.AND.4.NE.0) GOTO 70       *CHANNEL ACTIVE ERROR                D88
   B15=10                           *MESSAGE NUMBER                      D88
   IF(B14.AND.10.NE.0) GOTO 70      *DEADMAN TIMEOUT ERROR               D88
   B15=11                           *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *CHANNEL RESERVED ERROR              D88
   B15=12                           *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *BUFFER INPUT REGISTER               D88
   B15=25                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR                     D88
   B15=13                           *MESSAGE NUMBER                      D88
   IF(B14.AND.1000.NE.0) GOTO 70    *LOST DATA ERROR                     D88
   B15=14                           *MESSAGE NUMBER                      D88
   IF(B14.AND.2000.NE.0) GOTO 70    *SECTOR LENGTH ERROR                 D88
*                                                                        D88
/---------CHECK CONTROLLER INPUT CHANNEL 1 STATUS BITS.                  D88
*                                                                        D88
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16             D88
   B15=15                           *MESSAGE NUMBER                      D88
   IF(B14.AND.1.NE.0) GOTO 70       *WRITE VERIFY ERROR                  D88
   B15=16                           *MESSAGE NUMBER                      D88
   IF(B14.AND.2.NE.0) GOTO 70       *OUTPUT BUFFER PARITY                D88
   B15=17                           *MESSAGE NUMBER                      D88
   IF(B14.AND.10.NE.0) GOTO 70      *UP/DOWN NONZERO ERROR               D88
   B15=20                           *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD ERROR             D88
   B15=21                           *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT                 D88
   B15=22                           *MESSAGE NUMBER                      D88
   IF(B14.AND.100.NE.0) GOTO 70     *DATA PARITY ERROR                   D88
   B15=23                           *MESSAGE NUMBER                      D88
   IF(B14.AND.200.NE.0) GOTO 70     *NONCORRECTABLE ERROR                D88
   B15=24                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK ERROR              D88
   B15=5                            *MESSAGE NUMBER                      D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE                           D88
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.0) B14=1        *IF MESSAGE 0
   IF(B15.EQ.14) B14=1       *IF MESSAGE 14 
   IF(B15.EQ.15) B14=13      *IF MESSAGE 15 
   IF(B15.EQ.24) B14=3       *IF MESSAGE 24 
   IF(B15.EQ.25) B14=3       *IF MESSAGE 25 
   IF(B15.EQ.26) B14=3       *IF MESSAGE 26 
   IF(B15.EQ.27) B14=1       *IF MESSAGE 27 
   EXIT TO 98M               *EXIT THE MODULE                            D88
   END 30                    *END OF THE MODULE                          D88
COMPILE                      *D8898G PROCESS GENERAL STATUS              D88
   MODULE D8898H,FMDFT(7),LOCK                                           D88
***       D8898H - PROCESS GENERAL STATUS                                D88
**        D8898H - PROCESS GENERAL STATUS                                D88
*         D8898H - PROCESS GENERAL STATUS                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8898H  WILL DETERMINE THE REASON FOR THE 5000 GENERAL STATUS  D88
*         WHEN A ERROR HAS BEEN  DETECTED  WHILE  READING  THE  ADDRESS  D88
*         FIELD OF A SECTOR.                                             D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE ERROR WAS NOT DETECTED WHILE READING  THE  ADDRESS  D88
*             FIELD OF A SECTOR, EXIT TO MODULE D8898I.                  D88
*         2.  POST FORMAT MESSAGE 11  IF  A  ADDRESS  FIELD  ERROR  WAS  D88
*             DETECTED  WHILE  RECOVERING  A ERROR IN THE DATA FIELD OF  D88
*             THE SECTOR.                                                D88
*         3.  POST FORMAT MESSAGE 20 IF BIT 8 IN DETAILED STATUS WORD 9  D88
*             DECIMAL IS EQUAL TO ZERO.                                  D88
*         4.  IF BITS 0 - 3 OF DETAILED STATUS  WORD  1  ARE  EQUAL  TO  D88
*             ZERO, GO TO STEP 15.                                       D88
*         5.  POST  FORMAT  MESSAGE 12 IF A CYLINDER ADDRESS MISCOMPARE  D88
*             WAS DETECTED OR FORMAT MESSAGE  13  IF  A  TRACK  ADDRESS  D88
*             MISCOMPARE  WAS  DETECTED  IN  THE  ADDRESS  FIELD OF THE  D88
*             SECTOR.                                                    D88
*         6.  IF  A  READ FACTORY MAP OR READ UTILITY MAP WAS NOT BEING  D88
*             EXECUTED, GO TO STEP 8.                                    D88
*         7.  POST  FORMAT MESSAGE 14 IF THE FACTORY OR TRACK FLAW BITS  D88
*             WERE NOT SET IN THE ADDRESS FIELD OF THE  SECTOR.  GO  TO  D88
*             STEP 9.                                                    D88
*         8.  POST FORMAT MESSAGE 15 IF A FACTORY FLAW BIT WAS  SET  IN  D88
*             THE ADDRESS FIELD OF THE SECTOR OR FORMAT MESSAGE 16 IF A  D88PTR4
*             TRACK FLAW BIT WAS SET IN THE ADDRESS FIELD OF THE         D88
*             SECTOR.                                                    D88
*         9.  POST FORMAT MESSAGE 17 IF A SECTOR ADDRESS MISCOMPARE WAS  D88
*             FOUND IN THE ADDRESS FIELD OF THE SECTOR.                  D88
*         10. POST FORMAT MESSAGE 0 IF BITS 0 - 3  OF  DETAILED  STATUS  D88
*             WORD 1 DOES NOT EQUAL 10.                                  D88
*         11. POST FORMAT MESSAGE 2 IF CONTROLLER LOST DATA  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         12. POST  FORMAT  MESSAGE 3 IF SECTOR LENGTH VIOLATION STATUS  D88
*             IS ACTIVE.                                                 D88
*         13. POST  FORMAT  MESSAGE  4 IF PROCESSOR INSTRUCTION TIMEOUT  D88
*             STATUS IS ACTIVE.                                          D88
*         14. POST FORMAT MESSAGE 1.                                     D88
*         15. EXIT  TO  MODULE  D8898K IF THE FIXED MODULE DRIVE IS NOT  D88
*             READY AND SAFE.                                            D88
*         16. POST FORMAT MESSAGE 10 IF A SYNC BYTE ERROR WAS DETECTED.  D88
*         17. POST  FORMAT  MESSAGE  5  IF  LOST CONTROL WORD STATUS IS  D88
*             ACTIVE.                                                    D88
*         18. POST FORMAT MESSAGE 6 IF NONCORRECTABLE STATUS IS ACTIVE.  D88
*         19. POST FORMAT MESSAGE 7  IF  LOST  DRIVE  CLOCK  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         20. POST FORMAT MESSAGE 1.                                     D88
*         21. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         22. EXIT TO MODULE D8898M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO MODULE D8898I IF THE CAUSE OF THE 5000 GENERAL STATUS  D88
*           HAS NOT BEEN DETERMINED BY THIS MODULE.                      D88
*         EXIT TO MODULE D8898K IF FMD IS NOT READY AND SAFE.            D88
*         EXIT TO MODULE D8898M IF THE CAUSE OF THE 5000 GENERAL STATUS  D88
*           HAS BEEN DETERMINED AND THE CAUSE POSTED IN THE DISPLAY      D88
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898I - CONTINUE PROCESSING 5000 GENERAL STATUS.              D88
*         D8898K - ISOLATE FMD FAULTS.                                   D88
*         D8898M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT CONTROLWARE ABNORMAL DETAILED STATUS.                          D88
1  FORMAT CONTROLLER ERROR NOT ISOLATED.                                 D88
2  FORMAT CONTROLLER LOST DATA ERROR.                                    D88
3  FORMAT CONTROLLER SECTOR LENGTH ERROR.                                D88
4  FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR.                D88
5  FORMAT CONTROLLER LOST CONTROL WORD ERROR.                            D88
6  FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR.                        D88
7  FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.                             D88
10 FORMAT FMD ADDRESS FIELD SYNC BYTE ERROR.                             D88
11 FORMAT FMD ADD. FIELD ERROR WHILE RECOVERING DATA FIELD.              D88
12 FORMAT FMD CYLINDER ADDRESS MISCOMPARE ERROR.                         D88
13 FORMAT FMD TRACK ADDRESS MISCOMPARE ERROR.                            D88
14 FORMAT FMD TRACK EXPECTED TO BE FLAWED BUT WAS NOT.                   D88
15 FORMAT FMD FACTORY FLAW MAP DETECTED.                                 D88
16 FORMAT FMD TRACK FLAW DETECTED.                                       D88
17 FORMAT FMD SECTOR ADDRESS MISCOMPARE ERROR.                           D88
20 FORMAT FMD NOT SELECTED AND RESERVED.                                 D88
21 FORMAT CONTROLLER STATUS INDICATES FMD NOT READY 
*                                                                        D88
/---------CHECK FOR A ERROR IN THE ADDRESS FIELD.                        D88
*                                                                        D88
30 IF(B14.AND.1.EQ.0) EXIT TO 98I      *IF NOT ADDRESS FIELD             D88
   B15=11                              *MESSAGE NUMBER                   D88
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR                 D88
   B15=20                              *MESSAGE NUMBER                   D88
   IF(SB(B13+9).AND.400.EQ.0) GOTO 70  *DRIVE NOT SELECTED               D88
   IF(SB(B13+1).AND.17.EQ.0) GOTO 60   *IF NOT COMPARE ERROR             D88
   B15=12                              *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.14) GOTO 70  *CYLINDER MISCOMPARE              D88
   B15=13                              *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.12) GOTO 70  *TRACK MISCOMPARE                 D88
*                                                                        D88
/---------CHECK FOR READ FACTORY DATA FUNCTION ISSUED.                   D88
*                                                                        D88
   IF(SB(B13+3).AND.7760.EQ.600)GOTO 34  *IF READ FACTORY                D88
*                                                                        D88
/---------CHECK FOR READ UTILITY MAP FUNCTION ISSUED.                    D88
*                                                                        D88
   IF(SB(B13+3).AND.7760.NE.620)GOTO 40  *NOT READ UTILITY               D88
34 B15=14                                *MESSAGE NUMBER                 D88
   IF(SB(B13+5).AND.6000.EQ.0) GOTO 70  *NO FLAW BIT SET                 D88
   GOTO 50                                                               D88
40 B15=15                              *MESSAGE NUMBER                   D88
*                                                                        D88
/---------CHECK FOR A FLAW BIT SET IN THE ADDRESS FIELD.                 D88
*                                                                        D88
   IF(SB(B13+5).AND.2000.NE.0)GOTO 70  *FACTORY FLAW ERROR               D88
   B15=16                              *MESSAGE NUMBER                   D88
   IF(SB(B13+5).AND.4000.NE.0)GOTO 70  *TRACK FLAW ERROR                 D88
50 B15=17                              *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.11) GOTO 70  *SECTOR MISCOMPARE                D88
   B15=0                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.NE.10) GOTO 70  *ABNORMAL STATUS                  D88
   B15=2                               *MESSAGE NUMBER                   D88
   IF(B14.AND.1000.NE.0) GOTO 70       *LOST DATA ERROR                  D88
   B15=3                               *MESSAGE NUMBER                   D88
   IF(B14.AND.2000.NE.0) GOTO 70       *SECTOR LENGTH ERROR              D88
   B15=4                               *MESSAGE NUMBER                   D88
   IF(SB(B13+20).AND.40.NE.0) GOTO 70  *INSTRUCTION TIMEOUT              D88
   B15=1                               *MESSAGE NUMBER                   D88
   GOTO 70                                                               D88
*                                                                        D88
/---------CHECK FOR A STATUS ERROR ON I/O CHANNEL 1.                     D88
*                                                                        D88
60 B14=SB(B13+20)                   *DETAILED STATUS WORD 16             D88
   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 98K                      *GO PROCESS DRIVE FAULT 
64 B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *LOST DATA ERROR
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.2000.NE.0) GOTO 70    *SECTOR LENGTH ERROR
   B15=10                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR                     D88
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16             D88
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=5                            *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD                   D88
   B15=6                            *MESSAGE NUMBER                      D88
   IF(B14.AND.200.NE.0) GOTO 70     *NONCORRECTABLE ERROR                D88
   B15=7                            *MESSAGE NUMBER                      D88
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK                    D88
   B15=1                            *MESSAGE NUMBER                      D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE                           D88
* 
/---------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=0        *IF MESSAGE 2
   IF(B15.EQ.4) B14=0        *IF MESSAGE 4
   IF(B15.EQ.5) B14=3        *IF MESSAGE 5
   IF(B15.EQ.6) B14=0        *IF MESSAGE 6
   IF(B15.EQ.7) B14=3        *IF MESSAGE 7
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   EXIT TO 98M               *EXIT THE MODULE                            D88
   END 30                    *END OF THE MODULE                          D88
COMPILE                      *D8898H PROCESS GENERAL STATUS              D88
   MODULE D8898I,FMDFT(7),LOCK                                           D88
***       D8898I - PROCESS GENERAL STATUS                                D88
**        D8898I - PROCESS GENERAL STATUS                                D88
*         D8898I - PROCESS GENERAL STATUS                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8898I  WILL DETERMINE THE REASON FOR THE 5000 GENERAL STATUS  D88
*         WHEN A ERROR HAS BEEN DETECTED WHILE READING THE  DATA  FIELD  D88
*         OF A SECTOR.                                                   D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  GO TO STEP 4 IF BIT 1 IS SET IN DETAILED STATUS WORD 17.   D88
*         2.  POST  FORMAT  MESSAGE  1  IF  DATA PARITY ERROR STATUS IS  D88
*             ACTIVE.                                                    D88
*         3.  POST FORMAT MESSAGE 0.                                     D88
*         4.  POST FORMAT MESSAGE 17 IF BIT 8 IN DETAILED STATUS WORD 9  D88
*             DECIMAL IS EQUAL TO ZERO.                                  D88
*         5.  EXIT TO MODULE D8898K IF THE FIXED MODULE  DRIVE  IS  NOT  D88
*             READY AND SAFE.                                            D88
*         6.  POST FORMAT MESSAGE 16 IF A SYNC BYTE ERROR WAS DETECTED.  D88
*         7.  POST  FORMAT  MESSAGE 7 IF CONTROLLER LOST DATA STATUS IS  D88
*             ACTIVE.                                                    D88
*         8.  POST FORMAT MESSAGE 11 IF WRITE VERIFY STATUS IS ACTIVE.   D88
*         9.  POST FORMAT MESSAGE 12 IF BUFFER OUTPUT  REGISTER  PARITY  D88
*             STATUS IS ACTIVE.                                          D88
*         10. POST FORMAT MESSAGE 13 IF LOST  CONTROL  WORD  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         11. POST FORMAT MESSAGE 10 IF PROCESSOR  INSTRUCTION  TIMEOUT  D88
*             STATUS IS ACTIVE.                                          D88
*         12. POST FORMAT MESSAGE 14 IF DATA  PARITY  ERROR  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         13. POST FORMAT MESSAGE 15 IF  LOST  DRIVE  CLOCK  STATUS  IS  D88
*             ACTIVE.                                                    D88
*         14. POST FORMAT MESSAGE 3 IF CHANNEL ACTIVE STATUS IS ACTIVE.  D88
*         15. POST  FORMAT  MESSAGE 4 IF CHANNEL DEADMAN TIMEOUT STATUS  D88
*             IS ACTIVE.                                                 D88
*         16. POST  FORMAT  MESSAGE  5  IF  CHANNEL  RESERVED STATUS IS  D88
*             ACTIVE.                                                    D88
*         17. POST  FORMAT  MESSAGE  6  IF  BUFFER  INPUT REGISTER FULL  D88
*             STATUS IS ACTIVE.                                          D88
*         18. POST  FORMAT  MESSAGE  12  IF BUFFER OUTPUT REGISTER FULL  D88
*             STATUS IS ACTIVE.                                          D88
*         19. POST FORMAT MESSAGE 0.                                     D88
*         20. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         21. EXIT TO MODULE D8898M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO MODULE D8898K IF FMD IS NOT READY AND SAFE.            D88
*         EXIT TO MODULE D8898M IF THE CAUSE OF THE 5000 GENERAL STATUS  D88
*           HAS BEEN DETERMINED AND THE CAUSE POSTED IN THE DISPLAY      D88
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898K - ISOLATE FMD FAULTS.                                   D88
*         D8898M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT CONTROLLER ERROR NOT ISOLATED.                                 D88
1  FORMAT CONTROLLER PARITY ERROR ON PARAMETERS.                         D88
2  FORMAT CONTROLLER BUFFER OUTPUT REGISTER FULL ERROR.                  D88
3  FORMAT CONTROLLER CHANNEL ACTIVE ERROR.                               D88
4  FORMAT CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR.                      D88
5  FORMAT CONTROLLER CHANNEL RESERVED ERROR.                             D88
6  FORMAT CONTROLLER BUFFER INPUT REGISTER FULL ERROR.                   D88
7  FORMAT CONTROLLER LOST DATA ERROR.                                    D88
10 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR.                D88
11 FORMAT CONTROLLER WRITE VERIFY ERROR (SEE TRUE DISK ADD) 
12 FORMAT CONTROLLER BUFFER OUTPUT REGISTER PARITY ERROR.                D88
13 FORMAT CONTROLLER LOST CONTROL WORD ERROR.                            D88
14 FORMAT CONTROLLER DATA PARITY ERROR.                                  D88
15 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.                             D88
16 FORMAT FMD DATA FIELD SYNC BYTE ERROR.                                D88
17 FORMAT FMD NOT SELECTED AND RESERVED.                                 D88
*                                                                        D88
/---------CHECK FOR A DATA FIELD TYPE ERROR.                             D88
*                                                                        D88
30 IF(B14.AND.2.NE.0) GOTO 34          *IF DATA FIELD ERROR              D88
   B15=1                               *MESSAGE NUMBER                   D88
   IF(SB(B13+20).AND.100.NE.0)GOTO 70  *PARAM PARITY ERROR               D88
   B15=0                               *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
34 B15=17                              *MESSAGE NUMBER                   D88
   IF(SB(B13+9).AND.400.EQ.0)GOTO 70   *DRIVE NOT SELECTED               D88
*                                                                        D88
/---------CHECK CONTROLLER INPUT CHANNEL 1 STATUS BITS.                  D88
*                                                                        D88
   IF(SB(B13+20).AND.4.NE.0) EXIT TO 98K  *ISOLATE FMD FAULT             D88
   B15=16                           *MESSAGE NUMBER 
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR                     D88
   B15=7                            *MESSAGE NUMBER                      D88
   IF(B14.AND.1000.NE.0) GOTO 70    *LOST DATA ERROR                     D88
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16             D88
   B15=11                           *MESSAGE NUMBER                      D88
   IF(B14.AND.1.NE.0) GOTO 70       *WRITE VERIFY ERROR                  D88
   B15=12                           *MESSAGE NUMBER                      D88
   IF(B14.AND.2.NE.0) GOTO 70       *BUFFER OUTPUT REG. P.E.             D88
   B15=13                           *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD ERROR             D88
   B15=10                           *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT                 D88
   B15=14                           *MESSAGE NUMBER                      D88
   IF(B14.AND.100.NE.0) GOTO 70     *DATA PARITY ERROR                   D88
   B15=15                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK                    D88
*                                                                        D88
/---------CHECK CONTROLLER INPUT CHANNEL 0 STATUS BITS.                  D88
*                                                                        D88
   B14=SB(B13+21)                   *DETAILED STATUS WORD 17             D88
   B15=3                            *MESSAGE NUMBER                      D88
   IF(B14.AND.4.NE.0) GOTO 70       *CHANNEL ACTIVE ERROR                D88
   B15=4                            *MESSAGE NUMBER                      D88
   IF(B14.AND.10.NE.0) GOTO 70      *DEADMAN TIMEOUT ERROR               D88
   B15=5                            *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *CHANNEL RESERVED ERROR              D88
   B15=6                            *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *BUFFER INPUT REGISTER               D88
   B15=2                            *MESSAGE NUMBER                      D88
   IF(B14.AND.100.NE.0) GOTO 70     *BUFFER OUTPUT REGISTER              D88
   B15=0                            *MESSAGE NUMBER                      D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.11) B14=11      *IF MESSAGE 11 
   IF(B15.EQ.15) B14 = 3     *IF MESSAGE 15 
   IF(B15.EQ.16) B14=3       *IF MESSAGE 16 
   IF(B15.EQ.17) B14=3       *IF MESSAGE 17 
   EXIT TO 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *D8898I PROCESS GENERAL STATUS              D88
   MODULE D8898J,FMDFT(7),LOCK                                           D88
***       D8898J - PROCESS GENERAL STATUS                                D88
**        D8898J - PROCESS GENERAL STATUS                                D88
*         D8898J - PROCESS GENERAL STATUS                                D88
*         -------------------------------                                D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8898J  WILL  DETERMINE THE CAUSE OF THE 4400B, 4600B, 4700B,  D88
*         AND 5200B GENERAL STATUS ERRORS WHICH OCCURRED WHILE  READING  D88
*         OR WRITING A SECTOR ON THE 885 DRIVE.                          D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  GO TO STEP 10 IF THE GENERAL STATUS IS NOT 4400 OCTAL.     D88
*         2.  GO  TO STEP 8 IF BIT 0 IS NOT SET IN DETAILED STATUS WORD  D88
*             17 DECIMAL.                                                D88
*         3.  POST FORMAT MESSAGE 2 IF A SYNC BYTE ERROR WAS DETECTED.   D88
*         4.  POST FORMAT MESSAGE 3 IF A  CYLINDER  ADDRESS  MISCOMPARE  D88
*             WAS DETECTED.                                              D88
*         5.  POST FORMAT MESSAGE 4 IF A TRACK ADDRESS  MISCOMPARE  WAS  D88
*             DETECTED.                                                  D88
*         6.  POST FORMAT MESSAGE 5 IF A SECTOR ADDRESS MISCOMPARE  WAS  D88
*             DETECTED.                                                  D88
*         7.  POST FORMAT MESSAGE 0.                                     D88
*         8.  POST  FORMAT MESSAGE 6 IF BIT 1 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         9.  POST FORMAT MESSAGE 1.                                     D88
*         10. GO TO STEP 14 IF THE GENERAL STATUS IS NOT 4600 OCTAL.     D88
*         11. POST  FORMAT MESSAGE 7 IF BIT 0 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         12. POST FORMAT MESSAGE 10 IF BIT 1 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         13. POST FORMAT MESSAGE 1.                                     D88
*         14. POST FORMAT MESSAGE 7  IF  THE  GENERAL  STATUS  IS  4700  D88
*             OCTAL.                                                     D88
*         15. POST FORMAT MESSAGE 0 IF THE GENERAL STATUS IS  NOT  5200  D88
*             OCTAL.                                                     D88
*         16. POST FORMAT MESSAGE 11 IF BIT 0 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         17. POST FORMAT MESSAGE 12 IF BIT 1 IS SET IN DETAILED STATUS  D88
*             WORD 17 DECIMAL.                                           D88
*         18. POST FORMAT MESSAGE 1.                                     D88
*         19. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         20. EXIT TO MODULE D8898M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT WILL ALWAYS BE MADE TO MODULE D8898M WITH THE PRESERVICE 
*           FORECAST GROUP NUMBER IN THE B14 REGISTER.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT CONTROLWARE ABNORMAL GENERAL STATUS.                           D88
1  FORMAT CONTROLLER ERROR NOT ISOLATED.                                 D88
2  FORMAT FMD ADDRESS FIELD SYNC BYTE ERROR.                             D88
3  FORMAT FMD CYLINDER ADDRESS MISCOMPARE ERROR.                         D88
4  FORMAT FMD TRACK ADDRESS MISCOMPARE ERROR.                            D88
5  FORMAT FMD SECTOR ADDRESS MISCOMPARE ERROR.                           D88
6  FORMAT FMD DATA FIELD SYNC BYTE ERROR.                                D88
7  FORMAT FMD ADDRESS FIELD CHECKWORD ERROR.                             D88
10 FORMAT FMD DATA FIELD CHECKWORD ERROR.                                D88
11 FORMAT FMD NONCORRECTABLE ADDRESS FIELD CHECKWORD ERROR.              D88
12 FORMAT FMD NONCORRECTABLE DATA FIELD CHECKWORD ERROR.                 D88
*                                                                        D88
/---------CHECK GENERAL STATUS FOR THE TYPE OF ERROR.                    D88
*                                                                        D88
30 B14=SB(B13+21)                   *DETAILED STATUS WORD 17             D88
   IF(SB(B13).NE.4400) GOTO 50      *NOT 4400 GENERAL STATUS             D88
*                                                                        D88
/         PROCESS 4400 OCTAL GENERAL STATUS ERROR.                       D88
*                                                                        D88
   IF(B14.AND.1.EQ.0) GOTO 40          *IF NOT ADDRESS FIELD             D88
   B15=2                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.0) GOTO 70   *SYNC BYTE ERROR                  D88
   B15=3                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.14) GOTO 70  *CYLINDER ADDRESS                 D88
   B15=4                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.12) GOTO 70  *TRACK ADDRESS                    D88
   B15=5                               *MESSAGE NUMBER                   D88
   IF(SB(B13+1).AND.17.EQ.11) GOTO 70  *SECTOR ADDRESS                   D88
   B15=0                               *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
40 B15=6                               *MESSAGE NUMBER                   D88
   IF(B14.AND.1.NE.0) GOTO 70          *DATA FIELD ERROR                 D88
   B15=1                               *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
50 IF(SB(B13).NE.4600) GOTO 60         *NOT 4600 STATUS                  D88
*                                                                        D88
/---------PROCESS 4600 OCTAL GENERAL STATUS ERROR.                       D88
*                                                                        D88
   B15=7                               *MESSAGE NUMBER                   D88
   IF(B14.AND.1.NE.0) GOTO 70          *ADDRESS FIELD ERROR              D88
   B15=10                              *MESSAGE NUMBER                   D88
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR                 D88
   B15=1                               *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
*                                                                        D88
/---------PROCESS 4700 OCTAL GENERAL STATUS ERROR.                       D88
*                                                                        D88
60 B15=7                               *MESSAGE NUMBER                   D88
   IF(SB(B13).EQ.4700) GOTO 70         *IF 4700 STATUS                   D88
*                                                                        D88
/---------PROCESS 5200 OCTAL GENERAL STATUS ERROR.                       D88
*                                                                        D88
   B15=0                               *MESSAGE NUMBER                   D88
   IF(SB(B13).NE.5200) GOTO 70         *NOT 5200 STATUS                  D88
   B15=11                              *MESSAGE NUMBER                   D88
   IF(B14.AND.1.NE.0) GOTO 70          *ADDRESS FIELD                    D88
   B15=12                              *MESSAGE NUMBER                   D88
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR                 D88
   B15=1                               *MESSAGE NUMBER                   D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *D8898J PROCESS GENERAL STATUS              D88
   MODULE D8898K,FMDFT(7),LOCK                                           D88
***       D8898K - ISOLATE DRIVE FAULT                                   D88
**        D8898K - ISOLATE DRIVE FAULT                                   D88
*         D8898K - ISOLATE DRIVE FAULT                                   D88
*         ----------------------------                                   D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8898K  WILL  DETERMINE  THE CAUSE FOR THE FAULT IN THE FIXED  D88
*         MODULE DRIVE.                                                  D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF  THE  GENERAL STATUS IS EQUAL TO 7777 OR 0000, EXIT TO  D88
*             MODULE D8898M.                                             D88
*         2.  POST  FORMAT  MESSAGE  0 IF THE FIXED MODULE DRIVE IS NOT  D88
*             SELECTED AND RESERVED.                                     D88
*         3.  IF  THE  GENERAL  STATUS IS NOT EQUAL TO 5020, GO TO STEP  D88
*             21.                                                        D88
*         4.  IF  BITS 0-7 OF DETAILED STATUS WORD 13 DECIMAL ARE EQUAL  D88
*             TO 000 OR 377, GO TO STEP 21.                              D88
*         5.  POST FORMAT  MESSAGE  1  IF  THE STATUS VALID BIT  IS NOT  D88PTR4
*             ACTIVE IN STATUS WORD 12 DECIMAL.                          D88
*         6.  POST  FORMAT  MESSAGE  2 IF BITS 00-07 OF DETAILED STATUS  D88
*             WORD 2 IS EQUAL TO BITS 00-07 OF DETAILED STATUS WORD  12  D88
*             DECIMAL.                                                   D88
*         7.  POST FORMAT MESSAGE 3 IF BITS 0-7 OF DETAILED STATUS WORD  D88
*             12 DECIMAL IS EQUAL TO 216 OCTAL.                          D88
*         8.  GO TO STEP 21 IF BIT 3 (DRIVE READY AND SAFE) IS NOT  SET  D88
*             IN DETAILED STATUS WORD 12 DECIMAL.                        D88
*         9.  POST FORMAT MESSAGE 4 IF THE COMMAND ISSUED TO THE  DRIVE  D88
*             IN DETAILED STATUS WORD 13 DECIMAL IS EQUAL TO 40 THROUGH  D88
*             46 HEX.                                                    D88
*         10. POST FORMAT MESSAGE 11 IF THE COMMAND ISSUED TO THE DRIVE  D88
*             IN DETAILED STATUS WORD 13 DECIMAL IS NOT EQUAL TO 48  OR  D88
*             4A HEX.                                                    D88
*         11. POST FORMAT MESSAGE 5 IF BIT 3 (DRIVE OFF  LINE)  IS  NOT  D88
*             ACTIVE  IN  DETAILED  STATUS  WORD  15 DECIMAL.            D88
*         12. IF BIT 4 (WRITE/READ  STATUS  ERROR)  IS  NOT  ACTIVE  IN  D88
*             DETAILED STATUS WORD 15 DECIMAL, GO TO STEP 15.            D88
*         13. IF BIT 3 (WRITE/READ STATUS ERROR) IS ACTIVE IN  DETAILED  D88
*             STATUS WORD 12 DECIMAL, GO TO STEP 21.                     D88
*         14. POST FORMAT MESSAGE 6.                                     D88
*         15. IF  BIT  5  (DRIVE  CHECK  STATUS ERROR) IS NOT ACTIVE IN  D88
*             DETAILED STATUS WORD 15 DECIMAL, GO TO STEP 18.            D88
*         16. IF BIT 5 (DRIVE CHECK STATUS ERROR) IS ACTIVE IN DETAILED  D88
*             STATUS WORD 12 DECIMAL, GO TO STEP 21.                     D88
*         17. POST FORMAT MESSAGE 7.                                     D88
*         18. POST FORMAT MESSAGE 11 IF  BIT  6  (ACCESS  CHECK  STATUS  D88
*             ERROR) IS NOT ACTIVE IN DETAILED STATUS WORD 15 DECIMAL.   D88
*         19. IF BIT 00  (ACCESS  CHECK  STATUS  ERROR)  IS  ACTIVE  IN  D88
*             DETAILED STATUS WORD 12 DECIMAL, GO TO STEP 21.            D88
*         20. POST FORMAT MESSAGE 10.                                    D88
*         21. IF  THE  GENERAL  STATUS  IS EQUAL TO 7777 EXIT TO MODULE  D88
*             D8898M.                                                    D88
*         22. POST  FORMAT  MESSAGE  2 IF BITS 00-07 OF DETAILED STATUS  D88
*             WORD 2 IS EQUAL TO BITS 00-07 OF DETAILED STATUS WORD  12  D88
*             DECIMAL.                                                   D88
*         23. POST FORMAT MESSAGE 3 IF BITS 0-7 OF DETAILED STATUS WORD  D88
*             12 DECIMAL IS EQUAL TO 216 OCTAL.                          D88
*         24. EXIT TO MODULE D8898L IF BIT 0 (ACCESS CHECK STATUS ERROR  D88
*             IS NOT SET IN DETAILED STATUS WORD 12 DECIMAL.             D88
*         25. POST FORMAT MESSAGE 12 IF BIT  1  (FMD  SERVO  OFF  TRACK  D88
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL.        D88
*         26. POST FORMAT MESSAGE 13  IF  BIT  2  (FMD  SEEK  OVERSHOOT  D88
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL.        D88
*         27. POST FORMAT MESSAGE 14 IF BIT 3 (FMD SERVO TIMEOUT ERROR)  D88
*             IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL.               D88
*         28. POST FORMAT MESSAGE 15.                                    D88
*         29. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         30. EXIT TO MODULE D8898M.
*         30. EXIT TO MODULE D8898M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         B13 CONTAINS THE INDEX TO THE STATUS BUFFER.                   D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO MODULE D8898L IF THE CAUSE OF THE FAULT IN THE DRIVE   D88
*           HAS NOT BEEN DETERMINED.                                     D88
*         EXIT TO MODULE D8898M IF THE CAUSE OF THE FAULT IN THE DRIVE   D88
*           WAS DETERMINED WITH THE PRESERVICE FORECAST GROUP NUMBER
*           IN THE B14 REGISTER.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898L - ISOLATE DRIVE FAULT.                                  D88
*         D8898M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*         FLOWCHARTS-                                                    D88
*         *************************************************************  D88
*         *      ISOLATION FLOWCHART FOR THE FIXED MODULE DRIVE.      *  D88
*         *                                                           *  D88
*         *         STEPS 1 THROUGH 26 ARE IN MODULE D8898K.          *  D88
*         *         STEPS 26 THROUGH 46 ARE IN MODULE D8898L.         *  D88
*         *                                                           *  D88
*         *      NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE     *  D88
*         *            TO MODULE D8898M.                              *  D88
*         *                                                           *  D88
*         *************************************************************  D88
*                                                                        D88
*         1.  IF GENERAL STATUS IS EQUAL TO 7777 OCTAL, GO TO STEP 20.   D88
*         2.  IF GENERAL STATUS IS EQUAL TO 0000 OCTAL, GO TO STEP 20.   D88
*         3.  IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED.      D88
*         4.  IF GENERAL STATUS IS NOT EQUAL TO 5020 OCTAL, GO TO STEP   D88
*             20.                                                        D88
*         5.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL     D88
*             ARE EQUAL TO ZERO, GO TO STEP 20.                          D88
*         6.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL     D88
*             ARE EQUAL TO 377 OCTAL, GO TO STEP 20.                     D88
*         7.  IF BIT 1 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE FMD STATUS VALID NOT ACTIVE.        D88
*         8.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 2 DECIMAL      D88
*             ARE EQUAL BITS 0 THROUGH 7 OF DETAILED STATUS WORD 12      D88
*             DECIMAL, POST THE MESSAGE CONTROLLER BUS OUT PARITY        D88
*             ERROR.                                                     D88
*         9.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 12 DECIMAL     D88
*             ARE EQUAL TO 216 OCTAL, POST THE MESSAGE FMD DECODE        D88
*             PARITY ERROR OR ILLEGAL DECODE.                            D88
*         10. IF BIT 3 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 20.                                       D88
*         11. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL     D88
*             ARE EQUAL TO 100, 101, 102, 103, 104, 105, OR 106 OCTAL,   D88
*             POST THE MESSAGE FMD BUS IN DATA ERROR.                    D88
*         12. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL     D88
*             ARE NOT EQUAL TO 110 OR 112 OCTAL, POST THE MESSAGE FMD    D88
*             FAULT CANNOT BE ISOLATED.                                  D88
*         13. IF BIT 3 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE FMD STATUS INDICATES DRIVE OFF      D88
*             LINE.                                                      D88
*         14. IF BIT 4 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 16.                                       D88
*         15. IF BIT 3 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, GO TO STEP 20, OTHERWISE POST THE MESSAGE FMD     D88
*             WRITE/READ STATUS ERROR ON BUS IN STATUS.                  D88
*         16. IF BIT 5 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 18.                                       D88
*         17. IF BIT 5 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, GO TO STEP 20, OTHERWISE POST THE MESSAGE FMD     D88
*             DRIVE CHECK STATUS ERROR ON BUS IN STATUS.                 D88
*         18. IF BIT 6 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.       D88
*         19. IF BIT 0 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, GO TO STEP 20, OTHERWISE POST THE MESSAGE FMD     D88
*             ACCESS CHECK STATUS ERROR ON BUS IN STATUS.                D88
*         20. IF DETAILED STATUS WORD 1 IS EQUAL TO 7777, EXIT TO        D88
*             MODULE D8898M.                                             D88
*         21. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 2 DECIMAL      D88
*             ARE EQUAL BITS 0 THROUGH 7 OF DETAILED STATUS WORD 12      D88
*             DECIMAL, POST THE MESSAGE CONTROLLER BUS OUT PARITY        D88
*             ERROR.                                                     D88
*         22. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 12 DECIMAL     D88
*             ARE EQUAL TO 216 OCTAL, POST THE MESSAGE FMD DECODE        D88
*             PARITY ERROR OR ILLEGAL DECODE.                            D88
*         23. IF BIT 0 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 27.                                       D88
*         24. IF BIT 1 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD SERVO OFF TRACK ERROR.       D88
*         25. IF BIT 2 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD SEEK OVERSHOOT ERROR.        D88
*         26. IF BIT 3 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD SEEK TIMEOUT ERROR,          D88
*             OTHERWISE POST THE MESSAGE FMD ACCESS CHECK ERROR CANNOT   D88
*             BE ISOLATED.                                               D88
*         27. IF BIT 3 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO    D88
*             ZERO, GO TO STEP 39.                                       D88
*         28. IF BIT 4 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD HEAD SHORT ERROR.            D88
*         29. IF BIT 5 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD INDEX CHECK ERROR.           D88
*         30. IF BIT 6 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD CONTROL ERROR.               D88
*         31. IF BIT 7 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD WRITE TRANSITION ERROR.      D88
*         32. IF BIT 8 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD WRITE CURRENT ERROR.         D88
*         33. IF BIT 9 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD MULTILPE HEAD ERROR.         D88
*         34. IF BIT 10 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL  D88
*             TO ZERO, POST THE MESSAGE FMD WRITE OVERRUN ERROR.         D88
*         35. IF BIT 11 IN DETAILED STATUS WORD 11 DECIMAL IS EQUAL TO   D88
*             ZERO, GO TO STEP 37.                                       D88
*         36. IF BIT 4 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD NOT WRITE ENABLED, OTHERWISE    D88
*             POST THE MESSAGE FMD CAPABLE ENABLE ERROR.                 D88
*         37. IF BIT 2 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD WRITE WHILE IN OFFSET        D88
*             ERROR.                                                     D88
*         38. IF BIT 3 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD WRITE OR READ AND NO         D88
*             CONTROL SELECT ERROR, OTHERWISE POST THE MESSAGE FMD       D88
*             WRITE/READ ERROR CANNOT BE ISOLATED.                       D88
*         39. IF BIT 5 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO    D88
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.       D88
*         40. IF BIT 1 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD START SWITCH NOT ON.            D88
*         41. IF BIT 0 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD DRIVE MOTOR NOT AT SPEED.       D88
*         42. IF BIT 2 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD AIR SWITCH NOT MADE.            D88
*         43. IF BIT 3 IN DETAILED STATUS WORD 2 DECIMAL IS NOT EQUAL    D88
*             TO ZERO, POST THE MESSAGE FMD SEQUENCE ERROR LATCH ERROR.  D88
*         44. IF BIT 2 IN DETAILED STATUS WORD 7 DECIMAL IS EQUAL TO     D88
*             ZERO, POST THE MESSAGE FMD HDA SEQUENCE NOT COMPLETE.      D88
*         45. IF BIT 6 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD SECTOR COMPARE ERROR.        D88
*         46. IF BIT 6 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL   D88
*             TO ZERO, POST THE MESSAGE FMD SECTOR COMPARE ERROR,        D88
*             OTHERWISE POST THE MESSAGE FMD DRIVE CHECK ERROR CANNOT    D88
*             BE ISOLATED.                                               D88
*         47. EXIT TO MODULE D8898M.                                     D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT FMD NOT SELECTED AND RESERVED.                                 D88
1  FORMAT FMD STATUS VALID NOT ACTIVE.                                   D88
2  FORMAT CONTROLLER BUS OUT PARITY ERROR.                               D88
3  FORMAT FMD DECODE PARITY ERROR OR ILLEGAL DECODE.                     D88
4  FORMAT FMD BUS IN DATA ERROR.                                         D88
5  FORMAT FMD STATUS INDICATES DRIVE OFF LINE.                           D88
6  FORMAT FMD WRITE/READ STATUS ERROR ON BUS IN STATUS.                  D88
7  FORMAT FMD DRIVE CHECK STATUS ERROR ON BUS IN STATUS.                 D88
10 FORMAT FMD ACCESS CHECK STATUS ERROR ON BUS IN STATUS.                D88
11 FORMAT FMD FAULT CANNOT BE ISOLATED.                                  D88
12 FORMAT FMD SERVO OFF TRACK ERROR.                                     D88
13 FORMAT FMD SEEK OVERSHOOT ERROR.                                      D88
14 FORMAT FMD SEEK TIMEOUT ERROR.                                        D88
15 FORMAT FMD ACCESS CHECK ERROR CANNOT BE ISOLATED.                     D88
*                                                                        D88
/---------CHECK THE GENERAL STATUS WORD.                                 D88
*                                                                        D88
30 IF(SB(B13).EQ.7777) GOTO 54    *NO GENERAL STATUS                     D88
   IF(SB(B13).EQ.0) GOTO 54       *GENERAL STATUS IS ZERO                D88
*                                                                        D88
/---------CHECK FOR THE DRIVE SELECTED AND RESERVED.                     D88
*                                                                        D88
   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                                                                 D88
   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             D88
   IF(SB(B13+15).AND.377.EQ.377)GOTO 52  *NO DRIVE STATUS                D88
*                                                                        D88
/---------CHECK FOR STATUS VALID RECEIVED FROM THE DRIVE.                D88
*                                                                        D88
   B15=1                              *MESSAGE NUMBER                    D88
   IF(SB(B13+16).AND.2.EQ.0) GOTO 70  *IF NO STATUS VALID                D88
*                                                                        D88
/---------CHECK FOR ECHO COMMAND OR ECHO BUS MODE ACTIVE.                D88
*                                                                        D88
   B14=SB(B13+14) AND 377           *DETAILED STATUS WORD 12             D88
   B15=2                                *MESSAGE NUMBER                  D88
   IF(SB(B13+2).AND.377.EQ.B14)GOTO 70  *IF ECHO BUS MODE                D88
   B15=3                                *MESSAGE NUMBER                  D88
   IF(B14.EQ.216) GOTO 70               *ECHO COMMAND MODE               D88
*                                                                        D88
/---------CHECK FOR THE DRIVE READY AND SAFE.                            D88
*                                                                        D88
   IF(SB(B13+16).AND.10.EQ.0)GOTO 54  *IF NOT READY AND SAFE             D88
*                                                                        D88
/---------CHECK FOR BUS IN ERROR FOR THE COMMAND ISSUED.                 D88
*                                                                        D88
   B14=SB(B13+15).AND.377           *DETAILED STATUS WORD 13             D88
   IF(B14.LT.100) GOTO 34           *IF COMMAND 00-3F HEX.               D88
   B15=4                            *MESSAGE NUMBER                      D88
   IF(B14.LE.106) GOTO 70           *IF COMMAND 40-46 HEX.               D88
*                                                                        D88
/---------CHECK IF 48 OR 4A COMMAND ISSUED.                              D88
*                                                                        D88
34 IF(B14.LT.110) GOTO 52           *IF NOT 48 HEX. COMMAND              D88
   IF(B14.GT.112) GOTO 52           *IF NOT 48, 4A COMMAND               D88
*                                                                        D88
/---------CHECK FOR ON LINE STATUS ACTIVE IN BUS IN STATUS.              D88
*                                                                        D88
   B15=5                              *MESSAGE NUMBER                    D88
   IF(SB(B13+17).AND.10.EQ.0)GOTO 70  *IF ON LINE NOT ACTIVE             D88
   B14=SB(B13+14)                   *DETAILED STATUS WORD 12             D88
*                                                                        D88
/---------CHECK READ/WRITE ERROR STATUS ON BUS IN.                       D88
*                                                                        D88
   IF(SB(B13+17).AND.20.EQ.0)GOTO 46  *NOT READ/WRITE ERROR              D88
   IF(B14.AND.10.NE.0) GOTO 54        *READ/WRITE ERROR                  D88
   B15=6                              *MESSAGE NUMBER                    D88
   GOTO 70                            *GO TO POST MESSAGE                D88
*                                                                        D88
/---------CHECK DRIVE CHECK ERROR STATUS ON BUS IN.                      D88
*                                                                        D88
46 IF(SB(B13+17).AND.40.EQ.0)GOTO 50  *NOT DRIVE CHECK ERROR             D88
   IF(B14.AND.40.NE.0) GOTO 54        * DRIVE CHECK ERROR                D88
   B15=7                              *MESSAGE NUMBER                    D88
   GOTO 70                            *GO TO POST MESSAGE                D88
*                                                                        D88
/---------CHECK ACCESS CHECK ERROR STATUS ON BUS IN.                     D88
*                                                                        D88
50 IF(SB(B13+17).AND.100.EQ.0)GOTO 52  *NOT ACCESS CHECK ER.             D88
   IF(B14.AND.1.NE.0) GOTO 54          *ACCESS CHECK ERROR               D88
   B15=10                              *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
52 B15=11                              *MESSAGE NUMBER                   D88
   GOTO 70                             *GO TO POST MESSAGE               D88
*                                                                        D88
/---------CHECK FOR DETAILED STATUS IN THE STATUS BUFFER.                D88
*                                                                        D88
54 IF(SB(B13+1).EQ.7777) EXIT TO 98M   *NO GENERAL STATUS                D88
   B15=0                                 *MESSAGE NUMBER
   IF(SB(B13+9).AND.400.EQ.0) GOTO 70  *DRIVE NOT SELECTED
*                                                                        D88
/---------CHECK FOR ECHO COMMAND OR ECHO BUS MODE ACTIVE.                D88
*                                                                        D88
   B14=SB(B13+14) AND 377           *DETAILED STATUS WORD 12             D88
   B15=2                                *MESSAGE NUMBER                  D88
   IF(SB(B13+2).AND.377.EQ.B14)GOTO 70  *IF ECHO BUS MODE                D88
   B15=3                                *MESSAGE NUMBER                  D88
   IF(B14.EQ.216) GOTO 70               *ECHO COMMAND MODE               D88
*                                                                        D88
/---------CHECK FOR FIXED MODULE DRIVE ACCESS CHECK ERROR.               D88
*                                                                        D88
   IF(B14.AND.1.EQ.0) EXIT TO 98L    *IF NOT ACCESS CHECK                D88
*                                                                        D88
/---------CHECK FOR DRIVE SERVO OFF TRACK.                               D88
*                                                                        D88
   B15=12                            *MESSAGE NUMBER                     D88
   IF(SB(B13+9).AND.2.NE.0) GOTO 70  *SERVO OFF TRACK ERROR              D88
*                                                                        D88
/---------CHECK FOR DRIVE SEEK OVERSHOOT ERROR.                          D88
*                                                                        D88
   B15=13                            *MESSAGE NUMBER                     D88
   IF(SB(B13+9).AND.4.NE.0) GOTO 70  *SEEK OVERSHOOT ERROR               D88
*                                                                        D88
/---------CHECK FOR DRIVE SEEK TIMEOUT ERROR.                            D88
*                                                                        D88
   B15=14                            *MESSAGE NUMBER                     D88
   IF(SB(B13+9).AND.10.NE.0)GOTO 70  *SEEK TIMEOUT ERROR                 D88
   B15=15                            *MESSAGE NUMBER                     D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *D8898K ISOLATE DRIVE FAULT                 D88
   MODULE D8898L,FMDFT(7),LOCK                                           D88
***       D8898L - ISOLATE DRIVE FAULT                                   D88
**        D8898L - ISOLATE DRIVE FAULT                                   D88
*         D8898L - ISOLATE DRIVE FAULT                                   D88
*         ----------------------------                                   D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         ISOLATE  THE  CAUSE  OF  THE  DRIVE FAULTS CAUSED BY EITHER A  D88
*         WRITE/READ ERROR OR DRIVE CHECK ERROR.                         D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF  BIT  3  (WRITE/READ  STATUS  ERROR)  IS NOT ACTIVE IN  D88
*             DETAILED STATUS WORD 12 DECIMAL, GO TO STEP 15.            D88
*         2.  POST  FORMAT  MESSAGE  1  IF  BIT 4 (HEAD SHORT ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         3.  POST  FORMAT  MESSAGE  2  IF BIT 5 (INDEX CHECK ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         4.  POST  FORMAT MESSAGE 3 IF BIT 6 (CONTROL ERROR) IS ACTIVE  D88
*             IN DETAILED STATUS WORD 11 DECIMAL.                        D88
*         5.  POST  FORMAT  MESSAGE 4 IF BIT 7 (WRITE TRANSITION ERROR)  D88
*             IS ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.              D88
*         6.  POST  FORMAT  MESSAGE 5 IF BIT 8 (WRITE CURRENT ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         7.  POST  FORMAT  MESSAGE 6 IF BIT 9 (MULTIPLE HEAD ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         8.  POST  FORMAT MESSAGE 7 IF BIT 10 (WRITE OVERRUN ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         9.  GO  TO STEP 12 IF BIT 11 IS NOT ACTIVE IN DETAILED STATUS  D88
*             WORD 11 DECIMAL.                                           D88
*         10. POST  FORMAT  MESSAGE 10 IF BIT 4 (FMD NOT WRITE ENABLED)  D88
*             IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.           D88
*         11. POST FORMAT MESSAGE 11.                                    D88
*         12. POST FORMAT MESSAGE 12 IF BIT 2 (WRITE  WHILE  IN  OFFSET  D88
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.       D88
*         13. POST FORMAT MESSAGE 13 IF BIT 3 (WRITE  OR  READ  AND  NO  D88
*             CONTROL  SELECT  ERROR) IS ACTIVE IN DETAILED STATUS WORD  D88
*             11 DECIMAL.                                                D88
*         14. POST FORMAT MESSAGE 14.                                    D88
*         15. POST FORMAT MESSAGE 0 IF BIT 5 (DRIVE CHECK ERROR) IS NOT  D88
*             ACTIVE IN DETAILED STATUS WORD 12 DECIMAL.                 D88
*         16. POST FORMAT MESSAGE 15 IF BIT 1 (FMD START SWITCH ON)  IS  D88
*             NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.              D88
*         17. POST FORMAT MESSAGE 16 IF BIT 0 (FMD DRIVE MOTOR  NOT  AT  D88
*             SPEED) IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.    D88
*         18. POST FORMAT MESSAGE 17 IF BIT 2 (FMD AIR SWITCH NOT MADE)  D88
*             IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.           D88
*         19. POST FORMAT MESSAGE 20 IF BIT 3 (SEQUENCE ERROR LATCH) IS  D88
*             NOT ACTIVE IN DETAILED STATUS WORD 2.                      D88
*         20. POST FORMAT MESSAGE  21  IF  BIT  07  (HDA  SEQUENCE  NOT  D88
*             COMPLETE) IS NOT ACTIVE IN DETAILED STATUS WORD 2.         D88
*         21. POST FORMAT MESSAGE 22 IF BIT 5 (INDEX  CHECK  ERROR)  IS  D88
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.                 D88
*         22. POST FORMAT MESSAGE 23 IF BIT 6 (SECTOR COMPARE ERROR) IS  D88
*             ACTIVE IN DETAILED STATUS WORD 12 DECIMAL.                 D88
*         23. POST FORMAT MESSAGE 24.                                    D88
*         24. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         25. EXIT TO MODULE D8898M.
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE     D88
*           NEXT MESSAGE.                                                D88
*         B13 CONTAINS THE INDEX TO THE STATUS BUFFER.                   D88
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.                 D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT WILL ALWAYS BE MADE TO MODULE D8898M WITH THE PRESERVICE 
*         EXIT WILL ALWAYS BE MADE TO MODULE D8898M WITH THE PRESERVICE 
*           FORECAST GROUP NUMBER IN THE B14 REGISTER.
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898M - COMPLETE THE ERROR MESSAGE.                           D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = TEMPORARY STORAGE.                                       D88
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
/---------MESSAGES POSTED BY THIS MODULE FOR THE ERROR.                  D88
*                                                                        D88
0  FORMAT FMD FAULT CANNOT BE ISOLATED.                                  D88
1  FORMAT FMD HEAD SHORT ERROR.                                          D88
2  FORMAT FMD INDEX CHECK ERROR.                                         D88
3  FORMAT FMD CONTROL ERROR.                                             D88
4  FORMAT FMD WRITE TRANSITION ERROR.                                    D88
5  FORMAT FMD WRITE CURRENT ERROR.                                       D88
6  FORMAT FMD MULTIPLE HEAD ERROR.                                       D88
7  FORMAT FMD WRITE OVERRUN ERROR.                                       D88
10 FORMAT FMD NOT WRITE ENABLED.                                         D88
11 FORMAT FMD CAPABLE ENABLE ERROR.                                      D88
12 FORMAT FMD WRITE WHILE IN OFFSET ERROR.                               D88
13 FORMAT FMD WRITE OR READ AND NO CONTROL SELECT ERROR.                 D88
14 FORMAT FMD WRITE/READ ERROR CANNOT BE ISOLATED.                       D88
15 FORMAT FMD START SWITCH NOT ON.                                       D88
16 FORMAT FMD DRIVE MOTOR NOT AT SPEED.                                  D88
17 FORMAT FMD AIR SWITCH NOT MADE.                                       D88
20 FORMAT FMD SEQUENCE ERROR LATCH ERROR.                                D88
21 FORMAT FMD HDA SEQUENCE NOT COMPLETE.                                 D88
22 FORMAT FMD INDEX CHECK ERROR.                                         D88
23 FORMAT FMD SECTOR COMPARE ERROR.                                      D88
24 FORMAT FMD DRIVE CHECK ERROR CANNOT BE ISOLATED.                      D88
*                                                                        D88
/---------CHECK FOR FIXED MODULE DRIVE READ/WRITE ERROR.                 D88
*                                                                        D88
30 IF(SB(B13+14).AND.10.EQ.0) GOTO 50  *NOT WRITE/READ ERROR             D88PTR4
*                                                                        D88
/---------CHECK FOR HEAD SHORT ERROR.                                    D88
*                                                                        D88
   B14=SB(B13+13)                   *DETAILED STATUS WORD 11             D88
   B15=1                            *MESSAGE NUMBER                      D88
   IF(B14.AND.20.NE.0) GOTO 70      *IF HEAD SHORT ERROR                 D88
*                                                                        D88
/---------CHECK FOR INDEX CHECK ERROR.                                   D88
*                                                                        D88
   B15=2                            *MESSAGE NUMBER                      D88
   IF(B14.AND.40.NE.0) GOTO 70      *IF INDEX CHECK ERROR                D88
*                                                                        D88
/---------CHECK FOR CONTROL ERROR.                                       D88
*                                                                        D88
   B15=3                            *MESSAGE NUMBER                      D88
   IF(B14.AND.100.NE.0) GOTO 70     *IF CONTROL ERROR                    D88
*                                                                        D88
/---------CHECK FOR WRITE TRANSITION ERROR.                              D88
*                                                                        D88
   B15=4                            *MESSAGE NUMBER                      D88
   IF(B14.AND.200.NE.0) GOTO 70     *IF WRITE TRANSITION                 D88
*                                                                        D88
/---------CHECK FOR WRITE CURRENT ERROR.                                 D88
*                                                                        D88
   B15=5                            *MESSAGE NUMBER                      D88
   IF(B14.AND.400.NE.0) GOTO 70     *IF WRITE CURRENT ERROR              D88
*                                                                        D88
/---------CHECK FOR MULTI HEAD ERROR                                     D88
*                                                                        D88
   B15=6                            *MESSAGE NUMBER                      D88
   IF(B14.AND.1000.NE.0) GOTO 70    *IF MULTI HEAD ERROR                 D88
*                                                                        D88
/---------CHECK FOR WRITE OVERRUN ERROR.                                 D88
*                                                                        D88
   B15=7                            *MESSAGE NUMBER                      D88
   IF(B14.AND.2000.NE.0) GOTO 70    *IF WRITE OVERRUN ERROR              D88
*                                                                        D88
/---------CHECK FOR CAPABLE ENABLE TYPE ERROR.                           D88
*                                                                        D88
   IF(B14.AND.4000.EQ.0) GOTO 40    *IF NOT CAPABLE ENABLE               D88
*                                                                        D88
/---------CHECK FOR WRITE DISABLE ERROR.                                 D88
*                                                                        D88
   B15=10                            *MESSAGE NUMBER                     D88
   IF(SB(B13+8).AND.20.EQ.0)GOTO 70  *IF WRITE DISABLED                  D88
   B15=11                            *MESSAGE NUMBER                     D88
   GOTO 70                           *GO TO POST MESSAGE                 D88
*                                                                        D88
/---------CHECK FOR WRITE WHILE IN OFFSET ERROR.                         D88
*                                                                        D88
40 B15=12                           *MESSAGE NUMBER                      D88
   IF(B14.AND.4.NE.0) GOTO 70       *WRITE IN OFFSET ERROR               D88
*                                                                        D88
/---------CHECK FOR WRITE/READ AND NO CONTROL SELECT ERROR.              D88
*                                                                        D88
   B15=13                           *MESSAGE NUMBER                      D88
   IF(B14.AND.10.NE.0) GOTO 70      *IF CONTROL SELECT ERROR             D88
   B15=14                           *MESSAGE NUMBER                      D88
   GOTO 70                          *GO TO POST MESSAGE                  D88
*                                                                        D88
/---------CHECK FOR FIXED MODULE DRIVE CHECK ERROR.                      D88
*                                                                        D88
50 B15=0                              *MESSAGE NUMBER                    D88
   IF(SB(B13+14).AND.40.EQ.0)GOTO 70  *NOT DRIVE CHECK ERROR             D88
*                                                                        D88
/---------CHECK FOR DRIVE START SWITCH NOT ON.                           D88
*                                                                        D88
   B15=15                             *MESSAGE NUMBER                    D88
   IF(SB(B13+8).AND.2.EQ.0) GOTO 70   *DRIVE SWITCH NOT ON               D88
*                                                                        D88
/---------CHECK FOR DRIVE MOTOR NOT AT SPEED.                            D88PTR4
*                                                                        D88
   B15=16                             *MESSAGE NUMBER                    D88
   IF(SB(B13+8).AND.1.EQ.0) GOTO 70   *MOTOR NOT AT SPEED                D88
*                                                                        D88
/---------CHECK FOR DRIVE AIR SWITCH NOT MADE.                           D88
*                                                                        D88
   B15=17                             *MESSAGE NUMBER                    D88
   IF(SB(B13+8).AND.4.EQ.0) GOTO 70   *AIR SWITCH NOT MADE               D88
*                                                                        D88
/---------CHECK FOR SEQUENCE ERROR LATCH NOT MADE ERROR.                 D88
*                                                                        D88
   B15=20                             *MESSAGE NUMBER                    D88
   IF(SB(B13+2).AND.10.NE.0) GOTO 70  *SEQUENCE LATCH ERROR              D88
*                                                                        D88
/---------CHECK FOR HDA SEQUENCE NOT COMPLETE ERROR.                     D88
*                                                                        D88
   B15=21                             *MESSAGE NUMBER                    D88
   IF(SB(B13+2).AND.200.EQ.0)GOTO 70  *HDA SEQUENCE ERROR                D88
*                                                                        D88
/---------CHECK FOR INDEX CHECK ERROR.                                   D88
*                                                                        D88
   B15=22                             *MESSAGE NUMBER                    D88
   IF(SB(B13+13).AND.40.NE.0)GOTO 70  *IF NDEX CHECK ERROR               D88
*                                                                        D88
/---------CHECK FOR SECTOR COMPARE ERROR.                                D88
*                                                                        D88
   B15=23                              *MESSAGE NUMBER                   D88
   IF(SB(B13+14).AND.100.NE.0)GOTO 70  *SECTOR COMPARE ERROR             D88
   B15=24                              *MESSAGE NUMBER                   D88
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY BUFFER.                        D88
*                                                                        D88
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *D8898L ISOLATE DRIVE FAULT                 D88
   MODULE D8898M,FMDFT(7),LOCK                                           D88
***       D8898M - POST PRESERVICE FORECAST GROUP                        D88
**        D8898M - POST PRESERVICE FORECAST GROUP                        D88
*         D8898M - POST PRESERVICE FORECAST GROUP                        D88
*         ---------------------------------------                        D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         POST  THE  PRESERVICE  FORECAST  GROUP MESSAGE AND REPORT THE 
*         ERROR TO THE OPERATOR.
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF THE  MODULE  NUMBER IN THE B1 REGISTER IS LESS THAN 12 
*             DECIMAL OR LESS, SET THE PRESERVICE FORECAST GROUP NUMBER 
*             IN  THE  B14  REGISTER  FOR  THE  FOR THE FMDC 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 NUMBER IN THE EM REGISTER.
*         3.  POST THE PRESERVICE FORECAST GROUP MESSAGE. 
*         4.  REPORT THE ERROR TO THE OPERATOR. 
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B14 = 0 FOR PRESERVICE FORECAST GROUP FMDC,  1 FOR PRESERVICE 
*               FORECAST  GROUP FMDD,  2 FOR PRESERVICE FORECAST  GROUP 
*               FMDC/FMDD, OR 3 FOR PRESERVICE FORECAST GROUP FMDD/FMDC 
*               ON PRODUCT OVERLAY DETECTED ERRORS. 
*         EM  = 0 FOR PRESERVICE FORECAST GROUP FMDC,  1 FOR PRESERVICE 
*               FORECAST  GROUP FMDD,  2 FOR PRESERVICE FORECAST  GROUP 
*               FMDC/FMDD, OR 3 FOR PRESERVICE FORECAST GROUP FMDD/FMDC 
*               ON MODULE DETECTED ERRORS.
* 
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT IS ALWAYS TO MODULE D8898N.                               D88
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         D8898N - RESTART CONTROLLER.                                   D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         B12 = DISPLAY LINE NUMBER.                                     D88
*         B13 = STATUS BUFFER INDEX.                                     D88
*         B14 = PRESERVICE FORECAST GROUP NUMBER. 
*         B15 = TEMPORARY STORAGE.                                       D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
*                                                                        D88
/---------MESSAGES POSTED BY THE MODULE.                                 D88
*                                                                        D88
1  FORMAT D88 - FMD CONFIDENCE TEST                                      D88
2  FORMAT PRESERVICE FORECAST GROUP FMDC                                 D88
3  FORMAT PRESERVICE FORECAST GROUP FMDD                                 D88
4  FORMAT PRESERVICE FORECAST GROUP FMDC/FMDD 
5  FORMAT PRESERVICE FORECAST GROUP FMDD/FMDC 
6  FORMAT --------------------------------------------------
7  FORMAT 
10 FORMAT TRUE DISK ADD CYL=*OCT TRK=*O SEC=*O
*                                                                        D88
/---------SET PRESERVICE FORECAST GROUP IF MODULES 1-11.
*                                                                        D88
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 
   B12 = B12 + 1
   IF(ES.AND.TM.EQ.0)B12=B12+1   *IF KL DISPLAY 
   MSG 10 (B7,B6,B5) TO LINE B12   *TRUE DISK ADD ON WRITE VERIFY 
30 IF(B14.NE.7777)B14=B14+2  *ADJUST MESSAGE NUMBER IN B14
   IF(B1.LE.11D) B14=2       *IF MODULES IS 1-11
*                                                                        D88
/---------IF NOT A PRODUCT OVERLAY ERROR, USE THE PRESERVICE
/---------FORECAST GROUP IN THE EM REGISTER.
*                                                                        D88
   IF(EC.LT.4000) B14=EM+2   *SET USER SUPPLIED GROUP NO. 
   IF(B14.NE.7777) GOTO 60   *IF LEGAL PRESERVICE GROUP 
   B14=2                     *DEFAULT IS FMDC PRESERVICE
   IF(EC.AND.4077.EQ.4031)B14=4  *IF COMPARE ERROR
*                                                                        D88
/---------POST THE MESSAGE IN THE DISPLAY DISPLAY BUFFER. 
*                                                                        D88
60 MSG B14 TO LINE 2         *PRESERVICE FORECAST MESSAGE 
*                                                                        D88
/---------IF TERMINAL MODE, BLANK FIRST TWO DISPLAY LINES.
*                                                                        D88
   IF(ES.AND.TM.EQ.0)GOTO 70  *IF NOT TERMINAL MODE 
   MSG 7 TO LINE 0           *BLANK FIRST TWO DISPLAY LINES 
   MSG 7 TO LINE 1
   GOTO 72                   *JUMP                                       D88
70 MSG 1 TO LINE 0           *TEST TITLE LINE                            D88
72 PICTURE                                                               D88
   HALT                      *STOP ON THE ERROR                          D88
   MSG 6 TO PRINT            *TERMINATE THE MESSAGE 
   BLANK                                                                 D88
   EXIT TO 98N               *EXIT THE MODULE 
   END 20                    *END OF MODULE 
COMPILE                      *D8898M POST PRESERVICE FORECAST GROUP      D88
   MODULE D8898N,FMDFT(7),LOCK                                           D88
***       D8898N - RESTART CONTROLLER                                    D88
**        D8898N - RESTART CONTROLLER                                    D88
*         D8898N - RESTART CONTROLLER                                    D88
*         ---------------------------                                    D88
*                                                                        D88
*         PURPOSE-                                                       D88
*         D8898N  WILL  ISSUE A RESET COMMAND TO THE 7155 CONTROLLER IF  D88
*         THE CONTROLLER DOES NOT RESPOND CORRECTLY TO A RES COMMAND.    D88
*                                                                        D88
*         METHOD-                                                        D88
*         1.  IF  THE  NUMBER  IN  THE  B8  REGISTER  IS NOT A 40 OCTAL  D88
*             (RES,CONTOLLER) OR A  41  OCTAL  (RES  DRIVE),  EXIT  THE  D88
*             MODULE.                                                    D88
*         2.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5324  D88
*             OR 5325, EXIT THE MODULE                                   D88
*         3.  EXECUTE A RES,CONTROLLER COMMAND AND GO TO STEP 5  IF  NO  D88PTR4
*             ABORT OCCURS.                                              D88PTR4
*         4.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5324  D88
*             OR 5325, EXIT THE MODULE                                   D88
*         5.  EXECUTE A COMMAND SEQUENCE OF RESET,  STATUS,DETAIL,  AND  D88
*             REL AND GO TO STEP 7 IF AN ABORT OCCURS.                   D88
*         6.  EXIT THE MODULE.                                           D88
*         7.  REPORT  AN  ERROR  INDICATING  THAT THE PREVIOUS  COMMAND  D88PTR4
*             SEQUENCE FAILED AND THAT THIS INDICATES A PROBLEM IN  THE  D88
*             CONTOLLER OR A PROBLEM WITH THE CONTROLWARE.               D88
*         8.  TERMINATE EXECUTION OF THE PRIMARY MODULE.                 D88
*                                                                        D88
/                                                                        D88
*         ENTRY-                                                         D88
*         B1  = MODULE NUMBER IN OCTAL.                                  D88
*         B8  = COMMAND NUMBER FOR THE COMMAND THAT WAS BEING EXECUTED.  D88
*         EC  = THE ERROR CODE FOR THE LAST ERROR REPORTED.              D88
*                                                                        D88
*         EXIT-                                                          D88
*         EXIT TO THE CALLING MODULE IF THE RESET COMMAND DOES NOT HAVE  D88
*         TO BE EXECUTED OR IF THE RESET COMMAND  CORRECTS THE PROBLEM.  D88PTR4
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE RESET         D88
*         COMMAND MUST BE EXECUTED BUT IT DOES NOT CORRECT THE PROBLEM.  D88PTR4
*                                                                        D88
*         SUBMODULES REFERENCED-                                         D88
*         NONE.                                                          D88
*                                                                        D88
*         REGISTERS USED-                                                D88
*         NONE.                                                          D88
*                                                                        D88
*         BUFFERS USED-                                                  D88
*         NONE.                                                          D88
*                                                                        D88
1  FORMAT D88 - FMD CONFIDENCE TEST                                      D88
2  FORMAT D88*D MODULE ABORTED - CONTROLLER NOT RESPONDING               D88
3  FORMAT PRESERVICE FORECAST GROUP FMDC                                 D88
4  FORMAT ABNORMAL RESPONSE TO A RESET/DETAILED STATUS SEQ.              D88
5  FORMAT POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM.                    D88PTR4
6  FORMAT D88*D MODULE EXECUTION ABORTED                                 D88
7  FORMAT --------------------------------------------------             D88
*                                                                        D88
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.               D88
*                                                                        D88
30 IF(B8.EQ.40) GOTO 32      *IF RES CONTROLLER COMMAND                  D88
   IF(B8.NE.41) EXIT         *IF NOT RES COMMAND, EXIT                   D88
*                                                                        D88
/---------EXIT IF THE ERROR WAS BECAUSE OF NO RESERVE IN                 D88
/---------FIVE MINUTES OR ABNORMAL GENERAL STATUS.                       D88
*                                                                        D88
32 IF(EC.AND.4077.EQ.4024)EXIT  *IF NO RESERVE ERROR, EXIT
   IF(EC.AND.4077.EQ.4025)EXIT  *IF ABNORMAL STATUS, EXIT 
*                                                                        D88
/---------RESERVE THE CONTROLLER TO ISSUE A RESET COMMAND.               D88
*                                                                        D88
   RES,CONTROLLER,ABT 34     *RESERVE THE CONTROLLER                     D88
   GOTO 36                   *GO TO ISSUE RESET                          D88
*                                                                        D88
/---------PROCESS THE ABORT ON THE RES COMMAND.                          D88
*                                                                        D88
34 IF(EC.AND.4077.EQ.4024)EXIT  *IF NO RESERVE ERROR, EXIT
   IF(EC.AND.4077.EQ.4025)EXIT  *IF ABNORMAL STATUS, EXIT 
*                                                                        D88
/---------ISSUE THE RESET COMMAND AND RELEASE THE CONTOLLER.             D88
*                                                                        D88
36 RESET,ABT 40              *ZERO WORD AUTOLOAD                         D88
   STATUS,DETAIL,ABT 40      *GET DETAILED STATUS                        D88
   REL,ABT 40                *RELEASE THE CONTROLLER                     D88
   EXIT                      *EXIT THE MODULE                            D88
*                                                                        D88
/---------DISPLAY CONTROLLER/CONTROLWARE ERROR MESSAGE.                  D88PTR4
*                                                                        D88
40 IF(ES.AND.TM.NE.0) GOTO 70                                            D88
   MSG 1 TO LINE 0           *TEST NAME MESSAGE                          D88
70 MSG 3 TO LINE 2           *PRESERVICE FORECAST GROUP MSG.             D88
   MSG 4 TO LINE 5           *ERROR MESSAGE                              D88
   MSG 5 TO LINE 7           *INFORMATION MESSAGE                        D88
   MSG 6 (B1) TO LINE 10     *INFORMATION MESSAGE                        D88
   PICTURE                                                               D88
   HALT                      *STOP ON ERROR                              D88
   MSG 7 TO PRINT            *TERMINATE PRINT MESSAGES                   D88
   BLANK                                                                 D88
   MSG 2 (B1) TO PRINT,DAYFILE,DISPLAY  *MODULE ABORT MSG.               D88
   END 30                               *END OF THE MODULE               D88
COMPILE                      *D8898N RESTART CONTROLLER 
*ENDIF
*IF DEF,LSFMD 
   MODULE DL898G,LSFMD2(16),LOCK
***       DL898G - PROCESS GENERAL STATUS 
**        DL898G - PROCESS GENERAL STATUS 
*         DL898G - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         THIS  MODULE WILL DETERMINE THE REASON THE GENERAL STATUS WAS 
*         NONZERO AFTER A OPERATION IN THE 7155 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,  EXIT  TO 
*             MODULE DL898M.
*         3.  IF THE GENERAL STATUS IS 0010 OR 2000, POST  THE  CORRECT 
*             MESSAGE.
*         4.  IF THE GENERAL STATUS IS 5020, EXIT TO MODULE DL898K. 
*         5.  IF  DETAILED  STATUS  WORD  1  IS EQUAL TO 7777, POST THE 
*             FORMAT MESSAGE GENERAL STATUS NONZERO,  BUT  NO  DETAILED 
*             STATUS. 
*         6.  IF THE GENERAL STATUS NOT EQUAL TO 5000,  EXIT  TO MODULE 
*             DL898J. 
*         7.  IF THE DETAILED STATUS INDICATES AN ILLEGAL PARAMETER  OR 
*             AN  ILLEGAL NUMBER OF PARAMETERS, POST THE CORRECT FORMAT 
*             MESSAGE.
*         8.  IF THE FUNCTION SENT TO THE CONTROLLER CAUSING THE  ERROR 
*             WAS NOT A BUFFER READ OR BUFFER WRITE FUNCTION,  EXIT  TO 
*             MODULE DL898H.
*         9.  DETERMINE THE CAUSE OF THE ERROR FOR THE BUFFER  READ  OR 
*             BUFFER WRITE FUNCTION AND POST THE CORRECT MESSAGE. 
*         10. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         11. EXIT TO MODULE DL898M.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE
*           NEXT MESSAGE. 
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DL898H IF THE CAUSE OF THE 5000 GENERAL STATUS 
*           HAS NOT BEEN DETERMINED BY THIS MODULE. 
*         EXIT TO MODULE DL898J IF THE GENERAL STATUS IS NOT 0000,
*           2000, 5000, OR 5020.
*         EXIT TO MODULE DL898K IF FMD IS NOT READY AND SAFE. 
*         EXIT TO MODULE DL898M 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-
*         DL898H - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DL898J - PROCESS 4400, 4600, 4700, AND 5200 GENERAL STATUS. 
*         DL898K - ISOLATE FMD FAULTS.
*         DL898M - 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 31 ARE IN MODULE DL898G.          * 
*         *         STEPS 32 THROUGH 53 ARE IN MODULE DL898H.         * 
*         *         STEPS 54 THROUGH 70 ARE IN MODULE DL898I.         * 
*         *         STEPS 70 THROUGH 84 ARE IN MODULE DL898J.         * 
*         *                                                           * 
*         *    NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE       * 
*         *          TO MODULE DL898M.                                * 
*         *                                                           * 
*         ************************************************************* 
* 
*         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 DL898M.
*         3.  IF THE GENERAL STATUS IS EQUAL TO ZERO, EXIT TO MODULE
*             DL898M. 
*         4.  IF THE GENERAL STATUS IS EQUAL TO 0010 OCTAL, POST THE
*             MESSAGE FMD UNIT RESERVED BY ANOTHER CONTROLLER.
*         5.  IF THE GENERAL STATUS IS EQUAL TO 2000 OCTAL, POST THE
*             MESSAGE CONTROLLER RESERVED BY ANOTHER MAINFRAME. 
*         6.  IF THE GENERAL STATUS IS EQUAL TO 5020 OCTAL, EXIT TO 
*             MODULE DL898K TO ISOLATE THE CAUSE OF THE DRIVE FAULT.
*         7.  IF DETAILED STATUS WORD 1 IS EQUAL TO 7777 OCTAL, POST
*             THE MESSAGE GENERAL STATUS NONZERO, BUT NO DETAILED 
*             STATUS. 
*         8.  IF THE GENERAL STATUS IS NOT EQUAL TO 5000 OCTAL, GO TO 
*             STEP 71.
*         9.  IF BIT 3 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO,
*             POST THE MESSAGE CONTROLWARE ILLEGAL PARAMETER ERROR. 
*         10. IF BIT 2 IN DETAILED STATUS WORD 3 IS NOT EQUAL TO ZERO,
*             POST THE MESSAGE CONTROLWARE ILLEGAL NUMBER OF
*             PARAMETERS ERROR. 
*         11. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT
*             EQUAL TO 43 OCTAL, GO TO STEP 12. 
*         12. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT
*             REGISTER FULL ERROR, OTHERWISE GO TO STEP 15. 
*         13. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT
*             EQUAL TO 44 OCTAL, GO TO STEP 32. 
*         14. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER
*             FULL ERROR. 
*         15. IF BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL ACTIVE 
*             ERROR.
*         16. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DEADMAN TIMEOUT
*             ERROR.
*         17. IF BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL RESERVED 
*             ERROR.
*         18. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER INPUT 
*             REGISTER FULL ERROR.
*         19. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE ERROR.
*         20. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR. 
*         21. IF BIT 10 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR. 
*         22. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR.
*         23. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT
*             REGISTER PARITY ERROR.
*         24. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, EXIT TO MODULE DL898K TO ISOLATE THE CAUSE OF
*             THE DRIVE FAULT.
*         25. IF BIT 3 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER UP/DOWN COUNT
*             NONZERO ERROR.
*         26. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD
*             ERROR.
*         27. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR
*             INSTRUCTION TIMEOUT ERROR.
*         28. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR. 
*         29. IF BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER NONCORRECTABLE 
*             STATUS ERROR. 
*         30. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK 
*             ERROR.
*         31. POST THE MESSAGE CONTROLLER ERROR CANNOT BE ISOLATED. 
*         32. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 54.
*         33. 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.
*         34. IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         35. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE NOT 
*             EQUAL TO ZERO, GO TO STEP 49. 
*         36. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 14 OCTAL, POST THE MESSAGE FMD CYLINDER ADDRESS
*             MISCOMPARE ERROR. 
*         37. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 12 OCTAL, POST THE MESSAGE FMD TRACK ADDRESS 
*             MISCOMPARE ERROR. 
*         38. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE EQUAL
*             TO 30 OCTAL, GO TO STEP 40. 
*         39. IF BITS 4 THROUGH 11 IN DETAILED STATUS WORD 3 ARE NOT
*             EQUAL TO 31 OCTAL, GO TO STEP 41. 
*         40. IF BITS 10 AND 11 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 43.
*         41. IF BIT 10 IN DETAILED STATUS WORD 5 IS NOT EQUAL TO ZERO, 
*             POST THE MESSAGE FMD FACTORY FLAW MAP DETECTED. 
*         42. IF BIT 11 IN DETAILED STATUS WORD 5 IS NOT EQUAL TO ZERO, 
*             POST THE MESSAGE FMD TRACK FLAW DETECTED. 
*         43. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 11 OCTAL, POST THE MESSAGE FMD SECTOR ADDRESS
*             MISCOMPARE ERROR. 
*         44. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 10 OCTAL, POST THE MESSAGE CONTROLWARE ABNORMAL
*             DETAILED STATUS.
*         45. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR. 
*         46. IF BIT 10 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER SECTOR LENGTH ERROR. 
*         47. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR
*             INSTRUCTION TIMEOUT ERROR.
*         48. POST THE MESSAGE CONTROLLER ERROR CANNOT BE ISOLATED. 
*         49. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, EXIT TO MODULE DL898K TO ISOLATE THE CAUSE OF
*             THE DRIVE FAULT.
*         50. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD SYNC BYTE ERROR.
*         51. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD
*             ERROR.
*         52. IF BIT 7 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER NONCORRECTABLE 
*             STATUS ERROR. 
*         53. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK 
*             ERROR, OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT
*             ISOLATED. 
*         54. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, GO TO STEP 56. 
*         55. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR, 
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         56. IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         57. IF BIT 2 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, EXIT TO MODULE DL898K TO ISOLATE THE CAUSE OF
*             THE DRIVE FAULT.
*         58. IF BITS 8 OR 11 IN DETAILED STATUS WORD 17 DECIMAL ARE
*             NOT EQUAL TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC 
*             BYTE ERROR. 
*         59. IF BIT 9 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DATA ERROR. 
*         60. IF BIT 0 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER WRITE VERIFY ERROR.
*         61. IF BIT 1 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT
*             REGISTER PARITY ERROR.
*         62. IF BIT 4 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST CONTROL WORD
*             ERROR.
*         63. IF BIT 5 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER PROCESSOR
*             INSTRUCTION TIMEOUT ERROR.
*         64. IF BIT 6 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DATA PARITY ERROR. 
*         65. IF BIT 11 IN DETAILED STATUS WORD 16 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE CONTROLLER LOST DRIVE CLOCK 
*             ERROR.
*         66. IF BIT 2 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL ACTIVE 
*             ERROR.
*         67. IF BIT 3 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER DEADMAN TIMEOUT
*             ERROR.
*         68. IF BIT 4 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER CHANNEL RESERVED 
*             ERROR.
*         69. IF BIT 5 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE CONTROLLER BUFFER INPUT 
*             REGISTER FULL ERROR.
*         70. IF BIT 6 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE CONTROLLER BUFFER OUTPUT REGISTER
*             FULL ERROR, OTHERWISE POST THE MESSAGE CONTROLLER ERROR 
*             NOT ISOLATED. 
*         71. IF THE GENERAL STATUS IS NOT EQUAL TO 4400 OCTAL, GO TO 
*             STEP 78.
*         72. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 77.
*         73. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO ZERO, POST THE MESSAGE FMD ADDRESS FIELD SYNC BYTE 
*             ERROR.
*         74. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 14 OCTAL, POST THE MESSAGE FMD CYLINDER ADDRESS
*             MISCOMPARE ERROR. 
*         75. IF BITS 0 THROUGH 3 IN DETAILED STATUS WORD 1 ARE EQUAL 
*             TO 12 OCTAL, POST THE MESSAGE FMD TRACK ADDRESS 
*             MISCOMPARE ERROR. 
*         76. 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. 
*         77. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD DATA FIELD SYNC BYTE ERROR, 
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         78. IF THE GENERAL STATUS IS NOT EQUAL TO 4600 OCTAL, GO TO 
*             STEP 81.
*         79. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD ADDRESS FIELD CHECKWORD 
*             ERROR.
*         80. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD DATA FIELD CHECKWORD ERROR, 
*             OTHERWISE POST THE MESSAGE CONTROLLER ERROR NOT ISOLATED. 
*         81. IF THE GENERAL STATUS IS EQUAL TO 4700 OCTAL, POST THE
*             MESSAGE FMD ADDRESS FIELD CHECKWORD ERROR.
*         82. IF THE GENERAL STATUS IS NOT EQUAL TO 5200 OCTAL, POST
*             THE MESSAGE CONTROLWARE ABNORMAL GENERAL STATUS.
*         83. IF BIT 0 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD NONCORRECTABLE ADDRESS
*             FIELD CHECKWORD ERROR.
*         84. IF BIT 1 IN DETAILED STATUS WORD 17 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD NONCORRECTABLE DATA FIELD 
*             CHECKWORD ERROR, OTHERWISE POST THE MESSAGE CONTROLLER
*             ERROR NOT ISOLATED. 
*         85. EXIT TO MODULE DL898M.
* 
/---------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 CONTROLLER BUFFER OUTPUT REGISTER FULL ERROR. 
7  FORMAT CONTROLLER CHANNEL ACTIVE ERROR.
10 FORMAT CONTROLLER CHANNEL DEADMAN TIMEOUT ERROR. 
11 FORMAT CONTROLLER CHANNEL RESERVED ERROR.
12 FORMAT CONTROLLER BUFFER INPUT REGISTER FULL ERROR.
13 FORMAT CONTROLLER LOST DATA ERROR. 
14 FORMAT CONTROLLER SECTOR LENGTH ERROR. 
15 FORMAT CONTROLLER WRITE VERIFY ERROR (SEE TRUE DISK ADD) 
16 FORMAT CONTROLLER BUFFER OUTPUT REGISTER PARITY ERROR. 
17 FORMAT CONTROLLER UP/DOWN COUNT NONZERO ERROR. 
20 FORMAT CONTROLLER LOST CONTROL WORD ERROR. 
21 FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR. 
22 FORMAT CONTROLLER DATA PARITY ERROR. 
23 FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR. 
24 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.
25 FORMAT FMD SYNC BYTE ERROR.
26 FORMAT FMD CONTROLLER AND/OR DRIVE BUSY. 
27 FORMAT FMD DRIVE ERROR RATE THRESHOLD EXCEEDED.
* 
/---------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 98M  *IF INVALID STATUS
   IF(SB(B13).EQ.0) EXIT TO 98M     *IF NO STATUS ERROR 
   B15=26                           *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).EQ.2000) GOTO 70      *IF CONTROLLER RESERVED 
   IF(SB(B13).EQ.5020) EXIT TO 98K  *IF DRIVE MALFUNCTION 
   B15=2                            *MESSAGE NUMBER 
   IF(SB(B13+1).EQ.7777) GOTO 70    *IF NO DETAILED STATUS
* 
/---------CHECK FOR GENERAL STATUS OF 5000. 
* 
   IF(SB(B13).NE 5000) EXIT TO 98J  *NO 5000 GENERAL STATUS 
   B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   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 PARMETERS
   B15=27                           *MESSAGE NUMBER 
   IF(SB(B13+3).AND.2.NE.0)GOTO 70  *ERROR THRESHOLD
   B15=6                            *MESSAGE NUMBER 
* 
/---------CHECK FOR BUFFER READ FUNCTION ISSUED.
* 
   IF(SB(B13+3).AND.7760.NE.1060)GOTO 40  *NOT BUFFER READ
   IF(B14.AND.100.NE.0) GOTO 70     *BUFFER OUTPUT REGISTER 
   GOTO 42
* 
/---------CHECK FOR BUFFER WRITE FUNCTION ISSUED. 
* 
40 IF(SB(B13+3).AND.7760.NE.1100)EXIT TO 98H  *IF NOT WRITE 
   IF(B14.AND.100.EQ.0) GOTO 70     *BUFFER OUTPUT REGISTER 
* 
/---------CHECK CONTROLLER INPUT CHANNEL 0 STATUS BITS. 
* 
42 B15=7                            *MESSAGE NUMBER 
   IF(B14.AND.4.NE.0) GOTO 70       *CHANNEL ACTIVE ERROR 
   B15=10                           *MESSAGE NUMBER 
   IF(B14.AND.10.NE.0) GOTO 70      *DEADMAN TIMEOUT ERROR
   B15=11                           *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *CHANNEL RESERVED ERROR 
   B15=12                           *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *BUFFER INPUT REGISTER
   B15=25                           *MESSAGE NUMBER 
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR
   B15=13                           *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *LOST DATA ERROR
   B15=14                           *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=15                           *MESSAGE NUMBER 
   IF(B14.AND.1.NE.0) GOTO 70       *WRITE VERIFY ERROR 
   B15=16                           *MESSAGE NUMBER 
   IF(B14.AND.2.NE.0) GOTO 70       *OUTPUT BUFFER PARITY 
   B15=17                           *MESSAGE NUMBER 
   IF(B14.AND.10.NE.0) GOTO 70      *UP/DOWN NONZERO ERROR
   B15=20                           *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD ERROR
   B15=21                           *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=22                           *MESSAGE NUMBER 
   IF(B14.AND.100.NE.0) GOTO 70     *DATA PARITY ERROR
   B15=23                           *MESSAGE NUMBER 
   IF(B14.AND.200.NE.0) GOTO 70     *NONCORRECTABLE ERROR 
   B15=24                           *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK ERROR 
   B15=5                            *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.0) B14=1        *IF MESSAGE 0
   IF(B15.EQ.14) B14=1       *IF MESSAGE 14 
   IF(B15.EQ.15) B14=13      *IF MESSAGE 15 
   IF(B15.EQ.24) B14=3       *IF MESSAGE 24 
   IF(B15.EQ.25) B14=3       *IF MESSAGE 25 
   IF(B15.EQ.26) B14=3       *IF MESSAGE 26 
   IF(B15.EQ.27) B14=1       *IF MESSAGE 27 
   EXIT TO 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL898G PROCESS GENERAL STATUS 
   MODULE DL898H,LSFMD2(16),LOCK
***       DL898H - PROCESS GENERAL STATUS 
**        DL898H - PROCESS GENERAL STATUS 
*         DL898H - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DL898H  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.  IF THE ERROR WAS NOT DETECTED WHILE READING  THE  ADDRESS 
*             FIELD OF A SECTOR, EXIT TO MODULE DL898I. 
*         2.  POST FORMAT MESSAGE 11  IF  A  ADDRESS  FIELD  ERROR  WAS 
*             DETECTED  WHILE  RECOVERING  A ERROR IN THE DATA FIELD OF 
*             THE SECTOR. 
*         3.  POST FORMAT MESSAGE 20 IF BIT 8 IN DETAILED STATUS WORD 9 
*             DECIMAL IS EQUAL TO ZERO. 
*         4.  IF BITS 0 - 3 OF DETAILED STATUS  WORD  1  ARE  EQUAL  TO 
*             ZERO, GO TO STEP 15.
*         5.  POST  FORMAT  MESSAGE 12 IF A CYLINDER ADDRESS MISCOMPARE 
*             WAS DETECTED OR FORMAT MESSAGE  13  IF  A  TRACK  ADDRESS 
*             MISCOMPARE  WAS  DETECTED  IN  THE  ADDRESS  FIELD OF THE 
*             SECTOR. 
*         6.  IF  A  READ FACTORY MAP OR READ UTILITY MAP WAS NOT BEING 
*             EXECUTED, GO TO STEP 8. 
*         7.  POST  FORMAT MESSAGE 14 IF THE FACTORY OR TRACK FLAW BITS 
*             WERE NOT SET IN THE ADDRESS FIELD OF THE  SECTOR.  GO  TO 
*             STEP 9. 
*         8.  POST FORMAT MESSAGE 15 IF A FACTORY FLAW BIT WAS  SET  IN 
*             THE ADDRESS FIELD OF THE SECTOR OR FORMAT MESSAGE 16 IF A 
*             TRACK FLAW BIT WAS SET IN THE ADDRESS FIELD OF THE
*             SECTOR. 
*         9.  POST FORMAT MESSAGE 17 IF A SECTOR ADDRESS MISCOMPARE WAS 
*             FOUND IN THE ADDRESS FIELD OF THE SECTOR. 
*         10. POST FORMAT MESSAGE 0 IF BITS 0 - 3  OF  DETAILED  STATUS 
*             WORD 1 DOES NOT EQUAL 10. 
*         11. POST FORMAT MESSAGE 2 IF CONTROLLER LOST DATA  STATUS  IS 
*             ACTIVE. 
*         12. POST  FORMAT  MESSAGE 3 IF SECTOR LENGTH VIOLATION STATUS 
*             IS ACTIVE.
*         13. POST  FORMAT  MESSAGE  4 IF PROCESSOR INSTRUCTION TIMEOUT 
*             STATUS IS ACTIVE. 
*         14. POST FORMAT MESSAGE 1.
*         15. EXIT  TO  MODULE  DL898K IF THE FIXED MODULE DRIVE IS NOT 
*             READY AND SAFE. 
*         16. POST FORMAT MESSAGE 10 IF A SYNC BYTE ERROR WAS DETECTED. 
*         17. POST  FORMAT  MESSAGE  5  IF  LOST CONTROL WORD STATUS IS 
*             ACTIVE. 
*         18. POST FORMAT MESSAGE 6 IF NONCORRECTABLE STATUS IS ACTIVE. 
*         19. POST FORMAT MESSAGE 7  IF  LOST  DRIVE  CLOCK  STATUS  IS 
*             ACTIVE. 
*         20. POST FORMAT MESSAGE 1.
*         21. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         22. EXIT TO MODULE DL898M.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE
*           NEXT MESSAGE. 
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DL898I IF THE CAUSE OF THE 5000 GENERAL STATUS 
*           HAS NOT BEEN DETERMINED BY THIS MODULE. 
*         EXIT TO MODULE DL898K IF FMD IS NOT READY AND SAFE. 
*         EXIT TO MODULE DL898M IF THE CAUSE OF THE 5000 GENERAL STATUS 
*           HAS BEEN DETERMINED AND THE CAUSE POSTED IN THE DISPLAY 
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DL898I - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DL898K - ISOLATE FMD FAULTS.
*         DL898M - 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 ERROR NOT ISOLATED.
2  FORMAT CONTROLLER LOST DATA ERROR. 
3  FORMAT CONTROLLER SECTOR LENGTH ERROR. 
4  FORMAT CONTROLLER PROCESSOR INSTRUCTION TIMEOUT ERROR. 
5  FORMAT CONTROLLER LOST CONTROL WORD ERROR. 
6  FORMAT CONTROLLER NONCORRECTABLE STATUS ERROR. 
7  FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.
10 FORMAT FMD ADDRESS FIELD SYNC BYTE 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 FMD TRACK EXPECTED TO BE FLAWED BUT WAS NOT.
15 FORMAT FMD FACTORY FLAW MAP 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 IF(B14.AND.1.EQ.0) EXIT TO 98I      *IF NOT ADDRESS FIELD
   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=2                               *MESSAGE NUMBER
   IF(B14.AND.1000.NE.0) GOTO 70       *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 98K                      *GO PROCESS DRIVE FAULT 
64 B14=SB(B13+21)                   *DETAILED STATUS WORD 17
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *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.4400.NE.0) GOTO 70    *SYNC BYTE ERROR
   B14=SB(B13+20)                   *DETAILED STATUS WORD 16
   B15=4                            *MESSAGE NUMBER 
   IF(B14.AND.40.NE.0) GOTO 70      *INSTRUCTION TIMEOUT
   B15=5                            *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *LOST CONTROL WORD
   B15=6                            *MESSAGE NUMBER 
   IF(B14.AND.200.NE.0) GOTO 70     *NONCORRECTABLE ERROR 
   B15=7                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *LOST DRIVE CLOCK 
   B15=1                            *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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=0        *IF MESSAGE 2
   IF(B15.EQ.4) B14=0        *IF MESSAGE 4
   IF(B15.EQ.5) B14=3        *IF MESSAGE 5
   IF(B15.EQ.6) B14=0        *IF MESSAGE 6
   IF(B15.EQ.7) B14=3        *IF MESSAGE 7
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   EXIT TO 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL898H PROCESS GENERAL STATUS 
   MODULE DL898I,LSFMD2(16),LOCK
***       DL898I - PROCESS GENERAL STATUS 
**        DL898I - PROCESS GENERAL STATUS 
*         DL898I - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DL898I  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 4 IF BIT 1 IS SET IN DETAILED STATUS WORD 17.
*         2.  POST  FORMAT  MESSAGE  1  IF  DATA PARITY ERROR STATUS IS 
*             ACTIVE. 
*         3.  POST FORMAT MESSAGE 0.
*         4.  POST FORMAT MESSAGE 17 IF BIT 8 IN DETAILED STATUS WORD 9 
*             DECIMAL IS EQUAL TO ZERO. 
*         5.  EXIT TO MODULE DL898K IF THE FIXED MODULE  DRIVE  IS  NOT 
*             READY AND SAFE. 
*         6.  POST FORMAT MESSAGE 16 IF A SYNC BYTE ERROR WAS DETECTED. 
*         7.  POST  FORMAT  MESSAGE 7 IF CONTROLLER LOST DATA STATUS IS 
*             ACTIVE. 
*         8.  POST FORMAT MESSAGE 11 IF WRITE VERIFY STATUS IS ACTIVE.
*         9.  POST FORMAT MESSAGE 12 IF BUFFER OUTPUT  REGISTER  PARITY 
*             STATUS IS ACTIVE. 
*         10. POST FORMAT MESSAGE 13 IF LOST  CONTROL  WORD  STATUS  IS 
*             ACTIVE. 
*         11. POST FORMAT MESSAGE 10 IF PROCESSOR  INSTRUCTION  TIMEOUT 
*             STATUS IS ACTIVE. 
*         12. POST FORMAT MESSAGE 14 IF DATA  PARITY  ERROR  STATUS  IS 
*             ACTIVE. 
*         13. POST FORMAT MESSAGE 15 IF  LOST  DRIVE  CLOCK  STATUS  IS 
*             ACTIVE. 
*         14. POST FORMAT MESSAGE 3 IF CHANNEL ACTIVE STATUS IS ACTIVE. 
*         15. POST  FORMAT  MESSAGE 4 IF CHANNEL DEADMAN TIMEOUT STATUS 
*             IS ACTIVE.
*         16. POST  FORMAT  MESSAGE  5  IF  CHANNEL  RESERVED STATUS IS 
*             ACTIVE. 
*         17. POST  FORMAT  MESSAGE  6  IF  BUFFER  INPUT REGISTER FULL 
*             STATUS IS ACTIVE. 
*         18. POST  FORMAT  MESSAGE  12  IF BUFFER OUTPUT REGISTER FULL 
*             STATUS IS ACTIVE. 
*         19. POST FORMAT MESSAGE 0.
*         20. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         21. EXIT TO MODULE DL898M.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE
*           NEXT MESSAGE. 
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DL898K IF FMD IS NOT READY AND SAFE. 
*         EXIT TO MODULE DL898M IF THE CAUSE OF THE 5000 GENERAL STATUS 
*           HAS BEEN DETERMINED AND THE CAUSE POSTED IN THE DISPLAY 
*           BUFFER WITH THE PRESERVICE FORECAST GROUP NUMBER IN THE B14 
*           REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DL898K - ISOLATE FMD FAULTS.
*         DL898M - 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.
7  FORMAT CONTROLLER LOST DATA 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. 
13 FORMAT CONTROLLER LOST CONTROL WORD ERROR. 
14 FORMAT CONTROLLER DATA PARITY ERROR. 
15 FORMAT CONTROLLER LOST DRIVE CLOCK ERROR.
16 FORMAT FMD DATA FIELD SYNC BYTE ERROR. 
17 FORMAT FMD NOT SELECTED AND RESERVED.
* 
/---------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 98K  *ISOLATE FMD FAULT
   B15=16                           *MESSAGE NUMBER 
   IF(B14.AND.4400.NE.0) GOTO 70    *SYNC BYTE ERROR
   B15=7                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0) GOTO 70    *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=13                           *MESSAGE NUMBER 
   IF(B14.AND.20.NE.0) GOTO 70      *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=15                           *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0) GOTO 70    *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=0                            *MESSAGE NUMBER 
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------DETERMINE THE PRESERVICE FORECAST GROUP.
* 
   B14=0                     *PRESERVICE FORECAST GROUP 
   IF(B15.EQ.11) B14=11      *IF MESSAGE 11 
   IF(B15.EQ.15) B14=3       *IF MESSAGE 15 
   IF(B15.EQ.16) B14=3       *IF MESSAGE 16 
   IF(B15.EQ.17) B14=3       *IF MESSAGE 17 
   EXIT TO 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL898I PROCESS GENERAL STATUS 
   MODULE DL898J,LSFMD2(16),LOCK
***       DL898J - PROCESS GENERAL STATUS 
**        DL898J - PROCESS GENERAL STATUS 
*         DL898J - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DL898J  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 4400 OCTAL.
*         2.  GO  TO STEP 8 IF BIT 0 IS NOT SET IN DETAILED STATUS WORD 
*             17 DECIMAL. 
*         3.  POST FORMAT MESSAGE 2 IF A SYNC BYTE ERROR WAS DETECTED.
*         4.  POST FORMAT MESSAGE 3 IF A  CYLINDER  ADDRESS  MISCOMPARE 
*             WAS DETECTED. 
*         5.  POST FORMAT MESSAGE 4 IF A TRACK ADDRESS  MISCOMPARE  WAS 
*             DETECTED. 
*         6.  POST FORMAT MESSAGE 5 IF A SECTOR ADDRESS MISCOMPARE  WAS 
*             DETECTED. 
*         7.  POST FORMAT MESSAGE 0.
*         8.  POST  FORMAT MESSAGE 6 IF BIT 1 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         9.  POST FORMAT MESSAGE 1.
*         10. GO TO STEP 14 IF THE GENERAL STATUS IS NOT 4600 OCTAL.
*         11. POST  FORMAT MESSAGE 7 IF BIT 0 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         12. POST FORMAT MESSAGE 10 IF BIT 1 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         13. POST FORMAT MESSAGE 1.
*         14. POST FORMAT MESSAGE 7  IF  THE  GENERAL  STATUS  IS  4700 
*             OCTAL.
*         15. POST FORMAT MESSAGE 0 IF THE GENERAL STATUS IS  NOT  5200 
*             OCTAL.
*         16. POST FORMAT MESSAGE 11 IF BIT 0 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         17. POST FORMAT MESSAGE 12 IF BIT 1 IS SET IN DETAILED STATUS 
*             WORD 17 DECIMAL.
*         18. POST FORMAT MESSAGE 1.
*         19. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         20. EXIT TO MODULE DL898M.
* 
/ 
*         ENTRY-
*         B12 CONTAINS THE LINE NUMBER IN THE DISPLAY BUFFER FOR THE
*           NEXT MESSAGE. 
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT WILL ALWAYS BE MADE TO MODULE DL898M WITH THE PRESERVICE 
*           FORECAST GROUP NUMBER IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DL898M - 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 ADDRESS FIELD SYNC BYTE 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 ERROR. 
7  FORMAT FMD ADDRESS FIELD CHECKWORD ERROR.
10 FORMAT FMD DATA FIELD CHECKWORD ERROR. 
11 FORMAT FMD NONCORRECTABLE ADDRESS FIELD CHECKWORD ERROR. 
12 FORMAT FMD NONCORRECTABLE DATA FIELD CHECKWORD 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
   B15=2                               *MESSAGE NUMBER
   IF(SB(B13+1).AND.17.EQ.0) GOTO 70   *SYNC BYTE ERROR 
   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=0                               *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
40 B15=6                               *MESSAGE NUMBER
   IF(B14.AND.1.NE.0) GOTO 70          *DATA FIELD ERROR
   B15=1                               *MESSAGE NUMBER
   GOTO 70                             *GO TO POST MESSAGE
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) GOTO 70          *ADDRESS FIELD ERROR 
   B15=10                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) GOTO 70          *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) GOTO 70         *IF 4700 STATUS
* 
/---------PROCESS 5200 OCTAL GENERAL STATUS ERROR.
* 
   B15=0                               *MESSAGE NUMBER
   IF(SB(B13).NE.5200) GOTO 70         *NOT 5200 STATUS 
   B15=11                              *MESSAGE NUMBER
   IF(B14.AND.1.NE.0) GOTO 70          *ADDRESS FIELD 
   B15=12                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) GOTO 70          *DATA FIELD ERROR
   B15=1                               *MESSAGE NUMBER
* 
/---------POST THE MESSAGE IN THE DISPLAY BUFFER. 
* 
70 MSG B15 TO LINE B12       *POST THE MESSAGE
* 
/---------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 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL898J PROCESS GENERAL STATUS 
   MODULE DL898K,LSFMD2(16),LOCK
***       DL898K - ISOLATE DRIVE FAULT
**        DL898K - ISOLATE DRIVE FAULT
*         DL898K - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         DL898K  WILL  DETERMINE  THE CAUSE FOR THE FAULT IN THE FIXED 
*         MODULE DRIVE. 
* 
*         METHOD- 
*         1.  IF  THE  GENERAL STATUS IS EQUAL TO 7777 OR 0000, EXIT TO 
*             MODULE DL898M.
*         2.  POST  FORMAT  MESSAGE  0 IF THE FIXED MODULE DRIVE IS NOT 
*             SELECTED AND RESERVED.
*         3.  IF  THE  GENERAL  STATUS IS NOT EQUAL TO 5020, GO TO STEP 
*             21. 
*         4.  IF  BITS 0-7 OF DETAILED STATUS WORD 13 DECIMAL ARE EQUAL 
*             TO 000 OR 377, GO TO STEP 21. 
*         5.  POST FORMAT  MESSAGE  1  IF  THE STATUS VALID BIT  IS NOT 
*             ACTIVE IN STATUS WORD 12 DECIMAL. 
*         6.  POST  FORMAT  MESSAGE  2 IF BITS 00-07 OF DETAILED STATUS 
*             WORD 2 IS EQUAL TO BITS 00-07 OF DETAILED STATUS WORD  12 
*             DECIMAL.
*         7.  POST FORMAT MESSAGE 3 IF BITS 0-7 OF DETAILED STATUS WORD 
*             12 DECIMAL IS EQUAL TO 216 OCTAL. 
*         8.  GO TO STEP 21 IF BIT 3 (DRIVE READY AND SAFE) IS NOT  SET 
*             IN DETAILED STATUS WORD 12 DECIMAL. 
*         9.  POST FORMAT MESSAGE 4 IF THE COMMAND ISSUED TO THE  DRIVE 
*             IN DETAILED STATUS WORD 13 DECIMAL IS EQUAL TO 40 THROUGH 
*             46 HEX. 
*         10. POST FORMAT MESSAGE 11 IF THE COMMAND ISSUED TO THE DRIVE 
*             IN DETAILED STATUS WORD 13 DECIMAL IS NOT EQUAL TO 48  OR 
*             4A HEX. 
*         11. POST FORMAT MESSAGE 5 IF BIT 3 (DRIVE OFF  LINE)  IS  NOT 
*             ACTIVE  IN  DETAILED  STATUS  WORD  15 DECIMAL. 
*         12. IF BIT 4 (WRITE/READ  STATUS  ERROR)  IS  NOT  ACTIVE  IN 
*             DETAILED STATUS WORD 15 DECIMAL, GO TO STEP 15. 
*         13. IF BIT 3 (WRITE/READ STATUS ERROR) IS ACTIVE IN  DETAILED 
*             STATUS WORD 12 DECIMAL, GO TO STEP 21.
*         14. POST FORMAT MESSAGE 6.
*         15. IF  BIT  5  (DRIVE  CHECK  STATUS ERROR) IS NOT ACTIVE IN 
*             DETAILED STATUS WORD 15 DECIMAL, GO TO STEP 18. 
*         16. IF BIT 5 (DRIVE CHECK STATUS ERROR) IS ACTIVE IN DETAILED 
*             STATUS WORD 12 DECIMAL, GO TO STEP 21.
*         17. POST FORMAT MESSAGE 7.
*         18. POST FORMAT MESSAGE 11 IF  BIT  6  (ACCESS  CHECK  STATUS 
*             ERROR) IS NOT ACTIVE IN DETAILED STATUS WORD 15 DECIMAL.
*         19. IF BIT 00  (ACCESS  CHECK  STATUS  ERROR)  IS  ACTIVE  IN 
*             DETAILED STATUS WORD 12 DECIMAL, GO TO STEP 21. 
*         20. POST FORMAT MESSAGE 10. 
*         21. IF  THE  GENERAL  STATUS  IS EQUAL TO 7777 EXIT TO MODULE 
*             DL898M. 
*         22. POST  FORMAT  MESSAGE  2 IF BITS 00-07 OF DETAILED STATUS 
*             WORD 2 IS EQUAL TO BITS 00-07 OF DETAILED STATUS WORD  12 
*             DECIMAL.
*         23. POST FORMAT MESSAGE 3 IF BITS 0-7 OF DETAILED STATUS WORD 
*             12 DECIMAL IS EQUAL TO 216 OCTAL. 
*         24. EXIT TO MODULE DL898L IF BIT 0 (ACCESS CHECK STATUS ERROR 
*             IS NOT SET IN DETAILED STATUS WORD 12 DECIMAL.
*         25. POST FORMAT MESSAGE 12 IF BIT  1  (FMD  SERVO  OFF  TRACK 
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL. 
*         26. POST FORMAT MESSAGE 13  IF  BIT  2  (FMD  SEEK  OVERSHOOT 
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL. 
*         27. POST FORMAT MESSAGE 14 IF BIT 3 (FMD SERVO TIMEOUT ERROR) 
*             IS ACTIVE IN DETAILED STATUS WORD 9 DECIMAL.
*         28. POST FORMAT MESSAGE 15. 
*         29. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         30. EXIT TO MODULE DL898M.
* 
/ 
*         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 DL898L IF THE CAUSE OF THE FAULT IN THE DRIVE
*           HAS NOT BEEN DETERMINED.
*         EXIT TO MODULE DL898M IF THE CAUSE OF THE FAULT IN THE DRIVE
*           WAS DETERMINED WITH THE PRESERVICE FORECAST GROUP NUMBER
*           IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DL898L - ISOLATE DRIVE FAULT. 
*         DL898M - 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 26 ARE IN MODULE DL898K.          * 
*         *         STEPS 26 THROUGH 46 ARE IN MODULE DL898L.         * 
*         *                                                           * 
*         *      NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE     * 
*         *            TO MODULE DL898M.                              * 
*         *                                                           * 
*         ************************************************************* 
* 
*         1.  IF GENERAL STATUS IS EQUAL TO 7777 OCTAL, GO TO STEP 20.
*         2.  IF GENERAL STATUS IS EQUAL TO 0000 OCTAL, GO TO STEP 20.
*         3.  IF BIT 8 IN DETAILED STATUS WORD 9 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD NOT SELECTED AND RESERVED. 
*         4.  IF GENERAL STATUS IS NOT EQUAL TO 5020 OCTAL, GO TO STEP
*             20. 
*         5.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL
*             ARE EQUAL TO ZERO, GO TO STEP 20. 
*         6.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 13 DECIMAL
*             ARE EQUAL TO 377 OCTAL, GO TO STEP 20.
*         7.  IF BIT 1 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD STATUS VALID NOT ACTIVE. 
*         8.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 2 DECIMAL 
*             ARE EQUAL BITS 0 THROUGH 7 OF DETAILED STATUS WORD 12 
*             DECIMAL, POST THE MESSAGE CONTROLLER BUS OUT PARITY 
*             ERROR.
*         9.  IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 12 DECIMAL
*             ARE EQUAL TO 216 OCTAL, POST THE MESSAGE FMD DECODE 
*             PARITY ERROR OR ILLEGAL DECODE. 
*         10. IF BIT 3 IN DETAILED STATUS WORD 14 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 20.
*         11. 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. 
*         12. 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. 
*         13. IF BIT 3 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD STATUS INDICATES DRIVE OFF 
*             LINE. 
*         14. IF BIT 4 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 16.
*         15. 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. 
*         16. IF BIT 5 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 18.
*         17. 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.
*         18. IF BIT 6 IN DETAILED STATUS WORD 15 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.
*         19. 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. 
*         20. IF DETAILED STATUS WORD 1 IS EQUAL TO 7777, EXIT TO 
*             MODULE DL898M.
*         21. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 2 DECIMAL 
*             ARE EQUAL BITS 0 THROUGH 7 OF DETAILED STATUS WORD 12 
*             DECIMAL, POST THE MESSAGE CONTROLLER BUS OUT PARITY 
*             ERROR.
*         22. IF BITS 0 THROUGH 7 IN DETAILED STATUS WORD 12 DECIMAL
*             ARE EQUAL TO 216 OCTAL, POST THE MESSAGE FMD DECODE 
*             PARITY ERROR OR ILLEGAL DECODE. 
*         23. IF BIT 0 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 27.
*         24. IF BIT 1 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD SERVO OFF TRACK ERROR.
*         25. IF BIT 2 IN DETAILED STATUS WORD 9 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD SEEK OVERSHOOT ERROR. 
*         26. 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.
*         27. IF BIT 3 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, GO TO STEP 39.
*         28. IF BIT 4 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD HEAD SHORT ERROR. 
*         29. IF BIT 5 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD INDEX CHECK ERROR.
*         30. IF BIT 6 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD CONTROL ERROR.
*         31. IF BIT 7 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD WRITE TRANSITION ERROR. 
*         32. IF BIT 8 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD WRITE CURRENT ERROR.
*         33. IF BIT 9 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD MULTILPE HEAD ERROR.
*         34. IF BIT 10 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD WRITE OVERRUN ERROR.
*         35. IF BIT 11 IN DETAILED STATUS WORD 11 DECIMAL IS EQUAL TO
*             ZERO, GO TO STEP 37.
*         36. 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.
*         37. IF BIT 2 IN DETAILED STATUS WORD 11 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD WRITE WHILE IN OFFSET 
*             ERROR.
*         38. 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.
*         39. IF BIT 5 IN DETAILED STATUS WORD 12 DECIMAL IS EQUAL TO 
*             ZERO, POST THE MESSAGE FMD FAULT CANNOT BE ISOLATED.
*         40. IF BIT 1 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD START SWITCH NOT ON. 
*         41. IF BIT 0 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD DRIVE MOTOR NOT AT SPEED.
*         42. IF BIT 2 IN DETAILED STATUS WORD 8 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD AIR SWITCH NOT MADE. 
*         43. IF BIT 3 IN DETAILED STATUS WORD 2 DECIMAL IS NOT EQUAL 
*             TO ZERO, POST THE MESSAGE FMD SEQUENCE ERROR LATCH ERROR. 
*         44. IF BIT 2 IN DETAILED STATUS WORD 7 DECIMAL IS EQUAL TO
*             ZERO, POST THE MESSAGE FMD HDA SEQUENCE NOT COMPLETE. 
*         45. IF BIT 6 IN DETAILED STATUS WORD 12 DECIMAL IS NOT EQUAL
*             TO ZERO, POST THE MESSAGE FMD SECTOR COMPARE ERROR. 
*         46. 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.
*         47. EXIT TO MODULE DL898M.
* 
/---------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. 
* 
   B14=SB(B13+14) AND 377           *DETAILED STATUS WORD 12
   B15=2                                *MESSAGE NUMBER 
   IF(SB(B13+2).AND.377.EQ.B14)GOTO 70  *IF ECHO BUS MODE 
   B15=3                                *MESSAGE NUMBER 
   IF(B14.EQ.216) GOTO 70               *ECHO COMMAND MODE
* 
/---------CHECK FOR THE DRIVE READY AND SAFE. 
* 
   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 98M   *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. 
* 
   B14=SB(B13+14) AND 377           *DETAILED STATUS WORD 12
   B15=2                                *MESSAGE NUMBER 
   IF(SB(B13+2).AND.377.EQ.B14)GOTO 70  *IF ECHO BUS MODE 
   B15=3                                *MESSAGE NUMBER 
   IF(B14.EQ.216) GOTO 70               *ECHO COMMAND MODE
* 
/---------CHECK FOR FIXED MODULE DRIVE ACCESS CHECK ERROR.
* 
   IF(B14.AND.1.EQ.0) EXIT TO 98L    *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
* 
/---------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 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL898K ISOLATE DRIVE FAULT
   MODULE DL898L,LSFMD2(16),LOCK
***       DL898L - ISOLATE DRIVE FAULT
**        DL898L - ISOLATE DRIVE FAULT
*         DL898L - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         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 ACTIVE IN 
*             DETAILED STATUS WORD 12 DECIMAL, GO TO STEP 15. 
*         2.  POST  FORMAT  MESSAGE  1  IF  BIT 4 (HEAD SHORT ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         3.  POST  FORMAT  MESSAGE  2  IF BIT 5 (INDEX CHECK ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         4.  POST  FORMAT MESSAGE 3 IF BIT 6 (CONTROL ERROR) IS ACTIVE 
*             IN DETAILED STATUS WORD 11 DECIMAL. 
*         5.  POST  FORMAT  MESSAGE 4 IF BIT 7 (WRITE TRANSITION ERROR) 
*             IS ACTIVE IN DETAILED STATUS WORD 11 DECIMAL. 
*         6.  POST  FORMAT  MESSAGE 5 IF BIT 8 (WRITE CURRENT ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         7.  POST  FORMAT  MESSAGE 6 IF BIT 9 (MULTIPLE HEAD ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         8.  POST  FORMAT MESSAGE 7 IF BIT 10 (WRITE OVERRUN ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         9.  GO  TO STEP 12 IF BIT 11 IS NOT ACTIVE IN DETAILED STATUS 
*             WORD 11 DECIMAL.
*         10. POST  FORMAT  MESSAGE 10 IF BIT 4 (FMD NOT WRITE ENABLED) 
*             IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.
*         11. POST FORMAT MESSAGE 11. 
*         12. POST FORMAT MESSAGE 12 IF BIT 2 (WRITE  WHILE  IN  OFFSET 
*             ERROR) IS ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         13. POST FORMAT MESSAGE 13 IF BIT 3 (WRITE  OR  READ  AND  NO 
*             CONTROL  SELECT  ERROR) IS ACTIVE IN DETAILED STATUS WORD 
*             11 DECIMAL. 
*         14. POST FORMAT MESSAGE 14. 
*         15. POST FORMAT MESSAGE 0 IF BIT 5 (DRIVE CHECK ERROR) IS NOT 
*             ACTIVE IN DETAILED STATUS WORD 12 DECIMAL.
*         16. POST FORMAT MESSAGE 15 IF BIT 1 (FMD START SWITCH ON)  IS 
*             NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL. 
*         17. POST FORMAT MESSAGE 16 IF BIT 0 (FMD DRIVE MOTOR  NOT  AT 
*             SPEED) IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL. 
*         18. POST FORMAT MESSAGE 17 IF BIT 2 (FMD AIR SWITCH NOT MADE) 
*             IS NOT ACTIVE IN DETAILED STATUS WORD 8 DECIMAL.
*         19. POST FORMAT MESSAGE 20 IF BIT 3 (SEQUENCE ERROR LATCH) IS 
*             NOT ACTIVE IN DETAILED STATUS WORD 2. 
*         20. POST FORMAT MESSAGE  21  IF  BIT  07  (HDA  SEQUENCE  NOT 
*             COMPLETE) IS NOT ACTIVE IN DETAILED STATUS WORD 2.
*         21. POST FORMAT MESSAGE 22 IF BIT 5 (INDEX  CHECK  ERROR)  IS 
*             ACTIVE IN DETAILED STATUS WORD 11 DECIMAL.
*         22. POST FORMAT MESSAGE 23 IF BIT 6 (SECTOR COMPARE ERROR) IS 
*             ACTIVE IN DETAILED STATUS WORD 12 DECIMAL.
*         23. POST FORMAT MESSAGE 24. 
*         24. DETERMINE  THE  PRESERVICE  FORECAST GROUP NUMBER FOR THE 
*             MESSAGE POSTED AND PLACE THE NUMBER IN THE B14  REGISTER. 
*         25. EXIT TO MODULE DL898M.
* 
/ 
*         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 DL898M WITH THE PRESERVICE 
*           FORECAST GROUP NUMBER IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DL898M - 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 NDEX 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
* 
/---------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 98M               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DL898L ISOLATE DRIVE FAULT
   MODULE DL898M,LSFMD2(16),LOCK
***       DL898M - POST PRESERVICE FORECAST GROUP 
**        DL898M - POST PRESERVICE FORECAST GROUP 
*         DL898M - POST PRESERVICE FORECAST GROUP 
*         --------------------------------------- 
* 
*         PURPOSE-
*         POST  THE  PRESERVICE  FORECAST  GROUP MESSAGE AND REPORT THE 
*         ERROR TO THE OPERATOR.
* 
*         METHOD- 
*         1.  IF THE  MODULE  NUMBER IN THE B1 REGISTER IS LESS THAN 12 
*             DECIMAL OR LESS, SET THE PRESERVICE FORECAST GROUP NUMBER 
*             IN  THE  B14  REGISTER  FOR  THE  FOR THE FMDC 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 NUMBER IN THE EM REGISTER.
*         3.  POST THE PRESERVICE FORECAST GROUP MESSAGE. 
*         4.  REPORT THE ERROR TO THE OPERATOR. 
* 
/ 
*         ENTRY-
*         B12 = DISPLAY LINE NUMBER.
*         B14 = 0 FOR PRESERVICE FORECAST GROUP FMDC,  1 FOR PRESERVICE 
*               FORECAST  GROUP FMDD,  2 FOR PRESERVICE FORECAST  GROUP 
*               FMDC/FMDD, OR 3 FOR PRESERVICE FORECAST GROUP FMDD/FMDC 
*               ON PRODUCT OVERLAY DETECTED ERRORS. 
*         EM  = 0 FOR PRESERVICE FORECAST GROUP FMDC,  1 FOR PRESERVICE 
*               FORECAST  GROUP FMDD,  2 FOR PRESERVICE FORECAST  GROUP 
*               FMDC/FMDD, OR 3 FOR PRESERVICE FORECAST GROUP FMDD/FMDC 
*               ON MODULE DETECTED ERRORS.
* 
*         EXIT- 
*         EXIT IS ALWAYS TO MODULE DL898N.
* 
*         SUBMODULES REFERENCED-
*         DL898N - RESTART CONTROLLER.
* 
*         REGISTERS USED- 
*         B12 = DISPLAY LINE NUMBER.
*         B13 = STATUS BUFFER INDEX.
*         B14 = PRESERVICE FORECAST GROUP NUMBER. 
*         B15 = TEMPORARY STORAGE.
* 
*         BUFFERS USED- 
*         NONE. 
* 
* 
/---------MESSAGES POSTED BY THE MODULE.
* 
1  FORMAT DL8 - FMD CONFIDENCE TEST 
2  FORMAT PRESERVICE FORECAST GROUP FMDC
3  FORMAT PRESERVICE FORECAST GROUP FMDD
4  FORMAT PRESERVICE FORECAST GROUP FMDC/FMDD 
5  FORMAT PRESERVICE FORECAST GROUP FMDD/FMDC 
6  FORMAT --------------------------------------------------
7  FORMAT 
10 FORMAT TRUE DISK ADD CYL=*OCT TRK=*O SEC=*O
* 
/---------SET PRESERVICE FORECAST GROUP IF MODULES 1-11.
* 
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 
   B12 = B12 + 1
   IF(ES.AND.TM.EQ.0)B12=B12+1   *IF KL DISPLAY 
   MSG 10 (B7,B6,B5) TO LINE B12   *TRUE DISK ADD ON WRITE VERIFY 
30 IF(B14.NE.7777)B14=B14+2  *ADJUST MESSAGE NUMBER IN B14
   IF(B1.LE.11D) B14=2       *IF MODULES IS 1-11
* 
/---------IF NOT A PRODUCT OVERLAY ERROR, USE THE PRESERVICE
/---------FORECAST GROUP IN THE EM REGISTER.
* 
   IF(EC.LT.4000) B14=EM+2   *SET USER SUPPLIED GROUP NO. 
   IF(B14.NE.7777) GOTO 60   *IF LEGAL PRESERVICE GROUP 
   B14=2                     *DEFAULT IS FMDC PRESERVICE
   IF(EC.AND.4077.EQ.4031)B14=4  *IF COMPARE ERROR
* 
/---------POST THE MESSAGE IN THE DISPLAY DISPLAY BUFFER. 
* 
60 MSG B14 TO LINE 2         *PRESERVICE FORECAST MESSAGE 
* 
/---------IF TERMINAL MODE, BLANK FIRST TWO DISPLAY LINES.
* 
   IF(ES.AND.TM.EQ.0)GOTO 70  *IF NOT TERMINAL MODE 
   MSG 7 TO LINE 0           *BLANK FIRST TWO DISPLAY LINES 
   MSG 7 TO LINE 1
   GOTO 72                   *JUMP
70 MSG 1 TO LINE 0           *TEST TITLE LINE 
72 PICTURE
   HALT                      *STOP ON THE ERROR 
   MSG 6 TO PRINT            *TERMINATE THE MESSAGE 
   BLANK
   EXIT TO 98N               *EXIT THE MODULE 
   END 20                    *END OF MODULE 
COMPILE                      *DL898M POST PRESERVICE FORECAST GROUP 
   MODULE DL898N,LSFMD2(16),LOCK
***       DL898N - RESTART CONTROLLER 
**        DL898N - RESTART CONTROLLER 
*         DL898N - RESTART CONTROLLER 
*         --------------------------- 
* 
*         PURPOSE-
*         DL898N  WILL  ISSUE A RESET COMMAND TO THE 7155 CONTROLLER IF 
*         THE CONTROLLER DOES NOT RESPOND CORRECTLY TO A RES COMMAND. 
* 
*         METHOD- 
*         1.  IF  THE  NUMBER  IN  THE  B8  REGISTER  IS NOT A 40 OCTAL 
*             (RES,CONTOLLER) OR A  41  OCTAL  (RES  DRIVE),  EXIT  THE 
*             MODULE. 
*         2.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5324 
*             OR 5325, EXIT THE MODULE
*         3.  EXECUTE A RES,CONTROLLER COMMAND AND GO TO STEP 5  IF  NO 
*             ABORT OCCURS. 
*         4.  IF THE ERROR CODE IN THE EC REGISTER IS NOT EQUAL TO 5324 
*             OR 5325, EXIT THE MODULE
*         5.  EXECUTE A COMMAND SEQUENCE OF RESET,  STATUS,DETAIL,  AND 
*             REL AND GO TO STEP 7 IF AN ABORT OCCURS.
*         6.  EXIT THE MODULE.
*         7.  REPORT  AN  ERROR  INDICATING  THAT THE PREVIOUS  COMMAND 
*             SEQUENCE FAILED AND THAT THIS INDICATES A PROBLEM IN  THE 
*             CONTOLLER OR A PROBLEM WITH THE CONTROLWARE.
*         8.  TERMINATE EXECUTION OF THE PRIMARY MODULE.
* 
/ 
*         ENTRY-
*         B1  = MODULE NUMBER IN OCTAL. 
*         B8  = COMMAND NUMBER FOR THE COMMAND THAT WAS BEING EXECUTED. 
*         EC  = THE ERROR CODE FOR THE LAST ERROR REPORTED. 
* 
*         EXIT- 
*         EXIT TO THE CALLING MODULE IF THE RESET COMMAND DOES NOT HAVE 
*         TO BE EXECUTED OR IF THE RESET COMMAND  CORRECTS THE PROBLEM. 
*         TERMINATE EXECUTION OF THE CALLING MODULE IF THE RESET
*         COMMAND MUST BE EXECUTED BUT IT DOES NOT CORRECT THE PROBLEM. 
* 
*         SUBMODULES REFERENCED-
*         NONE. 
* 
*         REGISTERS USED- 
*         NONE. 
* 
*         BUFFERS USED- 
*         NONE. 
* 
1  FORMAT DL8 - FMD CONFIDENCE TEST 
2  FORMAT DL8*D MODULE ABORTED - CONTROLLER NOT RESPONDING
3  FORMAT PRESERVICE FORECAST GROUP FMDC
4  FORMAT ABNORMAL RESPONSE TO A RESET/DETAILED STATUS SEQ. 
5  FORMAT POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM. 
6  FORMAT DL8*D MODULE EXECUTION ABORTED
7  FORMAT --------------------------------------------------
* 
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.
* 
30 IF(B8.EQ.40) GOTO 32      *IF RES CONTROLLER COMMAND 
   IF(B8.NE.41) EXIT         *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)EXIT  *IF NO RESERVE ERROR, EXIT
   IF(EC.AND.4077.EQ.4025)EXIT  *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)EXIT  *IF NO RESERVE ERROR, EXIT
   IF(EC.AND.4077.EQ.4025)EXIT  *IF ABNORMAL STATUS, EXIT 
* 
/---------ISSUE THE RESET COMMAND AND RELEASE THE CONTOLLER.
* 
36 RESET,ABT 40              *ZERO WORD AUTOLOAD
   STATUS,DETAIL,ABT 40      *GET DETAILED STATUS 
   REL,ABT 40                *RELEASE THE CONTROLLER
   EXIT                      *EXIT THE MODULE 
* 
/---------DISPLAY CONTROLLER/CONTROLWARE ERROR MESSAGE. 
* 
40 IF(ES.AND.TM.NE.0) GOTO 70 
   MSG 1 TO LINE 0           *TEST NAME MESSAGE 
70 MSG 3 TO LINE 2           *PRESERVICE FORECAST GROUP MSG.
   MSG 4 TO LINE 5           *ERROR MESSAGE 
   MSG 5 TO LINE 7           *INFORMATION MESSAGE 
   MSG 6 (B1) TO LINE 10     *INFORMATION MESSAGE 
   PICTURE
   HALT                      *STOP ON ERROR 
   MSG 7 TO PRINT            *TERMINATE PRINT MESSAGES
   BLANK
   MSG 2 (B1) TO PRINT,DAYFILE,DISPLAY  *MODULE ABORT MSG.
   END 30                               *END OF THE MODULE
COMPILE                      *DL898N RESTART CONTROLLER 
*ENDIF
*IF DEF,PFMD
   MODULE DH898G,DEMA2(14),LOCK 
***       DH898G - PROCESS GENERAL STATUS 
**
*         DH898G - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH898G  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 DH898P.
*         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 
*             DH898N. 
*         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 DH898K.
*         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 
*             DH898H. 
*         15. IF BIT 0 IS SET IN DETAILED STATUS WORD 17 DECIMAL,  EXIT 
*             MODULE DH898I, OTHERWISE EXIT TO MODULE DH898J. 
*         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 DH898P.
* 
/ 
*         ENTRY-
*         B12  CONTAINS  THE  LINE NUMBER IN THE DISPLAY BUFFER FOR THE 
*            NEXT MESSAGE.
*         STATUS BUFFER CONTAINS THE STATUS INFORMATION.
* 
*         EXIT- 
*         EXIT TO MODULE DH898H 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 DH898I IF 
*            BIT 0 IS SET IN DETAILED STATUS WORD 16 DECIMAL, OR MODULE 
*            DH898J IF BIT 0 IS NOT SET  IN  DETAILED  STATUS  WORD  16 
*            DECIMAL. 
*         EXIT TO MODULE DH898N IF THE GENERAL STATUS IS EQUAL TO  5020 
*            OCTAL OR THE DRIVE IS NOT READY AND SAFE.
*         EXIT TO MODULE DH898K IF THE  GENERAL  STATUS  IS  NOT  0000, 
*            0002, 0010, 2XXX, 5000, OR 5020. 
*         EXIT TO MODULE DH898P 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-
*         DH898H - PROCESS BUFFER READ OR BUFFER WRITE ERROR. 
*         DH898I - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DH898J - CONTINUE PROCESSING 5000 GENERAL STATUS. 
*         DH898K - PROCESS 4400, 4600, 4700, AND 5200 GENERAL STATUS. 
*         DH898N - ISOLATE DRIVE FAULTS.
*         DH898P - 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 DH898G.          * 
*         *         STEPS 21 THROUGH 38 ARE IN MODULE DH898H.         * 
*         *         STEPS 39 THROUGH 64 ARE IN MODULE DH898I.         * 
*         *         STEPS 65 THROUGH 82 ARE IN MODULE DH898J.         * 
*         *         STEPS 83 THROUGH 100 ARE IN MODULE DH898K.        * 
*         *                                                           * 
*         *    NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE       * 
*         *          TO MODULE DH898P.                                * 
*         *                                                           * 
*         ************************************************************* 
* 
*         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 DH898P.
*         3.  IF THE  GENERAL  STATUS  IS EQUAL TO ZERO, EXIT TO MODULE 
*             DH898P. 
*         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 DH898N 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 DH898N 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 DH898N 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 98.
*         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 DH898P.
* 
/---------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 98P  *IF INVALID STATUS
   IF(SB(B13).EQ.0) EXIT TO 98P     *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 98N  *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 98K  *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 98H  *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 98H  *BUFFER WRITE 
   IF(B14.AND.1.NE.0) EXIT TO 98I   *ADDRESS FIELD ERROR
   EXIT TO 98J                      *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 98P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898G PROCESS GENERAL STATUS 
   MODULE DH898H,DEMA2(14),LOCK 
***       DH898H - PROCESS GENERAL STATUS 
**
*         DH898H - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH898H 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 DH898L. 
*         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 DH898L. 
*         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 DH898L. 
*         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 DH898P. 
* 
/ 
*         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  DH898L  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 DH898P IF THE MESSAGE INDICATING THE  CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH898L - PROCESS GENERAL STATUS.
*         DH898P - 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 98L  *SYNC BYTE ERROR
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 98L  *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 98L  *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 98L  *NONCORRECTABLE ERROR 
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 98L  *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.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.7) B14=0        *IF MESSAGE 7
   IF(B15.EQ.10) B14=13      *IF MESSAGE 10 
   IF(B15.EQ.13) B14=2       *IF MESSAGE 13 
   EXIT TO 98P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898H PROCESS GENERAL STATUS 
   MODULE DH898I,DEMA2(14),LOCK 
***       DH898I - PROCESS GENERAL STATUS 
**
*         DH898I - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH898I  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 DH898L 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 DH898N 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  DH898L 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  DH898L 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 DH898L 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 DH898L TO PROCESS A 
*             NONCORRECTABLE ERROR. 
*         24. IF  BIT  11  DECIMAL  IS  SET  IN DETAILED STATUS WORD 16 
*             DECIMAL, EXIT TO MODULE DH898L 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 DH898P.
* 
/ 
*         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  DH898L  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 DH898N IF FMD IS NOT READY AND SAFE.
*         EXIT IS  TO MODULE DH898P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH898L - PROCESS GENERAL STATUS.
*         DH898N - ISOLATE FMD FAULTS.
*         DH898P - 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 98L   *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 98N                      *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 98L  *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 98L  *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 98L  *LOST CONTROL WORD
   B15=3                            *MESSAGE NUMBER 
   IF(B14.AND.3600.NE.0)EXIT TO 98L  *NONCORRECTABLE ERROR
   B15=2                            *MESSAGE NUMBER 
   IF(B14.AND.4000.NE.0)EXIT TO 98L  *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=2        *IF MESSAGE 4
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   IF(B15.EQ.13) B14=2       *IF MESSAGE 13 
   IF(B15.EQ.21) B14=2       *IF MESSAGE 21 
   EXIT TO 98P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898I PROCESS GENERAL STATUS 
   MODULE DH898J,DEMA2(14),LOCK 
***       DH898J - PROCESS GENERAL STATUS 
**
*         DH898J - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH898J  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 DH898N 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 DH898L 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 DH898L 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 DH898L 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 DH898L 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 DH898P.
* 
/ 
*         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  DH898L  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 DH898N IF FMD IS NOT READY AND SAFE.
*         EXIT IS  TO MODULE DH898P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH898L - PROCESS GENERAL STATUS.
*         DH898N - ISOLATE DRIVE FAULTS.
*         DH898P - 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 98N  *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 98L  *SYNC BYTE ERROR
   B15=0                            *MESSAGE NUMBER 
   IF(B14.AND.1000.NE.0)EXIT TO 98L  *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 98L   *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 98L  *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.10) B14=2       *IF MESSAGE 10 
   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 98P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898J PROCESS GENERAL STATUS 
   MODULE DH898K,DEMA2(14),LOCK 
***       DH898K - PROCESS GENERAL STATUS 
**
*         DH898K - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH898K  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-4X 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 DH898L 
*             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 DH898L 
*             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 DH898L 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 DH898L 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 DH898L 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 DH898L TO PROCESS A FMD NONCORRECTABLE ADDRESS 
*             FIELD CHECKWORD ERROR.
*         16. IF  BIT 1 IS SET IN DETAILED STATUS WORD 17 DECIMAL, EXIT 
*             TO MODULE DH898L 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 DH898P.
* 
/ 
*         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  DH898L  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 DH898P IF THE MESSAGE INDICATING THE CAUSE 
*            HAS BEEN POSTED IN THE DISPLAY BUFFER WITH THE  PRESERVICE 
*            FORECAST NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH898L - PROCESS GENERAL STATUS 
*         DH898P - 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.
7  FORMAT FMD TRACK FLAW DETECTED.
* 
/---------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 98L                         *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=7                               *MESSAGE NUMBER
   IF(SB(B13+5).AND.4000.NE.0)GOTO 70  *TRACK FLAW ERROR
   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 98L                         *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 98L      *ADDRESS FIELD ERROR 
   B15=11                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) EXIT TO 98L      *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 98L     *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 98L      *ADDRESS FIELD 
   B15=12                              *MESSAGE NUMBER
   IF(B14.AND.2.NE.0) EXIT TO 98L      *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.EQ.4) B14=2        *IF MESSAGE 4
   IF(B15.EQ.6) B14=3        *IF MESSAGE 6
   IF(B15.EQ.7) B14=1        *IF MESSAGE 7
   EXIT TO 98P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898K PROCESS GENERAL STATUS 
   MODULE DH898L,DEMA2(14),LOCK 
***       DH898L - PROCESS GENERAL STATUS 
**
*         DH898L - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH898L 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 DH898P.
*         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 DH898M.
* 
/ 
*         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  DH898P  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 DH898M IF BIT 3 IN  DETAILED  STATUS  WORD  18 
*            DECIMAL IS SET.
* 
*         SUBMODULES REFERENCED-
*         DH898M - DETERMINE FAILING HEADS. 
*         DH898P - 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) GOTO 32      *IF MESSAGE 7
   IF(B15.EQ.10) B14=3       *IF MESSAGE 10 
   IF(B15.EQ.11) B14=3       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=1       *IF MESSAGE 12 
31 EXIT TO 98P               *EXIT TO NEXT MODULE 
* 
32 B14 = 1                    *PRESET PSFG
   IF(B1.EQ.15D) B14 = 3     *IF MODULE 15
   IF(B1.EQ.17D) B14 = 3     *IF MODULE 17
   GOTO 31                   *EXIT
* 
/---------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 98M               *EXIT TO NEXT MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898L PROCESS GENERAL STATUS 
   MODULE DH898M,DEMA2(14),LOCK 
***       DH898M - PROCESS GENERAL STATUS 
**
*         DH898M - PROCESS GENERAL STATUS 
*         ------------------------------- 
* 
*         PURPOSE-
*         DH898M 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 DH898P.
/ 
*         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 DH898P TO COMPLETE THE ERROR DISPLAY WITH  THE 
*            PRESERVICE FORECAST GROUP NUMBER IN THE B14 REGISTER.
* 
*         SUBMODULES REFERENCED-
*         DH898P - 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=2       *IF MESSAGE 11 
   IF(B15.EQ.12) B14=1       *IF MESSAGE 12 
   EXIT TO 98P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898M PROCESS GENERAL STATUS 
   MODULE DH898N,DEMA2(14),LOCK 
***       DH898N - ISOLATE DRIVE FAULT
**
*         DH898N - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         DH898N  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 DH898P.
*         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 DH898O 
*         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 DH898P.
* 
/ 
*         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 DH898O IF THE CAUSE OF THE FAULT IN THE DRIVE 
*            HAS NOT BEEN DETERMINED. 
*         EXIT  TO MODULE DH898P IF THE CAUSE OF THE FAULT IN THE DRIVE 
*            WAS DETERMINED WITH THE PRESERVICE FORECAST  GROUP  NUMBER 
*            IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH898O - ISOLATE DRIVE FAULT. 
*         DH898P - 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 DH898N.          * 
*         *         STEPS 29 THROUGH 49 ARE IN MODULE DH898O.         * 
*         *                                                           * 
*         *      NOTE- AFTER POSTING A MESSAGE, EXIT WILL BE MADE     * 
*         *            TO MODULE DH898P.                              * 
*         *                                                           * 
*         ************************************************************* 
* 
*         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 DH898P.
*         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 DH898P.
* 
/---------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 98P   *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 98O  *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.5) B14=3        *IF MESSAGE 5
   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.13) B14=3       *IF MESSAGE 13 
   IF(B15.EQ.15) B14=3       *IF MESSAGE 15 
   EXIT TO 98P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898N ISOLATE DRIVE FAULT
   MODULE DH898O,DEMA2(14),LOCK 
***       DH898O - ISOLATE DRIVE FAULT
**
*         DH898O - ISOLATE DRIVE FAULT
*         ----------------------------
* 
*         PURPOSE-
*         DH898O  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. 
*         22. EXIT TO MODULE DH898P.
* 
/ 
*         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 DH898P WITH THE PRESERVICE 
*            FORECAST GROUP NUMBER IN THE B14 REGISTER. 
* 
*         SUBMODULES REFERENCED-
*         DH898P - 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 98P               *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *DH898O ISOLATE DRIVE FAULT
   MODULE DH898P,DEMA2(14),LOCK 
***       DH898P - POST PRESERVICE FORECAST GROUP 
**
*         DH898P - POST PRESERVICE FORECAST GROUP 
*         --------------------------------------- 
* 
*         PURPOSE-
*         DH898P 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 DH898Q.
*         13. EXIT TO MODULE DH898Q.
* 
/ 
*         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.
*         P8  = INPUT/OUTPUT BUFFERS DUMP ADDRESS.
* 
* 
*         EXIT- 
*         EXIT IS ALWAYS TO MODULE DH898Q.
*         THE CONTENTS OF ALL THE B REGISTERS DISPLAYED IF BIT 5 IS SET 
*            IN PARAMETER WORD P4.
*         THE CONTENTS OF THE TEN OCTAL  LOCATIONS  OF  THE  INPUT  AND 
*            BUFFER DISPLAYED STARTING AT THE INDEX IN PARAMETER WORD 8 
*            IF BIT 5 IS SET IN PARAMETER WORD P4.
* 
*         SUBMODULES REFERENCED-
*         DH898Q - RESTART CONTROLLER.
* 
*         REGISTERS USED- 
*         B13 = TEMPORARY STORAGE.
*         B14 = PRESERVICE FORECAST GROUP NUMBER. 
* 
*         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(P8=*OCTB)/B REGISTER DISPLAY DUMP- 
11 FORMAT IB(P8)  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
12 FORMAT OB(P8)  = *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 DH801-11. 
* 
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.LE.11D) B14=0       *IF MODULE IS DH801-11 
* 
/---------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
   B13 = P8                      *INDEX FOR BUFFERS 
   MSG 10(B13) TO LINE B12       *DUMP DISPLAY MESSAGE
   MSG 10(B13) TO PRINT          *DUMP DISPLAY MESSAGE
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 11 10 WORDS FROM IB(B13) TO LINE B12  *INPUT BUFFER
   MSG 11 10 WORDS FROM IB(B13) TO PRINT  *INPUT BUFFER 
   B12 = B12+1                   *UPDATE LINE NUMBER
   MSG 12 10 WORDS FROM OB(B13) TO LINE B12  *OUTPUT BUFFER 
   MSG 12 10 WORDS FROM OB(B13) TO PRINT  *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 DISABLED 
   MSG 15 TO DISPLAY, PRINT      *PAUSE MESSAGE 
   PAUSE                         *STOP ON ERROR 
60 MSG 16 TO PRINT               *TERMINATE THE MESSAGE 
   EXIT TO 98Q               *EXIT THE MODULE 
   END 20                    *END OF MODULE 
COMPILE                      *DH898P POST PRESERVICE FORECAST GROUP 
   MODULE DH898Q,DEMA2(14),LOCK 
***       DH898Q - RESTART CONTROLLER 
**
*         DH898Q - RESTART CONTROLLER 
*         --------------------------- 
* 
*         PURPOSE-
*         DH898Q  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  40  OCTAL 
*             (RES,CONTROLLER) OR A 41 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.  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. 
* 
*         BUFFERS USED- 
*         STATUS BUFFER USED FOR GENERAL AND DETAILED STATUS. 
* 
/---------MESSAGES POSTED BY THIS MODULE. 
* 
1  FORMAT PRESERVICE FORECAST GROUP FHDC
2  FORMAT DH8 ABORT ON .RESET. COMMAND
3  FORMAT DH8 ABORT ON .STATUS DETAIL. COMMAND
4  FORMAT DH8 ABORT ON .REL. COMMAND
5  FORMAT LAST FUNCTION = *OCTB 
6  FORMAT  DH898Q E0102 L*OC  CONTROLLER RESPONSE ERROR 
7  FORMAT WT=*OCTB RETRIES=*OB ERRORS=*DECD 
10 FORMAT POSSIBLE CONTROLLER OR CONTROLWARE PROBLEM
11 FORMAT DH8*D MODULE ABORTED - CONTROLLER NOT RESPONDING
12 FORMAT 
13 FORMAT --------------------------------------------------
* 
/---------DETERMINE IF THE ERROR WAS ON A RESERVE COMMAND.
* 
30 IF(B8.EQ.40) GOTO 32      *IF RES CONTROLLER COMMAND 
   IF(B8.NE.41) 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 NO RES ERROR, 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 NO RES ERROR, 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.NE.0)GOTO 52  *IF KL DISPLAY
   MSG 12 TO LINE B12         *BLANK LINE 
   B12 = B12+1                *UPDATE DISPLAY LINE NUMBER 
52 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. 
   END 30                               *END OF THE MODULE
COMPILE                      *DH898Q RESTART CONTROLLER 
*ENDIF
*IF DEF,PFMD,1
   MODULE DH899,DEMA1(14),LOCK
*IF DEF,SFMD,1
   MODULE D8899,FMDHT(7),LOCK                                            D88
*IF DEF,LSFMD,1 
   MODULE DL899,LSFMD1(16),LOCK 
1  FORMAT COPYRIGHT CONTROL DATA CORP. 1979                              D88
/                                                                        D88
/   PARAMETER DESCRIPTION.                                               D88
*IF DEF,PFMD,1
/   NOTE- MODULES DH801 THRU DH839 OF THE TEST DO NOT USE 
*IF DEF,SFMD,1
/   NOTE- MODULES D8801 THRU D8839 OF THE TEST DO NOT USE 
*IF DEF,LSFMD,1 
/   NOTE- MODULES DL801 THRU DL839 OF THE TEST DO NOT USE 
/         PARAMETERS.                                                    D88
/                                                                        D88
/         P0 - LLLL - LOWER CYLINDER                                     D88
/              (RIGHT JUSTIFIED, ZERO FILLED)                            D88
/                                                                        D88
/         P1 - UUUU - UPPER CYLINDER                                     D88
/              (RIGHT JUSTIFIED, ZERO FILLED)                            D88
/                                                                        D88
/         P2 - LLUU - LOWER AND UPPER TRACKS                             D88
/              (RIGHT JUSTIFIED, ZERO FILLED)                            D88
/                                                                        D88
/         P3 - LLUU - LOWER AND UPPER SECTORS                            D88
/              (RIGHT JUSTIFIED, ZERO FILLED)                            D88
/                                                                        D88
/         P4 - XXXX - ENABLES                                            D88
/              XXX1 - FLAW REPORTING                                     D88
/              XX1X - CHANGE PATTERN ON TRACK BOUNDARIES                 D88
/              XX2X - CHANGE PATTERN ON CYLINDER BOUNDARIES              D88
/                   * IF NEITHER TRACK OR CYLINDER                       D88
/                     BOUNDARIES ARE SET, THE PATTERN CHANGE             D88
/                     WILL DEFAULT TO DISK BOUNDARIES.                   D88
/              XX4X - DUMP EIGHT LOCATIONS OF THE 
/                     INPUT AND OUTPUT BUFFERS AND THE B0                D88
/                     THROUGH B15 REGISTERS (SEE P8). 
/                                                                        D88
/         P5 - XXXX - DISABLES                                           D88
/              XXX1 - ADDRESS CODING                                     D88
/              XXX2 - READ DISABLE                                       D88
/              XXX4 - WRITE DISABLE                                      D88
/                     (EITHER WRITE OR READ MUST BE ENABLED.)            D88PTR4
/              XX1X - RANDOM DATA SET DISABLE                            D88
/                                                                        D88
/         P6 - XXXX - DATA CONTROL                                       D88
/              0000 - RANDOM DATA SET                                    D88
/                     BIT 3 MUST BE CLEAR IN P5                          D88
/                        THE RANDOM START KEY WORD WILL COME             D88
/                        FROM THE REAL TIME CLOCK                        D88
/              XXXX - RANDOM DATA SET                                    D88
/         (NON-ZERO)  BIT 3 MUST BE CLEAR IN P5                          D88
/                        THE RANDOM START WILL USE THIS DATA             D88
/                        CONTROL WORD AS THE KEY START WORD.             D88
/              XXXX - RANDOM DATA DISABLED                               D88
/         (NON-ZERO)  BIT 3 MUST BE SET IN P5                            D88
/                        THE BUFFER WILL BE FILLED WITH THIS             D88
/                        FIXED DATA CONTROL WORD.                        D88
/                                                                        D88
/         P7 - 00XY - MARGINS                                            D88
/              00X0-NORMAL OFFSETS      000Y-NORMAL STROBES              D88
/              00X1-EARLY OFFSETS       001Y-FORWARD STROBES             D88
/              00X2-LATE OFFSETS        002Y-REVERSE STROBES             D88
/              0077-ALL MARGINS RUN                                      D88
/                                                                        D88
/         P8 - 0000 - FIRST WORD ADDRESS OF BUFFER DUMP (P4)
/                     THE CONTENTS OF THIS PARAMETER WORD IS
/                     ASSUMED TO BE A LEGAL BUFFER ADDRESS
/                     AND WILL NOT BE CHECKED FOR BEING AN
/                     ILLEGAL BUFFER ADDRESS. 
/                                                                        D88
/         P9 - 0000 - ITERATION COUNT                                    D88
/                     ITERATION COUNT TIMES 4096 IF RANDOM               D88
/                     COUNT                                              D88
/                     THIS PARAMETER IS USED BY MODULES                  D88
/                     40-50                                              D88
/                                                                        D88
2  END 2                     *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE,SOURCE               *DH899 PARAMETER DOCUMENTATION 
*IF DEF,SFMD,1
COMPILE,SOURCE               *D8899 PARAMETER DOCUMENTATION              D88
*IF DEF,LSFMD,1 
COMPILE,SOURCE               *DL899 PARAMETER DOCUMENTATION 
*IF DEF,PFMD,1
   MODULE DH899A,DEMA1(14),LOCK 
*IF DEF,SFMD,1
   MODULE D8899A,FMDHT(7),LOCK                                           D88
*IF DEF,LSFMD,1 
   MODULE DL899A,LSFMD1(16),LOCK
/                                                                        D88
/        MODULE         MODULE NAME           ACCESS   RUN               D88
/        NUMBER       AND DESCRIPTION         LEVEL    TIME              D88
/        ------       ---------------         ------- ------             D88
/    CONFIDENCE PORTION OF TEST                                          D88
/                                                                        D88
*IF DEF,PFMD
/         01   CONNECT CONTROLLER TEST           1     2 SEC
/         03   ZERO WORD AUTOLOAD TEST           1     1 SEC
/         05   GENERAL STATUS TEST               1     1 SEC
/         07   DETAILED STATUS TEST              1     1 SEC
/         09   DIAGNOSTIC WRITE/READ TEST        1     2 SEC
/         11   WRITE/READ COUPLER BUFFER TEST    1     7 SEC
/         12   DRIVE BUS OUT TEST                3     1 SEC
/         13   SEEK TIME MEASUREMENT TEST        1     3 SEC
*IF -DEF,CMSE17X,1
/         14   ESM SYSWR/SYSRD TEST              1     5 SEC
*IF DEF,CMSE17X,1 
/         15   READ FLAW MAPS TEST               1     4 SEC
*IF -DEF,CMSE17X,4
*IF DEF,SECURE,1
/         15   READ FLAW MAPS TEST               3     4 SEC
*IF -DEF,SECURE,1 
/         15   READ FLAW MAPS TEST               1     4 SEC
*IF -DEF,CMSE17X,1
/         16   ESM DIAGWR/DIAGRD TEST            1     9 SEC
/         17   READ PREWRITTEN SECTORS           3     3 SEC
*IF -DEF,CMSE17X,2
/         18   READ PREWRITTEN SECTORS (1/1)     3     4 SEC
/         19   WRITE/DIAGNOSTIC READ TEST        3     1 SEC
/         21   WRITE PREALLOCATED CYLINDER       3     1 SEC
/              TEST 
/         22   READ PREALLOCATED CYLINDER        3    12 SEC
/              TEST 
*IF -DEF,CMSE17X,8
/         23   WRITE PREALLOCATED CYLINDER       3     1 SEC
/              TEST (1/1) 
/         24   READ PREALLOCATED CYLINDER        3    91 SEC
/              TEST (1/1) 
/         25   CORRECTION VECTOR LOGIC TEST      3     7 SEC
/         27   WRITE VERIFY PREALLOCATED         3     1 SEC
/              CYLINDER TEST AT 2/1 INTERLACE 
/         29   FORCE WRITE VERIFY ERROR TEST     3     1 SEC
/         31   READ CHECKWORD TEST               1     4 SEC
/         33   RANDOM SEEK TEST                  3     4 SEC
*IF -DEF,CMSE17X,2
/         35   WRITE CODED CYLINDER TEST         3     2 SEC
/         37   READ/VERIFY CODED CYLINDER        3     2 SEC
/              TEST 2/1 
/         39   WRITE CURRENT SWITCH-POINT TEST   1     1 SEC
*ENDIF
*IF DEF,SFMD
/         01   CONNECT CONTROLLER TEST           1     1 SEC             D88
/         03   ZERO WORD AUTOLOAD TEST           1     2 SEC
/         05   GENERAL STATUS TEST               1     1 SEC             D88
/         07   DETAILED STATUS TEST              1     1 SEC             D88
/         09   DIAGNOSTIC WRITE/READ TEST        1     1 SEC             D88
/         11   WRITE/READ COUPLER BUFFER TEST    1     2 SEC
/         12   DRIVE BUS OUT TEST                3     1 SEC
/         13   SEEK TIME MEASUREMENT TEST        1     5 SEC             D88
*IF DEF,CMSE17X,1 
/         15   READ FLAW MAPS TEST               1    13 SEC
*IF -DEF,CMSE17X,4
*IF DEF,SECURE,1
/         15   READ FLAW MAPS TEST               3    13 SEC
*IF -DEF,SECURE,1 
/         15   READ FLAW MAPS TEST               1    13 SEC
/         17   READ PREWRITTEN SECTORS           3    27 SEC             D88
/         19   WRITE/DIAGNOSTIC READ TEST        3     1 SEC             D88
/         21   WRITE PREALLOCATED CYLINDER       3     4 SEC             D88
/              TEST                                                      D88
/         23   READ PREALLOCATED CYLINDER        3    52 SEC             D88
/              TEST                                                      D88
/         25   CORRECTION VECTOR LOGIC TEST      3     3 SEC             D88
/         27   WRITE VERIFY PREALLOCATED         3     3 SEC             D88
/              CYLINDER TEST AT 2/1 INTERLACE                            D88PTR4
/         29   FORCE WRITE VERIFY ERROR TEST     3     1 SEC
/         31   READ CHECKWORD TEST               1     7 SEC             D88
/         33   RANDOM SEEK TEST                  3    10 SEC             D88
/         35   WRITE CODED CYLINDER TEST         3     2 SEC             D88
/         37   READ/VERIFY CODED CYLINDER        3    46 SEC             D88PTR4
/              TEST 2/1                                                  D88PTR4
/         39   WRITE CURRENT SWITCH-POINT TEST   1     2 SEC             D88
*ENDIF
*IF DEF,LSFMD 
/         01   CONNECT CONTROLLER TEST           1     1 SEC
/         03   ZERO WORD AUTOLOAD TEST           1     2 SEC
/         05   GENERAL STATUS TEST               1     1 SEC
/         07   DETAILED STATUS TEST              1     1 SEC
/         09   DIAGNOSTIC WRITE/READ TEST        1     1 SEC
/         11   WRITE/READ COUPLER BUFFER TEST    1     2 SEC
/         12   DRIVE BUS OUT TEST                3     1 SEC
/         13   SEEK TIME MEASUREMENT TEST        1     5 SEC
*IF DEF,CMSE17X,1 
/         15   READ FLAW MAPS TEST               1    13 SEC
*IF -DEF,CMSE17X,4
*IF DEF,SECURE,1
/         15   READ FLAW MAPS TEST               3    13 SEC
*IF -DEF,SECURE,1 
/         15   READ FLAW MAPS TEST               1    13 SEC
/         17   READ PREWRITTEN SECTORS           3    27 SEC
/         19   WRITE/DIAGNOSTIC READ TEST        3     1 SEC
/         21   WRITE PREALLOCATED CYLINDER       3     4 SEC
/              TEST 
/         23   READ PREALLOCATED CYLINDER        3    52 SEC
/              TEST 
/         25   CORRECTION VECTOR LOGIC TEST      3     3 SEC
/         27   WRITE VERIFY PREALLOCATED         3     3 SEC
/              CYLINDER TEST AT 2/1 INTERLACE 
/         29   FORCE WRITE VERIFY ERROR TEST     3     1 SEC
/         31   READ CHECKWORD TEST               1     7 SEC
/         33   RANDOM SEEK TEST                  3    10 SEC
/         35   WRITE CODED CYLINDER TEST         3     2 SEC
/         37   READ/VERIFY CODED CYLINDER        3    46 SEC
/              TEST 2/1 
/         39   WRITE CURRENT SWITCH-POINT TEST   1     2 SEC
*ENDIF
/                                                                        D88
/                                                                        D88
/    PARAMETER PORTION OF TEST                                           D88
/                                                                        D88
*IF DEF,PFMD
/ 
/         RUN TIMES ARE BASED USING THE FULL DISK 
/ 
/         40   SEQUENTIAL WRITE/READ TEST        4     1 HR 
/              TRACK MODE 2/1 INTERLACE               10 MIN
/         41   SEQUENTIAL WRITE/READ COMPARE     4     1 HR 
/              TEST TRACK MODE, 2/1 INTERLACE         52 MIN
*IF -DEF,CMSE17X,8
/         42   SEQUENTIAL WRITE/READ TEST        4     1 HR 
/              TRACK MODE, 1/1 INTERLACE              10 MIN
/         43   SEQUENTIAL WRITE/READ COMPARE     4    27 HR 
/              TEST TRACK MODE, 1/1 INTERLACE         21 MIN
/         44   SEQUENTIAL WRITE/READ TEST        4     9 MIN
/              CYLINDER MODE, 1/1 INTERLACE           51 SEC
/         45   RANDOM WRITE/READ TEST            4     2 HR 
/              SECTOR MOVE 1/1 INTERLACE              16 MIN
*IF DEF,CMSE17X,2 
/         46   SWEEP HDA CHECKWORDS              1     7 MIN
/         47   RANDOM READ CHECKWORDS            1     4 MIN
*IF -DEF,CMSE17X,6
*IF DEF,SECURE,2
/         46   SWEEP HDA CHECKWORDS              3     7 MIN
/         47   RANDOM READ CHECKWORDS            3     4 MIN
*IF -DEF,SECURE,2 
/         46   SWEEP HDA CHECKWORDS              1     7 MIN
/         47   RANDOM READ CHECKWORDS            1     4 MIN
/ 
*ENDIF
*IF DEF,SFMD
/         40   SEQUENTIAL WRITE/READ TEST        4     1 HR              D88
/              TRACK MODE, 2/1 INTERLACE              37 MIN             D88
/         41   SEQUENTIAL WRITE/READ COMPARE     4     6 HRS             D88
/              TEST TRACK MODE, 2/1 INTERLACE         19 MIN             D88
/         42   SEQUENTIAL WRITE/READ TEST        4     1 HR              D88
/              TRACK MODE,1/1 INTERLACE                7 MIN             D88
/         43   SEQUENTIAL WRITE/READ COMPARE     4     6 HRS             D88
/              TEST TRACK MODE, 1/1 INTERLACE          3 MIN             D88
/         44   SEQUENTIAL WRITE/READ TEST        4    21 MIN             D88
/              CYLINDER MODE, 1/1 INTERLACE                              D88
/         45   RANDOM WRITE/READ TEST            4    14 MIN             D88
/              SECTOR MODE, 1/1 INTERLACE                                D88PTR4
*IF DEF,CMSE17X,2 
/         46   SWEEP HDA CHECKWORDS              1    38 MIN
/         47   RANDOM READ CHECKWORDS            1     4 MIN
*IF -DEF,CMSE17X,6
*IF DEF,SECURE,2
/         46   SWEEP HDA CHECKWORDS              3    38 MIN
/         47   RANDOM READ CHECKWORDS            3     4 MIN
*IF -DEF,SECURE,2 
/         46   SWEEP HDA CHECKWORDS              1    38 MIN
/         47   RANDOM READ CHECKWORDS            1     4 MIN
/ 
*ENDIF
*IF DEF,LSFMD 
/         42   SEQUENTIAL WRITE/READ TEST        4     1 HR 
/              TRACK MODE,1/1 INTERLACE                7 MIN
/         43   SEQUENTIAL WRITE/READ COMPARE     4     6 HRS
/              TEST TRACK MODE, 1/1 INTERLACE          3 MIN
/         44   SEQUENTIAL WRITE/READ TEST        4    21 MIN
/              CYLINDER MODE, 1/1 INTERLACE 
/         45   RANDOM WRITE/READ TEST            4    14 MIN
/              SECTOR MODE, 1/1 INTERLACE 
*IF DEF,CMSE17X,2 
/         46   SWEEP HDA CHECKWORDS              1    38 MIN
/         47   RANDOM READ CHECKWORDS            1    12 MIN
*IF -DEF,CMSE17X,6
*IF DEF,SECURE,2
/         46   SWEEP HDA CHECKWORDS              3    38 MIN
/         47   RANDOM READ CHECKWORDS            3    12 MIN
*IF -DEF,SECURE,2 
/         46   SWEEP HDA CHECKWORDS              1    38 MIN
/         47   RANDOM READ CHECKWORDS            1    12 MIN
/ 
*ENDIF
/                                                                        D88
/    REPAIR MODULES                                                      D88
/                                                                        D88
*IF DEF,PFMD,1
/         60   RESTART DEMA CONTROLLER           1
*IF DEF,SFMD,1
/         60   RESTART FMD CONTROLLER            1
*IF DEF,LSFMD,1 
/         60   RESTART FMD CONTROLLER            1                       D88PTR4
/              REPAIR TOOL                                               D88
/         61   SEEK DISK ADDRESS                 4                       D88
/         62   WRITE ONE SECTOR                  4                       D88
/         63   READ ONE SECTOR                   4                       D88
/         64   WRITE/READ ONE SECTOR             4                       D88
/         65   TOGGLE PARAMETER READ TEST        4                       D88
/                                                                        D88
/                                                                        D88
1  END 1                     *END OF THE MODULE                          D88
*IF DEF,PFMD,1
COMPILE,SOURCE               *DH899A DESCRIPTION DOCUMENTATION
*IF DEF,SFMD,1
COMPILE,SOURCE               *D8899A DESCRIPTION DOCUMENTATION           D88PTR4
*IF DEF,LSFMD,1 
COMPILE,SOURCE               *DL899A DESCRIPTION DOCUMENTATION
*IF DEF,PFMD,1
***       DH8 - DEMA SUBSYSTEM CONFIDENCE TEST
*IF DEF,SFMD,1
***       D88 - FMD SUBSYSTEM CONFIDENCE TEST                            D88
*IF DEF,LSFMD,1 
***       DL8 - FMD SUBSYSTEM CONFIDENCE TEST 
***       APPLICATIONS                                                   D88
**        APPLICATIONS                                                   D88
*         APPLICATIONS                                                   D88
*         ------------                                                   D88
*                                                                        D88
*         1.  WHEN RUNNING  THE  CONFIDENCE/VERIFICATION  PART  OF  THE  D88
*IF DEF,PFMD,2
*             TEST, A RUN,DH8  COMMAND WILL RUN MODULES  DH801  THROUGH 
*             DH839. ALL OTHER MODULES IN THE TEST WILL BE RUN ONE AT A 
*IF DEF,SFMD,2
*             TEST, A RUN,D88  COMMAND WILL RUN MODULES  D8801  THROUGH  D88
*             D8839. ALL OTHER MODULES IN THE TEST WILL BE RUN ONE AT A  D88
*IF DEF,LSFMD,2 
*             TEST, A RUN,DL8  COMMAND WILL RUN MODULES  DL801  THROUGH 
*             DL839. ALL OTHER MODULES IN THE TEST WILL BE RUN ONE AT A 
*             TIME.                                                      D88
*                                                                        D88
*         2.  THE CONFIDENCE/VERIFICATION MODULES DO  NOT  PROVIDE  THE  D88
*             ABLILITY TO LOOP OR REPEAT THE CONDITION.                  D88
*                                                                        D88
*         3.  IF AN ERROR IS DETECTED WHILE TRYING TO  CONNECT  TO  THE 
*IF DEF,PFMD,1
*             DEMA  CONTROLLER,  AND  THE ERROR INDICATES THAT THE DEMA 
*IF DEF,SFMD,1
*             7155  CONTROLLER,  AND  THE ERROR INDICATES THAT THE 7155  D88
*IF DEF,LSFMD,1 
*             7155  CONTROLLER,  AND  THE ERROR INDICATES THAT THE 7155 
*             CONTROLLER IS HUNG, THE  ERROR  PROCESSING  ROUTINE  WILL  D88
*             ISSUE A RESET COMMAND TO THE CONTROLLER AUTOMATICALLY.     D88
*                                                                        D88
*         4.  WHEN AN ERROR IS REPORTED, THE THIRD LINE  OF  THE  ERROR  D88
*             DISPLAY   WILL  CONTAIN  THE  PRESERVICE  FORECAST  GROUP  D88
*             NUMBER.                                                    D88
*                                                                        D88
*** 3.1.3 INTERFACES                                                     D88
**  3.1.3 INTERFACES                                                     D88
*   3.1.3 INTERFACES                                                     D88
*         ----------                                                     D88
*                                                                        D88
*         REFER TO SECTOR 3.1.2 FOR PARAMETERS AND MESSAGES.             D88PTR4
*                                                                        D88
*** 3.1.4 TEST ABORTS                                                    D88
**  3.1.4 TEST ABORTS                                                    D88
*   3.1.4 TEST ABORTS                                                    D88
*         -----------                                                    D88
*                                                                        D88
*         1.  IN ALL  MODULES THAT WILL  WRITE  AND/OR READ THE   DISK, 
*             THE  ACCESS LEVEL WILL BE CHECKED. IF THE ACCESS LEVEL IS  D88
*             TOO LOW TO DO THE WRITE AND/OR READ, THE TEST WILL  ABORT  D88
*             THE MODULE.                                                D88
*                                                                        D88
*         2.  IN  THE  PARAMETER DRIVEN AND SOME OF THE REPAIR MODULES,  D88
*             THE MODULE WILL CALL A SUBMODULE TO CHECK  THE  PARAMETER  D88
*             ENTRIES  FOR  THE  TEST.  IF  AN ERROR IS DETECTED IN THE  D88
*             PARAMETER WORDS, THE MODULE WILL BE ABORTED.               D88
*                                                                        D88
*         3.  IF THE ERROR ROUTINE  DETERMINES  THAT  A  RESET  COMMAND  D88
*IF DEF,PFMD,2
*             SHOULD BE ISSUED TO THE DEMA CONTROLLER AND AFTER ISSUING 
*             THE RESET COMMAND, THE DEMA CONTROLLER FAILS  TO  RESPOND 
*IF DEF,SFMD,2
*             SHOULD BE ISSUED TO THE 7155 CONTROLLER AND AFTER ISSUING  D88
*             THE RESET COMMAND, THE 7155 CONTROLLER FAILS  TO  RESPOND  D88
*IF DEF,LSFMD,2 
*             SHOULD BE ISSUED TO THE 7155 CONTROLLER AND AFTER ISSUING 
*             THE RESET COMMAND, THE 7155 CONTROLLER FAILS  TO  RESPOND 
*             CORRECTLY,   THE  MODULE  CALLING  THE  ERROR  PROCESSING  D88
*             ROUTINE WILL BE ABORTED.                                   D88
*                                                                        D88
*         4.  ALL CONFIDENCE TEST MODULES LIMIT THE  NUMBER  OF  ERRORS  D88
*             THAT  MAY  BE  REPORTED.  AFTER THREE  ERRORS  HAVE BEEN   D88
*             DETECTED IN  ANY  ONE OF THE MODULES, THAT MODULE WILL BE  D88
*             ABORTED.                                                   D88
*                                                                        D88
*** 3.1.5 SYSTEM ABORTS                                                  D88
**  3.1.5 SYSTEM ABORTS                                                  D88
*   3.1.5 SYSTEM ABORTS                                                  D88
*         -------------                                                  D88
*                                                                        D88
*         NO  SYSTEM  ABORTS  SHOULD  EVER  BE  CAUSED BY THE TEST. THE  D88
*         PRODUCT OVERLAY DRIVER  SHOULD  PROTECT THE  SYSTEM  FROM ANY  D88
*         ABORTS.                                                        D88
*                                                                        D88
*IF DEF,PFMD,3
*** 3.1.6 MESSAGES
**  3.1.6 MESSAGES
*   3.1.6 MESSAGES
*IF DEF,SFMD,3
*** 3.1.6 ERRORS                                                         D88
**  3.1.6 ERRORS                                                         D88
*   3.1.6 ERRORS                                                         D88
*IF DEF,LSFMD,3 
*** 3.1.6 ERRORS
**  3.1.6 ERRORS
*   3.1.6 ERRORS
*         ------                                                         D88
*                                                                        D88
*IF DEF,PFMD,1
*         1.  DH8NN MODULE NAME 
*IF DEF,SFMD,1
*         1.  D88NN MODULE NAME                                          D88
*IF DEF,LSFMD,1 
*         1.  DL8NN MODULE NAME 
*             THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.      D88
*                                                                        D88
*IF DEF,PFMD,1
*         2.  DH8NN CYL=CCCCB, T=TTB, S=SSB 
*IF DEF,SFMD,1
*         2.  D88NN CYL=CCCB, T=TTB, S=SSB                               D88
*IF DEF,LSFMD,1 
*         2.  DL8NN CYL=CCCB, T=TTB, S=SSB
*             THIS  RUNNING  MESSAGE  INDICATES  THAT  MODULE NN IS NOW  D88
*             TESTING CYLINDER CCC, TRACK TT, AND SECTOR SS.             D88
*                                                                        D88
*IF DEF,PFMD,1
*         3.  DH8NN EC=EEEED, LC=LLLLD
*IF DEF,SFMD,1
*         3.  D88NN EC=EEEED, LC=LLLLD                                   D88
*IF DEF,LSFMD,1 
*         3.  DL8NN EC=EEEED, LC=LLLLD
*             THIS  RUNNING MESSAGE INDICATES THAT MODULE NN IS LOOPING  D88
*             ON REPEAT CONDITION OR REPEAT MODULE. EEEE IS THE CURRENT  D88
*             ERROR COUNT AND LLLL IS THE CURRENT LOOP COUNT.            D88
*                                                                        D88
*IF DEF,PFMD,1
*         4.  DH801 RES CONTROLLER LC*OCTB
*IF DEF,SFMD,1
*         4.  D8801 RES CONTROLLER LC*OCTB                               D88
*IF DEF,LSFMD,1 
*         4.  DL801 RES CONTROLLER LC*OCTB
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE  D88
*IF DEF,PFMD,1
*             DH801.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*IF DEF,SFMD,1
*             D8801.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP  D88
*IF DEF,LSFMD,1 
*             DL801.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*             COUNT INCREMENT.                                           D88
*                                                                        D88
*IF DEF,PFMD,1
*         5.  DH803 AUTOLOAD LC=*DECD 
*IF DEF,SFMD,1
*         5.  D8803 AUTOLOAD LC=*DECD                                    D88
*IF DEF,LSFMD,1 
*         5.  DL803 AUTOLOAD LC=*DECD 
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE  D88
*IF DEF,PFMD,1
*             DH803.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*IF DEF,SFMD,1
*             D8803.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP  D88
*IF DEF,LSFMD,1 
*             DL803.  THE MODULE IS ESSENTIALLY REPEATED WITH EACH LOOP 
*             COUNT INCREMENT.                                           D88
*                                                                        D88
*IF DEF,PFMD,1
*         6.  DH805 GEN STATUS LC=*DECD 
*IF DEF,SFMD,1
*         6.  D8805 GEN STATUS LC=*DECD                                  D88
*IF DEF,LSFMD,1 
*         6.  DL805 GEN STATUS LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE  D88
*IF DEF,PFMD,1
*             DH805.   GENERAL STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*IF DEF,SFMD,1
*             D8805.   GENERAL STATUS IS RETRIEVED WITH EACH LOOP COUNT  D88
*IF DEF,LSFMD,1 
*             DL805.   GENERAL STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*             INCREMENT.                                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         7.  DH807 DETAIL STATUS LC=*DECD
*IF DEF,SFMD,1
*         7.  D8807 DETAIL STATUS LC=*DECD                               D88
*IF DEF,LSFMD,1 
*         7.  DL807 DETAIL STATUS LC=*DECD
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE  D88
*IF DEF,PFMD,1
*             DH807.  DETAILED STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*IF DEF,SFMD,1
*             D8807.  DETAILED STATUS IS RETRIEVED WITH EACH LOOP COUNT  D88
*IF DEF,LSFMD,1 
*             DL807.  DETAILED STATUS IS RETRIEVED WITH EACH LOOP COUNT 
*             INCREMENT.                                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         8.  DH809 DIAG WRT/RD LC=*DECD
*IF DEF,SFMD,1
*         8.  D8809 DIAG WRT/RD LC=*DECD
*IF DEF,LSFMD,1 
*         8.  DL809 DIAG WRT/RD LC=*DECD
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE  D88
*IF DEF,PFMD,1
*             DH809.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*IF DEF,SFMD,1
*             D8809.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10  D88
*IF DEF,LSFMD,1 
*             DL809.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE  D88
*             LOOP COUNT IS INCREMENTED.                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         9.  DH811 WRITECB/READCB LC=*DECD 
*IF DEF,SFMD,1
*         9.  D8811 WRITECB/READCB LC=*DECD 
*IF DEF,LSFMD,1 
*         9.  DL811 WRITECB/READCB LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE  D88
*IF DEF,PFMD,1
*             DH811.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*IF DEF,SFMD,1
*             D8811.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10  D88
*IF DEF,LSFMD,1 
*             DL811.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE  D88
*             LOOP COUNT IS INCREMENTED.                                 D88
* 
*IF DEF,PFMD,1
*         9A. DH812 EC=*DECD, LC=*DECD
*IF DEF,SFMD,1
*         9A. D8812 EC=*DECD, LC=*DECD
*IF DEF,LSFMD,1 
*         9A. DL812 EC=*DECD, LC=*DECD
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*IF DEF,PFMD,1
*             DH812. EACH OF FIVE DIFFERENT BUS OUT COMMANDS IS EXECUT- 
*IF DEF,SFMD,1
*             D8812. EACH OF FIVE DIFFERENT BUS OUT COMMANDS IS EXECUT- 
*IF DEF,LSFMD,1 
*             DL812. EACH OF FIVE DIFFERENT BUS OUT COMMANDS IS EXECUT- 
*             ED TEN TIMES. 
*                                                                        D88
*IF DEF,PFMD,1
*         10. DH813 SEEK TIME=*OCTB USEC
*IF DEF,SFMD,1
*         10. D8813 SEEK TIME=*OCTB USEC                                 D88
*IF DEF,LSFMD,1 
*         10. DL813 SEEK TIME=*OCTB USEC
*             THIS RUNNING  MESSAGE DISPLAYS THE AVERAGE SEEK TIME CAL- 
*             CULATED FROM 20 DIFFERENT SEEK OPERATIONS.
*                                                                        D88
*IF DEF,PFMD,7
*         10A.DH814 ESM SYSWR/RD LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*             DH814.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE 
*             LOOP COUNT IS INCREMENTED.
* 
*         11. DH815 SERIAL NO.
*IF DEF,SFMD,1
*         11. D8815 SERIAL NO.   LC=*DECD                                D88
*IF DEF,LSFMD,1 
*         11. DL815 SERIAL NO.   LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP COUNT OF THE FIRST  D88
*IF DEF,PFMD,1
*             SUBTEST  OF  DH815.   HERE THE SERIAL NUMBER IS RETRIEVED 
*IF DEF,SFMD,1
*             SUBTEST  OF  D8815.   HERE THE SERIAL NUMBER IS RETRIEVED  D88
*IF DEF,LSFMD,1 
*             SUBTEST  OF  DL815.   HERE THE SERIAL NUMBER IS RETRIEVED 
*             OFF OF THE DISK 2 SEPARATE  TIMES.   THE  LOOP  COUNT  IS  D88
*             INCREMENTED WITH EACH RETRIEVAL.                           D88
*                                                                        D88
*IF DEF,PFMD,1
*         12. DH815 FACTORY SECTOR=*OCTB
*IF DEF,SFMD,1
*         12. D8815 FACTORY SECT LC=*DECD                                D88
*IF DEF,LSFMD,1 
*         12. DL815 FACTORY SECT LC=*DECD 
*             THIS RUNNING MESSAGE  DISPLAYS  THE  LOOP  COUNT  OF  THE  D88
*IF DEF,PFMD,1
*             SECOND  SUBTEST OF DH815.  HERE THE FACTORY FLAW MAPS ARE 
*IF DEF,SFMD,1
*             SECOND  SUBTEST OF D8815.  HERE THE FACTORY FLAW MAPS ARE  D88
*IF DEF,LSFMD,1 
*             SECOND  SUBTEST OF DL815.  HERE THE FACTORY FLAW MAPS ARE 
*             RETRIEVED OFF OF THE DISK  2  SEPARATE  TIMES.  THE  LOOP  D88
*             COUNT IS INCREMENTED WITH EACH RETRIEVAL.                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         13. DH815 UTILITY SECTOR=*OCTB
*IF DEF,SFMD,1
*         13. D8815 UTILITY SECT LC=*DECD                                D88
*IF DEF,LSFMD,1 
*         13. DL815 UTILITY SECT LC=*DECD 
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP COUNT OF THE THIRD  D88
*IF DEF,PFMD,1
*             SUBTEST  OF  DH815.  HERE THE UTILITY FLAW MAPS ARE BEING 
*IF DEF,SFMD,1
*             SUBTEST  OF  D8815.  HERE THE UTILITY FLAW MAPS ARE BEING  D88
*IF DEF,LSFMD,1 
*             SUBTEST  OF  DL815.  HERE THE UTILITY FLAW MAPS ARE BEING 
*             RETRIEVED OFF OF THE DISK 2  SEPARATE  TIMES.   THE  LOOP  D88
*             COUNT IS INCREMENTED WITH EACH RETRIEVAL.                  D88
*                                                                        D88
*IF DEF,PFMD,7
*         13A.DH816 ESM DIAGWR/RD LC=*DECD
*             THIS RUNNING MESSAGE DISPLAYS THE LOOP  COUNT  OF  MODULE 
*             DH816.   THE  READ/WRITE/COMPARE  PORTION  IS REPEATED 10 
*             TIMES FOR EACH DATA PATTERN USED AND WITH EACH  PASS  THE 
*             LOOP COUNT IS INCREMENTED.
* 
*         14. DH817 TRK=*OB  SECT=*OB 
*IF DEF,SFMD,1
*         14. D8817 TRK=*OB  SECT=*OB                                    D88
*IF DEF,LSFMD,1 
*         14. DL817 TRK=*OB  SECT=*OB 
*             THIS  RUNNING  MESSAGE  DISPLAYS  THE  TRACK  AND  SECTOR  D88
*             ADDRESS  ON WHICH A READ IS PRESENTLY BEING EXECUTED.  BY  D88
*IF DEF,PFMD,1
*             DH817.
*IF DEF,SFMD,1
*             D8817.                                                     D88
*IF DEF,LSFMD,1 
*             DL817.
*                                                                        D88
*IF DEF,PFMD,6
*         14A.DH818 TRK=*OB  SECT=*OB 
*             THIS  RUNNING  MESSAGE  DISPLAYS  THE  TRACK  AND  SECTOR 
*             ADDRESS  ON WHICH A READ IS PRESENTLY BEING EXECUTED.  BY 
*             DH818.
* 
*         15. DH819 WRITE/DIAGRD LC=*DECD 
*IF DEF,SFMD,1
*         15. D8819 WRITE/DIAGRD LC=*DECD                                D88
*IF DEF,LSFMD,1 
*         15. DL819 WRITE/DIAGRD LC=*DECD 
*             THIS  RUNNING  MESSAGE  DISPLAYS THE LOOP COUNT OF MODULE  D88
*IF DEF,PFMD,1
*             DH819.  THE WRITE/READ/COMPARE  PORTION  IS  REPEATED  10 
*IF DEF,SFMD,1
*             D8819.  THE WRITE/READ/COMPARE  PORTION  IS  REPEATED  10  D88
*IF DEF,LSFMD,1 
*             DL819.  THE WRITE/READ/COMPARE  PORTION  IS  REPEATED  10 
*             TIMES  FOR  EACH DATA PATTERN USED AND WITH EACH PASS THE  D88
*             LOOP COUNT IS INCREMENTED.                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         16. DH821 WRITING TRACK=*OCTB 
*IF DEF,SFMD,1
*         16. D8821 WRITING TRACK=*OCTB                                  D88
*IF DEF,LSFMD,1 
*         16. DL821 WRITING TRACK=*OCTB 
*             THIS  RUNNING MESSAGE INDICATES THE TRACK ADDRESS THAT IS  D88
*IF DEF,PFMD,1
*             PRESENTLY BEING WRITTEN BY DH821. 
*IF DEF,SFMD,1
*             PRESENTLY BEING WRITTEN BY D8821.                          D88
*IF DEF,LSFMD,1 
*             PRESENTLY BEING WRITTEN BY DL821. 
*                                                                        D88
*IF DEF,PFMD,1
*         17. DH822 TRK=*OB SECT=*OB
*IF DEF,SFMD,1
*         17. D8823 TRK=*OB SECT=*OB                                     D88
*IF DEF,LSFMD,1 
*         17. DL823 TRK=*OB SECT=*OB
*             THIS  RUNNING  MESSAGE  INDICATES  THE  TRACK  AND SECTOR  D88
*IF DEF,PFMD,1
*             ADDRESS THAT IS PRESENTLY BEING READ BY DH822.
*IF DEF,SFMD,1
*             ADDRESS THAT IS PRESENTLY BEING READ BY D8823.             D88
*IF DEF,LSFMD,1 
*             ADDRESS THAT IS PRESENTLY BEING READ BY DL823.
*                                                                        D88
*IF DEF,PFMD,9
*         17A.DH823 WRITING TRACK=*OCTB 
*             THIS  RUNNING MESSAGE INDICATES THE TRACK ADDRESS THAT IS 
*             PRESENTLY BEING WRITTEN BY DH823. 
* 
*         17B.DH824 TRK=*OB SECT=*OB
*             THIS  RUNNING  MESSAGE  INDICATES  THE  TRACK  AND SECTOR 
*             ADDRESS THAT IS PRESENTLY BEING READ BY DH824.
* 
*         18. DH825 SUBTEST*O LC=*DECD
*IF DEF,SFMD,1
*         18. D8825 SUBTEST*O LC=*DECD                                   D88
*IF DEF,LSFMD,1 
*         18. DL825 SUBTEST*O LC=*DECD
*             THIS RUNNING MESSAGE INDICATES WHICH OF THE 4 SUBTESTS OF  D88
*IF DEF,PFMD,1
*             MODULE DH825 IS PRESENTLY  BEING  RUN.   THE  LOOP  COUNT 
*IF DEF,SFMD,1
*             MODULE D8825 IS PRESENTLY  BEING  RUN.   THE  LOOP  COUNT  D88
*IF DEF,LSFMD,1 
*             MODULE DL825 IS PRESENTLY  BEING  RUN.   THE  LOOP  COUNT 
*             INDICATES THE NUMBER OF PASSES MADE BY EACH SUBTEST.       D88
*                                                                        D88
*IF DEF,PFMD,2
*         19. DH827 WRITING CYLINDER 1512B
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  DH827  IS  IN 
*IF DEF,SFMD,2
*         19. D8827 WRITING CYLINDER 1512B                               D88
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  D8827  IS  IN  D88
*IF DEF,LSFMD,2 
*         19. DL827 WRITING CYLINDER 1512B
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  DL827  IS  IN 
*             ITS WRITING MODE.                                          D88
*                                                                        D88
*IF DEF,PFMD,2
*         20. DH827 VERIFYING CYLINDER 1512B
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  DH827  IS  IN 
*IF DEF,SFMD,2
*         20. D8827 VERIFYING CYLINDER 1512B                             D88
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  D8827  IS  IN  D88
*IF DEF,LSFMD,2 
*         20. DL827 VERIFYING CYLINDER 1512B
*             THIS RUNNING MESSAGE INDICATES THAT MODULE  DL827  IS  IN 
*             ITS WRITE/VERIFY MODE.                                     D88
*                                                                        D88
*IF DEF,PFMD,2
*         21. DH829 WRITING CYL*OCTB
*             THIS RUNNING  MESSAGE  INDICATES THAT  MODULE  DH829   IS 
*IF DEF,SFMD,2
*         21. D8829 WRITING CYL*OCTB                                     D88
*             THIS RUNNING  MESSAGE  INDICATES THAT  MODULE  D8829   IS  D88PTR4
*IF DEF,LSFMD,2 
*         21. DL829 WRITING CYL*OCTB
*             THIS RUNNING  MESSAGE  INDICATES THAT  MODULE  DL829   IS 
*             PRESENTLY  WRITING  A PATTERN  OUT  TO  DISK.  THIS WRITE  D88PTR4
*             PRECEEDS THE  FORCE-A-VERFIY  ERROR  PORTION OF THE TEST.  D88PTR4
*                                                                        D88
*IF DEF,PFMD,1
*         22. DH831 READCHECKWORD,MARGIN*O
*IF DEF,SFMD,1
*         22. D8831 READCHECKWORD,MARGIN*O                               D88
*IF DEF,LSFMD,1 
*         22. DL831 READCHECKWORD,MARGIN*O
*             THIS RUNNING  MESSAGE  INDICATES  WHICH  READ  MARGIN  IS  D88
*             PRESENTLY  BEING USED DURING THE READ CHECKWORD OPERATION  D88
*IF DEF,PFMD,1
*             OF MODULE DH831.
*IF DEF,SFMD,1
*             OF MODULE D8831.                                           D88
*IF DEF,LSFMD,1 
*             OF MODULE DL831.
*                                                                        D88
*IF DEF,PFMD,1
*         23. DH833 CYL=*OCTB LC=*DECD
*IF DEF,SFMD,1
*         23. D8833 CYL=*OCTB LC=*DECD                                   D88
*IF DEF,LSFMD,1 
*         23. DL833 CYL=*OCTB LC=*DECD
*             THIS  RUNNING  MESSAGE  INDICATES  TO  WHICH CYLINDER THE  D88
*IF DEF,PFMD,1
*             HEADS ARE PRESENTLY SEEKING IN MODULE DH833.   EACH  SEEK 
*IF DEF,SFMD,1
*             HEADS ARE PRESENTLY SEEKING IN MODULE D8833.   EACH  SEEK  D88
*IF DEF,LSFMD,1 
*             HEADS ARE PRESENTLY SEEKING IN MODULE DL833.   EACH  SEEK 
*             OPERATION IS REPEATED 2 TIMES DURING WHICH THE LOOP COUNT  D88
*             IS INCREMENTED.                                            D88
*                                                                        D88
*IF DEF,PFMD,2
*         24. DH835 WRITE CODED CYL=*OCTB 
*             THIS RUNNING MESSAGE INDICATES THAT MODULE DH835 IS DOING 
*IF DEF,SFMD,2
*         24. D8835 WRITE CODED CYL=*OCTB                                D88
*             THIS RUNNING MESSAGE INDICATES THAT MODULE D8835 IS DOING  D88
*IF DEF,LSFMD,2 
*         24. DL835 WRITE CODED CYL=*OCTB 
*             THIS RUNNING MESSAGE INDICATES THAT MODULE DL835 IS DOING 
*             A WRITE CODED  OPERATION  ON  CYLINDER  1512B.             D88
*                                                                        D88
*IF DEF,PFMD,1
*         25. DH837 TRK=*OB SECT=*OB
*IF DEF,SFMD,1
*         25. D8837 TRK=*OB SECT=*OB                                     D88
*IF DEF,LSFMD,1 
*         25. DL837 TRK=*OB SECT=*OB
*             THIS  RUNNING MESSAGE INDICATES AT WHICH TRACK AND SECTOR  D88
*             ADDRESS A READ AND VERIFY IS BEING  PERFORMED  BY  MODULE  D88
*IF DEF,PFMD,1
*             DH837.
*IF DEF,SFMD,1
*             D8837.                                                     D88
*IF DEF,LSFMD,1 
*             DL837.
*                                                                        D88
*IF DEF,PFMD,1
*         26. DH839 CYL *OCTB TRACK *OCTB 
*IF DEF,SFMD,1
*         26. D8839 CYL *OCTB TRACK *OCTB                                D88
*IF DEF,LSFMD,1 
*         26. DL839 CYL *OCTB TRACK *OCTB 
*             THIS RUNNING MESSAGE  INDICATES  AT  WHICH  CYLINDER  AND  D88
*             TRACK  ADDRESS  THE  WRITE  CURRENT SWITCH POINT IS BEING  D88
*IF DEF,PFMD,1
*             TESTED BY MODULE DH839. 
*IF DEF,SFMD,1
*             TESTED BY MODULE D8839.                                    D88
*IF DEF,LSFMD,1 
*             TESTED BY MODULE DL839. 
*                                                                        D88
*IF DEF,PFMD,2
*         27. DH8NN ERROR(S) = XXXXD
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*IF DEF,SFMD,2
*         27. D88NN ERROR(S) = XXXXD                                     D88
*             NN   = THE NUMBER OF THE MODULE IN D88.                    D88
*IF DEF,LSFMD,2 
*         27. DL8NN ERROR(S) = XXXXD
*             NN   = THE NUMBER OF THE MODULE IN DL8. 
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE.        D88PTR4
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  DETECTED  D88
*             XXXX  NUMBER  OF  ERRORS  BY  THE  TIME  IT HAD COMPLETED  D88
*             EXECUTION.                                                 D88
*                                                                        D88
*IF DEF,PFMD,2
*         28. DH8NN MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*IF DEF,SFMD,2
*         28. D88NN MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
*             NN   = THE NUMBER OF THE MODULE IN D88.                    D88
*IF DEF,LSFMD,2 
*         28. DL8NN MODULE ABORTED - SUSPECTED PARAMETER ERRORS 
*             NN   = THE NUMBER OF THE MODULE IN DL8. 
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  WAS  NOT  D88
*             EXECUTED BECAUSE OF SUSPECTED PARMETER ERRORS.             D88
*                                                                        D88
*IF DEF,PFMD,2
*         29. DH8NN MODULE ABORTED - ACCESS LEVEL TOO LOW 
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*IF DEF,SFMD,2
*         29. D88NN MODULE ABORTED - ACCESS LEVEL TOO LOW                D88
*             NN   = THE NUMBER OF THE MODULE IN D88.                    D88
*IF DEF,LSFMD,2 
*         29. DL8NN MODULE ABORTED - ACCESS LEVEL TOO LOW 
*             NN   = THE NUMBER OF THE MODULE IN DL8. 
*             THIS  DAYFILE  MESSAGE  INDICATES  THAT MODULE NN WAS NOT  D88
*             EXECUTED, THE ACCESS LEVEL IN THE  ASSIGN  STATEMENT  WAS  D88PTR4
*             NOT HIGH ENOUGH, AND, IF THE MODULE HAD BEEN EXECUTED,THE  D88PTR4
*             PRODUCT OVERLAY DRIVER  WOULD  HAVE  REPORTED  AN  ACCESS  D88
*             LEVEL ERROR AND TERMINATED EXECUTION OF THE MODULE.        D88
*                                                                        D88
*IF DEF,PFMD,2
*         30. DH8NN MODULE ABORTED - WRITE DISABLED IN P5 
*             NN   = THE NUMBER OF THE MODULE IN DH8. 
*IF DEF,SFMD,2
*         30. D88NN MODULE ABORTED - WRITE DISABLED IN P5                D88
*             NN   = THE NUMBER OF THE MODULE IN D88.                    D88
*IF DEF,LSFMD,2 
*         30. DL8NN MODULE ABORTED - WRITE DISABLED IN P5 
*             NN   = THE NUMBER OF THE MODULE IN DL8. 
*             THIS DAYFILE MESSAGE INDICATES THAT  MODULE  NN  WAS  NOT  D88
*             EXECUTED BECAUSE WRITE WAS DISABLED IN PARAMETER WORD P5.  D88
*             WRITE MUST BE ENABLED IN ORDER TO RUN THE MODULE.          D88
*                                                                        D88
*IF DEF,PFMD,1
*         31. DH8MM NOT EXECUTED, SUSPECTED PARAMETER ERROR 
*IF DEF,SFMD,1
*         31. DH8MM NOT EXECUTED, SUSPECTED PARAMETER ERROR 
*IF DEF,LSFMD,1 
*         31. DL8MM NOT EXECUTED, SUSPECTED PARAMETER ERROR 
*             MM = MODULE NUMBER.                                        D88
*             AN  ERROR  HAS  BEEN DETECTED IN ONE OR MORE OF THE PARA-  D88
*             METER WORDS FOR THE TEST. THE ERROR DISPLAY WILL INDICATE  D88
*             THE PARAMETER  WORDS  IN  WHICH ERRORS WERE DETECTED. THE  D88PTR4
*             MODULE WILL ABORT EXECUTION OF THE  PRIMARY  MODULE  THAT  D88PTR4
*             CALLED  THIS PARAMETER CHECKING SUBMODULE  AS A RESULT OF  D88PTR4
*             THE ERROR.                                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         32. DH8MM NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*IF DEF,SFMD,1
*         32. D88MM NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH           D88
*IF DEF,LSFMD,1 
*         32. DL8MM NOT EXECUTED, ACCESS LEVEL NOT HIGH ENOUGH
*             MM = MODULE NUMBER.                                        D88
*             THE  ACCESS  LEVEL  IS  NOT  HIGH  ENOUGH  TO EXECUTE THE  D88PTR4
*             COMMANDS IN THE CALLING MODULE.  THE  MODULE  WILL  ABORT  D88PTR4
*             EXECUTION OF THE PRIMARY MODULE THAT CALLED THE PARAMETER  D88PTR4
*             CHECKING SUBMODULE AS A RESULT OF THE ERROR.               D88PTR4
*                                                                        D88
*IF DEF,PFMD,1
*         33. DH845 NOT EXECUTED, WRITE DISABLED IN P5
*IF DEF,SFMD,1
*         33. D8845 NOT EXECUTED, WRITE DISABLED IN P5                   D88
*IF DEF,LSFMD,1 
*         33. DL845 NOT EXECUTED, WRITE DISABLED IN P5
*             AN ERROR HAS BEEN DETECTED IN PARAMETER WORD  P5.  MODULE  D88
*IF DEF,PFMD,1
*             DH845  REQUIRES  THAT  WRITE NOT BE DISABLED IN PARAMETER 
*IF DEF,SFMD,1
*             D8845  REQUIRES  THAT  WRITE NOT BE DISABLED IN PARAMETER  D88
*IF DEF,LSFMD,1 
*             DL845  REQUIRES  THAT  WRITE NOT BE DISABLED IN PARAMETER 
*             WORD P5. THE MODULE WILL ABORT EXECUTION OF  THE  PRIMARY  D88
*             MODULE THAT CALLED THIS PARAMETER CHECKING SUBMODULE AS A  D88
*             RESULT OF THE ERROR.                                       D88
*                                                                        D88
*IF DEF,PFMD,1
*         34. DH803  E0001 LXXX GEN.STATUS ERROR ON RESET-A=YYYYB 
*IF DEF,SFMD,1
*         34. D8803  E0001 LXXX GEN.STATUS ERROR ON RESET-A=YYYYB        D88
*IF DEF,LSFMD,1 
*         34. DL803  E0001 LXXX GEN.STATUS ERROR ON RESET-A=YYYYB 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             YYYY= ABNORMAL GENERAL STATUS                              D88
*             FOLLOWING A RESET COMMAND, AN ABNORMAL GENERAL STATUS WAS  D88
*             RECEIVED.                                                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         35. DH805  E0002 LXXX GEN.STATUS MISCOMP. E0000  AYYYYB 
*IF DEF,SFMD,1
*         35. D8805  E0002 LXXX GEN.STATUS MISCOMP. E0000  AYYYYB        D88
*IF DEF,LSFMD,1 
*         35. DL805  E0002 LXXX GEN.STATUS MISCOMP. E0000  AYYYYB 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             YYYY= ABNORMAL GENERAL STATUS                              D88
*             FOLLOWING  A  RESERVE  CONTROLLER  COMMAND,  AN  ABNORMAL  D88
*             GENERAL STATUS WAS RECEIVED.                               D88
*                                                                        D88
*IF DEF,PFMD,1
*         36. DH807  E0003 LXXX DETAILED STATUS MISCOMPARE
*IF DEF,SFMD,1
*         36. D8807  E0003 LXXX DETAILED STATUS MISCOMPARE               D88
*IF DEF,LSFMD,1 
*         36. DL807  E0003 LXXX DETAILED STATUS MISCOMPARE
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             SUCCESSIVE  RETRIEVALS  OF  DETAILED  STATUS  FOLLOWING A  D88
*             RESERVE CONTROLLER COMMAND DETECTED A  STATUS  WORD  MIS-  D88
*             COMPARE. THE STATUS WORD ERROR WILL BE DISPLAYED.          D88
*                                                                        D88
*IF DEF,PFMD,1
*         37. DH809  E0004 LXXX MISCOMPARE ON MULTIPLE DIAGRD 
*IF DEF,SFMD,1
*         37. D8809  E0004 LXXX MISCOMPARE ON MULTIPLE DIAGRD            D88
*IF DEF,LSFMD,1 
*         37. DL809  E0004 LXXX MISCOMPARE ON MULTIPLE DIAGRD 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             SUCCESSIVE DIAGNOSTIC READS OF  THE  COUPLER  BUFFER  DE-  D88
*             TECTED  A  DATA  WORD MISCOMPARE.  THE DATA WORD IN ERROR  D88
*             WILL BE DISPLAYED.                                         D88
*                                                                        D88
*IF DEF,PFMD,1
*         38. DH809  E0005 LXXX MISCOMPARE ON DIAGWR/DIAGRD 
*IF DEF,SFMD,1
*         38. D8809  E0005 LXXX MISCOMPARE ON DIAGWR/DIAGRD              D88
*IF DEF,LSFMD,1 
*         38. DL809  E0005 LXXX MISCOMPARE ON DIAGWR/DIAGRD 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A DIAGNOSTIC READ FOLLOWING A  DIAGNOSTIC  WRITE  COUPLER  D88
*             BUFFER  DETECTED A DATA WORD MISCOMPARE. THE DATA WORD IN  D88
*             ERROR WILL BE DISPLAYED.                                   D88
*                                                                        D88
*IF DEF,PFMD,1
*         39. DH811  E0006 LXXX MISCOMPARE ON WRITECB/READCB
*IF DEF,SFMD,1
*         39. D8811  E0006 LXXX MISCOMPARE ON WRITECB/READCB
*IF DEF,LSFMD,1 
*         39. DL811  E0006 LXXX MISCOMPARE ON WRITECB/READCB
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             AFTER  WRITE  COUPLER BUFFER WAS FOLLOWED BY A DIAGNOSTIC  D88
*             READ, A DATA WORD MISCOMPARE WAS DETECTED.  THE DATA WORD  D88
*             IN ERROR WILL BE DISPLAYED.                                D88
*                                                                        D88
*IF DEF,PFMD,1
*         40. DH813  E0007 LXXX E=505-531B USEC  A=YYYYB USEC 
*IF DEF,SFMD,1
*         40. D8813  E0007 LXXX E=505-531B USEC  A=YYYYB USEC 
*IF DEF,LSFMD,1 
*         40. DL813  E0007 LXXX E=505-531B USEC  A=YYYYB USEC 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             YYYY= AVERAGE  SEEK  TIME  IN  MICROSECONDS.               D88
*             AN AVERAGE  OF  20 SEEK TIME  MEASUREMENTS   EXCEEDS  THE  D88PTR4
*             SPECIFICATION  LIMITS  OF  505B-531B  MICROSECONDS.   THE 
*             ILLEGAL SEEK TIME MEASUREMENT IS DISPLAYED.                D88
*                                                                        D88
*IF DEF,PFMD,1
*         41. DH815  E0008 LXXX MISCOMPARE ON GET SERIAL TEST 
*IF DEF,SFMD,1
*         41. D8815  E0008 LXXX MISCOMPARE ON GET SERIAL TEST            D88
*IF DEF,LSFMD,1 
*         41. DL815  E0008 LXXX MISCOMPARE ON GET SERIAL TEST 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A DATA MISCOMPARE WAS DETECTED WHEN RETRIEVING  THE  DISK  D88
*             SERIAL  NUMBER  OFF OF CYLINDER 1511B.  THE DATA WORDS IN  D88
*             ERROR WILL BE DISPLAYED.                                   D88
*                                                                        D88
*IF DEF,PFMD,1
*         42. DH815  E0009 LXXX MISCOMPARE ON GET FACTORY TEST
*IF DEF,SFMD,1
*         42. D8815  E0009 LXXX MISCOMPARE ON GET FACTORY TEST           D88
*IF DEF,LSFMD,1 
*         42. DL815  E0009 LXXX MISCOMPARE ON GET FACTORY TEST
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A  DATA  MISCOMPARE  WAS  DETECTED  WHEN  RETRIEVING DISK  D88
*             FACTORY FLAW INFORMATION OFF OF CYLINDER 1511B.  THE DATA  D88
*             WORDS IN ERROR WILL BE DISPLAYED.                          D88
*                                                                        D88
*IF DEF,PFMD,1
*         43. DH815  E0010 LXXX MISCOMPARE ON GET UTILITY TEST
*IF DEF,SFMD,1
*         43. D8815  E0010 LXXX MISCOMPARE ON GET UTILITY TEST           D88
*IF DEF,LSFMD,1 
*         43. DL815  E0010 LXXX MISCOMPARE ON GET UTILITY TEST
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A DATA  MISCOMPARE  WAS  DETECTED  WHEN  RETRIEVING  DISK  D88
*             UTILITY FLAW INFORMATION OFF OF CYLINDER 1511B.  THE DATA  D88
*             WORDS IN ERROR WILL BE DISPLAYED.                          D88
*                                                                        D88
*IF DEF,PFMD,1
*         44. DH817  E0011 LXXX MISCOMPARE ON WC PATTERN READ 
*IF DEF,SFMD,1
*         44. D8817  E0011 LXXX MISCOMPARE ON WC PATTERN READ            D88
*IF DEF,LSFMD,1 
*         44. DL817  E0011 LXXX MISCOMPARE ON WC PATTERN READ 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A  DATA  ERROR  WAS  DETECTED WHEN READING THE WORST CASE  D88
*             PATTERN FROM CYLINDER 1511B.  THE  DATA  WORDS  IN  ERROR  D88
*             WILL BE DISPLAYED.                                         D88
*                                                                        D88
*IF DEF,PFMD,1
*         45. DH819  E0012 LXXX MISCOMPARE ON WRITE/DIAGRD
*IF DEF,SFMD,1
*         45. D8819  E0012 LXXX MISCOMPARE ON WRITE/DIAGRD               D88
*IF DEF,LSFMD,1 
*         45. DL819  E0012 LXXX MISCOMPARE ON WRITE/DIAGRD
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A  WRITE FOLLOWING A DIAGNOSTIC READ DETECTED A DATA WORD  D88
*             MISCOMPARE. THE DATA WORD IN ERROR WILL BE DISPLAYED.      D88
*                                                                        D88
*IF DEF,PFMD,1
*         46. DH822  E0013 LXXX MISCOMPARE ON RANDOM PATT READ
*IF DEF,SFMD,1
*         46. D8823  E0013 LXXX MISCOMPARE ON RANDOM PATT READ           D88
*IF DEF,LSFMD,1 
*         46. DL823  E0013 LXXX MISCOMPARE ON RANDOM PATT READ
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A DATA ERROR WAS DETECTED WHEN READING THE RANDOM PATTERN  D88
*IF DEF,PFMD,1
*             WRITTEN BY DH821.   THE  DATA  WORDS  IN  ERROR  WILL  BE 
*IF DEF,SFMD,1
*             WRITTEN BY D8821.   THE  DATA  WORDS  IN  ERROR  WILL  BE  D88
*IF DEF,LSFMD,1 
*             WRITTEN BY DL821.   THE  DATA  WORDS  IN  ERROR  WILL  BE 
*             DISPLAYED.                                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         47. DH825  E0014 LXXX GEN S. E=YYYYB A=ZZZZB SUBTESTAA
*IF DEF,SFMD,1
*         47. D8825  E0014 LXXX GEN S. E=YYYYB A=ZZZZB SUBTESTAA         D88
*IF DEF,LSFMD,1 
*         47. DL825  E0014 LXXX GEN S. E=YYYYB A=ZZZZB SUBTESTAA
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             YYYY= EXPECTED GENERAL STATUS                              D88
*             ZZZZ= ACTUAL GENERAL STATUS                                D88
*             AA  = SUBTEST BEING EXECUTED                               D88
*             A GENERAL STATUS  MISCOMPARE  WAS  DETECTED  FOLLOWING  A  D88
*             SHORTREAD  COMMAND.   THE  EXPECTED  AND  ACTUAL  GENERAL  D88
*             STATUS WILL BE DISPLAYED.                                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         48. DH825  E0015 LXXX CORRECTION VECTOR ERROR SUBTESTAA 
*IF DEF,SFMD,1
*         48. D8825  E0015 LXXX CORRECTION VECTOR ERROR SUBTESTAA        D88
*IF DEF,LSFMD,1 
*         48. DL825  E0015 LXXX CORRECTION VECTOR ERROR SUBTESTAA 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             AA  = SUBTEST BEING EXECUTED                               D88
*             THE CORRECTION VECTOR LOGIC FAILED  TO  CORRECT  THE  BAD  D88
*             DATA  BITS  GENERATED FOR TESTING. THE DATA ERROR WILL BE  D88
*             DISPLAYED.                                                 D88
*                                                                        D88
*IF DEF,PFMD
*         49. DH829  E0016 LXXX WRITE VERIFY ERROR NOT DETECTED 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             THE MODULE FAILED TO DETECT A WRITE VERIFY ERROR THAT WAS 
*             PREVIOUSLY CREATED. 
*ENDIF
*IF DEF,SFMD
*         49. D8829  E0016 LXXX GS.YYYYB    DETAIL S.*OCTB               D88
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             YYYY= ACTUAL GENERAL STATUS                                D88
*             THE MODULE FAILED TO DETECT A WRITE VERIFY ERROR THAT WAS  D88
*             PREVIOUSLY CREATED.  THE DATA ERROR WILL BE DISPLAYED.     D88
*ENDIF
*IF DEF,LSFMD 
*         49. DL829  E0016 LXXX GS.YYYYB    DETAIL S.*OCTB
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             YYYY= ACTUAL GENERAL STATUS 
*             THE MODULE FAILED TO DETECT A WRITE VERIFY ERROR THAT WAS 
*             PREVIOUSLY CREATED.  THE DATA ERROR WILL BE DISPLAYED.
*ENDIF
*                                                                        D88
*IF DEF,PFMD,1
*         50. DH833  E0017 LXXX SEEK ERROR    EYYYYB     AZZZZB 
*IF DEF,SFMD,1
*         50. D8833  E0017 LXXX SEEK ERROR    EYYYYB     AZZZZB          D88
*IF DEF,LSFMD,1 
*         50. DL833  E0017 LXXX SEEK ERROR    EYYYYB     AZZZZB 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             YYYY= EXPECTED SEEK ADDRESS                                D88
*             ZZZZ= ACTUAL SEEK ADDRESS                                  D88
*             THE  MODULE FAILED TO SEEK TO THE REQUIRED ADDRESS ON THE  D88
*             PACK.  THE EXPECTED AND ACTUAL  SEEK  ADDRESSES  WILL  BE  D88
*             DISPLAYED.                                                 D88
*                                                                        D88
*IF DEF,PFMD,1
*         51. DH841  E0018 LXXX DATA COMPARE ERROR  (READ 2 TO 1) 
*IF DEF,SFMD,1
*         51. D8841  E0018 LXXX DATA COMPARE ERROR  (READ 2 TO 1)        D88
*IF DEF,LSFMD,1 
*         51. DL841  E0018 LXXX DATA COMPARE ERROR  (READ 2 TO 1) 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A  DATA ERROR WAS DETECTED IN THE DATA READ FROM THE DISK  D88
*             WHILE READING IN 2 TO 1 INTERLACE MODE.  THE  DATA  ERROR  D88
*             WILL BE DISPLAYED.                                         D88
*                                                                        D88
*IF DEF,PFMD,1
*         52. DH843  E0019 LXXX DATA COMPARE ERROR  (READ 1 TO 1) 
*IF DEF,SFMD,1
*         52. D8843  E0019 LXXX DATA COMPARE ERROR  (READ 1 TO 1)        D88
*IF DEF,LSFMD,1 
*         52. DL843  E0019 LXXX DATA COMPARE ERROR  (READ 1 TO 1) 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A DATA ERROR WAS DETECTED IN THE DATA READ FROM THE  DISK  D88
*             WHILE  READING  IN 1 TO 1 INTERLACE MODE.  THE DATA ERROR  D88
*             WILL BE DISPLAYED.                                         D88
*                                                                        D88
*IF DEF,PFMD,1
*         53. DH860  E0020 LXXX GENERAL STATUS YYYYB ON RESET 
*IF DEF,SFMD,1
*         53. D8860  E0020 LXXX GENERAL STATUS YYYYB ON RESET 
*IF DEF,LSFMD,1 
*         53. DL860  E0020 LXXX GENERAL STATUS YYYYB ON RESET 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             YYYY= ABNORMAL GENERAL STATUS                              D88
*             FOLLOWING A RESET COMMAND, AN ABNORMAL GENERAL STATUS WAS  D88
*             RECEIVED.                                                  D88
*                                                                        D88
*IF DEF,PFMD,1
*         54. DH864  E0021 LXXX DATA COMPARE ERROR
*IF DEF,SFMD,1
*         54. D8864  E0021 LXXX DATA COMPARE ERROR
*IF DEF,LSFMD,1 
*         54. DL864  E0021 LXXX DATA COMPARE ERROR
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.                 D88
*             A DATA ERROR WAS DETECTED FOLLOWING A READ  COMMAND.  THE  D88
*             DATA ERROR WILL BE DISPLAYED.                              D88
*                                                                        D88
*IF DEF,PFMD,1
*         55. DH812  E0022 LXXX CONTROLLER LOOP 885 BUS ACTIVE
*IF DEF,SFMD,1
*         55. D8812  E0022 LXXX CONTROLLER LOOP 885 BUS ACTIVE
*IF DEF,LSFMD,1 
*         55. DL812  E0022 LXXX CONTROLLER LOOP 885 BUS ACTIVE
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             A CHECK OF THE INPUT CHANNELS INDICATES ECHO MODE WAS SET 
*             AFTER  A  COMMAND  WAS ISSUED ON BUS OUT. 
* 
*IF DEF,PFMD,1
*         56. DH812  E0023 LXXX CONTROLLER LOOP 885 DECODE ACTIVE 
*IF DEF,SFMD,1
*         56. D8812  E0023 LXXX CONTROLLER LOOP 885 DECODE ACTIVE 
*IF DEF,LSFMD,1 
*         56. DL812  E0023 LXXX CONTROLLER LOOP 885 DECODE ACTIVE 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             A CHECK OF THE INPUT CHANNELS INDICATES ECHO MODE WAS SET 
*             AFTER A COMMAND WAS ISSUED ON BUS OUT.
* 
*IF DEF,PFMD,1
*         57. DH812  E0024 LXXX BUS IN DATA ERROR 
*IF DEF,SFMD,1
*         57. D8812  E0024 LXXX BUS IN DATA ERROR 
*IF DEF,LSFMD,1 
*         57. DL812  E0024 LXXX BUS IN DATA ERROR 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             DATA RECIEVED ON THE  INPUT CHANNEL MISCOMPARES  WITH THE 
*             DATA SENT ON THE OUTPUT CHANNEL.
* 
*IF DEF,PFMD,1
*         58. DH812  E0025 LXXX BUS OUT P.E. OR ILLEGAL CMD DECODE
*IF DEF,SFMD,1
*         58. D8812  E0025 LXXX BUS OUT P.E. OR ILLEGAL CMD DECODE
*IF DEF,LSFMD,1 
*         58. DL812  E0025 LXXX BUS OUT P.E. OR ILLEGAL CMD DECODE
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             THE INPUT CHANNEL STATUS INDICATES THAT THE DRIVE WAS NOT 
*             READY DUE TO A PARITY ERROR OR ILLEGAL COMMAND. 
* 
*IF DEF,PFMD
*         59. DH814  E0026 LXXX MISCOMPARE ON MULTIPLE SYSRD
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             SUCCESSIVE SYSTEM READS   OF THE ESM MEMORY DETECT A DATA 
*             WORD MISCOMPARE.  THE DATA WORD IN ERROR WILL BE DISPLAY- 
*             ED. 
* 
*         60. DH814  E0027 LXXX MISCOMPARE ON SYSWR/SYSRD 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             A SYSTEM READ  FOLLOWING  A SYSTEM WRITE DETECTED  A DATA 
*             WORD MISCOMPARE.  THE DATA WORD IN THE ERROR WILL BE DIS- 
*             PLAYED. 
* 
*         61. DH816  E0028 LXXX MISCOMPARE ON MULTIPLE DIAGRD 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             SUCCESSIVE  DIAGNOSTIC   READS  OF  THE  EXTENDED  MEMORY 
*             DETECTED A DATA WORD MISCOMPARE.   THE DATA WORD IN ERROR 
*             WILL BE DISPLAYED.
* 
*         62. DH816  E0029 LXXX MISCOMPARE ON DIAGWR/DIAGRD 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             A DIAGNOSTIC READ  FOLLOWING A DIAGNOSTIC WRITE  EXTENDED 
*             MEMORY DETECTED A DATA WORD MISCOMPARE.  THE DATA WORD IN 
*             ERROR WILL BE DISPLAYED.
* 
*         63. DH818  E0030 LXXX MISCOMPARE ON WC PATTERN READ 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             A DATA ERROR  WAS DETECTED  WHEN  READING THE  WORST CASE 
*             PATTERN  FROM  CYLINDER 1511B.  THE DATA WORDS  IN  ERROR 
*             WILL BE DISPLAYED.
* 
*         64. DH824  E0031 LXXX MISCOMPARE ON RANDOM PATT READ
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             A DATA ERROR WAS DETECTED WHEN READING THE RANDOM PATTERN 
*             WRITTEN  BY DH823.  THE DATA WORDS IN  ERROR WILL BE DIS- 
*             PLAYED. 
* 
*         65. DH8YY  E0032 LXXX ESM TRANSFER ERROR (STATUS=SS)
*             SS  = SYSRD ESM STATUS. 
*             XXX = LINE NUMBER ON WHICH ERROR OCCURRED.
*             YY  = PRIMARY MODULE IN WHICH ERROR OCCURRED. 
*             AN ESM SYSTEM TRANSFER  ERROR  WAS  DETECTED WHEN READING 
*             ESM.  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.
* 
*ENDIF
*** 3.1.7 PERFORMANCE                                                    D88
**  3.1.7 PERFORMANCE                                                    D88
*   3.1.7 PERFORMANCE                                                    D88
*         -----------                                                    D88
*                                                                        D88
*IF DEF,PFMD,8
*         THE MAIN PURPOSE OF THE TEST DH8 IS TO DETERMINE IF THE  DEMA 
*         CONTROLLER, 885-4X DRIVES, AND ESM SUBSYSTEM ARE  FUNCTIONING 
*         CORRECTLY.  AN ERROR WILL INDICATE WHICH DIAGNOSTIC SHOULD BE 
*         RUN NEXT TO ISOLATE THE FAILURE.  THE TEST IS DESIGNED TO DE- 
*         TECT FAILURES IN THE DEMA CONTROLLER,  THE 885-4X DRIVE,  AND 
*         CERTAIN PARTS OF THE ESM SUBSYSTEM.   IT WILL NOT TEST ANY OF 
*         THE  LOGIC IN  THE  CONTROLLER USED TO INTERFACE  TO THE  844 
*         DRIVE OR ANY 844/885-1X DRIVES. 
*IF DEF,SFMD,7
*         THE MAIN PURPOSE OF THE TEST D88 IS TO DETERMINE IF THE  7155  D88
*         CONTROLLER AND 885 DRIVES ARE FUNCTIONING CORRECTLY. AN ERROR  D88
*         WILL INDICATE WHICH DIAGNOSTIC SHOULD BE RUN NEXT TO  ISOLATE  D88
*         THE  FAILURE.  THE TEST IS DESIGNED TO DETECT FAILURES IN THE  D88
*         7155 CONTROLLER AND 885 DRIVE. IT WILL NOT TEST  ANY  OF  THE  D88
*         LOGIC IN THE CONTROLLER USED TO INTERFACE TO THE 844 DRIVE OR  D88
*         ANY 844 DRIVES.                                                D88
*IF DEF,LSFMD,7 
*         THE MAIN PURPOSE OF THE TEST DL8 IS TO DETERMINE IF THE  7155 
*         CONTROLLER AND 885 DRIVES ARE FUNCTIONING CORRECTLY. AN ERROR 
*         WILL INDICATE WHICH DIAGNOSTIC SHOULD BE RUN NEXT TO  ISOLATE 
*         THE  FAILURE.  THE TEST IS DESIGNED TO DETECT FAILURES IN THE 
*         7155 CONTROLLER AND 885 DRIVE. IT WILL NOT TEST  ANY  OF  THE 
*         LOGIC IN THE CONTROLLER USED TO INTERFACE TO THE 844 DRIVE OR 
*         ANY 844 DRIVES. 
*                                                                        D88
*IF DEF,PFMD,6
*         MODULES  DH801 THRU DH839 ARE DESIGNED TO BE RUN IN NUMERICAL 
*         ORDER AS ONE TEST SERIES. MODULES DH840 THRU DH846 AND  DH860 
*         THRU  DH865  HAVE  BEEN DESIGNED TO BE RUN INDIVIDUALLY. THIS 
*         MEANS THAT IN ORDER TO RUN MORE THAT ONE OF THESE MODULES  IN 
*         A  TEST  SERIES,  EACH MODULE IN THE SERIES THAT IS TO BE RUN 
*         MUST BE SPECIFIED IN THE RUN STATEMENT. 
*IF DEF,SFMD,6
*         MODULES  D8801 THRU D8839 ARE DESIGNED TO BE RUN IN NUMERICAL  D88
*         ORDER AS ONE TEST SERIES. MODULES D8840 THRU D8846 AND  D8860  D88
*         THRU  D8865  HAVE  BEEN DESIGNED TO BE RUN INDIVIDUALLY. THIS  D88
*         MEANS THAT IN ORDER TO RUN MORE THAT ONE OF THESE MODULES  IN  D88
*         A  TEST  SERIES,  EACH MODULE IN THE SERIES THAT IS TO BE RUN  D88
*         MUST BE SPECIFIED IN THE RUN STATEMENT.                        D88
*IF DEF,LSFMD,6 
*         MODULES  DL801 THRU DL839 ARE DESIGNED TO BE RUN IN NUMERICAL 
*         ORDER AS ONE TEST SERIES. MODULES DL840 THRU DL846 AND  DL860 
*         THRU  DL865  HAVE  BEEN DESIGNED TO BE RUN INDIVIDUALLY. THIS 
*         MEANS THAT IN ORDER TO RUN MORE THAT ONE OF THESE MODULES  IN 
*         A  TEST  SERIES,  EACH MODULE IN THE SERIES THAT IS TO BE RUN 
*         MUST BE SPECIFIED IN THE RUN STATEMENT. 
*                                                                        D88
***       HARDWARE                                                       D88
**        HARDWARE                                                       D88
*         HARDWARE                                                       D88
*         --------                                                       D88
*                                                                        D88
*IF DEF,PFMD,13 
*         ALL ERROR MESSAGES THAT ARE REPORTED,THAT INDICATE A HARDWARE  D88PTR4
*         FAILURE, WILL  INCLUDE A PRESERVICE FORECAST GROUP  NUMBER IN 
*         THE ERROR MESSAGE DISPLAY.  THE  FOUR  POSSIBILITIES FOR  THE 
*         PRESERVICE  FORECAST GROUP NUMBER  ARE  FHDC, FHDD, CESM, AND 
*         DESM.  THE  FHDC PRESERVICE  FORECAST  GROUP NUMBER INDICATES 
*         THAT THE DIAGNOSTIC FHC SHOULD BE RUN TO ISOLATE THE FAILURE. 
*         THE FHDD PRESERVICE FORECAST GROUP NUMBER  INDICATES THAT THE 
*         DIAGNOSTIC FHD SHOULD BE RUN TO ISOLATE THE FAILURE. THE DESM 
*         PRESERVICE FORECAST GROUP NUMBER INDICATES THAT THE  DIAGNOS- 
*         TIC  FEP AND LOW SPEED PORT DIAGNOSTIC  SHOULD BE RUN TO ISO- 
*         LATE THE FAILURE.  THE CESM  PRESERVICE FORECAST GROUP NUMBER 
*         INDICATES THAT THE ESM COUPLER DIAGNOSTIC  AND OTHER ESM SUB- 
*         SYSTEM DIAGNOSTICS SHOULD BE RUN TO ISOLATE THE FAILURE.
*IF DEF,SFMD,8
*         ALL ERROR MESSAGES THAT ARE REPORTED,THAT INDICATE A HARDWARE 
*         FAILURE, WILL  INCLUDE A PRESERVICE FORECAST GROUP  NUMBER IN 
*         THE ERROR MESSAGE DISPLAY. THE  THREE  POSIBILITIES  FOR  THE 
*         PRESERVICE  FORECAST  GROUP  NUMBER ARE FMDC, FMDD, AND FMDH. 
*         THE FMDC PRESERVICE FORECAST GROUP NUMBER INDICATES THAT  THE 
*         DIAGNOSTIC FMC SHOULD BE RUN TO ISOLATE THE FAILURE. THE FMDD 
*         AND FMDH PRESERVICE FORECAST GROUP NUMBERS INDICATE  THAT THE 
*         DIAGNOSTIC FMD SHOULD BE RUN TO ISOLATE THE FAILURE.
*IF DEF,LSFMD,8 
*         ALL ERROR MESSAGES THAT ARE REPORTED,THAT INDICATE A HARDWARE 
*         FAILURE, WILL  INCLUDE A PRESERVICE FORECAST GROUP  NUMBER IN 
*         THE ERROR MESSAGE DISPLAY. THE  THREE  POSIBILITIES  FOR  THE  D88
*         PRESERVICE  FORECAST  GROUP  NUMBER ARE FMDC, FMDD, AND FMDH.  D88
*         THE FMDC PRESERVICE FORECAST GROUP NUMBER INDICATES THAT  THE  D88
*         DIAGNOSTIC FMC SHOULD BE RUN TO ISOLATE THE FAILURE. THE FMDD  D88PTR4
*         AND FMDH PRESERVICE FORECAST GROUP NUMBERS INDICATE  THAT THE  D88PTR4
*         DIAGNOSTIC FMD SHOULD BE RUN TO ISOLATE THE FAILURE.
*                                                                        D88
***       SOFTWARE                                                       D88
**        SOFTWARE                                                       D88
*         SOFTWARE                                                       D88
*         --------                                                       D88
*                                                                        D88
*         MODULE RUNNING TIMES AND ACCESS LEVELS                         D88
*         --------------------------------------                         D88
*                                                                        D88
*         MODULE            RUNNING          ACCESS                      D88
*          NAME              TIME            LEVEL                       D88
*         ------            -------          ------                      D88
*                                                                        D88
*         CONFIDENCE PORTION OF TEST                                     D88
*IF DEF,PFMD
*         DH801                2  SEC.         1
*         DH803                1  SEC.         1
*         DH805                1  SEC.         1
*         DH807                1  SEC.         1
*         DH809                2  SEC.         1
*         DH811                7  SEC.         1
*         DH812                1  SEC.         3
*         DH813                3  SEC.         1
*         DH814                5  SEC.         1
*IF DEF,CMSE17X,1 
*         DH815                4  SEC.         1
*IF -DEF,CMSE17X,4
*IF DEF,SECURE,1
*         DH815                4  SEC.         3
*IF -DEF,SECURE,1 
*         DH815                4  SEC.         1
*         DH816                9  SEC.         1
*         DH817                3  SEC.         3
*         DH818                4  SEC.         3
*         DH819                1  SEC.         3
*         DH821                1  SEC.         3
*         DH822                12 SEC.         3
*         DH823                1  SEC.         3
*         DH824                91 SEC.         3
*         DH825                7  SEC.         3
*         DH827                1  SEC.         3
*         DH829                1  SEC.         3
*         DH831                4  SEC.         2
*         DH833                4  SEC.         3
*         DH835                1  SEC.         3
*         DH837                2  SEC.         3
*         DH839                1  SEC.         1
* 
*         PARAMETER PORTION OF TEST 
*         RUN TIMES ARE BASED USING THE FULL DISK 
*         DH840        1 HOUR, 35 MINUTES      4
*         DH841        1 HOURS, 37 MINUTES     4
*         DH842        53 MINUTES, 19 SEC.     4
*         DH843        23 HOURS, 17 MINUTES    4
*         DH844        9 MINUTES, 51 SEC.      4
*         DH845        24 MINUTES              4
*IF DEF,CMSE17X,2 
*         DH846        3 MINUTES, 50 SEC.      1
*         DH847        4 MINUTES               1
*IF -DEF,CMSE17X,6
*IF DEF,SECURE,2
*         DH846        3 MINUTES, 50 SEC.      3
*         DH847        4 MINUTES               3
*IF -DEF,SECURE,2 
*         DH846        3 MINUTES, 50 SEC.      1
*         DH847        4 MINUTES               1
* 
*         REPAIR MODULES
*         DH860                                1
*         DH861                                4
*         DH862                                4
*         DH863                                4
*         DH864                                4
*         DH865                                4
*ENDIF
*IF DEF,SFMD
*         D8801                1  SEC.         1                         D88
*         D8803                2  SEC.         1                         D88
*         D8805                1  SEC.         1                         D88
*         D8807                1  SEC.         1                         D88
*         D8809                1  SEC.         1                         D88
*         D8811                2  SEC.         1                         D88
*         D8812                1  SEC.         3
*         D8813                5  SEC.         1                         D88
*IF DEF,CMSE17X,1 
*         D8815                13 SEC.         1
*IF -DEF,CMSE17X,4
*IF DEF,SECURE,1
*         D8815                13 SEC.         3
*IF -DEF,SECURE,1 
*         D8815                13 SEC.         1
*         D8817                27 SEC.         3                         D88
*         D8819                1  SEC.         3                         D88
*         D8821                4  SEC.         3                         D88
*         D8823                52 SEC.         3                         D88
*         D8825                3  SEC.         3                         D88
*         D8827                3  SEC.         3                         D88
*         D8829                1  SEC.         3                         D88
*         D8831                7  SEC.         2                         D88
*         D8833                10 SEC.         3                         D88
*         D8835                1  SEC.         3                         D88
*         D8837                46 SEC.         3                         D88
*         D8839                2  SEC.         1                         D88
*                                                                        D88
*         PARAMETER PORTION OF TEST                                      D88
*         D8840        1 HOUR, 37 MINUTES      4                         D88
*         D8841        6 HOURS, 19 MINUTES     4                         D88
*         D8842        1 HOUR, 17 MINUTES      4                         D88
*         D8843        6 HOURS, 3 MINUTES      4                         D88
*         D8844        21 MINUTES              4                         D88
*         D8845        14 MINUTES              4                         D88
*IF DEF,CMSE17X,2 
*         D8846        38 MINUTES              1
*         D8847         4 MINUTES              1
*IF -DEF,CMSE17X,6
*IF DEF,SECURE,2
*         D8846        38 MINUTES              3
*         D8847         4 MINUTES              3
*IF -DEF,SECURE,2 
*         D8846        38 MINUTES              1
*         D8847         4 MINUTES              1
*                                                                        D88
*         REPAIR MODULES                                                 D88
*         D8860                                1                         D88PTR4
*         D8861                                4                         D88
*         D8862                                4                         D88
*         D8863                                4                         D88
*         D8864                                4                         D88
*         D8865                                4                         D88
*ENDIF
*IF DEF,LSFMD 
*         DL801                1  SEC.         1
*         DL803                2  SEC.         1
*         DL805                1  SEC.         1
*         DL807                1  SEC.         1
*         DL809                1  SEC.         1
*         DL811                2  SEC.         1
*         DL812                1  SEC.         3
*         DL813                5  SEC.         1
*IF DEF,CMSE17X,1 
*         DL815                13 SEC.         1
*IF -DEF,CMSE17X,4
*IF DEF,SECURE,1
*         DL815                13 SEC.         3
*IF -DEF,SECURE,1 
*         DL815                13 SEC.         1
*         DL817                27 SEC.         3
*         DL819                1  SEC.         3
*         DL821                4  SEC.         3
*         DL823                52 SEC.         3
*         DL825                3  SEC.         3
*         DL827                3  SEC.         3
*         DL829                1  SEC.         3
*         DL831                7  SEC.         2
*         DL833                10 SEC.         3
*         DL835                1  SEC.         3
*         DL837                46 SEC.         3
*         DL839                2  SEC.         1
* 
*         PARAMETER PORTION OF TEST 
*         DL842        1 HOUR, 17 MINUTES      4
*         DL843        6 HOURS, 3 MINUTES      4
*         DL844        21 MINUTES              4
*         DL845        14 MINUTES              4
*IF DEF,CMSE17X,2 
*         DL846        38 MINUTES              1
*         DL847        12 MINUTES              1
*IF -DEF,CMSE17X,6
*IF DEF,SECURE,2
*         DL846        38 MINUTES              3
*         DL847        12 MINUTES              3
*IF -DEF,SECURE,2 
*         DL846        38 MINUTES              1
*         DL847        12 MINUTES              1
* 
*         REPAIR MODULES
*         DL860                                1
*         DL861                                4
*         DL862                                4
*         DL863                                4
*         DL864                                4
*         DL865                                4
*ENDIF
*                                                                        D88
*** 3.1.8 INSTALLATION PARAMETERS                                        D88
**  3.1.8 INSTALLATION PARAMETERS                                        D88
*   3.1.8 INSTALLATION PARAMETERS                                        D88
*         -----------------------                                        D88
*                                                                        D88
*IF DEF,PFMD,1
*         THE  FOLLOWING  NAMES  MUST BE DEFINED TO ASSEMBLE DH8 DURING 
*IF DEF,SFMD,1
*         THE  FOLLOWING  NAMES  MUST BE DEFINED TO ASSEMBLE D88 DURING  D88
*IF DEF,LSFMD,1 
*         THE  FOLLOWING  NAMES  MUST BE DEFINED TO ASSEMBLE DL8 DURING 
*         THE UPDATE RUN-                                                D88
*                                                                        D88
*IF DEF,PFMD,2
*         *DEFINE,PFMD       TO ASSEMBLE DH8
*         *DEFINE,CMSE17X    TO ASSEMBLE DH8 FOR OFF-LINE 
*IF DEF,SFMD,2
*         *DEFINE,SFMD       TO ASSEMBLE D88
*         *DEFINE,CMSE17X    TO ASSEMBLE D88 FOR OFF-LINE                D88
*IF DEF,LSFMD,2 
*         *DEFINE,LSFMD       TO ASSEMBLE DL8 
*         *DEFINE,CMSE17X    TO ASSEMBLE DL8 FOR OFF-LINE 
*                                                                        D88
*** 4.0   PRODUCT LEVEL DESCRIPTION                                      D88
**  4.0   PRODUCT LEVEL DESCRIPTION                                      D88
*   4.0   PRODUCT LEVEL DESCRIPTION                                      D88
*         -------------------------                                      D88
*                                                                        D88
*   4.1   PUBLICATIONS AFFECTED 
*   4.1   PUBLICATIONS AFFECTED 
*   4.1   PUBLICATIONS AFFECTED                                          D88
*         ---------------------                                          D88
*                                                                        D88
*IF DEF,PFMD,2
*         CHANGES TO DH8 CAN AFFECT THE DEMA STORAGE SUBSYSTEM TROUBLE- 
*         SHOOTING GUIDE (PUB. NO. XXXXXXXX). 
*IF DEF,SFMD,2
*         CHANGES TO D88 CAN AFFECT THE 7155 STORAGE SUBSYSTEM TROUBLE-  D88
*         SHOOTING GUIDE (PUB. NO. 60456010).                            D88
*IF DEF,LSFMD,2 
*         CHANGES TO DL8 CAN AFFECT THE 7155 STORAGE SUBSYSTEM TROUBLE- 
*         SHOOTING GUIDE (PUB. NO. 60456010). 
*                                                                        D88
*** 4.2   EQUIPMENT CONFIGURATION                                        D88
**  4.2   EQUIPMENT CONFIGURATION                                        D88
*   4.2   EQUIPMENT CONFIGURATION                                        D88
*         -----------------------                                        D88
*                                                                        D88
*IF DEF,PFMD,13 
*         1.  THE  TEST REQUIRES THE  USE  OF ONE  DEMA CONTROLLER, ONE 
*             885-4X DRIVE, AND ONE  ESM SUBSYSTEM.  THE  TEST CAN ONLY 
*             TEST ONE DEMA CONTROLLER, ONE ESM SUBSYSTEM, AND ONE 885- 
*             4X DRIVE AT A TIME. 
* 
*         2.  THE TEST USES THE CONTROLWARE IN THE 7155-401  CONTROLLER 
*             TO TEST THE SUBSYSTEM.
* 
*         3.  THE TEST CANNOT BE USED  TO TEST THE 844/885-1X DRIVES ON 
*             THE  SUBSYSTEM  IF ANY ARE  CONNECTED TO THE  CONTROLLER. 
*             ALSO THE INTERFACE HARDWARE FOR THE THE 844 OR UNASSIGNED 
*             885 DRIVES CONTROLLER  WILL NOT BE TESTED IF IT EXISTS IN 
*             THE CONTROLLER. 
*IF DEF,SFMD,12 
*         1.  THE TEST REQUIRES THE USE OF ONE 7155 CONTROLLER AND  ONE  D88
*             885  DRIVE. THE TEST CAN ONLY TEST ONE CONTROLLER AND 885  D88
*             DRIVE AT A TIME.                                           D88
*                                                                        D88
*         2.  THE TEST USES THE CONTROLWARE IN THE 7155  CONTROLLER  TO  D88
*             TEST THE SUBSYSTEM.                                        D88
*                                                                        D88
*         3.  THE  TEST  CANNOT  BE  USED TO TEST THE 844 DRIVES ON THE  D88
*             7155 SUBSYSTEM IF ANY ARE CONNECTED  TO  THE  CONTROLLER.  D88
*             ALSO THE INTERFACE HARDWARE FOR THE THE 844 DRIVES IN THE  D88
*             CONTROLLER  WILL  NOT  BE  TESTED  IF  IT  EXISTS  IN THE  D88PTR4
*             CONTROLLER.                                                D88PTR4
*IF DEF,LSFMD,12
*         1.  THE TEST REQUIRES THE USE OF ONE 7155 CONTROLLER AND  ONE 
*             885  DRIVE. THE TEST CAN ONLY TEST ONE CONTROLLER AND 885 
*             DRIVE AT A TIME.
* 
*         2.  THE TEST USES THE CONTROLWARE IN THE 7155  CONTROLLER  TO 
*             TEST THE SUBSYSTEM. 
* 
*         3.  THE  TEST  CANNOT  BE  USED TO TEST THE 844 DRIVES ON THE 
*             7155 SUBSYSTEM IF ANY ARE CONNECTED  TO  THE  CONTROLLER. 
*             ALSO THE INTERFACE HARDWARE FOR THE THE 844 DRIVES IN THE 
*             CONTROLLER  WILL  NOT  BE  TESTED  IF  IT  EXISTS  IN THE 
*             CONTROLLER. 
*                                                                        D88
*** 4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS                          D88
**  4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS                          D88
*   4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS                          D88
*         -------------------------------------                          D88
*                                                                        D88
*IF DEF,PFMD,2
*         THE  7155-401 CONTROLLER FUNCTION CODES AND  THE  GENERAL AND 
*         DETAILED STATUS,  AS  DEFINED  IN  THE MA722  CONTROLWARE, IS 
*IF DEF,SFMD,2
*         THE 7155 CONTROLLER  FUNCTION  CODES  AND  THE  GENERAL   AND  D88
*         DETAILED STATUS,  AS  DEFINED  IN  THE MA721  CONTROLWARE, IS  D88PTR4
*IF DEF,LSFMD,2 
*         THE 7155 CONTROLLER  FUNCTION  CODES  AND  THE  GENERAL   AND 
*         DETAILED STATUS,  AS  DEFINED  IN  THE MA721  CONTROLWARE, IS 
*         INTERPRETED BY THE ERROR PROCESSING SUBMODULES AND  PRESENTED  D88
*         AS PART OF ERROR MESSAGE DISPLAYS.                             D88
*                                                                        D88
*** 4.4   SECURITY                                                       D88
**  4.4   SECURITY                                                       D88
*   4.4   SECURITY                                                       D88
*         --------                                                       D88
*                                                                        D88
*IF -DEF,CMSE17X                                                         D88
*         SECURITY  IS  PROVIDED  BY  THE  OPERATING SYSTEM FOR ON-LINE  D88
*         MALET THRU THE USE OF CVL.                                     D88
*ENDIF                                                                   D88
*IF DEF,CMSE17X                                                          D88
*         SECURITY FOR THE TEST, WHILE RUNNING UNDER DEMOT,IS  PROVIDED  D88
*         BY THE ACCESS LEVEL USED ON THE ASSIGN DIRECTIVE.              D88
*ENDIF                                                                   D88
*                                                                        D88
*ENDIF                                                                   D88
