*DECK,IDT 
***       IDT - CM3 DISK SUBSYSTEM INLINE DIAGNOSTIC AND DATA PATH TEST 
*** 1.0   IDENTIFICATION
**
*   1.1   PROGRAM NAME
* 
*         IDT - CM3 DISK SUBSYSTEM INLINE DIAGNOSTIC AND DATA PATH TEST 
* 
*   1.2   AUTHOR
* 
*         R.D. SCHNEIDER          DATE  JUNE 23, 1986 
* 
*   1.3   AUTHORS OF MODIFICATIONS
* 
*         J.M. SKOWRONEK          DATE  OCTOBER 30, 1986
*         D.H. WIESE              DATE  MARCH 20, 1987
*                                 ADDS XMD3 SUPPORT 
*         J.M. OJA                DATE  OCTOBER 17, 1990
*                                 ADDS FORMAT AND SLAVE RESET 
*                                 ALONG WITH MALET NOS SUPPORT
* 
*   1.4   COPYRIGHT 
* 
*              COPYRIGHT CONTROL DATA CORPORATION, 1986.
*                        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
* 
*         IDT IS AN INLINE DIAGNOSTIC AND DATA PATH INTEGRITY TEST FOR
*         THE CM3 DISK SUBSYSTEM ON AN IPI CHANNEL.  THE TEST RESIDES 
*         IN A PERIPHERAL PROCESSOR, INITIATES EXECUTION OF THE INLINE
*         DIAGNOSTICS IN BOTH THE CONTROL MODULE AND THE DRIVE, AND 
*         TESTS THE DATA PATH TO AND FROM THE DISK.  DATA IS
*         TRANFERRED TO THE DISK BOTH DIRECTLY FROM THE PP AND VIA
*         CENTRAL MEMORY IF THE IPI CHANNEL SUPPORTS DMA. 
* 
*         IDT IS INTENDED TO EXECUTE ONLINE  ONLY.  IT DOES NOT EXECUTE 
*         UNDER DEMOT.
* 
*   2.2   CHARACTERISTICS 
* 
*         1.  PROGRAM NAME......................................IDT 
*         2.  TEST/DIAG/UTILITY/SYSTEM.........................TEST 
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER............MALET 
*         4.  RUN TIME (DEFAULT ON CYBER 930).........5 MIN 30 SEC. 
*         5.  RUN TIME/QUICK LOOK (DEFAULT).....................N/A 
*         6.  LEVEL OF ISOLATION..........................DETECTION 
*         7.  ON-LINE/OFF-LINE/BOTH.........................0N-LINE 
*         8.  ON-LINE SYSTEM.........................NOS AND NOS/VE 
*         9.  OFF-LINE SYSTEM..................................NONE 
*         10. PROGRAM LANGUAGE................................MALET 
*         11. SOURCE CODE MAINTENANCE........................UPDATE 
* 
*   2.3   FEATURES
* 
*         1.  IDT SUPPORTS DEVICE CODES FOR 
*IF DEF,MVE,1 
*             CM3/FSD2 DISK SUBSYSTEM 
*             CM3/XMD3 DISK SUBSYSTEM 
* 
*   2.4   HARDWARE REQUIREMENTS 
* 
*         THIS TEST REQUIRES
*         1 - CYBER 180 
*         1 - CM3 DISK SUBSYSTEM OPERATING ON AN IPI CHANNEL
* 
*   2.5   RESTRICTIONS
* 
*         1.  IDT  REQUIRES  THAT  THE  CONTROLWARE  FOR  THE  ASSIGNED 
*             CONTROL MODULE BE RUNNING PRIOR TO EXECUTION. 
* 
*         2.  IDT REQUIRES THAT THE DISK DRIVE UNDER TEST BE SPUN UP. 
* 
*         3.  IDT IS NOT INTENDED  TO  TEST THE INTEGRITY  OF  THE DISK 
*             SURFACE.
* 
*** 3.0   APPLICABLE DOCUMENTS
**
* 
*         MALET/VE LANGUAGE PROGRAMMING REFERENCE MANUAL      60456020
*         CML/VE REFERENCE MANUAL                             60000019
* 
*** 4.0   DESIGN OVERVIEW 
**
*   4.1   MODULE OVERVIEW 
* 
*         IDT IS DIVIDED INTO THREE BASIC SECTIONS.  THE FIRST SECTION
*         CONSISTS OF MODULE IDT00.  THIS MODULE INITIATES EXECUTION
*         OF THE ASSIGNED CM3 INLINE DIAGNOSTICS, WITH SUBSYSTEM
*         STATUS INFORMATION BEING DISPLAYED IF AN ERROR IS DETECTED. 
* 
*         MODULES IDT03 THROUGH IDT09 THEN TEST THE DATA  PATH  BETWEEN 
*         THE PP AND THE DISK BY WRITING ONE SECTOR OF DATA TO THE PRE- 
*         ALLOCATED AREA, THEN READING THE SECTOR AND CHECKING THE DATA 
*         FOR ACCURACY.  THIS  TEST  IS  PERFORMED  USING  TWENTY  PRE- 
*         SELECTED DATA PATTERNS, EACH PATTERN  BEING  WRITTEN  TO  THE 
*         DISK ONE TIME. MODULE IDT09 THEN  PERFORMS  THE  TEST USING 
*         EITHER A RANDOM DATA PATTERN (BY DEFAULT) OR A PATTERN SPECI- 
*         FIED BY THE USER IN PARAMETER P0 (IF NON-ZERO).  THIS PATTERN 
*         IS ALSO WRITTEN TO THE DISK ONE  TIME.  EACH  MODULE  FIRST 
*         TESTS THE PATH BETWEEN THE PP AND THE DISK.  THEN IT WILL 
*         TEST THE DATA PATH TO/FROM THE DISK VIA CENTRAL MEMORY, IF
*         THE CHANNEL SUPPORTS DMA TRANSFERS. 
* 
*         THE THIRD SECTION OF THE TEST CONSISTS OF MODULES IDT11 AND 
*         DTI13, WHICH ARE NOT INCLUDED IN THE DEFAULT TEST SEQUENCE. 
*         EACH MODULE IS STAND ALONE. 
* 
*         DTI11 WILL ALLOW THE USER TO SELECT ANY SECTOR AND/OR DATA
*         PATTERN TO USE IN THE DATA TESTING. 
* 
*         DTI13 WILL ALLOW THE USER TO RUN IN-LINE DRIVE DIAGNOSTICS. 
* 
*         ALL MODULE TIMINGS REPRESENT EXECUTION ON A CYBER 930.
* 
*         MODULE IDT00 EXECUTES IN-LINE CM DIAGNOSTICS. 
* 
*                                                ACCESS 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         IDT00       CM DIAGNOSTICS                3     135 SEC.
* 
*         MODULES IDT01 THROUGH IDT09 PERFORM DEFAULT DATA TESTING. 
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         IDT01       ONES AND ZEROS TEST           3      12 SEC.
*         IDT03       ALTERNATING ONES TEST         3      12 SEC.
*         IDT05       SLIDING ZEROS TEST            3      70 SEC.
*         IDT07       SLIDING ONES TEST             3      70 SEC.
*         IDT08       ADDRESS TEST                  3      10 SEC.
*         IDT09       RANDOM DATA TEST              3       9 SEC.
* 
*         MODULE IDT11 ALLOWS THE USER TO CHOOSE ANY DISK SECTOR AND
*         DATA PATTERN FOR TESTING, AND CHECKS FOR VALID PARAMETER
*         ENTRIES.
*         MODULE DTI13 ALLOWS THE USER TO RUN IN-LINE DRIVE 
*         DIAGNOSTICS.
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*         IDT11       ANY SECTOR TEST              3,4      9 SEC.
*         IDT13       DRIVE DIAGNOSTICS            10       3 SEC.
* 
*         MODULE IDT50 ALLOWS THE USER TO FORMAT A UNIT.
* 
*         MODULE IDT70 ALLOWS THE USER TO SLAVE RESET THE CONTROLLER. 
* 
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               -----       ---- 
*         IDT50       INITIAL FORMAT UNIT          20       90 MIN. 
*         IDT70       SLAVE RESET CONTROLLER       20       12 MIN. 
* 
*   4.2   EXECUTION SEQUENCE
* 
*         IDT MODULES ARE INDEPENDENT, AND EXECUTION OF ONE  MODULE  IS 
*         NOT DEPENDENT ON EXECUTION OF ANOTHER.
* 
*         BY DEFAULT, MODULES IDT01 THROUGH 09 WILL EXECUTE  IN  ORDER. 
*         MODULE IDT11 IS A STAND ALONE MODULE, AND WILL  ONLY  EXECUTE 
*         UPON A  *RUN, IDT11*  COMMAND.
* 
*         MODULES IDT13, IDT50 AND IDT70 ARE STAND ALONE MODULES, AND 
*         WILL  ONLY  EXECUTE  UPON A  *RUN, IDTXX *  COMMAND.  WHERE 
*         XX IS THE MODULE NUMBER.
* 
* 
*** 5.0   PARAMETERS
**
*   5.1   PARAMETER REGISTER DEFINITION 
* 
*         THE FOLLOWING PARAMETERS ARE USED BY IDT
*              (ALL PARAMETER VALUES ARE HEX) 
* 
*         P0 - XXXX - DATA PATTERN TO BE USED BY IDT09, IDT11 
*              0000 - USE RANDOM DATA PATTERNS (DEFAULT)
* 
*         P1 - XXXX - CYLINDER TO BE USED FOR DATA TESTING (IDT11)
*                     VALID ENTRIES 
* 
*IF DEF,MVE,3 
*                     CM3/FSD2
*                     0000 THROUGH 1274(8), 0700(D), 02BC(H)
* 
*                     CM3/XMD3
*                     0000 THROUGH 2601(8), 1409(D), 0581(H)
* 
*         P2 - 00XX - TRACK TO BE USED FOR DATA TESTING (IDT11) 
*                     VALID ENTRIES 
* 
*IF DEF,MVE,3 
*                     CM3/FSD2
*                     0000 THROUGH 0027(8), 0023(D), 0017(H)
* 
*                     CM3/XMD3
*                     0000 THROUGH 0022(8), 0018(D), 0012(H)
* 
*         P3 - 00XX - SECTOR TO BE USED FOR DATA TESTING (IDT11)
*                     VALID ENTRIES 
* 
*IF DEF,MVE,3 
*                     CM3/FSD2
*                     0000 THROUGH 0056(8), 0046(D), 002E(H)
* 
*                     CM3/XMD3
*                     0000 THROUGH 0024(8), 0020(D), 0014(H)
* 
*         P4 - P8  NOT USED 
* 
*         P9 - 00XX - WHETHER TO SLAVE RESET OR NOT IN IDT70
*              0000 - DO NOT SLAVE RESET
*              0001 - SLAVE RESET AFTER RES CH
*              0010 - SKIP RES CH AND SLAVE RESET CONTROLLER
* 
*   5.2   PARAMETER REGISTER USAGE
* 
*         MODULE      P0  P1  P2  P3  P4  P5  P6  P7  P8  P9
*         ------      --  --  --  --  --  --  --  --  --  --
*         IDT00 
*         IDT01 
*         IDT03 
*         IDT05 
*         IDT07 
*         IDT08 
*         IDT09       X 
*         IDT11       X   X   X   X 
*         IDT13 
*         IDT50 
*         IDT70                                           X 
* 
*** 6.0   PROGRAM USE 
**
*   6.1   TESTING 
* 
*         IDT HAS BEEN DESIGNED FOR USE AS A  SUBSYSTEM INTEGRITY TEST, 
*         EXECUTING   THE  SUBSYSTEM  INLINE  DIAGNOSTIC  ROUTINES  AND 
*         TESTING THE ENTIRE DATA PATH BETWEEN THE HOST PP AND THE DISK 
*         SURFACE.  IN DEFAULT MODE, THE DATA TESTING IS DONE USING THE 
*         PREALLOCATED AREA OF THE DISK.
* 
*         TO EXECUTE THE TEST,  THE USER ASSIGNS  THE  DEVICE  WITH  AN 
*         ACCESS LEVEL OF  3  (READ  AND WRITE PREALLOCATED AREA ONLY). 
*         A  *RUN, IDT*  COMMAND MUST BE PERFORMED  AND  MODULES  IDT00 
*         THROUGH  IDT09  WILL BE EXECUTED IN NUMERICAL ORDER.  TESTING 
*         WILL TERMINATE WHEN MODULE IDT13 COMPLETES EXECUTION. 
* 
*         ALL IDT MODULES SUPPORT THE MALET REPEAT MODULE CONDITION,
* 
*   6.2   PARAMETER DRIVEN MODULES
* 
*         IDT  CONTAINS TWO MODULES WHICH MAKE USE OF  USER SPECIFIED 
*         SPECIFIED PARAMETERS. 
* 
*         MODULE IDT09 WILL CHECK PARAMETER P0.   IF P0 IS ZERO (0000), 
*         THE MODULE WILL EXECUTE IN  ITS  DEFAULT CONFIGURATION,  WITH 
*         RANDOM DATA PATTERNS BEGIN USED FOR DATA TESTING.   IF P0  IS 
*         NON-ZERO,  THE CONTENTS OF P0 WILL BE USED AS THE PATTERN FOR 
*         DATA TESTING. 
* 
*         MODULE IDT11 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 
*         IF  A  CYLINDER OUTSIDE THE PREALLOCATED AREA IS SPECIFIED BY 
*         P1, AN ACCESS LEVEL OF 4 IS REQUIRED TO EXECUTE THE MODULE. 
* 
*         MODULE IDT11 REQUIRES PARAMETER ENTRIES  P1,  P2  AND  P3  TO 
*         DETERMINE THE CYLINDER, TRACK  AND  SECTOR  TO  BE  USED  FOR 
*         TESTING.
* 
*         MODULE IDT70 CHECKS PARAMETER P9. P9 IS USED TO SPECIFY 
*         WHETHER OR NOT TO DO A SLAVE RESET. IF P9 IS ZERO MODULE IDT70
*         WILL NOT DO A SLAVE RESET. IF P9 IS NON-ZERO A SLAVE RESET
*         WILL BE PERFORMED. IF P9 IS SET TO 10 THE RES CH COMMAND WILL 
*         BE SKIPPED AND THEN THE SLAVE RESET IS PERFORMED. 
* 
*** 7.0   MESSAGES
**
*   7.1   NORMAL MESSAGES 
* 
*         1. IDTNN -  MODULE NAME 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.
* 
*   7.2   ERROR FORMAT
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY IDT TO REPORT ERRORS
*         DETECTED BY THE IPI DISK DRIVER.
* 
*         00  IDT - CM3 DISK SUBSYSTEM TEST 
*         01  IDTNN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04
*         05  B0-B4   = BBBBB BBBBB BBBBB BBBBB BBBBB 
*         06  B4-B9   = BBBBB BBBBB BBBBB BBBBB BBBBB 
*         07  B10-B15 = BBBBB BBBBB BBBBB BBBBB BBBBB BBBBB 
*         10
*         11        DRIVER GENERAL STATUS WORD = SSSSH
*         12  FAILING TASK = TTD    LOW LEVEL ERROR CODE = LLH
*         13
*         14                RESPONSE PACKET (HEX) 
*         15  1D  - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         16  9D  - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         17  17D - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         20  25D - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         21  33D - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
*         22  41D - RRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRR 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED (OCTAL).
*         BBBBB = CONTENTS OF B REGISTERS (OCTAL).
*         SSSS  = IPI COMMON DRIVER GENERAL STATUS WORD (HEX).
*         TT    = IPI COMMON DRIVER FAILING TASK (DEC). 
*         LL    = IPI COMMON DRIVER LOW LEVEL ERROR CODE (HEX). 
*         RRRR  = CONTENTS OF IPI CHANNEL RESPONSE PACKET (HEX).
* 
* 
*         THE  FOLLOWING DISPLAY FORMAT IS USED BY IDT TO REPORT DISK 
*         READ/WRITE DATA COMPARE ERRORS TO THE USER. 
* 
*         00  IDT - CM3 DISK SUBSYSTEM TEST 
*         01  IDTNN - (M-----------------------T) 
*         02
*         03  ABORTED ON DATA COMPARE ERROR 
*         04          WORD  MMMH
*         05
*         06
*         07
*         10  IB = IIII IIII IIII IIII IIII IIII IIII IIII
*         11  OB = OOOO OOOO OOOO OOOO OOOO OOOO OOOO OOOO
*         12
*         13  B0-B4    = BBBBB BBBBB BBBBB BBBBB BBBBB
*         14  B5-B9    = BBBBB BBBBB BBBBB BBBBB BBBBB
*         15  B10-B15  = BBBBB BBBBB BBBBB BBBBB BBBBB BBBBB
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         MMMM  = WORD OF SECTOR AT WHICH ERROR OCCURRED (HEX). 
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED (OCTAL).
*         OOOO  = CONTENTS OF OUTPUT BUFFER (HEX). STARTING LOCATION
*                 IS RELATIVE TO INPUT BUFFER ERROR LOCATION. 
*         IIII  = CONTENTS OF INPUT BUFFER (HEX). STARTING AT ERROR 
*                 LOCATION. 
*         BBBBB = CONTENTS OF B REGISTERS (OCTAL).
* 
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  IDT  TO  REPORT 
*         PARAMETER ENTRY ERRORS TO THE USER. 
* 
*         00  IDT - CM3 DISK SUBSYSTEM TEST 
*         01  IDTNN - (M-----------------------T) 
*         02
*         03  (E----------------M)
*         04  (E----------------D)
*         05  DEVICE CODE = DDDDB 
*         06  P0 - P4  PPPP PPPP PPPP PPPP PPPP 
*         07  P5 - P9  PPPP PPPP PPPP PPPP PPPP 
*         10
*         11  PARAMETERS DESCRIBED IN MODULE IDT99
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         E---M = ACCESS LEVEL OR PARAM ERROR MESSAGE.
*         E---D = DESCRIPTION OF THE ERROR IF PARAM ERROR.
*         DDDD  = DEVICE CODE.
*         PPPP  = CONTENTS OF THE PARAMETER WORD IN HEX.
* 
*** 8.0   GLOSSARY
**
*   8.1   ABBREVIATIONS 
* 
*         CML     - CONCURRENT MAINTENANCE LIBRARY
*         DMA     - DIRECT MEMORY ACCESS
*         ERS     - EXTERNAL REFERENCE SPECIFICATION
*         IDT     - DISK SUBSYSTEM TEST FOR CM3 SUBSYSTEMS
*         IPI     - INTELLIGENT PERIPHERAL INTERFACE
*         MALET   - MAINTENANCE APPLICATION LANGUAGE FOR EQUIPMENT
*                   TESTING 
*         PP      - PERIPHERAL PROCESSOR
* 
* 
*IF DEF,MVE,1 
   MODULE IDT00,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT00,IFSD(124)LOCK,16BIT 
***       IDT00 - CM DIAGNOSTICS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         EXECUTES A PREDETERMINED SERIES OF  INLINE DIAGNOSTIC ROUTINES
*         IN THE CM.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  DISPLAY THE TEST NUMBER TO BE EXECUTED. 
*         3.  RESERVE THE CHANNEL.
*         4.  ISSUE EXECUTE COMMAND FOR THE SELECTED TEST.
*         5.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*         6.  IF ALL TESTS NOT COMPLETED, INCREMENT TEST NUMBER AND  GO 
*             TO STEP 3.
*         7.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 6. 
*         8.  EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B0  - DIAGNOSTIC TEST NUMBER
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - POST ERROR DISPLAY 
* 
   BASE OCTAL 
0  FORMAT IDT00 - CM DIAGNOSTICS
2  FORMAT IDT00  ERROR(S) = *DECD 
6  FORMAT IDT00 - CM DIAGNOSTICS  *DD 
* 
   EQUATE CREL=2, CRESC=3, CEXCM=6
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 0 TO DISPLAY, PRINT    *MODULE MESSAGE 
   B0=1                       *DIAG TEST NUMBER 
   B13=0                      *ERROR COUNT
* 
* ------------------TEST------------------------------------- 
* 
30 IF(ES.AND.TM.EQ.TM) MSG 6 (B0) TO PRINT   INTERACTIVE MSG
   IF(ES.AND.TM.NE.TM) MSG 6 (B0) TO DISPLAY   CONSOLE MSG
   B14=CRESC                  *COMMAND NUMBER 
   RES CH, ABT 70             *RESERVE CHANNEL
   B14=CEXCM
   EXECUTE CM B0, ABT 70      *EXECUTE ROUTINE
* 
40 GOTO 30 WHILE (B0+1.LE.26D)  *IF SERIES NOT COMPLETE 
* 
   GOTO 75                    *EXIT THE MODULE
* 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1       *REL ABORTED
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0) GOTO 77        *REL ABORTED
   GOTO 40
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *IDT00 - INLINE ROUTINES
*IF DEF,MVE,1 
   MODULE IDT01,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT01,IFSD(124)LOCK,16BIT 
***       IDT01 - ONES AND ZEROS TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING DATA PATTERNS OF ALL ONES AND ALL ZEROS.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE FFFF HEX. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK (400H/2000B WORDS). 
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS  2  THROUGH  6  USING A DATA PATTERN OF  ALL 
*             ZEROS.
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - PATTERN NUMBER
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (400H/2000B) 
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         OB(406H/2006B)
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDT98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDT01 - ONES AND ZEROS TEST 
2  FORMAT IDT01  ERROR(S) = *DECD 
6  FORMAT IDT01 - ONES/ZEROS TEST PPU MODE - PATTERN=*HEX 
7  FORMAT IDT01 - ONES/ZEROS TEST DMA MODE - PATTERN=*HEX 
* 
   DATA (OB(2006B),CON) FFFFH,0000H    *DATA PATTERNS 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
*IF DEF,MVE,2 
   IF (DC.EQ.120B) B2=700D    *PRE-ALLOCATED CYL FOR CM3/FSD2 
   IF (DC.EQ.121B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
*IF -DEF,MVE,1
   IF (DC.EQ.124B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
   B0=0                       *PATTERN NUMBER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
* 
* -----------------TEST-------------------------------------
* 
30 DUP OB(B0+2006B) TO OB(0) FOR B5    *GENERATE PATTERN
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
* 
* --------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 FROM PP I/O
* 
   GOTO 30 WHILE (B0+1.LT.2)  *NEXT PATTERN 
* 
   IF(SB(60D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE 
* 
   B0=0                       *PATTERN NUMBER 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP OB(B0+2006B) TO OB(0) FOR B5    *GENERATE PATTERN
   DUP 0000H TO IB(0) FOR 2000B        *CLEAR IB
   IF(ES.AND.TM.EQ.TM) MSG 7 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 7 (OB(0)) TO DISPLAY  *CONSOLE 
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B10=OB(B0+2006B).XOR.FFFFH  *COMPLEMENT DATA 
   DUP B10 TO OB(0) FOR B5     *GENERATE PATTERN
   IF(ES.AND.TM.EQ.TM) MSG 7(B10) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(B10) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
* 
* --------CHECK DATA READ 
* 
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
* 
* 
   GOTO 75                      *EXIT MODULE
* 
* --------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 
* 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *IDT01 - ONES AND ZEROS TEST
*IF DEF,MVE,1 
   MODULE IDT03,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT03,IFSD(124)LOCK,16BIT 
***       IDT03 - ALTERNATING ONES TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING DATA PATTERNS OF ALTERNATE ONES AND ZEROS (AAAAA, 
*         55555 HEX). 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE AAAA HEX. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK (400H/2000B WORDS). 
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS  2  THROUGH  6  USING A DATA PATTERN OF 5555 
*             HEX.
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - PATTERN NUMBER
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (400H/2000B) 
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         OB(406H/2006B)
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDT98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDT03 - ALTERNATING ONES TEST 
2  FORMAT IDT03  ERROR(S) = *DECD 
6  FORMAT IDT03 - ALTERNATING ONES PPU MODE - PATTERN=*HEX
7  FORMAT IDT03 - ALTERNATING ONES DMA MODE - PATTERN=*HEX
* 
   DATA (OB(2006B),CON) AAAAH,5555H    *DATA PATTERNS 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
*IF DEF,MVE,2 
   IF (DC.EQ.120B) B2=700D    *PRE-ALLOCATED CYL FOR CM3/FSD2 
   IF (DC.EQ.121B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
*IF -DEF,MVE,1
   IF (DC.EQ.124B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
   B0=0                       *PATTERN NUMBER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
* 
* -----------------TEST-------------------------------------
* 
30 DUP OB(B0+2006B) TO OB(0) FOR B5    *GENERATE PATTERN
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
* 
* --------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 FROM PP I/O
* 
   GOTO 30 WHILE (B0+1.LT.2)  *NEXT PATTERN 
* 
   IF(SB(60D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE 
* 
   B0=0                       *PATTERN NUMBER 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP OB(B0+2006B) TO OB(0) FOR B5    *GENERATE PATTERN
   DUP 0000H TO IB(0) FOR 2000B        *CLEAR IB
   IF(ES.AND.TM.EQ.TM) MSG 7(OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(OB(0)) TO DISPLAY  *CONSOLE
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B10=OB(B0+2006B).XOR.FFFFH  *COMPLEMENT DATA 
   DUP B10 TO OB(0) FOR B5     *GENERATE PATTERN
   IF(ES.AND.TM.EQ.TM) MSG 7(B10) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(B10) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
* 
* --------CHECK DATA READ 
* 
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
* 
* 
   GOTO 75                      *EXIT MODULE
* 
* --------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 
* 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *IDT03 - ALTERNATING ONES TEST
*IF DEF,MVE,1 
   MODULE IDT05,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT05,IFSD(124)LOCK,16BIT 
***       IDT05 - SLIDING ZEROS TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING AN EIGHT BIT SLIDING ZERO DATA PATTERN (FEFE, 
*         FDFD, FBFB, F7F7, EFEF, DFDF, BFBF AND 7F7F HEX). 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE FEFE HEX. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK (400H/2000B WORDS). 
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS  2  THROUGH  6  USING A DATA PATTERNS OF FDFD
*             FBFB, F7F7, EFEF, DFDF, BFBF, AND 7F7F HEX. 
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         11. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - PATTERN NUMBER
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (400H/2000B) 
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         OB(406H/2006B)
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDT98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDT05 - SLIDING ZEROS TEST
2  FORMAT IDT05  ERROR(S) = *DECD 
6  FORMAT IDT05 - SLIDING ZEROS PPU MODE - PATTERN=*HEX 
7  FORMAT IDT05 - SLIDING ZEROS DMA MODE - PATTERN=*HEX 
* 
   DATA (OB(2006B),CON) FEFEH          *DATA PATTERNS 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
*IF DEF,MVE,2 
   IF (DC.EQ.120B) B2=700D    *PRE-ALLOCATED CYL FOR CM3/FSD2 
   IF (DC.EQ.121B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
*IF -DEF,MVE,1
   IF (DC.EQ.124B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
   B0=0                       *PATTERN NUMBER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
* 
* -----------------TEST-------------------------------------
* 
30 DUP OB(2006B) TO OB(0) FOR B5    *GENERATE PATTERN 
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
* 
* --------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 FROM PP I/O
* 
   OB(2006B)=OB(2006B).LS.1    *SHIFT IN NEW PATTERN
   GOTO 30 WHILE (B0+1.LT.8D)  *NEXT PATTERN
* 
   IF(SB(60D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE 
* 
   OB(2006B)=FEFEH
   B0=0                       *PATTERN NUMBER 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP OB(2006B) TO OB(0) FOR B5    *GENERATE PATTERN 
   DUP 0000H TO IB(0) FOR 2000B     *CLEAR IB 
   IF(ES.AND.TM.EQ.TM) MSG 7(OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(OB(0)) TO DISPLAY  *CONSOLE
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B10=OB(2006B).XOR.FFFFH  *COMPLEMENT DATA
   DUP B10 TO OB(0) FOR B5     *GENERATE PATTERN
   IF(ES.AND.TM.EQ.TM) MSG 7(B10) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(B10) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
* 
* --------CHECK DATA READ 
* 
56 WC=B5                        *WORD COUNT 
   BA=0                         *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
* 
   OB(2006B)=OB(2006B).LS.1     *SHIFT IN NEW PATTERN 
   GOTO 50 WHILE (B0+1.LT.8D)   *NEXT PATTERN 
* 
   GOTO 75                      *EXIT MODULE
* 
* --------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 
* 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *IDT05 - SLIDING ZEROS TEST 
*IF DEF,MVE,1 
   MODULE IDT07,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT07,IFSD(124)LOCK,16BIT 
***       IDT07 - SLIDING ONES TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING AN EIGHT BIT SLIDING ONE DATA PATTERN (0101,
*         0202, 0404, 0808, 1010, 2020, 4040 AND 8080 HEX). 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL BE 0101 HEX. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK (400H/2000B WORDS). 
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS  2  THROUGH  6  USING A DATA PATTERNS OF 0202
*             0404, 0808, 1010, 2020, 4040, AND 8080 HEX. 
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - PATTERN NUMBER
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (400H/2000B) 
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         OB(406H/2006B)
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDT98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDT07 - SLIDING ONES TEST 
2  FORMAT IDT07  ERROR(S) = *DECD 
6  FORMAT IDT07 - SLIDING ONES PPU MODE - PATTERN=*HEX
7  FORMAT IDT07 - SLIDING ONES DMA MODE - PATTERN=*HEX
* 
   DATA (OB(2006B),CON) 0101H          *DATA PATTERNS 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
*IF DEF,MVE,2 
   IF (DC.EQ.120B) B2=700D    *PRE-ALLOCATED CYL FOR CM3/FSD2 
   IF (DC.EQ.121B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
*IF -DEF,MVE,1
   IF (DC.EQ.124B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
   B0=0                       *PATTERN NUMBER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
* 
* -----------------TEST-------------------------------------
* 
30 DUP OB(2006B) TO OB(0) FOR B5    *GENERATE PATTERN 
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
* 
* --------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 FROM PP I/O
* 
   OB(2006B)=OB(2006B).LS.1    *SHIFT IN NEW PATTERN
   GOTO 30 WHILE (B0+1.LT.8D)  *NEXT PATTERN
* 
   IF(SB(60D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE 
* 
   OB(2006B)=0101H
   B0=0                       *PATTERN NUMBER 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP OB(2006B) TO OB(0) FOR B5    *GENERATE PATTERN 
   DUP 0000H TO IB(0) FOR 2000B     *CLEAR IB 
   IF(ES.AND.TM.EQ.TM) MSG 7(OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(OB(0)) TO DISPLAY  *CONSOLE
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B10=OB(2006B).XOR.FFFFH  *COMPLEMENT DATA
   DUP B10 TO OB(0) FOR B5     *GENERATE PATTERN
   IF(ES.AND.TM.EQ.TM) MSG 7(B10) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(B10) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
* 
* --------CHECK DATA READ 
* 
56 WC=B5                        *WORD COUNT 
   BA=0                         *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
* 
   B1 = 0                       *CLEAR LOOP COUNT 
   OB(2006B)=OB(2006B).LS.1     *SHIFT IN NEW PATTERN 
   GOTO 50 WHILE (B0+1.LT.8D)   *NEXT PATTERN 
* 
   GOTO 75                      *EXIT MODULE
* 
* --------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 
* 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *IDT07 - SLIDING ONES TEST
*IF DEF,MVE,1 
   MODULE IDT08,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT08,IFSD(124)LOCK,16BIT 
***       IDT08 - ADDRESS TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM,
*         USING AN ADDRESS PATTERN. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         1A. DEFINE THE CYLINDER, TRACK AND SECTOR TO BE USED FOR THE
*             ASSIGNED DEVICE CODE. 
*         2.  GENERATE THE DATA BUFFER OF THE PATTERN  TO  BE  USED  TO 
*             TEST THE DISK DATA PATH.  THE PATTERN WILL AN INCREMENTING
*             ADDRESS PATTERN.
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE PP BUFFER TO THE DISK (400H/2000B WORDS). 
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS 2 THROUGH 6 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 7. 
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - ADDRESS PATTERN 
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (400H/2000B) 
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B10 - COMPLEMENT OF DATA
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDT98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDT08 - ADDRESS TEST
2  FORMAT IDT08  ERROR(S) = *DECD 
6  FORMAT IDT08 - ADDRESS TEST PPU MODE 
7  FORMAT IDT08 - ADDRESS TEST DMA MODE 
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
*IF DEF,MVE,2 
   IF (DC.EQ.120B) B2=700D    *PRE-ALLOCATED CYL FOR CM3/FSD2 
   IF (DC.EQ.121B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
*IF -DEF,MVE,1
   IF (DC.EQ.124B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
* 
* -----------------TEST-------------------------------------
* 
   B0=0                       *INITIALIZE PATTERN 
30 DUP B0 TO OB(B0) FOR 1     *GENERATE PATTERN 
   GOTO 30 WHILE (B0+1.LE.2000B)
32 DUP 0000H TO IB(0) FOR 2000B   *CLEAR IB 
   IF(ES.AND.TM.EQ.TM) MSG 6 TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
* 
* --------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 FROM PP I/O
* 
   IF(SB(60D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE 
* 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   IF(ES.AND.TM.EQ.TM) MSG 7 TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 7 TO DISPLAY  *CONSOLE 
   B0=0                       *INITIALIZE PATTERN 
53 DUP B0 TO OB(B0) FOR 1     *GENERATE PATTERN 
   GOTO 53 WHILE (B0+1.LE.2000B)
   DUP 0000H TO IB(0) FOR 2000B        *CLEAR IB
51 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
52 B0=0                       *INITIALIZE PATTERN 
54 OB(B0)=OB(B0).XOR.FFFFH    *COMPLEMENT DATA
   GOTO 54 WHILE (B0+1.LE.2000B)
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
* 
* --------CHECK DATA READ 
* 
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 52 WHILE (B8+1.LT.2D)   *READ TO CM 
* 
* 
   GOTO 75                      *EXIT MODULE
* 
* --------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 
* 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 EXIT                       *EXIT MODULE
* 
   END 20 
COMPILE                       *IDT08 - ADDRESS TEST 
*IF DEF,MVE,1 
   MODULE IDT09,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT09,IFSD(124)LOCK,16BIT 
***       IDT09 - RANDOM DATA TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM 
*         TEN  TIMES USING EITHER  A  RANDOM DATA PATTERN  OR  A
*         USER SPECIFIED DATA PATTERN.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  IF PARAMETER P0 EQUALS ZERO, OBTAIN A RANDOM NUMBER  SEED 
*             FROM THE REAL TIME CLOCK AND GENERATE RANDOM DATA BUFFER. 
*         3.  IF PARAMETER P0 IS NON-ZERO, GENERATE DATA  BUFFER  USING 
*             CONTENTS OF P0 AS THE DATA PATTERN. 
*         4.  RESERVE THE ASSIGNED DRIVE. 
*         5.  WRITE THE PP BUFFER TO THE DISK (400H/2000B WORDS). 
*         6.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         7.  CHECK THE DATA READ FROM THE DISK.
*         8.  REPEAT STEPS 2 THROUGH 7 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         9.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 8. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B0  - INDEX 
*         B1  - NOT USED
*         B2  - CYLINDER NUMBER 
*         B3  - TRACK NUMBER
*         B4  - SECTOR NUMBER 
*         B5  - NO. OF WORDS IN SECTOR (400H/2000B) 
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDT98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDT09 - RANDOM DATA TEST
2  FORMAT IDT09  ERROR(S) = *DECD 
6  FORMAT IDT09 - RANDOM DATA TEST PPU MODE - PATTERN=*HEX
7  FORMAT IDT09 - RANDOM DATA TEST DMA MODE - PATTERN=*HEX
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
*IF DEF,MVE,2 
   IF (DC.EQ.120B) B2=700D    *PRE-ALLOCATED CYL FOR CM3/FSD2 
   IF (DC.EQ.121B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
*IF -DEF,MVE,1
   IF (DC.EQ.124B) B2=1409D   *PRE-ALLOCATED CYL FOR CM3/XMD3 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
* 
* -----------------TEST-------------------------------------
* 
30 IF(P0.EQ.0) GOTO 31        *RANDOM PATTERNS
   DUP P0 TO OB(0) FOR B5     *GENERATE PATTERN 
   GOTO 32
31 RANDOM TO OB FOR B5        *RANDOM DATA
32 IF(ES.AND.TM.EQ.TM) MSG 6 (OB(0)) TO PRINT  *TERMINAL
   IF(ES.AND.TM.NE.TM) MSG 6 (OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
* 
* --------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 FROM PP I/O
* 
   IF(SB(60D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE 
* 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP 0000H TO IB(0) FOR 2000B     *CLEAR IB 
   IF(P0.EQ.0) GOTO 51        *RANDOM PATTERNS
   DUP P0 TO OB(0) FOR B5     *GENERATE PATTERN 
   GOTO 52
51 RANDOM TO OB FOR B5        *RANDOM DATA
52 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
53 B0=0                        *CLEAR INDEX 
54 OB(B0)=OB(B0).XOR.FFFFH     *COMPLEMENT DATA 
   GOTO 54 WHILE (B0+1.LT.2000B)
   IF(ES.AND.TM.EQ.TM) MSG 7(OB(0)) TO PRINT  *TERMINAL 
   IF(ES.AND.TM.NE.TM) MSG 7(OB(0)) TO DISPLAY  *CONSOLE
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
* 
* --------CHECK DATA READ 
* 
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 53 WHILE (B8+1.LT.2D)   *READ TO CM 
* 
* 
   GOTO 75                      *EXIT MODULE
* 
* --------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 
* 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 END 20 
COMPILE                       *IDT09 - RANDOM DATA TEST 
*IF DEF,MVE,1 
   MODULE IDT11,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT11,IFSD(124)LOCK,16BIT 
***       IDT11 - ANY SECTOR TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TO VERIFY PARAMETERS FOR MODULE IDT11A. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  MAKE SURE ACCESS LEVEL IS GREATER THAN 3 IF A CYLINDER
*             OUTSIDE THE PREALLOCATED AREA IS SPECIFIED IN P1. 
*         3.  VALIDATE PARAMETERS P1, P2, AND P3 FOR DEVICE ASSIGNED. 
*         4.  EXIT TO IDT11A. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. IDT11 NOT EXECUTED   AL=*O  NEED AL=4
*         2. IDT11 NOT EXECUTED  PARAM ERROR  (OCT VALUES)
*         3. P1 - INVALID CYLINDER FOR ASSIGNED DEVICE
*         4. P2 - INVALID TRACK FOR ASSIGNED DEVICE 
*         5. P3 - INVALID SECTOR FOR ASSIGNED DEVICE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         N/A 
* 
*    2.2  REGISTERS USED
* 
*         B2  - CYLINDER VALUE
*         B3  - TRACK VALUE 
*         B4  - SECTOR VALUE
*         B11 - ERROR MESSAGE INDEX 
*         B13 - MODULE ERROR COUNT
* 
*         BUFFERS USED- 
* 
*         N/A 
* 
*    2.3  SUBMODULES USED 
* 
*         IDT11A - ANY SECTOR TEST. 
* 
* 
   BASE OCTAL 
0  FORMAT IDT - CM3 DISK SUBSYSTEM TEST 
1  FORMAT IDT11 - ANY SECTOR TEST 
2  FORMAT IDT11  ERROR(S) = 0001D 
3  FORMAT IDT11  IDT11 NOT EXECUTED.  AL OR PARAM ERROR.
5  FORMAT P0 - P4  *HEXH *HEXH *HEXH *HEXH *HEXH
6  FORMAT P5 - P9  *HEXH *HEXH *HEXH *HEXH *HEXH
7  FORMAT PARAMETERS DESCRIBED IN MODULE IDT99
11 FORMAT IDT11 NOT EXECUTED   AL = *O  NEED AL = 04
12 FORMAT IDT11 NOT EXECUTED  PARAM ERROR  (HEX VALUES) 
13 FORMAT DEVICE CODE = *OCTB 
15 FORMAT P1 - INVALID CYLINDER FOR ASSIGNED DEVICE 
16 FORMAT P2 - INVALID TRACK FOR ASSIGNED DEVICE
17 FORMAT P3 - INVALID SECTOR FOR ASSIGNED DEVICE 
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 1 TO DISPLAY, PRINT    *RUNNING MESSAGE
* 
* --------OBTAIN MAXIMUM VALUES 
* 
   B2=7777B                   *PRESET B2
*IF DEF,MVE,7 
   IF (DC.EQ.120B)B2=700D     *MAXCYL - CM3/FSD2
   IF (DC.EQ.120B)B3=23D      *MAXTRK - CM3/FSD2
   IF (DC.EQ.120B)B4=46D      *MAXSEC - CM3/FSD2
* 
   IF (DC.EQ.121B) B2=1409D   *MAXCYL - CM3/XMD3
   IF (DC.EQ.121B) B3=18D     *MAXTRK - CM3/XMD3
   IF (DC.EQ.121B) B4=20D     *MAXSEC - CM3/XMD3
*IF -DEF,MVE,3
   IF (DC.EQ.124B) B2=1409D   *MAXCYL - CM3/XMD3
   IF (DC.EQ.124B) B3=18D     *MAXTRK - CM3/XMD3
   IF (DC.EQ.124B) B4=20D     *MAXSEC - CM3/XMD3
* 
* 
* --------VALIDATE ACCESS LEVEL 
* 
   IF (AL.GE.4) GOTO 22       *IF ACCESS LEVEL OK 
   IF (P1.LT.B2) GOTO 21      *ACCESS LEVEL TOO LOW 
   GOTO 22
21 MSG 11 (AL) TO LINE 3      *AL ERROR MESSAGE 
   GOTO 34
* 
* --------VALIDATE PARAMETERS 
* 
22 B11=15                     *P1 ERROR INDEX 
   IF (P1.LT.0) GOTO 33       *IF PARAMETER P1 BAD
   IF (P1.GT.B2) GOTO 33      *IF PARAMETER P1 BAD
* 
   B11=16                     *P2 ERROR INDEX 
   IF (P2.LT.0) GOTO 33       *IF PARAMETER P2 BAD
   IF (P2.GT.B3) GOTO 33      *IF PARAMETER P2 BAD
* 
   B11=17                     *P3 ERROR INDEX 
   IF (P3.LT.0) GOTO 33       *IF PARAMETER P3 BAD
   IF (P3.GT.B4) GOTO 33      *IF PARAMETER P3 BAD
* 
   EXIT TO 11A                *ANY SECTOR TEST
* 
33 MSG B11 TO LINE 4          *REPORT PARAMETER ERROR 
   MSG 7 TO LINE 11 
   MSG 12 TO LINE 3 
34 MSG 5 (P0,P1,P2,P3,P4) TO LINE 6 
   MSG 6 (P5,P6,P7,P8,P9) TO LINE 7 
   MSG 0 TO LINE 0            *TITLE MESSAGE
   MSG 1 TO LINE 1            *MODULE TITLE 
   MSG 13 (DC) TO LINE 5      *DEVICE CODE MESSAGE
   PICTURE
   HALT 
   BLANK
   MSG 2 TO DAYFILE 
   MSG 3 TO DAYFILE 
* 
77 END 20 
COMPILE                       *IDT11 - ANY SECTOR TEST
*IF DEF,MVE,1 
   MODULE IDT11A,IFSD(120,121)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDT11A,IFSD(124)LOCK,16BIT
***       IDT11A - ANY SECTOR TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH TO AND FROM THE DISK SUBSYSTEM, USING A
*         A USER SPECIFIED OR RANDOM DATA PATTERN, AND WRITNG TO AND
*         READING FROM THE USER SPECIFIED DISK SECTOR.
* 
*    1.2  METHOD- 
* 
*         1.  ASSIGN PARAMETERS P1, P2, AND P3 TO B2, B3 AND B4.
*         2.  GENERATE DATA  BUFFER  USING CONTENTS OF P0 AS THE DATA 
*             PATTERN, IF NON-ZERO, OR RANDOM DATA IF ZERO. 
*         3.  RESERVE THE ASSIGNED DRIVE. 
*         4.  WRITE THE OB BUFFER TO THE DISK AT THE LOCATION SPECIFIED 
*             BY B2, B3, AND B4 (400H/2000B WORDS). 
*         5.  READ THE SECTOR TO THE MALET INPUT BUFFER.
*         6.  CHECK THE DATA READ FROM THE DISK.
*         7.  REPEAT STEPS 2 THROUGH 6 UTILIZING DMA READS AND WRITES,
*             IF THE CHANNEL SUPPORTS DMA.
*         8.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 7. 
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         PARAMETERS P1, P2 AND P3 ARE VALIDATED BY IDT11.
* 
*    2.2  REGISTERS USED
* 
*         B0  - INDEX 
*         B1  - NOT USED
*         B2  - CYLINDER VALUE
*         B3  - TRACK VALUE 
*         B4  - SECTOR VALUE
*         B5  - NO. OF WORDS IN SECTOR (400H/2000B) 
*         B7  - USING DMA KEY 
*         B8  - LOOP COUNT FOR COMPLEMENT DATA USAGE
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
*         BA  - DATA BUFFER INDEX 
*         WC  - WORD COUNT FOR COMMANDS 
* 
*         BUFFERS USED- 
* 
*         OB(0) TO OB(3FFH/1777B) 
* 
*         IB(0) TO IB(3FFH/1777B) 
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - PROCESS PRODUCT OVERLAY ERRORS.
*         IDT98C - PROCESS DATA COMPARE ERRORS. 
* 
* 
   BASE OCTAL 
0  FORMAT IDT11A - ANY SECTOR TEST
1  FORMAT IDT11A  ERROR(S) = *DECD
6  FORMAT IDT11A -  PPU CYL=*OCT TRK=*OCT SEC=*OCT PATT=*HEX
7  FORMAT IDT11A -  DMA CYL=*OCT TRK=*OCT SEC=*OCT PATT=*HEX
* 
   EQUATE CCOMP=0, CREAD=1, CREL=2, CRESD=7 
   EQUATE CWRITE=5, CRDMA=11, CWDMA=12
* 
* -----------------INITIALIZATION---------------------------
* 
20 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
* 
* --------INITIALIZE REGISTERS
* 
   B2=P1                      *CYLINDER PARAMETER 
   B3=P2                      *TRACK PARAMETER
   B4=P3                      *SECTOR PARAMETER 
   B7=0                       *CLEAR DMA USE FLAG 
   B5=2000B                   *SECTOR SIZE
   B13=0                      *ERROR COUNT
* 
* -----------------TEST-------------------------------------
* 
30 IF(P0.EQ.0) GOTO 31        *RANDOM PATTERNS
   DUP P0 TO OB(0) FOR B5     *GENERATE PATTERN 
   GOTO 32
31 RANDOM TO OB FOR B5        *RANDOM DATA
32 IF(ES.AND.TM.EQ.TM) MSG 6(B2,B3,B4,OB(0)) TO PRINT  *INTERACTIVE MESSA 
   IF(ES.AND.TM.NE.TM) MSG 6(B2,B3,B4,OB(0)) TO DISPLAY  *CONSOLE 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70      *PP READ SECTOR 
* 
* --------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 FROM PP I/O
* 
   IF(SB(60D).EQ.0) GOTO 75   *DMA NOT SUPPORTED, EXIT MODULE 
* 
   B7=1                       *USING DMA
50 B8=0                       *CLEAR COMPLEMENT LOOP KEY
   DUP 0000H TO IB(0) FOR 2000B     *CLEAR IB 
   IF(P0.EQ.0) GOTO 51        *RANDOM PATTERNS
   DUP P0 TO OB(0) FOR B5     *GENERATE PATTERN 
   GOTO 52
51 RANDOM TO OB FOR B5        *RANDOM DATA
52 B14=CRESD                  *COMMAND NUMBER 
   IF(ES.AND.TM.EQ.TM) MSG 7(B2,B3,B4,OB(0)) TO PRINT  *INTERACTIVE MESSA 
   IF(ES.AND.TM.NE.TM) MSG 7(B2,B3,B4,OB(0)) TO DISPLAY  *CONSOLE 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWDMA
   WRITE DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA WRITE SECTOR
   B14=CREAD
   READ CYL B2 TRK B3 SEC B4, ABT 70       *PP READ SECTOR
   GOTO 56                     *COMPARE DATA
53 B0=0                        *CLEAR INDEX 
54 OB(B0)=OB(B0).XOR.FFFFH     *COMPLEMENT DATA 
   GOTO 54 WHILE (B0+1.LT.2000B)
   IF(ES.AND.TM.EQ.TM) MSG 7(B2,B3,B4,OB(0)) TO PRINT  *INTERACTIVE MESSA 
   IF(ES.AND.TM.NE.TM) MSG 7(B2,B3,B4,OB(0)) TO DISPLAY  *CONSOLE MSG 
   B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CWRITE 
   WRITE CYL B2 TRK B3 SEC B4, ABT 70     *PP WRITE SECTOR
   B14=CRDMA
   READ DMA CYL B2 TRK B3 SEC B4, ABT 70  *DMA READ SECTOR
* 
* --------CHECK DATA READ 
* 
56 WC=B5                      *WORD COUNT 
   BA=0                       *BUFFER INDEX 
57 B14=CCOMP
   COMPARE OB(BA) TO IB(BA) FOR WC, ABT 60   *COMPARE DATA FROM DMA I/O 
   GOTO 53 WHILE (B8+1.LT.2D)   *READ TO CM 
* 
* 
   GOTO 75                      *EXIT MODULE
* 
* --------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 
* 
   IF(B13.GT.10D) GOTO 75     *EXIT AFTER 10D COMPARE ERRORS
   BA=BA+1                    *RESET BUFFER INDEX 
   WC=B5-BA                   *RESET WORD COUNT 
   IF(B7.NE.0) GOTO 57        *USING DMA COMPARE
   GOTO 40                    *CONTINUE COMPARE 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1 
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0)GOTO 77         *REL ABORTED
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE DRIVE
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 1 (B13) TO DAYFILE 
* 
77 END 20 
COMPILE                       *IDT11A - ANY SECTOR TEST 
*IF DEF,MVE,1 
   MODULE IDT13,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT13,IFSD(124)LOCK,16BIT 
***       IDT13 - DRIVE DIAGNOSTICS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         INITIATES EXECUTION OF THE ASSIGNED DISK DRIVE DIAGNOSITICS.
* 
*    1.2  METHOD- 
* 
*         1.  IF AL NOT EQUAL TO OR GREATER THEN 10, EXIT.
*         1A. DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE CHANNEL.
*         3.  ISSUE THE EXECUTE DRIVE DIAGNOSTICS COMMAND.
*         4.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*         5.  IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1A THROUGH 4.
*         6.  EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
*         2. IDT13 NOT EXECUTED   AL=*O  NEED AL=10 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         NONE
* 
*    2.2  REGISTERS USED
* 
*         B9  - REL ABORT KEY 
*         B11 - ERROR STATUS FLAG 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - POST ERROR DISPLAY 
* 
* 
   BASE OCTAL 
0  FORMAT IDT13 - DRIVE DIAGNOSTICS 
2  FORMAT IDT13  ERROR(S) = *DECD 
6  FORMAT IDT13 NOT EXECUTED   AL = *O  NEED AL = 10
* 
   EQUATE CREL=2, CRESD=7, CEXDR=10 
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 IF (AL.GE.10) GOTO 22      *IF ACCESS LEVEL OK 
   MSG 6 (AL) TO DISPLAY, PRINT, DAYFILE  *ERROR MESSAGE
   B13=1
   GOTO 76
22 MSG 0 TO DISPLAY, PRINT    *RUNNING MESSAGE
   B13=0                      *ERROR COUNT
* 
* ------------------TEST------------------------------------- 
* 
30 B14=CRESD                  *COMMAND NUMBER 
   RES DRIVE, ABT 70          *RESERVE DRIVE
   B14=CEXDR
   EXECUTE DRIVE, ABT 70      *EXEC DRIVE DIAGNOSTICS 
* 
   GOTO 75                    *EXIT 
* 
* --------PROCESS COMMAND ABORT ERRORS
* 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1       *REL ABORTED
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0) GOTO 77        *REL ABORTED
* 
* --------EXIT THE MODULE 
* 
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   IF (ES.AND.RM.NE.0) GOTO 22   *REPEAT MODULE SELECTED
76 IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
77 END 20 
COMPILE                       *IDT13 - DI DIAGNOSTICS 
*IF DEF,MVE,1 
   MODULE IDT50,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT50,IFSD(124)LOCK,16BIT 
***       IDT50 - INITIAL FORMAT DRIVE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         ISSUES AN INITIAL FORMAT OF SELECTED LOGICAL UNIT.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  CHECK FOR HIGH ENOUGH ACCESS LEVEL. 
*         3.  CHECK FOR LEGAL SECTOR SIZE.
*         4.  POST WARNING MESSAGES FOR FORMAT AND PAUSE. 
*         5.  IF -G- FORMAT THE UNIT. 
*         6.  POST RUNNING TIME FOR FORMAT. 
*         7.  IF FORMAT ROUTINE EXECUTES CORRECTLY POST THE MESSAGE 
*             FORMAT COMPLETED AND END THE MODULE.
*         8.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*         9.  END THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
* 
*    2.2  REGISTERS USED
* 
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - POST ERROR DISPLAY 
* 
   BASE OCTAL 
0  FORMAT IDT50 - INITIAL FORMAT DRIVE
1  FORMAT IDT50  ILLEGAL PARAMETER P9  P9=*OCTAL
2  FORMAT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3  FORMAT X  WARNING           WARNING            WARNING  X
4  FORMAT X ALL DATA WILL BE DESTROYED ON LOGICAL UNIT     X
5  FORMAT IDT50  PAUSE  INITIAL FORMAT  -G- TO CONTINUE 
6  FORMAT X INITIAL FORMAT CAN TAKE UP TO 90 MINUTES FOR   X
7  FORMAT X ONE UNIT.                                      X
10 FORMAT X                                                X
11 FORMAT IDT50  ACCESS LEVEL 20B OR GREATER NEEDED  AL=*OCT
12 FORMAT   FORMAT ELAPSED TIME = *D MINUTES *D SECONDS 
13 FORMAT X     FORMAT SELECTED = 2K BYTES   UNIT = *H     X
14 FORMAT         INITIAL FORMAT COMPLETED
15 FORMAT   FORMAT DID NOT COMPLETE IN 90 MINUTES 
16 FORMAT IDT50 - FORMATTING LOGICAL UNIT NUMBER (HEX) = *H 
   EQUATE CREL=2, CREFORM=14, CRESDC=7
20 MSG 0 TO DISPLAY, PRINT    *MODULE MESSAGE 
   IF (AL.GE.20B) GOTO 24 
   MSG 11 (AL) TO LINE 2      *AL ERROR MESSAGE 
   GOTO 75
24 B0=1 
   B13=0                      *ERROR COUNT
30 IF(P9.LE.10) GOTO 32       *IF P9 LE 10 CONTINUE 
   MSG 1 (P9) TO LINE 2       *P9 ERROR MESSAGE 
   GOTO 75
32 B1 = P9.LS.1               *SET SECTOR SIZE
   MSG 2 TO LINE 2            *LINE OF XXS
   MSG 10 TO LINE 3           *BLANK LINE WITH X
   MSG 3 TO LINE 4            *WARNING MESSAGE
   MSG 10 TO LINE 5           *BLANK LINE WITH X
   MSG 4 TO LINE 6            *ALL DATA WILL BE DESTROYED 
   MSG 10 TO LINE 7           *BLANK LINE WITH X
   MSG 6 TO LINE 10           *INITIAL FORMAT 90 MINUTES
   MSG 7 TO LINE 11           *ONE LOGICAL UNIT 
   MSG 10 TO LINE 12          *BLANK LINE WITH X
   MSG 13 (SB(63D)) TO LINE 13  *SECTOR SIZE MESSAGE
   MSG 10 TO LINE 14          *BLANK LINE WITH X
   MSG 3 TO LINE 15           *WARNING MESSAGE
   MSG 10 TO LINE 16          *BLANK LINE WITH X
   MSG 2 TO LINE 17           *LINE OF XXS
   MSG 5 TO LINE 21           *PAUSE MESSAGE
   MSG 5 TO DISPLAY,PRINT     *PAUSE MESSAGE
   PICTURE
   PAUSE
   BLANK
   MSG 16 (SB(63D)) TO DISPLAY,PRINT  *RUNNING MESSAGE
   B14=CRESDC                 *COMMAND NUMBER 
   RES DRIVE, ABT 40          *RESERVE DRIVE
40 MSG 12 (B2,B3) TO LINE 10  *ELAPSED TIME MESSAGE 
   B14=CREFORM                *COMMAND NUMBER 
   B8 = P9                    *SET SECTOR SIZE
   REFORM INITIAL B8, ABT 70  *INITIAL FORMAT 
   IF (SB.EQ.0) GOTO 50       *FORMAT COMPLETED 
   B10 = 5400D                *SET TIMER
*IF DEF,MVE,1 
42 DELAY 1000D MSEC           *DELAY 1 SECOND 
*IF -DEF,MVE,1
42 DELAY 900D MSEC            *DELAY 1 SECOND 
   B4 = B4 + 1                *INCREMENT TIMER
   B3 = B3 + 1                *INCREMENT TIMER
   IF(B3.EQ.74) B2 = B2 + 1   *INCREMENT TIMER
   IF(B3.EQ.74) B3 = 0        *RESET SECOND TIMER 
   IF(B4.NE.B10) GOTO 40      *WAIT FOR FORMAT TO COMPLETE
   MSG 15 TO LINE 12          *FORMAT DID NOT COMPLETE IN 90 MINUTES
44 PICTURE                    *POST ALL MESSAGES
   B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   GOTO 77                    *END MODULE 
50 MSG 14 TO LINE 12          *FORMAT COMPLETED 
   GOTO 44                    *END MODULE 
70 MSG 0 TO LINE 1            *MODULE TITLE 
   IF(B14.EQ.CREL) B9=1       *REL ABORTED
   B13=B13+1                  *UPDATE ERROR COUNT 
   CALL 98A                   *POST COMMAND ABORT DISPLAY 
   IF(B9.NE.0) GOTO 77        *REL ABORTED
   GOTO 40
75 B14=CREL                   *COMMAND NUMBER 
   REL, ABT 70                *RELEASE CONTROLLER 
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
   PICTURE
77 END 20 
COMPILE                       *IDT50 - INITIAL FORMAT DRIVE 
*IF DEF,MVE,1 
   MODULE IDT70,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT70,IFSD(124)LOCK,16BIT 
***       IDT70 - CONTROLLER RESET
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         EXECUTES A SERIES OF RESERVE STATEMENTS WHICH INCLUDES A SLAVE
*         RESET IF NO RESPONSE FROM A LOGICAL RESET.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  CHECK FOR HIGH ENOUGH ACCESS LEVEL. 
*         3.  IF P9 EQUALS 10 SKIP TO STEP 9. 
*         4.  RESERVE THE CHANNEL.
*         5.  IF RESERVE CHANNEL ROUTINE EXECUTES CORRECTLY POST THE
*             MESSAGES RESERVE CHANNEL COMPLETED, PAUSE -G- TO SLAVE
*             RESET AND PAUSE.
*         6.  IF P9 EQUALS 0 END THE MODULE.
*         7.  IF ROUTINE DETECTED ERROR, AND P9 EQUALS 0 GO TO ERROR
*             HANDLER.
*         8.  IF ROUTINE DETECTED ERROR, AND P9 NON-ZERO POST THE 
*             MESSAGE RES CH FAILED PAUSE -G- TO SLAVE RESET AND PAUSE. 
*         9.  IF P9 EQUALS 10 POST THE MESSAGE PAUSE -G- TO SLAVE RESET 
*             AND PAUSE.
*        10.  IF RESERVE SLAVE ROUTINE EXECUTES CORRECTLY POST THE
*             MESSAGE RESERVE SLAVE COMPLETED.
*        11.  IF RESERVE SLAVE ROUTINE DOES NOT RECEIVE RESPONSE IN 12
*             MINUTES POST THE MESSAGE SLAVE RESET NO RESPONSE IN 12
*             MINUTES AND END THE MODULE. 
*        12.  IF ROUTINE DETECTED ERROR, GO TO ERROR HANDLER. 
*        13.  POST MESSAGE RES DRIVE COMMAND AND RES DRIVE. 
*        14.  IF RESERVE DRIVE ROUTINE EXECUTES CORRECTLY POST THE
*             MESSAGE RESERVE DRIVE COMPLETED.
*        15.  END THE MODULE. 
* 
*    1.3  ERRORS REPORTED-
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
* 
*    2.2  REGISTERS USED
* 
*         B9  - REL ABORT KEY 
*         B13 - MODULE ERROR COUNT
*         B14 - PRODUCT OVERLAY COMMAND NUMBER
* 
*         BUFFERS USED- 
* 
*         NONE
* 
*    2.3  SUBMODULES USED 
* 
*         IDT98A - POST ERROR DISPLAY 
* 
   BASE OCTAL 
0  FORMAT IDT70 - CONTROLLER RESET
1  FORMAT IDT70  SLAVE RESET TIME = *D MINUTES *D SECONDS 
2  FORMAT IDT70  ERROR(S) = *DECD 
3  FORMAT IDT70  RES CH COMMAND 
4  FORMAT IDT70  RES CH COMMAND COMPLETED NORMALLY
5  FORMAT IDT70  RES SLAVE COMMAND
6  FORMAT IDT70  RES SLAVE COMMAND COMPLETED NORMALLY 
7  FORMAT IDT70  RES DRIVE COMMAND
10 FORMAT IDT70  RES DRIVE COMMAND COMPLETED NORMALLY 
11 FORMAT IDT70  ACCESS LEVEL 20B OR GREATER NEEDED  AL=*OCT
12 FORMAT IDT70  PAUSE RES CH FAILED -G- TO SLAVE RESET 
13 FORMAT IDT70  PAUSE  -G- TO SLAVE RESET
14 FORMAT IDT70  P9 = 0   SLAVE RESET NOT EXECUTED
15 FORMAT IDT70  SLAVE RESET NO RESPONSE IN 12 MINUTES
   EQUATE CREL=2, CRESC=3, CRESSC=13, CRESDC=7
20 MSG 0 TO DISPLAY, PRINT   *MODULE MESSAGE
   IF (AL.GE.20B) GOTO 24 
   MSG 11 (AL) TO LINE 2     *AL ERROR MESSAGE
   GOTO 75
24 B0=1 
   B2=0                      *LOOP COUNT
   B3=0                      *LOOP COUNT
   B10=0                     *LOOP COUNT
   B13=0                     *ERROR COUNT 
30 IF(P9.EQ.10) GOTO 40      *IF P9 EQ 10 SKIP RES CH 
   MSG 3 TO LINE 2           *RES CH COMMAND
   B14=CRESC                 *COMMAND NUMBER
   RES CH, ABT 34            *RESERVE CHANNEL LOGICAL RESET 
   MSG 4 TO LINE 3           *RES CH COMPLETED NORMALLY 
   GOTO 40
34 IF(P9.EQ.0) GOTO 70
   MSG 12 TO LINE 5          *RES CH FAILED G TO RESET
   MSG 12 TO DISPLAY         *RES CH FAILED G TO RESET
   PICTURE
   PAUSE
   GOTO 41
40 MSG 13 TO LINE 5          *PAUSE MSG G TO SLAVE RESET
   MSG 13 TO DISPLAY         *PAUSE MSG G TO SLAVE RESET
   PICTURE
   PAUSE
41 IF(P9.EQ.0) MSG 14 TO LINE 10  *P9 = 0 SLAVE RESET NOT EXECUTED
   IF(P9.EQ.0) GOTO 75
   MSG 5 TO LINE 7           *RES SLAVE COMMAND 
   MSG 5 TO DISPLAY          *RES SLAVE COMMAND 
42 B14=CRESSC                *COMMAND NUMBER
   RES SLAVE, ABT 70         *RESERVE CHANNEL SLAVE RESET 
   IF(SB.NE.0) GOTO 44       *IF BUSY 
   MSG 6 TO LINE 10          *RES SLAVE COMPLETED NORMALLY
   GOTO 50
44 DELAY 900D MSEC
   B4 = 720D                 *SET COUNTER TO 12 MINUTES 
   B10 = B10 + 1             *INCREMENT COUNTER 
   B3 = B3 + 1               *INCREMENT COUNTER 
   IF(B3.EQ.74) B2 = B2 + 1  *INCREMENT COUNTER 
   IF(B3.EQ.74) B3 = 0       *RESET COUNTER 
   MSG 1 (B2,B3) TO LINE 11  *SLAVE RESET TIME =
   IF(B10.LT.B4) GOTO 42     *RECHECK TIME
   MSG 15 TO LINE 13         *SLAVE RESET DID NOT COMPLETE IN 12 MINS 
   GOTO 75
50 MSG 7 TO LINE 12          *RES DRIVE COMMAND 
   B14=CRESDC                *COMMAND NUMBER
   RES DRIVE, ABT 70         *RESERVE DRIVE LOGICAL RESET 
   MSG 10 TO LINE 13         *RES DRIVE COMPLETED NORMALLY
60 GOTO 75
70 PICTURE                   *SAVE ALL MESSAGES 
   BLANK                     *CLEAR SCEEN FOR NEW MESSAGES
   MSG 0 TO LINE 1           *MODULE TITLE
   IF(B14.EQ.CREL) B9=1      *REL ABORTED 
   B13=B13+1                 *UPDATE ERROR COUNT
   CALL 98A                  *POST COMMAND ABORT DISPLAY
   IF(B9.NE.0) GOTO 77       *REL ABORTED 
   GOTO 40
75 B14=CREL                  *COMMAND NUMBER
   REL, ABT 70               *RELEASE CONTROLLER
   IF (ES.AND.RM.NE.0) GOTO 20   *REPEAT MODULE SELECTED
   IF (B13.NE.0) MSG 2 (B13) TO DAYFILE 
   PICTURE
77 END 20 
COMPILE                      *IDT70 - SLAVE RESET CONTROLLER
*IF DEF,MVE,1 
   MODULE IDT98A,IFSD(120,121)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDT98A,IFSD(124)LOCK,16BIT
***       IDT98A - 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 IDT98E 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 
* 
*         IDT98E - ERROR DISPLAY
* 
* 
   BASE OCTAL 
1  FORMAT    ABORTED ON .READ CYL. COMMAND
2  FORMAT    ABORTED ON .REL. COMMAND 
3  FORMAT    ABORTED ON .RES CH. COMMAND
5  FORMAT    ABORTED ON .WRITE CYL. COMMAND 
6  FORMAT    ABORTED ON .EXECUTE CM. COMMAND DIAGNOSTIC *DD 
7  FORMAT    ABORTED ON .RES DRIVE. COMMAND 
10 FORMAT    ABORTED ON .EXECUTE DRIVE. COMMAND 
11 FORMAT    ABORTED ON .READ DMA CYL. COMMAND
12 FORMAT    ABORTED ON .WRITE DMA CYL. COMMAND 
13 FORMAT    ABORTED ON .RES SLAVE. COMMAND 
14 FORMAT    ABORTED ON .REFORM INITIAL. COMMAND
* 
* 
* ------------POST COMMAND ABORTED
* 
20 MSG B14 (B0) TO LINE 2     *COMMAND ABORTED MSG
   MSG EM TO LINE 3           *ERROR DESCRIPTION
   B6=3                       *DISPLAY LINE 
   EXIT TO 98E                *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE                       *IDT98A - POST COMMAND ABORTED DISPLAY
*IF DEF,MVE,1 
   MODULE IDT98C,IFSD(120,121)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDT98C,IFSD(124)LOCK,16BIT
***       IDT98C - POST COMPARE ERROR DISPLAY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         DISPLAY THE DATA COMPARE ERROR MESSAGE AND THE LOCATION OF THE
*         WORD THAT CAUSED THE ERROR. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY DATA COMPARE ERROR MESSAGE. 
*         2.  DISPLAY THE HEX LOCATION OF THE WORD CAUSING THE ERROR. 
*         3.  EXIT TO MODULE IDT98E TO COMPLETE ERROR DISPLAY.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS ZERO INDICATING DATA COMPARE ERROR. 
* 
*         REGISTER BA  CONTAINS THE LOCATION OF THE WORD WHICH CAUSED 
*         THE ERROR.
* 
*    2.2  SUBMODULES USED 
* 
*         IDT98E - CINTINUE ERROR DISPLAY 
* 
* 
   BASE OCTAL 
1  FORMAT ABORTED ON DATA COMPARE ERROR 
2  FORMAT         WORD  *HEXH 
* 
* 
* 
* --------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                       *IDT98C - POST COMPARE ERROR DISPLAY
*IF DEF,MVE,1 
   MODULE IDT98E,IFSD(120,121)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDT98E,IFSD(124)LOCK,16BIT
***       IDT98E - ERROR DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
*         ----------------------------- 
* 
*    1.1  PURPOSE-
* 
*         COMPLETE THE ERROR DISPLAY IN THE CASE OF  EITHER  A  PRODUCT 
*         OVERLAY COMMAND ABORT OR A DATA COMPARE ERROR 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE. 
*         2.  DISPLAY CONTENTS OF EC, AND EA REGISTERS. 
*         3.  DISPLAY CONTENTS OF B REGISTERS.
*         4.  IF A DATA COMPARE ERROR,  DISPLAY EIGHT  WORDS  OF  INPUT 
*             BUFFER AND OUTPUT BUFFER, BEGINNING WITH WORD THAT CAUSED 
*             THE ERROR.
*         5.  IF A PRODUCT OVERLAY COMMAND ABORT, DISPLAY GENERAL 
*             STATUS, TASK NUMBER, LOW LEVEL ERROR CODE AND RESPONSE
*             PACKET. 
*         6.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED 
* 
*         REGISTER BA CONTAINS THE WORD LOCATION AT WHICH A DATA
*         COMPARE ERROR OCCURRED
* 
*    2.2  REGISTERS USED
* 
*         B6  - DISPLAY LINE COUNTER
*         B14 - COMMAND ABORT NUMBER
*         B15 - MESSAGE NUMBER
*         BA  - DATA ERROR LOCATION 
* 
*    2.3  SUBMODULES USED 
* 
*         N/A 
* 
   BASE OCTAL 
0  FORMAT IDT - CM3 DISK SUBSYSTEM TEST 
2  FORMAT B10-15 = *OCTAL *OCTAL *OCTAL *OCTAL *OCTAL *OCTAL
4  FORMAT IB = *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
5  FORMAT OB = *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
6  FORMAT B0-B4  = *OCTAL *OCTAL *OCTAL *OCTAL *OCTAL 
7  FORMAT B5-B9  = *OCTAL *OCTAL *OCTAL *OCTAL *OCTAL 
10 FORMAT       DRIVER GENERAL STATUS WORD = *HEXH
11 FORMAT FAILING TASK = *DD   LOW LEVEL ERROR CODE = *HH 
12 FORMAT  1D  - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
13 FORMAT  9D  - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
14 FORMAT  17D - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
15 FORMAT  25D - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
16 FORMAT  33D - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
17 FORMAT  41D - *HEX *HEX *HEX *HEX *HEX *HEX *HEX *HEX
20 FORMAT               RESPONSE PACKET (HEX) 
21 FORMAT---------------------------------------------------
* 
* -----------------POST MESSAGES
* 
40 MSG 0 TO LINE 0            *TEST TITLE 
   B6=B6+2
   IF (B14.EQ.0) B6=13        *IF DATA COMPARE ERROR
* 
* -----------------DISPLAY B REGISTERS
* 
   MSG 6 (B0,B1,B2,B3,B4) TO LINE B6
   MSG 7 (B5,B6,B7,B8,B9) TO LINE B6+1
   MSG 2 (B10,B11.B12,B13,B14,B15) TO LINE B6+2 
   IF (B14.NE.0) GOTO 50      *IF PRODUCT OVERLAY ERROR 
* 
* -----------------DISPLAY BUFFERS
* 
   MSG 4 10B WORDS FROM IB(BA) TO LINE 10 
   MSG 5 10B WORDS FROM OB(BA) TO LINE 11 
   GOTO 70                    *IF DATA COMPARE ERROR, DONE
* 
* -----------------DISPLAY STATUS 
* 
50 MSG 10 (SB) TO LINE 11            *GENERAL STATUS
   MSG 11 (SB(1),SB(2)) TO LINE 12   *TASK AND LL ERROR CODE
* 
*  POST RESPONSE PACKET DISPLAY 
* 
   MSG 20 TO LINE 14
   MSG 12 8D WORDS FROM SB(10D) TO LINE 15
   MSG 13 8D WORDS FROM SB(18D) TO LINE 16
   MSG 14 8D WORDS FROM SB(26D) TO LINE 17
   MSG 15 8D WORDS FROM SB(34D) TO LINE 20
   MSG 16 8D WORDS FROM SB(42D) TO LINE 21
   MSG 17 8D WORDS FROM SB(50D) TO LINE 22
* 
* -----------------EXIT THE MODULE
* 
70 MSG 21 TO LINE 23
   PICTURE
   HALT 
   BLANK
   EXIT 
   END 40 
COMPILE                       *IDT98E - ERROR DISPLAY 
*IF DEF,MVE,1 
   MODULE IDT99,IFSD(120,121)LOCK,16BIT 
*IF -DEF,MVE,1
   MODULE IDT99,IFSD(124)LOCK,16BIT 
**        IDT99 - PARAMETER DESCRIPTION 
* 
/------------------RESTRICTIONS-----------------------------
/ 
/  IDT ASSUMES  THAT  MICROCODE HAS  BEEN  LOADED  AND  IS
/  OPERATIONAL IN THE CM3 SUBSYSTEM.
/ 
/------------------PARAMETER DESCRIPTION--------------------
/ 
/         THE FOLLOWING PARAMETERS ARE USED BY IDT
/              (ALL PARAMETER VALUES ARE HEX) 
/ 
/  P0 - XXXX - DATA PATTERN TO BE USED BY IDT09, IDT11
/       0000 - USE RANDOM DATA PATTERNS (DEFAULT) 
/ 
/  P1 - XXXX - CYLINDER TO BE USED FOR DATA TESTING (IDT11) 
/              VALID ENTRIES
/ 
*IF DEF,MVE,3 
/              CM3/FSD2 
/              0000 THROUGH 1274(8), 0700(D), 02BC(H) 
/ 
/              CM3/XMD3 
/              0000 THROUGH 2601(8), 1409(D), 0581(H) 
/ 
/  P2 - 00XX - TRACK TO BE USED FOR DATA TESTING (IDT11)
/              VALID ENTRIES
/ 
*IF DEF,MVE,3 
/              CM3/FSD2 
/              0000 THROUGH 0027(8), 0023(D), 0017(H) 
/ 
/              CM3/XMD3 
/              0000 THROUGH 0022(8), 0018(D), 0012(H) 
/ 
/  P3 - 00XX - SECTOR TO BE USED FOR DATA TESTING (IDT11) 
/              VALID ENTRIES
/ 
*IF DEF,MVE,3 
/              CM3/FSD2 
/              0000 THROUGH 0056(8), 0046(D), 002E(H) 
/ 
/              CM3/XMD3 
/              0000 THROUGH 0024(8), 0020(D), 0014(H) 
/ 
/  P4 - P8  NOT USED
/ 
/  P9 - 00XX - WHETHER TO SLAVE RESET OR NOT IN IDT70 
/       0000 - DO NOT SLAVE RESET 
/       0001 - SLAVE RESET AFTER RES CH 
/       0010 - SKIP RES CH AND SLAVE RESET CONTROLLER 
/ 
1  END 1
COMPILE,SOURCE                *IDT99 - PARAMETER DESCRIPTION
*IF DEF,MVE,1 
   MODULE IDT99A,IFSD(120,121)LOCK,16BIT
*IF -DEF,MVE,1
   MODULE IDT99A,IFSD(124)LOCK,16BIT
***       IDT99A - MODULE DESCRIPTIONS
**
* 
/        MODULE     MODULE NAME AND         ACCESS    RUN 
/        NUMBER       DESCRIPTION           LEVEL     TIME
/        ------     ---------------         ------    ----
/ 
/          00       CM DIAGNOSTICS             3    135 SEC.
/          01       ONES AND ZEROS TEST        3     12 SEC.
/          03       ALTERNATING ONES TEST      3     12 SEC.
/          05       SLIDING ZEROS TEST         3     70 SEC.
/          07       SLIDING ONES TEST          3     70 SEC.
/          08       ADDRESS TEST               3     10 SEC.
/          09       RANDOM DATA TEST           3      9 SEC.
/          11       ANY SECTOR TEST            4      9 SEC.
/          13       DRIVE DIAGNOSTICS          10     3 SEC.
/          50       INITIAL FORMAT UNIT       20     90 MIN.
/          70       SLAVE RESET CONTROLLER    20     12 MIN.
/ 
1  END 1
COMPILE,SOURCE                *IDT99A - MODULE DESCRIPTION
