*DECK,LCM 
***       LCM - LCN MEMORY TEST 
***       REVISION HISTORY
* 
*         83/07/21     MODIFICATIONS MADE TO ALLOW FOR TESTING WHEN 
*                      A TRANSMIC NAD IS SPECIFIED BY PARAMETER  P1 
*                      BEING EQUAL TO 17.  ADDRESS FF01 TO FFFF ARE 
*                      NEITHER WRITTEN OR READ IF P1 = 17.
* 
**
*         LCM - LCN MEMORY TEST 
* 
*         AUTHOR - R. F. FELLRATH      APRIL 8, 1981
* 
*         COPYRIGHT CONTROL DATA CORPORATION., 1981.
* 
* 
*** 1.0   INTRODUCTION
**
*   1.0   INTRODUCTION
*         ------------
* 
*         LCM IS A MEMORY TEST FOR THE NETWORK ACCESS DEVICE  (NAD)  IN 
*         THE  LOOSELY  COUPLED NETWORK (LCN).  THE TEST RESIDES IN THE 
*         CYBER PERIPHERAL PROCESSOR  (PP)  AND  TESTS  THE  MEMORY  IN 
*         EITHER  A  LOCAL  OR  REMOTE  NAD.  THE TEST DOES NOT USE THE 
*         PROCESSOR IN THE NAD IN WHICH THE  MEMORY  IS  BEING  TESTED. 
*         THE  PROCESSOR OF THE NAD IN WHICH THE MEMORY IS BEING TESTED 
*         IS PLACED IN A STOPPED CONDITION. 
* 
*         WHEN TESTING THE MEMORY IN A LOCAL NAD, THE TEST WILL USE THE 
*         CYBER  INTERFACE  TO  WRITE  AND READ THE MEMORY IN THE LOCAL 
*         NAD.  WHEN TESTING THE MEMORY IN A REMOTE NAD, THE TEST  WILL 
*         COMMUNICATE WITH  THE REMOTE NAD THROUGH THE TRUNK INTERFACE. 
*         THE TEST WILL USE THE CYBER 170 NAD COMMON CONTROLWARE IN THE 
*         LOCAL  NAD  TO AUTOLOAD AND AUTODUMP THE MEMORY IN THE REMOTE 
*         NAD.
* 
*         THE TEST USES THE DEVICE CODE TO DETERMINE IF THE NAD  MEMORY 
*         BEING  TESTED  IS  LOCAL  OR  REMOTE.   ONE SET OF SUBMODULES 
*         (LCMXXA) ARE USED TO TEST THE MEMORY IN  THE  LOCAL  NAD  AND 
*         ANOTHER  SET  OF  SUBMODULES  (LCMXXB)  ARE  USED TO TEST THE 
*         MEMORY IN A REMOTE NAD. 
* 
* 
*** 1.1   RESTRICTIONS
**
*   1.1   RESTRICTIONS
*         ------------
* 
*         1.  THE CYBER 170 HOST  NAD  COMMON   CONTROLWARE   MUST   BE 
*             EXECUTING  IN THE LOCAL NAD BEFORE THE MEMORY IN A REMOTE 
*             NAD CAN BE TESTED.
* 
*         2.  THE TEST WILL DESTROY THE NAD COMMON CONTROLWARE  IN  THE 
*             NAD BEING TESTED. 
* 
*         3.  THE DATA PATH  FROM  THE CYBER 170 MAINFRAME TO THE LOCAL 
*             NAD MEMORY IS ASSUMED TO BE WORKING.
* 
*         4.  WHEN TESTING THE MEMORY IN A LOCAL NAD, LOCATIONS 0030  - 
*             003F  HEXADECIMAL AND THE LAST LOCATION IN THE NAD MEMORY 
*             CANNOT BE TESTED. 
* 
*         5.  WHEN TESTING THE MEMORY IN A REMOTE NAD, LOCATIONS 0020 - 
*             003F HEXADECIMAL CANNOT BE TESTED.
* 
*         6.  IN ADDITION TO ITEM 4 THE LAST ADDRESS IN THE MEMORY
*             OF A LOCAL NAD CANNOT BE TESTED.
* 
*         7.  IN ADDITION TO ITEM 5 THE ADDRESS FFFF HEXADECIMAL IN 
*             A REMOTE NAD CANNOT BE TESTED IF THE NAD HAS 65K. 
* 
*         8. ADDRESS 40 HEX WILL NOT BE READ OR COMPARED AS THAT
*            LOCATION IS RESERVED FOR THE REAL TIME CLOCK.
* 
* 
*** 1.2   CHARACTERISTICS 
**
*   1.2   CHARACTERISTICS 
*         --------------- 
* 
*         1.  PROGRAM NAME......................................LCM 
* 
*         2.  TEST/DIAG/UTILITY/SYSTEM.........................TEST 
* 
*         3.  VIRTUAL CODE/MICROCODE/PP CODE/OTHER............MALET 
* 
*         4.  RUN TIME (LOCAL)..............................42 SEC. 
* 
*         5.  RUN TIME (REMOTE).....................1 MIN., 48 SEC. 
* 
*         6.  LEVEL OF ISOLATION..........................DETECTION 
* 
*IF -DEF,CMSE17X
*         7.  ON-LINE/OFF-LINE/BOTH.........................ON-LINE 
*ENDIF
*IF DEF,CMSE17X 
*         7.  ON-LINE/OFF-LINE/BOTH........................OFF-LINE 
*ENDIF
* 
*IF -DEF,CMSE17X
*         8.  ON-LINE SYSTEM.............................NOS,NOS/BE 
*ENDIF
*IF DEF,CMSE17X 
*         8.  ON-LINE SYSTEM...................................NONE 
*ENDIF
* 
*IF -DEF,CMSE17X
*         9.  OFF-LINE SYSTEM..................................NONE 
*ENDIF
*IF DEF,CMSE17X 
*         9.  OFF-LINE SYSTEM..................................CMSE 
*ENDIF
* 
*         10. ASSEMBLY LANGUAGE...............................MALET 
* 
*         11. SOURCE CODE MAINTENANCE........................UPDATE 
* 
* 
*** 2.0   APPLICABLE DOCUMENTS
**
*   2.0   APPLICABLE DOCUMENTS
*         --------------------
* 
*         CYBER 170 HOST NAD ENGINEERING SPEC. FW101-A        52681472
*         NAD ENGINEERING SPECIFICATION                       52681478
*         NAD COMMON CONTROLWARE ERS                          52653818
*         LOOSELY COUPLED NETWORK PROTOCOLS ERS               52653814
*         CYBER 170 HOST NAD CONTROLWARE ERS MG101            52653815
*         MALET REFERENCE MANUAL                              60456020
*IF -DEF,CMSE17X
*         CML REFERENCE MANUAL                                60455980
*ENDIF
*IF DEF,CMSE17X 
*         DEMOT REFERENCE MANUAL                              60456310
*         MSL100 REFERENCE MANUAL                             60455770
*ENDIF
*         MALET MODULE CODING SPEC.                           ARH3297 
*         LCN M/S DEVELOPMENT PLAN                            ARH3663 
* 
* 
*** 3.0   PROGRAM DESCRIPTION 
**
*   3.0   PROGRAM DESCRIPTION 
*         ------------------- 
* 
*** 3.1   LCM 
**
*   3.1   LCM 
*         --- 
* 
*** 3.1.1 ABSTRACT
**
*   3.1.1 ABSTRACT
*         --------
* 
*         THE LCM TEST WILL TEST THE MEMORY IN EITHER A LOCAL OR REMOTE 
*         NAD  IN THE LOOSELY COUPLED NETWORK.  WHEN TESTING THE MEMORY 
*         IN A LOCAL NAD, THE  TEST  WILL  ACCESS  MEMORY  THROUGH  THE 
*         DEVICE  INTERFACE  IN THE LOCAL NAD.  WHEN TESTING THE MEMORY 
*         IN A REMOTE NAD THE TEST WILL ACCESS MEMORY  FROM  THE  TRUCK 
*         THROUGH THE TRUNK INTERFACE IN THE REMOTE NAD.  THE LOCAL NAD 
*         AND CYBER 170 HOST NAD CONTROLWARE ARE  USED  TO  COMMUNICATE 
*         WITH THE REMOTE NAD.
* 
*         ALL  PRIMARY  MODULES  EXCEPT  MODULE  LCM00  WILL  HAVE  TWO 
*         SUBMODULES ASSOCIATED WITH  IT  THAT  WILL  ACTUALLY  DO  THE 
*         MEMORY  TESTING.  THE PRIMARY MODULE WILL USE THE DEVICE CODE 
*         TO DETERMINE WHICH ONE OF TWO SUBMODULES TO EXIT TO AND  THEN 
*         EXIT  TO  THE  APPROPRIATE  SUBMODULE TO DO THE TESTING.  THE 
*         FIRST OF THESE TWO SUBMODULES IS DESIGNED TO TEST THE  MEMORY 
*         IN  A  LOCAL  NAD.   THE  SECOND  SUBMODULE  IN THE SERIES IS 
*         DESIGNED TO TEST THE MEMORY IN A REMOTE NAD.
* 
* 
*         MODULE       DESCRIPTION
*         ------       -----------
* 
*         LCM00        CHECK THE PARAMETER  WORDS  ENTERED  AND  VERIFY 
*                      THAT  THEY ARE VALID AS DETERMINED BY THE DEVICE 
*                      CODE FOR THE NAD TO BE TESTED. 
* 
*         LCM01        WRITE AND  READ  THE  NAD  MEMORY   USING   DATA 
*                      PATTERNS OF ALL ONES AND ALL ZEROS.
* 
*         LCM02        WRITE AND   READ   THE  NAD  MEMORY  USING  DATA 
*                      PATTERNS   OF   5555   HEXADECIMAL   AND    AAAA 
*                      HEXADECIMAL. 
* 
*         LCM03        WRITE AND READ THE NAD MEMORY USING AN EIGHT BIT 
*                      SLIDING ZERO DATA  PATTERN  (FEFE,  FDFD,  FBFB, 
*                      F7F7,  EFEF,  DFDF,  BFBF,  AND 7F7F HEXADECIMAL 
*                      DATA PATTERNS).
* 
*         LCM04        WRITE AND READ THE NAD MEMORY USING AN EIGHT BIT 
*                      SLIDING  ONE  DATA  PATTERN  (0101,  0202, 0404, 
*                      0808, 1010, 2020,  4040,  AND  8080  HEXADECIMAL 
*                      DATA PATTERNS).
* 
*         LCM05        WRITE ALL  LOCATIONS  IN THE NAD MEMORY WITH THE 
*                      ADDRESS OF EACH LOCATION AND  VERIFY  THAT  EACH 
*                      LOCATION   IN   THE   NAD  MEMORY  CONTAINS  ITS 
*                      ADDRESS. 
* 
*         LCM06        WRITE AND READ ALL LOCATIONS IN THE  NAD  MEMORY 
*                      THREE (3) TIMES USING RANDOM DATA PATTERNS.
* 
* 
***       ERROR PROCESSING
**
*         ERROR PROCESSING
*         ----------------
* 
*         BOTH DRIVER DETECTED ERRORS AND MODULE  DETECTED  ERRORS  ARE 
*         PROCESSED  BY ENTERING THE MODULE LCM98A.  MODULES LCM98A AND 
*         LCM98C PROCESS THE DRIVER DETECTED ERRORS.   MODULES  LCM98A, 
*         LCM98B, AND LCM98C PROCESS THE MODULE DETECTED ERRORS.
* 
*         FOR  THE  MODULE  DETECTED ERRORS, THE EM REGISTER IS USED TO 
*         FLAG THE  LCM98B  MODULE  AS  TO  THE  TYPE  OF  ERROR  BEING 
*         REPORTED.   IF THE EM REGISTER CONTAINS A ZERO, A MEMORY DATA 
*         ERROR IS TO BE REPORTED.  IF THE EM REGISTER CONTAINS AN ONE, 
*         A MEMORY PARITY ERROR IS TO BE REPORTED.
* 
* 
*** 3.1.2 DESCRIPTION DETAILED
**
*   3.1.2 DESCRIPTION DETAILED
*         --------------------
* 
* 
***       OPERATIONAL PROCEDURE 
**
*         OPERATIONAL PROCEDURE 
*         --------------------- 
* 
*         1.  REFER TO THE  MALET  REFERENCE MANUAL (PUB. NO. 60456020) 
*             FOR A DETAILED DESCRIPTION OF THE MALET LANGUAGE. 
* 
*IF -DEF,CMSE17X
*         2.  REFER TO THE  CML REFERENCE MANUAL (PUB. NO. 60455980) TO 
*             RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS.
*ENDIF
*IF DEF,CMSE17X 
*         2.  REFER TO THE  DEMOT  REFERENCE MANUAL (PUB. NO. 60456310) 
*             TO RUN DEMOT UNDER THE CMSE OPERATING SYSTEM. 
* 
*         3.  REFER TO THE MSL100 OFF-LINE MAINTENANCE SYSTEM  LIBRARY, 
*             VOLUME 1, REFERENCE MANUAL (PUB. NO. 60455770) TO RUN THE 
*             CMSE OFF-LINE MAINTENANCE SYSTEM. 
*ENDIF
* 
* 
***       LOADING PROCEDURE 
**
*         LOADING PROCEDURE 
*         ----------------- 
* 
*IF -DEF,CMSE17X
*         1.  REFER TO THE CML REFERENCE MANUAL (PUB. NO. 60455980)  TO 
*             RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS.
*ENDIF
*IF DEF,CMSE17X 
*         1.  REFER TO THE DEMOT REFERENCE  MANUAL  (PUB. NO. 60456310) 
*             TO RUN DEMOT UNDER THE CMSE OPERATING SYSTEM. 
* 
*         2.  REFER TO THE  MSL100 OFF-LINE MAINTENANCE SYSTEM LIBRARY, 
*             VOLUME 1, REFERENCE MANUAL (PUB. NO. 60455770) TO RUN THE 
*             CMSE OFF-LINE MAINTENANCE SYSTEM. 
*ENDIF
* 
* 
***       RUNNING PROCEDURE 
**
*         RUNNING PROCEDURE 
*         ----------------- 
* 
*IF -DEF,CMSE17X
*         1.  REFER TO THE  CML REFERENCE MANUAL (PUB. NO. 60455980) TO 
*             RUN MALET UNDER THE NOS OR NOS/BE OPERATING SYSTEMS.
*ENDIF
*IF DEF,CMSE17X 
*         1.  REFER TO THE  DEMOT  REFERENCE MANUAL (PUB. NO. 60456310) 
*             TO RUN DEMOT UNDER THE CMSE OPERATING SYSTEM. 
* 
*         2.  REFER TO THE MSL100 OFF-LINE MAINTENANCE SYSTEM  LIBRARY, 
*             VOLUME 1, REFERENCE MANUAL (PUB. NO. 60455770) TO RUN THE 
*             CMSE OFF-LINE MAINTENANCE SYSTEM. 
*ENDIF
* 
* 
***       PARAMETERS
**
*         PARAMETERS
*         ----------
* 
*         THE FOLLOWING HEX PARAMETERS ARE USED BY LCM- 
* 
*         P0 - NOT USED.
* 
*         P1 - 000X - MEMORY SIZE OF THE NAD BEING TESTED.
* 
*              0000 - DEFAULT EQUALS 16K. 
*              0001 - 16K.
*              0002 - 24K.
*              0003 - 32K.
*              0004 - 40K.
*              0005 - 48K.
*              0006 - 56K.
*              0007 - 65K.
               0017 - 65K TRANSMIC NAD
* 
*         P2 - NOT USED.
* 
*         P3 - NOT USED.
* 
*         P4 - NOT USED.
* 
*         P5 - NOT USED.
* 
*         P6 - NOT USED.
* 
*         P7 - NOT USED.
* 
*         P8 - NOT USED.
* 
*         P9 - NOT USED.
* 
* 
***       MESSAGES
**
*         MESSAGES
*         --------
* 
***       NORMAL MESSAGES 
**
*         NORMAL MESSAGES 
*         --------------- 
* 
*         1.  LCM00 - PARAMETER VALIDATION
*             THIS MESSAGE INDICATES THAT MODULE LCM00 IS NOW  RUNNING. 
* 
*         2.  LCM01 - ONES AND ZEROS TEST 
*             THIS MESSAGE INDICATES THAT  MODULE LCM01 IS NOW RUNNING. 
* 
*         3.  LCM02 - ALTERNATING ONES TEST 
*             THIS MESSAGE INDICATES THAT MODULE LCM02 IS NOW  RUNNING. 
* 
*         4.  LCM03 - SLIDING ZERO TEST 
*             THIS MESSAGE INDICATES THAT  MODULE LCM03 IS NOW RUNNING. 
* 
*         5.  LCM04 - SLIDING ONE TEST
*             THIS MESSAGE INDICATES THAT MODULE LCM04 IS NOW  RUNNING. 
* 
*         6.  LCM05 - ADDRESSING TEST 
*             THIS MESSAGE INDICATES THAT  MODULE LCM05 IS NOW RUNNING. 
* 
*         7.  LCM06 - RANDOM DATA TEST
*             THIS MESSAGE INDICATES THAT MODULE LCM06 IS NOW  RUNNING. 
* 
*         8.  LCM01 ONES/ZEROS TEST   *DD 
*             THIS MESSAGE INDICATES THAT MODULE LCMXX IS RUNNNING
*             PATTERN NUMBER DD.
* 
*         9.  LCM02 ALT. ONES TEST    *DD 
*             THIS MESSAGE INDICATES THAT MODULE LCMXX IS RUNNNING
*             PATTERN NUMBER DD.
* 
*        10.  LCM03 SLIDING ZERO TEST *DD 
*             THIS MESSAGE INDICATES THAT MODULE LCMXX IS RUNNNING
*             PATTERN NUMBER DD.
* 
*        11.  LCM04 SLIDING ONE TEST  *DD 
*             THIS MESSAGE INDICATES THAT MODULE LCMXX IS RUNNNING
*             PATTERN NUMBER DD.
* 
*        12.  LCM05 ADDRESSING TEST   *DD 
*             THIS MESSAGE INDICATES THAT MODULE LCMXX IS RUNNNING
*             PATTERN NUMBER DD.
* 
*        13.  LCM06 RANDOM DATA TEST  *DD 
*             THIS MESSAGE INDICATES THAT MODULE LCMXX IS RUNNNING
*             PATTERN NUMBER DD.
* 
* 
* 
***       DAYFILE MESSAGES
**
*         DAYFILE MESSAGES
*         ----------------
* 
*         1.  LCM01 ERROR(S) = XXXXD
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*             THIS DAYFILE MESSAGE INDICATES THAT MODULE LCM01 DETECTED 
*             XXXX   DECIMAL  ERRORS  BY  THE  TIME  IT  HAD  COMPLETED 
*             EXECUTION.
* 
*         2.  LCM02 ERROR(S) = XXXXD
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*             THIS DAYFILE MESSAGE INDICATES THAT MODULE LCM02 DETECTED 
*             XXXX   DECIMAL  ERRORS  BY  THE  TIME  IT  HAD  COMPLETED 
*             EXECUTION.
* 
*         3.  LCM03 ERROR(S) = XXXXD
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*             THIS DAYFILE MESSAGE INDICATES THAT MODULE LCM03 DETECTED 
*             XXXX   DECIMAL  ERRORS  BY  THE  TIME  IT  HAD  COMPLETED 
*             EXECUTION.
* 
*         4.  LCM04 ERROR(S) = XXXXD
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*             THIS DAYFILE MESSAGE INDICATES THAT MODULE LCM04 DETECTED 
*             XXXX   DECIMAL  ERRORS  BY  THE  TIME  IT  HAD  COMPLETED 
*             EXECUTION.
* 
*         5.  LCM05 ERROR(S) = XXXXD
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*             THIS DAYFILE MESSAGE INDICATES THAT MODULE LCM05 DETECTED 
*             XXXX   DECIMAL  ERRORS  BY  THE  TIME  IT  HAD  COMPLETED 
*             EXECUTION.
* 
*         6.  LCM06 ERROR(S) = XXXXD
*             XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*             THIS DAYFILE MESSAGE INDICATES THAT MODULE LCM06 DETECTED 
*             XXXX   DECIMAL  ERRORS  BY  THE  TIME  IT  HAD  COMPLETED 
*             EXECUTION.
* 
* 
***       ERROR MESSAGES
**
*         ERROR MESSAGES
*         --------------
* 
*         THE FOLLOWING  DISPLAY  FORMAT  IS  USED  BY  LCM  TO  REPORT 
*         PARAMETER ENTRY ERRORS TO THE USER. 
* 
*         00  LCM - LCN MEMORY TEST 
*         01  LCMNN - (M----------------------------T)
*         02
*         03  LCMNN SUSPECTED PARAMETER ERROR     (HEX. VALUES) 
*         04  (E----------------D)
*         05  P0 - P3  PPPP PPPP PPPP PPPP
*         06  P4 - P7  PPPP PPPP PPPP PPPP
*         07  P8 - P9  PPPP PPPP
*         10  PARAMETERS DESCRIBED IN MODULE LCM99
*         11
*         12
*         13
*         14
*         15
*         16
* 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         E---D = DISCRIPTION OF THE ERROR. 
*         M---T = MODULE TITLE. 
*         PPPP = CONTENTS OF THE PARAMETER WORD.
* 
* 
*         THE  FOLLOWING DISPLAY FORMAT IS USED BY LCM TO REPORT ACCESS 
*         LEVEL ERRORS TO THE USER. 
* 
*         00  LCM - LCN MEMORY TEST 
*         01  LCMNN - (M----------------------------T)
*         02  LCMNN NOT EXECUTED - AL=    , NEED AL=5 
*         03
*         04
*         05
*         06
*         07
*         10
*         11
*         12
*         13
*         14
*         15
*         16
* 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         E---D = DISCRIPTION OF THE ERROR. 
*         M---T = MODULE TITLE. 
* 
* 
*         THE FOLLOWING DISPLAY FORMAT IS USED BY LCM TO REPORT PRODUCT 
*         OVERLAY ERRORS WHEN TESTING THE MEMORY IN A LOCAL NAD TO  THE 
*         USER. 
* 
*         00  LCM - LCN MEMORY TEST 
*         01  LCMNN - (M----------------------------T)
*         02
*         03  LCMNN ABORTED ON (C-------------------M)
*         04   LAST FUNCTION = FFFFB  WT = WWWWB
*         05  LCM06 ERROR(S) = ZZZZD
*         06   LCMNNN EXXXX LYYY  (E----------------M)
*         07
*         10
*         11
*         12
*         13
*         14
*         15
*         16
* 
* 
*         WHERE-
*         NNN   = MODULE NUMBER.
*         YYY   = THE CONTENTS OF THE EA (ERROR ADDRESS) REGISTER.
*         C---M = COMMAND ON WHICH THE ABORT OCCURED. 
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         FFFF  = LAST FUNCTION ISSUED TO THE NAD.
*         M---T = MODULE TITLE. 
*         NNNN  = CONTENTS OF THE STATUS WORD.
*         WWWW  = THE NUMBER OF WORDS TRANSFERED DURING THE  LAST  DATA 
*                 TRANSFER. 
*         XXXX  = THE ERROR CODE IN OCTAL.
*         ZZZZ  = ERROR COUNT 
* 
* 
*         THE  FOLLOWING DISPLAY FORMAT IS USED BY LCM TO REPORT MEMORY 
*         PARITY ERRORS TO THE USER WHEN TESTING THE MEMORY IN EITHER A 
*         LOCAL OR REMOTE NAD.
* 
*         00  LCM - LCN MEMORY TEST 
*         01  LCMNN - (M----------------------------T)
*         02
*         03  LCMNN ABORTED ON (C-------------------M)
*         04   LCMNN EXXXX LYYY  (E-----------------M)
*         05   PARITY ERROR IN ADDRESSES AAAA-BBBB
*         06
*         07
*         10
*         11
*         12
*         13
*         14
*         15
*         16
* 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         YYY   = THE CONTENTS OF THE EA (ERROR ADDRESS) REGISTER.
*         AAAA  = FIRST WORD ADDRESS OF THE DATA TRANSFER.
*         BBBB  = LAST WORD ADDRESS OF THE DATA TRANSFER. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURED. 
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         FFFF  = LAST FUNCTION ISSUED TO THE NAD.
*         M---T = MODULE TITLE. 
*         NNNN  = CONTENTS OF THE STATUS WORD.
*         WWWW  = THE NUMBER OF WORDS TRANSFERED DURING THE  LAST  DATA 
*                 TRANSFER. 
*         XXXX  = THE ERROR CODE IN OCTAL.
* 
* 
*         THE  FOLLOWING DISPLAY FORMAT IS USED BY LCM TO REPORT MEMORY 
*         DATA ERRORS TO THE USER WHEN TESTING THE MEMORY IN  EITHER  A 
*         LOCAL OR REMOTE NAD.
* 
*         00  LCM - LCN MEMORY TEST 
*         01  LCMNN - (M----------------------------T)
*         02
*         03  LCMNN ABORTED ON (C-------------------M)
*         04   LCMNN EXXXX LYYY  (E-----------------M)
*         05   ADRS   EXP.   ACT.   DIF. (HEX. VALUES)
*         06   AAAA   BBBB   CCCC   DDDD
*         07   AAAA   BBBB   CCCC   DDDD
*         10   AAAA   BBBB   CCCC   DDDD
*         11   AAAA   BBBB   CCCC   DDDD
*         12   AAAA   BBBB   CCCC   DDDD
*         13   AAAA   BBBB   CCCC   DDDD
*         14   AAAA   BBBB   CCCC   DDDD
*         15   AAAA   BBBB   CCCC   DDDD
*         16
* 
* 
*         WHERE-
*         NN    = MODULE NUMBER.
*         YYY   = THE CONTENTS OF THE EA (ERROR ADDRESS) REGISTER.
*         AAAA  = THE FAILING ADDRESS IN THE NAD MEMORY.
*         BBBB  = THE EXPECTED CONTENTS OF THE MEMORY LOCATION. 
*         CCCC  = THE ACTUAL CONTENTS OF THE MEMORY LOCATION. 
*         C---M = COMMAND ON WHICH THE ABORT OCCURED. 
*         DDDD  = THE LOGICAL DIFFERENCE OF BBBB AND CCCC.
*         E---M = VERBAL DESCRIPTION OF THE ERROR CODE. 
*         M---T = MODULE TITLE. 
*         XXXX  = THE ERROR CODE IN OCTAL.
* 
*         THE FOLLOWING ERROR MESSAGES ARE REPORTED  BY  THE  PARAMETER 
*         CHECKING MODULE LCM00 WHEN IT DETECTS AN ERROR CONDITION. 
* 
*         1.  ACCESS LEVEL NOT HIGH ENOUGH
*             THIS ERROR MESSAGE INDICATES THAT THE  AL  VALUE  (ACCESS 
*             LEVEL)  ASSIGNED  TO  THE TEST IS TOO LOW FOR THE TEST TO 
*             RUN.  THE TEST REQUIRES AN ACCESS LEVEL  OF  5  OR  6  TO 
*             RUN.  THE MODULE WILL SEND THE MESSAGE, LCM00 NOT 
*             EXECUTED - AL=    , NEED AL=5 , TO DISPLAY AND PRINT
*             ,AND PAUSE.  THE ACCESS LEVEL MUST BE CORRECTED 
*             AND THE TEST RERUN. 
* 
*         2.  LCM00 SUSPECTED PARAMETER ERROR 
*             THIS ERROR MESSAGE INDICATES THAT THE PARAMETER  CHECKING 
*             MODULE LCM00 HAS DETECTED AN ERROR CONDITION IN PARAMETER 
*             WORD P1.  PARAMETER WORD P1  CONTAINED  A  VALUE  GREATER 
*             THAN  SEVEN WHICH IS THE LARGEST MEMORY SIZE ALLOWABLE IN 
*             PARAMETER WORD P1.  THE  MODULE  WILL  SEND  THE  MESSAGE 
*             *//LCM00  PARAMTER  ERROR*  TO  DISPLAY  AND  PRINT,  AND 
*             PAUSE.  PARAMETER WORD P1 MUST BE CORRECTED AND THE  TEST 
*             RERUN.
* 
*         3.  IF THE  PARAMETER  CHECKING  MODULE  LCM00  DETECTS  THAT 
*             REPEAT  MODULE  IS  SELECTED,  THE  MESSAGE  *//LCM00  RM 
*             SELECTED*  WILL  BE  SENT  TO  DISPLAY AND PRINT, AND THE 
*             MODULE  WILL  PAUSE  UNTIL  RM  IS  CLEARED  IN  THE   ES 
*             REGISTER. 
* 
* 
***       ERROR CODES 
**
*         ERROR CODES 
*         ----------- 
* 
*         MODULE  ERROR     ERROR 
*         NUMBER  CODE   DESCRIPTION
*         ------  -----  -----------
* 
*         LCM01   E0001  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY  OF  THE  LOCAL  NAD  MEMORY 
*                               BEING  TESTED WHILE READING AN ALL ONES 
*                               OR ALL  ZEROS  DATA  PATTERN  FROM  THE 
*                               MEMORY. 
* 
*         LCM01   E0002  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY OF  THE  REMOTE  NAD  MEMORY 
*                               BEING  TESTED WHILE READING AN ALL ONES 
*                               OR ALL  ZEROS  DATA  PATTERN  FROM  THE 
*                               MEMORY. 
* 
*         LCM02   E0003  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY  OF  THE  LOCAL  NAD  MEMORY 
*                               BEING    TESTED    WHILE   READING   AN 
*                               ALTERNATING ONES DATA PATTERN FROM  THE 
*                               MEMORY. 
* 
*         LCM02   E0004  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY OF  THE  REMOTE  NAD  MEMORY 
*                               BEING    TESTED    WHILE   READING   AN 
*                               ALTERNATING ONES DATA PATTERN FROM  THE 
*                               MEMORY. 
* 
*         LCM03   E0005  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY  OF  THE  LOCAL  NAD  MEMORY 
*                               BEING  TESTED  WHILE  READING A SLIDING 
*                               ZERO DATA PATTERN FROM THE MEMORY.
* 
*         LCM03   E0006  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE  MEMORY  OF  THE  REMOTE NAD MEMORY 
*                               BEING TESTED WHILE  READING  A  SLIDING 
*                               ZERO DATA PATTERN FROM THE MEMORY.
* 
*         LCM04   E0007  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY  OF  THE  LOCAL  NAD  MEMORY 
*                               BEING  TESTED  WHILE  READING A SLIDING 
*                               ONE DATA PATTERN FROM THE MEMORY. 
* 
*         LCM04   E0010  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE  MEMORY  OF  THE  REMOTE NAD MEMORY 
*                               BEING TESTED WHILE  READING  A  SLIDING 
*                               ONE DATA PATTERN FROM THE MEMORY. 
* 
*         LCM05   E0011  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY  OF  THE  LOCAL  NAD  MEMORY 
*                               BEING  TESTED  WHILE  READING  A MEMORY 
*                               ADDRESSING  DATA   PATTERN   FROM   THE 
*                               MEMORY. 
* 
*         LCM05   E0012  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY OF  THE  REMOTE  NAD  MEMORY 
*                               BEING  TESTED  WHILE  READING  A MEMORY 
*                               ADDRESSING  DATA   PATTERN   FROM   THE 
*                               MEMORY. 
* 
*         LCM06   E0013  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE MEMORY  OF  THE  LOCAL  NAD  MEMORY 
*                               BEING  TESTED  WHILE  READING  A RANDOM 
*                               DATA PATTERN FROM THE MEMORY. 
* 
*         LCM06   E0014  LYYY  NAD MEMORY PARITY ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               A MEMORY PARITY ERROR WAS  DETECTED  IN 
*                               THE  MEMORY  OF  THE  REMOTE NAD MEMORY 
*                               BEING TESTED  WHILE  READING  A  RANDOM 
*                               DATA PATTERN FROM THE MEMORY. 
* 
*         LCM01   E0100  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN THE DATA READ  FROM  THE  LOCAL  NAD 
*                               MEMORY  WHICH  CONTAINED  EITHER A DATA 
*                               PATTERN OF ALL ONES OR ALL ZEROS. 
* 
*         LCM01   E0101  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN  THE  DATA  READ FROM THE REMOTE NAD 
*                               MEMORY WHICH CONTAINED  EITHER  A  DATA 
*                               PATTERN OF ALL ONES OR ALL ZEROS. 
* 
*         LCM02   E0102  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN THE DATA READ  FROM  THE  LOCAL  NAD 
*                               MEMORY  WHICH  CONTAINED AN ALTERNATING 
*                               ONES DATA PATTERN.
* 
*         LCM02   E0103  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN  THE  DATA  READ FROM THE REMOTE NAD 
*                               MEMORY WHICH CONTAINED  AN  ALTERNATING 
*                               ONES DATA PATTERN.
* 
*         LCM03   E0104  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN THE DATA READ  FROM  THE  LOCAL  NAD 
*                               MEMORY  WHICH  CONTAINED A SLIDING ZERO 
*                               DATA PATTERN. 
* 
*         LCM03   E0105  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN  THE  DATA  READ FROM THE REMOTE NAD 
*                               MEMORY WHICH CONTAINED A  SLIDING  ZERO 
*                               DATA PATTERN. 
* 
*         LCM04   E0106  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN THE DATA READ  FROM  THE  LOCAL  NAD 
*                               MEMORY  WHICH  CONTAINED  A SLIDING ONE 
*                               DATA PATTERN. 
* 
*         LCM04   E0107  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN  THE  DATA  READ FROM THE REMOTE NAD 
*                               MEMORY WHICH CONTAINED  A  SLIDING  ONE 
*                               DATA PATTERN. 
* 
*         LCM05   E0110  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN THE DATA READ  FROM  THE  LOCAL  NAD 
*                               MEMORY   WHICH   CONTAINED   A   MEMORY 
*                               ADDRESSING DATA PATTERN.
* 
*         LCM05   E0111  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN  THE  DATA  READ FROM THE REMOTE NAD 
*                               MEMORY   WHICH   CONTAINED   A   MEMORY 
*                               ADDRESSING DATA PATTERN.
* 
*         LCM06   E0112  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN THE DATA READ  FROM  THE  LOCAL  NAD 
*                               MEMORY  WHICH  CONTAINED  A RANDOM DATA 
*                               PATTERN.
* 
*         LCM06   E0113  LYYY  NAD MEMORY DATA ERROR
*                        YYY  = LINE NUMBER ON WHICH ERROR OCCURED. 
*                               ONE OR MORE DATA ERRORS  WERE  DETECTED 
*                               IN  THE  DATA  READ FROM THE REMOTE NAD 
*                               MEMORY WHICH CONTAINED  A  RANDOM  DATA 
*                               PATTERN.
* 
* 
***       MODULE DESCRIPTIONS 
**
*         MODULE DESCRIPTIONS 
*         ------------------- 
* 
   MODULE LCM00,LCN(300,301)LOCK
***       LCM00 - PARAMETER VALIDATION
**
*         LCM00 - PARAMETER VALIDATION
*         ----------------------------
* 
* 
*         PURPOSE-
*         LCM00 CHECKS THE ACCESS LEVEL AND PARAMETER WORD P1 TO VERIFY 
*         THAT A VALID MEMORY SIZE HAS BEEN ENTERED.   IF  A  PARAMETER 
*         ENTRY  ERROR  IS  DETECTED,  THE  MODULES  LOOPS  ON  A PAUSE 
*         DIRECTIVE WITH A MESSAGE TO  INFORM  THE  USER  SO  THAT  THE 
*         PARAMETER CAN BE CORRECTED AND THE TEST RERUN.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  VERIFY THAT THE ACCESS LEVEL ON THE ASSIGN DIRECTIVE IS 5 
*             OR GREATER.  IF IT IS NOT, REPORT AN ACCESS LEVEL TOO LOW 
*             ERROR AND PAUSE.
*         3.  VERIFY THAT PARAMETER WORD P1 CONTAINS A NUMBER FROM 0000 
*             TO 0007 AND IF IT DOES NOT, REPORT A  PARAMETER  WORD  P1 
*             ENTRY ERROR AND PAUSE.
*         4.  VERIFY THAT REPEAT MODULE IS  NOT  SELECTED.   IF  REPEAT 
*             MODULE  IS  SELECTED, PAUSE UNTIL REPEAT MODULE IS TURNED 
*             OFF IN THE ES REGISTER. 
*         5.  EXIT THE MODULE.
/ 
*         ENTRY-
*         PARAMETER WORDS P0 TO P9 ARE DESCRIBED IN THE MODULE LCM99. 
*         THE  ACCESS  LEVEL  FOR  THE  TEST  IS  CONTAINED  IN  THE AL 
*            REGISTER.
* 
*         EXIT- 
*         NO SPECIAL  EXIT CONDITIONS IF THE PARAMETER WORDS ARE VALID, 
*            THE ACCESS LEVEL IS 5 OR GREATER AND REPEAT MODULE IS  NOT 
*            ENABLED.   OTHERWISE THE PARAMETER WORD(S) OR ACCESS LEVEL 
*            MUST BE CORRECTED AND THE  TEST  RERUN  OR  REPEAT  MODULE 
*            DISABLED.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         REGISTERS USED- 
*         B0  - PAUSE MESSAGE NUMBER. 
*         ES  - STANDARD USAGE. 
*         AL  - STANDARD USAGE. 
* 
*         BUFFERS USED- 
*         OB(0) TO OB(23) - PARAMETER WORD DISPLAY. 
* 
* 
0  FORMAT LCM - LCN MEMORY TEST 
1  FORMAT LCM00 - PARAMETER VALIDATION
4  FORMAT LCM00 SUSPECTED PARAMETER ERROR    (HEX. VALUES)
5  FORMAT P1 - UNUSED BITS SET
6  FORMAT P0 - P3  *H*H *H*H *H*H *H*H
7  FORMAT P4 - P7  *H*H *H*H *H*H *H*H
10 FORMAT P8 - P9  *H*H *H*H
11 FORMAT PARAMETERS DESCRIBED IN MODULE LCM99
12 FORMAT LCM00 NOT EXECUTED - AL=*OCT, NEED AL=5 
13 FORMAT //LCM00 PARAMETER ERROR 
14 FORMAT //LCM00 RM SELECTED 
* 
/---------DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
* 
30 MSG 1 TO DISPLAY,PRINT    *DISPLAY RUNNING MESSAGE 
* 
/---------VALIDATE THE ACCESS LEVEL FOR THE TEST. 
* 
   IF(AL.GE.5) GOTO 40       *IF ACCESS LEVEL OK
   B0=12                     *ACCESS LEVEL PAUSE MESSAGE
   GOTO 70                   *REPORT ACCESS LEVEL ERROR 
* 
/---------VALIDATE PARAMETER WORD P1. 
* 
40 IF(P1.LE.7) GOTO 50       *IF PARAMETER WORD P1 OK 
   IF(P1.NE.17) GOTO 41      *ERROR IF P1 DOES NOT = 17 
   IF(DC.EQ.301) GOTO 50     *REMOTE NAD,65K, AND P1=17 
* 
/---------SET UPPER 4 BITS OF THE PARAMETER WORDS.
* 
41 OB=SB(30).LS.4            *PARAMETER WORD P0 
   OB(2)=SB(31).LS.4         *PARAMETERR WORD P1
   OB(4)=SB(32).LS.4         *PARAMETERR WORD P2
   OB(6)=SB(33).LS.4         *PARAMETERR WORD P3
   OB(10)=SB(34).LS.4        *PARAMETERR WORD P4
   OB(12)=SB(35).LS.4        *PARAMETERR WORD P5
   OB(14)=SB(36).LS.4        *PARAMETERR WORD P6
   OB(16)=SB(37).LS.4        *PARAMETERR WORD P7
   OB(20)=SB(40).LS.4        *PARAMETERR WORD P8
   OB(22)=SB(41).LS.4        *PARAMETERR WORD P9
* 
/---------SET LOWER 8 BITS OF THE PARAMETER WORDS.
* 
   OB(1)=P0.AND.377          *PARAMETER WORD P0 
   OB(3)=P1.AND.377          *PARAMETER WORD P1 
   OB(5)=P2.AND.377          *PARAMETER WORD P2 
   OB(7)=P3.AND.377          *PARAMETER WORD P3 
   OB(11)=P4.AND.377         *PARAMETER WORD P4 
   OB(13)=P5.AND.377         *PARAMETER WORD P5 
   OB(15)=P6.AND.377         *PARAMETER WORD P6 
   OB(17)=P7.AND.377         *PARAMETER WORD P7 
   OB(21)=P8.AND.377         *PARAMETER WORD P8 
   OB(23)=P9.AND.377         *PARAMETER WORD P9 
* 
/---------SET UPPER 8 BITS OF THE PARAMETER WORDS.
* 
   OB=P0.RS.8.+.OB           *PARAMETER WORD P0 
   OB(2)=P1.RS.8.+.OB(2)     *PARAMETER WORD P1 
   OB(4)=P3.RS.8.+.OB(4)     *PARAMETER WORD P2 
   OB(6)=P4.RS.8.+.OB(6)     *PARAMETER WORD P3 
   OB(10)=P4.RS.8.+.OB(10)   *PARAMETER WORD P4 
   OB(12)=P5.RS.8.+.OB(12)   *PARAMETER WORD P5 
   OB(14)=P6.RS.8.+.OB(14)   *PARAMETER WORD P6 
   OB(16)=P7.RS.8.+.OB(16)   *PARAMETER WORD P7 
   OB(20)=P8.RS.8.+.OB(20)   *PARAMETER WORD P8 
   OB(22)=P9.RS.8.+.OB(22)   *PARAMETER WORD P9 
* 
/---------BUILD THE ERROR DISPLAY.
* 
   MSG 4 TO LINE 3           *PARAMETER ERROR MESSAGE 
   MSG 5 TO LINE 4           *P1 ERROR MESSAGE
   MSG 6 8 WORDS FROM OB TO LINE 5  *PARAMETERS P0-P3 
   MSG 7 8 WORDS FROM OB(10) TO LINE 6  *PARAMETERS P4-P7 
   MSG 10 4 WORDS FROM OB(20) TO LINE 7  *PARAMETERS P8-P9
   MSG 11 TO LINE 10         *LCM99 INFORMATION MESSAGE 
   B0=13                     *PARAMETER ERROR PAUSE MESSAGE 
   GOTO 70                   *REPORT PARAMETER ERROR
* 
/---------VERIFY THAT REPEAT MODULE IS NOT SELSECTED. 
* 
50 IF(ES.AND.RM.EQ.0) EXIT   *EXIT IF RM NOT SELECTED 
   B0=14                     *RM PAUSE MESSAGE
   GOTO 74                   *REPORT RM ERROR 
* 
/---------COMPLETE ERROR DISPLAY. 
* 
70 MSG 0 TO LINE 0           *ERROR DISPLAY TITLE LINE
   MSG 1 TO LINE 1           *ERROR DISPLAY MODULE NAME 
   PICTURE
* 
/---------DISPLAY PAUSE MESSAGE, PAUSE, AND LOOP. 
* 
74 MSG B0 (AL) TO DISPLAY,PRINT   *POST PAUSE MESSAGE 
   PAUSE                     *REPORT ERROR TO USER
   GOTO 74                   *LOOP
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM00 - PARAMETER VALIDATION
   MODULE LCM01,LCN(300,301)LOCK
***       LCM01 - ONES AND ZEROS TEST 
**
*         LCM01 - ONES AND ZEROS TEST 
*         --------------------------- 
* 
* 
*         PURPOSE-
*         DETERMINE IF THE NAD MEMORY BEING TESTED IS  IN  A  LOCAL  OR 
*         REMOTE  NAD  AND EXIT TO THE APPROPRIATE SUBMODULE (LCM01A OR 
*         LCM01B) TO DO THE TESTING.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B5 REGISTER EQUAL TO 100 OCTAL. 
*         3.  SET  THE  B10  REGISTER  EQUAL  TO  THE  NUMBER   OF   40 
*             HEXADECIMAL WORD BLOCKS OF DATA REQUIRED TO WRITE OR READ 
*             THE ENTIRE NAD MEMORY AS DEFINED IN PARAMETER WORD P1.
*         4.  SET THE B13 REGISTER EQUAL TO THE MODULE NUMBER.
*         5.  IF THE DEVICE ACCESS CODE IS EQUAL TO 300 OCTAL, EXIT  TO 
*             MODULE LCM01A TO TEST THE MEMORY IN A LOCAL NAD.
*         6.  BUILD THE  MAINTENANCE  FUNCTION  HEADER  TABLE  FOR  THE 
*             MAINTENANCE FUNCTION TRANSACTION. 
*         7.  EXIT TO MODULE LCM01B TO TEST THE MEMORY  IN  THE  REMOTE 
*             NAD.
/ 
*         ENTRY-
*         DC REGISTER CONTAINS THE  DEVICE  CODE  FOR  THE  NAD  TO  BE 
*            TESTED.
*         PARAMETER WORD P1 CONTAINS THE NAD MEMORY SIZE. 
* 
*         EXIT- 
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE NUMBER OF THE MODULE. 
*         EXIT IS TO SUBMODULE LCM01A IF THE DEVICE CODE IS 300  OCTAL. 
*         EXIT  IS  TO SUBMODULE LCM01B IF THE DEVICE CODE IS 301 OCTAL 
*            WITH THE MAINTENANCE FUNCTION HEADER TABLE BUILT.
* 
*         SUBMODULES REFERENCED-
*         LCM01A - TEST THE MEMORY IN A LOCAL NAD IF THE DEVICE CODE IS 
*                  EQUAL TO 300 OCTAL.
*         LCM01B - TEST  THE  MEMORY IN A REMOTE NAD IF THE DEVICE CODE 
*                  IS EQUAL TO 301 OCTAL. 
* 
*         REGISTERS USED- 
*         B5  - CONTAINS 100 OCTAL. 
*         B10 - CONTAINS THE  NUMBER  OF  40  HEXADECIMAL  WORD  BLOCKS 
*               REQUIRED  TO  WRITE OR READ THE ENTIRE NAD MEMORY BEING 
*               TESTED. 
*         B13 - CONTAINS THE MODULE NUMBER. 
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         OB(66) TO OB(77) - MAINTENANCE FUNCTION HEADER TABLE IF  EXIT 
*               IS MODULE LCM01B. 
*         OB(300) AND OB(301) - DATA PATTERNS FOR THE MODULE. 
* 
* 
0  FORMAT LCM01 - ONES AND ZEROS TEST 
* 
/---------DATA PATTERNS FOR THE MODULES.
* 
   DATA (OB(300),H) FF00
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY,PRINT    *DISPLAY RUNNING MESSAGE 
   IB(60)=20B 
   B5=100                    *B5 REGISTER EQUALS 100
   B10=P1                    *BUILD MEMORY BLOCK COUNT
   IF(B10.EQ.0)B10=1         *IF DEFAULT MEMORY PARAMETER 
   B10=B10+1.LS.7 
   IF(P1.NE.17) GOTO 31      *CHECK FOR TRANSMIC NAD
   B10=1774                  *DO NOT USE FF01 TO FFFF 
31 B13=1                     *MODULE NUMBER 
* 
/---------EXIT TO SUBMODULE TO TEST THE LOCAL NAD MEMORY. 
* 
   IF(DC.EQ.300) EXIT TO 01A  *IF LOCAL NAD 
* 
/---------INITIALIZE MAINTENANCE FUNCTION HEADER TABLE. 
* 
   OB(66)=SB(51)             *TCU SELECT
   OB(70)=SB(50)             *LOGICAL TCU ADDRESS 
   OB(71)=4                  *MAINT. AUTOLOAD FUNCTION
   OB(72)=SB(43)             *UPPER ACCESS CODE BYTE
   OB(73)=SB(44)             *LOWER ACCESS CODE BYTE
   OB(77)=100                *NUMBER OF NAD DATA WORDS
* 
/---------EXIT TO SUBMODULE TO TEST THE REMOTE NAD MEMORY.
* 
   EXIT TO 01B               *IF REMOTE NAD 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM01 - ONES AND ZEROS TEST 
   MODULE LCM01A,LCN(300)LOCK 
***       LCM01A - ONES AND ZEROS TEST
**
*         LCM01A - ONES AND ZEROS TEST
*         ----------------------------
* 
* 
*         PURPOSE-
*         TEST THE LOCAL NAD MEMORY USING DATA PATTERNS OF ALL ONES AND 
*         ALL ZEROS.
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE CONDITION NUMBER TO ZERO. 
*         3.  GENERATE THE DATA BUFFER OF THE DATA PATTERN TO  BE  USED 
*             TO  TEST  THE  LOCAL  NAD MEMORY FOR THIS CONDITION.  THE 
*             INITIAL DATA PATTERN GENERATED WILL BE 0377  OCTAL  (FFFF 
*             HEXADEMICAL). 
*         4.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE LOCAL NAD.
*         7.  WRITE 0001  HEXADECIMAL  INTO ADDRESS 0020 HEXADECIMAL IN 
*             THE LOCAL NAD TO PLACE THE TCI IN GO TO HANG MODE.
*         8.  WRITE THE  DATA  PATTERN  INTO ALL LOCATIONS IN THE LOCAL 
*             NAD   MEMORY   BUT   ADDRESSES   0030-003F   HEXADECIMAL. 
*             ADDRESSES  0030-003F HEXADECIMAL WILL BE WRITTEN WITH ALL 
*             ZEROS.
*         9.  DISPLAY  THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         10. RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         11. READ  A  BUFFER  OF 40 HEXADECIMAL WORDS OF DATA FROM THE 
*             LOCAL NAD MEMORY.  THE INITIAL READ WILL START AT ADDRESS 
*             ZERO IN THE LOCAL NAD MEMORY. 
*         12. IF A MEMORY PARITY ERROR CAUSES THE  COMMAND  THAT  READS 
*             THE  DATA  FROM  THE  NAD  TO  ABORT, REPORT A NAD MEMORY 
*             PARITY ERROR IF SCOPING LOOP IS NOT SELECTED. 
*         13. IF  THE BUFFER OF DATA CONTAINS THE CONTENTS OF ADDRESSES 
*             0030-003F HEXADECIMAL IN THE NAD,  CHANGE  THE  DATA  FOR 
*             THESE  ADDRESSES  TO  THE  EXPECTED  CONTENTS  FOR  THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0030-003F 
*             ARE NOT TESTED).
*         14. CHECK THE DATA READ FROM THE LOCAL NAD MEMORY.
*         15. REPEAT  STEPS  11  THROUGH  14 UNTIL ALL LOCATIONS IN THE 
*             LOCAL NAD MEMORY HAVE BEEN READ AND CHECKED.
*         16. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             15. 
*         17. REPEAT  STEPS  3  THROUGH  16 USING A DATA PATTERN OF ALL 
*             ZEROS.
*         18. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 17. 
*         19. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE INDICATING THE NUMBER OF ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         20. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10  REGISTER  CONTAINS  THE  NUMBER  OF  40 HEXADECIMAL WORD 
*            BLOCKS REQUIRED TO WRITE OR READ  THE  ENTIRE  NAD  MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(300) AND  OB(301) CONTAINS THE DATA PATTERNS TO BE TESTED. 
* 
*         EXIT- 
*         THE LOCAL NAD PROCESSOR MASTER CLEARED  AND  THE  NAD  COMMON 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT AND MODULE DETECTED OVERLAY  ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B6  - DATA PATTERN COUNTER. 
*         B7  - UPPER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B8  - LOWER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM01 ONES/ZEROS TEST   *DD 
1  FORMAT LCM01 ERROR(S) = *DECD
2  FORMAT LCM01 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CCMP=2, CMEMRD=5, CMEMWR=6, CPMC=7, CRES=10B
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 DUP OB(B6+300) TO OB(100) FOR 200  *GENERATE PATTERN 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
* 
/---------PLACE THE TCI IN GO TO HANG MODE. 
* 
   OB=0                      *GENERATE DATA FOR 0001 HEX. 
   OB(1)=1
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 2 WDS TO 20H FROM OB,ABT 74  *WRITE 
* 
/---------INITIALIZE REGISTERS FOR WRITING NAD MEMORY.
* 
   DUP 0 TO OB(240) FOR 40   *CLEAR UDI INTERFACE BLOCK 
   B9=0                      *INITIALIZE BUFFER COUNTER 
* 
/---------WRITE THE DATA PATTERN INTO NAD MEMORY. 
* 
36 B7=B9.RS.2                *SET NAD ADDRESS FOR WRITE 
   B8=B9.AND.3.LS.6 
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 200 WDS TO B7/B8 FROM OB(100),ABT 74
   IF(B9.EQ.0) COPY OB(100) TO OB(240) FOR 40  *ADD. 30-3F
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   GOSUB 66                  *RESERVE LCN CHANNEL 
40 B7=B9.RS.2                *SET NAD ADDRESS FOR READ
   B8=B9.AND.3.LS.6 
   WC=200                    *INITIALIZE WORD COUNT 
   IF(B9+1.EQ.B10) WC=176B   *RESET WORD COUNT IF LAST BUF. 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   B12=CMEMRD                *MEMORY READ COMMAND NUMBER
   MEMORY RD 8/12 WC WDS FROM B7/B8 TO IB(BA),ABT 72  *READ 
42 IF(B9.EQ.0)COPY OB(240) TO IB(240) FOR 40  *ADD. 30-3F 
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
44 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
46 IF(B11.NE.0) ERROR 0/100 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
50 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 50  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CRES                  *RES COMMAND NUMBER
   RES,ABT 74                *RESERVE LCN CHANNEL 
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 46 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=300-BA                 *RESET COMPARE WORD COUNT
   IF(B9+1.EQ.B10) WC=WC-2   *RESET WORD COUNT IF LAST BUF. 
   IF(ES.AND.SL.NE.0) GOTO 44  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/100 GOSUB 64  *REPORT DATA ERRORS
   GOTO 44                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON MEMORY READ COMMAND. 
* 
72 IF(EC.NE.6027B) GOTO 74   *IF NOT ABNORMAL GENERAL STATUS
   IF(SB.AND.10.EQ.0) GOTO 74  *IF NOT MEMORY PARITY ERROR
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/1 GOSUB 64        *PROCESS MEMORY PARITY ERROR 
   GOTO 42                   *GO TO CHECK DATA READ 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 46            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.2)  *LOOP TO DO TWO PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30   *IF REPEAT MODULE SELECTED 
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM01A - ONES AND ZEROS TEST
   MODULE LCM01B,LCN(301)LOCK 
***       LCM01B - ONES AND ZEROS TEST
**
*         LCM01B - ONES AND ZEROS TEST
*         ----------------------------
* 
* 
*         PURPOSE-
*         TEST  THE  REMOTE  NAD MEMORY USING DATA PATTERNS OF ALL ONES 
*         AND ALL ZEROS.
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE CONDITION NUMBER TO ZERO. 
*         3.  GENERATE THE DATA BUFFER OF THE DATA PATTERN TO  BE  USED 
*             TO  TEST  THE  REMOTE NAD MEMORY FOR THIS CONDITION.  THE 
*             INITIAL DATA PATTERN GENERATED WILL BE 0377  OCTAL  (FFFF 
*             HEXADEMICAL). 
*         4.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE  CHANNEL  TO  THE  LOCAL NAD AND, CONNECT AND 
*             SELECT  THE  MAINTENANCE  PATH  DA  IN  THE   LOCAL   NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE REMOTE NAD. 
*         7.  WRITE THE  DATA  PATTERN INTO ALL LOCATIONS IN THE REMOTE 
*             NAD   MEMORY   BUT   ADDRESSES   0020-003F   HEXADECIMAL. 
*             ADDRESSES  0020-003F HEXADECIMAL WILL BE WRITTEN WITH ALL 
*             ZEROS.  IF TESTING A TRANSMIC NAD, ADDR. FF01 - FFFF WILL 
*             NOT BE TESTED.
*         8.  DISPLAY  THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         9.  RESERVE THE CHANNEL TO THE LOCAL  NAD  AND,  CONNECT  AND 
*             SELECT   THE   MAINTENANCE  PATH  DA  IN  THE  LOCAL  NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         10. AUTODUMP  A  BUFFER  OF 40 HEXADECIMAL WORDS OF DATA FROM 
*             THE REMOTE NAD MEMORY.  THE INITIAL AUTODUMP  WILL  START 
*             AT ADDRESS ZERO IN THE REMOTE NAD MEMORY. 
*         11. IF A MEMORY PARITY ERROR CAUSES THE AUTODUMP COMMAND THAT 
*             READS  THE  DATA  FROM  THE  REMOTE NAD TO BE TERMINATED, 
*             REPORT A NAD MEMORY PARITY ERROR IF SCOPING LOOP  IS  NOT 
*             SELECTED. 
*         12. IF THE BUFFER OF DATA CONTAINS THE CONTENTS OF  ADDRESSES 
*             0020-003F  HEXADECIMAL IN THE REMOTE NAD, CHANGE THE DATA 
*             FOR THESE ADDRESSES TO THE EXPECTED  CONTENTS  FOR  THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0020-003F 
*             ARE NOT TESTED).
*         13. CHECK THE DATA READ FROM THE REMOTE NAD MEMORY. 
*         14. REPEAT STEPS 10 THROUGH 14 UNTIL  ALL  LOCATIONS  IN  THE 
*             REMOTE NAD MEMORY HAVE BEEN READ AND CHECKED. 
*         15. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  4  THROUGH 
*             14. 
*         16. REPEAT STEPS 3 THROUGH 15 USING A  DATA  PATTERN  OF  ALL 
*             ZEROS.
*         17. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH  16. 
*         18. IF  ANY  ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE INDICATING THE  NUMBER  OF  ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         19. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(66) - OB(77)  CONTAINS  THE  MAINTENANCE  FUNCTION  HEADER 
*            TABLE. 
*         OB(300) AND OB(301) CONTAINS THE DATA PATTERNS TO BE  TESTED. 
* 
*         EXIT- 
*         THE   REMOTE   NAD  PROCESSOR  MASTER  CLEARED  AND  THE  NAD 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT  OVERLAY AND MODULE DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B4  - MASTER WORD COUNT REGISTER. 
*         B6  - DATA PATTERN COUNTER. 
*         B7  - UPPER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B8  - LOWER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(0) TO IB(53) - PATH STATUS BUFFER. 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(0) TO OB(31) - MANITENANCE FUNCTION RESPONSE BUFFER. 
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM01 ONES/ZEROS TEST   *DD 
1  FORMAT LCM01 ERROR(S) = *DECD
2  FORMAT LCM01 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CAUTODM=1, CCMP=2, CCONPT=3, CMNTFC=4, CPMC=7 
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 DUP OB(B6+300) TO OB(100) FOR 200  *GENERATE PATTERN 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
   B9=0                      *INITIALIZE BUFFER COUNTER 
   WC=212                    *MAINT. FUNCTION WORD COUNT
   DUP 0 TO OB(200) FOR B5   *CLEAR ADDRESSES 20-3F 
* 
/---------WRITE THE DATA PATTERN INTO REMOTE NAD MEMORY.
* 
36 IF(B9.EQ.1777) WC=210     *IF NAD ADDRESS FFC0 
   OB(77)=WC-12.RS.1         *NAD WORD COUNT
   B12=CMNTFC                *MAINT. FUNCTION COMMAND NUMBER
   MAINT FUNCTION 4 WITH WC WDS FROM OB(66),ABT 74  *DATA 
   IF(B9.EQ.0) COPY OB(100) TO OB(200) FOR B5  *ADD. 20-3F
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   GOSUB 66                  *RESERVE LCN CHANNEL 
40 GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
42 B12=CAUTODM               *AUTODMP COMMAND NUMBER
   AUTODMP WC WORDS FROM B7/B8 TO IB(BA),ABT 72  *READ
   IF(WC.NE.2) GOTO 46       *IF ALL DATA READ
44 B8=B8+1                   *INCREMENT NAD ADDRESS 
   BA=BA+2                   *UPDATE BUFFER BASE ADDRESS
   IF(B4.+.B5.GT.BA)GOTO 42  *LOOP TO READ NAD WORDS
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/2 GOSUB 64        *REPORT DATA PARITY ERROR
   GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
46 IF(B9.EQ.0)COPY OB(200) TO IB(200) FOR B5  *ADD. 20-3F 
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
50 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
52 IF(B11.NE.0) ERROR 0/101 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
54 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------INITIALIZE ADD., WORD COUNT, AND LENGTH REGISTERS.
* 
60 B7=B9.RS.2                *SET NAD ADDRESS 
   B8=B9.AND.3.LS.6 
   B4=200                    *NORMAL WORD COUNT 
   IF(B9.EQ.1777) B4=176     *IF NAD ADDRESS IS FFC0
   WC=B4                     *INITIALIZE WORD COUNT 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 54  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CCONPT                *CONNECT PATH COMMAND NUMBER 
   RES MAINT PATH DA,BUFFER 1,ABT 74  *CONNECT MAINT. PATH
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 52 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=B4+B5-BA                *RESET COMPARE WORD COUNT 
   IF(ES.AND.SL.NE.0) GOTO 50  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/101 GOSUB 64  *REPORT DATA ERRORS
   GOTO 50                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON AUTODMP COMMAND. 
* 
72 IF(EC.NE.6032) GOTO 74    *IF NOT WORD COUNT ERROR 
   IF(OB(3).AND.160.NE.40) GOTO 74  *IF NOT PARITY ERROR
   IF(WC.EQ.2) GOTO 44       *IF NOT FIRST PARITY ERROR 
   WC=2                      *SET WORD COUNT EQUAL 2
   GOTO 42                   *GO TO REREAD THE DATA 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 52            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.2)  *LOOP TO DO TWO PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30  *IF REPEAT MODULE SELECTED
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM01B - ONES AND ZEROS TEST
   MODULE LCM02,LCN(300,301)LOCK
***       LCM02 - ALTERNATING ONES TEST 
**
*         LCM02 - ALTERNATING ONES TEST 
*         ----------------------------- 
* 
* 
*         PURPOSE-
*         DETERMINE  IF  THE  NAD  MEMORY TO BE TESTED IS IN A LOCAL OR 
*         REMOTE NAD AND EXIT TO THE APPROPRIATE SUBMODULE  (LCM02A  OR 
*         LCM02B) TO DO THE TESTING.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B5 REGISTER EQUAL TO 100 OCTAL. 
*         3.  SET   THE   B10  REGISTER  EQUAL  TO  THE  NUMBER  OF  40 
*             HEXADECIMAL WORD BLOCKS OF DATA REQUIRED TO WRITE OR READ 
*             THE ENTIRE NAD MEMORY AS DEFINED IN PARAMETER WORD P1.
*         4.  SET THE B13 REGISTER EQUAL TO THE MODULE NUMBER.
*         5.  IF THE  DEVICE ACCESS CODE IS EQUAL TO 300 OCTAL, EXIT TO 
*             MODULE LCM02A TO TEST THE MEMORY IN A LOCAL NAD.
*         6.  BUILD  THE  MAINTENANCE  FUNCTION  HEADER  TABLE  FOR THE 
*             MAINTENANCE FUNCTION TRANSACTION. 
*         7.  EXIT  TO  MODULE  LCM02B TO TEST THE MEMORY IN THE REMOTE 
*             NAD.
/ 
*         ENTRY-
*         DC REGISTER  CONTAINS  THE  DEVICE  CODE  FOR  THE  NAD TO BE 
*            TESTED.
*         PARAMETER WORD P1 CONTAINS THE NAD MEMORY SIZE. 
* 
*         EXIT- 
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10  REGISTER  CONTAINS  THE  NUMBER  OF  40 HEXADECIMAL WORD 
*            BLOCKS REQUIRED TO WRITE OR READ  THE  ENTIRE  NAD  MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE NUMBER OF THE MODULE. 
*         EXIT IS  TO SUBMODULE LCM02A IF THE DEVICE CODE IS 300 OCTAL. 
*         EXIT IS TO SUBMODULE LCM02B IF THE DEVICE CODE IS  301  OCTAL 
*            WITH THE MAINTENANCE FUNCTION HEADER TABLE BUILT.
* 
*         SUBMODULES REFERENCED-
*         LCM02A - TEST THE MEMORY IN A LOCAL NAD IF THE DEVICE CODE IS 
*                  EQUAL TO 300 OCTAL.
*         LCM02B - TEST THE MEMORY IN A REMOTE NAD IF THE  DEVICE  CODE 
*                  IS EQUAL TO 301 OCTAL. 
* 
*         REGISTERS USED- 
*         B5  - CONTAINS 100 OCTAL. 
*         B10 - CONTAINS THE  NUMBER  OF  40  HEXADECIMAL  WORD  BLOCKS 
*               REQUIRED TO WRITE OR READ THE ENTIRE NAD  MEMORY  BEING 
*               TESTED. 
*         B13 - CONTAINS THE MODULE NUMBER. 
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         OB(66)  TO OB(77) - MAINTENANCE FUNCTION HEADER TABLE IF EXIT 
*               IS MODULE LCM02B. 
*         OB(300) AND OB(301) - DATA PATTERNS FOR THE MODULE. 
* 
* 
0  FORMAT LCM02 - ALTERNATING ONES TEST 
1  FORMAT LCM02 ERROR(S) = *DECD
* 
/---------DATA PATTERNS FOR THE MODULES.
* 
   DATA (OB(300),H) 55AA
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY,PRINT    *DISPLAY RUNNING MESSAGE 
   IB(60)=20B 
   B5=100                    *B5 REGISTER EQUALS 100
   B10=P1                    *BUILD MEMORY BLOCK COUNT
   IF(B10.EQ.0)B10=1         *IF DEFAULT MEMORY PARAMETER 
   B10=B10+1.LS.7 
   IF(P1.NE.17) GOTO 31      *CHECK FOR TRANSMIC NAD
   B10=1774                  *DO NOT USE FF01 TO FFFF 
31 B13=2                     *MODULE NUMBER 
* 
/---------EXIT TO SUBMODULE TO TEST THE LOCAL NAD MEMORY. 
* 
   IF(DC.EQ.300) EXIT TO 02A  *IF LOCAL NAD 
* 
/---------INITIALIZE MAINTENANCE FUNCTION HEADER TABLE. 
* 
   OB(66)=SB(51)             *TCU SELECT
   OB(70)=SB(50)             *LOGICAL TCU ADDRESS 
   OB(71)=4                  *MAINT. AUTOLOAD FUNCTION
   OB(72)=SB(43)             *UPPER ACCESS CODE BYTE
   OB(73)=SB(44)             *LOWER ACCESS CODE BYTE
   OB(77)=100                *NUMBER OF NAD DATA WORDS
* 
/---------EXIT TO SUBMODULE TO TEST THE REMOTE NAD MEMORY.
* 
   EXIT TO 02B               *IF REMOTE NAD 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM02 - ALTERNATING ONES TEST 
   MODULE LCM02A,LCN(300)LOCK 
***       LCM02A - ALTERNATING ONES TEST
**
*         LCM02A - ALTERNATING ONES TEST
*         ------------------------------
* 
* 
*         PURPOSE-
*         TEST THE  LOCAL  NAD  MEMORY  USING  DATA  PATTERNS  OF  5555 
*         HEXADECIMAL AND AAAA HEXADECIMAL. 
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE CONDITION NUMBER TO ZERO. 
*         3.  GENERATE THE  DATA  BUFFER OF THE DATA PATTERN TO BE USED 
*             TO TEST THE LOCAL NAD MEMORY  FOR  THIS  CONDITION.   THE 
*             INITIAL  DATA  PATTERN GENERATED WILL BE 0125 OCTAL (5555 
*             HEXADEMICAL). 
*         4.  DISPLAY  THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE LOCAL NAD.
*         7.  WRITE 0001 HEXADECIMAL INTO ADDRESS 0020  HEXADECIMAL  IN 
*             THE LOCAL NAD TO PLACE THE TCI IN GO TO HANG MODE.
*         8.  WRITE THE DATA PATTERN INTO ALL LOCATIONS  IN  THE  LOCAL 
*             NAD   MEMORY   BUT   ADDRESSES   0030-003F   HEXADECIMAL. 
*             ADDRESSES 0030-003F HEXADECIMAL WILL BE WRITTEN WITH  ALL 
*             ZEROS.
*         9.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         10. RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         11. READ A BUFFER OF 40 HEXADECIMAL WORDS OF  DATA  FROM  THE 
*             LOCAL NAD MEMORY.  THE INITIAL READ WILL START AT ADDRESS 
*             ZERO IN THE LOCAL NAD MEMORY. 
*         12. IF  A  MEMORY  PARITY ERROR CAUSES THE COMMAND THAT READS 
*             THE DATA FROM THE NAD  TO  ABORT,  REPORT  A  NAD  MEMORY 
*             PARITY ERROR IF SCOPING LOOP IS NOT SELECTED. 
*         13. IF THE BUFFER OF DATA CONTAINS THE CONTENTS OF  ADDRESSES 
*             0030-003F  HEXADECIMAL  IN  THE  NAD, CHANGE THE DATA FOR 
*             THESE  ADDRESSES  TO  THE  EXPECTED  CONTENTS  FOR  THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0030-003F 
*             ARE NOT TESTED).
*         14. CHECK THE DATA READ FROM THE LOCAL NAD MEMORY.
*         15. REPEAT STEPS 11 THROUGH 14 UNTIL  ALL  LOCATIONS  IN  THE 
*             LOCAL NAD MEMORY HAVE BEEN READ AND CHECKED.
*         16. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  4  THROUGH 
*             15. 
*         17. REPEAT STEPS 3 THROUGH 16 USING A  DATA  PATTERN  OF  252 
*             OCTAL (AAAA HEXADECIMAL). 
*         18. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH  17. 
*         19. IF  ANY  ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE INDICATING THE  NUMBER  OF  ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         20. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(300) AND OB(301) CONTAINS THE DATA PATTERNS TO BE  TESTED. 
* 
*         EXIT- 
*         THE  LOCAL  NAD  PROCESSOR  MASTER CLEARED AND THE NAD COMMON 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT  AND MODULE DETECTED OVERLAY ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B6  - DATA PATTERN COUNTER. 
*         B7  - UPPER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B8  - LOWER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM02 ALT. ONES TEST    *DD 
1  FORMAT LCM02 ERROR(S) = *DECD
2  FORMAT LCM02 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CCMP=2, CMEMRD=5, CMEMWR=6, CPMC=7, CRES=10B
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 DUP OB(B6+300) TO OB(100) FOR 200  *GENERATE PATTERN 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
* 
/---------PLACE THE TCI IN GO TO HANG MODE. 
* 
   OB=0                      *GENERATE DATA FOR 0001 HEX. 
   OB(1)=1
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 2 WDS TO 20H FROM OB,ABT 74  *WRITE 
* 
/---------INITIALIZE REGISTERS FOR WRITING NAD MEMORY.
* 
   DUP 0 TO OB(240) FOR 40   *CLEAR UDI INTERFACE BLOCK 
   B9=0                      *INITIALIZE BUFFER COUNTER 
* 
/---------WRITE THE DATA PATTERN INTO NAD MEMORY. 
* 
36 B7=B9.RS.2                *SET NAD ADDRESS FOR WRITE 
   B8=B9.AND.3.LS.6 
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 200 WDS TO B7/B8 FROM OB(100),ABT 74
   IF(B9.EQ.0) COPY OB(100) TO OB(240) FOR 40  *ADD. 30-3F
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   GOSUB 66                  *RESERVE LCN CHANNEL 
40 B7=B9.RS.2                *SET NAD ADDRESS FOR READ
   B8=B9.AND.3.LS.6 
   WC=200                    *INITIALIZE WORD COUNT 
   IF(B9+1.EQ.B10) WC=176B   *RESET WORD COUNT IF LAST BUF. 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   B12=CMEMRD                *MEMORY READ COMMAND NUMBER
   MEMORY RD 8/12 WC WDS FROM B7/B8 TO IB(BA),ABT 72  *READ 
42 IF(B9.EQ.0) COPY OB(240) TO IB(240) FOR 40  *ADD. 30-3F
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
44 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
46 IF(B11.NE.0) ERROR 0/102 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
50 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 50  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CRES                  *RES COMMAND NUMBER
   RES,ABT 74                *RESERVE LCN CHANNEL 
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 46 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=300-BA                 *RESET COMPARE WORD COUNT
   IF(B9+1.EQ.B10) WC=WC-2   *RESET WORD COUNT IF LAST BUF. 
   IF(ES.AND.SL.NE.0) GOTO 44  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/102 GOSUB 64  *REPORT DATA ERRORS
   GOTO 44                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON MEMORY READ COMMAND. 
* 
72 IF(EC.NE.6027B) GOTO 74   *IF NOT ABNORMAL GENERAL STATUS
   IF(SB.AND.10.EQ.0) GOTO 74  *IF NOT MEMORY PARITY ERROR
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/3 GOSUB 64        *PROCESS MEMORY PARITY ERROR 
   GOTO 42                   *GO TO CHECK DATA READ 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 46            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.2)  *LOOP TO DO TWO PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30   *IF REPEAT MODULE SELECTED 
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM02A - ALTERNATING ONES TEST
   MODULE LCM02B,LCN(301)LOCK 
***       LCM02B - ALTERNATING ONES TEST
**
*         LCM02B - ALTERNATING ONES TEST
*         ------------------------------
* 
* 
*         PURPOSE-
*         TEST THE REMOTE  NAD  MEMORY  USING  DATA  PATTERNS  OF  5555 
*         HEXADECIMAL AND AAAA HEXADECIMAL. 
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE CONDITION NUMBER TO ZERO. 
*         3.  GENERATE THE  DATA  BUFFER OF THE DATA PATTERN TO BE USED 
*             TO TEST THE REMOTE NAD MEMORY FOR  THIS  CONDITION.   THE 
*             INITIAL  DATA  PATTERN GENERATED WILL BE 0125 OCTAL (5555 
*             HEXADEMICAL). 
*         4.  DISPLAY  THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE CHANNEL TO THE LOCAL  NAD  AND,  CONNECT  AND 
*             SELECT   THE   MAINTENANCE  PATH  DA  IN  THE  LOCAL  NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE REMOTE NAD. 
*         7.  WRITE THE DATA PATTERN INTO ALL LOCATIONS IN  THE  REMOTE 
*             NAD   MEMORY   BUT   ADDRESSES   0020-003F   HEXADECIMAL. 
*             ADDRESSES 0020-003F HEXADECIMAL WILL BE WRITTEN WITH  ALL 
*             ZEROS.  IF TESTING A TRANSMIC NAD, ADDR. FF01 - FFFF WILL 
*             NOT BE TESTED.
*         8.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         9.  RESERVE THE  CHANNEL  TO  THE  LOCAL NAD AND, CONNECT AND 
*             SELECT  THE  MAINTENANCE  PATH  DA  IN  THE   LOCAL   NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         10. AUTODUMP A BUFFER OF 40 HEXADECIMAL WORDS  OF  DATA  FROM 
*             THE  REMOTE  NAD MEMORY.  THE INITIAL AUTODUMP WILL START 
*             AT ADDRESS ZERO IN THE REMOTE NAD MEMORY. 
*         11. IF A MEMORY PARITY ERROR CAUSES THE AUTODUMP COMMAND THAT 
*             READS THE DATA FROM THE  REMOTE  NAD  TO  BE  TERMINATED, 
*             REPORT  A  NAD MEMORY PARITY ERROR IS SCOPING LOOP IS NOT 
*             SELECTED. 
*         12. IF  THE BUFFER OF DATA CONTAINS THE CONTENTS OF ADDRESSES 
*             0020-003F HEXADECIMAL IN THE REMOTE NAD, CHANGE THE  DATA 
*             FOR  THESE  ADDRESSES  TO THE EXPECTED CONTENTS FOR THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0020-003F 
*             ARE NOT TESTED).
*         13. CHECK THE DATA READ FROM THE REMOTE NAD MEMORY. 
*         14. REPEAT  STEPS  11  THROUGH  14 UNTIL ALL LOCATIONS IN THE 
*             REMOTE NAD MEMORY HAVE BEEN READ AND CHECKED. 
*         15. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             14. 
*         16. REPEAT  STEPS  3  THROUGH  15 USING A DATA PATTERN OF 252 
*             OCTAL (AAAA HEXADECIMAL). 
*         17. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 16. 
*         18. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE INDICATING THE NUMBER OF ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         19. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10  REGISTER  CONTAINS  THE  NUMBER  OF  40 HEXADECIMAL WORD 
*            BLOCKS REQUIRED TO WRITE OR READ  THE  ENTIRE  NAD  MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(66)  -  OB(77)  CONTAINS  THE  MAINTENANCE FUNCTION HEADER 
*            TABLE. 
*         OB(300) AND  OB(301) CONTAINS THE DATA PATTERNS TO BE TESTED. 
* 
*         EXIT- 
*         THE  REMOTE  NAD  PROCESSOR  MASTER  CLEARED  AND   THE   NAD 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT OVERLAY AND MODULE DETECTED  ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B4  - MASTER WORD COUNT REGISTER. 
*         B6  - DATA PATTERN COUNTER. 
*         B7  - UPPER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B8  - LOWER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(0) TO IB(53) - PATH STATUS BUFFER. 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(0) TO OB(31) - MANITENANCE FUNCTION RESPONSE BUFFER. 
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM02 ALT. ONES TEST    *DD 
1  FORMAT LCM02 ERROR(S) = *DECD
2  FORMAT LCM02 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CAUTODM=1, CCMP=2, CCONPT=3, CMNTFC=4, CPMC=7 
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 DUP OB(B6+300) TO OB(100) FOR 200  *GENERATE PATTERN 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
   B9=0                      *INITIALIZE BUFFER COUNTER 
   WC=212                    *MAINT. FUNCTION WORD COUNT
   DUP 0 TO OB(200) FOR B5   *CLEAR ADDRESSES 20-3F 
* 
/---------WRITE THE DATA PATTERN INTO REMOTE NAD MEMORY.
* 
36 IF(B9.EQ.1777) WC=210     *IF NAD ADDRESS FFC0 
   OB(77)=WC-12.RS.1         *NAD WORD COUNT
   B12=CMNTFC                *MAINT. FUNCTION COMMAND NUMBER
   MAINT FUNCTION 4 WITH WC WDS FROM OB(66),ABT 74  *DATA 
   IF(B9.EQ.0) COPY OB(100) TO OB(200) FOR B5  *ADD. 20-3F
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   GOSUB 66                  *RESERVE LCN CHANNEL 
40 GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
42 B12=CAUTODM               *AUTODMP COMMAND NUMBER
   AUTODMP WC WORDS FROM B7/B8 TO IB(BA),ABT 72  *READ
   IF(WC.NE.2) GOTO 46       *IF ALL DATA READ
44 B8=B8+1                   *INCREMENT NAD ADDRESS 
   BA=BA+2                   *UPDATE BUFFER BASE ADDRESS
   IF(B4.+.B5.GT.BA)GOTO 42  *LOOP TO READ NAD WORDS
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/4 GOSUB 64        *REPORT DATA PARITY ERROR
   GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
46 IF(B9.EQ.0)COPY OB(200) TO IB(200) FOR B5  *ADD. 20-3F 
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
50 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
52 IF(B11.NE.0) ERROR 0/103 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
54 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------INITIALIZE ADD., WORD COUNT, AND LENGTH REGISTERS.
* 
60 B7=B9.RS.2                *SET NAD ADDRESS 
   B8=B9.AND.3.LS.6 
   B4=200                    *NORMAL WORD COUNT 
   IF(B9.EQ.1777) B4=176     *IF NAD ADDRESS IS FFC0
   WC=B4                     *INITIALIZE WORD COUNT 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 54  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CCONPT                *CONNECT PATH COMMAND NUMBER 
   RES MAINT PATH DA,BUFFER 1,ABT 74  *CONNECT MAINT. PATH
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 52 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=B4+B5-BA                *RESET COMPARE WORD COUNT 
   IF(ES.AND.SL.NE.0) GOTO 50  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/103 GOSUB 64  *REPORT DATA ERRORS
   GOTO 50                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON AUTODMP COMMAND. 
* 
72 IF(EC.NE.6032) GOTO 74    *IF NOT WORD COUNT ERROR 
   IF(OB(3).AND.160.NE.40) GOTO 74  *IF NOT PARITY ERROR
   IF(WC.EQ.2) GOTO 44       *IF NOT FIRST PARITY ERROR 
   WC=2                      *SET WORD COUNT EQUAL 2
   GOTO 42                   *GO TO REREAD THE DATA 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 52            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.2)  *LOOP TO DO TWO PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30  *IF REPEAT MODULE SELECTED
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM02B - ALTERNATING ONES TEST
   MODULE LCM03,LCN(300,301)LOCK
***       LCM03 - SLIDING ZERO TEST TEST
**
*         LCM03 - SLIDING ZERO TEST TEST
*         ------------------------------
* 
* 
*         PURPOSE-
*         DETERMINE IF THE NAD MEMORY BEING TESTED IS  IN  A  LOCAL  OR 
*         REMOTE  NAD  AND EXIT TO THE APPROPRIATE SUBMODULE (LCM03A OR 
*         LCM03B) TO DO THE TESTING.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B5 REGISTER EQUAL TO 100 OCTAL. 
*         3.  SET  THE  B10  REGISTER  EQUAL  TO  THE  NUMBER   OF   40 
*             HEXADECIMAL WORD BLOCKS OF DATA REQUIRED TO WRITE OR READ 
*             THE ENTIRE NAD MEMORY AS DEFINED IN PARAMETER WORD P1.
*         4.  SET THE B13 REGISTER EQUAL TO THE MODULE NUMBER.
*         5.  IF THE DEVICE ACCESS CODE IS EQUAL TO 300 OCTAL, EXIT  TO 
*             MODULE LCM03A TO TEST THE MEMORY IN A LOCAL NAD.
*         6.  BUILD THE  MAINTENANCE  FUNCTION  HEADER  TABLE  FOR  THE 
*             MAINTENANCE FUNCTION TRANSACTION. 
*         7.  EXIT TO MODULE LCM03B TO TEST THE MEMORY  IN  THE  REMOTE 
*             NAD.
/ 
*         ENTRY-
*         DC REGISTER CONTAINS THE  DEVICE  CODE  FOR  THE  NAD  TO  BE 
*            TESTED.
*         PARAMETER WORD P1 CONTAINS THE NAD MEMORY SIZE. 
* 
*         EXIT- 
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE NUMBER OF THE MODULE. 
*         EXIT IS TO SUBMODULE LCM03A IF THE DEVICE CODE IS 300  OCTAL. 
*         EXIT  IS  TO SUBMODULE LCM03B IF THE DEVICE CODE IS 301 OCTAL 
*            WITH THE MAINTENANCE FUNCTION HEADER TABLE BUILT.
* 
*         SUBMODULES REFERENCED-
*         LCM03A - TEST THE MEMORY IN A LOCAL NAD IF THE DEVICE CODE IS 
*                  EQUAL TO 300 OCTAL.
*         LCM03B - TEST  THE  MEMORY IN A REMOTE NAD IF THE DEVICE CODE 
*                  IS EQUAL TO 301 OCTAL. 
* 
*         REGISTERS USED- 
*         B5  - CONTAINS 100 OCTAL. 
*         B10 - CONTAINS THE  NUMBER  OF  40  HEXADECIMAL  WORD  BLOCKS 
*               REQUIRED  TO  WRITE OR READ THE ENTIRE NAD MEMORY BEING 
*               TESTED. 
*         B13 - CONTAINS THE MODULE NUMBER. 
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         OB(66) TO OB(77) - MAINTENANCE FUNCTION HEADER TABLE IF  EXIT 
*               IS MODULE LCM03B. 
*         OB(300) TO OB(307) - DATA PATTERNS FOR THE MODULE.
* 
* 
0  FORMAT LCM03 - SLIDING ZERO TEST 
1  FORMAT LCM03 ERROR(S) = *DECD
* 
/---------DATA PATTERNS FOR THE MODULES.
* 
   DATA (OB(300),H) FEFD,FBF7,EFDF,BF7F 
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY,PRINT    *DISPLAY RUNNING MESSAGE 
   IB(60)=20B 
   B5=100                    *B5 REGISTER EQUALS 100
   B10=P1                    *BUILD MEMORY BLOCK COUNT
   IF(B10.EQ.0)B10=1         *IF DEFAULT MEMORY PARAMETER 
   B10=B10+1.LS.7 
   IF(P1.NE.17) GOTO 31      *CHECK FOR TRANSMIC NAD
   B10=1774                  *DO NOT USE FF01 TO FFFF 
31 B13=3                     *MODULE NUMBER 
* 
/---------EXIT TO SUBMODULE TO TEST THE LOCAL NAD MEMORY. 
* 
   IF(DC.EQ.300) EXIT TO 03A  *IF LOCAL NAD 
* 
/---------INITIALIZE MAINTENANCE FUNCTION HEADER TABLE. 
* 
   OB(66)=SB(51)             *TCU SELECT
   OB(70)=SB(50)             *LOGICAL TCU ADDRESS 
   OB(71)=4                  *MAINT. AUTOLOAD FUNCTION
   OB(72)=SB(43)             *UPPER ACCESS CODE BYTE
   OB(73)=SB(44)             *LOWER ACCESS CODE BYTE
   OB(77)=100                *NUMBER OF NAD DATA WORDS
* 
/---------EXIT TO SUBMODULE TO TEST THE REMOTE NAD MEMORY.
* 
   EXIT TO 03B               *IF REMOTE NAD 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM03 - SLIDING ZERO TEST 
   MODULE LCM03A,LCN(300)LOCK 
***       LCM03A - SLIDING ZERO TEST TEST 
**
*         LCM03A - SLIDING ZERO TEST TEST 
*         ------------------------------- 
* 
* 
*         PURPOSE-
*         TEST  THE  LOCAL  NAD MEMORY USING AN 8 BIT SLIDING ZERO DATA 
*         PATTERN (FEFE, FDFD, FBFB, F7F7, EFEF, DFDF ,BFBF,  AND  7F7F 
*         HEXADECIMAL). 
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  INITIALIZE THE CONDITION NUMBER BY SETTING IT TO ZERO.
*         3.  GENERATE THE  DATA  BUFFER OF THE DATA PATTERN TO BE USED 
*             TO TEST THE LOCAL NAD MEMORY  FOR  THIS  CONDITION.   THE 
*             INITIAL DATA  PATTERN GENERATED WILL BE FEFE HEXADECIMAL. 
*         4.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE LOCAL NAD.
*         7.  WRITE 0001  HEXADECIMAL  INTO ADDRESS 0020 HEXADECIMAL IN 
*             THE LOCAL NAD TO PLACE THE TCI IN GO TO HANG MODE.
*         8.  WRITE THE  DATA  PATTERN  INTO ALL LOCATIONS IN THE LOCAL 
*             NAD   MEMORY   BUT   ADDRESSES   0030-003F   HEXADECIMAL. 
*             ADDRESSES  0030-003F HEXADECIMAL WILL BE WRITTEN WITH ALL 
*             ZEROS.
*         9.  DISPLAY  THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         10. RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         11. READ  A  BUFFER  OF 40 HEXADECIMAL WORDS OF DATA FROM THE 
*             LOCAL NAD MEMORY.  THE INITIAL READ WILL START AT ADDRESS 
*             ZERO IN THE LOCAL NAD MEMORY. 
*         12. IF A MEMORY PARITY ERROR CAUSES THE  COMMAND  THAT  READS 
*             THE  DATA  FROM  THE  NAD  TO  ABORT, REPORT A NAD MEMORY 
*             PARITY ERROR IF SCOPING LOOP IS NOT SELECTED. 
*         13. IF  THE BUFFER OF DATA CONTAINS THE CONTENTS OF ADDRESSES 
*             0030-003F HEXADECIMAL IN THE NAD,  CHANGE  THE  DATA  FOR 
*             THESE  ADDRESSES  TO  THE  EXPECTED  CONTENTS  FOR  THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0030-003F 
*             ARE NOT TESTED).
*         14. CHECK THE DATA READ FROM THE LOCAL NAD MEMORY.
*         15. REPEAT  STEPS  11  THROUGH  14 UNTIL ALL LOCATIONS IN THE 
*             LOCAL NAD MEMORY HAVE BEEN READ AND CHECKED.
*         16. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             15. 
*         17. INCREMENT THE CONDITION NUMBER BY ONE.
*         18. REPEAT STEPS 3 THROUGH 17 USING A DATA PATTERNS OF  FDFD, 
*             FBFB, F7F7, EFEF, DFDF, BFBF, AND 7F7F HEXADECIMAL. 
*         19. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH  18. 
*         20. IF  ANY  ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE INDICATING THE  NUMBER  OF  ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         21. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(300) TO OB(307) CONTAINS THE DATA PATTERNS TO BE TESTED. 
* 
*         EXIT- 
*         THE  LOCAL  NAD  PROCESSOR  MASTER CLEARED AND THE NAD COMMON 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT  AND MODULE DETECTED OVERLAY ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B6  - DATA PATTERN COUNTER. 
*         B7  - UPPER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B8  - LOWER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM03 SLIDING ZERO TEST *DD 
1  FORMAT LCM03 ERROR(S) = *DECD
2  FORMAT LCM03 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CCMP=2, CMEMRD=5, CMEMWR=6, CPMC=7, CRES=10B
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 DUP OB(B6+300) TO OB(100) FOR 200  *GENERATE PATTERN 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
* 
/---------PLACE THE TCI IN GO TO HANG MODE. 
* 
   OB=0                      *GENERATE DATA FOR 0001 HEX. 
   OB(1)=1
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 2 WDS TO 20H FROM OB,ABT 74  *WRITE 
* 
/---------INITIALIZE REGISTERS FOR WRITING NAD MEMORY.
* 
   DUP 0 TO OB(240) FOR 40   *CLEAR UDI INTERFACE BLOCK 
   B9=0                      *INITIALIZE BUFFER COUNTER 
* 
/---------WRITE THE DATA PATTERN INTO NAD MEMORY. 
* 
36 B7=B9.RS.2                *SET NAD ADDRESS FOR WRITE 
   B8=B9.AND.3.LS.6 
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 200 WDS TO B7/B8 FROM OB(100),ABT 74
   IF(B9.EQ.0) COPY OB(100) TO OB(240) FOR 40  *ADD. 30-3F
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   GOSUB 66                  *RESERVE LCN CHANNEL 
40 B7=B9.RS.2                *SET NAD ADDRESS FOR READ
   B8=B9.AND.3.LS.6 
   WC=200                    *INITIALIZE WORD COUNT 
   IF(B9+1.EQ.B10) WC=176B   *RESET WORD COUNT IF LAST BUF. 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   B12=CMEMRD                *MEMORY READ COMMAND NUMBER
   MEMORY RD 8/12 WC WDS FROM B7/B8 TO IB(BA),ABT 72  *READ 
42 IF(B9.EQ.0) COPY OB(240) TO IB(240) FOR 40  *ADD. 30-3F
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
44 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
46 IF(B11.NE.0) ERROR 0/104 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
50 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 50  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CRES                  *RES COMMAND NUMBER
   RES,ABT 74                *RESERVE LCN CHANNEL 
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 46 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=300-BA                 *RESET COMPARE WORD COUNT
   IF(B9+1.EQ.B10) WC=WC-2   *RESET WORD COUNT IF LAST BUF. 
   IF(ES.AND.SL.NE.0) GOTO 44  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/104 GOSUB 64  *REPORT DATA ERRORS
   GOTO 44                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON MEMORY READ COMMAND. 
* 
72 IF(EC.NE.6027B) GOTO 74   *IF NOT ABNORMAL GENERAL STATUS
   IF(SB.AND.10.EQ.0) GOTO 74  *IF NOT MEMORY PARITY ERROR
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/5 GOSUB 64        *PROCESS MEMORY PARITY ERROR 
   GOTO 42                   *GO TO CHECK DATA READ 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 46            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.8)  *LOOP TO DO EIGHT PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30   *IF REPEAT MODULE SELECTED 
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM03A - SLIDING ZERO TEST
   MODULE LCM03B,LCN(301)LOCK 
***       LCM03B - SLIDING ZERO TEST TEST 
**
*         LCM03B - SLIDING ZERO TEST TEST 
*         ------------------------------- 
* 
* 
*         PURPOSE-
*         TEST THE REMOTE NAD MEMORY USING AN 8 BIT SLIDING  ZERO  DATA 
*         PATTERN  (FEFE,  FDFD, FBFB, F7F7, EFEF, DFDF ,BFBF, AND 7F7F 
*         HEXADECIMAL). 
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  INITIALIZE THE CONDITION NUMBER BY SETTING IT TO ZERO.
*         3.  GENERATE THE DATA BUFFER OF THE DATA PATTERN TO  BE  USED 
*             TO  TEST  THE  REMOTE NAD MEMORY FOR THIS CONDITION.  THE 
*             INITIAL DATA PATTERN GENERATED WILL BE FEFE  HEXADECIMAL. 
*         4.  DISPLAY  THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE CHANNEL TO THE LOCAL  NAD  AND,  CONNECT  AND 
*             SELECT   THE   MAINTENANCE  PATH  DA  IN  THE  LOCAL  NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE REMOTE NAD. 
*         7.  WRITE THE DATA PATTERN INTO ALL LOCATIONS IN  THE  REMOTE 
*             NAD   MEMORY   BUT   ADDRESSES   0020-003F   HEXADECIMAL. 
*             ADDRESSES 0020-003F HEXADECIMAL WILL BE WRITTEN WITH  ALL 
*             ZEROS.  IF TESTING A TRANSMIC NAD, ADDR. FF01 - FFFF WILL 
*             NOT BE TESTED.
*         8.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         9.  RESERVE THE  CHANNEL  TO  THE  LOCAL NAD AND, CONNECT AND 
*             SELECT  THE  MAINTENANCE  PATH  DA  IN  THE   LOCAL   NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         10. AUTODUMP A BUFFER OF 40 HEXADECIMAL WORDS  OF  DATA  FROM 
*             THE  REMOTE  NAD MEMORY.  THE INITIAL AUTODUMP WILL START 
*             AT ADDRESS ZERO IN THE REMOTE NAD MEMORY. 
*         11. IF A MEMORY PARITY ERROR CAUSES THE AUTODUMP COMMAND THAT 
*             READS THE DATA FROM THE  REMOTE  NAD  TO  BE  TERMINATED, 
*             REPORT  A  NAD MEMORY PARITY ERROR IS SCOPING LOOP IS NOT 
*             SELECTED. 
*         12. IF  THE BUFFER OF DATA CONTAINS THE CONTENTS OF ADDRESSES 
*             0020-003F HEXADECIMAL IN THE REMOTE NAD, CHANGE THE  DATA 
*             FOR  THESE  ADDRESSES  TO THE EXPECTED CONTENTS FOR THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0020-003F 
*             ARE NOT TESTED).
*         13. CHECK THE DATA READ FROM THE REMOTE NAD MEMORY. 
*         14. REPEAT  STEPS  11  THROUGH  14 UNTIL ALL LOCATIONS IN THE 
*             REMOTE NAD MEMORY HAVE BEEN READ AND CHECKED. 
*         15. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             14. 
*         16. INCREMENT THE CONDITION NUMBER BY ONE.
*         17. REPEAT STEPS 3 THROUGH 16 USING A DATA PATTERNS OF  FDFD, 
*             FBFB, F7F7, EFEF, DFDF, BFBF, AND 7F7F HEXADECIMAL. 
*         18. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH  17. 
*         19. IF  ANY  ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE INDICATING THE  NUMBER  OF  ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         20. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(66) - OB(77)  CONTAINS  THE  MAINTENANCE  FUNCTION  HEADER 
*            TABLE. 
*         OB(300) TO OB(307) CONTAINS THE DATA PATTERNS TO BE TESTED. 
* 
*         EXIT- 
*         THE   REMOTE   NAD  PROCESSOR  MASTER  CLEARED  AND  THE  NAD 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT  OVERLAY AND MODULE DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B4  - MASTER WORD COUNT REGISTER. 
*         B6  - DATA PATTERN COUNTER. 
*         B7  - UPPER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B8  - LOWER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(0) TO IB(53) - PATH STATUS BUFFER. 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(0) TO OB(31) - MANITENANCE FUNCTION RESPONSE BUFFER. 
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM03 SLIDING ZERO TEST *DD 
1  FORMAT LCM03 ERROR(S) = *DECD
2  FORMAT LCM03 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CAUTODM=1, CCMP=2, CCONPT=3, CMNTFC=4, CPMC=7 
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 DUP OB(B6+300) TO OB(100) FOR 200  *GENERATE PATTERN 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
   B9=0                      *INITIALIZE BUFFER COUNTER 
   WC=212                    *MAINT. FUNCTION WORD COUNT
   DUP 0 TO OB(200) FOR B5   *CLEAR ADDRESSES 20-3F 
* 
/---------WRITE THE DATA PATTERN INTO REMOTE NAD MEMORY.
* 
36 IF(B9.EQ.1777) WC=210     *IF NAD ADDRESS FFC0 
   OB(77)=WC-12.RS.1         *NAD WORD COUNT
   B12=CMNTFC                *MAINT. FUNCTION COMMAND NUMBER
   MAINT FUNCTION 4 WITH WC WDS FROM OB(66),ABT 74  *DATA 
   IF(B9.EQ.0) COPY OB(100) TO OB(200) FOR B5  *ADD. 20-3F
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   GOSUB 66                  *RESERVE LCN CHANNEL 
40 GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
42 B12=CAUTODM               *AUTODMP COMMAND NUMBER
   AUTODMP WC WORDS FROM B7/B8 TO IB(BA),ABT 72  *READ
   IF(WC.NE.2) GOTO 46       *IF ALL DATA READ
44 B8=B8+1                   *INCREMENT NAD ADDRESS 
   BA=BA+2                   *UPDATE BUFFER BASE ADDRESS
   IF(B4.+.B5.GT.BA)GOTO 42  *LOOP TO READ NAD WORDS
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/6 GOSUB 64        *REPORT DATA PARITY ERROR
   GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
46 IF(B9.EQ.0)COPY OB(200) TO IB(200) FOR B5  *ADD. 20-3F 
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
50 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
52 IF(B11.NE.0) ERROR 0/105 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
54 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------INITIALIZE ADD., WORD COUNT, AND LENGTH REGISTERS.
* 
60 B7=B9.RS.2                *SET NAD ADDRESS 
   B8=B9.AND.3.LS.6 
   B4=200                    *NORMAL WORD COUNT 
   IF(B9.EQ.1777) B4=176     *IF NAD ADDRESS IS FFC0
   WC=B4                     *INITIALIZE WORD COUNT 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 54  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CCONPT                *CONNECT PATH COMMAND NUMBER 
   RES MAINT PATH DA,BUFFER 1,ABT 74  *CONNECT MAINT. PATH
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 52 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=B4+B5-BA                *RESET COMPARE WORD COUNT 
   IF(ES.AND.SL.NE.0) GOTO 50  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/105 GOSUB 64  *REPORT DATA ERRORS
   GOTO 50                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON AUTODMP COMMAND. 
* 
72 IF(EC.NE.6032) GOTO 74    *IF NOT WORD COUNT ERROR 
   IF(OB(3).AND.160.NE.40) GOTO 74  *IF NOT PARITY ERROR
   IF(WC.EQ.2) GOTO 44       *IF NOT FIRST PARITY ERROR 
   WC=2                      *SET WORD COUNT EQUAL 2
   GOTO 42                   *GO TO REREAD THE DATA 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 52            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.8)  *LOOP TO DO EIGHT PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30  *IF REPEAT MODULE SELECTED
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM03B - SLIDING ZERO TEST
   MODULE LCM04,LCN(300,301)LOCK
***       LCM04 - SLIDING ONE TEST TEST 
**
*         LCM04 - SLIDING ONE TEST TEST 
*         ----------------------------- 
* 
* 
*         PURPOSE-
*         DETERMINE  IF  THE  NAD  MEMORY BEING TESTED IS IN A LOCAL OR 
*         REMOTE NAD AND EXIT TO THE APPROPRIATE SUBMODULE  (LCM04A  OR 
*         LCM04B) TO DO THE TESTING.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B5 REGISTER EQUAL TO 100 OCTAL. 
*         3.  SET   THE   B10  REGISTER  EQUAL  TO  THE  NUMBER  OF  40 
*             HEXADECIMAL WORD BLOCKS OF DATA REQUIRED TO WRITE OR READ 
*             THE ENTIRE NAD MEMORY AS DEFINED IN PARAMETER WORD P1.
*         4.  SET THE B13 REGISTER EQUAL TO THE MODULE NUMBER.
*         5.  IF THE  DEVICE ACCESS CODE IS EQUAL TO 300 OCTAL, EXIT TO 
*             MODULE LCM04A TO TEST THE MEMORY IN A LOCAL NAD.
*         6.  BUILD  THE  MAINTENANCE  FUNCTION  HEADER  TABLE  FOR THE 
*             MAINTENANCE FUNCTION TRANSACTION. 
*         7.  EXIT  TO  MODULE  LCM04B TO TEST THE MEMORY IN THE REMOTE 
*             NAD.
/ 
*         ENTRY-
*         DC REGISTER  CONTAINS  THE  DEVICE  CODE  FOR  THE  NAD TO BE 
*            TESTED.
*         PARAMETER WORD P1 CONTAINS THE NAD MEMORY SIZE. 
* 
*         EXIT- 
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10  REGISTER  CONTAINS  THE  NUMBER  OF  40 HEXADECIMAL WORD 
*            BLOCKS REQUIRED TO WRITE OR READ  THE  ENTIRE  NAD  MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE NUMBER OF THE MODULE. 
*         EXIT IS  TO SUBMODULE LCM04A IF THE DEVICE CODE IS 300 OCTAL. 
*         EXIT IS TO SUBMODULE LCM04B IF THE DEVICE CODE IS  301  OCTAL 
*            WITH THE MAINTENANCE FUNCTION HEADER TABLE BUILT.
* 
*         SUBMODULES REFERENCED-
*         LCM04A - TEST THE MEMORY IN A LOCAL NAD IF THE DEVICE CODE IS 
*                  EQUAL TO 300 OCTAL.
*         LCM04B - TEST THE MEMORY IN A REMOTE NAD IF THE  DEVICE  CODE 
*                  IS EQUAL TO 301 OCTAL. 
* 
*         REGISTERS USED- 
*         B5  - CONTAINS 100 OCTAL. 
*         B10 - CONTAINS THE  NUMBER  OF  40  HEXADECIMAL  WORD  BLOCKS 
*               REQUIRED TO WRITE OR READ THE ENTIRE NAD  MEMORY  BEING 
*               TESTED. 
*         B13 - CONTAINS THE MODULE NUMBER. 
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         OB(66)  TO OB(77) - MAINTENANCE FUNCTION HEADER TABLE IF EXIT 
*               IS MODULE LCM04B. 
*         OB(300) TO OB(307) - DATA PATTERNS FOR THE MODULE.
* 
* 
0  FORMAT LCM04 - SLIDING ONE TEST
1  FORMAT LCM04 ERROR(S) = *DECD
* 
* 
/---------DATA PATTERNS FOR THE MODULES.
* 
   DATA (OB(300),H) 0102,0408,1020,4080 
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY,PRINT    *DISPLAY RUNNING MESSAGE 
   IB(60)=20B 
   B5=100                    *B5 REGISTER EQUALS 100
   B10=P1                    *BUILD MEMORY BLOCK COUNT
   IF(B10.EQ.0)B10=1         *IF DEFAULT MEMORY PARAMETER 
   B10=B10+1.LS.7 
   IF(P1.NE.17) GOTO 31      *CHECK FOR TRANSMIC NAD
   B10=1774                  *DO NOT USE FF01 TO FFFF 
31 B13=4                     *MODULE NUMBER 
* 
/---------EXIT TO SUBMODULE TO TEST THE LOCAL NAD MEMORY. 
* 
   IF(DC.EQ.300) EXIT TO 04A  *IF LOCAL NAD 
* 
/---------INITIALIZE MAINTENANCE FUNCTION HEADER TABLE. 
* 
   OB(66)=SB(51)             *TCU SELECT
   OB(70)=SB(50)             *LOGICAL TCU ADDRESS 
   OB(71)=4                  *MAINT. AUTOLOAD FUNCTION
   OB(72)=SB(43)             *UPPER ACCESS CODE BYTE
   OB(73)=SB(44)             *LOWER ACCESS CODE BYTE
   OB(77)=100                *NUMBER OF NAD DATA WORDS
* 
/---------EXIT TO SUBMODULE TO TEST THE REMOTE NAD MEMORY.
* 
   EXIT TO 04B               *IF REMOTE NAD 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM04 - SLIDING ONE TEST
   MODULE LCM04A,LCN(300)LOCK 
***       LCM04A - SLIDING ONE TEST TEST
**
*         LCM04A - SLIDING ONE TEST TEST
*         ------------------------------
* 
* 
*         PURPOSE-
*         TEST THE LOCAL NAD MEMORY USING AN 8  BIT  SLIDING  ONE  DATA 
*         PATTERN  (0101,  0202, 0404, 0808, 1010, 2020 ,4040, AND 8080 
*         HEXADECIMAL). 
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  INITIALIZE THE CONDITION NUMBER BY SETTING IT TO ZERO.
*         3.  GENERATE THE DATA BUFFER OF THE DATA PATTERN TO  BE  USED 
*             TO  TEST  THE  LOCAL  NAD MEMORY FOR THIS CONDITION.  THE 
*             INITIAL DATA PATTERN GENERATED WILL BE 0101  HEXADECIMAL. 
*         4.  DISPLAY  THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE LOCAL NAD.
*         7.  WRITE 0001 HEXADECIMAL INTO ADDRESS 0020  HEXADECIMAL  IN 
*             THE LOCAL NAD TO PLACE THE TCI IN GO TO HANG MODE.
*         8.  WRITE THE DATA PATTERN INTO ALL LOCATIONS  IN  THE  LOCAL 
*             NAD   MEMORY   BUT   ADDRESSES   0030-003F   HEXADECIMAL. 
*             ADDRESSES 0030-003F HEXADECIMAL WILL BE WRITTEN WITH  ALL 
*             ZEROS.
*         9.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         10. RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         11. READ A BUFFER OF 40 HEXADECIMAL WORDS OF  DATA  FROM  THE 
*             LOCAL NAD MEMORY.  THE INITIAL READ WILL START AT ADDRESS 
*             ZERO IN THE LOCAL NAD MEMORY. 
*         12. IF  A  MEMORY  PARITY ERROR CAUSES THE COMMAND THAT READS 
*             THE DATA FROM THE NAD  TO  ABORT,  REPORT  A  NAD  MEMORY 
*             PARITY ERROR IF SCOPING LOOP IS NOT SELECTED. 
*         13. IF THE BUFFER OF DATA CONTAINS THE CONTENTS OF  ADDRESSES 
*             0030-003F  HEXADECIMAL  IN  THE  NAD, CHANGE THE DATA FOR 
*             THESE  ADDRESSES  TO  THE  EXPECTED  CONTENTS  FOR  THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0030-003F 
*             ARE NOT TESTED).
*         14. CHECK THE DATA READ FROM THE LOCAL NAD MEMORY.
*         15. REPEAT STEPS 11 THROUGH 14 UNTIL  ALL  LOCATIONS  IN  THE 
*             LOCAL NAD MEMORY HAVE BEEN READ AND CHECKED.
*         16. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  4  THROUGH 
*             15. 
*         17. INCREMENT THE CONDITION NUMBER BY ONE.
*         18. REPEAT  STEPS 3 THROUGH 17 USING A DATA PATTERNS OF 0202, 
*             0404, 0808, 1010, 2020, 4040, AND 8080 HEXADECIMAL. 
*         19. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 18. 
*         20. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE INDICATING THE NUMBER OF ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         21. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10  REGISTER  CONTAINS  THE  NUMBER  OF  40 HEXADECIMAL WORD 
*            BLOCKS REQUIRED TO WRITE OR READ  THE  ENTIRE  NAD  MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(300) TO OB(307) CONTAINS THE DATA PATTERNS TO BE TESTED. 
* 
*         EXIT- 
*         THE LOCAL NAD PROCESSOR MASTER CLEARED  AND  THE  NAD  COMMON 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT AND MODULE DETECTED OVERLAY  ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B6  - DATA PATTERN COUNTER. 
*         B7  - UPPER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B8  - LOWER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM04 SLIDING ONE TEST  *DD 
1  FORMAT LCM04 ERROR(S) = *DECD
2  FORMAT LCM04 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CCMP=2, CMEMRD=5, CMEMWR=6, CPMC=7, CRES=10B
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 DUP OB(B6+300) TO OB(100) FOR 200  *GENERATE PATTERN 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
* 
/---------PLACE THE TCI IN GO TO HANG MODE. 
* 
   OB=0                      *GENERATE DATA FOR 0001 HEX. 
   OB(1)=1
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 2 WDS TO 20H FROM OB,ABT 74  *WRITE 
* 
/---------INITIALIZE REGISTERS FOR WRITING NAD MEMORY.
* 
   DUP 0 TO OB(240) FOR 40   *CLEAR UDI INTERFACE BLOCK 
   B9=0                      *INITIALIZE BUFFER COUNTER 
* 
/---------WRITE THE DATA PATTERN INTO NAD MEMORY. 
* 
36 B7=B9.RS.2                *SET NAD ADDRESS FOR WRITE 
   B8=B9.AND.3.LS.6 
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 200 WDS TO B7/B8 FROM OB(100),ABT 74
   IF(B9.EQ.0) COPY OB(100) TO OB(240) FOR 40  *ADD. 30-3F
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   GOSUB 66                  *RESERVE LCN CHANNEL 
40 B7=B9.RS.2                *SET NAD ADDRESS FOR READ
   B8=B9.AND.3.LS.6 
   WC=200                    *INITIALIZE WORD COUNT 
   IF(B9+1.EQ.B10) WC=176B   *RESET WORD COUNT IF LAST BUF. 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   B12=CMEMRD                *MEMORY READ COMMAND NUMBER
   MEMORY RD 8/12 WC WDS FROM B7/B8 TO IB(BA),ABT 72  *READ 
42 IF(B9.EQ.0) COPY OB(240) TO IB(240) FOR 40  *ADD. 30-3F
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
44 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
46 IF(B11.NE.0) ERROR 0/106 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
50 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 50  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CRES                  *RES COMMAND NUMBER
   RES,ABT 74                *RESERVE LCN CHANNEL 
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 46 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=300-BA                 *RESET COMPARE WORD COUNT
   IF(B9+1.EQ.B10) WC=WC-2   *RESET WORD COUNT IF LAST BUF. 
   IF(ES.AND.SL.NE.0) GOTO 44  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/106 GOSUB 64  *REPORT DATA ERRORS
   GOTO 44                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON MEMORY READ COMMAND. 
* 
72 IF(EC.NE.6027B) GOTO 74   *IF NOT ABNORMAL GENERAL STATUS
   IF(SB.AND.10.EQ.0) GOTO 74  *IF NOT MEMORY PARITY ERROR
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/7 GOSUB 64        *PROCESS MEMORY PARITY ERROR 
   GOTO 42                   *GO TO CHECK DATA READ 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 46            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.8)  *LOOP TO DO EIGHT PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30   *IF REPEAT MODULE SELECTED 
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM04A - SLIDING ONE TEST 
   MODULE LCM04B,LCN(301)LOCK 
***       LCM04B - SLIDING ONE TEST TEST
**
*         LCM04B - SLIDING ONE TEST TEST
*         ------------------------------
* 
* 
*         PURPOSE-
*         TEST  THE  REMOTE  NAD MEMORY USING AN 8 BIT SLIDING ONE DATA 
*         PATTERN (0101, 0202, 0404, 0808, 1010, 2020 ,4040,  AND  8080 
*         HEXADECIMAL). 
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  INITIALIZE THE CONDITION NUMBER BY SETTING IT TO ZERO.
*         3.  GENERATE THE  DATA  BUFFER OF THE DATA PATTERN TO BE USED 
*             TO TEST THE REMOTE NAD MEMORY FOR  THIS  CONDITION.   THE 
*             INITIAL DATA  PATTERN GENERATED WILL BE 0101 HEXADECIMAL. 
*         4.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE  CHANNEL  TO  THE  LOCAL NAD AND, CONNECT AND 
*             SELECT  THE  MAINTENANCE  PATH  DA  IN  THE   LOCAL   NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         5.  RESERVE THE CHANNEL TO  THE  LOCAL  NAD  AND  SELECT  THE 
*             MAINTENANCE PATH DM IN THE LOCAL NAD CONTROLWARE. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE REMOTE NAD. 
*         7.  WRITE THE  DATA  PATTERN INTO ALL LOCATIONS IN THE REMOTE 
*             NAD   MEMORY   BUT   ADDRESSES   0020-003F   HEXADECIMAL. 
*             ADDRESSES  0020-003F HEXADECIMAL WILL BE WRITTEN WITH ALL 
*             ZEROS.  IF TESTING A TRANSMIC NAD, ADDR. FF01 - FFFF WILL 
*             NOT BE TESTED.
*         8.  DISPLAY  THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         9.  RESERVE THE CHANNEL TO THE LOCAL  NAD  AND,  CONNECT  AND 
*             SELECT   THE   MAINTENANCE  PATH  DA  IN  THE  LOCAL  NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         10. AUTODUMP  A  BUFFER  OF 40 HEXADECIMAL WORDS OF DATA FROM 
*             THE REMOTE NAD MEMORY.  THE INITIAL AUTODUMP  WILL  START 
*             AT ADDRESS ZERO IN THE REMOTE NAD MEMORY. 
*         11. IF A MEMORY PARITY ERROR CAUSES THE AUTODUMP COMMAND THAT 
*             READS  THE  DATA  FROM  THE  REMOTE NAD TO BE TERMINATED, 
*             REPORT A NAD MEMORY PARITY ERROR IS SCOPING LOOP  IS  NOT 
*             SELECTED. 
*         12. IF THE BUFFER OF DATA CONTAINS THE CONTENTS OF  ADDRESSES 
*             0020-003F  HEXADECIMAL IN THE REMOTE NAD, CHANGE THE DATA 
*             FOR THESE ADDRESSES TO THE EXPECTED  CONTENTS  FOR  THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0020-003F 
*             ARE NOT TESTED).
*         13. CHECK THE DATA READ FROM THE REMOTE NAD MEMORY. 
*         14. REPEAT STEPS 11 THROUGH 14 UNTIL  ALL  LOCATIONS  IN  THE 
*             REMOTE NAD MEMORY HAVE BEEN READ AND CHECKED. 
*         15. IF REPEAT CONDITION IS SELECTED, REPEAT STEPS  4  THROUGH 
*             14. 
*         16. INCREMENT THE CONDITION NUMBER BY ONE.
*         17. REPEAT  STEPS 3 THROUGH 16 USING A DATA PATTERNS OF 0202, 
*             0404, 0808, 1010, 2020, 4040, AND 8080 HEXADECIMAL. 
*         18. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 17. 
*         19. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE INDICATING THE NUMBER OF ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         20. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10  REGISTER  CONTAINS  THE  NUMBER  OF  40 HEXADECIMAL WORD 
*            BLOCKS REQUIRED TO WRITE OR READ  THE  ENTIRE  NAD  MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(66)  -  OB(77)  CONTAINS  THE  MAINTENANCE FUNCTION HEADER 
*            TABLE. 
*         OB(300) TO OB(307) CONTAINS THE DATA PATTERNS TO BE TESTED. 
* 
*         EXIT- 
*         THE LOCAL NAD PROCESSOR MASTER CLEARED  AND  THE  NAD  COMMON 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT OVERLAY AND MODULE DETECTED  ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B4  - MASTER WORD COUNT REGISTER. 
*         B6  - DATA PATTERN COUNTER. 
*         B7  - UPPER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B8  - LOWER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(0) TO IB(53) - PATH STATUS BUFFER. 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(0) TO OB(31) - MANITENANCE FUNCTION RESPONSE BUFFER. 
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM04 SLIDING ONE TEST  *DD 
1  FORMAT LCM04 ERROR(S) = *DECD
2  FORMAT LCM04 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CAUTODM=1, CCMP=2, CCONPT=3, CMNTFC=4, CPMC=7 
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 DUP OB(B6+300) TO OB(100) FOR 200  *GENERATE PATTERN 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
   B9=0                      *INITIALIZE BUFFER COUNTER 
   WC=212                    *MAINT. FUNCTION WORD COUNT
   DUP 0 TO OB(200) FOR B5   *CLEAR ADDRESSES 20-3F 
* 
/---------WRITE THE DATA PATTERN INTO REMOTE NAD MEMORY.
* 
36 IF(B9.EQ.1777) WC=210     *IF NAD ADDRESS FFC0 
   OB(77)=WC-12.RS.1         *NAD WORD COUNT
   B12=CMNTFC                *MAINT. FUNCTION COMMAND NUMBER
   MAINT FUNCTION 4 WITH WC WDS FROM OB(66),ABT 74  *DATA 
   IF(B9.EQ.0) COPY OB(100) TO OB(200) FOR B5  *ADD. 20-3F
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   GOSUB 66                  *RESERVE LCN CHANNEL 
40 GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
42 B12=CAUTODM               *AUTODMP COMMAND NUMBER
   AUTODMP WC WORDS FROM B7/B8 TO IB(BA),ABT 72  *READ
   IF(WC.NE.2) GOTO 46       *IF ALL DATA READ
44 B8=B8+1                   *INCREMENT NAD ADDRESS 
   BA=BA+2                   *UPDATE BUFFER BASE ADDRESS
   IF(B4.+.B5.GT.BA)GOTO 42  *LOOP TO READ NAD WORDS
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/10 GOSUB 64       *REPORT DATA PARITY ERROR
   GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
46 IF(B9.EQ.0)COPY OB(200) TO IB(200) FOR B5  *ADD. 20-3F 
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
50 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
52 IF(B11.NE.0) ERROR 0/107 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
54 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------INITIALIZE ADD., WORD COUNT, AND LENGTH REGISTERS.
* 
60 B7=B9.RS.2                *SET NAD ADDRESS 
   B8=B9.AND.3.LS.6 
   B4=200                    *NORMAL WORD COUNT 
   IF(B9.EQ.1777) B4=176     *IF NAD ADDRESS IS FFC0
   WC=B4                     *INITIALIZE WORD COUNT 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 54  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CCONPT                *CONNECT PATH COMMAND NUMBER 
   RES MAINT PATH DA,BUFFER 1,ABT 74  *CONNECT MAINT. PATH
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 52 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=B4+B5-BA                *RESET COMPARE WORD COUNT 
   IF(ES.AND.SL.NE.0) GOTO 50  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/107 GOSUB 64  *REPORT DATA ERRORS
   GOTO 50                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON AUTODMP COMMAND. 
* 
72 IF(EC.NE.6032) GOTO 74    *IF NOT WORD COUNT ERROR 
   IF(OB(3).AND.160.NE.40) GOTO 74  *IF NOT PARITY ERROR
   IF(WC.EQ.2) GOTO 44       *IF NOT FIRST PARITY ERROR 
   WC=2                      *SET WORD COUNT EQUAL 2
   GOTO 42                   *GO TO REREAD THE DATA 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 52            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.8)  *LOOP TO DO EIGHT PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30  *IF REPEAT MODULE SELECTED
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM04B - SLIDING ONE TEST 
   MODULE LCM05,LCN(300,301)LOCK
***       LCM05 - ADDRESSING TEST 
**
*         LCM05 - ADDRESSING TEST 
*         ----------------------- 
* 
* 
*         PURPOSE 
*         DETERMINE IF THE NAD MEMORY TO BE TESTED IS  IN  A  LOCAL  OR 
*         REMOTE  NAD  AND EXIT TO THE APPROPRIATE SUBMODULE (LCM05A OR 
*         LCM05B) TO DO THE TESTING.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B5 REGISTER EQUAL TO 100 OCTAL. 
*         3.  SET  THE  B10  REGISTER  EQUAL  TO  THE  NUMBER   OF   40 
*             HEXADECIMAL WORD BLOCKS OF DATA REQUIRED TO WRITE OR READ 
*             THE ENTIRE NAD MEMORY AS DEFINED IN PARAMETER WORD P1.
*         4.  SET THE B13 REGISTER EQUAL TO THE MODULE NUMBER.
*         5.  IF THE DEVICE ACCESS CODE IS EQUAL TO 300 OCTAL, EXIT  TO 
*             MODULE LCM05A TO TEST THE MEMORY IN A LOCAL NAD.
*         6.  BUILD THE  MAINTENANCE  FUNCTION  HEADER  TABLE  FOR  THE 
*             MAINTENANCE FUNCTION TRANSACTION. 
*         7.  EXIT TO MODULE LCM05B TO TEST THE MEMORY  IN  THE  REMOTE 
*             NAD.
/ 
*         ENTRY-
*         DC REGISTER CONTAINS THE  DEVICE  CODE  FOR  THE  NAD  TO  BE 
*            TESTED.
*         PARAMETER WORD P1 CONTAINS THE NAD MEMORY SIZE. 
* 
*         EXIT- 
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE NUMBER OF THE MODULE. 
*         EXIT IS TO SUBMODULE LCM05A IF THE DEVICE CODE IS 300  OCTAL. 
*         EXIT  IS  TO SUBMODULE LCM05B IF THE DEVICE CODE IS 301 OCTAL 
*            WITH THE MAINTENANCE FUNCTION HEADER TABLE BUILT.
* 
*         SUBMODULES REFERENCED-
*         LCM05A - TEST THE MEMORY IN A LOCAL NAD IF THE DEVICE CODE IS 
*                  EQUAL TO 300 OCTAL.
*         LCM05B - TEST  THE  MEMORY IN A REMOTE NAD IF THE DEVICE CODE 
*                  IS EQUAL TO 301 OCTAL. 
* 
*         REGISTERS USED- 
*         B5  - CONTAINS 100 OCTAL. 
*         B10 - CONTAINS THE  NUMBER  OF  40  HEXADECIMAL  WORD  BLOCKS 
*               REQUIRED  TO  WRITE OR READ THE ENTIRE NAD MEMORY BEING 
*               TESTED. 
*         B13 - CONTAINS THE MODULE NUMBER. 
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         OB(66) TO OB(77) - MAINTENANCE FUNCTION HEADER TABLE IF  EXIT 
*               IS MODULE LCM05B. 
* 
* 
0  FORMAT LCM05 - ADDRESSING TEST 
1  FORMAT LCM05 ERROR(S) = *DECD
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY,PRINT    *DISPLAY RUNNING MESSAGE 
   IB(60)=20B 
   B5=100                    *B5 REGISTER EQUALS 100
   B10=P1                    *BUILD MEMORY BLOCK COUNT
   IF(B10.EQ.0)B10=1         *IF DEFAULT MEMORY PARAMETER 
   B10=B10+1.LS.7 
   IF(P1.NE.17) GOTO 31      *CHECK FOR TRANSMIC NAD
   B10=1774                  *DO NOT USE FF01 TO FFFF 
31 B13=5                     *MODULE NUMBER 
* 
/---------EXIT TO SUBMODULE TO TEST THE LOCAL NAD MEMORY. 
* 
   IF(DC.EQ.300) EXIT TO 05A  *IF LOCAL NAD 
* 
/---------INITIALIZE MAINTENANCE FUNCTION HEADER TABLE. 
* 
   OB(66)=SB(51)             *TCU SELECT
   OB(70)=SB(50)             *LOGICAL TCU ADDRESS 
   OB(71)=4                  *MAINT. AUTOLOAD FUNCTION
   OB(72)=SB(43)             *UPPER ACCESS CODE BYTE
   OB(73)=SB(44)             *LOWER ACCESS CODE BYTE
   OB(77)=100                *NUMBER OF NAD DATA WORDS
* 
/---------EXIT TO SUBMODULE TO TEST THE REMOTE NAD MEMORY.
* 
   EXIT TO 05B               *IF REMOTE NAD 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM05 - ADDRESSING TEST 
   MODULE LCM05A,LCN(300)LOCK 
***       LCM05A - ADDRESSING TEST
**
*         LCM05A - ADDRESSING TEST
*         ------------------------
* 
* 
*         PURPOSE-
*         TEST THE ADDRESSING IN THE LOCAL NAD MEMORY.
* 
* 
*         METHOD- 
*         1.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         2.  RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         3.  MASTER CLEAR THE PROCESSOR IN THE LOCAL NAD.
*         4.  WRITE 0001  HEXADECIMAL  INTO ADDRESS 0020 HEXADECIMAL IN 
*             THE LOCAL NAD TO PLACE THE TCI IN GO TO HANG MODE.
*         5.  IF  THE NUMBER OF 40 HEXADECIMAL WORDS BLOCK WRITTEN INTO 
*             THE LOCAL NAD MEMORY SO FAR EQUALS 0, OR  200  OCTAL,  OR 
*             400  OCTAL,  OR 600 OCTAL, DISPLAY THE RUNNING MESSAGE IF 
*             SCOPING LOOP IS NOT  SELECTED  OR  THE  REPEAT  CONDITION 
*             MESSAGE  IF  SCOPING  LOOP  IS  SELECTED  AND RESERVE THE 
*             CHANNEL TO THE LOCAL NAD. 
*         6.  GENERATE   THE   ADDRESSING   DATA  PATTERN  FOR  THE  40 
*             HEXADECIMAL MEMORY LOCATIONS TO BE WRITTEN IN  THE  LOCAL 
*             NAD.
*         7.  IF THE ADDRESSING DATA  PATTERN  GENERATED  CONTAINS  THE 
*             ADDRESSING  DATA  PATTERN  TO  BE  WRITTEN INTO ADDRESSES 
*             0030-003F  HEXADECIMAL,  CHANGE  THE  CONTENTS   OF   THE 
*             LOCATIONS  FOR  ADDRESSES  0030-003F  HEXADECIMAL  TO ALL 
*             ZEROS IN THE DATA BUFFER. 
*         8.  WRITE THE ADDRESSING DATA PATTERN IN THE DATA BUFFER INTO 
*             THE 40 HEXADECIMAL MEMORY LOCATIONS IN THE LOCAL NAD. 
*         9.  REPEAT  STEPS  5  THROUGH  8  UNTIL  THE ENTIRE MEMORY IS 
*             WRITTEN IN THE LOCAL NAD. 
*         10. IF THE NUMBER OF 40 HEXADECIMAL WORDS BLOCK READ FROM THE 
*             LOCAL NAD MEMORY SO FAR EQUALS 0, OR 200  OCTAL,  OR  400 
*             OCTAL,  OR  600  OCTAL,  DISPLAY  THE  RUNNING MESSAGE IF 
*             SCOPING LOOP IS NOT  SELECTED  OR  THE  REPEAT  CONDITION 
*             MESSAGE  IF  SCOPING  LOOP  IS  SELECTED  AND RESERVE THE 
*             CHANNEL TO THE LOCAL NAD. 
*         11. GENERATE   THE   ADDRESSING   DATA  PATTERN  FOR  THE  40 
*             HEXADECIMAL MEMORY LOCATIONS TO BE READ  FROM  THE  LOCAL 
*             NAD.
*         12. READ A BUFFER OF DATA FROM THE  LOCAL  NAD  MEMORY.   THE 
*             INITIAL  READ WILL START AT ADDRESS ZERO IN THE LOCAL NAD 
*             MEMORY. 
*         13. IF  A  MEMORY  PARITY ERROR CAUSES THE COMMAND THAT READS 
*             THE DATA FROM THE NAD  TO  ABORT,  REPORT  A  NAD  MEMORY 
*             PARITY ERROR IF SCOPING LOOP IS NOT SELECTED. 
*         14. IF THE BUFFER OF  DATA  READ  CONTAINS  THE  CONTENTS  OF 
*             ADDRESSES  0030-003F  HEXADECIMAL  IN THE NAD, CHANGE THE 
*             DATA FOR THESE ADDRESSES TO  THE  EXPECTED  CONTENTS  FOR 
*             THESE  ADDRESSES  IN  THE  COMPARE DATA BUFFER (ADDRESSES 
*             0030-003F ARE NOT TESTED).
*         15. CHECK THE ADDRESSING DATA PATTERN READ FROM THE LOCAL NAD 
*             MEMORY. 
*         16. REPEAT  STEPS  10  THROUGH  14 UNTIL ALL LOCATIONS IN THE 
*             LOCAL NAD MEMORY HAVE BEEN READ AND CHECKED.
*         17. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 2 THROUGH 
*             16. 
*         18. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 17. 
*         19. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE INDICATING THE NUMBER OF ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         20. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10  REGISTER  CONTAINS  THE  NUMBER  OF  40 HEXADECIMAL WORD 
*            BLOCKS REQUIRED TO WRITE OR READ  THE  ENTIRE  NAD  MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
* 
*         EXIT- 
*         THE  LOCAL  NAD  PROCESSOR  MASTER CLEARED AND THE NAD COMMON 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT  AND MODULE DETECTED OVERLAY ERRORS. 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B7  - UPPER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B8  - LOWER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM05 ADDRESSING TEST   *DD 
1  FORMAT LCM05 ERROR(S) = *DECD
2  FORMAT LCM05 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CCMP=2, CMEMRD=5, CMEMWR=6, CPMC=7, CRES=10B
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
32 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
* 
/---------PLACE THE TCI IN GO TO HANG MODE. 
* 
   OB=0                      *GENERATE DATA FOR 0001 HEX. 
   OB(1)=1
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 2 WDS TO 20H FROM OB,ABT 74  *WRITE 
* 
/---------INITIALIZE REGISTERS FOR WRITING NAD MEMORY.
* 
   B9=0                      *INITIALIZE BUFFER COUNTER 
* 
/---------WRITE THE DATA PATTERN INTO NAD MEMORY. 
* 
34 GOSUB 54                  *GENERATE DATA PATTERN 
   IF(B9.EQ.0)DUP 0 TO OB(240) FOR 40  *CLEAR UDI INTERFACE 
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 WC WDS TO B7/B8 FROM OB(100),ABT 74 
   GOTO 34 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
36 GOSUB 54                  *GENERATE DATA PATTERN 
   IF(B9+1.EQ.B10) WC=176B   *RESET WORD COUNT IF LAST BUF. 
   B12=CMEMRD                *MEMORY READ COMMAND NUMBER
   MEMORY RD 8/12 WC WDS FROM B7/B8 TO IB(BA),ABT 72  *READ 
40 IF(B9.EQ.0) COPY OB(240) TO IB(240) FOR 40  *ADD. 30-3F
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
42 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
44 IF(B11.NE.0) ERROR 0/110 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
46 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 32                   *GO TO REPEAT THE CONDITION
* 
/---------GENERATE ADDRESSING DATA PATTERN. 
* 
54 B7=B9.RS.2                *SET NAD ADDRESS 
   B8=B9.AND.3.LS.6 
   B0=0                      *INITIALIZE COUNTER
56 OB(B0+100)=B7             *UPPER 8 BITS OF ADDRESS 
   OB(B0+101)=B0.RS.1+B8     *LOWER 8 BITS OF ADDRESS 
   GOTO 56 WHILE (B0+2.LT.200)  *LOOP TO DO 40 ADDRESSES
   WC=200                    *INITIALIZE WORD COUNT 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   IF(B9.AND.177.EQ.0) GOTO 66  *RESERVE LCN CHANNEL
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 46  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CRES                  *RES COMMAND NUMBER
   RES,ABT 74                *RESERVE LCN CHANNEL 
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 44 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=300-BA                 *RESET COMPARE WORD COUNT
   IF(B9+1.EQ.B10) WC=WC-2   *RESET WORD COUNT IF LAST BUF. 
   IF(ES.AND.SL.NE.0) GOTO 42  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/110 GOSUB 64  *REPORT DATA ERRORS
   GOTO 42                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON MEMORY READ COMMAND. 
* 
72 IF(EC.NE.6027B) GOTO 74   *IF NOT ABNORMAL GENERAL STATUS
   IF(SB.AND.10.EQ.0) GOTO 74  *IF NOT MEMORY PARITY ERROR
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/11 GOSUB 64       *PROCESS MEMORY PARITY ERROR 
   GOTO 40                   *GO TO CHECK DATA READ 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 44            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30  *IF REPEAT MODULE SELECTED
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM05A - ADDRESSING TEST
   MODULE LCM05B,LCN(301)LOCK 
***       LCM05B - ADDRESSING TEST
**
*         LCM05B - ADDRESSING TEST
*         ------------------------
* 
* 
*         PURPOSE-
*         TEST THE ADDRESSING IN THE REMOTE NAD MEMORY. 
* 
* 
*         METHOD- 
*         1.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         2.  RESERVE THE  CHANNEL  TO  THE  LOCAL NAD AND, CONNECT AND 
*             SELECT  THE  MAINTENANCE  PATH  DA  IN  THE   LOCAL   NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         3.  MASTER CLEAR THE PROCESSOR IN THE REMOTE NAD. 
*         4.  IF  THE NUMBER OF 40 HEXADECIMAL WORDS BLOCK WRITTEN INTO 
*             THE REMOTE NAD MEMORY SO FAR EQUALS 0, OR 200  OCTAL,  OR 
*             400  OCTAL,  OR 600 OCTAL, DISPLAY THE RUNNING MESSAGE IF 
*             SCOPING LOOP IS NOT  SELECTED  OR  THE  REPEAT  CONDITION 
*             MESSAGE  IF SCOPING LOOP IS SELECTED, RESERVE THE CHANNEL 
*             TO THE LOCAL NAD AND, CONNECT AND SELECT THE  MAINTENANCE 
*             PATH  DA  IN  THE LOCAL NAD CONTROLWARE TO THE REMOTE NAD 
*             BEING TESTED. 
*         5.  GENERATE   THE   ADDRESSING   DATA  PATTERN  FOR  THE  40 
*             HEXADECIMAL MEMORY LOCATIONS TO BE WRITTEN IN THE  REMOTE 
*             NAD.
*         6.  IF THE ADDRESSING DATA  PATTERN  GENERATED  CONTAINS  THE 
*             ADDRESSING  DATA  PATTERN  TO  BE  WRITTEN INTO ADDRESSES 
*             0020-003F  HEXADECIMAL,  CHANGE  THE  CONTENTS   OF   THE 
*             LOCATIONS  FOR  ADDRESSES  0020-003F  HEXADECIMAL  TO ALL 
*             ZEROS IN  THE  DATA BUFFER.  IF TESTING A  TRANSMIC  NAD, 
*             ADDR. FF01 - FFFF WILL NOT BE TESTED. 
*         7.  WRITE THE ADDRESSING DATA PATTERN IN THE DATA BUFFER INTO 
*             THE 40 HEXADECIMAL MEMORY LOCATIONS IN THE REMOTE NAD.
*         8.  REPEAT  STEPS  4  THROUGH  7  UNTIL  THE ENTIRE MEMORY IS 
*             WRITTEN IN THE REMOTE NAD.
*         9.  IF THE NUMBER OF 40 HEXADECIMAL WORDS BLOCK READ FROM THE 
*             REMOTE NAD MEMORY SO FAR EQUALS 0, OR 200 OCTAL,  OR  400 
*             OCTAL,  OR  600  OCTAL,  DISPLAY  THE  RUNNING MESSAGE IF 
*             SCOPING LOOP IS NOT  SELECTED  OR  THE  REPEAT  CONDITION 
*             MESSAGE  IF SCOPING LOOP IS SELECTED, RESERVE THE CHANNEL 
*             TO THE LOCAL NAD AND, CONNECT AND SELECT THE  MAINTENANCE 
*             PATH  DA  IN  THE LOCAL NAD CONTROLWARE TO THE REMOTE NAD 
*             BEING TESTED. 
*         10. GENERATE   THE   ADDRESSING   DATA  PATTERN  FOR  THE  40 
*             HEXADECIMAL MEMORY LOCATIONS TO BE READ FROM  THE  REMOTE 
*             NAD.
*         11. AUTODUMP A BUFFER OF 40 HEXADECIMAL WORDS  OF  DATA  FROM 
*             THE  REMOTE  NAD MEMORY.  THE INITIAL AUTODUMP WILL START 
*             AT ADDRESS ZERO IN THE REMOTE NAD MEMORY. 
*         12. IF A MEMORY PARITY ERROR CAUSES THE AUTODUMP COMMAND THAT 
*             READS THE DATA FROM THE  REMOTE  NAD  TO  BE  TERMINATED, 
*             REPORT  A  NAD MEMORY PARITY ERROR IS SCOPING LOOP IS NOT 
*             SELECTED. 
*         13. IF  THE BUFFER OF DATA CONTAINS THE CONTENTS OF ADDRESSES 
*             0020-003F HEXADECIMAL IN THE REMOTE NAD, CHANGE THE  DATA 
*             FOR  THESE  ADDRESSES  TO THE EXPECTED CONTENTS FOR THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0020-003F 
*             ARE NOT TESTED).
*         14. CHECK THE DATA READ FROM THE REMOTE NAD MEMORY. 
*         15. REPEAT  STEPS  9  THROUGH  14  UNTIL ALL LOCATIONS IN THE 
*             REMOTE NAD MEMORY HAVE BEEN READ AND CHECKED. 
*         16. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 1 THROUGH 
*             15. 
*         17. IF REPEAT  MODULE IS SELECTED, REPEAT STEPS 1 THROUGH 16. 
*         18. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION  OF  THE 
*             MODULE,  SEND  A  MESSAGE INDICATING THE NUMBER OF ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         19. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10  REGISTER  CONTAINS  THE  NUMBER  OF  40 HEXADECIMAL WORD 
*            BLOCKS REQUIRED TO WRITE OR READ  THE  ENTIRE  NAD  MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(66)  -  OB(77)  CONTAINS  THE  MAINTENANCE FUNCTION HEADER 
*            TABLE. 
* 
*         EXIT- 
*         THE   REMOTE   NAD  PROCESSOR  MASTER  CLEARED  AND  THE  NAD 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT  OVERLAY AND MODULE DETECTED ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B4  - MASTER WORD COUNT REGISTER. 
*         B7  - UPPER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B8  - LOWER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(0) TO IB(53) - PATH STATUS BUFFER. 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(0) TO OB(31) - MANITENANCE FUNCTION RESPONSE BUFFER. 
*         OB(100) TO OB(277) - OUTPUT DATA BUFFER.
* 
* 
0  FORMAT LCM05 ADDRESSING TEST   *DD 
1  FORMAT LCM05 ERROR(S) = *DECD
2  FORMAT LCM05 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CAUTODM=1, CCMP=2, CCONPT=3, CMNTFC=4, CPMC=7 
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
30 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
   B9=0                      *INITIALIZE BUFFER COUNTER 
* 
/---------WRITE THE DATA PATTERN INTO REMOTE NAD MEMORY.
* 
32 GOSUB 54                  *GENERATE DATA PATTERN 
   WC=WC+12                  *MAINT. FUNCTION WORD COUNT
   OB(77)=WC-12.RS.1         *NAD WORD COUNT
   IF(B9.EQ.0) DUP 0 TO OB(200) FOR B5  *CLEAR ADD. 20-3F 
   B12=CMNTFC                *MAINT. FUNCTION COMMAND NUMBER
   MAINT FUNCTION 4 WITH WC WDS FROM OB(66),ABT 74  *DATA 
   GOTO 32 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
34 GOSUB 54                  *GENERATE DATA PATTERN 
36 B12=CAUTODM               *AUTODMP COMMAND NUMBER
   AUTODMP WC WORDS FROM B7/B8 TO IB(BA),ABT 72  *READ
   IF(WC.NE.2) GOTO 42       *IF ALL DATA READ
40 B8=B8+1                   *INCREMENT NAD ADDRESS 
   BA=BA+2                   *UPDATE BUFFER BASE ADDRESS
   IF(B4.+.B5.GT.BA)GOTO 36  *LOOP TO READ NAD WORDS
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/12 GOSUB 64       *REPORT DATA PARITY ERROR
   GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
42 IF(B9.EQ.0)COPY OB(200) TO IB(200) FOR B5  *ADD. 20-3F 
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
44 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 34 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
46 IF(B11.NE.0) ERROR 0/111 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
50 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 30                   *GO TO REPEAT THE CONDITION
* 
/---------GENERATE ADDRESSING DATA PATTERN. 
* 
54 GOSUB 60                  *INIT. REGISTERS FOR TRANSFER
   B0=0                      *INITIALIZE COUNTER
56 OB(B0+100)=B7             *UPPER 8 BITS OF ADDRESS 
   OB(B0+101)=B0.RS.1+B8     *LOWER 8 BITS OF ADDRESS 
   GOTO 56 WHILE (B0+2.LT.200)  *LOOP TO DO 40 ADDRESSES
   IF(B9.AND.177.EQ.0) GOTO 66  *RESERVE LCN CHANNEL
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------INITIALIZE ADD., WORD COUNT, AND LENGTH REGISTERS.
* 
60 B7=B9.RS.2                *SET NAD ADDRESS 
   B8=B9.AND.3.LS.6 
   B4=200                    *NORMAL WORD COUNT 
   IF(B9.EQ.1777) B4=176     *IF NAD ADDRESS IS FFC0
   WC=B4                     *INITIALIZE WORD COUNT 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 50  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CCONPT                *CONNECT PATH COMMAND NUMBER 
   RES MAINT PATH DA,BUFFER 1,ABT 74  *CONNECT MAINT. PATH
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 46 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=B4+B5-BA                *RESET COMPARE WORD COUNT 
   IF(ES.AND.SL.NE.0) GOTO 44  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/111 GOSUB 64  *REPORT DATA ERRORS
   GOTO 44                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON AUTODMP COMMAND. 
* 
72 IF(EC.NE.6032) GOTO 74    *IF NOT WORD COUNT ERROR 
   IF(OB(3).AND.160.NE.40) GOTO 74  *IF NOT PARITY ERROR
   IF(WC.EQ.2) GOTO 40       *IF NOT FIRST PARITY ERROR 
   WC=2                      *SET WORD COUNT EQUAL 2
   GOTO 36                   *GO TO REREAD THE DATA 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 46            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30  *IF REPEAT MODULE SESLECTED 
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   EXIT                      *EXIT THE MODULE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM05B - ADDRESSING TEST
   MODULE LCM06,LCN(300,301)LOCK
***       LCM06 - RANDOM DATA TEST
**
*         LCM06 - RANDOM DATA TEST
*         ------------------------
* 
* 
*         PURPOSE 
*         DETERMINE IF THE NAD MEMORY TO BE TESTED IS  IN  A  LOCAL  OR 
*         REMOTE  NAD  AND EXIT TO THE APPROPRIATE SUBMODULE (LCM06A OR 
*         LCM06B) TO DO THE TESTING.
* 
* 
*         METHOD- 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B5 REGISTER EQUAL TO 100 OCTAL. 
*         3.  SET  THE  B10  REGISTER  EQUAL  TO  THE  NUMBER   OF   40 
*             HEXADECIMAL WORD BLOCKS OF DATA REQUIRED TO WRITE OR READ 
*             THE ENTIRE NAD MEMORY AS DEFINED IN PARAMETER WORD P1.
*         4.  SET THE B13 REGISTER EQUAL TO THE MODULE NUMBER.
*         5.  IF THE DEVICE ACCESS CODE IS EQUAL TO 300 OCTAL, EXIT  TO 
*             MODULE LCM06A TO TEST THE MEMORY IN A LOCAL NAD.
*         6.  BUILD THE  MAINTENANCE  FUNCTION  HEADER  TABLE  FOR  THE 
*             MAINTENANCE FUNCTION TRANSACTION. 
*         7.  EXIT TO MODULE LCM06B TO TEST THE MEMORY  IN  THE  REMOTE 
*             NAD.
/ 
*         ENTRY-
*         DC REGISTER CONTAINS THE  DEVICE  CODE  FOR  THE  NAD  TO  BE 
*            TESTED.
*         PARAMETER WORD P1 CONTAINS THE NAD MEMORY SIZE. 
* 
*         EXIT- 
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE NUMBER OF THE MODULE. 
*         EXIT IS TO SUBMODULE LCM06A IF THE DEVICE CODE IS 300  OCTAL. 
*         EXIT  IS  TO SUBMODULE LCM06B IF THE DEVICE CODE IS 301 OCTAL 
*            WITH THE MAINTENANCE FUNCTION HEADER TABLE BUILT.
* 
*         SUBMODULES REFERENCED-
*         LCM06A - TEST THE MEMORY IN A LOCAL NAD IF THE DEVICE CODE IS 
*                  EQUAL TO 300 OCTAL.
*         LCM06B - TEST  THE  MEMORY IN A REMOTE NAD IF THE DEVICE CODE 
*                  IS EQUAL TO 301 OCTAL. 
* 
*         REGISTERS USED- 
*         B5  - CONTAINS 100 OCTAL. 
*         B10 - CONTAINS THE  NUMBER  OF  40  HEXADECIMAL  WORD  BLOCKS 
*               REQUIRED  TO  WRITE OR READ THE ENTIRE NAD MEMORY BEING 
*               TESTED. 
*         B13 - CONTAINS THE MODULE NUMBER. 
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         OB(66) TO OB(77) - MAINTENANCE FUNCTION HEADER TABLE IF  EXIT 
*               IS MODULE LCM06B. 
* 
* 
0  FORMAT LCM06 - RANDOM DATA TEST
1  FORMAT LCM06 ERROR(S) = *DECD
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY,PRINT    *DISPLAY RUNNING MESSAGE 
   IB(60)=20B 
   B5=100                    *B5 REGISTER EQUALS 100
   B10=P1                    *BUILD MEMORY BLOCK COUNT
   IF(B10.EQ.0)B10=1         *IF DEFAULT MEMORY PARAMETER 
   B10=B10+1.LS.7 
   IF(P1.NE.17) GOTO 31      *CHECK FOR TRANSMIC NAD
   B10=1774                  *DO NOT USE FF01 TO FFFF 
31 B13=6                     *MODULE NUMBER 
* 
/---------EXIT TO SUBMODULE TO TEST THE LOCAL NAD MEMORY. 
* 
   IF(DC.EQ.300) EXIT TO 06A  *IF LOCAL NAD 
* 
/---------INITIALIZE MAINTENANCE FUNCTION HEADER TABLE. 
* 
   OB(66)=SB(51)             *TCU SELECT
   OB(70)=SB(50)             *LOGICAL TCU ADDRESS 
   OB(71)=4                  *MAINT. AUTOLOAD FUNCTION
   OB(72)=SB(43)             *UPPER ACCESS CODE BYTE
   OB(73)=SB(44)             *LOWER ACCESS CODE BYTE
   OB(77)=100                *NUMBER OF NAD DATA WORDS
* 
/---------EXIT TO SUBMODULE TO TEST THE REMOTE NAD MEMORY.
* 
   EXIT TO 06B               *IF REMOTE NAD 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM06 - RANDOM DATA TEST
   MODULE LCM06A,LCN(300)LOCK 
***       LCM06A - RANDOM DATA TEST 
**
*         LCM06A - RANDOM DATA TEST 
*         ------------------------- 
* 
* 
*         PURPOSE-
*         TEST THE LOCAL NAD MEMORY USING RANDOM DATA PATTERNS. 
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE CONDITION NUMBER TO ZERO. 
*         3.  INTILIALIZE THE RANDOM NUMBER GENERATOR  SEED  NUMBER  IN 
*             THE B3 REGISTER FROM THE REAL TIME CLOCK. 
*         4.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE CHANNEL TO THE LOCAL NAD. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE LOCAL NAD.
*         7.  WRITE 0001  HEXADECIMAL  INTO ADDRESS 0020 HEXADECIMAL IN 
*             THE LOCAL NAD TO PLACE THE TCI IN GO TO HANG MODE.
*         8.  IF  THE NUMBER OF 40 HEXADECIMAL WORDS BLOCK WRITTEN INTO 
*             THE LOCAL NAD MEMORY SO FAR EQUALS 0, OR  200  OCTAL,  OR 
*             400  OCTAL,  OR 600 OCTAL, DISPLAY THE RUNNING MESSAGE IF 
*             SCOPING LOOP IS NOT  SELECTED  OR  THE  REPEAT  CONDITION 
*             MESSAGE  IF  SCOPING  LOOP  IS  SELECTED  AND RESERVE THE 
*             CHANNEL TO THE LOCAL NAD. 
*         9.  GENERATE  THE  RANDOM DATA PATTERN FOR THE 40 HEXADECIMAL 
*             MEMORY LOCATIONS TO BE WRITTEN INTO THE LOCAL NAD.
*         10. IF THE RANDOM DATA PATTERN GENERATED CONTAINS THE 
*             DATA PATTERN  TO  BE  WRITTEN  INTO  ADDRESSES  0030-003F 
*             HEXADECIMAL,  CHANGE  THE  CONTENTS  OF THE LOCATIONS FOR 
*             ADDRESSES 0030-003F HEXADECIMAL TO ALL ZEROS IN THE  DATA 
*             BUFFER. 
*         11. WRITE THE RANDOM DATA PATTERN IN THE DATA BUFFER INTO THE 
*             40 HEXADECIMAL MEMORY LOCATIONS IN THE LOCAL NAD. 
*         12. REPEAT STEPS 8 THROUGH 11  UNTIL  THE  ENTIRE  MEMORY  IS 
*             WRITTEN IN THE LOCAL NAD. 
*         13. IF THE NUMBER OF 40 HEXADECIMAL WORDS BLOCK READ FROM THE 
*             LOCAL  NAD  MEMORY  SO FAR EQUALS 0, OR 200 OCTAL, OR 400 
*             OCTAL, OR 600  OCTAL,  DISPLAY  THE  RUNNING  MESSAGE  IF 
*             SCOPING  LOOP  IS  NOT  SELECTED  OR THE REPEAT CONDITION 
*             MESSAGE IF SCOPING  LOOP  IS  SELECTED  AND  RESERVE  THE 
*             CHANNEL TO THE LOCAL NAD. 
*         14. GENERATE THE RANDOM DATA PATTERN FOR THE  40  HEXADECIMAL 
*             MEMORY LOCATIONS TO BE READ FROM THE LOCAL NAD. 
*         15. READ A BUFFER OF DATA FROM THE  LOCAL  NAD  MEMORY.   THE 
*             INITIAL  READ WILL START AT ADDRESS ZERO IN THE LOCAL NAD 
*             MEMORY. 
*         16. IF  A  MEMORY  PARITY ERROR CAUSES THE COMMAND THAT READS 
*             THE DATA FROM THE NAD  TO  ABORT,  REPORT  A  NAD  MEMORY 
*             PARITY ERROR IF SCOPING LOOP IS NOT SELECTED. 
*         17. IF THE BUFFER OF DATA CONTAINS THE CONTENTS OF  ADDRESSES 
*             0030-003F  HEXADECIMAL  IN  THE  NAD, CHANGE THE DATA FOR 
*             THESE  ADDRESSES  TO  THE  EXPECTED  CONTENTS  FOR  THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0030-003F 
*             ARE NOT TESTED).
*         18. CHECK  THE  RANDOM  DATA  PATTERN READ FROM THE LOCAL NAD 
*             MEMORY. 
*         19. REPEAT  STEPS  13  THROUGH  18 UNTIL ALL LOCATIONS IN THE 
*             LOCAL NAD MEMORY HAVE BEEN READ AND CHECKED.
*         20. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             19. 
*         21. INCREMENT   THE  CONDITION  NUMBER  BY  ONE  AND  IF  THE 
*             CONDITION NUMBER IS NOT EQUAL TO THREE,  REPEAT  STEPS  2 
*             THROUGH 20. 
*         22. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH  21. 
*         23. IF  ANY  ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE INDICATING THE  NUMBER  OF  ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         24. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
* 
*         EXIT- 
*         THE LOCAL NAD PROCESSOR MASTER CLEARED  AND  THE  NAD  COMMON 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT AND MODULE DETECTED OVERLAY  ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B6  - PASS COUNTER. 
*         B7  - UPPER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B8  - LOWER 8 BITS OF THE LOCAL NAD MEMORY ADDRESS. 
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(100) TO OB(301) - OUTPUT DATA BUFFER.
*         OB(307) - SEED NUMBER FOR THE RANDOM NUMBER GENERATER.
* 
* 
0  FORMAT LCM06 RANDOM DATA TEST  *DD 
1  FORMAT LCM06 ERROR(S) = *DECD
2  FORMAT LCM06 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CCMP=2, CMEMRD=5, CMEMWR=6, CPMC=7, CRES=10B
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 OB(307)=RT                *RANDOM NUMBER SEED
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
* 
/---------PLACE THE TCI IN GO TO HANG MODE. 
* 
   OB=0                      *GENERATE DATA FOR 0001 HEX. 
   OB(1)=1
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 2 WDS TO 20H FROM OB,ABT 74  *WRITE 
* 
/---------INITIALIZE REGISTERS FOR WRITING NAD MEMORY.
* 
   OB(301)=OB(307)           *SEED NUMBER 
   B9=0                      *INITIALIZE BUFFER COUNTER 
* 
/---------WRITE THE DATA PATTERN INTO NAD MEMORY. 
* 
36 GOSUB 54                  *GENERATE DATA PATTERN 
   IF(B9.EQ.0)DUP 0 TO OB(240) FOR 40  *CLEAR UDI INTERFACE 
   B12=CMEMWR                *MEMORY WRITE COMMAND NUMBER 
   MEMORY WR 12/8 WC WDS TO B7/B8 FROM OB(100),ABT 74 
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   OB(301)=OB(307)           *SEED NUMBER 
40 GOSUB 54                  *GENERATE DATA PATTERN 
   IF(B9+1.EQ.B10) WC=176B   *RESET WORD COUNT IF LAST BUF. 
   B12=CMEMRD                *MEMORY READ COMMAND NUMBER
   MEMORY RD 8/12 WC WDS FROM B7/B8 TO IB(BA),ABT 72  *READ 
42 IF(B9.EQ.0) COPY OB(240) TO IB(240) FOR 40  *ADD. 30-3F
   IF(B9.EQ.1) COPY OB(BA) TO IB(BA) FOR 2
44 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
46 IF(B11.NE.0) ERROR 0/112 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
50 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------GENERATE RANDOM DATA PATTERN. 
* 
54 RANDOM TO OB(B5) FOR 202,START OB(301)  *GENERATE DATA 
   B0=B5                     *INITIALIZE BUFFER POINTER 
56 OB(B0)=OB(B0+2).AND.377   *MASK DATA 
   GOTO 56 WHILE (B0+1.LT.300)  *LOOP TO DO BUFFER
   B7=B9.RS.2                *SET NAD ADDRESS 
   B8=B9.AND.3.LS.6 
   WC=200                    *INITIALIZE WORD COUNT 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   IF(B9.AND.177.EQ.0) GOTO 66  *RESERVE LCN CHANNEL
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 50  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CRES                  *RES COMMAND NUMBER
   RES,ABT 74                *RESERVE LCN CHANNEL 
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 46 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=300-BA                 *RESET COMPARE WORD COUNT
   IF(B9+1.EQ.B10) WC=WC-2   *RESET WORD COUNT IF LAST BUF. 
   IF(ES.AND.SL.NE.0) GOTO 44  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/112 GOSUB 64  *REPORT DATA ERRORS
   GOTO 44                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON MEMORY READ COMMAND. 
* 
72 IF(EC.NE.6027B) GOTO 74   *IF NOT ABNORMAL GENERAL STATUS
   IF(SB.AND.10.EQ.0) GOTO 74  *IF NOT MEMORY PARITY ERROR
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/13 GOSUB 64       *PROCESS MEMORY PARITY ERROR 
   GOTO 42                   *GO TO CHECK DATA READ 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 46            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.3)  *LOOP TO DO THREE PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30   *IF REPEAT MODULE SELECTED 
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM06A - RANDOM DATA TEST 
   MODULE LCM06B,LCN(301)LOCK 
***       LCM06B - RANDOM DATA TEST 
**
*         LCM06B - RANDOM DATA TEST 
*         ------------------------- 
* 
* 
*         PURPOSE-
*         TEST THE REMOTE NAD MEMORY USING RANDOM DATA PATTERNS.
* 
* 
*         METHOD- 
*         1.  DISPLAY THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE CONDITION NUMBER TO ZERO. 
*         3.  INTILIALIZE THE RANDOM NUMBER GENERATOR  SEED  NUMBER  IN 
*             THE B3 REGISTER FROM THE REAL TIME CLOCK. 
*         4.  DISPLAY THE  RUNNING  MESSAGE  IF  SCOPING  LOOP  IS  NOT 
*             SELECTED, OR THE REPEAT CONDITION MESSAGE IF SCOPING LOOP 
*             IS SELECTED.
*         5.  RESERVE THE  CHANNEL  TO  THE  LOCAL NAD AND, CONNECT AND 
*             SELECT  THE  MAINTENANCE  PATH  DA  IN  THE   LOCAL   NAD 
*             CONTROLWARE TO THE REMOTE NAD BEING TESTED. 
*         6.  MASTER CLEAR THE PROCESSOR IN THE REMOTE NAD. 
*         7.  IF  THE NUMBER OF 40 HEXADECIMAL WORDS BLOCK WRITTEN INTO 
*             THE REMOTE NAD MEMORY SO FAR EQUALS 0, OR 200  OCTAL,  OR 
*             400  OCTAL,  OR 600 OCTAL, DISPLAY THE RUNNING MESSAGE IF 
*             SCOPING LOOP IS NOT  SELECTED  OR  THE  REPEAT  CONDITION 
*             MESSAGE  IF SCOPING LOOP IS SELECTED, RESERVE THE CHANNEL 
*             TO THE LOCAL NAD AND, CONNECT AND SELECT THE  MAINTENANCE 
*             PATH  DA  IN  THE LOCAL NAD CONTROLWARE TO THE REMOTE NAD 
*             BEING TESTED. 
*         8.  GENERATE  THE  RANDOM DATA PATTERN FOR THE 40 HEXADECIMAL 
*             MEMORY LOCATIONS TO BE WRITTEN IN THE REMOTE NAD. 
*         9.  IF  THE RANDOM DATA PATTERN GENERATED CONTAINS THE RANDOM 
*             DATA PATTERN  TO  BE  WRITTEN  INTO  ADDRESSES  0020-003F 
*             HEXADECIMAL,  CHANGE  THE  CONTENTS  OF THE LOCATIONS FOR 
*             ADDRESSES 0020-003F HEXADECIMAL TO ALL ZEROS IN THE  DATA 
*             BUFFER. IF TESTING A TRANSMIC NAD, ADDR. FF01 - FFFF WILL 
*             NOT BE TESTED.
*         10. WRITE THE RANDOM DATA PATTERN IN THE DATA BUFFER INTO THE 
*             40 HEXADECIMAL MEMORY LOCATIONS IN THE REMOTE NAD.
*         11. REPEAT STEPS 7 THROUGH 10  UNTIL  THE  ENTIRE  MEMORY  IS 
*             WRITTEN IN THE REMOTE NAD.
*         12. IF THE NUMBER OF 40 HEXADECIMAL WORDS BLOCK READ FROM THE 
*             REMOTE  NAD  MEMORY SO FAR EQUALS 0, OR 200 OCTAL, OR 400 
*             OCTAL, OR 600  OCTAL,  DISPLAY  THE  RUNNING  MESSAGE  IF 
*             SCOPING  LOOP  IS  NOT  SELECTED  OR THE REPEAT CONDITION 
*             MESSAGE IF SCOPING LOOP IS SELECTED, RESERVE THE  CHANNEL 
*             TO  THE LOCAL NAD AND, CONNECT AND SELECT THE MAINTENANCE 
*             PATH DA IN THE LOCAL NAD CONTROLWARE TO  THE  REMOTE  NAD 
*             BEING TESTED. 
*         13. GENERATE THE RANDOM DATA PATTERN FOR THE  40  HEXADECIMAL 
*             MEMORY LOCATIONS TO BE READ FROM THE REMOTE NAD.
*         14. AUTODUMP A BUFFER OF 40 HEXADECIMAL WORDS  OF  DATA  FROM 
*             THE  REMOTE  NAD MEMORY.  THE INITIAL AUTODUMP WILL START 
*             AT ADDRESS ZERO IN THE REMOTE NAD MEMORY. 
*         15. IF A MEMORY PARITY ERROR CAUSES THE AUTODUMP COMMAND THAT 
*             READS THE DATA FROM THE  REMOTE  NAD  TO  BE  TERMINATED, 
*             REPORT  A  NAD MEMORY PARITY ERROR IS SCOPING LOOP IS NOT 
*             SELECTED. 
*         16. IF  THE BUFFER OF DATA CONTAINS THE CONTENTS OF ADDRESSES 
*             0020-003F HEXADECIMAL IN THE REMOTE NAD, CHANGE THE  DATA 
*             FOR  THESE  ADDRESSES  TO THE EXPECTED CONTENTS FOR THESE 
*             ADDRESSES IN THE COMPARE DATA BUFFER (ADDRESSES 0020-003F 
*             ARE NOT TESTED).
*         17. CHECK THE DATA READ FROM THE REMOTE NAD MEMORY. 
*         18. REPEAT  STEPS  12  THROUGH  17 UNTIL ALL LOCATIONS IN THE 
*             REMOTE NAD MEMORY HAVE BEEN READ AND CHECKED. 
*         19. IF  REPEAT  CONDITION IS SELECTED, REPEAT STEPS 4 THROUGH 
*             18. 
*         20. INCREMENT   THE  CONDITION  NUMBER  BY  ONE  AND  IF  THE 
*             CONDITION NUMBER IS NOT EQUAL TO THREE,  REPEAT  STEPS  3 
*             THROUGH 19. 
*         21. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 THROUGH  20. 
*         22. IF  ANY  ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE INDICATING THE  NUMBER  OF  ERRORS 
*             DETECTED BY THE MODULE TO DISPLAY, PRINT, AND DAYFILE.
*         23. EXIT THE MODULE.
/ 
*         ENTRY-
*         B5 REGISTER CONTAINS 100 OCTAL. 
*         B10 REGISTER CONTAINS  THE  NUMBER  OF  40  HEXADECIMAL  WORD 
*            BLOCKS  REQUIRED  TO  WRITE  OR READ THE ENTIRE NAD MEMORY 
*            BEING TESTED.
*         B13 REGISTER CONTAINS THE MODULE NUMBER.
*         OB(66) - OB(77)  CONTAINS  THE  MAINTENANCE  FUNCTION  HEADER 
*            TABLE. 
* 
*         EXIT- 
*         THE  REMOTE  NAD  PROCESSOR  MASTER  CLEARED  AND   THE   NAD 
*            CONTROLWARE DESTROYED. 
* 
*         SUBMODULES CALLED-
*         LCM98A - PROCESS PRODUCT OVERLAY AND MODULE DETECTED  ERRORS. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
*         B4  - MASTER WORD COUNT REGISTER. 
*         B6  - PASS COUNTER. 
*         B7  - UPPER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B8  - LOWER 8 BITS OF THE REMOTE NAD MEMORY ADDRESS.
*         B9  - NAD MEMORY BUFFER COUNTER.
*         B11 - DATA ERROR BUFFER POINTER.
*         B12 - NUMBER OF PRODUCT OVERLAY COMMAND ABORTED.
*         B14 - MODULE ERROR COUNT. 
*         B15 - MODULE LOOP COUNT.
*         BA  - DATA BUFFER BASE ADDRESS. 
*         EA  - STANDARD USAGE. 
*         EC  - STANDARD USAGE. 
*         EM  - STANDARD USAGE. 
*         ES  - STANDARD USAGE. 
*         WC  - WORD COUNT FOR COMMANDS.
* 
*         BUFFERS USED- 
*         IB(60)  MAX ERROR COUNT 
*         IB(0) TO IB(53) - PATH STATUS BUFFER. 
*         IB(100) TO IB(301) - INPUT DATA BUFFER. 
*         IB(310) TO IB(407) - ERROR BUFFER FOR DATA ERRORS.
*         OB(0) TO OB(31) - MANITENANCE FUNCTION RESPONSE BUFFER. 
*         OB(100) TO OB(301) - OUTPUT DATA BUFFER.
*         OB(307) - SEED NUMBER FOR THE RANDOM NUMBER GENERATER.
* 
* 
0  FORMAT LCM06 RANDOM DATA TEST  *DD 
1  FORMAT LCM06 ERROR(S) = *DECD
2  FORMAT LCM06 EC=*DECD, LC=*DECD
* 
/---------EQUATES FOR THE MODULE. 
* 
   EQUATE CAUTODM=1, CCMP=2, CCONPT=3, CMNTFC=4, CPMC=7 
* 
/---------DISPLAY MODULE RUNNING MESSAGE. 
* 
30 MSG 0 TO DISPLAY          *DISPLAY RUNNING MESSAGE 
   B6=0                      *INITIALIZE PASS COUNTER 
32 OB(307)=RT                *RANDOM NUMBER SEED
* 
/---------RESERVE LCN CH. AND MASTER CLEAR THE PROCESSOR. 
* 
34 GOSUB 66                  *RESERVE LCN CHANNEL 
   B12=CPMC                  *PMC COMMAND NUMBER
   PMC,ABT 74                *MASTER CLEAR THE NAD
   OB(301)=OB(307)           *SEED NUMBER 
   B9=0                      *INITIALIZE BUFFER COUNTER 
* 
/---------WRITE THE DATA PATTERN INTO REMOTE NAD MEMORY.
* 
36 GOSUB 54                  *GENERATE DATA PATTERN 
   WC=WC+12                  *MAINT. FUNCTION WORD COUNT
   OB(77)=WC-12.RS.1         *NAD WORD COUNT
   IF(B9.EQ.0) DUP 0 TO OB(200) FOR B5  *CLEAR ADD. 20-3F 
   B12=CMNTFC                *MAINT. FUNCTION COMMAND NUMBER
   MAINT FUNCTION 4 WITH WC WDS FROM OB(66),ABT 74  *DATA 
   GOTO 36 WHILE (B9+1.LT.B10)  *LOOP TO WRITE ALL OF MEMORY
* 
/---------READ AND CHECK ALL LOCATIONS IN NAD MEMORY. 
* 
   B11=0                     *INITIALIZE ERROR INDEX
   B9=0                      *INITIALIZE BUFFER COUNTER 
   OB(301)=OB(307)           *INTIALIZE SEED NUMBER 
40 GOSUB 54                  *GENERATE DATA PATTERN 
42 B12=CAUTODM               *AUTODMP COMMAND NUMBER
   AUTODMP WC WORDS FROM B7/B8 TO IB(BA),ABT 72  *READ
   IF(WC.NE.2) GOTO 46       *IF ALL DATA READ
44 B8=B8+1                   *INCREMENT NAD ADDRESS 
   BA=BA+2                   *UPDATE BUFFER BASE ADDRESS
   IF(B4.+.B5.GT.BA)GOTO 42  *LOOP TO READ NAD WORDS
   B14=B14+1                 *UPDATE ERROR COUNT
   ERROR 1/14 GOSUB 64       *REPORT DATA PARITY ERROR
   GOSUB 60                  *INIT. REGISTERS FOR DATA CHECK
46 IF(B9.EQ.0)COPY OB(200) TO IB(200) FOR B5  *ADD. 20-3F 
   IF(B9.EQ.1) COPY OB(100) TO IB(100) FOR 2
50 B12=CCMP                  *COMPARE COMMAND NUMBER
   COMPARE OB(BA) TO IB(BA) FOR WC,ABT 70  *CHECK DATA READ 
   GOTO 40 WHILE (B9+1.LT.B10)  *LOOP TO READ ALL OF MEMORY 
* 
/---------DISPLAY ANY REMAINING DATA ERRORS.
* 
52 IF(B11.NE.0) ERROR 0/113 GOSUB 64  *PROCESS DATA ERRORS
* 
/---------PROCESS REPEAT CONDITION. 
* 
53 IF(ES.AND.RC.EQ.0) GOTO 76  *IF REPEAT CONDITION OFF 
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   B15=B15+1                 *UPDATE LOOP COUNT 
   GOTO 34                   *GO TO REPEAT THE CONDITION
* 
/---------GENERATE RANDOM DATA PATTERN. 
* 
54 RANDOM TO OB(B5) FOR 202,START OB(301)  *GENERATE DATA 
   B0=B5                     *INITIALIZE BUFFER POINTER 
56 OB(B0)=OB(B0+2).AND.377   *MASK DATA 
   GOTO 56 WHILE (B0+1.LT.300)  *LOOP TO DO BUFFER
60 B7=B9.RS.2                *SET NAD ADDRESS 
   B8=B9.AND.3.LS.6 
   B4=200                    *NORMAL WORD COUNT 
   IF(B9.EQ.1777) B4=176     *IF NAD ADDRESS IS FFC0
   WC=B4                     *INITIALIZE WORD COUNT 
   BA=100                    *INIT. BASE ADDRESS OF BUFFER
   IF(B9.AND.177.EQ.0) GOTO 66  *RESERVE LCN CHANNEL
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT ERRORS AND CHECK ERROR COUNT.
* 
62 IF(ES.AND.SL.EQ.0) CALL 98A  *IF NO SCOPING LOOP 
   IF(B14.GE.IB(60))ENDSUB GOTO 53  *IF ERROR COUNT EXCEEDED
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------REPORT DATA ERRORS IF NOT SCOPING.
* 
64 GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
* 
/---------POST RUNNING MESSAGE AND RESERVE LCN CHANNEL. 
* 
66 IF(ES.AND.SL.EQ.0) MSG 0 (B6) TO DISPLAY 
   IF(ES.AND.SL.NE.0) MSG 2 (B14,B15) TO DISPLAY
   B12=CCONPT                *CONNECT PATH COMMAND NUMBER 
   RES MAINT PATH DA,BUFFER 1,ABT 74  *CONNECT MAINT. PATH
   RETURN                    *EXIT THE SUBROUTINE 
* 
/---------PROCESS ABORT ON COMPARE ERROR. 
* 
70 GOTO 52 WHILE (B14+1.GE.IB(60))  *IF ERROR COUNT EXCEEDED
   B0=WC.AND.7776+BA         *BUILD BUFFER INDEX
   BA=B0+2                   *RESET BUFFER INDEX
   WC=B4+B5-BA                *RESET COMPARE WORD COUNT 
   IF(ES.AND.SL.NE.0) GOTO 50  *IF SCOPING LOOP ON
   IB(B11+310)=B9            *SAVE BUFFER COUNTER 
   IB(B11+311)=B0-B5         *SAVE BUFFER INDEX 
   COPY OB(B0) TO IB(B11+312) FOR 2  *SAVE EXPECTED DATA
   COPY IB(B0) TO IB(B11+314) FOR 2  *SAVE ACTUAL DATA
   B11=B11+10                *UPDATE BUFFER POINTER 
   IF(B11.EQ.B5) ERROR 0/113 GOSUB 64  *REPORT DATA ERRORS
   GOTO 50                   *RETURN TO COMPLETE DATA CHECK 
* 
/---------PROCESS ABORT ON AUTODMP COMMAND. 
* 
72 IF(EC.NE.6032) GOTO 74    *IF NOT WORD COUNT ERROR 
   IF(OB(3).AND.160.NE.40) GOTO 74  *IF NOT PARITY ERROR
   IF(WC.EQ.2) GOTO 44       *IF NOT FIRST PARITY ERROR 
   WC=2                      *SET WORD COUNT EQUAL 2
   GOTO 42                   *GO TO REREAD THE DATA 
* 
/---------PROCESS COMMAND ABORTS IN THE MODULE. 
* 
74 B14=B14+1                 *UPDATE ERROR COUNT
   GOSUB 62                  *PROCESS ERRORS/ERROR COUNT
   ENDSUB GOTO 52            *GO TO END OF THE CONDITION
* 
/---------PROCESS REPEAT MODULE.
* 
76 GOTO 32 WHILE (B6+1.LT.3)  *LOOP TO DO THREE PASSES
   B15=B15+1
   IF(B14.GE.IB(60))IB(60)=B14+20B  *INCREASE MAX ERROR COUNT 
   IF(ES.AND.RM.NE.0)GOTO 30  *IF REPEAT MODULE SELECTED
   IF(B14.NE.0)MSG 1 (B14) TO DISPLAY,PRINT,DAYFILE 
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM06B - RANDOM DATA TEST 
   MODULE LCM98A,LCN(300,301)LOCK 
***       LCM98A - POST DRIVER ERROR DISPLAY
**
*         LCM98A - POST DRIVER ERROR DISPLAY
*         ----------------------------------
* 
* 
*         PURPOSE-
*         START  BUILDING  THE  ERROR DISPLAY BY PLACING THE TEST TITLE 
*         AND MODULE TITLE LINES IN THE ERROR DISPLAY,  AND  BUILD  THE 
*         ERROR DISPLAY FOR DRIVER DETECTED ERRORS. 
* 
* 
*         METHOD- 
*         1.  MOVE THE  TEST  TITLE AND MODULE TITLE LINES TO THE ERROR 
*             DISPLAY BEING BUILT.
*         2.  SET THE B3 REGISTER TO 4 IF THE KL DISPLAY IS BEING USED, 
*             OR 3 IF THE TERMINAL IS BEING USED. 
*         3.  EXIT TO  MODULE LCM98B IF THE ERROR TO BE REPORTED IS NOT 
*             A DRIVER DETECTED ERROR.
*         4.  MOVE THE  LAST FUNCTION LINE, HARDWARE/CONTROLWARE STATUS 
*             LINE, AND ERROR MESSAGE LINE TO THE ERROR DISPLAY.
*         5.  EXIT TO MODULE LCM98C.
/ 
*         ENTRY-
*         B7 REGISTER CONTAINS THE UPPER 8 BITS OF THE NAD ADDRESS IF A 
*            PARITY ERROR IS TO BE REPORTED.
*         B9 REGISTER CONTAINS THE NUMBER OF THE BUFFER BEING READ FROM 
*            THE NAD IF A PARITY ERROR IS TO BE REPORTED. 
*         B11 REGISTER CONTAINS THE CURRENT POINTER TO THE ERROR BUFFER 
*            IF DATA ERRORS ARE TO BE REPORTED. 
*         B12 REGISTER CONTAINS THE NUMBER FOR THE MALET COMMAND  BEING 
*            EXECUTED.
*         B13 REGISTER CONTAINS THE CALLING MODULE NUMBER.
*         EA REGISTER CONTAINS THE ERROR LINE ADDRESS.
*         EC REGISTER CONTAINS THE ERROR CODE.
*         EM REGISTER CONTAINS THE ERROR MESSAGE NUMBER.
*         LF REGISTER CONTAINS THE LAST FUNCTION CODE SENT TO THE  NAD. 
*         WT REGISTER CONTAINS  THE  NUMBER  OF WORDS TRANSFERED DURING 
*            THE LAST DATA TRANSFER WITH THE NAD. 
*         IB(310) TO  IB(307)  CONTAINS  THE ERROR INFORMATION FOR DATA 
*            ERROR TO BE REPORTED.
*         SB(0) CONTAINS THE NAD HARDWARE STATUS. 
*         SB(1) CONTAINS THE NAD COMMON CONTROLWARE STATUS. 
* 
*         EXIT- 
*         IF EXIT TO MODULE LCM98B- 
*         B3 REGISTER CONTAINS THE NUMBER OF THE LINE TO SEND THE  NEXT 
*            MESSAGE TO IN THE ERROR DISPLAY. 
*         B7 REGISTER CONTAINS THE UPPER 8 BITS OF THE NAD ADDRESS IF A 
*            PARITY ERROR IS TO BE REPORTED.
*         B9 REGISTER CONTAINS THE NUMBER OF THE BUFFER BEING READ FROM 
*            THE NAD IF A PARITY ERROR IS TO BE REPORTED. 
*         B11 REGISTER CONTAINS THE CURRENT POINTER TO THE ERROR BUFFER 
*            IF DATA ERRORS ARE TO BE REPORTED. 
*         B12 REGISTER CONTAINS THE NUMBER FOR THE MALET COMMAND  BEING 
*            EXECUTED.
*         B13 REGISTER CONTAINS THE CALLING MODULE NUMBER.
*         EA REGISTER CONTAINS THE ERROR LINE ADDRESS.
*         EC REGISTER CONTAINS THE ERROR CODE.
*         EM REGISTER CONTAINS THE ERROR MESSAGE NUMBER.
*         IB(310) TO IB(307) CONTAINS THE ERROR  INFORMATION  FOR  DATA 
*            ERROR TO BE REPORTED.
*         IF EXIT TO MODULE LCM98C- 
*         B3 REGISTER CONTAINS  THE NUMBER OF THE LINE TO SEND THE NEXT 
*            MESSAGE TO IN THE ERROR DISPLAY. 
*         B12 REGISTER  CONTAINS THE NUMBER FOR THE MALET COMMAND BEING 
*            EXECUTED.
*         B13 REGISTER CONTAINS THE CALLING MODULE NUMBER.
* 
*         REGISTERS USED-NONE.
* 
*         SUBMODULES REFERENCED-
*         LCM98B - POST DATA ERROR DISPLAY. 
*         LCM98C - POST COMMAND ABORTED ERROR DISPLAY.
* 
*         BUFFERS USED-NONE.
* 
* 
0  FORMAT LCM - LCN MEMORY TEST 
1  FORMAT LCM01 - ONES AND ZEROS TEST 
2  FORMAT LCM02 - ALTERNATING ONES TEST 
3  FORMAT LCM03 - SLIDING ZERO TEST 
4  FORMAT LCM04 - SLIDING ONE TEST
5  FORMAT LCM05 - ADDRESSING TEST 
6  FORMAT LCM06 - RANDOM DATA TEST
20 FORMAT  LAST FUNCTION = *OCTB  WT = *OCTB
21 FORMAT  H/W STATUS = *OCTB  C/W STATUS = *OCTB 
* 
/---------BUILD THE ERROR DISPLAY.
* 
30 MSG 0 TO LINE 0              *TEST TITLE MESSAGE 
   MSG B13 TO LINE 1            *MODULE TITLE MESSAGE 
   B3=4                         *KL DISPLAY LINE NUMBER 
   IF(ES.AND.TM.NE.0) B3=3      *TERMINAL LINE NUMBER 
   IF(EC.LT.4000) EXIT TO 98B   *IF NOT DRIVER ERROR
   MSG 20 (LF,WT) TO LINE B3    *LAST FUNCTION MESSAGE
   B3=B3+1                      *UPDATE DISPLAY LINE NUMBER 
   MSG 21 (SB,SB(1))TO LINE B3  *H/C STATUS MESSAGE 
   B3=B3+1                      *UPDATE DISPLAY LINE NUMBER 
   MSG EM TO LINE B3            *ERROR DESCRIPTION MESSAGE
   B3=B3+1                      *UPDATE DISPLAY LINE NUMBER 
   EXIT TO 98C               *GO TO POST THE COMMAND ABORTED
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM98A - POST DRIVER ERROR DISPLAY
   MODULE LCM98B,LCN(300,301)LOCK 
***       LCM98B - POST DATA ERROR DISPLAY
**
*         LCM98B - POST DATA ERROR DISPLAY
*         --------------------------------
* 
* 
*         PURPOSE-
*         BUILD  THE  NAD  PARITY  ERROR DISPLAY AND THE NAD DATA ERROR 
*         DISPLAY.
* 
* 
*         METHOD- 
*         1.  IF THE EM REGISTER CONTAINS ZERO, GO TO STEP 5. 
*         2.  MOVE THE   MEMORY  PARITY  ERROR  MESSAGE  TO  THE  ERROR 
*             DISPLAY.
*         3.  DETERMINE THE  RANGE  OF  NAD  ADDRESSES  FOR  THE MEMORY 
*             PARITY ERROR AND MOVE THE MESSAGE TO  THE  ERROR  DISPLAY 
*             FOR THE NAD MEMORY PARITY ERROR ADDRESSES.
*         4.  EXIT TO MODULE LCM98C.
*         5.  BUILD THE  ERROR  DISPLAY  LINE  FOR  ONE NAD MEMORY DATA 
*             ERROR AND MOVE THE DISPLAY LINE TO THE ERROR DISPLAY. 
*         6.  REPEAT STEP   5   UNTIL   ALL   MEMORY  DATA  ERRORS  ARE 
*             DISPLAYED.
*         7.  CLEAR THE MEMORY DATA ERROR BUFFER POINTER. 
*         8.  EXIT TO MODULE LCM98C.
/ 
*         ENTRY-
*         B3 REGISTER CONTAINS  THE NUMBER OF THE LINE TO SEND THE NEXT 
*            MESSAGE TO IN THE ERROR DISPLAY. 
*         B7 REGISTER CONTAINS THE UPPER 8 BITS OF THE NAD ADDRESS IF A 
*            PARITY ERROR IS TO BE REPORTED.
*         B9 REGISTER CONTAINS THE NUMBER OF THE BUFFER BEING READ FROM 
*            THE NAD IF A PARITY ERROR IS TO BE REPORTED. 
*         B11 REGISTER CONTAINS THE CURRENT POINTER TO THE ERROR BUFFER 
*            IF DATA ERRORS ARE TO BE REPORTED. 
*         B12 REGISTER  CONTAINS THE NUMBER FOR THE MALET COMMAND BEING 
*            EXECUTED.
*         B13 REGISTER CONTAINS THE CALLING MODULE NUMBER.
*         EA REGISTER CONTAINS THE ERROR LINE ADDRESS.
*         EC REGISTER CONTAINS THE ERROR CODE.
*         EM REGISTER CONTAINS THE ERROR MESSAGE NUMBER.
*         IB(310) TO  IB(407)  CONTAINS  THE ERROR INFORMATION FOR DATA 
*            ERROR TO BE REPORTED.
* 
*         EXIT- 
*         B3 REGISTER CONTAINS  THE NUMBER OF THE LINE TO SEND THE NEXT 
*            MESSAGE TO IN THE ERROR DISPLAY. 
*         B12 REGISTER  CONTAINS THE NUMBER FOR THE MALET COMMAND BEING 
*            EXECUTED.
* 
*         REGISTER USED-
*         B0  - TEMPORARY STORAGE.
*         B1  - TEMPORARY STORAGE.
* 
*         SUBMODULES REFERENCED-
*         LCM98C - POST COMMAND ABORTED ERROR DISPLAY.
* 
*         BUFFERS USED-NONE.
* 
* 
10 FORMAT  LCM*D E*OCT L*OC  NAD MEMORY DATA ERROR
11 FORMAT  LCM*D E*OCT L*OC  NAD MEMORY PARITY ERROR
12 FORMAT  PARITY ERROR IN ADDRESSES *H*H-*H*H
13 FORMAT  ADRS   EXP.   ACT.   DIF. (HEX. VALUES)
14 FORMAT  *H*H   *H*H   *H*H   *H*H
* 
/---------BUILD THE PARITY ERROR DISPLAY. 
* 
30 IF(EM.NE.1) GOTO 32           *IF NOT A MEMORY P.E.
   MSG 11(B13,EC,EA) TO LINE B3  *ERROR DESCRIPTION MESSAGE 
   B0=B9.AND.3.LS.6          *BUILD LOWER NAD ADDRESS BYTE
   B1=B0+77                  *BUILD UPPER NAD ADDRESS BYTE
   B3=B3+1                       *UPDATE DISPLAY LINE NUMBER
   MSG 12(B7,B0,B7,B1) TO LINE B3  *PARITY ERROR ADDRESS
   B3=B3+1                       *UPDATE DISPLAY LINE NUMBER
   EXIT TO 98C               *GO TO POST THE COMMAND ABORTED
* 
/---------BUILD MEMORY DATA ERROR DISPLAY.
* 
32 MSG 10(B13,EC,EA) TO LINE B3  *ERROR DESCRIPTION MESSAGE 
   MSG 13 TO LINE B3+1           *DATA DESCRIPTION MESSAGE
   B3=B3+2                       *UPDATE DISPLAY LINE NUMBER
* 
/---------BUILD DISPLAY FOR THE DATA ERRORS.
* 
   B0=0                      *INITIALIZE BUFFER POINTER 
34 B1=IB(B0+310).AND.3.LS.6  *SAVE BIT 2**7 OF NAD ADDRESS
   IB(B0+310)=IB(B0+310).RS.2  *UPPER BYTE OF NAD ADDRESS 
   IB(B0+311)=IB(B0+311).RS.1.+.B1  *LOWER BYTE OF NAD ADD. 
   IB(B0+316)=IB(B0+312).XOR.IB(B0+314)  *UPPER BYTE OF DIFF
   IB(B0+317)=IB(B0+313).XOR.IB(B0+315)  *LOWER BYTE OF DIFF
   MSG 14, 8 WORDS FROM IB(B0+310) TO LINE B3  *ERROR LINE
   B3=B3+1                       *UPDATE DISPLAY LINE NUMBER
   GOTO 34 WHILE (B0+10.NE.B11)  *LOOP TO DISPLAY ERRORS
   B11=0                      *RESET DATA ERROR BUF. POINTER
   EXIT TO 98C               *GO TO POST THE COMMAND ABORTED
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM98B - POST DATA ERROR DISPLAY
   MODULE LCM98C,LCN(300,301)LOCK 
***       LCM98C - POST COMMAND ABORTED ERROR DISPLAY 
**
*         LCM98C - POST COMMAND ABORTED ERROR DISPLAY 
*         ------------------------------------------- 
* 
* 
*         PURPOSE-
*         INSERT  THE  DISPLAY  LINE FOR THE MALET COMMAND ABORTED INTO 
*         THE ERROR DISPLAY AND REPORT THE ERROR TO THE USER. 
* 
* 
*         METHOD- 
*         1.  DETERMINE THE LINE IN THE ERROR DISPLAY TO POST THE MALET 
*             COMMAND ABORTED ON. 
*         2.  MOVE THE MALET  COMMAND  ABORTED  MESSAGE  TO  THE  ERROR 
*             DISPLAY.
*         3.  REPORT THE ERROR TO THE USER AND WAIT FOR A GO. 
*         4.  SENT A LINE CONTAINING ALL DASHES TO THE PRINT FILE.
*         5.  RETURN TO THE CALLING MODULE. 
/ 
*         ENTRY-
*         B3 REGISTER CONTAINS  THE NUMBER OF THE LINE TO SEND THE NEXT 
*            MESSAGE TO IN THE ERROR DISPLAY. 
*         B12 REGISTER  CONTAINS THE NUMBER FOR THE MALET COMMAND BEING 
*            EXECUTED.
*         B13 REGISTER CONTAINS THE CALLING MODULE NUMBER.
* 
*         EXIT- 
*         THE ERROR REPORTED TO THE USER. 
* 
*         REGISTERS USED- 
*         B0  - TEMPORARY STORAGE.
* 
*         SUBMODULES REFERENCED-NONE. 
* 
*         BUFFERS USED-NONE.
* 
* 
0  FORMAT LCM*D ABORTED ON UNKNOWN COMMAND
1  FORMAT LCM*D ABORTED ON .AUTODMP. COMMAND
2  FORMAT LCM*D ABORTED ON .COMPARE. COMMAND
3  FORMAT LCM*D ABORTED ON .RES/CONNECT MAINT PATH. COMMAND 
4  FORMAT LCM*D ABORTED ON .MAINT FUNCTION. COMMAND 
5  FORMAT LCM*D ABORTED ON .MEMORY READ. COMMAND
6  FORMAT LCM*D ABORTED ON .MEMORY WRITE. COMMAND 
7  FORMAT LCM*D ABORTED ON .PMC. COMMAND
10 FORMAT LCM*D ABORTED ON .RES. COMMAND
11 FORMAT LCM98C ABORTED ON .HARDWARE STATUS. COMMAND 
12 FORMAT LCM TEST ABORTED - LOCAL NAD HARDWARE FAILURE 
27 FORMAT --------------------------------------------------
13 FORMAT LCM*D ERROR(S) = *DECD
* 
/--------- EQUATES FOR MODULE 
* 
   EQUATE CRES = 10B, HSTAT = 11B 
* 
/---------POST COMMAND ABORTED AND REPORT THE ERROR.
* 
30 B0=3                      *KL DISPLAY LINE NUMBER
   IF(ES.AND.TM.NE.0)B0=2    *TERMINAL LINE NUMBER
   IF(B12.GT.13) B12=0       *IF UNKNOWN COMMAND
   MSG B12 (B13) TO LINE B0  *COMMAND ABORTED MESSAGE 
   PICTURE
   HALT                      *REPORT THE ERROR
   MSG 27 TO PRINT
   BLANK
   IF(DC.NE.301)GOTO 42 
   B0=EC
   RES,ABT 50 
   STATUS HARDWARE,ABT 60 
40 IF(SB.AND.2.NE.0)GOTO 50 
42 EXIT 
60 IF(EC.NE.6027)GOTO 50
   IF(B0.EQ.EC)GOTO 50
   GOTO 40
50 MSG 12 TO PRINT, DISPLAY, DAYFILE
   MSG 13 (B13,B14) TO PRINT, DISPLAY, DAYFILE
   END 30                    *END OF THE MODULE 
COMPILE                      *LCM98C - POST COMMAND ABORTED ERROR DIS.
   MODULE LCM99,LCN(300,301)LOCK
1  FORMAT COPYRIGHT CONTROL DATA CORP. 1981 
/ 
/   PARAMETER DESCRIPTION.
/ 
/         P0 - NOT USED.
/ 
/         P1 - 000X - MEMORY OF THE NAD BEING TESTED. 
/              0000 - DEFAULT EQUALS 16K. 
/              0001 - 16K.
/              0002 - 24K.
/              0003 - 32K.
/              0004 - 40K.
/              0005 - 48K.
/              0006 - 56K.
/              0007 - 65K.
               0017 - 65K TRANSMIC NAD
/ 
/         P2 - NOT USED.
/ 
/         P3 - NOT USED.
/ 
/         P4 - NOT USED.
/ 
/         P5 - NOT USED.
/ 
/         P6 - NOT USED.
/ 
/         P7 - NOT USED.
/ 
/         P8 - NOT USED.
/ 
/         P9 - NOT USED.
/ 
/ 
/    WARNING - THE LCM TEST WILL DESTROY THE NAD CONTROLWARE
/              IN THE NAD MEMORY BEING TESTED.
/ 
2  END 2                     *END OF THE MODULE 
COMPILE,SOURCE               *LCM99 - PARAMETER DOCUMENTATION 
   MODULE LCM99A,LCN(300,301)LOCK 
/ 
/                                      RUN       RUN
/       MODULE      MODULE NAME        TIME      TIME 
/       NUMBER    AND DESCRIPTION     LOCAL     REMOTE
/       ------    ---------------     ------    ------
/ 
/         01   ONES AND ZEROS TEST       3         9     SEC
/         02   ALTERNATING ONES TEST     3         9     SEC
/         03   SLIDING ZERO TEST         9        32     SEC
/         04   SLIDING ONE TEST          9        32     SEC
/         05   ADDRESSING TEST           4         6     SEC
/         06   RANDOM DATA TEST         15        23     SEC
/ 
1  END 1                     *END OF THE MODULE 
COMPILE,SOURCE               *LCM99A - DESCRIPTION DOCUMENTATION
   MODULE LCM99B,LCN(300,301)LOCK 
/ 
/         GLOSSARY OF TERMS 
/         ----------------- 
/ 
/         CML       - COMMON MAINTENANCE LIBRARY
/         CVL       - CUSTOMER ENGINEERING VALIDATION 
/         ERS       - EXTERNAL REFERENCE SPECIFICATION
/         LCM       - LOOSELY COUPLED NETWORK MEMORY TEST 
/         LCN       - LOOSELY COUPLED NETWORK 
/         MALET     - MAINTENANCE APPLICATION LANGUAGE   FOR  EQUIPMENT 
/                     TESTING 
/         NAD       - NETWORK ACCESS DEVICE 
/         NO.       - NUMBER
/         PP        - PERIPHERAL PROCESSOR
/         PUB.      - PUBLICATION 
/         SPEC.     - SPECIFICATION 
1  END 1                     *END OF MODULE 
COMPILE,SOURCE               *LCM99B - GLOSSARY OF TERMS
***       LCM - LCN MEMORY TEST 
***       APPLICATIONS
**
*         APPLICATIONS
*         ------------
* 
*         1.  EACH OF THE MODULES IN THE LCM TEST PROVIDE THE USER WITH 
*             THE  ABILITY  TO  REPEAT  CONDITIONS  WHICH  WILL  REPEAT 
*             WRITING AND READING THE DATA PATTERN. 
* 
*         2.  EACH OF THE MODULES IN THE LCM TEST PROVIDE THE USER WITH 
*             THE ABILITY TO REPEAT THE MODULE. 
* 
*         3.  THE DATA  ERROR DISPLAY WILL DISPLAY UP TO EIGHT (8) DATA 
*             ERRORS AT ONE ERROR STOP.  AT THE END OF EACH  CONDITION, 
*             ANY UNREPORTED DATA ERRORS WILL BE REPORTED.
*             AFTER 20 OCTAL ERRORS ARE REPORTED  NO OTHER ERRORS 
*             WILL BE DISPLAYED IN THAT MODULE. 
* 
*         4.  ONE PARITY ERROR WILL BE REPORTED FOR EACH 40 HEXADECIMAL 
*             NAD MEMORY ADDRESSES READ.
* 
*         5.  THE PROCESSOR IN THE NAD BEING TESTED DOES NOT HAVE TO BE 
*             IN  A  WORKING  STATE  IN ORDER TO TEST THE MEMORY IN THE 
*             NAD.
* 
*         6.  WHEN TESTING THE MEMORY  IN  A  REMOTE  NAD,  ANY  MEMORY 
*             LOCATIONS  THAT  CONTAINS  A  PARITY ERROR CANNOT BE READ 
*             OVER THE TRUNK.   IN  THE  ERROR  DISPLAY  FOR  A  MEMORY 
*             LOCATION  CONTAINING A PARITY ERROR,  THE ACTUAL DATA IS
*             UNPRODICTABLE.
* 
* 
*** 3.1.3 INTERFACES
**
*   3.1.3 INTERFACES
*         ----------
* 
*         REFER TO SECTION 3.1.2 FOR PARAMETERS AND MESSAGES. 
* 
* 
*** 3.1.4 TEST ABORTS 
**
*   3.1.4 TEST ABORTS 
*         ----------- 
* 
*         1.  IF THE ACCESS LEVEL IS TOO LOW TO ACCESS  THE  MEMORY  IN 
*             THE  NAD  BEING  TESTED,  THE  PARAMETER  CHECKING MODULE 
*             (LCM00) WILL LOOP UNTIL THE ACCESS LEVEL IS CORRECTED AND 
*             THE TEST RERUN. 
* 
*         2.  IF PARAMETER  WORD  P1  DOES  NOT  CONTAIN A VALUE FROM 0 
*             THROUGH 7, THE PARAMETER  CHECKING  MODULE  (LCM00)  WILL 
*             LOOP  UNTIL  PARAMETER  WORD P1 IS CORRECTED AND THE TEST 
*             RERUN.
* 
*         3.  IF THE  PRODUCT  OVERLAY  DETECTS  AN  ERROR  DURING  THE 
*             EXECUTION  OF  A  MODULE, THE ERROR WILL BE REPORTED, AND 
*             THEN THE MODULE WILL ABORT TO THE END OF THE CONDITION. 
* 
*         4.  ANYTIME AFTER REPORTING A MODULE ERROR, IF THE ERROR COUNT
*             IS  EQUAL  TO  TWENTY  (20) OCTAL OR GREATER, THE MODULE
*             WILL ABORT TO THE END OF THE CONDITION. 
* 
*         5.  WHEN AUTODUMPING THE CONTENTS OF THE MEMORY IN  A  REMOTE 
*             NAD,  THE  DATA  TRANSFER WILL BE TERMINATED BY THE TRUNK 
*             CONTROL INTERFACE IN THE REMOTE NAD IF  A  MEMORY  PARITY 
*             ERROR  IS DETECTED WHEN THE MEMORY LOCATION IS READ.  THE 
*             CONTENTS OF THE MEMORY LOCATION WILL  NOT  BE  TRANSFERED 
*             OVER  THE  TRUNK.   THE  LCM TEST WILL AUTOMATICALLY SKIP 
*             OVER THE MEMORY LOCATION  CONTAINING  THE  MEMORY  PARITY 
*             ERROR AND CONTINUE TO READ THE REMAINING MEMORY LOCATIONS 
*             FOR THAT 40 HEXADECIMAL WORD TRANSFER.
* 
* 
*** 3.1.5 SYSTEM ABORTS 
**
*   3.1.5 SYSTEM ABORTS 
*         ------------- 
* 
*         NO SYSTEM ABORTS SHOULD EVER BE  CAUSED  BY  THE  TEST.   THE 
*         PRODUCT  OVERLAY  DRIVER  SHOULD  PROTECT THE SYSTEM FROM ANY 
*         ABORTS. 
* 
* 
*** 3.1.6 ERRORS
**
*   3.1.6 ERRORS
*         ------
* 
*         FOR EASE OF REFERENCE, THESE MESSAGES ARE  GROUPED  WITH  ALL 
*         THE TEST MESSAGES IN 3.1.2. 
* 
* 
*** 3.1.7 PERFORMANCE 
**
*   3.1.7 PERFORMANCE 
*         ----------- 
* 
* 
***       HARDWARE
**
*         HARDWARE
*         --------
* 
*         1.  THE LCM  TEST IS DESIGNED TO DETECT ALL SOLID FAILURES IN 
*             THE MEMORY IN THE NAD.
* 
*         2.  THE LCM TEST  IS  NOT  DESIGNED  TO  DETECT  INTERMITTENT 
*             FAILURES  IN  THE NAD MEMORY.  THE POSIBILITY EXISTS THAT 
*             THE TEST COULD DETECT AN INTERMITTENT MEMORY FAILURE. 
* 
*         3.  THE NAD PROCESSOR IS NOT USED IN THE  NAD  IN  WHICH  THE 
*             MEMORY  IS  BEING  TESTED AND WILL BE PLACED IN A STOPPED 
*             CONDITION.
* 
*         4.  ADDRESSES 30 THROUGH 3F HEXADECIMAL CANNOT BE TESTED WHEN 
*             TESTING THE MEMORY IN A LOCAL NAD BECAUSE THESE ADDRESSES 
*             ARE USED BY THE DEVICE INTERFACE. 
* 
*         5.  ADDRESSES 20 THROUGH 3F HEXADECIMAL CANNOT BE TESTED WHEN 
*             TESTING   THE  MEMORY  IN  A  REMOTE  NAD  BECAUSE  THESE 
*             ADDRESSES ARE USED BY  THE  TRUNK  INTERFACE  AND  DEVICE 
*             INTERFACE.
* 
*         6.  IN ADDITION TO ITEM 4 THE LAST ADDRESS IN THE MEMORY
*             OF A LOCAL NAD CANNOT BE TESTED.
* 
*         7.  IN ADDITION TO ITEM 5 THE ADDRESS FFFF HEXADECIMAL IN 
*             A REMOTE NAD CANNOT BE TESTED IF THE NAD HAS 65K. 
* 
*         8. ADDRESS 40 HEX WILL NOT BE READ OR COMPARED AS THAT
*            LOCATION IS RESERVED FOR THE REAL TIME CLOCK.
* 
* 
* 
***       SOFTWARE
**
*         SOFTWARE
*         --------
* 
*         MODULE RUNNING TIMES. 
*         --------------------- 
* 
*         MODULE           RUNNING            RUNNING 
*          NAME           TIME LOCAL        TIME REMOTE 
*         ------          ----------        ----------- 
* 
*IF -DEF,CMSE17X
*         LCM00             1 SEC.             2 SEC. 
*         LCM01             3 SEC.             9 SEC. 
*         LCM02             3 SEC.             9 SEC. 
*         LCM03             9 SEC.            32 SEC. 
*         LCM04             9 SEC.            32 SEC. 
*         LCM05             4 SEC.             6 SEC. 
*         LCM06            15 SEC.            23 SEC. 
*         ------------------------------------------- 
*         TOTALS           42 SEC.     1 MIN. 48 SEC. 
*ENDIF
*IF DEF,CMSE17X 
*         LCM00             4 SEC.             4 SEC. 
*         LCM01             6 SEC.            11 SEC. 
*         LCM02             6 SEC.            11 SEC. 
*         LCM03            13 SEC.            36 SEC. 
*         LCM04            13 SEC.            36 SEC. 
*         LCM05             8 SEC.            10 SEC. 
*         LCM06            19 SEC.            30 SEC. 
*         ------------------------------------------- 
*         TOTALS    1 MIN. 05 SEC.     2 MIN. 05 SEC. 
*ENDIF
* 
* 
*         1.  THE RUNNING TIMES LISTED ABOVE ARE VALID FOR A 16K MEMORY 
*             CONFIGURATION.
* 
*IF -DEF,CMSE17X
*         2.  THE MODULE RUNNING TIMES LISTED ABOVE WERE MEASURED WHILE 
*             RUNNING  LCM  USING  THE  KL  DISPLAY UNDER THE OPERATING 
*             SYSTEM. 
*ENDIF
*IF DEF,CMSE17X 
*         2.  THE MODULE RUNNING TIMES LISTED ABOVE WERE MEASURED WHILE 
*             RUNNING LCM UNDER CMSE FROM A DISK. 
*ENDIF
* 
*         3.  THE RUNNING TIME  OF  THE  LCN  TEST WILL INCREASE AS THE 
*             AMOUNT OF SYSTEM ACTIVITY INCREASES.
* 
*         4.  THE RUNNING TIME FOR TESTING THE MEMORY IN A  REMOTE  NAD 
*             WILL VARY WITH THE AMOUNT OF ACTIVITY ON THE TRUNK. 
* 
*         5.  LCM CAUSES DEGRADATION   TO   THE   OPERATING  SYSTEM  BY 
*             DESTROYING THE NAD COMMON CONTROLWARE IN  THE  NAD  BEING 
*             TESTED. 
* 
*         6.  ALL MODULES IN THE LCM TEST ARE DESIGNED TO RUN AT ACCESS 
*             LEVEL FIVE (5). 
* 
* 
*** 3.1.8 INSTALLATION PARAMETERS 
**
*   3.1.8 INSTALLATION PARAMETERS 
*         ----------------------- 
* 
*         THE FOLLOWING ASSEMBLY OPTION CAN BE OBTAINED BY DEFINING THE 
*         FOLLOWING  NAME  DURING  THE UPDATE RUN TO CREATE THE COMPILE 
*         FILE FOR LCM- 
* 
*         *DEFINE,CMSE17X    TO ASSEMBLE LCM FOR OFF-LINE.
* 
* 
*** 4.0   PRODUCT LEVEL DESCRIPTION 
**
*   4.0   PRODUCT LEVEL DESCRIPTION 
*         ------------------------- 
* 
*** 4.1   PUBLICATIONS AFFECTED 
**
*   4.1   PUBLICATIONS AFFECTED 
*         --------------------- 
* 
*         CHANGES TO LCM AFFECTS THE FOLLOWING PUBLICATIONS-
* 
*         CML REFERENCE MANUAL                                60455980
*         DEMOT REFERENCE MANUAL                              60456310
* 
* 
*** 4.2   EQUIPMENT CONFIGURATION 
**
*   4.2   EQUIPMENT CONFIGURATION 
*         ----------------------- 
* 
*         1.  WHEN TESTING THE MEMORY IN A LOCAL  NAD,  THE  TEST  WILL 
*             RESIDE  IN  A CYBER PP AND TEST THE LOCAL NAD THROUGH THE 
*             DEVICE INTERFACE CONNECTED TO THE CHANNEL  ON  THE  CYBER 
*             MAINFRAME.
* 
*         2.  WHEN TESTING  THE  MEMORY  IN A REMOTE NAD, THE TEST WILL 
*             RESIDE IN A CYBER PP AND TEST THE REMOTE NAD THROUGH  THE 
*             REMOTE NAD-S TRUNK INTERFACE.  A LOCAL NAD CONNECTED TO A 
*             CHANNEL  ON  THE  CYBER  MAINFRAME  WILL   BE   USED   TO 
*             COMMUNICATE WITH THE REMOTE NAD VIA THE TRUNK.  THE CYBER 
*             170 HOST NAD COMMON CONTROLWARE WILL BE USED IN THE LOCAL 
*             NAD TO COMMUNICATE WITH THE REMOTE NAD. 
* 
* 
*** 4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS 
**
*   4.3   INTERFACES TO OTHER SOFTWARE PRODUCTS 
*         ------------------------------------- 
* 
*         1.  THE TEST INTERFACES  TO THE NAD CYBER 170 HOST NAD COMMON 
*             CONTROLWARE WHEN TESTING THE MEMORY IN A REMOTE NAD.
* 
* 
*** 4.4   SECURITY
**
*   4.4   SECURITY
*         --------
* 
*IF -DEF,CMSE17X
*         SECURITY IS  PROVIDED  BY  THE  OPERATING  SYSTEM FOR ON-LINE 
*         MALET THRU THE USE OF CVL.
*ENDIF
*IF DEF,CMSE17X 
*         WHILE RUNNING  UNDER DEMOT, SECURITY FOR THE TEST IS PROVIDED 
*         BY THE ACCESS LEVEL USED ON THE ASSIGN DIRECTIVE. 
*ENDIF
* 
* 
*** 5.0   RELIABILITY, AVAILABILITY, AND MAINTAINABILITY STANDARDS
**
*   5.0   RELIABILITY, AVAILABILITY, AND MAINTAINABILITY STANDARDS
*         --------------------------------------------------------
* 
*         REFER TO THE LCN M/S DEVELOPMENT PLAN - ARH3663.
* 
* 
*** 6.0   GLOSSARY
**
*   6.0   GLOSSARY
*         --------
* 
*IF -DEF,CMSE17X
*         CML       - COMMON MAINTENANCE LIBRARY
*ENDIF
*IF DEF,CMSE17X 
*         CMSE      - COMMON MAINTENANCE SOFTWARE EXECUTIVE 
*ENDIF
*IF -DEF,CMSE17X
*         CVL       - CUSTOMER ENGINEERING VALIDATION 
*ENDIF
*IF DEF,CMSE17X 
*         DEMOT     - DIAGNOSTIC EXECUTIVE MONITOR FOR OFF-LINE TESTING 
*ENDIF
*         ERS       - EXTERNAL REFERENCE SPECIFICATION
*         LCM       - LOOSELY COUPLED NETWORK MEMORY TEST 
*         LCN       - LOOSELY COUPLED NETWORK 
*IF -DEF,CMSE17X
*         MALET     - MAINTENANCE APPLICATION LANGUAGE   FOR  EQUIPMENT 
*                     TESTING 
*ENDIF
*IF DEF,CMSE17X 
*         MSL100    - MAINTENANCE SOFTWARE LIBRARY FOR CYBER 170
*ENDIF
*         NAD       - NETWORK ACCESS DEVICE 
*         NO.       - NUMBER
*         PP        - PERIPHERAL PROCESSOR
*         PUB.      - PUBLICATION 
*         SPEC.     - SPECIFICATION 
