*DECK,DM8 
***       DM8 - 895 INLINE DIAGNOSTIC MONITOR 
*** 1.0   IDENTIFICATION
**
*   1.1   PROGRAM NAME
* 
*         DM8 - 895 INLINE DIAGNOSTIC MONITOR 
* 
*   1.2   AUTHORS 
* 
*         R.D. SCHNEIDER          DATE  JAN. 27, 1986 
* 
*   1.3   AUTHORS OF MODIFICATIONS
* 
*   1.4   COPYRIGHT 
* 
*              COPYRIGHT CONTROL DATA CORPORATION, 1985.
*                        ALL RIGHTS RESERVED
* 
*         CONTAINED HEREIN ARE SOFTWARE PRODUCTS COPYRIGHTED BY CONTROL 
*         DATA CORPORATION.   REPRODUCTION  WITHOUT  PERMISSION IS PRO- 
*         HIBITED.   THE COPYRIGHT NOTICE MUST APPEAR ON ALL AUTHORIZED 
*         COMPLETE OR PARTIAL COPIES. 
* 
*** 2.0   INTRODUCTION
**
*   2.1   OVERVIEW
* 
*         DM8 IS AN INLINE DIAGNOSTIC MONITOR FOR THE 895  DISK SUBSYS- 
*         TEM.  DM8 INITIATES EXECUTION OF DIAGNOSTIC ROUTINES RESIDENT 
*         IN THE CYBER CHANNEL COUPLER (CCC) AND  THE  STORAGE DIRECTOR 
*         (SD), AND MONITORS THE RESULTS.  THE  PROGRAM  RESIDES  IN  A 
*         PERIPHERAL  PROCESSOR  (PP),  AND  INITIATES  THE  DIAGNOSTIC 
*         ROUTINES BY ISSUING APPROPRIATE FUNCTION CODES TO THE CCC.
* 
* 
*   2.2   CHARACTERISTICS 
* 
*         1.  PROGRAM NAME......................................DM8 
*         2.  TEST/DIAG/UTILITY/SYSTEM.........................TEST 
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER............MALET 
*         4.  RUN TIME (DEFAULT)............................66 SEC. 
*         5.  RUN TIME/QUICK LOOK (DEFAULT).....................N/A 
*         6.  LEVEL OF ISOLATION..........................DETECTION 
*         7.  ON-LINE/OFF-LINE/BOTH............................BOTH 
*         8.  ON-LINE SYSTEM....................................NOS 
*         9.  OFF-LINE SYSTEM.................................DEMOT 
*         10. PROGRAM LANGUAGE................................MALET 
*         11. SOURCE CODE MAINTENANCE........................UPDATE 
* 
*   2.3   FEATURES
* 
*         1.  DM8 SUPPORTS DEVICE CODES FOR:  
*             895 DISK SUBSYSTEM
* 
*   2.4   HARDWARE REQUIREMENTS 
* 
*         THIS TEST REQUIRES: 
*         1 - CYBER 170/180 
*         1 - 895 DISK SUBSYSTEM
*             (CYBER CHANNEL COUPLER, STORAGE DIRECTOR, 33800 DRIVE)
* 
*   2.5   RESTRICTIONS
* 
*         1.  DM8 REQUIRES THAT  THE  895  CONTROLWARE  BE  LOADED  AND 
*             RUNNING IN THE CYBER CHANNEL COUPLER. 
* 
*         2.  EXECUTION  OF  ANY  OF  THE  FOLLOWING  INLINE DIAGNOSTIC 
*             ROUTINES REQUIRES AN ACCESS LEVEL OF AT LEAST 4:  
* 
*                C90, C93, CA9, CAA, CAC, C92 (IF NOT CE CYLINDER)
* 
*             ALL OTHER INLINE ROUTINES REQUIRE AN ACCESS LEVEL  OF  AT 
*             LEAST THREE.
* 
*         3.  DM8 REQUIRES THAT THE 895 DISK PERIPHERAL MICROCODE BE AT 
*             AT  LEVEL  D08  OR  ABOVE  AND  THE  FUNCTIONAL MICROCODE 
*             (38800/3350X DISK ASSEMBLY) BE AT REV V OR ABOVE. 
* 
*** 3.0   APPLICABLE DOCUMENTS
**
* 
*         MALET REFERENCE MANUAL                              60456020
*         CML REFERENCE MANUAL                                60455980
*         CCC MA464A CONTROLWARE ERS                          53371093
*         895/33800 DIAGNOSTIC REFERENCE MANUAL               83337530
* 
*** 4.0   DESIGN OVERVIEW 
**
*   4.1   MODULES OVERVIEW
* 
*         DM8 IS DIVIDED INTO TWO BASIC SECTIONS.   THE  FIRST  SECTION 
*         CONSISTS OF THE DEFAULT MODULES, DM801 THROUGH DM805. EACH OF 
*         THESE MODULES INITIATES EXECUTION OF A SUBSYSTEM TEST OR  SET 
*         OF TESTS AND MONITORS THE RESULTS.  MODULE DM801 EXECUTES THE 
*         38800 DI DIAGNOSTICS.  THESE TESTS RESIDE IN THE CCC, AND ARE 
*         THE SAME DIAGNOSTICS AS ARE EXECUTED DURING  A  FULL AUTOLOAD 
*         FROM PP.  MODULE DM803 RUNS A PRESELECTED SET OF INLINE DIAG- 
*         NOSTIC ROUTINES IN  THE  STORAGE DIRECTOR, EACH USING DEFAULT 
*         EXECUTION PARAMETERS.  THE  TESTS PERFORMED  ARE,  IN  ORDER: 
*         C80, C81, C82, C83, C84,  C85,  C86,  C87,  AND  C92.  MODULE 
*         DM805  THEN  EXECUTES  THE  SUBSYSTEM  PATH CONFIDENCE  TEST, 
*         WHICH RESIDES IN THE CCC AND TESTS THE DATA PATH BETWEEN  THE 
*         CCC AND THE DISK. 
* 
*         THE SECOND SECTION OF THE TEST CONSISTS OF MODULE DM807. THIS 
*         MODULE, WHICH IS NOT INCLUDED IN THE DEFAULT  TEST  SEQUENCE, 
*         ALLOWS THE USER TO SELECT ANY INDIVIDUAL INLINE  ROUTINE  FOR 
*         EXECUTION,  AND  ALLOWS  THE  EXECUTION  PARAMETERS  FOR  THE 
*         ROUTINE TO BE CHANGED, IF THE USER CHOOSES. 
* 
*         MODULE DM809 ISSUES  THE  HALT DIAGNOSTIC ROUTINE FUNCTION TO 
*         THE SUBSYSTEM.  THIS ALLOWS THE USER  TO  TERMINATE EXECUTION 
*         OF AN INLINE DIAGNOSTIC ROUTINE.
* 
*         MODULE DM800 IS A DUMMY MODULE THAT ALLOWS DM8 TO WORK IN THE 
*         DEMOT ENVIRONMENT.
* 
*                                                ACCESS      RUN
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         DM800        DUMMY MODULE                --         --
* 
*         MODULES DM801 THROUGH DM805 PERFORM DEFAULT DATA TESTING. 
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         DM801        DI DIAGNOSTICS              3        1 SEC.
*         DM803        INLINE ROUTINES             3       63 SEC.
*         DM805        PATH CONFIDENCE TEST        3        1 SEC.
* 
*         MODULE DM807  ALLOWS  THE  USER  TO  SELECT  THE  INLINE
*         TO BE EXECUTED. 
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         DM807        SELECT INLINE ROUTINE      3,4         VAR 
* 
*         MODULE DM809 HALTS EXECUTION OF AN INLINE ROUTINE.
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         DM809        HALT INLINE EXECUTION       3          VAR 
* 
* 
*         MODULE RUN TIMES WERE MEASURED ON A DEDICATED SYSTEM. 
* 
* 
*   4.2   EXECUTION SEQUENCE
* 
*         DM8 MODULES ARE INDEPENDENT, AND EXECUTION OF ONE  MODULE  IS 
*         NOT DEPENDENT ON EXECUTION OF ANOTHER.
* 
*         BY DEFAULT, MODULES DM800 THROUGH 05 WILL EXECUTE  IN  ORDER. 
*         MODULES DM807 AND  DM809  ARE STAND ALONE MODULES,  AND  WILL 
*         ONLY EXECUTE UPON A  *RUN, DM807*  AND  *RUN DM809*  COMMAND, 
*         RESPECTIVELY. 
* 
*** 5.0   PARAMETERS
**
*   5.1   PARAMETER REGISTER DEFINITION 
* 
*         ONLY MODULE DM807 MAKES USE OF USER SPECIFIED PARAMETERS. 
* 
*         THE FOLLOWING PARAMETERS ARE USED BY DM807: 
*              (ALL PARAMETER VALUES ARE HEX) 
* 
*         P0 - CXX - INLINE ROUTINE TO BE EXECUTED BY DM807 
*                    VALID ENTRIES ARE: 
*                    C80, C81, C82, C83, C84, C85, C86, C87, C88, C90,
*                    C92, C93, CA0, CA2, CA7, CA9, CAA, CAC, CAD
* 
*         P1 - YXX - RUN OPTIONS AND DIAGNOSTIC PARAMETER 1H (DM807)
* 
*                    4XX -  USE LOOP ON ROUTINE OPTION
*                    8XX -  USE NON-DEFAULT PARAMETERS
*                    CXX -  BOTH LOOPING AND NON-DEFAULT PARAMETERS 
* 
*                     XX -  DIAGNOSTIC PARAMETER 1H, USED IF NON- 
*                           DEFAULT PARAMETERS SPECIFIED ABOVE. 
* 
*         P2 - P9  - DIAGNOSTIC PARAMETERS 1L - 5H  (DM807) 
* 
*                    YXX -
* 
*                        Y - UNUSED 
* 
*                       XX - P2 - PARAMETER 1L
*                            P3 -           2H
*                            P4 -           2L
*                            P5 -           3H
*                            P6 -           3L
*                            P7 -           4H
*                            P8 -           4L
*                            P9 -           5H
* 
*                       FOR DESCRIPTION OF DIAGNOSTIC PARAMETERS
*                       1H THROUGH 5H, SEE 33800 HARDWARE DIAGNOSTIC
*                       REFERENCE MANUAL, PUB. NO. 83337530.
* 
*         NOTE : MALET PARAMETERS CAN BE ENTERED IN HEX BY FOLLOWING
*                THE ENTRY WITH AN H. 
* 
* 
*   5.2   PARAMETER REGISTER USAGE
* 
*         MODULE      P0  P1  P2  P3  P4  P5  P6  P7  P8  P9
*         ------      --  --  --  --  --  --  --  --  --  --
*         DM801 
*         DM803 
*         DM805 
*         DM807       X   X   X   X   X   X   X   X   X   X 
*         DM809 
* 
*** 6.0   PROGRAM USE 
**
*   6.1   TESTING 
* 
*         DM8  HAS  BEEN  DESIGNED  TO  INITIATE EXECUTION  OF  VARIOUS 
*         895 DISK SUBSYSTEM DIAGNOSTIC TESTS, AND MONITOR THE  RESULTS 
*         OF THOSE TESTS.  WHEN AN ERROR IS DETECTED  BY  A  DIAGNOSTIC 
*         ROUTINE, APPROPRIATE STATUS INFORMATION IS OBTAINED FROM  THE 
*         SUBSYTEM AND REPORTED TO THE USER.  THE INFORMATION  REPORTED 
*         IS DEPENDENT UPON THE TYPE OF ERROR DETECTED. 
* 
*         TO EXECUTE THE TEST,  THE USER ASSIGNS  THE  DEVICE  WITH  AN 
*         ACCESS LEVEL OF 3.  A  *RUN, DM8*  COMMAND MUST BE  PERFORMED 
*         AND MODULES DM801 THROUGH DM805 WILL BE EXECUTED IN NUMERICAL 
*         ORDER.   TESTING  WILL  END  WHEN  MODULE   DM805   COMPLETES 
*         EXECUTION.
* 
*         MODULES DM801 THROUGH DM807  SUPPORT THE MALET REPEAT  MODULE 
*         CONDITION.
* 
*   6.2   PARAMETER DRIVEN MODULES
* 
*         MODULE DM807 IS THE ONLY DM8 MODULE WHICH MAKES USE  OF  USER 
*         SPECIFIED PARAMETERS. 
* 
*         PARAMETER P0 WILL BE USED TO SPECIFY THE INLINE ROUTINE TO BE 
*         EXECUTED. 
* 
*         PARAMETER P1 WILL BE CHECKED FOR RUN OPTIONS.  IF BIT  10  IS 
*         SET IN P1, THE TEST SPECIFIED IN P0 WILL BE EXECUTED WITH THE 
*         LOOP  ON  ROUTINE  OPTION.  IF  BIT  11  IS  SET  IN  P1, THE 
*         SPECIFIED   TEST   WILL   BE  EXECUTED  WITH  USER  SPECIFIED 
*         PARAMETERS.  THESE  PARAMETERS  WILL  BE  OBTAINED  FROM  THE 
*         MALET PARAMETER REGISTERS AS FOLLOWS: 
* 
*             DIAG PARAMETER 1H  -  LOWER 8 BITS OF P1
*               *      *     1L  -    *   *   *     P2
*               *      *     2H  -    *   *   *     P3
*               *      *     2L  -    *   *   *     P4
*               *      *     3H  -    *   *   *     P5
*               *      *     3L  -    *   *   *     P6
*               *      *     4H  -    *   *   *     P7
*               *      *     4L  -    *   *   *     P8
*               *      *     5H  -    *   *   *     P9
* 
* 
*         ************************************************************* 
*         NOTE : IF BIT 11 IS SET IN PARAMETER P1,  ALL OTHER PARAMETER 
*                REGISTERS MUST BE SET TO THE VALUES  DESIRED  FOR  THE 
*                SPECIFIED TEST.  FAILURE TO DO SO MAY CAUSE UNPREDICT- 
*                ABLE RESULTS.  FOR REQUIRED PARAMETERS AND THEIR LEGAL 
*                VALUES FOR EACH TEST, THE  USER  IS  REFERRED  TO  THE 
*                33800 HARDWARE DIAGNOSTIC REFERNCE MANUAL, PUBLICATION 
*                NO. 83337530.
*         ************************************************************* 
* 
* 
*   6.3   USER NOTES
* 
*         1 -  IF ANY SYSTEM RESET TAKES PLACE DURING THE EXECUTION  OF 
*              AN INLINE DIAGNOSTIC ROUTINE  (HOST DEADSTART,  DOWNLOAD 
*              OF CCC CONTROLWARE), THE NEXT ATTEMPT TO RUN  AN  INLINE 
*              ROUTINE WILL RESULT IN AN ABORT OF  THE EXECUTE COMMAND. 
*              THIS ERROR WILL OCCUR ONLY ON THE FIRST ATTEMPT AT EXEC- 
*              UTION.  MODULES DM803 AND DM807 WILL TRAP THIS ERROR THE 
*              FIRST TIME THAT IT OCCURS, AND REISSUE THE COMMAND.   IF 
*              THE ERROR OCCURS A SECOND TIME,  IT WILL BE REPORTED  TO 
*              THE USER.
* 
*         2 -  FOUR OF THE ROUTINES THAT CAN BE  EXECUTED USING  MODULE 
*              DM807 WILL TERMINATE WITH EXPECTED ERRORS.   THESE  ROU- 
*              TINES ARE C90, C93, CA7 AND CAD.  THE INLINE SENSE BYTES 
*              RETURNED  UPON  TERMINATION  OF  EACH  OF THESE ROUTINES 
*              SHOULD BE CHECKED AGAINST THE EXPECTED RESULTS.  ROUTINE 
*              CA0 WILL NOT TERMINATE BUT CONTINUE  LOOPING.  REFER  TO 
*              THE 33800 HARDWARE DIAGNOSTIC REFERENCE MANUAL (PUB. NO. 
*              83337530)  FOR THE EXPECTED ERROR CODES. 
* 
*         3 -  WHEN EXECUTING MODULE DM807 - IF ANY TEST NUMBER  OTHER
*              THAN THE DEFAULT TEST NUMBER IS SPECIFIED (PARAMETER 1H
*              FOR THOSE ROUTINES TO WHICH IT IS APPLICABLE - REFER TO
*              PUB. NO. 83337530), THAT TEST WILL  AUTOMATICALLY  LOOP
*              ON ITSELF.  ANY ERROR DETECTED WILL BE REPORTED TO  THE
*              USER.  TO TERMINATE EXECUTION OF THE TEST,  THE  MODULE
*              MUST BE STOPPED WITH THE  MALET  *STOP*  COMMAND,  THEN
*              MODULE DM809 (HALT INLINE EXECUTION) MUST BE EXECUTED. 
* 
*** 7.0   MESSAGES
**
*   7.1   NORMAL MESSAGES 
* 
*         1. DM8NN -  MODULE NAME 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.
* 
*   7.2   ERROR FORMAT
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY DM8 TO REPORT ERRORS
*         TO THE USER WHEN DETAILED STATUS IS REQUIRED. 
* 
*         00  DM8 - 895 INLINE DIAGNOSTIC MONITOR 
*         01  DM8NN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB
*         05
*         06  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         07  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10
*         11                GENERAL STATUS = *OCTB
*         12
*         13               DETAILED STATUS  (OCTAL) 
*         14   1D = NNNN    2D = NNNN    3D = NNNN    4D = NNNN 
*         15   5D = NNNN    6D = NNNN    7D = NNNN    8D = NNNN 
*         16   9D = NNNN   10D = NNNN   11D = NNNN   12D = NNNN 
*         17  13D = NNNN   14D = NNNN   15D = NNNN   16D = NNNN 
*         20  17D = NNNN   18D = NNNN   19D = NNNN   20D = NNNN 
*         21              NEXT PAGE FOR SENSE BYTES 
*         22
*         23
*         24  DM8 - 895 INLINE DIAGNOSTIC MONITOR 
*         25  DETAILED STATUS / SENSE BYTES 
*         26      FAULT SYMPTOM CODE = LLLLH
*         27      FORMAT  T      SUBCODE  C 
*         30  BYTE 00=HH   BYTE 01=HH   BYTE 02=HH   BYTE 03=HH 
*         31   OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO
*         32  BYTE 04=HH   BYTE 05=HH   BYTE 06=HH   BYTE 07=HH 
*         33   OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO
*         34  BYTE 08=HH   BYTE 09=HH   BYTE 10=HH   BYTE 11=HH 
*         35   OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO
*         36  BYTE 12=HH   BYTE 13=HH   BYTE 14=HH   BYTE 15=HH 
*         37   OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO
*         40  BYTE 16=HH   BYTE 17=HH   BYTE 18=HH   BYTE 19=HH 
*         41   OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO
*         42  BYTE 20=HH   BYTE 21=HH   BYTE 22=HH   BYTE 23=HH 
*         43   OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO
* 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         E---M = DESCRIPTION OF THE ERROR CODE.
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM.
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         BBBB  = CONTENTS OF B REGISTER. 
*         SSSS  = LAST GENERAL STATUS OBTAINED FROM SUBSYSTEM.
*         NNNN  = DETAILED STATUS WORD. 
*         LLLL  = FAULT SYMPTOM CODE. 
*           T   = FORMAT CODE.
*           C   = MESSAGE SUBCODE.
*          HH   = CONTENTS OF SENSE BYTE IN HEX.
*         OOOO  = BINARY REPRESENTATION OF SENSE BYTE.
* 
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY DM8 TO REPORT ERRORS
*         TO THE USER WHEN INLINE DIAGNOSTIC SENSE IS REQUIRED. 
* 
*         00  DM8 - 895 INLINE DIAGNOSTIC MONITOR 
*         01  DM8NN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB
*         05  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         06  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         07   GENERAL STATUS -  FIRST = GGGGB    LAST = SSSSB
*         10         INLINE DIAGNOSTIC SENSE BYTES  (HEX) 
*         11      BYTES 00 - 05D    HH  HH  HH  HH  HH  HH
*         12      BYTES 06 - 11D    HH  HH  HH  HH  HH  HH
*         13      BYTES 12 - 17D    HH  HH  HH  HH  HH  HH
*         14      BYTES 18 - 23D    HH  HH  HH  HH  HH  HH
*         15      BYTES 24 - 29D    HH  HH  HH  HH  HH  HH
*         16      BYTES 30 - 35D    HH  HH  HH  HH  HH  HH
*         17      BYTES 36 - 41D    HH  HH  HH  HH  HH  HH
*         20      BYTES 42 - 47D    HH  HH  HH  HH  HH  HH
*         21      BYTES 48 - 53D    HH  HH  HH  HH  HH  HH
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM.
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         BBBB  = CONTENTS OF B REGISTER. 
*         GGGG  = GENERAL STATUS WHEN ERROR OCCURRED. 
*         SSSS  = LAST GENERAL STATUS OBTAINED FROM SUBSYTEM. 
*          HH   = CONTENTS OF DIAGNOSTIC SENSE BYTE IN HEX. 
* 
* 
*** 8.0   GLOSSARY
**
*   8.1   ABBREVIATIONS 
* 
*         CCC     - CYBER CHANNEL COUPLER 
*         CML     - CONCURRENT MAINTENANCE LIBRARY
*         DI      - DEVICE INTERFACE
*         DM8     - INLINE DIAGNOSTIC MONITOR FOR 895 DISK SUBSYSTEM
*         ERS     - EXTERNAL REFERENCE SPECIFICATION
*         MALET   - MAINTENANCE APPLICATION LANGUAGE FOR EQUIPMENT
*                   TESTING 
*         PP      - PERIPHERAL PROCESSOR
*         SD      - STORAGE DIRECTOR
*         SPEC    - SPECIFICATION 
* 
* 
*   8.2   DEFINITIONS 
* 
*         ROUTINE - TEST OR SET OF TESTS TO BE EXECUTED BY
*                   DIAGNOSTIC PROCESSOR.  ROUTINE NUMBERS
*                   RANGE FROM C80 TO CAD (HEX).
* 
*         TEST    - INDIVIDUAL TEST WHICH IS PART OF A ROUTINE. 
* 
   MODULE DM800,D895(115)LOCK 
***       DM800 - DUMMY MODULE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         ALLOWS DM8 TO WORK IN THE DEMOT ENVIRONMENT.
* 
*    1.2  METHOD- 
* 
*         DM800 EXITS TO MODULE DM801 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* 
* ------------------TEST--------------------------------------
* 
20 EXIT 
* 
   END 20 
COMPILE                       *DM800 - DUMMY MODULE 
   MODULE DM801,D895(115)LOCK 
***       DM801 - DI DIAGNOSTICS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         INITIATES EXECUTION OF THE CCC DI DIAGNOSTICS.  THESE ARE THE 
*         SAME DIAGNOSTICS AS ARE EXECUTED ON A FULL AUTOLOAD FROM PP.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE CHANNEL.
*         3.  ISSUE THE EXECUTE DI DIAGNOSTICS COMMAND. 
*         4.  TAKE GENERAL STATUS.
*         5.  IF GENERAL STATUS IS NON-ZERO, GO TO ERROR HANDLER. 
*         6.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 5. 
*         7.  EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DM801 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B11 - ERROR STATUS FLAG 
*         B12 - ERROR TYPE FLAG 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         ES  - STANDARD USAGE
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         DM898A - POST ERROR DISPLAY 
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT DM801 - DI DIAGNOSTICS
2  FORMAT DM801  ERROR(S) = *DECD 
4  FORMAT   DI DIAGNOSTIC FAILURE 
* 
   EQUATE CEXEC=0, CREL=3, CRES=4, CSTAT=6
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B13=0                      *ERROR COUNT
   B15=1                      *MODULE NUMBER
* 
* ------------------TEST------------------------------------- 
* 
30 B14=CRES                   *COMMAND NUMBER 
   RES CCC, ABT 70            *RESERVE CCC
   B14=CEXEC
   EXECUTE DI, ABT 70         *EXEC DI DIAGNOSTICS
* 
* ---------CHECK RESULTS
* 
40 B14=CSTAT                  *COMMAND NUMBER 
   STATUS GENERAL, ABT 70     *GET GENERAL STATUS 
   IF (SB.EQ.0) GOTO 77       *IF NO ERROR, EXIT MODULE 
* 
* ---------PROCESS MODULE DETECTED ERRORS 
* 
60 MSG 4 TO LINE 3            *DIAG FAILURE MESSAGE 
   B12=1                      *SET DIAG ERROR FLAG
   B14=CSTAT
   STATUS DETAIL, ABT 70      *GET DETAILED STATUS
   GOTO 72                    *POST ERROR DISPLAY 
* 
* ---------PROCESS COMMAND ABORT ERRORS 
* 
70 B12=0                      *SET FLAG TO COMMAND ABORT
72 B11=0                      *DETAILED STATUS DESIRED
   MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST ERROR DISPLAY 
* 
* ---------EXIT THE MODULE
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *DM801 - DI DIAGNOSTICS 
   MODULE DM803,D895(115)LOCK 
***       DM803 - INLINE ROUTINES 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         EXECUTES PREDETERMINED SERIES  OF  INLINE DIAGNOSTIC ROUTINES 
*         USING DEFAULT PARAMETERS AND MONITORS THE RESULTS.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  GET NUMBER OF TEST TO EXECUTE FROM OUTPUT BUFFER. 
*             THE FOLLOWING TESTS WILL BE EXECUTED: 
*             C80, C81, C82, C83, C84, C85, C86, C87, C92.
*         3.  RESERVE THE CHANNEL.
*         4.  ISSUE EXECUTE COMMAND FOR DESIRED TEST. 
*         5.  CHECK STATUS OF ROUTINE WITH MONITOR COMMAND. 
*         6.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*         7.  IF ROUTINE IS STILL EXECUTING, RESERVE THE CHANNEL AND GO 
*             TO STEP 5.
*         8.  IF ALL TESTS NOT COMPLETED, GET NUMBER  OF  NEXT TEST AND 
*             GO TO STEP 3. 
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DM803 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B0  - DIAGNOSTIC ROUTINE NUMBER 
*         B1  - LOOP COUNTER
*         B2  - FIRST ERROR FLAG
*         B10 - GENERAL STATUS ON ERROR 
*         B11 - ERROR STATUS FLAG 
*         B12 - ERROR TYPE FLAG 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         ES  - STANDARD USAGE
* 
*         BUFFERS USED- 
* 
*         OB(00) TO OB(11B) - ROUTINE NUMBERS 
* 
*    2.3  SUBMODULES USED 
* 
*         DM898A - POST ERROR DISPLAY 
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT DM803 - INLINE ROUTINES 
2  FORMAT DM803  ERROR(S) = *DECD 
4  FORMAT DM803 - LOOPING NOT ALLOWED - RESET PARAMETER P1
6  FORMAT DM803 - INLINE ROUTINE  *HE 
10 FORMAT   FAILURE OF INLINE ROUTINE  *HE
* 
   DATA (OB(00),CON) 6200,6201,6202,6203,6204     *TEST NUMBERS 
   DATA (OB(05),CON) 6205,6206,6207,6222
* 
   EQUATE CEXEC=0, CHLT=1, CMON=2, CREL=3, CRES=4, CSENSE=5 
   EQUATE CSTAT=6 
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B1=0                       *LOOP COUNTER 
   B2=0                       *RESET FIRST ERROR FLAG 
   B13=0                      *ERROR COUNT
   B15=3                      *MODULE NUMBER
* 
* ------------------TEST------------------------------------- 
* 
   IF (P1.AND.2000B.EQ.0) GOTO 30     *IF LOOPING NOT SET 
24 MSG 4 TO LINE 11 
   PAUSE
   GOTO 24
* 
30 B0=OB(B1)                  *DIAG TEST NUMBER 
   MSG 6 (B0) TO DISPLAY      *DIAG RUNNING MESSAGE 
   B14=CRES                   *COMMAND NUMBER 
   RES CCC, ABT 70            *RESERVE CHANNEL
   B14=CEXEC
   EXECUTE DIAG B0, ABT 50    *EXECUTE ROUTINE
* 
* ---------CHECK RESULTS
* 
40 B14=CMON 
   MONITOR DIAG, ABT 50       *MONITOR RESULTS
   IF (SB.EQ.0) GOTO 44       *ROUTINE COMPLETED SUCCESSFULLY 
* 
   DELAY 1000D MSEC           *IF STILL BUSY
   B14=CRES 
   RES CCC, ABT 70            *RE-RESERVE CHANNEL 
   GOTO 40
* 
44 GOTO 30 WHILE (B1+1.LT.9D)  *IF SERIES NOT COMPLETE
* 
   GOTO 74                    *EXIT THE MODULE
* 
* ---------CHECK ERROR CODE AND STATUS
* 
50 IF (B14.EQ.CMON) GOTO 53   *IF MONITOR COMMAND 
   IF (B14.EQ.CHLT) GOTO 52   *IF HALT COMMAND
   IF (EC.NE.7133) GOTO 51    *IF NOT SELECT ERROR
   GOTO 30 WHILE (B2+1.LE.1)  *IF FIRST ERROR 
51 IF (EC.LE.7132) GOTO 70
52 IF (SB.LT.5200) GOTO 62    *IF NOT SD ERROR
   B12=0                      *COMMAND ABORT
   GOTO 54
* 
53 IF (EC.NE.7124) GOTO 70    *IF NOT ABNORMAL STATUS 
   IF (SB.LT.5200) GOTO 62    *IF NOT SD ERROR
   B12=1                      *INLINE DIAG FAILED 
   MSG 10 (B0) TO LINE 3      *DIAG FAILURE MSG 
* 
* ---------PROCESS MODULE DETECTED ERRORS 
* 
54 B11=1                      *INLINE SENSE DESIRED 
   B10=SB                     *SAVE ERROR STATUS
   SENSE INLINE, ABT 60       *OBTAIN SENSE BYTES 
   HLT DIAG, ABT 72           *HALT INLINE EXECUTION
   GOTO 72                    *POST ERROR DISPLAY 
60 IF (EC.NE.7124B) GOTO 70   *IF NOT ABNORMAL STATUS 
62 STATUS DETAIL, ABT 70      *GET DETAILED STATUS
* 
* ---------PROCESS COMMAND ABORT ERRORS 
* 
70 B11=0                      *DETAILED STATUS DESIRED
   B12=0                      *COMMAND ABORT
72 B13=B13+1                  *UPDATE ERROR COUNT 
   MSG 0 TO LINE 1            *MODULE TITLE 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
* 
* ---------EXIT THE MODULE
* 
74 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) GOTO 77
   B14=CHLT 
   HLT DIAG, ABT 50           *HALT INLINE EXECUTION
77 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *DM803 - INLINE ROUTINES
   MODULE DM805,D895(115)LOCK 
***       DM805 - PATH CONFIDENCE TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         EXECUTE THE CCC TO DISK PATH CONFIDENCE TEST. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE ASSIGNED DRIVE. 
*         3.  ISSUE THE EXECUTE PATH CONFIDENCE TEST COMMAND. 
*         4.  TAKE GENERAL STATUS.
*         5.  IF GENERAL STATUS IS NON-ZERO, GO TO ERROR HANDLER. 
*         6.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 5. 
*         7.  EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DM805 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B11 - ERROR STATUS FLAG 
*         B12 - ERROR TYPE FLAG 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         ES  - STANDARD USAGE
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         DM898A - POST ERROR DISPLAY 
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT DM805 - PATH CONFIDENCE TEST
2  FORMAT DM805  ERROR(S) = *DECD 
4  FORMAT   PATH CONFIDENCE TEST FAILURE
* 
   EQUATE CEXEC=0, CREL=3, CRES=4, CSTAT=6
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B13=0                      *ERROR COUNT
   B15=5                      *MODULE NUMBER
* 
* ------------------TEST------------------------------------- 
* 
30 B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CEXEC
   EXECUTE PATH, ABT 70       *EXEC PATH TEST 
* 
* ---------CHECK RESULTS
* 
40 B14=CSTAT                  *COMMAND NUMBER 
   STATUS GENERAL, ABT 70     *GET GENERAL STATUS 
   IF (SB.EQ.0) GOTO 77       *IF NO ERROR, EXIT MODULE 
* 
* ---------PROCESS MODULE ERRORS
* 
60 MSG 4 TO LINE 3            *DIAG FAILURE MESSAGE 
   B12=1                      *SET DIAG ERROR FLAG
   B14=CSTAT
   STATUS DETAIL, ABT 70      *GET DETAILED STATUS
   GOTO 72
* 
* ---------PROCESS COMMAND ABORT ERRORS 
* 
70 B12=0                      *SET FLAG TO COMMAND ABORT
72 B11=0                      *DETAILED STATUS DESIRED
   B13=B13+1                  *UPDATE ERROR COUNT 
   MSG 0 TO LINE 1            *MODULE TITLE 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
* 
* ---------EXIT THE MODULE
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
* 
   END 20 
COMPILE                       *DM805 - PATH CONFIDENCE TEST 
   MODULE DM807,D895(115)LOCK 
***       DM807 - SELECT INLINE ROUTINE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         INITIATE  EXECUTION  OF  USER  SPECIFIED  INLINE   DIAGNOSTIC 
*         ROUTINE AND MONITOR RESULTS.  USER SPECIFIED PARAMETERS  WILL 
*         BE UTILIZED IF DESIRED. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE CHANNEL.
*         3.  IF BIT 11 IS NOT SET IN PARAMETER P1, ISSUE EXECUTE  DIAG 
*             COMMAND FOR TEST SPECIFIED IN P0. 
*         4.  IF BIT 11 IS SET IN PARAMETER  P1,  ISSUE  EXECUTE  MAINT 
*             DIAG COMMAND FOR TEST SPECIFIED IN P0.
*         5.  CHECK STATUS OF ROUTINE WITH MONITOR COMMAND. 
*         6.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*         7.  IF ROUTINE IS STILL EXECUTING, RESERVE THE CHANNEL AND GO 
*             TO STEP 5.
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         9.  EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DM807 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B0  - DIAGNOSTIC ROUTINE NUMBER 
*         B2  - FIRST ERROR FLAG
*         B3  - LOOPING FLAG
*         B4  - MONITOR LOOP COUNT
*         B5  - TEST NUMBER 
*         B10 - GENERAL STATUS ON ERROR 
*         B11 - ERROR STATUS FLAG 
*         B12 - ERROR TYPE FLAG 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         ES  - STANDARD USAGE
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         DM898A - POST ERROR DISPLAY 
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT DM807 - SELECT INLINE ROUTINE 
2  FORMAT DM807  ERROR(S) = *DECD 
6  FORMAT DM807 - INLINE ROUTINE  *HE 
10 FORMAT   FAILURE OF INLINE ROUTINE  *HE
11 FORMAT        ROUTINE LOOPING SELECTED 
12 FORMAT       MONITOR LOOP COUNT = *OCTB
13 FORMAT           LOOPING ON TEST  *H 
14 FORMAT TO TERMINATE EXECUTION, STOP MODULE WITH MALET
15 FORMAT -STOP- COMMAND BY TYPING -S-, THEN RUN MODULE 
16 FORMAT                 DM809 
* 
   EQUATE CEXEC=0, CHLT=1, CMON=2, CREL=3, CRES=4, CSENSE=5 
   EQUATE CSTAT=6 
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=0                       *RESET FIRST ERROR FLAG 
   B4=0                       *MONITOR LOOP COUNT 
   B13=0                      *ERROR COUNT
   B15=7                      *MODULE NUMBER
* 
* ---------CHECK FOR LOOPING CONDITIONS 
* 
   IF (P1.LT.4000B) GOTO 26   *IF DEFAULT PARAMS
* 
   IF (P0.LT.6200B) GOTO 30   *ILLEGAL ROUTINE
   IF (P0.GT.6251B) GOTO 26   *NO LOOP ON TEST
   IF (P0.LE.6207B) GOTO 22   *ROUTINE IS C80-C87 
   IF (P0.EQ.6251B) GOTO 22   *ROUTINE IS CA9 
   GOTO 26                    *NO LOOP ON TEST
* 
22 B5=P1.AND.377B 
   IF (B5.EQ.0) GOTO 26       *IF NO TEST SPECIFIED 
   MSG 13 (B5) TO LINE 6
   GOTO 27
26 IF (P1.AND.2000B.EQ.0) GOTO 30    *LOOPING NOT SELECTED
   MSG 11 TO LINE 6           *POST LOOPING MESSAGE 
27 B3=1                       *SET LOOPING FLAG 
   MSG 14 TO LINE 14
   MSG 15 TO LINE 15
   MSG 16 TO LINE 16
   PICTURE                    *CAPTURE LOOPING MSG
* 
* ------------------TEST------------------------------------- 
* 
30 B0=P0                      *DIAG TEST NUMBER 
   MSG 6 (B0) TO DISPLAY      *DIAG RUNNING MESSAGE 
   B14=CRES                   *COMMAND NUMBER 
   RES CCC, ABT 70            *RESERVE CHANNEL
   B14=CEXEC
   IF (P1.GE.4000B) GOTO 32   *IF BIT 11, P1 SET
   EXECUTE DIAG B0, ABT 50    *USE DEFAULT PARAMS 
   GOTO 40
* 
32 EXECUTE MAINT DIAG B0, ABT 50    *USE NON-DEFAULT PARAMS 
* 
* ---------CHECK RESULTS
* 
40 B14=CMON 
   MONITOR DIAG, ABT 50       *MONITOR RESULTS
   IF (SB.EQ.0) GOTO 74       *ROUTINE COMPLETED SUCCESSFULLY 
* 
42 DELAY 1000D MSEC           *IF STILL BUSY
   IF (B3.EQ.0) GOTO 44       *IF NOT LOOPING 
   B4=B4+1
   MSG 12 (B4) TO LINE 11 
44 B14=CRES 
   RES CCC, ABT 70            *RE-RESERVE CHANNEL 
   GOTO 40
* 
* ---------CHECK ERROR CODE AND STATUS
* 
50 IF (B14.EQ.CMON) GOTO 53   *IF MONITOR COMMAND 
   IF (B14.EQ.CHLT) GOTO 52   *IF HALT COMMAND
   IF (EC.NE.7133) GOTO 51    *IF NOT SELECT ERROR
   GOTO 30 WHILE (B2+1.LE.1)  *IF FIRST ERROR 
51 IF (EC.LE.7132) GOTO 70
52 IF (SB.LT.5200) GOTO 62    *IF NOT SD ERROR
   B12=0                      *COMMAND ABORT
   GOTO 54
* 
53 IF (EC.NE.7124) GOTO 70    *IF NOT ABNORMAL STATUS 
   IF (SB.LT.5200) GOTO 62    *IF NOT SD ERROR
   B12=1                      *INLINE DIAG FAILED 
   MSG 10 (B0) TO LINE 3      *DIAG FAILURE MSG 
* 
* ---------PROCESS MODULE DETECTED ERRORS 
* 
54 B11=1                      *INLINE SENSE DESIRED 
   B10=SB                     *SAVE ERROR STATUS
   SENSE INLINE, ABT 60       *OBTAIN SENSE BYTES 
   HLT DIAG, ABT 72           *HALT INLINE EXECUTION
   GOTO 72                    *POST ERROR DISPLAY 
60 IF (EC.NE.7124B) GOTO 70   *IF NOT ABNORMAL STATUS 
62 STATUS DETAIL, ABT 70      *GET DETAILED STATUS
* 
* ---------PROCESS COMMAND ABORT ERRORS 
* 
70 B11=0                      *DETAILED STATUS DESIRED
   B12=0                      *COMMAND ABORT
72 B13=B13+1                  *UPDATE ERROR COUNT 
   MSG 0 TO LINE 1            *MODULE TITLE 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   GOTO 76
* 
* ---------EXIT THE MODULE
* 
74 IF (B3.NE.0) GOTO 42       *LOOPING SELECTED 
76 IF (ES.AND.RM.NE.0) GOTO 20    *REPEAT MODULE SELECTED 
   IF (B13.NE.0) GOTO 77
   B14=CHLT 
   HLT DIAG, ABT 50           *HALT INLINE EXECUTION
77 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   BLANK                      *BLANK DISPLAY
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
* 
   END 20 
COMPILE                       *DM807 - SELECT INLINE ROUTINE
   MODULE DM809,D895(115)LOCK 
***       DM809 - HALT INLINE EXECUTION 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         HALT THE EXECUTION OF AN INLINE DIAGNOSTIC ROUTINE IN THE 
*         CASE OF A HUNG CONDITION. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE CHANNEL.
*         3.  ISSUE THE HALT INLINE DIAGNOSTIC COMMAND. 
*         4.  IF STATUS RETURNED IS ZERO, GO TO STEP 6. 
*         5.  IF ERROR DETECTED, GO TO ERROR HANDLER. 
*         6.  EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DM809 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B11 - ERROR STATUS FLAG 
*         B12 - ERROR TYPE FLAG 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         ES  - STANDARD USAGE
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         DM898A - POST ERROR DISPLAY 
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT DM809 - HALT INLINE EXECUTION 
2  FORMAT DM809  ERROR(S) = *DECD 
* 
   EQUATE CHLT=1, CREL=3, CRES=4
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B13=0                      *ERROR COUNT
   B15=9                      *MODULE NUMBER
* 
* ------------------TEST------------------------------------- 
* 
30 B14=CRES                   *COMMAND NUMBER 
   RES CCC, ABT 70            *RESERVE CHANNEL
   B14=CHLT 
   HLT DIAG, ABT 70           *HALT DIAG ROUTINE
* 
* ---------CHECK RESULTS
* 
   IF (SB.EQ.0) GOTO 77       *IF NO ERROR, EXIT MODULE 
   GOTO 30                    *TRY AGAIN
* 
* ---------PROCESS COMMAND ABORT ERRORS 
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B11=0                      *DETAILED STATUS REQUIRED 
   IF (SB.EQ.5200) B11=1      *DIAGNOSTIC SENSE REQUIRED
   B12=0                      *SET FLAG TO COMMAND ABORT
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST ERROR DISPLAY 
* 
* ---------EXIT THE MODULE
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
* 
   END 20 
COMPILE                       *DM809 - HALT INLINE EXECUTION
   MODULE DM898A,D895(115)LOCK
***       DM898A - POST ERROR DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         START BUILDING THE ERROR DISPLAY FOR ALL ERRORS, AND EXIT TO
*         APPROPRIATE SUBMODULE FOR COMPLETION OF DISPLAY.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE AND NAME OF CALLING MODULE.
*         2.  DISPLAY THE REASON FOR THE ERROR AND CONTENTS OF EA, EC,
*             LF AND WT.
*         3.  EXIT TO MODULE DM898C IF DETAILED STATUS IS DESIRED.
*         4.  EXIT TO MODULE DM898E IF DIAGNOSTIC SENSE IS DESIRED. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B11 CONTAINS 0 IF DETAILED STATUS IS REQUIRED, 
*                               1 IF DIAGNOSTIC SENSE IS REQUURED.
*         REGISTER B12 CONTAINS 0 IF COMMAND ABORT
*                               1 IF DIAGNOSTIC FAILURE 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED.
* 
*    2.2  SUBMODULES USED 
* 
*         DM898C - POST DETAILED STATUS DISPLAY 
*         DM898E - POST INLINE SENSE DISPLAY
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT    ABORTED ON .EXECUTE. COMMAND 
1  FORMAT    ABORTED ON .HALT. COMMAND
2  FORMAT    ABORTED ON .MONITOR. COMMAND 
3  FORMAT    ABORTED ON .REL. COMMAND 
4  FORMAT    ABORTED ON .RES. COMMAND 
5  FORMAT    ABORTED ON .SENSE. COMMAND 
6  FORMAT    ABORTED ON .STATUS. COMMAND
10 FORMAT DM8 - 895 INLINE DIAGNOSTIC MONITOR 
11 FORMAT EC=*OCTB  EA=*OCTB  LF=*OCTB  WT=*OCTB
* 
* -------------POST COMMAND ABORTED 
* 
20 MSG 10 TO LINE 0           *TEST TITLE 
   IF (B12.EQ.1) GOTO 22      *IF NOT COMMAND ABORT 
   MSG B14 TO LINE 2          *COMMAND ABORTED MSG
   MSG EM TO LINE 3           *ERROR DESCRIPTION
* 
22 MSG 11 (EC,EA,LF,WT) TO LINE 4 
   IF (B11.EQ.1) GOTO 30      *IF DIAGNOSTIC SENSE REQUIRED 
   EXIT TO 98C                *POST DETAIL STATUS DISPLAY 
* 
30 EXIT TO 98E                *POST DIAGNOSTIC SENSE DISPLAY
* 
   END 20 
COMPILE                       *DM898A - POST COMMAND ABORTED DISPLAY
   MODULE DM898C,D895(115)LOCK
***       DM898C - POST DETAILED STATUS DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         POST THE ERROR DISPLAY FOR THOSE ERRORS REQUIRING DETAILED
*         STATUS INFORMATION. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY CONTENTS OF B REGISTERS.
*         2.  DISPLAY GENERAL AND DETAILED STATUS.
*         3.  EXIT TO MODULE DM898G.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         FIRST GENERAL STATUS IS IN B10
*         DETAILED STATUS IS IN SB(1) - SB(20D) 
* 
*    2.2  SUBMODULES USED 
* 
*         NONE
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT B0-B7  =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
1  FORMAT B8-B15 =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
2  FORMAT               GENERAL STATUS = *OCTB
3  FORMAT              DETAILED STATUS  (OCTAL) 
4  FORMAT  1D = *OCT    2D = *OCT    3D = *OCT    4D = *OCT 
5  FORMAT  5D = *OCT    6D = *OCT    7D = *OCT    8D = *OCT 
6  FORMAT  9D = *OCT   10D = *OCT   11D = *OCT   12D = *OCT 
7  FORMAT 13D = *OCT   14D = *OCT   15D = *OCT   16D = *OCT 
10 FORMAT 17D = *OCT   18D = *OCT   19D = *OCT   20D = *OCT 
11 FORMAT             NEXT PAGE FOR SENSE BYTES 
* 
* --------POST REGISTERS
* 
20 MSG 0 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE 6
   MSG 1 (B8,B9 B10,B11,B12,B13,B14,B15) TO LINE 7
   MSG 2 (SB) TO LINE 11
   MSG 3 TO LINE 13 
* 
   MSG 4 (SB(1),SB(2),SB(3),SB(4)) TO LINE 14 
   MSG 5 (SB(5),SB(6),SB(7),SB(8D)) TO LINE 15
   MSG 6 (SB(9D),SB(10D),SB(11D),SB(12D)) TO LINE 16
   MSG 7 (SB(13D),SB(14D),SB(15D),SB(16D)) TO LINE 17 
   MSG 10 (SB(17D),SB(18D),SB(19D),SB(20D)) TO LINE 20
* 
   MSG 11 TO LINE 21
* 
   EXIT TO 98G
* 
   END 20 
COMPILE                       *DM898C - POST DETAILED STATUS DISPLAY
   MODULE DM898E,D895(115)LOCK
***       DM898E - POST INLINE SENSE DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         POST THE ERROR DISPLAY FOR THOSE ERRORS REQUIRING INLINE
*         DIAGNOSTIC SENSE INFORMATION. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY CONTENTS OF B REGISTERS.
*         2.  DISPLAY GENERAL STATUS. 
*         3.  DISPLAY 54D INLINE DIAGNOSTIC SENSE BYTES.
*         4.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         FIRST GENERAL STATUS IS IN B10
*         DIAGNOSTIC SENSE BYTES ARE IN IB(00) - IB(65B)
* 
*    2.2  REGISTERS USED
* 
*         B1  - BUFFER INDEX
*         B2  - BUFFER INDEX
*         B3 - B8  - SCRATCH
*         B15 - DISPLAY LINE
* 
*         BUFFERS USED
* 
*         IB(00) - IB(65B)  - INLINE SENSE BYTES
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT B0-B7  =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
1  FORMAT B8-B15 =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
2  FORMAT  GENERAL STATUS -  FIRST = *OCTB    LAST = *OCTB
3  FORMAT        INLINE DIAGNOSTIC SENSE BYTES  (HEX) 
4  FORMAT     BYTES *D - *DD    *H  *H  *H  *H  *H  *H
* 
* --------POST REGISTERS
* 
20 MSG 0 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE 5
   MSG 1 (B8,B9 B10,B11,B12,B13,B14,B15) TO LINE 6
   MSG 2 (B10,SB) TO LINE 7 
   MSG 3 TO LINE 10 
* 
* --------DISPLAY SENSE BYTES 
* 
   B1=0                       *BUFFER INDEX 
   B15=11                     *DISPLAY LINE 
30 B2=B1+5
   B3=IB(B1)
   B4=IB(B1+1)
   B5=IB(B1+2)
   B6=IB(B1+3)
   B7=IB(B1+4)
   B8=IB(B1+5)
* 
   MSG 4 (B1,B2,B3,B4,B5,B6,B7,B8) TO LINE B15
   B15=B15+1
* 
   GOTO 30 WHILE (B1+6.LE.53D)
* 
70 PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 20 
COMPILE                       *DM898E - POST INLINE SENSE DISPLAY 
   MODULE DM898G,D895(115)LOCK
***       DM898G - SENSE BYTE BREAKDOWN 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         EXTRACT SENSE BYTES FROM DETAILED STATUS AND DISPLAY THEIR
*         HEX VALUES ALONG WITH BINARY REPRESENTATION.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE. 
*         2.  DISPLAY HEX AND BINARY VALUES OF DETAILED STATUS / SENSE
*             BYTES.
*         3.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         SENSE BYTES ARE PACKED IN DETAILED STATUS WORDS 1-16
* 
*    2.2  REGISTERS USED
* 
*         B0  - BUFFER INDEX
*         B1  - COUNTER 
*         B2 - B9  - SCRATCH
*         B14 - BINARY DATA INDEX 
*         B15 - DISPLAY LINE
* 
*         BUFFERS USED
* 
*         OB(100) - OB(157)  SENSE BYTE STORAGE 
*         OB(200) - OB(217)  BINARY REPRESENTATION OF HEX DIGITS
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* ------------------DATA DIVISION---------------------------- 
* 
0  FORMAT DM8 - 895 INLINE DIAGNOSTIC MONITOR 
1  FORMAT DETAILED STATUS / SENSE BYTES 
2  FORMAT     FAULT SYMPTOM CODE = *H*HH
3  FORMAT     FORMAT *D      SUBCODE *D 
4  FORMAT BYTE *D=*H   BYTE *D=*H   BYTE *D=*H    BYTE *D=*H
5  FORMAT  *OCT*OCT     *OCT*OCT     *OCT*OCT      *OCT*OCT 
* 
   DATA (OB(200),CON) 0000,0001,0010,0011   *BINARY STRINGS 
   DATA (OB(204),CON) 0100,0101,0110,0111 
   DATA (OB(210),CON) 1000,1001,1010,1011 
   DATA (OB(214),CON) 1100,1101,1110,1111 
* 
* ------------------POST MESSAGES 
* 
20 MSG 0 TO LINE 24           *TEST TITLE 
   MSG 1 TO LINE 25 
* 
* --------SENSE BYTES ARE SEPARATED INTO 4-BIT NIBBLES
*         AND STORED BEGINNING AT OB(100) 
* 
   B0=100B                    *BEGINNING OF STORAGE BUFFER
   B1=1                       *LOOP COUNT 
30 OB(B0)=SB(B1).AND.7400B.RS.8D
   OB(B0+1)=SB(B1).AND.0360B.RS.4 
   OB(B0+2)=SB(B1).AND.0017B
   B0=B0+3
   GOTO 30 WHILE (B1+1.LE.16D)
* 
* --------POST FSC, FORMAT, SUBCODE 
* 
   B0=OB(154B).LS.4.OR.OB(155B)   *REASSEMBLE BYTES 
   B1=OB(156B).LS.4.OR.OB(157B) 
   MSG 2 (B0,B1) TO LINE 26   *FAULT SYMPTOM CODE 
   MSG 3 (OB(116B),OB(117B)) TO LINE 27   *FORMAT,SUBCODE 
* 
* ------------------DISPLAY SENSE IN HEX
* 
   B0=100B                    *STORAGE BUFFER INDEX 
   B1=0                       *BYTE NUMBER
   B15=30B                    *DISPLAY LINE 
* 
40 B2=B1+1                    *BYTE NUMBERS 
   B3=B2+1
   B4=B3+1
* 
* --------NEED TWO 4-BIT NIBBLES FOR EACH SENSE BYTE
* 
   B5=OB(B0).LS.4.OR.OB(B0+1)      *REASSEMBLE SENSE BYTES
   B6=OB(B0+2).LS.4.OR.OB(B0+3) 
   B7=OB(B0+4).LS.4.OR.OB(B0+5) 
   B8=OB(B0+6).LS.4.OR.OB(B0+7) 
* 
* --------POST HEX BYTE DISPLAY LINE
* 
   MSG 4 (B1,B5,B2,B6,B3,B7,B4,B8) TO LINE B15
   B15=B15+1                  *INCREMENT DISPLAY LINE 
* 
* --------OBTAIN BINARY REPRESENTATION FROM OB(200-217) 
* 
   B14=200B+OB(B0)
   B2=OB(B14) 
   B14=200B+OB(B0+1)
   B3=OB(B14) 
   B14=200B+OB(B0+2)
   B4=OB(B14) 
   B14=200B+OB(B0+3)
   B5=OB(B14) 
   B14=200B+OB(B0+4)
   B6=OB(B14) 
   B14=200B+OB(B0+5)
   B7=OB(B14) 
   B14=200B+OB(B0+6)
   B8=OB(B14) 
   B14=200B+OB(B0+7)
   B9=OB(B14) 
* 
   MSG 5 (B2,B3,B4,B5,B6,B7,B8,B9) TO LINE B15
   B15=B15+1                  *INCREMENT DISPLAY LINE 
* 
   B0=B0+8D                   *INCREMENT BUFFER INDEX 
* 
   GOTO 40 WHILE (B1+4.LE.23D)
* 
* ------------------EXIT THE MODULE 
* 
70 PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 20 
COMPILE                       *DM898G - SENSE BYTE BREAKDOWN
   MODULE DM899,D895(115)LOCK 
***       DM899 - PARAMETER DESCRIPTION 
**
* 
/------------------RESTRICTIONS-----------------------------
/ 
/  DM8 ASSUMES  THAT  CONTROLWARE HAS  BEEN  LOADED  AND  IS
/  OPERATIONAL IN THE CYBER CHANNEL COUPLER.
/ 
/  DM8 REQUIRES THAT THE 895 DISK PERIPHERAL MICROCODE BE AT
/  AT  LEVEL  D08  OR  ABOVE  AND  THE  FUNCTIONAL MICROCODE
/  (38800/3350X DISK ASSEMBLY) BE AT REV V OR ABOVE.
/ 
/------------------PARAMETER DESCRIPTION--------------------
/ 
/  ONLY MODULE DM807 MAKES USE OF USER SPECIFIED PARAMETERS.
/ 
/  THE FOLLOWING PARAMETERS ARE USED BY DM807:  
/       (ALL PARAMETER VALUES ARE HEX)
/ 
/  P0 - CXX - INLINE ROUTINE TO BE EXECUTED BY DM807
/             VALID ENTRIES ARE:  
/             C80, C81, C82, C83, C84, C85, C86, C87, C88,
/             C90, C92, C93, CA0, CA2, CA7, CA9, CAA, CAC,
/             CAD 
/ 
/  P1 - YXX - RUN OPTIONS AND DIAGNOSTIC PARAMETER 1H 
/ 
/             4XX -  USE LOOP ON ROUTINE OPTION 
/             8XX -  USE NON-DEFAULT PARAMETERS 
/             CXX -  BOTH LOOPING AND NON-DEFAULT PARAMETERS
/ 
/              XX -  DIAGNOSTIC PARAMETER 1H, USED IF NON-
/                    DEFAULT PARAMETERS SPECIFIED ABOVE.
/ 
/  P2 - P9  - DIAGNOSTIC PARAMETERS 1L - 5H  (DM807)
/             YXX - 
/             Y - UNUSED
/             XX - P2 - PARAMETER 1L
/                  P3 -           2H
/                  P4 -           2L
/                  P5 -           3H
/                  P6 -           3L
/                  P7 -           4H
/                  P8 -           4L
/                  P9 -           5H
/ 
/        FOR DESCRIPTION OF DIAGNOSTIC PARAMETERS 
/        1H THROUGH 5H, SEE 33800 HARDWARE DIAGNOSTIC 
/        REFERENCE MANUAL, PUB. NO. 83337530. 
/ 
/  NOTE : MALET PARAMETERS CAN BE ENTERED IN HEX BY 
/         FOLLOWING THE ENTRY WITH AN *H*.
/ 
1  END 1
COMPILE,SOURCE                *DM899 - PARAMETER DESCRIPTION
   MODULE DM899A,D895(115)LOCK
***       DM899A - MODULE DESCRIPTIONS
**
* 
/        MODULE     MODULE NAME AND         ACCESS    RUN 
/        NUMBER       DESCRIPTION           LEVEL     TIME
/        ------     ---------------         ------    ----
/ 
/          01       DI DIAGNOSTICS             3      1 SEC.
/          03       INLINE ROUTINES            3     63 SEC.
/          05       PATH CONFIDENCE TEST       3      1 SEC.
/          07       SELECT INLINE ROUTINE     3,4      VAR
/          09       HALT INLINE EXECUTION      3       VAR
/ 
/ 
/          RUN TIMES WERE MEASURED ON A DEDICATED SYSTEM. 
/ 
1  END 1
COMPILE,SOURCE                *DM899A - MODULE DESCRIPTION
   MODULE DM899B,D895(115)LOCK
***       DM899B - INLINE DESCRIPTION 
**
* 
/    HEX                                           DEFAULT
/   ROUTINE      ROUTINE                   ACCESS    RUN
/   NUMBER     DESCRIPTION                  LEVEL    TIME 
/   ------   ---------------               ------    ---- 
/ 
/    C80     BASIC CONTROLLER LOGIC          3      6 SEC.
/    C81     BASIC DEVICE LOGIC              3      6 SEC.
/    C82     DYNAMIC SERVO                   3      9 SEC.
/    C83     SET SECTOR                      3      6 SEC.
/    C84     WRITE FUNCTIONS                 3      8 SEC.
/    C85     WRITE/READ                      3     12 SEC.
/    C86     ECC VERIFICATION                3      9 SEC.
/    C87     DEFECT SKIPPING                 3      6 SEC.
/    C88     FORCE WRITE/PADDING ERRORS      3      5 SEC.
/    C90    *PACK SCAN                       4      7 SEC.
/    C92     TRACK REFORMAT                  3      7 SEC.
/    C93    *FORCE DEV. AVAIL. FOR INLINES   4      6 SEC.
/    CA0    *MASTER DYNAMIC PATH SELECTION   3     39 SEC.
/    CA2     DEVICE SELECTION LOGIC          3      3 SEC.
/    CA7    *FSC/FRU GENERATOR               3      7 SEC.
/    CA9     SEEK TIMING                     4    154 SEC.
/    CAA     INCREMENTAL SEEK                4      6 SEC.
/    CAC     RANDOM SEEK                     4     14 SEC.
/    CAD    *OFFSET LIMITS                   3      9 SEC.
/ 
/        * - ROUTINE TERMINATES WITH ERROR. 
/ 
/ 
/    RUN TIMES WERE MEASURED ON A DEDICATED SYSTEM. 
/ 
1  END 1
COMPILE,SOURCE                *DM899B - INLINE DESCRIPTION
