*DECK,MSD 
***       MSD - STORNET SIDE DOOR PORT
*** 1.0   IDENTIFICATION
**
*   1.1   PROGRAM NAME
* 
*         MSD - STORNET SIDE DOOR PORT
* 
*   1.2   AUTHORS 
* 
*         D.H. WIESE   J.M. OJA   DATE      06/29/87
* 
*   1.3   AUTHORS OF MODIFICATIONS
* 
*         MAINTENANCE SOFTWARE REQUIREMENTS 
*         LARGE SYSTEMS DIAGNOSTIC DEVELOPMENT DEPARTMENT 
* 
*   1.4   COPYRIGHT 
* 
*             COPYRIGHT CONTROL DATA CORP. 1987 
* 
* 
*** 2.0   INTRODUCTION
**
*   2.1   OVERVIEW
* 
*         MSM IS A TEST FOR THE STORNET SEMICONDUCTOR MEMORY  SUBSYSTEM.
*         THE  TEST IS  WRITTEN  IN THE  MALET LANGUAGE.   THE  COMPLETE
*         DIAGNOSTIC  ACTUALLY CONSISTS OF  TWO SEPARATE  PROGRAMS; MSM,
*         WHICH DRIVES THE  LOW SPEED  PORT (LSP),  AND  MSD  WHICH RUNS
*         ON THE SIDE DOOR  PORT (SDP).   MSM IS THE  MASTER PROGRAM AND
*         CALLS UPON MSD TO FORCE ERROR CONDITIONS, RUN MARGINS, AND RE-
*         PORT SOME DETECTED ERRORS.
* 
*         MSM AND MSD COMMUNICATE VIA THE FLAG REGISTER  WITHIN  STORNET
*         ITSELF.  PRIOR TO USING THE FLAG REGISTER FOR  COMMUNICATIONS,
*         BOTH  PROGRAMS  TEST THE  CIRCUITS TO BE  USED AND  REPORT ANY
*         ERRORS ENCOUNTERED.  SOME TESTING CAN BE DONE, EVEN IF INITIAL
*         COMMUNICATION CANNOT  BE ESTABLISHED.   THIS WILL CONSIST PRI-
*         MARILY OF DATA PATH CHECKING. 
* 
*         MODULES MSD01 THROUGH MSD04, WHICH PERFORM THE INITIAL TESTING
*         OF THE SIDE DOOR PORT LOGIC, SUPPORT SCOPING LOOPS.   HOWEVER,
*         WHEN MSD ENTERS THE SLAVE MODE TO MSM,  SCOPING LOOPS  WILL BE
*         ONLY AS COMMUNICATED BY MSM. IN A SCOPING LOOP SITUATION, ONLY
*         THE PASS COUNT AND ERROR COUNT ARE PRESENTED AS OUTPUT. MODULE
*         MSD00 (PARAMETER CHECKING) AND MSD05 (MONITOR)  DO NOT SUPPORT
*         REPEAT CONDITION, REPEAT MODULE, OR SCOPING LOOPS.
* 
*         MSD WILL REPORT ONLY THOSE ERRORS WHICH  IT DETECTS AND  WHICH
*         CANNOT BE REPORTED BY MSM ON THE LSP. FOR EXAMPLE: IF AN ERROR
*         OCCURS  WHILE MSD IS PROHIBITING ERROR  CORRECTION,  THE ERROR
*         WILL BE REPORTED VIA MSM. 
* 
*         ONCE  AN ERROR HAS BEEN DETECTED, A TYPICAL MODULE WILL CALL A
*         STATUS ANALYSIS MODULE TO ANALYZE THE  LAST  TAKEN  STATUS  TO
*         DETERMINE THE MOST SERIOUS ERROR THAT EXISTS.  THIS RESULTS IN
*         THE POSTING OF AN ERROR CODE WITH A  MESSAGE  THAT  GIVES  THE
*         VERBAL DESCRIPTION OF THE ERROR.
* 
* 
*   2.2   CHARACTERISTICS 
* 
*         1.  PROGRAM NAME..................................MSD.
*         2.  TEST/DIAG/UTILITY/SYSTEM.............TEST/UTILITY.
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER........MALET.
*         4.  RUN TIME (DEFAULT).........................40 MIN.
*         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,NOS/VE.
*         9.  OFF-LINE SYSTEM.............................DEMOT.
*         10. PROGRAM LANGUAGE............................MALET.
*         11. SOURCE CODE MAINTENANCE....................UPDATE.
* 
* 
*   2.3   FEATURES
* 
*         1. MSD SUPPORTS DEVICE CODES FOR: 
*         ESMII SUBSYSTEM (DDP) 
*         STORNET SUBSYSTEM 
* 
*   2.4   HARDWARE REQUIREMENTS 
* 
*         THIS TEST REQUIRES: 
*         1 - CYBER 170/180 
*         1 - STORNET SIDE DOOR PORT AND LOW SPEED PORT (2 CH)
* 
*   2.5   RESTRICTIONS
* 
*         1. AS MENTIONED IN THE MSM ERS,  IF A PP IS NOT  AVAILABLE  TO
*            EXECUTE MSD, THE MSM TEST CANNOT USE ITS  FULL CAPABILITY. 
* 
* 
*** 3.0   APPLICABLE DOCUMENTS
**
* 
*         MALET LANGUAGE PROGRAMMING REFERENCE MANUAL (PUB. NO. 60456020) 
*         CML REFERENCE MANUAL (PUB. NO. 60455860)
* 
* 
*** 4.0   DESIGN OVERVIEW 
**
*   4.1   MODULES OVERVIEW
* 
*                                                ACCESS      RUN
*         MODULE       DESCRIPTION               LEVEL       TIME 
*         ------       -----------               ------      ---- 
*      1. PARAMETER VALIDATION
* 
*         MSD00 - PARAMETER VALIDATION                      1 SEC 
* 
*      2. TEST THE SIDE DOOR PORT LOGIC 
* 
*         MSD01 - SIDE DOOR CHANNEL ACCESS TEST             1 SEC 
*         MSD02 - MAXIMUM ADDRESS TEST                      1 SEC 
*         MSD03 - PROGRAMMABLE CLEARS TEST                  1 SEC 
*         MSD04 - FLAG MEMORY SIDE DOOR ADDRESSING TEST     1 SEC 
* 
*      3. PERFORM MAINTENANCE ACTIVITIES FOR MSM
* 
*         MSD05 - MONITOR FLAG REGISTER                      N/A
* 
*      4. UTILITY MODULES 
* 
*         MSD70 - DISPLAY ERROR LOG                         1 SEC 
*         MSD71 - MC AND SET CLOCK MARGINS (P1)             1 SEC 
* 
*   4.2   EXECUTION SEQUENCE
* 
*         MODULES 01 THROUGH 04 TEST THE SDP LOGIC TO DETERMINE IF IT IS
*         OPERATIONAL. MODULE 05 SERVES AS A SLAVE TO MSM TO PROVIDE THE
*         CAPABILITY TO FORCE ERROR  AND  MAINTENANCE  CONDITIONS AS RE-
*         QUIRED FOR TESTING OF STORNET VIA THE LSP.   MODULE 05 IS ALSO
*         REQUIRED TO  DETECT ERRORS WHICH  OCCUR DURING THE TESTING  OF
*         THE  ERROR  LOGGING  LOGIC.   THE ABORT OF  ANY COMMAND WITHIN
*         MODULE 05 WILL RESULT IN A HALT.   IT WILL BE NECESSARY TO RE-
*         RUN MSD05, BECAUSE RECOVERY IS  NOT POSSIBLE FROM THIS  SITUA-
*         TION. 
*         AN ERROR DETECTED  DURING THE TESTING OF  THE ERROR LOG  LOGIC
*         WILL RESULT  IN AN ERROR  MESSAGE AND A HALT.  RESTART  OF MSD
*         FROM THE BEGINNING, AND OF THE  CURRENTLY EXECUTING MSM MODULE
*         WILL BE REQUIRED. 
* 
*** 5.0   PARAMETERS
**
*   5.1   PARAMETER REGISTER DEFINITION 
* 
*         THE FOLLOWING PARAMETERS ARE USED BY MSD: 
* 
*         P0 = TO BE DEFINED
* 
*         P1 = CLOCK TIMING 
*            = 0000  10.0 MHZ (100 NS)   NOMINAL
*            = 0001   9.8 MHZ (102 NS) -2 PERCENT 
*            = 0002  10.4 MHZ  (96 NS) +4 PERCENT 
*            = 0003  10.2 MHZ  (98 NS) +2 PERCENT 
*            = 0004   9.6 MHZ (104 NS) -4 PERCENT 
* 
*         P2 = TO BE DEFINED
* 
*         P3 = TO BE DEFINED
* 
*         P4 = TO BE DEFINED
* 
*         P5 = TO BE DEFINED
* 
*         P6 = TO BE DEFINED
* 
*         P7 = TO BE DEFINED
* 
*         P8 = TO BE DEFINED
* 
*         P9 = TO BE DEFINED
* 
* 
*   5.2   PARAMETER REGISTER USAGE
* 
*         MODULE      P0  P1  P2  P3  P4  P5  P6  P7  P8  P9
*         ------      --  --  --  --  --  --  --  --  --  --
*         MSD00 
*         MSD01 
*         MSD02 
*         MSD03 
*         MSD04 
*         MSD05           X 
*         MSD70 
*         MSD71           X 
* 
* 
*** 6.0   PROGRAM USE 
**
*   6.1   TESTING 
*         THE MAIN PURPOSE OF THE TEST MSD IS TO DETERMINE IF  THE STOR-
*         NET SUBSYSTEM IS FUNCTIONING CORRECTLY.  THE TEST IS  DESIGNED
*         TO DETECT FAILURES IN THE PORT LOGIC, MEMORY CONTROL CIRCUITS,
*         MEMORY ARRAYS, AND THE SDP LOGIC. 
* 
*         MODULE MSD70 CAN BE EXECUTED TO  DISPLAY THE CURRENT  CONTENTS
*         OF  AND  ALSO  RESET  THE  STORNET  ERROR LOG.   MSD71 CAN BE 
*         EXECUTED IN ORDER TO SET THE CLOCK MARGINS PRIOR TO EXECUTION 
*         OF THE TEST.
* 
*   6.2   PROGRAM LOOPING 
*         MSD MODULES 01,02,03, AND 04 SUPPORT REPEAT MODULE AND  REPEAT
*         CONDITION.  MODULES 00 AND 05, AND ITS SUBMODULES DO NOT. AS A
*         SLAVE TO MSM,MSD WILL SUPPORT LOOPING AND REPEATING AS DICTAT-
*         ED BY MSM.
* 
*** 7.0   MESSAGES
**
*   7.1   NORMAL MESSAGES 
* 
*         1. MSDNN -  MODULE NAME 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.
* 
*   7.2   ERROR FORMAT
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY MSD TO REPORT  PRODUCT
*         OVERLAY ERRORS TO THE USER WHEN TESTING THE STORNET SUBSYSTEM.
* 
*         00  MSD - STORNET SUBSYSTEM MEMORY TEST 
*         01  MSDNN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB  LSF=ZZZZB 
*         05
*         06  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         07  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10
*         11  SDP STATUS = SSSS SSSS SSSS SSSS
*         12
*         13
*         14  EC 0111 - MSD05 ABORTED - COMMUNICATIONS LOST.
* 
*         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.
*         ZZZZ  = LAST STATUS FUNCTION
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM.
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         BBBB  = CONTENTS OF B REGISTER. 
*         SSSS  = LAST SDP STATUS OBTAINED FROM SUBSYSTEM.
* 
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  MSD  TO  REPORT 
*         PARAMETER ENTRY ERRORS TO THE USER. 
* 
*         00  MSD - STORNET SUBSYSTEM MEMORY TEST 
*         01  MSDNN - (M-----------------------T) 
*         02
*         03  MSDNN SUSPECTED PARAMETER ERROR  (OCTAL)
*         04
*         05  PARAMETERS DESCRIBED IN MODULE MSD99B 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         E---D = DESCRIPTION OF THE ERROR. 
*         PPPP  = CONTENTS OF THE PARAMETER WORD. 
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY MSD TO REPORT DATA
*         COMPARE ERRORS TO THE USER WHEN TESTING THE 4 BIT FLAG REG. 
* 
*         00  MSD - STORNET SUBSYSTEM MEMORY TEST 
*         01  MSDNN - (M-----------------------T) 
*         02
*         03  ABORTED ON DATA COMPARE ERROR 
*         04          WORD  *OCTB 
*         05
*         06  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB  LSF=ZZZZB 
*         07
*         08  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         09  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10
*         11  SDP STATUS = SSSS SSSS SSSS SSSS
*         12
*         13  IB (0-7)  EEEE EEEE EEEE EEEE EEEE EEEE EEEE EEEE 
*         14  OB (0-7)  DDDD DDDD DDDD DDDD DDDD DDDD DDDD DDDD 
*         15
* 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         ZZZZ  = LAST STATUS FUNCTION
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM.
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         BBBB  = CONTENTS OF B REGISTER. 
*         SSSS  = LAST SDP STATUS OBTAINED FROM SUBSYSTEM.
*         EEEE  = DATA READ 
*         DDDD  = EXPECTED DATA 
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY MSD 
*         TO REPORT STATUS ERRORS TO THE USER.
* 
*         00  MSD - STORNET SUBSYSTEM MEMORY TEST 
*         01  MSDNN - (M-----------------------T) 
*         02  EC CCCC - (E-------------------------M) 
*         03  SDP STATUS WORD X ERROR    ACT=SSSSB
*         04  SDP STATUS MASK = MMMMB    EXP=EEEEB
*         05
*         06  EC=XXXXB  EA=YYYYB  LF=FFFFB  WT=WWWWB  LSF=ZZZZB 
*         07
*         08  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         09  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10
* 
*         WHERE-
*         X     = FAILING STATUS WORD 
*         NN    = MODULE NUMBER.
*         CCCC  = ERROR CODE
*         M---T = MODULE TITLE. 
*         E---M = VERBAL DESCRIPTION OF ERROR CODE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         ZZZZ  = LAST STATUS FUNCTION
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM.
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         BBBB  = CONTENTS OF B REGISTER. 
*         SSSS  = LAST SDP STATUS OBTAINED FROM SUBSYSTEM.
*         EEEE  = STATUS EXPECTED FROM THE SUBSYSTEM. 
*         MMMM  = MASK USED TO CHECK STATUS.
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY MSD 
*         TO REPORT ERRORS DETECTED DURING ERROR LOG TESTING. 
* 
*         00  MSD - STORNET SUBSYSTEM MEMORY TEST 
*         01  MSDNN - (M-----------------------T) 
*         02
*         03  EC CCCC - (E------------------------M)
*         04         ACT = XXXX  EXP = YYYY 
* 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         CCCC  = ERROR CODE. 
*         M---T = MODULE TITLE. 
*         E---M = VERBAL DESCRIPTION OF ERROR CODE. 
*         XXXX  = ACTUAL DATA 
*         YYYY  = EXPECTED DATA 
* 
*   7.3   ERROR CODES 
* 
*         EC 0100 - INCORRECT STATUS FOLLOWING MASTER CLEAR.
*                   THE STATUS READ FROM THE SDP WAS INCORRECT FOLLOW-
*                   ING A MASTER CLEAR. 
* 
*         EC 0101 - CHANNEL PARITY ERROR AFTER OUTPUT *OCTB.
*                   THE  DATA DISPLAYED WAS  OUTPUT ON THE SDP CHANNEL
*                   AND RESULTED IN A CHANNEL PARITY ERROR STATUS.
* 
*         EC 0102 - BAD CLOCK STATUS AFTER SET MAX ADDRESS. 
*                   THE CLOCK MARGINS WERE SET = 0,THE MAXIMUM ADDRESS
*                   WAS THEN SET USING SHIFTING ZERO AND ONE PATTERNS.
*                   THE CLOCK STATUS WAS READ AND DID NOT = 0.
* 
*         EC 0103 - INCORRECT ENVIRON STATUS AFTER SET. 
*                   THE ENVIRONMENTAL  STATUS BITS WERE  FUNCTIONED TO
*                   BE SET, BUT THE STATUS BIT(S) WERE NOT SET. 
* 
*         EC 0104 - BAD CLOCK STATUS AFTER *OCTB CLEAR FNC. 
*                   THE CLOCK MARGINS WERE SET= 3,AND FOLLOWED BY VAR-
*                   IOUS CLEAR FUNCTIONS.  THE STATUS WAS INCORRECT.
* 
*         EC 0105 - BAD REFRESH COUNTER STATUS AFTER SET. 
*                   THE REFRESH COUNTER WAS SET WITH VALUES FROM 7774B
*                   TO 1000B(STORNET) OR 1200B(ESMII). THE STATUS FOL-
*                   LOWING A SET WAS INCORRECT. 
* 
*         EC 0106 - REFRESH COUNTER LESS THAN MINIMUM.
*                   THE REFRESH COUNTER WAS FUNCTIONED SET  TO A VALUE
*                   ONE LESS THAN ITS MINIMUM,  (1000B OR 1200B).  THE
*                   COUNTER  SHOULD NOT  GO TO LESS THAN  THE MINIMUM,
*                   BUT DID IN THIS INSTANCE. 
* 
*         EC 0107 - BAD STATUS FOLLOWING READ FLAG REG FNC. 
*                   A BAD STATUS  WAS RECEIVED FOLLOWING A FUNCTION TO
*                   READ THE FLAG REGISTER. 
* 
*         EC 0110 - NO FGBA STATUS ON A FLAG REG READ.
*                   A FORCE GBA WAS FUNCTIONED, FOLLOWED  BY A READ OF
*                   THE FLAG REGISTER FROM THE SIDE DOOR PORT.THE FGBA
*                   STATUS BIT WAS NOT SET. 
* 
*         EC 0111 - MSD05 ABORTED - COMMUNICATIONS LOST.
*                   ONE OF THE MSD05 SUBMODULES ENCOUNTERED A  PRODUCT
*                   OVERLAY ABORT ON A COMMAND.  THIS IS AN UNRECOVER-
*                   ABLE SITUATION. A RESTART OF THE TEST IS REQUIRED.
* 
*         EC 0200 - SINGLE ERROR COUNTER NOT CLEAR. 
*                   THE ERROR LOG COUNTER FOR SINGLE BIT SECDED  FAIL-
*                   URES DID NOT CLEAR ON AN ERROR  LOG RESET COMMAND.
* 
*         EC 0201 - DOUBLE ERR *D VALID BIT NOT ZERO. 
*                   THE VALID BIT  FOR THE DOUBLE BIT SECDED  ENTRY IN
*                   THE ERROR LOG WAS NOT CLEARED FOLLOWING A RESET.
* 
*         EC 0202 - SINGLE BIT COUNTER *D NOT CLEAR.
*                   THE SINGLE BIT ERROR  COUNTER FOR THE SINGLE ERROR
*                   INDICATED WAS NOT CLEARED FOLLOWING A RESET.
* 
*         EC 0203 - SINGLE BIT CNTR FAILED TO INCREMENT.
*                   THE SINGLE BIT SECDED ERROR COUNTER DID NOT INCRE-
*                   MENT FOLLOWING THE CREATION OF A SINGLE ERROR.
* 
*         EC 0204 - SINGLE BIT CNTR INCREMENTED FALSELY.
*                   THE SINGLE BIT  SECDED ERROR  COUNTER  INCREMENTED
*                   FALSELY WHEN THE DATA READ DID NOT  CONTAIN A SIN-
*                   GLE BIT ERROR.
* 
*         EC 0205 - SINGLE BIT CNTR NOT = 44B.
*                   THE SINGLE BIT ERROR COUNTER WAS RESET,  44 ERRORS
*                   WERE GENERATED,  BUT THE  COUNTER  DID NOT REFLECT
*                   THE CORRECT COUNT.
* 
*         EC 0206 - SINGLE BIT CNTR NOT AT MAXIMUM. 
*                   THE SINGLE BIT  ERROR COUNTER  WAS RESET.   ENOUGH
*                   ERRORS TO REACH A COUNT OF  777777 WERE  PRODUCED,
*                   BUT THE COUNTER DID NOT REFLECT THIS COUNT. 
* 
*         EC 0210 - DOUBLE ERR *D - 1ST ENTRY MISSCOMPARE 
*                   AN ERROR,  EITHER SINGLE OR  DOUBLE WAS GENERATED.
*                   AFTER VERIFYING THE  CORRECT ENTRY  INTO THE ERROR
*                   LOG,  THE REMAINDER  OF THE LOG WAS  CHECKED FOR A
*                   FALSE OR INCORRECT ENTRY. AN INCORRECT FIRST  WORD
*                   DOUBLE ERROR ENTRY WAS DETECTED.
* 
*         EC 0211 - DOUBLE ERR *D - 2ND ENTRY MISSCOMPARE 
*                   AN ERROR,  EITHER SINGLE OR DOUBLE WAS  GENERATED.
*                   AFTER VERIFYING  THE CORRECT ENTRY  INTO THE ERROR
*                   LOG,  THE REMAINDER OF THE LOG  WAS  CHECKED FOR A
*                   FALSE OR INCORRECT ENTRY. AN INCORRECT SECOND WORD
*                   DOUBLE ERROR ENTRY WAS DETECTED.
* 
*         EC 0212 - SINGLE ERR *D - 1ST ENTRY MISSCOMPARE 
*                   AN ERROR,  EITHER SINGLE  OR DOUBLE WAS GENERATED.
*                   AFTER  VERIFYING THE CORRECT  ENTRY INTO THE ERROR
*                   LOG, THE REMAINDER  OF THE LOG  WAS CHECKED  FOR A
*                   FALSE OR INCORRECT ENTRY.  AN INCORRECT FIRST WORD
*                   SINGLE ERROR ENTRY WAS DETECTED.
* 
*         EC 0213 - SINGLE ERR *D - 2ND ENTRY MISSCOMPARE 
*                   AN ERROR,  EITHER SINGLE OR DOUBLE WAS  GENERATED.
*                   AFTER VERIFYING  THE CORRECT ENTRY  INTO THE ERROR
*                   LOG,  THE REMAINDER OF THE  LOG WAS  CHECKED FOR A
*                   FALSE OR INCORRECT ENTRY. AN INCORRECT SECOND WORD
*                   SINGLE ERROR ENTRY WAS DETECTED.
* 
*         EC 0214 - SE COUNTER *D - MISSCOMPARE 
*                   AN ERROR,  EITHER SINGLE  OR DOUBLE WAS GENERATED.
*                   AFTER  VERIFYING THE  CORRECT ENTRY INTO THE ERROR
*                   LOG,  THE REMAINDER OF  THE LOG WAS  CHECKED FOR A
*                   FALSE  OR INCORRECT  ENTRY.  AN  INCORRECT  SINGLE
*                   COUNTER WAS DETECTED. 
* 
*         EC 0215 - SINGLE ERROR COUNTER NOT CLEAR
*                   THE SINGLE ERROR COUNTER  FAILED TO CLEAR WHEN  AN
*                   SDP CONTROL CLEAR WAS EXECUTED. 
* 
*         EC 0216 - DOUBLE ERROR *D ENTRY ERROR 
*                   A DOUBLE BIT ERROR WAS CREATED.   THE CORRECT ADD-
*                   RESS ERROR  INFORMATION WAS  NOT ENTERED INTO  THE
*                   ERROR LOG FOR THE FAILURE.
* 
*         EC 0217 - SINGLE ERROR *D ENTRY ERROR 
*                   A SINGLE BIT ERROR WAS CREATED.  THE CORRECT ERROR
*                   ADDRESS INFORMATION WAS NOT ENTERED INTO THE ERROR
*                   LOG FOR THE FAILURE.
* 
*         EC 0220 - INDIV SE *D CNTR FAILED TO INCREMENT
*                   SUCCESSIVE SINGLE BIT ERRORS WERE GENERATED AT THE
*                   SAME ADDRESS.   THE ASSOCIATED SINGLE BIT  COUNTER
*                   DID NOT INCREMENT.
* 
*         EC 0221 - INDIV SE *D CNTR INCREMENTED FALSELY
*                   THE  INDIVIDUAL SINGLE  ERROR COUNTER  INCREMENTED
*                   WHEN IT SHOULD NOT HAVE.
* 
*         EC 0222 - SE COUNTER FULL STATUS NOT SET
*                   ENOUGH SINGLE BIT  ERRORS WERE  GENERATED TO CAUSE
*                   THE COUNTER TO INCREMENT TO ITS MAXIMUM COUNT. THE
*                   STATUS BIT DID NOT SET. 
* 
*         EC 0223 - SE LOG FULL STATUS NOT SET
*                   16 SINGLE  BIT ERRORS WERE  GENERATED TO FILL  THE
*                   SINGLE ERROR LOG. THE STATUS BIT DID NOT SET. 
* 
*         EC 0224 - DE LOG FULL STATUS NOT SET
*                   16 DOUBLE BIT  ERRORS WERE  GENERATED TO FILL  THE
*                   DOUBLE ERROR LOG. THE STATUS BIT DID NOT SET. 
* 
*         EC 0225 - VALID BIT *D NOT CLEARED
*                   THE VALID BIT FOR THE DOUBLE ERROR INDICATED FAIL-
*                   ED TO CLEAR FOLLOWING A SDP CONTROL CLEAR.
* 
*         EC 0226 - MEMORY GBA ERROR STATUS NOT SET 
*                   THE SDP WAS  FUNCTIONED TO FORCE GBA  ERRORS.  THE
*                   LSP READ MEMORY, BUT THE SDP STATUS  FAILED TO IN-
*                   DICATE A MEMORY GBA ERROR.
* 
*         EC 0227 - MULTIPLE WRITE VALID STATUS NOT SET 
*                   THE SDP WAS FUNCTIONED  TO FORCE A MULTIPLE  WRITE
*                   VALID ERROR.  MEMORY WAS WRITTEN  BY THE LSP,  BUT
*                   THE SDP STATUS FAILED TO INDICATE A MULTIPLE WRITE
*                   VALID ERROR.
* 
*         EC 0230 - STATUS WORD NOT CLEAR 
*                   THE SECOND SDP STATUS WORD SHOULD HAVE BEEN  CLEAR
*                   BUT EITHER A GBA  OR MULTIPLE WRITE VALID BIT  WAS
*                   SET.
* 
*** 8.0   GLOSSARY
**
*   8.1   ABBREVIATIONS 
* 
*         ACT    - ACTUAL 
*         ALT    - ALTERNATE
*         BFR    - BUFFER 
*         CH     - CHANNEL
*         CIO    - CONCURRENT INPUT/OUTPUT UNIT 
*         CM     - CENTRAL MEMORY 
*         COND   - CONDITION
*         CORR   - CORRECTION 
*         DMA    - DIRECT MEMORY ACCESS 
*         EC     - ERROR CODE 
*         EQ     - EQUIPMENT
*         ESM    - EXTENDED SEMICONDUCTOR MEMORY
*         EXP    - EXPECTED 
*         FCN    - FUNCTION 
*         I/O    - INPUT/OUTPUT 
*         LF     - LAST FUNCTION
*         LSF    - LAST STATUS FUNCTION 
*         LSP    - LOW SPEED PORT 
*         MAINT  - MAINTENANCE
*         MAX    - MAXIMUM
*         MIN    - MINIMUM
*         MSG    - MESSAGE
*         OP     - OPERATION
*         PAR    - PARITY 
*         PTRN   - PATTERN
*         RAM    - RANDOM ACCESS MEMORY 
*         RD     - READ 
*         REC    - RECORD 
*         REG    - REGISTER 
*         SECDED - SINGLE ERROR CORR.,DOUBLE ERROR DET. 
*         SDP    - SIDE DOOR PORT 
*         WR     - WRITE
*         WC     - WORD COUNT 
*         WDS    - WORDS
*         WT     - WORDS TRANSMITTED
*         XLATE  - TRANSLATE
* 
*** 9.0   APPENDIX
* 
**  9.1   MSM - MSD COMMUNICATIONS
* 
*         THE FOLLOW TABLE EXPLAINS THE INTERFACE BETWEEN MSM 
*         MSD IN PERFORMING THE REQUIRED FUNCTIONS.  THE  SECOND
*         TABLE DESCRIBES THE CODES AND DATA FOR THE FUNCTIONS. 
*                        *********NOTE********* 
*         THE MAXIMUM ADDRESSES USED FOR COMMUNICATIONS ARE  DETER- 
*         MINED BY PERFORMING A MASTER CLEAR AND READING THE STATUS 
*         IN WORD 3.  IF THE CONTENTS IS 37B,  THEN 37B AND 36B ARE 
*         USED.  THESE REFLECT A 4M MEMORY.  FOR A 16K MEMORY THESE 
*         WOULD BE CHANGED TO 177B AND 176B. THE MEMORY INFORMATION 
*         IS HELD IN IB(502) AND  IB(503) FOR USE BY ANY MODULE RE- 
*         QUIRING THIS INFO.
* 
* 
*  ****************************************************************** 
*  *                 MSM AND MSD RELATIONSHIP                       * 
*  ****************************************************************** 
*                           **                                      * 
*          MSM              **                  MSD                 * 
*                           **                                      * 
* ******************************************************************* 
* **********************          *********************************** 
* *WRITES FUNCTION TO  *          * - START -  MAX ADDRESS REG WILL * 
* *4 BIT FLAG REGISTER *          * BE SET TO IB(502) PRIOR TO START* 
* **********************          *********************************** 
*          I                                       I                * 
*          I                      *********************************** 
*          I                   I->* READ 4 BIT FLAG REGISTER        * 
*          I                   I  *********************************** 
*          I                   I                   I                * 
*          I                   I  *********************************** 
*          I                   I  * DATA EQUAL TO ALL ZEROS         * 
*          I                   I  *********************************** 
*          I                   I--------YES              NO         * 
*          I                                             I          * 
*          I                      *********************************** 
*          I                      *  DO FUNCTION REQUESTED BY MSM   * 
*          I                      *********************************** 
* ************************                         I                * 
* *WRT TO ADDR 17777700B *<-I                      I                * 
* ************************  I                      I                * 
*             I             I                      I                * 
* **********************    I                      I                * 
* *AN ACCEPT AND ABORT *    I                      I                * 
* **********************    I                      I                * 
*       YES      NO---------I     *********************************** 
*        I                        * SET MAX ADDRESS REG TO IB(503)  * 
*        I                        *********************************** 
* **********************                           I                * 
* *WRITE ZEROS TO      *                           I                * 
* *4 BIT FLAG REGISTER *                           I                * 
* **********************          *********************************** 
*          I                   I->* READ 4 BIT FLAG REGISTER        * 
*          I                   I  *********************************** 
*          I                   I                   I                * 
*          I                   I  *********************************** 
*          I                   I  * DATA EQUAL TO ALL ZEROS         * 
*          I                   I  *********************************** 
*          I                   I-------NO               YES         * 
*          I                                             I          * 
*          I                      *********************************** 
*          I                      * SET MAX ADDRESS REG TO IB(502)  * 
*          I                      *          ***********            * 
*          I                      * ON AN 07XX FUNC, LEAVE MAX AT   * 
*          I                      * IB(503) IF THE REPLY IS NEGA-   * 
*          I                      * TIVE AND HALT.                  * 
*          I                      *********************************** 
* **********************                           I                * 
* *  GO TO TEST        *                           I                * 
* **********************          *********************************** 
*                                 * GO TO START                     * 
*                                 *********************************** 
* ******************************************************************* 
* 
* 
* 
* *********************************************************************** 
*               CODES AND NUMBER OF WORDS FROM MSM TO MSD 
* *********************************************************************** 
* CODE  MALET COMMAND      NUMBER OF 12 BIT  4 BIT FLAG     IB AS READ BY 
* FROM  EXECUTED BY MSD    WDS TO/FROM MSD   REG DATA SET   MSD OF 4 BIT
* MSM                      AND VALID BITS    BY MSM 2 LOC   FLAG(12 BITS) 
* *********************************************************************** 
* 0101  SDP MAINT FUNC     (FUNCTION ONLY)    0001 0001     000001000001
*       GBA FORCE 
* 0102  SDP MAINT FUNC     (FUNCTION ONLY)    0001 0010     000001000010
*       WRITE VALID 
*       ERROR FORCE 
* 0103  SDP MAINT FUNC     (FUNCTION ONLY)    0001 0011     000001000011
*       DISABLE SECDED
* 0104  SDP MAINT FUNC     (FUNCTION ONLY)    0001 0100     000001000100
*       WRT CHECK BITS
* 0105  SDP MAINT FUNC     (FUNCTION ONLY)    0001 0101     000001000101
*       READ CHECK BITS 
* 0106  SDP MAINT FUNC     (FUNCTION ONLY)    0001 0110     000001000110
*       RD SYNDROME BITS
* 0107  SDP MAINT FUNC     (FUNCTION ONLY)    0001 0111     000001000111
*       READ ZERO CHECK 
*       BITS
* 0110  SDP MAINT FUNC     (FUNCTION ONLY)    0001 1000     000001001000
*       CLEAR MAINT FUNC
* 0111  SET SCANNER LOCK   (FUNCTION ONLY)    0001 1001     000001001001
* 0112  ERRLOG RESET       (FUNCTION ONLY)    0001 1010     000001001010
* 
* 0201  SET CLOCK          (1 WORD OUTPUT)    0010 0001     000010000001
*       TIMING BX          (3 BITS)           0000 0YYY     000000000YYY
* 0202  SET REFRESH        (1 WORD OUTPUT)    0010 0010     000010000010
*       TIME BX            (12 BITS)          0000 YYYY     00000000YYYY
*                                             YYYY YYYY     00YYYY00YYYY
* 0203  SET MAX ADDR BX    (1 WORD OUTPUT)    0010 0011     000010000011
*                          (7 BITS)           0YYY YYYY     000YYY00YYYY
* 0204  SET ENVIRON        (1 WORD OUTPUT)    0010 0100     000010000100
*       STATUS BITS BX     (2 BITS)           0000 00YY     0000000000YY
* 0205  SIDE DOOR          (1 WORD OUTPUT)    0010 0101     000010000101
*       CLEAR BX           (6 BITS)           00YY YYYY     0000YY00YYYY
* 
* 0301  ERRLOG SET PROG-   (OUTPUT 4 WORDS)   0011 0001     000011000001
*       GRAM COUNTER       (10 BITS)          0000 00YY     0000000000YY
*                                             YYYY YYYY     00YYYY00YYYY
*                          (8 BITS)           YYYY YYYY     00YYYY00YYYY
*                          (10 BITS)          0000 00YY     0000000000YY
*                                             YYYY YYYY     00YYYY00YYYY
*                          (8 BITS)           YYYY YYYY     00YYYY00YYYY
* 
* 0401  ERRLOG READ        (123B WORD INPUT)  0100 0001     000100000001
* 0402  SIDE DOOR READ     (500B WORD INPUT)  0100 0010     000100000010
*       FLAG REGISTER 
* 
* 0501  STATUS SDP AND     (4 WORD INPUT)     0101 0001     000101000001
*       VERIFY             (8 BITS)           YYYY YYYY     00YYYY00YYYY
* 
* 0601  PRESET FOR MSM     (FUNCTION ONLY)    0110 0001     000110000001
*       ERRLOG RESET, SDP MAINT FUNC CLEAR MAINT FUNCTIONS, 
*       AND SIDE DOOR CLEAR.
* 0602  MAINT FUNC READ/   (FUNCTION ONLY)    0110 0010     000110000010
*       WRITE CHECK BITS
* 
* 0701  INQUIRE AS TO RE-  (1 WORD OUTPUT)    0111 0001     000111000001
*       SULTS              (8 BITS)           YYYY YYYY     00YYYY00YYYY
* 
* **********************************************************************
* 
*  *****DESCRIPTOR CODES FOR 0501 FUNCTION***** 
* 
*   4 BITS*4BITS  *COMMAND NAME 
*    ***************************************************
*       0 * 0  -  CHECK STATUS WORD 2 CLEAR 
*       0 * 1  -  MEMORY GBA ERROR
*       0 * 2  -  MULTIPLE WRITE VALID ERROR
* 
* 
*  *****DESCRIPTOR CODES FOR 0701 FUNCTION***** 
* 
*   4 BITS*4BITS  *COMMAND NAME 
*    ***************************************************
*       0 * 0  -  ERRLOG RESET
*       0 * 1  -  READ AND SAVE 
*       0 * 2  -  SINGLE ERROR COUNTER +1 
*       0 * 3  -  SINGLE ERROR COUNTER NO COUNT 
*       0 * 4  -  SINGLE ERROR COUNTER = 44B
*       0 * 5  -  SINGLE ERROR COUNTER = MAX. 
*       0 * 6  -  VERIFY ERROR LOG
*       0 * 7  -  SINGLE ERROR COUNTER = 0
*    0-17 * 10 -  DOUBLE ERROR 0-17 ENTERED AND VERIFY
*    0-17 * 11 -  SINGLE ERROR 0-17 ENTERED AND VERIFY
*    0-17 * 12 -  INDIVIDUAL SE COUNTER +1
*    0-17 * 13 -  INDIVIDUAL SE COUNTER NO COUNT
*       0 * 14 -  SINGLE ERROR COUNTER FULL STATUS
*       0 * 15 -  SINGLE ERROR LOG FULL STATUS
*       0 * 16 -  DOUBLE ERROR LOG FULL STATUS
*       0 * 17 -  VALID BITS CLEAR
* 
*IF DEF,MVE,1 
   MODULE MSD00,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD00,DESM(171,211)LOCK 
*** MSD00 - PARAMETER VALIDATION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         VERIFIES THAT THE PARAMETERS THAT HAVE BEEN ENTERED INTO PARA-
*         METER REGISTERS P0 THRU P9 ARE WITHIN  LEGAL RANGE FOR USE  BY
*         THE REMAINING MODULES OF MSD. 
* 
*    1.2  METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
*    1.3  ERRORS REPORTED 
* 
*         MSD00 SUSPECTED PARAMETER ERROR P1
* 
  
*    2.0  INTERNAL DOCUMENTATION
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         P1  = VALUE FOR CLOCK MARGINS 
* 
*    2.3  SUBMODULES REFERENCED 
* 
*         NONE
* 
*  -------DATA DIVISION 
* 
* 
0  FORMAT MSD - STORNET SUBSYSTEM MEMORY TEST 
1  FORMAT MSD00 - PARAMETER VALIDATION
2  FORMAT MSD00 SUSPECTED PARAMETER ERROR P1
3  FORMAT PARAMETERS DESCRIBED IN MODULE 99B
* 
* -------MODULE TEST
* 
20 IF (P1.LT.5) GOTO 21 
   MSG 0 TO LINE 0
   MSG 1 TO LINE 1
   MSG 2 TO LINE 3
   MSG 3 TO LINE 5
   PAUSE
   GOTO 20
21 EXIT 
   END 20 
COMPILE   - MSD00 -   PARAMETER VALIDATION
*IF DEF,MVE,1 
   MODULE MSD01,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD01,DESM(171,211)LOCK 
*** MSD01 - SIDE DOOR CHANNEL ACCESS TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TESTS SIDE DOOR STATUS AFTER A STORNET CONTROL CLEAR,AND CHAN-
*         NEL PARITY ERROR DETECTION. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         3.  SIDE DOOR MASTER CLEAR. 
*         4.  STATUS SDP. 
*         5.  VERIFY AGAINST PREDICTED STATUS AFTER A MASTER
*             CLEAR OPERATION (IGNORE MAXIMUM ADDRESS BITS).
*         6.  REPEAT FROM 3 IF REPEAT CONDITION.
*         7.  SDP MAINT FUNC CLEAR MAINTENANCE FUNCTIONS. 
*         8.  SET REFRESH TIME AND OUTPUT THE FOLLOWING SPECIAL 12 BIT
*             PARITY CIRCUIT TEST OPERANDS. THESE ARE DESIGNED TO FULLY 
*             EXERCISE THE PARITY CIRCUIT.
*             7777
*             7456
*             6363
*             1725
*             2525
*             5252
*         9.  READ STATUS AND CHECK FOR NO CHANNEL PARITY ERROR STATUS. 
*         10. REPEAT 8 AND 9 FOR EACH PATTERN.
*         11. 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.
*         12. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSD01 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSD01 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSD01 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B2  = STATUS MASK.
*         B4  = CONDITION NUMBER. 
*         B5  = TEMPORARY STORAGE.
*         B6  = TEMPORARY STORAGE.
*         B7  = TEMP/EXPECTED STATUS WORD 1.
*         B8  = TEMP/EXPECTED STATUS WORD 2.
*         B9  = TEMP/EXPECTED STATUS WORD 3.
*         B10 = TEMP/EXPECTED STATUS WORD 4.
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSD98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSD98D - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSD01 - SIDE DOOR CHANNEL ACCESS TEST 
1  FORMAT MSD01 ERROR(S) = *DECD
4  FORMAT MSD01 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSD01 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSD01 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE SDCLR=24B, SDSTAT=30B, SDCLMF=16B 
   EQUATE RELSDP=5, RESSDP=6, SDREF=20B 
* 
   DATA (OB(0),CON) 7777,7456,6363,1725,2525,5252,1160
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 01D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.32) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.10) GOTO 22             *CONTINUE
21 MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 46                          *EXIT 
22 B4 = 1                           *INITIALIZE CONDITION NUMBER
   B13 = 0                          *CLEAR ERROR COUNTER
* 
* -------MODULE TEST
* 
24 B14 = RESSDP                     *COMMAND NUMBER 
   RES SDP, ABT 74                  *RESERVE SIDE DOOR PORT AND I/O CHANNEL 
* 
* -------ISSUE A MASTER CLEAR AND VERIFY STATUS 
* 
26 B14 = SDCLR                      *COMMAND NUMBER 
   B2 = 0                           *SET MASK 
   B6 = 200B                        *CONTROL CLEAR
   SIDE DOOR CLEAR B6, ABT 74 
   GOSUB 50                         *STATUS SDP 
   B2 = 7417                        *SET MASK 
   IF(SB(0).AND.B2.NE.0) ERROR 0/100 GOSUB 70   *IF BAD STATUS WD 0 
   B2 = 4140                        *SET MASK 
   IF(SB(1).AND.B2.NE.0) ERROR 1/100 GOSUB 70   *IF BAD STATUS WD 1 
   B2 = 7600                        *SET MASK 
   IF(SB(2).AND.B2.NE.0) ERROR 2/100 GOSUB 70   *IF BAD STATUS WD 2 
   B10 = 1160                       *SET STORNET EX DEFAULT REFRESH 
*IF DEF,MVE,1 
   IF(DC.EQ.213) GOTO 27            *CONTINUE IF ON STORNET 
*IF -DEF,MVE,1
   IF(DC.EQ.211) GOTO 27            *CONTINUE IF ON STORNET 
   B10 = 2400                       *SET ESMII EXP DEFAULT REFRESH
27 IF(SB(3).NE.B10) ERROR 3/100 GOSUB 70   *IF BAD STATUS WD 3
   B10 = 0                          *SET EXP STATUS 
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------ISSUE SDP MAINT FUNC CLEAR MAINT FUNCTIONS 
* 
30 B14 = SDCLMF                     *COMMAND NUMBER 
   SDP MAINT FUNC CLEAR MAINT FUNCTIONS, ABT 74  *CLEAR MAINT 
* 
* -------TEST CHANNEL PARITY WITH SET REFRESH 
* 
   B4 = 2                           *SET CONDITION
   B5 = 0 
   B14 = SDREF                      *COMMAND NUMBER 
32 B6 = OB(B5)
   SET REFRESH TIME B6, ABT 74      *OUTPUT DATA
   GOSUB 50                         *STATUS SDP 
   B2 = 2000                        *SET MASK 
   IF(SB(0).AND.B2.NE.0) ERROR 0/101 GOSUB 70 
   GOTO 32 WHILE (B5+1.NE.7)        *REPEAT FOR 7 PATTERNS
*IF DEF,MVE,1 
   IF(DC.EQ.213) GOTO 34            *CONTINUE IF STORNET
*IF -DEF,MVE,1
   IF(DC.EQ.211) GOTO 34            *CONTINUE IF STORNET
   B6 = 2400                        *LOAD REFRESH FOR ESMII 
   SET REFRESH TIME B6, ABT 74      *ASSURE REFRESH NORMAL
34 GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------MODULE REPEAT/EXIT 
* 
44 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 46       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
46 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
47 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   GOSUB 55                         *RESERVE SDP
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 26              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 30              *REPEAT CONDITION 2 
   GOTO 44                          *CHECK REPEAT MODULE
* 
* -------STATUS SIDE DOOR PORT
* 
50 B14 = SDSTAT 
   STATUS SDP, ABT 74               *STATUS SDP 
   RETURN 
* 
* -------RESERVE SDP SUBROUTINE 
* 
55 B14 = RESSDP                     *COMMAND NUMBER 
   RES SDP, ABT 74                  *RES SDP AND CHANNEL
   RETURN 
* 
* -------PROCESS MODULE DETECTED ERRORS 
* 
70 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(ES.AND.SL.EQ.0) CALL 98D      *PROCESS ERRORS IF NO SCOPE LOOP
   GOTO 55 WHILE (B13+1.LE.2)       *IF EC.LE.2-RES AND RETURN
   IF(ES.AND.RC.NE.0) RETURN        *IF REPEAT CONDITION
   ENDSUB GOTO 44                   *TEST FOR REPEAT MODULE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13 + 1                    *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.EQ.0) CALL 98A      *PROCESS ERRORS IF NO SCOPE LOOP
   ENDSUB 
   GOSUB 47                         *CHECK FOR REPEAT CONDITION 
   GOTO 44                          *TEST FOR REPEAT MODULE 
   END 20 
COMPILE   - MSD01 -   SIDE DOOR CHANNEL ACCESS TEST 
*IF DEF,MVE,1 
   MODULE MSD02,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD02,DESM(171,211)LOCK 
*** MSD02 - MAXIMUM ADDRESS TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TESTS MAXIMUM  ADDRESS REGISTER  BY WRITING THE MAXIMUM ADDR- 
*         ESS REGISTER  AND READING THE REGISTER BY STATUSING THE  SIDE 
*         DOOR PORT ALSO TESTS ENVIRONMENTAL STATUS BITS. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET MAXIMUM ADDRESS PATTERN TO ZERO.
*         3.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         4.  SIDE DOOR MASTER CLEAR. 
*         5.  SET MAXIMUM ADDRESS PATTERN.
*         6.  SET CLOCK TIMING 000. 
*         7.  STATUS SDP AND COMPARE THE MAX ADDRESS BITS WITH THE
*             OUTPUT DATA, ALSO CHECK CLOCK BITS EQUAL 000. 
*         8.  REPEAT STEPS 5 - 7 FOR PATTERNS OF SLIDING ONE AND
*             SLIDING ZERO. 
*         9.  SET ENVIRON STATUS WARNING. 
*         10. STATUS SDP AND CHECK FOR ENVIRONMENTAL WARNING BIT SET. 
*         11. SET ENVIRON SHUT DOWN.
*         12. STATUS SDP AND CHECK FOR ENVIRONMENTAL SHUT DOWN BIT SET. 
*         13. REPEAT STEPS 9 - 12 FOR IF REPEAT CONDITION.
*         14. 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.
*         15. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSD02 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSD02 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSD02 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = MAXIMUM ADDRESS PATTERN.
*         B2  = STATUS MASK 
*         B4  = CONDITION NUMBER. 
*         B5  = TEMPORARY STORAGE.
*         B6  = CLEAR FUNCTION. 
*         B7  = TEMP/EXPECTED STATUS. 
*         B8  = TEMP/EXPECTED STATUS. 
*         B9  = TEMP/EXPECTED STATUS. 
*         B10 = TEMP/EXPECTED STATUS. 
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSD98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSD98D - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSD02 - MAXIMUM ADDRESS TEST
1  FORMAT MSD02 ERROR(S) = *DECD
4  FORMAT MSD02 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSD02 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSD02 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE SDCLR=24B, SDSTAT=30B, SDCLMF=16B, SDCLK=17B
   EQUATE RELSDP=5, RESSDP=6, SDREF=20B, SDENS=23B, SDMAX=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 02D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.32) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.10) GOTO 22             *CONTINUE
21 MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 46                          *EXIT 
22 B13 = 0                          *CLEAR ERROR COUNTER
* 
* -------MODULE TEST
* 
24 B4 = 1                           *INITIALIZE CONDITION NUMBER
   GOSUB 55                         *RESERVE SDP AND CHANNEL
* 
* -------ISSUE A MASTER CLEAR 
* 
   B14 = SDCLR                      *COMMAND NUMBER 
   B6 = 200B                        *MASTER CLEAR 
   SIDE DOOR CLEAR B6, ABT 74 
   B1 = 0 
* 
* -------SLIDING ONE PATTERN AND VERIFY STATUS
* 
26 B14 = SDCLK
   SET CLOCK TIMING B1, ABT 74      *SET CLOCK TIMING TO 0
27 GOSUB 54                         *SET MAX ADDR 
   GOSUB 50                         *SDP STATUS 
   B2 = 7417                        *SET MASK 
   IF(SB(0).AND.B2.NE.0) ERROR 0/102 GOSUB 70   *STATUS ERROR 
   B9 = B1                          *SET EXP STATUS 
   IF(SB(2).NE.B1) ERROR 2/102 GOSUB 70  *STATUS ERROR
   GOSUB 60                         *SET SHIFTING ONE PATT. 
   IF(B11.NE.0) GOTO 27             *REPEAT FOR 7 BITS
   B9 = 0 
   GOSUB 47                         *CHECK FOR REPEAT CONDITION 
* 
* -------SLIDING ZERO PATTERN AND VERIFY STATUS 
* 
30 B4 = 2                           *SET CONDITION 2
   B1 = 7777B 
32 GOSUB 54                         *SET MAX ADDR 
   GOSUB 50                         *SDP STATUS 
   B2 = 7417                        *SET MASK 
   IF(SB(0).AND.B2.NE.0) ERROR 0/102 GOSUB 70   *STATUS ERROR 
   B9 = B1.AND.177                  *SET EXP STATUS 
   B2 = 177                         *SET MASK 
   IF(B1.AND.B2.NE.SB(2)) ERROR 2/102 GOSUB 70  *STATUS ERROR 
   GOSUB 65                         *SET SHIFTING ZERO PATT.
   IF(B11.NE.0) GOTO 32             *REPEAT FOR 7 BITS
   B9 = 0 
   GOSUB 47                         *CHECK REPEAT CONDITION 
*  HEREIAM
* -------ENVIROMENTAL WARNING AND SHUTDOWN
* 
34 B4 = 3                           *SET CONDITION 3
   B7 = 400B                        *WARNING LEVEL BIT
   B14 = SDENS                      *SET ENVIROMENTAL STATUS
   SET ENVIRON STATUS BITS B7, ABT 74 
   GOSUB 50                         *SDP STATUS 
   B2 = 2400                        *SET MASK 
   IF(SB(0).AND.B2.NE.B7) ERROR 0/103 GOSUB 70  *STATUS ERROR 
   B1 = 1000B                       *SHUTDOWN LEVEL BIT 
   SET ENVIRON STATUS BITS B1, ABT 74 
   GOSUB 50                         *SDP STATUS 
   B2 = 3400                        *SET MASK 
   B7 = 1400B                       *SET EXP STATUS 
   IF(SB(0).AND.B2.NE.B7) ERROR 0/103 GOSUB 70  *STATUS ERROR 
   B14 = SDCLR                      *SDP STATUS CLEAR 
   SIDE DOOR CLEAR B1, ABT 74       *CLR ENVIRON BITS(1000) 
   B7 = 0                           *SET EXP STATUS 
   B2 = 2000                        *SET MASK 
   IF(SB(0).AND.B2.NE.0) ERROR 0/103 GOSUB 70  *STATUS ERROR
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------MODULE REPEAT/EXIT 
* 
44 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 46       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
46 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
47 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   GOSUB 55                         *RESERVE SDP
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 26              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 30              *REPEAT CONDITION 2 
   IF(B4.EQ.3) GOTO 34              *REPEAT CONDITION 3 
   GOTO 44                          *CHECK REPEAT MODULE
* 
* -------STATUS SIDE DOOR PORT
* 
50 B14 = SDSTAT 
   STATUS SDP, ABT 74               *STATUS SDP 
   RETURN 
* 
* -------SET MAXIMUM ADDR 
* 
54 B14 = SDMAX
   SET MAXIMUM ADDRESS B1, ABT 74   *FUNC MAX ADDRESS 
   RETURN 
* 
* -------RESERVE SDP SUBROUTINE 
* 
55 B14 = RESSDP                     *COMMAND NUMBER 
   RES SDP, ABT 74                  *RES SDP AND CHANNEL
   RETURN 
* 
* -------SLIDING ONES PATTERN SUBROUTINE
* 
60 IF(B1.NE.0) GOTO 62
   B1 = B1+1
61 B11 = B11+1
   GOTO 64
62 B1 = B1.LS.1                     *SLIDING PATTERN
   GOTO 64 WHILE (B11+1.LT.8D)      *LOOP FOR ALL 7 BITS
   B1 = 0 
63 B11 = 0
64 RETURN 
* 
* -------SLIDING ZEROS PATTERN SUBROUTINE 
* 
65 IF(B1.NE.7777B) GOTO 66
   B1 = 7776B 
   GOTO 61
66 B1 = B1.LS.1                     *SLIDING PATTERN
   GOTO 64 WHILE (B11+1.LT.8D)      *LOOP FOR ALL 7 BITS
   B1 = 7777B 
   GOTO 63
* 
* -------PROCESS MODULE DETECTED ERRORS 
* 
70 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(ES.AND.SL.EQ.0) CALL 98D      *PROCESS ERRORS IF NO SCOPE LOOP
   GOTO 55 WHILE (B13+1.LE.2)       *IF EC.LE.2-RES AND RETURN
   IF(ES.AND.RC.NE.0) RETURN        *IF REPEAT CONDITION
   ENDSUB GOTO 46                   *TEST FOR REPEAT MODULE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13 + 1                    *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.EQ.0) CALL 98A      *PROCESS ERRORS IF NO SCOPE LOOP
   ENDSUB 
   GOSUB 47                         *CHECK FOR REPEAT CONDITION 
   GOTO 44                          *TEST FOR REPEAT MODULE 
   END 20 
COMPILE   - MSD02 -   MAXIMUM ADDRESS TEST
*IF DEF,MVE,1 
   MODULE MSD03,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD03,DESM(171,211)LOCK 
*** MSD03 - PROGRAMMABLE CLEARS TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE  TESTS THE  PROGRAMMABLE CLEARS.   CONDITIONS ARE 
*         FORCED, THEN THE CLEARS ARE TESTED TO INSURE THAT THE  PROPER 
*         CONDITIONS ARE CLEARED BY THE CORRECT FUNCTION. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         3.  RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE 
*             FUNCTIONS AND SIDE DOOR STATUS CLEAR. 
*         4.  SET MAXIMUM ADDRESS REGISTER EQUAL TO 177B. 
*         5.  SET CLOCK TIMING EQUAL TO +2%.
*         6.  STATUS SDP AND CHECK CLOCK TIMING CORRECT.
*         7.  SIDE DOOR STATUS CLEAR. 
*         8.  SIDE DOOR PORT CLEAR. 
*         9.  STATUS SDP AND CHECK CLOCK TIMING CORRECT.
*         10. SIDE DOOR CONTROL CLEAR.
*         11. STATUS SDP AND CHECK CLOCK TIMING CORRECT.
*         12. SIDE DOOR MASTER CLEAR FUNCTION.
*         13. STATUS SDP AND CHECK CLOCK TIMING NORMAL. 
*         14. REPEAT STEPS 3 - 13 IF REPEAT CONDITION.
*         15. SET REFRESH TEST VALUE TO THE MAXIMUM REFRESH COUNTER 
*             VALUE (7774). 
*         16. SET REFRESH TIME WITH DATA EQUAL THE REFRESH COUNTER
*             TEST VALUE. 
*         17. STATUS SDP AND CHECK THE REFRESH COUNTER FOR THE  CORRECT 
*             VALUE.
*         18. DECREMENT THE TEST VALUE BY ONE.
*         19. IF TEST VALUE NOT EQUAL TO 1000 REPEAT STEPS 15-17. 
*         20. SET REFRESH VALUE TO 777. 
*         21. SIDE DOOR STATUS AND CHECK FOR REFRESH STATUS = 1000. 
*         22. REPEAT 20 - 21 IF REPEAT CONDITION. 
*         23. SET REFRESH TEST VALUE TO THE MAXIMUM REFRESH COUNTER 
*             VALUE (7774). 
*         24. SET REFRESH TIME WITH DATA EQUAL THE REFRESH COUNTER
*             TEST VALUE. 
*         25. SIDE DOOR MASTER CLEAR. 
*         26. STATUS SDP AND CHECK THE REFRESH COUNTER EQUALS NOMINAL 
*             VALUE.(2B). 
*         27. REPEAT STEPS 23 - 26 FOR IF REPEAT CONDITION. 
*         28. 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.
*         29. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSD03 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSD03 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSD03 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = TEMPORARY 
*         B2  = STATUS MASK 
*         B3  = REFRESH VALUE 
*         B4  = CONDITION NUMBER. 
*         B5  = TEMPORARY STORAGE.
*         B6  = CLEAR FUNCTION. 
*         B7  = TEMP/EXPECTED STATUS. 
*         B8  = TEMP/EXPECTED STATUS. 
*         B9  = TEMP/EXPECTED STATUS. 
*         B10 = TEMP/EXPECTED STATUS. 
*         B11 = INTERNAL LOOP COUNTER.
*         B12 = REFRESH COUNTER NUMBER
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSD98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSD98D - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSD03   PROGRAMMABLE CLEARS TEST
1  FORMAT MSD03 ERROR(S) = *DECD
4  FORMAT MSD03 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSD03 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSD03 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE SDCLR=24B, SDSTAT=30B, SDCLMF=16B, SDCLK=17B
   EQUATE RELSDP=5, RESSDP=6, SDREF=20B, SDMAX=22B,SDELRS=2 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 03D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.32) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.10) GOTO 22             *CONTINUE
21 MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 46                          *EXIT 
22 B13 = 0                          *CLEAR ERROR COUNTER
   B12 = 777                        *SET STORNET REF NO.
*IF DEF,MVE,1 
   IF(DC.EQ.212) B12 = 1177         *RESET IF ESMII 
*IF -DEF,MVE,1
   IF(DC.EQ.171) B12 = 1177         *RESET IF ESMII 
* 
* -------MODULE TEST
* 
24 B4 = 1                           *INITIALIZE CONDITION NUMBER
   B14 = RESSDP                     *COMMAND NUMBER 
   RES SDP, ABT 74                  *RESERVE SDP AND I/O CHANNEL
* 
* -------INITIALIZE HARDWARE
* 
   B14 = SDELRS 
   ERRLOG RESET, ABT 74             *RESET ERROR LOG
   B14 = SDCLMF 
   SDP MAINT FUNC CLEAR MAINT FUNCTIONS, ABT 74 
   B6 = 1000B                       *SDP STATUS CLEAR 
   GOSUB 52                         *SDP CLEAR
   B14 = SDMAX                      *COMMAND NUMBER 
   B1 = 177B
   SET MAXIMUM ADDRESS B1, ABT 74   *SET MAX ADDR = 177B
* 
* -------CLEARS TEST WITH CLOCK TIMING
* 
26 B4 = 1                           *SET CONDITION 1
   B1 = 3                           *SET +2%
   B7 = 0                           *CLEAR EXP STATUS 
   B8 = 0 
   B9 = 0 
   B10 = 0
   B14 = SDCLK
   SET CLOCK TIMING B1, ABT 74
   GOSUB 50                         *SDP STATUS 
   B9 = 600                         *SET EXP STATUS 
   B2 = 1600                        *SET MASK 
   IF(SB(2).AND.B2.NE.600) ERROR 2/104 GOSUB 70  *STATUS ERR
   B6 = 1000B                       *SDP STATUS CLEAR 
   GOSUB 52 
   B6 = 400B                        *SDP PORT CLEAR 
   GOSUB 52 
   GOSUB 50 
   IF(SB(2).AND.1600.NE.600) ERROR 2/104 GOSUB 70  *STATUS ERR
   B6 = 100B                        *SDP CONTROL CLEAR
   GOSUB 52 
   GOSUB 50 
   IF(SB(2).AND.1600.NE.600) ERROR 2/104 GOSUB 70  *STATUS ERR
   B6 = 200B                        *SDP MASTER CLEAR 
   GOSUB 52 
   GOSUB 50 
   B9 = 0                           *SET EXP STATUS 
   IF(SB(2).AND.1600.NE.0) ERROR 2/104 GOSUB 70  *STATUS ERR
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------CLEARS TEST WITH REFRESH COUNTER 
* 
30 B4 = 2                           *SET CONDITION 2
   B2 = 0                           *CLEAR MASK 
   B10 = 7774B                      *MAX REFRESH COUNT
   B14 = SDREF                      *COMMAND NUMBER 
32 SET REFRESH TIME B10, ABT 74 
   GOSUB 50                         *SDP STATUS 
   IF(SB(3).NE.B10) ERROR 3/105 GOSUB 70  *STATUS ERROR 
   GOTO 32 WHILE(B10-1.NE.B12)      *LOOP FOR DEFAULT COUNT 
   GOSUB 47 
* 
* -------TEST FOR CORRECT STATUS ON MINIMUM - 1 
* 
34 B4 = 3                           *SET CONDITION 3
   B3 = B12 
   SET REFRESH TIME B3, ABT 74
   GOSUB 50                         *SDP STATUS 
   B10 = B12 + 1                    *SET EXP STATUS 
   IF(SB(3).NE.B10) ERROR 3/106 GOSUB 70  *LAST STATUS NE 1000
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------TEST FOR CORRECT REFRESH AFTER MASTER CLEAR
* 
40 B4 = 4                           *SET CONDITION 4
   B3 = 7774B 
   SET REFRESH TIME B3, ABT 74
   B6 = 200B                        *SET SDP MASTER CLEAR 
   GOSUB 52 
   GOSUB 50                         *SDP STATUS 
   B10 = 1160                       *SET EXP STATUS 
*IF DEF,MVE,1 
   IF(DC.EQ.213) GOTO 42            *CONTINUE IF ON STORNET 
*IF -DEF,MVE,1
   IF(DC.EQ.211) GOTO 42            *CONTINUE IF ON STORNET 
   B10 = 2400                       *SET ESMII EXP DEFAULT REFRESH
42 IF(SB(3).NE.B10) ERROR 3/100 GOSUB 70  *STATUS ERROR 
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------MODULE REPEAT/EXIT 
* 
44 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 46       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
46 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
47 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   GOSUB 55                         *RESERVE SDP
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 26              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 30              *REPEAT CONDITION 2 
   IF(B4.EQ.3) GOTO 34              *REPEAT CONDITION 3 
   IF(B4.EQ.4) GOTO 40              *REPEAT CONDITION 4 
   GOTO 44                          *CHECK REPEAT MODULE
* 
* -------STATUS SIDE DOOR PORT
* 
50 B14 = SDSTAT 
   STATUS SDP, ABT 74               *STATUS SDP 
   RETURN 
* 
* -------CLEAR SIDE DOOR PORT 
* 
52 B14 = SDCLR
   SIDE DOOR CLEAR B6, ABT 74       *CLEAR SDP
   RETURN 
* 
* -------RESERVE SDP SUBROUTINE 
* 
55 B14 = RESSDP                     *COMMAND NUMBER 
   RES SDP, ABT 74                  *RES SDP AND CHANNEL
   RETURN 
* 
* -------PROCESS MODULE DETECTED ERRORS 
* 
70 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(ES.AND.SL.EQ.0) CALL 98D      *PROCESS ERRORS IF NO SCOPE LOOP
   GOTO 55 WHILE (B13+1.LE.2)       *IF EC.LE.2-RES AND RETURN
   IF(ES.AND.RC.NE.0) RETURN        *IF REPEAT CONDITION
   ENDSUB GOTO 44                   *TEST FOR REPEAT MODULE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13 + 1                    *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.EQ.0) CALL 98A      *PROCESS ERRORS IF NO SCOPE LOOP
   ENDSUB 
   GOSUB 47                         *CHECK FOR REPEAT CONDITION 
   GOTO 44                          *TEST FOR REPEAT MODULE 
   END 20 
COMPILE   - MSD03 -   PROGRAMMABLE CLEARS TEST
*IF DEF,MVE,1 
   MODULE MSD04,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD04,DESM(171,211)LOCK 
*** MSD04 - FLAG MEMORY SIDE DOOR ADDRESSING TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE  TESTS THE ABILITY OF THE SIDE DOOR  PORT TO READ 
*         THE 4 X 64K FLAG REGISTER.  THE FIRST 500B WORDS ARE READ AND 
*         VERIFIED AS EQUAL TO ZERO.   THESE WILL HAVE BEEN  PREVIOUSLY 
*         WRITTEN BY THE LOW SPEED PORT (MSM) PORTION OF THIS TEST.  IN 
*         ADDITION,A FORCE GBA FUNCTION IS PERFORMED AND A TEST IS MADE 
*         TO DETERMINE IF THE PROPER STATUS IS RETURNED TO THE SDP FOL- 
*         LOWING A READ OF THE FLAG REGISTER. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         3.  RESET ERROR LOG, SIDE DOOR CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS.
*         4.  SET MAXIMUM ADDRESS REGISTER EQUAL 000. 
*         5.  SIDE DOOR READ FLAG REG AND VERIFY THE CONTENTS ARE EQUAL 
*             ZERO. 
*         6.  REPEAT STEPS 2 - 5 IF REPEAT CONDITION. 
*         7.  FUNCTION A FORCE GBA VIA THE SDP. 
*         8.  PERFORM A READ OF THE FLAG REGISTER AND CHECK THAT A
*             FGBA STATUS BIT IS RETURNED.
*         9.  FUNCTION A CLEAR MAINT FUNCTIONS. 
*        10.  REPEAT STEPS 7 - 9 IF REPEAT CONDITION. 
*        11.  SET MAXIMUM ADDRESS REGISTER EQUAL 177. 
*        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 
* 
*         MSD04 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSD04 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSD04 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B2  = STATUS MASK 
*         B4  = CONDITION NUMBER. 
*         B5  = TEMPORARY STORAGE.
*         B7  = TEMP/EXPECTED STATUS. 
*         B8  = TEMP/EXPECTED STATUS. 
*         B9  = TEMP/EXPECTED STATUS. 
*         B10 = TEMP/EXPECTED STATUS. 
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSD98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSD98E - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSD04   FLAG MEMORY SIDE DOOR ADDRESSING TEST 
1  FORMAT MSD04 ERROR(S) = *DECD
4  FORMAT MSD04 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSD04 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSD04 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE SDCLR=24B, SDSTAT=30B, SDCLMF=16B, SDRFR=25B
   EQUATE RELSDP=5, RESSDP=6, SDREF=20B, SDMAX=22B
   EQUATE SDELRS=2, SDGBA=7 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 04D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.32) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.10) GOTO 22             *CONTINUE
21 MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 46                          *EXIT 
22 B13 = 0                          *CLEAR ERROR COUNTER
* 
* -------MODULE TEST
* 
24 B4 = 1                           *INITIALIZE CONDITION NUMBER
   B14 = RESSDP                     *COMMAND NUMBER 
   RES SDP, ABT 74                  *RESERVE SDP AND I/O CHANNEL
* 
* -------INITIALIZE HARDWARE
* 
   B14 = SDELRS 
   ERRLOG RESET, ABT 74             *RESET ERROR LOG
   B14 = SDCLMF 
   SDP MAINT FUNC CLEAR MAINT FUNCTIONS, ABT 74 
   B6 = 1000B                       *SDP STATUS CLEAR 
   GOSUB 52                         *SDP CLEAR
   B14 = SDMAX                      *COMMAND NUMBER 
   B1 = 000B
   SET MAXIMUM ADDRESS B1, ABT 74   *SET MAX ADDR = 000 
* 
* -------READ 4 BIT FLAG REGISTER AND VERIFY
* 
30 B4 = 1                           *SET CONDITION 1
   WC = 500B
   DUP 0 TO OB FOR WC               *SET OB TO ZEROS
   B14 = SDRFR                      *COMMAND NUMBER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   GOSUB 50                         *SDP STATUS 
   B2 = 7117                        *SET MASK 
   IF(SB(0).AND.B2.NE.0) ERROR 0/107 GOSUB 70  *STATUS ERR
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 34
32 GOSUB 47                         *CHECK REPEAT CONDITION 
   GOTO 40                          *GO TO NEXT CONDITION 
34 GOSUB 70                         *PROCESS COMPARE ERROR
   GOTO 32
* 
* -------TEST GBA FORCE AND STATUS
* 
40 B4 = 2                           *SET CONDITION 2
   B14 = SDGBA                      *COMMAND NUMBER 
   SDP MAINT FUNC GBA FORCE, ABT 74 
   B14 = SDRFR                      *COMMAND NUMBER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   GOSUB 50                         *SDP STATUS 
   B2 = 77                          *SET STATUS MASK
   B8 = 40                          *SET EXPECTED STATUS
   IF(SB(1).AND.40.NE.40) ERROR 1/110 GOSUB 70  *CHECK FGBA BIT 
   B14 = SDCLMF                     *COMMAND NUMBER 
   SDP MAINT FUNC CLEAR MAINT FUNCTIONS, ABT 74 
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------SET MAXIMUM ADDRESS TO 177 
* 
   B14 = SDMAX                      *COMMAND NUMBER 
   B1 = 177B
   SET MAXIMUM ADDRESS B1, ABT 74   *SET MAX ADDR = 177 
* 
* -------MODULE REPEAT/EXIT 
* 
44 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 46       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
46 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
47 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   GOSUB 55                         *RESERVE SDP
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 30              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 40              *REPEAT CONDITION 2 
   GOTO 44                          *CHECK REPEAT MODULE
* 
* -------STATUS SIDE DOOR PORT
* 
50 B14 = SDSTAT 
   STATUS SDP, ABT 74               *STATUS SDP 
   RETURN 
* 
* -------CLEAR SIDE DOOR PORT 
* 
52 B14 = SDCLR
   SIDE DOOR CLEAR B6, ABT 74       *CLEAR SDP
   RETURN 
* 
* -------RESERVE SDP SUBROUTINE 
* 
55 B14 = RESSDP                     *COMMAND NUMBER 
   RES SDP, ABT 74                  *RES SDP AND CHANNEL
   RETURN 
* 
* -------PROCESS MODULE DETECTED ERRORS 
* 
70 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(B14.EQ.0) GOTO 71             *CHECK FOR COMPARE ERROR
   IF(ES.AND.SL.EQ.0) CALL 98D      *PROCESS ERRORS IF NO SCOPE LOOP
   GOTO 72                          *CONTINUE 
71 IF(ES.AND.SL.EQ.0) CALL 98C      *PROCESS ERRORS IF NO SCOPE LOOP
72 GOTO 55 WHILE (B13+1.LE.2)       *IF EC.LE.2-RES AND RETURN
   IF(ES.AND.RC.NE.0) RETURN        *IF REPEAT CONDITION
   ENDSUB GOTO 44                   *TEST FOR REPEAT MODULE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13 + 1                    *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.EQ.0) CALL 98A      *PROCESS ERRORS IF NO SCOPE LOOP
   ENDSUB 
   GOSUB 47                         *CHECK FOR REPEAT CONDITION 
   GOTO 44                          *TEST FOR REPEAT MODULE 
   END 20 
COMPILE   - MSD04 -   FLAG MEMORY SIDE DOOR ADDRESSING TEST 
*IF DEF,MVE,1 
   MODULE MSD05,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD05,DESM(171,211)LOCK 
*** MSD05 - MONITOR FLAG REGISTER 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE WILL BE THE SLAVE TO MSM.IT RECEIVES CODES (OPER- 
*         ATIONS) VIA THE FLAG REGISTER AND PERFORMS THE  REQUESTED AC- 
*         TION. 
* 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         3.  RESET ERROR LOG, SIDE DOOR CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS.
*         4.  STATUS SDP TO DETERMINE AMOUNT OF MEMORY AVAILABLE. 
*             SAVE THIS VALUE IN IB(502) FOR USED IN SETTING MAX
*             ADDRESS IN THIS MODULE AND FOR COMMUNICATIONS WITH MSM. 
*         5.  SET CLOCK MARGINS EQUAL TO USER SPECIFIED PARAMETER P1. 
*         6.  SET MAXIMUM ADDRESS REGISTER EQUAL IB(502). 
*         7.  MONITOR THE FLAG REGISTER FOR A OPERATION CODE, CALL  THE 
*             APPROPRIATE SUBMODULE TO PERFORM THE REQUESTED OPERATION. 
*         8.  IF THE SUBMODULE HAD AN ABORT ON ANY COMMAND, THIS MODULE 
*             WILL DISPLAY  THE COMMUNICATIONS  LOST MESSAGE  AND HALT. 
*             THIS IS A FATAL SITUATION, ONLY A RESTART OF MSD WILL  BE 
*             POSSIBLE. 
*         9.  ON 0701 ERROR LOG FUNCTIONS,  IF AN ERROR LOG  FAILURE IS 
*             DETECTED THE SUBMODULE WILL DISPLAY THE ERROR MESSAGE AND 
*             HALT. CONTROL WILL NOT BE  RETURNED TO THIS  MODULE.  MSM 
*             WILL ALSO DETECT THE FAILURE AND HALT WITH AN ERROR.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         MSD05 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSD05 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSD05 AL TOO LOW NEEDS AL=10
*         EC 0111 - MSD05 ABORTED - COMMUNICATIONS LOST.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         P1  = USER SPECIFIED CLOCK TIMING MARGINS.
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B2  = REQUESTED OPERATION.
*         B3  = TEMPORARY STORAGE.
*         B6  = TEMPORARY STORAGE.
*         B7  = TEMPORARY STORAGE.
*         B13 = ERROR FLAG. 
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
  
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSD98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSD98D - POST STATUS ERROR DISPLAY. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSD05 - MONITOR FLAG REGISTER 
1  FORMAT MSD05 ERROR(S) = *DECD
3  FORMAT MSD05 MONITOR FLAG REGISTER LC=*DECD
4  FORMAT EC 0111 - MSD05 ABORTED - COMMUNICATIONS LOST.
*IF DEF,MVE,1 
5  FORMAT MSD05 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSD05 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE RESSDP=6, SDMAX=22B, SDCLK=17B
   EQUATE SDCLR=24B, SDRFR=25B, SDSTAT=30B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 05D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.32) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.10) GOTO 22             *CONTINUE
21 MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 77                          *EXIT 
22 B13 = 0                          *CLEAR ERROR COUNTER
   B14 = RESSDP                     *COMMAND CODE 
   RES SDP, ABT 74                  *RESERVE SDP
   B6 = 200B
   GOSUB 62                         *MASTER CLEAR SDP 
   GOSUB 60                         *STATUS SDP 
   IB(502) = SB(2).AND.177          *STORE MAX AVAIL ADDR 
   IB(503) = IB(502) - 1            *STORE MAX - 1
   B6 = IB(502) 
   GOSUB 64                         *SET MAX ADDRESS
   DUP 0 TO OB FOR 500              *SET OB TO ZEROS
* 
* -------MONITOR FLAG REGISTER
* 
24 B14 = RESSDP                     *COMMAND CODE 
   RES SDP, ABT 74                  *RESERVE SDP
   B14 = SDCLK                      *SET CLOCK MARGINS EQUAL TO P1
   B3 = P1
   SET CLOCK TIMING B3, ABT 74
26 WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   GOSUB 60                         *SDP STATUS 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 30   *CHECK FOR OP CODE 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 3(B0) TO DISPLAY             *DISPLAY ERROR,LOOP COUNT 
   GOTO 24                          *LOOP WAITING FOR FUNCTION
* 
* -------INTERROGATE FUNCTION 
* 
30 B2 = IB(0)                       *SET B2 = OP CODE 
   IF (B2.AND.17.EQ.0) GOTO 24      *WAIT FOR COMPLETE CODE 
   IF (B2.AND.0700.EQ.100) CALL 05A  *PROCESS 0100 FUNCTION 
   IF (B2.AND.0700.EQ.200) CALL 05B  *PROCESS 0200 FUNCTION 
   IF (B2.AND.0700.EQ.300) CALL 05C  *PROCESS 0300 FUNCTION 
   IF (B2.AND.0700.EQ.400) CALL 05D  *PROCESS 0400 FUNCTION 
   IF (B2.AND.0700.EQ.500) CALL 05E  *PROCESS 0500 FUNCTION 
   IF (B2.AND.0700.EQ.600) CALL 05F  *PROCESS 0600 FUNCTION 
   IF (B2.AND.0700.EQ.700) CALL 05G  *PROCESS O700 FUNCTION 
   IF (B13.EQ.0) GOTO 24            *CONTINUE IF NO ERROR 
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   MSG 4 TO LINE 14                 *DISPLAY ABORT MESSAGE
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 77                          *EXIT TO END OF TEST
* 
* -------STATUS SIDE DOOR PORT
* 
60 B14 = SDSTAT 
   STATUS SDP, ABT 74               *STATUS SDP 
   IF(SB(0).AND.2000.NE.0) ERROR 0/107 GOSUB 70  *STATUS ERR
   RETURN 
* 
* -------CLEAR SIDE DOOR PORT 
* 
62 B14 = SDCLR
   SIDE DOOR CLEAR B6, ABT 74       *CLEAR SDP
   RETURN 
* 
* -------SET MAXIMUM ADDRESS
64 B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(502) 
   RETURN 
* 
* -------PROCESS MODULE DETECTED ERRORS 
* 
70 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B2 = 200                         *SET MASK FOR DISPLAY 
   B7 = 0                           *SET EXPECTED STATUS
   CALL 98D                         *CALL COMPARE ERROR PROCESSOR 
   HALT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   HALT 
77 END 20 
COMPILE   - MSD05 -   MONITOR FLAG REGISTER 
*IF DEF,MVE,1 
   MODULE MSD05A,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05A,DESM(171,211)LOCK
*** MSD05A - PROCESS 0100 FUNCTION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 01XX.  IT WILL FUNCTION THE SDP AS REQUESTED, SET  THE 
*         MAX ADDRESS TO IB(503),LOOP AWAITING THE FLAG REGISTER CLEAR, 
*         SET THE MAX ADDRESS TO IB(502), AND RETURN TO MSD05.
* 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  DETERMINE THE REQUESTED MSM ACTION AND FUNCTION 
*             THE SDP.
*         3.  SET MAXIMUM ADDRESS REGISTER EQUAL IB(503). 
*         4.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         5.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         6.  SET MAXIMUM ADDRESS REGISTER EQUAL IB(502). 
*         7.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B2  = REQUESTED OP CODE.
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B2  = REQUESTED OP CODE.
*         B6  = TEMPORARY STORAGE.
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
   EQUATE SDELRS=2, RESSDP=6, SDGBA=7, SDWVEF=10B, SDDSEC=11B 
   EQUATE SDWCB=12B, SDRCB=13B, SDRSYN=14B, SDRZCB=15B
   EQUATE SDCLMF=16B, SDSCL=21B, SDMAX=22B, SDRFR=25B 
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
* 
* -------PERFORM REQUESTED OPERATION
* 
21 IF (B2.AND.0077.NE.1) GOTO 22
   B14=SDGBA                        *SET 0101 FUNCTION
   SDP MAINT FUNC GBA FORCE, ABT 74 
   GOTO 50
22 IF (B2.AND.0077.NE.2) GOTO 23
   B14=SDWVEF                       *SET 0102 FUNCTION
   SDP MAINT FUNC WRITE VALID ERROR FORCE, ABT 74 
   GOTO 50
23 IF (B2.AND.0077.NE.3) GOTO 24
   B14=SDDSEC                       *SET 0103 FUNCTION
   SDP MAINT FUNC DISABLE SECDED, ABT 74
   GOTO 50
24 IF (B2.AND.0077.NE.4) GOTO 25
   B14=SDWCB                        *SET 0104 FUNCTION
   SDP MAINT FUNC WRITE CHECK BITS, ABT 74
   GOTO 50
25 IF (B2.AND.0077.NE.5) GOTO 26
   B14=SDRCB                        *SET 0105 FUNCTION
   SDP MAINT FUNC READ CHECK BITS, ABT 74 
   GOTO 50
26 IF (B2.AND.0077.NE.6) GOTO 27
   B14=SDRSYN                       *SET 0106 FUNCTION
   SDP MAINT FUNC READ SYNDROME BITS, ABT 74
   GOTO 50
27 IF (B2.AND.0077.NE.7) GOTO 30
   B14=SDRZCB                       *SET 0107 FUNCTION
   SDP MAINT FUNC READ ZERO CHECK BITS, ABT 74
   GOTO 50
30 IF (B2.AND.0077.NE.10) GOTO 31 
   B14=SDCLMF                       *SET 0110 FUNCTION
   SDP MAINT FUNC CLEAR MAINT FUNCTIONS, ABT 74 
   GOTO 50
31 IF (B2.AND.0077.NE.11) GOTO 32 
   B14=SDSCL                        *SET 0111 FUNCTION
   SET SCANNER LOCK, ABT 74 
   GOTO 50
32 IF (B2.AND.0077.NE.12) GOTO 50 
   B14=SDELRS                       *SET 0112 FUNCTION
   ERRLOG RESET, ABT 74 
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
50 B6 = IB(503) 
   GOSUB 70                         *SET MAX ADDR = IB(503) 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
52 B14 = RESSDP 
   RES SDP ,ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 52   *CHECK FOR REG = 0.
   B6 = IB(502) 
   GOSUB 70                         *SET MAX ADDR = IB(502) 
   EXIT                             *EXIT TO MSD05
* 
* -------SET MAXIMUM ADDRESS
* 
70 B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR 
   RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05A -   PROCESS 0100 FUNCTION
*IF DEF,MVE,1 
   MODULE MSD05B,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05B,DESM(171,211)LOCK
*** MSD05B - PROCESS 0200 FUNCTION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 02XX.  IT WILL FUNCTION THE SDP AS REQUESTED, SET  THE 
*         MAX ADDRESS TO IB(503),LOOP AWAITING THE FLAG REGISTER CLEAR, 
*         SET THE MAX ADDRESS TO IB(502), AND RETURN TO MSD05.
* 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  DETERMINE THE REQUESTED MSM ACTION, LOAD THE
*             REQUIRED OUTPUT WORD, AND  FUNCTION THE SDP.
*         3.  SET MAXIMUM ADDRESS REGISTER EQUAL IB(503). 
*         4.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         5.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         6.  SET THE MAXIMUM ADDRESS TO IB(502). 
*         7.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B2  = REQUESTED OP CODE.
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B2  = REQUESTED OP CODE.
*         B3  = CODE TO OUTPUT
*         B4  = TEMPORARY STORAGE.
*         B5  = TEMPORARY STORAGE.
*         B6  = TEMPORARY STORAGE.
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*         IB(1) = WORD TO OUTPUT
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
   EQUATE RESSDP=6, SDCLK=17B 
   EQUATE SDREF=20B, SDMAX=22B, SDENS=23B 
   EQUATE SDCLR=24B, SDRFR=25B
* 
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
   B3 = IB(1)                       *SET B3 TO OUTPUT CODE
* 
* -------PERFORM REQUESTED OPERATION
* 
21 IF (B2.AND.0077.NE.1) GOTO 22
   B14 = SDCLK                      *SET 0201 FUNCTION
   SET CLOCK TIMING B3, ABT 74
   GOTO 40
22 IF (B2.AND.0077.NE.2) GOTO 23
   B3 = B3.LS.8D                    *FORM UPPER BITS
   B4 = IB(2).AND.1700              *LOAD MIDDLE BITS 
   B4 = B4.RS.2 
   B5 = IB(2).AND.0017              *LOAD LOWER BITS
   B3 = B3+B4+B5                    *FORM COMPLETE WORD 
   B14 = SDREF                      *SET 0202 FUNCTION
   SET REFRESH TIME B3, ABT 74
   GOTO 40
23 IF (B2.AND.0077.NE.3) GOTO 24
   B4 = B3.AND.700                  *LOAD UPPER BITS
   B4 = B4.RS.2 
   B5 = B3.AND.0017                 *LOAD LOWER BITS
   B3 = B4+B5                       *FORM COMPLETE WORD 
   B14=SDMAX                        *SET 0203 FUNCTION
   SET MAXIMUM ADDRESS B3, ABT 74 
   GOTO 40
24 IF (B2.AND.0077.NE.4) GOTO 25
   B14 = SDENS                      *SET 0204 FUNCTION
   SET ENVIRON STATUS BITS B3, ABT 74 
   GOTO 40
25 IF (B2.AND.0077.NE.5) GOTO 40
   B4 = B3.AND.300                  *LOAD UPPER BITS
   B4 = B4.RS.2 
   B5 = B3.AND.0017                 *LOAD LOWER BITS
   B3 = B4+B5                       *FORM COMPLETE WORD 
   B3 = B3.LS.4                     *SHIFT TO CORRECT POSITION
   B14 = SDCLR                      *SET 0205 FUNCTION
   SIDE DOOR CLEAR B3, ABT 74 
   GOTO 40
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
40 B6 = IB(503) 
   GOSUB 64                         *SET MAX ADDR = IB(503) 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
42 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 42  *LOOP AWAITING 0. 
   B6 = IB(502) 
   GOSUB 64                         *SET MAX ADDR = IB(502).
   EXIT                             *EXIT TO MSD05
* 
* -------SET MAXIMUM ADDRESS
64 B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR 
   RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05B -   PROCESS 0200 FUNCTION
*IF DEF,MVE,1 
   MODULE MSD05C,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05C,DESM(171,211)LOCK
*** MSD05C - PROCESS 0300 FUNCTION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 03XX.  IT WILL FUNCTION THE SDP AS REQUESTED, SET  THE 
*         MAX ADDRESS TO IB(503),LOOP AWAITING THE FLAG REGISTER CLEAR, 
*         SET THE MAX ADDRESS TO IB(502), AND RETURN TO MSD05.
* 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  FUNCTION THE SDP TO SET THE ERRLOG PROGRAM COUNTER. 
*         3.  SET MAXIMUM ADDRESS REGISTER EQUAL IB(503). 
*         4.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         5.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         6   SET THE MAXIMUM ADDRESS TO IB(502). 
*         7.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B3  = TEMPORARY STORAGE.
*         B4  = TEMPORARY STORAGE.
*         B5  = TEMPORARY STORAGE.
*         B6  = TEMPORARY STORAGE.
*         B13 = ERROR FLAG. 
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*         IB(1)-IB(7) = DATA FROM MSM 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
* 
   EQUATE SDELSPC=3, RESSDP=6, SDMAX=22B, SDRFR=25B 
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
* 
* -------PREPARE DATA TO BE SENT TO SDP 
* 
22 B3 = IB(1)                       *LOAD UPPER 2 BITS
   B3 = B3.AND.3                    *MASK FOR REQUIRED BITS 
   B3 = B3.LS.8D                    *POSITION BITS
   B4 = IB(2).AND.1700              *LOAD MIDDLE 4 BITS 
   B4 = B4.RS.2                     *POSITION BITS
   B5 = IB(2).AND.0017              *LOAD LOWER 4 BITS
   OB(0) = B3+B4+B5                 *LOAD IST OUTPUT WORD 
   B4 = IB(3).AND.1700              *LOAD MIDDLE 4 BITS 
   B4 = B4.RS.2                     *POSITION BITS
   B5 = IB(3).AND.0017              *LOAD LOWER 4 BITS
   OB(1) = B4+B5                    *LOAD 2ND OUTPUT WORD 
   B3 = IB(4)                       *LOAD UPPER 2 BITS
   B3 = B3.AND.3                    *MASK FOR REQUIRED BITS 
   B3 = B3.LS.8D                    *POSITION BITS
   B4 = IB(5).AND.1700              *LOAD MIDDLE 4 BITS 
   B4 = B4.RS.2                     *POSITION BITS
   B5 = IB(5).AND.0017              *LOAD LOWER 4 BITS
   OB(2) = B3+B4+B5                 *LOAD 3RD OUTPUT WORD 
   B4 = IB(6).AND.1700              *LOAD MIDDLE 4 BITS 
   B4 = B4.RS.2                     *POSITION BITS
   B5 = IB(6).AND.0017              *LOAD LOWER 4 BITS
   OB(3) = B4+B5                    *LOAD 4TH OUTPUT WORD 
* 
* -------PERFORM ERRLOG SET PROG COUNTER FUNCTION 
* 
   B14 = SDELSPC
   ERRLOG SET PROGRAM COUNTER, ABT 74 
   DUP 0 TO OB FOR 20               *CLEAR OB 
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
40 B6 = IB(503) 
   GOSUB 64                         *SET MAX ADDR = IB(503).
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
42 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 42  *LOOP AWAITING 0. 
   B6 = IB(502) 
   GOSUB 64                         *SET MAX ADDR = IB(502) 
   EXIT                             *EXIT TO MSD05
50 GOTO 42                          *LOOP WAITING FOR FUNCTION
* 
* -------SET MAXIMUM ADDRESS
64 B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR 
   RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05C -   PROCESS 0300 FUNCTION
*IF DEF,MVE,1 
   MODULE MSD05D,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05D,DESM(171,211)LOCK
*** MSD05D - PROCESS 0400 FUNCTION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 04XX.  IT WILL FUNCTION THE SDP AS REQUESTED, SET  THE 
*         MAX ADDRESS TO IB(503),LOOP AWAITING THE FLAG REGISTER CLEAR, 
*         SET THE MAX ADDRESS TO IB(502), AND RETURN TO MSD05.
* 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  DETERMINE THE REQUESTED MSM ACTION AND FUNCTION 
*             THE SDP.
*         3.  SET MAXIMUM ADDRESS REGISTER EQUAL IB(503). 
*         4.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         5.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         6   SET THE MAXIMUM ADDRESS TO IB(502). 
*         7.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B2  = REQUESTED OP CODE.
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B2  = REQUESTED OP CODE.
*         B6  = TEMPORARY STORAGE.
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
* 
   EQUATE SDELR=1, RESSDP=6, SDMAX=22B, SDRFR=25B 
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
* 
* -------PERFORM REQUESTED OPERATION
* 
21 IF (B2.AND.0007.NE.1) GOTO 22
   B14 = SDELR                      *SET 0401 FUNCTION
   ERRLOG READ, ABT 74
   GOTO 40
22 IF (B2.AND.0007.NE.2) GOTO 40
   B14 = SDRFR                      *SET 0402 FUNCTION
   SIDE DOOR READ FLAG REGISTER, ABT 74 
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
40 B6 = IB(503) 
   GOSUB 64                         *SET MAX ADDR = IB(503) 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
42 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 42  *LOOP AWAITING 0. 
   B6 = IB(502) 
   GOSUB 64                         *SET MAX ADDR = IB(502).
   EXIT                             *EXIT TO MSD05
* 
* -------SET MAXIMUM ADDRESS
64 B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR 
   RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05D -   PROCESS 0400 FUNCTION
*IF DEF,MVE,1 
   MODULE MSD05E,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05E,DESM(171,211)LOCK
*** MSD05E - PROCESS 0500 FUNCTION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 05XX.  THE 05XX FUNCTION IS A REQUEST TO MSD TO  CHECK 
*         SDP PORT STATUS TO DETERMINE THE RESULT  OF PREVIOUS TESTING. 
*         IF THE RESULTS WERE AS EXPECTED, MSD WILL SET THE MAX ADDRESS 
*         TO IB(502) AND CONTINUE,  IF THE  RESULTS ARE INCORRECT,  MSD 
*         WILL SET THE MAX TO IB(503), DISPLAY THE ERROR, AND HALT. 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  FUNCTION THE SDP TO OBTAIN STATUS. DETERMINE
*             THE STATUS BIT TO BE CHECKED. 
*         3.  EXAMINE THE STATUS AS REQUESTED.
*         4.  SET MAXIMUM ADDRESS REGISTER TO IB(503).
*         5.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         6.  IF THE STATUS CONDITION WAS CORRECT (STEP 3), 
*             EXIT THE MODULE, IF NOT, LEAVE THE MAX AT 
*             IB(503) AND HALT DISPLAYING THE ERROR(S). 
*         7.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         8.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         EC 0226 - MEMORY GBA ERROR STATUS NOT SET 
*         EC 0227 - MULTIPLE WRITE VALID STATUS NOT SET 
*         EC 0230 - STATUS WORD NOT CLEAR 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         IB(1) = DESCRIPTOR FOR 0501 FUNCTIONS 
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B3  = OP CODE DESCRIPTOR
*         B4  = ERROR INDICATOR 
*         B5  = EXPECTED STATUS 
*         B6  = ACTUAL STATUS 
*         B12 = LINE COUNTER
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
0  FORMAT MSD - STORNET SUBSYSTEM MEMORY TEST 
1  FORMAT EC 0226 - MEMORY GBA ERROR STATUS NOT SET 
2  FORMAT EC 0227 - MULTIPLE WRITE VALID STATUS NOT SET 
3  FORMAT EC 0230 - STATUS WORD NOT CLEAR 
10 FORMAT          ACT = *OCT  EXP = *OCT 
11 FORMAT MSD05E - PROCESS 0501/0-1 FUNCTIONS 
* 
   EQUATE RESSDP=6, SDMAX=22B, SDRFR=25B, SDSTAT=30B
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
   B3 = IB(1)                       *SAVE THE DESCRIPTOR
   B4 = 0                           *CLEAR ERROR POINTER
   B12 = 3                          *SET LINE COUNTER 
* 
* -------READ THE SDP STATUS
* 
   B14 = SDSTAT                     *COMMAND NUMBER 
   STATUS SDP, ABT 74 
   B6 = SB(1)                       *SET ACTUAL STATUS
* 
* -------INTERPRET DESCRIPTOR 
* 
   IF (B3.AND.17.EQ.0) GOTO 30      *CHECK STATUS WORD 2 CLEAR
   IF (B3.AND.17.EQ.1) GOTO 40      *CHECK MGBA STATUS
   IF (B3.AND.17.EQ.2) GOTO 50      *CHECK MULTIPLE WRITE VALID 
   GOTO 60                          *EXIT 
* 
* -------CHECK STATUS WORD 2 CLEAR
* 
30 B5 = 0                           *SET EXPECTED STATUS
   IF(SB(1).AND.4140.NE.0) ERROR 3/228 GOSUB 64  *TEST STATUS 
   GOTO 60                          *EXIT 
* 
* -------CHECK MEMORY GBA STATUS
* 
40 B5 = 140                         *SET EXPECTED STATUS
   IF(SB(1).NE.140) ERROR 1/226 GOSUB 64  *TEST STATUS
   GOTO 60                          *EXIT 
* 
* -------CHECK MULTIPLE WRITE VALID 
* 
50 B5 = 4000                        *SET EXPECTED STATUS
   IF(SB(1).NE.4000) ERROR 2/227 GOSUB 64  *TEST STATUS 
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
60 B6 = IB(503)                        *COMMAND NUMBER
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(503) 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
62 B14 = RESSDP 
   RES SDP ,ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 62   *CHECK FOR REG = 0.
   IF (B4.NE.0) PICTURE             *DISPLAY ERROR
   IF (B4.NE.0) HALT                *HALT IF ERROR
* 
* -------SET MAX ADDRESS = IB(502)
* 
   B6 = IB(502)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(502) 
   EXIT                             *RETURN 
* 
* -------DISPLAY ERRORS 
* 
64 MSG 0 TO LINE 0
   MSG 11 TO LINE 1 
   MSG EM(B2) TO LINE B12           *DISPLAY ERROR
   MSG 10(B6,B5) TO LINE B12 +1 
   B4 = B4 + 1                      *SET ERROR INDICATOR
   RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05E -   PROCESS 0500 FUNCTION
*IF DEF,MVE,1 
   MODULE MSD05F,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05F,DESM(171,211)LOCK
*** MSD05F - PROCESS 0600 FUNCTION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 06XX.  IT WILL FUNCTION THE SDP AS REQUESTED, SET  THE 
*         MAX ADDRESS TO IB(503),LOOP AWAITING THE FLAG REGISTER CLEAR, 
*         SET THE MAX ADDRESS TO IB(502), AND RETURN TO MSD05.
* 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  IF THE CODE IS 0601 PERFORM THE FOLLOWING FUNC- 
*             TIONS:ERRLOG RESET, SDP MAINT FUNC CLEAR MAINT FUNC-
*             TIONS, AND SIDE DOOR CLEAR. 
*         3.  IF THE CODE IS 0602, FUNCTION BOTH READ AND WRITE 
*             CHECK BITS. 
*         4.  SET MAXIMUM ADDRESS REGISTER EQUAL IB(503). 
*         5.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         6.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         7.  SET THE MAXIMUM ADDRESS TO IB(502). 
*         8.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B2  = REQUESTED OP CODE.
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B2  = REQUESTED OP CODE.
*         B6  = TEMPORARY STORAGE.
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
* 
   EQUATE SDELRS=2, RESSDP=6, SDWCB=12B, SDRCB=13B
   EQUATE SDCLMF=16B, SDMAX=22B, SDCLR=24B, SDRFR=25B 
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
* 
* -------PERFORM REQUESTED OPERATIONS 
* 
   IF (B2.AND.7.EQ.2) GOTO 24       *JUMP IF 0602 CODE
   B14 = SDELRS                     *COMMAND NUMBER 
   ERRLOG RESET, ABT 74 
   B14 = SDCLMF                     *COMMAND NUMBER 
   SDP MAINT FUNC CLEAR MAINT FUNCTIONS, ABT 74 
   B6 = 1000
   B14 = SDCLR                      *COMMAND NUMBER 
   SIDE DOOR CLEAR B6, ABT 74       *SDP STATUS CLEAR 
   DUP 0 TO OB(400) FOR 100         *ALLOW FOR RESTART
   GOTO 40
24 B14 = SDWCB                      *COMMAND NUMBER 
   SDP MAINT FUNC WRITE CHECK BITS, ABT 74
   B14 = SDRCB
   SDP MAINT FUNC READ CHECK BITS, ABT 74 
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
40 B6 = IB(503) 
   B14 = SDMAX                     *COMMAND NUMBER
   SET MAXIMUM ADDRESS B6, ABT 74 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
42 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 42  *LOOP AWAITING 0. 
   B6 = IB(502) 
   B14 = SDMAX
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(502).
   EXIT                             *EXIT TO MSD05
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05F -   PROCESS 0600 FUNCTION
*IF DEF,MVE,1 
   MODULE MSD05G,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05G,DESM(171,211)LOCK
*** MSD05G - PROCESS 0701/0-5 FUNCTIONS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 07XX.  THE 07XX FUNCTION IS A REQUEST TO MSD TO  CHECK 
*         ERROR LOG DATA EXPECTED AS THE RESULT OF PREVIOUS TESTING. IF 
*         THE RESULTS WERE AS EXPECTED, MSD WILL SET THE MAX ADDRESS TO 
*         IB(502) AND CONTINUE, IF THE  RESULTS ARE INCORRECT, MSD WILL 
*         SET THE MAX TO IB(503), DISPLAY THE ERROR, AND HALT.
* 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  FUNCTION THE SDP TO READ THE ERROR LOG. DETER-
*             MINE THE DATA TO BE CHECKED.
*         3.  IF THE DESCRIPTOR IS GREATER THAN 5, EXIT TO
*             MSD05H. 
*         4.  EXAMINE THE DATA AS REQUESTED.
*         5.  SET MAXIMUM ADDRESS REGISTER TO IB(503).
*         6.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         7.  IF THE DATA IN THE ERROR LOG WAS CORRECT (STEP
*             2), EXIT THE MODULE, IF NOT, LEAVE THE MAX AT 
*             IB(503) AND HALT DISPLAYING THE ERROR(S). 
*         8.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         9.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         EC 0200 - SINGLE ERROR COUNTER NOT CLEAR. 
*         EC 0201 - DOUBLE ERR *D VALID BIT NOT ZERO. 
*         EC 0202 - SINGLE BIT COUNTER *D NOT CLEAR.
*         EC 0203 - SINGLE BIT CNTR FAILED TO INCREMENT.
*         EC 0204 - SINGLE BIT CNTR INCREMENTED FALSELY.
*         EC 0205 - SINGLE BIT CNTR NOT = 44B.
*         EC 0206 - SINGLE BIT CNTR NOT AT MAXIMUM. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         IB(1) = DESCRIPTOR FOR 0701 FUNCTIONS 
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = IB POINTER FOR SAVE ERRLOG DATA 
*         B1  = OB POINTER FOR SAVE ERRLOG DATA 
*         B2  = TEMPORARY STORAGE.
*         B3  = OP CODE DESCRIPTOR/TEMP.
*         B4  = ERROR INDICATOR.
*         B5  = EXPECTED DATA/TEMP. 
*         B6  = ACTUAL DATA/TEMP. 
*         B12 = LINE COUNTER
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*         OB(300B-423B) = PREVIOUS ERRLOG CONTENTS
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSD05H - PROCESS 0701/6-11 FUNCTIONS
* 
* -------DATA DIVISION
* 
0  FORMAT MSD - STORNET SUBSYSTEM MEMORY TEST 
1  FORMAT EC 0200 - SINGLE ERROR COUNTER NOT CLEAR. 
2  FORMAT EC 0201 - DOUBLE ERR *D VALID BIT NOT ZERO. 
3  FORMAT EC 0202 - SINGLE BIT COUNTER *D NOT CLEAR.
4  FORMAT EC 0203 - SINGLE BIT CNTR FAILED TO INCREMENT.
5  FORMAT EC 0204 - SINGLE BIT CNTR INCREMENTED FALSELY.
6  FORMAT EC 0205 - SINGLE BIT CNTR NOT = 44B.
7  FORMAT EC 0206 - SINGLE BIT CNTR NOT AT MAXIMUM. 
10 FORMAT          ACT = *OCT  EXP = *OCT 
11 FORMAT MSD05G - PROCESS 0701/0-5 FUNCTIONS 
* 
   EQUATE SDELR=1, SDELRS=2, RESSDP=6, SDWVEF=10B, SDDSEC=11B 
   EQUATE SDMAX=22B, SDRFR=25B, VBIT=4000B
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
   B3 = IB(1)                       *SAVE THE DESCRIPTOR
   B4 = 0                           *CLEAR ERROR POINTER
   B12 = 3                          *SET LINE COUNTER 
* 
* -------READ THE ERROR LOG 
* 
   WC = 123B
   B14 = SDELR
   ERRLOG READ, ABT 74
* 
* -------INTERPRET DESCRIPTOR 
* 
   IF (B3.AND.17.EQ.0) GOTO 22      *CHECK ERRLOG CLEAR 
   IF (B3.AND.17.EQ.1) GOSUB 30     *PROCESS READ AND SAVE
   IF (B3.AND.17.EQ.2) GOTO 35      *CHECK COUNTER +1 
   IF (B3.AND.17.EQ.3) GOTO 40      *CHECK COUNTER NO COUNT 
   IF (B3.AND.17.EQ.4) GOTO 45      *CHECK COUNTER = 44B
   IF (B3.AND.17.EQ.5) GOTO 50      *CHECK COUNTER = MAX
   EXIT TO 05H                      *DESC GREATER THAN 5
* 
* -------CHECK ERROR LOG CLEAR
* 
22 B5 = 0                           *SET EXPECTED DATA
   B6 = IB(0)                       *LOAD ACTUAL COUNT
   IF (B6.NE.0) ERROR 1/200 GOSUB 64  *TEST UPPER COUNTER BITS
   B6 = IB(1)                       *LOAD ACTUAL COUNT
   IF (B6.NE.0) ERROR 1/200 GOSUB 64  *TEST MIDDLE BITS 
   B6 = IB(2)                       *LOAD ACTUAL COUNT
   IF (B6.NE.0) ERROR 1/200 GOSUB 64  *TEST LOWER BITS
   B3 = 3                           *SET VALID BIT POINTER
   B2 = 1D                          *SET DOUBLE ERR WORD COUNTER
24 B6 = IB(B3)                      *LOAD ACTUAL DATA 
   IF (B6.AND.VBIT.NE.0) ERROR 2/201 GOSUB 64  *TEST VALID BITS 
   B2 = B2 + 1D 
   GOTO 24 WHILE (B3+2.LT.35D)      *LOOP THROUGH 16 ERRORS 
   B3 = 67D                         *SET POINTER TO SINGLE COUNTERS 
   B2 = 1D
26 B6 = IB(B3)                      *LOAD ACTUAL DATA 
   IF (B6.NE.0) ERROR 3/202 GOSUB 64  *TEST SINGLE BIT COUNTERS 
   B2 = B2 + 1D 
   GOTO 26 WHILE (B3+1.LT.83D)      *LOOP THROUGH 16 COUNTERS 
   GOTO 60
* 
* -------SAVE THE ERRLOG CONTENTS 
* 
30 B0 = 0                           *SET IB POINTER 
   B1 = 300                         *SET OB POINTER 
32 OB(B1) = IB(B0)                  *SAVE CURRENT ERRLOG CONTENTS 
   B1 = B1 + 1
   GOTO 32 WHILE (B0+1.LT.124)
   RETURN                           *EXIT 
* 
* -------TEST FOR SE COUNTER + 1
* 
35 B5 = OB(300)                     *LOAD UPPER BITS
   B6 = IB(0) 
   IF (B6.NE.B5) ERROR 4/203 GOSUB 64  *COMPARE LOWER BITS
   B5 = OB(301)                     *LOAD MIDDLE BITS 
   B6 = IB(1) 
   IF (B6.NE.B5) ERROR 4/203 GOSUB 64  *COMPARE MIDDLE BITS 
   B5 = OB(302) 
   B5 = B5 + 1                      *FORM EXPECTED COUNT
   B6 = IB(2) 
   IF (B6.NE.B5) ERROR 4/203 GOSUB 64  *COMPARE LOWER BITS
   GOSUB 30                         *SAVE CURRENT ERRLOG
   GOTO 60
* 
* -------TEST COUNTER FOR NO COUNT
* 
40 B5 = OB(300)                     *LOAD PREVIOUS COUNT
   B6 = IB(0) 
   IF (B6.NE.B5) ERROR 5/204 GOSUB 64  *COMPARE LOWER BITS
   B5 = OB(301)                           *LOAD MIDDLE BITS 
   B6 = IB(1) 
   IF (B6.NE.B5) ERROR 5/204 GOSUB 64  *COMPARE MIDDLE BITS 
   B5 = OB(302)                           *LOAD LOWER BITS
   B6 = IB(2) 
   IF (B6.NE.B5) ERROR 5/204 GOSUB 64  *COMPARE LOWER BITS
   GOSUB 30                         *SAVE CURRENT ERRLOG
   GOTO 60
* 
* -------CHECK FOR COUNTER = 44 
* 
45 B5 = 44B                         *SET EXPECTED DATA
   B6 = IB(2)                       *LOAD ACTUAL DATA 
   IF (B6.NE.B5) ERROR 6/205 GOSUB 64 
   GOSUB 30 
   GOTO 60
* 
* -------TEST COUNTER FOR MAXIMUM COUNT 
* 
50 B5 = 0                           *LOAD UPPER BITS
   B6 = IB(0) 
   IF (B6.NE.B5) ERROR 7/206 GOSUB 64  *COMPARE LOWER BITS
   B5 = 0077                        *LOAD MIDDLE BITS 
   B6 = IB(1) 
   IF (B6.NE.B5) ERROR 7/206 GOSUB 64  *COMPARE MIDDLE BITS 
   B5 = 7777                        *LOAD LOWER BITS
   B6 = IB(2) 
   IF (B6.NE.B5) ERROR 7/206 GOSUB 64  *COMPARE LOWER BITS
   GOSUB 30                         *SAVE CURRENT ERRLOG
   GOTO 60
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
60 B6 = IB(503)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(503) 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
62 B14 = RESSDP 
   RES SDP ,ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 62   *CHECK FOR REG = 0.
   IF (B4.NE.0) PICTURE             *DISPLAY ERROR
   IF (B4.NE.0) HALT                *HALT IF ERROR
* 
* -------SET MAX ADDRESS = IB(502)
* 
   B6 = IB(502)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(502) 
   EXIT                             *RETURN 
* 
* -------DISPLAY ERRORS 
* 
64 MSG 0 TO LINE 0
   MSG 11 TO LINE 1 
   MSG EM(B2) TO LINE B12           *DISPLAY ERROR
   MSG 10(B6,B5) TO LINE B12 +1 
   B4 = B4 + 1                      *SET ERROR INDICATOR
   RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05G -   PROCESS 0701/0-5 FUNCTIONS 
*IF DEF,MVE,1 
   MODULE MSD05H,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05H,DESM(171,211)LOCK
*** MSD05H - PROCESS 0701/6-11 FUNCTIONS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 07XX.  THE 07XX FUNCTION IS A REQUEST TO MSD TO  CHECK 
*         ERROR LOG DATA EXPECTED AS THE RESULT OF PREVIOUS TESTING. IF 
*         THE RESULTS WERE AS EXPECTED, MSD WILL SET THE MAX ADDRESS TO 
*         IB(5O2) AND CONTINUE,  IF THE RESULTS ARE INCORRECT, MSD WILL 
*         SET THE MAX TO IB(503), DISPLAY THE ERROR, AND HALT.
* 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  DETERMINE THE DATA TO BE CHECKED.  IF AN ERROR
*             LOG VERIFY IS REQUIRED, EXIT TO 05Z.
*         3.  IF THE DESCRIPTOR IS GREATER THAN 10, EXIT TO 
*             MSD05I. 
*         4.  EXAMINE THE DATA AS REQUESTED.
*         5.  EXIT TO 05Z IF AN ERROR LOG VERIFY IS REQUIRED. 
*         6.  SET MAXIMUM ADDRESS REGISTER TO IB(503).
*         7.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         8.  IF THE DATA IN THE ERROR LOG WAS CORRECT (STEP
*             3), EXIT THE MODULE, IF NOT, LEAVE THE MAX AT 
*             IB(503) AND HALT DISPLAYING THE ERROR(S). 
*         9.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*        10.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         EC 0215 - SINGLE ERROR COUNTER NOT CLEAR
*         EC 0216 - DOUBLE ERROR *D ENTRY ERROR 
*         EC 0217 - SINGLE ERROR *D ENTRY ERROR 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B3  = OP CODE DESCRIPTOR/TEMP.
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = ERROR LOG ENTRY NUMBER POINTER. 
*         B1  = POINTER FOR CURRENT ERRLOG DATA.
*         B2  = POINTER FOR OLD ERRLOG DATA.
*         B3  = OP CODE DESCRIPTOR/TEMP.
*         B4  = ERROR INDICATOR/TEMP. 
*         B5  = EXPECTED DATA/TEMP. 
*         B6  = ACTUAL DATA/TEMP. 
*         B7  = DECIMAL DISPLAY INDEX.
*         B8  = NEW ERRLOG DATA POINTER 
*         B10 = OLD ERRLOG DATA POINTER 
*         B12 = LINE COUNTER
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*         IB(0-123B) = CURRENT ERRLOG CONTENTS
*         OB(300B-423B) = PREVIOUS ERRLOG CONTENTS
*         OB(470) = DOUBLE ERROR ENTRY ONE COUNTER
*         OB(471) = DOUBLE ERROR ENTRY TWO COUNTER
*         OB(472) = SINGLE ERROR ENTRY ONE COUNTER
*         OB(473) = SINGLE ERROR ENTRY TWO COUNTER
*         OB(474) = 2X SCAN COUNTER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSD05I - PROCESS 0701/12-17 FUNCTIONS 
*         MSD05Z - VERIFY ERROR LOG 
* 
* -------DATA DIVISION
* 
0  FORMAT MSD - STORNET SUBSYSTEM MEMORY TEST 
1  FORMAT EC 0215 - SINGLE ERROR COUNTER NOT CLEAR
2  FORMAT EC 0216 - DOUBLE ERROR *D ENTRY ERROR 
3  FORMAT EC 0217 - SINGLE ERROR *D ENTRY ERROR 
10 FORMAT          ACT = *OCT  EXP = *OCT 
11 FORMAT MSD05H - PROCESS 0701/6-11 FUNCTIONS
* 
   EQUATE SDELR=1, RESSDP=6, SDMAX=22B, SDRFR=25B 
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
   B4 = 0                           *CLEAR ERROR POINTER
   B12 = 3                          *SET LINE COUNTER 
   IF (OB(472).NE.0) GOTO 21        *SET DATA 1ST TIME ONLY 
   OB(470) = 0                      *SET INITIAL DE ENTRY 1 
   OB(471) = 1                      *SET INITIAL DE ENTRY 2 
   OB(472) = 2                      *SET INITIAL SE ENTRY 1 
   OB(473) = 7777                   *SET SCAN = -1
   OB(474) = 7777                   *SET 2X SCAN COUNTER
* 
* -------INTERPRET DESCRIPTOR 
* 
21 IF (B3.AND.17.EQ.6) EXIT TO 05Z  *VERIFY ERROR LOG 
   IF (B3.AND.17.EQ.7) GOTO 22      *SE COUNTER = 0 
   IF (B3.AND.17.EQ.10) GOTO 30     *DE ENTERED AND VERIFY
   IF (B3.AND.17.EQ.11) GOTO 40     *SE ENTERED AND VERIFY
   EXIT TO 05I                      *DESC GREATER THAN 11 
* 
* -------CHECK FOR SE COUNTER = 0 
* 
22 B5 = 0                           *SET EXPECTED DATA
   B6 = IB(0)                       *LOAD ACTUAL COUNT
   IF (B6.NE.0) ERROR 1/215 GOSUB 64  *TEST UPPER COUNTER BITS
   B6 = IB(1)                       *LOAD ACTUAL COUNT
   IF (B6.NE.0) ERROR 1/215 GOSUB 64  *TEST MIDDLE BITS 
   B6 = IB(2)                       *LOAD ACTUAL COUNT
   IF (B6.NE.0) ERROR 1/215 GOSUB 64  *TEST LOWER BITS
   GOTO 60                          *EXIT 
* 
* -------CHECK FOR PROPER DE ENTRY AND VERIFY LOG 
* 
30 B1 = B3.AND.1700                 *LOAD WORD NUMBER 
   B2 = 3B                          *SET NEW DE BASE ADDR 
   B8 = B1.LS.7 + B2                *FORM BUFFER POINTER
   B6 = IB(B8)                      *LOAD ENTRY WORD 1
   B5 = OB(470)                     *LOAD EXPECTED DATA 
   B5 = B5 + 4000B                  *ADD VALID BIT
   IF (B6.NE.B5) ERROR 2/216 GOSUB 64  *TEST ENTRY 1
   B8 = B8 + 1
   B6 = IB(B8)                      *LOAD ENTRY WORD 2
   B5 = OB(471)                     *LOAD EXPECT DATA 
   IF (B6.NE.B5) ERROR 2/216 GOSUB 64  *TEST ENTRY 2
   IF (B1.NE.1700) GOTO 32          *EXIT 
   IF (OB(471).NE.4000) GOTO 31     *UPDATE EXPECTED DATA 
   OB(471) = 0                      *CLEAR LOWER
   OB(470) = 4000                   *SET UPPER
31 OB(470) = OB(470).LS.1 
   OB(471) = OB(471).LS.1 
* 
* -------STORE NEW DE DATA INTO OLD 
* 
32 B2 = 303B                        *SET OLD DE BASE ADDR 
   GOSUB 50                         *REPLACE OLD WITH NEW 
   GOTO 46                          *ERROR CHECK AND EXIT 
* 
* -------CHECK FOR PROPER SE ENTRY AND VERIFY LOG 
* 
40 OB(473) = OB(473) + 1            *INCR SCAN BITS 
   OB(474) = OB(474) + 1            *INCR 2X SCAN CTR 
   IF (OB(474).NE.10) GOTO 42       *CONTINUE 
*IF DEF,MVE,1 
   IF (DC.EQ.212) GOTO 41           *JUMP IF ESMII
*IF -DEF,MVE,1
   IF (DC.EQ.171) GOTO 41           *JUMP IF ESMII
   OB(473) = 0200                   *SET SCAN FOR STORNET 
   GOTO 42
41 OB(473) = 0040                   *SET SCAN FOR ESMII 
42 B1 = B3.AND.1700                 *LOAD WORD NUMBER 
   B2 = 43B                         *SET NEW SE BASE ADDR 
   B8 = B1.LS.7 + B2                *FORM BUFFER POINTER
   B6 = IB(B8)                      *LOAD ENTRY WORD 1
   B5 = OB(472)                     *LOAD EXPECTED DATA 
   IF (B6.NE.B5) ERROR 3/217 GOSUB 64  *TEST ENTRY 1
   B8 = B8 + 1
   B6 = IB(B8)                      *LOAD ENTRY WORD 2
   B5 = OB(473)                     *LOAD EXPECT DATA 
   IF (B6.NE.B5) ERROR 3/217 GOSUB 64  *TEST ENTRY 2
   IF (OB(474).NE.17) GOTO 44       *CONTINUE 
   OB(472) = OB(472).LS.1           *SHIFT SYNDROME BIT 
   OB(473) = 7777                   *RESET INITIAL SCAN 
   OB(474) = 7777                   *RESET 2X SCAN CTR
* 
* -------STORE NEW SE DATA INTO OLD 
* 
44 B2 = 343B                        *SET OLD SE BASE ADDR 
   GOSUB 50                         *REPLACE OLD WITH NEW 
   B2 = 403B                        *SET OLD SE CTR BASE ADDR 
   B11 = B1.LS.6. + B2              *FORM BUFFER POINTER
   OB(B11) = OB(B11) + 1            *INCR INDIV SE COUNTER
46 IF(B4.NE.0) GOTO 60              *EXIT WITH ERROR
   EXIT TO 05Z                      *VERIFY ENTIRE ERROR LOG
* 
* -------REPLACE OLD ENTRY WITH NEW DATA
* 
50 B10 = B1.LS.7 + B2               *FORM BUFFER POINTER
   B8 = B8 - 1
   OB(B10) = IB(B8)                 *STORE WD 1 INTO OLD
   B8 = B8 + 1
   B10 = B10 + 1
   OB(B10) = IB(B8)                 *STORE WD 2 INTO OLD
   RETURN 
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
60 B6 = IB(503)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(503) 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
62 B14 = RESSDP 
   RES SDP ,ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 62   *CHECK FOR REG = 0.
   IF (B4.NE.0) PICTURE             *DISPLAY ERROR
   IF (B4.NE.0) HALT                *HALT IF ERROR
* 
* -------SET MAX ADDRESS = IB(502)
* 
   B6 = IB(502)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(502) 
   EXIT 
* 
* -------DISPLAY ERRORS 
* 
64 MSG 0 TO LINE 0
   MSG 11 TO LINE 1 
   B7 = B1.RS.6                     *INCR B1 FOR A
   B7 = B7 + 1                      *DECIMAL DISPLAY
   MSG EM(B7) TO LINE B12           *DISPLAY ERROR
   MSG 10(B6,B5) TO LINE B12 +1 
   B4 = B4 + 1                      *SET ERROR INDICATOR
   B12 = B12 + 1                    *UPDATE LINE POINTER
   RETURN 
* 
* -------SAVE THE ERRLOG CONTENTS 
* 
70 COPY IB(0) TO OB(300) FOR 124B   *SAVE CURRENT ERRLOG CONTENTS 
   RETURN                           *EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05H -   PROCESS 0701/6-11 FUNCTIONS
*IF DEF,MVE,1 
   MODULE MSD05I,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05I,DESM(171,211)LOCK
*** MSD05I - PROCESS 0701/12-17 FUNCTIONS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS CALLED BY MSD05 WHEN THE FUNCTION REQUEST FROM 
*         MSM IS 07XX.  THE 07XX FUNCTION IS A REQUEST TO MSD TO  CHECK 
*         ERROR LOG DATA EXPECTED AS THE RESULT OF PREVIOUS TESTING. IF 
*         THE RESULTS WERE AS EXPECTED, MSD WILL SET THE MAX ADDRESS TO 
*         IB(502) AND CONTINUE,  IF THE RESULTS ARE INCORRECT, MSD WILL 
*         THE MAX TO IB(503), DISPLAY THE ERROR, AND HALT.
* 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  DETERMINE THE DATA TO BE CHECKED. 
*         3.  EXAMINE THE DATA AS REQUESTED.
*         4.  EXIT TO MSD05Z IF AN ERROR LOG VERIFY IS REQUIRED.
*         4.  SET MAXIMUM ADDRESS REGISTER TO IB(503).
*         5.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         6.  IF THE DATA IN THE ERROR LOG WAS CORRECT (STEP
*             3), EXIT THE MODULE, IF NOT, LEAVE THE MAX AT 
*             IB(503) AND HALT DISPLAYING THE ERROR(S). 
*         7.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         8.  EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         EC 0220 - INDIV SE *D CNTR FAILED TO INCREMENT
*         EC 0221 - INDIV SE *D CNTR INCREMENTED FALSELY
*         EC 0222 - SE COUNTER FULL STATUS NOT SET
*         EC 0223 - SE LOG FULL STATUS NOT SET
*         EC 0224 - DE LOG FULL STATUS NOT SET
*         EC 0225 - VALID BIT *D NOT CLEARED
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B3  = OP CODE DESCRIPTOR/TEMP.
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = SINGLE BIT COUNTER POINTER. 
*         B1  = TEMPORARY STORAGE.
*         B2  = TEMPORARY STOARAGE. 
*         B3  = OP CODE DESCRIPTOR/TEMP.
*         B4  = ERROR INDICATOR.
*         B5  = EXPECTED DATA/TEMP. 
*         B6  = ACTUAL DATA/TEMP. 
*         B7  = DECIMAL DISPLAY INDEX.
*         B8  = NEW SE COUNTER POINTER
*         B10 = OLD SE COUNTER POINTER
*         B12 = LINE COUNTER
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*         IB(0-123B) = CURRENT ERRLOG CONTENTS
*         OB(300B-423B) = PREVIOUS ERRLOG CONTENTS
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSD05Z - VERIFY ERROR LOG 
* 
* -------DATA DIVISION
* 
0  FORMAT MSD - STORNET SUBSYSTEM MEMORY TEST 
1  FORMAT EC 0220 - INDIV SE *D CNTR FAILED TO INCREMENT
2  FORMAT EC 0221 - INDIV SE *D CNTR INCREMENTED FALSELY
3  FORMAT EC 0222 - SE COUNTER FULL STATUS NOT SET
4  FORMAT EC 0223 - SE LOG FULL STATUS NOT SET
5  FORMAT EC 0224 - DE LOG FULL STATUS NOT SET
6  FORMAT EC 0225 - VALID BIT *D NOT CLEARED
10 FORMAT          ACT = *OCT  EXP = *OCT 
11 FORMAT MSD05I - PROCESS 0701/12-17 FUNCTIONS 
* 
   EQUATE SDELR=1, RESSDP=6,
   EQUATE SDMAX=22B, SDRFR=25B, SDSTAT=30B
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
   B4 = 0                           *CLEAR ERROR POINTER
   B12 = 3                          *SET LINE COUNTER 
* 
* -------INTERPRET DESCRIPTOR 
* 
   IF (B3.AND.17.EQ.12) GOTO 30     *INDIV. SE COUNTER +1 
   IF (B3.AND.17.EQ.13) GOTO 40     *INDIV. SE COUNTER NOCOUNT
   IF (B3.AND.17.EQ.14) GOTO 50     *SINGLE COUNTER FULL STATUS 
   IF (B3.AND.17.EQ.15) GOTO 54     *SINGLE ERR LOG FULL STATUS 
   IF (B3.AND.17.EQ.16) GOTO 55     *DOUBLE ERR LOG FULL STATUS 
   IF (B3.AND.17.EQ.17) GOTO 56     *DOUBLE ERR LOG FULL STATUS 
   GOTO 60                          *EXIT 
* 
* -------CHECK FOR INDIVIDUAL SE COUNTER + 1
* 
30 B1 = B3.AND.1700                 *LOAD WORD NUMBER 
   B2 = 103B                        *SET SE CNTR BASE ADDR
   B8 = B1.LS.6 + B2                *FORM BUFFER POINTER
   B6 = IB(B8)                      *LOAD CURRENT COUNT 
   B2 = 403B                        *SET OLD SE CNTR BASE ADDR
   B10 = B1.LS.6 + B2               *FORM BUFFER POINTER
   B5 = OB(B10)                     *LOAD OLD COUNT 
   B5 = B5 + 1                      *+1 TO OLD COUNT
   IF (B6.NE.B5) ERROR 1/220 GOSUB 64  *TEST FOR +1 
   OB(B10) = IB(B8)                 *STORE NEW INTO OLD 
   GOSUB 70                         *SAVE CURRENT ERRLOG
   IF(B4.NE.0) GOTO 60              *EXIT WITH ERROR
   EXIT TO 05Z                      *VERIFY ENTIRE ERROR LOG
* 
* -------CHECK FOR INDIVIDUAL SE COUNTER NO COUNT 
* 
40 B1 = B3.AND.1700                 *LOAD WORD NUMBER 
   B2 = 103B                        *SET SE CNTR BASE ADDR
   B8 = B1.LS.6 + B2                *FORM BUFFER POINTER
   B6 = IB(B8)                      *LOAD CURRENT COUNT 
   B2 = 403B                        *SET OLD SE CNTR BASE ADDR
   B10 = B1.LS.6 + B2               *FORM BUFFER POINTER
   B5 = OB(B10)                     *LOAD OLD COUNT 
   IF (B6.NE.B5) ERROR 2/221 GOSUB 64  *TEST FOR +1 
   OB(B10) = IB(B8)                 *STORE NEW INTO OLD 
   GOSUB 70                         *SAVE CURRENT ERRLOG
   IF(B4.NE.0) GOTO 60              *EXIT WITH ERROR
   EXIT TO 05Z                      *VERIFY ENTIRE ERROR LOG
* 
* -------CHECK FOR SINGLE ERROR COUNTER FULL STATUS 
* 
50 B14 = SDSTAT                     *COMMAND INDEX
   STATUS SDP, ABT 74               *STATUS SDP 
   B6 = SB(0)                       *SET ACTUAL STATUS
   B5 = 0004                        *SET EXPECTED STATUS
   IF (SB(0).AND.7.NE.4) ERROR 3/222 GOSUB 64  *TEST FOR CNTR FULL
   GOTO 60                          *EXIT 
* 
* -------CHECK FOR SINGLE ERROR LOG FULL STATUS 
* 
54 B14 = SDSTAT                     *COMMAND INDEX
   STATUS SDP, ABT 74               *STATUS SDP 
   B6 = SB(0)                       *SET ACTUAL STATUS
   B5 = 0001                        *SET EXPECTED STATUS
   IF (SB(0).AND.7.NE.1) ERROR 4/223 GOSUB 64  *TEST FOR CNTR FULL
   GOTO 60                          *EXIT 
* 
* -------CHECK FOR DOUBLE ERROR LOG FULL STATUS 
* 
55 B14 = SDSTAT                     *COMMAND INDEX
   STATUS SDP, ABT 74               *STATUS SDP 
   B6 = SB(0)                       *SET ACTUAL STATUS
   B5 = 0002                        *SET EXPECTED STATUS
   IF (SB(0).AND.7.NE.2) ERROR 5/224 GOSUB 64  *TEST FOR CNTR FULL
   GOTO 60                          *EXIT 
* 
* -------CHECK FOR ALL DE VALID BITS CLEAR
* 
56 B1 = 0                           *SET INDEX FOR DE ENTRY NUMBER
   B2 = 3                           *SET BUFFER INDEX 
   B5 = 0                           *SET EXPECTED DATA (NO VBIT)
57 B6 = IB(B2)                      *LOAD DE ENTRY
   IF (B6.AND.4000.NE.0) ERROR 6/225 GOSUB 64  *TEST FOR VALID BIT
   B2 = B2 + 2                      *POINT TO NEXT DE ENTRY 
   GOTO 57 WHILE (B1+1.LT.20)       *LOOP THROUGH 16D ENTRIES 
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
60 B6 = IB(503)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(503) 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
62 B14 = RESSDP 
   RES SDP ,ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 62   *CHECK FOR REG = 0.
   IF (B4.NE.0) PICTURE             *DISPLAY ERROR
   IF (B4.NE.0) HALT                *HALT IF ERROR
* 
* -------SET MAX ADDRESS = IB(502)
* 
   B6 = IB(502)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(502) 
   EXIT 
* 
* -------DISPLAY ERRORS 
* 
64 MSG 0 TO LINE 0
   MSG 11 TO LINE 1 
   B7 = B1.RS.6                     *INCR B1 FOR A
   B7 = B7 + 1                      *DECIMAL DISPLAY
   MSG EM(B7) TO LINE B12           *DISPLAY ERROR
   MSG 10(B6,B5) TO LINE B12 +1 
   B4 = B4 + 1                      *SET ERROR INDICATOR
   B12 = B12 + 2                    *UPDATE THE LINE COUNTER
   RETURN 
* 
* -------SAVE THE ERRLOG CONTENTS 
* 
70 B0 = 0                           *SET IB POINTER 
   B1 = 300                         *SET OB POINTER 
72 OB(B1) = IB(B0)                  *SAVE CURRENT ERRLOG CONTENTS 
   B1 = B1 + 1
   GOTO 72 WHILE (B0+1.LT.124)
   RETURN                           *EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05I -   PROCESS 0701/12-17 FUNCTIONS 
*IF DEF,MVE,1 
   MODULE MSD05Z,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD05Z,DESM(171,211)LOCK
*** MSD05Z - VERIFY ERROR LOG 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE IS EXITED TO BY MSD05H,  IF THE FUNCTION  REQUEST 
*         FROM MSM IS 07XX, WITH A DESCRIPTOR OF 0/6, X/10, OR X/11. IT 
*         WILL VERIFY THE CURRENT ERROR LOG AGAINST THE PREVIOUS  ERROR 
*         LOG TO ASSURE NO INCORRECT INFORMATION WAS  ENTERED WHEN  THE 
*         LAST ERROR OCCURED. IF THE RESULTS ARE INCORRECT,MSD WILL SET 
*         THE MAX TO IB(503), DISPLAY THE ERROR, AND HALT.  IF CORRECT, 
*         SET THE MAX TO IB(502) AND EXIT THE MODULE. 
* 
* 
*    1.2  METHOD- 
* 
*         1.  VERIFY THE ERROR LOG CONTENTS.
*         2.  SET MAXIMUM ADDRESS REGISTER TO IB(503).
*         3.  MONITOR THE FLAG REGISTER FOR A CLEARED CONDI-
*             TION. 
*         4.  IF THE DATA IN THE ERROR LOG WAS CORRECT (STEP
*             1), EXIT THE MODULE, IF NOT, LEAVE THE MAX AT 
*             IB(503) AND HALT DISPLAYING THE ERROR(S). 
*         5.  IF AN ABORT OCCURS, SET THE ERROR FLAG (B13). 
*         6.  SET THE MAX ADDRESS TO IB(502), EXIT THE MODULE.
* 
*         NOTE - THE MSM-MSD COMMUNICATIONS SCHEME IS EXPLAINED 
*                IN SECTION 9.0 OF THE ERS. 
* 
*    1.3  ERRORS REPORTED 
* 
*         EC 0210 - DOUBLE ERR *D - 1ST ENTRY MISSCOMPARE 
*         EC 0211 - DOUBLE ERR *D - 2ND ENTRY MISSCOMPARE 
*         EC 0212 - SINGLE ERR *D - 1ST ENTRY MISSCOMPARE 
*         EC 0213 - SINGLE ERR *D - 2ND ENTRY MISSCOMPARE 
*         EC 0214 - SE COUNTER *D - MISSCOMPARE 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         IB(502) = MAXIMUM ADDRESS BITS
*         IB(503) = MAXIMUM ADDR BITS - 1 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = ERROR LOG ENTRY NUMBER POINTER. 
*         B1  = POINTER FOR CURRENT ERRLOG DATA.
*         B2  = POINTER FOR OLD ERRLOG DATA.
*         B4  = ERROR INDICATOR/TEMP. 
*         B5  = EXPECTED DATA/TEMP. 
*         B6  = ACTUAL DATA/TEMP. 
*         B12 = LINE COUNTER
*         B13 = ERROR FLAG
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*         IB(0-123B) = CURRENT ERRLOG CONTENTS
*         OB(300B-423B) = PREVIOUS ERRLOG CONTENTS
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
0  FORMAT MSD - STORNET SUBSYSTEM MEMORY TEST 
1  FORMAT EC 0210 - DOUBLE ERR *D - 1ST ENTRY MISSCOMPARE 
2  FORMAT EC 0211 - DOUBLE ERR *D - 2ND ENTRY MISSCOMPARE 
3  FORMAT EC 0212 - SINGLE ERR *D - 1ST ENTRY MISSCOMPARE 
4  FORMAT EC 0213 - SINGLE ERR *D - 2ND ENTRY MISSCOMPARE 
5  FORMAT EC 0214 - SE COUNTER *D - MISSCOMPARE 
10 FORMAT          ACT = *OCT  EXP = *OCT 
11 FORMAT MSD05Z - VERIFY ERROR LOG 
* 
   EQUATE SDELR=1, RESSDP=6,
   EQUATE SDMAX=22B, SDRFR=25B
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 74                  *RESERVE SDP
   DUP 0 TO OB FOR 40               *SET OB TO ZEROS
   B4 = 0                           *CLEAR ERROR POINTER
   B12 = 3                          *SET LINE COUNTER 
* 
* -------VERIFY ERROR LOG 
* 
22 B0 = 1D                          *SET WORD POINTER 
   B1 = 3                           *SET POINTER TO DOUBLE ERRORS 
   B2 = 303                         *SET POINTER TO OLD ERRLOG DATA 
24 B5 = OB(B2)                      *SET EXP DATA 1ST ENTRY 
   B6 = IB(B1)                      *SET ACT DATA 1ST ENTRY 
   IF (B5.NE.B6) ERROR 1/210 GOSUB 64  *TEST DOUBLE ERROR 1ST ENTRY 
   B1 = B1 + 1                      *SET POINTER TO NEXT ENTRY(NEW) 
   B2 = B2 + 1                      *SET POINTER TO NEXT ENTRY(OLD) 
   B5 = OB(B2)                      *SET EXP DATA 2ND ENTRY 
   B6 = IB(B1)                      *SET ACT DATA 2ND ENTRY 
   IF (B5.NE.B6) ERROR 2/211 GOSUB 64  *TEST DOUBLE ERROR 2ND ENTRY 
   B1 = B1 + 1                      *SET POINTER TO NEXT ENTRY(NEW) 
   B2 = B2 + 1                      *SET POINTER TO NEXT ENTRY(OLD) 
   GOTO 24 WHILE (B0+1D.LT.17D)     *LOOP FOR 16 DOUBLE ERRORS
   B0 = 1                           *SET WORD POINTER (1ST SE)
26 B5 = OB(B2)                      *SET EXP DATA 1ST ENTRY (SE)
   B6 = IB(B1)                      *SET ACT DATA 1ST ENTRY (SE)
   IF (B5.NE.B6) ERROR 3/212 GOSUB 64  *TEST SINGLE ERROR 1ST ENTRY 
   B1 = B1 + 1                      *SET POINTER TO NEXT ENTRY(NEW) 
   B2 = B2 + 1                      *SET POINTER TO NEXT ENTRY(OLD) 
   B5 = OB(B2)                      *SET EXP DATA 2ND ENTRY 
   B6 = IB(B1)                      *SET ACT DATA 2ND ENTRY 
   IF (B5.NE.B6) ERROR 4/213 GOSUB 64  *TEST SINGLE ERROR 2ND ENTRY 
   B1 = B1 + 1                      *SET POINTER TO NEXT ENTRY(NEW) 
   B2 = B2 + 1                      *SET POINTER TO NEXT ENTRY(OLD) 
   GOTO 26 WHILE (B0+1D.LT.17D)     *LOOP FOR 16 SINGLE ERRORS
   B0 = 1D                          *SET WORD POINTER (1ST SE COUNTER)
27 B5 = OB(B2)                      *SET EXP DATA SE COUNTER
   B6 = IB(B1)                      *SET ACT DATA SE COUNTER
   IF (B5.NE.B6) ERROR 5/214 GOSUB 64  *TEST SINGLE ERROR COUNTER 
   B1 = B1 + 1                      *SET POINTER TO NEXT ENTRY(NEW) 
   B2 = B2 + 1                      *SET POINTER TO NEXT ENTRY(OLD) 
   GOTO 27 WHILE (B0+1D.LT.17D)     *LOOP FOR 16 SINGLE ERRORS
   GOSUB 70                         *SAVE CURRENT ERROR LOG 
* 
* -------SET MAXIMUM ADDRESS TO IB(503) 
* 
60 B6 = IB(503)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(503) 
* 
* -------MONITOR FLAG REGISTER FOR ZERO 
* 
62 B14 = RESSDP 
   RES SDP ,ABT 74                  *RESERVE SDP
   WC = 14D 
   B14 = SDRFR                      *READ FLAG REGISTER 
   SIDE DOOR READ FLAG REGISTER, ABT 74 
   B14 = 0                          *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 62   *CHECK FOR REG = 0.
   IF (B4.NE.0) PICTURE             *DISPLAY ERROR
   IF (B4.NE.0) HALT                *HALT IF ERROR
* 
* -------SET MAX ADDRESS = IB(502)
* 
   B6 = IB(502)                         *COMMAND NUMBER 
   B14 = SDMAX                      *COMMAND CODE 
   SET MAXIMUM ADDRESS B6, ABT 74   *SET MAX ADDR = IB(502) 
   EXIT                             *EXIT TO MSD05
* 
* -------DISPLAY ERRORS 
* 
64 MSG 0 TO LINE 0
   MSG 11 TO LINE 1 
   MSG EM(B0) TO LINE B12           *DISPLAY ERROR
   MSG 10(B6,B5) TO LINE B12 +1 
   B4 = B4 + 1                      *SET ERROR INDICATOR
   B12 = B12 + 2                    *UPDATE THE LINE COUNTER
   RETURN 
* 
* -------SAVE THE ERRLOG CONTENTS 
* 
70 B0 = 0                           *SET IB POINTER 
   B1 = 300                         *SET OB POINTER 
72 OB(B1) = IB(B0)                  *SAVE CURRENT ERRLOG CONTENTS 
   B1 = B1 + 1
   GOTO 72 WHILE (B0+1.LT.124)
   RETURN                           *EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *SET THE ERROR FLAG 
   EXIT                             *EXIT 
   END 20 
COMPILE   - MSD05Z -   VERIFY ERROR LOG 
*IF DEF,MVE,1 
   MODULE MSD70,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD70,DESM(171,211)LOCK 
*** MSD70  - ERROR LOG DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DISPLAY THE CONTENTS OF THE ERROR LOG AND RESET THE ERROR LOG 
*         IF THE OPERATOR WISHES. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE. 
*         2.  RESERVE THE SIDE DOOR PORT. 
*         3.  READ THE ERROR LOG. 
*         4.  DISPLAY THE CONTENTS OF THE ERROR LOG (123B) WORDS. 
*         5.  PAUSE AFTER POSTING PAUSE MESSAGE.
*         6.  IF A *GO* IS GIVEN RESET THE ERROR LOG. 
*         7.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
* 
*    2.2  REGISTERS USED
* 
*         B4  = TEMPORARY STORAGE 
*         B5  = TEMPORARY STORAGE 
*         B6  = TEMPORARY STORAGE 
*         B7  = TEMPORARY STORAGE 
*         B10 = TEMPORARY STORAGE 
*         B11 = TEMPORARY STORAGE 
*         B12 - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* -------DATA DIVISION
* 
0  FORMAT MSD70 - READ AND DISPLAY ERROR LOG
1  FORMAT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3  FORMAT XX   WARNING A -GO- WILL RESET THE ERROR LOG    XX
4  FORMAT SINGLE BIT ERROR COUNTER = *OCT*OCT*OCT 
5  FORMAT DBL ERRORS *D  *OCT *OCT  *D  *OCT *OCT 
7  FORMAT SGL ERRORS *D  *OCT *OCT  *D  *OCT *OCT 
10 FORMAT MSD70 - PAUSE -GO- TO RESET THE ERROR LOG 
11 FORMAT SINGLE BIT ERROR NUMBER *D COUNTER = *OCT 
12 FORMAT SDP STATUS = *OCTB *OCTB *OCTB *OCTB
13 FORMAT ABORTED ON RESERVE
14 FORMAT ABORTED ON ERROR LOG READ 
15 FORMAT ABORTED ON ERROR LOG RESET
16 FORMAT MSD70 - ERROR LOG HAS BEEN RESET
17 FORMAT---------------------------------------------------
* 
* -------POST MESSAGES
* 
20 MSG 0 TO DISPLAY,PRINT           *MODULE RUN MESSAGE 
   RES SDP, ABT 70                  *RESERVE THE SIDE DOOR PORT 
   WC = 123B
   ERRLOG READ, ABT 72
   MSG 0 TO LINE 0                  *TEST TITLE 
   MSG 12 (SB(0),SB(1),SB(2),SB(3)) TO LINE 1 
   B4 = 3 
   B5 = 4 
   B6 = 5 
   B7 = 6 
   B10 = 01D
   B11 = 02D
   B12=2                            *SET LINE COUNTER 
* 
* -------DISPLAY ERROR LOG CONTENTS 
* 
   MSG 4 (IB(0),IB(1),IB(2)) TO LINE B12  *SINGLE BIT COUNTER 
   B12 = B12+1
22 MSG 5 (B10,IB(B4),IB(B5),B11,IB(B6),IB(B7)) TO LINE B12
   B4 = B4 + 4                      *UPDATE WORD POINTERS 
   B5 = B5 + 4                      *UPDATE WORD POINTERS 
   B6 = B6 + 4                      *UPDATE WORD POINTERS 
   B7 = B7 + 4                      *UPDATE WORD POINTERS 
   B11 = B11 + 2
   B12 = B12 + 1                    *UPDATE LINE POINTER
   GOTO 22 WHILE (B10+2D.LT.17D)    *LOOP THROUGH 16 DOUBLE ERRORS
   B10 = 01D
   B11 = 02D
24 MSG 7 (B10,IB(B4),IB(B5),B11,IB(B6),IB(B7)) TO LINE B12
   B4 = B4 + 4                      *UPDATE WORD POINTERS 
   B5 = B5 + 4                      *UPDATE WORD POINTERS 
   B6 = B6 + 4                      *UPDATE WORD POINTERS 
   B7 = B7 + 4                      *UPDATE WORD POINTERS 
   B11 = B11 + 2
   B12 = B12 + 1                    *UPDATE LINE POINTER
   GOTO 24 WHILE (B10+0202D.LT.1600D)  *LOOP THROUGH 16 SINGLE ERRORS 
   B10 = 1D 
26 MSG 11(B10,IB(B4)) TO LINE B12   *SINGLE ERROR COUNTERS
   B4 = B4+1
   B12 = B12 + 1                    *UPDATE LINE POINTER
   GOTO 26 WHILE (B10+1.LT.17D)     *LOOP THROUGH 16 COUNTERS 
   MSG 1 TO LINE B12                *PAUSE WARNING MESSAGE
   B12 = B12 + 1                    *INCREMENT THE LINE NUMBER
   MSG 3 TO LINE B12                *PAUSE WARNING MESSAGE
   B12 = B12 + 1                    *INCREMENT THE LINE NUMBER
   MSG 1 TO LINE B12                *PAUSE WARNING MESSAGE
   B12 = B12 + 1                    *INCREMENT THE LINE NUMBER
   MSG 10 TO LINE B12               *PAUSE MESSAGE
   B12 = B12 + 1                    *INCREMENT THE LINE NUMBER
   MSG 10 TO DISPLAY,PRINT          *PAUSE MESSAGE
   PICTURE
   PAUSE
   BLANK                            *CLEAR THE DISPLAY
   RES SDP, ABT 70                  *RESERVE THE SIDE DOOR PORT 
   ERRLOG RESET, ABT 71             *RESET THE ERROR LOG
   MSG 16 TO LINE 10                *ERROR LOG RESET MESSAGE
   MSG 16 TO DISPLAY,PRINT          *ERROR LOG RESET MESSAGE
   PICTURE
   GOTO 77                          *END THE MODULE 
70 MSG 13 TO LINE 15
   MSG EM (EA,EC) TO LINE 1         *POST ABORT MESSAGE 
   GOTO 74
71 MSG 15 TO LINE 15
   MSG EM (EA,EC) TO LINE 1         *POST ABORT MESSAGE 
   GOTO 74
72 MSG 14 TO LINE 16
   MSG EM (EA,EC) TO LINE 1         *POST ABORT MESSAGE 
74 MSG 12 (SB(0),SB(1),SB(2),SB(3)) TO LINE 17
   PICTURE
   HALT 
77 END 20 
COMPILE   - MSD70  -  ERROR LOG DISPLAY 
*IF DEF,MVE,1 
   MODULE MSD71,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD71,DESM(171,211)LOCK 
*** MSD71 - MASTER CLEAR AND SET CLOCK
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE WILL MASTER CLEAR THE SIDE DOOR PORT AND THEN SET 
*         CLOCK MARGINS AS  DICTATED BY PARAMETER P1.   FOLLOWING THESE 
*         ACTIONS, THE MODULE WILL PAUSE. 
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE SIDE DOOR PORT. 
*         2.  MASTER CLEAR THE SIDE DOOR PORT.
*         3.  READ THE VALUE IN THE P1 REGISTER AND SET CLOCK MARGINS.
*         4.  POST A MESSAGE AND PAUSE. 
* 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         P1 = CLOCK TIMING 
*            = 0000  10.0 MHZ (100 NS)   NOMINAL
*            = 0001   9.8 MHZ (102 NS) -2 PERCENT 
*            = 0002  10.4 MHZ  (96 NS) +4 PERCENT 
*            = 0003  10.2 MHZ  (98 NS) +2 PERCENT 
*            = 0004   9.6 MHZ (104 NS) -4 PERCENT 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B3  = FUNCTION TO OUTPUT
*         B4  = TEMPORARY STORAGE.
*         B5  = TEMPORARY STORAGE.
*         B6  = TEMPORARY STORAGE.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
0  FORMAT PAUSE - CLOCK SET TO NOMINAL
1  FORMAT PAUSE - CLOCK SET TO -2 PERCENT 
2  FORMAT PAUSE - CLOCK SET TO +4 PERCENT 
3  FORMAT PAUSE - CLOCK SET TO -4 PERCENT 
4  FORMAT PAUSE - CLOCK SET TO -2 PERCENT 
5  FORMAT ABORTED ON RESERVE
6  FORMAT ABORTED ON MASTER CLEAR 
7  FORMAT ABORTED ON SET CLOCK
10 FORMAT STORNET SUBSYSTEM MEMORY TEST 
* 
   EQUATE RESSDP=6, SDCLK=17B, SDCLR=24B
* 
* 
* -------MODULE INITIALIZATION
* 
20 B14 = RESSDP 
   RES SDP, ABT 70                  *RESERVE SDP
* 
* -------MASTER CLEAR THE SDP 
* 
21 B14 = SDCLR
   B3 = 0200B                       *SET MASTER CLEAR 
   SIDE DOOR CLEAR B3, ABT 72 
* 
* -------SET CLOCK MARGINS
* 
   B14 = SDCLK
   B3 = P1                          *LOAD PARAMETER 1 
   SET CLOCK TIMING B3, ABT 74
   MSG 10 TO LINE 0                 *POST TEST NAME 
   MSG B3 TO LINE 2                 *POST CLOCK INFO
   MSG B3 TO PRINT
   PAUSE
* 
* -------PROCESS COMMAND ABORTS 
* 
70 MSG 5 TO LINE 4                  *ABORT ON RES MESSAGE 
   GOTO 76
72 MSG 6 TO LINE 4                  *ABORT ON MASTER CLEAR
   GOTO 76
74 MSG 7 TO LINE 4                  *ABORT ON CLOCK SET 
76 MSG 10 TO LINE 0                 *POST TEST NAME 
   PICTURE
   HALT                             *EXIT 
   END 20 
COMPILE   - MSD71 -   MASTER CLEAR AND SET CLOCK
*IF DEF,MVE,1 
   MODULE MSD98A,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD98A,DESM(171,211)LOCK
*** MSD98A - 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 MSD98E 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 
* 
*         MSD98E - ERROR DISPLAY
* 
* -------DATA DIVISION
* 
1  FORMAT MSD*D ABORTED ON .ERRLOG READ.
2  FORMAT MSD*D ABORTED ON .ERRLOG RESET. 
3  FORMAT MSD*D ABORTED ON .ERRLOG SET PROG COUNTER.
4  FORMAT MSD*D ABORTED ON .FLAG REGISTER SDP DETERR. 
5  FORMAT MSD*D ABORTED ON .REL.
6  FORMAT MSD*D ABORTED ON .RES SDP.
7  FORMAT MSD*D ABORTED ON .MAINT FUNC GBA FORCE. 
10 FORMAT MSD*D ABORTED ON .MAINT FUNC WR VALID ERROR FORCE.
11 FORMAT MSD*D ABORTED ON .MAINT FUNC DISABLE SECDED.
12 FORMAT MSD*D ABORTED ON .MAINT FUNC WRITE CHECK BITS.
13 FORMAT MSD*D ABORTED ON .MAINT FUNC READ CHECK BITS. 
14 FORMAT MSD*D ABORTED ON .MAINT FUNC READ SYNDROME BITS.
15 FORMAT MSD*D ABORTED ON .MAINT FUNC READ ZERO CHECK BITS.
16 FORMAT MSD*D ABORTED ON .MAINT FUNC CLR MAINT FUNCTIONS. 
* 
* -------POST COMMAND ABORTED 
* 
20 IF (B14.GT.16) EXIT TO 98B       *NEXT COMMAND ERROR PROCESSOR 
   MSG B14 (B15) TO LINE 2          *COMMAND ABORTED MSG
   MSG EM TO LINE 3                 *ERROR DESCRIPTION
   B12=4                            *DISPLAY LINE 
   EXIT TO 98E                      *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE   - MSD98A -  POST COMMAND ABORTED DISPLAY
*IF DEF,MVE,1 
   MODULE MSD98B,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD98B,DESM(171,211)LOCK
*** MSD98B - 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 MSD98E 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 
* 
*         MSD98E - ERROR DISPLAY
* 
* -------DATA DIVISION
* 
1  FORMAT MSD*D ABORTED ON .SET CLOCK TIMING. 
2  FORMAT MSD*D ABORTED ON .SET REFRESH TIME. 
3  FORMAT MSD*D ABORTED ON .SET SCANNER LOCK. 
4  FORMAT MSD*D ABORTED ON .SET MAXIMUM ADDRESS.
5  FORMAT MSD*D ABORTED ON .SET ENVIRON STATUS BITS.
6  FORMAT MSD*D ABORTED ON .SIDE DOOR CLEAR.
7  FORMAT MSD*D ABORTED ON .SIDE DOOR READ FLAG REGISTER. 
10 FORMAT MSD*D ABORTED ON .STATUS ERROR. 
11 FORMAT MSD*D ABORTED ON .STATUS OPERATION. 
12 FORMAT MSD*D ABORTED ON .STATUS SDP. 
13 FORMAT MSD*D ABORTED ON .UNKNOWN COMMAND.
* 
* -------POST COMMAND ABORTED 
* 
20 B14 = B14 - 16B                  *MINUS THE COMMANDS IN THE 1ST PROC 
   IF (B14.GT.12) MSG 13 TO LINE 2  *COMMAND UNKNOWN MESSAGE
   IF (B14.GT.12) GOTO 30           *COMMAND UNKNOWN EXIT 
   MSG B14 (B15) TO LINE 2          *COMMAND ABORTED MSG
30 MSG EM TO LINE 3                 *ERROR DESCRIPTION
   B12=4                            *DISPLAY LINE 
   EXIT TO 98E                      *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE   - MSD98B -  POST COMMAND ABORTED DISPLAY
*IF DEF,MVE,1 
   MODULE MSD98C,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD98C,DESM(171,211)LOCK
*** MSD98C - 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 MSD98E TO COMPLETE ERROR DISPLAY.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS ZERO INDICATING DATA COMPARE ERROR. 
*         REGISTER WC  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 (WC) TO LINE 4             *NUMBER OF WORD IN ERROR
   B12=6                            *DISPLAY LINE 
   EXIT TO 98E                      *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE   - MSD98C -  POST COMPARE ERROR DISPLAY
*IF DEF,MVE,1 
   MODULE MSD98D,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD98D,DESM(171,211)LOCK
*** MSD98D - POST STATUS ERROR DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         DISPLAY THE STATUS ERROR MESSAGE
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY EXPECTED AND ACTUAL STATUS. 
*         2.  EXIT TO MODULE MSD98E TO COMPLETE ERROR DISPLAY.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B2  = STATUS MASK 
*         B6  = LAST DATA OUTPUT
*         B7  = EXPECTED STATUS WD 1
*         B8  = EXPECTED STATUS WD 2
*         B9  = EXPECTED STATUS WD 3
*         B10 = EXPECTED STATUS WD 4
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE
* 
* -------DATA DIVISION
* 
0  FORMAT SDP STATUS WORD 1 ERROR   ACT=*OCTB 
1  FORMAT SDP STATUS WORD 2 ERROR   ACT=*OCTB 
2  FORMAT SDP STATUS WORD 3 ERROR   ACT=*OCTB 
3  FORMAT SDP STATUS WORD 4 ERROR   ACT=*OCTB 
5  FORMAT SDP STATUS MASK = *OCTB   EXP=*OCTB 
10 FORMAT EC 0100 - INCORRECT STATUS FOLLOWING MASTER CLEAR.
11 FORMAT EC 0101 - CHANNEL PARITY ERROR AFTER OUTPUT *OCTB.
12 FORMAT EC 0102 - BAD CLOCK STATUS AFTER SET MAX ADDRESS. 
13 FORMAT EC 0103 - INCORRECT ENVIRON STATUS AFTER SET. 
14 FORMAT EC 0104 - BAD CLOCK STATUS AFTER *OCTB CLEAR FNC. 
15 FORMAT EC 0105 - BAD REFRESH COUNTER STATUS AFTER SET. 
16 FORMAT EC 0106 - REFRESH COUNTER LESS THAN 1000B.
17 FORMAT EC 0107 - BAD STATUS FOLLOWING READ FLAG REG FNC. 
20 FORMAT EC 0110 - NO FGBA STATUS ON A FLAG REG READ.
* 
* -------POST ERROR MESSAGES
* 
30 MSG EM(SB(EM)) TO LINE 3         *STATUS ERROR MESSAGE 
   IF (EM.EQ.0) MSG 5(B2,B7) TO LINE 4   *EXPECTED STATUS 
   IF (EM.EQ.1) MSG 5(B2,B8) TO LINE 4   *EXPECTED STATUS 
   IF (EM.EQ.2) MSG 5(B2,B9) TO LINE 4   *EXPECTED STATUS 
   IF (EM.EQ.3) MSG 5(B2,B10) TO LINE 4   *EXPECTED STATUS
   IF (EC.EQ.100)MSG 10 TO LINE 2   *ERROR DESCRIPTION MSG
   IF (EC.EQ.101)MSG 11(B6) TO LINE 2   *ERROR DESCRIPTION MSG
   IF (EC.EQ.102)MSG 12 TO LINE 2   *ERROR DESCRIPTION MSG
   IF (EC.EQ.103)MSG 13 TO LINE 2   *ERROR DESCRIPTION MSG
   IF (EC.EQ.104)MSG 14(B6) TO LINE 2   *ERROR DESCRIPTION MSG
   IF (EC.EQ.105)MSG 15 TO LINE 2   *ERROR DESCRIPTION MSG
   IF (EC.EQ.106)MSG 16 TO LINE 2   *ERROR DESCRIPTION MSG
   IF (EC.EQ.107)MSG 17 TO LINE 2   *ERROR DESCRIPTION MSG
   IF (EC.EQ.110)MSG 20 TO LINE 2   *ERROR DESCRIPTION MSG
   B12 = 6                          *DISPLAY LINE 
   B14 = 77                         *INDICATE STATUS ERROR
   EXIT TO 98E                      *COMPLETE ERROR DISPLAY 
* 
   END 30 
COMPILE   - MSD98D -  POST STATUS ERROR DISPLAY 
*IF DEF,MVE,1 
   MODULE MSD98E,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD98E,DESM(171,211)LOCK
*** MSD98E - 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, WT AND LSF 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 SDP STATUS. 
*         6.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED 
*                  B14 = 0 FOR DATA COMPARE ERROR 
*                       77 FOR STATUS ERROR 
*         REGISTER WC CONTAINS THE NUMBER OF WORD AT WHICH DATA COMPARE 
*                     ERROR OCCURRED
* 
*    2.2  REGISTERS USED
* 
*         B12 - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* -------DATA DIVISION
* 
0  FORMAT MSD - STORNET SUBSYSTEM MEMORY TEST 
2  FORMAT EC=*OCTB  EA=*OCTB  LF=*OCTB  WT=*OCTB  LSF=*OCT
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 SDP STATUS = *OCTB *OCTB *OCTB *OCTB
17 FORMAT---------------------------------------------------
* 
* -------POST MESSAGES
* 
20 MSG 0 TO LINE 0                  *TEST TITLE 
   MSG 2 (EC,EA,LF,WT,SB(21)) TO LINE B12 
   B12=B12+2
* 
* -------DISPLAY B REGISTERS
* 
   MSG 6 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B12
   MSG 7 (B8,B9,B10,B11.B12,B13,B14,B15) TO LINE B12+1
   IF(EC.GE.4000B) GOTO 30
   MSG 10(SB(0),SB(1),SB(2),SB(3)) TO LINE B12+3
30 IF (B14.NE.0) GOTO 50            *IF PRODUCT OVERLAY ERROR 
* 
* -------DISPLAY BUFFERS
* 
   MSG 4 10B WORDS FROM IB(WC) TO LINE 13 
   MSG 5 10B WORDS FROM OB(WC) TO LINE 14 
   GOTO 70                          *IF DATA COMPARE ERROR, DONE
* 
* -------DISPLAY STATUS 
* 
50 IF (B14.EQ.77) GOTO 70           *IF STATUS ERROR
   MSG 10 (SB(0),SB(1),SB(2),SB(3)) TO LINE 11
* 
* -------EXIT THE MODULE
* 
70 MSG 17 TO LINE 23
   PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 20 
COMPILE   - MSD98E -  ERROR DISPLAY 
*IF DEF,MVE,1 
   MODULE MSD99,DESM(171,211,212,213)LOCK 
*IF -DEF,MVE,1
   MODULE MSD99,DESM(171,211)LOCK 
*** MSD99 - DOCUMENTATION OVERVIEW
**
* 
 1 PAUSE
   EXIT TO 99A
/         FOR ADDITIONAL DOCUMENTATION, SEE THE FOLLOWING 
/         MODULES 
/ 
/         MSD99           OVERVIEW
/         MSD99A          LIST OF MODULES 
/         MSD99B          PARAMETER DESCRIPTION 
   END 1
COMPILE,SOURCE   - MSD99 -   OVERVIEW 
*IF DEF,MVE,1 
   MODULE MSD99A,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD99A,DESM(171,211)LOCK
*** MSD99A - MODULES LIST 
**
* 
 1 PAUSE
   EXIT TO 99B
/ 
/         MSD MODULES 00 THROUGH  04 TEST THE BASIC  LOGIC
/         WITHIN THE SIDE DOOR PORT.   MODULE 05 SERVES AS
/         A SLAVE TO MSM, AND PERFORMS MAINTENANCE FUNCTIONS
/         AND ERROR DETECTION.
/ 
/                                             ACCESS    RUN 
/         MODULE       DESCRIPTION            LEVEL     TIME
/         ------       -----------            ------    ----
/ 
*IF -DEF,MVE
/         MSD00  - PARAMETER VALIDATION        10      1 SEC
/         MSD01  - SD CHANNEL ACCESS TEST      10      1 SEC
/         MSD02  - MAXIMUM ADDRESS TEST        10      1 SEC
/         MSD03  - PROGRAMMABLE CLEARS TEST    10      1 SEC
/         MSD04  - FLAG MEMORY SIDE DOOR       10      1 SEC
/                  ADDRESSING TEST
/         MSD05  - MONITOR FLAG REGISTER       10       NA
*ENDIF
*IF DEF,MVE 
/         MSD00  - PARAMETER VALIDATION        32      1 SEC
/         MSD01  - SD CHANNEL ACCESS TEST      32      1 SEC
/         MSD02  - MAXIMUM ADDRESS TEST        32      1 SEC
/         MSD03  - PROGRAMMABLE CLEARS TEST    32      1 SEC
/         MSD04  - FLAG MEMORY SIDE DOOR       32      1 SEC
/                  ADDRESSING TEST
/         MSD05  - MONITOR FLAG REGISTER       32       NA
*ENDIF
/         MSD05A - PROCESS 0100 FUNCTION
/         MSD05B - PROCESS 0200 FUNCTION
/         MSD05C - PROCESS 0300 FUNCTION
/         MSD05D - PROCESS 0400 FUNCTION
/         MSD05E - PROCESS 0500 FUNCTION
/         MSD05F - PROCESS 0600 FUNCTION
/         MSD05G - PROCESS 0701/0-5 FUNCTIONS 
/         MSD05H - PROCESS 0701/6-11 FUNCTIONS
/         MSD05I - PROCESS 0701/12-17 FUNCTIONS 
/         MSD05Z - VERIFY ERROR LOG 
/         MSD70  - DISPLAY ERROR LOG CONTENTS 
/         MSD71  - MASTER CLEAR AND SET CLOCK 
/         MSD98A - POST COMMAND ABORTED DISPLAY 
/         MSD98B - POST COMMAND ABORTED DISPLAY 
/         MSD98C - POST COMPARE ERROR DISPLAY 
/         MSD98D - POST STATUS ERROR DISPLAY
/         MSD98E - ERROR DISPLAY
/         MSD98F - DISPLAY ERROR LOG CONTENTS 
/         MSD99  - OVERVIEW 
/         MSD99A - LIST OF MODULES
/         MSD99B - PARAMETERS (P0 -P9)
/         ******************
   END 1
COMPILE,SOURCE   - MSD99A -   MSD MODULES 
*IF DEF,MVE,1 
   MODULE MSD99B,DESM(171,211,212,213)LOCK
*IF -DEF,MVE,1
   MODULE MSD99B,DESM(171,211)LOCK
*** MSD99B - PARAMETERS (P0 - P9) 
**
*         MSD99A - PARAMETERS (P0 - P9) 
* 
*         MSD99A PROVIDES A DESCRIPTION OF THE PARAMETERS.
* 
/         -PARAMETER REGISTER SETTINGS- 
/         P1 = CLOCK TIMING 
/            = 0000  10.0 MHZ (100 NS)   NOMINAL
/            = 0001   9.8 MHZ (102 NS) -2 PERCENT 
/            = 0002  10.4 MHZ  (96 NS) +4 PERCENT 
/            = 0003  10.2 MHZ  (98 NS) +2 PERCENT 
/            = 0004   9.6 MHZ (104 NS) -4 PERCENT 
01 PAUSE
   END 1
COMPILE,SOURCE   - MSD99B -   MSD PARAMETERS
