*DECK,DTI 
***       DTI - ISD/895/DMA DATA PATH INTEGRITY TEST
*** 1.0   IDENTIFICATION
**
*   1.1   PROGRAM NAME
* 
*         DTI - ISD/895/DMA DATA PATH INTEGRITY TEST
* 
*   1.2   AUTHORS 
* 
*         R.D. SCHNEIDER          DATE JUNE 21, 1985
* 
*   1.3   AUTHORS OF MODIFICATIONS
* 
*         R.D. SCHNEIDER          DATE SEPTEMBER 27, 1985 
*         ADDED SUPPORT OF 895 DISK SUBSYSTEM 
* 
*         J.M. SKOWRONEK          DATE APRIL 23, 1986 
*         ADDED SUPPORT OF DMA/895 DISK SUBSYSTEM 
* 
*   1.4   COPYRIGHT 
* 
*              COPYRIGHT CONTROL DATA CORPORATION, 1985.
*                        ALL RIGHTS RESERVED
* 
*         CONTAINED HEREIN ARE SOFTWARE PRODUCTS COPYRIGHTED BY CONTROL 
*         DATA CORPORATION.   REPRODUCTION  WITHOUT  PERMISSION IS PRO- 
*         HIBITED.   THE COPYRIGHT NOTICE MUST APPEAR ON ALL AUTHORIZED 
*         COMPLETE OR PARTIAL COPIES. 
* 
*** 2.0   INTRODUCTION
**
*   2.1   OVERVIEW
* 
*         DTI IS A DATA PATH INTEGRITY TEST FOR  THE  INTELLIGENT SMALL 
*         DISK SUBSYSTEMS, ISD I (834) AND ISD II (836),  AND  THE  895 
*         DISK SUBSYSTEM.  THE TEST RESIDES IN  A  PERIPHERAL PROCESSOR 
*         (PP) AND TESTS THE DATA PATH BETWEEN THE  PP  AND  THE  DISK. 
*         DTI IS USED TO ACQUIRE CONFIDENCE THAT THE DATA PATH  BETWEEN 
*         THE PP AND THE DISK IS FUNCTIONING. 
* 
*         IF DMA (DIRECT  MEMORY  ACCESS)  IS  PRESENT  THE  DATA  PATH 
*         BETWEEN CM AND THE 895 SUBSYSTEM WILL ALSO BE TESTED.  DTI IS 
*         USED TO AQUIRE CONFIDENCE THAT THE DATA PATH BETWEEN  THE  PP 
*         AND OR CM AND THE DISK IS FUNCTIONING.
* 
*   2.2   CHARACTERISTICS 
* 
*         1.  PROGRAM NAME......................................DTI 
*         2.  TEST/DIAG/UTILITY/SYSTEM.........................TEST 
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER............MALET 
*         4.  RUN TIME (DEFAULT)............................20 SEC. 
*         5.  RUN TIME/QUICK LOOK (DEFAULT).....................N/A 
*         6.  LEVEL OF ISOLATION..........................DETECTION 
*         7.  ON-LINE/OFF-LINE/BOTH............................BOTH 
*         8.  ON-LINE SYSTEM....................................NOS 
*         9.  OFF-LINE SYSTEM.................................DEMOT 
*         10. PROGRAM LANGUAGE................................MALET 
*         11. SOURCE CODE MAINTENANCE........................UPDATE 
* 
*   2.3   FEATURES
* 
*         1.  DTI SUPPORTS DEVICE CODES FOR:  
*             834 DISK SYSTEM (ISD) 
*             836 DISK SYSTEM (ISD II)
*             895 DISK SYSTEM 
*             DMA WITH 895 DISK SYSTEM
* 
*   2.4   HARDWARE REQUIREMENTS 
* 
*         THIS TEST REQUIRES: 
*         1 - CYBER 170/180 
*         1 - ISD I OR ISD II DISK SUBSYSTEM
*             (ADAPTER, CONTROL MODULE, AND DRIVE)
*                   OR
*             895 DISK SUBSYSTEM
*                   OR
*             DMA WITH 895 DISK SYSTEM
*             (CYBER CHANNEL COUPLER, STORAGE DIRECTOR, 33800 DRIVE)
* 
*   2.5   RESTRICTIONS
* 
*         1.  DTI REQUIRES THAT THE CONTROLWARE FOR THE ADAPTER AND THE 
*             COMMAND OPERATING SYSTEM (COS) FOR THE CONTROL MODULE  BE 
*             LOADED AND RUNNING PRIOR TO EXECUTION.  IF AN  895 SYSTEM 
*             IS TO BE TESTED, THE 895 CONTROLWARE MUST  BE  LOADED AND 
*             RUNNING IN THE CYBER CHANNEL COUPLER. 
* 
*         2.  EXECUTION OF MODULE DTI11 REQUIRES AN ACCESS LEVEL OF  AT 
*             LEAST 4.
* 
*         3.  DTI IS NOT INTENDED  TO  TEST THE INTEGRITY  OF  THE DISK 
*             SURFACE.
* 
*         4.  MODULE DTI11 IS NOT EXECUTABLE ON THE 895 DISK SUBSYSTEM. 
* 
*         5.  FOR DTI  TO  EXECUTE  PROPERLY  ON  AN  895  DISK SYSTEM, 
*             THE DRIVE UNDER TEST MUST HAVE CYLINDER 885D (1565B) FOR- 
*             MATTED IN THE 483D BYTE RECORD LENGTH.
* 
*         6.  MODULE DTI00 DOES NOT EXECUTE ON AN  895  DISK SUBSYSTEM. 
*             HOWEVER IF DC  OF 115 IS SELECTED MODULE DTI00 WILL ISSUE 
*             THE MESSAGE  DTI00  NOT  EXECUTED  ON  895 DC=115 WILL BE 
*             POSTED TO THE DISPLAY AND PRINT THEN THE MODULE WILL EXIT 
*             TO DTI01. 
* 
*         7.  EXECUTION OF MODULES DTI13 AND DTI15 REQUIRE AN 895  DISK 
*             SUBSYSTEM WITH A DMA CHANNEL AND AN AL OF AT LEAST 3. 
*** 3.0   APPLICABLE DOCUMENTS
**
* 
*         MALET REFERENCE MANUAL                              60456020
*         CML REFERENCE MANUAL                                60455980
* 
*** 4.0   DESIGN OVERVIEW 
**
*   4.1   MODULES OVERVIEW
* 
*         DTI IS DIVIDED INTO TWO BASIC SECTIONS.   THE  FIRST  SECTION 
*         CONSISTS OF THE DEFAULT MODULES, DTI00 THROUGH DTI15.  MODULE 
*         DTI00  TESTS  THE DATA PATH FROM THE PP TO THE ADAPTER BUFFER 
*         BY WRITING 322D  16 BIT WORDS USING THE WRITECB COMMAND, THEN 
*         READING 322D 16 BIT  WORDS AND CHECKING THE DATA OF THE FIRST 
*         161D 16 BIT WORDS FOR ACCURACY.  THE REST OF THE MODULES TEST 
*         THE DATA PATH  BETWEEN THE PP/CM AND THE DISK BY WRITING DATA 
*         TO THE PREALLOCATED AREA,  THEN READING THE DATA AND  TESTING 
*         THE DATA FOR ACCURACY.
* 
*         MODULES DTI01 THROUGH DTI07 PERFORM THIS TEST  USING  SIXTEEN 
*         PRESELECTED DATA PATTERNS,  WRITING EACH PATTERN  TO THE DISK 
*         TEN TIMES. MODULE DTI09 THEN PERFORMS THE TEST USING EITHER A 
*         RANDOM DATA PATTERN (BY DEFAULT) OR A  PATTERN  SPECIFIED  BY 
*         THE USER IN PARAMETER  P0  (IF NON-ZERO).   THIS  PATTERN  IS 
*         ALSO WRITTEN TO THE DISK TEN TIMES. 
* 
*         MODULES DTI13 AND DTI15 PERFORM A DATA PATH  TEST  USING  THE 
*         DMA/895 DISK SUBSYSTEM.  FOUR PRESELECTED  DATA PATTERNS  ARE 
*         USED, WRITING AND READING EACH PATTERN TO THE DISK 10 TIMES.
* 
*         THE SECOND SECTION OF THE TEST CONSISTS OF MODULE DTI11. THIS 
*         MODULE, WHICH IS NOT INCLUDED IN THE DEFAULT  TEST  SEQUENCE, 
*         ALLOWS THE USER TO SELECT ANY SECTOR ON THE DISK FOR  USE  IN 
*         THE DATA TESTING, IN ADDITION TO ALLOWING THE SELECTION  OF A 
*         DATA PATTERN TO BE USED.  THIS MODULE WILL NOT EXECUTE ON THE 
*         895 DISK SUBSYSTEM. 
* 
* 
*                                                ACCESS      RUN
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         DTI00       WRITE/READ ADAPTER BUFFER     3       2 SEC.
* 
*         MODULES DTI01 THROUGH DTI09 PERFORM DEFAULT DATA TESTING FROM 
*         AND TO THE PPU AND THE DISK SUBSYSTEM.
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         DTI01       ONES AND ZEROS TEST           3       2 SEC.
*         DTI03       ALTERNATING ONES TEST         3       2 SEC.
*         DTI05       SLIDING ZEROS TEST            3       3 SEC.
*         DTI07       SLIDING ONES TEST             3       3 SEC.
*         DTI09       RANDOM DATA TEST              3       1 SEC.
* 
*         MODULE DTI11 ALLOWS THE USER TO CHOOSE ANY DISK SECTOR FOR
*         DATA TESTING, AND CHECKS  FOR  VALID PARAMETER ENTRIES.  THIS 
*         MODULE CANNOT BE EXECUTED ON THE 895 DISK SUBSYSTEM.
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         DTI11       ANY SECTOR TEST               4       1 SEC.
* 
*         MODULES DTI13 THROUGH DTI15 PERFORM DEFAULT DATA TESTING FROM 
*         AND TO CM AND AN 895 DISK SUBSYSTEM.
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         DTI13       ONES AND ZEROS TEST (DMA)     3       2 SEC.
*         DTI15       ALTERNATING ONES TEST (DMA)   3       2 SEC.
* 
*   4.2   EXECUTION SEQUENCE
* 
*         DTI MODULES ARE INDEPENDENT, AND EXECUTION OF ONE  MODULE  IS 
*         NOT DEPENDENT ON EXECUTION OF ANOTHER.
* 
*         BY DEFAULT, MODULES DTI00 THROUGH 09 WILL EXECUTE  IN  ORDER
*         FOLLOWED BY DTI13 AND DTI15.
*         MODULE DTI11 IS A STAND ALONE MODULE, AND WILL  ONLY  EXECUTE 
*         UPON A  *RUN, DTI11*  COMMAND.
* 
*** 5.0   PARAMETERS
**
*   5.1   PARAMETER REGISTER DEFINITION 
* 
*         THE FOLLOWING PARAMETERS ARE USED BY DTI: 
*              (ALL PARAMETER VALUES ARE OCTAL) 
* 
*         P0 - XXXX - DATA PATTERN TO BE USED BY DTI09, DTI11 
*              0000 - USE RANDOM DATA PATTERNS (DEFAULT)
* 
*         P1 - XXXX - CYLINDER TO BE USED FOR DATA TESTING (DTI11)
*                     VALID ENTRIES:  
*                     0000 THROUGH 1460 FOR 834 (ISD) 
*                     0000 THROUGH 1274 FOR 836 (ISD II)
*                     UNUSED ON 895 DISK SUBSYSTEM
* 
*         P2 - 00XX - TRACK TO BE USED FOR DATA TESTING (DTI11) 
*                     VALID ENTRIES:  
*                     0000 THROUGH 0011 FOR 834 (ISD) 
*                     0000 THROUGH 0027 FOR 836 (ISD II)
*                     UNUSED ON 895 DISK SUBSYSTEM
* 
*         P3 - 00XX - SECTOR TO BE USED FOR DATA TESTING (DTI11)
*                     VALID ENTRIES:  
*                     0000 THROUGH 0037 FOR 834 (ISD) 
*                     0000 THROUGH 0056 FOR 836 (ISD II)
*                     UNUSED ON 895 DISK SUBSYSTEM
* 
*         P4 - 0000 - USE 60 BIT CM WORD FORMAT FOR DMA TRANSFERS.
*              XXXX - IF NON-ZERO USE 64 BIT CM WORD FORMAT FOR DMA 
*                     TRANSFERS.
* 
*         P5 - P9 -   NOT USED
* 
*   5.2   PARAMETER REGISTER USAGE
* 
*         MODULE      P0  P1  P2  P3  P4  P5  P6  P7  P8  P9
*         ------      --  --  --  --  --  --  --  --  --  --
*         DTI00 
*         DTI01 
*         DTI03 
*         DTI05 
*         DTI07 
*         DTI09       X 
*         DTI11       X   X   X   X 
*         DTI13                       X 
*         DTI15                       X 
* 
*** 6.0   PROGRAM USE 
**
*   6.1   TESTING 
* 
*         DTI  HAS BEEN  DESIGNED FOR USE  AS  A  SUBSYSTEM  DATA  PATH 
*         INTEGRITY TEST, TRANSFERRING DATA BETWEEN THE HOST PP AND THE 
*         ADAPTER BUFFER, AND TRANSFERRING DATA BETWEEN THE HOST PP  OR 
*         CM  AND  THE DISK.  IN DEFAULT MODE, THE TESTS OPERATE IN THE 
*         PRE- ALLOCATED AREA OF THE DISK.
* 
*         WHEN EXECUTED ON AN 895 DISK SUBSYSTEM,  DTI  WRITES  TO  AND 
*         READS FROM CYLINDER 885D (1565B).   THIS  REQUIRES  THAT  THE 
*         CYLINDER BE FORMATTED IN  THE  483D BYTE RECORD LENGTH.   ONE 
*         SECTOR OF DATA IS  TRANSFERRED  TO  AND  FROM CYLINDER  885D, 
*         TRACK 2, SECTOR 0.
* 
*         TO EXECUTE THE TEST,  THE USER ASSIGNS  THE  DEVICE  WITH  AN 
*         ACCESS LEVEL OF  3  (READ  AND WRITE PREALLOCATED AREA ONLY). 
*         A  *RUN, DTI*  COMMAND MUST BE PERFORMED  AND  MODULES  DTI00 
*         THROUGH DTI09 WILL BE EXECUTED IN NUMERICAL ORDER,   FOLLOWED 
*         BY DTI13 AND DTI15.  TESTING WILL TERMINATE WHEN MODULE DTI09 
*         OR DTI15 COMPLETES EXECUTION DEPENDENT ON AVAILABILITY OF DMA 
*         WITH AN 895 DISK SUBSYSTEM. 
* 
*         ALL DTI MODULES SUPPORT THE MALET REPEAT MODULE CONDITION.
* 
*   6.2   PARAMETER DRIVEN MODULES
* 
*         DTI CONTAINS FOUR MODULES WHICH MAKE USE OF USER SPECIFIED
*         PARAMETERS. 
* 
*         MODULE DTI09 WILL CHECK PARAMETER P0.   IF P0 IS ZERO (0000), 
*         THE MODULE WILL EXECUTE IN ITS  DEFAULT  CONFIGURATION,  WITH 
*         RANDOM DATA PATTERNS BEING USED FOR DATA TESTING.   IF P0  IS 
*         NON-ZERO,  THE CONTENTS OF P0 WILL BE USED AS THE PATTERN FOR 
*         DATA TESTING.  THE PATTERN SPECIFIED BY P0 WILL BE WRITTEN TO 
*         AND READ FROM THE DISK TEN (10D) TIMES. 
* 
*         MODULE DTI11 USES PARAMETER P0 IN THE SAME WAY, BUT 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 
*         AN ACCESS LEVEL OF 4 IS REQUIRED TO EXECUTE MODULE DTI11. 
*         MODULE DTI11 REQUIRES PARAMETER ENTRIES  P1, P2,  AND  P3  TO 
*         DETERMINE THE  CYLINDER,  TRACK,  AND  SECTOR TO BE USED  FOR 
*         TESTING.
* 
*         MODULES DTI13 AND DTI15 USE P4 FOR SELECTION OF THE CM WORD 
*         FORMAT TO BE USED FOR DMA TRANSFERS.  IF P4 EQUALS ZERO, 60 
*         BIT CM WORD FORMAT IS USED.  IF P4 IS NON-ZERO, 64 BIT CM 
*         WORD FORMAT IS USED.
*** 7.0   MESSAGES
**
*   7.1   NORMAL MESSAGES 
* 
*         1. DTINN -  MODULE NAME 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.
* 
*   7.2   ERROR FORMAT
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY DTI TO REPORT PRODUCT 
*         OVERLAY ERRORS TO THE USER WHEN TESTING THE DISK DATA PATH. 
* 
*         00  DTI - ISD/895 DATA PATH INTEGRITY TEST
*         01  DTINN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB
*         05  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         06  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         07  IB (0-7)  IIII IIII IIII IIII IIII IIII IIII IIII 
*         10  OB (0-7)  OOOO OOOO OOOO OOOO OOOO OOOO OOOO OOOO 
*         11
*         12                  GENERAL STATUS
*         13        LAST = SSSSB      FIRST = TTTTB 
*         14               DETAILED STATUS  (OCTAL) 
*         15   1D = NNNN    6D = NNNN   11D = NNNN   16D = NNNN 
*         16   2D = NNNN    7D = NNNN   12D = NNNN   17D = NNNN 
*         17   3D = NNNN    8D = NNNN   13D = NNNN   18D = NNNN 
*         20   4D = NNNN    9D = NNNN   14D = NNNN   19D = NNNN 
*         21   5D = NNNN   10D = NNNN   15D = NNNN   20D = NNNN 
*         22
* 
*         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.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM.
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         BBBB  = CONTENTS OF B REGISTER. 
*         SSSS  = LAST GENERAL STATUS OBTAINED FROM SUBSYSTEM.
*         IIII  = CONTENTS OF INPUT BUFFER WORD.
*         OOOO  = CONTENTS OF OUTPUT BUFFER WORD. 
*         TTTT  = FIRST GENERAL STATUS OBTAINED FROM SUBSYSTEM IF 
*                 IN ERROR RECOVERY.
*         NNNN  = DETAILED STATUS WORD. 
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY DTI TO REPORT PRODUCT 
*         OVERLAY ERRORS TO THE USER WHEN TESTING THE DMA DATA PATH.
* 
*         00  DTI - ISD/895/DMA DATA PATH INTEGRITY TEST
*         01  DTINN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB
*         05  NUMBER OF CM BYTES TRANSFERED = TTTTB 
*         06  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         07  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10  IB (0-7)  IIII IIII IIII IIII IIII IIII IIII IIII 
*         11  OB (0-7)  OOOO OOOO OOOO OOOO OOOO OOOO OOOO OOOO 
*         12  ERR STAT = EEEEEEEEB  OPERATION STAT = OOOOOOOOB
*         13                  GENERAL STATUS
*         14        LAST = SSSSB      FIRST = TTTTB 
*         15               DETAILED STATUS  (OCTAL) 
*         16   1D = NNNN    6D = NNNN   11D = NNNN   16D = NNNN 
*         17   2D = NNNN    7D = NNNN   12D = NNNN   17D = NNNN 
*         20   3D = NNNN    8D = NNNN   13D = NNNN   18D = NNNN 
*         21   4D = NNNN    9D = NNNN   14D = NNNN   19D = NNNN 
*         22   5D = NNNN   10D = NNNN   15D = NNNN   20D = NNNN 
*         23
* 
*         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.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*                 THE DMA FUNCTION WILL BE IN THE FORMAT OF 01XXB.
* 
*                 100B = DMA FUNCTION OF 8000H OR MASTER CLEAR. 
*                 101B = DMA FUNCTION OF 8200H OR CLEAR T REGISTERS 
*                 102B = DMA FUNCTION OF 8400H OR START DMA INPUT 
*                 103B = DMA FUNCTION OF 8600H OR START DMA OUTPUT
*                 104B = DMA FUNCTION OF 8800H OR CLEAR DMA MODE
*                 106B = DMA FUNCTION OF 8C00H OR CLEAR TEST MODE 
*                 107B = DMA FUNCTION OF 8C00H OR SET TEST MODE 
*                 110B = DMA FUNCTION OF 9000H OR READ CONTROL REGISTER 
*                 111B = DMA FUNCTION OF 9200H OR WRITE CONTROL REGISTER
*                 112B = DMA FUNCTION OF 9400H OR READ ERROR REGISTER 
*                 114B = DMA FUNCTION OF 9800H OR READ OPER REGISTER
*                 116B = DMA FUNCTION OF 9C00H OR READ T REGISTER 
*                 117B = DMA FUNCTION OF 9E00H OR WRITE T PRIME REGISTER
* 
*         WWWW  = WORDS TRANSFERRED DURING LAST PP DATA TRANSFER. 
*         TTTT  = 8 BIT BYTES TRANSFERRED DURING LAST DMA DATA TRANSFER.
*         BBBB  = CONTENTS OF B REGISTER. 
*         EEEEEEEE  = LAST ERROR STATUS OBTAINED FROM THE DMA.
*         OOOOOOOO  = LAST OPERATION STATUS OBTAINED FROM THE DMA.
*         SSSS  = LAST GENERAL STATUS OBTAINED FROM SUBSYSTEM.
*         IIII  = CONTENTS OF INPUT BUFFER WORD.
*         OOOO  = CONTENTS OF OUTPUT BUFFER WORD. 
*         TTTT  = FIRST GENERAL STATUS OBTAINED FROM SUBSYSTEM IF 
*                 IN ERROR RECOVERY.
*         NNNN  = DETAILED STATUS WORD. 
* 
* 
*         THE  FOLLOWING DISPLAY FORMAT IS USED BY DTI TO REPORT DISK 
*         READ/WRITE (PPU) DATA COMPARE ERRORS TO THE USER. 
* 
*         00  DTI - ISD/895 DATA PATH INTEGRITY TEST
*         01  DTINN - (M-----------------------T) 
*         02
*         03  ABORTED ON DATA COMPARE ERROR 
*         04          WORD  MMMMB 
*         05
*         06  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB
*         07
*         10  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         11  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         12
*         13  IB (0-7)  IIII IIII IIII IIII IIII IIII IIII IIII 
*         14  OB (0-7)  OOOO OOOO OOOO OOOO OOOO OOOO OOOO OOOO 
*         15
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         MMMM  = WORD OF SECTOR AT WHICH ERROR OCCURRED. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM.
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         OOOO  = CONTENTS OF OUTPUT BUFFER WORD. 
*         IIII  = CONTENTS OF INPUT BUFFER WORD.
*         BBBB  = CONTENTS OF B REGISTER. 
* 
* 
*         THE  FOLLOWING DISPLAY FORMAT IS USED BY DTI TO REPORT DISK 
*         READ/WRITE (CM) DATA COMPARE ERRORS TO THE USER.
* 
*         00  DTI - ISD/895/DMA DATA PATH INTEGRITY TEST
*         01  DTINN - (M-----------------------T) 
*         02
*         03  ABORTED ON DATA COMPARE ERROR 
*         04          WORD  MMMMB 
*         05
*         06  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB
*         07
*         10  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         11  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         12
*         13  IB (0-7)  IIII IIII IIII IIII IIII IIII IIII IIII 
*         14  OB (0-7)  OOOO OOOO OOOO OOOO OOOO OOOO OOOO OOOO 
*         15
*         16  ERR STAT = EEEEEEEEB  OPERATION STAT = OOOOOOOOB
*         17
* 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         MMMM  = WORD OF SECTOR AT WHICH ERROR OCCURRED. 
*         OOOO  = CONTENTS OF OUTPUT BUFFER WORD. 
*         IIII  = CONTENTS OF INPUT BUFFER WORD.
*         BBBB  = CONTENTS OF B REGISTER. 
*         EEEEEEEE  = LAST ERROR STATUS OBTAINED FROM THE DMA.
*         OOOOOOOO  = LAST OPERATION STATUS OBTAINED FROM THE DMA.
* 
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  DTI  TO  REPORT 
*         PARAMETER ENTRY ERRORS TO THE USER. 
* 
*         00  DTI - ISD/895 DATA PATH INTEGRITY TEST
*         01  DTINN - (M-----------------------T) 
*         02
*         03  DTINN SUSPECTED PARAMETER ERROR  (OCTAL)
*         04  (E----------------D)
*         05
*         06  P0 - P4  PPPP PPPP PPPP PPPP PPPP 
*         07  P5 - P9  PPPP PPPP PPPP PPPP PPPP 
*         10
*         11  PARAMETERS DESCRIBED IN MODULE DTI99
*         12
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         E---D = DESCRIPTION OF THE ERROR. 
*         PPPP  = CONTENTS OF THE PARAMETER WORD. 
*** 8.0   GLOSSARY
**
*   8.1   ABBREVIATIONS 
* 
*         CML     - CONCURRENT MAINTENANCE LIBRARY
*         CVL     - CUSTOMER ENGINEERING VALIDATION 
*         DTI     - DATA PATH TEST FOR ISD/895 SUBSYSTEMS 
*         DMA     - DIRECT MEMORY ACCESS
*         ERS     - EXTERNAL REFERENCE SPECIFICATION
*         ISD     - INTELLIGENT SMALL DISK
*         MALET   - MAINTENANCE APPLICATION LANGUAGE FOR EQUIPMENT
*                   TESTING 
*         PP      - PERIPHERAL PROCESSOR
*         SPEC    - SPECIFICATION 
* 
* 
* 
   MODULE DTI00,FSD2(110,111,115),LOCK
***  DTI00 - WRITE/READ ADAPTER BUFFER TEST 
**
* 
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1   PURPOSE- 
* 
*         DTI00 WILL  TEST THAT THE CHANNEL IS CAPABLE OF WRITING AND 
*         READING DATA  FROM THE ADAPTER BUFFER. MULTIPLE WRITE/READS 
*         ARE PERFORMED USING KNOWN DATA PATTERNS TO DETECT SOLID BIT 
*         FAILURES. A VARIETY OF DATA PATTERNS IS USED TO VERIFY THAT 
*         THE ADAPTER  BUFFER AND CHANNEL ARE STABLE. ALL 16 BITS ARE 
*         CHECKED.  PACKING  OF TWO 8 BIT BYTES TO ONE 16 BIT WORD TO 
*         TRANSFER IS DONE IN  THE WRITECB ROUTINE, AND UNPACKING THE 
*         16 BIT TO TWO 8 BIT WORDS IS DONE IN THE READCB ROUTINE.
* 
*    1.2  METHOD -
* 
*         1.  IF ACCESS LEVEL IS LESS THAN 3, OR IF DC EQ TO 115 EXIT 
*             TO NEXT MODULE AFTER POSTING MESSAGE MODULE NOT RUN.
*         2.  RESERVE ADAPTER.
*         3.  WRITE THE ADAPTER BUFFER WITH A GIVEN PATTERN.
*         4.  READ THE ADAPTER BUFFER AND COMPARE THE DATA TW0 TIMES. 
*         5.  THE ABOVE SEQUENCE IS EXECUTED WITH A 0000H, AAAAH, 5555H 
*             FFFFH AND 20 RANDOM DATA PATTERNS.
*         6.  REPEAT MODULE LOOPS ON STEPS 1-5. 
* 
*    1.3  ERRORS REPORTED 
* 
*         DTI00 ERROR(S) = *DECD
*         DTI00 NOT EXECUTED ON 895 DC=115
*         DTI00 AL TOO LOW NEEDS AL=3 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         THE 7255 CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B2  = RANDOM PATTERN COUNTER. 
*         B3  = EXTERNAL LOOP COUNTER 
*         B10 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         DTI98A - PROCESS PRODUCT OVERLAY ERRORS.
*         DTI98F - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
*         IF RM IS SELECTED, 20D DIFFERENT RANDOM DATA PATTERNS ARE 
*         USED EACH PASS OF THE MODULE. 
* 
*------------------DATA DIVISION----------------------------
* 
* 
0  FORMAT DTI00 - WRITE/READ ADAPTER BUFFER 
1  FORMAT DTI00 ERROR(S) = *DECD
3  FORMAT DTI00 WRITECB/READCB LC=*DECD 
4  FORMAT DTI00 EC=*DECD, LC=*DECD
5  FORMAT DTI00 NOT EXECUTED ON 895 DC=115
6  FORMAT DTI00 ACCESS LEVEL TOO LOW NEEDS AL=3 
* 
   EQUATE BUFL TO 502B           *BUFFER LENGTH EQUATE
* 
*------------------MODULE INITIALIZATION--------------------
* 
20 B15 = 11D                     *MODULE NUMBER 
   MSG 0 TO PRINT,DISPLAY        *PRINT,DISPLAY MODULE TITLE
   B5 = 5 
   IF (DC.EQ.115B) GOTO 21       *POST MESSAGE AND EXIT 
   B5 = 6 
   IF (AL.GE.3) GOTO 22          *CONTINUE
21 MSG B5 TO DISPLAY, PRINT      *POST ERROR MESSAGE
   GOTO 52                       *EXIT
22 B3 = 0                        *SET EXTERNAL LOOP COUNTER 
   B5 = 0                        *RESET TEMP REG
   B13 = 0                       *CLEAR ERROR COUNTER 
   B0 = 0                        *INITIALIZE EXT. LOOP COUNT
* 
*------------------MODULE TEST------------------------------
* 
24 B2 = 0                        *ZERO RANDOM PATT COUNTER
   DUP 0 TO OB FOR BUFL          *WRITE ZEROS INTO OB 
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE
   DUP 252B TO OB FOR BUFL       *WRITE AAAAH PATTERN IN OB 
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE
   DUP 125B TO OB FOR BUFL       *WRITE 5555H PATTERN IN OB 
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE
   DUP 377B TO OB FOR BUFL       *WRITE FFFFH PATTERN IN OB 
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE
26 RANDOM TO OB FOR BUFL, START RT  *WRITE RANDOM PATT IN OB
   GOSUB 30                      *GOTO WRITE/READ SUBROUTINE
   GOTO 26 WHILE(B2+1.LT.20D)    *REPEAT 20D TIMES
* 
*------------------MODULE REPEAT/EXIT-----------------------
* 
50 B0 = B0+1                     *INCREMENT EXT. LOOP COUNT 
   IF(ES.AND.RM.EQ.0) GOTO 52    *IF NO REPEAT MODULE 
   MSG 4(B13,B0) TO DISPLAY      *DISPLAY ERROR,LOOP COUNT
   GOTO 24
52 IF(B13.EQ.0) EXIT             *IF NO ERRORS
   MSG 1 (B13) TO DAYFILE,PRINT  *POST ERROR COUNT TO PRINT 
   EXIT                          *AND DAYFILE 
* 
*------------------SUBROUTINE PROCESS-----------------------
* 
30 B10 = 0                       *INITIALIZE INT. LOOP COUNT
   WC = BUFL                     *SET WC FOR 502B 
   B14 = 03B                     *RES ADAPTER FLAG
   RES ADAPT, ABT 74
   IF(ES.AND.RM.EQ.0) MSG 3 (B3) TO DISPLAY  *IF NO RM
   B14 = 06B                     *WRITECB FLAG
   WRITECB, ABT 74               *WRITE ADAPTER BUFFER
32 B14 = 07B                     *READCB FLAG 
   READCB, ABT 74                *READ ADAPTER BUFFER 
   B14 = 27B                     *COMPARE FLAG
   COMPARE IB TO OB FOR WC, ABT 70
   GOTO 32 WHILE(B10+1.LT.2D)    *LOOP 2D TIMES 
   B3 = B3 + 1                   *INCR. EXT. LOOP COUNTER 
34 RETURN 
* 
*------------------PROCESS MODULE DETECTED ERRORS-----------
* 
70 MSG 0 TO LINE 1               *DISPLAY MODULE TITLE
   BA = WC                       *SET BA FOR COMPARE ERROR
   CALL 98F                      *CALL MODULE ERROR PROCESSOR 
   GOTO 34 WHILE (B13+1.LE.2)    *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) GOTO 34    *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
* 
*------------------PROCESS COMMAND ABORTS-------------------
* 
74 MSG 0 TO LINE 1               *DISPLAY MODULE TITLE
   CALL 98A                      *CALL COMMAND ABORT PROCESSOR
   GOTO 34 WHILE (B13+1.LE.2)    *IF ERROR COUNT.LE.2-CONTINUE
   IF(ES.AND.RM.NE.0) RETURN     *IF REPEAT MODULE
   ENDSUB GOTO 50                *ELSE, EXIT
   END 20 
COMPILE                     *DTI00 WRITE/READ ADAPTER BUFFER
   MODULE DTI01,FSD2(110,111,115)LOCK 
***       DTI01 - 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. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE 7777 OCTAL. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE BUFFER (502B WORDS) TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS 3 THROUGH  6  UNTIL PATTERN HAS BEEN WRITTEN 
*             TEN TIMES.
*         8.  REPEAT STEPS  2  THROUGH  7  USING A DATA PATTERN OF  ALL 
*             ZEROS.
*         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 DISPLAY, PRINT, AND DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DTI01 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         B15 REGISTER CONTAINS THE MODULE NUMBER 
* 
*    2.2  REGISTERS USED
* 
*         B0  - CONDITION NUMBER
*         B1  - LOOP COUNTER
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (502B) 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
*         OB(502) TO OB(503) - DATA PATTERNS
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98A - PROCESS PRODUCT OVERLAY ERRORS.
*         DTI98C - PROCESS DATA COMPARE ERRORS. 
* 
*------------------DATA DIVISION----------------------------
* 
0  FORMAT DTI01 - ONES AND ZEROS TEST 
2  FORMAT DTI01  ERROR(S) = *DECD 
* 
   DATA (OB(502),CON) 7777,0000         *DATA PATTERNS
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CWRITE=5, PRECYL=1457, PRECYL2=1273, PRECYL8=1565 
* 
*------------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B0=0                       *CONDITION NUMBER 
   B2=PRECYL                  *PREALLOC. CYL, ISD 
   IF (DC.EQ.111) B2=PRECYL2  *PREALLOC. CYL, ISD II
   IF (DC.EQ.115) B2=PRECYL8  *PREALLOC. CYL, 895 
   B5=502B                    *SECTOR SIZE
   B13=0                      *ERROR COUNT
   B15=1                      *MODULE NUMBER
* 
*------------------TEST-------------------------------------
* 
30 B1=0                       *INITIALIZE LOOP COUNTER
   DUP OB(B0+502B) TO OB(0) FOR B5    *GENERATE PATTERN 
   IF (DC.EQ.115) B3=2        *USE TRK 2 FOR 895
32 B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70     *WRITE SECTOR 
   B14=CREAD
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *READ SECTOR
* 
*---------CHECK DATA READ 
* 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60     *COMPARE DATA
   GOTO 32 WHILE (B1+1.LT.10D)  *WRITE PATTERN 10D TIMES
* 
   GOTO 30 WHILE (B0+1.LT.2)  *NEXT CONDITION 
* 
   GOTO 77                    *EXIT MODULE
* 
*---------PROCESS COMPARE ERRORS
* 
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 
* 
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   GOTO 40                    *CONTINUE COMPARE 
* 
*---------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
* 
*---------EXIT THE MODULE 
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *DTI01 - ONES AND ZEROS TEST
   MODULE DTI03,FSD2(110,111,115)LOCK 
***       DTI03 - 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  ALTERNATING  ONES  AND  ZEROS 
*         (5252 AND 2525 OCTAL).
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE 5252 OCTAL. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE BUFFER (502B WORDS) TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS 3 THROUGH  6  UNTIL PATTERN HAS BEEN WRITTEN 
*             TEN TIMES.
*         8.  REPEAT STEPS  2  THROUGH  7  USING A DATA PATTERN OF 2525 
*             OCTAL.
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DTI03 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         B15 REGISTER CONTAINS THE MODULE NUMBER 
* 
*    2.2  REGISTERS USED
* 
*         B0  - CONDITION NUMBER
*         B1  - LOOP COUNTER
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (502B) 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
*         OB(502) TO OB(503) - DATA PATTERNS
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98A - PROCESS PRODUCT OVERLAY ERRORS.
*         DTI98C - PROCESS DATA COMPARE ERRORS. 
* 
*------------------DATA DIVISION----------------------------
* 
0  FORMAT DTI03 - ALTERNATING ONES TEST 
2  FORMAT DTI03  ERROR(S) = *DECD 
* 
   DATA (OB(502),CON) 5252,2525         *DATA PATTERNS
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CWRITE=5, PRECYL=1457, PRECYL2=1273, PRECYL8=1565 
* 
*------------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B0=0                       *CONDITION NUMBER 
   B2=PRECYL                  *PREALLOC. CYL, ISD 
   IF (DC.EQ.111) B2=PRECYL2  *PREALLOC. CYL, ISD II
   IF (DC.EQ.115) B2=PRECYL8  *PREALLOC. CYL, 895 
   B5=502B                    *SECTOR SIZE
   B13=0                      *ERROR COUNT
   B15=3                      *MODULE NUMBER
* 
*------------------TEST-------------------------------------
* 
30 B1=0                       *INITIALIZE LOOP COUNTER
   DUP OB(B0+502B) TO OB(0) FOR B5    *GENERATE PATTERN 
   IF (DC.EQ.115) B3=2        *USE TRK 2 FOR 895
32 B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70     *WRITE SECTOR 
   B14=CREAD
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *READ SECTOR
* 
*---------CHECK DATA READ 
* 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60     *COMPARE DATA
   GOTO 32 WHILE (B1+1.LT.10D)  *WRITE PATTERN 10D TIMES
* 
   GOTO 30 WHILE (B0+1.LT.2)  *NEXT CONDITION 
* 
   GOTO 77                    *EXIT MODULE
* 
*---------PROCESS COMPARE ERRORS
* 
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 
* 
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   GOTO 40                    *CONTINUE COMPARE 
* 
*---------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
* 
*---------EXIT THE MODULE 
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *DTI03 - ALTERNATING ONES TEST
   MODULE DTI05,FSD2(110,111,115)LOCK 
***       DTI05 - SLIDING ZEROS TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING A SIX BIT SLIDING ZERO DATA PATTERN (7676, 7575,
*         7373, 6767, 5757, AND 3737 OCTAL).
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE 7676 OCTAL. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE BUFFER (502B WORDS) TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS 3 THROUGH  6  UNTIL PATTERN HAS BEEN WRITTEN 
*             TEN TIMES.
*         8.  REPEAT STEPS  2  THROUGH  7  USING DATA PATTERNS OF 7575, 
*             7373, 6767, 5757, AND 3737 OCTAL. 
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DTI05 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         B15 REGISTER CONTAINS THE MODULE NUMBER 
* 
*    2.2  REGISTERS USED
* 
*         B0  - CONDITION NUMBER
*         B1  - LOOP COUNTER
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (502B) 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
*         OB(502) - DATA PATTERN
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98A - PROCESS PRODUCT OVERLAY ERRORS.
*         DTI98C - PROCESS DATA COMPARE ERRORS. 
* 
*------------------DATA DIVISION----------------------------
* 
0  FORMAT DTI05 - SLIDING ZEROS TEST
2  FORMAT DTI05  ERROR(S) = *DECD 
* 
   DATA (OB(502),CON) 7676              *INITIAL DATA PATTERN 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CWRITE=5, PRECYL=1457, PRECYL2=1273, PRECYL8=1565 
* 
*------------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B0=0                       *CONDITION NUMBER 
   B2=PRECYL                  *PREALLOC. CYL, ISD 
   IF (DC.EQ.111) B2=PRECYL2  *PREALLOC. CYL, ISD II
   IF (DC.EQ.115) B2=PRECYL8  *PREALLOC. CYL, 895 
   B5=502B                    *SECTOR SIZE
   B13=0                      *ERROR COUNT
   B15=5                      *MODULE NUMBER
* 
*------------------TEST-------------------------------------
* 
30 B1=0                       *INITIALIZE LOOP COUNTER
   DUP OB(502B) TO OB(0) FOR B5    *GENERATE PATTERN
   IF (DC.EQ.115) B3=2        *USE TRK 2 FOR 895
32 B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70     *WRITE SECTOR 
   B14=CREAD
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *READ SECTOR
* 
*---------CHECK DATA READ 
* 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60     *COMPARE DATA
   GOTO 32 WHILE (B1+1.LT.10D)  *WRITE PATTERN 10D TIMES
* 
   OB(502)=OB(502).LS.1       *SHIFT IN NEW PATTERN 
   GOTO 30 WHILE (B0+1.LT.6)  *NEXT CONDITION 
* 
   GOTO 77                    *EXIT MODULE
* 
*---------PROCESS COMPARE ERRORS
* 
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 
* 
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   GOTO 40                    *CONTINUE COMPARE 
* 
*---------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
* 
*---------EXIT THE MODULE 
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *DTI05 - SLIDING ZEROS TEST 
   MODULE DTI07,FSD2(110,111,115)LOCK 
***       DTI07 - SLIDING ONES TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING A SIX BIT SLIDING ONE  DATA PATTERN (0101, 0202,
*         0404, 1010, 2020, AND 4040 OCTAL).
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE 0101 OCTAL. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE BUFFER (502B WORDS) TO THE DISK.
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS 3 THROUGH  6  UNTIL PATTERN HAS BEEN WRITTEN 
*             TEN TIMES.
*         8.  REPEAT STEPS  2  THROUGH  7  USING DATA PATTERNS OF 0202, 
*             0404, 1010, 2020, AND 4040 OCTAL. 
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DTI07 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         B15 REGISTER CONTAINS THE MODULE NUMBER 
* 
*    2.2  REGISTERS USED
* 
*         B0  - CONDITION NUMBER
*         B1  - LOOP COUNTER
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (502B) 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
*         OB(502) - DATA PATTERN
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98A - PROCESS PRODUCT OVERLAY ERRORS.
*         DTI98C - PROCESS DATA COMPARE ERRORS. 
* 
*------------------DATA DIVISION----------------------------
* 
0  FORMAT DTI07 - SLIDING ONES TEST 
2  FORMAT DTI07  ERROR(S) = *DECD 
* 
   DATA (OB(502),CON) 0101              *INITIAL DATA PATTERN 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CWRITE=5, PRECYL=1457, PRECYL2=1273, PRECYL8=1565 
* 
*------------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B0=0                       *CONDITION NUMBER 
   B2=PRECYL                  *PREALLOC. CYL, ISD 
   IF (DC.EQ.111) B2=PRECYL2  *PREALLOC. CYL, ISD II
   IF (DC.EQ.115) B2=PRECYL8  *PREALLOC. CYL, 895 
   B5=502B                    *SECTOR SIZE
   B13=0                      *ERROR COUNT
   B15=7                      *MODULE NUMBER
* 
*------------------TEST-------------------------------------
* 
30 B1=0                       *INITIALIZE LOOP COUNTER
   DUP OB(502B) TO OB(0) FOR B5    *GENERATE PATTERN
   IF (DC.EQ.115) B3=2        *USE TRK 2 FOR 895
32 B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70     *WRITE SECTOR 
   B14=CREAD
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *READ SECTOR
* 
*---------CHECK DATA READ 
* 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60     *COMPARE DATA
   GOTO 32 WHILE (B1+1.LT.10D)  *WRITE PATTERN 10D TIMES
* 
   OB(502)=OB(502).LS.1       *SHIFT IN NEW PATTERN 
   GOTO 30 WHILE (B0+1.LT.6)  *NEXT CONDITION 
* 
   GOTO 77                    *EXIT MODULE
* 
*---------PROCESS COMPARE ERRORS
* 
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 
* 
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   GOTO 40                    *CONTINUE COMPARE 
* 
*---------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
* 
*---------EXIT THE MODULE 
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *DTI07 - SLIDING ONES TEST
   MODULE DTI09,FSD2(110,111,115)LOCK 
***       DTI09 - 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 BUFFER (502B WORDS) 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 UNTIL PATTERN HAS  BEEN  WRITTEN 
*             TEN TIMES.
*         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 DISPLAY, PRINT, AND DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DTI09 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         B15 REGISTER CONTAINS THE MODULE NUMBER 
* 
*    2.2  REGISTERS USED
* 
*         B1  - LOOP COUNTER
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (502B) 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98A - PROCESS PRODUCT OVERLAY ERRORS.
*         DTI98C - PROCESS DATA COMPARE ERRORS. 
* 
*------------------DATA DIVISION----------------------------
* 
0  FORMAT DTI09 - RANDOM DATA TEST
2  FORMAT DTI09  ERROR(S) = *DECD 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CWRITE=5, PRECYL=1457, PRECYL2=1273, PRECYL8=1565 
* 
*------------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B0=0                       *CONDITION NUMBER 
   B2=PRECYL                  *PREALLOC. CYL, ISD 
   IF (DC.EQ.111) B2=PRECYL2  *PREALLOC. CYL, ISD II
   IF (DC.EQ.115) B2=PRECYL8  *PREALLOC. CYL, 895 
   B5=502B                    *SECTOR SIZE
   B13=0                      *ERROR COUNT
   B15=9D                     *MODULE NUMBER
* 
*------------------TEST-------------------------------------
* 
   B1=0                       *INITIALIZE LOOP COUNTER
   IF (DC.EQ.115) B3=2        *USE TRK 2 FOR 895
30 IF (P0.EQ.0) GOTO 31       *IF RANDOM PATTERNS 
   DUP P0 TO OB(0) FOR B5     *GENERATE USER PATTERN
   GOTO 32
* 
31 RANDOM TO OB(0) FOR B5     *GENERATE RANDOM PATTERN
32 B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70     *WRITE SECTOR 
   B14=CREAD
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *READ SECTOR
* 
*---------CHECK DATA READ 
* 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60     *COMPARE DATA
   GOTO 30 WHILE (B1+1.LT.10D)  *WRITE PATTERN 10D TIMES
* 
   GOTO 77                    *EXIT MODULE
* 
*---------PROCESS COMPARE ERRORS
* 
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 
* 
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   GOTO 40                    *CONTINUE COMPARE 
* 
*---------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
* 
*---------EXIT THE MODULE 
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   IF (DC.EQ.115) EXIT
   END 20 
COMPILE                       *DTI09 - RANDOM DATA TEST 
   MODULE DTI11,FSD2(110,111,115)LOCK 
***       DTI11 - ANY SECTOR TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE  ISD DISK SUBSYSTEM
*         TEN  TIMES USING EITHER  A  RANDOM DATA PATTERN  OR  A
*         USER SPECIFIED DATA PATTERN, WRITING  TO  AND  READING
*         FROM THE USER SPECIFIED DISK SECTOR.
* 
*         THIS MODULE WILL NOT EXECUTE ON AN 895 DISK SUBSYSTEM.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  MAKE SURE ACCESS LEVEL IS GREATER THAN 3. 
*         3.  VALIDATE PARAMETERS P1, P2, AND P3 FOR DEVICE ASSIGNED. 
*         4.  IF PARAMETER P0 EQUALS ZERO, OBTAIN A RANDOM NUMBER  SEED 
*             FROM THE REAL TIME CLOCK AND GENERATE RANDOM DATA BUFFER. 
*         5.  IF PARAMETER P0 IS NON-ZERO, GENERATE DATA  BUFFER  USING 
*             CONTENTS OF P0 AS THE DATA PATTERN. 
*         6.  RESERVE THE ASSIGNED ISD DRIVE. 
*         7.  WRITE THE BUFFER (502B WORDS)  TO  THE  ISD  AT  LOCATION 
*             SPECIFIED BY P1, P2, AND P3.
*         8.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         9.  CHECK THE DATA READ FROM THE ISD. 
*         10. REPEAT STEPS 4 THROUGH 9 UNTIL PATTERN HAS  BEEN  WRITTEN 
*             TEN TIMES.
*         11. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 10.
*         12. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         13. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DTI11 NOT EXECUTED   AL=*O  NEED  AL=4
*         DTI11 SUSPECTED PARAMETER ERROR  (OCTAL)
*         P1 - INVALID CYLINDER FOR ASSIGNED DEVICE 
*         P2 - INVALID TRACK FOR ASSIGNED DEVICE
*         P3 - INVALID SECTOR FOR ASSIGNED DEVICE 
*         P0 - P4  *OCT *OCT *OCT *OCT *OCT 
*         P5 - P9  *OCT *OCT *OCT *OCT *OCT 
*         //DTI11  AL TOO LOW 
*         //DTI11  PARAMETER ERROR
*         DTI11 ERRORS = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         B15 REGISTER CONTAINS THE MODULE NUMBER 
* 
*    2.2  REGISTERS USED
* 
*         B1  - LOOP COUNTER
*         B2  - CYLINDER VALUE
*         B3  - TRACK VALUE 
*         B4  - SECTOR VALUE
*         B5  - NO. OF WORDS IN SECTOR (502B) 
*         B6  - PREALLOCATED CYLINDER 
*         B10 - ERROR MESSAGE INDEX 
*         B11 - PARAMETER ERROR INDEX 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98A - PROCESS PRODUCT OVERLAY ERRORS.
*         DTI98C - PROCESS DATA COMPARE ERRORS. 
* 
*------------------DATA DIVISION----------------------------
* 
0  FORMAT DTI - ISD DATA PATH INTEGRITY TEST
1  FORMAT DTI11 - ANY SECTOR TEST 
2  FORMAT DTI11  ERROR(S) = *DECD 
5  FORMAT P0 - P4  *OCT *OCT *OCT *OCT *OCT 
6  FORMAT P5 - P9  *OCT *OCT *OCT *OCT *OCT 
7  FORMAT PARAMETERS DESCRIBED IN MODULE DTI99
11 FORMAT DTI11 NOT EXECUTED   AL = *O  NEED  AL = 04 
12 FORMAT DTI11 SUSPECTED PARAMETER ERROR  (OCTAL VALUES) 
13 FORMAT //DTI11  AL TOO LOW 
14 FORMAT //DTI11  PARAMETER ERROR
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 CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CWRITE=5, PRECYL=1457, PRECYL2=1273,
   EQUATE MAXC1=1460, MAXT1=11, MAXS1=37, 
   EQUATE MAXC2=1274, MAXT2=27, MAXS2=56
* 
*------------------INITIALIZATION---------------------------
* 
20 IF (DC.EQ.115) EXIT        *EXIT TO DTI13
   MSG 1 TO DISPLAY, PRINT    *RUN MSG
* 
*---------VALIDATE ACCESS LEVEL 
* 
   B10=11                     *CHECKING ACCESS LEVEL
   IF (AL.GE.4) GOTO 22       *IF ACCESS LEVEL OK 
   B6=PRECYL                  *PREALL. CYLINDER - 834 
   IF (DC.EQ.111) B6=PRECYL2  *PREALL. CYLINDER - 836 
   IF (P1.LT.B6) GOTO 34      *ACCESS LEVEL TOO LOW 
* 
*---------VALIDATE PARAMETERS 
* 
22 B10=12                     *CHECKING PARAMETERS
* 
*---------OBTAIN MAXIMUM VALUES 
* 
   IF (DC.EQ.111) GOTO 24     *IF ISD II ASSIGNED 
   B2=MAXC1                   *MAXCYL - ISD 
   B3=MAXT1                   *MAXTRK - ISD 
   B4=MAXS1                   *MAXSEC - ISD 
   GOTO 30
* 
24 B2=MAXC2                   *MAXCYL - ISD II
   B3=MAXT2                   *MAXTRK - ISD II
   B4=MAXS2                   *MAXSEC - ISD II
* 
30 IF (P1.LE.B2) GOTO 31      *IF PARAMETER P1 OK 
   B11=15                     *P1 ERROR INDEX 
   GOTO 33
* 
31 IF (P2.LE.B3) GOTO 32      *IF PARAMETER P2 OK 
   B11=16                     *P2 ERROR INDEX 
   GOTO 33
* 
32 IF (P3.LE.B4) GOTO 36      *IF PARAMETER P3 OK 
   B11=17                     *P3 ERROR INDEX 
33 MSG B11 TO LINE 4          *REPORT PARAMETER ERROR 
   MSG 5 (P0,P1,P2,P3,P4) TO LINE 6 
   MSG 6 (P5,P6,P7,P8,P9) TO LINE 7 
   MSG 7 TO LINE 11 
34 MSG 0 TO LINE 0            *TITLE MESSAGE
   MSG 1 TO LINE 1            *MODULE TITLE 
   MSG B10 (AL) TO LINE 3     *ERROR DESCRIPTION
   PICTURE
   B10=B10+2
35 MSG B10 TO DISPLAY,PRINT   *PAUSE MESSAGE
   PAUSE
   GOTO 35
* 
*---------INITIALIZE REGISTERS
* 
36 B2=P1                      *CYLINDER PARAMETER 
   B3=P2                      *TRACK PARAMETER
   B4=P3                      *SECTOR PARAMETER 
   B5=502B                    *SECTOR SIZE
   B13=0                      *ERROR COUNT
   B15=11D                    *MODULE NUMBER
* 
*------------------TEST-------------------------------------
* 
   B1=0                       *INITIALIZE LOOP COUNTER
40 IF (P0.EQ.0) GOTO 42       *IF RANDOM PATTERNS 
   DUP P0 TO OB(0) FOR B5     *GENERATE USER PATTERN
   GOTO 44
* 
42 RANDOM TO OB(0) FOR B5     *GENERATE RANDOM PATTERNS 
44 B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70     *WRITE SECTOR 
   B14=CREAD
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *READ SECTOR
* 
*---------CHECK DATA READ 
* 
   WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
50 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60     *COMPARE DATA
   GOTO 40 WHILE (B1+1.LT.10D)  *WRITE PATTERN 10D TIMES
* 
   GOTO 77                    *EXIT MODULE
* 
*---------PROCESS COMPARE ERRORS
* 
60 MSG 1 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+WC                   *DATA ERROR INDEX 
   CALL 98C                   *POST COMPARE ERROR DISPLAY 
* 
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   GOTO 50                    *CONTINUE COMPARE 
* 
*---------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 1 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
* 
*---------EXIT THE MODULE 
* 
77 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   END 20 
COMPILE                       *DTI11 - ANY SECTOR TEST
   MODULE DTI13,P895D(115)LOCK
***       DTI13 - ONES AND ZEROS TEST (DMA) 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH FROM CM TO THE DISK SUBSYSTEM, AND FROM
*         THE DISK SUBSYSTEM TO CM USING DATA PATTERNS OF ALL ONES
*         AND ALL ZEROS.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE AND IF NOT 
*             IN A CIO PP EXIT MODULE.
*         2.  GENERATE A 65D CM DATA BUFFER OF THE SELECTED PATTERN.
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE CM BUFFER (502B 12 BIT WORDS) TO THE DISK.
*         5.  READ THE DATA TO THE PP INPUT BUFFER. 
*         6.  CHECK THE DATA READ FROM THE DISK TO PPU. 
*         7   COMPLEMENT THE SELECTED DATA PATTERN, AND WRITE THAT
*             PATTERN TO DISK FROM THE PP OUTPUT BUFFER.
*         8.  READ THE DATA TO THE CM BUFFER USING THE DMA ADAPTER. 
*         9.  CHECK THE DATA READ FROM THE DISK TO CM.
*         10. REPEAT STEPS 3 THROUGH  9  UNTIL PATTERN HAS BEEN WRITTEN 
*             AND READ TEN TIMES. 
*         11. REPEAT STEPS  2  THROUGH 10  USING A DATA PATTERN OF  ALL 
*             ZEROS.
*         12. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 11.
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         14. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DTI13 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         NOTE
* 
*         OVER-RUN WILL OCCUR UNLESS ONE FULL SECTOR (502 PP WDS) OF
*         DATA ARE WRITTEN TO THE DISK.  THIS WILL EQUATE TO 65D CM 
*         WORDS OR 1004B 8 BIT BYTES WITH P4 = 0, OR 61 CM WORDS AND
*         744B 8 BIT BYTES WITH P4 EQUAL NON-ZERO.
* 
*         WHEN COMPARING DATA FROM DMA TRANSFERS, AND P4 = 0, ONLY
*         500B PP WORDS CAN BE COMPARED.  WHEN P4 IS NON ZERO, ONLY 
*         454B PP WORDS CAN BE COMPARED.  THIS IS BECAUSE OF THE
*         LIMITATIONS OF THE SYSWR AND SYSRD ROUTINES CONTAINED IN
*         THE P895 PRODUCT OVERLAY. 
* 
*    2.1  ENTRY CONDITIONS
* 
*         THE CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*    2.2  REGISTERS USED
* 
*         B0  - CONDITION NUMBER
*         B1  - LOOP COUNTER
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NUMBER OF WORDS TO COMPARE
*         B7  - KEY FOR CM OR PPU WRITE/READ
*         B8  - WORD COUNT
*         B9  - NUMBER OF WORDS TO DUP
*         B10 - COMPLEMENT OR SELECTED DATA PATTERN 
*         B11 - DATA CONVERSION INDEX FOR 64 BIT CM WORD
*         B12 - SHIFTED CM TO PP DATA USED FOR 64 BIT COMPARES
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
*         OB(502) TO OB(503) - DATA PATTERNS
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98H - PROCESS PRODUCT OVERLAY ERRORS (DMA).
*         DTI98J - PROCESS DATA COMPARE ERRORS (DMA). 
* 
*  ----------------DATA DIVISION----------------------------
* 
0  FORMAT DTI13 - ONES AND ZEROS TEST (DMA) 
2  FORMAT DTI13  ERROR(S) = *DECD 
3  FORMAT DTI13 NOT EXECUTED ON NIO CHANNEL 
* 
   DATA (OB(500),CON) 0000,0000,7777,0000   *DATA PATTERNS
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CMWR=5, CMRD=6, DSTATER=7, DSTATOP=10,
   EQUATE PRECYL8=1565, CWRITE=11 
* 
*  ----------------INITIALIZATION---------------------------
* 
20 IF (SB(61B).GE.40) GOTO 21     *CIO CONTINUE TESTING 
   MSG 3 TO DISPLAY, PRINT        *NOT EXECUTED MESSAGE 
   GOTO 77                        *END TEST, NOT CIO
21 MSG 0 TO DISPLAY, PRINT        *RUNNING MESSAGE
   B0=0                       *CONDITION NUMBER 
   B2=PRECYL8                 *PREALLOC. CYL. 
   B13=0                      *ERROR COUNT
   B15=13D                    *MODULE NUMBER
* 
*  ----------------TEST-------------------------------------
* 
30 B1=0                       *INITIALIZE LOOP COUNTER
   B5=500B                    *NUMBER OF WORDS TO COMPARE 
   B8=500B                    *WORD COUNT 
   B9=500B                    *DUP COUNT
   IF(P4.NE.0) B5=453B        *COMPARE COUNT FOR 64 BIT CM FORMAT 
   IF(P4.NE.0) B8=453B        *WORD COUNT FOR 64 BIT CM FORMAT
   B3=2                       *USE TRK 2
   B4=0                       *USE SEC 0
32 B7=0                       *KEY FOR WRITE/READ TO PPU
   B10 = OB(B0+502B)          *SAVE DATA PATTERN
   DUP OB(B0+502B) TO OB(0) FOR B9    *GENERATE PATTERN 
   B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CMWR 
   WRITE SECTOR FROM CM AT CYL B2 TRK B3 SEC B4, ABT 70   *WR FROM CM 
   B14=CREAD
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *READ DATA TO PP
   GOTO 36        *COMPARE DATA 
34 B10 = OB(B0 + 502B).XOR.7777     *COMPLEMENT THE DATA
   DUP B10 TO OB(0) FOR B9
   B14=CWRITE 
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *WRITE DATA FROM PP
   B14=CMRD 
   READ SECTOR TO CM AT CYL B2 TRK B3 SEC B4, ABT 70      *READ TO CM 
* 
*  -------CHECK DATA READ 
* 
36 IF(P4.NE.0) GOTO 50        *CONVERT 64 BIT CM WORDS FOR COMPARE
37 BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR B5, ABT 60     *COMPARE DATA
   B5=500B                    *RESET NUMBER OF WORDS TO COMPARE 
   IF(P4.NE.0) B5=453B        *COMPARE COUNT FOR 64 BIT CM FORMAT 
   GOTO 34 WHILE (B7+1.LT.2)  *READ TO CM 
   GOTO 32 WHILE (B1+1.LT.10D)  *WRITE PATTERN 10D TIMES
* 
   GOTO 30 WHILE (B0+1.LT.2)  *NEXT CONDITION 
* 
   GOTO 75                    *EXIT MODULE
* 
50 IF(B10.EQ.0) GOTO 37       *NO CONVERSION NECESSARY
   IF(B0.EQ.1) GOTO 37        *NO CONVERSION NECESSARY
* 
*  -------STORE 1ST PATTERN 
* 
   B12=0377B                  *INITIAL DATA 
   B11=0                      *STARTING INDEX COUNT 
51 DUP B12 TO OB(B11) FOR 1 
   GOTO 51 WHILE(B11+20B.LE.440B) 
* 
*  -------STORE 2ND PATTERN 
* 
   B12=B12.LS.8               *DATA EQUAL 7417B 
   B11=5                      *STARTING INDEX COUNT 
52 DUP B12 TO OB(B11) FOR 1 
   GOTO 52 WHILE(B11+20B.LE.445B) 
* 
*  -------STORE 3RD PATTERN 
* 
   B12=B12.LS.8               *DATA EQUAL 7760B 
   B11=12B                    *STARTING INDEX COUNT 
53 DUP B12 TO OB(B11) FOR 1 
   GOTO 53 WHILE(B11+20B.LE.452B) 
   GOTO 37                    *CONTINUE 
* 
*  -------PROCESS COMPARE ERRORS
* 
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+B5                   *DATA ERROR INDEX 
   CALL 98J                   *POST COMPARE ERROR DISPLAY 
* 
   IF(B13.GT.10D) GOTO 76     *EXIT AFTER TEN ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   B5=B8-BA                   *RESET WORD COUNT 
   GOTO 40                    *CONTINUE COMPARE 
* 
*  -------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98H                   *POST COMMAND ABORT DISPLAY 
* 
*  -------EXIT THE MODULE 
* 
75 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
76 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
   EXIT                       *EXIT MODULE
* 
77 END 20 
COMPILE                       *DTI13 - ONES AND ZEROS TEST (DMA)
   MODULE DTI15,P895D(115)LOCK
***       DTI15 - ALTERNATING ONES TEST (DMA) 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH FROM CM TO THE DISK SUBSYSTEM, AND  FROM 
*         THE DISK SUBSYSTEM TO CM USING DATA PATTERNS OF ALTERNATING 
*         ONES AND ZEROS  (5252 AND 2525 OCTAL).
* 
* 
*    1.2  METHOD- 
* 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE AND IF NOT 
*             IN A CIO PP EXIT MODULE.
*         2.  GENERATE THE 65D CM DATA BUFFER OF THE PATTERN TO BE USED 
*             TO TEST THE DMA DATA PATH.  THE PATTERN WILL BE 5252B OR
*             2525B.
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE CM BUFFER (502B 12 BIT WORDS) TO THE DISK.
*         5.  READ THE DATA TO THE PP INPUT BUFFER. 
*         6.  CHECK THE DATA READ FROM THE DISK TO PPU. 
*         7   COMPLEMENT THE SELECTED DATA PATTERN, AND WRITE THAT
*             PATTERN TO DISK FROM THE PP OUTPUT BUFFER.
*         8.  READ THE DATA TO THE CM BUFFER USING THE DMA ADAPTER. 
*         9.  CHECK THE DATA READ FROM THE DISK TO CM.
*         10. REPEAT STEPS 3 THROUGH  9  UNTIL PATTERN HAS BEEN WRITTEN 
*             AND READ TEN TIMES. 
*         11. REPEAT STEPS  2  THROUGH 10 USING A DATA PATTERN OF 2525B.
*         12. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 11.
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         14. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         DTI15 ERROR(S) = *DECD
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*         NOTE
* 
*         OVER-RUN WILL OCCUR UNLESS ONE FULL SECTOR (502 PP WDS) OF
*         DATA ARE WRITTEN TO THE DISK.  THIS WILL EQUATE TO 65D CM 
*         WORDS OR 1004B 8 BIT BYTES WITH P4 = 0, OR 61 CM WORDS AND
*         744B 8 BIT BYTES WITH P4 EQUAL NON-ZERO.
* 
*         WHEN COMPARING DATA FROM DMA TRANSFERS, AND P4 = 0, ONLY
*         500B PP WORDS CAN BE COMPARED.  WHEN P4 IS NON ZERO, ONLY 
*         454B PP WORDS CAN BE COMPARED.  THIS IS BECAUSE OF THE
*         LIMITATIONS OF THE SYSWR AND SYSRD ROUTINES CONTAINED IN
*         THE P895 PRODUCT OVERLAY. 
* 
*    2.1  ENTRY CONDITIONS
* 
*         THE CONTROLLER MUST HAVE CONTROLWARE LOADED AND THE 
*         CONTROLWARE MUST BE OPERATIONAL.
* 
*    2.2  REGISTERS USED
* 
*         B0  - CONDITION NUMBER
*         B1  - LOOP COUNTER
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NUMBER OF WORDS TO COMPARE
*         B7  - KEY FOR CM OR PPU WRITE/READ
*         B8  - WORD COUNT
*         B9  - NUMBER OF WORDS TO DUP
*         B10 - COMPLEMENT OF SELECTED DATA PATTERN 
*         B11 - DATA CONVERSION INDEX FOR 64 BIT CM WORD
*         B12 - SHIFTED CM TO PP DATA USED FOR 64 BIT COMPARES
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         B15 - MODULE NUMBER 
*         BA  - DATA BUFFER INDEX 
*         ES  - STANDARD USAGE
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(501) - INPUT DATA BUFFER
*         OB(000) TO OB(501) - OUTPUT DATA BUFFER 
*         OB(502) TO OB(503) - DATA PATTERNS
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98H - PROCESS PRODUCT OVERLAY ERRORS (DMA).
*         DTI98J - PROCESS DATA COMPARE ERRORS (DMA). 
* 
*  ----------------DATA DIVISION----------------------------
* 
0  FORMAT DTI15 - ALTERNATING ONES TEST 
2  FORMAT DTI15  ERROR(S) = *DECD 
3  FORMAT DTI15 NOT EXECUTED ON NIO CHANNEL 
* 
   DATA (OB(500),CON) 0000,0000,5252,2525   *DATA PATTERNS
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRES=3, CSTATUS=4,
   EQUATE CMWR=5, CMRD=6, DSTATER=7, DSTATOP=10,
   EQUATE PRECYL8=1565, CWRITE=11 
* 
*  ----------------INITIALIZATION---------------------------
* 
20 IF (SB(61B).GE.40) GOTO 21     *CIO CONTINUE TESTING 
   MSG 3 TO DISPLAY, PRINT        *NOT EXECUTED MESSAGE 
   GOTO 77                        *END TEST, NOT CIO
21 MSG 0 TO DISPLAY, PRINT        *RUNNING MESSAGE
   B0=0                       *CONDITION NUMBER 
   B2=PRECYL8                 *PREALLOC. CYL. 
   B13=0                      *ERROR COUNT
   B15=15D                    *MODULE NUMBER
* 
*  ----------------TEST-------------------------------------
* 
30 B1=0                       *INITIALIZE LOOP COUNTER
   B5=500B                    *NUMBER OF WORDS TO COMPARE 
   B8=500B                    *WORD COUNT 
   B9=500B                    *DUP COUNT
   IF(P4.NE.0) B5=453B        *COMPARE COUNT FOR 64 BIT CM FORMAT 
   IF(P4.NE.0) B8=453B        *WORD COUNT FOR 64 BIT CM FORMAT
   B3=2                       *USE TRK 2
   B4=0                       *USE SEC 0
32 B7=0                       *KEY FOR READ TO PPU
   B10 = OB(B0+502B)          *SAVE DATA PATTERN
   DUP OB(B0+502B) TO OB(0) FOR B9    *GENERATE PATTERN 
   B14=CRES                   *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CMWR 
   WRITE SECTOR FROM CM AT CYL B2 TRK B3 SEC B4, ABT 70   *WR FROM CM 
   B14=CREAD
   READ SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *READ DATA TO PP
   GOTO 36
34 B10 = OB(B0 + 502B).XOR.7777     *COMPLEMENT THE DATA
   DUP B10 TO OB(0) FOR B9
   B14=CWRITE 
   WRITE SECTOR AT CYL B2 TRK B3 SEC B4, ABT 70      *WRITE DATA FROM PP
   B14=CMRD 
   READ SECTOR TO CM AT CYL B2 TRK B3 SEC B4, ABT 70      *READ TO CM 
* 
*  -------CHECK DATA READ 
* 
36 IF(P4.NE.0) GOTO 50        *CONVERT 64 BIT CM WORDS FOR COMPARE
37 BA=0                       *BUFFER INDEX 
40 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR B5, ABT 60     *COMPARE DATA
   B5=500B                    *RESET NUMBER OF WORDS TO COMPARE 
   IF(P4.NE.0) B5=453B        *COMPARE COUNT FOR 64 BIT CM FORMAT 
   GOTO 34 WHILE (B7+1.LT.2)  *READ TO CM 
   GOTO 32 WHILE (B1+1.LT.10D)  *WRITE PATTERN 10D TIMES
* 
   GOTO 30 WHILE (B0+1.LT.2)  *NEXT CONDITION 
* 
   GOTO 75                    *EXIT MODULE
50 IF(B14.EQ.CMRD) GOTO 37    *NO CONVERSION NECESSARY
* 
*  -------STORE 1ST PATTERN 
* 
   IF(B10.EQ.2525B) B12=0125B  *INITIAL DATA
   IF(B10.EQ.5252B) B12=0252B  *INITIAL DATA
   B11=0                      *STARTING INDEX COUNT 
51 DUP B12 TO OB(B11) FOR 1 
   GOTO 51 WHILE(B11+20B.LE.440B) 
* 
*  -------STORE 2ND PATTERN 
* 
   B12=B12.LS.8               *DATA EQUAL 2405B OR 5012B
   B11=5                      *STARTING INDEX COUNT 
52 DUP B12 TO OB(B11) FOR 1 
   GOTO 52 WHILE(B11+20B.LE.445B) 
* 
*  -------STORE 3RD PATTERN 
* 
   B12=B12.LS.8               *DATA EQUAL 2520B OR 5240B
   B11=12B                    *STARTING INDEX COUNT 
53 DUP B12 TO OB(B11) FOR 1 
   GOTO 53 WHILE(B11+20B.LE.452B) 
   GOTO 37                    *CONTINUE 
* 
*  -------PROCESS COMPARE ERRORS
* 
60 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *INCREMENT ERROR COUNT
   BA=BA+B5                   *DATA ERROR INDEX 
   CALL 98J                   *POST COMPARE ERROR DISPLAY 
* 
   IF(B13.GT.10D) GOTO 76     *EXIT AFTER TEN ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   B5=B8-BA                   *RESET WORD COUNT 
   GOTO 40                    *CONTINUE COMPARE 
* 
*  -------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98H                   *POST COMMAND ABORT DISPLAY 
* 
*  -------EXIT THE MODULE 
* 
75 IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
76 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (B13.NE.0) MSG 2 (B13) TO DISPLAY, PRINT, DAYFILE 
* 
77 END 20 
COMPILE                       *DTI15 - ALTERNATING ONES TEST (DMA)
   MODULE DTI98A,FSD2(110,111,115)LOCK
***       DTI98A - 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 DTI98E 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 
* 
*         DTI98E - ERROR DISPLAY
* 
*------------------DATA DIVISION----------------------------
* 
1  FORMAT    ABORTED ON .READ. COMMAND
2  FORMAT    ABORTED ON .REL. COMMAND 
3  FORMAT    ABORTED ON .RES. COMMAND 
4  FORMAT    ABORTED ON .STATUS. COMMAND
5  FORMAT    ABORTED ON .WRITE. COMMAND 
6  FORMAT    ABORTED ON .WRITECB. COMMAND 
7  FORMAT    ABORTED ON .READCB. COMMAND
* 
*-------------POST COMMAND ABORTED
* 
20 MSG B14 TO LINE 2          *COMMAND ABORTED MSG
   MSG EM TO LINE 3           *ERROR DESCRIPTION
   B6=4                       *DISPLAY LINE 
   EXIT TO 98E                *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE                       *DTI98A - POST COMMAND ABORTED DISPLAY
   MODULE DTI98C,FSD2(110,111,115)LOCK
***       DTI98C - POST COMPARE ERROR DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         DISPLAY THE DATA COMPARE ERROR MESSAGE AND THE NUMBER OF  THE 
*         WORD THAT CAUSED THE ERROR. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY DATA COMPARE ERROR MESSAGE. 
*         2.  DISPLAY NUMBER OF WORD CAUSING THE ERROR. 
*         3.  EXIT TO MODULE DTI98E 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 NUMBER OF THE WORD WHICH CAUSED 
*                      THE ERROR. 
* 
*    2.2  SUBMODULES USED 
* 
*         NONE
* 
*------------------DATA DIVISION----------------------------
* 
1  FORMAT ABORTED ON DATA COMPARE ERROR 
2  FORMAT         WORD  *OCTB 
* 
/---------POST ERROR MESSAGES 
* 
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                       *DTI98C - POST COMPARE ERROR DISPLAY
   MODULE DTI98E,FSD2(110,111,115)LOCK
***       DTI98E - 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, EA, LF, AND WT 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  AND 
*             DETAILED STATUS.
*         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 NUMBER OF WORD AT WHICH DATA COMPARE 
*                     ERROR OCCURRED
* 
*    2.2  REGISTERS USED
* 
*         B6  - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
*------------------DATA DIVISION----------------------------
* 
0  FORMAT DTI - ISD/895 DATA PATH INTEGRITY TEST
2  FORMAT EC=*OCTB  EA=*OCTB  LF=*OCTB  WT=*OCTB
3  FORMAT         LAST = *OCTB      FIRST = *OCTB 
4  FORMAT IB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
5  FORMAT OB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
6  FORMAT B0-B7  =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
7  FORMAT B8-B15 =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
10 FORMAT                 GENERAL STATUS
11 FORMAT              DETAILED STATUS  (OCTAL) 
12 FORMAT  1D = *OCT    6D = *OCT   11D = *OCT   16D = *OCT 
13 FORMAT  2D = *OCT    7D = *OCT   12D = *OCT   17D = *OCT 
14 FORMAT  3D = *OCT    8D = *OCT   13D = *OCT   18D = *OCT 
15 FORMAT  4D = *OCT    9D = *OCT   14D = *OCT   19D = *OCT 
16 FORMAT  5D = *OCT   10D = *OCT   15D = *OCT   20D = *OCT 
17 FORMAT---------------------------------------------------
* 
*------------------POST MESSAGES
* 
20 MSG 0 TO LINE 0            *TEST TITLE 
   MSG 2 (EC,EA,LF,WT) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   IF (B14.EQ.0) B6=10        *IF DATA COMPARE ERROR
* 
*------------------DISPLAY B REGISTERS
* 
   MSG 6 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B6 
   B6 = B6 + 1                     *INCREMENT DISPLAY LINE NUMBER 
   MSG 7 (B8,B9,B10,B11.B12,B13,B14,B15) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   IF (B14.EQ.0) B6=B6+1      *IF DATA COMPARE ERROR
* 
* -----------------DISPLAY BUFFERS
* 
   MSG 4 10B WORDS FROM IB(BA) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 5 10B WORDS FROM OB(BA) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   IF (B14.NE.0) B6=B6+1      *IF NOT DATA COMPARE ERROR
   IF (B14.EQ.0) GOTO 70      *IF NOT PRODUCT OVERLAY ERROR 
* 
*------------------DISPLAY STATUS 
* 
50 MSG 10 TO LINE B6          *STATUS TITLES
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 3 (SB,SB(25)) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 11 TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 12 (SB(1),SB(6),SB(11D),SB(16D)) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 13 (SB(2),SB(7),SB(12D),SB(17D)) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 14 (SB(3),SB(8D),SB(13D),SB(18D)) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 15 (SB(4),SB(9D),SB(14D),SB(19D)) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 16 (SB(5),SB(10D),SB(15D),SB(20D)) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
* 
*------------------EXIT THE MODULE
* 
70 B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 17 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 20 
COMPILE                       *DTI98E - ERROR DISPLAY 
   MODULE DTI98F,FSD2(110,111,115)LOCK
***       DTI98F - ERROR DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         ERROR DISPLAY FOR A DATA COMPARE ERROR FOR DTI00. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE. 
*         2.  DISPLAY CONTENTS OF EC, EA, LF, AND WT REGISTERS. 
*         3.  DISPLAY CONTENTS OF B REGISTERS.
*         4.  ON A DATA COMPARE ERROR, DISPLAY EIGHT  WORDS  OF  INPUT
*             BUFFER AND OUTPUT BUFFER,  BEGINNING  WITH THE EVEN WORD
*             THAT CAUSED THE ERROR OR THE EVEN WORD BEFORE IF THE ODD
*             WORD  WAS IN ERROR.  BOTH  OCTAL  AND  HEX  FORMATS  ARE
*             DISPLAYED.
*         5.  EXIT THE MODULE.
* 
/    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED 
*         REGISTER BA CONTAINS THE NUMBER OF THE WORD AT WHICH DATA 
*                     COMPARE ERROR OCCURRED
* 
*    2.2  REGISTERS USED
* 
*         B4  - 16 BIT (PACKED) WORD COUNT
*         B6  - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
*------------------DATA DIVISION----------------------------
* 
0  FORMAT DTI - ISD/895 DATA PATH INTEGRITY TEST
2  FORMAT EC=*OCTB  EA=*OCTB  LF=*OCTB  WT=*OCTB
3  FORMAT         LAST = *OCTB      FIRST = *OCTB 
4  FORMAT IB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
5  FORMAT OB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
6  FORMAT B0-B7  =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
7  FORMAT B8-B15 =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
10 FORMAT                 GENERAL STATUS
11 FORMAT IB (0-7) 16 BIT (PACKED) *H*H  *H*H  *H*H  *H*H 
12 FORMAT OB (0-7) 16 BIT (PACKED) *H*H  *H*H  *H*H  *H*H 
13 FORMAT ABORTED ON DATA COMPARE ERROR 
14 FORMAT    12BIT WORD  *OCTB       16BIT WORD  *OCTB
17 FORMAT---------------------------------------------------
* 
*------------------POST MESSAGES
* 
20 MSG 0 TO LINE 0            *TEST TITLE 
   B4 = BA.RS.1               *SET WORD COUNT FOR 16 BITS 
   MSG 13 TO LINE 3           *DATA COMPARE ERROR 
   MSG 14 (BA,B4) TO LINE B6  *NUMBER OF WORD IN ERROR
   BA = BA.AND.7776B          *SET BA TO EVEN COUNT 
   B6 = 6                     *SET DISPLAY LINE 
   MSG 2 (EC,EA,LF,WT) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
* 
*------------------DISPLAY B REGISTERS
* 
   MSG 6 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 7 (B8,B9,B10,B11.B12,B13,B14,B15) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   IF (B14.EQ.0) B6=B6+1      *IF DATA COMPARE ERROR
* 
*------------------DISPLAY BUFFERS
* 
   MSG 4 10B WORDS FROM IB(BA) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 5 10B WORDS FROM OB(BA) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 11 10B WORDS FROM IB(BA) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 12 10B WORDS FROM OB(BA) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
* 
*------------------DISPLAY STATUS 
* 
50 MSG 10 TO LINE B6          *STATUS TITLES
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 3 (SB,SB(25)) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
* 
*------------------EXIT THE MODULE
* 
70 B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 17 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 20 
COMPILE                       *DTI98F - ERROR DISPLAY 
   MODULE DTI98H,P895D(115)LOCK 
***       DTI98H - POST COMMAND ABORTED DISPLAY (DMA) 
**
*    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 DTI98L TO COMPLETE ERROR DISPLAY.
* 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED.
* 
*    2.2  REGISTERS USED
* 
*         B6 - DISPLAY LINE COUNTER 
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98L - ERROR DISPLAY (DMA)
* 
*  ----------------DATA DIVISION----------------------------
* 
1  FORMAT    ABORTED ON .READ. COMMAND
2  FORMAT    ABORTED ON .REL. COMMAND 
3  FORMAT    ABORTED ON .RES. COMMAND 
4  FORMAT    ABORTED ON .STATUS. COMMAND
5  FORMAT    ABORTED ON .WRITE FROM CM. COMMAND 
6  FORMAT    ABORTED ON .READ TO CM. COMMAND
7  FORMAT    ABORTED ON .STATUS ERROR. COMMAND
10 FORMAT    ABORTED ON .STATUS OPERATION. COMMAND
11 FORMAT    ABORTED ON .WRITE. COMMAND 
* 
*  -----------POST COMMAND ABORTED
* 
20 MSG B14 TO LINE 2          *COMMAND ABORTED MSG
   MSG EM TO LINE 3           *ERROR DESCRIPTION
   B6=4                       *DISPLAY LINE 
   EXIT TO 98L                *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE                       *DTI98H - COMMAND ABORTED DISPLAY (DMA)      DTI
   MODULE DTI98J,P895D(115)LOCK 
***       DTI98J - POST COMPARE ERROR DISPLAY (DMA) 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         DISPLAY THE DATA COMPARE ERROR MESSAGE AND THE NUMBER OF  THE 
*         WORD THAT CAUSED THE ERROR. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY DATA COMPARE ERROR MESSAGE. 
*         2.  DISPLAY NUMBER OF WORD CAUSING THE ERROR. 
*         3.  EXIT TO MODULE DTI98L 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 NUMBER OF THE WORD WHICH CAUSED 
*         THE ERROR.
* 
*    2.2  REGISTERS USED
* 
*         B6 - DISPLAY LINE COUNTER 
* 
*    2.3  SUBMODULES USED 
* 
*         DTI98L - ERROR DISPLAY (DMA)
* 
*  ----------------DATA DIVISION----------------------------
* 
1  FORMAT ABORTED ON DATA COMPARE ERROR 
2  FORMAT         WORD  *OCTB 
* 
/---------POST ERROR MESSAGES 
* 
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 98L                *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE                       *DTI98J - POST COMPARE ERROR DISPLAY (DMA)
   MODULE DTI98L,P895D(115)LOCK 
***       DTI98L - ERROR DISPLAY (DMA)
**
*    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.  IF A PRODUCT OVERLAY ERROR, DISPLAY THE CONTENTS OF 
*             EC, EA, LF, AND WT 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 AND DISPLAY THE DMA STATUS REGISTERS. 
*         5.  IF A PRODUCT OVERLAY COMMAND ABORT, DISPLAY  895 GENERAL
*             AND DETAILED STATUS AND DMA ERROR AND OPERATION STATUS. 
*         6.  EXIT THE MODULE.
* 
/    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF THE COMMAND THAT ABORTED. 
* 
*         REGISTER BA CONTAINS THE NUMBER OF WORD AT WHICH DATA COMPARE 
*         ERROR OCCURRED. 
* 
*    2.2  REGISTERS USED
* 
*         B6  - DISPLAY LINE COUNTER
*         B14 - COMMAND NUMBER
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
*  ----------------DATA DIVISION----------------------------
* 
0  FORMAT DTI - ISD/895/DMA DATA PATH INTEGRITY TEST
1  FORMAT NUMBER OF CM BYTES TRANSFERED = *OCTB 
2  FORMAT EC=*OCTB  EA=*OCTB  LF=*OCTB  WT=*OCTB
3  FORMAT ERR STAT = *OCT*OCTB  OPERATION STAT = *OCT*OCTB
4  FORMAT IB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
5  FORMAT OB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
6  FORMAT B0-B7  =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
7  FORMAT B8-B15 =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
10 FORMAT                 GENERAL STATUS
11 FORMAT              DETAILED STATUS  (OCTAL) 
12 FORMAT  1D = *OCT    6D = *OCT   11D = *OCT   16D = *OCT 
13 FORMAT  2D = *OCT    7D = *OCT   12D = *OCT   17D = *OCT 
14 FORMAT  3D = *OCT    8D = *OCT   13D = *OCT   18D = *OCT 
15 FORMAT  4D = *OCT    9D = *OCT   14D = *OCT   19D = *OCT 
16 FORMAT  5D = *OCT   10D = *OCT   15D = *OCT   20D = *OCT 
17 FORMAT---------------------------------------------------
20 FORMAT         LAST = *OCTB      FIRST = *OCTB 
* 
*  ----------------POST MESSAGES
* 
21 MSG 0 TO LINE 0            *TEST TITLE 
   MSG 2 (EC,EA,LF,WT) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   IF(B14.EQ.0) GOTO 22       *IF COMPARE ERROR 
   IF(B14.EQ.1) GOTO 22    *PP READ ABORT 
   IF(B14.EQ.2) GOTO 22    *REL ABORT 
   IF(B14.EQ.3) GOTO 22    *RES ABORT 
   IF(B14.EQ.4) GOTO 22    *STATUS ABORT
   IF(B14.EQ.11) GOTO 22   *PP WRITE ABORT
   MSG 1 (SB(53B)) TO LINE B6  *T REGISTER COUNT
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
22 IF (B14.EQ.0) B6=10        *IF DATA COMPARE ERROR
* 
*  ----------------DISPLAY B REGISTERS
* 
   MSG 6 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 7 (B8,B9,B10,B11.B12,B13,B14,B15) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   IF (B14.EQ.0) B6=B6+1      *IF DATA COMPARE ERROR
* 
*  ----------------DISPLAY BUFFERS
* 
   MSG 4 10B WORDS FROM IB(BA) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 5 10B WORDS FROM OB(BA) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   IF (B14.EQ.0) B6=B6+1      *IF DATA COMPARE ERROR
* 
*  ----------------DISPLAY STATUS 
* 
50 MSG 3 (SB(56B),SB(57B),SB(64B),SB(65B)) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   IF (B14.EQ.0) GOTO 70      *IF DATA COMPARE ERROR, DONE
   MSG 10 TO LINE B6          *STATUS TITLES
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 20 (SB,SB(25)) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 11 TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 12 (SB(1),SB(6),SB(11D),SB(16D)) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 13 (SB(2),SB(7),SB(12D),SB(17D)) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 14 (SB(3),SB(8D),SB(13D),SB(18D)) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 15 (SB(4),SB(9D),SB(14D),SB(19D)) TO LINE B6 
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 16 (SB(5),SB(10D),SB(15D),SB(20D)) TO LINE B6
   B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
  
* 
*  ----------------EXIT THE MODULE
* 
70 B6 = B6 + 1                *INCREMENT DISPLAY LINE NUMBER
   MSG 17 TO LINE B6
   PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 21 
COMPILE                       *DTI98L - ERROR DISPLAY (DMA) 
   MODULE DTI99,FSD2(110,111,115)LOCK 
***       DTI99 - PARAMETER DESCRIPTION 
**
* 
/------------------RESTRICTIONS-----------------------------
/ 
/  DTI ASSUMES  THAT  CONTROLWARE HAS  BEEN  LOADED  AND  IS
/  OPERATIONAL IN THE ISD SUBSYSTEM.  THIS INCLUDES BOTH THE
/  ADAPTER CONTROLWARE  AND  THE  COMMAND  OPERATING  SYSTEM
/  IN THE CONTROL MODULE. 
/ 
/  IF THE TEST IS BEING EXECUTED ON AN  895  DISK SUBSYSTEM,
/  DTI ASSUMES THAT THE 895 DISK CONTROLWARE HAS BEEN LOADED
/  AND IS RUNNING IN THE CYBER CHANNEL COUPLER. 
/ 
/------------------PARAMETER DESCRIPTION--------------------
/ 
/  MODULES DTI00 THROUGH 07 DO NOT USE PARAMETER REGISTERS. 
/ 
/  P0 - XXXX - DATA PATTERN USED BY MODULES DTI09 AND DTI11 
/       0000 - USE RANDOM PATTERNS (DEFAULT)
/ 
/  P1 - XXXX - CYLINDER TO BE USED FOR DATA TESTING BY DTI11
/              VALID ENTRIES: 
/              0000 THROUGH 1460 FOR 834 (ISD)
/              0000 THROUGH 1274 FOR 836 (ISD II) 
/                     UNUSED ON 895 DISK SUBSYSTEM
/ 
/  P2 - 00XX - TRACK TO BE USED FOR DATA TESTING BY DTI11 
/              VALID ENTRIES: 
/              0000 THROUGH 0011 FOR 834 (ISD)
/              0000 THROUGH 0027 FOR 836 (ISD II) 
/                     UNUSED ON 895 DISK SUBSYSTEM
/ 
/  P3 - 00XX - SECTOR TO BE USED FOR DATA TESTING BY DTI11
/              VALID ENTRIES: 
/              0000 THROUGH 0037 FOR 834 (ISD)
/              0000 THROUGH 0056 FOR 836 (ISD II) 
/                     UNUSED ON 895 DISK SUBSYSTEM
/ 
/  P4 - 0000 - USE 60 BIT CM WORD FORMAT FOR DMA TRANSFERS. 
/       XXXX - IF NON-ZERO USE 64 BIT CM WORD FORMAT FOR DMA
/              TRANSFERS. 
/ 
/  P5 - NOT USED
/ 
/  P6 - NOT USED
/ 
/  P7 - NOT USED
/ 
/  P8 - NOT USED
/ 
/  P9 - NOT USED
/ 
1  END 1
COMPILE,SOURCE                *DTI99 - PARAMETER DESCRIPTION
   MODULE DTI99A,FSD2(110,111,115)LOCK
***       DTI99A - MODULE DESCRIPTIONS
**
* 
/        MODULE     MODULE NAME AND         ACCESS    RUN 
/        NUMBER       DESCRIPTION           LEVEL     TIME
/        ------     ---------------         ------    ----
/ 
/          00       WRITE READ ADAPTER BUFFER  3      2 SEC.
/          01       ONES AND ZEROS TEST        3      2 SEC.
/          03       ALTERNATING ONES TEST      3      2 SEC.
/          05       SLIDING ZEROS TEST         3      3 SEC.
/          07       SLIDING ONES TEST          3      3 SEC.
/          09       RANDOM DATA TEST           3      1 SEC.
/          11       ANY SECTOR TEST            4      1 SEC.
/          13       ONES AND ZEROS TEST (DMA)  3      2 SEC.
/          15       ALTERNATING ONES TEST (DMA)3      2 SEC.
/ 
1  END 1
COMPILE,SOURCE                *DTI99A - MODULE DESCRIPTION
