*DECK,MSM 
***       MSM - STORNET SUBSYSTEM MEMORY. 
*** 1.0   IDENTIFICATION
**
*   1.1   PROGRAM NAME
* 
*         MSM - STORNET SUBSYSTEM MEMORY. 
* 
*   1.2   AUTHORS 
* 
*         J.  M.  OJA        DATE      02/02/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 SUBSYSTEM MEMORY, (SNSS) AND THE
*         EXTERNAL SEMICONDUCTOR MEMORY, (ESM II). 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  REPORT  SOME  DETECTED
*         ERRORS. 
* 
*         MSM COMMUNICATES WITH MSD VIA THE 4 BIT FLAG REGISTER  IN  THE
*         SUBSYSTEM. MSD RESPONDS BY SETTING THE MAXIMUM ADDRESS TO  MAX
*         ADDRESS MINUS 1 INDICATING THAT MSD HAS READ THE FLAG REGISTER
*         AND HAS ISSUED THE FUNCTION MSM REQUESTED.  PRIOR TO USING THE
*         THE  FLAG  REGISTER  FOR COMMUNICATIONS BOTH PROGRAMS TEST THE
*         CIRCUITS TO BE USED AND REPORT ANY ERRORS ENCOUNTERED. TESTING
*         CAN BE DONE, EVEN IF COMMUNICATION CANNOT BE ESTABLISHED. THIS
*         WILL CONSIST OF MSD TESTING THE THE SIDE DOOR CHANNEL  ACCESS,
*         MAXIMUM  ADDRESS  AND  PROGRAM  CLEARS.  MODULES MSM01 THROUGH
*         MSM37 ARE EXECUTED BEFORE TRYING TO ESTABLISH COMMUNICATIONS. 
* 
* 
*         THE FOLLOWING MSM MODULES SUPPORT THE SCOPING LOOP OPTION  (SE
*         CLEAR  AND  RM OR RC SET).  MSM01 THROUGH MSM33. THIS ALLOWS A
*         FAILING  SEQUENCE  TO BE REPEATED  RAPIDLY  FOR SCOPING, SHOCK
*         TESTING,  ETC. TO  PERFORM  REPAIR.   DURING  A  SCOPING  LOOP
*         SITUATION,  ONLY  THE PASS COUNT AND ERROR COUNT ARE PRESENTED
*         AS OUTPUT.
* 
*         MSM IS STRUCTURED AS AN INVERTED PYRAMID TEST WHICH WORKS  ITS
*         WAY  THROUGH  THE LSP, FLAG REGISTERS, LSP BUFFERS AND FINALLY
*         TO MEMORY ITSELF.  THIS  PROVES  EACH  PART  OF  THE SUBSYSTEM
*         BEFORE USING IT IN MORE COMPLEX TESTS.
* 
*         MSM WILL REPORT ALL ERRORS WHICH ARE DETECTED ON THE LSP,  AND
*         ERRORS DETECTED BY MSD IN RESPONSE TO ERRORS FORCED BY MSM  IN
*         TESTING OF ERROR LOGGING AND FORCED ERRORS.  MSD  WILL  REPORT
*         ALL ERRORS DETECTED ON THE SDP. IN SOME CASES MSM AND MSD WILL
*         BOTH REPORT THE SAME ERROR. 
* 
* 
*   2.2   CHARACTERISTICS 
* 
*         1.  PROGRAM NAME..................................MSM.
*         2.  TEST/DIAG/UTILITY/SYSTEM.....................TEST.
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER........MALET.
*IF -DEF,MVE
*IF -DEF,CMSE17X,2
*         4.  RUN TIME (4 MILLION WORDS)..........39 MIN 26 SEC.
*         5.  RUN TIME/QUICK LOOK (DEFAULT AL=3)...1 MIN 17 SEC.
*IF DEF,CMSE17X,2 
*         4.  RUN TIME (4 MILLION WORDS).....1 HR 22 MIN 49 SEC.
*         5.  RUN TIME/QUICK LOOK (DEFAULT AL=3)............N/A.
*ENDIF
*IF DEF,MVE 
*         4.  RUN TIME (4 MILLION WORDS)..........39 MIN 26 SEC.
*         5.  RUN TIME/QUICK LOOK (DEFAULT AL=30)..1 MIN 17 SEC.
*ENDIF
*ENDIF
*         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. MSM SUPPORTS DEVICE CODES FOR: 
*            ESM II SUBSYSTEM 
*            STORNET SUBSYSTEM
* 
*   2.4   HARDWARE REQUIREMENTS 
* 
*         THIS TEST REQUIRES: 
*         1 - CYBER 170/180 
*         1 - STORNET SUBSYSTEM SIDE DOOR PORT AND LOW SPEED PORT 
*                                OR 
*         1 - ESM II SUBSYSTEM SIDE DOOR PORT AND LOW SPEED PORT
* 
*   2.5   RESTRICTIONS
* 
*         1. IN ORDER TO UTILIZE THIS TEST TO ITS FULL CAPABILITIES,
*            A CHANNEL IN THE MAINFRAME CONNECTED TO THE SDP MUST BE
*            AVAILABLE. IT MAY OR MAY NOT BE THE SAME MAINFRAME WHICH 
*            IS EXECUTING MSM.
* 
* 
*** 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
* 
*         MSM IS DIVIDED INTO TWO BASIC SECTIONS.   THE  FIRST  SECTION 
*         CONSISTS OF THE DEFAULT MODULES,  MSM00  THROUGH  MSM40.  THE 
*         SECOND SECTION CONSISTS OF MODULES MSM41 THROUGH MSM81 AND
*         REQUIRES MSD TO BE RUNNING ON THE SIDE DOOR PORT. 
* 
*         MODULES MSM23 THROUGH MSM33 PERFORM DEFAULT DATA TESTING FROM 
*         AND TO CM AND A STORNET OR ESM II SUBSYSTEM.
* 
*IF DEF,CMSE17X,2 
*         RUN TIMES WERE ON AN 860 SYSTEM WITH 4 MILLION WORDS OF 
*         MEMORY. 
*IF -DEF,CMSE17X,2
*         RUN TIMES WERE ON A DEDICATED (NOS) SYSTEM WITH 4 MILLION 
*         WORDS OF MEMORY.
* 
*                                                   ACCESS    RUN 
*         MODULE       DESCRIPTION                  LEVEL     TIME
*         ------       -----------                  ------    ----
* 
*IF -DEF,MVE
*      1. PAUSE MODULE TO SET CLOCK MARGINS 
* 
*         MSM00 - PAUSE MODULE TO SET CLOCK MARGINS   10      1 SEC 
* 
*      2. GLOBAL FLAG REGISTER OPERATIONS 
* 
*         MSM01 - 18 BIT FLAG REGISTER PART ONE       10      1 SEC 
*         MSM02 - 18 BIT FLAG REGISTER PART TWO       10      1 SEC 
*         MSM03 - 4 BIT FLAG REGISTER PART ONE        10      1 SEC 
*         MSM04 - 4 BIT FLAG REGISTER PART TWO        10      1 SEC 
*         MSM05 - 4 BIT FLAG REGISTER PART THREE      10      1 SEC 
*IF DEF,CMSE17X,1 
*         MSM07 - 16K X 4 MARCH FLAG MEMORY TEST      10     18 SEC 
*IF -DEF,CMSE17X,1
*         MSM07 - 16K X 4 MARCH FLAG MEMORY TEST      10     16 SEC 
*         MSM09 - 16K X 4 MASEST MEMORY TEST          10     11 SEC 
*IF -DEF,CMSE17X,1
*         MSM11 - 16K X 4 WALKING COLUMN PART ONE     10    1 MIN 13 SEC
*IF DEF,CMSE17X,1 
*         MSM11 - 16K X 4 WALKING COLUMN PART ONE     10    1 MIN 15 SEC
*         MSM12 - 16K X 4 WALKING COLUMN PART TWO     10    1 MIN 13 SEC
*         MSM13 - 16K X 4 WALKING ROW PART ONE        10    1 MIN 25 SEC
*IF -DEF,CMSE17X,2
*         MSM14 - 16K X 4 WALKING ROW PART TWO        10    1 MIN 25 SEC
*         MSM15 - 4 BIT FLAG REGISTER ADDRESS TEST    10     17 SEC 
*IF DEF,CMSE17X,2 
*         MSM14 - 16K X 4 WALKING ROW PART TWO        10    1 MIN 28 SEC
*         MSM15 - 4 BIT FLAG REGISTER ADDRESS TEST    10     12 SEC 
* 
*      3. DATA INTEGRITY TESTS
* 
*IF -DEF,CMSE17X,1
*         MSM17 - LOW SPEED PORT BUFFER TEST          10     39 SEC 
*IF DEF,CMSE17X,3 
*         MSM17 - LOW SPEED PORT BUFFER TEST          10     50 SEC 
*         MSM19 - MEMORY DATA PATH TEST PART ONE      10      4 SEC 
*         MSM20 - MEMORY DATA PATH TEST PART TWO      10      3 SEC 
*IF -DEF,CMSE17X,1
*         MSM19 - MEMORY DATA PATH TEST PART ONE       3      6 SEC 
*IF -DEF,CMSE17X,1
*         MSM20 - MEMORY DATA PATH TEST PART TWO      10      1 SEC 
* 
*      4. ADDRESS PATH TESTS
* 
*IF DEF,CMSE17X,2 
*         MSM21 - ADDRESS PATH TEST PART ONE          10     13 SEC 
*         MSM22 - ADDRESS PATH TEST PART TWO          10     12 SEC 
*IF -DEF,CMSE17X,2
*         MSM21 - ADDRESS PATH TEST PART ONE          10      1 SEC 
*         MSM22 - ADDRESS PATH TEST PART TWO          10      1 SEC 
* 
*      5. DATA INTEGRITY TESTS (DMA PATH) 
* 
*IF DEF,CMSE17X,6 
*         MSM23 - DATA ONES AND ZEROS TEST (DMA)      10      2 SEC 
*         MSM25 - DATA ALTERNATING ONES TEST (DMA)    10      2 SEC 
*         MSM27 - RANDOM DATA TEST (DMA)              10      2 SEC 
*         MSM29 - ONES AND ZEROS TEST (FAST DMA)      10      2 SEC 
*         MSM31 - ALTERNATING ONES TEST (FAST DMA)    10      2 SEC 
*         MSM33 - RANDOM DATA TEST (FAST DMA)         10      2 SEC 
*IF -DEF,CMSE17X,6
*         MSM23 - DATA ONES AND ZEROS TEST (DMA)       3      4 SEC 
*         MSM25 - DATA ALTERNATING ONES TEST (DMA)     3      4 SEC 
*         MSM27 - RANDOM DATA TEST (DMA)               3      4 SEC 
*         MSM29 - ONES AND ZEROS TEST (FAST DMA)       3      4 SEC 
*         MSM31 - ALTERNATING ONES TEST (FAST DMA)     3      4 SEC 
*         MSM33 - RANDOM DATA TEST (FAST DMA)          3      4 SEC 
* 
*      6. MEMORY TESTING ALL OF MEMORY
* 
*IF -DEF,CMSE17X,3
*         MSM35 - ONES AND ZEROS TEST ALL MEMORY      10    5 MIN 36 SEC
*         MSM36 - ALTERNATING ONES TEST ALL MEMORY    10    5 MIN 36 SEC
*         MSM37 - RANDOM DATA TEST ALL MEMORY         10    8 MIN 16 SEC
*IF DEF,CMSE17X,3 
*         MSM35 - ONES AND ZEROS TEST ALL MEMORY      10    5 MIN 41 SEC
*         MSM36 - ALTERNATING ONES TEST ALL MEMORY    10    5 MIN 41 SEC
*         MSM37 - RANDOM DATA TEST ALL MEMORY         10    8 MIN 37 SEC
* 
*      7. CLEARS 4 BIT GLOBAL FLAG REGISTER FOR MSD 
* 
*         MSM40 - CLEAR 4 BIT FLAG REGISTER           10      4 SEC 
* 
*      8. SECDED ERROR CHECKING REQUIRES MSD BE RUNNING 
* 
*IF DEF,CMSE17X,4 
*         MSM41 - SECDED CHECKBIT GENERATORS PART ONE 10     18 SEC 
*         MSM43 - SECDED CHECKBIT GENERATORS PART TWO 10     35 SEC 
*         MSM45 - SECDED SINGLE BIT CORRECT/DETECT    10     28 SEC 
*         MSM47 - SECDED MULTIPLE BIT ERR DETECTION   10     28 SEC 
*IF -DEF,CMSE17X,4
*         MSM41 - SECDED CHECKBIT GENERATORS PART ONE 10      4 SEC 
*         MSM43 - SECDED CHECKBIT GENERATORS PART TWO 10      8 SEC 
*         MSM45 - SECDED SINGLE BIT CORRECT/DETECT    10      8 SEC 
*         MSM47 - SECDED MULTIPLE BIT ERR DETECTION   10     10 SEC 
* 
*      9. ERROR LOGGING TESTS REQUIRES MSD RUNNING
* 
*IF DEF,CMSE17X,8 
*         MSM49 - ERRLOG PROGRAM SE COUNT PART ONE    10     55 SEC 
*         MSM50 - ERRLOG PROGRAM SE COUNT PART TWO    10    2 MIN 15 SEC
*         MSM51 - ERRLOG PROGRAM SE COUNT PART THREE  10    2 MIN 15 SEC
*         MSM52 - ERRLOG PROGRAM SE COUNT PART FOUR   10    1 MIN 17 SEC
*         MSM53 - ERRLOG PROGRAM SE COUNT PART FIVE   10     25 SEC 
*         MSM55 - DOUBLE ERROR LOGGING TEST           10   20 MIN  0 SEC
*         MSM57 - SINGLE ERR COMPARE AND LOG TEST     10    8 MIN  4 SEC
*         MSM59 - SINGLE ERR LOG 4-BIT COUNTER TEST   10   16 MIN  4 SEC
*IF -DEF,CMSE17X,8
*         MSM49 - ERRLOG PROGRAM SE COUNT PART ONE    10     14 SEC 
*         MSM50 - ERRLOG PROGRAM SE COUNT PART TWO    10     37 SEC 
*         MSM51 - ERRLOG PROGRAM SE COUNT PART THREE  10     37 SEC 
*         MSM52 - ERRLOG PROGRAM SE COUNT PART FOUR   10     20 SEC 
*         MSM53 - ERRLOG PROGRAM SE COUNT PART FIVE   10      9 SEC 
*         MSM55 - DOUBLE ERROR LOGGING TEST           10    4 MIN 47 SEC
*         MSM57 - SINGLE ERR COMPARE AND LOG TEST     10    1 MIN 56 SEC
*         MSM59 - SINGLE ERR LOG 4-BIT COUNTER TEST   10    3 MIN 45 SEC
* 
*     10. FORCE ERROR TESTS REQUIRES MSD RUNNING
* 
*IF DEF,CMSE17X,3 
*         MSM61 - FORCE ERROR STATUS PART ONE         10     16 SEC 
*         MSM62 - FORCE ERROR STATUS PART TWO         10     18 SEC 
*         MSM63 - FORCE ERROR STATUS PART THREE       10     17 SEC 
*IF -DEF,CMSE17X,3
*         MSM61 - FORCE ERROR STATUS PART ONE         10      5 SEC 
*         MSM62 - FORCE ERROR STATUS PART TWO         10      5 SEC 
*         MSM63 - FORCE ERROR STATUS PART THREE       10      5 SEC 
* 
*     11. CLEARS MEMORY IN WHICH ERRORS WERE SET
* 
*         MSM67 - PRESET MEMORY                       10     27 SEC 
* 
*     12. PARTIAL MEMORY TESTS REQUIRES MSD RUNNING 
* 
*IF DEF,CMSE17X,3 
*         MSM69 - PARTIAL WRITE/READ TEST PART ONE    10     18 SEC 
*         MSM70 - PARTIAL WRITE/READ TEST PART TWO    10      8 SEC 
*         MSM71 - SCAN COINCIDENCE TEST               10     57 SEC 
*IF -DEF,CMSE17X,3
*         MSM69 - PARTIAL WRITE/READ TEST PART ONE    10      4 SEC 
*         MSM70 - PARTIAL WRITE/READ TEST PART TWO    10      6 SEC 
*         MSM71 - SCAN COINCIDENCE TEST               10     14 SEC 
* 
*     13. MEMORY TESTING REQUIRES MSD RUNNING 
* 
*IF DEF,CMSE17X,6 
*         MSM73 - CHIP SELECT TEST                    10      5 SEC 
*         MSM75 - ROW/COLUMN MULTIPLEX TEST PART ONE  10      8 SEC 
*         MSM76 - ROW/COLUMN MULTIPLEX TEST PART TWO  10      4 SEC 
*         MSM77 - BASIC BIT PICK DROP TEST            10     13 SEC 
*         MSM79 - ADDRESS LINES SHORT TEST            10     14 SEC 
*         MSM81 - FLAG REG AND MEMORY TEST            10     20 SEC 
*IF -DEF,CMSE17X,6
*         MSM73 - CHIP SELECT TEST                    10      1 SEC 
*         MSM75 - ROW/COLUMN MULTIPLEX TEST PART ONE  10      1 SEC 
*         MSM76 - ROW/COLUMN MULTIPLEX TEST PART TWO  10      1 SEC 
*         MSM77 - BASIC BIT PICK DROP TEST            10      8 SEC 
*         MSM79 - ADDRESS LINES SHORT TEST            10      3 SEC 
*         MSM81 - FLAG REG AND MEMORY TEST            10      6 SEC 
* 
*ENDIF
*IF DEF,MVE 
*      1. PAUSE MODULE TO SET CLOCK MARGINS 
* 
*         MSM00 - PAUSE MODULE TO SET CLOCK MARGINS   32      1 SEC 
* 
*      2. GLOBAL FLAG REGISTER OPERATIONS 
* 
*         MSM01 - 18 BIT FLAG REGISTER PART ONE       32      1 SEC 
*         MSM02 - 18 BIT FLAG REGISTER PART TWO       32      1 SEC 
*         MSM03 - 4 BIT FLAG REGISTER PART ONE        32      1 SEC 
*         MSM04 - 4 BIT FLAG REGISTER PART TWO        32      1 SEC 
*         MSM05 - 4 BIT FLAG REGISTER PART THREE      32      1 SEC 
*         MSM07 - 16K X 4 MARCH FLAG MEMORY TEST      32     16 SEC 
*         MSM09 - 16K X 4 MASEST MEMORY TEST          32     11 SEC 
*         MSM11 - 16K X 4 WALKING COLUMN PART ONE     32    1 MIN 13 SEC
*         MSM12 - 16K X 4 WALKING COLUMN PART TWO     32    1 MIN 13 SEC
*         MSM13 - 16K X 4 WALKING ROW PART ONE        32    1 MIN 25 SEC
*         MSM14 - 16K X 4 WALKING ROW PART TWO        32    1 MIN 25 SEC
*         MSM15 - 4 BIT FLAG REGISTER ADDRESS TEST    32     17 SEC 
* 
*      3. DATA INTEGRITY TESTS
* 
*         MSM17 - LOW SPEED PORT BUFFER TEST          30     39 SEC 
*         MSM19 - MEMORY DATA PATH TEST PART ONE      30      6 SEC 
*         MSM20 - MEMORY DATA PATH TEST PART TWO      30      1 SEC 
* 
*      4. ADDRESS PATH TESTS
* 
*         MSM21 - ADDRESS PATH TEST PART ONE          32      1 SEC 
*         MSM22 - ADDRESS PATH TEST PART TWO          32      1 SEC 
* 
*      5. DATA INTEGRITY TESTS (DMA PATH) 
* 
*         MSM23 - DATA ONES AND ZEROS TEST (DMA)      30      4 SEC 
*         MSM25 - DATA ALTERNATING ONES TEST (DMA)    30      4 SEC 
*         MSM27 - RANDOM DATA TEST (DMA)              30      4 SEC 
*         MSM29 - ONES AND ZEROS TEST (FAST DMA)      30      4 SEC 
*         MSM31 - ALTERNATING ONES TEST (FAST DMA)    30      4 SEC 
*         MSM33 - RANDOM DATA TEST (FAST DMA)         30      4 SEC 
* 
*      6. MEMORY TESTING ALL OF MEMORY
* 
*         MSM35 - ONES AND ZEROS TEST ALL MEMORY      32    5 MIN 36 SEC
*         MSM36 - ALTERNATING ONES TEST ALL MEMORY    32    5 MIN 36 SEC
*         MSM37 - RANDOM DATA TEST ALL MEMORY         32    8 MIN 16 SEC
* 
*      7. CLEARS 4 BIT GLOBAL FLAG REGISTER FOR MSD 
* 
*         MSM40 - CLEAR 4 BIT FLAG REGISTER           32      4 SEC 
* 
*      8. SECDED ERROR CHECKING REQUIRES MSD BE RUNNING 
* 
*         MSM41 - SECDED CHECKBIT GENERATORS PART ONE 32      4 SEC 
*         MSM43 - SECDED CHECKBIT GENERATORS PART TWO 32      8 SEC 
*         MSM45 - SECDED SINGLE BIT CORRECT/DETECT    32      8 SEC 
*         MSM47 - SECDED MULTIPLE BIT ERR DETECTION   32     10 SEC 
* 
*      9. ERROR LOGGING TESTS REQUIRES MSD RUNNING
* 
*         MSM49 - ERRLOG PROGRAM SE COUNT PART ONE    32     14 SEC 
*         MSM50 - ERRLOG PROGRAM SE COUNT PART TWO    32     37 SEC 
*         MSM51 - ERRLOG PROGRAM SE COUNT PART THREE  32     37 SEC 
*         MSM52 - ERRLOG PROGRAM SE COUNT PART FOUR   32     20 SEC 
*         MSM53 - ERRLOG PROGRAM SE COUNT PART FIVE   32      9 SEC 
*         MSM55 - DOUBLE ERROR LOGGING TEST           32    4 MIN 47 SEC
*         MSM57 - SINGLE ERR COMPARE AND LOG TEST     32    1 MIN 56 SEC
*         MSM59 - SINGLE ERR LOG 4-BIT COUNTER TEST   32    3 MIN 45 SEC
* 
*     10. FORCE ERROR TESTS REQUIRES MSD RUNNING
* 
*         MSM61 - FORCE ERROR STATUS PART ONE         32      5 SEC 
*         MSM62 - FORCE ERROR STATUS PART TWO         32      5 SEC 
*         MSM63 - FORCE ERROR STATUS PART THREE       32      5 SEC 
* 
*     11. CLEARS MEMORY IN WHICH ERRORS WERE SET
* 
*         MSM67 - PRESET MEMORY                       32     27 SEC 
* 
*     12. PARTIAL MEMORY TESTS REQUIRES MSD RUNNING 
* 
*         MSM69 - PARTIAL WRITE/READ TEST PART ONE    32      4 SEC 
*         MSM70 - PARTIAL WRITE/READ TEST PART TWO    32      6 SEC 
*         MSM71 - SCAN COINCIDENCE TEST               32     14 SEC 
* 
*     13. MEMORY TESTING REQUIRES MSD RUNNING 
* 
*         MSM73 - CHIP SELECT TEST                    32      1 SEC 
*         MSM75 - ROW/COLUMN MULTIPLEX TEST PART ONE  32      1 SEC 
*         MSM76 - ROW/COLUMN MULTIPLEX TEST PART TWO  32      1 SEC 
*         MSM77 - BASIC BIT PICK DROP TEST            32      8 SEC 
*         MSM79 - ADDRESS LINES SHORT TEST            32      3 SEC 
*         MSM81 - FLAG REG AND MEMORY TEST            32      6 SEC 
* 
*ENDIF
*   4.2   EXECUTION SEQUENCE
* 
*         MSM MODULES ARE INDEPENDENT, AND EXECUTION OF ONE  MODULE  IS 
*         NOT DEPENDENT ON EXECUTION OF ANOTHER.
* 
*         BY DEFAULT, MODULES MSM00 THROUGH MSM40 WILL EXECUTE IN ORDER.
* 
*         MODULE MSM40 WILL THEN PAUSE AND ISSUE THE MESSAGE PAUSE START
*         MSD ON SIDE DOOR PORT. IF P3 = 0000  A *GO* WILL  THEN EXECUTE
*         MODULES MSM41 THROUGH MSM81.  IF P3 NON-ZERO THE PAUSE MESSAGE
*         WILL BE DISPLAYED BUT A PAUSE WILL NOT OCCUR. -NOTE- IF MSD IS
*         NOT RUNNING MODULE 41 WILL HANG WAITING FOR MSD.
* 
*         MODULES MSM40 THROUGH MSM81 DO NOT SUPPORT SCOPE  LOOPING  AND
*         IN MOST CASES WHEN AN  ERROR  IS DETECTED BOTH MSD AND THE MSM
*         MODULE WHICH WAS BEING EXECUTED MUST BE RERUN.
* 
* 
*** 5.0   PARAMETERS
**
*   5.1   PARAMETER REGISTER DEFINITION 
* 
*         THE FOLLOWING PARAMETERS ARE USED BY MSM: 
*              (ALL PARAMETER VALUES ARE OCTAL) 
* 
*         P0 - XXXX - UPPER 12 BITS OF ADDRESS TO BE USED FOR DATA
*                     TESTING.
* 
*         P1 - XXXX - LOWER 12 BITS OF ADDRESS TO BE USED FOR DATA
*                     TESTING.
* 
*         P2 - XXXX - UPPER 12 BITS OF MEMORY MAXIMUM ADDRESS.
*              0377 - 1 MILLION WORDS 
*              0777 - 2 MILLION WORDS 
*              1377 - 3 MILLION WORDS 
*              1777 - 4 MILLION WORDS 
*              2377 - 5 MILLION WORDS 
*              2777 - 6 MILLION WORDS 
*              3777 - 8 MILLION WORDS 
*              5777 - 12 MILLION WORDS
*              7777 - 16 MILLION WORDS
* 
*         P3 - 0000 - PAUSE IN MODULE 40 TO START MSD RUNNING.
*              XXXX - DO NOT PAUSE IN MODULE 40.
* 
*         P4 - 0000 - USE 60 BIT CM WORD FORMAT FOR DMA TRANSFERS.
*              XXXX - IF NON-ZERO USE 64 BIT CM WORD FORMAT FOR DMA 
*                     TRANSFERS.
* 
*         P5 - P8 -   NOT USED
* 
*         P9 - XXXX - PAUSE IN MODULE 00 FOR SETTING OF CLOCK MARGINS.
*              0000 - DO NOT PAUSE IN MODULE 00.
* 
*   5.2   PARAMETER REGISTER USAGE
* 
*         MODULE      P0  P1  P2  P3  P4  P5  P6  P7  P8  P9
*         ------      --  --  --  --  --  --  --  --  --  --
*         MSM00               X                           X 
*         MSM01 
*         MSM02 
*         MSM03 
*         MSM04 
*         MSM05 
*         MSM07 
*         MSM09 
*         MSM11 
*         MSM12 
*         MSM13 
*         MSM14 
*         MSM15 
*         MSM17 
*         MSM19       X   X 
*         MSM20       X   X 
*         MSM21               X 
*         MSM22               X 
*         MSM23       X   X           X 
*         MSM25       X   X           X 
*         MSM27       X   X           X 
*         MSM29       X   X           X 
*         MSM31       X   X           X 
*         MSM33       X   X           X 
*         MSM35               X 
*         MSM36               X 
*         MSM37               X 
*         MSM40 
*         MSM41       X   X 
*         MSM43       X   X 
*         MSM45       X   X 
*         MSM47       X   X 
*         MSM49               X 
*         MSM51               X 
*         MSM52               X 
*         MSM53               X 
*         MSM55               X 
*         MSM57               X 
*         MSM59               X 
*         MSM61               X 
*         MSM62               X 
*         MSM63               X 
*         MSM67       X   X   X 
*         MSM69 
*         MSM70 
*         MSM71 
*         MSM73 
*         MSM75 
*         MSM76               X 
*         MSM77       X   X 
*         MSM79               X 
*         MSM81               X 
* 
*** 6.0   PROGRAM USE 
**
*   6.1   TESTING 
* 
*         THE  MAIN  PURPOSE OF THE TEST MSM IS TO DETERMINE IF THE SNSS
*         OR ESM II SUBSYSTEM IS  FUNCTIONING  CORRECTLY.  THE  TEST  IS
*         DESIGNED TO DETECT FAILURES IN THE  PORT LOGIC, MEMORY CONTROL
*         CIRCUITS, MEMORY ARRAYS, AND THE SDP LOGIC. 
* 
*         TO EXECUTE THE TEST,  THE USER ASSIGNS  THE  DEVICE  WITH  AN 
*IF DEF,MVE,1 
*         ACCESS LEVEL OF  30 (READ  AND WRITE PREALLOCATED AREA ONLY). 
*IF -DEF,MVE,1
*         ACCESS LEVEL OF  3  (READ  AND WRITE PREALLOCATED AREA ONLY). 
*         A  *RUN, MSM*  COMMAND MUST BE PERFORMED  AND  MODULES  MSM00 
*         THROUGH  MSM40  WILL  BE  CHECKED  FOR  CORRECT  ACCESS LEVEL 
*         REQUIRED TO EXECUTE THE MODULE. A MESSAGE WILL BE POSTED THAT 
*IF DEF,MVE,3 
*         INDICATES  MODULE  NOT  EXECUTED  AL  32  REQUIRED.  AT AL=30 
*         MODULES  MSM17  THROUGH  MSM20  WILL BE EXECUTED THEN MODULES 
*         MSM23 THROUGH MSM33 WILL BE EXECUTED IN NUMERICAL ORDER.
*IF -DEF,MVE,3
*         INDICATES MODULE NOT EXECUTED AL 10 REQUIRED. AT AL=3 MODULES 
*         MSM17 THROUGH MSM20 WILL BE EXECUTED THEN MODULES MSM23 
*         THROUGH MSM33 WILL BE EXECUTED IN NUMERICAL ORDER.
* 
*         TO EXECUTE THE TEST,  THE USER ASSIGNS  THE  DEVICE  WITH  AN 
*IF DEF,MVE,1 
*         ACCESS LEVEL  OF 32. A  *RUN, MSM*  COMMAND MUST BE PERFORMED 
*IF -DEF,MVE,1
*         ACCESS LEVEL  OF 10. A  *RUN, MSM*  COMMAND MUST BE PERFORMED 
*         AND MODULES MSM00 THROUGH MSM40 WILL BE EXECUTED IN NUMERICAL 
*         ORDER.  A  PAUSE WILL THEN OCCUR WITH THE MESSAGE PAUSE START 
*         MSD ON SIDE DOOR PORT. IF P3 = 0000  A *GO* WILL THEN EXECUTE 
*         MODULES MSM41 THROUGH MSM81. IF P3 NON-ZERO THE PAUSE MESSAGE 
*         WILL BE DISPLAYED BUT A PAUSE WILL NOT OCCUR. -NOTE IF MSD IS 
*         NOT RUNNING MODULE 41 WILL HANG WAITING FOR MSD.
* 
*         ALL MSM MODULES SUPPORT THE MALET REPEAT MODULE CONDITION.
* 
*   6.2   PARAMETER DRIVEN MODULES
* 
*         MSM  CONTAINS  FOURTEEN  MODULES  WHICH  MAKE  USE  OF   USER 
*         SPECIFIED   PARAMETERS  OF  P0  AND  P1  (SUBSYSTEM  STARTING 
*IF DEF,MVE,1 
*         ADDRESS). AN ACCESS LEVEL OF 32   WILL BE REQUIRED TO UTILIZE 
*IF -DEF,MVE,1
*         ADDRESS). AN ACCESS LEVEL OF TEN  WILL BE REQUIRED TO UTILIZE 
*         THE PARAMETERS IN MODULES MSM19 AND MSM20, AND MODULES  MSM23 
*         THROUGH MSM35.
* 
*         MODULES MSM23 THROUGH MSM33 USE P4 FOR SELECTION  OF  THE  CM 
*         WORD FORMAT TO BE USED FOR DMA TRANSFERS.  IF P4 EQUALS ZERO, 
*         60 BIT  CM WORD FORMAT IS USED.  IF P4 IS NON-ZERO, 64 BIT CM 
*         WORD FORMAT IS USED.
* 
*** 7.0   MESSAGES
**
*   7.1   NORMAL MESSAGES 
* 
*         1. MSMNN -  MODULE NAME 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING.
* 
*         2. MSMNN -  MODULE NAME LC=AAD
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING AND 
*            LOOP COUNT IS EQUAL TO AA (DECIMAL COUNT). 
* 
*         3. MSMNN -  MODULE NAME CHIP=CCB
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING AND 
*            4 BIT BIT MEMORY CHIP IS EQUAL TO CC (OCTAL CHIP). 
* 
*         4. MSMNN -  MODULE NAME COL=CCB 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING AND 
*            4 BIT BIT MEMORY COLUMN IS EQUAL TO CC (OCTAL COLUMN). 
* 
*         5. MSMNN -  MODULE NAME ROW=CCB 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING AND 
*            4 BIT BIT MEMORY ROW IS EQUAL TO CC (OCTAL ROW). 
* 
*         6. MSMNN -  MODULE NAME ADDRESS=EEEEEEB 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING AND 
*            4 BIT BIT MEMORY ADDRESS IS EQUAL TO EEEEEE (OCTAL ADD). 
* 
*         7. MSM17 -  WRITE/READ PORT BUFFER COND=AAB PASS=CCB
* 
*            THIS MESSAGE INDICATES THAT MODULE 17 IS NOW RUNNING AND 
*            CONDITION NUMBER IS EQUAL TO AA (OCTAL CONDITION NUMBER) 
*            AND THE PASS NUMBER FOR THAT CONDITION IS  EQUAL  TO  CC 
*            (OCTAL PASS COUNT).
* 
*         8. MSMNN -  MODULE NAME ADD=EEEEEEEEB DATA=FFFFB
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING AND 
*            ADDRESS IS EQUAL  TO  EEEEEEEE (OCTAL SUBSYSTEM ADDRESS) 
*            AND THE 12 BIT DATA PATTERN IS EQUAL TO FFFF (OCTAL).
* 
*         9. MSMNN -  MODULE NAME ADD=EEEEEEEEB 
* 
*            THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING AND 
*            ADDRESS IS EQUAL TO EEEEEEEE (OCTAL SUBSYSTEM ADDRESS).
* 
*        10.  XX  PAUSE START MSD00 RUNNING ON SIDE DOOR PORT XX
*             XX      WHEN MSD05 IS RUNNING GO TO CONTINUE    XX
*             XX      P3 NON-ZERO THE PAUSE WILL NOT OCCUR    XX
* 
*            THIS MESSAGE INDICATES THAT MODULE 40 HAS  CLEARED  THE
*            4 BIT FLAG REGISTER AND MSD00 SHOULD BE STARTED ON  THE
*            SIDE DOOR PORT BEFORE CONTINUING MSM. IF THE P3 MESSAGE
*            IS DISPLAYED MODULE 40 WILL NOT PAUSE.  - NOTE-  IF MSD
*            IS NOT RUNNING AT THIS TIME MODULE 41 WILL HANG WAITING
*            FOR MSD. 
* 
*        11.  XX   PAUSE START MSD71 ON SIDE DOOR PORT TO   XX
*             XX  SET CLOCK MARGINS.  WHEN MSD IS AT PAUSE  XX
*             XX               GO TO CONTINUE               XX
* 
*            THIS MESSAGE INDICATES THAT MODULE 00 HAS  P9  SET  AND
*            ALLOWS CLOCK MARGINS TO BE SET BY MSD71. 
* 
*   7.2   ERROR FORMAT
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY MSM00 TO REPORT 
*         PARAMETER ERRORS TO THE USER. 
* 
*         00
*         01
*         02  MSM00 PARAMETER -P0- GREATER THAN PARAMETER -P2-
*         03  MSM00   PARAMETER -P2- ILLEGAL CORRECT AND RERUN
*         04  MSM00   P0 = AAAAB  P2 = AAAAB
*         05  P2 = 0377 FOR 1 MILLION WORDS 
*         06  P2 = 0777 FOR 2 MILLION WORDS 
*         07  P2 = 1377 FOR 3 MILLION WORDS 
*         10  P2 = 1777 FOR 4 MILLION WORDS 
*         11  P2 = 2377 FOR 5 MILLION WORDS 
*         12  P2 = 2777 FOR 6 MILLION WORDS 
*         13  P2 = 3777 FOR 8 MILLION WORDS 
*         14  P2 = 5777 FOR 12 MILLION WORDS
*         15  P2 = 7777 FOR 16 MILLION WORDS
* 
*         WHERE-
*         AAAA  = CONTENTS OF PARAMETER REGISTERS.
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY MSM TO REPORT PRODUCT 
*         OVERLAY ERRORS TO THE USER WHEN TESTING THE SUBSYSTEM.
* 
*         00  MSM - STORNET/ESM II SUBSYSTEM MEMORY TEST
*         01  MSMNN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  LSF=GGGGB 
*         05  WC=PPPPB  WT=WWWWB
*         06
*         07  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         11  IB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         12  OB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         13
*         14
*         15
*         16  NUMBER OF CM BYTES TRANSFERED = TTTTB 
*         17  OPERATION STAT = OOOOOOOOB  ERR STAT = EEEEEEEEB
*         20               SUBSYSTEM STATUS = SSSB
*         21
*         22
*         23  ------------------------------------------------
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*         GGGG  = LAST STATUS FUNCTION ISSUED TO THE SUBSYSTEM. 
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         PPPP  = WORD COUNT DURING LAST DATA TRANSFER. 
*         BBBB  = CONTENTS OF B REGISTER. 
*         AAAA  = CONTENTS OF DATA BUFFER.
*         EEEEEEEE  = LAST ERROR STATUS OBTAINED FROM THE DMA IF IN CIO.
*         OOOOOOOO  = LAST OPERATION STATUS OBTAINED FROM THE DMA IF IN CIO.
*         SSSS  = LAST STATUS OBTAINED FROM SUBSYSTEM.
*         TTTT  = NUMBER OF CM BYTES TRANSFERRED ON LAST DMA OPERATION. 
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*                 THE DMA FUNCTION WILL BE IN THE FORMAT OF 01XXB.
* 
*                 100B = DMA FUNCTION OF 8000H OR MASTER CLEAR. 
*                 101B = DMA FUNCTION OF 8200H OR CLEAR T REGISTERS 
*                 102B = DMA FUNCTION OF 8400H OR START DMA INPUT 
*                 103B = DMA FUNCTION OF 8600H OR START DMA OUTPUT
*                 104B = DMA FUNCTION OF 8800H OR CLEAR DMA MODE
*                 106B = DMA FUNCTION OF 8C00H OR CLEAR TEST MODE 
*                 107B = DMA FUNCTION OF 8C00H OR SET TEST MODE 
*                 110B = DMA FUNCTION OF 9000H OR READ CONTROL REGISTER 
*                 111B = DMA FUNCTION OF 9200H OR WRITE CONTROL REGISTER
*                 112B = DMA FUNCTION OF 9400H OR READ ERROR REGISTER 
*                 114B = DMA FUNCTION OF 9800H OR READ OPER REGISTER
*                 116B = DMA FUNCTION OF 9C00H OR READ T REGISTER 
*                 117B = DMA FUNCTION OF 9E00H OR WRITE T PRIME REGISTER
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  MSM  TO  REPORT 
*         SUBSYSTEM MODULE DETECTED ERRORS DURING 18 BIT OPERATIONS  TO 
*         THE USER. 
* 
*         00  MSM - STORNET/ESM II SUBSYSTEM MEMORY TEST
*         01  MSMNN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  LSF=GGGGB 
*         05  WC=PPPPB  WT=WWWWB
*         06
*         07  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         11  IB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         12  OB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         13
*         14  MSMNN SUBSYSTEM STATUS ERROR ACT=SSSSB EXT=RRRRB
*         15      18 BIT FLAG REGISTER  DATA=QQQQQQQQB
*         16
*         17  NUMBER OF CM BYTES TRANSFERED = TTTTB 
*         20  OPERATION STAT = OOOOOOOOB  ERR STAT = EEEEEEEEB
*         21               SUBSYSTEM STATUS = SSSB
*         22
*         23  ------------------------------------------------
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*         GGGG  = LAST STATUS FUNCTION ISSUED TO THE SUBSYSTEM. 
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         PPPP  = WORD COUNT DURING LAST DATA TRANSFER. 
*         BBBB  = CONTENTS OF B REGISTER. 
*         RRRR  = EXPECTED STATUS FROM SUBSYSTEM. 
*         SSSS  = LAST STATUS OBTAINED FROM SUBSYSTEM.
*         TTTT  = NUMBER OF CM BYTES TRANSFERRED ON LAST DMA OPERATION. 
*         AAAA  = CONTENTS OF DATA BUFFER.
*         EEEEEEEE  = LAST ERROR STATUS OBTAINED FROM THE DMA.
*         OOOOOOOO  = LAST OPERATION STATUS OBTAINED FROM THE DMA.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*                 THE DMA FUNCTION WILL BE IN THE FORMAT OF 01XXB.
* 
*                 100B = DMA FUNCTION OF 8000H OR MASTER CLEAR. 
*                 101B = DMA FUNCTION OF 8200H OR CLEAR T REGISTERS 
*                 102B = DMA FUNCTION OF 8400H OR START DMA INPUT 
*                 103B = DMA FUNCTION OF 8600H OR START DMA OUTPUT
*                 104B = DMA FUNCTION OF 8800H OR CLEAR DMA MODE
*                 106B = DMA FUNCTION OF 8C00H OR CLEAR TEST MODE 
*                 107B = DMA FUNCTION OF 8C00H OR SET TEST MODE 
*                 110B = DMA FUNCTION OF 9000H OR READ CONTROL REGISTER 
*                 111B = DMA FUNCTION OF 9200H OR WRITE CONTROL REGISTER
*                 112B = DMA FUNCTION OF 9400H OR READ ERROR REGISTER 
*                 114B = DMA FUNCTION OF 9800H OR READ OPER REGISTER
*                 116B = DMA FUNCTION OF 9C00H OR READ T REGISTER 
*                 117B = DMA FUNCTION OF 9E00H OR WRITE T PRIME REGISTER
*         QQQQQQQQ  = DATA WORD FOR 18 BIT FLAG REGISTER
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  MSM  TO  REPORT 
*         SUBSYSTEM MODULE DETECTED ERRORS DURING 4 BIT  OPERATIONS  TO 
*         THE USER. 
* 
*         00  MSM - STORNETESM II SUBSYSTEM MEMORY TEST 
*         01  MSMNN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  LSF=GGGGB 
*         05  WC=PPPPB  WT=WWWWB
*         06
*         07  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         11  IB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         12  OB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         13
*         14  MSMNN SUBSYSTEM STATUS ERROR ACT=SSSSB EXT=RRRRB
*         15              ADDRESS=MMMMMMMB    DATA=UUB
*         16      4 BIT FLAG REGISTER CHIP=JJB COL=KKB ROW=LLB
*         17  NUMBER OF CM BYTES TRANSFERED = TTTTB 
*         20  OPERATION STAT = OOOOOOOOB  ERR STAT = EEEEEEEEB
*         21               SUBSYSTEM STATUS = SSSB
*         22
*         23  ------------------------------------------------
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*         GGGG  = LAST STATUS FUNCTION ISSUED TO THE SUBSYSTEM. 
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         PPPP  = WORD COUNT DURING LAST DATA TRANSFER. 
*         BBBB  = CONTENTS OF B REGISTER. 
*         AAAA  = CONTENTS OF DATA BUFFER.
*         EEEEEEEE  = LAST ERROR STATUS OBTAINED FROM THE DMA.
*         OOOOOOOO  = LAST OPERATION STATUS OBTAINED FROM THE DMA.
*         SSSS  = LAST STATUS OBTAINED FROM SUBSYSTEM.
*         TTTT  = NUMBER OF CM BYTES TRANSFERRED ON LAST DMA OPERATION. 
*         RRRR  = EXPECTED STATUS FROM SUBSYSTEM. 
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*                 THE DMA FUNCTION WILL BE IN THE FORMAT OF 01XXB.
* 
*                 100B = DMA FUNCTION OF 8000H OR MASTER CLEAR. 
*                 101B = DMA FUNCTION OF 8200H OR CLEAR T REGISTERS 
*                 102B = DMA FUNCTION OF 8400H OR START DMA INPUT 
*                 103B = DMA FUNCTION OF 8600H OR START DMA OUTPUT
*                 104B = DMA FUNCTION OF 8800H OR CLEAR DMA MODE
*                 106B = DMA FUNCTION OF 8C00H OR CLEAR TEST MODE 
*                 107B = DMA FUNCTION OF 8C00H OR SET TEST MODE 
*                 110B = DMA FUNCTION OF 9000H OR READ CONTROL REGISTER 
*                 111B = DMA FUNCTION OF 9200H OR WRITE CONTROL REGISTER
*                 112B = DMA FUNCTION OF 9400H OR READ ERROR REGISTER 
*                 114B = DMA FUNCTION OF 9800H OR READ OPER REGISTER
*                 116B = DMA FUNCTION OF 9C00H OR READ T REGISTER 
*                 117B = DMA FUNCTION OF 9E00H OR WRITE T PRIME REGISTER
*         MMMMMMM  = 4 BIT FLAG REGISTER ADDRESS USED FOR COMMAND.
*         UU  = 4 BIT FLAG REGISTER DATA WORD USED FOR COMMAND. 
*         JJ  =  4 BIT FLAG REGISTER CHIP 
*         KK  =  4 BIT FLAG REGISTER COLUMN 
*         LL  =  4 BIT FLAG REGISTER ROW
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  MSM  TO  REPORT 
*         SUBSYSTEM MODULE DETECTED ERRORS DURING MEMORY OPERATIONS  TO 
*         THE USER. 
* 
*         00  MSM - STORNET/ESM II SUBSYSTEM MEMORY TEST
*         01  MSMNN - (M-----------------------T) 
*         02     ABORTED ON (C-------------------M) 
*         03  (E------------------------------M)
*         04  EC=XXXXB  EA=YYYYB  LF=FFFFB  LSF=GGGGB 
*         05  WC=PPPPB  WT=WWWWB
*         06
*         07  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         11  IB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         12  OB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         13
*         14          STARTING ADDRESS = HHHHHHHHB
*         15  MEMORY STARTING CHIP=JJB COL=KKKB ROW=LLLB SCN=MMB
*                               OR
*         15      BANK=IIB CHIP=JJB COL=KKKB ROW=LLLB SCN=MMB 
*         16  NUMBER OF CM BYTES TRANSFERED = TTTTB 
*         17  OPERATION STAT = OOOOOOOOB  ERR STAT = EEEEEEEEB
*         20               SUBSYSTEM STATUS = SSSB
*         21
*         22
*         23  --------------------------------------------------
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURRED.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*         GGGG  = LAST STATUS FUNCTION ISSUED TO THE SUBSYSTEM. 
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         PPPP  = WORD COUNT DURING LAST DATA TRANSFER. 
*         BBBB  = CONTENTS OF B REGISTER. 
*         AAAA  = CONTENTS OF DATA BUFFER.
*         EEEEEEEE  = LAST ERROR STATUS OBTAINED FROM THE DMA.
*         OOOOOOOO  = LAST OPERATION STATUS OBTAINED FROM THE DMA.
*         SSSS  = LAST STATUS OBTAINED FROM SUBSYSTEM.
*         TTTT  = NUMBER OF CM BYTES TRANSFERRED ON LAST DMA OPERATION. 
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*                 THE DMA FUNCTION WILL BE IN THE FORMAT OF 01XXB.
* 
*                 100B = DMA FUNCTION OF 8000H OR MASTER CLEAR. 
*                 101B = DMA FUNCTION OF 8200H OR CLEAR T REGISTERS 
*                 102B = DMA FUNCTION OF 8400H OR START DMA INPUT 
*                 103B = DMA FUNCTION OF 8600H OR START DMA OUTPUT
*                 104B = DMA FUNCTION OF 8800H OR CLEAR DMA MODE
*                 106B = DMA FUNCTION OF 8C00H OR CLEAR TEST MODE 
*                 107B = DMA FUNCTION OF 8C00H OR SET TEST MODE 
*                 110B = DMA FUNCTION OF 9000H OR READ CONTROL REGISTER 
*                 111B = DMA FUNCTION OF 9200H OR WRITE CONTROL REGISTER
*                 112B = DMA FUNCTION OF 9400H OR READ ERROR REGISTER 
*                 114B = DMA FUNCTION OF 9800H OR READ OPER REGISTER
*                 116B = DMA FUNCTION OF 9C00H OR READ T REGISTER 
*                 117B = DMA FUNCTION OF 9E00H OR WRITE T PRIME REGISTER
*         HHHHHHHH  = MEMORY STARTING ADDRESS USED FOR COMMAND. 
*         II  = MEMORY STARTING BANK IF ESM II. 
*         JJ  = MEMORY STARTING CHIP USED FOR COMMAND.
*         KKK  = MEMORY STARTING ROW USED FOR COMMAND.
*         LLL  = MEMORY STARTING COLUMN USED FOR COMMAND. 
*         MM  = MEMORY STARTING SCAN USED FOR COMMAND.
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  MSM  TO  REPORT 
*         SUBSYSTEM READ/WRITE (PPU) DATA COMPARE ERRORS TO THE USER. 
* 
*         00  MSM - STORNET/ESM II SUBSYSTEM MEMORY TEST
*         01  MSMNN - (M-----------------------T) 
*         02
*         03  ABORTED ON DATA COMPARE ERROR 
*         04          WORD  MMMMB 
*         05
*         06  EC=XXXXB  EA=YYYYB  LF=FFFFB  LSF=GGGGB 
*         07  WC=PPPPB  WT=WWWWB
*         10  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         11  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         12  IB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         13  OB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         14          STARTING ADDRESS = HHHHHHHHB
*         15  MEMORY STARTING CHIP=JJB COL=KKKB ROW=LLLB SCN=MMB
*                               OR
*         15      BANK=IIB CHIP=JJB COL=KKKB ROW=LLLB SCN=MMB 
*         16  NUMBER OF CM BYTES TRANSFERED = TTTTB 
*         17  OPERATION STAT = OOOOOOOOB  ERR STAT = EEEEEEEEB
*         20               SUBSYSTEM STATUS = SSSB
*         21
*         22
*         23  --------------------------------------------------
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         MMMM  = WORD IN BUFFER AT WHICH ERROR OCCURRED. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         YYYY  = THE EA REGISTER WHEN THE ERROR OCCURRED.
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*         GGGG  = LAST STATUS FUNCTION ISSUED TO THE SUBSYSTEM. 
*         WWWW  = WORDS TRANSFERRED DURING LAST DATA TRANSFER.
*         PPPP  = WORD COUNT DURING LAST DATA TRANSFER. 
*         BBBB  = CONTENTS OF B REGISTER. 
*         AAAA  = CONTENTS OF DATA BUFFER.
*         EEEEEEEE  = LAST ERROR STATUS OBTAINED FROM THE DMA.
*         OOOOOOOO  = LAST OPERATION STATUS OBTAINED FROM THE DMA.
*         SSSS  = LAST STATUS OBTAINED FROM SUBSYSTEM.
*         TTTT  = NUMBER OF CM BYTES TRANSFERRED ON LAST DMA OPERATION. 
*         FFFF  = LAST FUNCTION ISSUED TO THE SUBSYSTEM OR DMA. 
*                 THE DMA FUNCTION WILL BE IN THE FORMAT OF 01XXB.
* 
*                 100B = DMA FUNCTION OF 8000H OR MASTER CLEAR. 
*                 101B = DMA FUNCTION OF 8200H OR CLEAR T REGISTERS 
*                 102B = DMA FUNCTION OF 8400H OR START DMA INPUT 
*                 103B = DMA FUNCTION OF 8600H OR START DMA OUTPUT
*                 104B = DMA FUNCTION OF 8800H OR CLEAR DMA MODE
*                 106B = DMA FUNCTION OF 8C00H OR CLEAR TEST MODE 
*                 107B = DMA FUNCTION OF 8C00H OR SET TEST MODE 
*                 110B = DMA FUNCTION OF 9000H OR READ CONTROL REGISTER 
*                 111B = DMA FUNCTION OF 9200H OR WRITE CONTROL REGISTER
*                 112B = DMA FUNCTION OF 9400H OR READ ERROR REGISTER 
*                 114B = DMA FUNCTION OF 9800H OR READ OPER REGISTER
*                 116B = DMA FUNCTION OF 9C00H OR READ T REGISTER 
*                 117B = DMA FUNCTION OF 9E00H OR WRITE T PRIME REGISTER
*         HHHHHHHH  = MEMORY STARTING ADDRESS USED FOR COMMAND. 
*         II  = MEMORY STARTING BANK IF ESM II. 
*         JJ  = MEMORY STARTING CHIP USED FOR COMMAND.
*         KKK  = MEMORY STARTING ROW USED FOR COMMAND.
*         LLL  = MEMORY STARTING COLUMN USED FOR COMMAND. 
*         MM  = MEMORY STARTING SCAN USED FOR COMMAND.
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  MSM  TO  REPORT 
*         SUBSYSTEM MODULE DETECTED ERRORS DURING ERROR LOGGING TO THE
*         USER. 
* 
*         00  MSM - STORNET/ESM II SUBSYSTEM MEMORY TEST
*         01  MSMNN - (M-----------------------T) 
*         02
*         03  MSMNN WRITE ABORT ON ERROR LOGGING
*         04  (E------------------------------M)
*         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  IB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         12  OB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         13          STARTING ADDRESS = HHHHHHHHB
*         14  MEMORY STARTING CHIP=JJB COL=KKKB ROW=LLLB SCN=MMB
*                               OR
*         14      BANK=IIB CHIP=JJB COL=KKKB ROW=LLLB SCN=MMB 
*         15
*         16
*         17
*         20
*         21
*         22
*         23  --------------------------------------------------
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         BBBB  = CONTENTS OF B REGISTER. 
*         AAAA  = CONTENTS OF DATA BUFFER.
*         HHHHHHHH  = MEMORY STARTING ADDRESS USED FOR COMMAND. 
*         II  = MEMORY STARTING BANK IF ESM II. 
*         JJ  = MEMORY STARTING CHIP USED FOR COMMAND.
*         KKK  = MEMORY STARTING ROW USED FOR COMMAND.
*         LLL  = MEMORY STARTING COLUMN USED FOR COMMAND. 
*         MM  = MEMORY STARTING SCAN USED FOR COMMAND.
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY MSM TO REPORT STORNET 
*         SUBSYSTEM MODULE DETECTED ERRORS DURING FORCED ERRORS TO THE
*         USER. 
* 
*         00  MSM - STORNET/ESM II SUBSYSTEM MEMORY TEST
*         01  MSMNN - (M-----------------------T) 
*         02
*         03  MSMNN WRITE ABORT ON FORCED ERRORS
*         04  (E------------------------------M)
*         05               SUBSYSTEM STATUS = SSSB
*         06
*         07  B0-B7  =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         10  B8-B15 =  BBBB BBBB BBBB BBBB BBBB BBBB BBBB BBBB 
*         11
*         12  IB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         13  OB (0-7)  AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 
*         14          STARTING ADDRESS = HHHHHHHHB
*         15  MEMORY STARTING CHIP=JJB COL=KKKB ROW=LLLB SCN=MMB
*                               OR
*         15      BANK=IIB CHIP=JJB COL=KKKB ROW=LLLB SCN=MMB 
*         16
*         17
*         20
*         21
*         22
*         23  --------------------------------------------------
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         M---T = MODULE TITLE. 
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         BBBB  = CONTENTS OF B REGISTER. 
*         AAAA  = CONTENTS OF DATA BUFFER.
*         HHHHHHHH  = MEMORY STARTING ADDRESS USED FOR COMMAND. 
*         II  = MEMORY STARTING BANK IF ESM II. 
*         JJ  = MEMORY STARTING CHIP USED FOR COMMAND.
*         KKK  = MEMORY STARTING ROW USED FOR COMMAND.
*         LLL  = MEMORY STARTING COLUMN USED FOR COMMAND. 
*         MM  = MEMORY STARTING SCAN USED FOR COMMAND.
*         SSSS  = LAST STATUS OBTAINED FROM SUBSYSTEM.
* 
* 
*   7.3   ERROR CODES 
* 
*         0001    INCORRECT SUBSYSTEM STATUS. STATUS WAS TAKEN AFTER AN 
*         0002    4 BIT FLAG REGISTER OPERATION AND DID NOT COMPARE 
*         0003    WITH EXPECTED. THESE ERROR CODES ARE USED INTERNALLY
*                 SO THE ERROR PROCESSORS WILL DECODE THE CORRECT 
*                 ADDRESS AND DATA BITS FROM THE CORRECT REGISTERS FOR
*                 ERROR DISPLAYS. 
* 
*         0004    INCORRECT SUBSYSTEM STATUS. STATUS WAS TAKEN AFTER AN 
*                 18 BIT FLAG REGISTER OPERATION AND DID NOT COMPARE
*                 WITH EXPECTED.
* 
*         0005    INCORRECT SUBSYSTEM STATUS. STATUS WAS TAKEN AFTER A
*                 WRITEPB COMMAND AND DID NOT COMPARE WITH EXPECTED.
* 
*         0006    INCORRECT SUBSYSTEM STATUS. STATUS WAS TAKEN AFTER AN 
*                 FORCED ERROR CONDITION AND MEMORY ADDRESS PARITY WAS
*                 NOT 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
*         SNSS   - STORNET SUBSYSTEM MEMORY 
*         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.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 37B AND 
*         36B.   THESE REFLECT A 4M MEMORY.  FOR A 16K MEMORY THESE 
*         MAY BE CHANGED TO 177B AND 176B.
* 
* 
* ******************************************************************* 
*                  MSM AND MSD RELATIONSHIP                         * 
* ******************************************************************* 
*                           **                                      * 
*          MSM              **                  MSD                 * 
*                           **                                      * 
* ******************************************************************* 
* **********************          *********************************** 
*  WRITES FUNCTION TO  *          * - START -  MAX ADDRESS REG WILL * 
*  4 BIT FLAG REGISTER *          * BE SET TO 37B 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 36B      * 
*        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 37B      * 
*          I                      *          ***********            * 
*          I                      * ON AN 07XX FUNC, LEAVE MAX AT   * 
*          I                      * 36B IF THE REPLY IS NEGATIVE,   * 
*          I                      * 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 
* 
   MODULE MSM00,DESM(171,211)LOCK 
*** MSM00 - PARAMETER CHECK AND PAUSE MODULE TO SET CLOCK MARGINS 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         CHECK PARAMETER FOR LEGAL VALUES AND PAUSE IF PARAMETER IS
*         SET TO ALLOW CLOCK MARGINS TO BE SET WITH MSD MODULE 71.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  IF P9 NON-ZERO POST MESSAGE START MSD71 RUNNING 
*             ON SIDE DOOR PORT AND PAUSE.
*         4.  WAIT FOR *GO* TO CONTINUE TESTING IF P9 NON-ZERO. 
*         5.  IF *GO* GIVEN OR P9 EQUAL ZERO GO TO STEP 6.
*         6.  CHECK PARAMETER P0 FOR BEING GREATER THAN P2 AND
*             DISPLAY ERRORS IF ENCOUNTERED.
*         7.  CHECK PARAMETER P2 FOR LEGAL VALUES, HALT AND DISPLAY 
*             ERRORS IF ENCOUNTERED.
*         8.  EXIT THE MODULE 
* 
*    1.3  ERRORS REPORTED 
* 
*IF DEF,MVE,1 
*         MSM00 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM00 AL TOO LOW NEEDS AL=10
*         MSM00 PARAMETER -P2- ILLEGAL CORRECT AND  RERUN 
*         MSM00 PARAMETER -P0- GREATER THAN PARAMETER -P2-
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM00 - PARAMETER CHECK/PAUSE SET CLOCK MARGINS 
1  FORMAT MSM00 PARAMETER -P0- GREATER THAN PARAMETER -P2-
2  FORMAT MSM00 PAUSE TO SET CLOCK MARGINS
3  FORMAT MSM00   PARAMETER -P2- ILLEGAL CORRECT AND RERUN
4  FORMAT MSM00   P0 = *OCTB  P2 = *OCTB
*IF DEF,MVE,1 
5  FORMAT MSM00 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM00 ACCESS LEVEL TOO LOW NEEDS AL=10
6  FORMAT  XX   PAUSE START MSD71 ON SIDE DOOR PORT TO   XX 
7  FORMAT  XX  SET CLOCK MARGINS.  WHEN MSD IS AT PAUSE  XX 
10 FORMAT  XX                                            XX 
11 FORMAT  XX               GO TO CONTINUE               XX 
12 FORMAT  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
13 FORMAT  P2 = 0377 FOR 1 MILLION WORDS
14 FORMAT  P2 = 0777 FOR 2 MILLION WORDS
15 FORMAT  P2 = 1377 FOR 3 MILLION WORDS
16 FORMAT  P2 = 1777 FOR 4 MILLION WORDS
17 FORMAT  P2 = 2377 FOR 5 MILLION WORDS
20 FORMAT  P2 = 2777 FOR 6 MILLION WORDS
21 FORMAT  P2 = 3777 FOR 8 MILLION WORDS
22 FORMAT  P2 = 5777 FOR 12 MILLION WORDS 
23 FORMAT  P2 = 7777 FOR 16 MILLION WORDS 
* 
26 B15 = 00D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.32) GOTO 30            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.10) GOTO 30            *CONTINUE 
27 MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 46                          *EXIT 
30 IF(P9.EQ.0) GOTO 40              *IF OPERATOR INTERVENTION DISABLED
   MSG 12 TO LINE 7                 *POST PAUSE MESSAGE 
   MSG 10 TO LINE 10                *POST PAUSE MESSAGE 
   IF(ES.AND.TM.EQ.0) MSG 6 TO LINE 11  *POST PAUSE MESSAGE 
   IF(ES.AND.TM.NE.0) MSG 6 TO PRINT  *PRINT PAUSE MESSAGE
   IF(ES.AND.TM.EQ.0) MSG 7 TO LINE 12  *POST PAUSE MESSAGE 
   IF(ES.AND.TM.NE.0) MSG 7 TO PRINT  *PRINT PAUSE MESSAGE
   IF(ES.AND.TM.EQ.0) MSG 11 TO LINE 13  *POST PAUSE MESSAGE
   IF(ES.AND.TM.NE.0) MSG 11 TO PRINT  *PRINT PAUSE MESSAGE 
   MSG 10 TO LINE 14                *POST PAUSE MESSAGE 
   MSG 12 TO LINE 15                *POST PAUSE MESSAGE 
   PAUSE
   GOTO 46
40 IF(P2.LT.P0) GOTO 42             *PARAMETER P0 ERROR 
   IF(P2.EQ.377) GOTO 46            *1 MILLION WORDS
   IF(P2.EQ.777) GOTO 46            *2 MILLION WORDS
   IF(P2.EQ.1777) GOTO 46           *4 MILLION WORDS
   IF(P2.EQ.3777) GOTO 46           *8 MILLION WORDS
   IF(P2.EQ.7777) GOTO 46           *16 MILLION WORDS 
   GOTO 44
42 IF(P2.LT.P0) MSG 1 TO LINE 2     *PARAMETER P0 ERROR 
   GOTO 45
44 MSG 3 TO LINE 3                  *PARAMETER P2 ERROR 
45 MSG 4 (P0,P2) TO LINE 4
   MSG 13 TO LINE 5 
   MSG 14 TO LINE 6 
   MSG 15 TO LINE 7 
   MSG 16 TO LINE 10
   MSG 17 TO LINE 11
   MSG 20 TO LINE 12
   MSG 21 TO LINE 13
   MSG 22 TO LINE 14
   MSG 23 TO LINE 15
   PICTURE
   HALT 
   BLANK
   GOTO 50
46 EXIT 
50 END 26 
COMPILE   - MSM00 -   PARAMETER CHECK AND PAUSE MODULE TO SET CLOCK MARGINS 
   MODULE MSM01,DESM(171,211)LOCK 
*** MSM01 - 18 BIT FLAG REGISTER OPERATIONS PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FLAG REGISTER OPERATIONS READY/SELECT, SELECTIVE SET, STATUS, 
*         AND SELECTIVE CLEAR WILL BE TESTED IN CONJUNCTION WITH THE 18 
*         BIT FLAG REGISTER.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  18 BIT FLAG REG SELECT CLEAR WITH ALL ONES IN FLAG WORD.
*         5.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         6.  18 BIT FLAG REG STATUS WITH ALL ZEROS IN THE FLAG WORD. 
*         7.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         8.  18 BIT FLAG REG STATUS WITH ALL ONES IN THE FLAG WORD.
*         9.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         10. 18 BIT FLAG REG SELECTIVE SET WITH ALL ONES IN FLAG WORD. 
*         11. 18 BIT FLAG REG STATUS WITH A SLIDING ONE PATTERN IN FLAG 
*             WORD. 
*         12. CHECK LSP STATUS FOR AN ABORT (0001B).
*         13. REPEAT STEPS 11 AND 12 FOR EACH BIT SHIFT POSITION. 
*         14. 18 BIT FLAG REG CLEAR WITH ALL ONES IN FLAG WORD. 
*         15. 18 BIT FLAG REG READY/SELECTS WITH A SLIDING ONE PATTERN. 
*         16. CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         17. 18 BIT FLAG REG READY/SELECTS WITH THE SAME PATTERN AS
*             STEP 15.
*         18. CHECK LSP STATUS FOR AN ABORT (0001B).
*         19. REPEAT STEPS 15-18 FOR ALL BITS IN THE FLAG WORD. 
*         20. REPEAT STEPS 2-19 FOR 10D PASSES. 
*         21. 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.
*         22. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM01 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM01 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM01 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  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B4  = CONDITION NUMBER. 
*         B8  = SLIDING PATTERN COUNTER.
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM01 - 18 BIT FLAG REGISTER OPERATIONS PART I
1  FORMAT MSM01 ERROR(S) = *DECD
3  FORMAT MSM01 18 BIT FLAG REGISTER OPERATIONS I PASS=*DECD
4  FORMAT MSM01 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM01 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM01 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE RDYSL18=1, SELST18=2, STAT18=3, SELCR18=4 
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------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                           *SET CONDITION NUMBER 1 
* 
* -------MODULE TEST
* 
24 GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SELECT CLEAR FLAG REGISTER ALL ONES
* 
26 GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
   B3 = 2                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/4 GOSUB 74   *IF BAD STATUS
* 
* -------STATUS FLAG REGISTER ZEROS/ONES
* 
   B1 = 0                           *SET FLAG WORD
   B2 = 0                           *SET FLAG WORD
   GOSUB 50                         *STATUS SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/4 GOSUB 74   *IF BAD STATUS
   B1 = 77B                         *SET FLAG WORD
   B2 = 7777B                       *SET FLAG WORD
   GOSUB 50                         *STATUS SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/4 GOSUB 74   *IF BAD STATUS
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------SELECTIVE SET FLAG REGISTER ALL ONES 
* 
27 B1 = 77B                         *SET FLAG WORD
   B2 = 7777B                       *SET FLAG WORD
   B4 = 2                           *SET CONDITION NUMBER 2 
   GOSUB 52                         *SELSET SUBROUTINE
* 
* -------STATUS FLAG REGISTER SLIDING ONES
* 
   B1 = 0                           *SET FLAG WORD
   B2 = 1                           *SET FLAG WORD
   B3 = 1                           *SET EXPECTED STATUS
30 GOSUB 50                         *STATUS SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/4 GOSUB 74   *IF BAD STATUS
   GOSUB 62                         *SLIDING PATTERN SUBROUTINE 
   IF(B1.NE.0) GOTO 30              *SLIDING PATTERN NOT DONE 
   IF(B2.NE.0) GOTO 30              *SLIDING PATTERN NOT DONE 
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------SELECTIVE CLEAR FLAG REGISTER ALL ONES 
* 
31 GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
* 
* -------READY SELECT FLAG REGISTER SLIDING ONES
* 
   B1 = 0                           *SET FLAG WORD
   B2 = 1                           *SET FLAG WORD
   B3 = 2                           *SET EXPECTED STATUS
   B4 = 3                           *SET CONDITION NUMBER 3 
   GOSUB 56                         *RDYSEL SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/4 GOSUB 74   *IF BAD STATUS
   GOSUB 56                         *RDYSEL SUBROUTINE
32 B3 = 1                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/4 GOSUB 74   *IF BAD STATUS
   GOSUB 62                         *SLIDING PATTERN ROUTINE
   IF(B1.NE.0) GOTO 32              *SLIDING PATTERN NOT DONE 
   IF(B2.NE.0) GOTO 32              *SLIDING PATTERN NOT DONE 
   GOSUB 47                         *CHECK REPEAT CONDITION 
   IF(ES.AND.CM.EQ.0) MSG 3 (B11) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   GOTO 22 WHILE (B11+1.LT.10D)     *DO TEN PASSES
* 
* -------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 22
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 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOSUB 55                         *RESERVE SUBROUTINE 
   IF(B4.EQ.1) GOTO 26              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 27              *REPEAT CONDITION 2 
   IF(B4.EQ.3) GOTO 31              *REPEAT CONDITION 3 
   GOTO 44                          *CHECK REPEAT MODULE
* 
* -------STATUS 18 BIT FLAG REGISTER
* 
50 B14 = STAT18                     *COMMAND NUMBER 
   FLAG REGISTER 18BIT STATUS B1 B2, ABT 74   *STATUS FLAG REGISTER 
   RETURN 
* 
* -------SELECTIVE SET 18 BIT FLAG REGISTER 
* 
52 B14 = SELST18                    *COMMAND NUMBER 
   FLAG REGISTER 18BIT SELSET B1 B2, ABT 74   *SELECT SET FLAG REGISTER 
   RETURN 
* 
* -------SELECTIVE CLEAR 18 BIT FLAG REGISTER ALL ONES
* 
54 B1 = 77B                         *SET FLAG WORD
   B2 = 7777B                       *SET FLAG WORD
   B14 = SELCR18                    *COMMAND NUMBER 
   FLAG REGISTER 18BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER 
   RETURN 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------READY SELECT 18 BIT FLAG REGISTER
* 
56 B14 = RDYSL18                    *COMMAND NUMBER 
   FLAG REGISTER 18BIT RDYSEL B1 B2, ABT 74   *READY SELECT FLAG REGISTER 
   RETURN 
* 
* -------SLIDING ONES PATTERN SUBROUTINE
* 
62 IF(B1.NE.0) GOTO 64
   B2 = B2.LS.1                     *SLIDING PATTERN
   GOTO 66 WHILE (B8+1.LT.11D)      *LOOP FOR ALL 12 BITS 
   B1 = 1 
   B2 = 0 
   B8 = 0 
   GOTO 66                          *DO UPPER 6 BITS
64 B2 = B2.LS.1                     *SLIDING PATTERN
   GOTO 66 WHILE (B8+1.LT.5D)       *LOOP FOR ALL 6 BITS
   B1 = 0 
   B2 = 0                           *CLEAR B1/B2 FOR COMPLETE 
66 RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 44                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM01 -   18 BIT FLAG REGISTER OPERATIONS PART ONE
   MODULE MSM02,DESM(171,211)LOCK 
*** MSM02 - 18 BIT FLAG REGISTER OPERATIONS PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FLAG REGISTER OPERATIONS SELECTIVE SET, STATUS, AND SELECTIVE 
*         CLEAR WILL BE TESTED IN CONJUNCTION WITH THE 18 BIT FLAG
*         REGISTER. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  18 BIT FLAG REG SELECTIVE SET WITH ALL ONE BITS IN THE
*             FLAG WORD.
*         5.  18 BIT FLAG REG SELECTIVE CLEAR WITH ALL ONE BITS IN THE
*             FLAG WORD.
*         6.  18 BIT FLAG REG STATUS WITH ALL ONE BITS IN THE FLAG WORD.
*         7.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         8.  REPEAT STEPS 3-7 IF REPEAT CONDITION. 
*         9.  18 BIT FLAG REG SELECTIVE CLEAR.
*         10. 18 BIT FLAG REG SELECTIVE SET WITH SLIDING ONE PATTERN. 
*         11. 18 BIT FLAG REG STATUS WITH SLIDING ONE PATTERN.
*         12. REPEAT STEP 11 WITH A SLIDING ONE PATTERN IN THE FLAG WORD
*             AND THAT AN ABORT STATUS FROM LSP IS PRESENT WHEN A "1" 
*             BIT IS PRESENT IN THE FLAG REGISTER AND AN ACCEPT STATUS IS 
*             PRESENT "0" BIT IS PRESENT IN THE FLAG REGISTER.
*         13. REPEAT STEPS 9-11 FOR ALL BIT POSITIONS.
*         14. RESET PATTERN TO 0001 AND REPEAT STEPS 9-13 IF REPEAT 
*             CONDITION.
*         15. 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.
*         16. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM02 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM02 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM02 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  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B4  = CONDITION NUMBER. 
*         B5  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B6  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B8  = SLIDING PATTERN COUNTER.
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM02 - 18 BIT FLAG REGISTER OPERATIONS PART II 
1  FORMAT MSM02 ERROR(S) = *DECD
3  FORMAT MSM02 18 BIT FLAG REGISTER OPERATIONS II PASS=*DECD 
4  FORMAT MSM02 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM02 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM02 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE RDYSL18=1, SELST18=2, STAT18=3, SELCR18=4 
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=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 
* 
* -------MODULE TEST
* 
22 GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SELECTIVE SET FLAG REGISTER ALL ONES 
* 
33 B1 = 77B                         *SET FLAG WORD
   B2 = 7777B                       *SET FLAG WORD
   B4 = 1                           *SET CONDITION NUMBER 1 
   GOSUB 52                         *SELSET SUBROUTINE
* 
* -------SELECTIVE CLEAR FLAG REGISTER ALL ONES 
* 
   GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
* 
* -------STATUS FLAG REGISTER ALL ONES
* 
   B1 = 77B                         *SET FLAG WORD
   B2 = 7777B                       *SET FLAG WORD
   B3 = 2                           *SET EXPECTED STATUS
   GOSUB 50                         *STATUS SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/4 GOSUB 74   *IF BAD STATUS
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------SELECTIVE CLEAR FLAG REGISTER ALL ONES 
* 
34 GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
* 
* -------SELECTIVE SET/STATUS FLAG REGISTER SLIDING ONES
* 
   B1 = 0                           *INITIALIZE PATTERNS
   B2 = 1 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B5 = B1                          *INITIALIZE PATTERNS
   B6 = B2
36 GOSUB 56                         *SELSET SUBROUTINE
40 GOSUB 50                         *STATUS SUBROUTINE
   B3 = 1                           *SET EXPECTED STATUS
   IF(SB(0).EQ.B3) GOTO 42          *IF ABORT TEST IF PATTERNS SAME 
   B3 = 2                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/4 GOSUB 74   *IF BAD STATUS
41 GOSUB 62                         *SLIDING PATTERN ROUTINE
   IF(B1.NE.0) GOTO 40              *SLIDING PATTERN NOT DONE 
   IF(B2.NE.0) GOTO 40              *SLIDING PATTERN NOT DONE 
   GOSUB 60                         *SELCLR SUBROUTINE
   B5 = B5.LS.1                     *SLIDE THE PATTERN
   B6 = B6.LS.1 
   B1 = 0                           *RESET TEST PATTERN 
   B2 = 1 
   IF(B6.EQ.100) GOTO 44            *CONTINUE 
   IF(B5.NE.1) GOTO 40              *NEXT PATTERN 
   B5 = 1                           *SET PATTERN FOR UPPER 6 BITS 
   B6 = 0 
   GOTO 36
42 IF(B5.EQ.0) GOTO 43
   IF(B5.NE.B1) ERROR 1/4 GOSUB 74   *IF BAD STATUS 
43 IF(B6.NE.B2) ERROR 1/4 GOSUB 74   *IF BAD STATUS 
   GOTO 41                          *EXPECTED ABORT DATA THE SAME 
   GOSUB 47                         *CHECK REPEAT CONDITION 
44 IF(ES.AND.CM.EQ.0) MSG 3 (B11) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   GOTO 22 WHILE (B11+1.LT.10D)     *DO TEN PASSES
* 
* -------MODULE REPEAT/EXIT 
* 
45 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 22
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 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOSUB 55                         *RESERVE SUBROUTINE 
   IF(B4.EQ.1) GOTO 33              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 34              *REPEAT CONDITION 2 
   GOTO 45                          *CHECK REPEAT MODULE
* 
* -------STATUS 18 BIT FLAG REGISTER
* 
50 B14 = STAT18                     *COMMAND NUMBER 
   FLAG REGISTER 18BIT STATUS B1 B2, ABT 74   *STATUS FLAG REGISTER 
   RETURN 
* 
* -------SELECTIVE SET 18 BIT FLAG REGISTER 
* 
52 B14 = SELST18                    *COMMAND NUMBER 
   FLAG REGISTER 18BIT SELSET B1 B2, ABT 74   *SELECT SET FLAG REGISTER 
   RETURN 
* 
* -------SELECTIVE CLEAR 18 BIT FLAG REGISTER ALL ONES
* 
54 B1 = 77B                         *SET FLAG WORD
   B2 = 7777B                       *SET FLAG WORD
   B14 = SELCR18                    *COMMAND NUMBER 
   FLAG REGISTER 18BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER 
   RETURN 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------SELECTIVE SET 18 BIT FLAG REGISTER 
* 
56 B14 = SELST18                    *COMMAND NUMBER 
   FLAG REGISTER 18BIT SELSET B5 B6, ABT 74   *SELECT SET FLAG REGISTER 
   RETURN 
* 
* -------SELECTIVE CLEAR 18 BIT FLAG REGISTER 
* 
60 B14 = SELCR18                    *COMMAND NUMBER 
   FLAG REGISTER 18BIT SELCLR B5 B6, ABT 74   *SELECT CLEAR FLAG REGISTER 
   RETURN 
* 
* -------SLIDING ONES PATTERN SUBROUTINE
* 
62 IF(B1.NE.0) GOTO 64
   B2 = B2.LS.1                     *SLIDING PATTERN
   GOTO 66 WHILE (B8+1.LT.11D)      *LOOP FOR ALL 12 BITS 
   B1 = 1 
   B2 = 0 
   B8 = 0 
   GOTO 66                          *DO UPPER 6 BITS
64 B2 = B2.LS.1                     *SLIDING PATTERN
   GOTO 66 WHILE (B8+1.LT.5D)       *LOOP FOR ALL 6 BITS
   B1 = 0 
   B2 = 0                           *CLEAR B1/B2 FOR COMPLETE 
66 RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 45                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM02 -   18 BIT FLAG REGISTER OPERATIONS PART TWO
   MODULE MSM03,DESM(171,211)LOCK 
*** MSM03 - 4 BIT FLAG REGISTER OPERATIONS PART ONE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FLAG REGISTER OPERATIONS READY/SELECT, SELECTIVE SET, STATUS, 
*         AND SELECTIVE CLEAR WILL BE TESTED IN CONJUNCTION WITH THE
*         4 BIT FLAG REGISTER.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECT CLEAR WITH ALL ONES IN FLAG WORD. 
*         5.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         6.  4 BIT FLAG REG STATUS WITH ALL ZEROS IN THE FLAG WORD.
*         7.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         8.  4 BIT FLAG REG STATUS WITH ALL ONES IN THE FLAG WORD. 
*         9.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         10. 4 BIT FLAG REG SELECTIVE SET WITH ALL ONES IN FLAG WORD.
*         11. 4 BIT FLAG REG STATUS WITH A SLIDING ONE PATTERN IN FLAG
*             WORD. 
*         12. CHECK LSP STATUS FOR AN ABORT (0001B).
*         13. REPEAT STEPS 10 AND 11 FOR EACH BIT SHIFT POSITION. 
*         14. 4 BIT FLAG REG CLEAR WITH ALL ONES IN FLAG WORD.
*         15. 4 BIT FLAG REG READY/SELECTS WITH A SLIDING ONE PATTERN.
*         16. CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         17. 4 BIT FLAG REG READY/SELECTS WITH THE SAME PATTERN AS 
*             STEP 15.
*         18. CHECK LSP STATUS FOR AN ABORT (0001B).
*         19. REPEAT STEPS 14-18 FOR ALL BITS IN THE FLAG WORD. 
*         20. 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.
*         21. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM03 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM03 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM03 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  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B4  = CONDITION NUMBER. 
*         B8  = SLIDING PATTERN COUNTER.
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM03 - 4 BIT FLAG REGISTER OPERATIONS PART I 
1  FORMAT MSM03 ERROR(S) = *DECD
3  FORMAT MSM03 4 BIT FLAG REGISTER OPERATIONS I PASS=*DECD 
4  FORMAT MSM03 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM03 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM03 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE RDYSEL4=5, SELSET4=6, STATUS4=7, SELCLR4=10B
   EQUATE ZERSEL4=11B, EQUSTA4=12B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------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 B4 = 1                           *SET CONDITION NUMBER 1 
* 
* -------MODULE TEST
* 
24 GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SELECT CLEAR FLAG REGISTER ALL ONES
* 
26 GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
   B3 = 2                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
* 
* -------STATUS FLAG REGISTER ZEROS/ONES
* 
   B1 = 0                           *SET FLAG WORD
   B2 = 0                           *SET FLAG WORD
   GOSUB 50                         *STATUS SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   B1 = 0                           *SET FLAG WORD
   B2 = 17B                         *SET FLAG WORD
   GOSUB 50                         *STATUS SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------SELECTIVE SET FLAG REGISTER ALL ONES 
* 
27 B1 = 0                           *SET FLAG WORD
   B2 = 17B                         *SET FLAG WORD
   B4 = 2                           *SET CONDITION NUMBER 2 
   GOSUB 52                         *SELSET SUBROUTINE
* 
* -------STATUS FLAG REGISTER SLIDING ONES
* 
   B1 = 0                           *SET FLAG WORD
   B2 = 1                           *SET FLAG WORD
   B3 = 1                           *SET EXPECTED STATUS
30 GOSUB 50                         *STATUS SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 62                         *SLIDING PATTERN SUBROUTINE 
   IF(B1.NE.0) GOTO 30              *SLIDING PATTERN NOT DONE 
   IF(B2.NE.0) GOTO 30              *SLIDING PATTERN NOT DONE 
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------SELECTIVE CLEAR FLAG REGISTER ALL ONES 
* 
31 GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
* 
* -------READY SELECT FLAG REGISTER SLIDING ONES
* 
   B1 = 0                           *SET FLAG WORD
   B2 = 1                           *SET FLAG WORD
   B3 = 2                           *SET EXPECTED STATUS
   B4 = 3                           *SET CONDITION NUMBER 3 
   GOSUB 56                         *RDYSEL SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 56                         *RDYSEL SUBROUTINE
32 B3 = 1                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 62                         *SLIDING PATTERN ROUTINE
   IF(B1.NE.0) GOTO 32              *SLIDING PATTERN NOT DONE 
   IF(B2.NE.0) GOTO 32              *SLIDING PATTERN NOT DONE 
   GOSUB 47                         *CHECK REPEAT CONDITION 
   IF(ES.AND.CM.EQ.0) MSG 3 (B11) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   GOTO 22 WHILE (B11+1.LT.10D)     *DO TEN PASSES
* 
* -------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 22
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 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOSUB 55                         *RESERVE SUBROUTINE 
   IF(B4.EQ.1) GOTO 26              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 27              *REPEAT CONDITION 2 
   IF(B4.EQ.3) GOTO 31              *REPEAT CONDITION 3 
   GOTO 44                          *CHECK REPEAT MODULE
* 
* -------STATUS 4 BIT FLAG REGISTER 
* 
50 B14 = STATUS4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT STATUS B1 B2, ABT 74   *STATUS FLAG REGISTER
   RETURN 
* 
* -------SELECTIVE SET 4 BIT FLAG REGISTER
* 
52 B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B1 B2, ABT 74   *SELECT SET FLAG REGISTER
   RETURN 
* 
* -------SELECTIVE CLEAR 4 BIT FLAG REGISTER ALL ONES 
* 
54 B1 = 0                           *SET FLAG WORD
   B2 = 17B                         *SET FLAG WORD
   B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------READY SELECT 4 BIT FLAG REGISTER 
* 
56 B14 = RDYSEL4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT RDYSEL B1 B2, ABT 74   *READY SELECT FLAG REGISTER
   RETURN 
* 
* -------SLIDING ONES PATTERN SUBROUTINE
* 
62 B2 = B2.LS.1                     *SLIDING PATTERN
   GOTO 66 WHILE (B8+1.LT.3D)       *LOOP FOR ALL 12 BITS 
   B1 = 0 
   B2 = 0                           *CLEAR B1/B2 FOR COMPLETE 
   B8 = 0 
66 RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 44                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM03 -   4 BIT FLAG REGISTER OPERATIONS PART ONE 
   MODULE MSM04,DESM(171,211)LOCK 
*** MSM04 - 4 BIT FLAG REGISTER OPERATIONS PART TWO 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FLAG REGISTER OPERATIONS SELECTIVE SET, STATUS, AND SELECTIVE 
*         CLEAR WILL BE TESTED IN CONJUNCTION WITH THE 4 BIT FLAG 
*         REGISTER. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECTIVE SET WITH ALL ONE BITS IN THE 
*             FLAG WORD.
*         5.  4 BIT FLAG REG SELECTIVE CLEAR WITH ALL ONE BITS IN THE 
*             FLAG WORD.
*         6.  4 BIT FLAG REG STATUS WITH ALL ONE BITS IN THE FLAG WORD. 
*         7.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         8.  REPEAT STEPS 3-7 IF REPEAT CONDITION. 
*         9.  4 BIT FLAG REG SELECTIVE CLEAR. 
*         10. 4 BIT FLAG REG SELECTIVE SET WITH SLIDING ONE PATTERN.
*         11. 4 BIT FLAG REG STATUS WITH SLIDING ONE PATTERN. 
*         12. REPEAT STEP 11 WITH A SLIDING ONE PATTERN IN THE FLAG WORD
*             AND THAT AN ABORT STATUS FROM LSP IS PRESENT WHEN A "1" 
*             BIT IS PRESENT IN THE FLAG REGISTER AND AN ACCEPT STATUS IS 
*             PRESENT "0" BIT IS PRESENT IN THE FLAG REGISTER.
*         13. REPEAT STEPS 9-12 FOR ALL BIT POSITIONS.
*         14. RESET PATTERN TO 0001 AND REPEAT STEPS 9-13 IF REPEAT 
*             CONDITION.
*         15. 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.
*         16. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM04 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM04 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM04 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  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B4  = CONDITION NUMBER. 
*         B5  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B6  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B8  = SLIDING PATTERN COUNTER.
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM04 - 4 BIT FLAG REGISTER OPERATIONS PART II
1  FORMAT MSM04 ERROR(S) = *DECD
3  FORMAT MSM04 4 BIT FLAG REGISTER OPERATIONS II PASS=*DECD
4  FORMAT MSM04 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM04 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM04 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE RDYSEL4=5, SELSET4=6, STATUS4=7, SELCLR4=10B
   EQUATE ZERSEL4=11B, EQUSTA4=12B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------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 
* 
* -------MODULE TEST
* 
22 GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SELECTIVE SET FLAG REGISTER ALL ONES 
* 
33 B1 = 0                           *SET FLAG WORD
   B2 = 17B                         *SET FLAG WORD
   B4 = 1                           *SET CONDITION NUMBER 1 
   GOSUB 52                         *SELSET SUBROUTINE
* 
* -------SELECTIVE CLEAR FLAG REGISTER ALL ONES 
* 
   GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
* 
* -------STATUS FLAG REGISTER ALL ONES
* 
   B1 = 0                           *SET FLAG WORD
   B2 = 17B                         *SET FLAG WORD
   B3 = 2                           *SET EXPECTED STATUS
   GOSUB 50                         *STATUS SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------SELECTIVE CLEAR FLAG REGISTER ALL ONES 
* 
34 GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
* 
* -------SELECTIVE SET/STATUS FLAG REGISTER SLIDING ONES
* 
   B1 = 0                           *INITIALIZE PATTERNS
   B2 = 1 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B5 = B1                          *INITIALIZE PATTERNS
   B6 = B2
36 GOSUB 56                         *SELECTIVE SET SUBROUTINE 
40 GOSUB 50                         *STATUS SUBROUTINE
   B3 = 1                           *SET EXPECTED STATUS
   IF(SB(0).EQ.B3) GOTO 42          *IF ABORT TEST IF PATTERNS SAME 
   B3 = 2                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
41 GOSUB 62                         *SLIDING PATTERN ROUTINE
   IF(B1.NE.0) GOTO 40              *SLIDING PATTERN NOT DONE 
   IF(B2.NE.0) GOTO 40              *SLIDING PATTERN NOT DONE 
   GOSUB 60                         *SELECTIVE CLEAR SUBROUTINE 
   B5 = B5.LS.1                     *SLIDE THE PATTERN
   B6 = B6.LS.1 
   B1 = 0                           *RESET TEST PATTERN 
   B2 = 1 
   IF(B6.NE.20) GOTO 40             *DO NEXT PATTERN
   GOSUB 47                         *CHECK REPEAT CONDITION 
   GOTO 44                          *CONTINUE TEST
42 IF(B6.EQ.B2) GOTO 41             *CONTINUE SAME DATA 
   IF(B6.NE.B2) ERROR 1/1 GOSUB 74   *IF BAD STATUS 
44 IF(ES.AND.CM.EQ.0) MSG 3 (B11) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   GOTO 22 WHILE (B11+1.LT.10D)     *DO TEN PASSES
* 
* -------MODULE REPEAT/EXIT 
* 
45 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 22
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 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOSUB 55                         *RESERVE SUBROUTINE 
   IF(B4.EQ.1) GOTO 33              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 34              *REPEAT CONDITION 2 
   GOTO 45                          *CHECK REPEAT MODULE
* 
* -------STATUS 4 BIT FLAG REGISTER 
* 
50 B14 = STATUS4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT STATUS B1 B2, ABT 74   *STATUS FLAG REGISTER
   RETURN 
* 
* -------SELECTIVE SET 4 BIT FLAG REGISTER
* 
52 B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B1 B2, ABT 74   *SELECT SET FLAG REGISTER
   RETURN 
* 
* -------SELECTIVE CLEAR 4 BIT FLAG REGISTER ALL ONES 
* 
54 B1 = 0                            *SET FLAG WORD 
   B2 = 17B                          *SET FLAG WORD 
   B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------SELECTIVE SET 4 BIT FLAG REGISTER
* 
56 B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B5 B6, ABT 74   *SELECT SET FLAG REGISTER
   RETURN 
* 
* -------SELECTIVE CLEAR 4 BIT FLAG REGISTER
* 
60 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B5 B6, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------SLIDING ONES PATTERN SUBROUTINE
* 
62 B2 = B2.LS.1                     *SLIDING PATTERN
   GOTO 66 WHILE (B8+1.LT.3D)       *LOOP FOR ALL 4 BITS
   B1 = 0 
   B2 = 0                           *CLEAR B1/B2 FOR COMPLETE 
   B8 = 0 
66 RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 45                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM04 -   4 BIT FLAG REGISTER OPERATIONS PART TWO 
   MODULE MSM05,DESM(171,211)LOCK 
*** MSM05 - 4 BIT FLAG REGISTER OPERATIONS PART THREE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FLAG REGISTER OPERATIONS ZERO SELECT AND EQUALITY STATUS WILL 
*         BE TESTED IN CONJUNCTION WITH THE 4 BIT FLAG REGISTER.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECTIVE CLEAR. 
*         5.  4 BIT FLAG REG ZERO SELECT WITH 0001 PATTERN. 
*         6.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         7.  4 BIT FLAG REG ZERO SELECT WITH 0001 PATTERN. 
*         8.  CHECK LSP STATUS FOR AN ABORT (0001B).
*         9.  REPEAT STEPS 7 AND 8 FOR EACH BIT POSITION. 
*         10. REPEAT REPEAT STEPS 4-9 USING A ONE BIT IN EACH BIT 
*             POSITION. 
*         11. REPEAT STEPS 3-10 IF REPEAT CONDITION.
*         12. 4 BIT FLAG REG SELECTIVE CLEAR. 
*         13. SET PATTERN TO 0. 
*         14. 4 BIT FLAG REG EQUALITY STATUS WITH PATTERN.
*         15. CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         16. 4 BIT FLAG REG EQUALITY WITH SLIDING ONE BIT IN FLAG WORD.
*         17. CHECK LSP STATUS FOR AN ABORT (0001B) IF FLAG WORD IS NOT 
*             THE SAME CONTENTS OF FLAG REGISTER OR AN ACCEPT (0002B) IF
*             THEY ARE THE SAME.
*         18. REPEAT STEPS 16 AND 17 FOR ALL BITS.
*         19. 4 BIT FLAG REG SELECTIVE CLEAR. 
*         20. 4 BIT FLAG REG SELECTIVE SET. 
*         21. SET PATTERN TO SLIDING ONE. 
*         22. REPEAT FROM STEP 14 FOR ALL PATTERNS. 
*         23. REPEAT FROM STEP 12 IF REPEAT CONDITION.
*         24. 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.
*         25. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM05 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM05 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM05 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  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B4  = CONDITION NUMBER. 
*         B5  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B6  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B8  = SLIDING PATTERN COUNTER.
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM05 - 4 BIT FLAG REGISTER OPERATIONS PART III 
1  FORMAT MSM05 ERROR(S) = *DECD
3  FORMAT MSM05 4 BIT FLAG REGISTER OPERATIONS III PASS=*DECD 
4  FORMAT MSM05 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM05 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM05 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
* 
* -------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 46                          *EXIT 
* 
* -------MODULE TEST
* 
22 GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SELECTIVE CLEAR FLAG REGISTER ALL ONES 
* 
26 GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
* 
* -------ZERO SELECT FLAG REGISTER SLIDING ONES 
* 
   B1 = 0                           *INITIALIZE PATTERNS
   B2 = 1 
   B4 = 1                           *SET CONDITION NUMBER 1 
   B5 = B1                          *INITIALIZE PATTERNS
   B6 = B2
30 GOSUB 56                         *ZERSEL SUBROUTINE
   B3 = 2                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF NOT EXPECTED STATUS 
32 GOSUB 50                         *ZERSEL SUBROUTINE
   B3 = 1                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF NOT EXPECTED STATUS 
34 GOSUB 62                         *SLIDING PATTERN ROUTINE
   IF(B1.NE.0) GOTO 32              *SLIDING PATTERN NOT DONE 
   IF(B2.NE.0) GOTO 32              *SLIDING PATTERN NOT DONE 
   GOSUB 52                         *SELCLR SUBROUTINE
   B5 = B5.LS.1                     *SLIDE THE PATTERN
   B6 = B6.LS.1 
   B1 = 0                           *RESET TEST PATTERN 
   B2 = 1 
   IF(B6.NE.20) GOTO 30             *DO NEXT PATTERN
   GOSUB 47                         *CHECK REPEAT CONDITION 
* 
* -------SELECTIVE CLEAR FLAG REGISTER ALL ONES 
* 
36 GOSUB 54                         *SELCLR ALL ONES SUBROUTINE 
* 
* -------EQUALITY STATUS FLAG REGISTER SLIDING ONES 
* 
   B1 = 0                           *INITIALIZE PATTERNS
   B2 = 0 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B5 = B1                          *INITIALIZE PATTERNS
   B6 = B2
37 GOSUB 60                         *EQUSTA SUBROUTINE
   B3 = 2                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF STATUS NOT EXPECTED 
   B1 = 0                           *INITIALIZE PATTERNS
   B2 = 1 
   B5 = B1                          *INITIALIZE PATTERNS
   B6 = B2
40 GOSUB 70                         *EQUSTA SUBROUTINE
   B3 = 1                           *SET EXPECTED STATUS
   IF(SB(0).NE.B3) GOTO 43          *IF ABORT TEST IF PATTERNS SAME 
42 GOSUB 62                         *SLIDING PATTERN ROUTINE
   IF(B1.NE.0) GOTO 40              *SLIDING PATTERN NOT DONE 
   IF(B2.NE.0) GOTO 40              *SLIDING PATTERN NOT DONE 
   GOSUB 52                         *SELCLR SUBROUTINE
   B5 = B5.LS.1                     *SLIDE THE PATTERN
   B6 = B6.LS.1 
   B1 = 0                           *RESET TEST PATTERN 
   B2 = 1 
   IF(B6.NE.20) GOTO 40             *DO NEXT PATTERN
   GOSUB 47                         *CHECK REPEAT CONDITION 
   GOTO 44                          *CONTINUE TEST
43 IF(B6.EQ.B2) GOTO 42             *CONTINUE 
   IF(B6.NE.B2) ERROR 1/1 GOSUB 74   *IF STATUS NOT EXPECTED
44 IF(ES.AND.CM.EQ.0) MSG 3 (B11) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   GOTO 22 WHILE (B11+1.LT.10D)     *DO TEN PASSES
* 
* -------MODULE REPEAT/EXIT 
* 
45 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 22
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 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOSUB 55                         *RESERVE SUBROUTINE 
   IF(B4.EQ.1) GOTO 26              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 36              *REPEAT CONDITION 2 
* 
* -------ZERO SELECT 4 BIT FLAG REGISTER
* 
50 B14 = 11B                        *ZERSEL4 COMMAND NUMBER 
   FLAG REGISTER 4BIT ZERSEL B1 B2, ABT 74   *ZERO SELECT FLAG REGISTER 
   RETURN 
* 
* -------SELECTIVE CLEAR 4 BIT FLAG REGISTER
* 
52 B14 = 10B                        *SELCLR4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B5 B6, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------SELECTIVE CLEAR 4 BIT FLAG REGISTER ALL ONES 
* 
54 B1 = 0                           *SET FLAG WORD
   B2 = 17B                         *SET FLAG WORD
   B14 = 10B                        *SELCLR4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = 21B                        *RESLSP COMMAND NUMBER
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------ZERO SELECT 4 BIT FLAG REGISTER
* 
56 B14 = 11B                        *ZERSEL4 COMMAND NUMBER 
   FLAG REGISTER 4BIT ZERSEL B5 B6, ABT 74   *ZERO SELECT FLAG REGISTER 
   RETURN 
* 
* -------EQUALITY STATUS 4 BIT FLAG REGISTER
* 
60 B14 = 12B                        *EQUSTA4 COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B5 B6, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------SLIDING ONES PATTERN SUBROUTINE
* 
62 B2 = B2.LS.1                     *SLIDING PATTERN
   GOTO 66 WHILE (B8+1.LT.4D)       *LOOP FOR ALL 12 BITS 
   B1 = 0 
   B2 = 0                           *CLEAR B1/B2 FOR COMPLETE 
   B8 = 0 
66 RETURN 
* 
* -------EQUALITY STATUS 4 BIT FLAG REGISTER
* 
70 B14 = 12B                        *EQUSTA4 COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
   B14 = 21B                        *RESLSP COMMAND NUMBER
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 45                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM05 -   4 BIT FLAG REGISTER OPERATIONS PART THREE 
   MODULE MSM07,DESM(171,211)LOCK 
*** MSM07 - 16K X 4 MARCH FLAG MEMORY TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THE MARCH SEMICONDUCTOR RAM TEST IS USED HERE TO TEST CHIP
*         BASIC FUNCTIONALITY, AND CHIP ADDRESSING FAILURES.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECTIVE CLEAR, WRITE ZEROS INTO ALL FLAG 
*             LOCATIONS, ALL CHIPS. 
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  4 BIT FLAG REG READY/SELECT WITH FLAG BITS = 1111 ON EACH 
*             ADDRESS, ASCENDING THROUGH THE CURRENT CHIP SELECTED
*             WHICH IS INITIALLY CHIP SELECT 0. 
*         7.  CHECK LSP STATUS FOR AN ACCEPT. ELSE REPORT AN ERROR
*             ON AN ABORT ( PICKED A BIT).
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  4 BIT FLAG REG EQUALITY STATUS WITH FLAG BITS = 1111 ON 
*             EACH ADDRESS, ASCENDING THROUGH THE CURRENT CHIP. 
*         10. CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. 4 BIT FLAG REG SELECTIVE CLEAR WITH FLAG WORD = 1111, 
*             ASCENDING THROUGH THE CURRENT CHIP SELECTED.
*         13. REPEAT 3-12 DESCENDING THROUGH THE CURRENT CHIP 
*             STARTING WITH THE LAST ADDRESS IN THE CHIP. 
*         14. REPEAT STEPS 3-10 IF REPEAT CONDITION.
*         15. REPEAT 3-14 FOR ALL 16 CHIPS. 
*         16. 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.
*         17. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM07 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM07 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM07 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B4  = CONDITION NUMBER. 
*         B5  = CHIP NUMBER TIMES FOUR. 
*         B6  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B7  = CHIP NUMBER TIMES FOUR. 
*         B8  = ASCENDING/DESCENDING FLAG.
*         B9  = CHIP NUMBER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM07 - 16K BY 4-BIT FLAG MEMORY MARCH TEST 
1  FORMAT MSM07 ERROR(S) = *DECD
2  FORMAT MSM07 16K BY 4-BIT FLAG MEMORY MARCH TEST CHIP=*OB
4  FORMAT MSM07 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM07 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM07 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 07D                        *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 52                          *EXIT 
* 
* -------MODULE TEST
* 
22 B3 = 2                           *SET EXPECTED STATUS
   GOSUB 55                         *RES LSP SUBROUTINE 
   B5 = 0                           *CLEAR CHIP NUMBER
* 
* -------CLEAR ALL LOCATIONS TO ZERO
* 
24 B1 = 0                           *INITIALIZE FLAG WORD 
   B2 = 17B                         *INITIALIZE FLAG WORD 
   B4 = 1                           *SET CONDITION NUMBER 1 
   B6 = 0 
   B7 = 0 
26 GOSUB 61                         *SELCLR SUBROUTINE
   GOSUB 60                         *INCREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 27              *DONE WITH ALL ADDRESSES THIS CHIP
   B6 = B7 + B1                     *SET THE ADDRESS UPPER 6 BITS 
   GOTO 26
27 B7 = B7+4                        *BUMP CHIP
   B6 = B7
   B2 = 17B 
   IF(B7.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B7.NE.100B) GOTO 26           *ALL CHIPS NOT DONE 
* 
* -------READY SELECT ALL ONES ASCENDING/DESCENDING ADDRESSES 
* 
30 IF(B8.EQ.0) GOSUB 56             *INITIALIZE ASCENDING ADDRESSES 
   IF(B8.EQ.1) GOSUB 64             *INITIALIZE DESCENDING ADDRESSES
   B9 = B5.RS.2 
   IF(ES.AND.CM.EQ.0) MSG 2 (B9) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOSUB 55                         *RES LSP SUBROUTINE 
32 GOSUB 62                         *RDYSEL SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/2 GOSUB 74   *IF BAD STATUS
   IF(B8.EQ.0) GOSUB 60             *INCREMENT ADDRESS ROUTINE
   IF(B8.EQ.1) GOSUB 66             *DECREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 34              *DONE WITH ALL ADDRESSES
   B6 = B5 + B1                     *SET UPPER 6 BITS 
   GOTO 32                          *CONTINUE THIS CHIP 
* 
* -------EQUALITY STATUS ALL ONES ASCENDING/DESCENDING ADDRESSES
* 
34 IF(B8.EQ.0) GOSUB 56             *INITIALIZE ASCENDING ADDRESSES 
   IF(B8.EQ.1) GOSUB 64             *INITIALIZE DESCENDING ADDRESSES
   GOSUB 55                         *RES LSP SUBROUTINE 
36 GOSUB 63                         *EQUSTA SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/2 GOSUB 74   *IF BAD STATUS
   IF(B8.EQ.0) GOSUB 60             *INCREMENT ADDRESS ROUTINE
   IF(B8.EQ.1) GOSUB 66             *DECREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 40              *DONE WITH ALL ADDRESSES
   B6 = B5 + B1                     *SET UPPER 6 BITS 
   GOTO 36                          *CONTINUE THIS CHIP 
* 
* -------SELECT CLEAR ALL ONES ASCENDING/DESCENDING ADDRESSES 
* 
40 IF(B8.EQ.0) GOSUB 56             *INITIALIZE ASCENDING ADDRESSES 
   IF(B8.EQ.1) GOSUB 64             *INITIALIZE DESCENDING ADDRESSES
   GOSUB 55                         *RES LSP SUBROUTINE 
42 GOSUB 61                         *SELCLR SUBROUTINE
   IF(B8.EQ.0) GOSUB 60             *INCREMENT ADDRESS ROUTINE
   IF(B8.EQ.1) GOSUB 66             *DECREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 44              *DONE WITH ALL ADDRESSES
   B6 = B5 + B1                     *SET UPPER 6 BITS 
   GOTO 42                          *CONTINUE THIS CHIP 
* 
44 GOTO 30 WHILE (B8+1.LT.2)        *DO DESCENDING ADDRESSES
   B8 = 0                           *SET FOR ASCENDING
   GOSUB 54                         *CHECK REPEAT CONDITION 
* 
   GOTO 30 WHILE (B5+4.LT.100)      *DO ALL CHIPS 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 GOSUB 55                         *RES LSP SUBROUTINE 
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 30                   *REPEAT CONDITION 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = 21B                        *RESLSP COMMAND NUMBER
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B1 = 0                           *INITIALIZE FLAG WORD 
   B2 = 17B                         *INITIALIZE FLAG WORD 
   B6 = B5 + B1 
   RETURN 
60 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.EQ.17) B1 = B1 + 1         *INCREMENT UPPER 6 BITS 
   IF(B1.LT.4) RETURN 
   GOTO 70                          *ALL DONE 
* 
* -------SELECT CLEAR 4 BIT FLAG REGISTER 
* 
61 B14 = 10B                        *SELCLR4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/2 GOSUB 74   *IF BAD STATUS
   RETURN 
* 
* -------READY SELECT 4 BIT FLAG REGISTER 
* 
62 B14 = 5B                         *RDYSEL4 COMMAND NUMBER 
   FLAG REGISTER 4BIT RDYSEL B6 B2, ABT 74   *SELECTIVE SET FLAG REGISTER 
   RETURN 
* 
* -------EQUALITY STATUS 4 BIT FLAG REGISTER
* 
63 B14 = 12B                        *EQUSTA4 COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B6 B2, ABT 74   *EQUALITY STATUS FLAG REGISTER 
   RETURN 
* 
* -------DECREMENT ADDRESS SUBROUTINE 
* 
64 B1 = 3                           *INITIALIZE FLAG WORD 
   B2 = 7777B                       *INITIALIZE FLAG WORD 
   B6 = B5 + B1 
   RETURN 
66 B2 = B2 - 20                     *DECREMENT ADDRESS
   IF(B2.NE.17) RETURN              *NOT DONE 
   IF(B2.EQ.17) B1 = B1 - 1         *DECREMENT UPPER 6 BITS 
   B2 = 7777B 
   IF(B1.NE.7776) RETURN
70 B1 = 0                           *ALL DONE 
   B2 = 0                           *ALL DONE 
67 RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
   B14 = 21B                        *RESLSP COMMAND NUMBER
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM07 -   16K X 4 MARCH FLAG MEMORY TEST
   MODULE MSM09,DESM(171,211)LOCK 
*** MSM09 - 16K X 4 MASEST MEMORY TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THE MASEST SEMICONDUCTOR RAM TEST IS USED HERE TO CHECK FOR 
*         MULTIPLE ADDRESS SELECTION PROBLEMS IN THE ADDRESS DECODE 
*         LOGIC.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECTIVE CLEAR TO CLEAR ALL OF MEMORY.
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  4 BIT FLAG REG SELECTIVE SET, WRITE ALTERNATE WORDS WITH
*             1111 PATTERN, STARTING WITH ADDRESS 0.
*         7.  SET TEST LOCATION TO 0. 
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  4 BIT FLAG REG EQUALITY STATUS ON TEST LOCATION FLAG WORD 
*             WHICH WILL EQUAL EXPECTED PATTERN.
*         10. CHECK LSP STATUS FOR ACCEPT. REPORT ERROR IF ABORT. 
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. 4 BIT FLAG REG EQUALITY STATUS ON TEST LOCATION 
*             COMPLEMENT ADDRESS. 
*         13. CHECK LSP STATUS FOR AN ACCEPT. REPORT ERROR IF ABORT.
*         14. INCREMENT TEST LOCATION ADDRESS.
*         15. REPEAT STEPS 3-14 UNTIL ALL CHIP IS TESTED. 
*         16. INCREMENT THE CHIP ADDRESS AND REPEAT 3-15 FOR ALL CHIPS. 
*         17. REPEAT STEPS 3-16, STARTING WITH ADDRESS 1 IN STEP 6. 
*         18. 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.
*         19. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM09 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM09 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM09 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B5  = CHIP NUMBER TIMES FOUR. 
*         B6  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B7  = CHIP NUMBER TIMES FOUR. 
*         B8  = EVEN/ODD FLAG.
*         B9  = DECREMENT/INCREMENT COUNT.
*         B11 = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B12 = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM09 - 16K BY 4-BIT FLAG MEMORY MASEST TEST
1  FORMAT MSM09 ERROR(S) = *DECD
2  FORMAT MSM09 16K BY 4-BIT FLAG MEMORY MASEST TEST CHIP=*OB 
4  FORMAT MSM09 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM09 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM09 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE SELSET4=6, SELCLR4=10B, EQUSTA4=12B, RESLSP=21B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 09D                        *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 52                          *EXIT 
* 
* -------MODULE TEST
* 
22 B3 = 2                           *SET EXPECTED STATUS
   B5 = 0                           *CLEAR CHIP NUMBER
   B7 = 0                           *CLEAR CHIP NUMBER FOR CLEAR
   IB(501) = B8                     *SAVE B8
   B8 = 0 
23 GOSUB 55                         *RESERVE LSP SUBROUTINE 
* 
* -------CLEAR ALL LOCATIONS TO ZERO
* 
24 B1 = 0                           *INITIALIZE FLAG WORD 
   B2 = 17B                         *INITIALIZE FLAG WORD 
   B6 = B7 + B1 
26 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/2 GOSUB 74   *IF BAD STATUS
   B9 = 20                          *INCREMENT INDEX
   GOSUB 60                         *INCREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 27              *DONE WITH ALL ADDRESSES THIS CHIP
   B6 = B7 + B1                     *SET THE ADDRESS UPPER 6 BITS 
   GOTO 26
27 B7 = B7+4                        *BUMP CHIP
   B6 = B7
   B2 = 17B 
   IF(B7.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B7.NE.100B) GOTO 26           *ALL CHIPS NOT DONE 
   B8 = IB(501)                     *RESET B8 
* 
* -------SELECT SET ALL ONES ALTERNATE ADDRESSES
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
30 GOSUB 56             *INITIALIZE ADDRESSES STARTING AT 0/1 
   B9 = B5.RS.2                     *SET CHIP NUMBER
   IF(ES.AND.CM.EQ.0) MSG 2 (B9) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
32 B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B6 B2, ABT 74   *READY SELECT FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/2 GOSUB 74   *IF BAD STATUS
   B9 = 40                          *INCREMENT INDEX
   GOSUB 60                         *INCREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 34              *DONE WITH ALL ADDRESSES
   B6 = B5 + B1                     *SET UPPER 6 BITS 
   GOTO 32                          *CONTINUE THIS CHIP 
* 
* -------EQUALITY STATUS ALL ONES ALTERNATE ADDRESSES ASCENDING 
* 
34 GOSUB 55                         *RESERVE SUBROUTINE 
   GOSUB 56             *INITIALIZE ADDRESSES STARTING AT O/1 
36 B14 = EQUSTA4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B6 B2, ABT 74   *EQUALITY STATUS FLAG REGISTER 
   IF(SB(0).NE.B3) ERROR 1/2 GOSUB 74   *IF BAD STATUS
   B9 = 40                          *INCREMENT INDEX
   GOSUB 60                         *INCREMENT ADDRESS ROUTINE
   B6 = B5 + B1                     *SET UPPER 6 BITS 
* 
* -------EQUALITY STATUS ALL ONES ALTERNATE ADDRESSES DESCENDING
* 
42 B14 = EQUSTA4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B7 B12, ABT 74   *EQUALITY STATUS FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/3 GOSUB 74   *IF BAD STATUS
   B9 = 40                          *DECREMENT INDEX
   GOSUB 65                         *DECREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 44              *DONE WITH ALL ADDRESSES
   B7 = B5 + B11                    *SET UPPER 6 BITS 
   GOTO 36                          *CONTINUE THIS CHIP 
44 GOSUB 54                         *CHECK REPEAT CONDITION 
* 
   GOTO 30 WHILE (B5+4.LT.100)      *DO ALL CHIPS 
* 
   GOTO 22 WHILE (B8+1.LT.2)        *DO ALL ODD ADDRESSES 
   B8 = 0                           *SET FOR EVEN ADDRESSES 
* 
* -------MODULE REPEAT/EXIT 
* 
50 GOSUB 54                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 GOSUB 55                         *RESERVE SUBROUTINE 
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 30                   *REPEAT CONDITION 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B1 = 0                           *INITIALIZE FLAG WORD ASCENDING 
   B2 = B8.LS.4+17B                 *INITIALIZE FLAG WORD ASCENDING 
   B6 = B5 + B1 
   B11 = 3                          *INITIALIZE FLAG WORD DESCENDING
   B12 = 377B - B8.LS.4             *INITIALIZE FLAG WORD DESCENDING
   B7 = B5 + B11
   RETURN 
60 B2 = B2 + B9                     *BUMP ADDRESS 
   IF(B8.EQ.0) GOTO 62              *EVEN ADDRESSES CHECK B2
   IF(B2.EQ.37) B1 = B1 + 1         *INCREMENT UPPER 6 BITS 
   GOTO 63                          *TEST BITS
62 IF(B2.EQ.17) B1 = B1 + 1         *INCREMENT UPPER 6 BITS 
63 IF(B1.LT.4) RETURN 
   B1 = 0                           *ALL DONE 
   B2 = 0                           *ALL DONE 
   RETURN 
* 
* -------DECREMENT ADDRESS SUBROUTINE 
* 
65 B12 = B12 - B9                   *DECREMENT ADDRESS
   IF(B8.EQ.0) GOTO 66              *EVEN ADDRESSES 
   IF(B12.EQ.0) B11 = B11 - 1       *DECREMENT THE UPPER
   IF(B12.NE.0) RETURN              *NOT DONE 
   GOTO 67                          *CHECK B11
66 IF(B12.NE.7757) RETURN           *NOT DONE 
   B11 = B11 - 1                    *DECREMENT UPPER 6 BITS 
67 B12 = 377 - B8.LS.4              *INITIALIZE FLAG WORD 
   IF(B11.NE.7776) RETURN 
   B11 = 0                          *ALL DONE 
   B12 = 0                          *ALL DONE 
71 RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
76 ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM09 -   16K X 4 MASEST MEMORY TEST
   MODULE MSM11,DESM(171,211)LOCK 
*** MSM11 - 16K X 4 WALKING COLUMN PART ONE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         USE WALKING COLUMN SEMICONDUCTOR RAM TEST TO TEST FOR INTER-
*         COLUMN DISTURBS, AND CHIP ADDRESSING PROBLEMS. COLUMNS ARE
*         BITS 9-13 OF THE 18 BIT FLAG ADDRESS AND FLAG WORD. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECTIVE SET ALL ONES ALL OF MEMORY.
*         5.  SET COLUMN ADDRESS TO ZERO. 
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  4 BIT FLAG REG SELECTIVE CLEAR, WRITE ALL LOCATIONS IN
*             TEST COLUMN WITH ZEROS, REPEATING FOR ALL CHIPS.
*         8.  SET ADDRESS TO ZERO.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. 4 BIT FLAG REG EQUALITY STATUS ON CURRENT ADDRESS 
*             IF ADDRESS IS IN THE TEST COLUMN, USE 0000 PATTERN
*             ELSE USE 1111 PATERN. 
*         11. REPEAT 9 - 10 FOR ALL FLAG ADDRESSES. 
*         12. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         13. REWRITE TEST COLUMN TO ONES IN ALL CHIPS. 
*         14. INCREMENT TEST COLUMN ADDRESS.
*         15. REPEAT 6-14 UNTIL ALL COLUMNS ARE TESTED. 
*         16. 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.
*         17. EXIT THE MODULE.
* 
  
*    1.3  ERRORS REPORTED 
* 
*         MSM11 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM11 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM11 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B5  = CHIP NUMBER TIMES FOUR. 
*         B6  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B8  = COLUMN NUMBER.
*         B9  = TEMPORARY STORAGE.
*         B11 = INTERNAL COMMAND INDEX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM11 - 16K X 4 FLAG MEMORY WALKING COLUMN TEST I 
1  FORMAT MSM11 ERROR(S) = *DECD
3  FORMAT MSM11 16K X 4 FLAG WALKING COLUMN TEST I COL=*OB
4  FORMAT MSM11 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM11 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM11 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE SELSET4=6, SELCLR4=10B, EQUSTA4=12B, RESLSP=21B,
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 11D                        *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 52                          *EXIT 
* 
* -------MODULE TEST
* 
22 B3 = 2                           *SET EXPECTED STATUS
   GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SET ALL LOCATIONS TO ONES
* 
24 GOSUB 56                         *INITIALIZE FLAG WORD 
26 B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B6 B2, ABT 74   *SELECT SET FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 57                         *INCREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 27              *DONE ALL ADDRESSES THIS CHIP 
   B6 = B5+B1                       *SET THE UPPER 6 BITS 
   GOTO 26
27 B5 = B5+4                        *BUMP CHIP
   B6 = B5
   B2 = 17B 
   IF(B5.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B5.NE.100B) GOTO 26           *ALL CHIPS NOT DONE 
* 
* -------SELECT CLEAR ALL LOCATIONS IN TEST COLUMN ALL CHIPS
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
30 B11 = 0                          *SET INDEX FOR SELCLR 
   IF(ES.AND.CM.EQ.0) MSG 3 (B8) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOSUB 64                         *ENTER SELECT SET/CLEAR SUBROUTINE
* 
* -------EQUALITY STATUS ALL LOCATIONS
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
32 GOSUB 56                         *INITIALIZE ADDRESSES 
34 B2 = B2.AND.7760B
   IF(B9.EQ.0) GOTO 36              *COLUMN ZERO
   IF(B9.AND.3.NE.0) GOTO 35        *SET THE UPPER BITS 
   IF(B2.AND.7000B.NE.B9) B2=B2+17B 
   GOTO 37
35 IF(B6.AND.3.NE.B9) B2=B2+17B 
   GOTO 37
36 IF(B2.GE.1000B) B2=B2+17B        *NOT COLUMN ZERO
   IF(B2.AND.17.EQ.17) GOTO 37      *DATA ALREADY SET 
   IF(B6.AND.3.NE.0) B2=B2+17B      *NOT COLUMN ZERO BUT B2 ZERO
37 B14 = EQUSTA4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B6 B2, ABT 74   *EQUALITY STATUS FLAG REGISTER 
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 57                         *INCREMENT ADDRESS ROUTINE
   IF(B2.NE.0) GOTO 34              *NOT DONE ALL ADDRESSES 
   IF(B1.NE.0) GOTO 34              *NOT DONE ALL ADDRESSES 
   B5 = B5 + 4                      *INCREMENT THE CHIP 
   B6 = B5 + B1                     *SET UPPER 6 BITS 
   IF(B5.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B5.NE.100) GOTO 34            *DO ALL CHIPS 
* 
* -------SELECT SET ALL ONES TEST COLUMN ALL CHIPS
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
40 B11 = 1                          *COMMAND FOR SELECT SET ROUTINE 
   GOSUB 64                         *ENTER SELECT SET/CLEAR SUBROUTINE
* 
   GOSUB 54                         *CHECK REPEAT CONDITION 
44 GOTO 30 WHILE (B8+1.LT.40)       *DO ALL COLUMNS 
   B8 = 0                           *CLEAR COLUMNS
* 
* -------MODULE REPEAT/EXIT 
* 
50 GOSUB 54                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 GOSUB 55                         *RESERVE SUBROUTINE 
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 30                   *REPEAT CONDITION 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B1 = 0                           *INITIALIZE FLAG WORD 
   B9 = B8.LS.9                     *INITIALIZE COLUMN
   B2 = 17B                         *SET LOWER
   B5 = 0                           *SET CHIP TO ZERO 
   B6 = B1
   RETURN 
57 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.EQ.17) B1 = B1 + 1         *INCREMENT UPPER 6 BITS 
   IF(B1.LT.4) RETURN 
   GOTO 62                          *ALL DONE 
* 
* -------INCREMENT ADDRESS SUBROUTINE ONE COLUMN ONLY 
* 
60 B1 = 0                           *INITIALIZE FLAG WORD 
   B5 = 0 
   B9 = B8.LS.9 
   B2 = B9.AND.7000B + 17B          *SET COLUMN 
   B6 = B9.AND.3
   RETURN 
63 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.AND.777B.NE.17) RETURN     *INCREMENT UPPER 6 BITS 
62 B1 = 0                           *ALL DONE 
   B2 = 0                           *ALL DONE 
   RETURN 
* 
* -------SELECT SET/CLEAR ALL LOCATIONS IN TEST COLUMN ALL CHIPS
* 
64 GOSUB 60                         *INITIALIZE ADDRESSES 
65 IF(B11.EQ.0) GOTO 66 
   B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B6 B2, ABT 74   *SELECT SET FLAG REGISTER
   GOTO 67
66 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
67 IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 63                         *INCREMENT COLUMN ADDRESS ROUTINE 
   IF(B2.NE.0) GOTO 65              *DONE WITH ALL ADDRESSES
   B5 = B5 + 4                      *INCREMENT CHIP 
   B2 = B9.AND.7000B + 17B          *SET COLUMN 
   B6 = B9.AND.3 + B5 
   IF(B5.LT.100) GOTO 65            *DO ALL CHIPS 
   RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
76 ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM11 -   16K X 4 WALKING COLUMN PART ONE 
   MODULE MSM12,DESM(171,211)LOCK 
*** MSM12 - 16K X 4 WALKING COLUMN PART TWO 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         USE WALKING COLUMN SEMICONDUCTOR RAM TEST TO TEST FOR INTER-
*         COLUMN DISTURBS, AND CHIP ADDRESSING PROBLEMS. COLUMNS ARE
*         BITS 9-13 OF THE 18 BIT FLAG ADDRESS AND FLAG WORD. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECTIVE CLEAR ALL ZEROS ALL OF MEMORY. 
*         5.  SET COLUMN ADDRESS TO ZERO. 
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  4 BIT FLAG REG SELECTIVE SET, WRITE ALL LOCATIONS IN
*             TEST COLUMN WITH ONES, REPEATING FOR ALL CHIPS. 
*         8.  SET ADDRESS TO ZERO.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. 4 BIT FLAG REG EQUALITY STATUS ON CURRENT ADDRESS 
*             IF ADDRESS IS IN THE TEST COLUMN, USE 1111 PATTERN
*             ELSE USE 0000 PATERN. 
*         11. REPEAT 9 - 10 FOR ALL FLAG ADDRESSES. 
*         12. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         13. REWRITE TEST COLUMN TO ZEROS IN ALL CHIPS.
*         14. INCREMENT TEST COLUMN ADDRESS.
*         15. REPEAT 6 - 14 UNTIL ALL COLUMNS ARE TESTED. 
*         16. 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.
*         17. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM12 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM12 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM12 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B5  = CHIP NUMBER TIMES FOUR. 
*         B6  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B8  = COLUMN NUMBER.
*         B9  = TEMPORARY STORAGE.
*         B11 = INTERNAL COMMAND INDEX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM12 - 16K X 4 FLAG MEMORY WALKING COLUMN TEST II
1  FORMAT MSM12 ERROR(S) = *DECD
3  FORMAT MSM12 16K X 4 FLAG WALKING COLUMN TEST II COL=*OB 
4  FORMAT MSM12 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM12 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM12 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE SELSET4=6, SELCLR4=10B, EQUSTA4=12B, RESLSP=21B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 12D                        *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 52                          *EXIT 
* 
* -------MODULE TEST
* 
22 B3 = 2                           *SET EXPECTED STATUS
   GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SET ALL LOCATIONS TO ZEROS 
* 
24 GOSUB 56                         *INITIALIZE FLAG WORD 
26 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 57                         *INCREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 27              *DONE ALL ADDRESSES THIS CHIP 
   B6 = B5+B1                       *SET THE UPPER 6 BITS 
   GOTO 26
27 B5 = B5+4                        *BUMP CHIP
   B6 = B5
   B2 = 17B 
   IF(B5.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B5.NE.100B) GOTO 26           *ALL CHIPS NOT DONE 
* 
* -------SELECT SET ALL LOCATIONS IN TEST COLUMN ALL CHIPS
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
30 B11 = 1                          *SET INDEX FOR SELSET 
   IF(ES.AND.CM.EQ.0) MSG 3 (B8) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOSUB 64                         *ENTER SELECT SET/CLEAR SUBROUTINE
* 
* -------EQUALITY STATUS ALL LOCATIONS
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
32 GOSUB 56                         *INITIALIZE ADDRESSES 
34 B2 = B2.AND.7760B
   IF(B9.EQ.0) GOTO 36              *COLUMN ZERO
   IF(B9.AND.3.NE.0) GOTO 35        *SET THE UPPER BITS 
   IF(B2.AND.7000B.EQ.B9) B2=B2+17B 
   GOTO 37
35 IF(B6.AND.3.EQ.B9) B2=B2+17B 
   GOTO 37
36 IF(B2.LT.1000B) B2=B2+17B        *COLUMN ZERO
   IF(B2.AND.17.EQ.17) GOTO 37      *DATA ALREADY SET 
   IF(B9.EQ.0) GOTO 37              *COLUMN ZERO
   IF(B6.AND.3.EQ.B9) B2=B2+17B     *COLUMNS EQUAL
37 B14 = EQUSTA4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B6 B2, ABT 74   *EQUALITY STATUS FLAG REGISTER 
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 57                         *INCREMENT ADDRESS ROUTINE
   IF(B2.NE.0) GOTO 34              *NOT DONE ALL ADDRESSES 
   IF(B1.NE.0) GOTO 34              *NOT DONE ALL ADDRESSES 
   B5 = B5 + 4                      *INCREMENT THE CHIP 
   B6 = B5 + B1                     *SET UPPER 6 BITS 
   IF(B5.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B5.NE.100) GOTO 34            *DO ALL CHIPS 
* 
* -------SELECT CLEAR ALL ONES TEST COLUMN ALL CHIPS
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
40 B11 = 0                          *COMMAND FOR SELECT SET ROUTINE 
   GOSUB 64                         *ENTER SELECT SET/CLEAR SUBROUTINE
* 
   GOSUB 54                         *CHECK REPEAT CONDITION 
44 GOTO 30 WHILE (B8+1.LT.40)       *DO ALL COLUMNS 
   B8 = 0                           *CLEAR COLUMNS
* 
* -------MODULE REPEAT/EXIT 
* 
50 GOSUB 54                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 GOSUB 55                         *RESERVE SUBROUTINE 
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 30                   *REPEAT CONDITION 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B1 = 0                           *INITIALIZE FLAG WORD 
   B9 = B8.LS.9                     *INITIALIZE COLUMN
   B2 = 17B                         *SET LOWER
   B5 = 0                           *SET CHIP TO ZERO 
   B6 = B1
   RETURN 
57 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.AND.7760.EQ.0) B1 = B1 + 1   *INCREMENT UPPER 6 BITS 
   IF(B1.LT.4) RETURN 
   GOTO 62                          *ALL DONE 
* 
* -------INCREMENT ADDRESS SUBROUTINE ONE COLUMN ONLY 
* 
60 B1 = 0                           *INITIALIZE FLAG WORD 
   B5 = 0 
   B9 = B8.LS.9 
   B2 = B9.AND.7000B + 17B          *SET COLUMN 
   B6 = B9.AND.3
   RETURN 
63 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.AND.777B.NE.17) RETURN     *INCREMENT UPPER 6 BITS 
62 B1 = 0                           *ALL DONE 
   B2 = 0                           *ALL DONE 
   RETURN 
* 
* -------SELECT SET/CLEAR ALL LOCATIONS IN TEST COLUMN ALL CHIPS
* 
64 GOSUB 60                         *INITIALIZE ADDRESSES 
65 IF(B11.EQ.0) GOTO 66 
   B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B6 B2, ABT 74   *SELECT SET FLAG REGISTER
   GOTO 67
66 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
67 IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 63                         *INCREMENT COLUMN ADDRESS ROUTINE 
   IF(B2.NE.0) GOTO 65              *DONE WITH ALL ADDRESSES
   B5 = B5 + 4                      *INCREMENT CHIP 
   B2 = B9.AND.7000B + 17B          *SET COLUMN 
   B6 = B9.AND.3 + B5 
   IF(B5.LT.100) GOTO 65            *DO ALL CHIPS 
   RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
76 ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM12 -   16K X 4 WALKING COLUMN PART TWO 
   MODULE MSM13,DESM(171,211)LOCK 
*** MSM13 - 16K X 4 WALKING ROW PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         USE WALKING ROW SEMICONDUCTOR RAM TEST TO TEST FOR INTER-ROW
*         DISTURBS, AND CHIP ADDRESSING PROBLEMS. ROW ARE BITS 4-8 OF 
*         FLAG ADDRESS. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECTIVE SET ALL ONES TO WRITE MEMORY.
*         5.  SET ROW ADDRESS TO ZERO.
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  4 BIT SELECTIVE CLEAR, WRITE ALL LOCATIONS IN TEST
*             ROW WITH ZEROS, REPEATING FOR ALL CHIPS.
*         8.  SET ADDRESS TO ZERO.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. 4 BIT FLAG REG EQUALITY STATUS ON CURRENT ADDRESS 
*             IF ADDRESS IS IN THE TEST ROW USE 0000 PATTERN
*             ELSE USE 1111 PATERN. 
*         11. REPEAT 9 - 10 FOR ALL FLAG ADDRESSES. 
*         12. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         13. REWRITE TEST ROW TO ONES IN ALL CHIPS.
*         14. REPEAT FROM 6 IF REPEAT CONDITION.
*         15. INCREMENT TEST ROW ADDRESS. 
*         16. REPEAT 6 - 13 UNTIL ALL ROW ARE TESTED. 
*         17. REVERSE PATTERNS AND REPEAT 4 - 16, AND USE SELECTIVE SET 
*             INSTEAD OF CLR IN STEP 7. 
*         18. 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.
*         19. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM13 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM13 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM13 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B5  = CHIP NUMBER TIMES FOUR. 
*         B6  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B8  = ROW NUMBER. 
*         B9  = TEMPORARY STORAGE.
*         B11 = INTERNAL COMMAND INDEX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM13 - 16K X 4 FLAG MEMORY WALKING ROW TEST I
1  FORMAT MSM13 ERROR(S) = *DECD
2  FORMAT MSM13 16K X 4 FLAG WALKING ROW TEST I ROW=*OB 
4  FORMAT MSM13 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM13 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM13 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 13D                        *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 52                          *EXIT 
* 
* -------MODULE TEST
* 
22 B3 = 2                           *SET EXPECTED STATUS
   GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SET ALL LOCATIONS TO ONES
* 
24 GOSUB 56                         *INITIALIZE FLAG WORD 
26 GOSUB 70                         *SELECT SET SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 57                         *INCREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 27              *DONE ALL ADDRESSES THIS CHIP 
   B6 = B5+B1                       *SET THE UPPER 6 BITS 
   GOTO 26
27 B5 = B5+4                        *BUMP CHIP
   B5 = B5
   B2 = 17B 
   IF(B5.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B5.NE.100B) GOTO 26           *ALL CHIPS NOT DONE 
* 
* -------SELECT CLEAR ALL LOCATIONS IN TEST ROW ALL CHIPS 
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
30 B11 = 0                          *SET INDEX FOR SELCLR 
   IF(ES.AND.CM.EQ.0) MSG 2 (B8) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOSUB 64                         *ENTER SELECT SET/CLEAR SUBROUTINE
* 
* -------EQUALITY STATUS ALL LOCATIONS
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
32 GOSUB 56                         *INITIALIZE ADDRESSES 
34 B2 = B2.AND.7760B
   IF(B9.EQ.0) GOTO 36              *ROW ZERO 
   IF(B2.AND.760B.NE.B9) B2=B2+17B
   GOTO 37
36 IF(B2.AND.760.GE.20B) B2=B2+17B  *NOT ROW ZERO 
37 GOSUB 72                         *EQUALITY STATUS SUBROUTINE 
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 57                         *INCREMENT ADDRESS ROUTINE
   IF(B2.NE.0) GOTO 34              *NOT DONE ALL ADDRESSES 
   IF(B1.NE.0) GOTO 34              *NOT DONE ALL ADDRESSES 
   B5 = B5 + 4                      *INCREMENT THE CHIP 
   B6 = B5 + B1                     *SET UPPER 6 BITS 
   IF(B5.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B5.NE.100) GOTO 34            *DO ALL CHIPS 
* 
* -------SELECT SET ALL ONES TEST ROW ALL CHIPS 
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
40 B11 = 1                          *COMMAND FOR SELECT SET ROUTINE 
   GOSUB 64                         *ENTER SELECT SET/CLEAR SUBROUTINE
* 
   GOSUB 54                         *CHECK REPEAT CONDITION 
44 GOTO 30 WHILE (B8+1.LT.40)       *DO ALL ROWS
   B8 = 0                           *CLEAR ROWS 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 GOSUB 55                         *RESERVE SUBROUTINE 
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 30                   *REPEAT CONDITION 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = 21B                        *RESLSP COMMAND NUMBER
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B1 = 0                           *INITIALIZE FLAG WORD 
   B9 = B8.LS.4                     *INITIALIZE ROW 
   B2 = 17B                         *SET LOWER
   B5 = 0                           *SET CHIP TO ZERO 
   B6 = B1
   RETURN 
57 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.EQ.17) B1 = B1 + 1         *INCREMENT UPPER 6 BITS 
   IF(B1.LT.4) RETURN 
   GOTO 61                          *ALL DONE 
* 
* -------INCREMENT ADDRESS SUBROUTINE ONE ROW ONLY
* 
60 B1 = 0                           *INITIALIZE FLAG WORD 
   B5 = 0 
   B6 = 0 
   B9 = B8.LS.4 
   B2 = B9.AND.760B + 17B           *SET ROW
   RETURN 
62 B2 = B2 + 1000B                  *BUMP ADDRESS 
   IF(B2.AND.7017B.EQ.17) B1=B1+1   *INCREMENT UPPER 6 BITS 
   IF(B1.LT.4) GOTO 63
61 B1 = 0                           *ALL DONE 
   B2 = 0                           *ALL DONE 
63 RETURN 
* 
* -------SELECT SET/CLEAR ALL LOCATIONS IN TEST ROW ALL CHIPS 
* 
64 GOSUB 60                         *INITIALIZE ADDRESSES 
65 IF(B11.EQ.0) GOTO 66 
   B14 = 6B                         *SELSET4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B6 B2, ABT 74   *SELECT SET FLAG REGISTER
   GOTO 67
66 B14 = 10B                        *SELCLR4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
67 IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 62                         *INCREMENT ROW ADDRESS ROUTINE
   IF(B2.NE.0) GOTO 65              *DONE WITH ALL ADDRESSES
   B5 = B5 + 4                      *INCREMENT CHIP 
   B2 = B9.AND.760B + 17B           *SET ROW
   B6 = B5
   IF(B5.LT.100) GOTO 65            *DO ALL CHIPS 
   RETURN 
* 
* -------SELECT SET 4 BIT FLAG REGISTER 
* 
70 B14 = 6B                         *SELSET4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B6 B2, ABT 74   *SELECT SET FLAG REGISTER
   RETURN 
* 
* -------EQUALITY STATUS 4 BIT FLAG REGISTER
* 
72 B14 = 12B                        *EQUSTA4 COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B6 B2, ABT 74   *EQUALITY STATUS FLAG REGISTER 
   RETURN 
* 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
   B14 = 21B                        *RESLSP COMMAND NUMBER
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM13 -   16K X 4 WALKING ROW PART ONE
   MODULE MSM14,DESM(171,211)LOCK 
*** MSM14 - 16K X 4 WALKING ROW PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         USE WALKING ROW SEMICONDUCTOR RAM TEST TO TEST FOR INTER-ROW
*         DISTURBS, AND CHIP ADDRESSING PROBLEMS. ROW ARE BITS 4-8 OF 
*         FLAG ADDRESS. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECTIVE CLEAR ALL ONES TO CLEAR MEMORY.
*         5.  SET ROW ADDRESS TO ZERO.
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  4 BIT SELECTIVE SET, WRITE ALL LOCATIONS IN TEST
*             ROW WITH ONES, REPEATING FOR ALL CHIPS. 
*         8.  SET ADDRESS TO ZERO.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. 4 BIT FLAG REG EQUALITY STATUS ON CURRENT ADDRESS 
*             IF ADDRESS IS IN THE TEST ROW USE 1111 PATTERN
*             ELSE USE 0000 PATERN. 
*         11. REPEAT 9 - 10 FOR ALL FLAG ADDRESSES. 
*         12. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         13. REWRITE TEST ROW TO ZEROS IN ALL CHIPS. 
*         14. REPEAT FROM 6 IF REPEAT CONDITION.
*         15. INCREMENT TEST ROW ADDRESS. 
*         16. REPEAT 6 - 13 UNTIL ALL ROW ARE TESTED. 
*         17. 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.
*         18. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM14 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM14 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM14 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B5  = CHIP NUMBER TIMES FOUR. 
*         B6  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B8  = ROW NUMBER. 
*         B9  = TEMPORARY STORAGE.
*         B11 = INTERNAL COMMAND INDEX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM14 - 16K X 4 FLAG MEMORY WALKING ROW TEST II 
1  FORMAT MSM14 ERROR(S) = *DECD
2  FORMAT MSM14 16K X 4 FLAG WALKING ROW TEST II ROW=*OB
4  FORMAT MSM14 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM14 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM14 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 14D                        *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 52                          *EXIT 
* 
* -------MODULE TEST
* 
22 B3 = 2                           *SET EXPECTED STATUS
   GOSUB 55                         *RESERVE SUBROUTINE 
* 
* -------SET ALL LOCATIONS TO ZEROS 
* 
24 GOSUB 56                         *INITIALIZE FLAG WORD 
26 GOSUB 70                         *SELECTIVE CLEAR SUBROUTINE 
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 57                         *INCREMENT ADDRESS ROUTINE
   IF(B2.EQ.0) GOTO 27              *DONE ALL ADDRESSES THIS CHIP 
   B6 = B5+B1                       *SET THE UPPER 6 BITS 
   GOTO 26
27 B5 = B5+4                        *BUMP CHIP
   B5 = B5
   B2 = 17B 
   IF(B5.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B5.NE.100B) GOTO 26           *ALL CHIPS NOT DONE 
* 
* -------SELECT SET ALL LOCATIONS IN TEST ROW ALL CHIPS 
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
30 B11 = 1                          *SET INDEX FOR SELSET 
   IF(ES.AND.CM.EQ.0) MSG 2 (B8) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOSUB 64                         *ENTER SELECT SET/CLEAR SUBROUTINE
* 
* -------EQUALITY STATUS ALL LOCATIONS
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
32 GOSUB 56                         *INITIALIZE ADDRESSES 
34 B2 = B2.AND.7760B
   IF(B9.EQ.0) GOTO 36              *ROW ZERO 
   IF(B2.AND.760B.EQ.B9) B2=B2+17B
   GOTO 37
36 IF(B2.AND.760B.EQ.B9) B2=B2+17B  *NOT ROW ZERO 
37 GOSUB 72                         *EQAULITY STATUS SUBROUTINE 
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 57                         *INCREMENT ADDRESS ROUTINE
   IF(B2.NE.0) GOTO 34              *NOT DONE ALL ADDRESSES 
   IF(B1.NE.0) GOTO 34              *NOT DONE ALL ADDRESSES 
   B5 = B5 + 4                      *INCREMENT THE CHIP 
   B6 = B5 + B1                     *SET UPPER 6 BITS 
   IF(B5.EQ.40) GOSUB 55            *RERESERVE THE CHANNEL
   IF(B5.NE.100) GOTO 34            *DO ALL CHIPS 
* 
* -------SELECT CLEAR ALL ONES TEST ROW ALL CHIPS 
* 
   GOSUB 55                         *RESERVE SUBROUTINE 
40 B11 = 0                          *COMMAND FOR SELECT SET ROUTINE 
   GOSUB 64                         *ENTER SELECT SET/CLEAR SUBROUTINE
* 
   GOSUB 54                         *CHECK REPEAT CONDITION 
44 GOTO 30 WHILE (B8+1.LT.40)       *DO ALL ROWS
   B8 = 0                           *CLEAR ROWS 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 GOSUB 55                         *RESERVE SUBROUTINE 
   IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 30                   *REPEAT CONDITION 
* 
* -------RESERVE LSP SUBROUTINE 
* 
55 B14 = 21B                        *RESLSP COMMAND NUMBER
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B1 = 0                           *INITIALIZE FLAG WORD 
   B9 = B8.LS.4                     *INITIALIZE ROW 
   B2 = 17B                         *SET LOWER
   B5 = 0                           *SET CHIP TO ZERO 
   B6 = B1
   RETURN 
57 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.AND.7760.EQ.0) B1 = B1 + 1   *INCREMENT UPPER 6 BITS 
   IF(B1.LT.4) RETURN 
   GOTO 61                          *ALL DONE 
* 
* -------INCREMENT ADDRESS SUBROUTINE ONE ROW ONLY
* 
60 B1 = 0                           *INITIALIZE FLAG WORD 
   B5 = 0 
   B6 = 0 
   B9 = B8.LS.4 
   B2 = B9.AND.760B + 17B           *SET ROW
   RETURN 
62 B2 = B2 + 1000B                  *BUMP ADDRESS 
   IF(B2.AND.7017B.EQ.17) B1=B1+1   *INCREMENT UPPER 6 BITS 
   IF(B1.LT.4) GOTO 63
61 B1 = 0                           *ALL DONE 
   B2 = 0                           *ALL DONE 
63 RETURN 
* 
* -------SELECT SET/CLEAR ALL LOCATIONS IN TEST ROW ALL CHIPS 
* 
64 GOSUB 60                         *INITIALIZE ADDRESSES 
65 IF(B11.EQ.0) GOTO 66 
   B14 = 6B                         *SELSET4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   GOTO 67
66 B14 = 10B                        *SELCLR4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
67 IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 62                         *INCREMENT ROW ADDRESS ROUTINE
   IF(B2.NE.0) GOTO 65              *DONE WITH ALL ADDRESSES
   B5 = B5 + 4                      *INCREMENT CHIP 
   B2 = B9.AND.760B + 17B           *SET ROW
   B6 = B5
   IF(B5.LT.100) GOTO 65            *DO ALL CHIPS 
   RETURN 
* 
* -------SELECT CLEAR 4 BIT FLAG REGISTER 
* 
70 B14 = 10B                        *SELCLR4 COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B6 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------EQUALITY STATUS 4 BIT FLAG REGISTER
* 
72 B14 = 12B                        *EQUSTA4 COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B6 B2, ABT 74   *EQUALITY STATUS FLAG REGISTER 
   RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
   B14 = 21B                        *RESLSP COMMAND NUMBER
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM14 -   16K X 4 WALKING ROW PART TWO
   MODULE MSM15,DESM(171,211)LOCK 
*** MSM15 - 4 BIT FLAG REGISTER ADDRESSING TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FLAG REGISTER OPERATIONS SELECTIVE CLEAR, SELECTIVE SET,
*         AND EQUALITY STATUS WILL BE USED IN TO TEST ADDRESSING FOR
*         THE 4 BIT FLAG REGISTER.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECT CLEAR WITH ALL ONES TO CLEAR
*             MEMORY. 
*         5.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  4 BIT FLAG REG SELSET WITH ALL ZEROS IN THE FLAG WORD.
*         8.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. 4 BIT FLAG REG SELSET WITH 01 IN THE FLAG WORD AND THE
*             ADDRESS SET TO 1 INITIALLY. 
*         11. CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         12. INCREMENT ADDRESS AND THE FLAG WORD SO THAT THE ADDRESSES 
*             AND THE FLAG WORD ARE AS FOLLOWS. 
*             ADDRESS 00000          FLAG WORD 00 
*                     00001                    01 
*                     00002-00003              02 
*                     00004-00007              03 
*                     00010-00017              04 
*                       ..   ..                .. 
*                     20000-37777              16 
*         13. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT IF ADDRESS 
*             EQUAL TO 2000 TO PREVENT I/O TIMEOUT. 
*         14. REPEAT STEPS 10 -13 FOR ALL ADDRESSES.
*         15. 4 BIT FLAG REG EQUSTA WITH THE SAME ADDRESSES AND PATTERN 
*             AS ABOVE. 
*         16. CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         17. REPEAT STEPS 13 AND 15 - 16 FOR ALL ADDRESSES.
*         18  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         19. 4 BIT FLAG REG CLEAR WITH ALL ONES TO CLEAR MEMORY. 
*         20. 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.
*         21. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM15 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM15 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM15 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  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B4  = TEMPORARY STORAGE.
*         B5  = TEMPORARY STORAGE.
*         B6  = TEMPORARY STORAGE.
*         B7  = DATA WORD FOR FLAG REGISTER DATA. 
*         B11 = INTERNAL COMMAND INDEX. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM15 - 4 BIT FLAG REGISTER ADDRESSING TEST 
1  FORMAT MSM15 ERROR(S) = *DECD
2  FORMAT MSM15 4 BIT FLAG REGISTER ADDRESS TEST ADD=*O*OCTB
4  FORMAT MSM15 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM15 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM15 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE SELSET4=6, SELCLR4=10B, EQUSTA4=12B, RESLSP=21B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 15D                        *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 36                          *EXIT 
* 
* -------MODULE TEST
* 
22 B3 = 2                           *SET EXPECTED STATUS
24 GOSUB 57                         *RESERVE SUBROUTINE 
* 
* -------SELECT CLEAR MEMORY ALL ONES 
* 
26 GOSUB 42                         *CLEAR MEMORY SUBROUTINE
* 
* -------SELECT SET ADDRESSING TEST 
* 
   GOSUB 57                         *RESERVE SUBROUTINE 
30 B11 = 0                          *SET INDEX TO SELECT SET
   GOSUB 46                         *SELECT SET/EQUALITY STATUS SUBROUTINE
* 
* -------EQUALITY STATUS ALL LOCATIONS
* 
   GOSUB 57                         *RESERVE SUBROUTINE 
32 B11 = 1                          *SET INDEX TO EQUALITY STATUS 
   GOSUB 46                         *SELECT SET/EQUALITY STATUS SUBROUTINE
* 
* -------SELECT CLEAR MEMORY ALL ONES 
* 
   GOSUB 57                         *RESERVE SUBROUTINE 
33 GOSUB 42                         *CLEAR MEMORY SUBROUTINE
* 
* 
* -------MODULE REPEAT/EXIT 
* 
34 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 36       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
36 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------SELECT CLEAR MEMORY ALL ONES 
* 
42 GOSUB 60                         *INITIALIZE FLAG WORD 
44 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   GOSUB 66                         *INCREMENT ADDRESS ROUTINE
   IF(B2.AND.7760.NE.0) GOTO 44     *NOT DONE 
   IF(B1.EQ.40) GOSUB 57            *RERESERVE THE CHANNEL
   IF(B2.NE.0) GOTO 44              *NOT DONE ALL ADDRESSES THIS CHIP 
   RETURN 
* 
* -------SELECT SET/EQUALITY STATUS ADDRESSING TEST 
* 
46 B1 = 0                           *INITIALIZE FLAG WORD 
   B2 = 0                           *INITIALIZE FLAG WORD 
   B7 = 0                           *PRESET COUNTER 
47 IF(B11.EQ.0) GOTO 50             *SELECT SET 
   B14 = EQUSTA4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT EQUSTA B1 B2, ABT 74   *EQUALITY STATUS FLAG REGISTER 
   GOTO 52
50 B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B1 B2, ABT 74   *SELECT SET FLAG REGISTER
52 IF(SB(0).NE.B3) ERROR 1/1 GOSUB 74   *IF BAD STATUS
   B6 = B2.RS.4                     *LOWER 8 BITS OF ADDRESS
   B4 = B1.AND.17B                  *NEXT 4 BITS OF ADDRESS 
   B6 = B4.LS.8+B6                  *PUT 12 BITS OF ADDRESS FOR MESSAGE 
   B5 = B1.RS.4                     *PUT 2 BITS OF ADDRESS FOR MESSAGE
*IF DEF,CMSE17X,1 
   IF(B6.NE.0) GOTO 53              *SKIP MESSAGE FOR OFFLINE 
   IF(ES.AND.CM.EQ.0) MSG 2 (B5,B6) TO DISPLAY  *DISPLAY RUNNING MESSAGE
53 GOSUB 66                         *INCREMENT ADDRESS ROUTINE
   B2 = B2.AND.7760B                *CLEAR FLAG WORD
   IF(B1.NE.0) GOTO 54              *IN THE UPPER 6 BITS OF ADDRESS 
   B7 = 1                           *DATA WORD
   IF(B2.LT.40) GOTO 56             *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 2                           *DATA WORD
   IF(B2.LT.100) GOTO 56            *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 3                           *DATA WORD
   IF(B2.LT.200) GOTO 56            *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 4                           *DATA WORD
   IF(B2.LT.400) GOTO 56            *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 5                           *DATA WORD
   IF(B2.LT.1000) GOTO 56           *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 6                           *DATA WORD
   IF(B2.LT.2000) GOTO 56           *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 7                           *DATA WORD
   IF(B2.LT.4000) GOTO 56           *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 10                          *DATA WORD
54 IF(B1.LT.1) GOTO 56              *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 11                          *DATA WORD
   IF(B1.LT.2) GOTO 56              *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 12                          *DATA WORD
   IF(B1.LT.4) GOTO 56              *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 13                          *DATA WORD
   IF(B1.LT.10) GOTO 56             *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 14                          *DATA WORD
   IF(B1.LT.20) GOTO 56             *NOT DONE ALL ADDRESSES THIS DATA 
   IF(B2.AND.7760.NE.0) GOTO 55     *NOT ZERO SKIP RESERVE
   IF(B1.EQ.30) GOSUB 57            *RERESERVE THE CHANNEL
55 B7 = 15                          *DATA WORD
   IF(B1.LT.40) GOTO 56             *NOT DONE ALL ADDRESSES THIS DATA 
   IF(B2.AND.7760.NE.0) GOTO 61     *NOT ZERO SKIP RESERVE
   IF(B1.EQ.60) GOSUB 57            *RERESERVE THE CHANNEL
61 B7 = 16                          *DATA WORD
   IF(B1.LT.100) GOTO 56            *NOT DONE ALL ADDRESSES THIS DATA 
   B7 = 17
56 B2 = B2 + B7                     *ADD DATA TO ADDRESS
   IF(B7.NE.17) GOTO 47             *NOT DONE ALL ADDRESSES THIS CHIP 
   RETURN 
* 
* -------RESERVE LSP SUBROUTINE 
* 
57 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
60 B1 = 0                           *INITIALIZE FLAG WORD 
   B2 = 17B                         *SET LOWER
   RETURN 
* 
* -------INCREMENT ADDRESS DATA SUBROUTINE
* 
66 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.AND.7760.EQ.0) B1=B1+1     *INCREMENT UPPER 6 BITS 
   IF(B1.LT.100) RETURN             *NOT DONE ALL ADDRESSES 
   B2 = 0                           *ALL DONE 
67 RETURN 
* 
* -------PROCESS COMMAND ABORTS AND MODULE DETECTED ERRORS
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   IF(EC.GT.4000) CALL 98A          *CALL COMMAND ABORT PROCESSOR 
   IF(EC.LT.4000) CALL 98C          *CALL MODULE ERROR PROCESSOR
75 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 34                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM15 -   4 BIT FLAG REGISTER ADDRESSING TEST 
   MODULE MSM17,DESM(171,211)LOCK 
*** MSM17 - LOW SPEED PORT BUFFER TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE BLOCKS MEMORY REFERENCES BEYOND THE LOW SPEED PORT
*         ALLOWING DATA TURNAROUND THROUGH THE LOW SPEED PORT 16 WORD 
*         DATA BUFFER.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET OUTPUT BUFFER TO ALL ZEROS. 
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  WRITEPB 80 (12BIT) WORDS INTO THE PORT DATA BUFFER. 
*         5.  CHECK STATUS BUFFER FOR AN ACCEPT.
*         6.  READPB 80 (12BIT) WORDS FROM THE PORT DATA BUFFER.
*         7.  COMPARE OUTPUT BUFFER AND INPUT BUFFER FOR 120B WORDS.
*         8.  IF REPEAT CONDITION REPEAT STEPS 3-7. 
*         9.  REPEAT STEPS 3-7 FOR THE FOLLOWING 12 BIT PATTERNS. 
*             ALL ONES, 2525B, 5252B, SLIDING ONES, SLIDING ZEROS,
*             INCRMENTING FORM ZERO TO 117B AND RANDOM PATTERN. 
*             TWENTY DECIMAL DIFFERENT RANDOM DATA PATTERNS 
*             ARE USED EACH PASS OF THE MODULE. 
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM17 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM17 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM17 AL TOO LOW NEEDS AL=3 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B2  = RANDOM PATTERN COUNTER. 
*         B3  = EXPECTED SUBSYSTEM STATUS.
*         B4  = CONDITION NUMBER. 
*         B5  = DATA PATTERNS.
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
*         IF RM OR RC IS SELECTED, 20D DIFFERENT RANDOM DATA PATTERNS 
*         ARE USED EACH PASS OF THE MODULE. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM17 - WRITE/READ PORT BUFFER
1  FORMAT MSM17 ERROR(S) = *DECD
3  FORMAT MSM17 WRITE/READ PORT BUFFER COND=*OB PASS=*OB
4  FORMAT MSM17 EC=*DECD, LC=*DECD
5  FORMAT MSM17 EC=*DECD, LC=*DECD COND=*OB PASS=*OB
*IF DEF,MVE,1 
6  FORMAT MSM17 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
6  FORMAT MSM17 ACCESS LEVEL TOO LOW NEEDS AL=3 
* 
   EQUATE BUFL TO 120B              *BUFFER LENGTH EQUATE 
   EQUATE RDPB=17B, WRPB=30B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 17D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.3) GOTO 22             *CONTINUE 
21 MSG 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
* 
* -------MODULE TEST
* 
22 B3 = 10                          *SET EXPECTED STATUS
   B2 = 0                           *ZERO RANDOM PATT COUNTER 
24 B4 = 1                           *SET CONDITION NUMBER 1 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
26 B4 = 2                           *SET CONDITION NUMBER 2 
   DUP 7777B TO OB FOR BUFL         *WRITE ALL ONES PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
30 B4 = 3                           *SET CONDITION NUMBER 3 
   DUP 2525B TO OB FOR BUFL         *WRITE 2525 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
32 B4 = 4                           *SET CONDITION NUMBER 4 
   DUP 5252B TO OB FOR BUFL         *WRITE 5252 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
34 B4 = 5                           *SET CONDITION NUMBER 5 
   B5 = 1                           *INITIAL PATTERN
35 DUP B5 TO OB FOR BUFL            *WRITE B5 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   B5 = B5.LS.1 
   B2 = B2+1                        *INCREMENT INTERNAL COUNTER 
   IF(B5.NE.1) GOTO 35              *DO ALL 12 BITS 
   B2 = 0                           *ZERO RANDOM PATT COUNTER 
36 B4 = 6                           *SET CONDITION NUMBER 6 
   B5 = 7776B                       *INITIAL PATTERN
37 DUP B5 TO OB FOR BUFL            *WRITE B5 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   B5 = B5.LS.1 
   B2 = B2+1                        *INCREMENT INTERNAL COUNTER 
   IF(B5.NE.7776) GOTO 37           *DO ALL 12 BITS 
   B2 = 0                           *ZERO RANDOM PATT COUNTER 
40 B4 = 7                           *SET CONDITION NUMBER 7 
   B5 = 0                           *INITIAL PATTERN
41 OB(B5) = B5                      *WRITE B5 PATTERN IN OB 
   GOTO 41 WHILE(B5+1.LT.BUFL)      *DO ALL 120B WORDS
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
42 B4 = 10B                         *SET CONDITION NUMBER 10B 
   RANDOM TO OB FOR BUFL, START RT  *WRITE RANDOM PATT IN OB
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   GOTO 42 WHILE(B2+1.LT.20D)       *REPEAT 20D TIMES 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 24              *IF CONDITION 1 
   IF(B4.EQ.2) GOTO 26              *IF CONDITION 2 
   IF(B4.EQ.3) GOTO 30              *IF CONDITION 3 
   IF(B4.EQ.4) GOTO 32              *IF CONDITION 4 
   IF(B4.EQ.5) GOTO 34              *IF CONDITION 5 
   IF(B4.EQ.6) GOTO 36              *IF CONDITION 6 
   IF(B4.EQ.7) GOTO 40              *IF CONDITION 7 
   IF(B4.EQ.10B) GOTO 42            *IF CONDITION 10B 
   GOTO 50                          *CHECK REPEAT MODULE
* 
* -------WRITEPB/READPB SUBROUTINE
* 
60 B11 = 0                          *INITIALIZE INT. LOOP COUNT 
   WC = BUFL                        *SET WC FOR 120B
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 3 (B4,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   IF(ES.AND.CM.NE.0) MSG 5 (B13,B0,B4,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
   B14 = WRPB                       *COMMAND NUMBER 
   WRITEPB, ABT 74                  *WRITE PORT BUFFER
   IF(SB(0).NE.B3) ERROR 1/5 GOSUB 70   *IF BAD STATUS
62 B14 = RDPB                       *COMMAND NUMBER 
   READPB, ABT 74                   *READ PORT BUFFER 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 66
   GOTO 62 WHILE(B11+1.LT.2D)       *LOOP 2D TIMES
   GOSUB 54                         *CHECK REPEAT CONDITION 
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS MODULE DETECTED ERRORS 
* 
70 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98C                         *CALL MODULE ERROR PROCESSOR
   GOTO 75                          *CHECK ERROR COUNT
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
75 IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM17 -   LOW SPEED PORT BUFFER TEST
   MODULE MSM19,DESM(171,211)LOCK 
*** MSM19 - MEMORY DATA PATH TEST PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         A SMALL BLOCK OF MEMORY WILL BE TESTED FOR BASIC BIT PICK/DROP
*         ERRORS USING PATTERNS OF ZEROS, ONES, SLIDING ONE, SLIDING
*         ZERO, INCREMENTING PATTERN, AND RANDOM. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET OUTPUT BUFFER ALL ZEROES. 
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  WRITE ONE RECORD FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         5.  READ ONE RECORD TO INPUT BUFFER FROM ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         6.  COMPARE IB TO OB. 
*         7.  IF REPEAT CONDITION REPEAT STEPS 4-6. 
*         8.  REPEAT STEPS 3-7 FOR THE FOLLOWING PATTERNS.
*             12 BIT SLIDING ONES, 12 BIT SLIDING ZEROS,
*             12 BIT 0001 THEN INCREMENTING BY 1 UNTIL 7777B, 
*             RANDOM DATA USING 20 DECIMAL DIFFERENT PATTERNS EACH
*             PASS. 
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM19 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM19 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM19 AL TOO LOW NEEDS AL=3 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B4  = CONDITION NUMBER. 
*         B5  = DATA PATTERNS.
*         B6  = RANDOM PATTERN COUNTER. 
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
*         IF RM OR RC IS SELECTED, 20D DIFFERENT RANDOM DATA PATTERNS 
*         ARE USED EACH PASS OF THE MODULE. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM19 - MEMORY DATA PATH TEST PART I
1  FORMAT MSM19 ERROR(S) = *DECD
3  FORMAT MSM19 MEMORY DATA PATH I ADD=*OCT*OCTB DATA=*OCTB 
4  FORMAT MSM19 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM19 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
6  FORMAT MSM19 ACCESS LEVEL TOO LOW NEEDS AL=3 
* 
   EQUATE BUFL TO 50B               *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 19D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.3) GOTO 22             *CONTINUE 
21 MSG 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
* 
* -------MODULE TEST
* 
24 B6 = 0                           *ZERO RANDOM PATTERN COUNTER
   B4 = 1                           *SET CONDITION NUMBER 1 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
26 B4 = 2                           *SET CONDITION NUMBER 2 
   DUP 7777B TO OB FOR BUFL         *WRITE ALL ONES PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
30 B4 = 3                           *SET CONDITION NUMBER 3 
   B5 = 1                           *INITIAL PATTERN
31 DUP B5 TO OB FOR BUFL            *WRITE B5 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   B5 = B5.LS.1 
   IF(B5.NE.1) GOTO 31              *DO ALL 12 BITS 
32 B4 = 4                           *SET CONDITION NUMBER 4 
   B5 = 7776B                       *INITIAL PATTERN
33 DUP B5 TO OB FOR BUFL            *WRITE B5 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   B5 = B5.LS.1 
   IF(B5.NE.7776) GOTO 33           *DO ALL 12 BITS 
34 B4 = 5                           *SET CONDITION NUMBER 5 
*IF DEF,CMSE17X,1 
   GOTO 36                          *SKIP INCREMENTING PATTERN FOR OFFLINE
   B5 = 1                           *INITIAL PATTERN
35 DUP B5 TO OB FOR BUFL            *WRITE B5 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   GOTO 35 WHILE(B5+1.NE.0)         *DO ALL BITS
36 B4 = 6                           *SET CONDITION NUMBER 6 
   RANDOM TO OB FOR BUFL, START RT  *WRITE RANDOM PATT IN OB
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   GOTO 36 WHILE(B6+1.LT.20D)       *REPEAT 20D TIMES 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 24              *IF CONDITION 1 
   IF(B4.EQ.2) GOTO 26              *IF CONDITION 2 
   IF(B4.EQ.3) GOTO 30              *IF CONDITION 3 
   IF(B4.EQ.4) GOTO 32              *IF CONDITION 4 
   IF(B4.EQ.5) GOTO 34              *IF CONDITION 5 
   IF(B4.EQ.6) GOTO 36              *IF CONDITION 6 
   GOTO 50                          *CHECK REPEAT MODULE
* 
* -------SUBROUTINE PROCESS 
* 
60 B11 = 0                          *INITIALIZE INT. LOOP COUNT 
   WC = BUFL                        *SET WC FOR 50B 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   IF(ES.AND.CM.EQ.0) MSG 3 (SB(13),SB(14),OB) TO DISPLAY  *RUNNING MSG 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
62 B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 66
   GOTO 62 WHILE(B11+1.LT.2D)       *LOOP 2D TIMES
   GOSUB 54                         *CHECK REPEAT CONDITION 
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM19 -   MEMORY DATA PATH TEST PART ONE
   MODULE MSM20,DESM(171,211)LOCK 
*** MSM20 - MEMORY DATA PATH TEST PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE VERIFIES THAT THE DATA TRANSMISSION PATH OF 
*         MEMORY IS OPERATIONAL. THE TEST WILL RUN THE FOLLOWING
*         PATTERNS  SLIDING ZERO, SLIDING ONE, 5252, 2525, 6161,
*         1616, AND 20 DIFFERENT RANDOM PATTERN. SIXTY FOUR 
*         DECIMAL WORDS OF MEMORY STARTING AT ADDRESS (P0-P1 OR 
*         PREALLOCATTED DEPENDING ON ACCESS LEVEL) ARE USED.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  INITIALIZE OUTPUT BUFFER FOR FIRST PATTERN. 
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         5.  IF FIRST PASS AND AL 10 OR GREATER WRITE 500B WORDS FROM
*             OUTPUT BUFFER TO ADDRESS (P0-P1 PLUS 100B). 
*         6.  READ 500B WORDS TO INPUT BUFFER FROM ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         7.  COMPARE IB TO OB. 
*         8.  REPEAT STEPS 3-7 FOR THE FOLLOWING 12 BIT PATTERNS. 
*             5252, 2525, 6161, 1616, SLIDING ONES, SLIDING ZEROS,
*             AND RANDOM DATA USING 20 DECIMAL DIFFERENT PATTERNS 
*             EACH PASS.
*         9.  IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         10. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM20 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM20 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM20 AL TOO LOW NEEDS AL=3 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B4  = CONDITION NUMBER. 
*         B5  = DATA PATTERNS.
*         B6  = RANDOM PATTERN COUNTER. 
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
*         IF RM OR RC IS SELECTED, 20D DIFFERENT RANDOM DATA PATTERNS 
*         ARE USED EACH PASS OF THE MODULE. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM20 - MEMORY DATA PATH TEST PART II 
1  FORMAT MSM20 ERROR(S) = *DECD
3  FORMAT MSM20 MEMORY DATA PATH II ADD=*OCT*OCTB DATA=*OCTB
4  FORMAT MSM20 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM20 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
6  FORMAT MSM20 ACCESS LEVEL TOO LOW NEEDS AL=3 
* 
   EQUATE BUFL TO 500B              *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 20D                        *MODULE NUMBER
   MSG 0 TO PRINT,DISPLAY           *PRINT,DISPLAY MODULE TITLE 
*IF DEF,MVE,1 
   IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
   IF (AL.GE.3) GOTO 22             *CONTINUE 
21 MSG 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1                          *SET LOWER STARTING ADDRESS 
* 
* -------MODULE TEST
* 
24 B6 = 0                           *ZERO RANDOM PATTERN COUNTER
   B4 = 1                           *SET CONDITION NUMBER 1 
   DUP 5252B TO OB FOR BUFL         *WRITE 5252 INTO OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
26 B4 = 2                           *SET CONDITION NUMBER 2 
   DUP 2525B TO OB FOR BUFL         *WRITE ALL 2525 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
30 B4 = 3                           *SET CONDITION NUMBER 3 
   DUP 6161B TO OB FOR BUFL         *WRITE 6161 INTO OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
32 B4 = 4                           *SET CONDITION NUMBER 4 
   DUP 1616B TO OB FOR BUFL         *WRITE ALL 1616 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
34 B4 = 5                           *SET CONDITION NUMBER 5 
   B5 = 1                           *INITIAL PATTERN
35 DUP B5 TO OB FOR BUFL            *WRITE B5 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   B5 = B5.LS.1 
   IF(B5.NE.1) GOTO 35              *DO ALL 12 BITS 
36 B4 = 6                           *SET CONDITION NUMBER 6 
   B5 = 7776B                       *INITIAL PATTERN
37 DUP B5 TO OB FOR BUFL            *WRITE B5 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   B5 = B5.LS.1 
   IF(B5.NE.7776) GOTO 37           *DO ALL 12 BITS 
40 B4 = 7                           *SET CONDITION NUMBER 7 
   RANDOM TO OB FOR BUFL, START RT  *WRITE RANDOM PATT IN OB
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   GOTO 40 WHILE(B6+1.LT.20D)       *REPEAT 20D TIMES 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 24              *IF CONDITION 1 
   IF(B4.EQ.2) GOTO 26              *IF CONDITION 2 
   IF(B4.EQ.3) GOTO 30              *IF CONDITION 3 
   IF(B4.EQ.4) GOTO 32              *IF CONDITION 4 
   IF(B4.EQ.5) GOTO 34              *IF CONDITION 5 
   IF(B4.EQ.6) GOTO 36              *IF CONDITION 6 
   IF(B4.EQ.7) GOTO 40              *IF CONDITION 7 
   GOTO 50                          *CHECK REPEAT MODULE
* 
* -------SUBROUTINE PROCESS 
* 
60 B11 = 0                          *INITIALIZE INT. LOOP COUNT 
   WC = BUFL                        *SET WC FOR 500B
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 3 (SB(13),SB(14),OB) TO DISPLAY  *RUNNING MSG 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   IF(AL.LE.2) GOTO 62              *IF CONCURRENT DO NOT DO SECOND WRITE 
   IF(B4.NE.1) GOTO 62              *IF NOT FIRST PASS
   B2 = B2+100                      *SET ADDRESS TO CLEAR DOUBLE ERRORS 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   B1 = P0                          *RESET UPPER STARTING ADDRESS 
   B2 = P1                          *RESET LOWER STARTING ADDRESS 
62 B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 66
   GOTO 62 WHILE(B11+1.LT.2D)       *LOOP 2D TIMES
   GOSUB 54                         *CHECK REPEAT CONDITION 
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM20 -   MEMORY DATA PATH TEST PART TWO
   MODULE MSM21,DESM(171,211)LOCK 
*** MSM21 - ADDRESS PATH TEST PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE TESTS ADDRESS LINES 0-21 IN THE SUBSYSTEM FOR 
*         SOLID PICKS OR DROPS AND FOR TWO LINES SHORTED TOGETHER.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  CALL MODULE 49A TO CLEAR TEST ADDRESSES.
*         4.  SET TEST ADDRESS TO ONE.
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  WRITE SINGLE WORD OF ZEROS TO ADDRESS ZERO. 
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  WRITE SINGLE WORD OF ONES TO TEST ADDRESS.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10  READ ADDRESS ZERO AND CHECK DATA. 
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. READ TEST ADDRESS AND CHECK DATA. 
*         13. REPEAT 5-12 22 TIMES FOR EACH BIT OF THE TEST ADDRESS SET 
*             TO ONE AND ALL OTHERS SET TO ZERO.
*         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 
* 
*         MSM21 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM21 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM21 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXTERNAL LOOP COUNTER 
*         B6  = INDEX TO DATA BUFFER. 
*         B7  = TEST ADDRESS UPPER. 
*         B8  = TEST ADDRESS LOWER. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR ADDRESSES TO BE TESTED.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM21 - ADDRESS PATH TEST PART I
1  FORMAT MSM21 ERROR(S) = *DECD
2  FORMAT MSM21 ADDRESS PATH TEST I PASS *DECD
3  FORMAT MSM21 ADDRESS PATH TEST I ADDRESS=*OCT*OCTB 
4  FORMAT MSM21 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM21 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM21 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B                *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 21D                        *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 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 CALL 49A                         *CLEAR ADDRESSES TO BE TESTED 
23 B7 = 0                           *INITIALIZE TEST ADDRESS
   B8 = 1                           *INITIALIZE TEST ADDRESS
* 
* -------MODULE TEST
* 
24 B1 = 0                           *SET ADDRESS TO ZERO
   B2 = 0                           *SET ADDRESS TO ZERO
   B6 = 10B                         *SET BUFFER INDEX 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   COPY OB(0) TO OB(B6) FOR BUFL    *MOVE DATA FOR COMPARE
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B1 = B7                          *SET TEST ADDRESS 
   B2 = B8                          *SET TEST ADDRESS 
   DUP 7777B TO OB FOR BUFL         *WRITE ALL ONES PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B1 = 0                           *SET ADDRESS TO ZERO
   B2 = 0                           *SET ADDRESS TO ZERO
   GOSUB 62                         *GO TO READ SUBROUTINE
   COPY IB(0) TO IB(B6) FOR BUFL    *MOVE DATA FOR COMPARE
   B1 = B7                          *SET TEST ADDRESS 
   B2 = B8                          *SET TEST ADDRESS 
   GOSUB 62                         *GO TO READ SUBROUTINE
   GOSUB 63                         *GO TO COMPARE SUBROUTINE 
   B6 = 0                           *SET BUFFER INDEX 
   GOSUB 63                         *GO TO COMPARE SUBROUTINE 
   GOSUB 54                         *CHECK REPEAT CONDITION 
   B8 = B8.LS.1                     *SLIDE THE ADDRESS
   IF(B8.EQ.1) GOTO 30              *IF DONE WITH LOWER BITS
   IF(B8.EQ.0) GOTO 32
   GOTO 24                          *DO NEXT BIT
30 B7 = 1                           *SET TEST ADDRESS FOR UPPER BITS
   B8 = 0                           *SET TEST ADDRESS FOR UPPER BITS
   GOTO 24                          *DO NEXT BIT
32 B7 = B7.LS.1                     *SLIDE THE ADDRESS
   IF(B7.EQ.1) GOTO 34              *IF DONE WITH ALL BITS 16 MEG 
   IF(B7.LE.P2) GOTO 24             *IF NOT DONE WITH ALL BITS
*IF DEF,CMSE17X,1 
   IF(ES.AND.CM.EQ.0) MSG 2 (B3) TO DISPLAY   *DISPLAY RUNNING MESSAGE
34 GOTO 23 WHILE(B3+1.LT.10D) 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 23
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 24                   *IF REPEAT CONDITION
* 
* -------SUBROUTINE PROCESS 
* 
60 WC = BUFL                        *SET WC FOR 5B
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
*IF -DEF,CMSE17X,1
   IF(ES.AND.CM.EQ.0) MSG 3 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
62 WC = BUFL                        *SET WC FOR 5B
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   RETURN 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB(B6) TO OB(B6) FOR WC, ABT 66
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM21 -   ADDRESS PATH TEST PART ONE
   MODULE MSM22,DESM(171,211)LOCK 
*** MSM22 - ADDRESS PATH TEST PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE TESTS ADDRESS LINES 0-21 IN THE SUBSYSTEM FOR 
*         SOLID PICKS OR DROPS AND FOR TWO LINES SHORTED TOGETHER.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  CALL MODULE 49A TO CLEAR ADDRESSES TO BE TESTED.
*         4.  SET TEST ADDRESS TO LWA MINUS 1.
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  WRITE SINGLE WORD OF ZEROS TO ADDRESS LWA.
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  WRITE ONES TO TEST ADDRESS. 
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. READ ADDRESS LWA AND CHECK DATA.
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. READ TEST ADDRESS AND CHECK DATA. 
*         13. REPEAT STEPS 5-13 22 TIMES FOR EACH BIT OF THE ADDRESS SET
*             TO ZERO AND ALL OTHERS SET TO ONE.
*         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 
* 
*         MSM22 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM22 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM22 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXTERNAL LOOP COUNTER 
*         B6  = INDEX TO DATA BUFFER. 
*         B7  = TEST ADDRESS UPPER. 
*         B8  = TEST ADDRESS LOWER. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR ADDRESSES TO BE TESTED.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM22 - ADDRESS PATH TEST PART II 
1  FORMAT MSM22 ERROR(S) = *DECD
2  FORMAT MSM21 ADDRESS PATH TEST II PASS *DECD 
3  FORMAT MSM22 ADDRESS PATH TEST II ADDRESS=*OCT*OCTB
4  FORMAT MSM22 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM22 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM22 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B                *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 22D                        *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 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B7 = P2                          *INITIALIZE TEST ADDRESS TO MAX SET 
   B8 = 7776B                       *INITIALIZE TEST ADDRESS
* 
* -------MODULE TEST
* 
24 B1 = P2                          *SET ADDRESS TO MAX ADDRESS SET 
   B2 = 7777B                       *SET ADDRESS TO MAX 
   B6 = 10B                         *SET BUFFER INDEX 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   COPY OB(0) TO OB(B6) FOR BUFL    *MOVE DATA FOR COMPARE
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B1 = B7                          *SET TEST ADDRESS 
   B2 = B8                          *SET TEST ADDRESS 
   DUP 7777B TO OB FOR BUFL         *WRITE ALL ONES PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B1 = P2                          *SET ADDRESS TO MAX SET 
   B2 = 7777B                       *SET ADDRESS TO MAX 
   GOSUB 62                         *GO TO READ SUBROUTINE
   COPY IB(0) TO IB(B6) FOR BUFL    *MOVE DATA FOR COMPARE
   B1 = B7                          *SET TEST ADDRESS 
   B2 = B8                          *SET TEST ADDRESS 
   GOSUB 62                         *GO TO READ SUBROUTINE
   GOSUB 63                         *GO TO COMPARE SUBROUTINE 
   B6 = 0                           *SET BUFFER INDEX 
   GOSUB 63                         *GO TO COMPARE SUBROUTINE 
   GOSUB 54                         *CHECK REPEAT CONDITION 
   B8 = B8.LS.1                     *SLIDE THE ADDRESS
   IF(B8.EQ.7776B) GOTO 30          *IF DONE WITH LOWER BITS
   IF(B8.EQ.7777B) GOTO 32
   GOTO 24                          *DO NEXT BIT
30 B7 = P2-1                        *SET TEST ADDRESS FOR UPPER BITS
   B8 = 7777B                       *SET TEST ADDRESS FOR LOWER BITS
   GOTO 24                          *DO NEXT BIT
32 B7 = B7+6000B                    *SET THE UPPER BITS 
   B7 = B7.LS.1                     *SLIDE THE ADDRESS
   B7 = B7.AND.P2                   *SET BITS BACK TO MAX SET 
   IF(B7.NE.P2) GOTO 24             *IF NOT DONE WITH ALL BITS
*IF DEF,CMSE17X,1 
   IF(ES.AND.CM.EQ.0) MSG 2 (B3) TO DISPLAY   *DISPLAY RUNNING MESSAGE
   GOTO 22 WHILE(B3+1.LT.10D) 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 24                   *IF REPEAT CONDITION
* 
* -------SUBROUTINE PROCESS 
* 
60 WC = BUFL                        *SET WC FOR 5B
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
*IF -DEF,CMSE17X,1
   IF(ES.AND.CM.EQ.0) MSG 3 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 72   *WRITE TO SUBSYSTEM 
61 RETURN 
62 WC = BUFL                        *SET WC FOR 5B
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   RETURN 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB(B6) TO OB(B6) FOR WC, ABT 66
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
72 IF(SB.NE.3) GOTO 74              *IF NOT ABORT AND ACCEPT
   IF(B1.NE.P2) GOTO 74             *IF NOT UPPER MOST ADDRESS
   IF(B2.NE.7777B) GOTO 74          *IF NOT UPPER MOST ADDRESS
   GOTO 61                          *IF LAST ADDRESS CONTINUE 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM22 -   ADDRESS PATH TEST PART TWO
   MODULE MSM23,DESM(171,211),LOCK
***  MSM23 - DATA ONES AND ZEROS TEST (DMA) 
**
* 
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH FROM CM TO THE STONET SUBSYSTEM, AND 
*         FROM THE SUBSYSTEM TO CM USING DATA PATTERNS OF ALL ONES
*         AND ALL ZEROS.
* 
*    1.2  METHOD- 
* 
*         1.  IF CIO CHANNEL NOT ASSIGNED DISPLAY NOT EXECUTED MESSAGE
*             AND EXIT THE MODULE.
*         2.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         3.  INITIALIZE OUTPUT BUFFER FOR THE PATTERN TO BE USED.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         6.  READ 500B WORDS TO INPUT BUFFER FROM ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         7.  COMPARE IB TO OB. 
*         8.  REPEAT STEPS 4-7 IF REPEAT CONDITION. 
*         9.  COMPLEMENT THE DATA PATTERN.
*         10. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         11. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         12. COMPARE IB TO OB. 
*         13. REPEAT STEPS 10-12 IF REPEAT CONDITION. 
*         14. COMPLEMENT THE DATA PATTERN.
*         15. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         16. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         17. COMPARE IB TO OB. 
*         18. REPEAT STEPS 15-17 IF REPEAT CONDITION. 
*         19. REPEAT STEPS 3-18 TEN TIMES.
*         20. REPEAT STEPS 3-19 FOR ZEROS AND ONES PATTERNS.
*         21. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 18.
*         22. 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.
*         23. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM23 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM23 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM23 AL TOO LOW NEEDS AL=3 
*         MSM23 NOT EXECUTED ON NIO CHANNEL 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = NUMBER OF WORDS TO COMPARE. 
*         B7  = PATTERN NUMBER. 
*         B9  = DATA PATTERNS.
*         B11 = DATA CONVERSION INDEX FOR 64 BIT CM WORD. 
*         B12 = SHIFTER CM TO PP DATA USED FOR 64 BIT COMPARES. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(477) - INPUT DATA BUFFER
*         OB(000) TO OB(477) - OUTPUT DATA BUFFER 
*         OB(500) TO OB(501) - DATA PATTERNS
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
0  FORMAT MSM23 - DATA ONES AND ZEROS TEST (DMA)
1  FORMAT MSM23 ERROR(S) = *DECD
3  FORMAT MSM23 DATA ONES AND ZEROS TEST (DMA) PASS=*DECD 
4  FORMAT MSM23 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM23 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
5  FORMAT MSM23 AL TOO LOW NEEDS AL=3 
6  FORMAT MSM23 DOES NOT EXECUTE ON NIO CHANNEL 
* 
   DATA (OB(500),CON) 7777,0000     *DATA PATTERNS
* 
   EQUATE BUFL TO 500B              *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE CMRDESM=15B, CMWRESM=26B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 IF(SB(10).GE.40) GOTO 21         *IF DMA CHANNEL 
   MSG 6 TO DISPLAY, PRINT          *NIO CHANNEL MESSAGE
   GOTO 42                          *EXIT 
*IF DEF,MVE,1 
21 IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
21 IF (AL.GE.3) GOTO 22             *CONTINUE 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 42                          *EXIT 
22 B15 = 23D                        *MODULE NUMBER
   MSG 0 TO DISPLAY, PRINT          *DISPLAY RUNNING MESSAGE
24 B1 = P0                          *INITIALIZE UPPER ADDRESS 
   B2 = P1                          *INITIALIZE LOWER ADDRESS 
   B3 = 0                           *INITIALIZE LOOP COUNTER
   B5 = BUFL                        *BUFFER SIZE
   B7 = 0                           *PATTERN COUNT
   WC = BUFL                        *WORD COUNT EQUAL BUFFER LENGTH 
* 
* -------MODULE TEST
* 
30 DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   B9 = OB(B7+500B)                 *DATA CHECKING WORD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LOW SPEED PORT 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
* 
* -------WRITE FROM CMDMA/READ TO PP
* 
32 B4 = 1                           *SET CONDITION NUMBER 1 
   B14 = CMWRESM                    *COMMAND NUMBER 
   WRITE FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM 
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 70  *PPU READ FROM ESM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM PP/READ TO CMDMA
* 
34 B9 = OB(B7+500B).XOR.7777B       *COMPLEMENT THE DATA
   DUP B9 TO OB(0) FOR BUFL         *GENERATE PATTERN 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 70   *PPU  WRITE TO ESM
   B14 = CMRDESM                    *COMMAND NUMBER 
   READ TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM 
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM CMDMA/READ TO CMDMA 
* 
36 B4 = 3                           *SET CONDITION NUMBER 3 
   B14 = CMWRESM                    *COMMAND NUMBER 
   WRITE FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM 
   B14 = CMRDESM                    *COMMAND NUMBER 
   READ TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM 
   GOSUB 50                         *COMPARE THE DATA 
   DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   GOSUB 44                         *CHECK REPEAT CONDITION 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOTO 30 WHILE (B3+1.LT.10D)      *WRITE PATTERN 10D TIMES
   B3 = 0 
   GOTO 30 WHILE (B7+1.LT.2)        *DO NEXT PATTERN
* 
* -------MODULE REPEAT/EXIT 
* 
40 GOSUB 44                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 42       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
42 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
44 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LSP
   IF(B4.EQ.1) GOTO 30              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 34              *REPEAT CONDITION 2 
   IF(B4.EQ.3) GOTO 36              *REPEAT CONDITION 3 
   GOTO 40                          *CHECK REPEAT MODULE
* 
* -------COMPARE DATA SUBROUTINE
* 
50 IF(P4.NE.0) GOTO 54              *CONVERT 64 BIT CM WORDS FOR COMPARE
51 BA = 0                           *BUFFER INDEX 
52 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE OB(BA) TO IB(BA) FOR B5, ABT 66  *COMPARE DATA 
   B5 = BUFL                        *RESET NUMBER OF WORDS FOR COMPARE
53 RETURN 
54 IF(B4.AND.2.NE.0) B5=454B        *COMPARE COUNT FOR 64 BIT CM FORMAT 
   IF(B9.EQ.0) GOTO 51              *NO CONVERSION NECESSARY
   IF(B4.NE.1) GOTO 51              *NO CONVERSION NECESSARY
* 
* -------STORE FIRST PATTERN
* 
   B12 = 0377B                      *INITIAL DATA 
   B11 = 0                          *STARTING INDEX COUNT 
60 DUP B12 TO OB(B11) FOR 1 
   GOTO 60 WHILE(B11+20B.LE.460B) 
* 
* -------STORE SECOND PATTERN 
* 
   B12 = B12.LS.8                   *DATA EQUAL TO 7417B
   B11 = 5                          *STARTING INDEX COUNT 
62 DUP B12 TO OB(B11) FOR 1 
   GOTO 62 WHILE(B11+20B.LE.465B) 
* 
* -------STORE THIRD PATTERN
* 
   B12 = B12.LS.8                   *DATA EQUAL TO 7760B
   B11 = 12B                        *STARTING INDEX COUNT 
64 DUP B12 TO OB(B11) FOR 1 
   GOTO 64 WHILE(B11+20B.LE.472B) 
   GOTO 51
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+B5                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   B5 = BUFL-BA                     *RESET WORD COUNT 
   GOTO 52                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
70 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
76 ENDSUB GOTO 40                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM23 -   DATA ONES AND ZEROS TEST (DMA)
   MODULE MSM25,DESM(171,211),LOCK
***  MSM25 - DATA ALTERNATING ONES TEST (DMA) 
**
* 
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH FROM CM TO THE SUBSYSTEM, AND FROM THE 
*         SUBSYSTEM TO CM USING ALTERNATING ONES DATA PATTERNS. 
* 
*    1.2  METHOD- 
* 
*         1.  IF CIO CHANNEL NOT ASSIGNED DISPLAY NOT EXECUTED MESSAGE
*             AND EXIT THE MODULE.
*         2.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         3.  INITIALIZE OUTPUT BUFFER FOR THE PATTERN TO BE USED.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         6.  READ 500B WORDS TO INPUT BUFFER FROM ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         7.  COMPARE IB TO OB. 
*         8.  REPEAT STEPS 4-7 IF REPEAT CONDITION. 
*         9.  COMPLEMENT THE DATA PATTERN.
*         10. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         11. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         12. COMPARE IB TO OB. 
*         13. REPEAT STEPS 10-12 IF REPEAT CONDITION. 
*         14. COMPLEMENT THE DATA PATTERN.
*         15. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         16. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         17. COMPARE IB TO OB. 
*         18. REPEAT STEPS 15-17 IF REPEAT CONDITION. 
*         19. REPEAT STEPS 3-18 TEN TIMES.
*         20. REPEAT STEPS 3-19 FOR ALTERNATING ONES PATTERN. 
*         21. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 18.
*         22. 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.
*         23. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM25 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM25 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM25 AL TOO LOW NEEDS AL=3 
*         MSM25 NOT EXECUTED ON NIO CHANNEL 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = NUMBER OF WORDS TO COMPARE. 
*         B7  = PATTERN NUMBER. 
*         B9  = DATA PATTERNS.
*         B11 = DATA CONVERSION INDEX FOR 64 BIT CM WORD. 
*         B12 = SHIFTER CM TO PP DATA USED FOR 64 BIT COMPARES. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(477) - INPUT DATA BUFFER
*         OB(000) TO OB(477) - OUTPUT DATA BUFFER 
*         OB(500) TO OB(501) - DATA PATTERNS
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
0  FORMAT MSM25 - DATA ALTERNATING ONES TEST (DMA)
1  FORMAT MSM25 ERROR(S) = *DECD
3  FORMAT MSM25 DATA ALTERNATING ONES TEST (DMA) PASS=*DECD 
4  FORMAT MSM25 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM25 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
5  FORMAT MSM25 AL TOO LOW NEEDS AL=3 
6  FORMAT MSM25 DOES NOT EXECUTE ON NIO CHANNEL 
* 
   DATA (OB(500),CON) 5252,2525     *DATA PATTERNS
* 
   EQUATE BUFL TO 500B              *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE CMRDESM=15B, CMWRESM=26B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 IF(SB(10).GE.40) GOTO 21         *IF DMA CHANNEL 
   MSG 6 TO DISPLAY, PRINT          *NIO CHANNEL MESSAGE
   GOTO 42                          *EXIT 
*IF DEF,MVE,1 
21 IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
21 IF (AL.GE.3) GOTO 22             *CONTINUE 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 42                          *EXIT 
22 B15 = 25D                        *MODULE NUMBER
   MSG 0 TO DISPLAY, PRINT          *DISPLAY RUNNING MESSAGE
24 B1 = P0                          *INITIALIZE UPPER ADDRESS 
   B2 = P1                          *INITIALIZE LOWER ADDRESS 
   B3 = 0                           *INITIALIZE LOOP COUNTER
   B5 = BUFL                        *BUFFER SIZE
   B7 = 0                           *PATTERN COUNT
   WC = BUFL                        *WORD COUNT EQUAL BUFFER LENGTH 
* 
* -------MODULE TEST
* 
30 DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   B9 = OB(B7+500B)                 *DATA WORD FOR COMPARE
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LOW SPEED PORT 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
* 
* -------WRITE FROM CMDMA/READ TO PP
* 
32 B4 = 1                           *SET CONDITION NUMBER 1 
   B14 = CMWRESM                    *COMMAND NUMBER 
   WRITE FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM 
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 70  *PPU READ FROM ESM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM PP/READ TO CMDMA
* 
34 B9 = OB(B7+500B).XOR.7777B       *COMPLEMENT THE DATA
   DUP B9 TO OB(0) FOR BUFL         *GENERATE PATTERN 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 70   *PPU  WRITE TO ESM
   B14 = CMRDESM                    *COMMAND NUMBER 
   READ TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM 
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM CMDMA/READ TO CMDMA 
* 
36 DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   B4 = 3                           *SET CONDITION NUMBER 3 
   B14 = CMWRESM                    *COMMAND NUMBER 
   WRITE FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM 
   B14 = CMRDESM                    *COMMAND NUMBER 
   READ TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM 
   GOSUB 50                         *COMPARE THE DATA 
   DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   GOSUB 44                         *CHECK REPEAT CONDITION 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOTO 30 WHILE (B3+1.LT.10D)      *WRITE PATTERN 10D TIMES
   B3 = 0 
   GOTO 30 WHILE (B7+1.LT.2)        *DO NEXT PATTERN
* 
* -------MODULE REPEAT/EXIT 
* 
40 GOSUB 44                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 42       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
42 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
44 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOTO 30                          *REPEAT CONDITION 
* 
* -------COMPARE DATA SUBROUTINE
* 
50 IF(P4.NE.0) GOTO 54              *CONVERT 64 BIT CM WORDS FOR COMPARE
51 BA = 0                           *BUFFER INDEX 
52 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE OB(BA) TO IB(BA) FOR B5, ABT 66  *COMPARE DATA 
   B5 = BUFL                        *RESET NUMBER OF WORDS FOR COMPARE
53 RETURN 
54 IF(B4.AND.2.NE.0) B5=454B        *COMPARE COUNT FOR 64 BIT CM FORMAT 
   IF(B4.NE.1) GOTO 51              *NO CONVERSION NECESSARY
* 
* -------STORE FIRST PATTERN
* 
   IF (B9.EQ.2525) B12 = 0125B      *INITIAL DATA 
   IF (B9.EQ.5252) B12 = 0252B      *INITIAL DATA 
   B11 = 0                          *STARTING INDEX COUNT 
60 DUP B12 TO OB(B11) FOR 1 
   GOTO 60 WHILE(B11+20B.LE.460B) 
* 
* -------STORE SECOND PATTERN 
* 
   B12 = B12.LS.8                   *DATA EQUAL TO 2405B OR 5012B 
   B11 = 5                          *STARTING INDEX COUNT 
62 DUP B12 TO OB(B11) FOR 1 
   GOTO 62 WHILE(B11+20B.LE.465B) 
* 
* -------STORE THIRD PATTERN
* 
   B12 = B12.LS.8                   *DATA EQUAL TO 2520B OR 5240B 
   B11 = 12B                        *STARTING INDEX COUNT 
64 DUP B12 TO OB(B11) FOR 1 
   GOTO 64 WHILE(B11+20B.LE.472B) 
   GOTO 51                          *DO COMPARE 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+B5                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   B5 = BUFL-BA                     *RESET WORD COUNT 
   GOTO 52                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
70 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
76 ENDSUB GOTO 40                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM25 -   DATA ALTERNATING ONES TEST (DMA)
   MODULE MSM27,DESM(171,211),LOCK
***  MSM27 - RANDOM DATA TEST (DMA) 
**
* 
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH FROM CM TO THE SUBSYSTEM, AND FROM THE 
*         SUBSYSTEM TO CM USING RANDOM DATA PATTERNS. 
* 
*    1.2  METHOD- 
* 
*         1.  IF CIO CHANNEL NOT ASSIGNED DISPLAY NOT EXECUTED MESSAGE
*             AND EXIT THE MODULE.
*         2.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         3.  INITIALIZE OUTPUT BUFFER WITH RANDOM PATTERN. 
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         6.  READ 500B WORDS TO INPUT BUFFER FROM ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         7.  COMPARE IB TO OB. 
*         8.  REPEAT STEPS 4-7 IF REPEAT CONDITION. 
*         9.  GENERATE NEW RANDOM PATTERN.
*         10. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         11. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         12. COMPARE IB TO OB. 
*         13. REPEAT STEPS 10-12 IF REPEAT CONDITION. 
*         14. GENERATE NEW RANDOM PATTERN.
*         15. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         16. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         17. COMPARE IB TO OB. 
*         18. REPEAT STEPS 15-17 IF REPEAT CONDITION. 
*         19. REPEAT STEPS 3-18 TWENTY TIMES. 
*         20. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 18.
*         21. 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.
*         22. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM27 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM27 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM27 AL TOO LOW NEEDS AL=3 
*         MSM27 NOT EXECUTED ON NIO CHANNEL 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = NUMBER OF WORDS TO COMPARE. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(477) - INPUT DATA BUFFER
*         OB(000) TO OB(477) - OUTPUT DATA BUFFER 
*         OB(500) TO OB(501) - DATA PATTERNS
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
0  FORMAT MSM27 - RANDOM DATA TEST (DMA)
1  FORMAT MSM27 ERROR(S) = *DECD
3  FORMAT MSM27 RANDOM DATA TEST (DMA) PASS=*DECD 
4  FORMAT MSM27 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM27 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
5  FORMAT MSM27 AL TOO LOW NEEDS AL=3 
6  FORMAT MSM27 DOES NOT EXECUTE ON NIO CHANNEL 
* 
   EQUATE BUFL TO 500B              *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE CMRDESM=15B, CMWRESM=26B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 IF(SB(10).GE.40) GOTO 21         *IF DMA CHANNEL 
   MSG 6 TO DISPLAY, PRINT          *NIO CHANNEL MESSAGE
   GOTO 42                          *EXIT 
*IF DEF,MVE,1 
21 IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
21 IF (AL.GE.3) GOTO 22             *CONTINUE 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 42                          *EXIT 
22 B15 = 27D                        *MODULE NUMBER
   MSG 0 TO DISPLAY, PRINT          *DISPLAY RUNNING MESSAGE
24 B1 = P0                          *INITIALIZE UPPER ADDRESS 
   B2 = P1                          *INITIALIZE LOWER ADDRESS 
   B3 = 0                           *INITIALIZE LOOP COUNTER
   B5 = BUFL                        *BUFFER SIZE
   IF(P4.NE.0) B5=454B              *COMPARE COUNT FOR 64 BIT CM FORMAT 
   WC = BUFL                        *WORD COUNT EQUAL BUFFER LENGTH 
* 
* -------MODULE TEST
* 
30 RANDOM TO OB(0) FOR BUFL, START RT   *GENERATE PATTERN 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LOW SPEED PORT 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(P4.NE.0) GOTO 36
* 
* -------WRITE FROM CMDMA/READ TO PP
* 
32 B4 = 1                           *SET CONDITION NUMBER 1 
   B14 = CMWRESM                    *COMMAND NUMBER 
   WRITE FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM 
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 70  *PPU READ FROM ESM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM PP/READ TO CMDMA
* 
34 RANDOM TO OB(0) FOR BUFL, START RT   *GENERATE PATTERN 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 70   *PPU  WRITE TO ESM
   B14 = CMRDESM                    *COMMAND NUMBER 
   READ TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM 
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM CMDMA/READ TO CMDMA 
* 
36 RANDOM TO OB(0) FOR BUFL, START RT   *GENERATE PATTERN 
   B4 = 3                           *SET CONDITION NUMBER 3 
   B14 = CMWRESM                    *COMMAND NUMBER 
   WRITE FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM 
   B14 = CMRDESM                    *COMMAND NUMBER 
   READ TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM 
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOTO 30 WHILE (B3+1.LT.20D)      *WRITE PATTERN 20D TIMES
   B3 = 0 
* 
* -------MODULE REPEAT/EXIT 
* 
40 GOSUB 44                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 42       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
42 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
44 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LSP
   IF(P4.NE.0) GOTO 46              *RANDOM DATA READ WRITE CM 64 BIT ONLY
   IF(B4.EQ.1) GOTO 30              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 34              *REPEAT CONDITION 2 
46 IF(B4.EQ.3) GOTO 36              *REPEAT CONDITION 3 
   GOTO 40                          *CHECK REPEAT MODULE
* 
* -------COMPARE DATA SUBROUTINE
* 
50 BA = 0                           *BUFFER INDEX 
   IF(P4.NE.0) B5=454B              *COMPARE COUNT FOR 64 BIT CM FORMAT 
52 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE OB(BA) TO IB(BA) FOR B5, ABT 66  *COMPARE DATA 
   B5 = BUFL                        *RESET NUMBER OF WORDS FOR COMPARE
53 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+B5                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   B5 = BUFL-BA                     *RESET WORD COUNT 
   GOTO 52                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
70 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
76 ENDSUB GOTO 40                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM27 -   RANDOM DATA TEST (DMA)
   MODULE MSM29,DESM(171,211),LOCK
***  MSM29 - DATA ONES AND ZEROS TEST (FAST DMA)
**
* 
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH FROM CM TO THE SUBSYSTEM, AND FROM THE 
*         SUBSYSTEM TO CM USING DATA PATTERNS OF ALL ONES  AND  ALL 
*         ZEROS IN FAST DMA MODE. 
* 
*    1.2  METHOD- 
* 
*         1.  IF CIO CHANNEL NOT ASSIGNED DISPLAY NOT EXECUTED MESSAGE
*             AND EXIT THE MODULE.
*         2.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         3.  INITIALIZE OUTPUT BUFFER FOR THE PATTERN TO BE USED.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         6.  READ 500B WORDS TO INPUT BUFFER FROM ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         7.  COMPARE IB TO OB. 
*         8.  REPEAT STEPS 4-7 IF REPEAT CONDITION. 
*         9.  COMPLEMENT THE DATA PATTERN.
*         10. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         11. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         12. COMPARE IB TO OB. 
*         13. REPEAT STEPS 10-12 IF REPEAT CONDITION. 
*         14. COMPLEMENT THE DATA PATTERN.
*         15. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         16. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         17. COMPARE IB TO OB. 
*         18. REPEAT STEPS 15-17 IF REPEAT CONDITION. 
*         19. REPEAT STEPS 3-18 TEN TIMES.
*         20. REPEAT STEPS 3-19 FOR ZEROS AND ONES PATTERNS.
*         21. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 18.
*         22. 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.
*         23. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM29 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM29 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM29 AL TOO LOW NEEDS AL=3 
*         MSM29 NOT EXECUTED ON NIO CHANNEL 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = NUMBER OF WORDS TO COMPARE. 
*         B7  = PATTERN NUMBER. 
*         B9  = DATA PATTERNS.
*         B11 = DATA CONVERSION INDEX FOR 64 BIT CM WORD. 
*         B12 = SHIFTER CM TO PP DATA USED FOR 64 BIT COMPARES. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(477) - INPUT DATA BUFFER
*         OB(000) TO OB(477) - OUTPUT DATA BUFFER 
*         OB(500) TO OB(501) - DATA PATTERNS
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
0  FORMAT MSM29 - DATA ONES AND ZEROS TEST (FAST DMA) 
1  FORMAT MSM29 ERROR(S) = *DECD
3  FORMAT MSM29 DATA ONES/ZEROS TEST (FAST DMA) PASS=*DECD
4  FORMAT MSM29 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM29 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
5  FORMAT MSM29 AL TOO LOW NEEDS AL=3 
6  FORMAT MSM29 DOES NOT EXECUTE ON NIO CHANNEL 
* 
   DATA (OB(500),CON) 7777,0000     *DATA PATTERNS
* 
   EQUATE BUFL TO 500B              *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE CMRDESM=15B, CMWRESM=26B
   EQUATE CMRFESM=16B, CMWFESM=27B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 IF(SB(10).GE.40) GOTO 21         *IF DMA CHANNEL 
   MSG 6 TO DISPLAY, PRINT          *NIO CHANNEL MESSAGE
   GOTO 42                          *EXIT 
*IF DEF,MVE,1 
21 IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
21 IF (AL.GE.3) GOTO 22             *CONTINUE 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 42                          *EXIT 
22 B15 = 29D                        *MODULE NUMBER
   MSG 0 TO DISPLAY, PRINT          *DISPLAY RUNNING MESSAGE
24 B1 = P0                          *INITIALIZE UPPER ADDRESS 
   B2 = P1                          *INITIALIZE LOWER ADDRESS 
   B3 = 0                           *INITIALIZE LOOP COUNTER
   B5 = BUFL                        *BUFFER SIZE
   B7 = 0                           *PATTERN COUNT
   WC = BUFL                        *WORD COUNT EQUAL BUFFER LENGTH 
* 
* -------MODULE TEST
* 
30 DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   B9 = OB(B7+500B)                 *DATA CHECKING WORD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LOW SPEED PORT 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
* 
* -------WRITE FAST FROM CMDMA/READ TO PP 
* 
32 B4 = 1                           *SET CONDITION NUMBER 1 
   B14 = CMWFESM                    *COMMAND NUMBER 
   WRITE FAST FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 70  *PPU READ FROM ESM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM PP/READ FAST TO CMDMA 
* 
34 B9 = OB(B7+500B).XOR.7777B       *COMPLEMENT THE DATA
   DUP B9 TO OB(0) FOR BUFL         *GENERATE PATTERN 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 70   *PPU  WRITE TO ESM
   B14 = CMRFESM                    *COMMAND NUMBER 
   READ FAST TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FAST FROM CMDMA/READ FAST TO CMDMA 
* 
36 B4 = 3                           *SET CONDITION NUMBER 3 
   B14 = CMWFESM                    *COMMAND NUMBER 
   WRITE FAST FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM
   B14 = CMRFESM                    *COMMAND NUMBER 
   READ FAST TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM
   GOSUB 50                         *COMPARE THE DATA 
   DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   GOSUB 44                         *CHECK REPEAT CONDITION 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOTO 30 WHILE (B3+1.LT.10D)      *WRITE PATTERN 10D TIMES
   B3 = 0 
   GOTO 30 WHILE (B7+1.LT.2)        *DO NEXT PATTERN
* 
* -------MODULE REPEAT/EXIT 
* 
40 GOSUB 44                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 42       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
42 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
44 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LSP
   IF(B4.EQ.1) GOTO 30              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 34              *REPEAT CONDITION 2 
   IF(B4.EQ.3) GOTO 36              *REPEAT CONDITION 3 
   GOTO 40                          *CHECK REPEAT MODULE
* 
* -------COMPARE DATA SUBROUTINE
* 
50 IF(P4.NE.0) GOTO 54              *CONVERT 64 BIT CM WORDS FOR COMPARE
51 BA = 0                           *BUFFER INDEX 
52 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE OB(BA) TO IB(BA) FOR B5, ABT 66  *COMPARE DATA 
   B5 = BUFL                        *RESET NUMBER OF WORDS FOR COMPARE
53 RETURN 
54 IF(B4.AND.2.NE.0) B5=454B        *COMPARE COUNT FOR 64 BIT CM FORMAT 
   IF(B9.EQ.0) GOTO 51              *NO CONVERSION NECESSARY
   IF(B4.NE.1) GOTO 51              *NO CONVERSION NECESSARY
* 
* -------STORE FIRST PATTERN
* 
   B12 = 0377B                      *INITIAL DATA 
   B11 = 0                          *STARTING INDEX COUNT 
60 DUP B12 TO OB(B11) FOR 1 
   GOTO 60 WHILE(B11+20B.LE.460B) 
* 
* -------STORE SECOND PATTERN 
* 
   B12 = B12.LS.8                   *DATA EQUAL TO 7417B
   B11 = 5                          *STARTING INDEX COUNT 
62 DUP B12 TO OB(B11) FOR 1 
   GOTO 62 WHILE(B11+20B.LE.465B) 
* 
* -------STORE THIRD PATTERN
* 
   B12 = B12.LS.8                   *DATA EQUAL TO 7760B
   B11 = 12B                        *STARTING INDEX COUNT 
64 DUP B12 TO OB(B11) FOR 1 
   GOTO 64 WHILE(B11+20B.LE.472B) 
   GOTO 51                          *DO COMPARE 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+B5                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   B5 = BUFL-BA                     *RESET WORD COUNT 
   GOTO 52                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
70 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
76 ENDSUB GOTO 40                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM29 -   DATA ONES AND ZEROS TEST (FAST DMA) 
   MODULE MSM31,DESM(171,211),LOCK
***  MSM31 - DATA ALTERNATING ONES TEST (FAST DMA)
**
* 
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH FROM CM TO THE SUBSYSTEM, AND FROM  THE
*         SUBSYSTEM TO CM USING ALTERNATING ONES DATA PATTERNS USING
*         FAST DMA MODE.
* 
*    1.2  METHOD- 
* 
*         1.  IF CIO CHANNEL NOT ASSIGNED DISPLAY NOT EXECUTED MESSAGE
*             AND EXIT THE MODULE.
*         2.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         3.  INITIALIZE OUTPUT BUFFER FOR THE PATTERN TO BE USED.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         6.  READ 500B WORDS TO INPUT BUFFER FROM ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         7.  COMPARE IB TO OB. 
*         8.  REPEAT STEPS 4-7 IF REPEAT CONDITION. 
*         9.  COMPLEMENT THE DATA PATTERN.
*         10. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         11. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         12. COMPARE IB TO OB. 
*         13. REPEAT STEPS 10-12 IF REPEAT CONDITION. 
*         14. COMPLEMENT THE DATA PATTERN.
*         15. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         16. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         17. COMPARE IB TO OB. 
*         18. REPEAT STEPS 15-17 IF REPEAT CONDITION. 
*         19. REPEAT STEPS 3-18 TEN TIMES.
*         20. REPEAT STEPS 3-19 FOR ALTERNATING ONES PATTERN. 
*         21. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 18.
*         22. 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.
*         23. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM31 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM31 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM31 AL TOO LOW NEEDS AL=3 
*         MSM31 NOT EXECUTED ON NIO CHANNEL 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = NUMBER OF WORDS TO COMPARE. 
*         B7  = PATTERN NUMBER. 
*         B9  = DATA PATTERNS.
*         B11 = DATA CONVERSION INDEX FOR 64 BIT CM WORD. 
*         B12 = SHIFTER CM TO PP DATA USED FOR 64 BIT COMPARES. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(477) - INPUT DATA BUFFER
*         OB(000) TO OB(477) - OUTPUT DATA BUFFER 
*         OB(500) TO OB(501) - DATA PATTERNS
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
0  FORMAT MSM31 - DATA ALTERNATING ONES TEST (FAST DMA) 
1  FORMAT MSM31 ERROR(S) = *DECD
3  FORMAT MSM31 ALTERNATING ONES TEST (FAST DMA) PASS=*DECD 
4  FORMAT MSM31 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM31 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
5  FORMAT MSM31 AL TOO LOW NEEDS AL=3 
6  FORMAT MSM31 DOES NOT EXECUTE ON NIO CHANNEL 
* 
   DATA (OB(500),CON) 5252,2525     *DATA PATTERNS
* 
   EQUATE BUFL TO 500B              *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE CMRDESM=15B, CMWRESM=26B
   EQUATE CMRFESM=16B, CMWFESM=27B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 IF(SB(10).GE.40) GOTO 21         *IF DMA CHANNEL 
   MSG 6 TO DISPLAY, PRINT          *NIO CHANNEL MESSAGE
   GOTO 42                          *EXIT 
*IF DEF,MVE,1 
21 IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
21 IF (AL.GE.3) GOTO 22             *CONTINUE 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 42                          *EXIT 
22 B15 = 31D                        *MODULE NUMBER
   MSG 0 TO DISPLAY, PRINT          *DISPLAY RUNNING MESSAGE
24 B1 = P0                          *INITIALIZE UPPER ADDRESS 
   B2 = P1                          *INITIALIZE LOWER ADDRESS 
   B3 = 0                           *INITIALIZE LOOP COUNTER
   B5 = BUFL                        *BUFFER SIZE
   B7 = 0                           *PATTERN COUNT
   WC = BUFL                        *WORD COUNT EQUAL BUFFER LENGTH 
* 
* -------MODULE TEST
* 
30 DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   B9 = OB(B7+500B)                 *DATA WORD FOR COMPARE
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LOW SPEED PORT 
* 
* -------WRITE FAST FROM CMDMA/READ TO PP 
* 
32 B4 = 1                           *SET CONDITION NUMBER 1 
   B14 = CMWFESM                    *COMMAND NUMBER 
   WRITE FAST FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 70  *PPU READ FROM ESM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM PP/READ FAST TO CMDMA 
* 
34 B9 = OB(B7+500B).XOR.7777B       *COMPLEMENT THE DATA
   DUP B9 TO OB(0) FOR BUFL         *GENERATE PATTERN 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 70   *PPU  WRITE TO ESM
   B14 = CMRFESM                    *COMMAND NUMBER 
   READ FAST TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FAST FROM CMDMA/READ FAST TO CMDMA 
* 
36 DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   B4 = 3                           *SET CONDITION NUMBER 3 
   B14 = CMWFESM                    *COMMAND NUMBER 
   WRITE FAST FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM
   B14 = CMRFESM                    *COMMAND NUMBER 
   READ FAST TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM
   GOSUB 50                         *COMPARE THE DATA 
   DUP OB(B7+500B) TO OB(0) FOR BUFL  *GENERATE PATTERN 
   GOSUB 44                         *CHECK REPEAT CONDITION 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOTO 30 WHILE (B3+1.LT.10D)      *WRITE PATTERN 10D TIMES
   B3 = 0 
   GOTO 30 WHILE (B7+1.LT.2)        *DO NEXT PATTERN
* 
* -------MODULE REPEAT/EXIT 
* 
40 GOSUB 44                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 42       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
42 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
44 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LSP
   IF(B4.EQ.1) GOTO 30              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 34              *REPEAT CONDITION 2 
   IF(B4.EQ.3) GOTO 36              *REPEAT CONDITION 3 
   GOTO 40                          *CHECK REPEAT MODULE
* 
* -------COMPARE DATA SUBROUTINE
* 
50 IF(P4.NE.0) GOTO 54              *CONVERT 64 BIT CM WORDS FOR COMPARE
51 BA = 0                           *BUFFER INDEX 
52 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE OB(BA) TO IB(BA) FOR B5, ABT 66  *COMPARE DATA 
   B5 = BUFL                        *RESET NUMBER OF WORDS FOR COMPARE
53 RETURN 
54 IF(B4.AND.2.NE.0) B5=454B        *COMPARE COUNT FOR 64 BIT CM FORMAT 
   IF(B4.NE.1) GOTO 51              *NO CONVERSION NECESSARY
* 
* -------STORE FIRST PATTERN
* 
   IF (B9.EQ.2525) B12 = 0125B      *INITIAL DATA 
   IF (B9.EQ.5252) B12 = 0252B      *INITIAL DATA 
   B11 = 0                          *STARTING INDEX COUNT 
60 DUP B12 TO OB(B11) FOR 1 
   GOTO 60 WHILE(B11+20B.LE.460B) 
* 
* -------STORE SECOND PATTERN 
* 
   B12 = B12.LS.8                   *DATA EQUAL TO 2405B OR 5012B 
   B11 = 5                          *STARTING INDEX COUNT 
62 DUP B12 TO OB(B11) FOR 1 
   GOTO 62 WHILE(B11+20B.LE.465B) 
* 
* -------STORE THIRD PATTERN
* 
   B12 = B12.LS.8                   *DATA EQUAL TO 2520B OR 5240B 
   B11 = 12B                        *STARTING INDEX COUNT 
64 DUP B12 TO OB(B11) FOR 1 
   GOTO 64 WHILE(B11+20B.LE.472B) 
   GOTO 51                          *DO COMPARE 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+B5                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   B5 = BUFL-BA                     *RESET WORD COUNT 
   GOTO 52                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
70 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
76 ENDSUB GOTO 40                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM31 -   DATA ALTERNATING ONES TEST (FAST DMA) 
   MODULE MSM33,DESM(171,211),LOCK
***  MSM33 - RANDOM DATA TEST (FAST DMA)
**
* 
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST THE DATA PATH FROM CM TO THE SUBSYSTEM, AND  FROM  THE 
*         SUBSYSTEM TO CM USING RANDOM DATA PATTERNS IN FAST DMA MODE.
* 
*    1.2  METHOD- 
* 
*         1.  IF CIO CHANNEL NOT ASSIGNED DISPLAY NOT EXECUTED MESSAGE
*             AND EXIT THE MODULE.
*         2.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         3.  INITIALIZE OUTPUT BUFFER WITH RANDOM PATTERN. 
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         6.  READ 500B WORDS TO INPUT BUFFER FROM ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         7.  COMPARE IB TO OB. 
*         8.  REPEAT STEPS 4-7 IF REPEAT CONDITION. 
*         9.  GENERATE NEW RANDOM PATTERN.
*         10. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL). 
*         11. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         12. COMPARE IB TO OB. 
*         13. REPEAT STEPS 10-12 IF REPEAT CONDITION. 
*         14. GENERATE NEW RANDOM PATTERN.
*         15. WRITE 500B WORDS FROM OUTPUT BUFFER TO ADDRESS (P0-P1 
*             OR PREALLOCATED DEPENDING ON AL) VIA CM.
*         16. READ 500B WORDS VIA CM TO INPUT BUFFER FROM ADDRESS (P0-P1
*             OR PREALLOCATED DEPENDING ON AL). 
*         17. COMPARE IB TO OB. 
*         18. REPEAT STEPS 15-17 IF REPEAT CONDITION. 
*         19. REPEAT STEPS 3-18 TWENTY TIMES. 
*         20. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 18.
*         21. 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.
*         22. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM33 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM33 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
*         MSM33 AL TOO LOW NEEDS AL=3 
*         MSM33 NOT EXECUTED ON NIO CHANNEL 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = NUMBER OF WORDS TO COMPARE. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
*         BUFFERS USED- 
* 
*         IB(000) TO IB(477) - INPUT DATA BUFFER
*         OB(000) TO OB(477) - OUTPUT DATA BUFFER 
*         OB(500) TO OB(501) - DATA PATTERNS
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
0  FORMAT MSM33 - RANDOM DATA TEST (FAST DMA) 
1  FORMAT MSM33 ERROR(S) = *DECD
3  FORMAT MSM33 RANDOM DATA TEST (FAST DMA) PASS=*DECD
4  FORMAT MSM33 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM33 ACCESS LEVEL TOO LOW NEEDS AL=30
*IF -DEF,MVE,1
5  FORMAT MSM33 AL TOO LOW NEEDS AL=3 
6  FORMAT MSM33 DOES NOT EXECUTE ON NIO CHANNEL 
* 
   EQUATE BUFL TO 500B              *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE CMRDESM=15B, CMWRESM=26B
   EQUATE CMRFESM=16B, CMWFESM=27B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 IF(SB(10).GE.40) GOTO 21         *IF DMA CHANNEL 
   MSG 6 TO DISPLAY, PRINT          *NIO CHANNEL MESSAGE
   GOTO 42                          *EXIT 
*IF DEF,MVE,1 
21 IF (AL.GE.30) GOTO 22            *CONTINUE 
*IF -DEF,MVE,1
21 IF (AL.GE.3) GOTO 22             *CONTINUE 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 42                          *EXIT 
22 B15 = 33D                        *MODULE NUMBER
   MSG 0 TO DISPLAY, PRINT          *DISPLAY RUNNING MESSAGE
24 B1 = P0                          *INITIALIZE UPPER ADDRESS 
   B2 = P1                          *INITIALIZE LOWER ADDRESS 
   B3 = 0                           *INITIALIZE LOOP COUNTER
   B5 = BUFL                        *BUFFER SIZE
   IF(P4.NE.0) B5=453B              *COMPARE COUNT FOR 64 BIT CM FORMAT 
   WC = BUFL                        *WORD COUNT EQUAL BUFFER LENGTH 
* 
* -------MODULE TEST
* 
30 RANDOM TO OB(0) FOR BUFL, START RT   *GENERATE PATTERN 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LOW SPEED PORT 
   IF(P4.NE.0) GOTO 36
* 
* -------WRITE FAST FROM CMDMA/READ TO PP 
* 
32 B4 = 1                           *SET CONDITION NUMBER 1 
   B14 = CMWFESM                    *COMMAND NUMBER 
   WRITE FAST FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 70  *PPU READ FROM ESM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FROM PP/READ FAST TO CMDMA 
* 
34 RANDOM TO OB(0) FOR BUFL, START RT   *GENERATE PATTERN 
   B4 = 2                           *SET CONDITION NUMBER 2 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 70   *PPU  WRITE TO ESM
   B14 = CMRFESM                    *COMMAND NUMBER 
   READ FAST TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
* 
* -------WRITE FAST FROM CMDMA/READ FAST TO CMDMA 
* 
36 RANDOM TO OB(0) FOR BUFL, START RT   *GENERATE PATTERN 
   B4 = 3                           *SET CONDITION NUMBER 3 
   B14 = CMWFESM                    *COMMAND NUMBER 
   WRITE FAST FROM CMDMA TO ESM ADDRESS B1 B2, ABT 70  *WRITE TO SUBSYSTEM
   B14 = CMRFESM                    *COMMAND NUMBER 
   READ FAST TO CMDMA FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM
   GOSUB 50                         *COMPARE THE DATA 
   GOSUB 44                         *CHECK REPEAT CONDITION 
   IF(ES.AND.CM.EQ.0) MSG 3 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   GOTO 30 WHILE (B3+1.LT.20D)      *WRITE PATTERN 20D TIMES
   B3 = 0 
* 
* -------MODULE REPEAT/EXIT 
* 
40 GOSUB 44                         *CHECK REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 42       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
42 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
44 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 70                  *RESERVE I/O CHANNEL AND LSP
   IF(P4.NE.0) GOTO 46              *RANDOM DATA READ WRITE CM 64 BIT ONLY
   IF(B4.EQ.1) GOTO 30              *REPEAT CONDITION 1 
   IF(B4.EQ.2) GOTO 34              *REPEAT CONDITION 2 
46 IF(B4.EQ.3) GOTO 36              *REPEAT CONDITION 3 
   GOTO 40                          *CHECK REPEAT MODULE
* 
* -------COMPARE DATA SUBROUTINE
* 
50 BA = 0                           *BUFFER INDEX 
   IF(P4.NE.0) B5=453B              *COMPARE COUNT FOR 64 BIT CM FORMAT 
52 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE OB(BA) TO IB(BA) FOR B5, ABT 66  *COMPARE DATA 
   B5 = BUFL                        *RESET NUMBER OF WORDS FOR COMPARE
53 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+B5                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   B5 = BUFL-BA                     *RESET WORD COUNT 
   GOTO 52                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
70 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
76 ENDSUB GOTO 40                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM33 -   RANDOM DATA TEST (FAST DMA) 
   MODULE MSM35,DESM(171,211)LOCK 
*** MSM35 - MEMORY TEST PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ALL OF MEMORY WILL BE TESTED FOR BASIC BIT PICK/DROP
*         ERRORS USING PATTERNS OF ZEROS AND ONES.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SET OUTPUT BUFFER ALL ZEROES. 
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500 PP WORDS FROM OUTPUT BUFFER TO ADDRESS. 
*         6.  INCREMENT THE ADDRESS BY 100B.
*         7.  REPEAT STEPS 4 - 6 UNTIL ALL MEMORY WRITTEN.
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  READ 500 PP WORDS TO INPUT BUFFER FROM ADDRESS. 
*         10. COMPARE IB TO OB. 
*         11. REPEAT STEPS 8 - 10 UNTIL ALL MEMORY READ.
*         12. REPEAT STEPS 4 - 11 FOR ALL ONES PATTERN. 
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         14. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM35 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM35 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM35 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B9  = READ ONE RECORD FLAG. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
*         IF RM OR RC IS SELECTED, 20D DIFFERENT RANDOM DATA PATTERNS 
*         ARE USED EACH PASS OF THE MODULE. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM35 - MEMORY TEST PART I
1  FORMAT MSM35 ERROR(S) = *DECD
2  FORMAT MSM35 WRITE MEMORY I ADD=*OCT*OCTB DATA=*OCTB 
3  FORMAT MSM35 READ MEMORY I ADD=*OCT*OCTB DATA=*OCTB
4  FORMAT MSM35 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM35 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM35 ACCESS LEVEL TOO LOW NEEDS AL=10
7  FORMAT MSM35 WRITE EC=*DECD LC=*DECD ADD=*OCT*OCTB 
10 FORMAT MSM35 READ EC=*DECD LC=*DECD ADD=*OCT*OCTB
* 
   EQUATE BUFL TO 500B, BUFL1 TO 50B   *BUFFER LENGTH EQUATE
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 35D                        *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 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
* 
* -------MODULE TEST
* 
24 B4 = 1                           *SET CONDITION NUMBER 1 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   B9 = 100B                        *INCREMENT/ONE RECORD FLAG
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ SUBROUTINE
26 B4 = 2                           *SET CONDITION NUMBER 2 
   B9 = 100B                        *INCREMENT/ONE RECORD FLAG
   DUP 7777B TO OB FOR BUFL         *WRITE ALL ONES PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ SUBROUTINE
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 24              *IF CONDITION 1 
   IF(B4.EQ.2) GOTO 26              *IF CONDITION 2 
   GOTO 50                          *CHECK REPEAT MODULE
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B2 = B2+B9                       *INCREMENT LOWER ADDRESS
   IF(B2.EQ.0) B1=B1+1              *INCREMENT THE UPPER
   IF(B2.NE.0) RETURN 
   IF(B1.LE.P2) RETURN              *NOT DONE 
57 B1 = 0                           *SET ALL DONE 
   B2 = 0                           *SET ALL DONE 
   RETURN 
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR 500B
   IF(B2.NE.0) GOTO 61              *SKIP MESSAGE AND RESERVE 
*IF DEF,CMSE17X,1 
   IF(B1.AND.77.NE.0) GOTO 61 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2,OB) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 7 (B13,B0,B1,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
61 B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   GOSUB 56                         *INCREMENT THE ADDRESS
   IF(B1.NE.0) GOTO 60              *NOT DONE 
   IF(B2.NE.0) GOTO 60              *NOT DONE 
   RETURN                           *DONE WRITTING ALL MEMORY 
* 
* -------READ SUBROUTINE
* 
62 WC = BUFL                        *SET WC FOR 500B
   IF(B2.NE.0) GOTO 63              *SKIP MESSAGE AND RESERVE 
*IF DEF,CMSE17X,1 
   IF(B1.AND.17.NE.0) GOTO 63 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 3 (B1,B2,OB) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 10 (B13,B0,B1,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE
63 IF (B9.EQ.10B) GOTO 64 
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM
   GOTO 66                          *DO COMPARE 
64 B14 = RD1ESM                     *COMMAND NUMBER 
   WC = BUFL1                       *SET WORD COUNT FOR ONE RECORD
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
66 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 72
   GOSUB 56                         *INCREMENT THE ADDRESS
   IF(B1.EQ.0) GOTO 67              *CHECK NOT DONE 
   IF(B1.NE.P2) GOTO 62             *NOT DONE 
   IF(B2.EQ.7700) B9=10B
67 IF(B1.NE.0) GOTO 62              *NOT DONE 
   IF(B2.NE.0) GOTO 62              *NOT DONE 
70 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 66                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 70 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM35 -   MEMORY TEST PART ONE
   MODULE MSM36,DESM(171,211)LOCK 
*** MSM36 - MEMORY TEST PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ALL OF MEMORY WILL BE TESTED FOR BASIC BIT PICK/DROP
*         ERRORS USING ALTERNATING ONES PATTERNS. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SET OUTPUT BUFFER TO 5252B. 
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500 PP WORDS FROM OUTPUT BUFFER TO ADDRESS. 
*         6.  INCREMENT THE ADDRESS BY 100B.
*         7.  REPEAT STEPS 4 - 6 UNTIL ALL MEMORY WRITTEN.
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  READ 500 PP WORDS TO INPUT BUFFER FROM ADDRESS. 
*         10. COMPARE IB TO OB. 
*         11. REPEAT STEPS 8 - 10 UNTIL ALL MEMORY READ.
*         12. REPEAT STEPS 4 - 11 FOR ALL 2525B PATTERN.
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         14. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM36 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM36 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM36 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B9  = READ ONE RECORD FLAG. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
*         IF RM OR RC IS SELECTED, 20D DIFFERENT RANDOM DATA PATTERNS 
*         ARE USED EACH PASS OF THE MODULE. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM36 - MEMORY TEST PART II 
1  FORMAT MSM36 ERROR(S) = *DECD
2  FORMAT MSM36 WRITE MEMORY II ADD=*OCT*OCTB DATA=*OCTB
3  FORMAT MSM36 READ MEMORY II ADD=*OCT*OCTB DATA=*OCTB 
4  FORMAT MSM36 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM36 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM36 ACCESS LEVEL TOO LOW NEEDS AL=10
7  FORMAT MSM36 WRITE EC=*DECD LC=*DECD ADD=*OCT*OCTB 
10 FORMAT MSM36 READ EC=*DECD LC=*DECD ADD=*OCT*OCTB
* 
   EQUATE BUFL TO 500B, BUFL1 TO 50B   *BUFFER LENGTH EQUATE
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 36D                        *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 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
* 
* -------MODULE TEST
* 
24 B4 = 1                           *SET CONDITION NUMBER 1 
   B9 = 100B                        *INCREMENT AND READ ONE RECORD FLAG 
   DUP 5252B TO OB FOR BUFL         *WRITE 5252B PATTERN INTO OB
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ SUBROUTINE
26 B4 = 2                           *SET CONDITION NUMBER 2 
   B9 = 100B                        *INCREMENT AND READ ONE RECORD FLAG 
   DUP 2525B TO OB FOR BUFL         *WRITE 2525B PATTERN INTO OB
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ SUBROUTINE
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   IF(B4.EQ.1) GOTO 24              *IF CONDITION 1 
   IF(B4.EQ.2) GOTO 26              *IF CONDITION 2 
   GOTO 50                          *CHECK REPEAT MODULE
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B2 = B2+B9                       *INCREMENT LOWER ADDRESS
   IF(B2.EQ.0) B1=B1+1              *INCREMENT THE UPPER
   IF(B2.NE.0) RETURN 
   IF(B1.LE.P2) RETURN              *NOT DONE 
57 B1 = 0                           *SET ALL DONE 
   B2 = 0                           *SET ALL DONE 
   RETURN 
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR 500B
   IF(B2.NE.0) GOTO 61              *SKIP MESSAGE AND RESERVE 
*IF DEF,CMSE17X,1 
   IF(B1.AND.77.NE.0) GOTO 61 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2,OB) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 7 (B13,B0,B1,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
61 B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   GOSUB 56                         *INCREMENT THE ADDRESS
   IF(B1.NE.0) GOTO 60              *NOT DONE 
   IF(B2.NE.0) GOTO 60              *NOT DONE 
   RETURN                           *DONE WRITTING ALL MEMORY 
* 
* -------READ SUBROUTINE
* 
62 WC = BUFL                        *SET WC FOR 500B
   IF(B2.NE.0) GOTO 63              *SKIP MESSAGE AND RESERVE 
*IF DEF,CMSE17X,1 
   IF(B1.AND.17.NE.0) GOTO 63 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 3 (B1,B2,OB) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 10 (B13,B0,B1,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE
63 IF (B9.EQ.10B) GOTO 64 
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM
   GOTO 66                          *DO COMPARE 
64 B14 = RD1ESM                     *COMMAND NUMBER 
   WC = BUFL1                       *SET WORD COUNT FOR ONE RECORD
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
66 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 72
   GOSUB 56                         *INCREMENT THE ADDRESS
   IF(B1.EQ.0) GOTO 67              *CHECK NOT DONE 
   IF(B1.NE.P2) GOTO 62             *NOT DONE 
   IF(B2.EQ.7700) B9=10B
67 IF(B1.NE.0) GOTO 62              *NOT DONE 
   IF(B2.NE.0) GOTO 62              *NOT DONE 
70 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 66                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 70 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM36 -   MEMORY TEST PART TWO
   MODULE MSM37,DESM(171,211)LOCK 
*** MSM37 - MEMORY TEST PART THREE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ALL OF MEMORY WILL BE TESTED FOR BASIC BIT PICK/DROP
*         ERRORS USING RANDOM PATTERNS. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SET OUTPUT BUFFER TO FIRST RANDOM PATTERN.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 500 PP WORDS FROM OUTPUT BUFFER TO ADDRESS. 
*         6.  INCREMENT THE ADDRESS BY 100B.
*         7.  SET OUTPUT BUFFER TO NEXT RANDOM PATTERN. 
*         8.  REPEAT STEPS 4 - 7 UNTIL ALL MEMORY WRITTEN.
*         9.  SET OUTPUT BUFFER TO FIRST RANDOM PATTERN.
*         10. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         11. READ 500 PP WORDS TO INPUT BUFFER FROM ADDRESS. 
*         12. COMPARE IB TO OB. 
*         13. INCREMENT THE ADDRESS BY 100B.
*         14. SET OUTPUT BUFFER TO NEXT RANDOM PATTERN. 
*         15. REPEAT STEPS 10 - 14 UNTIL ALL MEMORY READ. 
*         16. 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.
*         17. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM37 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM37 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM37 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = TEMPORARY STORAGE.
*         B6  = RANDOM PATTERN COUNTER. 
*         B9  = READ ONE RECORD FLAG. 
*         B12 = COUNT FOR COMPARE OF ONE RECORD.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM37 - MEMORY TEST PART III
1  FORMAT MSM37 ERROR(S) = *DECD
2  FORMAT MSM37 WRITE MEMORY III ADD=*OCT*OCTB DATA=*OCTB 
3  FORMAT MSM37 READ MEMORY III ADD=*OCT*OCTB DATA=*OCTB
4  FORMAT MSM37 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM37 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM37 ACCESS LEVEL TOO LOW NEEDS AL=10
7  FORMAT MSM37 WRITE EC=*DECD, LC=*DECD ADD=*OCT*OCTB
10 FORMAT MSM37 READ EC=*DECD, LC=*DECD ADD=*OCT*OCTB 
* 
   EQUATE BUFL TO 500B, BUFL1 TO 50B   *BUFFER LENGTH EQUATE
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 37D                        *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 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
* 
* -------MODULE TEST
* 
24 B6 = 1                           *SET RANDOM PATT COUNTER
   B9 = 100B                        *INCREMENT/ONE RECORD FLAG
   RANDOM TO OB FOR BUFL START B6   *WRITE FIRST PATTERN INTO OB
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B6 = 1                           *SET RANDOM PATT COUNTER
   B9 = 100B                        *INCREMENT/ONE RECORD FLAG
   B12 = 0                          *COUNT FOR OB IN COMPARE
   RANDOM TO OB FOR BUFL START B6   *WRITE FIRST PATTERN INTO OB
   GOSUB 62                         *GO TO READ SUBROUTINE
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
53 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 24 
   GOTO 50                          *CHECK REPEAT MODULE
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
54 B2 = B2+B9                       *INCREMENT LOWER ADDRESS
   IF (B9.EQ.10B) GOTO 55           *READ ONE RECORD
   B6 = B6+1                        *INCREMENT RANDOM COUNTER 
55 IF(B2.EQ.0) B1=B1+1              *INCREMENT THE UPPER
   IF(B2.NE.0) RETURN 
   IF(B1.LE.P2) RETURN              *NOT DONE 
56 B1 = 0                           *SET ALL DONE 
   B2 = 0                           *SET ALL DONE 
   RETURN 
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR 500B
   IF(B2.NE.0) GOTO 61              *SKIP MESSAGE AND RESERVE 
*IF DEF,CMSE17X,1 
   IF(B1.AND.17.NE.0) GOTO 61 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2,OB) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 7 (B13,B0,B1,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
61 B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   GOSUB 54                         *INCREMENT THE ADDRESS
   RANDOM TO OB FOR BUFL START B6   *WRITE PATTERN INTO OB
   IF(B1.NE.0) GOTO 60              *NOT DONE 
   IF(B2.NE.0) GOTO 60              *NOT DONE 
   RETURN                           *DONE WRITTING ALL MEMORY 
* 
* -------READ SUBROUTINE
* 
62 WC = BUFL                        *SET WC FOR 500B
   IF(B2.NE.0) GOTO 63              *SKIP MESSAGE AND RESERVE 
*IF DEF,CMSE17X,1 
   IF(B1.AND.7.NE.0) GOTO 63
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 3 (B1,B2,OB) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 10 (B13,B0,B1,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE
63 IF (B9.EQ.10B) GOTO 64 
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM
   GOTO 66                          *DO COMPARE 
64 B14 = RD1ESM                     *COMMAND NUMBER 
   WC = BUFL1                       *SET WORD COUNT FOR ONE RECORD
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   B4 = B2.AND.77.LS.2              *MULTIPLY TIMES 4 
   B12 = B2.AND.77+B4               *MULTIPLY TIMES 5 
66 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB(B12) FOR WC, ABT 72 
   GOSUB 54                         *INCREMENT THE ADDRESS
   RANDOM TO OB FOR BUFL START B6   *WRITE PATTERN INTO OB
   IF(B1.EQ.0) GOTO 67              *CHECK NOT DONE 
   IF(B1.NE.P2) GOTO 62             *NOT DONE 
   IF(B2.EQ.7700) B9=10B
67 IF(B1.NE.0) GOTO 62              *NOT DONE 
   IF(B2.NE.0) GOTO 62              *NOT DONE 
70 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 66                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 70 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM37 -   MEMORY TEST PART THREE
   MODULE MSM40,DESM(171,211)LOCK 
*** MSM40 - 4 BIT FLAG REGISTER CLEAR 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FLAG REGISTER OPERATIONS SELECTIVE CLEAR WILL BE USED TO
*         ZERO OUT THE 4 BIT FLAG REGISTER. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         4.  4 BIT FLAG REG SELECT CLEAR WITH ALL ONES TO CLEAR
*             MEMORY. 
*         5.  CHECK LSP STATUS FOR AN ACCEPT (0002B). 
*         6.  INCREMENT THE ADDRESS.
*         7.  IF ADDRESS EQUAL TO 10000B RESERVE THE CHANNEL AND LSP
*             SO I/O TIMEOUT DOES NOT OCCUR.
*         8.  REPEAT 4 - 7 FOR ALL ADDRESSES. 
*         9.  POST MESSAGE START MSD RUNNING ON SIDE DOOR PORT AND
*             PAUSE IF P3 = 0000. IF P3 NON-ZERO GO TO STEP 11. 
*         10. WAIT FOR *GO* TO CONTINUE TESTING.
*         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 IF *GO* GIVEN.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM40 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM40 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM40 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  = UPPER 6 BITS OF FLAG REGISTER DATA. 
*         B2  = LOWER 12 BITS OF FLAG REGISTER DATA.
*         B3  = EXPECTED STATUS.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM40 - 4 BIT FLAG REGISTER CLEAR 
1  FORMAT MSM40 ERROR(S) = *DECD
2  FORMAT MSM40 4 BIT FLAG REGISTER CLEAR ADDRESS=*O*OCTB 
3  FORMAT MSM40 EC=*DECD, LC=*DECD ADDRESS=*O*OCTB
4  FORMAT MSM40 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM40 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM40 ACCESS LEVEL TOO LOW NEEDS AL=10
6  FORMAT XX PAUSE START MSD00 RUNNING ON SIDE DOOR PORT XX 
7  FORMAT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
10 FORMAT XX                                             XX 
11 FORMAT XX    WHEN MSD05 IS RUNNING GO TO CONTINUE     XX 
12 FORMAT XX    P3 NON-ZERO THE PAUSE WILL NOT OCCUR     XX 
* 
   EQUATE SELSET4=6, SELCLR4=10B, EQUSTA4=12B, RESLSP=21B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 40D                        *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                          *END THE MODULE 
* 
* -------MODULE TEST
* 
22 B3 = 2                           *SET EXPECTED STATUS
24 GOSUB 57                         *RESERVE SUBROUTINE 
* 
* -------SELECT CLEAR MEMORY ALL ONES 
* 
26 B1 = 0                           *INITIALIZE FLAG WORD 
   B2 = 17B                         *INITIALIZE FLAG WORD 
30 GOSUB 60                         *SELCLR SUBROUTINE
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 70   *IF BAD STATUS
*IF -DEF,CMSE17X,2
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B1,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
   GOSUB 66                         *INCREMENT ADDRESS ROUTINE
   IF(B2.NE.0) GOTO 30              *NOT DONE ALL ADDRESSES THIS CHIP 
* 
   MSG 7 TO LINE 10                 *POST PAUSE MESSAGE 
   MSG 10 TO LINE 11                *POST PAUSE MESSAGE 
   IF(ES.AND.TM.EQ.0) MSG 6 TO LINE 12  *POST PAUSE MESSAGE 
   IF(ES.AND.TM.NE.0) MSG 6 TO PRINT  *PRINT PAUSE MESSAGE
   IF(ES.AND.TM.EQ.0) MSG 11 TO LINE 13  *POST PAUSE MESSAGE
   IF(ES.AND.TM.NE.0) MSG 11 TO PRINT  *PRINT PAUSE MESSAGE 
   IF (P3.NE.0) GOTO 32 
   MSG 10 TO LINE 14                *POST PAUSE MESSAGE 
   MSG 7 TO LINE 15                 *POST PAUSE MESSAGE 
   PAUSE                            *PAUSE FOR MSD TO START RUNNING 
   GOTO 34
* 
32 IF (ES.AND.TM.EQ.0) MSG 12 TO LINE 14  *POST NO PAUSE MESSAGE
   IF (ES.AND.TM.NE.0) MSG 12 TO PRINT  *PRINT NO PAUSE MESSAGE 
   MSG 10 TO LINE 15                *POST PAUSE MESSAGE 
   MSG 7 TO LINE 16                 *POST PAUSE MESSAGE 
* 
* -------MODULE REPEAT/EXIT 
* 
34 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 36       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 24
36 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------RESERVE LSP SUBROUTINE 
* 
57 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------SELECTIVE CLEAR SUBROUTINE 
* 
60 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   RETURN 
* 
* -------INCREMENT ADDRESS DATA SUBROUTINE
* 
66 B2 = B2 + 20                     *BUMP ADDRESS 
   IF(B2.AND.7760.EQ.0) B1=B1+1     *INCREMENT UPPER 6 BITS 
   IF(B2.AND.7760.NE.0) RETURN      *NOT DONE 
   IF(B1.EQ.40) GOSUB 57            *RERESERVE THE CHANNEL
   IF(B1.LT.100) RETURN             *NOT DONE ALL ADDRESSES 
   B2 = 0                           *ALL DONE 
67 RETURN 
* 
* -------PROCESS MODULE DETECTED ERRORS 
* 
70 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98C                         *CALL MODULE ERROR PROCESSOR
   GOTO 67 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 34                   *ELSE, EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   GOTO 67 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 34                   *ELSE, EXIT 
77 END 20 
COMPILE   - MSM40 -   4 BIT FLAG REGISTER CLEAR 
   MODULE MSM41,DESM(171,211)LOCK 
*** MSM41 - SECDED CHECKBIT GENERATORS TEST PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THE READ CHECK BITS MAINTENANCE FUNCTION IS USED TO READ CHECK
*         BITS FROM MEMORY AND COMPARED AGAINST PROGRAM EXPECTED CHECK
*         BITS. OPERANDS WILL BE WRITTEN INTO THE TEST ADDRESS OF THE 
*         SUBSYSTEM THEN CORRESPONDING CHECK BITS READ BACK AND CHECKED 
*         AGAINST EXPECTED CHECK BITS.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND DISABLE SECDED TO MSD. 
*         5.  SEND ENABLE READ AND WRITE CHECKBITS TO MSD.
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE A RECORD BEGINNING AT THE TEST ADDRESS (P0-P1)
*             WITH ZEROS. 
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  READ BACK THE RECORD AND COMPARE THE READ CHECKBITS 
*             BYTE WITH THE WRITE CHECKBITS BYTE. 
*         10. REPEAT 6 - 9 FOR A 60-BIT SLIDING "1" PATTERN.
*         11. SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         12. SEND DISABLE SECDED TO MSD. 
*         13. ENABLE READ CHECKBITS TO MSD. 
*         14. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         15. WRITE 8 (1 RECORD) CHECKBIT OPERANDS INTO MEMORY
*             BEGINNING AT THE TEST ADDRESS (P0-P1).
*         16. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         17. READ THE PREVIOUSLY WRITTEN RECORD TO GET THE WRITE 
*             CHECKBITS WHICH IS THE OUTPUT OF THE WRITE CHECKBITS
*             GENERATOR.
*         18. CHECK THAT EACH OF THE EIGHT CHECKBIT BYTES ARE CORRECT.
*         19. REPEAT STEPS 14 - 18 FOR ALL 60 BITS IN A SLIDING 1 PATTERN.
*         20. 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.
*         21. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM41 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM41 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM41 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B5  = DATA PATTERNS.
*         B6  = INDEX TO DATA BUFFER. 
*         B7  = INDEX TO DATA BUFFER. 
*         B8  = DATA PATTERNS.
*         B9  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97C - GENERATE CHECKBIT DATA PATTERNS. 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM41 - SECDED CHECKBIT GENERATORS TEST PART ONE
1  FORMAT MSM41 ERROR(S) = *DECD
2  FORMAT MSM41 SECDED CHECKBIT GENERATORS TEST I COND=*OB
4  FORMAT MSM41 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM41 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM41 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, PRESET TO 601B, RDWRCK TO 602B 
   EQUATE MCBIT=10B , RDESM=13B, RD1ESM=14B, CMPB=0 
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B, WRESM=25B
   EQUATE DSECD=103B, RDCKB=105B, CLRMF=110B, SDCLR=205B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 41D                        *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 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
   B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = DSECD                      *SET DISABLE SECDED 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = RDWRCK                     *ENABLE READ AND WRITE CHECK BITS 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
26 B4 = 1                           *SET CONDITION NUMBER 1 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
30 B4 = 2                           *SET CONDITION NUMBER 2 
   B5 = 1                           *INITIAL PATTERN
   B6 = 4                           *SET OUPUT BUFFER INDEX 
31 OB (B6) = B5                     *WRITE B5 PATTERN IN OB 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   OB(0)=OB(0).AND.7400B            *SET CHECKBITS INTO OB FOR COMPARE
   OB(0)=OB(4).AND.377B+OB(0)       *SET CHECKBITS INTO OB FOR COMPARE
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
   B5 = B5.LS.1                     *SHIFT THE DATA BITS
   IF(B5.NE.1) GOTO 31              *DO ALL 12 BITS 
   DUP 0 TO OB FOR BUFL             *CLEAR THE BUFFER 
   IF(B6.EQ.0) GOTO 32              *IF DONE WITH ALL 60 BITS 
   GOTO 31 WHILE(B6-1.GE.0)         *DO ALL 60 BITS 
32 B4 = 3                           *SET CONDITION NUMBER 3 
   B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = DSECD                      *SET DISABLE SECDED 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = RDCKB                      *ENABLE READ CHECK BITS 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 97C                         *GENERATE DATA PATTERN
   B5 = 100                         *INITIALIZE FOR DATA COMPARE
   B6 = 0                           *INITIALIZE FOR DATA COMPARE
   B7 = 4                           *INITIALIZE FOR DATA BUFFER 
   B8 = 1                           *INITIALIZE FOR DATA BUFFER 
   B9 = 4                           *COUNT FOR WORD NUMBER
34 DUP 0 TO OB FOR BUFL             *CLEAR THE BUFFER 
   B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
36 OB (B7) = B8                     *WRITE B8 PATTERN IN OB 
   B8 = B8.LS.1                     *SHIFT THE DATA BITS
   IF(B8.EQ.1) B9=B9-1              *DECREMENT ADDRESS TO STORE WORD
   IF(B9.EQ.7776) GOTO 37           *IF PAST ZERO GO TO WRITE 
   B7 = B7+5                        *INCREMENT THE ADDRESS
   IF(B8.EQ.1) B7=B7-1              *DECREMENT ADDRESS TO STORE WORD
   IF(B7.LE.47) GOTO 36             *IF DONE WITH ALL WORDS IN BUFFER 
   B7 = B9                          *SET FOR NEXT BUFFER
37 GOSUB 60                         *GO TO WRITE SUBROUTINE 
40 OB(B6)=OB(B6).AND.7400B+OB(B5)   *SET READ CHECKBITS FOR COMPARE 
   B6 = B6+5                        *INCREMENT TO NEXT ESM WORD 
   B5 = B5+1                        *INCREMENT CHECKBIT DATA
   IF(B6.NE.50) GOTO 40             *DO CHECK BITS FOR THIS BUFFER
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
   B6 = 0                           *SET COUNTER FOR NEXT BUFFER
   IF (B5.NE.200) GOTO 34           *IF NOT DONE WITH ALL CHECKBIT DATA 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B4) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
62 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 66
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM41 -   SECDED CHECKBIT GENERATORS TEST PART ONE
   MODULE MSM43,DESM(171,211)LOCK 
*** MSM43 - SECDED CHECKBIT GENERATORS TEST PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THE READ CHECK BITS MAINTENANCE FUNCTION IS USED TO READ CHECK
*         BITS FROM MEMORY AND COMPARED AGAINST PROGRAM EXPECTED CHECK
*         BITS. OPERANDS WILL BE WRITTEN INTO THE TEST ADDRESS OF THE 
*         SUBSYSTEM THEN CORRESPONDING CHECK BITS READ BACK AND CHECKED 
*         AGAINST EXPECTED CHECK BITS.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND DISABLE SECDED TO MSD. 
*         5.  SEND ENABLE READ CHECKBITS TO MSD.
*         6.  SEND ENABLE READ SYNDROME BITS TO MSD.
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  WRITE 64 (8 RECORDS) CHECKBIT OPERANDS INTO MEMORY
*             BEGINNING AT THE TEST ADDRESS (P0-P1).
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. READ THE PREVIOUSLY WRITTEN RECORDS ONE RECORD AT A TIME
*             TO GET THE WRITE CHECKBITS WHICH IS THE OUTPUT OF THE 
*             WRITE CHECKBITS GENERATOR.
*         11. CHECK THAT EACH OF THE EIGHT CHECKBIT BYTES ARE CORRECT.
*         12. SEND ENABLE FORCE READ CHECKBITS TO ZERO TO MSD.
*         13. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         14. READ THE PREVIOUSLY WRITTEN RECORDS ONE RECORD AT A TIME
*             TO GET THE READ CHECKBITS WHICH IS THE OUTPUT OF THE
*             READ CHECKBITS GENERATOR. 
*         15. CHECK THAT EACH OF THE EIGHT CHECKBIT BYTES ARE CORRECT.
*         16. REPEAT STEPS 3 - 15 FOR LIST OF OPERANDS WHICH INCLUDES ALL 
*             OPERANDS NECESSARY TO TEST THE CHECKBIT GENERATORS. 
*         17. 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.
*         18. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM43 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM43 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM43 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B5  = INDEX TO DATA BUFFER. 
*         B6  = INDEX TO DATA BUFFER. 
*         B9  = BUFFER POINTER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Q - GENERATE DATA FOR WRITE PART 1 
*         MSM97R - GENERATE DATA FOR WRITE PART 2 
*         MSM97S - GENERATE DATA FOR WRITE PART 3 
*         MSM97W - DATA FOR READ CHECK/SYND BITS PART 1 
*         MSM97X - DATA FOR READ CHECK/SYND BITS PART 2 
*         MSM97Y - DATA FOR READ CHECK/SYND BITS PART 3 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM43 - SECDED CHECKBIT GENERATORS TEST II
1  FORMAT MSM43 ERROR(S) = *DECD
2  FORMAT MSM43 SECDED CHECKBIT GENERATORS TEST II PASS=*DD 
4  FORMAT MSM43 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM43 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM43 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, BUFW TO 500B, PRESET TO 601B,
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
   EQUATE DSECD=103B, RDCKB=105B, RDSYN=106, RDZCK=107B 
   EQUATE CLRMF=110B, SDCLR=205B, MCBIT=10B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 43D                        *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 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B9 = 0                           *SET B9 FOR MODULE
24 B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
   B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = DSECD                      *SET DISABLE SECDED 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = RDCKB                      *ENABLE READ CHECK BITS 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = RDSYN                      *ENABLE READ SYNDROME BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
   IF(B9.EQ.0) CALL 97Q             *GENERATE DATA FOR WRITE PART 1 
   IF(B9.EQ.1) CALL 97R             *GENERATE DATA FOR WRITE PART 2 
   IF(B9.EQ.2) CALL 97S             *GENERATE DATA FOR WRITE PART 3 
26 B4 = 1                           *SET CONDITION NUMBER 1 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   IF(B9.EQ.0) CALL 97W             *DATA FOR READ CHECK/SYND BITS PART 1 
   IF(B9.EQ.1) CALL 97X             *DATA FOR READ CHECK/SYND BITS PART 2 
   IF(B9.EQ.2) CALL 97Y             *DATA FOR READ CHECK/SYND BITS PART 3 
30 GOSUB 70                         *GO TO READ 500B PP WORDS 
   B12 = RDZCK                      *ENABLE READ ZERO CHECKBITS 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
   IF(B9.EQ.0) CALL 97W             *DATA FOR READ CHECK/SYND BITS PART 1 
   IF(B9.EQ.1) CALL 97X             *DATA FOR READ CHECK/SYND BITS PART 2 
   IF(B9.EQ.2) CALL 97Y             *DATA FOR READ CHECK/SYND BITS PART 3 
40 GOSUB 70                         *GO TO READ 500B PP WORDS 
   B9 = B9+1                        *SET NEXT BUFFER
42 IF(B9.GT.2) GOTO 44              *IF DONE WITH LAST BUFFER 
   GOTO 24                          *DO ALL OPERANDS
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOTO 24                          *IF REPEAT CONDITION
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFW                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B9) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
62 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 72
64 RETURN 
* 
* -------READ ALL 500B PP WORDS AND COMPARE 
* 
70 B5 = 0                           *SET FOR MOVE OF DATA TO OB(0)
   B6 = 0                           *SET FOR MOVE OF DATA FROM OB 
71 COPY OB(B6) TO OB(B5) FOR BUFL   *NEXT PATTERN 
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
   B2 = B2+10                       *INCREMENT ESM ADDRESS
   GOTO 71 WHILE (B6+50.NE.500B)    *DO ALL OF THIS BUFFER
   RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM43 -   SECDED CHECKBIT GENERATORS TEST PART TWO
   MODULE MSM45,DESM(171,211)LOCK 
*** MSM45 - SECDED SINGLE BIT CORRECTION AND DETECTION
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THE WRITE CHECK BIT MAINTENANCE FUNCTION IS USED TO GENERATE
*         ALL SINGLE BIT SYNDROME CODES. EACH OPERAND WILL BE WRITTEN 
*         INTO THE TEST ADDRESS,READ BACK, AND CHECKED FOR PROPER 
*         CORRECTION IN CASES OF BITS 0-59, AND THE SYNDROME CODE READ
*         AND CHECKED AGAINST A PRESTORED EXPECTED VALUE. BOTH ZERO TO
*         ONE AND ONE TO ZERO CORRECTIONS WILL BE INCLUDED IN THE 
*         OPERAND LIST. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND ENABLE WRITE CHECK BIT FUNCTIONS TO MSD. 
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  WRITE ONE RECORD OF OPERANDS INTO MEMORY (P0-P1). 
*         7.  SEND ENABLE READ SYNDROME FUNCTION TO MSD.
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  READ THE RECORD AND CHECK EACH BYTE AGAINST A PREDICTED 
*             RESULTS BASED ON THE EXPECTED SYNDROME CODE AND ANY 
*             CORRECTED BITS IN THE REMAINING BYTES.
*         10. SEND DISABLE READ SYNDROME FUNCTION TO MSD. 
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. READ THE RECORD AGAIN AND VERIFY PROPER CORRECTION IN 
*             SYNDROME CASES WHERE BITS 0-59 WOULD BE CORRECTED. CHECK
*             FOR ABSENCE OF CORRECTION IN CASES OF BITS 60-71. 
*         13. REPEAT STEPS 5 - 12 FOR A LIST OF OPERANDS COVERING 
*             CORRECTIONS FROM 1-0 AND 0-1 FOR EACH SINGLE BIT ERROR
*             SYNDROME CODE.
*         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 
* 
*         MSM45 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM45 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM45 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B5  = INDEX TO DATA BUFFER. 
*         B6  = INDEX TO DATA BUFFER. 
*         B8  = BUFFER WORD COUNT.
*         B9  = BUFFER POINTER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97E - GENERATE DATA FOR WRITE PART 1 
*         MSM97F - GENERATE DATA FOR WRITE PART 2 
*         MSM97G - GENERATE DATA FOR WRITE PART 3 
*         MSM97H - DATA FOR READ SYNDROME BITS PART 1 
*         MSM97I - DATA FOR READ SYNDROME BITS PART 2 
*         MSM97J - DATA FOR READ SYNDROME BITS PART 3 
*         MSM97K - DATA FOR READ SYNDROME BITS DISABLED PART 1
*         MSM97L - DATA FOR READ SYNDROME BITS DISABLED PART 2
*         MSM97M - DATA FOR READ SYNDROME BITS DISABLED PART 3
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM45 - SECDED SINGLE BIT CORRECTION/DETECTION
1  FORMAT MSM45 ERROR(S) = *DECD
3  FORMAT MSM45 SECDED SINGLE BIT CORRECT/DETECT PASS=*DD 
4  FORMAT MSM45 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM45 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM45 ACCESS LEVEL TOO LOW NEEDS AL=10
6  FORMAT *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
* 
   EQUATE BUFL TO 50B, BUFW TO 500B, PRESET TO 601B,
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
   EQUATE DSECD=103B, WRCKB=104B, RDCKB=105B, RDSYN=106 
   EQUATE CLRMF=110B, SDCLR=205B, MCBIT=10B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 45D                        *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 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B9 = 0                           *SET BUFFER NUMBER
24 B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
   B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = RDSYN                      *ENABLE READ SYNDROME BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
   IF(B9.EQ.0) CALL 97E             *GENERATE DATA FOR WRITE PART 1 
   IF(B9.EQ.1) CALL 97F             *GENERATE DATA FOR WRITE PART 2 
   IF(B9.EQ.2) CALL 97G             *GENERATE DATA FOR WRITE PART 3 
26 B4 = 1                           *SET CONDITION NUMBER 1 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   IF(B9.EQ.0) CALL 97H             *DATA FOR READ SYNDROME BITS PART 1 
   IF(B9.EQ.1) CALL 97I             *DATA FOR READ SYNDROME BITS PART 2 
   IF(B9.EQ.2) CALL 97J             *DATA FOR READ SYNDROME BITS PART 3 
30 GOSUB 70                         *GO TO READ 500B PP WORDS 
   B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
   IF(B9.EQ.0) CALL 97K             *DATA FOR READ SYNDROME BITS DISABLED PART 1
   IF(B9.EQ.1) CALL 97L             *DATA FOR READ SYNDROME BITS DISABLED PART 2
   IF(B9.EQ.2) CALL 97M             *DATA FOR READ SYNDROME BITS DISABLED PART 3
40 GOSUB 70                         *GO TO READ 500B PP WORDS 
   B9 = B9+1                        *SET NEXT BUFFER
42 IF(B9.GT.2) GOTO 44              *IF DONE WITH LAST BUFFER 
   GOTO 24                          *DO ALL OPERANDS
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOTO 24                          *IF REPEAT CONDITION
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFW                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 3 (B9) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
62 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 72
64 RETURN 
* 
* -------READ ALL 500B PP WORDS AND COMPARE 
* 
70 B5 = 0                           *SET FOR MOVE OF DATA 
   B6 = 0                           *SET FOR MOVE OF DATA 
   B8 = 500B                        *SET BUFFER COUNT FOR COPY
   IF(B9.EQ.2) B8=120B              *SET LAST BUFFER COUNT
71 COPY OB(B6) TO OB(B5) FOR BUFL   *NEXT PATTERN 
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
   B2 = B2+10                       *INCREMENT ESM ADDRESS
   GOTO 71 WHILE (B6+50.NE.B8)      *DO ALL OF THIS BUFFER
   RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM45 -   SECDED SINGLE BIT CORRECTION AND DETECTION
   MODULE MSM47,DESM(171,211)LOCK 
*** MSM47 - SECDED MULTIPLE BIT ERROR DETECTION 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         CHECK THE FOLLOWING MULTIPLE ERROR SYNDROME CASES:  DOUBLE
*         ERROR (OR MULTIPLE WITH EVEN NUMBER OF SYNDROME "1" BITS) 
*         MULTIPLE ERROR REPORTED AS SINGLE ERROR (ODD NUMBER OF
*         SYNDROME "1" BITS)
*         THE WRITE CHECK BIT AND READ SYNDROME MAINTENANCE FUNCTION
*         WILL BE USED. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND ENABLE WRITE CHECKBITS AND READ SYNDROME BITS TO MSD.
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  WRITE A 500B (12 BIT) WORD BUFFER STARTING AT THE TEST
*             ADDRESS (P0-P1).
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  READ A 5OB (12 BIT) WORD BUFFER STARTING AT THE TEST
*             ADDRESS (P0-P1) BY USING THE MAINTENANCE READ TO INPUT THE
*             DATA TO THE PP INPUT BUFFER.
*         9.  CHECK SYNDROME READ AGAINST A PRESTORED EXPECTED SYNDROME.
*         10. REPEAT STEPS 7 - 9 FOR THE 500B WORD BUFFER IN SUBSYSTEM. 
*         11. REPEAT STEPS 5 - 10 FOR EACH MULTIPLE AND DOUBLE ERROR
*             SYNDROME CODE.
*         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 
* 
*         MSM47 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM47 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM47 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B5  = INDEX TO DATA BUFFER. 
*         B6  = INDEX TO DATA BUFFER. 
*         B9  = BUFFER POINTER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Q - GENERATE DATA FOR WRITE PART 1 
*         MSM97R - GENERATE DATA FOR WRITE PART 2 
*         MSM97S - GENERATE DATA FOR WRITE PART 3 
*         MSM97T - DATA FOR READ SYNDROME BITS PART 1 
*         MSM97U - DATA FOR READ SYNDROME BITS PART 2 
*         MSM97V - DATA FOR READ SYNDROME BITS PART 3 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM47 - SECDED MULTIPLE BIT ERROR DETECTION 
1  FORMAT MSM47 ERROR(S) = *DECD
3  FORMAT MSM47 SECDED MULTIPLE BIT ERROR DETECTION PASS=*DD
4  FORMAT MSM47 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM47 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM47 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, BUFW TO 500B, PRESET TO 601B,
   EQUATE RDESM=13B, RD1ESM=14B, RDPB=17B, WRESM=25B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B, CMPB=0 
   EQUATE DSECD=103B, WRCKB=104B, RDCKB=105B, RDSYN=106 
   EQUATE CLRMF=110B, SDCLR=205B, MCBIT=10B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 47D                        *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 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
   B9 = 0                           *SET BUFFER NUMBER
24 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = RDSYN                      *ENABLE READ SYNDROME BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
   IF(B9.EQ.0) CALL 97Q             *GENERATE DATA FOR WRITE PART 1 
   IF(B9.EQ.1) CALL 97R             *GENERATE DATA FOR WRITE PART 2 
   IF(B9.EQ.2) CALL 97S             *GENERATE DATA FOR WRITE PART 3 
26 B4 = 1                           *SET CONDITION NUMBER 1 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   IF(B9.EQ.0) CALL 97T             *DATA FOR READ SYNDROME BITS PART 1 
   IF(B9.EQ.1) CALL 97U             *DATA FOR READ SYNDROME BITS PART 2 
   IF(B9.EQ.2) CALL 97V             *DATA FOR READ SYNDROME BITS PART 3 
30 GOSUB 70                         *GO TO READ 500B PP WORDS 
   B9 = B9+1                        *INCREMENT TO NEXT BUFFER 
42 IF(B9.GT.2) GOTO 44              *IF DONE WITH LAST BUFFER 
   GOTO 24                          *DO ALL OPERANDS
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB 
   GOTO 24                          *IF REPEAT CONDITION
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFW                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 3 (B9) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
62 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 66  *READ FROM SUBSYSTEM 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 72
64 RETURN 
* 
* -------DO MAINTENANCE READ TO GET DATA
* 
66 IF (SB.NE.6) GOTO 74             *IF NOT DOUBLE ERROR AND ACCEPT 
   B14 = RDPB                       *COMMAND NUMBER 
   READPB, ABT 67                   *READ PORT BUFFER 
   GOTO 63                          *COMPARE BUFFER 
67 IF (EC.EQ.7325) GOTO 63          *IF CHANNEL PARITY ERROR ON MULTIPLE ERROR
   GOTO 74                          *ELSE NORMAL ERROR PROCESSING 
* 
* -------READ ALL 500B PP WORDS AND COMPARE 
* 
70 B5 = 0                           *SET FOR MOVE OF DATA 
   B6 = 0                           *SET FOR MOVE OF DATA 
71 COPY OB(B6) TO OB(B5) FOR BUFL   *NEXT PATTERN 
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
   B2 = B2+10                       *INCREMENT ESM ADDRESS TO NEXT RECORD 
   GOTO 71 WHILE (B6+50.NE.500B)    *DO ALL OF THIS BUFFER
   RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM47 -   SECDED MULTIPLE BIT ERROR DETECTION 
   MODULE MSM49,DESM(171,211)LOCK 
*** MSM49 - ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST PROGRAMMABLE SECDED SINGLE ERROR COUNTER BY EXERCISING 
*         EACH BIT POSITION OF COMPARE AND ADDRESS FIELDS WITH VARIOUS
*         SECDED ERROR ADDRESS PATTERNS. SECDED ERRORS WILL BE FORCED 
*         BY USING THE WRITE CHECKBIT MAINTENANCE FUNCTION. 
*         THE SECDED ERROR ADDRESS IS DEFINED AS FOLLOWS -
* 
*         C ZZ ZSS SSS SSS (BASE 2) 
* 
*         C = CHIP SELECT BIT 
*         Z = SCAN ADDRESS BITS 
*         S = SYNDROME BITS 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  CALL MSM49A TO CLEAR ADDRESSES USED FOR TESTING.
*         5.  SEND WRITE CHECK BITS TO MSD. 
*         6.  CLEAR THE ERROR LOG AND VERIFY THE COUNTER IS EQUAL ZERO. 
*         7.  SET COMPARE BITS WITH ALL ZEROS.
*         8.  SET COMPARE VALUE BITS TO ALL ZEROS.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. GENERATE A SINGLE SECDED ERROR WITH ITS ADDRESS AND 
*             SYNDROME BITS EQUAL TO 0...01 (INITIALLY) BY WRITING THEN 
*             READING 5B (12 BIT) WORDS.
*         11. VERIFY 1 COUNT INCREMENT SINCE NO COMPARE SHOULD OCCUR, 
*             AND CONSEQUENTLY, ALL ERRORS SHOULD BE COUNTED. 
*         12. REPEAT 9 - 11, LEFT SHIFTING SECDED ERROR ADDRESS 
*             THROUGH ALL BIT POSITIONS.
*         13. CLEAR THE ERROR LOG AND VERIFY THE COUNTER IS CLEAR.
*         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 
* 
*         MSM49 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM49 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM49 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = INTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B9  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Z - GENERATE WRITE DATA PATTERNS FOR ERROR LOGGING.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98I - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM49 - ERRLOG PROG SINGLE ERR COUNTER PART ONE 
1  FORMAT MSM49 ERROR(S) = *DECD
2  FORMAT MSM49 ERRLOG PROG SE CNT I ADD=*OCT*OCT CNT=*DECD 
3  FORMAT MSM49 EC=*DECD, LC=*DECD ADD=*OCT*OCT CNT=*DECD 
4  FORMAT MSM49 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM49 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM49 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B, PRESET TO 601B, ELCSC TO 701B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, ELSPC=301B 
   EQUATE ELRDS=1B, ELCT1=2B, ELNCT=3B, ELSE0=7B, MCBIT=10B 
   EQUATE WRCKB=104B, RDSYN=106B, CLRMF=110B, SDCLR=205B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 49D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE TESTING 
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CHECK ERRLOG RESET CLEARED LOG 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *SAVE ERRLOG
   OB(12) = ELRDS                   *READ AND SAVE ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 1                           *SET LOWER STARTING ADDRESS 
   B3 = 1                           *SET INTERNAL LOOP COUNTER
* 
* -------MODULE TEST
* 
   CALL 97Z                         *GET WRITE BUFFER 
30 B4 = 1                           *SET CONDITION NUMBER 1 
   B9 = 212B                        *SET INDEX TO SAVE DATA 
   COPY OB(B9) TO OB(0) FOR BUFL    *MOVE THE DATA FOR WRITE
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 70                         *GO TO READ SUBROUTINE
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELCT1                   *CHECK IF COUNTER + 1 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   IF(B1.EQ.4000B) GOTO 34          *DONE ALL BITS 16 MEG 
   GOSUB 56                         *INCREMENT ADDRESS ROUTINE
   IF(B1.LE.P2) GOTO 30             *DO ALL BITS
34 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CHECK ERRLOG RESET CLEARED LOG 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B1 = B1.LS.1                     *SHIFT THE ADDRESS
   B2 = B2.LS.1                     *SHIFT THE ADDRESS
   IF(B2.EQ.1) B1 = 1               *SET UPPER ADDRESS
   IF(B2.EQ.1) B2 = 0               *CLEAR THE LOWER ADDRESS
   RETURN 
* 
* -------WRITE SUBROUTINES
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2,B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B1,B2,B3) TO DISPLAY  *DISPLAY LOOPING MESSA
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   B3 = B3+1                        *INCREMENT PASS COUNTER 
   RETURN 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = BUFL                        *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98I                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------READ SUBROUTINE
* 
70 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = 14B                        *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
72 RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM49 -   ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER PART ONE
   MODULE MSM49A,DESM(171,211)LOCK
*** MSM49A - CLEAR ADDRESSES TO BE TESTED BY ERROR LOGGING TESTS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         CLEARS ADDRESSES THAT WILL BE WRITTEN WITH ERRORS IN THE
*         ERROR LOGGING TEST MODULES. 
* 
*    1.2  METHOD- 
* 
*         1.  DUP ZEROS TO OB FOR 50B (12 BIT) WORDS. 
*         2.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         3.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS 0.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS LWA MINUS 7.
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS TEST ADDRESS. 
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  WRITE 50B WORDS FROM OUTPUT BUFFER TO COMPLEMENT OF THE 
*             TEST ADDRESS. 
*         10. LEFT SHIFT ONE TEST ADDRESS.
*         11. REPEAT 6 - 10 UNTIL ALL ADDRESS BITS ARE WRITTEN. 
*         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 TO CALLING MODULE. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE -
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B5  = TEST ADDRESS UPPER. 
*         B6  = TEST ADDRESS LOWER. 
*         B7  = FLAG FOR UPPER MEMORY 
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
* 
*         REMARKS - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM49A - CLEAR ADDRESSES FOR ERROR LOGGING TESTS
* 
   EQUATE BUFL TO 50B, RESLSP=21B   *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
* 
* -------MODULE INITIALIZATION
* 
20 B5 = 0                           *SET STARTING TEST ADDRESS
   B6 = 10                          *SET STARTING TEST ADDRESS
* 
* -------MODULE TEST
* 
   B1 = 0                           *SET BASE ADDRESS 
   B2 = 0                           *SET BASE ADDRESS 
   B7 = 0                           *SET FLAG LOWER MEMORY
* 
* -------WRITE DATA OF ZEROS TO ADDRESSES 
* 
30 DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   GOSUB 60                         *WRITE SUBROUTINE 
   B1 = P2                          *SET ADDRESS TO MAX SET 
   B2 = 7770B 
   GOSUB 60                         *WRITE SUBROUTINE 
32 B1 = B5                          *SET TEST ADDRESS 
   B2 = B6                          *SET TEST ADDRESS 
   GOSUB 60                         *WRITE ZEROS TO TEST ADDRESS
34 B1 = B5.XOR.P2                   *SET TEST ADDRESS 
   B2 = B6.XOR.7770B                *SET TEST ADDRESS 
   GOSUB 60                         *WRITE ZEROS TO TEST ADDRESS COMPLEMENT 
   B5 = B5.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   B6 = B6.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   IF(B7.EQ.1) GOTO 42              *DONE WITH FIRST HALF OF MEMORY 
   IF(B5.EQ.1) GOTO 36              *DONE THROUGH 16 MEG
   IF(B6.EQ.1) B5 = 1               *SET UPPER ADDRESS
   IF(B6.EQ.1) B6 = 0               *SET LOWER ADDRESS TO ZERO
   IF(B5.LE.P2) GOTO 32             *IF ALL DONE WITH LOWER HALF
36 B7 = 1                           *DONE WITH LOWER HALF 
   IF(P2.AND.7000B.EQ.0) GOTO 40    *SET UPPER ADDRESS
   B5 = P2.AND.7000B + 1            *SET UPPER ADDRESS
   GOTO 32                          *CONTINUE 
40 B5 = P2.AND.600B + 1             *SET UPPER ADDRESS
   GOTO 32                          *CONTINUE 
42 IF(P2.AND.7000B.EQ.0) GOTO 44    *SET UPPER ADDRESS
   IF(B5.AND.1776B.EQ.1000B) GOTO 50  *DONE ALL MEMORY
   B5 = B5.AND.776B                 *MASK OFF UPPER BITS
   B5 = P2.AND.7000B + B5           *ADD UPPER MEMORY 
   GOTO 32                          *CONTINUE 
44 IF(B5.AND.376B.EQ.200B) GOTO 50  *DONE ALL MEMORY
   B5 = B5.AND.176B                 *MASK OFF UPPER BITS
   B5 = P2.AND.600B + B5            *ADD UPPER MEMORY 
   GOTO 32                          *CONTINUE 
* 
* -------MODULE REPEAT/EXIT 
* 
50 EXIT                             *AND DAYFILE
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR 500B
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE DATA TO ESM
   RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   EXIT TO 98A                      *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM49A -   CLEAR ADDRESSES FOR ERROR LOG TESTS
   MODULE MSM50,DESM(171,211)LOCK 
*** MSM50 - ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST PROGRAMMABLE SECDED SINGLE ERROR COUNTER BY EXERCISING 
*         EACH BIT POSITION OF COMPARE AND ADDRESS FIELDS WITH VARIOUS
*         SECDED ERROR ADDRESS PATTERNS. SECDED ERRORS WILL BE FORCED 
*         BY USING THE WRITE CHECKBIT MAINTENANCE FUNCTION. 
*         THE SECDED ERROR ADDRESS IS DEFINED AS FOLLOWS -
* 
*         C ZZ ZSS SSS SSS (BASE 2) 
* 
*         C = CHIP SELECT BIT 
*         Z = SCAN ADDRESS BITS 
*         S = SYNDROME BITS 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND WRITE CHECK BITS TO MSD. 
*         5.  CLEAR THE ERROR LOG AND VERIFY THE COUNTER IS EQUAL ZERO. 
*         6.  SET COMPARE BITS TO 0...01 PATTERN (INITIALLY). 
*         7.  SET COMPARE ADDRESS BITS TO 0...01 PATTERN (INITIALLY)
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  GENERATE A SINGLE SECDED ERROR WITH ITS ADDRESS AND 
*             SYNDROME FIELDS EQUAL TO THE COMPLEMENT OF THE COMPARE
*             FIELDS. VERIFY NO COUNT INCREMENT. THIS IS DONE BY
*             WRITING THEN READING 5B (12 BIT) WORDS. 
*         10. SHIFT COMPARE AND COMPARE ADDRESS FIELDS LEFT ONE BIT 
*             IN PARALLEL.
*         11. REPEAT STEPS 8 - 10 UNTIL ALL BIT POSITIONS ARE SHIFTED 
*             THROUGH.
*         12. REPEAT STEPS 6 - 11, BUT SET COMPARE ADDRESS BITS TO
*             ZERO AND SHIFT A "1" BIT IN PARALLEL THROUGH THE ERROR
*             ADDRESS AND COMPARE BIT POSITIONS.
*         13. CLEAR ERROR LOG AND VERIFY COUNTER EQUALS ZERO. 
*         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 
* 
*         MSM50 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM50 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM50 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = INTERNAL LOOP COUNTER.
*         B4  = INDEX TO COMPARE BITS ADDRESS.
*         B5  = DATA TO ERRLOG PROG COUNTER.
*         B6  = DATA TO ERRLOG PROG COUNTER.
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B9  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM50A - GENERATE ADDRESSES FRO MSM50.
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Z - GENERATE WRITE DATA PATTERNS FOR ERROR LOGGING.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98I - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM50 - ERRLOG PROG SINGLE ERR COUNTER PART TWO 
1  FORMAT MSM50 ERROR(S) = *DECD
2  FORMAT MSM50 ERRLOG PROG SE COUNTER II PASS=*DECD
3  FORMAT MSM50 EC=*DECD, LC=*DECD PASS=*DECD 
4  FORMAT MSM50 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM50 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM50 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B, PRESET TO 601B, ELCSC TO 701B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, ELSPC=301B 
   EQUATE ELRDS=1B, ELCT1=2B, ELNCT=3B, ELSE0=7B, MCBIT=10B 
   EQUATE WRCKB=104B, RDSYN=106B, CLRMF=110B, SDCLR=205B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 50D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *SAVE ERRLOG
   OB(12) = ELRDS                   *READ AND SAVE ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CHECK ERRLOG CLEAR ON RESET
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B1 = 1400B                       *SET UPPER STARTING ADDRESS 
   IF(DC.EQ.171) B1 = 340B          *SET UPPER STARTING ADDRESS 
   B2 = 0007B                       *SET LOWER STARTING ADDRESS 
   B3 = 1                           *SET INTERNAL LOOP COUNTER
   B4 = 16                          *SET INDEX FOR COMPARE ADDRESS
   B6 = 1                           *SET BITS FOR SYNDROME COMPARE
   B9 = 262B                        *SET INDEX TO SAVE DATA 
   B11= 0                           *CLEAR INTERNAL PASS COUNTER
* 
* -------MODULE TEST
* 
   CALL 97Z                         *GET WRITE BUFFER 
30 B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   IF(B11.GT.7) OB(16) = B5         *SET COMPARE BITS FOR SYNDROME
   IF(B11.GT.7) OB(24) = B5         *SET COMPARE BITS FOR SYNDROME
   IF(B11.LT.100B) OB(B4+6) = B6    *SET COMPARE ADDRESS FIELDS 
   OB(B4) = B6                      *SET COMPARE BITS 
   CALL 97A                         *COMMUNICATE WITH MSD 
   COPY OB(B9) TO OB(0) FOR BUFL    *MOVE THE DATA FOR WRITE
   DELAY 10D MSEC                   *WAIT FOR MSD TO CHANGE MAX ADDRESS 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 70                         *GO TO READ SUBROUTINE
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELNCT                   *CHECK THAT COUNTER DID NOT COUNT 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   CALL 50A                         *INCREMENT THE ADDRESSES
   IF(B11.NE.7777B) GOTO 30         *IF NOT DONE WITH ALL PASSES
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELSE0                   *CHECK IF COUNTER = 0 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE SUBROUTINES
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B3) TO DISPLAY  *DISPLAY LOOPING MESSAGE
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   B3 = B3+1                        *INCREMENT PASS COUNTER 
   RETURN 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = BUFL                        *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98I                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------READ SUBROUTINE
* 
70 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = 14B                        *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
72 RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM50 -   ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER TWO 
   MODULE MSM50A,DESM(171,211)LOCK
*** MSM50A - GENERATE ADDRESSES FOR MSM50 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE ERROR ADDRESS AND COMPARE ADDRESS FOR MSM50. 
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE ERROR ADDRESS AND COMPARE ADDRESS DEPENDING ON B11.
*         2.  RETURN TO CALLING MODULE. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE -
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B11 = KEY TO GENERATE ERROR ADDRESS OR COMPARE BITS.
* 
* -------SET COMPARE BITS AND COMPARE VALUE BITS
* 
20 IF(B11.GT.7) GOTO 24             *DONE WITH SYNDROME DO ADDRESS BITS 
   B9 = B9 + 5                      *INCREMENT BUFFER INDEX 
   B6 = B6.LS.1                     *SHIFT SYNDROME BITS
   IF(B6.EQ.20) B4 = B4+1           *DO NEXT FOUR BITS
   IF(B6.EQ.20) B6 = 1              *RESET TO LOWER BIT 
   B11 = B11+1                      *INCREMENT THE INTERNAL PASS COUNTER
   IF(B4.EQ.20) GOTO 22             *DO ADDRESS BITS
   GOTO 70                          *DO ALL BITS
22 B9 = 205B                        *SET BUFFER INDEX TO BEGINNING
   IF(B4.EQ.20) B4 = 14             *DONE WITH SYNDROME DO ADDRESS
   B1 = 1000B                       *SET UPPER ADDRESS COMPLEMENT 
   IF(DC.EQ.171) B1 = 200B          *SET UPPER ADDRESS COMPLEMENT 
   B1 = B1 + B6                     *SET UPPER ADDRESS COMPLEMENT 
   B2 = 6B                          *SET LOWER ADDRESS COMPLEMENT 
   B5 = 1                           *SET DATA FOR SYNDROME
   GOTO 70                          *DO ALL BITS
24 IF(B11.GE.100) GOTO 40           *DO NEXT PASS 
   B6 = B6.LS.1                     *SHIFT ADDRESS BITS 
   B11 = B11+1                      *INCREMENT THE INTERNAL PASS COUNTER
   IF(B6.EQ.20) B4 = B4 + 1         *INCREMENT ADDRESS COUNTER
   IF(B6.EQ.20) B6 = 1              *SET TO LOWER BITS
   IF(B4.EQ.16) B4 = 12             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.15) GOTO 32             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.12) GOTO 36             *CHECK UPPER ADDRESS BITS 
   IF(B6.EQ.10) GOTO 30             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.14) GOTO 26             *CHECK LOWER ADDRESS BITS 
* 
* -------SET ERROR ADDRESS
* 
26 B2 = B6                          *SET THE ADDRESS
   B2 = B2.XOR.7B                   *SET LOWER ADDRESS COMPLEMENT 
   B1 = 1000B                       *SET UPPER ADDRESS COMPLEMENT 
   IF(DC.EQ.171) B1 = 200B          *SET UPPER ADDRESS COMPLEMENT 
   B1 = B1 + B6                     *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
30 B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.2.XOR.P2              *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
32 IF(B6.GE.4) GOTO 34              *CHECK UPPER BITS 
   B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.6.XOR.P2              *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
34 IF(P2.AND.7400B.EQ.0) GOTO 60    *DONE SYNDROME AND ADDRESS THIS PASS
   IF(P2.AND.7400B.EQ.400B) GOTO 35  *DONE SYNDROME AND ADDRESS THIS PASS 
   B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.6.XOR.P2              *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
35 IF(B6.EQ.10) GOTO 60             *DONE SYNDROME AND ADDRESS
   B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.6.XOR.P2              *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
36 IF(B6.EQ.4) GOTO 60              *DONE SYNDROME AND ADDRESS
   IF(P2.AND.7000B.EQ.1000B) GOTO 60  *DONE SYNDROME AND ADDRESS THIS PASS
   IF(P2.AND.7000B.EQ.2000B) GOTO 37  *DONE SYNDROME AND ADDRESS THIS PASS
   B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.10D.XOR.P2            *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
37 B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.10D.XOR.P2            *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
* 
* -------SET COMPARE BITS AND COMPARE VALUE BITS
* 
40 IF(B11.GT.107) GOTO 44           *DONE WITH SYNDROME DO ADDRESS BITS 
   B9 = B9 + 5                      *INCREMENT BUFFER INDEX 
   B6 = B6.LS.1                     *SHIFT SYNDROME BITS
   IF(B6.EQ.20) B4 = B4+1           *DO NEXT FOUR BITS
   IF(B6.EQ.20) B6 = 1              *RESET TO LOWER BIT 
   B11 = B11+1                      *INCREMENT THE INTERNAL PASS COUNTER
   IF(B4.EQ.20) GOTO 42             *DO ADDRESS BITS
   GOTO 70                          *DO ALL BITS
42 B9 = 200B                        *SET BUFFER INDEX TO BEGINNING
   IF(B4.EQ.20) B4 = 14             *DONE WITH SYNDROME DO ADDRESS
   B1 = 10B                         *SET UPPER ADDRESS
   B2 = 1                           *SET LOWER ADDRESS
   B5 = 1                           *SET DATA FOR SYNDROME
   GOTO 70                          *DO ALL BITS
44 B6 = B6.LS.1                     *SHIFT ADDRESS BITS 
   B11 = B11+1                      *INCREMENT THE INTERNAL PASS COUNTER
   IF(B6.EQ.20) B4 = B4 + 1         *INCREMENT ADDRESS COUNTER
   IF(B6.EQ.20) B6 = 1              *SET TO LOWER BITS
   IF(B4.EQ.16) B4 = 12             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.15) GOTO 53             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.12) GOTO 56             *CHECK UPPER ADDRESS BITS 
   IF(B6.EQ.10) GOTO 52             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.14) GOTO 50             *CHECK LOWER ADDRESS BITS 
* 
* -------SET ERROR ADDRESS
* 
50 B2 = B6                          *SET THE ADDRESS
   B1 = 10B                         *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
52 B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.2.AND.P2              *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
53 IF(B6.GE.4) GOTO 54              *CHECK UPPER BITS 
   B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.6.AND.P2              *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
54 IF(P2.AND.7400B.EQ.0) GOTO 64    *DONE SYNDROME AND ADDRESS
   IF(P2.AND.7400B.EQ.400B) GOTO 55  *CHECK ADDRESS BIT 20
   B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.6.AND.P2              *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
55 IF(B6.EQ.10) GOTO 64             *DONE SYNDROME AND ADDRESS
   B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.6.AND.P2              *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
56 IF(B6.EQ.4) GOTO 64              *DONE SYNDROME AND ADDRESS
   IF(P2.AND.7000B.EQ.1000B) GOTO 64  *DONE SYNDROME AND ADDRESS
   IF(P2.AND.7000B.EQ.2000B) GOTO 57  *CHECK BIT 22 
   B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.10D.AND.P2            *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
57 B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.10D.AND.P2            *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
60 B11 = 100B                       *FLAG DONE WITH ALL BITS FIRST PASS 
   B1 = 0                           *SET STARTING ADDRESS 
   B2 = 0                           *SET STARTING ADDRESS 
   B4 = 16                          *SET BUFFER ADDRESS 
   B5 = 0                           *SET DATA WORD FOR SYNDROME 
   B6 = 1                           *SET DATA WORD
   B9 = 212B                        *SET STARTING BUFFER
   GOTO 70                          *EXIT 
64 B11 = 7777B                      *FLAG DONE WITH ALL BITS BOTH PASSES
70 EXIT                             *RETURN TO CALLING MODULE 
   END 20 
COMPILE   - MSM50A -   GENERATE ADDRESS FOR MSM50 
   MODULE MSM51,DESM(171,211)LOCK 
*** MSM51 - ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER PART THREE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST PROGRAMMABLE SECDED SINGLE ERROR COUNTER BY EXERCISING 
*         EACH BIT POSITION OF COMPARE AND ADDRESS FIELDS WITH VARIOUS
*         SECDED ERROR ADDRESS PATTERNS. SECDED ERRORS WILL BE FORCED 
*         BY USING THE WRITE CHECKBIT MAINTENANCE FUNCTION. 
*         THE SECDED ERROR ADDRESS IS DEFINED AS FOLLOWS -
* 
*         C CZZ ZSS SSS SSS (BASE 2)
* 
*         C = CHIP SELECT BITS
*         Z = SCAN ADDRESS BITS 
*         S = SYNDROME BITS 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND WRITE CHECK BITS TO MSD. 
*         5.  CLEAR THE ERROR LOG AND VERIFY THE COUNTER IS EQUAL ZERO. 
*         6.  SET COMPARE BITS FIELD TO 0...01 AND THE COMPARE ADDRESS
*             FIELD EQUAL TO ALL ZEROS. 
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  GENERATE A SINGLE SECDED ERROR WITH ITS ADDRESS AND 
*             SYNDROME FIELDS EQUAL TO THE COMPLEMENT OF THE COMPARE
*             FIELD. VERIFY ONE COUNT INCREMENT, BY WRTING AND READING
*             5B (12 BIT) WORDS.
*         9.  VERIFY COUNTER INCREMENT. 
*         10. SHIFT LEFT THE COMPARE FIELD "1" BIT. 
*         11. REPEAT 7 - 10 FOR ALL BIT POSITIONS.
*         12. REPEAT STEPS 7 - 11, BUT WITH THE COMPARE ADDRESS SET TO
*             ALL ONES AND SLIDING A "1" BIT THROUGH THE COMPARE AND
*             SECDED ERROR ADDRESS FIELDS IN PARALLEL.
*         13. CLEAR ERROR LOG AND VERIFY COUNTER EQUALS ZERO. 
*         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 
* 
*         MSM51 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM51 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM51 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = COMPARE BITS. 
*         B4  = INDEX TO COMPARE BITS ADDRESS.
*         B5  = DATA TO ERRLOG PROG COUNTER.
*         B6  = DATA TO ERRLOG PROG COUNTER.
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B9  = INDEX TO DATA BUFFER. 
*         B11 = INTERNAL PASS COUNTER.
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Z - GENERATE WRITE DATA PATTERNS FOR ERROR LOGGING.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98I - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM51 - ERRLOG PROG SINGLE ERR COUNTER PART THREE 
1  FORMAT MSM51 ERROR(S) = *DECD
2  FORMAT MSM51 ERRLOG PROG SE COUNTER III COUNT=*DD
3  FORMAT MSM51 EC=*DECD, LC=*DECD COUNT=*DD
4  FORMAT MSM51 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM51 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM51 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B, PRESET TO 601B, ELCSC TO 701B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, ELSPC=301B 
   EQUATE ELRDS=1B, ELCT1=2B, ELNCT=3B, ELSE0=7B, MCBIT=10B 
   EQUATE WRCKB=104B, RDSYN=106B, CLRMF=110B, SDCLR=205B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 51D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *SAVE ERRLOG
   OB(12) = ELRDS                   *READ AND SAVE ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CHECK ERRLOG CLEAR ON RESET
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B1 = 1400B                       *SET UPPER STARTING ADDRESS 
   IF(DC.EQ.171) B1 = 340B          *SET UPPER STARTING ADDRESS 
   B2 = 0007B                       *SET LOWER STARTING ADDRESS 
   B3 = 0                           *SET DATA FOR COMPARE VALUE 
   B4 = 16                          *SET INDEX FOR COMPARE ADDRESS
   B5 = 0                           *SET BITS FOR SYNDROME COMPARE
   B6 = 1                           *SET BITS FOR SYNDROME COMPARE
   B9 = 262B                        *SET INDEX TO SAVE DATA 
   B10= 0                           *CLEAR INTERNAL PASS COUNTER
   B11= 0                           *CLEAR INTERNAL PASS COUNTER
* 
* -------MODULE TEST
* 
   CALL 97Z                         *GET WRITE BUFFER 
30 B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   IF(B11.GT.7) OB(16) = B5         *SET COMPARE BITS FOR SYNDROME
   DUP B3 TO OB(20) FOR 6           *SET COMPARE VALUE
   OB(B4) = B6                      *SET COMPARE BITS 
   CALL 97A                         *COMMUNICATE WITH MSD 
   COPY OB(B9) TO OB(0) FOR BUFL    *MOVE THE DATA FOR WRITE
   DELAY 10D MSEC                   *WAIT FOR MSD TO CHANGE MAX ADDRESS 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 70                         *GO TO READ SUBROUTINE
   B10 = B10+1                      *INCREMENT DISPLAY COUNTER
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELCT1                   *CHECK THAT COUNTER DID COUNT 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   CALL 51A                         *GENERATE COMPARE AND ERROR ADDRESS 
   IF(B11.NE.7777B) GOTO 30         *IF NOT DONE WITH ALL PASSES
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELSE0                   *CHECK IF COUNTER = 0 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE SUBROUTINES
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B10) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B10) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = BUFL                        *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98I                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------READ SUBROUTINE
* 
70 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = 14B                        *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
72 RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM51 -   ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER THREE 
   MODULE MSM51A,DESM(171,211)LOCK
*** MSM51A - GENERATE ADDRESSES FOR MSM51 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE ERROR ADDRESS AND COMPARE ADDRESS FOR MSM51. 
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE ERROR ADDRESS AND COMPARE ADDRESS DEPENDING ON B11.
*         2.  RETURN TO CALLING MODULE. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE -
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITION 
* 
*         B11 = KEY TO GENERATE ERROR ADDRESS OR COMPARE BITS.
* 
* -------SET COMPARE BITS AND COMPARE VALUE BITS
* 
20 IF(B11.GT.7) GOTO 24             *DONE WITH SYNDROME DO ADDRESS BITS 
   B9 = B9 + 5                      *INCREMENT BUFFER INDEX 
   B6 = B6.LS.1                     *SHIFT SYNDROME BITS
   IF(B6.EQ.20) B4 = B4+1           *DO NEXT FOUR BITS
   IF(B6.EQ.20) B6 = 1              *RESET TO LOWER BIT 
   B11 = B11+1                      *INCREMENT THE INTERNAL PASS COUNTER
   IF(B4.EQ.20) GOTO 22             *DO ADDRESS BITS
   GOTO 70                          *DO ALL BITS
22 B9 = 205B                        *SET BUFFER INDEX TO BEGINNING
   IF(B4.EQ.20) B4 = 14             *DONE WITH SYNDROME DO ADDRESS
   B1 = 1200B                       *SET UPPER ADDRESS COMPLEMENT 
   IF(DC.EQ.171) B1 = 240B          *SET UPPER ADDRESS COMPLEMENT 
   B2 = 6B                          *SET LOWER ADDRESS COMPLEMENT 
   B5 = 1                           *SET DATA FOR SYNDROME
   GOTO 70                          *DO ALL BITS
24 IF(B11.GE.100) GOTO 40           *DO NEXT PASS 
   B6 = B6.LS.1                     *SHIFT ADDRESS BITS 
   B11 = B11+1                      *INCREMENT THE INTERNAL PASS COUNTER
   IF(B6.EQ.20) B4 = B4 + 1         *INCREMENT ADDRESS COUNTER
   IF(B6.EQ.20) B6 = 1              *SET TO LOWER BITS
   IF(B4.EQ.16) B4 = 12             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.15) GOTO 32             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.12) GOTO 36             *CHECK UPPER ADDRESS BITS 
   IF(B6.EQ.10) GOTO 30             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.14) GOTO 26             *CHECK LOWER ADDRESS BITS 
* 
* -------SET ERROR ADDRESS
* 
26 B2 = B6                          *SET THE ADDRESS
   B2 = B2.XOR.7B                   *SET LOWER ADDRESS COMPLEMENT 
   B1 = 1010B                       *SET UPPER ADDRESS COMPLEMENT 
   IF(DC.EQ.171) B1 = 210B          *SET UPPER ADDRESS COMPLEMENT 
   B1 = B1 + B6                     *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
30 B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.2.XOR.P2              *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
32 IF(B6.GE.4) GOTO 34              *CHECK UPPER BITS 
   B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.6.XOR.P2              *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
34 IF(P2.AND.7400B.EQ.0) GOTO 60    *DONE SYNDROME AND ADDRESS THIS PASS
   IF(P2.AND.7400B.EQ.400B) GOTO 35  *DONE SYNDROME AND ADDRESS THIS PASS 
   B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.6.XOR.P2              *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
35 IF(B6.EQ.10) GOTO 60             *DONE SYNDROME AND ADDRESS
   B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.6.XOR.P2              *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
36 IF(B6.EQ.4) GOTO 60              *DONE SYNDROME AND ADDRESS
   IF(P2.AND.7000B.EQ.1000B) GOTO 60  *DONE SYNDROME AND ADDRESS THIS PASS
   IF(P2.AND.7000B.EQ.2000B) GOTO 37  *DONE SYNDROME AND ADDRESS THIS PASS
   B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.10D.XOR.P2            *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
37 B2 = 7B                          *SET LOWER ADDRESS COMPLEMENT 
   B1 = B6.LS.10D.XOR.P2            *SET UPPER ADDRESS COMPLEMENT 
   GOTO 70                          *EXIT 
* 
* -------SET COMPARE BITS AND COMPARE VALUE BITS
* 
40 IF(B11.GT.107) GOTO 44           *DONE WITH SYNDROME DO ADDRESS BITS 
   B9 = B9 + 5                      *INCREMENT BUFFER INDEX 
   B6 = B6.LS.1                     *SHIFT SYNDROME BITS
   IF(B6.EQ.20) B4 = B4+1           *DO NEXT FOUR BITS
   IF(B6.EQ.20) B6 = 1              *RESET TO LOWER BIT 
   B11 = B11+1                      *INCREMENT THE INTERNAL PASS COUNTER
   IF(B4.EQ.20) GOTO 42             *DO ADDRESS BITS
   GOTO 70                          *DO ALL BITS
42 B9 = 200B                        *SET BUFFER INDEX TO BEGINNING
   IF(B4.EQ.20) B4 = 14             *DONE WITH SYNDROME DO ADDRESS
   B1 = 0                           *SET UPPER ADDRESS
   B2 = 1                           *SET LOWER ADDRESS
   B5 = 1                           *SET DATA FOR SYNDROME
   GOTO 70                          *DO ALL BITS
44 B6 = B6.LS.1                     *SHIFT ADDRESS BITS 
   B11 = B11+1                      *INCREMENT THE INTERNAL PASS COUNTER
   IF(B6.EQ.20) B4 = B4 + 1         *INCREMENT ADDRESS COUNTER
   IF(B6.EQ.20) B6 = 1              *SET TO LOWER BITS
   IF(B4.EQ.16) B4 = 12             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.15) GOTO 53             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.12) GOTO 56             *CHECK UPPER ADDRESS BITS 
   IF(B6.EQ.10) GOTO 52             *CHECK UPPER ADDRESS BITS 
   IF(B4.EQ.14) GOTO 50             *CHECK LOWER ADDRESS BITS 
* 
* -------SET ERROR ADDRESS
* 
50 B2 = B6                          *SET THE ADDRESS
   B1 = 10B                         *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
52 B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.2.AND.P2              *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
53 IF(B6.GE.4) GOTO 54              *CHECK UPPER BITS 
   B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.6.AND.P2              *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
54 IF(P2.AND.7400B.EQ.0) GOTO 64    *DONE SYNDROME AND ADDRESS
   IF(P2.AND.7400B.EQ.400B) GOTO 55  *CHECK ADDRESS BIT 20
   B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.6.AND.P2              *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
55 IF(B6.EQ.10) GOTO 64             *DONE SYNDROME AND ADDRESS
   B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.6.AND.P2              *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
56 IF(B6.EQ.4) GOTO 64              *DONE SYNDROME AND ADDRESS
   IF(P2.AND.7000B.EQ.1000B) GOTO 64  *DONE SYNDROME AND ADDRESS
   IF(P2.AND.7000B.EQ.2000B) GOTO 57  *CHECK BIT 22 
   B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.10D.AND.P2            *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
57 B2 = 0                           *SET LOWER ADDRESS
   B1 = B6.LS.10D.AND.P2            *SET UPPER ADDRESS
   GOTO 70                          *EXIT 
60 B11 = 100B                       *FLAG DONE WITH ALL BITS FIRST PASS 
   B1 = 0                           *SET STARTING ADDRESS 
   B2 = 0                           *SET STARTING ADDRESS 
   B3 = 17B                         *SET DATA FOR COMPARE VALUE 
   B4 = 16                          *SET BUFFER ADDRESS 
   B5 = 0                           *SET DATA WORD FOR SYNDROME 
   B6 = 1                           *SET DATA WORD
   B9 = 212B                        *SET STARTING BUFFER
   GOTO 70                          *EXIT 
64 B11 = 7777B                      *FLAG DONE WITH ALL BITS BOTH PASSES
70 EXIT                             *RETURN TO CALLING MODULE 
   END 20 
COMPILE   - MSM51A -   GENERATE ADDRESS FOR MSM51 
   MODULE MSM52,DESM(171,211)LOCK 
*** MSM52 - ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER PART FOUR 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST PROGRAMMABLE SECDED SINGLE ERROR COUNTER BY EXERCISING 
*         EACH BIT POSITION OF COMPARE AND ADDRESS FIELDS WITH VARIOUS
*         SECDED ERROR ADDRESS PATTERNS. SECDED ERRORS WILL BE FORCED 
*         BY USING THE WRITE CHECKBIT MAINTENANCE FUNCTION. 
*         THE SECDED ERROR ADDRESS IS DEFINED AS FOLLOWS -
* 
*         C CZZ ZSS SSS SSS (BASE 2)
* 
*         C = CHIP SELECT BITS
*         Z = SCAN ADDRESS BITS 
*         S = SYNDROME BITS 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND WRITE CHECK BITS TO MSD. 
*         5.  CLEAR THE ERROR LOG AND VERIFY THE COUNTER IS EQUAL ZERO. 
*         6.  SET COMPARE BITS FIELD AND THE COMPARE ADDRESS
*             FIELD EQUAL TO ALL ZEROS. 
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  GENERATE 1 DECIMAL SINGLE SECDED ERRORS WITH THE ERROR
*             ADDRESS = 0, BY WRITING AND READING 5 (12 BIT) WORDS. 
*         9.  REPEAT 7 - 8 UNTIL 36 DECIMAL ERRORS ARE GENERATED. 
*         10. VERIFY THE COUNT INCREMENT IS 36. 
*         11. CLEAR ERROR LOG AND VERIFY COUNTER EQUALS ZERO. 
*         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 
* 
*         MSM52 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM52 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM52 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B5  = DATA TO ERRLOG PROG COUNTER.
*         B6  = ERRLOG COUNTER COUNT LOWER. 
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Z - GENERATE WRITE DATA PATTERNS FOR ERROR LOGGING.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98I - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM52 - ERRLOG PROG SINGLE ERR COUNTER PART FOUR
1  FORMAT MSM52 ERROR(S) = *DECD
2  FORMAT MSM52 ERRLOG PROG SE COUNTER IV COUNTER=*OCTB 
3  FORMAT MSM52 EC=*DECD, LC=*DECD COUNTER=*OCTB
4  FORMAT MSM52 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM52 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM52 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B, PRESET TO 601B, ELCSC TO 701B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, ELSPC=301B 
   EQUATE ELRDS=1B, ELSE0=7B, MCBIT=10B, ELC44=4B, ELCMX=5B 
   EQUATE WRCKB=104B, RDSYN=106B, CLRMF=110B, SDCLR=205B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 52D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *SAVE ERRLOG
   OB(12) = ELRDS                   *READ AND SAVE ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 66                         *CHECK WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CHECK ERRLOG CLEAR ON RESET
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 66                         *CHECK WITH MSD 
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
   B5 = 0                           *SET ERROR LOG COUNTS EQUAL ZERO
   B6 = 1                           *SET ERROR LOG COUNTS EQUAL ZERO
   WC = BUFL                        *SET WC FOR WRITE 
* 
* -------MODULE TEST
* 
   CALL 97Z                         *GET WRITE BUFFER 
30 B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   CALL 97A                         *COMMUNICATE WITH MSD 
   COPY OB(200) TO OB(0) FOR BUFL   *MOVE THE DATA FOR WRITE
   DELAY 10D MSEC                   *WAIT FOR MSD TO CHANGE MAX ADDRESS 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   GOTO 30 WHILE (B6+1.LE.36D)      *DO 36D ERRORS
34 B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELC44                   *CHECK THAT COUNTER EQUALS 36D(44B) 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 66                         *CHECK WITH MSD 
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELSE0                   *CHECK IF COUNTER = 0 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 66                         *CHECK WITH MSD 
   B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE/READ SUBROUTINE
* 
60 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
62 IF(B5.AND.10 NE.4) GOTO 64       *SKIP RESERVE IF B5 NOT EQUAL TO 10 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
64 IF(ES.AND.CM.EQ.0) MSG 2 (B6) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B6) TO DISPLAY  *DISPLAY LOOPING MESSAGE
   B14 = 14B                        *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   RETURN 
* 
* -------WRITE SUBROUTINE TO CHECK WITH MSD 
* 
66 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = BUFL                        *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 72   *WRITE TO SUBSYSTEM 
70 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
72 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98I                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM52 -   ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER PART FOUR 
   MODULE MSM53,DESM(171,211),LOCK
*** MSM53 - ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER PART FIVE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TEST PROGRAMMABLE SECDED SINGLE ERROR COUNTER BY INCREMENTING 
*         BY WRITING ONE HUNRED (OCTAL) ERRORS AND THEN READING THOSE 
*         ERRORS TO INCREMNT THE COUNTER. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND WRITE CHECK BITS TO MSD. 
*         5.  CLEAR THE ERROR LOG AND VERIFY THE COUNTER IS EQUAL ZERO. 
*         6.  SET COMPARE BITS FIELD AND THE COMPARE ADDRESS
*             FIELD EQUAL TO ALL ZEROS. 
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  GENERATE 100 SINGLE SECDED ERRORS STARTING WITH ADDRESS 0 
*             BY WRITING 500B (12 BIT) WORDS AND READING 430B (12 BIT)
*             WORDS.
*         9.  REPEAT 7 - 8 UNTIL COUNT IS EQUAL TO 770000B. 
*         10. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         11. GENERATE 1 SINGLE SECDED ERRORS STARTING WITH ADDRESS 0 
*             BY WRITING 500B (12 BIT) WORDS AND READING 5B (12 BIT)
*             WORDS.
*         12. REPEAT 10 - 11 UNTIL COUNT IS EQUAL TO 777777B. 
*         13. VERIFY COUNT IS EQUAL TO 777777B. 
*         14. CLEAR ERROR LOG AND VERIFY COUNTER EQUALS ZERO. 
*         15. 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.
*         16. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM53 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM53 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM53 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = DATA BUFFER INDEX.
*         B5  = DATA TO ERRLOG PROG COUNTER.
*         B6  = ERRLOG COUNTER COUNT LOWER. 
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B9  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Z - GENERATE WRITE DATA PATTERNS FOR ERROR LOGGING.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98I - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM53 - ERRLOG PROG SINGLE ERR COUNTER PART FIVE
1  FORMAT MSM53 ERROR(S) = *DECD
2  FORMAT MSM53 ERRLOG PROG SE COUNTER V COUNTER=*O*OCTB
4  FORMAT MSM53 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM53 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM53 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B, BUFW TO 500B, BUFR TO 440B
   EQUATE PRESET TO 601B, ELCSC TO 701B, RDESM=13B
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, ELSPC=301B 
   EQUATE ELRDS=1B, ELSE0=7B, MCBIT=10B, ELCMX=5B,
   EQUATE WRCKB=104B, RDSYN=106B, CLRMF=110B, SDCLR=205B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 53D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *SAVE ERRLOG
   OB(12) = ELRDS                   *READ AND SAVE ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 66                         *CHECK WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CHECK ERRLOG CLEAR ON RESET
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 66                         *CHECK WITH MSD 
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
   B5 = 0                           *SET ERROR LOG COUNTS EQUAL ZERO
   B6 = 1                           *SET ERROR LOG COUNTS EQUAL ZERO
   B9 = 120B                        *SET DATA INDEX 
* 
* -------MODULE TEST
* 
   CALL 97Z                         *GET WRITE BUFFER 
30 B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   CALL 97A                         *COMMUNICATE WITH MSD 
   COPY OB(200) TO OB(0) FOR 120B   *MOVE THE DATA FOR WRITE
31 COPY OB(0) TO OB(B9) FOR 120B    *MOVE THE DATA FOR WRITE
   GOTO 31 WHILE (B9+120B.NE.500B)  *MOVE 500 WORDS OF ERRORS 
   DELAY 10D MSEC                   *WAIT FOR MSD TO CHANGE MAX ADDRESS 
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
   B6 = B6+100                      *UPDATE COUNTER 
32 GOSUB 62                         *JUST DO THE READ 
   GOTO 32 WHILE (B6+100.NE.1)      *INCREMENT FIRST COUNTER
   GOTO 32 WHILE (B5+1.LT.77B)      *INCREMENT SECOND COUNTER 
   B4 = 11B                         *SET DATA INDEX 
   DUP 0 TO OB(5) FOR 473B          *CLEAR BUFFER FOR GOOD DATA 
34 OB(B4) = 377B                    *SET GOOD DATA IN BUFFER
   GOTO 34 WHILE (B4+5.LE.500B)     *DO WHOLE BUFFER
   GOSUB 60                         *WRITE AND READ ONE SINGLE ERROR
36 WC = BUFL                        *WORD COUNT FOR ONE RECORD READ 
   GOSUB 62                         *JUST DO THE READ 
   GOTO 36 WHILE (B6+1.NE.7777B)    *INCREMENT FIRST COUNTER
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELCMX                   *CHECK THAT COUNTER EQUALS MAXIMUM
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 66                         *CHECK WITH MSD 
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELSE0                   *CHECK IF COUNTER = 0 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 66                         *CHECK WITH MSD 
   B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFW                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   WC = BUFR                        *SET WORD COUNT FOR MOST READS
*IF -DEF,CMSE17X,2
62 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
*IF DEF,CMSE17X,1 
62 IF(B6.NE.1) GOTO 63              *SKIP MESSAGE IF OFFLINE
   IF(ES.AND.CM.EQ.0) MSG 2 (B5,B6) TO DISPLAY  *DISPLAY RUNNING MESSAGE
63 IF(WC.EQ.BUFL) GOTO 64           *IF WORD COUNT EQUAL 5
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM
   GOTO 65
64 B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
65 RETURN 
* 
* -------WRITE SUBROUTINE TO CHECK WITH MSD 
* 
66 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = BUFL                        *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 72   *WRITE TO SUBSYSTEM 
70 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
72 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98I                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM53 -   ERROR LOG PROGRAMMABLE SINGLE ERROR COUNTER PART FIVE 
   MODULE MSM55,DESM(171,211)LOCK 
*** MSM55 - DOUBLE ERROR LOGGING TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE ONE DOUBLE ERROR (DE) AS ONE ADDRESS AMONG 16 NON- 
*         FAILING ADDRESSES TO VERIFY CORRECT ADDRESSING INTO THE ERROR 
*         LOG LOGIC. REPEAT TO FILL UP THE 16 DOUBLE ERROR LOCATIONS IN 
*         THE ERROR LOG. SET AND CLEAR ALL ADDRESS BITS PLUS ALTERNATE
*         ONES AND ZEROS TO TEST ALL ERROR LOG BIT POSITIONS, POSSIBLE
*         BIT PICKS, DROPS AND SHORTS.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND WRITE CHECK BITS TO MSD. 
*         5.  SEND READ ENTIRE ERROR LOG CONTENTS AND SAVE TO MSD.
*         6.  SET INITIAL SUBSYSTEM BUFFER ADDRESS = 0...01.
*         7.  SEND RESET ERROR LOG, STATUS CLEAR FUNCTIONS AND VERIFY 
*             THAT VALID BITS ARE ZERO, ALL COUNTERS ARE ZERO, NO OTHER 
*             BITS HAVE CHANGED,AND THAT DOUBLE ERROR FULL BIT IS CLEAR.
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  WRITE A 2 RECORD BUFFER IN SUBSYSTEM WITH THE FIRST LOCATION
*             CONTAINING A DOUBLE ERROR, THE REMAINING NO ERRORS. 
*         10. READ THE FIRST RECORD BACK AND VERIFY ONLY THAT THE DE WAS
*             INSERTED INTO ERROR LOG. READ ENTIRE ERROR LOG TO LOOK FOR
*             MULTIPLE PICKS, INCORRECT INSERTION ADDRESS, COMPARING
*             WITH THE ENTIRE EXPECTED LOG CONTENTS BASED ON THE ORIGINAL 
*             SAVED CONTENTS (STEP 5), THE CURRENT DOUBLE ERROR 
*             TO BE INSERTED. 
*         11. REPEAT STEP 8 - 10 FOR NEXT DE LOCATION IN THE ERROR LOG
*             UNTIL FULL, THEN TEST DE FULL STATUS SET. 
*         12. CHANGE THE ADDRESS PATTERN BY SHIFTING THE SUBSYSTEM
*             BUFFER ADDRESS LEFT 1 BIT.
*         13. REPEAT 8 - 12 FOR A "1" BIT IN EACH BIT POSITION. 
*         14. SEND SIDE DOOR CONTROL CLEAR TO MSD.
*         15. CHECK THAT DE VALID BITS CLEARED. 
*         16. SEND RESET ERROR LOG, STATUS CLEAR FUNCTIONS AND VERIFY 
*             THAT VALID BITS ARE ZERO, ALL COUNTERS ARE ZERO, NO OTHER 
*             BITS HAVE CHANGED,AND THAT THE DOUBLE ERROR FULL BIT IS 
*             CLEAR.
*         17. 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.
*         18. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM55 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM55 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM55 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = DISPLAY DATA COUNTER. 
*         B6  = DATA TO ERRLOG PROG COUNTER.
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B9  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98I - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM55 - DOUBLE ERROR LOGGING TEST 
1  FORMAT MSM55 ERROR(S) = *DECD
2  FORMAT MSM55 DE LOGGING TEST ADD=*OCT*OCT DE COUNTER=*DD 
3  FORMAT MSM55 EC=*DECD LC=*DECD ADD=*OCT*OCT DE CNTR=*DD
4  FORMAT MSM55 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM55 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM55 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B, BUFW TO 120B, BUFR TO 50B, ELVBC=17B
   EQUATE PRESET TO 601B, ELCSC TO 701B, ELRST=112B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, ELSPC=301B 
   EQUATE ELRDS=1B, ELDLF=16B, MCBIT=10B, ELDEV=10B 
   EQUATE WRCKB=104B, CLRMF=110B, SDCLR=205B, CCBIT=4B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 55D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 1                           *SET LOWER STARTING ADDRESS 
   B6 = 0                           *SET ERROR LOG COUNTS EQUAL ZERO
24 B12 = ELRST                      *RESET ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *SAVE ERRLOG
   OB(12) = ELRDS                   *READ AND SAVE ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
* 
* -------MODULE TEST
* 
30 DUP 0 TO OB FOR BUFW             *CLEAR THE WRITE BUFFER 
   B9 = 11B                         *SET INDEX FOR GOOD DATA
32 OB (B9) = 377B                   *INSERT DATA THAT WILL NOT CREATE ERROR 
   GOTO 32 WHILE (B9+5.LT.120B)     *DO ALL WRITE BUFFER
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
34 B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELDEV                   *CHECK THAT DOUBLE ERROR LOGGED AND VERIFIED
   OB(13) = B6                      *CHECK THAT CORRECT DE LOGGED AND VERIFIED
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
40 GOTO 30 WHILE (B6+1.LT.20B)      *DO ALL 16 DOUBLE ERRORS
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELDLF                   *CHECK IF DOUBLE ERROR LOG FULL 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B6 = 0                           *RESET B6 
   B1 = B1.LS.1                     *SHIFT THE ADDRESS
   B2 = B2.LS.1                     *SHIFT THE ADDRESS
   IF(B2.EQ.10) B2 = B2.LS.1        *SKIP BIT THREE 
   IF(B2.EQ.1) B1 = 1               *SET UPPER ADDRESS
   IF(B2.EQ.1) B2 = 0               *RESET LOWER ADDRESS
   IF(B1.EQ.4000B) GOTO 42          *DO ALL BITS 16 MEG 
   IF(B1.LE.P2) GOTO 24             *DO ALL BITS
42 B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = CCBIT                   *CONTROL CLEAR
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELVBC                   *CHECK IF VALID BITS CLEAR
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *DID RESET CLEAR ALL COUNTERS 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = ELSPC                      *ERRLOG SET PROGRAM COUNTER 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFW                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B4 = B6+1                        *SET DISPLAY COUNTER
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2,B4) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B1,B2,B4) TO DISPLAY  *DISPLAY LOOPING MESSA
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   WC = BUFR                        *SET WC FOR READ
   B14 = 14B                        *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 70  *READ FROM SUBSYSTEM 
   RETURN 
* 
* -------WRITE SUBROUTINE TO CHECK WITH MSD 
* 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = BUFL                        *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98I                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------PROCESS READ DOUBLE ERRORS 
* 
70 IF (SB.NE.6) GOTO 74             *IF NOT DOUBLE ERROR
   GOTO 64                          *ELSE, RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM55 -   DOUBLE ERROR LOGGING TEST 
   MODULE MSM57,DESM(171,211)LOCK 
*** MSM57 - SINGLE ERROR COMPARE AND LOGGING TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE ONE SINGLE ERROR AS ONE ADDRESS AMONG 8 NON FAILING
*         ADDRESSES TO VERIFY CORRECT ADDRESSING INTO THE ERROR LOG 
*         LOGIC. REPEAT TO FILL UP THE 16 SINGLE ERROR LOCATIONS IN THE 
*         ERROR LOG. SET AND CLEAR ALL ADDRESS BITS PLUS ALTERNATE ONES 
*         AND ZEROS TO TEST ALL ERROR LOG BIT POSITIONS, POSSIBLE BIT 
*         PICKS, DROPS AND SHORTS.
* 
*         THE SECDED ERROR ADDRESS IS DEFINED AS FOLLOWS -
* 
*         C ZZ ZSS SSS SSS (BASE 2) 
* 
*         C = CHIP SELECT BIT 
*         Z = SCAN ADDRESS BITS 
*         S = SYNDROME BITS 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND ENABLE WRITE CHECK BITS TO MSD.
*         5.  SEND READ ENTIRE ERROR LOG CONTENTS AND SAVE. 
*         6.  OUTPUT ALL ONES TO BOTH 18 BIT PROGRAMMABLE ERROR LOG 
*             SINGLE ERROR COUNTER COMPARE FIELDS. THIS DISABLES IT FROM
*             COUNTING. 
*         7.  INITIALIZE SECDED ERROR ADDRESS TO ZERO.
*         8.  SEND RESET ERROR LOG, STATUS CLEAR FUNCTIONS AND VERIFY 
*             THAT VALID BITS ARE ZERO, ALL COUNTERS ARE ZERO, NO OTHER 
*             BITS HAVE CHANGED,AND THAT DOUBLE ERROR FULL BIT IS CLEAR.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. WRITE A RECORD TO SUBSYSTEM CONTAINING ONE SINGLE SECDED
*             ERROR, WITH THE OTHER SCANS CONTAINING NO ERRORS. 
*             THE RECORD ADDRESS IS-
*             C AAA AAA AAA AAA AAA AAA ZZZ   WHERE 
* 
*             C = CHIP SELECT BIT 21
*             A = ADDRESS BITS 3-20 AND ARE ALWAYS ZERO 
*             Z = SCAN ADDRESS BITS 
* 
*             C AND Z BITS ARE DERIVED FROM THE CURRENT ERROR 
*             ADDRESS.
*         11. READ THE RECORD AND VERIFY THAT ONLY THE ONE SINGLE ERROR 
*             WAS INSERTED INTO THE ERROR LOG AND INSERTED AT THE 
*             CORRECT ERROR LOG LOCATION AND THAT NO MULTIPLE BIT PICKS 
*             OCCURRED COMPARING WITH THE ORIGINAL SAVED LOG CONTENTS 
*             (STEP 8). ALL LOCATIONS IN THE LOG WILL BE CHECKED. 
*         12. REPEAT 9 - 11, ADVANCING THE SINGLE ERROR THROUGH 
*             ALL SCANS OF THE RECORD.
*         13. WHEN 16 SINGLE ERRORS HAVE BEEN GENERATED, CHECK
*             THAT THE THE SINGLE ERROR FULL STATUS HAS SET.
*         14. SHIFT LEFT THE ONE BIT IN THE SYNDROME CODE AND 
*             REPEATING STEPS 8 - 13 UNTIL ALL BIT POSITIONS 0-7
*             IN THE SYNDROME CODE HAVE BEEN SHIFTED THRU.
*         15. SEND SIDE DOOR CONTROL CLEAR TO MSD.
*         16. VERIFY THAT THE SINGLE ERROR CTR=0 AND SINGLE ERROR 
*             VALID BITS ARE RESET. 
*         17. SEND RESET ERROR LOG, STATUS CLEAR FUNCTIONS AND VERIFY 
*             THAT VALID BITS ARE ZERO, ALL COUNTERS ARE ZERO, NO 
*             OTHER BITS HAVE CHANGED, AND THAT THE DOUBLE ERROR FULL 
*             BIT IS CLEAR. 
*         18. 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.
*         19. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM57 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM57 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM57 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = COUNTER FOR DISPLAY.
*         B4  = TEMPORARY STORAGE.
*         B5  = COUNTER FOR ERRLOG COUNTER. 
*         B6  = SCAN ADDRESS COUNTER. 
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B9  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Z - GENERATE WRITE DATA PATTERNS FOR ERROR LOGGING.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98I - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM57 - SINGLE ERROR COMPARE AND LOGGING TEST 
1  FORMAT MSM57 ERROR(S) = *DECD
2  FORMAT MSM57 SE COMPARE AND LOG TEST CTR=*DD COUNT=*DD 
3  FORMAT MSM57 EC=*DECD, LC=*DECD CTR=*DD COUNT=*DD
*IF DEF,MVE,1 
5  FORMAT MSM57 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM57 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, ELSE0=7B 
   EQUATE PRESET TO 601B, ELCSC TO 701B, ELRST=112B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, ELSPC=301B 
   EQUATE ELRDS=1B, ELSLF=15B, MCBIT=10B, ELSEV=11B 
   EQUATE WRCKB=104B, CLRMF=110B, SDCLR=205B, CCBIT=4B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 57D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 1                           *SET LOWER STARTING ADDRESS 
   B3 = 1                           *SET COUNT EQUAL ONE
   B5 = 0                           *SET COUNT EQUAL ZERO 
   B6 = 0                           *SET SCAN EQUAL ZERO
   B9 = 212                         *SET INDEX TO FIRST SINGLE ERROR
24 B12 = ELRST                      *RESET ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELRDS                      *READ AND SAVE ERROR LOG
   GOSUB 56                         *ERROR SET CHECK SUBROUTINE 
   B12 = ELSPC                      *SET ERRLOG PROGRAM COUNTER 
   DUP 17B TO OB (10) FOR 16B       *SET ALL BITS IN COUNTER
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
   CALL 97Z                         *GET WRITE BUFFER 
30 B4 = 4                           *INDEX FOR WRITE BUFFER 
   DUP 0 TO OB FOR BUFL             *CLEAR THE WRITE BUFFER 
32 OB (B4) = 377B                   *SET DATA FOR NO ERRORS 
   GOTO 32 WHILE (B4+5.LT.50B)      *DO WHOLE RECORD
   COPY OB(B9) TO OB(0) FOR 5       *INSERT DATA THAT WILL CREATE ERROR 
   B2 = B6                          *SET LOWER ADDRESS
   GOSUB 60                         *GO TO WRITE/READ SUBROUTINE
34 B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELSEV                   *CHECK THAT SE LOGGED AND VERIFIED
   OB(13) = B5                      *CHECK THAT CORRECT ERR LOGGED AND VERIFIED 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B5 = B5+1                        *INCREMENT THE COUNTER
40 GOTO 30 WHILE (B6+1.LT.10B)      *DO ALL SCANS 
   B6 = 0                           *RESET SCAN 0 
   IF (DC.EQ.171) GOTO 42           *DO ALL 16 ERRORS 
   GOTO 30 WHILE (B1+1000B.LT.2000B)  *DO ALL 16 ERRORS 
   GOTO 43                          *CONTINUE 
42 GOTO 30 WHILE (B1+200B.LT.400B)  *DO ALL 16 ERRORS 
43 B12 = ELSLF                      *CHECK IF SINGLE ERROR LOG FULL 
   GOSUB 56                         *ERROR SET CHECK SUBROUTINE 
   B3 = B3+1                        *INCREMENT THE COUNTER
   B5 = 0                           *SET COUNTER NUMBER 
   B6 = 0                           *RESET B6 
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   GOTO 24 WHILE (B9+5.LT.262B)     *DO ALL EIGHT SYNDROME CODES
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = CCBIT                   *CONTROL CLEAR
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELSE0                      *CHECK IF SINGLE ERROR COUNTER ZERO 
   GOSUB 56                         *ERROR SET CHECK SUBROUTINE 
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = 0                          *DID RESET CLEAR ERRORS 
   GOSUB 56                         *ERROR SET CHECK SUBROUTINE 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 3(B13,B0,B4,B3) TO DISPLAY   *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------ERROR LOG CHECK SET SUBROUTINE 
* 
56 DUP 0 TO OB (10) FOR 16B         *SAVE ERRLOG
   OB(12) = B12                     *FUNCTION TO BE DONE
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   RETURN 
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B4 = B5 + 1                      *SET DISPLAY COUNTER
   IF(ES.AND.CM.EQ.0) MSG 2 (B4,B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B4,B3) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   WC = 5B                          *WORD COUNT FOR READ
   B14 = 14B                        *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   RETURN 
* 
* -------WRITE SUBROUTINE TO CHECK WITH MSD 
* 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = 5B                          *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98I                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM57 -   SINGLE ERROR COMPARE AND LOGGING TEST 
   MODULE MSM59,DESM(171,211)LOCK 
*** MSM59 - SINGLE ERROR LOG 4-BIT COUNTER TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         CHECK ERROR LOG SINGLE ERROR COMPARE AND 4 BIT COUNTER
*         CIRCUITS. 
*         THE SECDED ERROR ADDRESS IS DEFINED AS FOLLOWS -
*         C ZZ ZSS SSS SSS (BASE 2) 
* 
*         C = CHIP SELECT BIT 
*         Z = SCAN ADDRESS BITS 
*         S = SYNDROME BITS 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND ENABLE WRITE CHECK BITS TO MSD.
*         5.  READ ENTIRE ERROR LOG CONTENTS AND SAVE.
*         6.  OUTPUT ALL ONES TO BOTH 34 BIT PROGRAMMABLE ERROR LOG 
*             SINGLE ERROR COUNTER COMPARE FIELDS.
*             THIS DISABLES IT FROM COUNTING. 
*         7.  INITIALIZE SECDED ERROR ADDRESS TO ZERO.
*         8.  SEND RESET ERROR LOG, STATUS CLEAR FUNCTIONS AND VERIFY 
*             THAT VALID BITS ARE ZERO, ALL COUNTERS ARE ZERO, NO OTHER 
*             BITS HAVE CHANGED,AND THAT DOUBLE ERROR FULL BIT IS CLEAR.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. WRITE A RECORD TO SUBSYSTEM CONTAINING ONE SINGLE SECDED
*             ERROR, WITH THE OTHER SCANS CONTAINING NO ERRORS. 
*             THE RECORD ADDRESS IS-
*             C AAA AAA AAA AAA AAA AAA ZZZ    WHERE
* 
*             C = CHIP SELECT BIT 21
*             A = ADDRESS BITS 3-20 AND ARE ALWAYS ZERO 
*             Z = SCAN ADDRESS BITS 
* 
*             C AND Z BITS ARE DERIVED FROM THE CURRENT ERROR ADDRESS.
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. READ THE SAME RECORD BACK AGAIN AND VERIFY THAT ONLY
*             THE CORRECT 4 BIT SINGLE ERROR COUNTER INCREMENTED. 
*         13. REPEAT 11 - 12 UNTIL THE CURRENT 4 BIT COUNTER
*             HAS INCREMENTED TO ITS FULL COUNT.
*         14. PERFORM ONE MORE READ AND VERIFY THAT THE ERROR LOG 
*             REMAINS UNCHANGED.
*         15. REPEAT 9 - 14 ADVANCING THE SINGLE ERROR THROUGH
*             ALL SCANS OF THE RECORD AND BOTH CHIPS. 
*         16. WHEN 16*16 SINGLE ERRORS HAVE BEEN GENERATED, CHECK 
*             THAT THE THE SINGLE ERROR FULL STATUS HAS SET.
*         17. SEND RESET ERROR LOG, STATUS CLEAR FUNCTIONS AND VERIFY 
*             THAT VALID BITS ARE ZERO, ALL COUNTERS ARE ZERO, NO OTHER 
*             BITS HAVE CHANGED,AND THAT THE DOUBLE ERROR FULL BIT IS 
*             CLEAR.
*         18. 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.
*         19. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM59 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM59 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM59 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = TEMPORARY STORAGE.
*         B5  = SCAN TEST ADDRESS.
*         B6  = ERRLOG COUNTER COUNT LOWER. 
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B9  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM97Z - GENERATE WRITE DATA PATTERNS FOR ERROR LOGGING.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98I - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM59 - SINGLE ERROR LOG 4-BIT COUNTER TEST 
1  FORMAT MSM59 ERROR(S) = *DECD
2  FORMAT MSM59 SE LOG 4-BIT COUNTER TEST CTR=*DD COUNT=*DD 
3  FORMAT MSM59 EC=*DECD, LC=*DECD CTR=*DD COUNT=*DD
*IF DEF,MVE,1 
5  FORMAT MSM59 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM59 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, ELCSC=701B, PRESET=601B, SDCLR=205B
   EQUATE ELRST=112B, ELSE0=7, ELSLF=15B, MCBIT=10B, CCBIT=4
   EQUATE RD1ESM=14, RESLSP=21, WRESM=25, ELSPC=301, ELRDS=1
   EQUATE ELSE1=12B, ELSNC=13B, WRCKB=104B, CLRMF=110B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 59D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B5 = 0                           *SET SCAN EQUAL ZERO
   B6 = 1                           *SET COUNTER FOR NUMBER OF TRIPS
   B9 = 212                         *SET INDEX TO FIRST SINGLE ERROR
24 B12 = ELRST                      *RESET ERROR LOG
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELRDS                      *READ AND SAVE ERROR LOG
   GOSUB 56                         *ERROR SET CHECK SUBROUTINE 
   B12 = ELSPC                      *SET ERRLOG PROGRAM COUNTER 
   DUP 17B TO OB (10) FOR 16B       *SET ALL BITS IN COUNTER
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
30 CALL 97Z                         *GET WRITE BUFFER 
   B4 = 4                           *SET INDEX
   DUP 0 TO OB FOR BUFL             *CLEAR THE WRITE BUFFER 
32 OB(B4) = 377B                    *ENSURE NO OTHER ERRORS IN RECORD 
   GOTO 32 WHILE (B4+5.LE.50B)
   COPY OB(B9) TO OB(0) FOR 5       *INSERT DATA THAT WILL CREATE ERROR 
   B2 = B5                          *SET LOWER ADDRESS
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
34 GOSUB 61                         *GO TO READ SUBROUTINE
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = ELSE1                   *CHECK THAT SINGLE ERROR COUNTER COUNTED
   OB(13) = B5                      *CHECK CORRECT SINGLE ERROR COUNTED 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   GOTO 34 WHILE (B6+1.LT.20B)      *DO ALL 15 ERRORS 
   GOSUB 61                         *GO READ ONE MORE TIME
   B12 = ELSNC                      *CHECK THAT SINGLE ERROR NO COUNT 
   GOSUB 56                         *CHECK WITH MSD 
   B6 = 1                           *RESET ERROR COUNTS 
   IF (B1.AND.1200.NE.0) GOTO 40    *DO NEXT 8 ERRORS 
   GOTO 30 WHILE (B5+1.LT.10B)      *DO ALL SCANS 
   B1 = 1000B                       *RESET UPPER ADDRESS
   IF(DC.EQ.171) B1 = 200           *IF ESM II SET CHIP SELECT
   GOTO 30                          *CONTINUE 
40 GOTO 30 WHILE (B5+1.LT.20B)      *DO ALL 16 ERROR COUNTERS 
   B12 = ELSLF                      *CHECK IF SINGLE ERROR LOG FULL 
   GOSUB 56                         *ERROR SET CHECK SUBROUTINE 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = CCBIT                   *CONTROL CLEAR
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = ELSE0                      *CHECK IF SINGLE ERROR COUNTER ZERO 
   GOSUB 56                         *ERROR SET CHECK SUBROUTINE 
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = 0                          *DID RESET CLEAR ERRORS 
   GOSUB 56                         *ERROR SET CHECK SUBROUTINE 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 3(B13,B0,B4,B6) TO DISPLAY   *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------ERROR LOG CHECK SET SUBROUTINE 
* 
56 DUP 0 TO OB (10) FOR 16B         *SAVE ERRLOG
   OB(12) = B12                     *FUNCTION TO BE DONE
   B12 = ELCSC                      *ERRLOG COUNTER SET CHECK 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   RETURN 
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
61 WC = 5B                          *READ WORD COUNT
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = 14B                        *COMMAND NUMBER 
   B4 = B5 + 1                      *SET COUNTER FOR DISPLAY
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   IF(ES.AND.CM.EQ.0) MSG 2 (B4,B6) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B4,B6) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
   RETURN 
* 
* -------WRITE SUBROUTINE TO CHECK WITH MSD 
* 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = 5B                          *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98I                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM59 -   SINGLE ERROR LOG 4-BIT COUNTER TEST 
   MODULE MSM61,DESM(171,211)LOCK 
*** MSM61 - FORCE ERROR STATUS PART ONE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FORCE ERROR AND VERIFY THE STATUS VIA THE SIDE DOOR 
*         AND LOW SPEED PORTS.
* 
*         GBA MEMORY
*         ADDRESS PARITY TO MEMORY
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SET OUTPUT BUFFER TO ALL ONES.
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  WRITE FROM OB TO ESM ADDRESS SPECIFIED BY P0 AND P1.
*         7.  SEND GBA FORCE FUNCTION TO MSD. 
*         8.  SET OUTPUT BUFFER TO ALL ONES.
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. WRITE FROM OB TO ESM ADDRESS SPECIFIED BY P0 AND P1.
*         11. CHECK STATUS, VERIFY GBA MEMORY ERROR.
*         12. SEND SDP MAINT FUNC CLEAR MAINTENANCE FUNCTIONS TO MSD. 
*         13. SEND SIDE DOOR CLEAR STATUS TO MSD. 
*         14. VERIFY STATUS CLEAR.
*         15. SEND SDP MAINT FUNC CLEAR MAINTENANCE FUNCTIONS TO MSD. 
*         16. SET OUTPUT BUFFER TO ALL ONES.
*         17. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         18. READ FROM OB TO ESM ADDRESS SPECIFIED BY P0 AND P1. 
*         19. COMPARE THE FIRST WRITE DATA TO READ DATA.
*         20. 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.
*         21. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM61 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM61 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM61 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
*         MSM98J - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM61 - FORCE ERROR STATUS TEST PART ONE
1  FORMAT MSM61 ERROR(S) = *DECD
2  FORMAT MSM61 FORCE ERROR STATUS TEST I ADD=*OCT*OCTB 
4  FORMAT MSM61 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM61 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM61 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, SDSTA TO 501B, PRESET TO 601B
   EQUATE GBAFC=101B, WVEFC=102B, MCBIT=10B, SDCLR=205B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, CLRMF=110B 
   EQUATE MGBAS=1B, SCBIT=2B, CCBIT=4B, MWVBS=2B, CMPB=0
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 61D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1                          *SET LOWER STARTING ADDRESS 
   B4 = 1                           *SET CONDITION NUMBER 1 
* 
* -------MODULE TEST
* 
30 DUP 7777B TO OB FOR BUFL         *SET BACK GROUND BUFFER 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B12 = GBAFC                      *GBA FORCE FUNCTION 
   CALL 97A                         *COMMUNICATE WITH MSD 
32 DUP 0 TO OB FOR BUFL             *CLEAR THE WRITE BUFFER 
   B4 = 2                           *SET CONDITION NUMBER 2 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   DUP 7777B TO OB FOR BUFL         *SET BACK GROUND BUFFER 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDSTA                      *SIDE DOOR STATUS 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MGBAS                   *CHECK THAT MEMORY GBA STATUS SET 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(13) = SCBIT                   *STATUS CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDSTA                      *SIDE DOOR STATUS 
   DUP 0 TO OB (10) FOR 16B         *SIDE DOOR STATUS CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   DUP 7777B TO OB FOR BUFL         *SET BACK GROUND BUFFER 
   IF(DC.EQ.171) DUP 0 TO OB FOR BUFL  *SET TEST DATA IF ESM II 
   GOSUB 61                         *GO TO READ SUBROUTINE
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 72   *WRITE TO SUBSYSTEM 
   IF (DC.EQ.171) RETURN            *EXPECT NO ABORT ON ESM II
   IF (B4.EQ.2) ERROR 3/6 GOTO 67   *NO ABORT ON GBA FORCE
   RETURN 
* 
* -------READ/COMPARE SUBROUTINE
* 
61 WC = BUFL                        *READ WORD COUNT
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   B14 = CMPB                       *COMMAND NUMBER 
63 COMPARE IB TO OB FOR WC, ABT 70  *COMPARE THE DATA 
   RETURN 
* 
* -------WRITE SUBROUTINE TO CHECK WITH MSD 
* 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = 5B                          *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
67 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98J                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------PROCESS COMPARE ERRORS 
* 
70 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS WRITE ABORTS 
* 
72 IF (SB.AND.40.NE.40) GOTO 74    *IF NOT ADDRESS PARITY ERROR 
   RETURN                           *ELSE, CONTINUE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM61 -   FORCE ERROR STATUS PART ONE 
   MODULE MSM62,DESM(171,211)LOCK 
*** MSM62 - FORCE ERROR STATUS PART TWO 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FORCE ERROR AND VERIFY THE STATUS VIA THE SIDE DOOR 
*         AND LOW SPEED PORTS.
* 
*         GBA MEMORY
*         ADDRESS PARITY TO MEMORY
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND DISABLE REFRESH FUNCTION TO MSD. 
*         5.  SEND GBA FORCE FUNCTION TO MSD. 
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE FROM OB TO ESM ADDRESS SPECIFIED BY P0 AND P1.
*         8.  CHECK STATUS, VERIFY GBA MEMORY ERROR.
*         9.  SEND SDP MAINT FUNC CLEAR MAINTENANCE FUNCTIONS TO MSD. 
*         10. SEND SIDE DOOR CLEAR STATUS TO MSD. 
*         11. VERIFY STATUS CLEAR.
*         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 
* 
*         MSM62 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM62 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM62 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98J - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM62 - FORCE ERROR STATUS TEST PART TWO
1  FORMAT MSM62 ERROR(S) = *DECD
2  FORMAT MSM62 FORCE ERROR STATUS TEST II ADD=*OCT*OCTB
4  FORMAT MSM62 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM62 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM62 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, SDSTA TO 501B, PRESET TO 601B
   EQUATE GBAFC=101B, WVEFC=102B, MCBIT=10B, SDCLR=205B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, CLRMF=110B 
   EQUATE MGBAS=1B, SCBIT=2B, CCBIT=4B, SDREF=202B, CMPB=0
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 62D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1                          *SET LOWER STARTING ADDRESS 
   B4 = 1                           *SET CONDITION NUMBER 1 
* 
* -------MODULE TEST
* 
30 B12 = SDREF                      *SIDE DOOR REFRESH DISABLE
   DUP 17B TO OB (10) FOR 16B       *SET OUTPUT BUFFER FOR 97A
   OB(13) = 0                       *CLEAR UPPER 4 BITS OF REFRESH TIME 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = GBAFC                      *GBA FORCE FUNCTION 
   CALL 97A                         *COMMUNICATE WITH MSD 
32 DUP 0 TO OB FOR BUFL             *CLEAR THE WRITE BUFFER 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDSTA                      *SIDE DOOR STATUS 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MGBAS                   *CHECK THAT MEMORY GBA STATUS SET 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(13) = SCBIT                   *STATUS CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDSTA                      *SIDE DOOR STATUS 
   DUP 0 TO OB (10) FOR 16B         *SIDE DOOR STATUS CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 72   *WRITE TO SUBSYSTEM 
   IF (DC.EQ.171) RETURN            *EXPECT NO ABORT ON ESM II
   IF (B4.EQ.2) ERROR 3/6 GOTO 67   *NO ABORT ON GBA FORCE
   RETURN 
* 
* -------WRITE SUBROUTINE TO CHECK WITH MSD 
* 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = 5B                          *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
67 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98J                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------PROCESS WRITE ABORTS 
* 
72 IF (SB.AND.40.NE.40) GOTO 74    *IF NOT ADDRESS PARITY ERROR 
   RETURN                           *ELSE, CONTINUE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM62 -   FORCE ERROR STATUS PART TWO 
   MODULE MSM63,DESM(171,211)LOCK 
*** MSM63 - FORCE ERROR STATUS PART THREE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         FORCE ERROR AND VERIFY THE STATUS VIA THE SIDE DOOR 
*         AND LOW SPEED PORTS.
* 
*         MULTIPLE WRITE VALID
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND SIDE DOOR CLEAR STATUS TO MSD. 
*         4.  SEND SDP MAINT FUNC WRITE VALID ERROR FORCE TO MSD. 
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  WRITE FROM OB TO ESM ADDRESS SPECIFIED BY P0 AND P1.
*         7.  CHECK SDP STATUS VIA MSD, VERIFY MULTIPLE WRITE ERROR.
*         8.  SEND SIDE DOOR CLEAR STATUS TO MSD. 
*         9.  VERIFY STATUS CLEAR.
*         10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         11. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM63 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM63 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM63 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B5  = DATA PATTERNS.
*         B7  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B8  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM49A - CLEAR MEMORY ADDRESSES TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
*         MSM98J - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM63 - FORCE ERROR STATUS TEST PART THREE
1  FORMAT MSM63 ERROR(S) = *DECD
2  FORMAT MSM63 FORCE ERROR STATUS TEST III ADD=*OCT*OCTB 
4  FORMAT MSM63 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM63 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM63 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, SDSTA TO 501B, PRESET TO 601B
   EQUATE GBAFC=101B, WVEFC=102B, MCBIT=10B, SDCLR=205B 
   EQUATE RD1ESM=14B, RESLSP=21B, WRESM=25B, CLRMF=110B 
   EQUATE MGBAS=1B, SCBIT=2B, CCBIT=4B, MWVBS=2B, CMPB=0
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 63D                        *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 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   CALL 49A                         *CLEAR ADDRESSES BEFORE FORCING ERRORS
   B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1                          *SET LOWER STARTING ADDRESS 
* 
* -------MODULE TEST
* 
30 DUP 7777B TO OB FOR BUFL         *SET BACK GROUND BUFFER 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B12 = WVEFC                      *WRITE VALID ERROR FORCE FUNCTION 
   CALL 97A                         *COMMUNICATE WITH MSD 
   DUP 0 TO OB FOR BUFL             *CLEAR THE WRITE BUFFER 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDSTA                      *SIDE DOOR STATUS 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MWVBS                   *CHECK THAT MULTIPLE WRITE VALID STATUS SET 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(13) = SCBIT                   *STATUS CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDSTA                      *SIDE DOOR STATUS 
   DUP 0 TO OB (10) FOR 16B         *SIDE DOOR STATUS CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
   GOSUB 62                         *CHECK WITH MSD 
   DUP 0 TO OB FOR BUFL             *SET COMPARE BUFFER 
   GOSUB 61                         *GO TO READ/COMPARE SUBROUTINE
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
* 
* -------READ/COMPARE SUBROUTINE
* 
61 WC = BUFL                        *READ WORD COUNT
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   B14 = CMPB                       *COMMAND NUMBER 
63 COMPARE IB TO OB FOR WC, ABT 70  *COMPARE THE DATA 
   RETURN 
* 
* -------WRITE SUBROUTINE TO CHECK WITH MSD 
* 
62 DELAY 10D MSEC                   *WAIT FOR MSD TO WRITE MAX ADDRESS
   WC = 5B                          *SET WC FOR WRITE 
   B7 = P2                          *SET ADDRESS FOR CHECK WITH MSD 
   B8 = 7770B                       *SET ADDRESS FOR CHECK WITH MSD 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B7 B8, ABT 66   *WRITE TO SUBSYSTEM 
64 RETURN 
* 
* -------PROCESS ABORTS ON ANSWERS FROM MSD 
* 
66 IF (SB.NE.3) GOTO 74             *IF ABORT AND ACCEPT
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98J                         *CALL WRITE ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
* 
* -------PROCESS COMPARE ERRORS 
* 
70 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM63 -   FORCE ERROR STATUS PART THREE 
   MODULE MSM67,DESM(171,211)LOCK 
*** MSM67 - PRESET MEMORY 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         ALL OF MEMORY WILL BE WRITTEN WITH ZEROES TO PRESET MEMORY
*         BEFORE TESTING TO ELIMINATE DOUBLE ERRORS ALREADY IN MEMORY 
*         FROM POWER UP OR OTHER CONDITIONS BEING LOGGED IN THE ERROR 
*         LOG.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  INITIALIZE WRITE BUFFER OF ALL ZEROS. 
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE BUFFER 500B (12 BIT) WORDS TO ADDRESS.
*         6.  INCREMENT ADDRESS BY 100B.
*         7.  REPEAT 4 - 6 FOR ALL MEMORY.
*         8.  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.
*         9.  EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM67 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM67 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM67 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
* 
*         REMARKS - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM67 - PRESET MEMORY ALL ZEROS 
1  FORMAT MSM67 ERROR(S) = *DECD
2  FORMAT MSM67 PRESET MEMORY ALL ZEROS ADD=*OCT*OCTB 
3  FORMAT MSM67 EC=*DECD, LC=*DECD, ADD=*OCT*OCTB 
4  FORMAT MSM67 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM67 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM67 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 500B, BUFL1 TO 50B   *BUFFER LENGTH EQUATE
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 67D                        *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 
   MSG 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
* 
* -------MODULE TEST
* 
24 DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
* 
* -------WRITE ALL OF MEMORY
* 
30 WC = BUFL                        *SET WC FOR 500B
   IF(B2.NE.0) GOTO 40              *SKIP MESSAGE AND RESERVE 
*IF DEF,CMSE17X,1 
   IF(B1.AND.77.NE.0) GOTO 40 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   IF(ES.AND.CM.NE.0) MSG 3 (B13,B0,B1,B2) TO DISPLAY  *DISPLAY LOOPING MESSAGE 
40 B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   GOSUB 56                         *INCREMENT THE ADDRESS
   IF(B1.NE.0) GOTO 30              *NOT DONE 
   IF(B2.NE.0) GOTO 30              *NOT DONE 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 24 
   GOTO 50                          *CHECK REPEAT MODULE
* 
* -------INCREMENT ADDRESS SUBROUTINE 
* 
56 B2 = B2+100B                     *INCREMENT LOWER ADDRESS
   IF(B2.EQ.0) B1=B1+1              *INCREMENT THE UPPER
   IF(B2.NE.0) RETURN 
   IF(B1.LE.P2) RETURN              *NOT DONE 
   B1 = 0                           *SET ALL DONE 
   B2 = 0                           *SET ALL DONE 
60 RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 50 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) GOTO 50       *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM67 -   PRESET MEMORY 
   MODULE MSM69,DESM(171,211)LOCK 
*** MSM69 - PARTIAL WRITE AND READ TEST PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE TESTS THE MEMORY ABILITY TO READ AND WRITE FULL 
*         AND PARTIAL RECORDS, ONE TO EIGHT WORDS AT A TIME, AND FROM 
*         ALL SCANS AS THE STARTING ADDRESS FOR THE PARTIAL RECORDS.
*         THE FIRST SIXTEEN WORDS OF MEMORY WILL BE USED. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SET SCAN TO ZERO. 
*         4.  SET ADDRESS TO ADDRESS 0 OF MEMORY. 
*         5.  SET UP 120B WORD BUFFER FILLED WITH BACKGROUND PATTERN
*             INITIALLY ALL ZEROS.
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE BACKGROUND PATTERN AT TEST ADDRESS. 
*         8.  SET UP 5 WORD (12 BIT) BUFFER WITH TEST DATA INITIALLY
*             ALL ONES. 
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. WRITE BUFFER TO TEST ADDRESS, USING FIVE WORD (12 BIT)
*             WRITES. 
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. READ BUFFER BACK FROM TEST ADDRESS USING FULL RECORD READ.
*         13. CHECK DATA FROM READ. 
*         14. INCREMENT TEST SCAN BY ONE. 
*         15. REPEAT FROM 8 UNTIL SCAN LESS THAN 10B. 
*         16. REPEAT FROM 4 CHANGING BACKGROUND TO ALL ONES AND TEST
*             PATTERNS TO ALL ZEROS.
*         17. REPEAT FROM 5 BUT STARTING WITH ADDRESS 10B.
*         18. SET BUFFER OF 120B PP WORDSTO 00...00, TO 00...17.
*         19. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         20. WRITE BUFFER TO ADDRESS 0, USING TWO RECORD WRITE.
*         21. SET WORD COUNT EQUAL 5, TEST SCAN EQUAL 0.
*         22. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         23. READ BUFFER BACK FROM TEST ADDRESS USING ONE WORD READS.
*         24. CHECK DATA FROM READ. 
*         25. INCREMENT SCAN ADDRESS. 
*         26. REPEAT FROM 22 UNTIL ALL 120B (12 BIT) WORDS ARE READ.
*         27. 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.
*         28. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM69 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM69 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM69 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B4  = CONDITION NUMBER. 
*         B6  = DATA PATTERNS.
*         B7  = INDEX TO DATA BUFFER. 
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM69 - PARTIAL WRITE AND READ TEST PART I
1  FORMAT MSM69 ERROR(S) = *DECD
3  FORMAT MSM69 PARTIAL WRITE AND READ TEST I PASS=*DECD
4  FORMAT MSM69 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM69 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM69 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B               *BUFFER LENGTH EQUATE
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 69D                        *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 
   MSG 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
* 
* -------MODULE TEST
* 
23 B4 = 1                           *SET CONDITION NUMBER 1 
24 B5 = 7777B                       *SET TEST DATA
   B6 = 0                           *SET BACKGROUND DATA
25 B7 = 0                           *PRESET BUFFER INDEX TO ZERO
   DUP B6 TO OB FOR 120B            *WRITE BACKGROUND PATTERN INTO OB 
   WC = 120B                        *SET WC TO 120B 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
26 DUP B5 TO OB(B7) FOR 5B          *WRITE ONE (60 BIT) WORD OF ONES IN OB
   WC = 5                           *SET 1 WORD WRITE 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B5 = 1                           *INITIAL PATTERN
30 WC = 5                           *SET 1 WORD WRITE 
   GOSUB 62                         *GO TO READ/COMPARE ROUTINE 
   B2 = B2+1                        *INCREMENT THE SCAN 
   GOTO 26 WHILE (B7+5.LT.50)       *DO ALL SCANS 
   B5 = 0                           *SET TEST PATTERN TO ZEROS
   B6 = 7777B                       *SET TEST PATTERN TO ALL ONES 
   B2 = 0                           *RESET SCAN ADDRESS 
   IF(B4.GE.2) B2=10B               *IF CONDITION 3 OR 4 DO ADDRESS 10B 
   IF(B4.EQ.2) GOTO 34              *DO NEXT CONDITION
   GOTO 25 WHILE (B4+1.LE.4)        *DO BOTH PASSES 
   GOTO 40                          *CHECK MODULE REPEAT
34 B4 = 3                           *SET CONDITION NUMBER 3 
   GOTO 24                          *DO SAME TEST FOR ADDRESS 10B 
40 B4 = 5                           *SET CONDITION NUMBER 5 
   B6 = 0                           *SET DATA 
   B7 = 0                           *SET INDEX
   B1 = 0                           *SET ESM ADDRESS 0
   B2 = 0                           *SET ESM ADDRESS 0
   DUP 0 TO OB FOR 120B             *CLEAR BUFFER 
41 OB(B7) = B6                      *PUT DATA IN OB 
   B7 = B7+5                        *INCREMENT THE ADDRESS
   GOTO 41 WHILE (B6+1.LE.17B)      *DO ALL 16 60 BIT WORDS 
   WC = 120B                        *WC FOR WRITE 2 RECORDS 
   GOSUB 60                         *WRITE SUBROUTINE 
   B6 = 0                           *SET INDEX TO OB
   B7 = 0                           *SET INDEX
42 WC = 5                           *WC FOR READ ONE ADDRESS
   COPY OB(B7) TO OB(B6) FOR WC     *SET OB FOR COMPARE 
   GOSUB 62                         *READ AND COMPARE 
   B7 = B7+5                        *INCREMENT ADDRESS IN OB
   GOTO 42 WHILE(B2+1.LE.17B)       *READ ALL 16D ADDRESSES 
   IF(ES.AND.CM.EQ.0) MSG 3 (B11) TO DISPLAY  *DISPLAY RUNNING MESSAGE
*IF DEF,CMSE17X,1 
   GOTO 22 WHILE (B11+1.LE.10D)     *DO 10 PASSES 
*IF -DEF,CMSE17X,1
   GOTO 22 WHILE (B11+1.LE.100D)    *DO 100 PASSES
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 23                   *IF REPEAT CONDITION
* 
* -------WRITE SUBROUTINE 
* 
60 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
* 
* -------READ/COMPARE SUBROUTINE
* 
62 B14 = RESLSP                     *COMMAND NUMBER 
*IF -DEF,CMSE17X,1
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 66
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM69 -   PARTIAL WRITE AND READ TEST PART ONE
   MODULE MSM70,DESM(171,211)LOCK 
*** MSM70 - PARTIAL WRITE AND READ TEST PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE TESTS THE MEMORY ABILITY TO READ AND WRITE FULL 
*         AND PARTIAL RECORDS, ONE TO EIGHT WORDS AT A TIME, AND FROM 
*         ALL SCANS AS THE STARTING ADDRESS FOR THE PARTIAL RECORDS.
*         THE FIRST SIXTEEN WORDS OF MEMORY WILL BE USED. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SET SCAN TO ZERO. 
*         4.  SET ADDRESS TO ADDRESS 0 OF MEMORY. 
*         5.  SET EIGHTY WORD BUFFER WITH 0000...0000 
*             0101...0101,0202...0202,...1717...1717
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE BUFFER TO MEMORY STARTING AT ADDRESS
*             0 USING FIVE (12 BIT) PP WORD WRITES. 
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  READ NUMBER OF WORDS DETERMINED BY WORD COUNT.
*         10. CHECK DATA FROM READ. 
*         11  INCREMENT WORD COUNT BY 5 (12 BIT WORDS). 
*         12. REPEAT FROM 8 IF WORD COUNT LESS THAN 50B.
*         13. SET WORD COUNT TO 5 (12 BIT WORDS) AND INCREMENT SCAN.
*         14. REPEAT FROM 8 IF SCAN LESS THAN 50B.
*         15. SET WORD COUNT EQUAL 5, SCAN EQUAL 0. 
*         16. SET 120B WORD BUFFER WITH 0000...0000 
*             0101...0101,0202...0202,...1717...1717
*         17. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         18. WRITE BUFFER TO MEMORY STARTING AT ADDRESS
*             0 USING FIVE WORD (12 BIT) WRITES.
*         19. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         20. WRITE PARTIAL RECORD TO ADDRESS ZERO + SCAN NUMBER OF 
*             WORDS DETERMINED BY WORD COUNT. 
*         21. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         22. READ BACK ALL EIGHTY WORDS USING FIVE WORD (12 BIT) READS.
*         23. CHECK DATA FROM READ. 
*         24. INCREMENT WORD COUNT BY 5 (12 BIT WORDS). 
*         25. REPEAT FROM 19 IF WORD COUNT LESS THAN 50B. 
*         26. SET WORD COUNT TO 5 AND INCREMENT SCAN. 
*         27. REPEAT FROM 19 IF SCAN LESS THAN 10B. 
*         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 
* 
*         MSM70 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM70 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM70 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = STARTING SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = STARTING SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B4  = CONDITION NUMBER. 
*         B5  = INDEX TO DATA BUFFER HOLDING REGISTER.
*         B6  = INDEX TO DATA BUFFER. 
*         B7  = DATA PATTERNS AND WORD COUNT. 
*         B8  = INDEX TO DATA BUFFER. 
*         B9  = INDEX TO DATA BUFFER. 
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM70 - PARTIAL WRITE AND READ TEST PART II 
1  FORMAT MSM70 ERROR(S) = *DECD
3  FORMAT MSM70 PARTIAL WRITE AND READ TEST II PASS=*DECD 
4  FORMAT MSM70 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM70 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM70 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 5B               *BUFFER LENGTH EQUATE
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 70D                        *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 
   MSG 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
* 
* -------MODULE TEST
* 
23 B4 = 1                           *SET CONDITION NUMBER 1 
24 B5 = 200B                        *SET INDEX HOLD REGISTER
   B6 = 0                           *SET DATA 
   B8 = 200B                        *SET INDEX FOR SAVE DATA IN OB
25 B7 = B6.LS.6                     *SET DATA 
   B7 = B6+B7                       *SET DATA IN ALL 12 BITS
   DUP B7 TO OB FOR BUFL            *WRITE PATTERN INTO OB
   DUP B7 TO OB (B8) FOR BUFL       *WRITE SAVE PATTERN INTO OB 
   WC = BUFL                        *SET WC TO 5B 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B2 = B2+1                        *INCREMENT ADDRESS
   B8 = B8+5                        *INCREMENT SAVE BUFFER ADDRESS
   GOTO 25 WHILE(B6+1.LE.17B)       *DO ALL WORDS 
   B2 = 0                           *SET ADDRESS TO ZERO
   B6 = 0                           *SET INDEX
   B8 = 200B                        *SET INDEX
   WC = BUFL                        *SET WORD COUNT FOR FIRST READ
26 COPY OB(B8) TO OB(B6) FOR WC     *MOVE PATTERN INTO OB FOR COMPARE 
   GOSUB 62                         *GO TO READ ROUTINE 
   GOSUB 63                         *GO TO COMPARE ROUTINE
   GOTO 26 WHILE (WC+5.LT.50)       *DO ALL WORD COUNTS 
   WC = BUFL                        *SET WORD COUNT FOR FIRST READ
   B8 = B8+5                        *INCREMENT SAVE DATA AREA 
   GOTO 26 WHILE (B2+1.LE.10B)      *DO ALL SCANS 
30 B4 = 2                           *SET CONDITION NUMBER 2 
   B2 = 0                           *SET SCAN TO 0
   B6 = 0                           *SET INDEX
   B8 = 200B                        *SET SAVE DATA INDEX
   WC = BUFL                        *SET WC TO 5B 
32 COPY OB(B8) TO OB(B6) FOR WC     *MOVE PATTERN INTO OB 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B8 = B8+5                        *INCREMENT SAVE DATA AREA 
   GOTO 32 WHILE (B2+1.LE.17B)      *DO ALL ADDRESSES 
   B2 = 0                           *SET SCAN TO 0
   B7 = 5                           *SET WC FOR WRITE 
   B8 = 200B                        *SET SAVE DATA INDEX
   B9 = 200B                        *SET SAVE DATA INDEX
   WC = 120B                        *SET WC TO 120B 
33 COPY OB(B5) TO OB(0) FOR WC      *MOVE PATTERN INTO OB 
34 WC = B7                          *SET WC TO 5B 
   B2 = B6                          *SET SCAN TO 0 INITIALLY
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B2 = 0                           *SET SCAN TO ZERO 
36 GOSUB 62                         *GO TO READ ROUTINE 
   COPY IB(0) TO IB(B9) FOR WC      *MOVE PATTERN INTO IB 
   B9 = B9+5                        *INCREMENT SAVE ADDRESS 
   GOTO 36 WHILE (B2+1.LE.17)       *DO ALL WORDS 
   WC = 120B                        *COPY BOTH RECORDS
   COPY IB(200) TO IB(0) FOR WC     *MOVE PATTERN INTO IB FOR COMPARE 
   COPY OB(200) TO OB(0) FOR WC     *MOVE PATTERN INTO OB FOR COMPARE 
   GOSUB 63                         *COMPARE THE DATA 
   B8 = B8+5                        *INCREMENT SAVE ADDRESS 
   B9 = 200B                        *SET SAVE DATA INDEX
   GOTO 33 WHILE (B7+5.LT.50)       *DO ALL WORD COUNTS 
   B7 = 5                           *SET WC FOR WRITE 
   B5 = B5+5                        *INCREMENT SAVE ADDRESS HOLDER
   B8 = B5                          *SET INDEX TO CORRECT SCAN
   GOTO 33 WHILE (B6+1.LT.10B)      *DO ALL ADDRESSES 
   IF(ES.AND.CM.EQ.0) MSG 3 (B11) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   GOTO 22 WHILE (B11+1.LT.10D)     *DO 10 PASSES 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 23                   *IF REPEAT CONDITION
* 
* -------WRITE SUBROUTINE 
* 
60 B14 = RESLSP                     *COMMAND NUMBER 
*IF DEF,CMSE17X,1 
   IF(B2.NE.0) GOTO 61              *SKIP RESERVE IF OFFLINE
   RES LSP, ABT 74
61 B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
* 
* -------READ/COMPARE SUBROUTINE
* 
62 B14 = RESLSP                     *COMMAND NUMBER 
*IF -DEF,CMSE17X,1
   RES LSP, ABT 74
   B14 = RDESM                      *COMMAND NUMBER 
   READ FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM
   RETURN 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 66
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM70 -   PARTIAL WRITE AND READ TEST PART TWO
   MODULE MSM71,DESM(171,211)LOCK 
*** MSM71 - SCAN COINCIDENCE TEST 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE TESTS THE DATA FAN-IN AND FAN-OUT TO THE SCANS
*         AND THE DATA HOLDING REGISTERS FOR SOLID FAILURE AND FOR
*         COINCIDENCE BETWEEN TWO SCANS MULTIPLEXED INTO THE SAME 
*         HOLDING REGISTER. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SET BACKGROUND PATTERN ZERO, TEST PATTERN ONES. 
*         4.  SEND DISABLE SECDED AND ENABLE WRITE CHECK BITS TO MSD. 
*         5.  SET WORD COUNT TO 5.
*         6.  BUILD FORTY WORD BUFFER OF ALTERNATING BACKGROUND AND 
*             TEST PATTERN, NUMBER OF CONSECUTIVE WORDS OF EACH 
*             PATTERN DETERMINED BY WORD COUNT. 
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  WRITE BUFFER TO FIRST RECORD OF MEMORY. 
*             (WRITE CHECK BITS ENABLED ON ENTRY).
*         9.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         10. READ BACK DATA FROM ADDRESS.
*         11. SEND ENABLE READ CHECK BITS TO MSD. 
*         12. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         13. READ BUFFER TO READ CHECK BITS. 
*         14. CHECK DATA FROM READS (68 BITS).
*         15. DOUBLE THE WORD COUNT.
*         16. REPEAT FROM 7 IF WORD COUNT LESS THAN 40. 
*         17. SET BACKGROUND PATTERN ONES, TEST PATTERN ZEROS AND REPEAT
*             FROM STEP 5.
*         18. 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.
*         19. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM71 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM71 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM71 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = INTERNAL PASS COUNTER.
*         B4  = CONDITION NUMBER. 
*         B6  = INDEX TO DATA BUFFER. 
*         B7  = DATA PATTERNS AND WORD COUNT. 
*         B9  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM71 - SCAN COINCIDENCE TEST 
1  FORMAT MSM71 ERROR(S) = *DECD
2  FORMAT MSM71 SCAN COINCIDENCE TEST PASS=*DECD
4  FORMAT MSM71 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM71 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM71 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, BUFW TO 500B, PRESET TO 601B,
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
   EQUATE DSECD=103B, RDCKB=105B, WRCKB=104, RDZCK=107B 
   EQUATE CLRMF=110B, SDCLR=205B, MCBIT=10B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 71D                        *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 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
   B7 = 5                           *SET BUFFER COUNT TO 5
   B8 = 0                           *SET B8 DATA FOR MODULE 
   B9 = 7777B                       *SET B9 DATA FOR MODULE 
24 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = DSECD                      *SET DISABLE SECDED 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = WRCKB                      *ENABLE WRITE CHECK BITS
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
30 B4 = 1                           *SET CONDITION NUMBER 1 
   B6 = 0                           *SET INDEX TO STARTING
32 DUP B9 TO OB (B6) FOR B7         *SET PATTERN IN OB
   B6 = B7+B6                       *INCREMENT THE INDEX
   DUP B8 TO OB (B6) FOR B7         *SET BACKGROUND PATTERN IN OB 
   B6 = B7+B6                       *SET ALTERNATE PATTERN
   IF(B6.LT.50) GOTO 32             *DO ALL WORDS 
   COPY OB(0) TO OB(200) FOR BUFL   *SAVE DATA PATTERN FOR COMPARE
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ AND COMPARE SUBROUTINE
   B12 = RDCKB                      *ENABLE READ CHECKBITS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
   COPY OB(200) TO OB(0) FOR BUFL   *RESTORE DATA PATTERN FOR COMPARE 
40 GOSUB 62                         *GO TO READ AND COMPARE SUBROUTINE
   B7 = B7+B7                       *DOUBLE THE WORD COUNT
42 IF(B7.LE.50) GOTO 24             *IF DONE WITH LAST BUFFER 
   IF(B8.EQ.7777B) GOTO 44          *IF DONE WITH BOTH PASSES 
   B7 = 5                           *SET BUFFER COUNT TO 5
   B8 = 7777B                       *SWAP BACKGROUND PATTERN
   B9 = 0                           *AND TEST PATTERN 
   GOTO 24                          *DO AGAIN 
44 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 24                   *IF REPEAT CONDITION
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
62 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
   IF(ES.AND.CM.EQ.0) MSG 2 (B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   B3 = B3+1                        *INCREMENT INTERNAL PASS COUNTER
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 72
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM71 -   SCAN COINCIDENCE TEST 
   MODULE MSM73,DESM(171,211)LOCK 
*** MSM73 - CHIP SELECT TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE VERIFIES THAT THE CHIP SELECT ADDRESS PATHS AND 
*         THE CHIP DECODE ON THE STORAGE CARD ARE OPERATIONAL.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SET TEST CHIP TO ZERO.
*         4.  BUILD TWO TEN WORD PATTERN BUFFERS WITH 
*             TEST PATTERN AND BACKGROUND PATTERN.
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  WRITE TEN WORD BUFFER TO FIRST RECORD OF EACH CHIP, TEST
*             PATTERN IF TEST CHIP OTHERWISE BACKGROUND PATTERN.
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  READ BACK RECORD FROM EACH CHIP.
*         9.  CHECK RECORD FROM EACH CHIP.
*         10. INCREMENT TEST CHIP.
*         11. REPEAT FROM 5 IF TEST CHIP LESS THAN 2. 
*         12. REPEAT FROM 4 FOR 100D PASSES.
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE, SEND A MESSAGE INDICATING  THE NUMBER  OF  ERRORS 
*             DETECTED TO DISPLAY, PRINT, AND DAYFILE.
*         14. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM73 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM73 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM73 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B4  = CONDITION NUMBER. 
*         B8  = BACKGROUND PATTERN. 
*         B9  = TEST PATTERN. 
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM73 - CHIP SELECT TEST
1  FORMAT MSM73 ERROR(S) = *DECD
2  FORMAT MSM73 CHIP SELECT TEST  PASS=*DECD
4  FORMAT MSM73 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM73 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM73 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B   *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 73D                        *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 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
* 
* -------MODULE TEST
* 
22 B11 = 0                          *INITIALIZE INT. LOOP COUNT 
   B4 = 1                           *SET CONDITION NUMBER 1 
24 B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
   B8 = 0                           *BACKGROUND PATTERN 
   B9 = 7777B                       *TEST PATTERN 
* 
* -------WRITE CHIPS
* 
30 DUP B9 TO OB FOR BUFL            *WRITE PATTERN INTO OB
   GOSUB 60                         *WRITE SUBROUTINE 
   B1 = 1000B                       *SET OTHER CHIP 
   IF(DC.EQ.171) B1 = 200B          *IF ESM II
   DUP B8 TO OB FOR BUFL            *WRITE PATTERN INTO OB
   GOSUB 60                         *WRITE SUBROUTINE 
   B1 = 0                           *SET ADDRESS BACK TO ZERO 
* 
* -------READ CHIPS 
* 
34 DUP B9 TO OB FOR BUFL            *WRITE PATTERN INTO OB
   GOSUB 64                         *READ COMPARE ROUTINE 
   B1 = 1000B                       *SET OTHER CHIP 
   IF(DC.EQ.171) B1 = 200B          *IF ESM II
   DUP B8 TO OB FOR BUFL            *WRITE PATTERN INTO OB
   GOSUB 64                         *WRITE SUBROUTINE 
   IF(B8.EQ.7777B) GOTO 40          *EXIT MODULE DONE 
   B8 = 7777B                       *BACKGROUND PATTERN 
   B9 = 0                           *TEST PATTERN 
   B1 = 0                           *SET ADDRESS BACK TO ZERO 
   GOTO 30
   IF(ES.AND.CM.NE.0) MSG 2 (B11) TO DISPLAY   *DISPLAY RUNNING MESSAGE 
*IF DEF,CMSE17X,1 
40 GOTO 24 WHILE (B11+1.LT.10D)     *DO 10 PASSES 
*IF -DEF,CMSE17X,1
40 GOTO 24 WHILE (B11+1.LT.100D)    *DO 100 PASSES
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 24                   *IF REPEAT CONDITION
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR 500B
*IF DEF,CMSE17X,2 
   IF(B2.NE.0) GOTO 61              *SKIP RESERVE IF OFFLINE
   IF(B1.AND.77.NE.0) GOTO 61 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
61 B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
* 
* -------READ SUBROUTINE
* 
64 WC = BUFL                        *SET WC FOR 500B
*IF DEF,CMSE17X,2 
   IF(B2.NE.0) GOTO 63              *SKIP RESERVE IF OFFLINE
   IF(B1.AND.77.NE.0) GOTO 63 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
63 B14 = RDESM                      *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
65 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE OB TO IB FOR WC, ABT 72  *COMPARE THE DATA 
70 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 65                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM73 -   CHIP SELECT TEST
   MODULE MSM75,DESM(171,211)LOCK 
*** MSM75 - ROW/COLUMN MULTIPLEX TEST PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TESTS THE ROW AND COLUMN MULTIPLEXING OF THE SCAN TO VERFIY 
*         THAT THERE ARE NO SOLID FAILURES AND THAT THERE IS NO 
*         COINCIDENCE BETWEEN THE ROW ADDRESS AND THE COLUMN ADDRESS. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  DUP BACKGROUND PATTERN TO OB FOR 50B (12 BIT) WORDS.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS 0.
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS TEST ADDRESS. 
*         8.  LEFT SHIFT ONE TEST ADDRESS.
*         9.  REPEAT 6 - 8 UNTIL ALL BITS IN COLUMN AND ROW ARE WRITTEN 
*             WITH BACKGROUND PATTERN.
*         10. DUP TEST PATTERN TO OB FOR 50B (12 BIT) WORDS.
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. WRITE 50B WORDS FROM OUTPUT BUFFER TO TEST ADDRESS. 
*         13. REPEAT STEPS 11 AND 12 TEN DECIMAL TIMES. 
*         14. DUP BACKGROUND PATTERN TO OB FOR 50B (12 BIT) WORDS.
*         15. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         16. READ ADDRESS 0 INTO INPUT BUFFER AND COMPARE. 
*         17. DUP EITHER BACKGROUND OR TEST PATTERN TO OB FOR 50B 
*             (12 BIT WORDS) DEPENDING ON ADDRESS.
*         18. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         19. READ TEST ADDRESS INTO INPUT BUFFER AND COMPARE.
*         20. LEFT SHIFT TEST ADDRESS ONE POSITION. 
*         21. REPEAT FROM 18 FOR ALL COLUMN AND ROW BITS. 
*         22. SET TEST ADDRESS TO COLUMN ADDRESS TWO AND REPEAT FROM 3. 
*         23. REPEAT FROM 4 FOR ALL NINE ROW BITS.
*         24. REVERSE BACKGROUND AND TEST PATTERNS AND REPEAT FROM 3. 
*         25. 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.
*         26. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM75 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM75 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM75 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = INTERNAL LOOP COUNTER 
*         B4  = CONDITION NUMBER. 
*         B5  = TEST ADDRESS UPPER. 
*         B6  = TEST ADDRESS LOWER. 
*         B7  = TEST ADDRESS UPPER HOLDING REGISTER.
*         B8  = TEST ADDRESS LOWER HOLDING REGISTER.
*         B9  = INDEX TO DATA PATTERNS. 
*         B11 = INTERNAL LOOP COUNTER.
*         B12 = MAX ROW ADDRESS.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM75 - ROW/COLUMN MULTIPLEX TEST I 
1  FORMAT MSM75 ERROR(S) = *DECD
2  FORMAT MSM75 ROW/COLUMN MULTIPLEX TEST I ADD=*OCT*OCTB 
4  FORMAT MSM75 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM75 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM75 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   DATA (OB(500),CON) 0000,7777,0000
* 
   EQUATE BUFL TO 50B, RESLSP=21B   *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 75D                        *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 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B7 = 0                           *SET STARTING TEST ADDRESS
   B8 = 10                          *SET STARTING TEST ADDRESS
   B9 = 500B                        *SET STARTING DATA ADDRESS
   B12 = 1000B                      *SET MAX ROW ADDRESS
   IF(DC.EQ.171) B12 = 200          *SET MAX ROW FOR ESM II 
* 
* -------MODULE TEST
* 
24 B4 = 1                           *SET CONDITION NUMBER 1 
   B1 = 0                           *SET BASE ADDRESS 
   B2 = 0                           *SET BASE ADDRESS 
   B5 = B7                          *SET TEST ADDRESS 
   B6 = B8                          *SET TEST ADDRESS 
* 
* -------WRITE DATA 
* 
30 DUP OB(B9) TO OB FOR BUFL        *WRITE BACKGROUND PATTERN INTO OB 
   GOSUB 60                         *WRITE SUBROUTINE 
31 B1 = B5                          *SET TEST ADDRESS 
   B2 = B6                          *SET TEST ADDRESS 
   GOSUB 60                         *BACKGROUND TO ADDRESSES TO BE TESTED 
   B5 = B5.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   B6 = B6.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   IF(B6.EQ.1) B5 = 1               *SET UPPER ADDRESS
   IF(B6.EQ.1) B6 = 0               *SET LOWER ADDRESS TO ZERO
   IF(B5.NE.B12) GOTO 31            *CHECK UPPER ADDRESS
   B5 = B7                          *SET TEST ADDRESS 
   B6 = B8                          *SET TEST ADDRESS 
34 DUP OB(B9+1) TO OB FOR BUFL      *WRITE TEST PATTERN INTO OB 
   B1 = B5                          *SET TEST ADDRESS 
   B2 = B6                          *SET TEST ADDRESS 
   GOSUB 60                         *WRITE SUBROUTINE 
   GOTO 34 WHILE(B11+1.LE.10D)      *WRITE THE DATA 10 TIMES
   B11 = 0                          *CLEAR COUNTER
   B1 = 0                           *SET ADDRESS BACK TO ZERO 
   B2 = 0                           *SET ADDRESS BACK TO ZERO 
   B5 = 0                           *SET FIRST TEST ADDRESS 
   B6 = 10                          *SET FIRST TEST ADDRESS 
* 
* -------READ DATA
* 
   DUP OB(B9) TO OB FOR BUFL        *WRITE PATTERN INTO OB FOR COMPARE
   GOSUB 64                         *READ COMPARE ROUTINE 
35 B1 = B5                          *SET FIRST TEST ADDRESS 
   B2 = B6                          *SET FIRST TEST ADDRESS 
   DUP OB(B9+1) TO OB FOR BUFL      *WRITE TEST PATTERN INTO OB FOR COMPARE 
   IF(B5.NE.B7) DUP OB(B9) TO OB FOR BUFL  *WRITE BACKGROUND TO BUFFER
   IF(B6.NE.B8) DUP OB(B9) TO OB FOR BUFL  *WRITE BACKGROUND TO BUFFER
   GOSUB 64                         *READ COMPARE ROUTINE 
   B5 = B5.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   B6 = B6.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   IF(B6.EQ.1) B5 = 1               *SET UPPER ADDRESS
   IF(B6.EQ.1) B6 = 0               *SET LOWER ADDRESS TO ZERO
   IF(B5.NE.B12) GOTO 35            *CHECK UPPER ADDRESS
37 B1 = B7                          *SET TEST ADDRESS 
   B2 = B8                          *SET TEST ADDRESS 
   DUP OB(B9) TO OB FOR BUFL        *WRITE BACKGROUND PATTERN INTO OB 
   GOSUB 60                         *CLEAR ADDRESSES WRITTEN
   IF(ES.AND.CM.EQ.0) MSG 2 (B7,B8) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   B7 = B7.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   B8 = B8.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   IF(B8.EQ.1) B7 = 1               *SET UPPER ADDRESS
   IF(B8.EQ.1) B8 = 0               *SET LOWER ADDRESS TO ZERO
   IF(B5.NE.B12) GOTO 24            *CHECK UPPER ADDRESS
44 IF(B9.EQ.501B) GOTO 46           *CHECK PASS COUNT 
   B7 = 0                           *SET STARTING TEST ADDRESS
   B8 = 10                          *SET STARTING TEST ADDRESS
   B9 = 501                         *TEST PATTERN 
   GOTO 24                          *DO SECOND PASS WITH PATTERNS SWAPPPED
46 GOTO 22 WHILE (B3+1.LT.5)        *DO FIVE PASSES 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 24                   *IF REPEAT CONDITION
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR 500B
*IF DEF,CMSE17X,1 
   IF(B2.NE.0) GOTO 61              *SKIP RESERVE IF OFFLINE
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
61 B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
* 
* -------READ SUBROUTINE
* 
64 WC = BUFL                        *SET WC FOR 500B
*IF DEF,CMSE17X,1 
   IF(B2.NE.0) GOTO 63              *SKIP RESERVE IF OFFLINE
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
63 B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
65 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE OB TO IB FOR WC, ABT 72  *COMPARE THE DATA 
70 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 65                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM75 -   ROW/COLUMN MULTIPLEX TEST PART ONE
   MODULE MSM76,DESM(171,211)LOCK 
*** MSM76 - ROW/COLUMN MULTIPLEX TEST PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         TESTS THE ROW AND COLUMN MULTIPLEXING OF THE SCAN TO VERIFY 
*         THAT THERE ARE NO SOLID FAILURES AND THAT THERE IS NO 
*         COINCIDENCE BETWEEN THE ROW ADDRESS AND THE COLUMN ADDRESS. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  DUP BACKGROUND PATTERN TO OB FOR 50B (12 BIT) WORDS.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS LWA MINUS 7.
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS TEST ADDRESS. 
*         8.  LEFT SHIFT ONE TEST ADDRESS.
*         9.  REPEAT 6 - 8 UNTIL ALL BITS IN COLUMN AND ROW ARE WRITTEN 
*             WITH BACKGROUND PATTERN.
*         10. DUP TEST PATTERN TO OB FOR 50B (12 BIT) WORDS.
*         11. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         12. WRITE 50B WORDS FROM OUTPUT BUFFER TO TEST ADDRESS. 
*         13. REPEAT STEPS 11 AND 12 TEN DECIMAL TIMES. 
*         14. DUP BACKGROUND PATTERN TO OB FOR 50B (12 BIT) WORDS.
*         15. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         16. READ ADDRESS LWA MINUS 7 INTO INPUT BUFFER AND COMPARE. 
*         17. DUP EITHER BACKGROUND OR TEST PATTERN TO OB FOR 50B 
*             (12 BIT WORDS) DEPENDING ON ADDRESS.
*         18. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         19. READ TEST ADDRESS INTO INPUT BUFFER AND COMPARE.
*         20. LEFT SHIFT TEST ADDRESS ONE POSITION. 
*         21. REPEAT FROM 18 FOR ALL COLUMN AND ROW BITS. 
*         22. SET TEST ADDRESS TO COLUMN ADDRESS TWO AND REPEAT FROM 3. 
*         23. REPEAT FROM 4 FOR ALL NINE ROW BITS.
*         24. REVERSE BACKGROUND AND TEST PATTERNS AND REPEAT FROM 3. 
*         25. 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.
*         26. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM76 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM76 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM76 AL TOO LOW NEEDS AL=10
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B0  = EXTERNAL LOOP COUNTER.
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = INTERNAL LOOP COUNTER 
*         B4  = COMPLEMENTED TEST ADDRESS UPPER.
*         B5  = TEST ADDRESS UPPER. 
*         B6  = TEST ADDRESS LOWER. 
*         B7  = TEST ADDRESS UPPER HOLDING REGISTER.
*         B8  = TEST ADDRESS LOWER HOLDING REGISTER.
*         B9  = INDEX TO DATA PATTERNS. 
*         B10 = TEMPORARY STORAGE.
*         B11 = INTERNAL LOOP COUNTER.
*         B12 = COMPLEMENTED TEST ADDRESS LOWER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         BA  = BUFFER ADDRESS
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
*         REMARKS - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM76 - ROW/COLUMN MULTIPLEX TEST II
1  FORMAT MSM76 ERROR(S) = *DECD
2  FORMAT MSM76 ROW/COLUMN MULTIPLEX TEST II ADD=*OCT*OCTB
4  FORMAT MSM76 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
6  FORMAT MSM76 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
6  FORMAT MSM76 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   DATA (OB(500),CON) 0000,7777,0000
* 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 76D                        *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 6 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B7 = 0                           *SET STARTING TEST ADDRESS
   B8 = 10                          *SET STARTING TEST ADDRESS
   B9 = 500B                        *SET STARTING DATA ADDRESS
* 
* -------MODULE TEST
* 
24 B1 = P2                          *SET BASE ADDRESS 
   B2 = 7770                        *SET BASE ADDRESS 
   B5 = B7                          *SET TEST ADDRESS 
   B6 = B8                          *SET TEST ADDRESS 
* 
* -------WRITE DATA 
* 
30 DUP OB(B9) TO OB FOR 50B         *WRITE BACKGROUND PATTERN INTO OB 
   GOSUB 60                         *WRITE SUBROUTINE 
31 B1 = B5.XOR.P2                   *SET TEST ADDRESS 
   B2 = B6.XOR.7770B                *SET TEST ADDRESS 
   GOSUB 60                         *BACKGROUND TO ADDRESSES TO BE TESTED 
   B5 = B5.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   B6 = B6.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   IF(B6.EQ.1) B5 = 1               *SET UPPER ADDRESS
   IF(B6.EQ.1) B6 = 0               *SET LOWER ADDRESS TO ZERO
   B10 = 1000B                      *SET UPPER ROW ADDRESS
   IF(DC.EQ.171) B10 = 200B         *IF ESM II
   IF(B5.NE.B10) GOTO 31            *CHECK UPPER ADDRESS
   B5 = B7                          *SET TEST ADDRESS 
   B6 = B8                          *SET TEST ADDRESS 
34 DUP OB(B9+1) TO OB FOR 50B       *WRITE TEST PATTERN INTO OB 
   B1 = B5.XOR.P2                   *SET TEST ADDRESS 
   B2 = B6.XOR.7770B                *SET TEST ADDRESS 
   GOSUB 60                         *WRITE SUBROUTINE 
   GOTO 34 WHILE(B11+1.LE.10D)      *WRITE THE DATA 10 TIMES
   B11 = 0                          *CLEAR COUNTER
   B1 = P2                          *SET ADDRESS BACK TO MAX
   B2 = 7770B 
   B5 = 0                           *SET FIRST TEST ADDRESS 
   B6 = 10                          *SET FIRST TEST ADDRESS 
* 
* -------READ DATA
* 
   DUP OB(B9) TO OB FOR 50B         *WRITE PATTERN INTO OB FOR COMPARE
   GOSUB 64                         *READ COMPARE ROUTINE 
36 B1 = B5.XOR.P2                   *SET FIRST TEST ADDRESS 
   B2 = B6.XOR.7770B                *SET FIRST TEST ADDRESS 
   DUP OB(B9+1) TO OB FOR 50B       *WRITE TEST PATTERN INTO OB FOR COMPARE 
   IF(B5.NE.B7) DUP OB(B9) TO OB FOR 50B  *WRITE BACKGROUND TO BUFFER 
   IF(B6.NE.B8) DUP OB(B9) TO OB FOR 50B  *WRITE BACKGROUND TO BUFFER 
   GOSUB 64                         *READ COMPARE ROUTINE 
   B5 = B5.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   B6 = B6.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   IF(B6.EQ.1) B5 = 1               *SET UPPER ADDRESS
   IF(B6.EQ.1) B6 = 0               *SET LOWER ADDRESS TO ZERO
   B10 = 1000B                      *SET UPPER ROW ADDRESS
   IF(DC.EQ.171) B10 = 200B         *IF ESM II
   IF(B5.NE.B10) GOTO 36            *CHECK UPPER ADDRESS
   B1 = B7.XOR.P2                   *SET TEST ADDRESS 
   B2 = B8.XOR.7770B                *SET TEST ADDRESS 
   DUP OB(B9) TO OB FOR 50B         *WRITE BACKGROUND PATTERN INTO OB 
   GOSUB 60                         *CLEAR ADDRESSES WRITTEN
   B4 = B7.XOR.P2                   *SET TEST ADDRESS 
   B12= B8.XOR.7770B                *SET TEST ADDRESS 
   IF(ES.AND.CM.EQ.0) MSG 2 (B4,B12) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   B7 = B7.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   B8 = B8.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   IF(B8.EQ.1) B7 = 1               *SET UPPER ADDRESS
   IF(B8.EQ.1) B8 = 0               *SET LOWER ADDRESS TO ZERO
   B10 = 1000B                      *SET UPPER ROW ADDRESS
   IF(DC.EQ.171) B10 = 200B         *IF ESM II
   IF(B5.NE.B10) GOTO 24            *CHECK UPPER ADDRESS
44 IF(B9.EQ.501B) GOTO 46           *EXIT MODULE DONE 
   B7 = 0                           *SET STARTING TEST ADDRESS
   B8 = 10                          *SET STARTING TEST ADDRESS
   B9 = 501                         *TEST PATTERN 
   GOTO 24                          *SWAP PATTERNS AND DO ANOTHER PASS
46 GOTO 22 WHILE (B3+1.LT.5)        *DO FIVE PASSES 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------REPEAT CONDITION 
* 
54 IF(ES.AND.RC.EQ.0) RETURN        *IF NO REPEAT CONDITION 
   B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   ENDSUB GOTO 24                   *IF REPEAT CONDITION
* 
* -------WRITE SUBROUTINE 
* 
60 WC = 50B                         *SET WC FOR 50B 
*IF DEF,CMSE17X,1 
   IF(B2.NE.7770) GOTO 61           *SKIP RESERVE IF OFFLINE
   B14 = 21B                        *COMMAND NUMBER FOR RES LSP 
   RES LSP, ABT 74
61 B14 = 24B                        *COMMAND NUMBER FOR WRITE ESM 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
* 
* -------READ SUBROUTINE
* 
64 WC = 50B                         *SET WC FOR 50B 
*IF -DEF,CMSE17X,2
   B14 = 21B                        *COMMAND NUMBER FOR RES LSP 
   RES LSP, ABT 74
   B14 = 14B                        *COMMAND NUMBER FOR READ ONE RECORD 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
65 B14 = 0                          *COMMAND NUMBER FOR COMPARE DATA
   COMPARE OB TO IB FOR WC, ABT 72  *COMPARE THE DATA 
70 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = 50B-BA                      *RESET WORD COUNT 
   GOTO 65                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM76 -   ROW/COLUMN MULTIPLEX TEST PART TWO
   MODULE MSM77,DESM(171,211)LOCK 
*** MSM77 - BASIC BIT PICK DROP TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         A SMALL BLOCK OF MEMORY WILL BE TESTED FOR BASIC BIT PICK/DROP
*         ERRORS USING PATTERNS OF ZEROS, ONES, AND A SLIDING ONE AND 
*         SLIDING ZERO PATTERN. SECDED WILL BE DISABLED.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND CLEAR STATUS TO MSD. 
*         4.  SEND DISABLE SECDED TO MSD. 
*         5.  SET OUTPUT BUFFER ALL ZEROES. 
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE ONE RECORD FROM OUTPUT BUFFER TO ADDRESS P0-P1. 
*         8.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         9.  READ ONE RECORD TO INPUT BUFFER FROM ADDRESS P0-P1. 
*         10. COMPARE IB TO OB. 
*         11. SET OUTPUT BUFFER TO ALL ONES.
*         12. REPEAT STEPS 8 - 11.
*         13. SET OUTPUT BUFFER TO ALL 0-01 (INITIALLY).
*         14. COMPARE IB TO OB. 
*         15. REPEAT STEPS 8 - 11 SHIFTING THE "1" BIT THROUGH ALL BIT
*             POSITIONS.
*         16. SET OUTPUT BUFFER TO 00010001-0001. 
*         17. REPEAT STEPS 8 - 11 ADDING ONE TO EACH PATTERN
*             WORD 12 BIT BYTE, REPEATING 4096 TIMES. 
*         18. 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.
*         19. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM77 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM77 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM77 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = INTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = DATA PATTERNS.
*         B6  = INDEX TO DATA BUFFER. 
*         B7  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM77 - BASIC BIT PICK DROP TEST
1  FORMAT MSM77 ERROR(S) = *DECD
2  FORMAT MSM77 BASIC BIT PICK DROP ADD=*OCT*OCTB PASS=*DD
4  FORMAT MSM77 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM77 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM77 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, PRESET TO 601B, RDWRCK TO 602B 
   EQUATE MCBIT=10B , RDESM=13B, RD1ESM=14B, CMPB=0 
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B, WRESM=25B
   EQUATE DSECD=103B, RDCKB=105B, CLRMF=110B, SDCLR=205B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 77D                        *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 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B1 = P0                          *SET UPPER STARTING ADDRESS 
   B2 = P1.AND.7770B                *LOWER STARTING ADDRESS AND SCAN 0
24 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = DSECD                      *SET DISABLE SECDED 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
26 B4 = 1                           *SET CONDITION NUMBER 1 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
30 B4 = 2                           *SET CONDITION NUMBER 2 
   DUP 7777B TO OB FOR BUFL         *WRITE ALL ONES INTO OB 
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
32 B4 = 3                           *SET CONDITION NUMBER 3 
   B5 = 1                           *INITIAL PATTERN
   B6 = 4                           *SET OUPUT BUFFER INDEX 
34 OB (B6) = B5                     *WRITE B5 PATTERN IN OB 
   B7 = 5                           *SET FIRST INDEX
35 COPY OB(0) TO OB(B7) FOR 5       *SET BUFFER THE SAME
   GOTO 35 WHILE(B7+5.LT.50)        *DO ONE RECORD
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
   B5 = B5.LS.1                     *SHIFT THE DATA BITS
   IF(B5.NE.1) GOTO 34              *DO ALL 12 BITS 
   DUP 0 TO OB FOR BUFL             *CLEAR THE BUFFER 
   IF(B6.EQ.0) GOTO 36              *IF DONE WITH ALL 60 BITS 
   GOTO 34 WHILE(B6-1.GE.0)         *DO ALL 60 BITS 
36 B4 = 4                           *SET CONDITION NUMBER 4 
   B5 = 1                           *INITIAL PATTERN
37 DUP B5 TO OB FOR BUFL            *WRITE B5 PATTERN IN OB 
*IF DEF,CMSE17X,1 
   GOTO 40                          *SKIP INCREMENTING PATTERN OFFLINE
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
   IF (B5.EQ.7777B) GOTO 40         *IF DONE WITH ALL COUNTS
   GOTO 37 WHILE(B5+1.LE.7777B)     *DO ALL COUNTS
40 B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 16B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2,B3) TO DISPLAY  *DISPLAY RUNNING MESSAGE 
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   B3 = B3+1                        *INCREMENT LOOP COUNTER 
   RETURN 
62 WC = BUFL                        *SET WC FOR READ
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 66
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM77 -   BASIC BIT PICK DROP TEST
   MODULE MSM79,DESM(171,211)LOCK 
*** MSM79 - MEMORY ADDRESSING TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE TESTS ADDRESS LINES 3-21 IN THE SUBSYSTEM FOR 
*         SOLID PICKS OR DROPS AND FOR TWO LINES SHORTED TOGETHER.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  SEND RESET ERROR LOG, SDP MAINT FUNC CLEAR MAINTENANCE
*             FUNCTIONS, AND CLEAR STATUS TO MSD. 
*         4.  SEND DISABLE SECDED TO MSD. 
*         5.  SET BUFFER INITIALLY TO ZEROS.
*         6.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         7.  WRITE 50B (12 BIT) WORDS OF ZEROS TO ADDRESS ZERO.
*         8.  SET TEST ADDRESS TO 10. 
*         9.  SET BUFFER INITIALLY TO 10. 
*         10. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         11. WRITE 50B (12 BIT) WORDS OF BUFFER TO TEST ADDRESS. 
*         12. LEFT SHIFT 1 THE TEST ADDRESS AND TEST DATA.
*         13. REPEAT 10 - 12 FOR ALL BITS 4 THROUGH 21. 
*         14. SET COMPARE BUFFER INITIALLY TO ZEROS.
*         15. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         16. READ 50B (12 BIT) WORDS FROM ADDRESS ZERO.
*         17. SET TEST ADDRESS TO 10. 
*         18. SET COMPARE BUFFER INITIALLY TO 10. 
*         19. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         20. READ ONE RECORD (50B 12 BIT WORDS) TO INPUT BUFFER FROM 
*             TEST ADDRESS. 
*         21. LEFT SHIFT 1 THE TEST ADDRESS AND TEST COMPARE DATA.
*         22. REPEAT 19 - 20 FOR ALL BITS 4 THROUGH 21. 
*         23. CLEAR THE MEMORY TEST AREA. 
*         24. 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.
*         25. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM79 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM79 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM79 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = INTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = TEST ADDRESS UPPER. 
*         B6  = TEST ADDRESS LOWER. 
*         B7  = INDEX TO DATA BUFFER. 
*         B12 = CODE FOR 97A TO ISSUE TO MSD. 
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM79 - MEMORY ADDRESSING TEST
1  FORMAT MSM79 ERROR(S) = *DECD
2  FORMAT MSM79 MEMORY ADDRESSING TEST WRITE ADD = *OCT*OCTB
3  FORMAT MSM79 MEMORY ADDRESSING TEST READ ADD = *OCT*OCTB 
4  FORMAT MSM79 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM79 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM79 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B, PRESET TO 601B, RDWRCK TO 602B 
   EQUATE MCBIT=10B , RDESM=13B, RD1ESM=14B, CMPB=0 
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B, WRESM=25B
   EQUATE DSECD=103B, RDCKB=105B, CLRMF=110B, SDCLR=205B
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 79D                        *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 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B12 = PRESET                     *SET PRESET CODES FOR MSD 
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = DSECD                      *SET DISABLE SECDED 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE TEST
* 
26 B4 = 1                           *SET CONDITION NUMBER 1 
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
30 B4 = 2                           *SET CONDITION NUMBER 2 
   B5 = 0                           *ADDRESS PATTERN
   B6 = 10                          *SET OUPUT BUFFER INDEX 
   B1 = B5                          *SET UPPER STARTING ADDRESS 
   B2 = B6                          *SET LOWER STARTING ADDRESS 
34 OB (3) = B1                      *WRITE B1 PATTERN IN OB 
   OB (4) = B2                      *WRITE B2 PATTERN IN OB 
   B7 = 5                           *SET FIRST INDEX
35 COPY OB(0) TO OB(B7) FOR 5       *SET BUFFER THE SAME
   GOTO 35 WHILE(B7+5.LT.50)        *DO ONE RECORD
   GOSUB 60                         *GO TO WRITE SUBROUTINE 
   B1 = B1.LS.1                     *SHIFT THE ADDRESS/DATA BITS
   B2 = B2.LS.1                     *SHIFT THE ADDRESS/DATA BITS
   IF(B1.EQ.1) GOTO 36              *DONE WITH 16 MEG 
   IF(B2.EQ.1) B1 = 1               *SET UPPER ADDRESS
   IF(B2.EQ.1) B2 = 0               *CLEAR LOWER ADDRESS
   DUP 0 TO OB FOR BUFL             *CLEAR THE BUFFER 
   IF(B1.LE.P2) GOTO 34             *IF NOT DONE WITH ALL BITS
36 B4 = 3                           *SET CONDITION NUMBER 3 
   B1 = 0                           *SET UPPER STARTING ADDRESS 
   B2 = 0                           *SET LOWER STARTING ADDRESS 
   DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO COMPARE BUFFER
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
40 B4 = 4                           *SET CONDITION NUMBER 4 
   B5 = 0                           *ADDRESS PATTERN
   B6 = 10                          *SET OUPUT BUFFER INDEX 
   B1 = B5                          *SET UPPER STARTING ADDRESS 
   B2 = B6                          *SET LOWER STARTING ADDRESS 
44 OB (3) = B1                      *WRITE B1 PATTERN IN OB 
   OB (4) = B2                      *WRITE B2 PATTERN IN OB 
   B7 = 5                           *SET FIRST INDEX
45 COPY OB(0) TO OB(B7) FOR 5       *SET BUFFER THE SAME
   GOTO 45 WHILE(B7+5.LT.50)        *DO ONE RECORD
   GOSUB 62                         *GO TO READ/COMPARE SUBROUTINE
   B1 = B1.LS.1                     *SHIFT THE ADDRESS/DATA BITS
   B2 = B2.LS.1                     *SHIFT THE ADDRESS/DATA BITS
   IF(B1.EQ.1) GOTO 46              *DONE 16 MEG
   IF(B2.EQ.1) B1 = 1               *SET UPPER ADDRESS
   IF(B2.EQ.1) B2 = 0               *CLEAR LOWER ADDRESS
   DUP 0 TO OB FOR BUFL             *CLEAR THE BUFFER 
   IF(B1.LE.P2) GOTO 44             *IF NOT DONE WITH ALL BITS
46 GOTO 26 WHILE(B3+1.LE.10D)       *DO TEN PASSES
   B12 = CLRMF                      *CLEAR MAINTENANCE FUNCTIONS
   CALL 97A                         *COMMUNICATE WITH MSD 
   B12 = SDCLR                      *SIDE DOOR CLEAR FUNCTION 
   DUP 0 TO OB (10) FOR 14B         *CLEAR OUTPUT BUFFER FOR 97A
   OB(12) = MCBIT                   *MASTER CLEAR 
   CALL 97A                         *COMMUNICATE WITH MSD 
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) EXIT                *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   EXIT                             *AND DAYFILE
* 
* -------WRITE/READ SUBROUTINE
* 
60 WC = BUFL                        *SET WC FOR WRITE 
*IF DEF,CMSE17X,2 
   IF(B2.NE.0) GOTO 61              *SKIP RESERVE IF OFFLINE
   IF(B1.AND.77.NE.0) GOTO 61 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 2 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
61 B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   RETURN 
62 WC = BUFL                        *SET WC FOR READ
*IF DEF,CMSE17X,2 
   IF(B2.NE.0) GOTO 65              *SKIP RESERVE IF OFFLINE
   IF(B1.AND.77.NE.0) GOTO 65 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(ES.AND.CM.EQ.0) MSG 3 (B1,B2) TO DISPLAY  *DISPLAY RUNNING MESSAGE
65 B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
63 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 66
64 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
66 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   B13 = B13+1                      *INCREMENT ERROR COUNT
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 63                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   GOTO 64 WHILE (B13+1.LE.2)       *IF ERROR COUNT.LE.2-CONTINUE 
   IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM79 -   ADDRESS LINES SHORT TEST
   MODULE MSM81,DESM(171,211)LOCK 
*** MSM81 - FLAG REG AND MEMORY TEST
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         THIS MODULE TESTS THAT THE 4 BIT FLAG REGISTER AND MEMORY CAN 
*         BE WRITTEN AND READ TOGETHER. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*IF DEF,MVE,1 
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 32.
*IF -DEF,MVE,1
*         2.  EXIT MODULE IF AL NOT EQUAL TO OR GT 10.
*         3.  CALL MSM81A TO CLEAR THE MEMORY TEST AREA.
*         4.  INITIALIZE THE TEST ADDRESS TO 10000000, AND
*             THE TEST FLAG WORD TO 000001. 
*         5.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         6.  4 BIT FLAG REG SELECTIVE SET WITH FLAG WORD EQUAL CURRENT 
*             TEST FLAG WORD. 
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  WRITE ALL ONES TO THE CURRENT TEST ADDRESS. 
*         9.  SHIFT THE TEST FLAG WORD LEFT ONE PLACE.
*         10. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         11. 4 BIT FLAG REG SELECTIVE SET WITH FLAG WORD EQUAL CURRENT 
*             TEST FLAG WORD. 
*         12. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         13. READ THE CURRENT TEST ADDRESS, EXPECT DATA EQUAL ONES.
*         14. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         15. 4 BIT FLAG REG STATUS WITH FLAG WORD EQUAL COMPLEMENTED 
*             CURRENT FLAG WORD.
*         16. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         17. WRITE ALL ZEROS INTO THE CURRENT TEST ADDRESS.
*         18. RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         19. READ 10B LOCATIONS IN THE MEMORY LOOKING FOR ALL ZEROS. 
*         20. REPEAT 18 AND 19 AND SHIFT THE ADDRESS 1 PLACE TO THE RIGHT 
*             UNTIL ALL BIT POSITIONS HAVE BEEN TESTED. 
*         21. SHIFT THE TEST FLAG WORD LEFT ONE BIT, AND THE TEST ADDRESS 
*             RIGHT ONE BIT.
*         22. IF THE TEST ADDRESS EQUALS ZERO, EXIT.
*         23. IF THE TEST FLAG WORD EQUAL ALL ONES, SET THE TEST FLAG WORD
*             TO 000001, AND GO TO STEP 5, ELSE GO TO STEP 5. 
*         24. DO 100D PASSES. 
*         25. 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.
*         26. EXIT THE MODULE.
* 
*    1.3  ERRORS REPORTED 
* 
*         MSM81 ERROR(S) = *DECD
*IF DEF,MVE,1 
*         MSM81 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
*         MSM81 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  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B3  = INTERNAL LOOP COUNTER.
*         B4  = CONDITION NUMBER. 
*         B5  = TEST ADDRESS UPPER. 
*         B6  = TEST ADDRESS LOWER. 
*         B7  = INDEX TO DATA BUFFER. 
*         B11 = INTERNAL LOOP COUNTER.
*         B13 = ERROR COUNTER.
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM81A - CLEAR THE MEMORY TO BE TESTED. 
*         MSM97A - COMMUNICATE WITH MSD.
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98G - PROCESS DATA COMPARE ERRORS. 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM81 - FLAG REG AND MEMORY TEST
1  FORMAT MSM81 ERROR(S) = *DECD
2  FORMAT MSM81 FLAG REG/MEMORY TEST ADD=*OCT*OCTB PASS=*DED
4  FORMAT MSM81 EC=*DECD, LC=*DECD
*IF DEF,MVE,1 
5  FORMAT MSM81 ACCESS LEVEL TOO LOW NEEDS AL=32
*IF -DEF,MVE,1
5  FORMAT MSM81 ACCESS LEVEL TOO LOW NEEDS AL=10
* 
   EQUATE BUFL TO 50B 
   EQUATE MCBIT=10B , RDESM=13B, RD1ESM=14B, CMPB=0 
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B, WRESM=25B
   EQUATE SELSET4=6, STATUS4=7, SELCLR4=10B 
* 
* -------MODULE INITIALIZATION
* 
20 B15 = 81D                        *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 
   MSG 5 TO DISPLAY, PRINT          *POST ERROR MESSAGE 
   GOTO 52                          *EXIT 
22 B11 = 0                          *CLEAR INTERNAL COUNTER 
   CALL 81A                         *CLEAR MEMORY TO BE TESTED
24 B5 = P2.AND.7600                 *SET MEMORY STARTING ADDRESS
   B6 = 0                           *SET MEMORY STARTING ADDRESS
   B7 = 0                           *SET FLAG REGISTER STARTING ADDRESS 
   B8 = 1                           *SET FLAG REGISTER STARTING ADDRESS 
   GOSUB 54                         *RESERVE THE LSP AND I/O CHANNEL
* 
* -------MODULE TEST
* 
26 B4 = 1                           *SET CONDITION NUMBER 1 
* 
* -------SELECTIVE SET FLAG REGISTER AND WRITE MEMORY 
* 
27 B1 = B7                          *SET FLAG WORD
   B2 = B8                          *SET FLAG WORD
   GOSUB 62                         *SELSET SUBROUTINE
   DUP 7777B TO OB FOR BUFL         *WRITE ALL ONES INTO OB 
   B1 = B5                          *SET UPPER STARTING ADDRESS 
   B2 = B6                          *SET LOWER STARTING ADDRESS 
   GOSUB 64                         *GO TO WRITE SUBROUTINE 
   B7 = B7.LS.1                     *SHIFT FLAG REGISTER DATA 
   B8 = B8.LS.1                     *SHIFT FLAG REGISTER DATA 
   IF (B8.EQ.1) B7 = 1              *SET THE UPPER
   IF (B8.EQ.1) B8 = 0              *SET THE UPPER
   IF (B7.EQ.100) B8 = 1            *SET THE LOWER
   GOSUB 62                         *SELSET SUBROUTINE
   DUP 7777B TO OB FOR BUFL         *WRITE ALL ONES INTO OB 
   GOSUB 66                         *GO TO READ COMPARE SUBROUTINE
* 
* -------STATUS FLAG REGISTER 
* 
   B1 = B7.XOR.77B                  *SET FLAG WORD COMPLEMENT 
   B2 = B8.XOR.7777B                *SET FLAG WORD COMPLEMENT 
30 GOSUB 60                         *STATUS SUBROUTINE
   DUP 0 TO OB FOR BUFL             *WRITE ALL ZEROS INTO OB
   B1 = B5                          *SET UPPER STARTING ADDRESS 
   B2 = B6                          *SET LOWER STARTING ADDRESS 
   GOSUB 64                         *GO TO WRITE SUBROUTINE 
32 GOSUB 66                         *GO TO READ COMPARE SUBROUTINE
   B1 = B1.RS.1                     *SHIFT THE ADDRESS
   IF (B1.EQ.0) GOTO 34             *CHECK THE ADDRESS
   B1 = B1.RS.1                     *SHIFT THE ADDRESS
   IF (B1.EQ.0) B2=4000B            *SET THE LOWER ADDRESS
   GOTO 32                          *CONTINUE TESTING 
34 B1 = B1.RS.1                     *SHIFT THE LOWER ADDRESS
   IF (B1.NE.0) GOTO 32             *CONTINUE IF NOT DONE 
   IF (B5.EQ.0) GOTO 40             *CHECK THE ADDRESS
   B5 = B5.RS.1                     *SHIFT THE ADDRESS
   IF (B5.EQ.0) B6=4000B            *SET THE LOWER ADDRESS
   GOTO 27                          *CONTINUE TESTING 
40 B6 = B6.RS.1                     *SHIFT THE LOWER ADDRESS
   IF (B6.EQ.4) GOTO 44             *EXIT IF DONE 
   GOTO 27                          *CONTINUE TESTING 
*IF DEF,CMSE17X,1 
44 GOTO 24 WHILE (B11+1.LE.10D)     *DO 10 PASSES 
*IF -DEF,CMSE17X,1
44 GOTO 24 WHILE (B11+1.LE.100D)    *DO 100 PASSES
   GOSUB 56                         *CLEAR FLAG MEMORY FOR MSD
* 
* -------MODULE REPEAT/EXIT 
* 
50 B0 = B0+1                        *INCREMENT EXT. LOOP COUNT
   IF(ES.AND.RM.EQ.0) GOTO 52       *IF NO REPEAT MODULE
   MSG 4(B13,B0) TO DISPLAY         *DISPLAY ERROR,LOOP COUNT 
   GOTO 22
52 IF(B13.EQ.0) GOTO 77             *IF NO ERRORS 
   MSG 1 (B13) TO DAYFILE,PRINT     *POST ERROR COUNT TO PRINT
   GOTO 77                          *AND DAYFILE
* 
* -------RESERVE SUBROUTINE 
* 
54 WC = BUFL                        *SET WC FOR WRITE 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   RETURN 
* 
* -------SELECT CLEAR FLAG MEMORY ADDRESS 0-15B 
* 
56 B1 = 0                           *INITIALIZE FLAG ADDRESS
   B2 = 17B                         *INITIALIZE FLAG ADDRESS AND WORD ALL ONES
57 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   B2 = B2+20B                      *INCREMENT THE ADDRESS
   IF(B2.NE.417B) GOTO 57 
   RETURN 
* 
* -------STATUS 4 BIT FLAG REGISTER SUBROUTINE
* 
60 B14 = STATUS4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT STATUS B1 B2, ABT 74   *STATUS FLAG REGISTER
   RETURN 
* 
* -------SELECTIVE SET 4 BIT FLAG REGISTER SUBROUTINE 
* 
62 B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B1 B2, ABT 74   *SELECT SET FLAG REGISTER
   RETURN 
* 
* -------WRITE/READ SUBROUTINE
* 
64 B14 = WRESM                      *COMMAND NUMBER 
   IF(ES.AND.CM.EQ.0) MSG 2 (B5,B6,B11) TO DISPLAY  *DISPLAY RUNNING MESSAGE
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE TO SUBSYSTEM 
   B3 = B3+1                        *INCREMENT LOOP COUNTER 
   RETURN 
66 B14 = RD1ESM                     *COMMAND NUMBER 
   READ ONE RECORD FROM ESM ADDRESS B1 B2, ABT 74  *READ FROM SUBSYSTEM 
67 B14 = CMPB                       *COMMAND NUMBER 
   COMPARE IB TO OB FOR WC, ABT 72
70 RETURN 
* 
* -------PROCESS COMPARE ERRORS 
* 
72 B13 = B13+1                      *INCREMENT ERROR COUNT
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   BA = BA+WC                       *SET BA FOR COMPARE ERROR 
   CALL 98G                         *CALL COMPARE ERROR PROCESSOR 
   BA = BA+1                        *RESET BUFFER INDEX 
   WC = BUFL-BA                     *RESET WORD COUNT 
   GOTO 67                          *CONTINUE COMPARE 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 B13 = B13+1                      *INCREMENT ERROR COUNTER
   IF(ES.AND.SL.NE.0) GOTO 76       *IF SCOPE LOOP
   MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   CALL 98A                         *CALL COMMAND ABORT PROCESSOR 
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   IF(B13.LE.2) RETURN              *IF ERROR COUNT.LE.2-CONTINUE 
76 IF(ES.AND.CM.NE.0) RETURN        *IF REPEAT MODULE OR REPEAT CONDITION 
   ENDSUB GOTO 50                   *ELSE, EXIT 
77 END 20 
COMPILE   - MSM81 -   FLAG REG AND MEMORY TEST
   MODULE MSM81A,DESM(171,211)LOCK
*** MSM81A - CLEAR ADDRESSES TO BE TESTED BY FLAG AND MEMORY TESTS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         CLEARS ADDRESSES TO BE TESTED IN FLAG AND MEMORY TESTS. 
* 
*    1.2  METHOD- 
* 
*         1.  DUP ZEROS TO OB FOR 50B (12 BIT) WORDS. 
*         2.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         3.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS 0.
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE 50B WORDS FROM OUTPUT BUFFER TO ADDRESS TEST ADDRESS. 
*         6.  LEFT SHIFT ONE TEST ADDRESS.
*         7.  REPEAT 4 - 6 UNTIL ALL ADDRESS BITS ARE WRITTEN.
*         8.  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.
*         9.  EXIT TO CALLING MODULE. 
* 
*    1.3  ERRORS REPORTED 
* 
*         NONE -
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B1  = SUBSYSTEM ADDRESS UPPER 12 BITS.
*         B2  = SUBSYSTEM ADDRESS LOWER 12 BITS.
*         B5  = TEST ADDRESS UPPER. 
*         B6  = TEST ADDRESS LOWER. 
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         IB  = INPUT BUFFER
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
* 
*         REMARKS - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM81A - CLEAR ADDRESSES FOR FLAG AND MEMORY TEST 
* 
   EQUATE BUFL TO 50B, RESLSP=21B   *BUFFER LENGTH EQUATE 
   EQUATE RDESM=13B, RD1ESM=14B, WRESM=25B, CMPB=0
* 
* -------MODULE INITIALIZATION
* 
20 B5 = 0                           *SET STARTING TEST ADDRESS
   B6 = 10                          *SET STARTING TEST ADDRESS
* 
* -------MODULE TEST
* 
   B1 = 0                           *SET BASE ADDRESS 
   B2 = 0                           *SET BASE ADDRESS 
* 
* -------WRITE DATA OF ZEROS TO ADDRESSES 
* 
30 DUP 0 TO OB FOR BUFL             *WRITE ZEROS INTO OB
   GOSUB 60                         *WRITE SUBROUTINE 
32 B1 = B5                          *SET TEST ADDRESS 
   B2 = B6                          *SET TEST ADDRESS 
   GOSUB 60                         *WRITE ZEROS TO TEST ADDRESS
   B5 = B5.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   B6 = B6.LS.1                     *SHIFT TEST ADDRESS NEXT BIT
   IF(B5.EQ.1) GOTO 50              *DONE 16 MEG
   IF(B6.EQ.1) B5 = 1               *SET UPPER ADDRESS
   IF(B6.EQ.1) B6 = 0               *SET LOWER ADDRESS TO ZERO
   IF(B5.LE.P2) GOTO 32             *IF ALL DONE WITH MEMORY
* 
* -------MODULE REPEAT/EXIT 
* 
50 EXIT                             *AND DAYFILE
* 
* -------WRITE SUBROUTINE 
* 
60 WC = BUFL                        *SET WC FOR 500B
   B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 74   *WRITE DATA TO ESM
   RETURN 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   EXIT TO 98A                      *CALL COMMAND ABORT PROCESSOR 
   ENDSUB GOTO 50                   *ELSE, EXIT 
   END 20 
COMPILE   - MSM81A -   CLEAR ADDRESSES FOR FLAG AND MEMORY TESTS
   MODULE MSM97A,DESM(171,211)LOCK
*** MSM97A - COMMUNICATE WITH MSD VIA 4 BIT FLAG
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         COMMUNICATE WITH MSD (THE MALET PROGRAM EXECUTING THROUGH THE 
*         SIDE DOOR PORT). THIS IS DONE BY WRITING THE 4 BIT FLAG REG 
*         WITH THE VALUES SPECIFIED IN APPENDIX A AND WAITING FOR THE 
*         ANSWER AS SPECIFIED IN APPENDIX B.
* 
*    1.2  METHOD- 
* 
*         1.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         2.  4 BIT FLAG REG SELECTIVE SET WRITE DATA INTO 4 BIT FLAG 
*             REGISTER AS SPECIFIED BY THE CALLING MODULE.
*         3.  CHECK LSP STATUS FOR AN ACCEPT. 
*         4.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         5.  WRITE SINGLE WORD OF ZEROS TO ADDRESS LWA MINUS 100B. 
*         6.  REPEAT FROM STEP 6 UNTIL AN ACCEPT AND ABORT STATUS 
*             (0003) IS PRESENT.
*         7.  RESERVE THE I/O CHANNEL AND THE LOW SPEED PORT. 
*         8.  4 BIT FLAG REG SELECTIVE CLEAR, WRITE ZEROS INTO FLAG 
*             LOCATIONS 0-15B.
*         9.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         B12  -  CODE FROM CALLING MODULE TO BE SENT TO MSD. 
*         OB (10-25) OUTPUT BUFFER SET TO DATA TO MSD.
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         B1  = FLAG REG AND SUBSYSTEM ADDRESS UPPER 12 BITS. 
*         B2  = FLAG REG AND SUBSYSTEM ADDRESS LOWER 12 BITS. 
*         B3  = EXPECTED STATUS.
*         B8  = INDEX TO DATA BUFFER. 
*         B9  = TEMPORARY STORAGE.
*         B12 = CODE FROM CALLING MODULE TO BE SENT TO MSD. 
*         B14 = COMMAND INDEX FOR COMMAND ABORTS. 
*         B15 = MODULE NUMBER.
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         MSM98A - PROCESS PRODUCT OVERLAY ERRORS.
*         MSM98C - PROCESS MODULE DETECTED ERRORS.
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97A - COMMUNICATE WITH MSD VIA 4 BIT FLAG
3  FORMAT MSM97A COMMUNICATE WITH MSD VIA 4 BIT FLAG LC=*DECD 
* 
   EQUATE BUFL TO 5B                *BUFFER LENGTH EQUATE 
   EQUATE SELSET4=6B, SELCLR4=10B, RESLSP=21B, WRESM=25B
   EQUATE RELLSP=20B, RESLSP=21B, STATESM=22B 
* 
* -------MODULE INITIALIZATION
* 
20 IB(400) = B0                     *SAVE B REGISTERS 
   IB(401) = B1 
   IB(402) = B2 
   IB(403) = B3 
   IB(404) = B4 
   IB(405) = B5 
   IB(406) = B6 
   IB(407) = B7 
   IB(410) = B8 
   IB(411) = B9 
   IB(413) = B11
   IB(501) = OB(13)                 *SAVE OUTPUT BUFFER CODES OF ERRLOG 
   IB(502) = OB(12)                 *SAVE OUTPUT BUFFER CODES OF ERRLOG 
   B3 = 2                           *SET EXPECTED STATUS
   B9 = 320B                        *STARTING FLAG REG ADDRESS 13 
   B8 = 25B                         *BUFFER INDEX 
* 
* -------SELECT SET MEMORY ALL 14 LOCATIONS 
* 
   GOSUB 42                         *DECODER SUBROUTINE 
* 
* -------WAIT FOR MSD TO RESPOND
* 
24 B1 = P2                          *SET ADDRESS TO MAX 
   B2 = 7700B                       *SET ADDRESS TO MAX 
   GOSUB 70                         *GO TO WRITE SUBROUTINE 
* 
* -------SELECT CLEAR MEMORY ALL 14 LOCATIONS 
* 
30 GOSUB 66                         *RESERVE SUBROUTINE 
   GOSUB 62                         *CLEAR MEMORY SUBROUTINE
* 
* -------MODULE EXIT
* 
40 B0 = IB(400)                     *RESTORE B REGISTERS
   B1 = IB(401) 
   B2 = IB(402) 
   B3 = IB(403) 
   B4 = IB(404) 
   B5 = IB(405) 
   B6 = IB(406) 
   B7 = IB(407) 
   B8 = IB(410) 
   B9 = IB(411) 
   B11 = IB(413)
   EXIT                             *EXIT TO CALLING MODULE 
* 
* -------DECODE OB DATA SUBROUTINE AND SELECT SET MEMORY FOR MSD
* 
42 OB (10) = B12.AND.17B            *SET FUNCTION FROM CALLING MODULE 
   OB (11) = B12.AND.1700B.RS.6     *SET FUNCTION FROM CALLING MODULE 
44 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   B1 = 0                           *SET FLAG REG UPPER ADDRESS 
   B2 = OB(B8).AND.17+B9            *SET FLAG REG DATA AND ADDRESS
   B14 = SELSET4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELSET B1 B2, ABT 74   *SELECT SET FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 73   *IF BAD STATUS
   B9 = B9-20B                      *DECREMENT FLAG ADDDRESS
   GOTO 44 WHILE (B8-1.NE.7)        *RESET BUFFER ADDRESS 
   RETURN 
* 
* -------SELECT CLEAR MEMORY ALL ONES ALL LOCATIONS USED
* 
62 B1 = 0                           *INITIALIZE FLAG ADDRESS
   B2 = 17B                         *INITIALIZE FLAG ADDRESS AND WORD ALL ONES
64 B14 = SELCLR4                    *COMMAND NUMBER 
   FLAG REGISTER 4BIT SELCLR B1 B2, ABT 74   *SELECT CLEAR FLAG REGISTER
   IF(SB(0).NE.B3) ERROR 1/1 GOSUB 73   *IF BAD STATUS
   B2 = B2+20B                      *INCREMENT THE ADDRESS
   IF(B2.NE.417B) GOTO 64 
   RETURN 
* 
* -------RESERVE LSP SUBROUTINE 
* 
66 B14 = RESLSP                     *COMMAND NUMBER 
   RES LSP, ABT 74                  *RESERVE LOW SPEED PORT AND I/O CHANNEL 
   RETURN 
* 
* -------WRITE SUBROUTINE 
* 
70 GOSUB 66                         *RESERVE SUBROUTINE 
   IF (B12.NE.205B) GOTO 71         *IF NOT SIDE DOOR CLEAR 
   IF (OB(12).NE.10B) GOTO 71       *IF NOT MASTER CLEAR
   DELAY 1000D MSEC                 *WAIT FOR MC FUNCTION BEFORE WRITING
71 WC = BUFL                        *SET WC FOR 5B
   B14 = WRESM                      *COMMAND NUMBER 
   WRITE TO ESM ADDRESS B1 B2, ABT 72   *WRITE TO SUBSYSTEM 
   B11 = B11+1                      *INCREMENT COUNTER
   GOTO 70                          *CONTINUE WAITING 
72 IF(B15.EQ.61D) GOTO 75           *STATUS OTHER THAN ACCEPT/ABORT MODULE 61 
   IF(B15.EQ.62D) GOTO 75           *STATUS OTHER THAN ACCEPT/ABORT MODULE 62 
   IF(SB.NE.3) GOTO 74              *STATUS OTHER THAN ACCEPT AND ABORT 
   RETURN 
* 
* -------PROCESS MODULE DETECTED ERRORS 
* 
73 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   EXIT TO 98C                      *EXIT TO COMMAND FAILED PROCESSOR 
   ENDSUB GOTO 40                   *EXIT 
* 
* -------PROCESS COMMAND ABORTS 
* 
74 MSG 0 TO LINE 1                  *DISPLAY MODULE TITLE 
   EXIT TO 98A                      *EXIT TO COMMAND ABORT PROCESSOR
   ENDSUB GOTO 40                   *EXIT 
75 IF(SB.AND.3.EQ.3) RETURN         *STATUS ACCEPT AND ABORT
   GOTO 70                          *CHECK STATUS AGAIN 
   END 20 
COMPILE   - MSM97A -  COMMUNICATE WITH MSD VIA 4 BIT FLAG 
   MODULE MSM97C,DESM(171,211)LOCK
*** MSM97C - GENERATE CHECKBIT DATA PATTERNS
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE CHECKBIT DATA PATTERNS FOR VARIOUS MODULES.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
*         WC  = BUFFER WORD COUNT.
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE -
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97C - GENERATE CHECKBIT DATA PATTERNS
* 
   DATA (OB(100),CON) 37,26,25,34,23,32,31,20,
  ,57,46,45,54,43,52,51,40,117,106,105,114,103,112,111,100, 
  ,217,206,205,214,203,212,211,200,361,141,121,301,061,241, 
  ,221,001,370,150,130,310,070,250,230,010,364,144,124,304, 
  ,064,244,224,004,362,142,122,302,377,377,377,377
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97C -  GENERATE CHECKBIT DATA PATTERNS 
   MODULE MSM97E,DESM(171,211)LOCK
*** MSM97E - GENERATE WRITE DATA PATTERNS PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE FIRST WRITE DATA PATTERNS FOR SINGLE BIT CORRECTION
*         AND DETECTION.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97E - GENERATE WRITE DATA PATTERNS PART I
* 
   DATA (OB(0),CON) 0000,0000,0000,0001,3000, 
  ,0000,0000,0000,0540,0000,
  ,0000,0000,0026,0000,0000,
  ,0000,0001,3000,0000,0000,
  ,0000,0540,0000,0000,0000,
  ,0026,0000,0000,0000,0000,
  ,7400,0000,0000,0000,0401,
  ,7400,0000,0000,0000,1002,
  ,7400,0000,0000,0000,2004,
  ,7400,0000,0000,0000,4010,
  ,7400,0000,0000,0001,0020,
  ,7400,0000,0000,0001,1423,
  ,7400,0000,0000,0001,2425,
  ,7400,0000,0000,0001,3026,
  ,7400,0000,0000,0001,4431,
  ,7400,0000,0000,0001,5032,
  ,7400,0000,0000,0001,6034,
  ,7400,0000,0000,0001,7437,
  ,7400,0000,0000,0002,0040,
  ,7400,0000,0000,0002,1443,
  ,7400,0000,0000,0002,2445,
  ,7400,0000,0000,0002,3046,
  ,7400,0000,0000,0002,4451,
  ,7400,0000,0000,0002,5052,
  ,7400,0000,0000,0002,6054,
  ,7400,0000,0000,0002,7457,
  ,7400,0000,0000,0003,0461,
  ,7400,0000,0000,0003,1062,
  ,7400,0000,0000,0003,2064,
  ,7400,0000,0000,0003,4070,
  ,7400,0000,0000,0005,0521,
  ,7400,0000,0000,0005,1122,
  ,7400,0000,0000,0005,2124,
  ,7400,0000,0000,0005,4130,
  ,7400,0000,0000,0006,0541,
  ,7400,0000,0000,0006,1142,
  ,7400,0000,0000,0006,2144,
  ,7400,0000,0000,0006,4150,
  ,7400,0000,0000,0007,0160,
  ,7400,0000,0000,0007,1563,
  ,7400,0000,0000,0007,2565,
  ,7400,0000,0000,0007,3166,
  ,7400,0000,0000,0007,4571,
  ,7400,0000,0000,0007,5172,
  ,7400,0000,0000,0007,6174,
  ,7400,0000,0000,0007,7577,
  ,7400,0000,0000,0011,0621,
  ,7400,0000,0000,0011,1222,
  ,7400,0000,0000,0011,2224,
  ,7400,0000,0000,0011,4230,
  ,7400,0000,0000,0012,0641,
  ,7400,0000,0000,0012,1242,
  ,7400,0000,0000,0012,2244,
  ,7400,0000,0000,0012,4250,
  ,7400,0000,0000,0013,0260,
  ,7400,0000,0000,0013,1663,
  ,7400,0000,0000,0013,2665,
  ,7400,0000,0000,0013,3266,
  ,7400,0000,0000,0013,4671,
  ,7400,0000,0000,0013,5272,
  ,7400,0000,0000,0013,6274,
  ,7400,0000,0000,0013,7677,
  ,7400,0000,0000,0014,0701,
  ,7400,0000,0000,0014,1302,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97E -  GENERATE WRITE DATA PATTERNS PART ONE 
   MODULE MSM97F,DESM(171,211)LOCK
*** MSM97F - GENERATE WRITE DATA PATTERNS PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE SECOND WRITE DATA PATTERNS FOR SINGLE BIT CORRECTION 
*         AND DETECTION.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE -
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97F - GENERATE WRITE DATA PATTERNS PART II 
* 
   DATA (OB(0),CON) 7400,0000,0000,0014,2304, 
  ,7400,0000,0000,0014,4310,
  ,7400,0000,0000,0014,6715,
  ,7400,0000,0000,0015,7737,
  ,7400,0000,0000,0017,0761,
  ,7400,0000,0000,0017,1362,
  ,7400,0000,0000,0017,2364,
  ,7400,0000,0000,0017,4370,
  ,0421,0000,0000,0000,0001,
  ,0601,0000,0000,0000,0010,
  ,0320,0000,0000,0000,0015,
  ,0340,0000,0000,0000,0016,
  ,0741,0000,0000,0000,0016,
  ,3400,0000,0000,0000,0160,
  ,4000,0000,0000,0000,0200,
  ,5400,0000,0000,0000,0260,
  ,7400,0000,0000,0661,6013,
  ,7400,0000,0000,1242,5432,
  ,7400,0000,0000,1363,0037,
  ,7400,0000,0000,1403,0440,
  ,7400,0000,0000,1463,2043,
  ,7400,0000,0000,2044,1462,
  ,7400,0000,0000,2445,1502,
  ,7400,0000,0000,2465,2103,
  ,7400,0000,0000,4070,2163,
  ,7400,0000,0000,5072,2223,
  ,7400,0000,0000,5152,3626,
  ,7400,0000,0000,5373,0237,
  ,7400,0000,0000,5553,3646,
  ,7400,0000,0000,6515,2704,
  ,0000,0000,0004,0100,2000,
  ,0000,0000,3407,0160,0000,
  ,0002,0040,1000,0000,0000,
  ,0020,0401,0000,0000,0000,
  ,0025,0521,2400,0000,0000,
  ,0026,0541,3000,0000,0000,
  ,1142,3040,0000,0000,0006,
  ,2144,3100,0000,0000,0006,
  ,0701,6020,0000,0000,0014,
  ,7400,0000,0046,1161,3426,
  ,7400,0000,0052,1261,5432,
  ,7400,0000,0054,1321,6434,
  ,7400,0000,0205,4147,3165,
  ,7400,0000,0257,5412,0237,
  ,7400,0000,0311,6253,5271,
  ,7400,0000,0351,7255,5331,
  ,5473,1660,0000,0000,1663,
  ,7517,2360,0000,0000,2364,
  ,0521,2420,0000,0000,2425,
  ,3547,3160,0000,0000,3166,
  ,3166,3540,0000,0000,3547,
  ,4571,3620,0000,0000,3627,
  ,7617,4360,0000,0000,4370,
  ,3266,5540,0000,0000,5553,
  ,2364,7500,0000,0000,7517,
  ,6054,0000,0000,0054,1302,
  ,7457,0000,0000,0057,1362,
  ,5112,0000,0000,0112,2244,
  ,0541,0000,0000,0141,3026,
  ,4571,0000,0000,0171,3627,
  ,5172,0000,0000,0172,3647,
  ,7400,0002,5454,0701,6033,
  ,7400,0004,7117,1763,7476,
  ,7400,0006,5554,2705,6133,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97F -  GENERATE WRITE DATA PATTERNS PART TWO 
   MODULE MSM97G,DESM(171,211)LOCK
*** MSM97G - GENERATE WRITE DATA PATTERNS PART THREE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE THIRD WRITE DATA PATTERNS FOR SINGLE BIT CORRECTION
*         AND DETECTION.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE WRITE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97G - GENERATE WRITE DATA PATTERNS PART III
* 
   DATA (OB(0),CON) 7400,0016,5754,6715,6333, 
  ,5513,2264,5513,0000,0004,
  ,1262,5453,1262,0000,0013,
  ,2264,5513,2264,0000,0013,
  ,7400,4230,5172,3647,5171,
  ,7400,5373,0240,5012,0237,
  ,0260,5413,0260,5400,0013,
  ,0020,0000,0401,0020,0401,
  ,3026,0000,0541,3026,0541,
  ,3106,0000,2144,3106,2144,
  ,7524,2524,2505,2124,2504,
  ,7613,4307,6174,3707,6173,
  ,7706,6173,3667,5573,3666,
  ,2767,7176,3747,7176,3766,
  ,5573,3667,5573,3670,1267,
  ,5372,7660,4657,5372,7657,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97G -  GENERATE WRITE DATA PATTERNS PART THREE 
   MODULE MSM97H,DESM(171,211)LOCK
*** MSM97H - GENERATE DATA PATTERNS READ SYNDROME ENABLED PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE FIRST COMPARE DATA PATTERNS FOR SINGLE BIT 
*         CORRECTION AND DETECTION READ SYNDROME ENABLED. 
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE -
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97H - GENERATE COMPARE DATA PATTERNS PART I
* 
   DATA (OB(0),CON) 0000,1000,0000,0001,3000, 
  ,0000,2000,0000,0540,0000,
  ,0000,4000,0026,0000,0000,
  ,0000,0021,3000,0000,0000,
  ,0000,0200,0000,0000,0000,
  ,0026,0100,0000,0000,0000,
  ,7400,6341,0000,0000,0401,
  ,7400,6320,0000,0000,1002,
  ,7420,6260,0000,0000,2004,
  ,7400,6160,0000,0000,4010,
  ,7400,6760,0000,0011,0020,
  ,7400,6700,0000,0000,1423,
  ,7400,6640,0000,0001,0425,
  ,7400,6620,0000,0001,2026,
  ,7400,6540,0000,0005,4431,
  ,7400,6520,0000,0003,5032,
  ,7400,6460,0000,0001,2034,
  ,7400,6400,0000,0001,7037,
  ,7400,7360,0000,0002,0240,
  ,7400,7300,0000,0002,1463,
  ,7400,7240,0000,0002,2441,
  ,7400,7220,0000,0002,3044,
  ,7400,7140,0000,0002,4551,
  ,7400,7120,0000,0002,5012,
  ,7400,7060,0000,0002,6044,
  ,7400,7000,0000,0002,7456,
  ,7400,7750,0000,0003,0461,
  ,7400,7720,0000,0003,1062,
  ,7600,7660,0000,0003,2064,
  ,7400,7560,0000,0003,4070,
  ,7400,4740,1000,0005,0521,
  ,6400,4720,0000,0005,1122,
  ,7402,4660,0000,0005,2124,
  ,7400,4560,0000,0005,4130,
  ,7400,5340,2000,0006,0541,
  ,5400,5320,0000,0006,1142,
  ,7404,5260,0000,0006,2144,
  ,7400,5160,0000,0006,4150,
  ,7400,5760,0000,4007,0160,
  ,7400,5700,0000,0407,1563,
  ,7400,5640,0000,0107,2565,
  ,7400,5620,0000,0047,3166,
  ,7400,5540,0000,2007,4571,
  ,7400,5520,0000,1007,5172,
  ,7400,5460,0000,0207,6174,
  ,7400,5400,0000,0027,7577,
  ,7400,2742,0000,0011,0621,
  ,7400,2720,0000,0011,1222,
  ,7440,2660,0000,0011,2224,
  ,7400,2560,0000,0011,4230,
  ,7400,3344,0000,0012,0641,
  ,7400,3320,0000,0012,1242,
  ,7500,3260,0000,0012,2244,
  ,7400,3160,0000,0012,4250,
  ,7400,3760,0200,0013,0260,
  ,7400,3700,0020,0013,1663,
  ,7400,3640,0004,0013,2665,
  ,7400,3620,0002,0013,3266,
  ,7400,3540,0100,0013,4671,
  ,7400,3520,0040,0013,5272,
  ,7400,3460,0010,0013,6274,
  ,7400,3400,0001,0013,7677,
  ,7400,0340,0400,0014,0701,
  ,7000,0320,0000,0014,1302,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97H -  GENERATE DATA PATTERNS READ SYNDROME ENABLED PART ONE 
   MODULE MSM97I,DESM(171,211)LOCK
*** MSM97I - GENERATE DATA PATTERNS READ SYNDROME ENABLED PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE SECOND COMPARE DATA PATTERNS FOR SINGLE BIT
*         CORRECTION AND DETECTION READ SYNDROME ENABLED. 
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97I - GENERATE COMPARE DATA PATTERNS PART II 
* 
   DATA (OB(0),CON) 7401,0260,0000,0014,2304, 
  ,7400,0160,0000,0014,4310,
  ,7400,0040,0000,0014,6715,
  ,7400,0400,0000,0015,7737,
  ,7400,1740,4000,0017,0761,
  ,3400,1720,0000,0017,1362,
  ,7410,1660,0000,0017,2364,
  ,7400,1560,0000,0017,4370,
  ,0421,6460,0000,0000,4001,
  ,0601,7220,0000,0000,0012,
  ,0320,2000,0000,0000,0015,
  ,0340,6640,0000,0000,2016,
  ,0741,6700,0000,0001,0016,
  ,3400,2720,0000,0000,0160,
  ,6000,5320,0000,0000,0200,
  ,5400,0100,0000,0000,0260,
  ,7400,6320,0000,0661,6013,
  ,7400,5460,0000,1042,5432,
  ,7400,5400,0000,1343,0037,
  ,7400,7240,0000,1403,0444,
  ,7400,7060,0000,1463,2053,
  ,7400,7720,0000,2044,1462,
  ,7400,0040,0000,2445,1502,
  ,7400,4000,0000,2465,2103,
  ,7400,6620,0000,4070,3163,
  ,7400,5520,0000,4072,2223,
  ,7400,5620,0000,5112,3626,
  ,7400,5760,0000,1373,0237,
  ,7400,7000,0000,5553,3647,
  ,7400,0200,0000,6515,2704,
  ,0000,7120,0004,0100,2040,
  ,0000,0020,3407,0160,0000,
  ,0002,3320,1000,0000,0000,
  ,4020,1721,0000,0000,0000,
  ,1025,4721,2400,0000,0000,
  ,0426,0321,3000,0000,0000,
  ,1042,3260,0000,0000,0006,
  ,2104,2660,0000,0000,0006,
  ,0501,7660,0000,0000,0014,
  ,7400,3620,0044,1161,3426,
  ,7400,3520,0012,1261,5432,
  ,7400,3460,0044,1321,6434,
  ,7400,3640,0201,4147,3165,
  ,7400,6520,0257,5410,0237,
  ,7400,3540,0211,6253,5271,
  ,7400,6540,0351,7251,5331,
  ,5472,0260,0000,0000,1663,
  ,7517,1560,0000,0000,2364,
  ,0521,0160,0000,0000,2425,
  ,3547,2560,0000,0000,3166,
  ,3166,4560,0000,0000,3547,
  ,4571,3160,0000,0000,3627,
  ,7607,1660,0000,0000,4370,
  ,3264,4660,0000,0000,5553,
  ,2364,7560,0000,0000,7517,
  ,6054,7360,0000,0054,1102,
  ,7457,6760,0000,0047,1362,
  ,5112,5640,0000,0012,2244,
  ,0541,7300,0000,0141,3006,
  ,4571,0400,0000,0171,3627,
  ,5172,1000,0000,0172,3647,
  ,7400,0342,5054,0701,6033,
  ,7400,1744,3117,1763,7476,
  ,7400,6406,5554,2705,6533,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97I -  GENERATE DATA PATTERNS READ SYNDROME ENABLED PART TWO 
   MODULE MSM97J,DESM(171,211)LOCK
*** MSM97J - GENERATE DATA PATTERNS READ SYNDROME ENABLED PART THREE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE THIRD COMPARE DATA PATTERNS FOR SINGLE BIT 
*         CORRECTION AND DETECTION READ SYNDROME ENABLED. 
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE -
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97J - GENERATE COMPARE DATA PATTERNS PART III
* 
   DATA (OB(0),CON) 7400,2754,5754,6715,6333, 
  ,5513,3404,5512,0000,0004,
  ,1262,3713,1242,0000,0013,
  ,2264,3773,2064,0000,0013,
  ,7400,7150,5172,3647,5071,
  ,7400,5173,0240,5012,0237,
  ,0260,5713,0260,5000,0013,
  ,0000,6260,0401,0020,0401,
  ,3022,5260,0541,3026,0541,
  ,3106,5340,0144,3106,2144,
  ,7524,3340,2505,2124,2504,
  ,7613,6346,6174,3707,6173,
  ,7706,7743,3667,5573,3666,
  ,2767,4756,2747,7176,3766,
  ,5573,5547,5573,1670,1267,
  ,5372,6160,4657,5372,7657,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97J -  GENERATE DATA PATTERNS READ SYNDROME ENABLED PART THREE 
   MODULE MSM97K,DESM(171,211)LOCK
*** MSM97K - GENERATE DATA PATTERNS READ SYNDROME DISABLED PART ONE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE FIRST COMPARE DATA PATTERNS FOR SINGLE BIT 
*         CORRECTION AND DETECTION READ SYNDROME DISABLED.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE -
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97K - GENERATE DATA PATTERNS SYN DIS PART I
* 
   DATA (OB(0),CON) 0000,0000,0000,0001,3000, 
  ,0000,0000,0000,0540,0000,
  ,0000,0000,0026,0000,0000,
  ,0000,0001,3000,0000,0000,
  ,0000,0540,0000,0000,0000,
  ,0026,0000,0000,0000,0000,
  ,7400,0001,0000,0000,0401,
  ,7400,0000,0000,0000,1002,
  ,7420,0000,0000,0000,2004,
  ,7400,0400,0000,0000,4010,
  ,7400,0000,0000,0011,0020,
  ,7400,0000,0000,0000,1423,
  ,7400,0000,0000,0001,0425,
  ,7400,0000,0000,0001,2026,
  ,7400,0000,0000,0005,4431,
  ,7400,0000,0000,0003,5032,
  ,7400,0000,0000,0001,2034,
  ,7400,0000,0000,0001,7037,
  ,7400,0000,0000,0002,0240,
  ,7400,0000,0000,0002,1463,
  ,7400,0000,0000,0002,2441,
  ,7400,0000,0000,0002,3044,
  ,7400,0000,0000,0002,4551,
  ,7400,0000,0000,0002,5012,
  ,7400,0000,0000,0002,6044,
  ,7400,0000,0000,0002,7456,
  ,7400,0010,0000,0003,0461,
  ,7400,0000,0000,0003,1062,
  ,7600,0000,0000,0003,2064,
  ,7400,4000,0000,0003,4070,
  ,7400,0000,1000,0005,0521,
  ,6400,0000,0000,0005,1122,
  ,7402,0000,0000,0005,2124,
  ,7400,0040,0000,0005,4130,
  ,7400,0000,2000,0006,0541,
  ,5400,0000,0000,0006,1142,
  ,7404,0000,0000,0006,2144,
  ,7400,0100,0000,0006,4150,
  ,7400,0000,0000,4007,0160,
  ,7400,0000,0000,0407,1563,
  ,7400,0000,0000,0107,2565,
  ,7400,0000,0000,0047,3166,
  ,7400,0000,0000,2007,4571,
  ,7400,0000,0000,1007,5172,
  ,7400,0000,0000,0207,6174,
  ,7400,0000,0000,0027,7577,
  ,7400,0002,0000,0011,0621,
  ,7400,0000,0000,0011,1222,
  ,7440,0000,0000,0011,2224,
  ,7400,1000,0000,0011,4230,
  ,7400,0004,0000,0012,0641,
  ,7400,0000,0000,0012,1242,
  ,7500,0000,0000,0012,2244,
  ,7400,2000,0000,0012,4250,
  ,7400,0000,0200,0013,0260,
  ,7400,0000,0020,0013,1663,
  ,7400,0000,0004,0013,2665,
  ,7400,0000,0002,0013,3266,
  ,7400,0000,0100,0013,4671,
  ,7400,0000,0040,0013,5272,
  ,7400,0000,0010,0013,6274,
  ,7400,0000,0001,0013,7677,
  ,7400,0000,0400,0014,0701,
  ,7000,0000,0000,0014,1302,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97K -  GENERATE DATA PATTERNS READ SYNDROME DISABLED PART ONE
   MODULE MSM97L,DESM(171,211)LOCK
*** MSM97L - GENERATE DATA PATTERNS READ SYNDROME DISABLED PART TWO 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE SECOND COMPARE DATA PATTERNS FOR SINGLE BIT
*         CORRECTION AND DETECTION READ SYNDROME DISABLED.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE -
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97L - GENERATE DATA PATTERNS SYN DIS PART II 
* 
   DATA (OB(0),CON) 7401,0000,0000,0014,2304, 
  ,7400,0020,0000,0014,4310,
  ,7400,0000,0000,0014,6715,
  ,7400,0000,0000,0015,7737,
  ,7400,0000,4000,0017,0761,
  ,3400,0000,0000,0017,1362,
  ,7410,0000,0000,0017,2364,
  ,7400,0200,0000,0017,4370,
  ,0421,0000,0000,0000,4001,
  ,0601,0000,0000,0000,0012,
  ,0320,0000,0000,0000,0015,
  ,0340,0000,0000,0000,2016,
  ,0741,0000,0000,0001,0016,
  ,3400,0000,0000,0000,0160,
  ,6000,0000,0000,0000,0200,
  ,5400,0000,0000,0000,0260,
  ,7400,0000,0000,0661,6013,
  ,7400,0000,0000,1042,5432,
  ,7400,0000,0000,1343,0037,
  ,7400,0000,0000,1403,0444,
  ,7400,0000,0000,1463,2053,
  ,7400,0000,0000,2044,1462,
  ,7400,0000,0000,2445,1502,
  ,7400,0000,0000,2465,2103,
  ,7400,0000,0000,4070,3163,
  ,7400,0000,0000,4072,2223,
  ,7400,0000,0000,5112,3626,
  ,7400,0000,0000,1373,0237,
  ,7400,0000,0000,5553,3647,
  ,7400,0000,0000,6515,2704,
  ,0000,0000,0004,0100,2040,
  ,0000,0000,3407,0160,0000,
  ,0002,0040,1000,0000,0000,
  ,4020,0401,0000,0000,0000,
  ,1025,0521,2400,0000,0000,
  ,0426,0541,3000,0000,0000,
  ,1042,3040,0000,0000,0006,
  ,2104,3100,0000,0000,0006,
  ,0501,6020,0000,0000,0014,
  ,7400,0000,0044,1161,3426,
  ,7400,0000,0012,1261,5432,
  ,7400,0000,0044,1321,6434,
  ,7400,0000,0201,4147,3165,
  ,7400,0000,0257,5410,0237,
  ,7400,0000,0211,6253,5271,
  ,7400,0000,0351,7251,5331,
  ,5472,1660,0000,0000,1663,
  ,7517,2160,0000,0000,2364,
  ,0521,2400,0000,0000,2425,
  ,3547,2160,0000,0000,3166,
  ,3166,3500,0000,0000,3547,
  ,4571,1620,0000,0000,3627,
  ,7607,4360,0000,0000,4370,
  ,3264,5540,0000,0000,5553,
  ,2364,3500,0000,0000,7517,
  ,6054,0000,0000,0054,1102,
  ,7457,0000,0000,0047,1362,
  ,5112,0000,0000,0012,2244,
  ,0541,0000,0000,0141,3006,
  ,4571,0000,0000,0171,3627,
  ,5172,0000,0000,0172,3647,
  ,7400,0002,5054,0701,6033,
  ,7400,0004,3117,1763,7476,
  ,7400,0006,5554,2705,6533,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97L -  GENERATE DATA PATTERNS READ SYNDROME DISABLED PART TWO
   MODULE MSM97M,DESM(171,211)LOCK
*** MSM97M - GENERATE DATA PATTERNS READ SYNDROME DISABLED PART THREE 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE THIRD COMPARE DATA PATTERNS FOR SINGLE BIT 
*         CORRECTION AND DETECTION READ SYNDROME DISABLED.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE -
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97M - GENERATE DATA PATTERNS SYN DIS PART III
* 
   DATA (OB(0),CON) 7400,0014,5754,6715,6333, 
  ,5513,2264,5512,0000,0004,
  ,1262,5453,1242,0000,0013,
  ,2264,5513,2064,0000,0013,
  ,7400,4230,5172,3647,5071,
  ,7400,5273,0240,5012,0237,
  ,0260,5413,0260,5000,0013,
  ,0000,0000,0401,0020,0401,
  ,3022,0000,0541,3026,0541,
  ,3106,0000,0144,3106,2144,
  ,7524,2520,2505,2124,2504,
  ,7613,4306,6174,3707,6173,
  ,7706,6163,3667,5573,3666,
  ,2767,7176,2747,7176,3766,
  ,5573,3667,5573,1670,1267,
  ,5372,7260,4657,5372,7657,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97M -  GENERATE DATA PATTERNS READ SYNDROME DISABLED PART THREE
   MODULE MSM97Q,DESM(171,211)LOCK
*** MSM97Q - GENERATE WRITE DATA PATTERNS PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE FIRST WRITE DATA PATTERNS FOR MULTIPLE BIT ERROR 
*         DETECTION READ SYNDROME ENABLED AND CHECKBIT READ MODULES.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97Q - GENERATE WRITE DATA PATTERNS PART I
* 
   DATA (OB(0),CON) 0000,0000,0000,0000,0000, 
  ,0000,0000,0000,0000,0001,
  ,0000,0000,0000,0000,0002,
  ,0000,0000,0000,0000,0003,
  ,0000,0000,0000,0000,0004,
  ,0000,0000,0000,0000,0005,
  ,0000,0000,0000,0000,0006,
  ,0000,0000,0000,0000,0007,
  ,0000,0000,0000,0000,0020,
  ,0000,0000,0000,0000,0021,
  ,0000,0000,0000,0000,0022,
  ,0000,0000,0000,0000,0023,
  ,0000,0000,0000,0000,0024,
  ,0000,0000,0000,0000,0025,
  ,0000,0000,0000,0000,0026,
  ,0000,0000,0000,0000,0027,
  ,0000,0000,0000,0000,0040,
  ,0000,0000,0000,0000,0041,
  ,0000,0000,0000,0000,0042,
  ,0000,0000,0000,0000,0043,
  ,0000,0000,0000,0000,0044,
  ,0000,0000,0000,0000,0045,
  ,0000,0000,0000,0000,0046,
  ,0000,0000,0000,0000,0047,
  ,0000,0000,0000,0000,0060,
  ,0000,0000,0000,0000,0061,
  ,0000,0000,0000,0000,0062,
  ,0000,0000,0000,0000,0063,
  ,0000,0000,0000,0000,0064,
  ,0000,0000,0000,0000,0065,
  ,0000,0000,0000,0000,0066,
  ,0000,0000,0000,0000,0067,
  ,0000,0000,0000,0000,0100,
  ,0000,0000,0000,0000,0101,
  ,0000,0000,0000,0000,0102,
  ,0000,0000,0000,0000,0103,
  ,0000,0000,0000,0000,0104,
  ,0000,0000,0000,0000,0105,
  ,0000,0000,0000,0000,0106,
  ,0000,0000,0000,0000,0107,
  ,0000,0000,0000,0000,0120,
  ,0000,0000,0000,0000,0121,
  ,0000,0000,0000,0000,0122,
  ,0000,0000,0000,0000,0123,
  ,0000,0000,0000,0000,0124,
  ,0000,0000,0000,0000,0125,
  ,0000,0000,0000,0000,0126,
  ,0000,0000,0000,0000,0127,
  ,0000,0000,0000,0000,0140,
  ,0000,0000,0000,0000,0141,
  ,0000,0000,0000,0000,0142,
  ,0000,0000,0000,0000,0143,
  ,0000,0000,0000,0000,0144,
  ,0000,0000,0000,0000,0145,
  ,0000,0000,0000,0000,0146,
  ,0000,0000,0000,0000,0147,
  ,0000,0000,0000,0000,0160,
  ,0000,0000,0000,0000,0161,
  ,0000,0000,0000,0000,0162,
  ,0000,0000,0000,0000,0163,
  ,0000,0000,0000,0000,0164,
  ,0000,0000,0000,0000,0165,
  ,0000,0000,0000,0000,0166,
  ,0000,0000,0000,0000,0167,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97Q -  GENERATE WRITE DATA PATTERNS PART ONE 
   MODULE MSM97R,DESM(171,211)LOCK
*** MSM97R - GENERATE WRITE DATA PATTERNS PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE SECOND WRITE DATA PATTERNS FOR MULTIPLE BIT ERROR
*         DETECTION READ SYNDROME ENABLED AND CHECKBIT READ MODULES.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97R - GENERATE WRITE DATA PATTERNS PART II 
* 
   DATA (OB(0),CON) 0000,0000,0000,0000,0200, 
  ,0000,0000,0000,0000,0201,
  ,0000,0000,0000,0000,0202,
  ,0000,0000,0000,0000,0203,
  ,0000,0000,0000,0000,0204,
  ,0000,0000,0000,0000,0205,
  ,0000,0000,0000,0000,0206,
  ,0000,0000,0000,0000,0207,
  ,0000,0000,0000,0000,0220,
  ,0000,0000,0000,0000,0221,
  ,0000,0000,0000,0000,0222,
  ,0000,0000,0000,0000,0223,
  ,0000,0000,0000,0000,0224,
  ,0000,0000,0000,0000,0225,
  ,0000,0000,0000,0000,0226,
  ,0000,0000,0000,0000,0227,
  ,0000,0000,0000,0000,0240,
  ,0000,0000,0000,0000,0241,
  ,0000,0000,0000,0000,0242,
  ,0000,0000,0000,0000,0243,
  ,0000,0000,0000,0000,0244,
  ,0000,0000,0000,0000,0245,
  ,0000,0000,0000,0000,0246,
  ,0000,0000,0000,0000,0247,
  ,0000,0000,0000,0000,0260,
  ,0000,0000,0000,0000,0261,
  ,0000,0000,0000,0000,0262,
  ,0000,0000,0000,0000,0263,
  ,0000,0000,0000,0000,0264,
  ,0000,0000,0000,0000,0265,
  ,0000,0000,0000,0000,0266,
  ,0000,0000,0000,0000,0267,
  ,0000,0000,0000,0000,0300,
  ,0000,0000,0000,0000,0301,
  ,0000,0000,0000,0000,0302,
  ,0000,0000,0000,0000,0303,
  ,0000,0000,0000,0000,0304,
  ,0000,0000,0000,0000,0305,
  ,0000,0000,0000,0000,0306,
  ,0000,0000,0000,0000,0307,
  ,0000,0000,0000,0000,0320,
  ,0000,0000,0000,0000,0321,
  ,0000,0000,0000,0000,0322,
  ,0000,0000,0000,0000,0323,
  ,0000,0000,0000,0000,0324,
  ,0000,0000,0000,0000,0325,
  ,0000,0000,0000,0000,0326,
  ,0000,0000,0000,0000,0327,
  ,0000,0000,0000,0000,0340,
  ,0000,0000,0000,0000,0341,
  ,0000,0000,0000,0000,0342,
  ,0000,0000,0000,0000,0343,
  ,0000,0000,0000,0000,0344,
  ,0000,0000,0000,0000,0345,
  ,0000,0000,0000,0000,0346,
  ,0000,0000,0000,0000,0347,
  ,0000,0000,0000,0000,0360,
  ,0000,0000,0000,0000,0361,
  ,0000,0000,0000,0000,0362,
  ,0000,0000,0000,0000,0363,
  ,0000,0000,0000,0000,0364,
  ,0000,0000,0000,0000,0366,
  ,0000,0000,0000,0000,0367,
  ,0000,0000,0000,0000,0400,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97R -  GENERATE WRITE DATA PATTERNS PART TWO 
   MODULE MSM97S,DESM(171,211)LOCK
*** MSM97S - GENERATE WRITE DATA PATTERNS PART THREE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE THIRD WRITE DATA PATTERNS FOR MULTIPLE BIT ERROR 
*         DETECTION READ SYNDROME ENABLED AND CHECKBIT READ MODULES.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97S - GENERATE WRITE DATA PATTERNS PART III
* 
   DATA (OB(0),CON) 0000,0000,0000,0000,1000, 
  ,0000,0000,0000,0000,2000,
  ,0000,0000,0000,0000,3400,
  ,0000,0000,0000,0001,0000,
  ,0000,0000,0000,0001,1400,
  ,0000,0000,0000,0001,2400,
  ,0000,0000,0000,0020,0000,
  ,0000,0000,0000,0040,0000,
  ,0000,0000,0000,0100,0000,
  ,0000,0000,0000,0160,0000,
  ,0000,0000,0000,0400,0000,
  ,0000,0000,0000,0460,0000,
  ,0000,0000,0000,0520,0000,
  ,0000,0000,0001,0000,0000,
  ,0000,0000,0002,0000,0000,
  ,0000,0000,0004,0000,0000,
  ,0000,0000,0007,0000,0000,
  ,0000,0000,0020,0000,0000,
  ,0000,0000,0023,0000,0000,
  ,0000,0000,0025,0000,0000,
  ,0000,0000,0400,0000,0000,
  ,0000,0000,1000,0000,0000,
  ,0000,0000,2000,0000,0000,
  ,0000,0000,3400,0000,0000,
  ,0000,0001,0000,0000,0000,
  ,0000,0001,1400,0000,0000,
  ,0000,0001,2400,0000,0000,
  ,0000,0020,0000,0000,0000,
  ,0000,0040,0000,0000,0000,
  ,0000,0100,0000,0000,0000,
  ,0000,0160,0000,0000,0000,
  ,0000,0400,0000,0000,0000,
  ,0000,0460,0000,0000,0000,
  ,0000,0520,0000,0000,0000,
  ,0001,0000,0000,0000,0000,
  ,0002,0000,0000,0000,0000,
  ,0004,0000,0000,0000,0000,
  ,0007,0000,0000,0000,0000,
  ,0020,0000,0000,0000,0000,
  ,0023,0000,0000,0000,0000,
  ,0025,0000,0000,0000,0000,
  ,0400,0000,0000,0000,0000,
  ,1000,0000,0000,0000,0000,
  ,2000,0000,0000,0000,0000,
  ,3400,0000,0000,0000,0000,
  ,0000,0000,0000,0005,6535,
  ,0000,0000,0000,0006,6555,
  ,0000,0000,0000,0015,0320,
  ,0000,0000,0000,0015,1723,
  ,0000,0000,0000,0015,2725,
  ,0000,0000,0000,0015,3326,
  ,0000,0000,0000,0015,4731,
  ,0000,0000,0000,0015,5332,
  ,0000,0000,0000,0015,6334,
  ,0000,0000,0000,0017,4370,
  ,0000,0000,0000,0017,6775,
  ,0000,0000,0000,0000,0000,
  ,0000,0000,0000,0000,0000,
  ,0000,0000,0000,0000,0000,
  ,0000,0000,0000,0000,0000,
  ,0000,0000,0000,0000,0000,
  ,0000,0000,0000,0000,0000,
  ,0000,0000,0000,0000,0000,
  ,0000,0000,0000,0000,0000,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97S -  GENERATE WRITE DATA PATTERNS PART THREE 
   MODULE MSM97T,DESM(171,211)LOCK
*** MSM97T - GENERATE COMPARE DATA PATTERNS PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE FIRST COMPARE DATA PATTERNS FOR MULTIPLE BIT ERROR 
*         DETECTION READ SYNDROME ENABLED.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97T - GENERATE COMPARE DATA PATTERNS PART I
* 
   DATA (OB(0),CON) 0000,7760,0000,0000,0000, 
  ,0000,0740,0000,0000,0001,
  ,0000,0500,0000,0000,0002,
  ,0000,7520,0000,0000,0003,
  ,0000,0420,0000,0000,0004,
  ,0000,7400,0000,0000,0005,
  ,0000,7640,0000,0000,0006,
  ,0000,0660,0000,0000,0007,
  ,0000,0060,0000,0000,0020,
  ,0000,7040,0000,0000,0021,
  ,0000,7200,0000,0000,0022,
  ,0000,0220,0000,0000,0023,
  ,0000,7320,0000,0000,0024,
  ,0000,0300,0000,0000,0025,
  ,0000,0140,0000,0000,0026,
  ,0000,7160,0000,0000,0027,
  ,0000,1640,0000,0000,0040,
  ,0000,6660,0000,0000,0041,
  ,0000,6420,0000,0000,0042,
  ,0000,1400,0000,0000,0043,
  ,0000,6500,0000,0000,0044,
  ,0000,1520,0000,0000,0045,
  ,0000,1760,0000,0000,0046,
  ,0000,6740,0000,0000,0047,
  ,0000,6140,0000,0000,0060,
  ,0000,1160,0000,0000,0061,
  ,0000,1320,0000,0000,0062,
  ,0000,6300,0000,0000,0063,
  ,0000,1200,0000,0000,0064,
  ,0000,6220,0000,0000,0065,
  ,0000,6060,0000,0000,0066,
  ,0000,1040,0000,0000,0067,
  ,0000,2620,0000,0000,0100,
  ,0000,5600,0000,0000,0101,
  ,0000,5440,0000,0000,0102,
  ,0000,2460,0000,0000,0103,
  ,0000,5560,0000,0000,0104,
  ,0000,2540,0000,0000,0105,
  ,0000,2700,0000,0000,0106,
  ,0000,5720,0000,0000,0107,
  ,0000,5120,0000,0000,0120,
  ,0000,2100,0000,0000,0121,
  ,0000,2340,0000,0000,0122,
  ,0000,5360,0000,0000,0123,
  ,0000,2260,0000,0000,0124,
  ,0000,5240,0000,0000,0125,
  ,0000,5000,0000,0000,0126,
  ,0000,2020,0000,0000,0127,
  ,0000,4700,0000,0000,0140,
  ,0000,3720,0000,0000,0141,
  ,0000,3560,0000,0000,0142,
  ,0000,4540,0000,0000,0143,
  ,0000,3440,0000,0000,0144,
  ,0000,4460,0000,0000,0145,
  ,0000,4620,0000,0000,0146,
  ,0000,3600,0000,0000,0147,
  ,0000,3000,0000,0000,0160,
  ,0000,4020,0000,0000,0161,
  ,0000,4260,0000,0000,0162,
  ,0000,3240,0000,0000,0163,
  ,0000,4340,0000,0000,0164,
  ,0000,3360,0000,0000,0165,
  ,0000,3120,0000,0000,0166,
  ,0000,4100,0000,0000,0167,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97T -  GENERATE COMPARE DATA PATTERNS PART ONE 
   MODULE MSM97U,DESM(171,211)LOCK
*** MSM97U - GENERATE COMPARE DATA PATTERNS PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE SECOND COMPARE DATA PATTERNS FOR MULTIPLE BIT ERROR
*         DETECTION READ SYNDROME ENABLED.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97U - GENERATE COMPARE DATA PATTERNS PART II 
* 
   DATA (OB(0),CON) 0000,4400,0000,0000,0200, 
  ,0000,3420,0000,0000,0201,
  ,0000,3660,0000,0000,0202,
  ,0000,4640,0000,0000,0203,
  ,0000,3740,0000,0000,0204,
  ,0000,4760,0000,0000,0205,
  ,0000,4520,0000,0000,0206,
  ,0000,3500,0000,0000,0207,
  ,0000,3300,0000,0000,0220,
  ,0000,4320,0000,0000,0221,
  ,0000,4160,0000,0000,0222,
  ,0000,3140,0000,0000,0223,
  ,0000,4040,0000,0000,0224,
  ,0000,3060,0000,0000,0225,
  ,0000,3220,0000,0000,0226,
  ,0000,4200,0000,0000,0227,
  ,0000,2520,0000,0000,0240,
  ,0000,5500,0000,0000,0241,
  ,0000,5740,0000,0000,0242,
  ,0000,2760,0000,0000,0243,
  ,0000,5660,0000,0000,0244,
  ,0000,2640,0000,0000,0245,
  ,0000,2400,0000,0000,0246,
  ,0000,5420,0000,0000,0247,
  ,0000,5220,0000,0000,0260,
  ,0000,2200,0000,0000,0261,
  ,0000,2040,0000,0000,0262,
  ,0000,5060,0000,0000,0263,
  ,0000,2160,0000,0000,0264,
  ,0000,5140,0000,0000,0265,
  ,0000,5300,0000,0000,0266,
  ,0000,2320,0000,0000,0267,
  ,0000,1540,0000,0000,0300,
  ,0000,6560,0000,0000,0301,
  ,0000,6720,0000,0000,0302,
  ,0000,1700,0000,0000,0303,
  ,0000,6600,0000,0000,0304,
  ,0000,1620,0000,0000,0305,
  ,0000,1460,0000,0000,0306,
  ,0000,6440,0000,0000,0307,
  ,0000,6240,0000,0000,0320,
  ,0000,1260,0000,0000,0321,
  ,0000,1020,0000,0000,0322,
  ,0000,6000,0000,0000,0323,
  ,0000,1100,0000,0000,0324,
  ,0000,6120,0000,0000,0325,
  ,0000,6360,0000,0000,0326,
  ,0000,1340,0000,0000,0327,
  ,0000,7460,0000,0000,0340,
  ,0000,0440,0000,0000,0341,
  ,0000,0600,0000,0000,0342,
  ,0000,7620,0000,0000,0343,
  ,0000,0720,0000,0000,0344,
  ,0000,7700,0000,0000,0345,
  ,0000,7540,0000,0000,0346,
  ,0000,0560,0000,0000,0347,
  ,0000,0360,0000,0000,0360,
  ,0000,7340,0000,0000,0361,
  ,0000,7100,0000,0000,0362,
  ,0000,0120,0000,0000,0363,
  ,0000,7020,0000,0000,0364,
  ,0000,0240,0000,0000,0366,
  ,0000,7260,0000,0000,0367,
  ,0000,1360,0000,0000,0400,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97U -  GENERATE COMPARE DATA PATTERNS PART TWO 
   MODULE MSM97V,DESM(171,211)LOCK
*** MSM97V - GENERATE COMPARE DATA PATTERNS PART THREE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE THIRD COMPARE DATA PATTERNS FOR MULTIPLE BIT ERROR 
*         DETECTION READ SYNDROME ENABLED.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97V - GENERATE COMPARE DATA PATTERNS PART III
* 
   DATA (OB(0),CON) 0000,1140,0000,0000,1000, 
  ,0000,1120,0000,0000,2000,
  ,0000,1300,0000,0000,3400,
  ,0000,1060,0000,0001,0000,
  ,0000,1240,0000,0001,1400,
  ,0000,1220,0000,0001,2400,
  ,0000,2360,0000,0020,0000,
  ,0000,2140,0000,0040,0000,
  ,0000,2120,0000,0100,0000,
  ,0000,2300,0000,0160,0000,
  ,0000,2060,0000,0400,0000,
  ,0000,2240,0000,0460,0000,
  ,0000,2220,0000,0520,0000,
  ,0000,4360,0001,0000,0000,
  ,0000,4140,0002,0000,0000,
  ,0000,4120,0004,0000,0000,
  ,0000,4300,0007,0000,0000,
  ,0000,4060,0020,0000,0000,
  ,0000,4240,0023,0000,0000,
  ,0000,4220,0025,0000,0000,
  ,0000,7420,0400,0000,0000,
  ,0000,3020,1000,0000,0000,
  ,0000,2420,2000,0000,0000,
  ,0000,6020,3400,0000,0000,
  ,0000,1421,0000,0000,0000,
  ,0000,5021,1400,0000,0000,
  ,0000,4421,2400,0000,0000,
  ,0000,7600,0000,0000,0000,
  ,0000,3200,0000,0000,0000,
  ,0000,2600,0000,0000,0000,
  ,0000,6200,0000,0000,0000,
  ,0000,1600,0000,0000,0000,
  ,0000,5200,0000,0000,0000,
  ,0000,4600,0000,0000,0000,
  ,0001,7500,0000,0000,0000,
  ,0002,3100,0000,0000,0000,
  ,0004,2500,0000,0000,0000,
  ,0007,6100,0000,0000,0000,
  ,0020,1500,0000,0000,0000,
  ,0023,5100,0000,0000,0000,
  ,0025,4500,0000,0000,0000,
  ,0400,7440,0000,0000,0000,
  ,1000,3040,0000,0000,0000,
  ,2000,2440,0000,0000,0000,
  ,3400,6040,0000,0000,0000,
  ,0000,4440,0000,0005,6535,
  ,0000,5040,0000,0006,6555,
  ,0000,0760,0000,0015,0320,
  ,0000,0700,0000,0015,1723,
  ,0000,0640,0000,0015,2725,
  ,0000,0620,0000,0015,3326,
  ,0000,0540,0000,0015,4731,
  ,0000,0520,0000,0015,5332,
  ,0000,0460,0000,0015,6334,
  ,0000,1560,0000,0017,4370,
  ,0000,1440,0000,0017,6775,
  ,0000,7760,0000,0000,0000,
  ,0000,7760,0000,0000,0000,
  ,0000,7760,0000,0000,0000,
  ,0000,7760,0000,0000,0000,
  ,0000,7760,0000,0000,0000,
  ,0000,7760,0000,0000,0000,
  ,0000,7760,0000,0000,0000,
  ,0000,7760,0000,0000,0000,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97V -  GENERATE COMPARE DATA PATTERNS PART THREE 
   MODULE MSM97W,DESM(171,211)LOCK
*** MSM97W - GENERATE COMPARE DATA PATTERNS PART ONE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE FIRST COMPARE DATA PATTERNS FOR READ CHECKBITS.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97W - GENERATE COMPARE DATA PATTERNS PART I
* 
   DATA (OB(0),CON) 0377,0000,0000,0000,0000, 
  ,0037,0000,0000,0000,0001,
  ,0026,0000,0000,0000,0002,
  ,0366,0000,0000,0000,0003,
  ,0025,0000,0000,0000,0004,
  ,0365,0000,0000,0000,0005,
  ,0374,0000,0000,0000,0006,
  ,0034,0000,0000,0000,0007,
  ,0023,0000,0000,0000,0020,
  ,0363,0000,0000,0000,0021,
  ,0372,0000,0000,0000,0022,
  ,0032,0000,0000,0000,0023,
  ,0371,0000,0000,0000,0024,
  ,0031,0000,0000,0000,0025,
  ,0020,0000,0000,0000,0026,
  ,0360,0000,0000,0000,0027,
  ,0032,0000,0000,0000,0040,
  ,0372,0000,0000,0000,0041,
  ,0363,0000,0000,0000,0042,
  ,0023,0000,0000,0000,0043,
  ,0360,0000,0000,0000,0044,
  ,0020,0000,0000,0000,0045,
  ,0031,0000,0000,0000,0046,
  ,0371,0000,0000,0000,0047,
  ,0366,0000,0000,0000,0060,
  ,0026,0000,0000,0000,0061,
  ,0037,0000,0000,0000,0062,
  ,0377,0000,0000,0000,0063,
  ,0034,0000,0000,0000,0064,
  ,0374,0000,0000,0000,0065,
  ,0365,0000,0000,0000,0066,
  ,0025,0000,0000,0000,0067,
  ,0031,0000,0000,0000,0100,
  ,0371,0000,0000,0000,0101,
  ,0360,0000,0000,0000,0102,
  ,0020,0000,0000,0000,0103,
  ,0363,0000,0000,0000,0104,
  ,0023,0000,0000,0000,0105,
  ,0032,0000,0000,0000,0106,
  ,0372,0000,0000,0000,0107,
  ,0365,0000,0000,0000,0120,
  ,0025,0000,0000,0000,0121,
  ,0034,0000,0000,0000,0122,
  ,0374,0000,0000,0000,0123,
  ,0037,0000,0000,0000,0124,
  ,0377,0000,0000,0000,0125,
  ,0366,0000,0000,0000,0126,
  ,0026,0000,0000,0000,0127,
  ,0374,0000,0000,0000,0140,
  ,0034,0000,0000,0000,0141,
  ,0025,0000,0000,0000,0142,
  ,0365,0000,0000,0000,0143,
  ,0026,0000,0000,0000,0144,
  ,0366,0000,0000,0000,0145,
  ,0377,0000,0000,0000,0146,
  ,0037,0000,0000,0000,0147,
  ,0020,0000,0000,0000,0160,
  ,0360,0000,0000,0000,0161,
  ,0371,0000,0000,0000,0162,
  ,0031,0000,0000,0000,0163,
  ,0372,0000,0000,0000,0164,
  ,0032,0000,0000,0000,0165,
  ,0023,0000,0000,0000,0166,
  ,0363,0000,0000,0000,0167,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97W -  GENERATE COMPARE DATA PATTERNS PART ONE 
   MODULE MSM97X,DESM(171,211)LOCK
*** MSM97X - GENERATE COMPARE DATA PATTERNS PART TWO
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE SECOND COMPARE DATA PATTERNS FOR READ CHECKBITS. 
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97X - GENERATE COMPARE DATA PATTERNS PART II 
* 
   DATA (OB(0),CON) 0020,0000,0000,0000,0200, 
  ,0360,0000,0000,0000,0201,
  ,0371,0000,0000,0000,0202,
  ,0031,0000,0000,0000,0203,
  ,0372,0000,0000,0000,0204,
  ,0032,0000,0000,0000,0205,
  ,0023,0000,0000,0000,0206,
  ,0363,0000,0000,0000,0207,
  ,0374,0000,0000,0000,0220,
  ,0034,0000,0000,0000,0221,
  ,0025,0000,0000,0000,0222,
  ,0365,0000,0000,0000,0223,
  ,0026,0000,0000,0000,0224,
  ,0366,0000,0000,0000,0225,
  ,0377,0000,0000,0000,0226,
  ,0037,0000,0000,0000,0227,
  ,0365,0000,0000,0000,0240,
  ,0025,0000,0000,0000,0241,
  ,0034,0000,0000,0000,0242,
  ,0374,0000,0000,0000,0243,
  ,0037,0000,0000,0000,0244,
  ,0377,0000,0000,0000,0245,
  ,0366,0000,0000,0000,0246,
  ,0026,0000,0000,0000,0247,
  ,0031,0000,0000,0000,0260,
  ,0371,0000,0000,0000,0261,
  ,0360,0000,0000,0000,0262,
  ,0020,0000,0000,0000,0263,
  ,0363,0000,0000,0000,0264,
  ,0023,0000,0000,0000,0265,
  ,0032,0000,0000,0000,0266,
  ,0372,0000,0000,0000,0267,
  ,0366,0000,0000,0000,0300,
  ,0026,0000,0000,0000,0301,
  ,0037,0000,0000,0000,0302,
  ,0377,0000,0000,0000,0303,
  ,0034,0000,0000,0000,0304,
  ,0374,0000,0000,0000,0305,
  ,0365,0000,0000,0000,0306,
  ,0025,0000,0000,0000,0307,
  ,0032,0000,0000,0000,0320,
  ,0372,0000,0000,0000,0321,
  ,0363,0000,0000,0000,0322,
  ,0023,0000,0000,0000,0323,
  ,0360,0000,0000,0000,0324,
  ,0020,0000,0000,0000,0325,
  ,0031,0000,0000,0000,0326,
  ,0371,0000,0000,0000,0327,
  ,0023,0000,0000,0000,0340,
  ,0363,0000,0000,0000,0341,
  ,0372,0000,0000,0000,0342,
  ,0032,0000,0000,0000,0343,
  ,0371,0000,0000,0000,0344,
  ,0031,0000,0000,0000,0345,
  ,0020,0000,0000,0000,0346,
  ,0360,0000,0000,0000,0347,
  ,0377,0000,0000,0000,0360,
  ,0037,0000,0000,0000,0361,
  ,0026,0000,0000,0000,0362,
  ,0366,0000,0000,0000,0363,
  ,0025,0000,0000,0000,0364,
  ,0374,0000,0000,0000,0366,
  ,0034,0000,0000,0000,0367,
  ,0057,0000,0000,0000,0400,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97X -  GENERATE COMPARE DATA PATTERNS PART TWO 
   MODULE MSM97Y,DESM(171,211)LOCK
*** MSM97Y - GENERATE COMPARE DATA PATTERNS PART THREE
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE THIRD COMPARE DATA PATTERNS FOR READ CHECKBITS.
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97Y - GENERATE COMPARE DATA PATTERNS PART III
* 
   DATA (OB(0),CON) 0046,0000,0000,0000,1000, 
  ,0045,0000,0000,0000,2000,
  ,0054,0000,0000,0000,3400,
  ,0043,0000,0000,0001,0000,
  ,0052,0000,0000,0001,1400,
  ,0051,0000,0000,0001,2400,
  ,0117,0000,0000,0020,0000,
  ,0106,0000,0000,0040,0000,
  ,0105,0000,0000,0100,0000,
  ,0114,0000,0000,0160,0000,
  ,0103,0000,0000,0400,0000,
  ,0112,0000,0000,0460,0000,
  ,0111,0000,0000,0520,0000,
  ,0217,0000,0001,0000,0000,
  ,0206,0000,0002,0000,0000,
  ,0205,0000,0004,0000,0000,
  ,0214,0000,0007,0000,0000,
  ,0203,0000,0020,0000,0000,
  ,0212,0000,0023,0000,0000,
  ,0211,0000,0025,0000,0000,
  ,0361,0000,0400,0000,0000,
  ,0141,0000,1000,0000,0000,
  ,0121,0000,2000,0000,0000,
  ,0301,0000,3400,0000,0000,
  ,0061,0001,0000,0000,0000,
  ,0241,0001,1400,0000,0000,
  ,0221,0001,2400,0000,0000,
  ,0370,0000,0000,0000,0000,
  ,0150,0000,0000,0000,0000,
  ,0130,0000,0000,0000,0000,
  ,0310,0000,0000,0000,0000,
  ,0070,0000,0000,0000,0000,
  ,0250,0000,0000,0000,0000,
  ,0230,0000,0000,0000,0000,
  ,0364,0000,0000,0000,0000,
  ,0144,0000,0000,0000,0000,
  ,0124,0000,0000,0000,0000,
  ,0304,0000,0000,0000,0000,
  ,0064,0000,0000,0000,0000,
  ,0244,0000,0000,0000,0000,
  ,0224,0000,0000,0000,0000,
  ,0762,0000,0000,0000,0000,
  ,1142,0000,0000,0000,0000,
  ,2122,0000,0000,0000,0000,
  ,3702,0000,0000,0000,0000,
  ,0317,0000,0000,0005,6535,
  ,0317,0000,0000,0006,6555,
  ,0317,0000,0000,0015,0320,
  ,0317,0000,0000,0015,1723,
  ,0317,0000,0000,0015,2725,
  ,0317,0000,0000,0015,3326,
  ,0317,0000,0000,0015,4731,
  ,0317,0000,0000,0015,5332,
  ,0317,0000,0000,0015,6334,
  ,0317,0000,0000,0017,4370,
  ,0317,0000,0000,0017,6775,
  ,0377,0000,0000,0000,0000,
  ,0377,0000,0000,0000,0000,
  ,0377,0000,0000,0000,0000,
  ,0377,0000,0000,0000,0000,
  ,0377,0000,0000,0000,0000,
  ,0377,0000,0000,0000,0000,
  ,0377,0000,0000,0000,0000,
  ,0377,0000,0000,0000,0000,
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97Y -  GENERATE COMPARE DATA PATTERNS PART THREE 
   MODULE MSM97Z,DESM(171,211)LOCK
*** MSM97Z - GENERATE WRITE DATA PATTERNS FOR ERROR LOG 
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         GENERATE WRITE DATA PATTERNS FOR ERROR LOG MODULES. 
* 
*    1.2  METHOD- 
* 
*         1.  GENERATE DATA PATTERNS FOR VARIOUS MODULES. 
*         2.  EXIT TO THE CALLING MODULE. 
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTER AND BUFFER USAGE 
* 
*         OB  = OUTPUT BUFFER 
* 
*    2.3  SUBMODULES REFERENCED - 
* 
*         NONE  - 
* 
* -------DATA DIVISION
* 
* 
0  FORMAT MSM97Z - GENERATE WRITE DATA PATTERNS ERRLOG
* 
   DATA (OB(200),CON) 0000,0001,3000,0000,0000,   *FOR SYNDROME CODE 1
   DATA (OB(205),CON) 7400,0000,0000,0003,0461,   *FOR SYNDROME CODE 376
   DATA (OB(212),CON) 0000,0001,3000,0000,0000,   *FOR SYNDROME CODE 1
   DATA (OB(217),CON) 7400,0000,0000,2445,1502,   *FOR SYNDROME CODE 2
   DATA (OB(224),CON) 0026,0000,0000,0000,0000,   *FOR SYNDROME CODE 4
   DATA (OB(231),CON) 0000,0540,0000,0000,0000,   *FOR SYNDROME CODE 10 
   DATA (OB(236),CON) 7400,0000,0000,0015,7737,   *FOR SYNDROME CODE 20 
   DATA (OB(243),CON) 0000,0000,0000,0001,3000,   *FOR SYNDROME CODE 40 
   DATA (OB(250),CON) 0000,0000,0000,0540,0000,   *FOR SYNDROME CODE 100
   DATA (OB(255),CON) 0000,0000,0026,0000,0000,   *FOR SYNDROME CODE 200
   DATA (OB(262),CON) 7400,0000,0000,0003,0461,   *FOR SYNDROME CODE 376
   DATA (OB(267),CON) 7400,0000,0000,0003,1062,   *FOR SYNDROME CODE 375
   DATA (OB(274),CON) 7400,0000,0000,0003,2064,   *FOR SYNDROME CODE 373
   DATA (OB(301),CON) 7400,0000,0000,0003,4070,   *FOR SYNDROME CODE 367
   DATA (OB(306),CON) 7400,0000,0000,0002,0040,   *FOR SYNDROME CODE 357
   DATA (OB(313),CON) 7400,0000,0000,0001,0020,   *FOR SYNDROME CODE 337
   DATA (OB(320),CON) 7400,0000,0000,0007,0160,   *FOR SYNDROME CODE 277
   DATA (OB(325),CON) 7400,0000,0000,0013,0260,   *FOR SYNDROME CODE 177
   DATA (OB(332),CON) 7400,0000,0000,0157,7737,   *FOR DOUBLE ERROR TESTING 
* 
* -------MODULE INITIALIZATION
* 
20 PASS 
   EXIT 
* 
   END 20 
COMPILE   - MSM97Z -  GENERATE WRITE DATA PATTERNS ERROR LOG
   MODULE MSM98A,DESM(171,211)LOCK
*** MSM98A - 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 MSM98H 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 
* 
*         MSM98B - POST COMMAND ABORTED DISPLAY 
*         MSM98H - ERROR DISPLAY
* 
* -------DATA DIVISION
* 
1  FORMAT MSM*D ABORTED ON .FLAG REGISTER 18BIT RDYSEL. 
2  FORMAT MSM*D ABORTED ON .FLAG REGISTER 18BIT SELSET. 
3  FORMAT MSM*D ABORTED ON .FLAG REGISTER 18BIT STATUS. 
4  FORMAT MSM*D ABORTED ON .FLAG REGISTER 18BIT SELCLR. 
5  FORMAT MSM*D ABORTED ON .FLAG REGISTER 4BIT RDYSEL.
6  FORMAT MSM*D ABORTED ON .FLAG REGISTER 4BIT SELSET.
7  FORMAT MSM*D ABORTED ON .FLAG REGISTER 4BIT STATUS.
10 FORMAT MSM*D ABORTED ON .FLAG REGISTER 4BIT SELCLR.
11 FORMAT MSM*D ABORTED ON .FLAG REGISTER 4BIT ZERSEL.
12 FORMAT MSM*D ABORTED ON .FLAG REGISTER 4BIT EQUSTA.
13 FORMAT MSM*D ABORTED ON .READ FROM ESM.
14 FORMAT MSM*D ABORTED ON .READ ONE RECORD FROM ESM. 
15 FORMAT MSM*D ABORTED ON .READ TO CMDMA FROM ESM. 
16 FORMAT MSM*D ABORTED ON .READ FAST TO CMDMA FROM ESM.
17 FORMAT MSM*D ABORTED ON .READPB. 
* 
* -------POST COMMAND ABORTED 
* 
20 IF (B14.GT.17) EXIT TO 98B       *NEXT COMMAND ERROR PROCESSOR 
   MSG B14 (B15) TO LINE 2          *COMMAND ABORTED MSG
   MSG EM TO LINE 3                 *ERROR DESCRIPTION
   B10=4                            *DISPLAY LINE 
   EXIT TO 98H                      *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE   - MSM98A -  POST COMMAND ABORTED DISPLAY
   MODULE MSM98B,DESM(171,211)LOCK
*** MSM98B - 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 MSM98H 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 
* 
*         MSM98H - ERROR DISPLAY
* 
* -------DATA DIVISION
* 
1  FORMAT MSM*D ABORTED ON .REL.
2  FORMAT MSM*D ABORTED ON .RES LSP.
3  FORMAT MSM*D ABORTED ON .STATUS ESM. 
4  FORMAT MSM*D ABORTED ON .STATUS ERROR. 
5  FORMAT MSM*D ABORTED ON .STATUS OPERATION. 
6  FORMAT MSM*D ABORTED ON .WRITE TO ESM. 
7  FORMAT MSM*D ABORTED ON .WRITE FROM CMDMA TO ESM.
10 FORMAT MSM*D ABORTED ON .WRITE FAST FROM CMDMA TO ESM. 
11 FORMAT MSM*D ABORTED ON .WRITEPB.
12 FORMAT MSM*D ABORTED ON .UNKNOWN COMMAND.
* 
* -------POST COMMAND ABORTED 
* 
20 B14 = B14 - 17B                  *MINUS THE COMMANDS IN THE 1ST PROCESSOR
   IF (B14.GT.11) MSG 12 TO LINE 2  *COMMAND UNKNOWN MESSAGE
   IF (B14.GT.11) GOTO 30           *COMMAND UNKNOWN EXIT 
   MSG B14 (B15) TO LINE 2          *COMMAND ABORTED MSG
30 MSG EM TO LINE 3                 *ERROR DESCRIPTION
   B10=4                            *DISPLAY LINE 
   EXIT TO 98H                      *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE   - MSM98B -  POST COMMAND ABORTED DISPLAY
   MODULE MSM98C,DESM(171,211)LOCK
*** MSM98C - POST COMMAND FAILED DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         START BUILDING THE ERROR DISPLAY FOR PRODUCT OVERLAY  COMMAND 
*         FAILURE ERRORS BY PLACING THE NAME OF THE COMMAND FAILED  AND 
*         THE ERROR DESCRIPTION IN THE ERROR DISPLAY. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE COMMAND FAILED AND THE ERROR DESCRIPTION. 
*         2.  EXIT TO MODULE MSM98H TO COMPLETE ERROR DISPLAY.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND FAILED. 
* 
*    2.2  SUBMODULES USED 
* 
*         MSM98D - POST COMMAND FAILED DISPLAY
*         MSM98H - ERROR DISPLAY
* 
* -------DATA DIVISION
* 
1  FORMAT MSM*D FAILED ON .18 BIT READY SELECT COMMAND. 
2  FORMAT MSM*D FAILED ON .18 BIT SELECTIVE SET COMMAND.
3  FORMAT MSM*D FAILED ON .18 BIT STATUS COMMAND. 
4  FORMAT MSM*D FAILED ON .18 BIT SELECTIVE CLEAR COMMAND.
5  FORMAT MSM*D FAILED ON .4 BIT READY SELECT COMMAND.
6  FORMAT MSM*D FAILED ON .4 BIT SELECTIVE SET COMMAND. 
7  FORMAT MSM*D FAILED ON .4 BIT STATUS COMMAND.
10 FORMAT MSM*D FAILED ON .4 BIT SELECTIVE CLEAR COMMAND. 
11 FORMAT MSM*D FAILED ON .4 BIT ZERO SELECT COMMAND. 
12 FORMAT MSM*D FAILED ON .4 BIT EQUALITY STATUS COMMAND. 
13 FORMAT MSM*D FAILED ON .READ FROM ESM. 
14 FORMAT MSM*D FAILED ON .READ ONE RECORD FROM ESM.
15 FORMAT MSM*D FAILED ON .READ TO CMDMA FROM ESM.
16 FORMAT MSM*D FAILED ON .READ FAST TO CMDMA FROM ESM. 
17 FORMAT MSM*D FAILED ON .READPB COMMAND.
* 
* -------POST COMMAND FAILED
* 
20 IF (B14.GT.17) EXIT TO 98D       *NEXT COMMAND ERROR PROCESSOR 
   MSG B14 (B15) TO LINE 2          *COMMAND FAILED MSG 
   B10=4                            *DISPLAY LINE 
   EXIT TO 98H                      *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE   - MSM98C -  POST COMMAND FAILED DISPLAY 
   MODULE MSM98D,DESM(171,211)LOCK
*** MSM98D - POST COMMAND FAILED DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         START BUILDING THE ERROR DISPLAY FOR PRODUCT OVERLAY  COMMAND 
*         FAILURE ERRORS BY PLACING THE NAME OF THE COMMAND FAILED AND
*         THE ERROR DESCRIPTION IN THE ERROR DISPLAY. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY THE COMMAND FAILED AND THE ERROR DESCRIPTION. 
*         2.  EXIT TO MODULE MSM98H TO COMPLETE ERROR DISPLAY.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND FAILED. 
* 
*    2.2  SUBMODULES USED 
* 
*         MSM98H - ERROR DISPLAY
* 
* -------DATA DIVISION
* 
1  FORMAT MSM*D FAILED ON .REL. 
2  FORMAT MSM*D FAILED ON .RES LSP. 
3  FORMAT MSM*D FAILED ON .STATUS ESM.
4  FORMAT MSM*D FAILED ON .STATUS ERROR.
5  FORMAT MSM*D FAILED ON .STATUS OPERATION.
6  FORMAT MSM*D FAILED ON .WRITE TO ESM.
7  FORMAT MSM*D FAILED ON .WRITE FROM CMDMA TO ESM. 
10 FORMAT MSM*D FAILED ON .WRITE FAST FROM CMDMA TO ESM.
11 FORMAT MSM*D FAILED ON .WRITEPB COMMAND. 
12 FORMAT MSM*D FAILED ON .UNKNOWN COMMAND. 
* 
* -------POST COMMAND FAILED
* 
20 B14 = B14 - 17B                  *MINUS THE COMMANDS IN THE 1ST PROCESSOR
   IF (B14.GT.11) MSG 12 TO LINE 2  *COMMAND UNKNOWN MESSAGE
   IF (B14.GT.11) GOTO 30           *COMMAND UNKNOWN EXIT 
   MSG B14 (B15) TO LINE 2          *COMMAND FAILED MSG 
30 B10=4                            *DISPLAY LINE 
   EXIT TO 98H                      *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE   - MSM98D -  POST COMMAND FAILED DISPLAY 
   MODULE MSM98G,DESM(171,211)LOCK
*** MSM98G - 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 MSM98H TO COMPLETE ERROR DISPLAY.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS ZERO INDICATING DATA COMPARE ERROR. 
*         REGISTER BA  CONTAINS THE NUMBER OF THE WORD WHICH CAUSED 
*                      THE ERROR. 
* 
*    2.2  SUBMODULES USED 
* 
*         MSM98H - ERROR DISPLAY
* 
* -------DATA DIVISION
* 
1  FORMAT ABORTED ON DATA COMPARE ERROR 
2  FORMAT         WORD  *OCTB 
* 
* -------POST ERROR MESSAGES
* 
20 MSG 1 TO LINE 3                  *DATA COMPARE ERROR MESSAGE 
   MSG 2 (BA) TO LINE 4             *NUMBER OF WORD IN ERROR
   B10=6                            *DISPLAY LINE 
   EXIT TO 98H                      *COMPLETE ERROR DISPLAY 
* 
   END 20 
COMPILE   - MSM98G -  POST COMPARE ERROR DISPLAY
   MODULE MSM98H,DESM(171,211)LOCK
*** MSM98H - 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, LSF, WC, AND WT REGISTERS.
*         3.  DISPLAY CONTENTS OF B REGISTERS.
*         4.  IF A DATA COMPARE ERROR,  DISPLAY EIGHT  WORDS  OF  INPUT 
*             BUFFER AND OUTPUT BUFFER, BEGINNING WITH WORD THAT CAUSED 
*             THE ERROR.
*         5.  IF A PRODUCT OVERLAY COMMAND ABORT, DISPLAY ESM, OPERATIONAL
*             AND ERROR STATUS. 
*         6.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*         REGISTER B14 CONTAINS THE NUMBER OF COMMAND ABORTED 
*         REGISTER BA CONTAINS THE NUMBER OF WORD AT WHICH DATA COMPARE 
*                     ERROR OCCURRED
* 
*    2.2  REGISTERS USED
* 
*         B10 - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* -------DATA DIVISION
* 
0  FORMAT MSM - STORNET/ESM II SUBSYSTEM MEMORY TEST
1  FORMAT MSM*D SUBSYSTEM STATUS ERROR ACT=*OCTB EXP=*OCTB
2  FORMAT EC=*OCTB  EA=*OCTB  LF=*OCTB  LSF=*OCTB 
3  FORMAT WC=*OCTB  WT=*OCTB
4  FORMAT NUMBER OF CM BYTES TRANSFERRED = *OCTB
5  FORMAT IB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
6  FORMAT OB (0-7)  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
7  FORMAT B0-B7  =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
10 FORMAT B8-B15 =  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT 
11 FORMAT OPERATION STAT = *OCT*OCTB  ERR STAT = *OCT*OCTB
12 FORMAT             SUBSYSTEM STATUS = *OCTB
13 FORMAT             ADDRESS=*O*OCTB    DATA=*OB 
14 FORMAT        18 BIT FLAG REGISTER  DATA=*OCT*OCT
15 FORMAT     4 BIT FLAG REGISTER CHIP=*OB COL=*OB ROW=*OB
16 FORMAT            STARTING ADDRESS = *OCT*OCTB 
17 FORMAT MEMORY STARTING CHIP=*OB COL=*OCB ROW=*OCB SCN=*OB
20 FORMAT    BANK=*OB CHIP=*OB COL=*OCB ROW=*OCB SCN=*OB
21 FORMAT---------------------------------------------------
* 
* -------POST MESSAGES
* 
24 MSG 0 TO LINE 0                  *TEST TITLE 
   MSG 2 (EC,EA,LF,SB(21)) TO LINE B10
   MSG 3 (WC,WT) TO LINE B10+1
   B10=B10+3
* 
* -------DISPLAY B REGISTERS
* 
   MSG 7 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B10
   MSG 10 (B8,B9,B10,B11.B12,B13,B14,B15) TO LINE B10+1 
* 
* -------DISPLAY BUFFERS
* 
   B10=B10+2
   MSG 5 10B WORDS FROM IB(BA) TO LINE B10
   MSG 6 10B WORDS FROM OB(BA) TO LINE B10+1
   B10=B10+3
   IF(B14.EQ.0) GOTO 30             *IF DATA COMPARE ERROR
   IF(EC.LT.4000B) MSG EM (B15,SB,B3) TO LINE B10 
   IF(EC.LT.4000B) B10=B10+1
30 IF(B14.EQ.0) GOTO 35             *IF DATA COMPARE ERROR
   IF(EC.GT.4) GOTO 46              *IF NOT STATUS ERROR
   IF(EC.EQ.4) GOTO 34
   IF(EC.EQ.3) GOTO 33
   IF(EC.EQ.2) GOTO 32
   IF(EC.EQ.1) GOTO 31
31 OB(2) = B2.AND.17
   OB(4) = B2.RS.4
   OB(1) = B1.AND.17.LS.8 
   OB(1) = OB(1)+OB(4)
   OB(0) = B1.RS.4
   GOTO 36
32 OB(2) = B2.AND.17
   OB(4) = B2.RS.4
   OB(1) = B6.AND.17.LS.8 
   OB(1) = OB(1)+OB(4)
   OB(0) = B6.RS.4
   GOTO 36
33 OB(2) = B12.AND.17 
   OB(4) = B12.RS.4 
   OB(1) = B7.AND.17.LS.8 
   OB(1) = OB(1)+OB(4)
   OB(0) = B7.RS.4
   GOTO 36
34 MSG 14 (B1,B2) TO LINE B10 
   GOTO 46
35 IF(DC.EQ.171) GOTO 40                    *IF ESM II
   IB(503) = B2.AND.7 
   IB(502) = B2.RS.3
   IB(501) = B1.AND.777B
   IB(500) = B1.RS.9
   MSG 16 (B1,B2) TO LINE B10 
   MSG 17 4 WORDS FROM IB(500) TO LINE B10+1
   GOTO 46
36 OB(5) = OB(1).AND.37 
   OB(4) = OB(1).RS.5.AND.37
   OB(6) = OB(1).RS.10D 
   OB(3) = OB(0).LS.2 
   OB(3) = OB(3)+OB(6)
   MSG 13 3 WORDS FROM OB(0) TO LINE B10
   MSG 15 3 WORDS FROM OB(3) TO LINE B10+1
   GOTO 46
40 IB(504) = B2.AND.7 
   IB(503) = B2.AND.3777.RS.3 
   IB(501) = B2.RS.11 
   IB(502) = B1.AND.177.LS.1
   IB(502) = IB(501) + IB(502)
   IB(501) = B1.AND.200B.RS.7 
   IB(500) = B1.RS.8
   MSG 16 (B1,B2) TO LINE B10 
   MSG 20 5 WORDS FROM IB(500) TO LINE B10+1
   GOTO 46
* 
* -------DISPLAY STATUS 
* 
46 B10=B10+2
50 IF(SB(15).EQ.0) GOTO 60          *NOT CIO CHANNEL
   MSG 4 (SB(7)) TO LINE B10
   MSG 11 (SB(1),SB(2),SB(3),SB(4)) TO LINE B10+1 
   B10=B10+2
60 MSG 12 (SB,) TO LINE B10       *SUBSYSTEM STATUS 
* 
* -------EXIT THE MODULE
* 
70 MSG 21 TO LINE 23
   PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 24 
COMPILE   - MSM98H -  ERROR DISPLAY 
   MODULE MSM98I,DESM(171,211)LOCK
*** MSM98I - ERROR DISPLAY FOR ERROR LOG MODULES
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         COMPLETE THE ERROR DISPLAY IN THE CASE OF A WRITE COMMAND 
*         ABORT IN THE ERROR TESTING MODULES. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE. 
*         2.  DISPLAY ERROR MESSAGE INDICATED BY IB(500-502) WHICH IS THE 
*             LAST FUNCTION ISSUED TO MSD.
*         3.  DISPLAY CONTENTS OF B REGISTERS.
*         4.  DISPLAY FIVE WORDS OF OUTPUT BUFFER BEGINNING WITH THE FIRST
*             WORD OUTPUTTED. 
*         5.  PICTURE AND HALT. 
*         6.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTERS USED
* 
*         B10 - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         MSM98K - COMPLETE ERROR DISPLAY 
* 
* -------DATA DIVISION
* 
0  FORMAT MSM*D ERROR LOG NOT CLEAR AFTER RESET 
1  FORMAT MSM*D WRITE ABORT ERROR ON ERROR LOGGING
2  FORMAT ERROR LOG COUNTER DID NOT INCREMENT BY ONE
3  FORMAT ERROR LOG COUNTER INCREMENTED SHOULD NOT HAVE 
4  FORMAT ERROR LOG COUNTER DID NOT EQUAL TO 44B
5  FORMAT ERROR LOG COUNTER DID NOT EQUAL MAXIMUM 
7  FORMAT SINGLE ERROR COUNT DID NOT EQUAL ZERO 
10 FORMAT DOUBLE ERROR *D WAS NOT ENTERED AND VERIFIED
11 FORMAT SINGLE ERROR *D WAS NOT ENTERED AND VERIFIED
12 FORMAT SINGLE ERROR *D COUNT NOT INCREMENTED BY ONE
13 FORMAT SINGLE ERROR *D COUNT INCREMENTED SHOULD NOT HAVE 
14 FORMAT SINGLE ERROR COUNTER FULL STATUS NOT DETECTED 
15 FORMAT SINGLE ERROR ERROR LOG FULL STATUS NOT DETECTED 
16 FORMAT DOUBLE ERROR ERROR LOG FULL STATUS NOT DETECTED 
17 FORMAT B0 - B7  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
20 FORMAT B8 - B15 = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
21 FORMAT IB (0-4) = *OCT *OCT *OCT *OCT *OCT 
22 FORMAT OB (0-4) = *OCT *OCT *OCT *OCT *OCT 
23 FORMAT MSM - STORNET /ESM II SUBSYSTEM MEMORY TEST 
* 
* -------POST MESSAGES
* 
30 MSG 23 TO LINE 0                 *TEST TITLE 
   B10 = 3
   B7 = IB (501)
   B7 = B7 + 1                      *INCREMENT FOR CORRECT ERROR COUNTER
   B8 = IB (502)
   MSG 1 (B15) TO LINE B10
   MSG B8 (B7) TO LINE B10+1
   B10=B10+3
* 
* -------DISPLAY B REGISTERS
* 
   MSG 17 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B10 
   MSG 20 (B8,B9,B10,B11.B12,B13,B14,B15) TO LINE B10+1 
* 
* -------DISPLAY BUFFERS
* 
   B10=B10+2
   MSG 21 5B WORDS FROM IB TO LINE B10+1
   MSG 22 5B WORDS FROM OB(B9) TO LINE B10+2
   B10=B10+3
* 
* -------EXIT THE MODULE
* 
70 EXIT TO 98K                    *COMPLETE DISPLAY 
* 
   END 30 
COMPILE   - MSM98I -  ERROR DISPLAY FOR ERROR LOGGING MODULES 
   MODULE MSM98J,DESM(171,211)LOCK
*** MSM98J - ERROR DISPLAY FOR FORCE ERROR MODULES
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         COMPLETE THE ERROR DISPLAY IN THE CASE OF A WRITE COMMAND 
*         ABORT IN THE FORCE ERROR TESTING MODULES. 
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY TEST TITLE. 
*         2.  DISPLAY ERROR MESSAGE INDICATED BY IB(500-502) WHICH IS THE 
*             LAST FUNCTION ISSUED TO MSD.
*         3.  DISPLAY CONTENTS OF B REGISTERS.
*         4.  DISPLAY FIVE WORDS OF OUTPUT BUFFER BEGINNING WITH THE FIRST
*             WORD OUTPUTTED. 
*         5.  PICTURE AND HALT. 
*         6.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTERS USED
* 
*         B10 - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         MSM98K - COMPLETE ERROR DISPLAY 
* 
* -------DATA DIVISION
* 
0  FORMAT MSM*D SDP STATUS WD 2 NOT ZERO AFTER CLEAR STATUS 
1  FORMAT SDP MEMORY GBA STATUS NOT SET SHOULD BE 
2  FORMAT SDP MULTIPLE WRITE VALID STATUS NOT SET SHOULD BE 
3  FORMAT MSM*D ADDRESS PARITY BIT NOT SET IN STATUS
4  FORMAT         SUBSYSTEM STATUS = *OCTB
5  FORMAT MSM*D WRITE ABORT ERROR ON FORCE ERRORS 
17 FORMAT B0 - B7  = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
20 FORMAT B8 - B15 = *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
21 FORMAT IB (0-4) = *OCT *OCT *OCT *OCT *OCT 
22 FORMAT OB (0-4) = *OCT *OCT *OCT *OCT *OCT 
23 FORMAT MSM - STORNET/ESM II SUBSYSTEM MEMORY TEST
* 
* -------POST MESSAGES
* 
30 MSG 23 TO LINE 0                 *TEST TITLE 
   B10 = 3
   B7 = IB (501)
   B7 = B7 + 1                      *INCREMENT FOR CORRECT ERROR COUNTER
   B8 = IB (502)
   MSG 5 (B15) TO LINE B10
   IF (EC.EQ.6) GOTO 32             *SKIP IF LSP STATUS ERROR 
   MSG B8 (B7) TO LINE B10+1
   B10=B10+3
   GOTO 40
32 MSG EM (B15) TO LINE B10+1 
   MSG 4 (SB) TO LINE B10+2 
   B10=B10+4
* 
* -------DISPLAY B REGISTERS
* 
40 MSG 17 (B0,B1,B2,B3,B4,B5,B6,B7) TO LINE B10 
   MSG 20 (B8,B9,B10,B11.B12,B13,B14,B15) TO LINE B10+1 
* 
* -------DISPLAY BUFFERS
* 
   B10=B10+2
   MSG 21 5B WORDS FROM IB TO LINE B10+1
   MSG 22 5B WORDS FROM OB(B9) TO LINE B10+2
   B10=B10+3
* 
* -------EXIT THE MODULE
* 
70 EXIT TO 98K                    *COMPLETE DISPLAY 
* 
   END 30 
COMPILE   - MSM98J -  ERROR DISPLAY FOR ERROR FORCE MODULES 
   MODULE MSM98K,DESM(171,211)LOCK
*** MSM98K - ERROR DISPLAY
**
*    1.0  EXTERNAL MODULE DOCUMENTATION 
* 
*    1.1  PURPOSE-
* 
*         COMPLETE THE ERROR DISPLAY IN THE CASE OF ERROR LOGGING ERROR.
* 
*    1.2  METHOD- 
* 
*         1.  DISPLAY ADDRESS AND DATA. 
*         1.  EXIT THE MODULE.
* 
  
*    2.0  INTERNAL MODULE DOCUMENTATION 
* 
*    2.1  ENTRY CONDITIONS
* 
*    2.2  REGISTERS USED
* 
*         B10 - DISPLAY LINE COUNTER
* 
*    2.3  SUBMODULES USED 
* 
*         NONE
* 
* -------DATA DIVISION
* 
16 FORMAT            STARTING ADDRESS = *OCT*OCTB 
17 FORMAT MEMORY STARTING CHIP=*OB COL=*OCB ROW=*OCB SCN=*OB
20 FORMAT    BANK=*OB CHIP=*OB COL=*OCB ROW=*OCB SCN=*OB
21 FORMAT---------------------------------------------------
* 
* -------POST MESSAGES
* 
30 IF(DC.EQ.171) GOTO 40                  *IF ESM II
   IB(503) = B2.AND.7 
   IB(502) = B2.RS.3
   IB(501) = B1.AND.777B
   IB(500) = B1.RS.9
   MSG 16 (B1,B2) TO LINE B10 
   MSG 17 4 WORDS FROM IB(500) TO LINE B10+1
   GOTO 50
40 IB(504) = B2.AND.7 
   IB(503) = B2.AND.3777.RS.3 
   IB(501) = B2.RS.11 
   IB(502) = B1.AND.177.LS.1
   IB(502) = IB(501) + IB(502)
   IB(501) = B1.AND.200B.RS.7 
   IB(500) = B1.RS.8
   MSG 16 (B1,B2) TO LINE B10 
   MSG 20 5 WORDS FROM IB(500) TO LINE B10+1
* 
* -------DISPLAY STATUS 
* 
50 B10 = B10 + 2
* 
* -------EXIT THE MODULE
* 
70 MSG 21 TO LINE 23
   PICTURE
   HALT 
   BLANK
   EXIT 
* 
   END 30 
COMPILE   - MSM98K -  ERROR DISPLAY 
   MODULE MSM99,DESM(171,211)LOCK 
*** MSM99 - DOCUMENTATION OVERVIEW
**
* 
 1 PAUSE
   EXIT TO 99A
/         FOR ADDITIONAL DOCUMENTATION, SEE THE FOLLOWING 
/         MODULES-- 
/ 
/         MSM99              OVERVIEW 
/         MSM99A             LIST OF MODULES
/         MSM99B             PARAMETER DESCRIPTION
   END 1
COMPILE,SOURCE   - MSM99 -   MSM DOCUMENTATION OVERVIEW 
   MODULE MSM99A,DESM(171,211)LOCK
*** MSM99A - MODULES LIST 
**
* 
 1 PAUSE
   EXIT TO 99B
/ 
/      MSM IS DIVIDED INTO TWO BASIC SECTIONS. THE FIRST
/      SECTION CONSISTS OF THE DEFAULT MODULES,    MSM00
/      THROUGH  MSM40. THE SECOND SECTION CONSISTS OF 
/      MODULES MSM41 THROUGH MSM81 AND REQUIRES MSD TO BE 
/      RUNNING ON THE SIDE DOOR PORT. 
/ 
/      MODULES MSM23 THROUGH MSM33 PERFORM DEFAULT DATA 
/      TESTING FROM/TO CM AND A STORNET/ESM II SUBSYSTEM. 
/ 
/      MODULE MSM40 WILL THEN PAUSE AND ISSUE THE MESSAGE 
/      PAUSE START MSD RUNNING ON SIDE DOOR PORT. THEN A
/      *GO* WILL START EXECUTION OF MSM41 THROUGH MSM81.
/ 
*IF DEF,CMSE17X,2 
/      RUN TIMES WERE ON AN 860 SYSTEM WITH 4 MILLION 
/      WORDS OF MEMORY. 
*IF -DEF,CMSE17X,2
/      RUN TIMES WERE ON A DEDICATED (NOS) SYSTEM WITH 4
/      MILLION WORDS OF MEMORY. 
/ 
/                                         ACCESS    RUN 
/      MODULE       DESCRIPTION           LEVEL     TIME
/      ------       -----------           ------    ----
/ 
*IF -DEF,MVE
/      MSM00 - PARAMETER CHECKER AND        10      1 SEC 
/              PAUSE MODULE TO SET          10      1 SEC 
/              CLOCK MARGINS
/      MSM01 - 18 BIT FLAG REGISTER         10      1 SEC 
/              PART ONE 
/      MSM02 - 18 BIT FLAG REGISTER         10      1 SEC 
/              PART TWO 
/      MSM03 - 4 BIT FLAG REGISTER          10      1 SEC 
/              PART ONE 
/      MSM04 - 4 BIT FLAG REGISTER          10      1 SEC 
/              PART TWO 
/      MSM05 - 4 BIT FLAG REGISTER          10      1 SEC 
/              PART THREE 
*IF -DEF,CMSE17X,1
/      MSM07 - 16K X 4 MARCH FLAG MEMORY    10     16 SEC 
*IF DEF,CMSE17X,1 
/      MSM07 - 16K X 4 MARCH FLAG MEMORY    10     18 SEC 
/              TEST 
/      MSM09 - 16K X 4 MASEST MEMORY TEST   10     11 SEC 
*IF DEF,CMSE17X,1 
/      MSM11 - 16K X 4 WALKING COLUMN       10  1 MIN 15 SEC
*IF -DEF,CMSE17X,1
/      MSM11 - 16K X 4 WALKING COLUMN       10  1 MIN 13 SEC
/              PART ONE 
/      MSM12 - 16K X 4 WALKING COLUMN       10  1 MIN 13 SEC
/              PART TWO 
/      MSM13 - 16K X 4 WALKING ROW          10  1 MIN 25 SEC
/              PART ONE 
*IF -DEF,CMSE17X,8
/      MSM14 - 16K X 4 WALKING ROW          10  1 MIN 25 SEC
/              PART TWO 
/      MSM15 - 4 BIT FLAG REGISTER ADDRESS  10     17 SEC 
/              TEST 
/      MSM17 - LOW SPEED PORT BUFFER TEST   10     39 SEC 
/      MSM19 - MEMORY DATA PATH TEST        10      6 SEC 
/              PART ONE 
/      MSM20 - MEMORY DATA PATH TEST        10      1 SEC 
*IF DEF,CMSE17X,26
/      MSM14 - 16K X 4 WALKING ROW          10  1 MIN 31 SEC
/              PART TWO 
/      MSM15 - 4 BIT FLAG REGISTER ADDRESS  10     12 SEC 
/              TEST 
/      MSM17 - LOW SPEED PORT BUFFER TEST   10     50 SEC 
/      MSM19 - MEMORY DATA PATH TEST        10      4 SEC 
/              PART ONE 
/      MSM20 - MEMORY DATA PATH TEST        10      3 SEC 
/              PART TWO 
/      MSM21 - ADDRESS PATH TEST PART ONE   10     13 SEC 
/      MSM22 - ADDRESS PATH TEST PART TWO   10     12 SEC 
/      MSM23 - DATA ONES AND ZEROS TEST     10      2 SEC 
/              (DMA)
/      MSM25 - DATA ALTERNATING ONES TEST   10      2 SEC 
/              (DMA)
/      MSM27 - RANDOM DATA TEST (DMA)       10      2 SEC 
/      MSM29 - ONES AND ZEROS TEST          10      2 SEC 
/              (FAST DMA) 
/      MSM31 - ALTERNATING ONES TEST        10      2 SEC 
/              (FAST DMA) 
/      MSM33 - RANDOM DATA TEST (FAST DMA)  10      2 SEC 
/      MSM35 - ONES AND ZEROS TEST ALL      10  5 MIN 41 SEC
/              MEMORY 
/      MSM36 - ALTERNATING ONES TEST ALL    10  5 MIN 41 SEC
/              MEMORY 
/      MSM37 - RANDOM DATA TEST ALL MEMORY  10  8 MIN 37 SEC
*IF -DEF,CMSE17X,18 
/              PART TWO 
/      MSM21 - ADDRESS PATH TEST PART ONE   10      1 SEC 
/      MSM22 - ADDRESS PATH TEST PART TWO   10      1 SEC 
/      MSM23 - DATA ONES AND ZEROS TEST      3      4 SEC 
/              (DMA)
/      MSM25 - DATA ALTERNATING ONES TEST    3      4 SEC 
/              (DMA)
/      MSM27 - RANDOM DATA TEST (DMA)        3      4 SEC 
/      MSM29 - ONES AND ZEROS TEST           3      4 SEC 
/              (FAST DMA) 
/      MSM31 - ALTERNATING ONES TEST         3      4 SEC 
/              (FAST DMA) 
/      MSM33 - RANDOM DATA TEST (FAST DMA)   3      4 SEC 
/      MSM35 - ONES AND ZEROS TEST ALL      10  5 MIN 36 SEC
/              MEMORY 
/      MSM36 - ALTERNATING ONES TEST ALL    10  5 MIN 36 SEC
/              MEMORY 
/      MSM37 - RANDOM DATA TEST ALL MEMORY  10  8 MIN 16 SEC
/      MSM40 - CLEAR 4 BIT FLAG REGISTER    10      4 SEC 
*IF DEF,CMSE17X,40
/      MSM41 - SECDED CHECKBIT GENERATORS   10     18 SEC 
/              PART ONE 
/      MSM43 - SECDED CHECKBIT GENERATORS   10     35 SEC 
/              PART TWO 
/      MSM45 - SECDED SINGLE BIT CORRECTION 10     28 SEC 
/              AND DETECTION
/      MSM47 - SECDED MULTIPLE BIT ERROR    10     28 SEC 
/              DETECTION
/      MSM49 - ERRLOG PROGRAM SINGLE ERROR  10     55 SEC 
/              COUNTER PART ONE 
/      MSM50 - ERRLOG PROGRAM SINGLE ERROR  10  2 MIN 15 SEC
/              COUNTER PART TWO 
/      MSM51 - ERRLOG PROGRAM SINGLE ERROR  10  2 MIN 15 SEC
/              COUNTER PART THREE 
/      MSM52 - ERRLOG PROGRAM SINGLE ERROR  10  1 MIN 17 SEC
/              COUNTER PART FOUR
/      MSM53 - ERRLOG PROGRAM SINGLE ERROR  10     25 SEC 
/              COUNTER PART FIVE
/      MSM55 - DOUBLE ERROR LOGGING TEST    10 20 MIN  0 SEC
/      MSM57 - SINGLE ERROR COMPARE AND     10  8 MIN  4 SEC
/              LOGGING TEST 
/      MSM59 - SINGLE ERROR LOG 4-BIT       10 16 MIN  4 SEC
/              COUNTER TEST 
/      MSM61 - FORCE ERROR STATUS PART ONE  10     16 SEC 
/      MSM62 - FORCE ERROR STATUS PART TWO  10     18 SEC 
/      MSM63 - FORCE ERROR STATUS PART THREE10     17 SEC 
/      MSM67 - PRESET MEMORY                10     27 SEC 
/      MSM69 - PARTIAL WRITE/READ TEST      10     18 SEC 
/              PART ONE 
/      MSM70 - PARTIAL WRITE/READ TEST      10      8 SEC 
/              PART TWO 
/      MSM71 - SCAN COINCIDENCE TEST        10     57 SEC 
/      MSM73 - CHIP SELECT TEST             10      5 SEC 
/      MSM75 - ROW/COLUMN MULTIPLEX TEST    10      8 SEC 
/              PART ONE 
/      MSM76 - ROW/COLUMN MULTIPLEX TEST    10      4 SEC 
/              PART TWO 
/      MSM77 - BASIC BIT PICK DROP TEST     10     13 SEC 
/      MSM79 - ADDRESS LINES SHORT TEST     10     14 SEC 
/      MSM81 - FLAG REG AND MEMORY TEST     10     20 SEC 
*IF -DEF,CMSE17X,40 
/      MSM41 - SECDED CHECKBIT GENERATORS   10      4 SEC 
/              PART ONE 
/      MSM43 - SECDED CHECKBIT GENERATORS   10      8 SEC 
/              PART TWO 
/      MSM45 - SECDED SINGLE BIT CORRECTION 10      8 SEC 
/              AND DETECTION
/      MSM47 - SECDED MULTIPLE BIT ERROR    10     10 SEC 
/              DETECTION
/      MSM49 - ERRLOG PROGRAM SINGLE ERROR  10     14 SEC 
/              COUNTER PART ONE 
/      MSM50 - ERRLOG PROGRAM SINGLE ERROR  10     37 SEC 
/              COUNTER PART TWO 
/      MSM51 - ERRLOG PROGRAM SINGLE ERROR  10     37 SEC 
/              COUNTER PART THREE 
/      MSM52 - ERRLOG PROGRAM SINGLE ERROR  10     20 SEC 
/              COUNTER PART FOUR
/      MSM53 - ERRLOG PROGRAM SINGLE ERROR  10      9 SEC 
/              COUNTER PART FIVE
/      MSM55 - DOUBLE ERROR LOGGING TEST    10  4 MIN 47 SEC
/      MSM57 - SINGLE ERROR COMPARE AND     10  1 MIN 56 SEC
/              LOGGING TEST 
/      MSM59 - SINGLE ERROR LOG 4-BIT       10  3 MIN 45 SEC
/              COUNTER TEST 
/      MSM61 - FORCE ERROR STATUS PART ONE  10      5 SEC 
/      MSM62 - FORCE ERROR STATUS PART TWO  10      5 SEC 
/      MSM63 - FORCE ERROR STATUS PART THREE10      5 SEC 
/      MSM67 - PRESET MEMORY                10     27 SEC 
/      MSM69 - PARTIAL WRITE/READ TEST      10      4 SEC 
/              PART ONE 
/      MSM70 - PARTIAL WRITE/READ TEST      10      6 SEC 
/              PART TWO 
/      MSM71 - SCAN COINCIDENCE TEST        10     14 SEC 
/      MSM73 - CHIP SELECT TEST             10      1 SEC 
/      MSM75 - ROW/COLUMN MULTIPLEX TEST    10      1 SEC 
/              PART ONE 
/      MSM76 - ROW/COLUMN MULTIPLEX TEST    10      1 SEC 
/              PART TWO 
/      MSM77 - BASIC BIT PICK DROP TEST     10      8 SEC 
/      MSM79 - ADDRESS LINES SHORT TEST     10      3 SEC 
/      MSM81 - FLAG REG AND MEMORY TEST     10      6 SEC 
*ENDIF
*IF DEF,MVE 
/      MSM00 - PARAMETER CHECKER AND        32      1 SEC 
/              PAUSE MODULE TO SET          32      1 SEC 
/              CLOCK MARGINS
/      MSM01 - 18 BIT FLAG REGISTER         32      1 SEC 
/              PART ONE 
/      MSM02 - 18 BIT FLAG REGISTER         32      1 SEC 
/              PART TWO 
/      MSM03 - 4 BIT FLAG REGISTER          32      1 SEC 
/              PART ONE 
/      MSM04 - 4 BIT FLAG REGISTER          32      1 SEC 
/              PART TWO 
/      MSM05 - 4 BIT FLAG REGISTER          32      1 SEC 
/              PART THREE 
/      MSM07 - 16K X 4 MARCH FLAG MEMORY    32     16 SEC 
/              TEST 
/      MSM09 - 16K X 4 MASEST MEMORY TEST   32     11 SEC 
/      MSM11 - 16K X 4 WALKING COLUMN       32  1 MIN 13 SEC
/              PART ONE 
/      MSM12 - 16K X 4 WALKING COLUMN       32  1 MIN 13 SEC
/              PART TWO 
/      MSM13 - 16K X 4 WALKING ROW          32  1 MIN 25 SEC
/              PART ONE 
/      MSM14 - 16K X 4 WALKING ROW          32  1 MIN 25 SEC
/              PART TWO 
/      MSM15 - 4 BIT FLAG REGISTER ADDRESS  32     17 SEC 
/              TEST 
/      MSM17 - LOW SPEED PORT BUFFER TEST   30     39 SEC 
/      MSM19 - MEMORY DATA PATH TEST        30      6 SEC 
/              PART ONE 
/      MSM20 - MEMORY DATA PATH TEST        30      1 SEC 
/              PART TWO 
/      MSM21 - ADDRESS PATH TEST PART ONE   32      1 SEC 
/      MSM22 - ADDRESS PATH TEST PART TWO   32      1 SEC 
/      MSM23 - DATA ONES AND ZEROS TEST     30      4 SEC 
/              (DMA)
/      MSM25 - DATA ALTERNATING ONES TEST   30      4 SEC 
/              (DMA)
/      MSM27 - RANDOM DATA TEST (DMA)       30      4 SEC 
/      MSM29 - ONES AND ZEROS TEST          30      4 SEC 
/              (FAST DMA) 
/      MSM31 - ALTERNATING ONES TEST        30      4 SEC 
/              (FAST DMA) 
/      MSM33 - RANDOM DATA TEST (FAST DMA)  30      4 SEC 
/      MSM35 - ONES AND ZEROS TEST ALL      32  5 MIN 36 SEC
/              MEMORY 
/      MSM36 - ALTERNATING ONES TEST ALL    32  5 MIN 36 SEC
/              MEMORY 
/      MSM37 - RANDOM DATA TEST ALL MEMORY  32  8 MIN 16 SEC
/      MSM40 - CLEAR 4 BIT FLAG REGISTER    32      4 SEC 
/      MSM41 - SECDED CHECKBIT GENERATORS   32      4 SEC 
/              PART ONE 
/      MSM43 - SECDED CHECKBIT GENERATORS   32      8 SEC 
/              PART TWO 
/      MSM45 - SECDED SINGLE BIT CORRECTION 32      8 SEC 
/              AND DETECTION
/      MSM47 - SECDED MULTIPLE BIT ERROR    32     10 SEC 
/              DETECTION
/      MSM49 - ERRLOG PROGRAM SINGLE ERROR  32     14 SEC 
/              COUNTER PART ONE 
/      MSM50 - ERRLOG PROGRAM SINGLE ERROR  32     37 SEC 
/              COUNTER PART TWO 
/      MSM51 - ERRLOG PROGRAM SINGLE ERROR  32     37 SEC 
/              COUNTER PART THREE 
/      MSM52 - ERRLOG PROGRAM SINGLE ERROR  32     20 SEC 
/              COUNTER PART FOUR
/      MSM53 - ERRLOG PROGRAM SINGLE ERROR  32      9 SEC 
/              COUNTER PART FIVE
/      MSM55 - DOUBLE ERROR LOGGING TEST    32  4 MIN 47 SEC
/      MSM57 - SINGLE ERROR COMPARE AND     32  1 MIN 56 SEC
/              LOGGING TEST 
/      MSM59 - SINGLE ERROR LOG 4-BIT       32  3 MIN 45 SEC
/              COUNTER TEST 
/      MSM61 - FORCE ERROR STATUS PART ONE  32      5 SEC 
/      MSM62 - FORCE ERROR STATUS PART TWO  32      5 SEC 
/      MSM63 - FORCE ERROR STATUS PART THREE32      5 SEC 
/      MSM67 - PRESET MEMORY                32     27 SEC 
/      MSM69 - PARTIAL WRITE/READ TEST      32      4 SEC 
/              PART ONE 
/      MSM70 - PARTIAL WRITE/READ TEST      32      6 SEC 
/              PART TWO 
/      MSM71 - SCAN COINCIDENCE TEST        32     14 SEC 
/      MSM73 - CHIP SELECT TEST             32      1 SEC 
/      MSM75 - ROW/COLUMN MULTIPLEX TEST    32      1 SEC 
/              PART ONE 
/      MSM76 - ROW/COLUMN MULTIPLEX TEST    32      1 SEC 
/              PART TWO 
/      MSM77 - BASIC BIT PICK DROP TEST     32      8 SEC 
/      MSM79 - ADDRESS LINES SHORT TEST     32      3 SEC 
/      MSM81 - FLAG REG AND MEMORY TEST     32      6 SEC 
*ENDIF
/ 
   END 1
COMPILE,SOURCE   - MSM99A -   MSM MODULES 
   MODULE MSM99B,DESM(171,211)LOCK
*** MSM99B - PARAMETERS DESCRIPTION 
**
* 
01 PAUSE
/ 
/         THE FOLLOWING PARAMETERS ARE USED BY MSM: 
/              (ALL PARAMETER VALUES ARE OCTAL) 
/ 
/         P0 - XXXX - UPPER 12 BITS OF ADDRESS TO BE USED 
/                     FOR DATA TESTING. 
/ 
/         P1 - XXXX - LOWER 12 BITS OF ADDRESS TO BE USED 
/                     FOR DATA TESTING. 
/ 
/         P2 - XXXX - UPPER 12 BITS OF MEMORY MAXIMUM 
/                     ADDRESS.
/              0377 - 1 MILLION WORDS 
/              0777 - 2 MILLION WORDS 
/              1377 - 3 MILLION WORDS 
/              1777 - 4 MILLION WORDS 
/              2377 - 5 MILLION WORDS 
/              2777 - 6 MILLION WORDS 
/              3777 - 8 MILLION WORDS 
/              5777 - 12 MILLION WORDS
/              7777 - 16 MILLION WORDS
/ 
/         P3 - 0000 - PAUSE IN MODULE 40 TO START MSD 
/                     RUNNING.
/              XXXX - DO NOT PAUSE IN MODULE 40.
/ 
/         P4 - 0000 - USE 60 BIT CM WORD FORMAT FOR DMA 
/                     TRANSFERS.
/              XXXX - IF NON-ZERO USE 64 BIT CM WORD FORMAT 
/                     FOR DMA TRANSFERS.
/ 
/         P5 - P8 -   NOT USED
/ 
/         P9 - XXXX - PAUSE IN MODULE 00 FOR SETTING OF 
/                     CLOCK MARGINS BY MSD. 
/              0000 - DO NOT PAUSE IN MODULE 00.
   END 1
COMPILE,SOURCE   - MSM99B -   MSM PARAMETERS
