*DECK,IDE 
*** IDE - DISK ARRAY SUBSYSTEM INLINE DIAGNOSTIC AND DATA PATH TEST 
*         FOR 5838 ELITE 2 DISK DRIVES. 
*** 1.0   IDENTIFICATION
**
*   1.1   PROGRAM NAME
* 
*         IDE - DAS DISK SUBSYSTEM INLINE DIAGNOSTIC AND DATA PATH TEST 
* 
*   1.2   AUTHOR
* 
*         H.W. WILLIAMS           DATE  JANUARY 19, 1993
* 
*   1.3   AUTHORS OF MODIFICATIONS
* 
*         H.W. WILLIAMS           DATE  DECEMBER 1, 1993
*                                 ADDS NOS MALET SUPPORT
* 
*   1.4   COPYRIGHT 
* 
*              COPYRIGHT CONTROL DATA CORPORATION, 1993.
*                        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
* 
*         IDE IS AN INLINE DIAGNOSTIC AND DATA PATH INTEGRITY TEST FOR
*         THE DISK ARRAY SUBSYSTEM ON AN IPI CHANNEL.  THE TEST RESIDES 
*         IN A PERIPHERAL PROCESSOR, INITIATES EXECUTION OF THE INLINE
*         DIAGNOSTICS IN BOTH THE CONTROLLER AND THE DRIVE, AND TESTS 
*         THE DATA PATH TO AND FROM THE DISK.  DATA IS TRANSFERRED TO 
*         TO THE DISK BOTH DIRECTLY FROM THE PP AND VIA CENTRAL MEMORY
*         IN THE CASE OF DMA TRANSFERS. IDE IS INTENDED TO EXECUTE
*         ONLINE  UNDER  MALET/VE.
* 
*   2.2   CHARACTERISTICS 
* 
*         1.  PROGRAM NAME......................................IDE 
*         2.  TEST/DIAG/UTILITY/SYSTEM.........................TEST 
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER............MALET 
*         4.  RUN TIME (DEFAULT ON CYBER 932).........2 MIN 40 SEC. 
*         5.  RUN TIME/QUICK LOOK (DEFAULT).....................N/A 
*         6.  LEVEL OF ISOLATION..........................DETECTION 
*         7.  ON-LINE/OFF-LINE/BOTH.........................0N-LINE 
*         8.  ON-LINE SYSTEM.........................NOS AND NOS/VE 
*         9.  OFF-LINE SYSTEM..................................NONE 
*         10. PROGRAM LANGUAGE................................MALET 
*         11. SOURCE CODE MAINTENANCE........................UPDATE 
* 
*   2.3   FEATURES
* 
*         1.  IDE SUPPORTS DEVICE CODES FOR THE DISK ARRAY SUBSYSTEM. 
*IF DEF,MVE,1 
*             DEVICE CODES SUPPORTED ARE: 142,143,144,145,146 
*IF -DEF,MVE,1
*             DEVICE CODES SUPPORTED ARE: 142,143 
* 
*   2.4   HARDWARE REQUIREMENTS 
* 
*         THIS TEST REQUIRES
*         1 - CYBER 18X/9XX MAINFRAME 
*         1 - DISK ARRAY SUBSYSTEM OPERATING ON AN IPI CHANNEL
* 
*   2.5   RESTRICTIONS
* 
*         1.  IDE  REQUIRES  THAT  THE  CONTROLWARE  FOR  THE  ASSIGNED 
*             CONTROLLER BE RUNNING PRIOR TO EXECUTION. 
* 
*         2.  IDE REQUIRES THAT THE DISK DRIVE UNDER TEST BE SPUN UP. 
* 
*         3.  IDE IS NOT INTENDED  TO  TEST THE INTEGRITY  OF  THE DISK 
*             SURFACE.
* 
*** 3.0   APPLICABLE DOCUMENTS
**
* 
*         MALET/VE LANGUAGE PROGRAMMING REFERENCE MANUAL      60456020
* 
*         CML/VE REFERENCE MANUAL                             60000019
* 
*         CYBER SYSTEMS PERIPHERAL DIAGNOSTICS REF. MANUAL    60000144
*         (FOR INFORMATION ON COMMON IPI DRIVER ERRORS AND
*          RESPONSE PACKET STATUS DEFINITIONS)
* 
*** 4.0   DESIGN OVERVIEW 
**
*   4.1   MODULE OVERVIEW 
* 
*         IDE IS DIVIDED INTO THREE BASIC SECTIONS.  THE FIRST SECTION
*         CONSISTS OF MODULE IDE00.  THIS MODULE INITIATES EXECUTION
*         OF THE ASSIGNED DAS CONTROLLER INLINE DIAGNOSTICS, WITH 
*         SUBSYSTEM STATUS INFORMATION BEING DISPLAYED IF AN ERROR IS 
*         DETECTED.  MODULES IDE01 THROUGH IDE09 THEN TEST THE DATA 
*         PATH  BETWEEN THE PP AND THE DISK BY WRITING ONE SECTOR OF
*         DATA TO THE PRE-ALLOCATED AREA, THEN READING THE SECTOR AND 
*         CHECKING THE DATA FOR ACCURACY.  THIS  TEST  IS  PERFORMED
*         USING  TWENTY  PRE-SELECTED DATA PATTERNS, EACH PATTERN BEING 
*         WRITTEN  TO  THE DISK ONE TIME.  MODULE IDE09 PERFORMS DATA 
*         TESTING USING EITHER A RANDOM DATA PATTERN (BY DEFAULT) OR
*         A PATTERN SPECIFIED BY THE USER IN PARAMETER P0 (IF NONZERO). 
*         THIS PATTERN IS ALSO WRITTEN TO THE DISK ONE  TIME.  EACH 
*         MODULE  FIRST TESTS THE PATH BETWEEN THE PP AND THE DISK. 
*         THEN IT WILL TEST THE DATA PATH TO/FROM THE DISK VIA CENTRAL
*         MEMORY, IF THE CHANNEL SUPPORTS DMA TRANSFERS.  THE THIRD 
*         SECTION OF THE TEST CONSISTS OF MODULES IDE11, IDE13, IDE15,
*         IDE30,AND IDE31  WHICH ARE NOT INCLUDED IN THE DEFAULT TEST 
*         SEQUENCE.  EACH MODULE IS STAND ALONE.
* 
*         IDE11 WILL ALLOW THE USER TO SELECT ANY SECTOR AND/OR DATA
*         PATTERN TO USE IN THE DATA TESTING. ACCESS LEVEL 4 IS REQUIRED
*         TO RUN THIS MODULE. 
* 
*         IDE13 WILL ALLOW THE USER TO RUN IN-LINE DRIVE DIAGNOSTICS ON 
*         THE ASSIGNED LOGICAL UNIT.(SERIAL DRIVES ONLY)
* 
*         IDE15 WILL ALLOW THE USER TO RUN IN-LINE DRIVE DIAGNOSTICS ON 
*         A SPECIFIED PHYSICAL UNIT WHICH IS A MEMBER OF THE ASSIGNED 
*         LOGICAL UNIT. PARAMETER P7 IS USED TO SPECIFY THE PHYSICAL
*         DRIVE ADDRESS.
* 
*         IDE30 READS THE CONTENTS OF THE CONTROLLER PERFORMANCE LOG. 
* 
*         IDE31 READS CHARACTERISTICS OF ASSIGNED LOGICAL UNIT AND
*         DISPLAYS THE INFORMATION. 
* 
*         ALL MODULE TIMINGS REPRESENT EXECUTION ON A CYBER 932 USING 
*         A ELITE_1X CONFIGURATION THROUGH A 10MB IPI CHANNEL.
* 
*         MODULE IDE00 EXECUTES IN-LINE CONTROLLER DIAGNOSTICS. 
* 
*                                                ACCESS 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         IDE00       CONTROLER DIAGNOSTICS         3      73 SEC.
* 
*         MODULES IDE01 THROUGH IDE09 PERFORM DEFAULT DATA TESTING. 
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         IDE01       ONES AND ZEROS TEST           3       7 SEC.
*         IDE03       ALTERNATING ONES TEST         3       7 SEC.
*         IDE05       SLIDING ZEROS TEST            3      16 SEC.
*         IDE07       SLIDING ONES TEST             3      16 SEC.
*         IDE08       ADDRESS TEST                  3       7 SEC.
*         IDE09       RANDOM DATA TEST              3       7 SEC.
* 
*         MODULE IDE11 ALLOWS THE USER TO CHOOSE ANY DISK SECTOR AND
*         DATA PATTERN FOR TESTING, AND CHECKS FOR VALID PARAMETER
*         ENTRIES.
* 
*         MODULE IDE13 ALLOWS THE USER TO RUN IN-LINE DRIVE 
*         DIAGNOSTICS ON ASSIGNED LOGICAL UNIT. (SERIAL UNIT ONLY)
* 
*         MODULE IDE15 ALLOWS THE USER TO RUN IN-LINE DRIVE 
*         DIAGNOSTICS ON A SPECIFIED PHYSICAL UNIT. 
* 
*         MODULE IDE30 ALLOWS THE USER TO READ THE CONTROLLER 
*         PERFORMANCE LOG.
* 
*         MODULE IDE31 READS DAS CHARACTERISTICS AND DISPLAYS THE 
*         INFORMATION. (IE. COS LEVEL, DRIVE TYPE ETC.) 
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         IDE11       ANY SECTOR TEST              4        7 SEC.
*         IDE13       DRIVE DIAGNOSTICS(LOGICAL)   3       14 SEC.
*         IDE15       DRIVE DIAGNOSTICS(PHYSICAL)  3       13 SEC.
*         IDE30       READ PERFORMANCE LOG         3       30 SEC.
*         IDE31       DISPLAY DAS INFORMATION      3        7 SEC.
* 
*         MODULE IDE50 ALLOWS THE USER TO FORMAT A LOGICAL FACILITY.
* 
*         MODULE IDE70 ALLOWS THE USER TO SLAVE RESET THE CONTROLLER. 
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               -----       ---- 
*         IDE50       INITIAL FORMAT FACILITY      20       18 MIN. 
*         IDE70       SLAVE RESET CONTROLLER       20       12 MIN. 
* 
*   4.2   EXECUTION SEQUENCE
* 
*         IDE MODULES ARE INDEPENDENT, AND EXECUTION OF ONE  MODULE  IS 
*         NOT DEPENDENT ON EXECUTION OF ANOTHER.
* 
*         BY DEFAULT, MODULES IDE01 THROUGH 09 WILL EXECUTE  IN  ORDER. 
*         MODULES IDE11, IDE13, IDE15, IDE30, IDE31, IDE50 AND IDE70
*         ARE  STAND  ALONE MODULES, AND WILL  ONLY  EXECUTE  UPON A
*         *RUN, IDEXX *  COMMAND. WHERE XX IS THE MODULE NUMBER.
* 
*** 5.0   PARAMETERS
**
*   5.1   PARAMETER REGISTER DEFINITION 
* 
*         THE FOLLOWING PARAMETERS ARE USED BY IDE
* 
*         P0 - XXXX - DATA PATTERN TO BE USED BY IDE09, IDE11 
*              0000 - USE RANDOM DATA PATTERNS (DEFAULT)
* 
*         P1 - XXXX - CYLINDER TO BE USED FOR DATA TESTING
*              (IDE11).  VALID ENTRIES ARE: 
* 
*              0000 THROUGH 2619(D) 
* 
*         P2 - 00XX - TRACK TO BE USED FOR DATA TESTING (IDE11) 
*              VALID ENTRIES ARE: 
* 
*              0000 THROUGH 0008(D) 
* 
*         P3 - 00XX - SECTOR TO BE USED FOR DATA TESTING (IDE11)
*              VALID ENTRIES ARE: 
* 
*              1X AND 1XP 
*              0000 THROUGH 0017(D) 
* 
*              2X AND 4X
*              0000 THROUGH 0034(D) 
* 
*              3XP
*              0000 THROUGH 0026(D) 
* 
*         P4 - 00XX - CONTROLLER IN-LINE DIAGNOSTIC TEST (IDE00)
*              VALID ENTRIES ARE 1 - 56(D)
* 
*         P5 - 00XX - NUMBER OF 128(D) BYTE BLOCKS TO DISPLAY FROM
*              CONTROLLER PERFORMANCE LOG (IDE30) 
*              VALID ENTRIES ARE 0 - 32(D)
* 
*         P6 - XXXX - STARTING ADDRESS OF CONTROLLER PERFORMANCE
*              LOG TO DISPLAY DATA FROM (IDE30) 
*              VALID ENTRIES ARE 0 - 4095(D)
* 
*         P7 - 00XX - PHYSICAL DRIVE ADDRESS (IDE15)
*              VALID ENTRIES ARE 0 - 32(D)
* 
*         P8 - 00XX - WHETHER TO PRINT OR DISPLAY DATA IN IDE30 
*              0000 - PRINT DATA
*              0001 - DISPLAY DATA
*              0010 - PAUSE AFTER EACH DATA BLOCK IS DISPLAYED
* 
*         P9 - 00XX - SECTOR SIZE TO FORMAT IN IDE50
*              0001 - 2K SECTOR SIZE
*              0002 - 4K SECTOR SIZE
*              0004 - 8K SECTOR SIZE
*              0010 - 16K SECTOR SIZE 
* 
*         P9 - 00XX - WHETHER TO SLAVE RESET OR NOT IN IDE70
*              0000 - DO NOT SLAVE RESET
*              0001 - SLAVE RESET AFTER RES CH
*              0010 - SKIP RES CH AND SLAVE RESET CONTROLLER
* 
*   5.2   PARAMETER REGISTER USAGE
* 
*         MODULE      P0  P1  P2  P3  P4  P5  P6  P7  P8  P9
*         ------      --  --  --  --  --  --  --  --  --  --
*         IDE00       .   .   .   .   X   .   .   .   .   . 
*         IDE01       .   .   .   .   .   .   .   .   .   . 
*         IDE03       .   .   .   .   .   .   .   .   .   . 
*         IDE05       .   .   .   .   .   .   .   .   .   . 
*         IDE07       .   .   .   .   .   .   .   .   .   . 
*         IDE08       .   .   .   .   .   .   .   .   .   . 
*         IDE09       X   .   .   .   .   .   .   .   .   . 
*         IDE11       X   X   X   X   .   .   .   .   .   . 
*         IDE13       .   .   .   .   .   .   .   .   .   . 
*         IDE15       .   .   .   .   .   .   .   X   .   . 
*         IDE30       .   .   .   .   .   X   X   .   X   . 
*         IDE31       .   .   .   .   .   .   .   .   .   . 
*         IDE50       .   .   .   .   .   .   .   .   .   X 
*         IDE70       .   .   .   .   .   .   .   .   .   X 
*** 6.0   PROGRAM USE 
**
*   6.1   TESTING 
* 
*         IDE HAS BEEN DESIGNED FOR USE AS A  SUBSYSTEM INTEGRITY TEST, 
*         EXECUTING   THE  SUBSYSTEM  INLINE  DIAGNOSTIC  ROUTINES  AND 
*         TESTING THE ENTIRE DATA PATH BETWEEN THE HOST PP AND THE DISK 
*         SURFACE.  IN DEFAULT MODE, THE DATA TESTING IS DONE USING THE 
*         PREALLOCATED AREA OF THE DISK.
* 
*         TO EXECUTE THE TEST,  THE USER ASSIGNS  THE  DEVICE  WITH  AN 
*         ACCESS LEVEL OF  3  (READ  AND WRITE PREALLOCATED AREA ONLY). 
*         A  *RUN, IDE*  COMMAND MUST BE PERFORMED  AND  MODULES  IDE00 
*         THROUGH  IDE09  WILL BE EXECUTED IN NUMERICAL ORDER.  TESTING 
*         WILL TERMINATE WHEN MODULE IDE09 COMPLETES EXECUTION. 
* 
*         ALL IDE MODULES SUPPORT THE MALET REPEAT MODULE CONDITION,
* 
*   6.2   PARAMETER DRIVEN MODULES
* 
*         IDE  CONTAINS FIVE MODULES WHICH MAKE USE OF  USER SPECIFIED
*         PARAMETERS. 
* 
*         MODULE IDE00 CHECKS PARAMETER P4.  IF P4 IS ZERO (0000),
*         WHICH IS THE DEFAULT VALUE, ALL CONTROLLER IN-LINE TESTS
*         WILL BE EXECUTED. IF PARAMETER P4 IS NON-ZERO, ONLY THE 
*         SUB-TEST SPECIFIED BY THE VALUE IN P4 WILL BE EXECUTED. 
* 
*         MODULE IDE09 WILL CHECK PARAMETER P0.   IF P0 IS ZERO (0000), 
*         THE MODULE WILL EXECUTE IN  ITS  DEFAULT CONFIGURATION,  WITH 
*         RANDOM DATA PATTERNS USED FOR DATA TESTING. IF P0 IS NON-ZERO 
*         THE CONTENTS OF P0 WILL BE USED AS THE PATTERN FOR DATA 
*         TESTING.
* 
*         MODULE IDE11 USES PARAMETER P0 IN THE SAME WAY AS MODULE
*         IDE09 AND ALSO USES THE CONTENTS OF P1, P2,  AND  P3 TO 
*         DETERMINE  THE  CYLINDER, TRACK, AND SECTOR, RESPECTIVELY 
*         TO BE USED FOR TESTING. THIS ALLOWS THE USER TO READ AND
*         WRITE TO ANY AREA OF THE DISK, SO IF  A  CYLINDER OUTSIDE 
*         THE PREALLOCATED AREA IS SPECIFIED BY P1, AN ACCESS LEVEL OF
*         4 IS REQUIRED TO EXECUTE THE MODULE. MODULE IDE11 REQUIRES
*         PARAMETER ENTRIES  P1,  P2  AND  P3  TO DETERMINE THE 
*         CYLINDER, TRACK  AND  SECTOR  TO  BE  USED  FOR TESTING.
* 
*         MODULE IDE15 CHECKS PARAMETER P7. THE VALUE SPECIFIED BY P7 
*         IS THE PHYSICAL DRIVE ADDRESS OF THE DRIVE TO BE TESTED.
* 
*         MODULE IDE30 CHECKS PARAMETERS P5, P6 AND P8. P5 IS USED TO 
*         SPECIFY THE NUMBER OF 128(10) BYTE BLOCKS TO DISPLAY FROM 
*         THE CONTROLLER PERFORMANCE LOG. PARAMATER P6 IS USED TO 
*         SPECIFY THE STARTING ADDRESS OF THE CONTROLLER PERFORMANCE
*         LOG TO DISPLAY DATA FROM. PARAMETER P8 IS USED TO EITHER
*         PRINT OR DISPLAY THE LOG AND WHETHER TO PAUSE AFTER EACH
*         BLOCK IS DISPLAYED. PARAMETERS P5, P6 AND P8 WILL DEFAULT TO
*         ZERO (0000) WHICH CAUSES THE ENTIRE PERFORMANCE LOG TO BE 
*         PRINTED.
* 
*         MODULE IDE50 CHECKS PARAMETER P9. P9 IS USED TO SPECIFY THE 
*         SECTOR SIZE FOR INITIAL FORMAT. 
* 
*         MODULE IDE70 CHECKS PARAMETER P9. P9 IS USED TO SPECIFY 
*         WHETHER OR NOT TO DO A SLAVE RESET. IF P9 IS ZERO MODULE IDE70
*         WILL NOT DO A SLAVE RESET. IF P9 IS NON-ZERO A SLAVE RESET
*         WILL BE PERFORMED. IF P9 IS SET TO 10 THE RES CH COMMAND WILL 
*         BE SKIPPED AND THEN THE SLAVE RESET IS PERFORMED. 
* 
*** 7.0   MESSAGES
**
*   7.1   NORMAL MESSAGES 
* 
*         1. IDENN -  MODULE NAME 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.
* 
*   7.2   ERROR FORMAT
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY IDE TO REPORT ERRORS
*         DETECTED BY THE IPI DISK DRIVER.
* 
*         00  IDE - DAS DISK SUBSYSTEM TEST 
*         01  IDENN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04
*         05  B0-B4   = BBBBB BBBBB BBBBB BBBBB BBBBB 
*         06  B4-B9   = BBBBB BBBBB BBBBB BBBBB BBBBB 
*         07  B10-B15 = BBBBB BBBBB BBBBB BBBBB BBBBB BBBBB 
*         10
*         11        DRIVER GENERAL STATUS WORD = SSSSH
*         12  FAILING TASK = TTD    LOW LEVEL ERROR CODE = LLH
*         13
*         14                RESPONSE PACKET (HEX) 
*         15  1D  - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         16  9D  - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         17  17D - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         20  25D - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         21  33D - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         22  41D - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED (OCTAL).
*         BBBBB = CONTENTS OF B REGISTERS (OCTAL).
*         SSSS  = IPI COMMON DRIVER GENERAL STATUS WORD (HEX).
*         TT    = IPI COMMON DRIVER FAILING TASK (DEC). 
*         LL    = IPI COMMON DRIVER LOW LEVEL ERROR CODE (HEX). 
*         RRRR  = CONTENTS OF IPI CHANNEL RESPONSE PACKET (HEX).
* 
* 
*         THE  FOLLOWING DISPLAY FORMAT IS USED BY IDE TO REPORT DISK 
*         READ/WRITE DATA COMPARE ERRORS TO THE USER. 
* 
*         00  IDE - DAS DISK SUBSYSTEM TEST 
*         01  IDENN - (M-----------------------T) 
*         02
*         03  ABORTED ON DATA COMPARE ERROR 
*         04          WORD  MMMH
*         05
*         06
*         07
*         10  IB = IIII IIII IIII IIII IIII IIII IIII IIII
*         11  OB = OOOO OOOO OOOO OOOO OOOO OOOO OOOO OOOO
*         12
*         13  B0-B4    = BBBBB BBBBB BBBBB BBBBB BBBBB
*         14  B5-B9    = BBBBB BBBBB BBBBB BBBBB BBBBB
*         15  B10-B15  = BBBBB BBBBB BBBBB BBBBB BBBBB BBBBB
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         MMMM  = WORD OF SECTOR AT WHICH ERROR OCCURRED (HEX). 
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED (OCTAL).
*         OOOO  = CONTENTS OF OUTPUT BUFFER (HEX). STARTING LOCATION
*                 IS RELATIVE TO INPUT BUFFER ERROR LOCATION. 
*         IIII  = CONTENTS OF INPUT BUFFER (HEX). STARTING AT ERROR 
*                 LOCATION. 
*         BBBBB = CONTENTS OF B REGISTERS (OCTAL).
* 
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  IDE  TO  REPORT 
*         PARAMETER ENTRY ERRORS TO THE USER. 
* 
*         00  IDE - DAS DISK SUBSYSTEM TEST 
*         01  IDENN - (M-----------------------T) 
*         02
*         03  (E----------------M)
*         04  (E----------------D)
*         05  DEVICE CODE = DDDDB 
*         06  P0 - P4  PPPP PPPP PPPP PPPP PPPP 
*         07  P5 - P9  PPPP PPPP PPPP PPPP PPPP 
*         10
*         11  PARAMETERS DESCRIBED IN MODULE IDE99
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         E---M = ACCESS LEVEL OR PARAM ERROR MESSAGE.
*         E---D = DESCRIPTION OF THE ERROR IF PARAM ERROR.
*         DDDD  = DEVICE CODE.
*         PPPP  = CONTENTS OF THE PARAMETER WORD IN HEX.
* 
*** 8.0   GLOSSARY
**
*   8.1   ABBREVIATIONS 
* 
*         CML     - CONCURRENT MAINTENANCE LIBRARY
*         DMA     - DIRECT MEMORY ACCESS
*         ERS     - EXTERNAL REFERENCE SPECIFICATION
*         IDE     - DISK SUBSYSTEM TEST FOR CM3 SUBSYSTEMS
*         IPI     - INTELLIGENT PERIPHERAL INTERFACE
*         MALET   - MAINTENANCE APPLICATION LANGUAGE FOR EQUIPMENT
*                   TESTING 
*         PP      - PERIPHERAL PROCESSOR
* 
* 
*IF DEF,MVE,1 
   MODULE IDE00,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE00,DDAS(142,143)LOCK,16BIT 
***       IDE00 - CONTROLLER IN-LINE DIAGNOSTICS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         EXECUTES A PREDETERMINED SERIES OF  INLINE DIAGNOSTIC 
*         ROUTINES IN THE CONTROLLER. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  DISPLAY THE TEST NUMBER TO BE EXECUTED. 
*         3.  CHECK FOR PARAMETER P4. 
*         4.  RESERVE THE CHANNEL.
*         5.  ISSUE EXECUTE COMMAND FOR THE SELECTED TEST.
*         6.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*         7.  IF ALL TESTS NOT COMPLETED, INCREMENT TEST NUMBER AND  GO 
*             TO STEP 4.
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 6. 
*         9.  EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         P4  - TEST NUMBER IF NON-ZERO 
* 
*    2.2  REGISTERS USED
* 
*         B0  - DIAGNOSTIC TEST NUMBER
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - POST ERROR DISPLAY 
* 
   BASE OCTAL 
0  FORMAT IDE00 - CM DIAGNOSTICS
2  FORMAT IDE00  ERROR(S) = *DECD 
6  FORMAT IDE00 - CM DIAGNOSTICS  *DD 
* 
   EQUATE CREL=2, CRESC=3, CEXCM=6
* 
20 MSG 0 TO DISPLAY, PRINT    *MODULE MESSAGE 
   B0=1 
   B13=0                      *ERROR COUNT
   IF(P4.NE.0) B0=P4
30 IF(ES.AND.TM.EQ.TM) MSG 6 (B0) TO PRINT   INTERACTIVE MSG
   IF(ES.AND.TM.NE.TM) MSG 6 (B0) TO DISPLAY   CONSOLE MSG
   B14=CRESC                  *COMMAND NUMBER 
   RES CH, ABT 70             *RESERVE CHANNEL
   B14=CEXCM
   EXECUTE CM B0, ABT 70      *EXECUTE ROUTINE
   IF(P4.NE.0) GOTO 75
40 GOTO 45 WHILE (B0+1.LE.56D)  *IF SERIES NOT COMPLETE 
   GOTO 75                    *EXIT THE MODULE
45 IF(B0.EQ.2D) GOTO 40       *SKIP SECTION 2 
   IF(B0.EQ.3D) GOTO 40       *SKIP SECTION 3 
   IF(B0.EQ.7D) GOTO 40       *SKIP SECTION 7 
   IF(B0.EQ.8D) GOTO 40       *SKIP SECTION 8 
   IF(B0.EQ.10D) GOTO 40      *SKIP SECTION 10
   IF(B0.EQ.11D) GOTO 40      *SKIP SECTION 11
   IF(B0.EQ.12D) GOTO 40      *SKIP SECTION 12
   IF(B0.EQ.13D) GOTO 40      *SKIP SECTION 13
   IF(B0.EQ.14D) GOTO 40      *SKIP SECTION 14
   IF(B0.EQ.15D) GOTO 40      *SKIP SECTION 15
   IF(B0.EQ.16D) GOTO 40      *SKIP SECTION 16
   IF(B0.EQ.23D) GOTO 40      *SKIP SECTION 23
   IF(B0.EQ.24D) GOTO 40      *SKIP SECTION 24
   IF(B0.EQ.31D) GOTO 40      *SKIP SECTION 31
   IF(B0.EQ.32D) GOTO 40      *SKIP SECTION 32
   IF(B0.EQ.39D) GOTO 40      *SKIP SECTION 39
   IF(B0.EQ.40D) GOTO 40      *SKIP SECTION 40
   IF(B0.EQ.47D) GOTO 40      *SKIP SECTION 47
   IF(B0.EQ.48D) GOTO 40      *SKIP SECTION 48
   IF(B0.EQ.54D) GOTO 40      *SKIP SECTION 54
   IF(B0.EQ.55D) GOTO 40      *SKIP SECTION 55
   IF(B0.EQ.56D) GOTO 40      *SKIP SECTION 56
   GOTO 30
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1       *REL ABORTED
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0) GOTO 77        *REL ABORTED
   GOTO 40
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
   END 20 
COMPILE                       *IDE00 - INLINE ROUTINES
*IF DEF,MVE,1 
   MODULE IDE01,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE01,DDAS(142,143)LOCK,16BIT 
***       IDE01 - ONES AND ZEROS TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING DATA PATTERNS OF ALL ONES AND ALL ZEROS.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE FFFF HEX. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS  2  THROUGH  6  USING A DATA PATTERN OF  ALL 
*             ZEROS.
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - PATTERN NUMBER
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN BUFFER
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         OB(406H/2006B)
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDE98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDE01 - ONES AND ZEROS TEST 
2  FORMAT IDE01  ERROR(S) = *DECD 
6  FORMAT IDE01 - ONES/ZEROS TEST PPU MODE - PATTERN=*HEX 
7  FORMAT IDE01 - ONES/ZEROS TEST DMA MODE - PATTERN=*HEX 
* 
   DATA (OB(2006B),CON) FFFFH,0000H    *DATA PATTERNS 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=2619D                   *PRE-ALLOCATED CYL FOR ELITE DRIVES 
   B3=0                       *TRACK
   B4=0                       *SECTOR 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   IF (SB(67D).NE.40000B) GOTO 24  *IF NOT 16K SECTORS
24 B0=0                       *PATTERN NUMBER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
30 DUP OB(B0+2006B) TO OB(0) FOR B5    *GENERATE PATTERN
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM PP I/O
   GOTO 30 WHILE (B0+1.LT.2)  *NEXT PATTERN 
   IF(SB(154D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE
   B0=0                       *PATTERN NUMBER 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP OB(B0+2006B) TO OB(0) FOR B5    *GENERATE PATTERN
   DUP 0000H TO IB(0) FOR 2000B        *CLEAR IB
   IF(ES.AND.TM.EQ.TM) MSG 7 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 7 (OB(0)) TO DISPLAY  *CONSOLE 
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B10=OB(B0+2006B).XOR.FFFFH  *COMPLEMENT DATA 
   DUP B10 TO OB(0) FOR B5     *GENERATE PATTERN
   IF(ES.AND.TM.EQ.TM) MSG 7(B10) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(B10) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
   GOTO 75                      *EXIT MODULE
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
   END 20 
COMPILE                       *IDE01 - ONES AND ZEROS TEST
*IF DEF,MVE,1 
   MODULE IDE03,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE03,DDAS(142,143)LOCK,16BIT 
***       IDE03 - ALTERNATING ONES TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING DATA PATTERNS OF ALTERNATE ONES AND ZEROS (AAAAA, 
*         55555 HEX). 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE AAAA HEX. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS  2  THROUGH  6  USING A DATA PATTERN OF 5555 
*             HEX.
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - PATTERN NUMBER
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN BUFFER
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         OB(406H/2006B)
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDE98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDE03 - ALTERNATING ONES TEST 
2  FORMAT IDE03  ERROR(S) = *DECD 
6  FORMAT IDE03 - ALTERNATING ONES PPU MODE - PATTERN=*HEX
7  FORMAT IDE03 - ALTERNATING ONES DMA MODE - PATTERN=*HEX
* 
   DATA (OB(2006B),CON) AAAAH,5555H    *DATA PATTERNS 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=2619D                   *PRE-ALLOCATED CYL FOR ELITE DRIVES 
   B3=0                       *TRACK
   B4=0                       *SECTOR 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   IF (SB(67D).NE.40000B) GOTO 24  *IF NOT 16K SECTORS
24 B0=0                       *PATTERN NUMBER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
30 DUP OB(B0+2006B) TO OB(0) FOR B5    *GENERATE PATTERN
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM PP I/O
   GOTO 30 WHILE (B0+1.LT.2)  *NEXT PATTERN 
   IF(SB(154D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE
   B0=0                       *PATTERN NUMBER 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP OB(B0+2006B) TO OB(0) FOR B5    *GENERATE PATTERN
   DUP 0000H TO IB(0) FOR 2000B        *CLEAR IB
   IF(ES.AND.TM.EQ.TM) MSG 7(OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(OB(0)) TO DISPLAY  *CONSOLE
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B10=OB(B0+2006B).XOR.FFFFH  *COMPLEMENT DATA 
   DUP B10 TO OB(0) FOR B5     *GENERATE PATTERN
   IF(ES.AND.TM.EQ.TM) MSG 7(B10) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(B10) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
   GOTO 75                      *EXIT MODULE
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
   END 20 
COMPILE                       *IDE03 - ALTERNATING ONES TEST
*IF DEF,MVE,1 
   MODULE IDE05,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE05,DDAS(142,143)LOCK,16BIT 
***       IDE05 - SLIDING ZEROS TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING AN EIGHT BIT SLIDING ZERO DATA PATTERN (FEFE, 
*         FDFD, FBFB, F7F7, EFEF, DFDF, BFBF AND 7F7F HEX). 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE FEFE HEX. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS  2  THROUGH  6  USING A DATA PATTERNS OF 
*             FDFD FBFB, F7F7, EFEF, DFDF, BFBF, AND 7F7F HEX.
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         11. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - PATTERN NUMBER
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN BUFFER
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         OB(406H/2006B)
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDE98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDE05 - SLIDING ZEROS TEST
2  FORMAT IDE05  ERROR(S) = *DECD 
6  FORMAT IDE05 - SLIDING ZEROS PPU MODE - PATTERN=*HEX 
7  FORMAT IDE05 - SLIDING ZEROS DMA MODE - PATTERN=*HEX 
* 
   DATA (OB(2006B),CON) FEFEH          *DATA PATTERNS 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=2619D                   *PRE-ALLOCATED CYL FOR ELITE DRIVES 
   B3=0                       *TRACK
   B4=0                       *SECTOR 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   IF (SB(67D).NE.40000B) GOTO 24  *IF NOT 16K SECTORS
24 B0=0                       *PATTERN NUMBER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
30 DUP OB(2006B) TO OB(0) FOR B5    *GENERATE PATTERN 
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM PP I/O
   OB(2006B)=OB(2006B).LS.1    *SHIFT IN NEW PATTERN
   GOTO 30 WHILE (B0+1.LT.8D)  *NEXT PATTERN
   IF(SB(154D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE
   OB(2006B)=FEFEH
   B0=0                       *PATTERN NUMBER 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP OB(2006B) TO OB(0) FOR B5    *GENERATE PATTERN 
   DUP 0000H TO IB(0) FOR 2000B     *CLEAR IB 
   IF(ES.AND.TM.EQ.TM) MSG 7(OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(OB(0)) TO DISPLAY  *CONSOLE
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B10=OB(2006B).XOR.FFFFH  *COMPLEMENT DATA
   DUP B10 TO OB(0) FOR B5     *GENERATE PATTERN
   IF(ES.AND.TM.EQ.TM) MSG 7(B10) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(B10) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
56 WC=B5                        *WORD COUNT 
   BA=0                         *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
   OB(2006B)=OB(2006B).LS.1     *SHIFT IN NEW PATTERN 
   GOTO 50 WHILE (B0+1.LT.8D)   *NEXT PATTERN 
   GOTO 75                      *EXIT MODULE
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
   END 20 
COMPILE                       *IDE05 - SLIDING ZEROS TEST 
*IF DEF,MVE,1 
   MODULE IDE07,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE07,DDAS(142,143)LOCK,16BIT 
***       IDE07 - SLIDING ONES TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING AN EIGHT BIT SLIDING ONE DATA PATTERN (0101,
*         0202, 0404, 0808, 1010, 2020, 4040 AND 8080 HEX). 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE 0101 HEX. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS  2  THROUGH  6  USING A DATA PATTERNS OF 
*             0202,0404, 0808, 1010, 2020, 4040, AND 8080 HEX.
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - PATTERN NUMBER
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN BUFFER
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         OB(406H/2006B)
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDE98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDE07 - SLIDING ONES TEST 
2  FORMAT IDE07  ERROR(S) = *DECD 
6  FORMAT IDE07 - SLIDING ONES PPU MODE - PATTERN=*HEX
7  FORMAT IDE07 - SLIDING ONES DMA MODE - PATTERN=*HEX
* 
   DATA (OB(2006B),CON) 0101H          *DATA PATTERNS 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=2619D                   *PRE-ALLOCATED CYL FOR ELITE DRIVES 
   B3=0                       *TRACK
   B4=0                       *SECTOR 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   IF (SB(67D).NE.40000B) GOTO 24  *IF NOT 16K SECTORS
24 B0=0                       *PATTERN NUMBER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
30 DUP OB(2006B) TO OB(0) FOR B5    *GENERATE PATTERN 
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM PP I/O
   OB(2006B)=OB(2006B).LS.1    *SHIFT IN NEW PATTERN
   GOTO 30 WHILE (B0+1.LT.8D)  *NEXT PATTERN
   IF(SB(154D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE
   OB(2006B)=0101H
   B0=0                       *PATTERN NUMBER 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP OB(2006B) TO OB(0) FOR B5    *GENERATE PATTERN 
   DUP 0000H TO IB(0) FOR 2000B     *CLEAR IB 
   IF(ES.AND.TM.EQ.TM) MSG 7(OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(OB(0)) TO DISPLAY  *CONSOLE
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B10=OB(2006B).XOR.FFFFH  *COMPLEMENT DATA
   DUP B10 TO OB(0) FOR B5     *GENERATE PATTERN
   IF(ES.AND.TM.EQ.TM) MSG 7(B10) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(B10) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
56 WC=B5                        *WORD COUNT 
   BA=0                         *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
   B1 = 0                       *CLEAR LOOP COUNT 
   OB(2006B)=OB(2006B).LS.1     *SHIFT IN NEW PATTERN 
   GOTO 50 WHILE (B0+1.LT.8D)   *NEXT PATTERN 
   GOTO 75                      *EXIT MODULE
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
   END 20 
COMPILE                       *IDE07 - SLIDING ONES TEST
*IF DEF,MVE,1 
   MODULE IDE08,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE08,DDAS(142,143)LOCK,16BIT 
***       IDE08 - ADDRESS TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING AN ADDRESS PATTERN. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL AN 
*             INCREMENTING ADDRESS PATTERN. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS 2 THROUGH 6 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 7. 
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - ADDRESS PATTERN 
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN BUFFER
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDE98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDE08 - ADDRESS TEST
2  FORMAT IDE08  ERROR(S) = *DECD 
6  FORMAT IDE08 - ADDRESS TEST PPU MODE 
7  FORMAT IDE08 - ADDRESS TEST DMA MODE 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=2619D                   *PRE-ALLOCATED CYL FOR ELITE DRIVES 
   B3=0                       *TRACK
   B4=0                       *SECTOR 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   IF (SB(67D).NE.40000B) GOTO 24  *IF NOT 16K SECTORS
24 B0=0                       *PATTERN NUMBER 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
   B0=0                       *INITIALIZE PATTERN 
30 DUP B0 TO OB(B0) FOR 1     *GENERATE PATTERN 
   GOTO 30 WHILE (B0+1.LE.2000B)
32 DUP 0000H TO IB(0) FOR 2000B   *CLEAR IB 
   IF(ES.AND.TM.EQ.TM) MSG 6 TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM PP I/O
   IF(SB(154D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   IF(ES.AND.TM.EQ.TM) MSG 7 TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 7 TO DISPLAY  *CONSOLE 
   B0=0                       *INITIALIZE PATTERN 
53 DUP B0 TO OB(B0) FOR 1     *GENERATE PATTERN 
   GOTO 53 WHILE (B0+1.LE.2000B)
   DUP 0000H TO IB(0) FOR 2000B        *CLEAR IB
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B0=0                       *INITIALIZE PATTERN 
54 OB(B0)=OB(B0).XOR.FFFFH    *COMPLEMENT DATA
   GOTO 54 WHILE (B0+1.LE.2000B)
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
   GOTO 75                      *EXIT MODULE
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
   END 20 
COMPILE                       *IDE08 - ADDRESS TEST 
*IF DEF,MVE,1 
   MODULE IDE09,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE09,DDAS(142,143)LOCK,16BIT 
***       IDE09 - RANDOM DATA TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM 
*         TEN  TIMES USING EITHER  A  RANDOM DATA PATTERN  OR  A
*         USER SPECIFIED DATA PATTERN.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  IF PARAMETER P0 EQUALS ZERO, OBTAIN A RANDOM NUMBER  SEED 
*             FROM THE REAL TIME CLOCK AND GENERATE RANDOM DATA BUFFER. 
*         3.  IF PARAMETER P0 IS NON-ZERO, GENERATE DATA  BUFFER  USING 
*             CONTENTS OF P0 AS THE DATA PATTERN. 
*         4.  RESERVE THE ASSIGNED DRIVE. 
*         5.  WRITE THE PP BUFFER TO THE DISK.
*         6.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         7.  CHECK THE DATA READ FROM THE DISK.
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - INDEX 
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN BUFFER
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDE98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDE09 - RANDOM DATA TEST
2  FORMAT IDE09  ERROR(S) = *DECD 
6  FORMAT IDE09 - RANDOM DATA TEST PPU MODE - PATTERN=*HEX
7  FORMAT IDE09 - RANDOM DATA TEST DMA MODE - PATTERN=*HEX
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=2619D                   *PRE-ALLOCATED CYL FOR ELITE DRIVES 
   B3=0                       *TRACK
   B4=0                       *SECTOR 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   IF (SB(67D).NE.40000B) GOTO 24  *IF NOT 16K SECTORS
24 B0=0                       *PATTERN NUMBER 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
30 IF(P0.EQ.0) GOTO 31        *RANDOM PATTERNS
   DUP P0 TO OB(0) FOR B5     *GENERATE PATTERN 
   GOTO 32
31 RANDOM TO OB FOR B5        *RANDOM DATA
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM PP I/O
   IF(SB(154D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP 0000H TO IB(0) FOR 2000B     *CLEAR IB 
   IF(P0.EQ.0) GOTO 51        *RANDOM PATTERNS
   DUP P0 TO OB(0) FOR B5     *GENERATE PATTERN 
   GOTO 52
51 RANDOM TO OB FOR B5        *RANDOM DATA
52 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
53 B0=0                        *CLEAR INDEX 
54 OB(B0)=OB(B0).XOR.FFFFH     *COMPLEMENT DATA 
   GOTO 54 WHILE (B0+1.LT.2000B)
   IF(ES.AND.TM.EQ.TM) MSG 7(OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(OB(0)) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 53 WHILE (B8+1.LT.2D)   *READ TO CM 
   GOTO 75                      *EXIT MODULE
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 END 20 
COMPILE                       *IDE09 - RANDOM DATA TEST 
*IF DEF,MVE,1 
   MODULE IDE11,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE11,DDAS(142,143)LOCK,16BIT 
***       IDE11 - ANY SECTOR TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TO VERIFY PARAMETERS FOR MODULE IDE11A. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  MAKE SURE ACCESS LEVEL IS GREATER THAN 3 IF A CYLINDER
*             OUTSIDE THE PREALLOCATED AREA IS SPECIFIED IN P1. 
*         3.  VALIDETE PARAMETERS P1, P2, AND P3 FOR DEVICE ASSIGNED. 
*         4.  EXIT TO IDE11A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. IDE11 NOT EXECUTED   AL=*O  NEED AL=4
*         2. IDE11 NOT EXECUTED  PARAM ERROR  (OCT VALUES)
*         3. P1 - INVALID CYLINDER FOR ASSIGNED DEVICE
*         4. P2 - INVALID TRACK FOR ASSIGNED DEVICE 
*         5. P3 - INVALID SECTOR FOR ASSIGNED DEVICE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B2  - CYLINDER VALUE
*         B3  - TRACK VALUE 
*         B4  - SECTOR VALUE
*         B11 - ERROR MESSAGE INDEX 
*         B13 - MODULE ERROR COUNT
* 
*         BUFFERS USED- 
* 
*         N/A 
* 
*    2.3  SUBMODULES USED 
* 
*         IDE11A - ANY SECTOR TEST. 
* 
* 
   BASE OCTAL 
0  FORMAT IDE - DAS DISK SUBSYSTEM TEST 
1  FORMAT IDE11 - ANY SECTOR TEST 
2  FORMAT IDE11  ERROR(S) = 0001D 
3  FORMAT IDE11  IDE11 NOT EXECUTED.  AL OR PARAM ERROR.
5  FORMAT P0 - P4  *DEC  *DEC  *DEC  *DEC  *DEC 
6  FORMAT P5 - P9  *DEC  *DEC  *DEC  *DEC  *DEC 
7  FORMAT PARAMETERS DESCRIBED IN MODULE IDE99
11 FORMAT IDE11 NOT EXECUTED   AL = *O  NEED AL = 04
12 FORMAT IDE11 NOT EXECUTED  PARAM ERROR  (DEC VALUES) 
13 FORMAT DEVICE CODE = *OCTB 
15 FORMAT P1 - INVALID CYLINDER FOR ASSIGNED DEVICE 
16 FORMAT P2 - INVALID TRACK FOR ASSIGNED DEVICE
17 FORMAT P3 - INVALID SECTOR FOR ASSIGNED DEVICE 
* 
   EQUATE CRESD = 7 
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=7777B                   *PRESET B2
   IF (DC.GE.142B) B2=2619D   *MAXCYL - ELITE DRIVES
   IF (DC.GE.142B) B3=8D      *MAXTRK - ELITE DRIVES
   IF (DC.EQ.142B) B4=17D     *MAXSEC - ELITE, 1 DRIVE
   IF (DC.EQ.143B) B4=17D     *MAXSEC - ELITE, 2 DRIVES(PARITY) 
   IF (DC.EQ.144B) B4=34D     *MAXSEC - ELITE, 2 DRIVES PARALLEL
   IF (DC.EQ.145B) B4=26D     *MAXSEC - ELITE, 4 DRIVES(PARITY) 
   IF (DC.EQ.146B) B4=34D     *MAXSEC - ELITE, 4 DRIVES PARALLEL
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 24          *RESERVE DRIVE
24 IF (SB(67D).NE.40000B) GOTO 26  *IF NOT 16K SECTORS
26 IF (AL.GE.4) GOTO 22       *IF ACCESS LEVEL OK 
   IF (P1.LT.B2) GOTO 21      *ACCESS LEVEL TOO LOW 
   GOTO 22
21 MSG 11 (AL) TO LINE 3      *AL ERROR MESSAGE 
   GOTO 34
22 B11=15                     *P1 ERROR INDEX 
   IF (P1.LT.0) GOTO 33       *IF PARAMETER P1 BAD
   IF (P1.GT.B2) GOTO 33      *IF PARAMETER P1 BAD
   B11=16                     *P2 ERROR INDEX 
   IF (P2.LT.0) GOTO 33       *IF PARAMETER P2 BAD
   IF (P2.GT.B3) GOTO 33      *IF PARAMETER P2 BAD
   B11=17                     *P3 ERROR INDEX 
   IF (P3.LT.0) GOTO 33       *IF PARAMETER P3 BAD
   IF (P3.GT.B4) GOTO 33      *IF PARAMETER P3 BAD
   EXIT TO 11A                *ANY SECTOR TEST
33 MSG B11 TO LINE 4          *REPORT PARAMETER ERROR 
   MSG 7 TO LINE 11 
   MSG 12 TO LINE 3 
34 MSG 5 (P0,P1,P2,P3,P4) TO LINE 6 
   MSG 6 (P5,P6,P7,P8,P9) TO LINE 7 
   MSG 0 TO LINE 0            *TITLE MESSAGE
   MSG 1 TO LINE 1            *MODULE TITLE 
   MSG 13 (DC) TO LINE 5      *DEVICE CODE MESSAGE
   PICTURE
   HALT 
   BLANK
   MSG 2 TO DAYFILE 
   MSG 3 TO DAYFILE 
77 END 20 
COMPILE                       *IDE11 - ANY SECTOR TEST
*IF DEF,MVE,1 
   MODULE IDE11A,DDAS(142,143,144,145,146)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDE11A,DDAS(142,143)LOCK,16BIT
***       IDE11A - ANY SECTOR TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM, USING A
*         A USER SPECIFIED OR RANDOM DATA PATTERN, AND WRITNG TO AND
*         READING FROM THE USER SPECIFIED DISK SECTOR.
* 
*    1.2  METHOD- 
* 
*         1.  ASSIGN PARAMETERS P1, P2, AND P3 TO B2, B3 AND B4.
*         2.  GENERATE DATA  BUFFER  USING CONTENTS OF P0 AS THE DATA 
*             PATTERN, IF NON-ZERO, OR RANDOM DATA IF ZERO. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE OB BUFFER TO THE DISK AT THE LOCATION SPECIFIED 
*             BY B2, B3, AND B4 . 
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS 2 THROUGH 6 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 7. 
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         PARAMETERS P1, P2 AND P3 ARE VALIDETED BY IDE11.
* 
*    2.2  REGISTERS USED
* 
*         B0  - INDEX 
*         B1  - NOT USED
*         B2  - CYLINDER VALUE
*         B3  - TRACK VALUE 
*         B4  - SECTOR VALUE
*         B5  - NO. OF WORDS IN SECTOR
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDE98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDE11A - ANY SECTOR TEST
1  FORMAT IDE11A  ERROR(S) = *DECD
6  FORMAT IDE11A -  PPU CYL=*OCT TRK=*OCT SEC=*OCT PATT=*HEX
7  FORMAT IDE11A -  DMA CYL=*OCT TRK=*OCT SEC=*OCT PATT=*HEX
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B2=P1                      *CYLINDER PARAMETER 
   B3=P2                      *TRACK PARAMETER
   B4=P3                      *SECTOR PARAMETER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
30 IF(P0.EQ.0) GOTO 31        *RANDOM PATTERNS
   DUP P0 TO OB(0) FOR B5     *GENERATE PATTERN 
   GOTO 32
31 RANDOM TO OB FOR B5        *RANDOM DATA
32 IF(ES.AND.TM.EQ.TM) MSG 6 (B2,B3,B4,OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 6 (B2,B3,B4,OB(0)) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM PP I/O
   IF(SB(154D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP 0000H TO IB(0) FOR 2000B     *CLEAR IB 
   IF(P0.EQ.0) GOTO 51        *RANDOM PATTERNS
   DUP P0 TO OB(0) FOR B5     *GENERATE PATTERN 
   GOTO 52
51 RANDOM TO OB FOR B5        *RANDOM DATA
52 B14=CRESD                  *COMMAND NUMBER 
   IF(ES.AND.TM.EQ.TM) MSG 7(B2,B3,B4,OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 7(B2,B3,B4,OB(0)) TO DISPLAY  *CONSOLE 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
53 B0=0                        *CLEAR INDEX 
54 OB(B0)=OB(B0).XOR.FFFFH     *COMPLEMENT DATA 
   GOTO 54 WHILE (B0+1.LT.2000B)
   IF(ES.AND.TM.EQ.TM) MSG 7(B2,B3,B4,OB(0)) TO PRINT  *INTERACTIVE MSG 
   IF(ES.AND.TM.NE.TM) MSG 7(B2,B3,B4,OB(0)) TO DISPLAY  *CONSOLE MSG 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 53 WHILE (B8+1.LT.2D)   *READ TO CM 
   GOTO 75                      *EXIT MODULE
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 1 (B13) TO DAYFILE 
77 END 20 
COMPILE                       *IDE11A - ANY SECTOR TEST 
*IF DEF,MVE,1 
   MODULE IDE13,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE13,DDAS(142,143)LOCK,16BIT 
***       IDE13 - DRIVE DIAGNOSTICS (LOGICAL) 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         INITIATES EXECUTION OF THE ASSIGNED DISK DRIVE DIAGNOSITICS.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. INSURE CONFIGURATION IS SERIAL.
*         3. RESERVE THE CHANNEL. 
*         4. ISSUE THE EXECUTE DRIVE DIAGNOSTICS COMMAND. 
*         5. IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER.
*         6. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 3 THROUGH 6.
*         7. EXIT THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B9  - REL ABORT KEY 
*         B11 - ERROR STATUS FLAG 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - POST ERROR DISPLAY 
* 
* 
   BASE OCTAL 
0  FORMAT IDE13 - DRIVE DIAGNOSTICS (LOGICAL DRIVE) 
2  FORMAT IDE13  ERROR(S) = *DECD 
* 
   EQUATE CREL=2, CRESD=7, CEXDR=10 
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B13=0                      *ERROR COUNT
30 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CEXDR
   EXECUTE DRIVE LOGICAL, ABT 70  *EXECUTE DRIVE DIAGNOSTICS
   GOTO 75                    *EXIT 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1       *REL ABORTED
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0) GOTO 77        *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
76 IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 END 20 
COMPILE                       *IDE13 - DRIVE LOGICAL DIAG 
*IF DEF,MVE,1 
   MODULE IDE15,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE15,DDAS(142,143)LOCK,16BIT 
***       IDE15 - DRIVE DIAGNOSTICS (PHYSICAL)
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         INITIATES EXECUTION OF THE ASSIGNED DISK DRIVE DIAGNOSITICS 
*         ON THE SPECIFIED PHYSICAL DEVICE. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE THE CHANNEL. 
*         3. ISSUE THE EXECUTE DRIVE DIAGNOSTICS COMMAND. 
*         4. IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER.
*         5. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 3 THROUGH 6.
*         6. EXIT THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         P7  - PHYSICAL DRIVE ADDRESS (0 - 32(10)) 
* 
*    2.2  REGISTERS USED
* 
*         B9  - REL ABORT KEY 
*         B11 - ERROR STATUS FLAG 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - POST ERROR DISPLAY 
* 
* 
   BASE OCTAL 
0  FORMAT IDE15 - DRIVE DIAGNOSTICS (PHYSICAL DRIVE)
2  FORMAT IDE15  ERROR(S) = *DECD 
* 
   EQUATE CREL=2, CRESD=7, CEXDR=10 
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B13=0                      *ERROR COUNT
30 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CEXDR
   B0=P7
   EXECUTE DRIVE PHYSICAL B0, ABT 70  *EXECUTE DRIVE DIAGNOSTICS
   GOTO 75                    *EXIT 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1       *REL ABORTED
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0) GOTO 77        *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
76 IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 END 20 
COMPILE                       *IDE15 - DRIVE PHYSICAL DIAG. 
*IF DEF,MVE,1 
   MODULE IDE30,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE30,DDAS(142,143)LOCK,16BIT 
***       IDE30 - DAS READ CONTROLLER PERFORMANCE LOG 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TRANSFERS INFORMATION FROM THE SPECIFIED ADDRESSES OF THE 
*         CONTROLLER PERFORMANCE LOG TO THE MODULE OUTPUT BUFFER WHICH
*         IS THEN PRINTED WHEN THE MALET/VE SESSION IS TERMINATED.
*         BY DEFAULT ALL 1000(16) ADDRESSES ARE PRINTED. PARAMETERS 
*         P5 AND P6 CONTROL EXTENT OF ADDRESSES PROCESSED. PARAMETER
*         P8 DETERIMINES WHETHER THE DATA IS DISPLAYED OR PRINTED.
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE THE CHANNEL. 
*         3. ISSUE THE READLOG CONTROLLER COMMAND.
*         4. IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER.
*         5. RELEASE THE CHANNEL. 
*         6. OUTPUT DATA TO PRINT.
*         7. EXIT THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         P5  - NUMBER IF 128(10) BYTE BLOCKS TO PRINT FROM 
*               CONTROLLER PERFORMANCE LOG. (0 - 32(10))
*         P6  - STARTING ADDRESS IN CONTROLLER PERFORMANCE LOG
*               TO PRINT DATA FROM. (0 - 4095(10))
*         P8  - DETERMINES WHETHER THE DATA IS TO BE DISPLAYED OR 
*               PRINTED. ALSO WHETHER TO PAUSE AFTER EACH BLOCK.
* 
*         IF PARAMETERS P5, P6 AND P8 ARE ZERO ALL PERFORMANCE LOG DATA 
*         WILL BE PRINTED. (DEFAULT)
* 
* 
*    2.2  REGISTERS USED
* 
*         B0  - BLOCK COUNT 
*         B1  - WORDS COUNTER 
*         B2  - BLOCK COUNTER 
*         B3  - BLOCK STARTING ADDRESS
*         B4  - BLOCK ENDING ADDRESS
*         B5  - BLOCK STARTIND ADDRESS SAVED
*         B6  - BYTE COUNT
*         B7  - ADJUSTED BYTE COUNT 
*         B8  - LINE NUMBER OF DISPLAY
*         B9  - REL ERROR KEY 
*         B12 - PRODUCT OVERLAY COMMAND NUMBER
*         B13 - MODULE ERROR COUNT
*         B14 - IB INDEX
*         B15 - OB INDEX
  
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3F7H/1767B) 
* 
*         IB(0) TO IB(407H/2007B) 
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
   BASE OCTAL                *SET DEFAULT BASE
 0 FORMAT IDE30-DAS READ CONTROLLER PERFORMANCE LOG 
 1 FORMAT IDE30 ABORT ON .RES CH. COMMAND 
 2 FORMAT IDE30 ABORT ON .READ CONTROLLER LOG. COMMAND
 3 FORMAT IDE30 ABORT ON .REL. COMMAND
 7 FORMAT ERROR - INVALID ADDRESS IN P6 
10 FORMAT            PRINTING *DEC(10) BYTES
11 FORMAT           ADDRESSES *HEX - *HEX 
12 FORMAT ENTER -G- TO CONTINUE OR -T- TO TERMINATE 
13 FORMAT 
14 FORMAT ////////// BYTE ADDRESS *HEX - *HEX //////////
15 FORMAT X0X1  X2X3  X4X5  X6X7  X8X9  XAXB  XCXD  XEXF
16 FORMAT *HEX  *HEX  *HEX  *HEX  *HEX  *HEX  *HEX  *HEX
17 FORMAT ----  ----  ----  ----  ----  ----  ----  ----
* 
   EQUATE CRESC = 1, CRDCLOG = 2, CREL = 3
* 
25 MSG 0 TO DISPLAY,PRINT    *POST MODULE TITLE 
   B1=0                      *INITIALIZE WORDS COUNTER
   B2=0                      *INITIALIZE BLOCK COUNTER
   B0 = P5                   *BLOCK COUNT 
   IF (B0.NE.0) GOTO 30      *IF BLOCK COUNT SPECIFIED
   B0=40                     *INITIALIZE BLOCK COUNT TO ALL 
   B3=0                      *INITIALIZE STARTING ADDRESS 
   B4=177                    *INITIALIZE ENDING ADDRESS 
   B14=0                     *INITIALIZE INDEX INTO IB
   B15=0                     *INITIALIZE INDEX INTO OB
   IF (P6.EQ.0) GOTO 33 
30 IF (P6.GT.7777) GOTO 66   *CHECK FOR ADDRESS TO LARGE
   B3=P6.AND.177760          *STARTING ADDRESS OF FIRST BLOCK 
   B4=B3+177                 *ENDING ADDRESS OF FIRST BLOCK 
   IF (B4.GE.7777) B4=7777
   IF (B3.GE.2010) GOTO 32   *IF FIRST WORD IS IN OB
   B14=B3.RS.1               *INITIALIZE INDEX INTO IB
   B15=0                     *INITIALIZE INDEX INTO OB
   GOTO 33                   *SKIP
32 B14=2010                  *VALUE INDICATES NO WORDS TO IB
   B15=B3.RS.1                    *INITIALIZE INDEX INTO OB 
   B15=B15-2010 
33 B5=B3                     *STARTING ADDRESS
   B6=B0.LS.7                *BYTE COUNT
   B7=B3+B6                  *ENDING ADDRESS
   B7=B7-1
   IF (B7.LE.7777) GOTO 35
   B7=7777                   *ENDING ADDRESS
   B6=10000-B5               *ADJUSTED BYTE COUNT 
35 MSG 13 TO LINE 6 
   MSG 10 (B6) TO LINE 7     *BYTE COUNT MSG
   MSG 11 (B5,B7) TO LINE 10  *ADDRESS RANGE MSG
   MSG 13 TO LINE 11
   MSG 12 TO LINE 12         *PAUSE MSG 
   PICTURE
   PAUSE
   BLANK
   B12=CRESC                 *RESERVE CONTROLLER
   RES CH, ABT 70 
   B12=CRDCLOG               *READ CONTROLLER PERFORMANCE LOG 
   READLOG CONTROLLER, ABT 70 
   B12=CREL                  *RELEASE CONTROLLER
   REL, ABT 70
36 IF (P8.NE.0) GOTO 40      *DO NOT PRINT DATA 
   MSG 13 TO PRINT           *ADDRESS HEADER
   MSG 14 (B3,B4) TO PRINT   *ADDRESS HEADER
   MSG 15 TO PRINT           *ADDRESS HEADER
   MSG 17 TO PRINT           *ADDRESS HEADER
   GOTO 53                   *PRINT DATA
* 
* -----------------DISPLAY DATA-----------------------------
* 
40 B8 = 0 
   MSG 13 TO LINE B8         *ADDRESS HEADER
   B8 = B8 + 1               *INCREMENT LINE NUMBER 
   MSG 14 (B3,B4) TO LINE B8  *ADDRESS HEADER 
   B8 = B8 + 1               *INCREMENT LINE NUMBER 
   MSG 15 TO LINE B8         *ADDRESS HEADER
   B8 = B8 + 1               *INCREMENT LINE NUMBER 
   MSG 17 TO LINE B8         *ADDRESS HEADER
   B8 = B8 + 1               *INCREMENT LINE NUMBER 
* 
* -----------------PRINT DATA-------------------------------
* 
53 IF (B14.GE.2010) GOTO 56  *IF DONE WITH IB SWITCH TO OB
54 IF (P8.EQ.0) MSG 16 8 WORDS FROM IB (B14) TO PRINT  *PRINT 80 HEX BYT
   IF (P8.NE.0) MSG 16 8 WORDS FROM IB (B14) TO LINE B8  *PRINT 80 HEX B
   IF (P8.NE.0) B8 = B8 + 1               *INCREMENT LINE NUMBER
   B14=B14+10                *NEXT ADDRESS IN IB
   B1=B1+10                  *UPDATE WORDS COUNT
   IF (B1.LT.100) GOTO 53    *IF MORE WORDS THIS BLOCK
   GOTO 60
56 IF (P8.EQ.0) MSG 16 8 WORDS FROM OB (B15) TO PRINT  *PRINT 80 HEX BYT
   IF (P8.NE.0) MSG 16 8 WORDS FROM OB (B15) TO LINE B8  *PRINT 80 HEX B
   IF (P8.NE.0) B8 = B8 + 1               *INCREMENT LINE NUMBER
   B15=B15+10                *NEXT ADDRESS IN OB
   B1=B1+10                  *UPDATE WORD COUNT 
   IF (B15.GE.1770) GOTO 76 
   IF (B1.LT.100) GOTO 56    *IF MORE WORDS THIS BLOCK
60 B1=0                      *RESET WORD COUNT
   B3=B3+200                 *UPDATE BLOCK ADDRESS IN MESSAGE 
   IF (B3.NE.7777) GOTO 64   *IF NEW FWA NOT EQUAL UPPER BOUNDS 
   B4=7777                   *SET LWA UPPER BOUNDS
   GOTO 65
64 B4=B4+200                 *UPDATE BLOCK ADDRESS IN MESSAGE 
   IF (B4.GT.7777) B4=7777
65 IF (P8.NE.0) PICTURE      *SEND DISPLAY DATA TO OUTPUT 
   IF (P8.EQ.10) PAUSE       *PAUSE AFTER EACH BLOCK DURING DISPLAY 
   IF (B0.EQ.0) GOTO 67      *DO ONLY 1 BLOCK 
   GOTO 36 WHILE (B2+1.LT.B0)  *DO ALL BLOCKS 
* 
* -----------------PAUSE/EXIT-------------------------------
* 
67 PAUSE                     *PAUSE SO LAST LINE IS NOT PRINTED TWICE 
   GOTO 76                   *END MODULE ON A GO
66 MSG 7 TO PRINT            *INVALID ADDRESS ERROR MSG 
   GOTO 76
70 MSG 0 TO LINE 0           *MODULE TITLE TO ERROR DISPLAY 
   MSG B12 TO LINE 1         *COMMAND THAT ABORTED
   MSG EM TO LINE 2          *PRODUCT OVERLAY ERROR 
   PICTURE
   HALT 
   BLANK
76 END 25 
COMPILE                      *IDE30 DAS READ CONTROLLER PERFORMANCE LOG 
*IF DEF,MVE,1 
   MODULE IDE31,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE31,DDAS(142,143)LOCK,16BIT 
***       IDE31 - DISK ARRAY SUBSYSTEM INFORMATION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         READ AND DISPLAY INFORMATION ABOUT THE LOGICAL DAS DEVICE 
*         WHICH IS CURRENTLY ASSIGNED TO MALET. 
* 
*    1.2  METHOD- 
* 
*         1. DISPLAY THE RUNNING MESSAGE FOR THE MODULE.
*         2. RESERVE THE CHANNEL. 
*         3. RELEASE THE CHANNEL. 
*         4. PROCESS STATUS INFORMTATION RETURNED TO SB 
*            BY RESERVE TASK. 
*         6. CALL IDE31A AND PROCESS DRIVE INFORMATION
*         7. EXIT THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B0  - COS DATE INFO 
*         B1  - COS DATE INFO 
*         B2  - COS DATE INFO 
*         B3  - COS LEVEL INFO
*         B9  - REL ERROR KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         SB(0) TO OB(157(10))
* 
* 
*    2.3  SUBMODULES USED 
*         IDE31A - PROCESS DRIVE INFORMATION
*         IDE98A - POST ERROR DISPLAY 
* 
   BASE OCTAL 
00 FORMAT IDE31 - DISK ARRAY SUBSYSTEM INFORMATION
01 FORMAT                     FOR 
02 FORMAT           LOGICAL UNIT NUMBER (HEX) = *H
03 FORMAT COS DATE ------------------------- *H/*H/*H 
04 FORMAT COS LEVEL ------------------------ *H 
05 FORMAT DISK TYPE ------------------------ *A*A*A*A*A 
06 FORMAT SECTOR SIZE ---------------------- *DECI(10) BYTES
07 FORMAT CLUSTERED ------------------------ *A*A 
11 FORMAT FORMATTED ------------------------ *A*A 
14 FORMAT PARITY --------------------------- *A*A 
16 FORMAT OPERATIONAL ---------------------- *A*A 
17 FORMAT READY ---------------------------- *A*A 
20 FORMAT READ READY ----------------------- *A*A 
21 FORMAT WRITE READY ---------------------- *A*A 
22 FORMAT DEGRADED MODE -------------------- *A*A 
23 FORMAT DEGRADED DRIVE ADDRESS (HEX)------ *H 
24 FORMAT 
* 
   EQUATE CREL=2, CRESD=7, ELTMD1=4532H, ELTMD2=4C31H 
   EQUATE SSDMD1=3041H, SSD1MD2=3137H, SSD2MD2=3136H
   EQUATE CLST=8000H, FMT=4000H, PAR=2000H
   EQUATE OPR=8000H, RDY=4000H, RRY=2000H, WRY=1000H
   EQUATE DGM=4 
* 
30 MSG 00 TO LINE 0 
   B14=CRESD                   * COMMAND NUMBER 
   RES DRIVE, ABT 31
31 B14=CREL 
   REL, ABT 70
   B0=SB(84D).RS.8D            *
   B1=SB(84D).AND.177B         * COS DATE 
   B2=SB(85D).RS.8D            *
   B3=SB(85D)                  * COS LEVEL
   MSG 01 TO LINE 1 
   MSG 02 (SB(157D)) TO LINE 2  * DISPLAY LOGICAL UNIT NUMBER 
   MSG 24 TO LINE 3             * SPACE 
   MSG 03 (B0,B1,B2) TO LINE 4  * DISPLAY DATE
   MSG 04 (B3) TO LINE 5        * DISPLAY LEVEL 
   IF(SB(96D)-ELTMD1.NE.0) GOTO 32  * TEST FOR DRIVE TYPE 
   IF(SB(97D)-ELTMD2.NE.0) GOTO 32  * 
   MSG 05 (**EL**,**IT**,**E **,**2 **) TO LINE 6 
   GOTO 40
32 IF(SB(96D)-SSDMD1.NE.0) GOTO 37   * TEST FOR DRIVE TYPE
   IF(SB(97D)-SSD1MD2.NE.0) GOTO 35  *
   GOTO 36
35 IF(SB(97D)-SSD2MD2.NE.0) GOTO 37  * TEST FOR DRIVE TYPE
36 MSG 05 (**SS**,**D **) TO LINE 6 
   GOTO 40
37 MSG 05 (**UN**,**KN**,**OW**,**N **) TO LINE 6 
40 MSG 6 (SB(67D)) TO LINE 7
   IF(SB(65D).AND.CLST.NE.0) MSG 7(**YE**,**S **) TO LINE 10
   IF(SB(65D).AND.CLST.EQ.0) MSG 7(**NO**) TO LINE 10 
   IF(SB(65D).AND.FMT.NE.0) MSG 11(**YE**,**S **) TO LINE 11
   IF(SB(65D).AND.FMT.EQ.0) MSG 11(**NO**) TO LINE 11 
   IF(SB(65D).AND.PAR.NE.0) MSG 14(**YE**,**S **) TO LINE 12
   IF(SB(65D).AND.PAR.EQ.0) MSG 14(**NO**) TO LINE 12 
   CALL,31A                          * PHYSICAL DRIVE INFO
   IF(SB(69D).AND.OPR.EQ.0) MSG 16(**YE**,**S **) TO LINE 15
   IF(SB(69D).AND.OPR.NE.0) MSG 16(**NO**) TO LINE 15 
   IF(SB(69D).AND.RDY.EQ.0) MSG 17(**YE**,**S **) TO LINE 16
   IF(SB(69D).AND.RDY.NE.0) MSG 17(**NO**) TO LINE 16 
   IF(SB(69D).AND.RRY.EQ.0) MSG 20(**YE**,**S **) TO LINE 17
   IF(SB(69D).AND.RRY.NE.0) MSG 20(**NO**) TO LINE 17 
   IF(SB(69D).AND.WRY.EQ.0) MSG 21(**YE**,**S **) TO LINE 20
   IF(SB(69D).AND.WRY.NE.0) MSG 21(**NO**) TO LINE 20 
   IF(SB(69D).AND.DGM.NE.0) MSG 22(**YE**,**S **) TO LINE 21
   IF(SB(69D).AND.DGM.EQ.0) MSG 22(**NO**) TO LINE 21 
   IF(SB(69D).AND.DGM.EQ.0) GOTO 67 
   B0=SB(65D).AND.FH     * DEGRADED DRIVE ADDRESS 
   MSG 23 (B0) TO LINE 22  * DISPLAY DEGRADED DRIVE ADDRESS 
67 PICTURE                   *SEND DATA TO OUTPUT 
   GOTO 77
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
77 END 30 
COMPILE                       *IDE31 - DISPLAY DAS INFORMATION
*IF DEF,MVE,1 
   MODULE IDE31A,DDAS(142,143,144,145,146)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDE31A,DDAS(142,143)LOCK,16BIT
***       IDE31A - PROCESS DRIVE INFORMATION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         CALLED BY IDE31 TO DISPLAY PHYSICAL DRIVE INFORMATION 
*         ABOUT THE LOGICAL UNIT. 
* 
*    1.2  METHOD- 
* 
*         1. READ AND PROCESS PARAMETER 68 DATA FROM THE STATUS 
*            BUFFER.
*         2. RETURN TO CALLING MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         NONE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         SB CONTAINS DAS STATUS
* 
*    2.2  REGISTERS USED
* 
*         B0  - STATUS
*         B1  - STATUS
*         B2  - STATUS
*         B3  - STATUS
*         B4  - STATUS
*         B5  - STATUS
* 
*         BUFFERS USED- 
* 
*         SB(0) TO OB(157(10))
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
   BASE OCTAL 
01 FORMAT NUMBER OF PHYSICAL DRIVES -------- *D 
03 FORMAT PHYSICAL DRIVE ADDRESSES (HEX)---- *H *H *H *H
10 B0=SB(63D).RS.8D 
   MSG 1 (B0) TO LINE 13
   B1=SB(71D).RS.9D                  * PARAM 50 SIZE IN PP WORDS
   B1=B1+76D                         * BIAS TO START OF PARAM 68
   IF(B0.NE.1) GOTO 20     * IF NOT 1 DRIVE 
   B2=SB(B1).RS.8D
   MSG 3 (B2) TO LINE 14
20 IF(B0.NE.2) GOTO 21     * IF NOT 2 DRIVES
   B2=SB(B1).RS.8D
   B3=SB(B1+2).RS.8D
   MSG 3 (B2,B3) TO LINE 14 
21 IF(B0.NE.3) GOTO 22     * IF NOT 3 DRIVES
   B2=SB(B1).RS.8D
   B3=SB(B1+2).RS.8D
   B4=SB(B1+4).RS.8D
   MSG 3 (B2,B3,B4) TO LINE 14
22 IF(B0.NE.4) GOTO 23     *IF NOT 4 DRIVES 
   B2=SB(B1).RS.8D
   B3=SB(B1+2).RS.8D
   B4=SB(B1+4).RS.8D
   B5=SB(B1+6).RS.8D
   MSG 3 (B2,B3,B4,B5) TO LINE 14 
23 EXIT 
   END 10 
COMPILE                       *IDE31A - DISPLAY DAS INFORMATION 
*IF DEF,MVE,1 
   MODULE IDE50,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE50,DDAS(142,143)LOCK,16BIT 
***       IDE50 - INITIAL FORMAT DRIVE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         ISSUES AN INITIAL FORMAT OF SELECTED LOGICAL FACILITY.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  CHECK FOR HIGH ENOUGH ACCESS LEVEL. 
*         3.  CHECK FOR LEGAL SECTOR SIZE.
*         4.  POST WARNING MESSAGES FOR FORMAT AND PAUSE. 
*         5.  IF -G- FORMAT THE FACILITY. 
*         6.  POST RUNNING TIME FOR FORMAT. 
*         7.  IF FORMAT ROUTINE EXECUTES CORRECTLY POST THE MESSAGE 
*             FORMAT COMPLETED AND END THE MODULE.
*         8.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*         9.  END THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
* 
*    2.2  REGISTERS USED
* 
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - POST ERROR DISPLAY 
* 
   BASE OCTAL 
0  FORMAT IDE50 - INITIAL FORMAT DRIVE
1  FORMAT IDE50  ILLEGAL PARAMETER P9  P9=*OCTAL
2  FORMAT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3  FORMAT X  WARNING           WARNING            WARNING  X
4  FORMAT X ALL DATA WILL BE DESTROYED ON LOGICAL FACILITY X
5  FORMAT IDE50  PAUSE  INITIAL FORMAT  -G- TO CONTINUE 
6  FORMAT X INITIAL FORMAT CAN TAKE UP TO 18 MINUTES FOR   X
7  FORMAT X ONE LOGICAL FACILITY.                          X
10 FORMAT X                                                X
11 FORMAT IDE50  ACCESS LEVEL 20B OR GREATER NEEDED  AL=*OCT
12 FORMAT   FORMAT ELAPSED TIME = *D MINUTES *D SECONDS 
13 FORMAT X FORMAT SELECTED = *DK BYTES  LOGICAL UNIT = *H X
14 FORMAT         INITIAL FORMAT COMPLETED
15 FORMAT   FORMAT DID NOT COMPLETE IN 18 MINUTES 
16 FORMAT IDE50 - FORMATTING LOGICAL UNIT NUMBER (HEX) = *H 
   EQUATE CREL=2, CREFORM=14, CRESDC=7
20 MSG 0 TO DISPLAY, PRINT    *MODULE MESSAGE 
   IF (AL.GE.20B) GOTO 24 
   MSG 11 (AL) TO LINE 2      *AL ERROR MESSAGE 
   GOTO 75
24 B0=1 
   B13=0                      *ERROR COUNT
30 IF(P9.LE.10) GOTO 32       *IF P9 LE 10 CONTINUE 
   MSG 1 (P9) TO LINE 2       *P9 ERROR MESSAGE 
   GOTO 75
32 B1 = P9.LS.1               *SET SECTOR SIZE
   MSG 2 TO LINE 2            *LINE OF XXS
   MSG 10 TO LINE 3           *BLANK LINE WITH X
   MSG 3 TO LINE 4            *WARNING MESSAGE
   MSG 10 TO LINE 5           *BLANK LINE WITH X
   MSG 4 TO LINE 6            *ALL DATA WILL BE DESTROYED 
   MSG 10 TO LINE 7           *BLANK LINE WITH X
   MSG 6 TO LINE 10           *INITIAL FORMAT 18 MINUTES
   MSG 7 TO LINE 11           *ONE LOGICAL FACILITY 
   MSG 10 TO LINE 12          *BLANK LINE WITH X
   MSG 13 (B1,SB(157D)) TO LINE 13  *SECTOR SIZE MESSAGE
   MSG 10 TO LINE 14          *BLANK LINE WITH X
   MSG 3 TO LINE 15           *WARNING MESSAGE
   MSG 10 TO LINE 16          *BLANK LINE WITH X
   MSG 2 TO LINE 17           *LINE OF XXS
   MSG 5 TO LINE 21           *PAUSE MESSAGE
   MSG 5 TO DISPLAY,PRINT     *PAUSE MESSAGE
   PICTURE
   PAUSE
   BLANK
   MSG 16 (SB(157D)) TO DISPLAY,PRINT  *RUNNING MESSAGE 
   B14=CRESDC                 *COMMAND NUMBER 
   RES DRIVE, ABT 40          *RESERVE DRIVE
40 MSG 12 (B2,B3) TO LINE 10  *ELAPSED TIME MESSAGE 
   B14=CREFORM                *COMMAND NUMBER 
   B8 = P9                    *SET SECTOR SIZE
   REFORM INITIAL B8, ABT 70  *INITIAL FORMAT 
   IF (SB.EQ.0) GOTO 50       *FORMAT COMPLETED 
   B10 = 1080D                *SET TIMER
42 DELAY 1000D MSEC           *DELAY 1 SECOND 
   B4 = B4 + 1                *INCREMENT TIMER
   B3 = B3 + 1                *INCREMENT TIMER
   IF(B3.EQ.74) B2 = B2 + 1   *INCREMENT TIMER
   IF(B3.EQ.74) B3 = 0        *RESET SECOND TIMER 
   IF(B4.NE.B10) GOTO 40      *WAIT FOR FORMAT TO COMPLETE
   MSG 15 TO LINE 12          *FORMAT DID NOT COMPLETE IN 18 MINUTES
44 PICTURE                    *POST ALL MESSAGES
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   GOTO 77                    *END MODULE 
50 MSG 14 TO LINE 12          *FORMAT COMPLETED 
   GOTO 44                    *END MODULE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1       *REL ABORTED
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0) GOTO 77        *REL ABORTED
   GOTO 40
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
   PICTURE
77 END 20 
COMPILE                       *IDE50 - INITIAL FORMAT DRIVE 
*IF DEF,MVE,1 
   MODULE IDE70,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE70,DDAS(142,143)LOCK,16BIT 
***       IDE70 - CONTROLLER RESET
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         EXECUTES A SERIES OF RESERVE STATEMENTS WHICH INCLUDES A SLAVE
*         RESET IF NO RESPONSE FROM A LOGICAL RESET.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  CHECK FOR HIGH ENOUGH ACCESS LEVEL. 
*         3.  IF P9 EQUALS 10 SKIP TO STEP 9. 
*         4.  RESERVE THE CHANNEL.
*         5.  IF RESERVE CHANNEL ROUTINE EXECUTES CORRECTLY POST THE
*             MESSAGES RESERVE CHANNEL COMPLETED, PAUSE -G- TO SLAVE
*             RESET AND PAUSE.
*         6.  IF P9 EQUALS 0 END THE MODULE.
*         7.  IF ROUTINE DETECTED ERROR, AND P9 EQUALS 0 GO TO ERROR
*             HANDLER.
*         8.  IF ROUTINE DETECTED ERROR, AND P9 NON-ZERO POST THE 
*             MESSAGE RES CH FAILED PAUSE -G- TO SLAVE RESET AND PAUSE. 
*         9.  IF P9 EQUALS 10 POST THE MESSAGE PAUSE -G- TO SLAVE RESET 
*             AND PAUSE.
*        10.  IF RESERVE SLAVE ROUTINE EXECUTES CORRECTLY POST THE
*             MESSAGE RESERVE SLAVE COMPLETED.
*        11.  IF RESERVE SLAVE ROUTINE DOES NOT RECEIVE RESPONSE IN 12
*             MINUTES POST THE MESSAGE SLAVE RESET NO RESPONSE IN 12
*             MINUTES AND END THE MODULE. 
*        12.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*        13.  POST MESSAGE RES DRIVE COMMAND AND RES DRIVE. 
*        14.  IF RESERVE DRIVE ROUTINE EXECUTES CORRECTLY POST THE
*             MESSAGE RESERVE DRIVE COMPLETED.
*        15.  END THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
* 
*    2.2  REGISTERS USED
* 
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDE98A - POST ERROR DISPLAY 
* 
   BASE OCTAL 
0  FORMAT IDE70 - CONTROLLER RESET
1  FORMAT IDE70  SLAVE RESET TIME = *D MINUTES *D SECONDS 
2  FORMAT IDE70  ERROR(S) = *DECD 
3  FORMAT IDE70  RES CH COMMAND 
4  FORMAT IDE70  RES CH COMMAND COMPLETED NORMALLY
5  FORMAT IDE70  RES SLAVE COMMAND
6  FORMAT IDE70  RES SLAVE COMMAND COMPLETED NORMALLY 
7  FORMAT IDE70  RES DRIVE COMMAND
10 FORMAT IDE70  RES DRIVE COMMAND COMPLETED NORMALLY 
11 FORMAT IDE70  ACCESS LEVEL 20B OR GREATER NEEDED  AL=*OCT
12 FORMAT IDE70  PAUSE RES CH FAILED -G- TO SLAVE RESET 
13 FORMAT IDE70  PAUSE  -G- TO SLAVE RESET
14 FORMAT IDE70  P9 = 0   SLAVE RESET NOT EXECUTED
15 FORMAT IDE70  SLAVE RESET NO RESPONSE IN 12 MINUTES
   EQUATE CREL=2, CRESC=3, CRESSC=13, CRESDC=7
20 MSG 0 TO DISPLAY, PRINT   *MODULE MESSAGE
   IF (AL.GE.20B) GOTO 24 
   MSG 11 (AL) TO LINE 2     *AL ERROR MESSAGE
   GOTO 75
24 B0=1 
   B2=0                      *LOOP COUNT
   B3=0                      *LOOP COUNT
   B10=0                     *LOOP COUNT
   B13=0                     *ERROR COUNT 
30 IF(P9.EQ.10) GOTO 40      *IF P9 EQ 10 SKIP RES CH 
   MSG 3 TO LINE 2           *RES CH COMMAND
   B14=CRESC                 *COMMAND NUMBER
   RES CH, ABT 34            *RESERVE CHANNEL LOGICAL RESET 
   MSG 4 TO LINE 3           *RES CH COMPLETED NORMALLY 
   GOTO 40
34 IF(P9.EQ.0) GOTO 70
   MSG 12 TO LINE 5          *RES CH FAILED G TO RESET
   MSG 12 TO DISPLAY         *RES CH FAILED G TO RESET
   PICTURE
   PAUSE
   GOTO 41
40 MSG 13 TO LINE 5          *PAUSE MSG G TO SLAVE RESET
   MSG 13 TO DISPLAY         *PAUSE MSG G TO SLAVE RESET
   PICTURE
   PAUSE
41 IF(P9.EQ.0) MSG 14 TO LINE 10  *P9 = 0 SLAVE RESET NOT EXECUTED
   IF(P9.EQ.0) GOTO 75
   MSG 5 TO LINE 7           *RES SLAVE COMMAND 
   MSG 5 TO DISPLAY          *RES SLAVE COMMAND 
42 B14=CRESSC                *COMMAND NUMBER
   RES SLAVE, ABT 70         *RESERVE CHANNEL SLAVE RESET 
   IF(SB.NE.0) GOTO 44       *IF BUSY 
   MSG 6 TO LINE 10          *RES SLAVE COMPLETED NORMALLY
   GOTO 50
44 DELAY 900D MSEC
   B4 = 720D                 *SET COUNTER TO 12 MINUTES 
   B10 = B10 + 1             *INCREMENT COUNTER 
   B3 = B3 + 1               *INCREMENT COUNTER 
   IF(B3.EQ.74) B2 = B2 + 1  *INCREMENT COUNTER 
   IF(B3.EQ.74) B3 = 0       *RESET COUNTER 
   MSG 1 (B2,B3) TO LINE 11  *SLAVE RESET TIME =
   IF(B10.LT.B4) GOTO 42     *RECHECK TIME
   MSG 15 TO LINE 13         *SLAVE RESET DID NOT COMPLETE IN 12 MINS 
   GOTO 75
50 MSG 7 TO LINE 12          *RES DRIVE COMMAND 
   B14=CRESDC                *COMMAND NUMBER
   RES DRIVE, ABT 70         *RESERVE DRIVE LOGICAL RESET 
   MSG 10 TO LINE 13         *RES DRIVE COMPLETED NORMALLY
60 GOTO 75
70 PICTURE                   *SAVE ALL MESSAGES 
   BLANK                     *CLEAR SCEEN FOR NEW MESSAGES
   MSG 0 TO LINE 1           *MODULE TITLE
   IF(B14.EQ.CREL) B9=1      *REL ABORTED 
   B13=B13+1                 *UPDATE ERROR COUNT
   CALL 98A                  *POST COMMAND ABORT DISPLAY
   IF(B9.NE.0) GOTO 77       *REL ABORTED 
   GOTO 40
75 B14=CREL                  *COMMAND NUMBER
   REL, ABT 70               *RELEASE CONTROLLER
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
   PICTURE
77 END 20 
COMPILE                      *IDE70 - SLAVE RESET CONTROLLER
*IF DEF,MVE,1 
   MODULE IDE98A,DDAS(142,143,144,145,146)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDE98A,DDAS(142,143)LOCK,16BIT
***       IDE98A - POST COMMAND ABORTED DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         START BUILDING THE ERROR DISPLAY FOR PRODUCT OVERLAY  COMMAND 
*         ABORT ERRORS BY PLACING THE NAME OF THE COMMAND  ABORTED  AND 
*         THE ERROR DESCRIPTION IN THE ERROR DISPLAY. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE COMMAND ABORTED AND THE ERROR DESCRIPTION.
*         2.  EXIT TO MODULE IDE98E TO COMPLETE ERROR DISPLAY.
* 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED.
* 
*    2.2  SUBMODULES USED 
* 
*         IDE98E - ERROR DISPLAY
* 
   BASE OCTAL 
1  FORMAT    ABORTED ON .READ CYL. COMMAND
2  FORMAT    ABORTED ON .REL. COMMAND 
3  FORMAT    ABORTED ON .RES CH. COMMAND
5  FORMAT    ABORTED ON .WRITE CYL. COMMAND 
6  FORMAT    ABORTED ON .EXECUTE CM. COMMAND DIAGNOSTIC *DD 
7  FORMAT    ABORTED ON .RES DRIVE. COMMAND 
10 FORMAT    ABORTED ON .EXECUTE DRIVE. COMMAND 
11 FORMAT    ABORTED ON .READ DMA CYL. COMMAND
12 FORMAT    ABORTED ON .WRITE DMA CYL. COMMAND 
13 FORMAT    ABORTED ON .RES SLAVE. COMMAND 
14 FORMAT    ABORTED ON .REFORM INITIAL. COMMAND
20 MSG B14 (B0) TO LINE 2     *COMMAND ABORTED MSG
   MSG EM TO LINE 3           *ERROR DESCRIPTION
   B6=3                       *DISPLAY LINE 
   EXIT TO 98E                *COMPLETE ERROR DISPLAY 
   END 20 
COMPILE                       *IDE98A - POST COMMAND ABORTED DISPLAY
*IF DEF,MVE,1 
   MODULE IDE98C,DDAS(142,143,144,145,146)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDE98C,DDAS(142,143)LOCK,16BIT
***       IDE98C - POST COMPARE ERROR DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         DISPLAY THE DATA COMPARE ERROR MESSAGE AND THE LOCATION OF THE
*         WORD THAT CAUSED THE ERROR. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY DATA COMPARE ERROR MESSAGE. 
*         2.  DISPLAY THE HEX LOCATION OF THE WORD CAUSING THE ERROR. 
*         3.  EXIT TO MODULE IDE98E TO COMPLETE ERROR DISPLAY.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS ZERO INDICATING DATA COMPARE ERROR. 
* 
*         REGISTER BA  CONTAINS THE LOCATION OF THE WORD WHICH CAUSED 
*         THE ERROR.
* 
*    2.2  SUBMODULES USED 
* 
*         IDE98E - CINTINUE ERROR DISPLAY 
* 
* 
   BASE OCTAL 
1  FORMAT ABORTED ON DATA COMPARE ERROR 
2  FORMAT         WORD  *HEXH 
20 MSG 1 TO LINE 3            *DATA COMPARE ERROR MESSAGE 
   MSG 2 (BA) TO LINE 4       *NUMBER OF WORD IN ERROR
   B6=6                       *DISPLAY LINE 
   EXIT TO 98E                *COMPLETE ERROR DISPLAY 
   END 20 
COMPILE                       *IDE98C - POST COMPARE ERROR DISPLAY
*IF DEF,MVE,1 
   MODULE IDE98E,DDAS(142,143,144,145,146)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDE98E,DDAS(142,143)LOCK,16BIT
***       IDE98E - ERROR DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         COMPLETE THE ERROR DISPLAY IN THE CASE OF  EITHER  A  PRODUCT 
*         OVERLAY COMMAND ABORT OR A DATA COMPARE ERROR 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE. 
*         2.  DISPLAY CONTENTS OF EC, AND EA REGISTERS. 
*         3.  DISPLAY CONTENTS OF B REGISTERS.
*         4.  IF A DATA COMPARE ERROR,  DISPLAY EIGHT  WORDS  OF  INPUT 
*             BUFFER AND OUTPUT BUFFER, BEGINNING WITH WORD THAT CAUSED 
*             THE ERROR.
*         5.  IF A PRODUCT OVERLAY COMMAND ABORT, DISPLAY GENERAL 
*             STATUS, TASK NUMBER, LOW LEVEL ERROR CODE AND RESPONSE
*             PACKET. 
*         6.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED 
* 
*         REGISTER BA CONTAINS THE WORD LOCATION AT WHICH A DATA
*         COMPARE ERROR OCCURRED
* 
*    2.2  REGISTERS USED
* 
*         B6  - DISPLAY LINE COUNTER
*         B14 - COMMAND ABORT NUMBER
*         B15 - MESSAGE NUMBER
*         BA  - DATA ERROR LOCATION 
* 
*    2.3  SUBMODULES USED 
* 
*         N/A 
* 
   BASE OCTAL 
0  FORMAT IDE - DAS DISK SUBSYSTEM TEST 
2  FORMAT B10-15 = *OCTAL *OCTAL *OCTAL *OCTAL *OCTAL *OCTAL
4  FORMAT IB = *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
5  FORMAT OB = *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
6  FORMAT B0-B4  = *OCTAL *OCTAL *OCTAL *OCTAL *OCTAL 
7  FORMAT B5-B9  = *OCTAL *OCTAL *OCTAL *OCTAL *OCTAL 
10 FORMAT       DRIVER GENERAL STATUS WORD = *HEXH
11 FORMAT FAILING TASK = *DD   LOW LEVEL ERROR CODE = *HH 
12 FORMAT  1D  - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
13 FORMAT  9D  - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
14 FORMAT  17D - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
15 FORMAT  25D - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
16 FORMAT  33D - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
17 FORMAT  41D - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
20 FORMAT               RESPONSE PACKET (HEX) 
21 FORMAT---------------------------------------------------
40 MSG 0 TO LINE 0            *TEST TITLE 
   B6=B6+2
   IF (B14.EQ.0) B6=13        *IF DATA COMPARE ERROR
   MSG 6 (B0,B1,B2,B3,B4) TO LINE B6
   MSG 7 (B5,B6,B7,B8,B9) TO LINE B6+1
   MSG 2 (B10,B11.B12,B13,B14,B15) TO LINE B6+2 
   IF (B14.NE.0) GOTO 50      *IF PRODUCT OVERLAY ERROR 
   MSG 4 10B WORDS FROM IB(BA) TO LINE 10 
   MSG 5 10B WORDS FROM OB(BA) TO LINE 11 
   GOTO 70                    *IF DATA COMPARE ERROR, DONE
50 MSG 10 (SB) TO LINE 11            *GENERAL STATUS
   MSG 11 (SB(1),SB(2)) TO LINE 12   *TASK AND LL ERROR CODE
   MSG 20 TO LINE 14
   MSG 12 8D WORDS FROM SB(13D) TO LINE 15
   MSG 13 8D WORDS FROM SB(21D) TO LINE 16
   MSG 14 8D WORDS FROM SB(29D) TO LINE 17
   MSG 15 8D WORDS FROM SB(37D) TO LINE 20
   MSG 16 8D WORDS FROM SB(45D) TO LINE 21
   MSG 17 8D WORDS FROM SB(53D) TO LINE 22
70 MSG 21 TO LINE 23
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 40 
COMPILE                       *IDE98E - ERROR DISPLAY 
*IF DEF,MVE,1 
   MODULE IDE99,DDAS(142,143,144,145,146)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDE99,DDAS(142,143)LOCK,16BIT 
***       IDE99 - PARAMETER DESCRIPTION 
**
* 
/------------------RESTRICTIONS-----------------------------
/ 
/  IDE  ASSUMES  THAT  MICROCODE  HAS  BEEN  LOADED  AND  IS
/  OPERATIONAL  IN  THE  DAS  SUBSYSTEM.  ALL MODULES EXCEPT
/  IDE00, IDE30, AND IDE70  REQUIRE  THE  DRIVE  ASSIGNED TO
/  BE CLUSTERED  AND  FORMATTED. IDE50 REQUIRES THE DRIVE TO
/  BE CLUSTERED.
/ 
/------------------PARAMETER DESCRIPTION--------------------
/ 
/         THE FOLLOWING PARAMETERS ARE USED BY IDE
/ 
/  P0 - XXXX - DATA PATTERN TO BE USED BY IDE09, IDE11
/       0000 - USE RANDOM DATA PATTERNS (DEFAULT) 
/ 
/  P1 - XXXX - CYLINDER TO BE USED FOR DATA TESTING (IDE11) 
/              VALID ENTRIES
/ 
/              0000 THROUGH 2619(D) 
/ 
/  P2 - 00XX - TRACK TO BE USED FOR DATA TESTING (IDE11)
/              VALID ENTRIES
/ 
/              0000 THROUGH 0008(D) 
/ 
/  P3 - 00XX - SECTOR TO BE USED FOR DATA TESTING (IDE11) 
/              VALID ENTRIES
/ 
/              1X AND 1XP 
/              0000 THROUGH 0017(D) 
/ 
/              2X AND 4X
/              0000 THROUGH 0034(D) 
/ 
/              3XP
/              0000 THROUGH 0026(D) 
/ 
/  P4 - 00XX - CONTROLLER IN-LINE DIAGNOSTIC TEST (IDE01) 
/              VALID ENTRIES ARE 1 - 56(D)
/ 
/  P5 - 00XX - NUMBER OF 128(D) BYTE BLOCKS TO DISPLAY FROM 
/              CONTROLLER PERFORMANCE LOG (IDE30) 
/              VALID ENTRIES 0 - 32(D)
/ 
/  P6 - XXXX - STARTING ADDRESS OF CONTROLLER PERFORMANCE 
/              LOG TO DISPLAY DATA FROM (IDE30) 
/              VALID ENTRIES 0 - 4095(D)
/ 
/  P7 - 00XX - PHYSICAL DRIVE ADDRESS (IDE15) 
/              VALID ENTRIES 0 - 32(D)
/ 
/  P8 - 00XX - WHETHER TO PRINT OR DISPLAY DATA IN IDE30
/       0000 - PRINT DATA 
/       0001 - DISPLAY DATA 
/       0010 - PAUSE AFTER EACH DATA BLOCK IS DISPLAYED 
/ 
/  P9 - 00XX - SECTOR SIZE TO FORMAT IN IDE50 
/       0001 - 2K SECTOR SIZE 
/       0002 - 4K SECTOR SIZE 
/       0004 - 8K SECTOR SIZE 
/       0010 - 16K SECTOR SIZE
/ 
/  P9 - 00XX - WHETHER TO SLAVE RESET OR NOT IN IDE70 
/       0000 - DO NOT SLAVE RESET 
/       0001 - SLAVE RESET AFTER RES CH 
/       0010 - SKIP RES CH AND SLAVE RESET CONTROLLER 
/ 
1  END 1
COMPILE,SOURCE                *IDE99 - PARAMETER DESCRIPTION
*IF DEF,MVE,1 
   MODULE IDE99A,DDAS(142,143,144,145,146)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDE99A,DDAS(142,143)LOCK,16BIT
***       IDE99A - MODULE DESCRIPTIONS
**
* 
/        MODULE     MODULE NAME AND         ACCESS    RUN 
/        NUMBER       DESCRIPTION           LEVEL     TIME
/        ------     ---------------         ------    ----
/ 
/          00       CM DIAGNOSTICS             3     73 SEC.
/          01       ONES AND ZEROS TEST        3      7 SEC.
/          03       ALTERNATING ONES TEST      3      7 SEC.
/          05       SLIDING ZEROS TEST         3     16 SEC.
/          07       SLIDING ONES TEST          3     16 SEC.
/          08       ADDRESS TEST               3      7 SEC.
/          09       RANDOM DATA TEST           3      7 SEC.
/          11       ANY SECTOR TEST            4      7 SEC.
/          13       DRIVE DIAGS. (LOGICAL)     3     14 SEC.
/          15       DRIVE DIAGS. (PHYSICAL)    3     13 SEC.
/          30       READ CONTROLLER PERF. LOG  3     30 SEC.
/          31       DISPLAY DAS INFORMATION    3      7 SEC.
/          50       INITIAL FORMAT FACILITY   20     18 MIN.
/          70       SLAVE RESET CONTROLLER    20     12 MIN.
/ 
1  END 1
COMPILE,SOURCE                *IDE99A - MODULE DESCRIPTION
