*DECK CRP 
*** CRP - CYBER RING PORT TESTS 
*** 1.0   IDENTIFICATION
**
* 
*   1.1   PROGRAM NAME
* 
*         CRP - CYBER RING PORT TESTS 
* 
*   1.2   AUTHOR
* 
*         H. P. QUITSCHAU       MAY 24, 1983
*         R. V. SCHORNSTEIN     JAN 20, 1984
* 
*   1.3   AUTHORS OF MODIFICATIONS
* 
*         H. P. QUITSCHAU       MAR  5, 1985
* 
*   1.4   COPYRIGHT       CONTROL DATA CORPORATION, 1983
* 
* 
*         CONTAINED HEREIN ARE SOFTWARE PRODUCTS COPYRIGHTED BY 
*         CONTROL DATA CORPORATION.  REPRODUCTION WITHOUT PERMISSION
*         IS PROHIBITED.  THE COPYRIGHT NOTICE MUST APPEAR ON ALL 
*         AUTHORIZED COMPLETE OR PARTIAL COPIES.
* 
* 
* 
* 
*** 2.0   INTRODUCTION
**
*   2.1   OVERVIEW
* 
*         THE CYBER RING PORT PROVIDES AN INTERFACE BETWEEN A 
*         CYBER 12-BIT PPU CHANNEL AND THE HIGH PERFORMANCE PROCESSOR 
*         COMMUNICATION RING.  CRP IS A COLLECTION OF TEST MODULES
*         THAT ARE LOGICALLY GROUPED TO ALLOW FOR ISOLATION OF A
*         FAILURE TO THE BOARD LEVEL, AND NUMERICALLY ORDERED TO
*         PROCEED THROUGH THE HARDWARE TESTING INCREASINGLY MORE
*         COMPLEX FUNCTIONS.  THE TEST MODULES CAN BE RUN AS A
*         COMPLETE SERIES, PROVIDING THE USER WITH A CONFIDENCE 
*         TEST, OR INDIVIDUALLY, PROVIDING A MEANS OF ISOLATING 
*         FAILURES TO A SPECIFIC BOARD OR COMPONENT FOR CHECKOUT
*         AND REPAIR. 
* 
*   2.2   CHARACTERISTICS 
* 
*         1.  PROGRAM NAME.........................................CRP
*         2.  TEST/DIAGNOSTIC/UTILITY/SYSTEM......................TEST
*         3.  BINARY LENGTH........................................347
*         4.  TYPE OF CODE...................................12 BIT PP
*         5.  RUN TIME.......................................7 MINUTES
*         6.  LEVEL OF ISOLATION.................................BOARD
*         7.  ON-LINE/OFF-LINE/BOTH...............................BOTH
*         8.  ON-LINE SYSTEM................................NOS,NOS/BE
*         9.  OFF-LINE SYSTEM.................................SMM/CMSE
*        10.  PROGRAM LANGUAGE...................................MALET
* 
*   2.3   FEATURES
* 
*         CRP WILL DETECT 95% OF THE SOFTWARE DETECTABLE HARDWARE 
*         ERRORS WITHIN THE CRP.
* 
*         CRP WILL ISOLATE 95% OF THE SOFTWARE DETECTABLE FAILURES
*         TO THE BOARD LEVEL. 
* 
* 
*   2.4   HARDWARE REQUIREMENTS 
* 
*         CRP REQUIRES A CYBER RING PORT CONNECTED TO A CYBER PP CHAN-
*         NEL AND ITS RING PORT CABLES CONNECTED IN A CLOSED LOOP.
*         THIS CONFIGURATION SATISFIES THE REQUIREMENTS OF ALL
*         TESTS EXCEPT FOR CHECKOUT/REPAIR MODULES CRP51 AND
*         CRP53 WHICH REQUIRE AT LEAST ONE FUNCTIONAL HPP ON THE RING TO
*         TRANSMIT RING PACKETS AND TO SOURCE THE RING STOP 
*         SIGNAL. 
* 
* 
*   2.5   RESTRICTIONS
* 
*         CRP IS NOT A CONCURRENT TEST.  IT REQUIRES A DEDICATED
*         CYBER RING PORT AND AN ACCESS LEVEL OF 20 OR HIGHER 
*         TO EXECUTE. 
* 
* 
*** 3.0   APPLICABLE DOCUMENTS
**
*         MALET REFERENCE MANUAL                             60456020 
*         CML 3.2 REFERENCE MANUAL                           60455980 
*         MALET PROGRAM DOCUMENTATION AND CODING STANDARD    ARH5000
*         MALET PROGRAMMING GUIDE                            ARH5263
*         CYBER RING PORT DESIGN SPECIFICATION               77960951 
*         CYBER-PLUS HARDWARE DESIGN REQUIREMENTS 
* 
* 
*** 4.0   PROGRAM DESCRIPTION 
* 
*** 4.1   ABSTRACT
**
*         CRP TEST MODULES ARE DESIGNED FOR USE IN A CONFIDENCE 
*         TEST MODE OR IN A CHECKOUT/REPAIR MODE.  IN THE CONFIDENCE
*         TEST MODE THE MODULES MAKE LIMITED USE OF PARAMETER WORDS 
*         AND EXECUTIVE SWITCHES.  REPEAT MODULE AND SCOPING LOOPS
*         ARE DISALLOWED.  THE CONFIDENCE TEST MODE IS INITIATED BY 
*         ENTERING THE 'RUN CRP' COMMAND AND IS DESIGNED TO EXECUTE 
*         WITHIN 7 MINUTES. 
*         IN THE CHECKOUT/REPAIR MODE THE MODULES MAKE EXTENSIVE USE
*         OF PARAMETER WORDS AND SWITCHES TO DETERMINE THE EXACT
*         NATURE OF THE TEST.  THE MODULES ARE DESIGNED TO EXERCISE 
*         ONE FUNCTION OR RELATED FUNCTIONS AND ALLOW THE USER TO 
*         RUN IN SCOPE LOOP MODE.  THE USER CAN SET PARAMETER REGISTERS 
*         TO SELECT A DESIRED DATA PATTERN, A PAUSE VALUE TO VARY 
*         LOOP REPITITION RATE, AND EQUIPMENT CODE ADDRESSES.  THE
*         REPEAT MODULE, AND STOP-ON-ERROR SWITCHES 
*         ARE SENSED TO AID IN LOCATING FAILURES. 
* 
* 
* 
*         MODULE                      DESCRIPTION 
*         ______                      ___________ 
* 
*         CRP00            PARAMETER TEST 
* 
*         CRP01            FUNCTION CRP TEST.  SENDS A FUNCTION,
*                          CHECKS FOR INACTIVE. 
* 
*         CRP03            CRP WRITE TEST.  PERFORMS A WRITE OF THE 
*                          GENERAL STATUS WORD. CHECKS FOR EMPTY. 
*                          DATA TRANSLATION MODE 0/2. 
* 
*         CRP05            CRP READ TEST.  PERFORMS A READ OF THE 
*                          GENERAL STATUS WORD.  CHECKS FOR FULL. 
*                          DATA TRANSLATION MODE 0/2. 
* 
*         CRP07            DEADMAN TIMER TEST 
* 
*         CRP09            FUNCTION DECODE TEST FOR 16-BIT REGISTERS
* 
*         CRP10            FUNCTION DECODE TEST FOR 32-BIT REGISTERS
* 
*         CRP11            DATA TRANSLATION MODE TEST 
* 
*         CRP13            DIAGNOSTIC WRITE/READ THE GENERAL STATUS 
*                          WORD (GSW).  MODE 2. 
* 
*         CRP15            WRITE/READ DIAGNOSTIC REGISTER.  MODE 2. 
* 
*         CRP17            DIAGNOSTIC WRITE/READ THE RING STOP REGISTERS. 
*                          MODE 2.
* 
*         CRP19            WRITE/READ THE  RESET REGISTER.
*                          MODE 2.
* 
*         CRP21            WRITE/READ THE RING CONTROL/DATA REGISTERS.
*                          MODES 0, 1, AND 2. 
* 
*         CRP23            CONTROL FIFO/DATA FIFO MEMORY TEST,
*                          DIAGNOSTIC WRITE. MODES 0, 1, AND 2. 
* 
*         CRP25            REQUEST STACK MEMORY TEST, DIAGNOSTIC WRITE. 
*                          MODE 2.
* 
* 
*         CRP27            DIAGNOSTIC WRITE/READ LOST PACKET REGISTERS. 
*                          MODE 2.
* 
*         CRP29            TESTS GSW END FLAG BIT, CRP FUNCTION CODES 
*                          1010 AND 1000, CONTROL AND DATA FIFOS. 
* 
*         CRP31            TESTS GSW LOST PACKET AND MULTIPLE LOST
*                          PACKET BITS, DISABLE LOST PACKET AND CLEAR 
*                          LOST PACKET BITS IN THE DIAGNOSTIC REGISTER, 
*                          AND THE LOST PACKET REGISTERS. 
* 
*         CRP33            TESTS GSW RQSTK READY BIT, CRP FUNCTION
*                          CODE 0001, AND THE CLEAR RQSTK BIT IN THE
*                          DIAGNOSTIC REGISTER. 
* 
*         CRP35            TESTS GSW DATA FIFO READY BIT, CRP FUNCTION
*                          CODE 0010, AND THE CLEAR CF/DF BIT IN THE
*                          DIAGNOSTIC REGISTER. 
* 
*         CRP37            TESTS GSW CRP FULL RING STOP BIT AND DISABLE 
*                          RING STOP BIT IN THE CRP DIAGNOSTIC REGISTER.
* 
*         CRP39            TESTS GSW CRP RQSTK FULL RING STOP BIT, AND
*                          THE DISABLE RQSTK FULL RING STOP BIT IN THE
*                          DIAGNOSTIC REGISTER. 
* 
*         CRP41            TESTS GSW DEADMAN TIMER BIT. 
* 
*         CRP43            TESTS GSW RING DATA REGISTER FULL BIT. 
* 
*         CRP45            TESTS ENABLE ALL RING TRAFFIC TO FIFO BIT
*                          IN THE CRP DIAGNOSTIC REGISTER.
* 
*         CRP47            TESTS THE DISABLE AUTO DISCONNECT BIT IN THE 
*                          CRP DIAGNOSTIC REGISTER. 
* 
*         CRP51            HIGH SPEED RING DATA TRANSFER TEST.
* 
*         CRP53            TESTS THE HPP RING STOP BIT IN THE GSW.
* 
* 
* 
* 
* 
* 
*** 4.2   EXECUTION SEQUENCE
**
*         INITIALLY, CRP TEST MODULES VERIFY THAT COMMUNICATION 
*         EXISTS BETWEEN THE CRP AND THE PP CHANNEL.  ONCE THIS 
*         HAS BEEN ESTABLISHED, MORE COMPLEX CAPABILITIES ARE TESTED. 
* 
*         IN THE CONFIDENCE TEST MODE, THE MOST COMPLEX TESTING 
*         CONSISTS OF A LOW SPEED RING CHECK, WHICH TESTS THE CRP 
*         RING COMMUNICATIONS CHANNEL AND VERIFIES THE FULL FUNCTION- 
*         ALITY OF THE CRP WITH THE EXCEPTION OF HIGH-SPEED HPP TO
*         CRP TRANSMISSION AND RING STOP INPUTS.
* 
*         MODULES CRP51 AND CRP53 REQUIRE THE PRESENCE OF AN HPP
*         TO INITIATE PACKET TRANSFERS AND RING STOPS.  THESE MODULES 
*         ARE NOT EXECUTED IN THE CONFIDENCE TEST MODE SINCE IT 
*         CANNOT BE ASSUMED THAT AN HPP WILL BE AVAILABLE.
* 
*         MODULE CRP00 CHECKS THAT THE PARAMETERS ENTERED ARE VALID.
*         THIS MODULE IS THE FIRST MODULE EXECUTED IN THE CONFIDENCE
*         TEST MODE (RUN CRP).
* 
*         MODULES CRP01-CRP11 VERIFY THAT THE CHANNEL INTERFACE BOARD 
*         IS FUNCTIONING PROPERLY.  THEY TEST THE CHANNEL INTERFACE 
*         LOGIC, THE FUNCTION DECODER, THE SHIFT LOGIC, AND THE DEAD- 
*         MAN TIMER.  AN ERROR IN THESE MODULES INDICATES THAT THE
*         THE CHANNEL INTERFACE BOARD IS LIKELY AT FAULT. 
* 
*         MODULES CRP13-CRP21 VERIFY THAT THE CRP CONTROL BOARD IS
*         FUNCTIONING PROPERLY.  THEY TEST THE CONTROL LOGIC, AS WELL 
*         AS STATUS AND CONTROL REGISTERS.  AN ERROR IN THESE MODULES 
*         INDICATES THAT THE CRP CONTROL BOARD IS LIKELY AT FAULT.
* 
*         MODULES CRP23-CRP27 VERIFY THAT THE RING INTERFACE BOARD IS 
*         FUNCTIONING PROPERLY. THEY TEST THE CONTROL AND DATA FIFOS, 
*         REQUEST STACK, AND LOST PACKET REGISTERS.  AN ERROR IN THESE
*         MODULES INDICATES THAT THE RING INTERFACE BOARD IS LIKEY AT 
*         FAULT.
* 
*         MODULE CRP29-CRP47 VERIFY THAT THE RING COMMUNICATIONS
*         CHANNEL IS FUNCTIONING PROPERLY.  IN ADDITION, THEY CHECK 
*         THE FUNCTION DECODER, LOST PACKET REGISTERS, AND EQUIPMENT
*         CODE COMPARE LOGIC.  AN ERROR IS THESE MODULES INDICATES
*         THAT THE RING INTERFACE BOARD IS LIKEY AT FAULT.
* 
*         ONCE THE CONFIDENCE TEST HAS BEEN EXECUTED, THE USER MAY
*         WISH TO RUN ANY ONE OF THE MODULES IN THE CHECKOUT/REPAIR 
*         MODE.  EACH MODULE IS DESIGNED TO EXERCISE ONLY ONE 
*         PARTICULAR HARDWARE FUNCTION OR RELATED FUNCTIONS AND AID 
*         THE USER BY LOOPING ON A SPECIFIC FAILURE.
* 
*** 4.3   DETAILED DESCRIPTION
*** 4.3.1 OPERATIONAL PROCEDURE 
**
*         REFER TO THE MALET REFERENCE MANUAL FOR A DETAILED DESCRIP- 
*         TION OF THE MALET LANGUAGE. 
* 
*         REFER TO THE CML REFERENCE MANUAL TO RUN MALET UNDER THE NOS
*         OPERATING SYSTEM. 
* 
* 
* 
*** 4.3.2 LOADING PROCEDURE 
**
*         REFER TO THE CML REFERENCE MANUAL TO RUN MALET UNDER THE NOS
*         OPERATING SYSTEM. 
* 
*         REFER TO THE MSL100 OFF-LINE MAINTENANCE SYSTEM LIBRARY,
*         VOLUME 1, REFERENCE MANUAL TO RUN THE CMSE OFF-LINE 
*         MAINTENANCE SYSTEM. 
* 
*         REFER TO THE SMM REFERENCE MANUAL VOLUME 3 TO RUN SMM-MALET.
* 
* 
* 
*** 4.3.3 RUNNING PROCEDURE 
**
*         REFER TO THE CML REFERENCE MANUAL TO RUN MALET UNDER THE NOS
*         OPERATING SYSTEM. 
* 
*         REFER TO THE MSL100 OFF-LINE MAINTENANCE SYSTEM LIBRARY,
*         VOLUME 1, REFERENCE MANUAL TO RUN THE CMSE OFF-LINE 
*         MAINTENANCE SYSTEM. 
* 
*         REFER TO THE SMM REFERENCE MANUAL VOLUME 3 TO RUN SMM-MALET.
* 
* 
* 
*** 4.3.4 PARAMETERS
**
*         ALL PARAMETERS ARE IN HEX.
* 
*     EXECUTIVE SWITCHS 
* 
*         ALL PARAMETERS ARE IN OCTAL OR HEX. 
*         (THE CRP AND AFP ARE HEX MACHINES, HOWEVER THE
*           PARAMETER REGISTERS MAY BE USED AS MALET ALLOWS)
* 
*         P0= ADDRESS OF CRP UNDER TEST 
* 
*         P1= ADDRESS OF NON-EXISTANT HPP (USED FOR LOST PACKET TESTS). 
* 
*         P2= ADDRESS OF FUNCTIONAL HPP (USED FOR HIGH SPEED RING TEST
*             AND RING STOP TEST).
* 
*         P3= RING STOP AND EXTERNAL RESET ADDRESS OF HPP. (PHYSICAL HPP NO.) 
*             (USED ONLY IN MODULE CRP53) 
* 
*         P4= PAUSE VALUE (MICRO-SECONDS) 
* 
*         P5= SUBMODULE SELECTOR
* 
*         P6= DATA WORD 1  (MODES 0, 1, AND 2)
* 
*         P7= DATA WORD 2  (MODES 1 AND 2)
* 
*         P8= DATA WORD 3  (MODE 1) OR TIMEOUT DELAY FOR CRP01,03,05
* 
*         P9= DATA WORD 4  (MODE 1) , WORD COUNT OR OTHER CONDITION 
* 
*    DIAGNOSTIC SWITCHS 
* 
*         S1= PPU FULL SCREEN DISPLAY 
* 
* 
*         PARAMETER REGISTER USAGE
* 
*         THE CONFIDENCE TEST MODE DOES NOT MAKE USE OF THE 
*         PARAMETER REGISTERS WITH THE EXCEPTION OF P0 AND P1.
*         IN ORDER FOR THE CONFIDENCE TEST TO EXECUTE PROPERLY
*         PARAMETER WORDS P2-P9 MUST BE ZERO.  PARAMETER WORD 
*         P0 CONTAINS THE ADDRESS OF THE CYBER RING PORT UNDER
*         TEST.  P1 CONTAINS THE ADDRESS OF A NON-EXISTENT HPP
*         FOR USE IN LOST PACKET TESTS. 
* 
*         THE CHECKOUT/REPAIR MODE MAKES EXTENSIVE USE OF THE 
*         PARAMETER REGISTERS.  BELOW IS A CROSS REFERENCE TABLE
*         SHOWING THE MODULES AND THE PARAMETER REGISTERS THAT
*         THEY USE. 
* 
* 
*       MODULE    P0  P1  P2  P3  P4  P5  P6  P7  P8  P9  S1
*       ------    --  --  --  --  --  --  --  --  --  --  --
* 
*       CRP01                     XX              XX
*       CRP03                     XX      XX  XX  XX  XX
*       CRP05                     XX              XX  XX
*       CRP07                     XX
*       CRP09                     XX
*       CRP11                     XX      XX  XX
*       CRP13                     XX      XX  XX
*       CRP15                     XX      XX  XX
*       CRP17                     XX  XX  XX  XX
*       CRP19                     XX      XX  XX
*       CRP21                     XX  XX  XX  XX  XX
*       CRP23                     XX  XX  XX  XX  XX
*       CRP25                     XX  XX  XX  XX
*       CRP27                     XX  XX  XX  XX
*       CRP29     XX              XX  XX  XX  XX
*       CRP31         XX          XX  XX  XX  XX
*       CRP33     XX              XX  XX  XX  XX
*       CRP35     XX              XX  XX  XX  XX
*       CRP37     XX              XX  XX  XX  XX
*       CRP39     XX              XX  XX  XX  XX
*       CRP41                     XX
*       CRP43     XX              XX      XX  XX
*       CRP45                     XX
*       CRP47                     XX  XX
*       CRP51     XX  XX  XX      XX  XX
*       CRP53     XX          XX  XX
* 
*       CRP64             XX  XX  XX  XX  XX  XX      XX  XX
*       CRP65             XX  XX      XX  XX  XX  XX  XX
*       CRP66                         XX              XX
* 
*       CRP84                         XX
* 
* 
* 
* 
*** 4.3.5 MESSAGES
**
*         NORMAL MESSAGES 
*         --------------- 
* 
*         CRPNN MODULE NAME 
*         THIS MESSAGE INDICATES THAT MODULE NN IS NOW RUNNING. 
* 
* 
*         DAYFILE MESSAGES
*         ----------------
* 
*         CRPNN ERRORS = XXXXD
*         NN = THE NUMBER OF THE MODULE IN CRP. 
*         XXXX = THE NUMBER OF ERRORS DETECTED BY THE MODULE. 
*         THIS DAYFILE MESSAGE INDICATES THAT MODULE NN DETECTED
*         XXXX DECIMAL ERRORS BY THE TIME IT HAD COMPLETED
*         EXECUTION.
* 
* 
* 
* 
* 
* 
*** 4.3.6 TEST ABORTS 
**
* 
*         1.  IF THE ACCESS LEVEL IS TOO LOW, THE PARAMETER CHECKING
*             MODULE (CRP00) WILL LOOP UNTIL THE ACCESS LEVEL IS
*             CORRECTED AND THE TEST RE-RUN.
* 
*         2.  IF ANY OF THE PARAMETER WORDS CONTAIN A VALUE THAT IS 
*             OUT OF RANGE, THE PARAMETER CHECKING MODULE (CRP00) 
*             WILL LOOP UNTIL THE PARAMETERS ARE CORRECTED AND THE
*             TEST RE-RUN.
* 
*         3.  IF THE PRODUCT OVERLAY DETECTS AN ERROR DURING THE
*             EXECUTION OF A MODULE, THE ERROR WILL BE REPORTED, AND
*             THE MODULE WILL ABORT TO THE END OF THE CONDITION.
* 
*         4.  ANYTIME AFTER REPORTING AN ERROR, IF THE ERROR COUNT
*             IS EQUAL TO TWENTY (20) OCTAL OR GREATER, THE MODULE
*             WILL ABORT TO THE END OF THE CONDITION. 
* 
* 
* 
* 
*** 4.3.7 SYSTEM ABORTS 
**
* 
*         NO SYSTEM ABORTS SHOULD EVER BE CAUSED BY THE TEST. THE 
*         PRODUCT OVERLAY DRIVER SHOULD PROTECT THE SYSTEM FROM ANY 
*         ABORTS. 
* 
* 
* 
* 
*** 4.3.8  PERFORMANCE
**
* 
*          HARDWARE 
*          -------- 
* 
*          1.  THE CRP TEST IS NOT DESIGNED TO DETECT INTER-
*              MITTENT FAILURES IN THE CYBER RING PORT. 
* 
*          2.  NO ASSUMPTIONS HAVE BEEN MADE AS TO THE STATE
*              OF THE HARDWARE. 
* 
* 
* 
* 
*          SOFTWARE 
*          -------- 
* 
*          MODULE RUNNING TIMES 
* 
*  MODULE      MODULE                               RUN 
*  NUMBER      DESCRIPTION                          TIME
*  ------      -----------                          ----
* 
*  00   PARAMETER VALIDATION                         01 SEC 
*  01   CHANNEL CONNECT/COMMUNICATIONS CHECK         01 SEC 
*  03   CHANNEL CONNECT/WRITE TEST (GSW MODE 0/2)    01 SEC 
*  05   CHANNEL CONNECT/READ TEST (GSW MODE 0/2)     01 SEC 
*  07   DEADMAN TIMER FUNCTIONAL TEST                09 SEC 
*  09   FUNCTION DECODE/REGISTER SELECT TEST(16-BIT) 01 SEC 
*  10   FUNCTION DECODE/REGISTER SELECT TEST(32-BIT) 01 SEC 
*  11   SHIFT (A/D) LOGIC TEST                       01 SEC 
*  13   GENERAL STATUS WORD TEST(GSW)                02 SEC 
*  15   DIAGNOSTIC REGISTER TEST(DIAG)               02 SEC 
*  17   RING STOP REGISTERS 1+2 TEST(RSR1/2)         01 SEC 
*  19   EXTERNAL RESET REGISTER TEST(EXRESET)        02 SEC 
*  21   RING CONTROL/RING DATA REGISTER TEST - CONTROL -
*       21A - RCR/RDR MODE 0(12/52+13/53) P5=0/1     01 SEC 
*       21B - RCR/RDR MODE 2(12/52+13/53) P5=0/2     02 SEC 
*       21C - RCR/RDR MODE 1(73/32)       P5=0/3     01 SEC 
*  23   CF/DF REGISTER/MEMORY TEST - CONTROL -
*       23A - CF/DF TEST FUNC (46/06/26)  P5=0/1     01 SEC 
*       23B - CF/DF TEST FUNC (47/07)     P5=0/2     02 SEC 
*       23C - CF/DF TEST FUNC (47/26)     P5=0/3     06 SEC 
*       23D - CF/DF TEST FUNC (47/06)     P5=0/4     05 SEC 
*       23E - CF/DF ADDRESSING (47/06)    P5=0/5     02 SEC 
*  25   REQUEST STACK TEST(RQSTK) - CONTROL - 
*       25A - RQSTK IN/OUT REG            P5=0/1     01 SEC 
*       25B - RQSTK STACK TEST            P5=0/2     01 SEC 
*       25C - RQSTK RANDOM DATA           P5=0/3     01 SEC 
*       25D - RQSTK ADDRESSING TEST       P5=0/4     01 SEC 
*  27   LOST PACKET REGISTER 1+2 TEST (LP1/2)        01 SEC 
* 
*  29   END-FLAG TEST - 1                 P5=0/1     01 SEC 
*  29A  END-FLAG TEST - 2                 P5=0/2     01 SEC 
*  31   LOST PACKET TEST -  CONTROL - 
*       31A - LP-1 SET BITS FROM RING     P5=0/1     01 SEC 
*       31B - LP-2 CLEAR BITS BY DLPD     P5=0/2     01 SEC 
*       31C - LP-3 MULTI LP BITS          P5=0/3     01 SEC 
*       31D - LP-4                        P5=0/4     01 SEC 
*       31E - LP-5 CHECK BITS W/DLPD SET  P5=0/5     01 SEC 
*  33   RQSTK READY TEST - 1              P5=0/1     01 SEC 
*  33A  RQSTK READY TEST - 2              P5=0/2     01 SEC 
*  35   DATA FIFO READY TEST - 1          P5=0/1     01 SEC 
*  35A  DATA FIFO READY TEST - 2          P5=0/2     01 SEC 
*  37   FIFO FULL RING STOP TEST - CONTROL
*       37A - FIFO FULL STOP - 1          P5=0/1     01 SEC 
*       37B - FIFO FULL STOP - 2          P5=0/2     02 SEC 
*  39   RQSTK FULL RING STOP TEST - CONTROL 
*       39A - RQSTK FULL STOP - 1         P5=0/1     02 SEC 
*       39B - RQSTK FULL STOP - 2         P5=0/2     01 SEC 
*       39C - RQSTK FULL STOP - 3         P5=0/3     01 SEC 
*  41   DMT FUNCTIONAL TEST                          01 SEC 
*  43   RING STOP 1 / RING DATA REGISTER FULL TEST   01 SEC 
*  45   ALL RING DATA TO FIFO TEST                   01 SEC 
*  47   DISABLE AUTO DISCONNECT TEST                 01 SEC 
* 
*  51   HIGH SPEED RING TEST                         20 SEC 
*  53   HPP RING STOP TEST                           10 SEC 
* 
*  64   REPAIR MODULE - 1 (W/R ANY REG-ANY MODE-ANY PATT) 
*  65   REPAIR MODULE - 2 (DF FIFO) 
*  66   REPAIR MODULE - 3 (RQSTK) 
* 
* 
*  84   UTILITY MODULE - 1 PRINT INPUT OR OUTPUT BUFFER 
*              CONTROLLED BY P5 
* 
* 
* 
* 
*** 4.3.9  INSTALLATION PARAMETERS
**
* 
*         THE ARE NO SPECIAL INSTALLATION PROCEDURES REQUIRED FOR CRP.
*         CRP IS CONTAINED ON DECK  'CRP' ON THE CML. 
* 
* 
* 
*** 5.0   PRODUCT LEVEL DESCRIPTION 
*** 5.1   PUBLICATIONS AFFECTED 
**
* 
*         CHANGES TO CRP AFFECT THE FOLLOWING PUBLICATIONS: 
* 
*         NONE
* 
* 
* 
* 
*** 5.2   EQUIPMENT CONFIGURATION 
**
* 
*         WHEN TESTING THE CRP, THE TEST WILL RESIDE IN THE PP AND
*         TEST THE CRP VIA A STANDARD 170 PP CHANNEL.  MOST CRP TESTS 
*         CAN BE RUN WITHOUT ANY ADDITIONAL HARDWARE.  MODULES TESTING
*         THE RING CHANNEL INTERFACE REQUIRE THAT THE RING CHANNEL
*         BE CONFIGURED IN A CLOSED LOOP.  MODULES CRP51 AND CRP53
*         REQUIRE AN HPP ON THE RING TO PROVIDE RING PACKETS AND AN 
*         ACTIVE RING STOP SIGNAL.
* 
* 
*** 5.3   INTERFACES TO OTHER SOFTWARE PRODUCTS 
**
* 
*         THERE ARE NO SPECIAL INTERFACES TO THE OPERATING SYSTEM NOR 
*         ANY APPLICATION OF THE OPERATING SYSTEM WHICH ARE NOT REQUIRED
*         BY MALET. 
* 
* 
* 
* 
*** 5.4   SECURITY
**
* 
*         SECURITY IS PROVIDED BY THE OPERATING SYSTEM FOR ON-LINE
*         MALET THROUGH THE USE OF CVL.  VALIDATION FOR EXECUTION 
*         OF CRP REQUIRES AN APPROVED ACCESS LEVEL OF 20 OR 21. 
* 
* 
* 
* 
*** 6.0   RELIABILITY, AVAILABILITY AND MAINTAINABILITY STANDARDS 
**
* 
*         REFER TO CYBER RING PORT DESIGN SPECIFICATION AND THE 
*         CYBER-EX HARDWARE DESIGN REQUIREMENTS.
* 
* 
*** 7.0   GLOSSARY
**
* 
* 
*         ABT              - ABORT
* 
*         A/D              - ASSEMBLY/DISASSEMBLY 
* 
*         BLK              - BLOCK
* 
*         CML              - COMMON MAINTENANCE LIBRARY 
* 
*         CMSE             - COMMON MAINTENANCE SOFTWARE EXECUTIVE
* 
*         CNTR             - COUNTER
* 
*         CONN             - CONNECT
* 
*         CRP              - CYBER RING PORT
* 
*         CVL              - CUSTOMER ENGINEERING VALIDATION
* 
*         DEMOT            - DIAGNOSTIC EXECUTIVE MONITOR FOR OFF-LINE
*                            TESTING
* 
*         DMT              - DEAD MAN TIMER 
* 
*         ECD              - ERROR CODE 
* 
*         ERC              - ERROR COUNT
* 
*         ES               - EXECUTIVE SWITCH 
* 
*         EXPSTAT          - EXPECTED STATUS
* 
*         GSW              - GENERAL STATUS WORD
* 
*         HPP              - HIGH PERFORMANCE PROCESSOR 
* 
*         INFO             - INFORMATION
* 
*         LC               - LOOP COUNT 
* 
*         MEM              - MEMORY 
* 
*         MALET            - MAINTENANCE APPLICATION LANGUAGE FOR 
*                            EQUIPMENT TESTING
* 
*         MSL              - MAINTENANCE SOFTWARE LIBRARY 
* 
*         PARAM            - PARAMETER
* 
*         PNTR             - POINTER
* 
*         RC               - REPEAT CONDITION 
* 
*         REG              - REGISTER 
* 
*         RM               - REPEAT MODULE
* 
*         SL               - SCOPE LOOP 
* 
*         STAT             - STATUS 
* 
*         STWRD            - STATUS WORD
* 
*         WD               - WORD(S)
* 
* 
* 
* 
*** 8.0   MISCELLANEOUS 
* 
* 
* 
* 
* 
*          THE FOLLOWING TABLES HAVE BEEN REMOVED FROM THE
*          ENGINEERING SPECIFICATIONS 77960951  REV.A 
*          SEPT. 1983.
* 
*          THEY ARE INCLUDED HERE FOR REFERENCE TO THE BASIC
*          FORMAT OF THE REGISTERS.   FOR DETAILS OF EACH BIT USAGE 
*          PLEASE REFER TO THE APPROPIATE REFERENCE MANUAL. 
* 
* 
*** 8.0.1  CRP FUNCTION CODES 
**
* 
*          A 12-BIT FUNCTION IS USED TO SET THE CRP INTO A DATA 
*          TRANSFER MODE.   THIS FUNCTION ADDRESSES A PARTICULAR
*          REGISTER WITHIN THE CRP, THE TYPE OF DATA TRANSLATION
*          REQUIRED, AND WHETHER THE DATA IS TO BE READ OR WRITTEN. 
*          THE FOLLOWING LIST PROVIDES A COMPLETE LIST OF CRP FUNCTIONS.
* 
* 
* 
*           11 10  9  8  7  6  5  4  3  2  1  0 
*           ___________________________________ 
*          1        1  1     1                 1
*          1__:__:__1__1__:__1__:__:__:__:__:__1
*               ^     ^   ^           ^ 
*               1     1   1           1 
*               1     1   1           1___ FUNCTIONS
*               1     1   1  READ                       WRITE 
*               1     1   1  00  GENERAL STATUS WORD    40* GSW 
*               1     1   1  01  SYSTEM RING STOP REG   41* SRSR
*               1     1   1  02  APPL RING STOP REG     42* ARSR
*               1     1   1  03  LOST PKT 1 (CTL)       43* LP1 
*               1     1   1  04  LOST PKT 2 (DATA)      44* LP2 
*               1     1   1  05  REQUEST STACK          45* RQSTK 
*               1     1   1  06  DATA FIFO OUTPUT       46* CF/DF OUT REG 
*               1     1   1  07* CONTROL/DATA FIFO IN   47* CF/DF IN REG
*               1     1   1 
*               1     1   1  10* DIAGNOSTIC REG         50  DIAG REG
*               1     1   1  11* EXTERNAL RESET REG     51  EXRR
*               1     1   1  12* RING CTL REG           52  RCR 
*               1     1   1  13* RING DATA REG          53  RDR 
*               1     1   1     FUNCTIONS 14-17 AND 54-57 ARE NOT USED
*               1     1   1     IN CRP AT THIS TIME.
*               1     1   1  14  CENTRAL MEM RING REG   54  CM RING REG 
*               1     1   1  15  MEMORY RING REG        55  MEM RING REG
*               1     1   1  16  CMI STATUS             56  CMI CONTROL 
*               1     1   1  17  HPM ERROR DETECTION    57  HPMED 
*               1     1   1 
*               1     1   1  20-25 NOT USED             60-72 NOT USED
*               1     1   1  26    CF/DF OUTPUT REG     73    RCR/RDR REG 
*               1     1   1  27-31 NOT USED             74-77 NOT USED
*               1     1   1  32    RCR/RDR
*               1     1   1  33-37 NOT USED 
*               1     1   1 
*               1     1   1___ CHANNEL TRANSLATION
*               1     1            MODE     PPU <-> HPP 
*               1     1             00    -   12      16
*               1     1             01    - 4X12    3X16
*               1     1             10    - 2X 8      16
*               1     1             11    -   NOP 
*               1     1 
*               1     1___ DIAGNOSTIC MODE
*               1 
*               1___ SPARE FIELD
* 
*                * THESE FUNCTIONS REQUIRE DIAGNOSTIC MODE.  DURING 
*                DIAGNOSTIC MODE RING DATA MAY BE LOST. 
* 
* 
* 
* 
*** 8.0.2  CRP GENERAL STATUS WORD DEFINITION 
**
* 
*                  GSW DEFINITION 
*                  ______________ 
* 
*             0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
*            _______________________________________________
*           1           1  1  1  1  1  1  1  1  1  1  1  1  1 
*           1__:__:__:__1__1__1__1__1__1__1__1__1__1__1__1__1 
*                 ^       ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^
*                 1       1  1  1  1  1  1  1  1  1  1  1  1__ RQSTK RDY
*                 1       1  1  1  1  1  1  1  1  1  1  1 
*                 1       1  1  1  1  1  1  1  1  1  1  1__ DF RDY
*                 1       1  1  1  1  1  1  1  1  1  1
*                 1       1  1  1  1  1  1  1  1  1  1__ END FLAG 
*                 1       1  1  1  1  1  1  1  1  1 
*                 1       1  1  1  1  1  1  1  1  1__ DMT OCCURRED
*                 1       1  1  1  1  1  1  1  1
*                 1       1  1  1  1  1  1  1  1__ PKT RDY
*                 1       1  1  1  1  1  1  1 
*                 1       1  1  1  1  1  1  1__ LOST PACKET 
*                 1       1  1  1  1  1  1
*                 1       1  1  1  1  1  1__ MULTIPLE LOST PACKETS
*                 1       1  1  1  1  1 
*                 1       1  1  1  1  1__ 170 CHANNEL PARITY
*                 1       1  1  1  1
*                 1       1  1  1  1__ SYSTEM RING STOP 
*                 1       1  1  1 
*                 1       1  1  1__ RQSTK RING STOP 
*                 1       1  1
*                 1       1  1__ DF RING STOP 
*                 1       1 
*                 1       1__ APPLICATION RING STOP 
*                 1 
*                 1___ SPARE STATUS BITS
* 
*** 8.0.3  CRP DIAGNOSTIC REGISTER FORMAT 
**
* 
* 
*                  CRP DIAGNOSTIC REGISTER BIT DEFINITION 
*                  -------------------------------------- 
* 
*             0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
*            _______________________________________________
*           1     1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
*           1__:__1__1__1__1__1__1__1__1__1__1__1__1__1__1__1 
*              ^    ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^
*              1    1  1  1  1  1  1  1  1  1  1  1  1  1  1__ DLPD 
*              1    1  1  1  1  1  1  1  1  1  1  1  1  1 
*              1    1  1  1  1  1  1  1  1  1  1  1  1  1__ DRS1
*              1    1  1  1  1  1  1  1  1  1  1  1  1
*              1    1  1  1  1  1  1  1  1  1  1  1  1__ DRS2 
*              1    1  1  1  1  1  1  1  1  1  1  1 
*              1    1  1  1  1  1  1  1  1  1  1  1__ ERS1
*              1    1  1  1  1  1  1  1  1  1  1
*              1    1  1  1  1  1  1  1  1  1  1__ ERS2 
*              1    1  1  1  1  1  1  1  1  1 
*              1    1  1  1  1  1  1  1  1  1__ DRQRS 
*              1    1  1  1  1  1  1  1  1
*              1    1  1  1  1  1  1  1  1__ DAI
*              1    1  1  1  1  1  1  1 
*              1    1  1  1  1  1  1  1__ EALLRT
*              1    1  1  1  1  1  1
*              1    1  1  1  1  1  1__ CLRCRP 
*              1    1  1  1  1  1 
*              1    1  1  1  1  1__ CLRFIFO 
*              1    1  1  1  1
*              1    1  1  1  1__ CLRLP
*              1    1  1  1 
*              1    1  1  1__ CLRRQ 
*              1    1  1
*              1    1  1__ CLRDMT 
*              1    1 
*              1    1__ CLRPRTY 
*              1
*              1__ SPARE CONTROL BITS 
* 
*** 8.0.4  CRP RING FUNCTION FORMAT 
**
* 
* 
*                FUNCTION DECODE BIT LAYOUT 
*                -------------------------- 
* 
*                 0  1  2  3  4  5  6  7  8  9 10 11 12 ------- 27
*           __   ___________________________________________/_____
*          1  1 1           1                       1             1 
*          1__1 1__:__:__:__1__:__:__:__:__:__:__:__1__:__:_/__:__1 
*            ^    ^ \______/ \__________ __________/ \_____ _____/
*            1    1     ^               ^                  ^
*            1    1     1               1                  1__ DATA FIELD 
*            1    1     1               1 
*            1    1     1               1__ EQUIPMENT CODE
*            1    1     1 
*          LOST   1     1__ RING FUNCTION CODE FIELD
*          PACKET 1 
*          FIELD  1        000    EMPTY PACKET
*                 1        001    STORE RING DATA IN REQUEST STACK
*                 1        010    STORE RING DATA IN THE DATA FIFO
*                 1        (NOTE : THE RING PACKET CONTROL FIELD IS 
*                 1        SIMULTANEOUSLY STORED IN THE CONTROL FIFO.)
*                 1        011    NOT USED  \ 
*                 1        100    NOT USED   \
*                 1        101    NOT USED    >THESE BECOME LOST PACKETS
*                 1        110    NOT USED   /
*                 1        111    NOT USED  / 
*                 1 
*                 1__ "1"  SET END FLAG CONDITION 
* 
*** 8.0.5  CRP CHANNEL DATA TRANSLATION MODE FORMATS
**
* 
* 
*          TWO BITS IN THE FUNCTION FIELD CONTROL THE CHANNEL ASSEMBLY
*          AND DISASSEMBLY NETWORK AT THE  INTERFACE  TO  THE  CYBER
*          CHANNEL. THE VALUE IN THE FIELD SELECTS ONE OF THREE MODES,
*          WHICH CONTROL THE MAPPING OF THE 12 BIT PPU WORDS TO THE 16
*          BIT HPP WORDS. 
* 
*              MODE 0 -  STRAIGHT 12 BIT TO 16 BIT
* 
*                              11 10  9  8  7  6  5  4  3  2  1  0
*                              ___________________________________
*                             1 X  X  X  X  X  X  X  X  X  X  X  X1 
*                       PPU    1__:__:__:__:__:__:__:__:__:__:__:__1
* 
*                   0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
*                  _______________________________________________
*                 1 -  -  -  -  X  X  X  X  X  X  X  X  X  X  X  X1 
*          HPP    1__:__:__:__:__:__:__:__:__:__:__:__:__:__:__:__1 
* 
* 
*              MODE 1 -  BIT STRING 
* 
*                 11         0 11         0 11         0 11         0 
*                 ___________________________________________________ 
*                1AAAAAAAAAAAA1BBBBBBBBBBBB1CCCCCCCCCCCC1DDDDDDDDDDDD1
*         PPU    1____________1____________1____________1____________1
* 
*                  __________________________________________________ 
*                 1AAAAAAAAAAAABBBB1BBBBBBBBCCCCCCCC1CCCCDDDDDDDDDDDD1
*           HPP   1________________1________________1________________1
*                  0             15 0             15 0             15 
* 
*              MODE 2 -  CHARACTER MODE 8 BIT IN 12 BIT.
* 
*                  ____________      ____________ 
*                 1----AAAAAAAA1    1----BBBBBBBB1
*                 1____________1    1____________1     PPU
* 
*                          ________________ 
*                         1AAAAAAAABBBBBBBB1
*                         1________________1           HPP
* 
* 
*              MODE 3 -  NOP
* 
* 
   MODULE CRP00,6000(200),LOCK
***       CRP00 - PARAMETER VALIDATION
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         CHECKS PARAMETER WORDS, DEVICE CODE, AND ACCESS LEVEL 
*         TO VERIFY THAT VALID PARAMETERS HAVE BEEN ENTERED.
*         CHECKS TO SEE THAT REPEAT CONDITION AND REPEAT MODULE 
*         HAVE NOT BEEN SELECTED. 
*         IF A PARAMETER ENTRY ERROR IS DETECTED, THE MODULE LOOPS
*         ON A PAUSE DIRECTIVE WITH A MESSAGE TO INFORM THE USER
*         THAT THE PARAMETER CAN BE CORRECTED AND THE TEST RE-RUN.
* 
* 
*   1.2   METHOD
* 
*         1. DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE.
*         2. VERIFY THAT THE DEVICE CODE ON THE ASSIGN DIRECTIVE IS 
*            (200).  IF NOT, PAUSE AND REPORT A DEVICE CODE ERROR.
*         3. VERIFY THAT THE ACCESS LEVEL ON THE ASSIGN DIRECTIVE 
*            IS A 20.  IF NOT, REPORT AN ACCESS LEVEL TOO LOW ERROR 
*            AND PAUSE. 
*         4. VERIFY THAT PARAMETER WORDS P0 , P1 , AND P2 CONTAIN 
*            DIFFERENT EQUIPMENT CODE VALUES IN THE RANGE OF 0 TO 255.
*         5. VERIFY THAT PARAMETER WORDS P3-P9 ARE ZERO.  IF NOT, 
*            REPORT A PARAMETER WORD ENTRY ERROR AND PAUSE. 
*         6. EXIT THE MODULE. 
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
* 
*          .   - - - // PARAMETER ERROR // - - -
*          . CRP00 ASSIGNED EQUIPMENT HAS INCORRECT DEVICE CODE 
*          .         DC=*OCT  MUST BE 200.
*          . CRP00 MODULE NOT EXECUTED AL=*OCT NEEDS AL.GE.20 
*          .    CRP00 PX ERROR, PX = *OCT 
*          .    CRP00 P0=*OCT EQUALS P1=*OCT
*          .    CRP00 P0=*OCT EQUALS P2=*OCT
*          .    CRP00 P1=*OCT EQUALS P2=*OCT
*          .    CRP00 P0 OUT OF RANGE  MUST BE .LE.FFH P0=*3HH
*          .    CRP00 P1 OUT OF RANGE  MUST BE .LE. FFH  P1=*3HH
*          .    CRP00 P2 OUT OF RANGE  MUST BE .LE. FFH  P2=*3HH
*          . P0=*3HH , P1=*3HH , P2=*3HH , P3=*OCT , P4=*OCT
*          . P5=*OCT , P6=*OCT , P7=*OCT , P8=*OCT , P9=*OCT
*          . AL = *OCT , DC = *OCT
*          . REPEAT MODULE (RM) SET. MUST BE CLEARED. 
* 
*   1.4  PARAMETERS 
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
* 
  
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
*   2.1   ENTRY CONDITIONS
*            NONE 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B2  = REGISTER NUMBER FOR TESTING.
*         B13 = MODULE RUNNING NUMBER.
*         B14 = ERROR NUMBER. 
*         B15 = SCRATCH CELL. 
* 
*   2.3   SUBMODULES USED 
*            NONE 
* 
* --------------------------------------------------------------- 
* 
0  FORMAT CRP - CYBER RING PORT TEST
1  FORMAT CRP00 - PARAMETER VALIDATION
2  FORMAT P0=*3HH  , P1=*3HH  , P2=*3HH  , P3=*OCTB , P4=*OCTB
3  FORMAT P5=*OCTB , P6=*OCTB , P7=*OCTB , P8=*OCTB , P9=*OCTB
4  FORMAT AL=*OCTB , DC=*OCTB 
5  FORMAT CRP00 ASSIGNED EQUIPMENT HAS INCORRECT DEVICE CODE
6  FORMAT       DC=*OCT  MUST BE 200. 
10 FORMAT CRP00 MODULE NOT EXECUTED AL=*O NEEDS AL.GE.20
12 FORMAT   - - - // PARAMETER ERROR // - - - 
13 FORMAT    CRP00 P*D ERROR , P*D = *OCT 
14 FORMAT    CRP00 P0=*3HH EQUALS P1=*3HH 
15 FORMAT    CRP00 P0 OUT OF RANGE. MUST BE .LE.FFH  P0=*3HH
16 FORMAT    CRP00 P1 OUT OF RANGE. MUST BE .LE.FFH  P1=*3HH
17 FORMAT    CRP00 REPEAT MODULE (RM) SET. MUST BE CLEARED. 
20 FORMAT    CRP00 P2 OUT OF RANGE. MUST BE .LE.FFH  P2=*3HH
21 FORMAT    CRP00 P0=*3HH EQUALS P2=*3HH 
22 FORMAT    CRP00 P1=*3HH EQUALS P2=*3HH 
23 FORMAT --------------------------------------------------
* 
* -------------------INITIALIZATION------------------------ 
* 
25 B13 = 00                          *MODULE NUMBER 
   MSG 0 TO DISPLAY,PRINT,DAYFILE    *POST TEST MSG 
   MSG 1 TO PRINT,DAYFILE            *POST MODULE MSG 
26 MSG 1 TO DISPLAY                  *POST RUNNING MSG
* 
* -----------------VALIDATE DEVICE CODE-------------- 
* 
   B14 = 2                   *ERROR MSG NUMBER FOR DC ERROR 
   B15 = DC 
   IF(DC.EQ.200)GOTO 27       *NOT DC ERROR 
   GOTO 70                   *POST MSG
* 
* ----------------VALIDATE - ACCESS LEVEL------------------ 
* 
27 B14 = 1                    *PRESET AL ERROR CODE 
   B15 = AL 
   IF(AL.GE.20) GOTO 30       *AL OK
   GOTO 70
* 
* ---------------VALIDATE P0 & P1-------------------------
* 
30 IF(P0.LE.255D) GOTO 34     *P0 IN RANGE
   B14 = 3                    *P0 ERROR CODE
   B15 = P0 
   B2 = 0 
   GOTO 70                    *POST ERROR MSG 
34 IF(P1.LE.255D) GOTO 36     *P1 IN RANGE
   B14 = 4                    *P1 ERROR CODE
   B15 = P1 
   B2 = 1                     *REGISTER NUMBER
   GOTO 70                    *POST ERROR MSG 
36 IF(P0.NE.P1) GOTO 40       *P0/P1 OK 
   B14 = 5                    *P0=P1 ERROR CODE 
   GOTO 70
40 IF(P2.LE.255D) GOTO 42     *P2 IN RANGE
   B14 = 8                    *P2 ERROR CODE
   B15 = P2 
   B2 = 2 
   GOTO 70                    *POST ERROR MSG 
42 IF(P0.NE.P2)GOTO 44           *P0/P2 OK
   B14 = 9                       *ERROR P0=P2 
44 IF(P1.NE.P2)GOTO 50           *P1/P2 OK
   B14 = 10                      *ERROR P1=P2 
* 
* --------------VALIDATE P2-P9=0 FOR CONFIDENCE MODULES---- 
* 
50 B14 = 6                    *PRESET ERROR CODE
   B15 = P3 
   B2 = 3 
   IF(P3.NE.0) GOTO 70        *ERROR P3 
   B15 = P4 
   B2 = 4 
   IF(P4.NE.0) GOTO 70        *ERROR P4 
   B15 = P5 
   B2 = 5 
   IF(P5.NE.0) GOTO 70        *ERROR P5 
   B15 = P6 
   B2 = 6 
   IF(P6.NE.0) GOTO 70        *ERROR P6 
   B15 = P7 
   B2 = 7 
   IF(P7.NE.0) GOTO 70        *ERROR P7 
   B15 = P8 
   B2 = 8 
   IF(P8.NE.0) GOTO 70        *ERROR P8 
   B15 = P9 
   B2 = 9 
   IF(P9.NE.0) GOTO 70        *ERROR P9 
* 
* ---------------CHECK REPEAT MODULE E.S.------------------ 
54 B14 = 7                    *PRESET ERROR CODE
   IF(ES.AND.RM.NE.0)GOTO 70  *RM ERROR 
* 
* 
   EXIT                       *END MODULE 
* 
* ---------------POST ERROR MSG-------------------- 
* 
70 MSG 0 TO LINE 1                   *TEST NAME MSG 
   MSG 1 TO LINE 2                   *MODULE NAME MSG 
   MSG 12 TO LINE 3                  *PARA.ERROR MSG
   MSG 2(P0,P1,P2,P3,P4) TO LINE 4   *1ST P MSG 
   MSG 3(P5,P6,P7,P8,P9) TO LINE 5   *2ND P MSG 
   MSG 4(AL,DC) TO LINE 6            *AL/DC MSG 
   B3 = 7                            *SET LINE CNTR 
   IF(B14.EQ.1)MSG 10(AL) TO LINE B3  *IF AL ERROR
   IF(B14.NE.2)GOTO 72               *SKIP NEXT MSGS
   MSG 5 TO LINE B3                  *DC ERROR MSG-1
   B3 = B3 + 1
   MSG 6(DC) TO LINE B3              *DC ERROR MSG-2
   B3 = B3 + 1
72 IF(B14.EQ.3)MSG 15(P0) TO LINE B3
   IF(B14.EQ.4)MSG 16(P1) TO LINE B3
   IF(B14.EQ.8)MSG 20(P2) TO LINE B3
   IF(B14.EQ.5)MSG 14(P0,P1) TO LINE B3 
   IF(B14.EQ.9)MSG 21(P0,P2) TO LINE B3 
   IF(B14.EQ.10)MSG 22(P1,P2) TO LINE B3
   IF(B14.EQ.6)MSG 13(B2,B2,B15) TO LINE B3 
   IF(B14.EQ.7)MSG 17 TO LINE B3     *RM ERROR
   MSG 23 TO LINE B3 + 1
   PICTURE
   PAUSE
   BLANK
   GOTO 26                           *LOOP TO TOP OF MODULE 
   END 25 
COMPILE   *CRP00 - PARAMETER VALIDATION 
   MODULE CRP01,6000(200),LOCK
***       CRP01 - FUNCTION CRP TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         SENDS A FUNCTION TO THE CRP AND LOOKS FOR AN INACTIVE 
*         RETURN.  THIS IS THE INITIAL STEP IN ESTABLISHING 
*         COMMUNICATIONS BETWEEN THE PP AND THE CRP.
*         FOR CHANNEL ABORTS, P8 NONZERO WILL CHANGE THE MALET
*         TIMEOUT DELAY TIME. P8 IS IN USEC.
* 
* 
*   1.2   METHOD
* 
*         1. DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE.
*         2. SET THE B13 REGISTER TO THE MODULE NUMBER. 
*         2A.IF P8 IS NONZERO THEN SET THE A AND B TIMEOUTS TO
*            P8 MICROSECONDS. 
*         3. PAUSE (P4) USEC
*         4. RESERVE THE CHANNEL TO THE CRP.
*         5. FUNCTION THE CRP WITH A NOP (UNUSED FUNCTION CODE) 
*            AND CHECK FOR AN INACTIVE. 
*         6. REPEAT STEPS 3-6 150 TIMES.
*         7. IF SL IS SELECTED, DISPLAY SL MESSAGE AND LOOP 
*            COUNTER REPEAT STEPS 3-6.
*         8. IF AN ERROR IS DETECTED, REPORT THE ERROR. 
*         9. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-8.
*        10. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF THE
*            MODULE, SEND A MESSAGE INDICATING THE NUMBER OF ERRORS 
*            DETECTED TO THE DISPLAY, PRINT, AND DAYFILE. 
*        11. EXIT THE MODULE. 
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*          . CRP01 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC
*          .   // MODULE ERROR LIMIT-CRP01
*          . CRP01 ERROR(S) IN MODULE =*DEC 
*          . CRP01 ABORT ON .RES. COMMAND AT LINE *OCT
*          . CRP01 ABORT ON.FUNC. COMMAND AT LINE *OCT
*          . CRP01 RUNNING .SL.  LC=*DEC
* 
* 
*   1.4  PARAMETERS 
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P8 TIMEOUT DELAY IN USEC (FOR SL ON ABORTS) 
* 
  
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
*   2.1   ENTRY CONDITIONS
*           NONE
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
*   2.3   SUBMODULES USED 
*            NONE 
* 
* --------------------------------------------------------------- 
* 
/----- P8 CONTROLS THE TIMEOUT COMMAND DELAY
0  FORMAT CRP - CYBER RING PORT TEST
1  FORMAT CRP01 - CHANNEL CONNECT/COMMUNICATIONS CHECK
2  FORMAT CRP01 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP01 RUNNING .SL.  LC=*DEC 
7  FORMAT // MODULE ERROR LIMIT-CRP01 
10 FORMAT CRP01 ERROR(S) IN MODULE = *DEC 
11 FORMAT CRP01 ABORT ON .RES. COMMAND AT LINE *OCT 
12 FORMAT CRP01 ABORT ON .FUNC. COMMAND AT LINE *OCT
27 FORMAT  ------------------------------------------------ 
* 
* -----------------DATA DIVISION--------------------------- 
* 
   EQUATE ERRLIM = 20 
* 
* -----------------INITIALIZATION-------------------------- 
* 
30 MSG 0 TO PRINT,DISPLAY,DAYFILE   *TEST NAME MSG
   MSG 1 TO PRINT,DAYFILE           *RUNNING MESSAGE
   B13 = 01                         *MODULE NUMBER
   IF(P8.NE.0)TIMEOUT TYPEA=P8 USEC TYPEB=P8 USEC 
* 
32 MSG 1 TO DISPLAY 
   B10 = 0                          *CLEAR LOOP CNTR
   B11 = 0                          *CLEAR ERROR CNTR 
* 
* ------------------TEST----------------------------------
* 
34 IF(P4.NE.0)DELAY P4 USEC  *DELAY IF SET
   B12 = 1                        *ABT ERROR MSG
   RES,ABT 70                     *GET CHANNEL TO CRP 
   B12 = 2                        *ABT MSG
   FUNC 77,ABT 70                 *FUNC NOP TO THE CRP
   GOTO 34 WHILE (B10+1.LE.150D)  *LOOP 150D TIMES
* 
* --------------END / REPEAT PROCESSING-----------------
* 
   IF(ES.AND.SL.EQ.0)GOTO 42      *NOT SCOPE LOOP 
   MSG 3(B10) TO DISPLAY          *SL MSG 
   GOTO 34
* 
42 IF(ES.AND.RM.NE.0) GOTO 32     *REPEAT MODULE
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
   EXIT                           *END MODULE 
* 
* --------------ABORT PROCESSOR------------------------ 
* 
70 B11=B11+1                      *BUMP ERROR CNTR
   IF(ES.AND.SL.EQ.0) GOTO 74     *NOT SCOPE LOOP 
   MSG 2(EA,EC,B11,B10)TO DISPLAY  *ERROR MSG 
   GOTO 34                        *SCOPE LOOP ON ERROR
* 
74 MSG 1 TO LINE 1
   B12 = B12 + 10                 *ADD MSG FORMAT BIAS
   MSG B12 (EA) TO LINE 2 
   MSG EM (EC) TO LINE 3
   MSG 27 TO LINE 4 
   PICTURE
   HALT 
   BLANK
   MSG 1 TO DISPLAY                    *RESET RUNNING MSG 
   IF(B11.LE.ERRLIM) GOTO 34           *LOOP IF NOT ERR LIMIT 
   GOTO 44                             *GO POST MSG AND EXIT
   END 30 
COMPILE   *CRP01 - CHANNEL FUNCTION/OUTPUT
   MODULE CRP03,6000(200),LOCK
***       CRP03 - CRP WRITE TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A DIAGNOSTIC WRITE OF THE GENERAL STATUS WORD AND
*         VERIFIES A NORMAL FUNCTION, INACTIVE, ACTIVE, FULL, EMPTY,
*         INACTIVE HANDSHAKE SEQUENCE.  DEFAULT DATA TRANSLATION
*         MODE 0 IS USED. (MODE IS SELECTED BY P9 AND MUST BE 0 OR 2) 
*         DEFAULT DATA IS ZERO OR SELECTABLE BY P6 AND P7.
*         (DATA PATTERN IS SELECTED BY P6 AND P7) 
*         FOR SCOPING ON CHANNEL ABORTS, P8 WILL CONTROL THE
*         MALET CHANNEL HUNG DELAY.(TIMEOUT COMMAND)
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         2A. IF P8 IS NONZERO THEN SET THE A AND B TIMEOUTS TO 
*             P8 MICROSECONDS.
*         3.  PAUSE (P4) USEC.
*         4.  RESERVE THE CHANNEL TO THE CRP. 
*         5.  FUNCTION THE CRP FOR A DIAGNOSTIC WRITE MODE P9.
*         6.  WRITE ONE/TWO WORD(S) TO THE GENERAL STATUS WORD (GSW)
*             AND CHECK FOR AN EMPTY. (P6 AND P7) 
*         7.  REPEAT STEPS 3-7 150 TIMES. 
*         8.  IF SL IS SELECTED , DISPLAY LOOPING MESSAGE 
*             REPEAT 3-7. 
*         9.  IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         10. IF REPEAT MODULE (RM) IS SELECTED, REPEAT STEPS 1-9.
*         11. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         11. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*       . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*       .CRP03 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC
*       .CRP03 RUNNING .SL. MODE(P9)=*OCT, LC=*DEC,OUTPUT=*H*H OR *3H 
*       .CRP03 PARAMETER ERROR. P9(MODE) ILLEGAL P9= *OCT 
* 
* 
*   1.4  PARAMETERS 
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P6 AND P7 MODE 2 DATA TO BE WRITTEN 
*         P8 TIMEOUT DELAY IN USEC (FOR ABORT SL) 
*         P9 MODE FOR WRITE. 0 OR 2 FOR THOSE MODES 
*            RESPECTIVELY. ANY OTHER ILLEGAL. 
* 
  
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
*   2.1   ENTRY CONDITIONS
*            ASSUMES MODULE 01 HAS RUN CORRECTLY
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*         OB(0) AND OB(1) OUTPUT DATA BUFFER
* 
*   2.3   SUBMODULES USED 
*           CALLS  CRP97X - PROCESS ABORT MESSAGES
* 
* --------------------------------------------------------------- 
* 
/----- P8 CONTROLS THE TIMEOUT COMMAND DELAY
/----- PARAMETER P9 CONTROLS MODE SELECTION 0 OR 2 LEGAL
0  FORMAT CRP03 - CHANNEL CONNECT/WRITE TEST (MODE 0/2 GSW) 
2  FORMAT CRP03 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP03 RUNNING *A MODE(P9)=*O  LC=*DEC, OUTPUT=*H*H
4  FORMAT CRP03 RUNNING *A MODE(P9)=*O  LC=*DEC, OUTPUT=*3H 
7  FORMAT // MODULE ERROR LIMIT-CRP03 
10 FORMAT CRP03 ERROR(S) IN MODULE = *DEC 
11 FORMAT PARAMETER ERROR. P9(MODE) ILLEGAL P9= *OCT
* 
* -----------------DATA DIVISION----------------------------
* 
   EQUATE ERRLIM = 20 
* 
* -----------------INITIALIZATION-------------------------
* 
30 MSG 0 TO PRINT,DAYFILE              *RUNNING MESSAGE 
   B13 = 03                            *MODULE NUMBER 
   OB(0) = 0000                        *TWO ZERO DATA WORDS 
   OB(1) = 0000                        *- 
   IF(P8.NE.0)TIMEOUT TYPEA=P8 USEC TYPEB=P8 USEC 
* 
32 MSG 0 TO DISPLAY 
   B10 = 0                             *CLEAR LOOP CNTR 
   B11 = 0                             *CLEAR ERROR CNTR
   B1 = P6.OR.P7                       *CHECK FOR USER DATA 
   IF(B1.EQ.0)GOTO 34                  *NOT DATA SUPPLIED 
   OB(0) = P6                          *USER DATA 
   IF(P9.EQ.2)OB(0) = P6.AND.377       *OUTPUT WD 1 MODE 2
   OB(1) = P7.AND.377                  *OUTPUT WD 2 MODE 2
   IF(P9.EQ.0)GOTO 34                  *P9 LEGAL
   IF(P9.EQ.2)GOTO 34                  *P9 LEGAL
   MSG 11(P9) TO PRINT , DISPLAY
   GOTO 77
* 
* ------------------TEST----------------------------------
* 
34 IF(P4.NE.0)DELAY P4 USEC 
   B12 = 1
   RES,ABT 70               *GET CHANNEL TO CRP 
   B12 = 2                  *ABT MSG
   IF(P9.EQ.0)FUNC 440,ABT 70   *FUNC DIAG. WR MODE 0 OF GSW
   IF(P9.EQ.2)FUNC 640,ABT 70   *FUNC DIAG. WR MODE 2 OF GSW
   B12 = 3
   BA = 0 
   IF(P9.EQ.0) WC = 1               *SET WC FOR MODE 0
   IF(P9.EQ.2) WC = 2               *SET WC FOR MODE 2
   OUT , ABT 70 
   B7 = 5555                        *CLEAR SL.
   IF(ES.AND.SL.NE.0)B7 = 2314      *SET SL 
   IF(P9.EQ.2)GOTO 36               *SKIP IF MODE 2 
   IF(B6.EQ.0)MSG 4(B7,B10,OB(0)) TO DISPLAY
   IF(B6.EQ.1)MSG 4(B7,B10,OB(0)) TO LINE 46
36 IF(P9.EQ.0)GOTO 40              *SKIP IF MODE 0
   IF(B6.EQ.0)MSG 3(B7,B10,OB(0),OB(1))TO DISPLAY 
   IF(B6.EQ.1)MSG 3(B7,B10,OB(0),OB(1))TO LINE 46 
40 B6 = 0 
   GOTO 34 WHILE (B10+1.LE.150D)    *LOOP 150 TIMES 
* 
* --------------END / REPEAT PROCESSING-----------------
* 
   IF(ES.AND.SL.EQ.0)GOTO 42   *NOT SCOPE LOOP
   B6 = 0 
   GOTO 34                     *SL
42 IF(ES.AND.RM.NE.0) GOTO 32            *REPEAT MODULE 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY , PRINT
   IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
   EXIT                 *END MODULE 
* 
* --------------ABORT PROCESSOR------------------------ 
* 
70 B11=B11+1                        *BUMP ERROR CNTR
   B6 = 1                           *FLAG ERROR MSG ON DISPLAY
   IF(ES.AND.SL.EQ.0) GOTO 74       *NOT SCOPE LOOP 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *ERROR MSG
   GOTO 34                          *SCOPE LOOP ON ERROR
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT PROCESSING 
   CALL 97X                          *PROCESS ABORT MSGS
   MSG 0 TO DISPLAY                  *RESET RUNNING MSG 
   IF(B11.LE.ERRLIM) GOTO 34         *LOOP IF NOT ERR LIMIT 
   GOTO 44                           *GO POST MSG AND EXIT
77 END 30 
COMPILE   *CRP03 - FUNCTION/WRITE TEST
   MODULE CRP05,6000(200),LOCK
***       CRP05 - CRP READ TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         EXECUTES A READ OF THE GENERAL STATUS WORD IN THE CRP AND 
*         VERIFIES A NORMAL FUNCTION, INACTIVE, ACTIVE, FULL, EMPTY,
*         INACTIVE, HANDSHAKE SEQUENCE.  DEFAULD DATA TRANSLATION MODE
*         IS 0 READ MODE IS SELECTED WITH P9 AND MUST BE 0 OR 2.
*         FOR CHANNEL ABORTS, P8 NONZERO WILL CHANGE THE MALET
*         TIMEOUT DELAY TIME. P8 IS IN USEC.
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         2A. IF P8 IS NONZERO THEN SET THE A AND B TIMEOUTS TO 
*             P8 MICROSECONDS.
*         3.  VALIDATE P9 (MODE) SELECTION IS 0 OR 2. 
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  FUNCTION THE CRP FOR A READ OF THE GENERAL STATUS WORD. 
*         7.  READ ONE/TWO WORD AND CHECK FOR AN INACTIVE.
*         8.  DISPLAY STATUS AT CONTROL POINT AND ON K DISPLAY. 
*         9.  REPEAT 4-8 150D TIMES.
*         10. IF SL IS SELECTED, REPEAT STEPS 4-8.
*         11. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         12. IF REPEAT MODULE (RM) IS SELECTED, REPEAT STEPS 1-10. 
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         14. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP05 
*           . CRP05 ERROR(S) IN MODULE = *DEC 
*           . CRP05 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP05 RUNNING *A  GSW=*3H (*H*H) HEX  LC=*DEC 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P8 TIMEOUT DELAY IN USEC (FOR SL ON ABORTS) 
*         P9 MODE FOR READ 0 OR 2 ARE LEGAL. DEFAULT IS 0.
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*          ASSUMES MODULES 1 AND 3 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*         IB(0) AND IB(1) TO RECEIVE GSW READ DATA
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
* 
* --------------------------------------------------------------- 
/----- P8 CONTROLS THE TIMEOUT COMMAND DELAY
/-----PARAMETER P9 CONTROLS MODE SELECTION  0 OR 2 ARE LEGAL
0  FORMAT CRP05 - CHANNEL CONNECT/READ TEST (MODE 0/2 GSW)
2  FORMAT CRP05 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP05 RUNNING *A  GSW=*3H HEX  LC=*DEC
4  FORMAT CRP05 RUNNING *A  GSW=*H*H HEX  LC=*DEC 
7  FORMAT // MODULE ERROR LIMIT-CRP05 
10 FORMAT CRP05 ERROR(S) IN MODULE = *DEC 
11 FORMAT PARAMETER ERROR. P9(MODE) ILLEGAL  P9=*OCT
* 
* -----------------DATA DIVISION--------------------------
* 
   EQUATE ERRLIM = 20 
* 
* -----------------INITIALIZATION-------------------------
* 
30 MSG 0 TO PRINT,DAYFILE        *RUNNING MESSAGE 
   B13 = 05                      *MODULE NUMBER 
   IF(P8.NE.0)TIMEOUT TYPEA=P8 USEC TYPEB=P8 USEC 
* 
32 MSG 0 TO DISPLAY 
   B7 = 5555                     *CLEAR SL FLAG 
   B6 = 0 
   B10 = 0                       *CLEAR LOOP CNTR 
   B11 = 0                       *CLEAR ERROR CNTR
   IF(P9.EQ.0)GOTO 34            *P9 OK 
   IF(P9.EQ.2)GOTO 34            *P9 OK 
   MSG 11(P9) TO PRINT,DISPLAY
   GOTO 77
* 
* ------------------TEST--------------------------------- 
* 
34 IF(P4.NE.0)DELAY P4 USEC 
   B12 = 1                       *ABT ERROR MSG 
   RES,ABT 70                    *GET CHANNEL TO CRP
   B12 = 2                       *ABT MSG 
   IF(P9.EQ.0)FUNC 00B,ABT 70    *FUNC READ OF GSW MODE 0 
   IF(P9.EQ.2)FUNC 200B,ABT 70   *FUNC READ OF GSW MODE 0 
   BA = 0 
   IF(P9.EQ.0)WC = 1
   IF(P9.EQ.2)WC = 2
   B12 = 4
   IN ,ABT 70                     *READ DATA WD FROM GSW
   IF(ES.AND.SL.NE.0)B7 = 2314
   IF(P9.EQ.2)GOTO 36 
   IF(B6.EQ.0)MSG 3(B7,IB(0),B10) TO DISPLAY   *DIS STATUS
   IF(B6.EQ.1)MSG 3(B7,IB(0),B10) TO LINE 46
36 IF(P9.EQ.0)GOTO 40 
   IF(B6.EQ.0)MSG 4(B7,IB(0),IB(1),B10) TO DISPLAY
   IF(B6.EQ.1)MSG 4(B7,IB(0),IB(1),B10) TO LINE 46
40 B6 = 0 
   GOTO 34 WHILE (B10+1.LE.150D)  *LOOP 150 TIMES 
* 
* --------------END / REPEAT PROCESSING-----------------
* 
   IF(ES.AND.SL.EQ.0)GOTO 42        *NOT SCOPE LOOP 
   B6 = 0 
   GOTO 34
42 IF(ES.AND.RM.NE.0) GOTO 32       *REPEAT MODULE
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY , PRINT
   IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
   EXIT                              *END MODULE
* 
* --------------ABORT PROCESSOR------------------------ 
* 
70 B11=B11+1                        *BUMP ERROR CNTR
   IF(ES.AND.SL.EQ.0) GOTO 74       *NOT SCOPE LOOP 
   B6 = 1 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *ERROR MSG
   GOTO 34                          *SCOPE LOOP ON ERROR
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT PROCESSING
   CALL 97X                         *PROCESS ABORT MSGS 
   MSG 0 TO DISPLAY                 *RESET RUNNING MSG
   IF(B11.LE.ERRLIM) GOTO 34        *LOOP IF NOT ERR LIMIT
   GOTO 44                          *GO POST MSG AND EXIT 
77 END 30 
COMPILE   *CRP05 - FUNCTION/INPUT TEST
   MODULE CRP07,6000(200),LOCK
***       CRP07 - DEADMAN TIMER TEST (AL=21)
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE DEADMAN TIMER.
*         MODULES REQUIRES AN ACCESS LEVEL OF 21. 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  TEST (AL) FOR GREATER OR EQUAL TO 21. EXIT IF AL .LT. 21. 
*         3A. TEST RM, DISPLAY WARNING MESSAGE OF SET , PAUSE FOR GO. 
*         4.  PAUSE (P4). 
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  FUNCTION THE CRP FOR A WRITE TO THE DIAGNOSTIC REGISTER.
*         7.  ACTIVATE THE CHANNEL. 
*         8.  OUTPUT ONE WORD TO DIAGNOSTIC REGISTER. HANG CHANNEL. 
*         9.  LOOP WAITING FOR DMT TO OCCURE OR 16 SECONDS TO ELAPES. 
*             IF DMT, THEN ISSUE DMT OCCURED TIME MESSAGE;
*             IF 16 SEC. ISSUE ERROR MESSAGE. 
*         10. REPEAT 4-9 11 TIMES.
*         11. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         12. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-10.
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         14. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP07 
*           . CRP07 ERROR(S) IN MODULE = *DEC 
*           . CRP07 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           .  CHANNEL FOUND DEACTIVE BEFORE TIMING TEST START
*           .  CHANNEL DID NOT DEACTIVATE AFTER *DE SECONDS. (16 SEC) 
*           .  DEADMAN TIMOUT OCCURRED AT *D.*DE SEC. 
*           . CRP07   MODULE NOT EXECUTED , NEEDS AL=21 , AL IS *O
*           . CRP07 -       RM SELECTED . MODULE
*           .       FAILURES COULD FILL PRINT FILE OR DAYFILE.
*           .  -  TYPE GO TO CONTINUE TEST AS CONFIGURED. 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = MILLESECOND COUNTER.
*         B1  = SECOND COUNTER. 
*         B2  = CHANNEL FLAG. 
*         B3  = DISPLAY LINE COUNTER. 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*          OB(0) - OB(3)   4 ZERO DATA WORDS
*          OB(476) - OB(503)  CRP FUNCTION WORDS PAIRS
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP07 - DEADMAN TIMER FUNCTIONAL TEST 
1  FORMAT CRP07 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
2  FORMAT CRP07 DMT TEST ECD=*OCT,ERC=*DEC,LC=*DEC
3  FORMAT  CHANNEL FOUND INACTIVE BEFORE TIMING TEST START
4  FORMAT  CHANNEL DID NOT DEACTIVATE AFTER *DE SEC 
5  FORMAT  DEADMAN TIMEOUT OCCURED AT *D.*DE SEC. 
7  FORMAT // MODULE ERROR LIMIT-CRP07 
10 FORMAT CRP07 ERROR(S) IN MODULE = *DEC 
23 FORMAT  -  TYPE GO TO CONTINUE TEST AS CONFIGURED. 
24 FORMAT CRP07   MODULE NOT EXECUTED, NEEDS AL=21,AL IS *O 
25 FORMAT CRP07 -       RM SELECTED. MODULE 
26 FORMAT    FAILURES COULD FILL PRINT FILE OR DAYFILE. 
27 FORMAT  ---------------------------------------------- 
* 
* ------------------------DATA----------------------------- 
* 
   EQUATE ERRLIM=20B,CLRCRP=500,CLEAR=476,CLRALL=502
   DATA (OB(0),CON) 0,0,0,0         *4 ZERO DATA WORDS
   DATA (OB(476),CON) 0,0, 1,0, 61,0   *CLEAR,CLRCRP,CLRALL 
* 
* ---------------------INITIALIZATION-------------------- 
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 07                  *MODULE NUMBER 
* 
   IF(AL.GE.21)GOTO 31
   MSG 24(AL) TO DISPLAY,PRINT
   MSG 24(AL) TO LINE 46
   GOTO 64                   *EXIT IF AL TOO LOW
31 IF(ES.AND.RM.EQ.0)GOTO 32  *RM OFF 
   MSG 25 TO PRINT,DAYFILE
   MSG 25 TO LINE 44
   MSG 26 TO DISPLAY,PRINT,DAYFILE
   MSG 26 TO LINE 45
   MSG 23 TO PRINT,DAYFILE
   MSG 23 TO LINE 46
   PAUSE
* 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B3 = 46                   *1 ST LINE OF DISPLAY
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
* 
* ------------------------TEST--------------------------- 
* 
34 IF(P4.NE.0)DELAY P4 USEC  *DELAY IF SET
   B12 = 1                   *ABT MSG NUMBER
   RES,ABT 70 
   B12 = 2
   FUNC 650 ,ABT 70          *WRITE DIAG MODE 2 
   BA = 0                    *FWA 
   WC = 1 
   B12 = 12 
   ACN ,ABT 70               *SET CHANNEL ACTIVE
   B12 = 3
   OUT CHAIN, ABT 70         *LEAVE CHANNEL HUNG
   B0 = 0                    *MILLISEC CNTR 
   B1 = 0                    *SECOND CNTR 
   B2 = 0                    *FLAG CHANNEL ACTIVE ERROR 
40 B12 = 12 
   ACN, ABT 50               *SENSE CHAN. EXP.ACT. UNTIL DMT
   B12 = 14 
   DCN , ABT 70              *INSURE CHANNEL DEACTIVE 
   IF(B2.NE.0)GOTO 54        *NORMAL OUT AT END OF DMT. 
   MSG 3 TO LINE 2           *CHAN FAILURE MSG
   IF(ES.AND.SL.EQ.0)MSG 3 TO PRINT 
   B11 = B11 + 1             *ERROR CNTR
   GOTO 56                   *CHECK ENDS AND ABORTS 
* 
* ---------------------TIME COUNTER---------------------
* 
50 B2 = 1                    *FLAG CHAN ACTIVE OK (1ST TIME)
   DELAY 4000D USEC          *DELAY 4 MILLISEC. 
   B0 = B0 + 1               *CNT 4  MILLISECS UNITS. 
   IF(B0.LT.250D)GOTO 40     *LOOP FOR 1 SEC
   B1 = B1 + 1               *CNT SECONDS 
   B0 = 0                    *RESET MILLISEC CNTR 
   IF(B1.LT.16D)GOTO 40      *LIMIT TO 16D SEC FOR DMT
   DCN ,ABT 52               *INSURE CHANNEL INACTIVE 
52 MSG 4(B1) TO DISPLAY,PRINT           *ERROR DMT FAILED 
   B11 = B11 + 1             *ERROR CNTR
   IF(B11.LT.ERRLIM)GOTO 34  *REPEAT
   GOTO 56                   *CHECK ENDS AND ABORTS 
* 
54 BA = CLRALL
   WC = 2 
   B12 = 2
   FUNC 250,ABT 70            *SEND CLRALL FUNC TO DIAG REG 
   B12 = 3
   OUT , ABT 70 
   BA = CLEAR 
   OUT ,ABT 70            *SEND CLEAR TO DIAG REG.
* 
   IF(ES.AND.SL.EQ.0)MSG 5(B1,B0)TO DISPLAY,PRINT 
   MSG 5(B1,B0) TO LINE B3       *MSG TO PPU DISPLAY
   GOTO 34 WHILE(B3-1.GE.37)     *ALL MSGS TO DISPLAY 7PASSES 
56 IF(ES.AND.RM.NE.0)GOTO 32
* 
* --------------------ENDS / REPEATS------------------
* 
   MSG 5(B1,B0) TO PRINT,DAYFILE   *1 MSG TO DAYFILE
   MSG 27 TO PRINT
60 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY , PRINT
62 IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
64 EXIT 
* 
* -------------------ABORTS-----------------------------
* 
70 B11 = B11 + 1             *ERROR CNTR
   IF(ES.AND.SL.EQ.0)GOTO 74  *NOT SL 
   MSG 1(EA,EC,B11,B10)TO DISPLAY  *ERROR MSG 
   GOTO 34                   *SCOPE LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT MSGS 
   CALL 97X                  *PROCESS ABORT MSGS
76 MSG 0 TO DISPLAY 
   IF(B11.LT.ERRLIM)GOTO 34  *TRY AGAIN TO ERROR LIMIT
   GOTO 60                   *EXITS 
* 
   END 30 
COMPILE   *CRP07 - FUNCTION TIME-OUT TEST 
   MODULE CRP09,6000(200),LOCK
***       CRP09 - FUNCTION DECODE/REGISTER SELECT TEST-1
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         VERIFIES THAT THE FUNCTION DECODE/REGISTER SELECT LOGIC IS
*         FUNCTIONING PROPERLY FOR ALL 16 BIT REGISTERS.
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  CLEAR LOOP AND ERROR COUNTERS.
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  WRITE ALL THE REGISTERS, RQSTK, AND FIFOS WITH THEIR
*             RESPECTIVE WRITE FUNCTION CODES.
*         7.  READ  ALL THE REGISTERS, RQSTK, AND FIFOS.
*         8.  VERIFY THE DATA.
*         9.  IF SCOPING LOOP IS SELECTED, DISPLAY ERROR ON K DISPLAY 
*             AND REPEAT STEPS 3-8. 
*         10. IF AN ERROR IS DETECTED, REPORT THE ERROR (CALL 98A ).
*         11. REPEAT STEPS 4-10 150D TIMES. 
*         12. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-11.
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         14. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRPXX 
*           . CRPXX ERROR(S) IN MODULE = *DEC 
*           . CRPXX .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           .  REG *A*A*A ERROR , ERC=*DEC , EXP=*H*HH  ACT=*H*HH 
* 
*           FROM 98A -
*           . SECTION *D FAILURE. NOT ABLE TO W/R DATA FROM A 
*           . REGISTER. FAILURE COULD BE A FUNCTION DECODE OF 
*           . REGISTER ADDRESS OR A DATA PATH FAILURE.
*           .   REGISTER   ERROR   EXPECTED      ACTUAL 
*           .     NAME     FLAG      DATA         DATA
*           .    *A*A*A     *A       *H*H         *H*H
*           . ERROR FIRST DETECTED IN REGISTER *A*A*A.
*           . SL OR RM MAY BE USED TO REPEAT THIS FAILURE OR
*           . MODULE CRP*D WILL EXERCISE THIS REG. EXCLUSIVELY. 
*           .    LC=*DEC , ERC=*DEC 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 HAVE RUN CORRECTLY. 
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B3  = SCRATCH CELL USED AS NEEDED.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*          IB(100-120)  READ DATA BUFFER
* 
*          OB 
*          0+1  OUTPUT BUFFER          200-210  REGISTER ERROR FLAGS
*         10-16 DISPLAY DATA BUFFER    400-410  READ FUNCTIONS
*        100-120 OUTPUT DATA ECHO      411-421  WRITE FUNCTIONS 
*        177      ANY ERROR FLAG        422-432  MODULE NUMBERS 
*        476+477 DIAGNOSTIC REG FUNCTIONS   433-465  REGISTER NAMES 
* 
* 
*   2.3   SUBMODULES USED 
*         CRP98A - ERROR DISPLAY FOR CRP09 AND CRP10. 
*         CRP97X - ABORT MESSAGE PROCESSOR
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP09 - FUNCTION DECODE/REGISTER SELECT TEST - 1
2  FORMAT CRP09 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT REG *A*A*A ERROR , ERC=*DEC  EXP=*H*HH, ACT=*H*HH 
7  FORMAT // MODULE ERROR LIMIT-CRP09 
10 FORMAT CRP09 ERROR(S) IN MODULE = *DEC 
* 
* ------------------DATA----------------------------------
* 
   EQUATE CLEAR=477, CLRCRP=476 
   EQUATE ERRLIM=20, DRF=400, DWF=411, MNUM=422, REGNAM=433 
* 
* ----DIAG REG FUNCS..CLRCRP AND ZEROS
   DATA (OB(476),CON) 0400B , 0000B 
* 
* ----DIAGNOSTIC READ FUNCTIONS  MODE 2 
   DATA (OB(DRF),CON) 600,601,602,603,604,610,611,612,613 
* 
* ----DIAGNOSTIC WRITE FUNCTIONS MODE 2 
   DATA (OB(DWF),CON) 640,641,642,643,644,650,651,652,653 
* 
* ----MODULE NUMBERS FOR FURTHER TESTING OF REGISTERS 
   DATA (OB(MNUM),CON) 13D,17D,17D,27D,27D,15D,19D,21D,21D
* 
* ----REGISTER NAMES
*                        G S  W -  - -  R S  R 1  - -  R S
   DATA (OB(REGNAM),CON)0723,2755,5555,2223,2234,5555,2223
*                     R 2  - -  L P  1 -  C - 
   DATA (OB(442),CON)2235,5555,1420,3446,0355 
*                     L P  2 -  D -  D I  A G  - -
   DATA (OB(447),CON)1420,3546,0455,0411,0107,5555
*                     E X  R E  S T  R C  R -  - -
   DATA (OB(455),CON)0530,2205,2324,2203,2255,5555
*                     R D  R -  - - 
   DATA (OB(463),CON)2204,2255,5555 
* 
* ------------------INITIALIZATION----------------------- 
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 09D
32 MSG 0 TO DISPLAY          *RUN MSG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
* 
* -----------------16-BIT REGISTER TEST---------------- 
* ------------TEST REGS WITH UNIQUE PATTERN---------- 
* 
36 IF(P4.NE.0)DELAY P4 USEC       *DELAY IF SET 
   B12 = 1                        *ABT ERROR MSG
   RES ,ABT 70
   B1 = DWF                       *WRITE FUNC INDEX(OB) 
   B3 = 100                       *INPUT/ECHO BUFFER INDEX
   GOSUB 56                       *CLEAR CRP
* 
40 B12 = 2
   FUNC OB(B1),ABT 70             *SEND FUNC
   OB(0) = OB(B1).AND.377         *SET PATTERN
   OB(1) = OB(B1).AND.377         *(MASKED TO 8BITS)
42 B12 = 3
   OUT 2 WORDS FROM OB(0),ABT 70   *WRITE DATA
   COPY OB(0) TO OB(B3) FOR 2      *ECHO DATA TO BUFFER 
   B3 = B3 + 2
   GOTO 40 WHILE(B1+1.LT.MNUM)     *LOOP FOR ALL WRITE FUNC 
* 
* ---- READ REGISTERS BACK
   B12 = 1
   RES ,ABT 70
   B1 = DRF                  *READ FUNC INDEX 
   B3 = 100                  *INPUT BUFFER INDEX
44 B12 = 2
   FUNC OB(B1),ABT 70        *SEND READ FUNC
   B12 = 4
   IN 2 WORDS TO IB(B3),ABT 70  *READ IN REGISTER 
   B3 = B3 + 2
   GOTO 44 WHILE(B1+1.LT.DWF) 
* 
* ---- CHECK DATA 
   B12 = 13 
   REL ,ABT 70
   GOSUB 66 
   B1 = 100                       *BUFFER INDEX 
   B2 = 0                         *REGISTER CNTR
46 WC = 2 
   COMPARE OB(B1) TO IB(B1) FOR WC,ABT 65  *CHECH DATA
47 B2 = B2 + 1                    *CNT REGISTER 
   GOTO 46 WHILE(B1+2.LE.120)     *LOOP ALL DATA
* 
* ----------------CHECK FOR DATA ERRORS-----------------
* 
   IF(OB(177).EQ.0)GOTO 52        *NO ERRORS
   B11 = B11 + 1                  *CNT ERROR
   IF(ES.AND.SL.EQ.0)GOTO 50      *NOT SL 
   B5 = B5.AND.77                 *MSK OFF REG BITS 
   B2 = B5 + B5 + B5              *FORM REGISTER NAME 
   B2 = B2 + REGNAM               *-
   COPY OB(B2) TO OB(10) FOR 3    *-
   OB(13) = B11                   *SET ERC IN MSG 
   B2 = B5                        *COMPUTE ADDRESSES
   B2 = B2 + B2 + 100             *(B5-1)*2 + INDEX 
   COPY OB(B2) TO OB(14) FOR 2    *-
   COPY IB(B2) TO OB(16) FOR 2    *-
   MSG 3 , 8 WORDS FROM OB(10) TO DISPLAY 
   GOTO 36                        *RETURN TO LOOP 
* 
50 CALL 98A                       *DISPLAY ERR/HALT/RETURN
* 
   IF(B11.GT.ERRLIM) GOTO 54      *ERROR LIMIT EXIT 
52 GOTO 36 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
* 
* -------------------ENDS / REPEATS-----------------------
* 
   IF(ES.AND.RM.NE.0)GOTO 32       *NOT RM
54 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
* 
   OB(0) = 0000                    *CLEAR THE EXT RESET REG 
   OB(1) = 0000                    *BEFORE LEAVING
   B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 251 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(0) , ABT 70
* 
   EXIT 
* 
* -----------------SUBROUTINES------------------------- 
* 
* ---- CLEAR CRP WITH FNC TO DIAG REG 
56 B12 = 2
   FUNC 50,ABT 70                    *FUNC WRITE DIAG REG.
   B12 = 3
   OUT 1 WORDS FROM OB(CLRCRP),ABT 70  *SEND CLRCRP FUNC
   OUT 1 WORDS FROM OB(CLEAR),ABT 70  *CLEAR DIAG REG.
   RETURN 
* ----SET ERROR FLAG
65 OB(B2+200) = 4755            *SET REGISTER ERR FLAG (* ) 
   OB(177) = 1                  *SET SOME ERROR FLAG
   IF(B5.EQ.0)B5 = B2 + 7700    *SET 1ST REG IN ERROR 
   GOTO 47
* ----CLEAR FLAG BUFFER AREA
66 B1 = 200                     *SET INDEX
   OB(177) = 0                  *CLEAR ANY-ERROR FLAG 
67 OB(B1) = 5555                *CLEAR AREA TO BLANKS 
   GOTO 67 WHILE(B1+1.LE.210) 
   B5 = 0                       *CLEAR 1ST ERR REG. NUMBER
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *CLEAR ANY SUBS 
72 IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   GOTO 36                          *RETURN TO LOOP 
74 MSG 0 TO LINE 1
   B1 = 0                           *SET B1 FOR 97X 
   CALL 97X                         *PROCESS ABORT MSGS 
   MSG 0 TO DISPLAY                 *REPORT RUN MSG 
   IF(B11.GT.ERRLIM)GOTO 54         *ERROR LIMIT
   GOTO 36                          *RETURN TO TEST LOOP
   END 30 
COMPILE   *CRP09 - FUNCTION DECODE TEST (16-BIT)
   MODULE CRP10,6000(200),LOCK
***       CRP10 - FUNCTION DECODE/REGISTER SELECT TEST-2
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         VERIFIES THAT THE FUNCTION DECODE/REGISTER SELECT LOGIC IS
*         FUNCTIONING PROPERLY FOR ALL 32 BIT REGISTERS.
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  CLEAR LOOP AND ERROR COUNTERS.
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  WRITE ALL THE REGISTERS, RQSTK, AND FIFOS WITH THEIR
*             RESPECTIVE WRITE FUNCTION CODES.
*         7.  READ  ALL THE REGISTERS, RQSTK, AND FIFOS.
*         8.  VERIFY THE DATA.
*         9.  IF SCOPING LOOP IS SELECTED, DISPLAY ERROR ON K DISPLAY 
*             AND REPEAT STEPS 3-8. 
*         10. IF AN ERROR IS DETECTED, REPORT THE ERROR (CALL 98A ).
*         11. REPEAT STEPS 4-10 150D TIMES. 
*         12. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-11.
*         13. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         14. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP10 
*           . CRP10 ERROR(S) IN MODULE = *DEC 
*           . CRP10 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           .  REGISTER ERROR  EXP=*H*H*H*HH  ACT=*H*H*H*HH 
* 
*           FROM 98A -
* 
*            . SECTION *D FAILURE. NOT ABLE TO W/R DATA FROM A
*            . REGISTER. FAILURE COULD BE A FUNCTION DECODE OF
*            . REGISTER ADDRESS OR A DATA PATH FAILURE. 
*            . REGISTER   ERROR   EXPECTED      ACTUAL
*            . NAME     FLAG      DATA         DATA 
*            . *A*A*A     *A
*            .                    *H*H*H*H     *H*H*H*H 
*            . ERROR FIRST DETECTED IN REGISTER *A*A*A .
*            . SL OR RM MAY BE USED TO REPEAT THIS FAILURE OR 
*            . MODULE CRP*D WILL EXERCISE THIS REG. EXCLUSIVELY.
*            . LC=*DEC , ERC=*DEC 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9 HAVE RUN CORRECTLY. 
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B3  = SCRATCH CELL USED AS NEEDED.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*          IB(100-120)  READ DATA BUFFER
* 
*          - OB - 
*          0+1  OUTPUT BUFFER          200-210  REGISTER ERROR FLAGS
*         10-16 DISPLAY DATA BUFFER    400-410  READ FUNCTIONS
*        100-120 OUTPUT DATA ECHO      411-421  WRITE FUNCTIONS 
*        177     ANY ERROR FLAG        422-432  MODULE NUMBERS
*        503+504 DIAGNOSTIC REG FUNCTIONS   433-451  REGISTER NAMES 
* 
* 
*   2.3   SUBMODULES USED 
*         CRP98A - ERROR DISPLAY FOR CRP09 AND CRP10. 
*         CRP97X - ABORT MESSAGE PROCESSOR
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP10 - FUNCTION DECODE/REGISTER SELECT TEST - 2
2  FORMAT CRP10 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT REGISTER ERROR EXP=*H*H*H*HHEX,ACT=*H*H*H*HHEX
7  FORMAT // MODULE ERROR LIMIT-CRP10 
10 FORMAT CRP10 ERROR(S) IN MODULE = *DEC 
* ----------------DATA--------------------------- 
* 
   EQUATE ERRLIM=20, DRF=400, DWF=411, MNUM=422, REGNAM=433 
   EQUATE CLEAR=504 , CLRCRP=503
* 
* ----FIFO FUNCTIONS CLRCRP AND ZERO TO CLEAR DIAG
   DATA (OB(503),CON) 0400B, 0000B
* 
* ----DIAG.READ FUNC MODE 2 
   DATA (OB(DRF),CON) 605,626,607,632,606 
* 
* ----DIAG.WRITE FUNC MODE 2
   DATA (OB(DWF),CON) 645,646,647,673,646 
* 
* ----MODULE NUMBERS
   DATA(OB(MNUM),CON) 25D,23D,23D,21D,23D 
* 
* ----REGISTER NAMES
*                         R Q  S T  K -  D F  - O  U T
   DATA (OB(REGNAM),CON) 2221,2324,1355,0406,4617,2524
*                      D F  - I  N -
   DATA (OB(441),CON) 0406,4611,1655
*                      R C  / R  D R  D F  - O  U T 
   DATA (OB(444),CON) 2203,5022,0422,0406,4617,2524 
* 
* -----------------INITIALIZATION---------------- 
* 
30 MSG 0 TO PRINT , DAYFILE 
   B13 = 10D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUN MSG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
* 
* ----------------32-BIT REGISTER TEST----------------
* -------- TEST REGS WITH UNIQUE PATTERNS------------ 
* 
36 IF(P4.NE.0)DELAY P4 USEC  *DELAY IF SET
   B12 = 1                   *ABT ERROR MSG 
   RES,ABT 70                *GET CHANNEL 
   B1 = DWF                  *FWA OF WRITE FUNC 
   B3 = 100                  *BUFFER INDEX
   GOSUB 64                  *SEND CLEAR CRP FUNC 
40 B12 = 2
   FUNC OB(B1),ABT 70        *SEND WRITE FUNC 
   OB(0) = OB(B1).AND.377    *- 
   OB(1) = 377               *--PATTERN  PASS 
   OB(2) = OB(B1).AND.377    *- 
   OB(3) = 125               *- 
   B12 = 3
   OUT 4 WORDS FROM OB(0),ABT 70  *SEND DATA
   COPY OB(0) TO OB(B3) FOR 4  *ECHO DATA TO BUFFER 
   B3 = B3 + 4
   GOTO 40 WHILE(B1+1.LE.415)  *LOOP FOR ALL REGISTERS
* 
   B12 = 1
   RES ,ABT 70
   B1 = DRF                  *READ FUNC INDEX 
   B3 = 100                  *BUFFER INDEX
46 B12 = 2
   FUNC OB(B1),ABT 70        *SEND READ FUNC
   B12 = 4
   IF(B1.NE.404)IN 4 WORDS TO IB(B3),ABT 70  *READ REGISTER 
   IF(B1.EQ.404)IN 2 WORDS TO IB(B3),ABT 70 
   B3 = B3 + 4
   GOTO 46 WHILE(B1+1.LE.404)  *LOOP FOR ALL REGS 
* 
* ---------------CHECK FOR DATA ERRORS------------------- 
* 
   GOSUB 66                  *CLEAR ERROR FLAG AREA 
* 
   B1 = 100                  *BUFFER INDEX
   B2 = 0                    *REGISTER CNTR 
50 WC = 4                    *WD LENGTH FOR COMPARE 
   IF(B1.EQ.120) WC = 2      *16-BIT READ 
   IF(B1.NE.120)COMPARE OB(B1) TO IB(B1) FOR WC,ABT 65
   IF(B1.EQ.120)COMPARE OB(B1+2) TO IB(B1) FOR WC,ABT 65
52 B2 = B2 + 1               *BUMP REG CNTR 
   GOTO 50 WHILE(B1+4.LE.120)  *LOOP FOR ALL WDS
* 
* ----------------CHECK FOR DATA ERRORS-------------------- 
* 
   IF(OB(177).EQ.0)GOTO 57         *NO ERRORS 
   B11 = B11 + 1
   IF(ES.AND.SL.EQ.0)GOTO 56       *ERROR AND NOT SL
   B5 = B5.AND.77                  *MSK REG NUMBER BITS 
   B2 = B5.LS.4                    *COMPUTE OF ERR REG. 
   B2 = B2 + 100
   COPY OB(B2) TO OB(0) FOR 4      *MOVE DATA FOR MSG 
   COPY IB(B2) TO OB(4) FOR 4 
   MSG 3,8 WORDS FROM OB(0) TO DISPLAY
   GOTO 36                         *SCOPE LOOP
* 
56 CALL 98A                        *REPORT ERROR/HALT 
   IF(B11.GT.ERRLIM)GOTO 62        *ERROR LIMIT 
57 GOTO 36 WHILE(B10+1.LE.150D)    *LOOP 150D TIMES 
* 
* ------------------END/REPEAT PROCESSING-------------- 
* 
   IF(ES.AND.RM.NE.0)GOTO 32       *NOT RM
62 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------SUBROUTINES----------------------------- 
* 
* ---- CLEAR CRP WITH FNC TO DIAG REG 
64 B12 = 2
   FUNC 50,ABT 70                    *FUNC WRITE DIAG REG.
   B12 = 3
   OUT 1 WORDS FROM OB(CLRCRP),ABT 70  *SEND CLRCRP FUNC
   OUT 1 WORDS FROM OB(CLEAR),ABT 70  *CLEAR DIAG REG.
   RETURN 
* ----SET ERROR FLAG
65 OB(B2+200) = 4755         *SET REG ERR FLAG(* )
   OB(177) = 1               *SET ANNY ERROR FLAG 
   IF(B5.EQ.0)B5 = B2 + 7700   *SET 1ST ERROR 
   GOTO 52
* ----CLEAR FLAG/BUFFER AREA
66 B1 = 200                  *SET INDEX 
   OB(177) = 0               *CLEAR ANY ERROR FLAG
67 OB(B1) = 5555             *CLEAR AREA TO BLANKS
   GOTO 67 WHILE(B1+1.LE.206) 
   B5 = 0                    *CLEAR 1ST ERROR REG NUMBER
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *CLEAR ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   GOTO 36                          *RETURN TO LOOP 
74 MSG 0 TO LINE 1                  *NOT SL MSGS
   B1 = 0                           *FLAG ABORT FOR 97X 
   CALL 97X                         *PROCESS ABORT
   MSG 0 TO DISPLAY                 *REPORT RUN MSG 
   IF(B11.GT.ERRLIM)GOTO 62         *ERROR LIMIT
   GOTO 36                          *RETURN TO TEST LOOP
   END 30 
COMPILE   *CRP10 - FUNCTION DECODE TEST (32-BIT)
   MODULE CRP11,6000(200),LOCK
***       CRP11 - DATA TRANSLATION MODE TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         VERIFIES THAT THE SHIFT LOGIC IS FUNCTIONING PROPERLY.
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  PRETEST THE EXTERNAL RESET REGISTER.
*             A. CALL 98E TO GENERATE PATTERN (B9=77) 
*                (ONES TEST OF EXRESET) 
*             B. RESERVE CHANNEL TO CRP.
*             C. WRITE THS PATTERN FROM OUTPUT BUFFER.
*             D. READ AND VERIFY THE PATTERN. 
*             E. REPEAT B-D 50D TIMES.
*             F. CALL 98E TO GENERATE ZEROS PATTERN(B9=100).
*             G. REPEAT B-E.
*             MAIN TEST.
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  CALL 98E TO GENERATE PATTERN (B6=1).
*         6A. WRITE THE DATA IN PARAMETER WORD P6 IF NON-ZERO, OR 
*             421 HEX, TO THE EXTERNAL RESET REGISTER, MODE 0.
*         7.  READ THE EXT. RESET REGISTER, MODE 0, AND VERIFY THE
*             DATA.  (421 HEX FOR THE DEFAULT CASE) 
*         8.  IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             GO TO STEP 5.  IF NOT ERROR REPEAT STEPS 4-7 150D TIMES.
*         9.  CALL 98E TO GENERATE PATTERN (B9=2).
*         9A. WRITE THE 2 DATA WORDS IN P6 AND P7 IF NON-ZERO, OR 
*             123 AND 456 HEX, TO THE EXT. RESET REGISTER, MODE 1.
*         10. READ THE EXT. RESET REGISTER, MODE 1, AND VERIFY THE
*             DATA.  (1234 HEX FOR THE DEFAULT CASE). 
*         11. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             REPEAT STEPS 3,4,5,9 AND 10. IF NOT ERROR REPEAT
*             STEPS 4,5,AND 9,10 150D TIMES.
*         12. CALL 98E TO GENERATE PATTERN (B9=3).
*         12A. WRITE THE 3 DATA WORDS IN P6, P7, AND P8 IF NON-ZERO,
*             OR 123, 456, AND 789 HEX, TO THE EXT. RESET REGISTER, 
*             MODE 1. 
*         13. READ THE EXT. RESET REGISTER, MODE 1, AND VERIFY THE
*             DATA.  (5678 HEX FOR THE DEFAULT CASE). 
*         14. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             REPEAT STEPS 3,4,5,12 AND 13. IF NOT ERRORS REPEAT
*             STEPS 4,5,AND 12,13 150D TIMES. 
*         15. CALL 98E TO GENERATE PATTERN (B9=4).
*         15A.WRITE THE 4 DATA WORDS IN P6, P7, P8, AND P9 IF NON-
*             ZERO, OR 123, 456, 789, AND ABC HEX, TO THE EXT RESET 
*             REGISTER, MODE 1. 
*         16. READ THE EXT. RESET REGISTER, MODE 1, AND VERIFY THE
*             DATA.  (9ABC HEX FOR THE DEFAULT CASE). 
*         17. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             REPEAT STEPS 3,4,5,15 AND 16. IF NOT ERRORS REPEAT STEPS
*             4,5,AND,15,16 150D TIMES. 
*         18. CALL 98E TO GENERATE PATTERN (B9=5).
*         18A.WRITE THE 2 DATA WORDS IN P6 AND P7 IF NON-ZERO, OR 
*             123 AND 456 HEX, TO THE EXT. RESET REGISTER, MODE 2.
*         19. READ THE EXT. RESET REGISTER, MODE 2, AND VERIFY THE
*             DATA.  (023 AND 056 HEX FOR THE DEFAULT CASE).
*         20. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             REPEAT STEPS 3,4,5,18 AND 19. IF NO ERRORS REPEAT 
*             STEPS 4,5,AND 18,19 150D TIMES. 
*         21. IF SCOPING LOOP IS SELECTED, REPEAT STEPS THE 
*             FAILING CASE. 
*         22. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         23. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-22.
*         24. IF ANY ERRORS WERE DETECTED DURING EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         25. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP11 
*           . CRP11 ERROR(S) IN MODULE = *DEC 
*           . CRP11 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP1 MAIN A/D TEST
*           . CRP11 RUNNING .SL.  LC=*DEC 
*           . CRP11    PRETEST (1/0 TO EXRESET REG) 
*           .  FAILURE COULD BE DATA PATH TO EXRESET REG
*           .  RUN REG TESTS CRP09/19 FOR EXRESET REG TESTING 
*           . CRP11 ERROR(S)IN MODULE = *DEC
*           . SHIFT LOGIC ERROR...WR FUNC=*OCT, RD FUNC=*OCT
*           . WDS XFERRED =*OCT, LC=*DEC, ERC=*DEC,FUNC PAIR=*D 
*           . DATA EXPECTED=*3H*3HH ACTUAL=*3H*3HH
*           . CONDITION ERROR FOUND IN MODULE 98E B9=*OCT 
*           . EXP=*3H*3HH, ACT=*3H*3HH, FUNC W=*OCT/R=*OCT
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P6,P7,P8 USER SUPPLIED DATA PATTERNS (98E DATA NOT USED)
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-10 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B2  =    "     "
*         B3  = ERROR RETURN FROM 98E.
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*       - IB -
*        0,1  READ BUFFER 
*       100,101 EXPECTED DATA (FROM 98E)
* 
*       - OB -
*        0,1,2,3  WRITE DATA
*        100,101  EXPECTED READ DATA
*        401-     READ FUNCTION CODES 
*        411-     WRITE FUNCTION CODES
*        421-     WORDS COUNTS FOR EACH FUNCTION PAIR 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
*          CRP98E - PATTERN GENERATOR FOR CRP11 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP11 - CRP A/D (SHIFT) LOGIC TEST
1  FORMAT CRP11    MAIN A/D TEST
2  FORMAT CRP11 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP11 RUNNING .SL.  LC=*DEC 
4  FORMAT CRP11    PRETEST (1/0 TO EXRESET REG) 
5  FORMAT  FAILURE COULD BE DATA PATH TO EXRESET REG
6  FORMAT  RUN REG TESTS CRP09/19 FOR EXRESET REG TESTING 
7  FORMAT  // MODULE ERROR LIMIT - CRP11
10 FORMAT CRP11 ERROR(S)IN MODULE = *DEC
20 FORMAT SHIFT LOGIC ERROR...WR FUNC=*OCT, RD FUNC=*OCT
21 FORMAT WDS XFERRED =*OCT, LC=*DEC, ERC=*DEC,FUNC PAIR=*D 
22 FORMAT DATA EXPECTED=*3H*3HH ACTUAL=*3H*3HH
24 FORMAT CONDITION ERROR FOUND IN MODULE 98E B9=*OCT 
26 FORMAT EXP=*3H*3HH, ACT=*3H*3HH, FUNC W=*OCT/R=*OCT
27 FORMAT --------------------------------------------
* 
* ------------------------DATA------------------------- 
* 
   EQUATE ERRLIM=20 
* ---------ALL DATA STMTS ARE IN CRP98E---------- 
* ----DIAGNOSTIC READ FUNCS.
*  DATA (OB(401),CON) 411,511,511,511,611 
* 
* ----DIAGNOSTIC WRITE FUNCS. 
*  DATA (OB(411),CON) 451,551,551,551,651 
* 
* ----WRITE WORDS CNTS
*  DATA (OB(421),CON) 1 , 2 , 3 , 4 , 2 
* 
* -----------------INITIALIZATION-------------------
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 11D
   MSG 4 TO PRINT,DAYFILE    *PRESTEST MSG
32 MSG 4 TO DISPLAY          *RUN MSG 
* -----------------PRETEST (ONES/ZEROS)---------------- 
   B11 = 0                   *CLEAR ERROR CNTR
   B9 = 77                   *CONDITION REG PRETEST 
34 B10 = 0                   *LOOP CNTR 
   CALL 98E                  *GENERATE PATTERNS 
* 
36 B12 = 1
   RES ,ABT 70
   B12 = 2
   FUNC 651 ,ABT 70          *MODE 2 DIAG WRITE 
   BA = 0 
   WC = 2 
   B12 = 3
   OUT , ABT 70 
   B12 = 2
   FUNC 611 , ABT 70
   B12 = 4
   IN , ABT 70
   COMPARE IB(0) TO OB(2) FOR WC,ABT 60    *CHECK DATA
   GOTO 36 WHILE(B10+1.LE.50D)             *LOOP 50D TIMES
   GOTO 34 WHILE(B9+1.LE.100)         *LOOP FOR 1'S AND 0'S 
* 
* -----------MAIN TEST------------------------------
* 
   IF(ES.AND.RM.EQ.0)MSG 1 TO PRINT,DAYFILE  *ONLY IF NOT RM
   MSG 1 TO DISPLAY          *RUNNING MSG FOR MAIN TEST 
   B9 = 1                    *PRESET CONDITION CNT
   B11 = 0                   *ERROR CNTR
40 B10 = 0
   CALL 98E                  *GENERATE PATTERN/EXPECTED DATA
   IF(B3.NE.0)GOTO 42        *GOOD RETURN FROM 98E
   MSG 24(B9) TO PRINT,DISPLAY
   GOTO 77                   *END TEST
* 
42 IF(P4.NE.0)DELAY P4 USEC  *DELAY IF SET
   B12 = 1                   *ABT ERROR MSG 
   RES ,ABT 70
   B12 = 2
   FUNC OB(B9+410),ABT 70    *SEND WRITE FUNC 
   WC = OB(B9+420)           *SET WORD COUNT FOR COND.
   BA = 0 
   B12 = 3
   OUT ,ABT 70               *WRITE DATA
   B12 = 2
   FUNC OB(B9+400),ABT 70    *SEND READ FUNC
   BA = 100                  *INPUT BUFFER ADDRESS
   WC = 2 
   IF(B9.EQ.1)WC = 1         *ADJUST WC FOR FUNCTION
   B12 = 4
   IN 2 WORDS TO IB(100) ,ABT 70               *READ REG. (2 WDS) 
   IF(B9.NE.5)IB(101) = IB(101).AND.7400       *MASK INPUT DATA 
   COMPARE IB(100) TO OB(100) FOR WC,ABT 60    *CHECK DATA
   GOTO 42 WHILE(B10+1.LE.150D)                *LOOP 150D TIMES 
   IF(ES.AND.SL.NE.0)GOTO 42                   *SCOPE LOOP
   B10 = 0                                     *CLEAR LOOP CNTR 
   GOTO 40 WHILE(B9+1.LE.5)                    *NEXT COND.
* 
* ---------------END S/REPEATS--------------------- 
* 
   IF(ES.AND.RM.NE.0)GOTO 32  *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
* 
   OB(0) = 0000                    *CLEAR THE EXT RESET REG 
   OB(1) = 0000                    *BEFORE LEAVING
   B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 251 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(0) , ABT 70
* 
   EXIT 
* 
* --------DATA ERRORS---------------------
* 
60 B11 = B11 + 1
   B1 = OB(B9+410)
   B2 = OB(B9+400)
   IF(ES.AND.SL.EQ.0)GOTO 62  *NOT SL 
   MSG 26(OB(100),OB(101),IB(100),IB(101),B1,B2)TO DISPLAY
   GOTO 66                   *REENTER TEST
62 IF(B9.GE.77)MSG 4 TO LINE 1   *PRETEST MSG 
   IF(B9.LT.77)MSG 1 TO LINE 1   *MAIN TEST MSG 
   MSG 20(B1,B2) TO LINE 2
   MSG 21(OB(B9+420),B10,B11,B9) TO LINE 3
   MSG 22(OB(100),OB(101),IB(100),IB(101)) TO LINE 4
* 
63 MSG 27 TO LINE 5              *FINISH DISPLAY AND HALT 
   PICTURE
   HALT 
   BLANK
64 IF(B11.GT.ERRLIM)GOTO 50       *ERROR LIMIT EXIT 
   MSG 0 TO DISPLAY               *RESET RUN MSG
66 IF(B9.GE.77)GOTO 36            *PRETEST RETURN 
   GOTO 42
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1              *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74  *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   GOTO 66                    *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                     *FLAG ABORT PROCESSING
   CALL 97X                   *PROCESS ABORT MSGS 
   GOTO 64                    *RUNNING MSG / LOOP 
* 
77 END 30 
COMPILE   *CRP11 - SHIFT LOGIC TEST 
   MODULE CRP13,6000(200),LOCK
***       CRP13 - GENERAL STATUS WORD (GSW) TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A TEST OF THE GSW BY MEANS OF THE DIAGNOSTIC 
*         WRITE CAPABILITY OF THE CRP.  TEST PATTERNS OF ONES AND 
*         ZEROS, ALTERNATING ONES AND ZEROS, AND MARCHING ONES AND
*         ZEROS ARE WRITTEN AND VERIFIED.  DATA TRANSLATION MODE 2
*         IS USED.  CYBER CRP FUNCTIONS 00 AND 40 ARE VERIFIED. 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  CLEAR LOOP AND ERROR COUNTERS AND OTHER SCR CELLS.
*         4.  SET B15 FOR CALL TO 98C PATTERN GENERATOR AND CALL 98C
*             TO GENERATE MODE 2 PATTERNS.
*         5.  PAUSE (P4) USEC.
*         6.  RESERVE THE CHANNEL TO THE CRP. 
*         7.  IF PARAMETER WORD P6/P7 CONTAINS A NON-ZERO VALUE,
*             EXECUTE THE REGISTER TEST USING THAT PARAMETER WORD.
*         8.  ELSE, EXECUTE THE ALL ONES - ALL ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         9.  EXECUTE THE ALTERNATING ONES AND ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         10. EXECUTE THE MARCHING ONES AND ZEROS TEST. 
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         11. IF SL IS SELECTED, REPEAT STEPS 5-11. 
*         12. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         13. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-10.
*         14. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         15. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP13 
*           . CRP13 ERROR(S) IN MODULE = *DEC 
*           . CRP13 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP13 RUNNING-*A  LC=*DEC, PATTERN=*H*HHEX
*           . DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH  ACT=*H*HH 
*           .    LOGICAL DIFFERENCE = *H*H H
*           . CRP13 INTERNAL ERROR CRP13/CRP98C MODE(B15) = *OCT
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P6 AND P7 IF NON ZERO ARE USED AS TEST PATTERN
*         (NO OTHER PATTERNS ARE GENERATED OR USED).
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-11 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B2  =    "     "
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE.
* 
* 
*          IB(0) , IB(1)  READ BUFFER 
* 
*          OB 
*          0,1   DATA FROM PATTERN FOR OUTPUT 
*          4,5   LOG.DIFF CELLS 
*          76    USER DATA FLAG 
*          77    PATTERN COUNT
*          100-  PATTERNS 
* 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
*          CRP98C - PATTERN GENERATOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP13 - GENERAL STATUS WORD TEST (GSW)
2  FORMAT CRP13 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
7  FORMAT // MODULE ERROR LIMIT-CRP13 
10 FORMAT CRP13 ERROR(S)IN MODULE = *DEC
20 FORMAT CRP13 RUNNING-*A  LC=*DEC, PATTERN=*H*HHEX
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH, ACT=*H*HH 
22 FORMAT    LOGICAL DIFFERENCE = *H*HH 
25 FORMAT CRP13 INTERNAL ERROR CRP13/CRP98C. MODE(B15)=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 13D                 *MODULE NUMBER 
   B15 = 2                   *MODE TO 98C 
   CALL 98C                  *GENERATE PATTERN
   IF(B15.GT.2)GOTO 76       *ERROR RETURN FROM 98C 
32 MSG 0 TO DISPLAY          *RUN MSG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
   B6 = 0                    *CLEAR ERROR MSG FLAG
* 
* ------------------DATA TEST---------------------------
* 
* ----MOVE TEST PATTERN TO OB(0)
42 IF(P4.NE.0)DELAY P4 USEC 
   B1 = B9 + B9                      *ADDRESS OF DATA 
   OB(0) = OB(B1+PSTART).AND.377     *1ST DATA WORD 
   B1 = B1 + 1
   OB(1) = OB(B1+PSTART).AND.377      *2ND DATA WORD
   B12 = 1
   RES ,ABT 70
   WC = 2                    *OUT/IN/COMPARE WORD CNT 
   BA = 0                    *OUT/IN BUFFER ADDRESS 
   B7 = 5555                 *PRESET NOT SL 
   IF(ES.AND.SL.NE.0)B7=2314  *IF SL
   IF(B6.EQ.0)MSG 20(B7,B10,OB(0),OB(1)) TO DISPLAY 
   B12 = 2
   FUNC 640,ABT 70                    *DIAG WRITE MODE 2 GSW
   B12 = 3
   OUT , ABT 70                       *SEND 2 WDS TO GSW REG
   B12 = 2
   FUNC 600,ABT 70                    *DIAG READ MODE 2 GSW 
   B12 = 4
   IN , ABT 70                        *READ 2 WDS TO IB(0)
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                             *RESET ERR MSG FALG 
   GOTO 42 WHILE(B10+1.LE.150D)       *LOOP 150D TIMES
* 
   IF(ES.AND.SL.NE.0)GOTO 42          *SCOPE LOOP 
   B10 = 0                            *RESET LOOP CNT 
   GOTO 42 WHILE(B9+1.LE.OB(PCNT))    *BUMP PATTERN / LOOP
* 
46 IF(ES.AND.RM.NE.0)GOTO 32          *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   EXIT 
* 
* -------------------DATA COMPARE ERROR---------------
* 
54 B11 = B11 + 1              *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 56  *NOT SL 
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO DISPLAY 
   B6 = 1                     *SET SL ERR MSG UP
   GOTO 42                    *SCOPE LOOP DATA ERROR
* 
56 MSG 0 TO LINE 1
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO LINE 2
   OB(4) = OB(0).XOR.IB(0)       *FORM LOG DIF
   OB(5) = OB(1).XOR.IB(1)       *- 
   MSG 22(OB(4),OB(5)) TO LINE 3
   B1 = 7700                     *FLAG ERROR STOP MSGS
   CALL 97X                      *PROCESS ERROR STOP
   GOTO 75
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                  *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74      *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   B6 = 1                         *SET ERR MSG UP FLAG
   GOTO 42                        *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                         *FLAG ABORT PROCESSING
   CALL 97X                       *PROCESS ABORT MSGS 
* 
75 MSG 0 TO DISPLAY               *REPORT RUN MSG 
   IF(B11.GT.ERRLIM)GOTO 50       *ERROR LIMIT
   GOTO 42                        *RETURN TO TEST LOOP
* 
76 B15 = B15 - 10                 *RESET TO MODE SEND TO 98C
   MSG 25(B15) TO DISPLAY,PRINT,DAYFILE  *BAD MODE 98C
77 END 30 
COMPILE   *CRP13 - GSW DATA TEST
   MODULE CRP15,6000(200),LOCK
***       CRP15 - DIAGNOSTIC REGISTER TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A TEST OF THE DIAGNOSTIC REGISTER'S ABILITY TO 
*         ACCEPT AND RETAIN DATA.  A SEQUENCE OF ONES, ZEROS, 
*         ALTERNATING ONES AND ZEROS, MARCHING ONES AND ZEROS ARE 
*         WRITTEN AND VERIFIED.  DATA TRANSLATION MODE 2 IS USED. 
*         THE DIAGNOSTIC READ CAPABILITY OF THE CRP IS USED.  CYBER 
*         CRP FUNCTIONS 10 AND 50 ARE VERIFIED. 
* 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  CLEAR LOOP AND ERROR COUNTERS AND OTHER SCR CELLS.
*         4.  SET B15 FOR CALL TO 98C PATTERN GENERATOR AND CALL 98C
*             TO GENERATE MODE 2 PATTERNS.
*         5.  PAUSE (P4) USEC.
*         6.  RESERVE THE CHANNEL TO THE CRP. 
*         7.  IF PARAMETER WORD P6/P7 CONTAINS A NON-ZERO VALUE,
*             EXECUTE THE REGISTER TEST USING THAT PARAMETER WORD.
*         8.  ELSE, EXECUTE THE ALL ONES - ALL ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         9.  EXECUTE THE ALTERNATING ONES AND ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         10. EXECUTE THE MARCHING ONES AND ZEROS TEST. 
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         11. IF SL IS SELECTED, REPEAT STEPS 5-11. 
*         12. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         13. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-10.
*         14. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         15. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP15 
*           . CRP15 ERROR(S) IN MODULE = *DEC 
*           . CRP15 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP15 RUNNING-*A  LC=*DEC, PATTERN=*H*HHEX
*           . DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH  ACT=*H*HH 
*           .    LOGICAL DIFFERENCE = *H*H H
*           . CRP15 INTERNAL ERROR CRP15/CRP98C MODE(B15) = *OCT
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P6 AND P7 IF NON ZERO ARE USED AS TEST PATTERN
*         (NO OTHER PATTERNS ARE GENERATED OR USED).
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-13 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B2  =    "     "
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE.
* 
* 
*          IB(0) , IB(1)  READ BUFFER 
* 
*          OB 
*          0,1   DATA FROM PATTERN FOR OUTPUT 
*          4,5   LOG.DIFF CELLS 
*          76    USER DATA FLAG 
*          77    PATTERN COUNT
*          100-  PATTERNS 
* 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
*          CRP98C - PATTERN GENERATOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP15 - DIAGNOSTIC REGISTER TEST (DIAG REG) 
2  FORMAT CRP15 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
7  FORMAT // MODULE ERROR LIMIT-CRP15 
10 FORMAT CRP15 ERROR(S)IN MODULE = *DEC
20 FORMAT CRP15 RUNNING-*A  LC=*DEC, PATTERN=*H*HH
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH, ACT=*H*HH 
23 FORMAT    LOGICAL DIFFERENCE = *H*H
25 FORMAT CRP15 INTERNAL ERROR CRP15/CRP98C. MODE(B15)=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 15D                 *MODULE NUMBER 
   B15 = 2                   *MODE TO 98C 
   CALL 98C                  *GENERATE PATTERN
   IF(B15.GT.2)GOTO 76       *ERROR RETURN FROM 98C 
32 MSG 0 TO DISPLAY          *RUN MSG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
   B6 = 0                    *CLEAR ERROR MSG FLAG
* 
* ------------------DATA TEST---------------------------
* 
* ----MOVE TEST PATTERN TO OB(0)
42 IF(P4.NE.0)DELAY P4 USEC 
   B1 = B9 + B9                      *ADDRESS OF DATA 
   OB(0) = OB(B1+PSTART).AND.377     *1ST DATA WORD 
   B1 = B1 + 1
   OB(1) = OB(B1+PSTART).AND.377     *2ND DATA WORD 
   B12 = 1
   RES ,ABT 70
   WC = 2                    *OUT/IN/COMPARE WORD CNT 
   BA = 0                    *OUT/IN BUFFER ADDRESS 
   B7 = 5555
   IF(ES.AND.SL.NE.0)B7=2314   *RESET SL IN MSG 
   IF(B6.EQ.0)MSG 20(B7,B10,OB(0),OB(1)) TO DISPLAY 
   B12 = 2
   FUNC 650,ABT 70                    *DIAG WRITE MODE 2
   B12 = 3
   OUT , ABT 70                       *SEND 2 WDS TO DIAG 
   B12 = 2
   FUNC 610,ABT 70                    *DIAG READ MODE 2 
   B12 = 4
   IN , ABT 70                        *READ 2 WDS TO IB(0)
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                             *RESET ERR MSG FLAG 
   GOTO 42 WHILE(B10+1.LE.150D)       *LOOP 150D TIMES
* 
   IF(ES.AND.SL.NE.0)GOTO 42          *SCOPE LOOP 
   B10 = 0                            *RESET LOOP CNTR
   GOTO 42 WHILE(B9+1.LE.OB(PCNT))    *BUMP PATTERN / LOOP
* 
* -----------------END/REPEATS------------------
* 
46 IF(ES.AND.RM.NE.0)GOTO 32          *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   EXIT 
* 
* -------------------DATA COMPARE ERROR---------------
* 
54 B11 = B11 + 1              *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 56  *NOT SL 
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO DISPLAY 
   B6 = 1                    *SET ERR MSG UP FLAG 
   GOTO 42                   *SCOPE LOOP DATA ERROR 
* 
56 MSG 0 TO LINE 1
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO LINE 2
   OB(4) = OB(0).XOR.IB(0)   *FORM LOGICAL DIFF 
   OB(5) = OB(1).XOR.IB(1)   *- 
   MSG 23(OB(4),OB(5)) TO LINE 3
   B1 = 7700                 *FLAG ERROR PROCESSING 
   CALL 97X                  *PROCESS ERROR MSGS
   GOTO 75                   *FINISH DISPLAY
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                  *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74      *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   B6 = 1                         *SET ER MSG UP FLAG 
   GOTO 42                        *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   CALL 97X                  *PROCESS ABORT MSGS
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 42                   *RETURN TO TEST LOOP 
* 
76 B15 = B15 - 10            *RESET TO MODE SEND TO 98C 
   MSG 25(B15) TO DISPLAY,PRINT,DAYFILE  *BAD MODE 98C
   END 30 
COMPILE   *CRP15 - DIAGNOSTIC REGISTER TEST 
   MODULE CRP17,6000(200),LOCK
***       CRP17 - RING STOP REGISTER TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A TEST OF BOTH RING STOP REGISTERS BY MEANS
*         OF THE DIAGNOSTIC WRITE CAPABILITY OF THE CRP.  TEST
*         PATTERNS OF ALL ONES AND ZEROS, ALTERNATING ONES AND
*         ZEROS, AND MARCHING ONES AND ZEROS ARE WRITTEN AND
*         VERIFIED.  DATA TRANSLATION MODE 2 IS USED.  CYBER CRP
*         FUNCTIONS 01, 02, 41, AND 42 ARE VERIFIED.
*         PARAMETER P5 CAN BE USER TO CONTROL WHICH REGISTER IS TESTED. 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  CLEAR LOOP AND ERROR COUNTERS AND OTHER SCR CELLS.
*         4.  SET B15 FOR CALL TO 98C PATTERN GENERATOR AND CALL 98C
*             TO GENERATE MODE 2 PATTERNS.
*         5.  PAUSE (P4) USEC.
*         6.  RESERVE THE CHANNEL TO THE CRP. 
*         7.  IF PARAMETER WORD P6/P7 CONTAINS A NON-ZERO VALUE,
*             EXECUTE THE REGISTER TEST USING THAT PARAMETER WORD.
*         8.  ELSE, EXECUTE THE ALL ONES - ALL ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         9.  EXECUTE THE ALTERNATING ONES AND ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         10. EXECUTE THE MARCHING ONES AND ZEROS TEST. 
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         11. REPEAT FROM 5 FOR RSR2. 
*         12. IF SL IS SELECTED, REPEAT STEPS 5-12. 
*         13. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         14. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-10.
*         15. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         16. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP17 
*           . CRP17 ERROR(S) IN MODULE = *DEC 
*           . CRP17 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP17 RUNNING-*A  LC=*DEC, PATTERN=*H*HHEX
*           . DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH  ACT=*H*HH 
*           .    LOGICAL DIFFERENCE = *H*H H
*           . CRP17 INTERNAL ERROR CRP17/CRP98C MODE(B15) = *OCT
*           . CRP17 PARAMETER ERROR  P5.GT.2  P5 = *OCT 
*           . TESTING RING STOP REGISTER - *D 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P5 CONDITION TO RUN  0, 1, OR 2 
*            0 - BOTH REGISTERS    1 - RSR1 ONLY
*            2 - RSR2 ONLY
*         P6 AND P7 IF NON ZERO ARE USED AS TEST PATTERN
*         (NO OTHER PATTERNS ARE GENERATED OR USED).
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-13 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B2  =    "     "
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B8  = RING STOP REGISTER TOGGLE.
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE.
* 
* 
*          IB(0) , IB(1)  READ BUFFER 
* 
*          OB 
*          0,1   DATA FROM PATTERN FOR OUTPUT 
*          4,5   LOG.DIFF CELLS 
*          51,52 READ FUNCTIONS 
*          61,62 WRITE FUNCTIONS
*          76    USER DATA FLAG 
*          77    PATTERN COUNT
*          100-  PATTERNS 
* 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
*          CRP98C - PATTERN GENERATOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP17 - RING STOP REGISTER 1+2 TEST (RSR1/2)
2  FORMAT CRP17 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
7  FORMAT // MODULE ERROR LIMIT 
10 FORMAT CRP17 ERROR(S) IN MODULE = *DEC 
20 FORMAT CRP17 RUNNING-*A  RSR*D  LC=*DEC, PATTERN=*H*HH 
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH, ACT=*H*HH 
23 FORMAT    LOGICAL DIFFERENCE = *H*H
24 FORMAT  TESTING RING STOP REGISTER - *D
25 FORMAT CRP17 INTERNAL ERROR CRP17/CRP98C. MODE(B15)=*OCT 
26 FORMAT CRP17 PARAMETER ERROR P5.GT.2  P5 = *OCT
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 17D                 *MODULE NUMBER 
   B15 = 2                   *MODE TO 98C 
   CALL 98C                  *GENERATE PATTERNS 
   IF(B15.GT.2)GOTO 76       *ERROR RETURN FROM 98C 
32 MSG 0 TO DISPLAY          *RUN MSG 
* 
   OB(51) = 601                  *READ FUNC FOR RSR1
   OB(52) = 602                  *READ FUNC FOR RSR2
   OB(61) = 641                  *WRITE FUNC FOR RSR1 
   OB(62) = 642                  *WRITE FUNC FOR RSR2 
* 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
   B6 = 0                    *CLEAR ERROR MSG FLAG
   B8 = 1                    *RSR1/RSR2 INDICATOR 
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
* 
   IF(P5.LT.3)GOTO 34 
   MSG 26(P5) TO PRINT,DISPLAY,DAYFILE
   PAUSE
   GOTO 30
* 
34 IF(P5.LT.2)GOTO 42            *TEST LP-2 REG 
   IF(P5.EQ.2) B8 = 2 
* 
* ------------------DATA TEST---------------------------
* 
* ----MOVE TEST PATTERN TO OB(0)
42 IF(P4.NE.0)DELAY P4 USEC 
   B1 = B9 + B9                      *ADDRESS OF DATA 
   OB(0) = OB(B1+PSTART).AND.377     *1ST DATA WORD 
   B1 = B1 + 1
   OB(1) = OB(B1+PSTART).AND.377     *2ND DATA WORD 
   B12 = 1
   RES ,ABT 70
   WC = 2                    *OUT/IN/COMPARE WORD CNT 
   BA = 0                    *OUT/IN BUFFER ADDRESS 
   B7 = 5555
   IF(ES.AND.SL.NE.0)B7=2314   *SET SL IN MSG 
   IF(B6.EQ.0)MSG 20(B7,B8,B10,OB(0),OB(1)) TO DISPLAY
   B12 = 2
   FUNC OB(B8+60),ABT 70             *DIAG WRITE MODE 2 
   B12 = 3
   OUT , ABT 70                      *SEND 2 WDS
   B12 = 2
   FUNC OB(B8+50),ABT 70             *DIAG READ MODE 2
   B12 = 4
   IN , ABT 70                        *READ 2 WDS TO IB(0)
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                             *RESET ERR MSG FLAG 
   GOTO 42 WHILE(B10+1.LE.40D)     *LOOP 40 TIMES 
* 
   IF(ES.AND.SL.NE.0)GOTO 42          *SCOPE LOOP 
* 
   B10 = 0                            *RESET LOOP CNTR
   GOTO 42 WHILE(B9+1.LE.OB(PCNT))    *BUMP PATTERN / LOOP
   B9 = 0                             *RESET PATTERN CNTR 
* 
46 IF(P5.EQ.0)GOTO 42 WHILE(B8+1.LE.2)  *LOOP FOR RSR1/2
* 
* ---------------- END/REPEATS--------------------
* 
   IF(ES.AND.RM.NE.0)GOTO 32          *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   EXIT 
* 
* -------------------DATA COMPARE ERROR---------------
* 
54 B11 = B11 + 1              *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 56  *NOT SL 
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO DISPLAY 
   B6 = 1                    *SET ERR MSG UP FLAG 
   GOTO 42                   *SCOPE LOOP DATA ERROR 
* 
56 MSG 0 TO LINE 1
   MSG 24(B8) TO LINE 2 
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO LINE 3
   OB(4) = OB(0).XOR.IB(0)   *FORM LOGICAL DIFF 
   OB(5) = OB(1).XOR.IB(1)   *- 
   MSG 23(OB(4),OB(5)) TO LINE 4
   B1 = 7700                 *FLAG ERROR PROCESSING 
   CALL 97X                  *PROCESS ERROR MSGS
   GOTO 75
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                  *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74      *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   B6 = 1                         *SET ERR MSG UP FLAG
   GOTO 42                        *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   CALL 97X                  *PROCESS ABORT MSGS
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 42                   *RETURN TO TEST LOOP 
* 
76 B15 = B15 - 10            *RESET TO MODE SEND TO 98C 
   MSG 25(B15) TO DISPLAY,PRINT,DAYFILE  *BAD MODE 98C
   END 30 
COMPILE   *CRP17 - RING STOP REGISTER TEST
   MODULE CRP19,6000(200),LOCK
***       CRP19 - EXTERNAL RESET REGISTER TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         TESTS THE EXTERNAL RESET REGISTER'S ABILITY TO ACCEPT 
*         AND RETAIN DATA.  TEST PATTERNS OF ALL ONES AND ZEROS,
*         ALTERNATING ONES AND ZEROS, AND MARCHING ONES AND ZEROS 
*         ARE WRITTEN AND VERIFIED.  DATA TRANSLATION MODE 2 AND
*         AND THE DIAGNOSTIC READ CAPABILITY OF THE CRP ARE USED. 
*         CYBER CRP FUNCTIONS 11 AND 51 ARE VERIFIED. 
* 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  CLEAR LOOP AND ERROR COUNTERS AND OTHER SCR CELLS.
*         4.  SET B15 FOR CALL TO 98C PATTERN GENERATOR AND CALL 98C
*             TO GENERATE MODE 2 PATTERNS.
*         5.  PAUSE (P4) USEC.
*         6.  RESERVE THE CHANNEL TO THE CRP. 
*         7.  IF PARAMETER WORD P6/P7 CONTAINS A NON-ZERO VALUE,
*             EXECUTE THE REGISTER TEST USING THAT PARAMETER WORD.
*         8.  ELSE, EXECUTE THE ALL ONES - ALL ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         9.  EXECUTE THE ALTERNATING ONES AND ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         10. EXECUTE THE MARCHING ONES AND ZEROS TEST. 
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         11. IF SL IS SELECTED, REPEAT STEPS 5-11. 
*         12. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         13. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-10.
*         14. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         15. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP19 
*           . CRP19 ERROR(S) IN MODULE = *DEC 
*           . CRP19 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP19 RUNNING-*A  LC=*DEC, PATTERN=*H*HHEX
*           . DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH  ACT=*H*HH 
*           .    LOGICAL DIFFERENCE = *H*H H
*           . CRP19 INTERNAL ERROR CRP19/CRP98C MODE(B15) = *OCT
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P6 AND P7 IF NON ZERO ARE USED AS TEST PATTERN
*         (NO OTHER PATTERNS ARE GENERATED OR USED).
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-17 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B2  =    "     "
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE.
* 
* 
*          IB(0) , IB(1)  READ BUFFER 
* 
*          OB 
*          0,1   DATA FROM PATTERN FOR OUTPUT 
*          4,5   LOG.DIFF CELLS 
*          76    USER DATA FLAG 
*          77    PATTERN COUNT
*          100-  PATTERNS 
* 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
*          CRP98C - PATTERN GENERATOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP19 - EXTERNAL RESET REGISTER TEST (EXRESET)
2  FORMAT CRP19 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
7  FORMAT // MODULE ERROR LIMIT-CRP19 
10 FORMAT CRP19 ERROR(S)IN MODULE = *DEC
20 FORMAT CRP19 RUNNING-*A  LC=*DEC, PATTERN=*H*HH
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH, ACT=*H*HH 
23 FORMAT    LOGICAL DIFFERENCE = *H*H
25 FORMAT CRP19 INTERNAL ERROR CRP19/CRP98C. MODE(B15)=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 19D                 *MODULE NUMBER 
   B15 = 2                   *MODE TO 98C 
   CALL 98C                  *GENERATE PATTERN
   IF(B15.GT.2)GOTO 76       *ERROR RETURN FROM 98C 
32 MSG 0 TO DISPLAY          *RUN MSG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
   B6 = 0                    *CLEAR ERROR MSG FLAG
* 
* ------------------DATA TEST---------------------------
* 
* ----MOVE TEST PATTERN TO OB(0)
42 IF(P4.NE.0)DELAY P4 USEC 
   B1 = B9 + B9                      *ADDRESS OF DATA 
   OB(0) = OB(B1+PSTART).AND.377     *1ST DATA WORD 
   B1 = B1 + 1
   OB(1) = OB(B1+PSTART).AND.377     *2ND DATA WORD 
   B12 = 1
   RES ,ABT 70
   WC = 2                    *OUT/IN/COMPARE WORD CNT 
   BA = 0                    *OUT/IN BUFFER ADDRESS 
   B7 = 5555
   IF(ES.AND.SL.NE.0)B7=2314   *SET SL IN MSG 
   IF(B6.EQ.0)MSG 20(B7,B10,OB(0),OB(1)) TO DISPLAY 
   B12 = 2
   FUNC 651,ABT 70                    *DIAG WRITE MODE 2
   B12 = 3
   OUT , ABT 70                       *SEND 2 WDS 
   B12 = 2
   FUNC 611,ABT 70                    *DIAG READ MODE 2 
   B12 = 4
   IN , ABT 70                        *READ 2 WDS TO IB(0)
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                             *RESET ERR MSG FLAG 
   GOTO 42 WHILE(B10+1.LE.150D)        *LOOP 150D TIMES 
* 
* ----------------ENDS/REPEATS----------------------
* 
   IF(ES.AND.SL.NE.0)GOTO 42          *SCOPE LOOP 
   B10 = 0                            *RESET LOOP CNTR
   GOTO 42 WHILE(B9+1.LE.OB(PCNT))    *BUMP PATTERN / LOOP
* 
46 IF(ES.AND.RM.NE.0)GOTO 32          *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
* 
   OB(0) = 0000                    *CLEAR THE EXT RESET REG 
   OB(1) = 0000                    *BEFORE LEAVING
   B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 251 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(0) , ABT 70
* 
   EXIT 
* 
* -------------------DATA COMPARE ERROR---------------
* 
54 B11 = B11 + 1              *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 56  *NOT SL 
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO DISPLAY 
   B6 = 1                     *SET ERR MSG UP FLAG
   GOTO 42                    *SCOPE LOOP DATA ERROR
* 
56 MSG 0 TO LINE 1
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO LINE 2
   OB(4) = OB(0).XOR.IB(0)   *FORM LOGICAL DIFF 
   OB(5) = OB(1).XOR.IB(1)   *- 
   MSG 23(OB(4),OB(5)) TO LINE 3
   B1 = 7700                 *FLAG PROCESS ERROR MSG
   CALL 97X                  *PROCESS ERROR MSG 
   GOTO 75
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   B6 = 1                           *SET ERR MSG UP FLAG
   GOTO 42                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT MSG PROCESSING 
   CALL 97X                  *PROCESS ABORT MSGS
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 42                   *RETURN TO TEST LOOP 
* 
76 B15 = B15 - 10            *RESET TO MODE SEND TO 98C 
   MSG 25(B15) TO DISPLAY,PRINT,DAYFILE  *BAD MODE 98C
   END 30 
COMPILE   *CRP19 - EXTERNAL RESET REGISTER TEST 
   MODULE CRP21,6000(200),LOCK
***       CRP21 - RING CONTROL/DATA REGISTER TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         TESTS THE ABILITY OF THE RING CONTROL AND DATA REGISTERS
*         TO ACCEPT AND RETAIN DATA.  TEST PATTERNS OF ALL ONES AND 
*         AND ZEROS, ALTERNATING ONES AND ZEROS, AND MARCHING ONES
*         AND ZEROS ARE WRITTEN AND VERIFIED.  DATA TRANSLATION 
*         MODES 0, 1, AND 2 ARE USED.  THE DIAGNOSTIC READ CAPABILITY 
*         OF THE CRP IS USED.  CYBER CRP FUNCTIONS 12, 13, 32, 52, 53 
*         AND 73 ARE VERIFIED.
* 
*         MODULE IS WRITTEN IN 4 PARTS; 21 CONTROL , 21A TESTS MODE 0 
*         21B TESTS MODE 2 , 21C TESTS MODE 1.
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  START TEST DEPENDING ON P5 CONDITION. 
* 
*      - CRP21 AND CRP21A - 
*            STEPS 4-8 REPEAT IN SUBMODULES 21A USING MODE 0 AND
*            SUBMODULE 21B USING MODE 2.
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  IF PARAMETER WORDS P6, P7, AND P8 CONTAIN A NON-ZERO
*             VALUE, EXECUTE THE TEST USING THE PARAMETER WORD DATA.
*         7.  ELSE, EXECUTE THE ALL ONES - ALL ZEROS, ALTERNATING 
*             ONES AND ZEROS, AND MARCHING ONES AND ZEROS TEST USING
*             CYBER CRP FUNCTIONS 12,13,52, AND 53, MODES 1 AND 3.
*         8.  IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             REPEAT STEPS 3,4,5, AND 7. IF NO ERRORS REPEAT STEPS 4-7
*             150D TIMES. 
* 
*             - SUBMODULE 21C MODE 1
*         9.  EXECUTE THE ALL ONES - ALL ZEROS, ALTERNATING ONES AND
*             ZEROS, AND MARCHING ONES AND ZEROS TEST USING CYBER 
*             CRP FUNCTIONS 31 AND 73, MODE 1.
*         10. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             REPEAT STEPS 3,4,5, AND 10. IF NO ERRORS REPEAT 
*             STEPS 4,5, AND 9,10 150D TIMES. 
*         11. IF SL IS SELECTED, REPEAT STEPS 3-11. 
*         13. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         14. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-13.
*         15. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         16. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP21 
*           . CRP21 ERROR(S) IN MODULE = *DEC 
*           . CRP21 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP21 PARAMETER ERROR P5.GT.3  P5=*OCT
*              - CRP21A - 
*              . CRP21A RUNNING-*A  *D  LC=*DEC, PATTERN=*3HH 
*              . DATA ERR. ERC=*DEC,LC=*DEC,EXP=*3HH, ACT=*3HH
*              .     LOGICAL DIFFERENCE = *3HH
*              .   TESTING RING CONTROL REGISTER (RCR)
*              .   TESTING RING DATA REGISTER (RDR) 
*              . CRP21A INTERNAL ERROR CRP21/CRP98G. MODE(B15)=*OCT 
*              . CRP21A INTERNAL ERROR CRP21/CRP21A. P5=*OCT
*               - CRP21B -
*              . CRP21B RUNNING-*A  *D   LC=*DEC, PATTERN=*H*HH 
*              . DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH, ACT=*H*HH
*              .    LOGICAL DIFFERENCE  *H*HH 
*                - CRP21C - 
*              .    LOGICAL DIFFERENCE *3H*3H*3HH 
*              . CRP21C RUNNING-*A LC=*DEC, PATTERN=*3H*3H*3HH
*              . DATA ERR. ERC=*DEC,LC=*DEC,E=*3H*3H*3H,A=*3H*3H*3H 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P5 CONDITION SELECTOR  0 - RUN 21A,21B,21C
*             1 - RUN 21A  ,  2 - RUN 21B  ,  3 - RUN 21C 
*         P6,P7,P8 USER SUPPLIED DATA FOR TESTING 
*           (98G DATA PATTERNS ARE NOT USED)
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-19 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B8  = 3RD LOOP COUNTER (FUNCTIONS OR PATTERNS). 
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE             . NUMBER - 10.
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE. (98G,98H)
* 
* 
*          - IB - 
*        0,1,2  READ BUFFER 
*          - OB - 
*        0,1,2  WRITE BUFFER
*        10,11  LOGICAL DIFFERENCE BUFFER 
*        10-15  DISPLAY DATA BUFFER 
*        51,52  READ FUNCTIONS
*        61,62  WRITE FUNCTIONS 
*        76     USER DATA INDICATOR 
*        77     PATTERNS AVAILABLE COUNT
*        100-... PATTERNS FROM GENERATOR
* 
* 
*   2.3   SUBMODULES USED 
*         - CRP21 - 
*          CALLS  21A , 21B , 21C 
*         - CRP21A -
*          CRP21B - NEXT SUBMODULE TO CONTINUE TESTING
*          CRP98G - PATTERN GENERATOR (USES MODE 0) 
*          CRP97Z - ERROR/ABORT MESSAGE PROCESSOR 
*         - CRP21B -
*          CRP21C - NEXT SUBMODULE TO CONTINUE TESTING
*          CRP98G - PATTERN GENERATOR (USES MODE 2) 
*          CRP97Z - ERROR/ABORT MESSAGE PROCESSOR 
*         - CRP21C -
*          CRP98H - PATTERN GENERATOR (USES MODE 1) 
*          CRP97X - ABORT MESSAGE PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP21  - RING CONTROL/RING DATA REGISTER TEST 
10 FORMAT CRP21 ERROR(S)IN MODULE = *DEC
26 FORMAT CRP21 PARAMETER ERROR  P5.GT.3  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 21D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B0 = 0210D                *MODULE FLAG FOR EXITS 
   IF(P5.EQ.0)GOTO 36        *NO USER SET CONDITION 
   IF(P5.LE.3)GOTO 34        *CONDITION IN RANGE
33 MSG 26(P5) TO DAYFILE,PRINT,DISPLAY   *P5 ERROR MSG
   PAUSE
   BLANK
   GOTO 30                   *RESTART MODULE
* 
* ----------------CALL SUBMODULES-------------------- 
* 
34 IF(P5.EQ.1)GOTO 36        *CONDITION 1 START 21A-
   IF(P5.EQ.2)GOTO 40        *CONDITION 2 START 21B-
   IF(P5.EQ.3)GOTO 42        *CONDITION 3 START 21C-
   GOTO 33                   *SHOULD NOT BE HERE. P5 ERROR
* 
36 OB(500) = 1               *FLAG SUBMODULE NUMBER IN OB 
   CALL 21A                  *START SUBMODULE 21A 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
40 OB(500) = 2               *FLAG SUBMODULE NUMBER IN OB 
   CALL 21B                  *START SUBMODULE 21B 
   GOTO 50                   *TEST RETURN,FROM SUBMODULE
* 
42 OB(500) = 3               *FLAG SUBMODULE NUMBER IN OB 
   CALL 21C                  *START SUBMODULE 21C 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
* ---------------ENDS / REPEATS---------------------- 
* 
50 PASS 
52 IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   IF(B11.GT.ERRLIM)GOTO 60    *EXIT MODULE ON ERR LIMIT
   IF(ES.AND.RM.NE.0)GOTO 32   *RM
60 EXIT                        *END MODULE
* 
   END 30 
COMPILE   *CRP21 - RCR/RDR REGISTER TEST
   MODULE CRP21A,6000(200),LOCK 
***       CRP21A RING CONTROL/DATA REGISTER TEST -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP21A - RING CONTROL/DATA REGISTER TEST(M=0) - 1 
2  FORMAT CRP21A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
7  FORMAT // MODULE ERROR LIMIT-CRP21A
17 FORMAT CRP21A RUNNING-*A  *D  LC=*DEC, PATTERN=*3HH
20 FORMAT DATA ERR. ERC=*DEC,LC=*DEC,EXP=*3HH, ACT=*3HH 
21 FORMAT     LOGICAL DIFFERENCE = *3HH 
23 FORMAT   TESTING RING CONTROL REGISTER (RCR) 
24 FORMAT   TESTING RING DATA REGISTER (RDR)
25 FORMAT CRP21A INTERNAL ERROR CRP21/CRP98G. MODE(B15)=*OCT
26 FORMAT CRP21A INTERNAL ERROR CRP21/CRP21A. P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0807D)GOTO 36    *RETURN FROM 98G 
   IF(B0.EQ.0726D)GOTO 60    *RETURN FROM 97Z 
   B0 = 0211D                *SET SUBMODULE 21A 
   IF(P5.EQ.0)GOTO 31        *P5 OK FOR 21A 
   IF(P5.EQ.1)GOTO 31        *P5 OK FOR 21A 
   MSG 26(P5) TO DISPLAY,PRINT,DAYFILE
   GOTO 77
* 
31 IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 21D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUN MSG 
* ----FUNCTIONS FOR RCR/RDR-----
   OB(51) = 412                  *READ FUNC FROM RCR
   OB(52) = 413                  *READ FUNC FROM RDR
   OB(61) = 452                  *WRITE FUNC TO RCR 
   OB(62) = 453                  *WRITE FUNC TO RDR 
* 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
   B6 = 0                    *CLEAR ERROR FLAG
   B8 = 1                    *FUNC PAIR INDEX 
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
34 B15 = 0                   *MODE TO 98G 
   EXIT TO 98G               *GENERATE PATTERNS 
36 IF(B15.GT.2)GOTO 76       *ERROR RETURN FROM 98G 
* ----BUILD PATTERN ADDRESS 
40 B1 = PSTART + B9 
   OB(0) = OB(B1)               *WD 1 PATTERN 
* 
* ------------------DATA TEST---------------------------
* 
42 IF(P4.NE.0)DELAY P4 USEC 
   B0 = 0211D                    *RESET MODULE EXIT-TO FLAG 
   B7 = 5555
   IF(ES.AND.SL.NE.0)B7 = 2314   *SET SL INDICATOR
   IF(B6.EQ.0)MSG 17(B7,B8,B10,OB(0))TO DISPLAY 
   B12 = 1
   RES ,ABT 70
   B12 = 2
   FUNC OB(B8+60),ABT 70             *DIAG WRITE
   BA = 0 
   WC = 1 
   B12 = 3
   OUT , ABT 70                      *SEND 1 WDS
   B12 = 2
   FUNC OB(B8+50),ABT 70             *DIAG READ 
   B12 = 4
   IN , ABT 70                        *READ 1 WDS TO IB(0)
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                             *RESET ERR MSG FLAG 
   GOTO 42 WHILE(B10+1.LE.50D)     *LOOP 50 TIMES 
   B10 = 0                            *RESET LOOP CNTR
* 
   IF(ES.AND.SL.NE.0)GOTO 42          *SCOPE LOOP 
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))    *BUMP PATTERN / LOOP
   B9 = 0                             *RESET PATTERN CNTR 
* 
46 GOTO 34 WHILE(B8+1.LE.2)           *LOOP FOR RCR/RDR 
* 
* -----------------CHECK REPEATS / ENDS---------------- 
* 
   IF(P5.EQ.0)GOTO 52                 *NEXT SUBMODULE 
   IF(ES.AND.RM.NE.0)GOTO 32          *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
52 EXIT TO 21B                        *NEXT SUBMODULE 
* 
* -------------------DATA COMPARE ERROR---------------
* 
54 B11 = B11 + 1              *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 56  *NOT SL 
   MSG 20(B11,B10,OB(0),IB(0))TO DISPLAY
   B6 = 1                     *SET ERR MSG UP FLAG
   GOTO 42                    *SCOPE LOOP DATA ERROR
* 
56 MSG 0 TO LINE 1
   IF(B8.EQ.1)MSG 23 TO LINE 2
   IF(B8.EQ.2)MSG 24 TO LINE 2
   MSG 20(B11,B10,OB(0),IB(0)) TO LINE 3
   OB(10) = OB(0).XOR.IB(0)       *LOG DIFF 
   MSG 21(OB(10)) TO LINE 4       *LOG DIFF 
   B1 = 7700                 *FLAG ERROR PROCESSING 
   EXIT TO 97Z               *PROCESS ERROR MSGS
* 
60 MSG 0 TO DISPLAY          *RUNNING MSG 
   IF(B11.GT.ERRLIM)GOTO 50  *EXIT IF ERR LIMIT 
   GOTO 42                   *LOOP AFTER DATA ERR 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST ABORT / LOOP MSG
   B6 = 1                           *SET ERR MSG UP FLAG
   GOTO 42                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT PROCESSING
   EXIT TO 97Z                      *PROCESS ABORT MSGS 
* 
76 B15 = B15 - 10               *RESET TO MODE SEND TO 98G
   MSG 25(B15) TO DISPLAY,PRINT,DAYFILE  *BAD MODE 98G
77 END 30 
COMPILE   *CRP21A - RCR/RDR REG TEST MODE 0 
   MODULE CRP21B,6000(200),LOCK 
***       CRP21B RING CONTROL/DATA REGISTER TEST -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP21B - RING CONTROL/DATA REGISTER TEST(M=2) - 2 
2  FORMAT CRP21B .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
7  FORMAT // MODULE ERROR LIMIT-CRP21B
17 FORMAT   TESTING RING CONTROL REGISTER (RCR) 
20 FORMAT   TESTING RING DATA REGISTER (RDR)
21 FORMAT CRP21B RUNNING-*A  *D   LC=*DEC, PATTERN=*H*HH
22 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH, ACT=*H*HH 
23 FORMAT    LOGICAL DIFFERENCE  *H*HH
25 FORMAT CRP21B INTERNAL ERROR CRP21B/CRP98G.MODE(B15)=*OCT
26 FORMAT CRP21B INTERNAL ERROR CRP21/CRP21B  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0807D)GOTO 36    *RETURN FROM 98G 
   IF(B0.EQ.0726D)GOTO 60    *RETURN FROM 97Z 
* 
   IF(P5.EQ.0)GOTO 31        *P5 OK FOR 21B 
   IF(P5.EQ.2)GOTO 31        *P5 OK FOR 21B 
   MSG 26(P5) TO DISPLAY,PRINT,DAYFILE
   GOTO 77
* 
31 IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 21D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUN MSG 
* 
   OB(51) = 612                  *READ FUNC FOR RCR 
   OB(52) = 613                  *READ FUNC FOR RDR 
   OB(61) = 652                  *WRITE FUNC FOR RCR
   OB(62) = 653                  *WRITE FUNC FOR RDR
* 
   B0 = 0212D                *SUBMODULE NUMBER
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
   B6 = 0                    *CLEAR ERROR FLAG
   B8 = 1                    *FUNC PAIR INDEX 
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
34 B15 = 2                   *MODE TO 98G 
   EXIT TO 98G               *GENERATE PATTERNS 
* 
36 IF(B15.GT.2)GOTO 76          *ERROR RETURN FROM 98C
* ----BUILD PATTERN ADDRESS 
40 B1 = PSTART + B9 + B9
   OB(0) = OB(B1).AND.377               *WD 1 PATTERN 
   OB(1) = OB(B1+1).AND.377             *WD 2 PATTERN 
* ------------------DATA TEST---------------------------
* 
42 IF(P4.NE.0)DELAY P4 USEC 
   B0 = 0212D                    *RESET MODULE EXIT-TO FLAG 
   B7 = 5555
   IF(ES.AND.SL.NE.0)B7 = 2314   *SET SL INDICATOR
   IF(B6.EQ.0)MSG 21(B7,B8,B10,OB(0),OB(1)) TO DISPLAY
   B12 = 1
   RES ,ABT 70
   B12 = 2
   FUNC OB(B8+60),ABT 70              *DIAG WRITE MODE 2
   WC = 2 
   BA = 0 
   B12 = 3
   OUT , ABT 70                       *SEND 2 WDS 
   B12 = 2
   FUNC OB(B8+50),ABT 70              *DIAG READ MODE 2 
   B12 = 4
   IN , ABT 70                        *READ 2 WDS TO IB(0)
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                             *RESET ERR MSG FLAG 
   GOTO 42 WHILE(B10+1.LE.50D)     *LOOP 50 TIMES 
   B10 = 0                            *RESET LOOP CNTR
* 
   IF(ES.AND.SL.NE.0)GOTO 42          *SCOPE LOOP 
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))    *BUMP PATTERN / LOOP
   B9 = 0                             *RESET PATTERN CNTR 
* 
46 GOTO 34 WHILE(B8+1.LE.2)           *LOOP FOR RCR/RDR 
* 
* -----------------CHECK REPEATS / ENDS---------------- 
* 
   IF(P5.EQ.0)GOTO 52                 *NEXT SUBMODULE 
   IF(ES.AND.RM.NE.0)GOTO 32          *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
52 EXIT TO 21C                        *NEXT SUBMODULE 
* 
* -------------------DATA COMPARE ERROR---------------
* 
54 B11 = B11 + 1              *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 56  *NOT SL 
   MSG 22(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO DISPLAY 
   B6 = 1                     *SET ERR MSG UP FLAG
   GOTO 42                    *SCOPE LOOP DATA ERROR
* 
56 MSG 0 TO LINE 1
   IF(B8.EQ.1)MSG 17 TO LINE 2
   IF(B8.EQ.2)MSG 20 TO LINE 2
   MSG 22(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO LINE 3
   OB(10) = OB(0).XOR.IB(0)      *FORM LOG DIFF 
   OB(11) = OB(1).XOR.IB(1)      *- 
   MSG 23(OB(10),OB(11)) TO LINE 4
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR MSGS
* 
60 MSG 0 TO DISPLAY              *RUNNING MSG 
   IF(B11.GT.ERRLIM)GOTO 50      *EXIT IF ERR LIMIT 
   GOTO 42                       *LOOP AFTER DATA ERR 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST ABORT / LOOP MSG
   B6 = 1                           *SET ERR MSG UP FLAG
   GOTO 42                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT PROCESSING
   EXIT TO 97Z                      *PROCESS ABORT MSGS 
* 
76 B15 = B15 - 10            *RESET TO MODE SEND TO 98G 
   MSG 25(B15) TO DISPLAY,PRINT,DAYFILE  *BAD MODE 98G
77 END 30 
COMPILE   *CRP21B - RCR/RDR REGISTER TEST MODE 2
   MODULE CRP21C,6000(200),LOCK 
***       CRP21C RING CONTROL/DATA REGISTER TEST -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP21C - RING CONTROL/DATA REGISTER TEST(32BIT)-3 
2  FORMAT CRP21C .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
7  FORMAT // MODULE ERROR LIMIT-CRP21C
22 FORMAT    LOGICAL DIFFERENCE *3H*3H*3HH
23 FORMAT CRP21C RUNNING-*A LC=*DEC, PATTERN=*3H*3H*3HH 
24 FORMAT DATA ERR. ERC=*DEC,LC=*DEC,E=*3H*3H*3H,A=*3H*3H*3H
25 FORMAT CRP21C INTERNAL ERROR CRP21/CRP98H. MODE(B15)=*OCT
26 FORMAT CRP21C INTERNAL ERROR CRP21C/CRP21 P5=*OCT
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0808D)GOTO 36    *RETURN FROM 98H 
   IF(B0.EQ.0726D)GOTO 60    *RETURN FROM 97Z 
* 
   B0 = 0213D                *SET SUBMODULE NUMBER
   IF(P5.EQ.0)GOTO 31        *P5 OK FOR 21C 
   IF(P5.EQ.3)GOTO 31        *P5 OK FOR 21C 
   MSG 26(P5) TO DISPLAY,PRINT,DAYFILE
   GOTO 77
* 
31 IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
32 MSG 0 TO DISPLAY          *RUN MSG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
   B6 = 0                    *CLEAR ERROR FLAG
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
34 B15 = 1                   *MODE TO 98H 
   EXIT TO 98H               *GENERATE PATTERN
36 IF(B15.GT.2)GOTO 76       *ERROR RETURN FROM 98H 
* 
* ----BUILD PATTERN ADDRESS 
40 B1 = PSTART + B9 
   B1 = B1 + B9 + B9            *BASE PATTERN ADDRESS 
   OB(0) = OB(B1)               *WD 1 PATTERN 
   OB(1) = OB(B1+1)             *WD 2 
   OB(2) = OB(B1+2).AND.7760    *WD 3 
* 
* ------------------DATA TEST---------------------------
* 
42 IF(P4.NE.0)DELAY P4 USEC 
   B0 = 0213D                   *RESET MODULE EXIT-TO FLAG
   B7 = 5555
   IF(ES.AND.SL.NE.0)B7 = 2314   *SET SL INDICATOR
   IF(B6.EQ.0)MSG 23(B7,B10,OB(0),OB(1),OB(2))TO DISPLAY
   B12 = 1
   RES ,ABT 70
   B12 = 2
   FUNC 573 ,ABT 70                  *DIAG WRITE MODE 1 
   BA = 0 
   WC = 3 
   B12 = 3
   OUT , ABT 70                      *SEND 3 WDS
   B12 = 2
   FUNC 532 ,ABT 70                  *DIAG READ MODE 1
   B12 = 4
   IN , ABT 70                        *READ 3 WDS TO IB(0)
   IB(2) = IB(2).AND.7760             *MASK INPUT DATA
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                             *RESET ERR MSG FLAG 
   GOTO 42 WHILE(B10+1.LE.30D)     *LOOP 30 TIMES 
* 
   IF(ES.AND.SL.NE.0)GOTO 42          *SCOPE LOOP 
   B10 = 0
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))    *BUMP PATTERN / LOOP
   B9 = 0                             *RESET PATTERN CNTR 
* 
* -----------------CHECK REPEATS / ENDS---------------- 
* 
   IF(P5.EQ.0)GOTO 50                 *RETURN TO PRIM MODULE
   IF(ES.AND.RM.NE.0)GOTO 32          *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* -------------------DATA COMPARE ERROR---------------
* 
54 B11 = B11 + 1                *ERROR CNTR 
   OB(10) = B11                 *PACK FOR DISPLAY 
   OB(11) = B10                 *-
   COPY OB(0) TO OB(12) FOR 3   *-
   COPY IB(0) TO OB(15) FOR 3   *-
   IF(ES.AND.SL.EQ.0)GOTO 56    *NOT SL 
   MSG 24, 8 WORDS FROM OB(10) TO DISPLAY 
   B6 = 1                       *SET ERR MSG UP FLAG
   GOTO 42                      *SCOPE LOOP DATA ERROR
* 
56 MSG 0 TO LINE 1
   MSG 24 ,8 WORDS FROM OB(10) TO LINE 2
   OB(10) = OB(0).XOR.IB(0)  *FORM LOG DIFF 
   OB(11) = OB(1).XOR.IB(1)  *- 
   OB(12) = OB(2).XOR.IB(2)  *- 
   MSG 22(OB(10),OB(11),OB(12))TO LINE 3
   B1 = 7700                 *FLAG ERROR PROCESSING 
   EXIT TO 97Z               *PROCESS ERROR MSGS
60 MSG 0 TO DISPLAY          *RUNNING MSG 
   IF(B11.GT.ERRLIM)GOTO 50  *EXIT IF ERR LIMIT 
   GOTO 42                   *LOOP AFTER DATA ERR 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST ABORT / LOOP MSG
   B6 = 1                           *SET ERR MSG UP FLAG
   GOTO 42                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
* 
76 B15 = B15 - 10            *RESET TO MODE SEND TO 98H 
   MSG 25(B15) TO DISPLAY,PRINT,DAYFILE  *BAD MODE 98H
77 END 30 
COMPILE   *CRP21C - RCR/RDR REGISTER TEST MODE 1
   MODULE CRP23,6000(200),LOCK
***       CRP23 - CONTROL FIFO/DATA FIFO MEMORY TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         TESTS THE ABILITY OF THE CONTROL AND DATA FIFOS TO
*         ACCEPT AND RETAIN DATA.  DATA IS WRITTEN USING THE
*         DIAGNOSTIC WRITE CAPABILITY OF THE CRP.  CYBER CRP
*         FUNCTIONS 06, 07, 26, 46, AND 47 ARE VERIFIED.
*         TEST PATTERNS OF ALL ONES - ALL ZEROS, ALTERNATING
*         ONES AND ZEROS, AND MARCHING ONES AND ZEROS ARE 
*         WRITTEN AND VERIFIED USING MODE 1 AND 2.
* 
*         MODULES TESTS CONTROL AND DATA FIFO IN 5 SUBMODULES;
*           23 - CONTROL
*           23A - TEST OUTPUT REGISTER
*           23B - TEST INPUT REGISTER 
*           23C - TEST CF/DF READ IN 28-BIT MODE
*           23D - TEST CF/DF READ IN 16-BIT MODE
*           23E - TEST STACK ADDRESSING 
* 
* 
*   1.2   METHOD
* 
*        STEPS 1-6 APPLY TO 23A,B,C,D,E SUBMODULES. 
* 
*        - CRP23 AND CRP23A - 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             (SL) IS SELECTED. 
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  IF PARAMETER WORDS P6, P7, AND P8 CONTAIN NON-ZERO
*             VALUES, THEN EXECUTE THE TEST USING THE PARAMETER WORD
*             DATA. 
*         8.  ELSE, EXECUTE THE ALL ONES - ALL ZEROS TEST ON THE
*             CF/DF OUTPUT REGISTERS USING CYBER CRP FUNCTIONS 46 
*             AND 06 IN DIAGNOSTIC MODE.
*         9.  REPEAT STEP 8 USING ALTERNATING ONES AND ZEROS. 
*         10. REPEAT STEP 8 USING MARCHING ONES AND ZEROS.
*         11. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             GO TO STEP 3.  IF NO ERRORS REPEAT 4-10 150D TIMES. 
*        - CRP23B - 
*         12. EXECUTE THE ALL ONES - ALL ZEROS TEST ON THE CF/DF
*             INPUT REGISTERS USING CYBER CRP FUNCTIONS 47 AND 07 
*             IN DIAGNOSTIC MODE. 
*         13. REPEAT STEP 12 USING ALTERNATING ONES AND ZEROS DATA. 
*         14. REPEAT STEP 12 USING MARCHING ONES AND ZEROS DATA.
*         15. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             REPEAT STEPS 3,4,5,12,13, AND 14.  IF NO ERRORS 
*             REPEAT STEPS 12-14 150D TIMES.
*        - CRP23C - 
*         16. EXECUTE THE ALL ONES - ALL ZEROS TEST ON THE CONTROL
*             AND DATA FIFOS USING CYBER CRP FUNCTIONS 47 AND 26. 
*         17. REPEAT STEP 16 USING ALTERNATING ONES AND ZEROS DATA. 
*         18. REPEAT STEP 16 USING MARCHING ONES AND ZEROS DATA.
*         19. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*              REPEAT STEPS 3,4,5,16,17, AND 18.  IF NO ERRORS
*              REPEAT STEPS 16-18 7 TIMES.
*        - CRP23D - 
*         20. EXECUTE THE ALL ONES - ALL ZEROS TEST ON THE CONTROL
*             AND DATA FIFOS USING CYBER CRP FUNCTIONS 47 AND 06. 
*         21. REPEAT STEP 20 USING ALTERNATING ONES AND ZEROS DATA. 
*         22. REPEAT STEP 20 USING MARCHING ONES AND ZEROS DATA.
*         23. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*              REPEAT STEPS 3,4,5,20,21, AND 22.  IF NO ERRORS
*              REPEAT STEPS 20-22 7 TIMES.
*        - CRP23E - 
*         24. EXECUTE ADDRESS PATTERN TEST ON THE CONTROL 
*             AND DATA FIFOS USING CYBER CRP FUNCTIONS 47 AND 06. 
*         25. IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             REPEAT STEPS 3,4,5,24,25.  IF NO ERRORS REPEAT
*             STEPS 24-25 50D TIMES.
*         26. IF SL IS SELECTED, REPEAT STEPS 3-26. 
*         24. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         24. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-24.
*         27. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         28. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP23 
*           . CRP23 ERROR(S) IN MODULE = *DEC 
*           . CRP23 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP23- RUNNING-*A  LC=*DEC, PATTERN=*3H*3H*3HH
*           . DATA ERR. ERC=*DEC, LC=*DEC, DIF=*3H*3HH
*           . CRP23C RUNNING-*A  LC=*DEC, PATTERN=*H*H*H*HH 
*           . DATA ERR ERC=*DEC,  ACTUAL=*H*H*H*H HEX 
*           . CRP23D RUNNING-*A  LC=*DEC, PATTERN=*H*H H
*           . DATA ERR ERC=*DEC, EXP=*H*H H ,ACT=*H*H H 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P5 CONDITION SELECTOR (SUBMODULE) 
*         P5 = 0 RUN ALL SUBMODULES OF 23 
*         P5 = 1 RUN CRP23A  ,  =2 RUN CRP23B  ,  =3 CRP23C 
*            = 4 CRP23D      ,  =5 CRP23E 
*         P6,P7,P8 USER SUPPLIED DATA PATTERNS
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-21 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               HAS BEEN ENTERED FROM.
*         B1  = WRITE/READ LOOP COUNTERS FOR 23C,23D,23E. 
*         B5  = ERROR COUNTER BETWEEN 23C,23D,23E AND CRP98V. 
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B8  = 3RD LOOP COUNTER (FUNCTIONS OR PATTERNS). 
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE.
* 
* 
*       - IB -
*       0,1,2 READ BUFFER 
*       100-500 ERROR BUFFER BETWEEN 23C,D,E AND 98V
* 
*       - OB -
*       0,1,2  WRITE BUFFER 
*       10,11,12 ECHO BUFFER
*       20-22  LOGICAL DIFFERENCE 23A, 23B
*       76     USER DATA PATTERN FLAG 
*       77     PATTERN COUNT
*       100-...  DATA PATTERNS FROM 98G AND 98H.
*       477,500  SUBMODULE FLAGS
*       503-504  DIAG REG FUNCTIONS 
* 
* 
* 
*   2.3   SUBMODULES USED 
*     - CRP23 -  23A,23B,23C,23D,23E
*     - CRP23A -
*        CRP23B - CONTINUATION OF MODULE 23 
*        CRP97Z - EXIT-TO ERROR/ABORT PROCESSOR 
*        CRP98H - PATTERN GENERATOR 
*        CRP98Y - DATA COMPARE ERROR PROCESSOR
*     - CRP23B -
*        CRP23C - CONTINUATION OF MODULE 23 
*        CRP97Z - EXIT-TO ERROR/ABORT PROCESSOR 
*        CRP98H - PATTERN GENERATOR 
*        CRP98Y - DATA COMPARE ERROR PROCESSOR
*     - CRP23C -
*        CRP23D - CONTINUATION OF MODULE 23 
*        CRP97Z - ERROR/ABORT PROCESSOR 
*        CRP98G - PATTERN GENERATOR 
*        CRP98V - DATA COMPARE ERROR PROCESSOR FOR 23C,D,E
*     - CRP23D -
*        CRP23E - CONTINUATION OF MODULE 23 
*        CRP97Z - ERROR/ABORT PROCESSOR 
*        CRP98G - PATTERN GENERATOR 
*        CRP98V - DATA COMPARE ERROR PROCESSOD FOR 23C,D,E
*     - CRP23E -
*        CRP97Z - ERROR/ABORT PROCESSOR 
*        CRP98V - DATA COMPARE ERROR PROCESSOR FOR 23C,D,E
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP23  - CF/DF REGISTER/MEMORY TEST 
10 FORMAT CRP23 ERROR(S)IN MODULE = *DEC
26 FORMAT CRP23 PARAMETER ERROR  P5.GT.5  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 23D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B0 = 0230D                *MODULE FLAG FOR EXITS 
   IF(P5.EQ.0)GOTO 36        *NO USER SET CONDITION 
   IF(P5.LE.5)GOTO 34        *CONDITION IN RANGE
33 MSG 26(P5) TO DAYFILE,PRINT,DISPLAY   *P5 ERROR MSG
   PAUSE
   BLANK
   GOTO 30                   *RESTART MODULE
* 
* ----------------CALL SUBMODULES-------------------- 
* 
34 IF(P5.EQ.1)GOTO 36        *COND. 1 START 23A-(46/06/26)
   IF(P5.EQ.2)GOTO 40        *COND. 2 START 23B-(47/07) 
   IF(P5.EQ.3)GOTO 42        *COND. 3 START 23C-(47/26) 
   IF(P5.EQ.4)GOTO 44        *COND. 4 START 23D-(47/06) 
   IF(P5 EQ 5)GOTO 46        *COND. 5 START 23E-(47/06) 
   GOTO 33                   *SHOULD NOT BE HERE. P5 ERROR
* 
36 OB(500) = 1               *FLAG SUBMODULE NUMBER IN OB 
   CALL 23A                  *START SUBMODULE 23A 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
40 OB(500) = 2               *FLAG SUBMODULE NUMBER IN OB 
   CALL 23B                  *START SUBMODULE 23B 
   GOTO 50                   *TEST RETURN,FROM SUBMODULE
* 
42 OB(500) = 3               *FLAG SUBMODULE NUMBER IN OB 
   CALL 23C                  *START SUBMODULE 23C 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
44 OB(500) = 4               *FLAG SUBMODULE NUMBER IN OB 
   CALL 23D                  *START SUBMODULE 23D 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
46 OB(500) = 5               *FLAG SUBMODULE NUMBER IN OB 
   CALL 23E                  *START SUBMODULE 23E 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
* ---------------ENDS / REPEATS---------------------- 
* 
50 PASS 
   IF(ES.AND.RM.NE.0)GOTO 32     *REPEAT MODULE 
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   IF(B11.GT.ERRLIM)GOTO 60    *EXIT MODULE ON ERR LIMIT
60 EXIT                        *END MODULE
* 
   END 30 
COMPILE   *CRP23 - CF/DF REGISTER TEST
   MODULE CRP23A,6000(200),LOCK 
***       CRP23A - TEST CONTROL/DATA FIFO - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP23A - CF/DF REGISTER/MEMORY (OUT REG) TEST - 1 
2  FORMAT CRP23A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP23A RUNNING-*A  LC=*DEC, PATTERN=*3H*3H*3HH
7  FORMAT // MODULE ERROR LIMIT-CRP23A
20 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, DIF=*3H*3HH
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, DIF=*3H*3H*3HH 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLRFIFO = 504,CLEAR = 503 
* 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0825D)GOTO 60    *RETURN FROM 98Y 
   IF(B0.EQ.0808D)GOTO 40    *RETURN FROM 98H 
   IF(B0.EQ.0726D)GOTO 75    *RETURN FROM 97Z 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE   *RUNNING MSG
* 
   B0 = 0231D                *MODULE FLAG FOR EXITS 
* 
32 MSG 0 TO DISPLAY          *RUNNING MESSAGE 
* ----DIAG REG FUNCTIONS
   OB(503) = 0000            *CLEAR 
   OB(504) = 1000            *CLRFIFO 
* 
   B6 = 0                    *CLEAR ERRO MSG FLAG 
   B8 = 0                    *CLEAR FUNCTION INDEX
   B9 = 0                    *CLEAR PATTERN CNTR
   B10 = 0                   *CLEAR LOOP CNTR 
   B11 = 0                   *CLEAR ERR CNTR
* 
   B15 = 1                   *MODE 1 (3 WD) TO 98H
   EXIT TO 98H               *GENERATE PATTERNS 
* 
* -----------------DATA TEST------------------------- 
* 
40 IF(P4.NE.0)DELAY P4 USEC    *DELAY IF P4 SET 
   B0 = 0231D                  *RESET MODULE EXITS FLAG 
   B15 = B9 + B9 + B9          *SET PATTERN ADDRESS 
   COPY OB(B15+PSTART) TO OB(0) FOR 3   *MOVE PATTERN 
* 
   B12 = 1
   RES ,ABT 70
   GOSUB 62                    *CLEAR CRP 
* 
   B7 = 5555                   *SET NOT SL
   IF(ES.AND.SL.NE.0)B7=2314   *SET SL FOR MSG
   IF(B6.NE.0)GOTO 44 
   MSG 3(B7,B10,OB(0),OB(1),OB(2))TO DISPLAY
44 BA = 0                      *STARTING ADDRESS FOR OUTPUT 
   WC = 3                      *OUTPUT 3 12-BIT WDS 
   B12 = 2
   FUNC 546, ABT 70            *DIAG MODE 1 WRT DF OUT REG
   B12= 3 
   OUT , ABT 70 
   COPY OB(0) TO OB(10) FOR 3          *ECHO DATA 
   IF(B8.EQ.1)GOTO 45                  *SKIP IF PASS 1
   OB(11) = OB(11).AND.7400            *-MSK ECHO DATA
   B12 = 2
   FUNC 506 , ABT 70                   *-16-BIT RD
   WC = 2                              *-2  WDS 
45 IF(B8.EQ.0)GOTO 46                  *SKIP IF PASS 0
   OB(12) = OB(12).AND.7760            *-MSK ECHO DATA
   B12 = 2
   FUNC 526 , ABT 70                   *-32-BIT RD
   WC = 3                              *-3 WDS
   BA = 0 
46 B12 = 4
   IN , ABT 70
   IF(B8.EQ.1)IB(2)=IB(2).AND.7760     *MASK DATA(32BIT)
   IF(B8.EQ.0)IB(1)=IB(1).AND.7400     *MASK DATA(16BIT)
   COMPARE OB(10) TO IB(0) FOR WC,ABT 54
   B6 = 0                              *RESET ERR FLAG
   GOTO 40 WHILE(B10+1.LE.15D)     *LOOP 15 TIMES 
   B10 = 0                             *CLEAR LOOP CNTR 
* 
* 
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))  *LOOP ALL PATTERNS
   B9 = 0                       *RESET PATTERN INDEX
   IF(ES.AND.SL.NE.0)GOTO 40    *SL 
   GOTO 40 WHILE(B8+1.LE.1)     *LOOP FOR BOTH FUNC.
* 
* ----------------ENDS/REPEATS------------------------
* 
   IF(P5.EQ.0)GOTO 52        *EXIT TO NEXT SUBMODULE
* 
   IF(ES.AND.RM.NE.0)GOTO 32
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                      *EXIT TO PRIM MOD ON ERR LIM 
* 
* 
52 EXIT TO 23B               *EXIT TO NEXT SUBMODULE
* 
* -----------------DATA COMPARE ERROR-----------------
* 
54 B11 = B11 + 1               *CNT ERROR 
   OB(20) = OB(10).XOR.IB(0)   *FORM LOGICAL DIFF.
   OB(21) = OB(11).XOR.IB(1)   *- 
   OB(22) = OB(12).XOR.IB(2)   *- 
   IF(ES.AND.SL.EQ.0)GOTO 56   *NOT SL
   B6 = 1                      *SET ERR MSG UP FLAG 
   IF(B8.EQ.1)MSG 20(B11,B10,OB(20),OB(21))TO DISPLAY 
   IF(B8.EQ.1)GOTO 40          *RETURN TO LOOP
   MSG 21(B11,B10,OB(20),OB(21),OB(22))TO DISPLAY 
   GOTO 40                     *RETURN TO LOOP
* 
56 EXIT TO 98Y                 *PROCESS COMPARE ERR. 98Y
60 IF(B11.GT.ERRLIM)GOTO 50 
   GOTO 40                     *RETURN TO LOOP
* 
* ----------------SUBROUTINES-------------------------
* 
62 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRFIFO) , ABT 70
   OUT 1 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *CLEAR ANY SUBROUTINES
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *POST ABORT/LC MSG
   B6 = 1                           *SET ERR MSG UP FLAG
   GOTO 40                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 40                   *RETURN TO TEST LOOP 
* 
77 END 30 
COMPILE   *CRP23A - CF/DF OUTPUT REG TEST 
   MODULE CRP23B,6000(200),LOCK 
***       CRP23B - TEST CONTROL/DATA FIFO - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP23B - CF/DF REGISTER/MEMORY (IN REG)  TEST - 2 
2  FORMAT CRP23B .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP23B RUNNING-*A  LC=*DEC, PATTERN=*3H*3H*3HH
7  FORMAT // MODULE ERROR LIMIT-CRP23B
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, DIF=*3H*3H*3HH 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLRFIFO = 504 , CLEAR = 503 
* 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0825D)GOTO 60    *RETURN FROM 98Y 
   IF(B0.EQ.0808D)GOTO 40    *RETURN FROM 98H 
   IF(B0.EQ.0726D)GOTO 75    *RETURN FROM 97Z 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
   B0 = 0232D                *MODULE FLAG FOR EXITS 
* 
32 MSG 0 TO DISPLAY          *RUNNING MESSAGE 
* ----DIAG REG FUNCTIONS
   OB(503) = 0000            *CLEAR 
   OB(504) = 1000            *CLRFIFO 
* 
   B6 = 0                    *CLEAR ERROR MSG FLAG
   B9 = 0                    *CLEAR PATTERN CNTR
   B10 = 0                   *CLEAR LOOP CNTR 
   B11 = 0                   *CLEAR ERR CNTR
* 
   B15 = 1                   *MODE 1 (3 WD) TO 98H
   EXIT TO 98H               *GENERATE PATTERNS 
* 
* -----------------DATA TEST------------------------- 
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF P4 SET 
   B0 = 0232D                    *RESET MODULE EXITS FLAG 
   B15 = B9 + B9 + B9            *SET ADDRESS 
   COPY OB(B15+PSTART) TO OB(0) FOR 3   *MOVE PATTERN 
* 
   B12= 1 
   RES ,ABT 70
   GOSUB 62                  *CLEAR FIFO
* 
   B7 = 5555                   *SET NOT SL
   IF(ES.AND.SL.NE.0)B7=2314   *SET SL FOR MSG
   IF(B6.NE.0)GOTO 44 
   MSG 3(B7,B10,OB(0),OB(1),OB(2))TO DISPLAY
44 BA = 0                    *STARTING ADDRESS FOR OUTPUT 
   WC = 3                    *OUTPUT 3 12-BIT WDS 
   BA = 0 
   B12 = 2
   FUNC 547 , ABT 70
   B12 = 3
   OUT , ABT 70 
   COPY OB(0) TO OB(10) FOR 3   *ECHO DATA
   OB(12) = OB(12).AND.7760B     *MASK FOR COMPARE
   WC = 3                       *NUMBER OF WDS TO INPUT 
   B12 = 2
   FUNC 507 , ABT 70
   B12 = 4
   IN , ABT 70
   IB(2) =IB(2).AND.7760         *MASK DATA 
   COMPARE OB(10) TO IB(0) FOR WC,ABT 54
   B6 = 0                        *RESET ERR MSG FLAG
   GOTO 40 WHILE(B10+1.LE.20D)     *LOOP 20 TIMES 
   B10 = 0                       *RESET LOOP CNTR 
* 
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))  *LOOP ALL PATTERNS
   B9 = 0                           *RESET PATTERN CNTR 
   IF(ES.AND.SL.NE.0)GOTO 40        *SL(RPT ALL PATTERNS) 
* 
* -------------------ENDS/REPEATS---------------------- 
* 
   IF(P5.EQ.0)GOTO 52        *EXIT TO NEXT SUBMODULE
* 
   IF(ES.AND.RM.NE.0)GOTO 32
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                      *EXIT TO PRIM MOD ON ERR LIM 
* 
52 EXIT TO 23C               *EXIT TO NEXT SUBMODULE
* 
* -----------------DATA COMPARE ERROR-----------------
* 
54 B11 = B11 + 1               *CNT ERROR 
   OB(20) = OB(10).XOR.IB(0)   *FORM LOGICAL DIFF.
   OB(21) = OB(11).XOR.IB(1)   *- 
   OB(22) = OB(12).XOR.IB(2)   *- 
   IF(ES.AND.SL.EQ.0)GOTO 56   *NOT SL
   MSG 21(B11,B10,OB(20),OB(21),OB(22))TO DISPLAY 
   B6 = 1                      *SET ERR MSG UP FLAG 
   GOTO 40                     *RETURN TO LOOP
* 
56 EXIT TO 98Y                 *PROCESS COMPARE ERR. 98Y
60 IF(B11.GT.ERRLIM)GOTO 50 
   GOTO 40                     *RETURN TO LOOP
* 
* ----------------SUBROUTINES-------------------------
* 
62 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRFIFO) , ABT 70
   OUT 1 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                        *ERROR CNTR 
   ENDSUB                               *CLEAR ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74            *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY       *POST ABORT/LC MSG
   B6 = 1                               *SET ERR MSG UP FLAG
   GOTO 40                              *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 40                   *RETURN TO TEST LOOP 
* 
77 END 30 
COMPILE   *CRP23B - CF/DF INPUT REG TEST
   MODULE CRP23C,6000(200),LOCK 
***       CRP23C - TEST CONTROL/DATA FIFO - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP23C - CF/DF REGISTER/MEMORY (47/26)   TEST - 3 
2  FORMAT CRP23C .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP23C RUNNING-*A  LC=*DEC, PATTERN=*H*H*H*HH 
7  FORMAT // MODULE ERROR LIMIT-CRP23C
21 FORMAT DATA ERR ERC=*DEC,  ACTUAL=*H*H*H*H HEX 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLRFIFO = 504 , CLEAR = 503 
* 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0822D)GOTO 60    *RETURN FROM 98V 
   IF(B0.EQ.0807D)GOTO 34    *RETURN FROM 98G 
   IF(B0.EQ.0726D)GOTO 75    *RETURN FROM 97Z 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
   B0 = 0233D                *MODULE FLAG FOR EXITS 
* 
32 MSG 0 TO DISPLAY          *RUNNING MESSAGE 
* 
   B15 = 2                   *MODE TO PATTERN GENERATOR 
   EXIT TO 98G               *GENERATE PATTERN
* ----DIAG REG FUNCTIONS
34 OB(503) = 0000            *CLEAR 
   OB(504) = 1000            *CLRFIFO 
* 
   B6 = 0                    *CLEAR ERROR MSG FLAG
   B9 = 0                    *CLEAR PATTERN CNTR
   B10 = 0                   *CLEAR LOOP CNTR 
   B11 = 0                   *CLEAR ERROR CNTR
* 
* -------------------DATA TEST--------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC    *DELAY IF SELECTED 
   B0 = 0233D                  *RESET MODULE EXIT-TO FLAG 
* 
   B15 = B9 + B9 + PSTART      *SET ADDRESS 
   OB(0) = OB(B15)             *DATA
   OB(1) = OB(B15+1)           *DATA
   OB(2) = OB(0).AND.17        *CONTROL 
   OB(3) = OB(1)               *CONTROL 
* 
   B12 = 1
   RES ,ABT 70
   GOSUB 62                    *CLRFIFO 
* 
   B7 = 5555                   *SET NOT SL FOR MSG
   IF(ES.AND.SL.NE.0)B7=2314   *SET SL FOR MSG
   IF(B6.NE.0)GOTO 42          *SKIP IF ERROR MSG IS UP 
   MSG 3(B7,B10,OB(0),OB(1),OB(2),OB(3))TO DISPLAY
* 
42 B1 = 0                        *CLEAR WD OUTPUT CNTR
   B12 = 2
   FUNC 647, ABT 70              *MODE 2 DIAG WRITE 
44 BA = 0 
   WC = 4 
   OUT , ABT 70 
   GOTO 44 WHILE(B1+1.LE.1770)   *FILL FIFO 
* 
   B12 = 1
   RES , ABT 70                  *RERESERVE CRP 
   B12 = 2
   FUNC 00 , ABT 70              *DUMMY FUNC TO FINISH FIFO 
* 
   B5 = 0                        *LOOP CNTR 
   B8 = 100                      *ERROR BUFFER ADDRESS
   B12 = 2
   FUNC 226 , ABT 70             *RD MODE 2 28-BITS 
   B1 = 0                        *CLEAR ADDRESS/WD CNTR 
45 BA = 0 
   WC = 4 
   IN CHAIN , ABT 70
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
46 B6 = 0                         *RESET ERR MSG FLAG 
   GOTO 45 WHILE(B1+1.LE.1770)    *LOOP FOR ALL DATA
   B12 = 14 
   DCN , ABT 47                  *INSURE CHANNEL IS DEACTIVATED 
* 
47 GOTO 40 WHILE(B10+1.LE.0D)      *LOOP 1 TIME 
   B10 = 0
   IF(B5.NE.0)GOTO 57            *PRINT ANY ERRORS
* 
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))   *LOOP ALL PATTERNS 
   B9 = 0 
   IF(ES.AND.SL.NE.0)GOTO 40    *SL..RPT ALL PATTERNS 
* 
* -------------------ENDS/REPEATS---------------------- 
* 
   IF(P5.EQ.0)GOTO 52         *EXIT TO NEXT SUBMODULE 
* 
   IF(ES.AND.RM.NE.0)GOTO 32
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                       *EXIT TO PRIM MOD ON ERR LIM
* 
52 EXIT TO 23D                *EXIT TO NEXT SUBMODULE 
* 
* -----------------DATA COMPARE ERROR-----------------
* 
54 B11 = B11 + 1                   *CNT ERROR 
   B12 = 14 
55 IF(ES.AND.SL.EQ.0)GOTO 56       *NOT SL..PROCESS ERROR 
   MSG 21(B11,IB(0),IB(1),IB(2),IB(3)) TO DISPLAY 
   B6 = 1                          *FLAG ERR MSG UP 
   GOTO 40                         *LOOP
* 
* 
56 IB(B8) = B1                     *ADDRESS 
   COPY OB(0) TO IB(B8+1) FOR 4    *MOVE OB 
   COPY IB(0) TO IB(B8+5) FOR 4    *MOVE IB 
   B5 = B5 + 1                     *BUMP ERROR CNTR 
   B8 = B8 + 15                    *UPDATE BUFFER ADDRESS 
   IF(B8.LE.465)GOTO 46 
* 
   B12 = 14 
   DCN , ABT 57 
* 
57 B0 = 0233D 
   EXIT TO 98V                     *PROCESS ERRORS
60 IF(B11.GT.ERRLIM)GOTO 50 
   GOTO 40                         *RETURN TO LOOP
* 
* ----------------SUBROUTINES-------------------------
* 
62 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRFIFO) , ABT 70
   OUT 1 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                      *ERROR CNTR 
   B12 = 14 
   DCN , ABT 71                       *INSURE CHAN DEACTIVE 
71 ENDSUB                             *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74          *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY     *POST ABORT/LC MSG
   B6 = 1                             *SET ERR MSG UP FLAG
   GOTO 40                            *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B0 = 0233D 
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 40                   *RETURN TO TEST LOOP 
* 
77 END 30 
COMPILE   *CRP23C - CF/DF REGISTER TEST 
   MODULE CRP23D,6000(200),LOCK 
***       CRP23D - TEST CONTROL/DATA FIFO - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP23D - CF/DF REGISTER/MEMORY (47/06)   TEST - 4 
2  FORMAT CRP23D .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP23D RUNNING-*A  LC=*DEC, PATTERN=*H*H H
7  FORMAT // MODULE ERROR LIMIT-CRP23D
21 FORMAT DATA ERR ERC=*DEC, EXP=*H*H H ,ACT=*H*H H 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLRFIFO = 504 , CLEAR = 503 
* 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0822D)GOTO 61    *RETURN FROM 98V 
   IF(B0.EQ.0807D)GOTO 40    *RETURN FROM 98G 
   IF(B0.EQ.0726D)GOTO 75    *RETURN FROM 97Z 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
   B0 = 0234D                *MODULE FLAG FOR EXITS 
* 
* 
32 MSG 0 TO DISPLAY          *RUNNING MESSAGE 
* ----DIAG REG FUNCTIONS
   OB(503) = 0000            *CLEAR 
   OB(504) = 1000            *CLRFIFO 
* 
* 
   B4 = 0                    *SET DISPLAY LINE CNTR 
   B6 = 0                    *CLEAR ERROR MSG FLAG
   B9 = 0                    *CLEAR PATTERN CNTR
   B10 = 0                   *CLEAR LOOP CNTR 
   B11 = 0                   *CLEAR ERROR CNTR
* 
   B15 = 2                   *MODE TO PATTERN GENERATOR 
   EXIT TO 98G               *GENERATE 2WD PATTERNS(EXIT-TO)
* 
* -------------------DATA TEST--------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC            *DELAY IF SELECTED 
   B0 = 0234D                          *RESET MODULE EXIT-TO FLAG 
   B15 = B9 + B9 + PSTART              *SET ADDRESS 
   OB(0) = OB(B15)                     *DATA
   OB(1) = OB(B15+1)                   *- 
   OB(2) = OB(0).AND.17                *CONTROL 
   OB(3) = OB(1)                       *- 
* 
   B12 = 1
   RES ,ABT 70
   GOSUB 62                     *CLEAR FIFO 
* 
   B7 = 5555                    *SET NOT SL FOR MSG 
   IF(ES.AND.SL.NE.0)B7=2314    *SET SL FOR MSG 
   IF(B6.EQ.0)MSG 3(B7,B10,OB(0),OB(1))TO DISPLAY 
   B1 = 0                       *CLEAR OUTPUT CNTR
   B12 = 2
   FUNC 647 , ABT 70            *MODE 2 DIAG WRITE
42 BA = 0                       *OUT/IN ARE FROM ADDRESS 0
   WC = 4 
   B12 = 3
   OUT , ABT 70 
   GOTO 42 WHILE(B1+1.LE.1770)  *LOOP FOR FULL FIFO 
* 
   B12 = 1
   RES , ABT 70 
* 
   B1 = 0                       *CLEAR INPUT CNTR 
   B5 = 0                       *ERROR CNTR 
   B8 = 100                     *ERROR BUFFER ADDRESS 
   B12 = 2
   FUNC 206 , ABT 70            *MODE 2 READ CF OUT 
44 WC = 2 
   BA = 0 
   B12 = 4
   IN CHAIN , ABT 70
   COMPARE OB(0) TO IB(0) FOR WC,ABT 52 
46 B6 = 0                        *RESET ERR MSG FLAG
   GOTO 44 WHILE(B1+1.LE.1770)   *READ FULL FIFO
* 
   B12 = 14 
   DCN , ABT 47                  *INSURE CHANNEL INACTIVE 
* 
47 GOTO 40 WHILE(B10+1.LE.0D)      *LOOP 1 TIME 
   B10 = 0                       *RESET PASS CNTR 
   IF(B5.NE.0)GOTO 57            *PRINT ANY ERRORS
* 
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))  *LOOP ALL PATTERNS
   B9 = 0 
   IF(ES.AND.SL.NE.0)GOTO 40     *SL ...ALL PATTERNS
* 
* -------------------ENDS/REPEATS---------------------- 
* 
   IF(P5.EQ.0)GOTO 51        *EXIT TO PRIM MODULE 
* 
   IF(ES.AND.RM.NE.0)GOTO 32
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                      *EXIT TO PRIM MOD ON ERR LIM 
* 
51 EXIT TO 23E               *EXIT TO NEXT SUBMODULE
* 
* -----------------DATA COMPARE ERROR-----------------
* 
52 B11 = B11 + 1                *CNT ERROR
   B12 = 14 
53 IF(ES.AND.SL.EQ.0)GOTO 56    *NOT SL..PROCESS ERROR
55 MSG 21(B11,OB(0),OB(1),IB(0),IB(1))TO DISPLAY
   B6 = 1                       *SET ERR MSG UP FLAG
   GOTO 40                      *LOOP 
* 
56 IB(B8) = B1                   *ADDRESS IF ERROR
   IB(B8+1) = OB(0)              *EXPECTED DATA 
   IB(B8+2) = OB(1)              *- 
   IB(B8+3) = IB(0)              *ACTUAL DATA 
   IB(B8+4) = IB(1)              *- 
   IB(B8+5) = OB(0).XOR.IB(0)    *LOG DIF 
   IB(B8+6) = OB(1).XOR.IB(1)    *- 
   B5 = B5 + 1                   *CNT ERROR 
   B8 = B8 + 7                   *UPDATE BUFFER ADDRESS 
   IF(B8.LE.470)GOTO 46          *ERROR BUFFER FULL 
* 
* 
57 B0 = 0234D                    *EXIT-TO FLAG
   B12 = 14 
   DCN , ABT 60 
60 EXIT TO 98V                   *PRINT ERRORS
61 IF(B11.GT.ERRLIM)GOTO 50 
   GOTO 40                       *RETURN TO LOOP
* 
* ----------------SUBROUTINES-------------------------
* 
62 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRFIFO) , ABT 70
   OUT 1 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *END ANY SUBS
   B12 = 14 
   DCN , ABT 72                      *INSURE CHAN IS DEACTIVE 
72 IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   B6 = 1                            *SET ERR MSG UP FLAG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B0 = 0234D 
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 40                   *RETURN TO TEST LOOP 
* 
77 END 30 
COMPILE   *CRP23D - TEST FIFO DATA-FNC47/06 
   MODULE CRP23E,6000(200),LOCK 
***       CRP23E - TEST CONTROL/DATA FIFO - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP23E - CF/DF REGISTER/MEMORY ADDRESSING TEST-5
2  FORMAT CRP23E .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT CRP23E RUNNING-*A  LC=*DEC
7  FORMAT // MODULE ERROR LIMIT-CRP23E
21 FORMAT DATA ERR ERC=*DEC, EXP=*H*H H  ACT=*H*H H 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLRFIFO = 504 , CLEAR = 503 
* 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 75    *RETURN FROM 97Z 
   IF(B0.EQ.0822D)GOTO 61    *RETURN FROM 98V 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
   B0 = 0235D                *MODULE FLAG FOR EXITS 
* 
32 MSG 0 TO DISPLAY          *RUNNING MESSAGE 
* ----DIAG REG FUNCTIONS
   OB(503) = 0000            *CLEAR 
   OB(504) = 1000            *CLRFIFO 
* 
* 
   B4 = 0                    *SET DISPLAY LINE CNTR 
   B6 = 0                    *CLEAR ERROR MSG FLAG
   B8 = 0                    *ERROR LINE CNTR 
   B10 = 0                   *CLEAR LOOP CNTR 
   B11 = 0                   *CLEAR ERROR CNTR
* 
* -------------------DATA TEST--------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC     *DELAY IF SELECTED
   B0 = 0235D                   *RESET MODULE EXIT-TO FLAG
   B9 = 0                       *PRESET ADDRESS CNTR
* 
   B12 = 1
   RES ,ABT 70
   GOSUB 62                     *GO CLEAR FIFO
* 
   B7 = 5555
   IF(ES.AND.SL.NE.0)B7=2314    *SET SL FOR MSG 
   IF(B6.EQ.0)MSG 3(B7,B10)TO DISPLAY 
   B12 = 2
   FUNC 647, ABT 70 
   OB(2) = 125                   *CONTROL PATTERN 
   OB(3) = OB(2)                 *- 
42 BA = 0                        *OUT/IN ARE FROM ADDRESS 0 
   OB(0) = B9.AND.377            *WD 0-ADDRESS
   OB(1) = OB(0)
   WC = 4                        *SET WORD CNT
   B12 = 4
   OUT , ABT 70 
   GOTO 42 WHILE(B9+1.LE.1770)   *LOOP FOR FULL FIFO
* 
   B12 = 1
   RES , ABT 70 
* 
   B9 = 0                       *RESET ADDRESS
   B5 = 0                       *ERROR CNTR 
   B8 = 100                     *ERROR BUFFER ADDRESS 
   B12 = 2
   FUNC 206 , ABT 70            *MODE 2 READ
44 WC = 2 
   BA = 0 
   OB(0) = B9.AND.377 
   OB(1) = OB(0)
   B12 = 4
   IN CHAIN , ABT 70
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                       *RESET ERR MSG FLAG 
   GOTO 44 WHILE(B9+1.LE.1770)  *READ FULL FIFO 
   B12 = 14 
   DCN , ABT 46 
* 
   IF(B5.NE.0)GOTO 57           *PRINT ANY ERRORS 
* 
46 GOTO 40 WHILE(B10+1.LE.10D)     *LOOP 10 TIMES 
   B10 = 0
   IF(ES.AND.SL.NE.0)GOTO 40    *SL..RPT
* 
* -------------------ENDS/REPEATS---------------------- 
* 
* 
   IF(ES.AND.RM.NE.0)GOTO 32
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                         *EXIT TO PRIM MOD ON ERR LIM
* 
* -----------------DATA COMPARE ERROR-----------------
* 
54 B11 = B11 + 1                *CNT ERROR
   B12 = 14 
55 IF(ES.AND.SL.EQ.0)GOTO 56    *NOT SL..PROCESS ERROR
   MSG 21(B11,OB(0),OB(1),IB(0),IB(1))TO DISPLAY
   B6 = 1                       *SET ERR MSG UP FLAG
   GOTO 40                      *LOOP 
* 
56 IB(B8) = B1                  *ADDRESS IF ERROR 
   IB(B8+1) = OB(0)             *EXPECTED DATA
   IB(B8+2) = OB(1)             *-
   IB(B8+3) = IB(0)             *ACTUAL DATA
   IB(B8+4) = IB(1)             *-
   IB(B8+5) = OB(0).XOR.IB(0)   *LOG DIF
   IB(B8+6) = OB(1).XOR.IB(1)   *-
   B5 = B5 + 1                  *CNT ERROR
   B8 = B8 + 7                  *UPDATE ERROR BUFFER ADDRESS
   IF(B8.LE.470)GOTO 46         *ERROR BUFFER FULL
* 
57 B0 = 0235D                   *SET EXIT-TO FLAG 
   B12 = 14 
   DCN , ABT 60 
60 EXIT TO 98V                  *PROCESS ERRORS 
* 
61 IF(B11.GT.ERRLIM)GOTO 50 
   GOTO 40                      *RETURN TO LOOP 
* 
* ----------------SUBROUTINES-------------------------- 
* 
62 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRFIFO) ,ABT 70 
   OUT 1 WORDS FROM OB(CLEAR) ,ABT 70 
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *END ANY SUBS 
   B12 = 14 
   DCN , ABT 72 
72 IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *POST ABORT/LC MSG
   B6 = 1                           *SET ERR MSG UP FLAG
   GOTO 40                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT PROCESSING
   EXIT TO 97Z                      *PROCESS ABORT MSGS 
75 MSG 0 TO DISPLAY                 *REPORT RUN MSG 
   IF(B11.GT.ERRLIM)GOTO 50         *ERROR LIMIT
   GOTO 40                          *RETURN TO TEST LOOP
* 
77 END 30 
COMPILE   *CRP23E - TEST FIFO ADDRESSING
   MODULE CRP25,6000(200),LOCK
***       CRP25 - REQUEST STACK MEMORY TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         TESTS THE ABILITY OF THE REQUEST STACK TO ACCEPT AND
*         RETAIN DATA.  TEST PATTERNS OF ONES, ZEROS, ALTERNATING 
*         ONES AND ZEROS, AND MARCHING ONES AND ZEROS ARE WRITTEN 
*         AND VERIFIED.  DATA TRANSLATION MODE 2 IS USED AND DATA 
*         IS WRITTEN USING THE DIAGNOSTIC WRITE CAPABILITY. 
*         CYBER CRP FUNCTIONS 05 AND 45 ARE VERIFIED. 
*         MODULE TESTS RQUEST STACK LOGIC IN 4 SUBMODULES,
*         CRP25 CONTROLS  ,  CRP25A , 25B , 25C , 25D.
* 
*         MODULES TESTS THE REQUEST STACK IN 4 SUBMODULES 
*            25 - CONTROL 
*            25A - TEST RQSTK IN/OUT REGISTER 
*            25B - TEST RQSTK STACK PATTERN DATA
*            25C - TEST RQSTK RANDOM PATTERNS DATA
*            25D - TEST RQSTK ADDRESS 
* 
*   1.2   METHOD
* 
*             STEPS 1 - 5 APPLY TO ALL SUBMODULES.
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             IS SELECTED.
* 
*          - CRP25A - 
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*             PERFORM THE FOLLOWING PATTERNS ON THE REQUEST STACK 
*             INPUT AND OUTPUT 32-BIT REGISTER LOOP.
*         6.  IF PARAMETER WORDS P6 AND P7 CONTAIN A NON-ZERO VALUE,
*             THEN EXECUTE THE TEST USING THE PARAMETER WORD DATA.
*         7.  ELSE, EXECUTE THE ALL ONES - ALL ZEROS TEST.
*         8.  EXECUTE THE ALTERNATING ONES AND ZEROS TEST.
*         9.  EXECUTE THE MARCHING ONES AND ZEROS TEST. 
*         10. REPEAT STEPS 1-9 150D TIMES.
*         12. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-11.
* 
*        -  CRP25B -
*            STEPS 1 - 5 APPLY TO CRP25B. 
*         13. RESERVE THE CHANNEL TO THE CRP. 
*             PROFROM THE FOLLOWING PATTERNS ON THE REQUEST STACK 
*             INPUT AND OUTPUT 32-BIT REGISTER LOOP.
*         14. IF PARAMETER WORDS P6 AND P7 CONTAIN A NON-ZERO VALUE,
*             THEN EXECUTE THE TEST USING THE PARAMETER WORD DATA.
*         15. ELSE, EXECUTE THE ALL ONES - ALL ZEROS TEST.
*         16. EXECUTE THE ALTERNATING ONES AND ZEROS TEST.
*         17. EXECUTE THE MARCHING ONES AND ZEROS TEST. 
*         18. REPEAT STEPS 1-9 150D TIMES.
*         19. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 13-18. 
* 
*        - CRP25C - 
*           STEPS 1 - 5 APPLY TO CRP25C ALSO
* 
*         - CRP25C -
*             STEPS 1-5 APPLY TO CRP25C.
*         20. RESERVE THE CHANNEL TO THE CRP. 
*         21. PERFROM THE RANDOM DATA ON THE REQUEST STACK
*             WITH RANDOM STARTER 1234 OR (P6). 
*         22. REPEAT 1-5 AND 20 AND 21  150D TIMES. 
* 
*        - CRP25D - 
*         STEPS 1 - 5 APPLY TO CRP25D ALSO. 
*         23. RESERVE THE CHANNEL TO THE CRP. 
*         24. TEST THE RQSTK WITH A STACK ADDRESS PATTERN.
*         25. REPEAT STEPS 23 AND 24 150D TIMES.
*         26. RESERVE THE CHANNEL TO THE CRP. 
*         27. TEST THE RQSTK WITH A COMPLIMENT STACK ADDRESS PATTERN. 
*         28. REPEAT STEPS 26 AND 28 150D TIMES.
*         29. EXIT THE MODULE.
* 
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP25 
*           . CRP25 ERROR(S) IN MODULE = *DEC 
*           . CRP25 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP25A RUNNING-*A   LC=*DEC, PATTERN=*H*H*H*HH
*           . DATA ERR. ERC=*DEC, LC=*DEC, DIF=*H*H*H*HH
*           . CRP25B RUNNING-*A   LC=*DEC, PATTERN=*H*HH
*           . DATA ERR. ERC=*DEC, LC=*DEC, RQSTK.DIF=*H*HH
*           . DATA ERROR IN REQUEST STACK..RANDOM DATA
*           .  ADDRESS   EXPECTED   ACTUAL    DIFF. (HEX VALUES)
*           .   *H         *H*H      *H*H     *H*H
*           . CRP25C  ERC = *DEC , LC = *DEC
*           . DATA ERR. ERC=*DEC, LC=*DEC, ADD=*HH, DIF=*H*HH 
*           . ADDRESSING/DATA ERROR IN REQUEST STACK
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P5 USER SELECTED CONDITION
*            P5 = 0 RUN ALL CRP25 SUBMODULES
*            P5 = 1 RUN CRP25A  ,  = 2 RUN CRP25B 
*               = 3 RUN CRP25C  ,  = 4 RUN CRP25D 
*         P6,P7 USER SUPPLIED DATA PATTERNS 
*         P6 = RANDOM STARTER IN SUBMODULE CRP25C.
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-23 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE          . NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE.
* 
* 
*          - IB - 
*          0,1,2,3  READ BUFFER 
* 
*          - OB - 
*        0,1,2,3   WRITE BUFFER 
*        40-77     LOGICAL DIFFERENCE DISPLAY BUFFER
*        50-64     DISPLAY BUFFER 
*        76        USER DATA FLAG 
*        77        AVAILABLE PATTERN COUNT
*        100-...   DATA PATTERNS
*        477,500   SUBMODULE CHARACTER FLAGS
*        501,502   RQSTK LOG.DIFF.
*        503,504   DIAG REGISTER FUNCTION CODES 
* 
* 
*   2.3   SUBMODULES USED 
*       - CRP25 - CALLS CRP25A, CRP25B, CRP25C, CRP25D
* 
*       - CRP25A -
*          CRP25B - CONTINUATION OF MODULE 25 
*          CRP97Z - ERROR/ABORT PROCESSOR 
*          CRP98G - DATA PATTERN GENERATOR
*          CRP98X - DATA COMPARE ERROR PROCESSOR
*       - CRP25B -
*          CRP25C - CONTINUEATION OF MODULE 25
*          CRP97Z - ERROR/ABORT PROCESSOR 
*          CRP98G - DATA PATTERN GENERATOR
*          CRP98X - DATA COMPARE ERROR PROCESSOR
*       - CRP25C -
*          CRP25D - CONTINUATION OF MODULE 25 
*          CRP97Z - ERROR/ABORT PROCESSOR 
*       - CRP25D -
*          CRP97Z - ERROR/ABORT PROCESSOR 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP25  -  REQUEST STACK TEST (RQSTK)
10 FORMAT CRP25 ERROR(S)IN MODULE = *DEC
26 FORMAT CRP25 PARAMETER ERROR  P5.GT.4  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 25D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B0 = 0250D                *MODULE FLAG FOR EXITS 
   OB(477) = 0               *CLEAR 98X CHAR FLAG 
   IF(P5.EQ.0)GOTO 40        *NO USER SET CONDITION 
   IF(P5.LE.4)GOTO 36        *CONDITION IN RANGE
34 MSG 26(P5) TO DAYFILE,PRINT,DISPLAY   *P5 ERROR MSG
   PAUSE
   BLANK
   GOTO 30                   *RESTART MODULE
* 
* ----------------CALL SUBMODULES-------------------- 
* 
36 IF(P5.EQ.1)GOTO 40        *COND-1 --25A(IN/OUT REG)
   IF(P5.EQ.2)GOTO 42        *COND-2 --25B(STACK) 
   IF(P5.EQ.3)GOTO 44        *COND-3 --25C(RANDOM PATTERNS) 
   IF(P5.EQ.4)GOTO 46        *COND-4 --25D(ADDRESSES) 
   GOTO 34                   *SHOULD NOT BE HERE. P5 ERROR
* 
40 OB(500) = 1               *FLAG SUBMODULE NUMBER IN OB 
   CALL 25A                  *START SUBMODULE 25A 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
42 OB(500) = 2               *FLAG SUBMODULE NUMBER IN OB 
   CALL 25B                  *START SUBMODULE 25B 
   GOTO 50                   *TEST RETURN,FROM SUBMODULE
* 
44 OB(500) = 3               *FLAG SUBMODULE NUMBER IN OB 
   CALL 25C                  *START SUBMODULE 25C 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
46 OB(500) = 4               *FLAG SUBMODULE NUMBER IN OB 
   CALL 25D                  *START SUBMODULE 25D 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
* ---------------ENDS / REPEATS---------------------- 
* 
50 PASS 
   IF(ES.AND.RM.NE.0)GOTO 32     *REPEAT MODULE 
52 IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   IF(B11.GT.ERRLIM)GOTO 60    *EXIT MODULE ON ERR LIMIT
60 EXIT                        *END MODULE
* 
   END 30 
COMPILE   *CRP25 - TEST REQUEST STACK 
   MODULE CRP25A,6000(200),LOCK 
***       CRP25A - TEST REQUEST STACK RQSTK - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP25A - REQUEST STACK IN/OUT REG TEST - 1 (RQSTK)
2  FORMAT CRP25A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
7  FORMAT // MODULE ERROR LIMIT-CRP25A
20 FORMAT CRP25A RUNNING-*A   LC=*DEC, PATTERN=*H*H*H*HH
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, DIF=*H*H*H*HH
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLEAR=503,CLRRQ=504 
* 
* ---------------INITIALIZATION-------------------- 
* 
30 IF(B0.EQ.0824D)GOTO 62    *RETURN FROM 98X 
   IF(B0.EQ.0807D)GOTO 40    *RETURN FROM 98G 
   IF(B0.EQ.0726D)GOTO 75    *RETURN FROM 97Z 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
   B0 = 0251D                *MODULE FLAG FOR EXITS 
* 
32 MSG 0 TO DISPLAY          *RUN MSG 
* ----DIAG REG FUNCTIONS
   OB(503) = 0000            *CLEAR 
   OB(504) = 4000            *CLRRQ 
* 
   OB(477) = 0               *CLEAR 98X CHAR FLAG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
   B6 = 0                    *CLEAR ERROR MSG FLAG
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
   B15 = 2                   *MODE TO 98G 
   EXIT TO 98G               *GENERATE PATTERNS 
* 
* ------------------DATA TEST---------------------------
* 
40 B1 = B9 + B9 + PSTART      *SET ADDRESS INDEX
   OB(0) = OB(B1)             *MOVE DATA
   OB(2) = OB(0)
   B1 = B1 + 1
   OB(1) = OB(B1) 
   OB(3) = OB(1)
42 IF(P4.NE.0)DELAY P4 USEC   *DELAY IF SET 
   B0 = 0251D                 *RESET MODULE EXIT-TO FLAG
   B12 = 1
   RES ,ABT 70
   GOSUB 66                   *CLEAR RQSTK
* 
   B7 = 5555                  *PRESET NOT SL INTO MSG 
   IF(ES.AND.SL.NE.0)B7=2314  *SET SL INTO MSG
   IF(B6.NE.0)GOTO 44         *SKIP MSG IF ERROR MSG UP 
   MSG 20(B7,B10,OB(0),OB(1),OB(2),OB(3))TO DISPLAY 
44 WC = 4 
   BA = 0 
   B12 = 2
   FUNC 645 , ABT 70           *DIAG WRT MODE 2 
   B12 = 3
   OUT , ABT 70 
   B12 = 2
   FUNC 605 , ABT 70
   B12 = 4
   IN , ABT 70
   COMPARE OB(0) TO IB(0) FOR WC, ABT 54
   B6 = 0                        *RESET ERR MSG FLAG
   GOTO 42 WHILE(B10+1.LE.50D)     *LOOP 50 TIMES 
* 
   B10 = 0                       *RESET LOOP CNTR 
   IF(ES.AND.SL.NE.0)GOTO 42     *SL NOT(NOT ERROR) 
* 
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))
* 
* -----------------ENDS/REPEATS------------------------ 
* 
   IF(P5.EQ.0)GOTO 52          *EXIT TO NEXT SUBMODULE
* 
   IF(ES.AND.RM.NE.0)GOTO 32   *RM
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                        *EXIT TO PRIM MOD ON ERR LIM 
* 
52 EXIT TO 25B                 *EXIT TO NEXT SUBMODULE
* 
* -----------------DATA COMPARE ERROR-----------------
* 
54 B11 = B11 + 1             *ERROR CNT 
   OB(50) = B11              *MOVE DATA FOR MSG 
   OB(51) = B10 
   B1 = 0 
55 OB(B1+60) = OB(B1).XOR.IB(B1)  *BUILD LOG.DIFF.
   OB(57) = OB(57).OR.OB(B1+60) 
   GOTO 55 WHILE(B1+1.LE.4) 
   COPY OB(60) TO OB(52) FOR 4    *BUILD DISPLAY
   IF(ES.AND.SL.EQ.0)GOTO 56      *NOT SL 
   MSG 21,6 WORDS FROM OB(50) TO DISPLAY
   B6 = 1                    *SET ERR MSG UP FLAG 
   GOTO 42                   *RETURN TO LOOP
* 
56 EXIT TO 98X               *PROCESS COMPARE ERROR 
* 
62 IF(B11.GT.ERRLIM)GOTO 50  *EXIT ERROR LIMIT
   GOTO 42                   *RETURN TO LOOP
* 
* -------------SEND CLEAR RQSTK TO THE CRP----------------
* 
66 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRRQ) , ABT 70
   OUT 1 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   B6 = 1                           *SET ERR MSG UP FLAG
   GOTO 42                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT MSG
   EXIT TO 97Z               *PROCESS ABORT MSGS
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 42                   *RETURN TO TEST LOOP 
* 
77 END 30 
COMPILE   *CRP25A - RQSTK TEST-1 IN/OUT REG.
   MODULE CRP25B,6000(200),LOCK 
***       CRP25B - TEST REQUEST STACK RQSTK - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP25B - REQUEST STACK PATTERN DATA TEST-2 (RQSTK)
2  FORMAT CRP25B .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
7  FORMAT // MODULE ERROR LIMIT-CRP25B
20 FORMAT CRP25B RUNNING-*A   LC=*DEC, PATTERN=*H*HH
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, RQSTK.DIF=*H*HH
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLEAR=503,CLRRQ = 504 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0824D)GOTO 62    *RETURN FROM 98X 
   IF(B0.EQ.0807D)GOTO 40    *RETURN FROM 98G 
   IF(B0.EQ.0726D)GOTO 75    *RETURN FROM 97Z 
* 
   B0 = 0252D                *RESET MODULE EXIT-TO FLAG 
* 
31 IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE    *RUNNING MSG 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
* ----DIAG REG FUNCTIONS
   OB(503) = 0000            *CLEAR 
   OB(504) = 4000            *CLRRQ 
* 
   OB(477) = 0               *CLEAR 98X CHAR FLAG 
   B6 = 0                    *CLEAR ERROR MSG FLAG
   B9 = 0                    *PATTERN CNTR(SECONDARY CNTR)
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERR CNTR
   B15 = 2                   *MODE TO 98G 
   EXIT TO 98G               *GENERATE PATTERN
* 
* -----------------DATA TEST--------------------- 
* 
40 B1 = B9 + B9 + PSTART     *GET PATTERN FOR TEST
   OB(0) = OB(B1) 
   B1 = B1 + 1
   OB(1) = OB(B1) 
   DUP OB(0)/OB(1) TO OB(2) FOR 30D  *BUILD OUTPUT BUFFER 
* 
41 IF(P4.NE.0)DELAY P4 USEC  *DELAY IF SET
   B0 = 0252D                *RESET MODULE EXIT-TO FLAG 
   B12 = 1
   RES ,ABT 70
   GOSUB 66                    *CLEAR RQSTK 
* 
   B7 = 5555                   *PRESET NOT SL 
   IF(ES.AND.SL.NE.0)B7=2314   *SET SL FOR MSG
   IF(B6.EQ.0)MSG 20(B7,B10,OB(0),OB(1)) TO DISPLAY 
   BA = 0                      *OUTPUT ADDRESS
42 B0 = 0252D 
   WC = 20                     *WRITE 1/2 STK 
   B12 = 2
   FUNC 645 , ABT 70
   B12 = 3
   OUT , ABT 70 
* 
   B5 = 0 
   WC = 2 
44 B12 = 2
   FUNC 00 , ABT 70              *DUMMY FUNC TO CRP 
   FUNC 205 , ABT 70             *READ RQSTK
   B12 = 4
   IN , ABT 70
   BA = BA + 2                   *BUMP INPUT ADDRESS
   GOTO 44 WHILE(B5+1.LT.10)     *LOOP RD 1/2 STK 
* 
   GOTO 42 WHILE(BA+0.LT.40)     *LOOP FOR 2ND 1/2 STK
* 
   WC = 40
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                        *RESET ERR MSG FLAG
   GOTO 40 WHILE(B10+1.LE.50D)     *LOOP 50 TIMES 
   B10 = 0                       *CLEAR LOOP CNTR 
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))
* 
   IF(ES.AND.SL.NE.0)GOTO 42    *SL REPEAT
* 
* ------------------ENDS / REPEATS----------------------/ 
   IF(P5.EQ.0)GOTO 52           *NO USER COND. NEXT MODULE
* 
   IF(ES.AND.RM.NE.0)GOTO 32    *RPT AND USER COND. 
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                         *RETURN TO PRIMARY MODULE 
* 
52 EXIT TO 25C                  *NEXT PATTERN MODULE
* 
* ----------------DATA COMPARE ERROR------------- 
* 
54 B11 = B11 + 1                  *CNT ERR
   B1 = 0 
55 OB(B1+40) = OB(B1).XOR.IB(B1)  *FORM LOG.DIF.
   GOTO 55 WHILE(B1+1.LE.37)      *LOOP ALL DATA
   OB(501) = 0
   OB(502) = 0
   B1 = 40
56 OB(501) = OB(501).OR.OB(B1)     *FORM STK DIF. 
   OB(502) = OB(502).OR.OB(B1+1)
   GOTO 56 WHILE(B1+2.LE.77)
   IF(ES.AND.SL.EQ.0)GOTO 60   *NOT SL
   MSG 21(B11,B10,OB(501),OB(502)) TO DISPLAY 
   B6 = 1                    *SET ERR MSG UP FLAG 
   GOTO 41                   *RETURN TO LOOP
* 
60 EXIT TO 98X               *PROCESS DATA COMPARE ERROR
* 
62 IF(B11.GT.ERRLIM)GOTO 50  *RETURN TO PRIM MODULE 
   GOTO 41                   *RETURN TO LOOP
* 
* -------------SEND CLEAR RQSTK TO THE CRP----------------
* 
66 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRRQ) , ABT 70
   OUT 1 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                  *ERROR CNTR 
   ENDSUB                         *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74      *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   B6 = 1                         *SET ERRO MSG UP FLAG 
   GOTO 41                        *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT MSGS 
   EXIT TO 97Z               *PROCESS ABORT MSG 
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 41                   *RETURN TO TEST LOOP 
* 
   END 30 
COMPILE   *CRP25B - REQUEST STACK TEST-2
   MODULE CRP25C,6000(200),LOCK 
***       CRP25C - TEST REQUEST STACK RQSTK - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP25C - REQUEST STACK RANDOM DATA TEST- 3 (RQSTK)
2  FORMAT CRP25C .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT DATA ERROR IN REQUEST STACK..RANDOM DATA
4  FORMAT  ADDRESS   EXPECTED   ACTUAL    DIFF. (HEX VALUES)
5  FORMAT   *H         *H*H      *H*H     *H*H
7  FORMAT // MODULE ERROR LIMIT-CRP25C
20 FORMAT CRP25C  ERC = *DEC , LC = *DEC
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, ADD=*HH, DIF=*H*HH 
27 FORMAT  -----------------------------------------------
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLEAR=503,CLRRQ=504 
   DATA (OB(503),CON) 0000 , 4000     *DIAG REG FUNC. 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76    *RETURN FROM 97Z 
* 
* 
31 IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE    *RUNNING MSG 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B0 = 0253D                *SET MODULE EXIT-TO FLAG 
   B9 = 0                    *PATTERN CNTR
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERR CNTR
   B15 = 1234                *DEFAULT RANDOM STARTER
   IF(P6.NE.0)B15 = P6       *USER STARTER
34 RANDOM TO OB(0) FOR 32D,START B15  *GENERATE DATA
   B1 = 0 
36 OB(B1) = OB(B1).AND.377      *MASK DATA TO 8-BIT PATTERNS
   GOTO 36 WHILE(B1+1.LE.32D)   *ALL DATA 
* 
* ---------------DATA TEST------------------- 
* 
40 IF(P4.NE.0)DELAY P4 USEC     *DELAY IF SET 
   B0 = 0253D                   *RESET EXIT-TO FLAG 
   GOSUB 64                     *RESERVE CHANNEL FROM MALET/SYSTEM
   GOSUB 66                     *CLEAR RQSTK
* 
   BA = 0                       *STARTING ADDRESS IN BUFFER 
42 B0 = 0253D 
   WC = 20                      *WD CNT FOR W/R/COMPARE 
   B12 = 2
   FUNC 645 , ABT 70
   B12 = 3
   OUT , ABT 70                 *WRITE 1/2 STK
* 
   B5 = 0 
   WC = 2 
43 B12 = 2
   FUNC 00 , ABT 70             *DUMMY GSW FUNC 
   FUNC 205 , ABT 70
   B12 = 4
   IN , ABT 70
   BA = BA + 2                  *BUMP ADDRESS CNTR
   GOTO 43 WHILE(B5+1.LT.10)    *READ 1/2 STK 
* 
   GOTO 42 WHILE(BA+0.LT.40)    *READ 2ND 1/2 STK 
* 
   WC = 2                       *COMPARE WD CNT 
   B1 = 0                       *STACK ADDRESS
   B2 = 0                       *BUFFER ADDRESS 
44 COMPARE OB(B2) TO IB(B2) FOR WC,ABT 54 
   B2 = B2 + 2                  *BUMP BUFFER LOCATION 
   GOTO 44 WHILE(B1+1.LE.17)    *COMPARE 16-2WD LOCATIONS 
* 
   MSG 20(B11,B10) TO DISPLAY 
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0
* 
   IF(ES.AND.SL.NE.0)GOTO 42     *SL
   B15 = B15 + 2525              *CHANGE RANDOM STARTER 
   GOTO 34 WHILE(B9+1.LE.10D)    *10D RANDOM PATTERNS 
* 
* 
* ----------------- END/REPEATS-----------------
   IF(P5.EQ.0)GOTO 52            *NOT USER COND.
   IF(ES.AND.RM.NE.0)GOTO 32     *RM
* 
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                          *RETURN TO PRIMARY MODULE
* 
52 EXIT TO 25D                   *NEXT PATTERN SUBMODULE
* 
* ----------------DATA COMPARE ERROR------------- 
* 
54 B11 = B11 + 1             *CNT ERR 
   B2 = 0 
55 OB(B2+40) = OB(B2).XOR.IB(B2)  *FORM LOG.DIF.
   GOTO 55 WHILE(B2+1.LE.37)      *LOOP ALL DATA
   IF(ES.AND.SL.EQ.0)GOTO 60      *NOT SL 
   B2 = B1 + B1 + 40              *FORM BUFFER ADDRESS
   MSG 21(B11,B10,B1,OB(B2),OB(B2+1)) TO DISPLAY
   GOTO 40                   *RETURN TO LOOP
* 
60 MSG 0 TO LINE 1                *TITLE MSG
   MSG 3 TO LINE 2                *WORDS
   MSG 4 TO LINE 3                *HEADER 
   B6 = 4                         *LINE CNTR
   B1 = 0                         *SCR CNTR 
   B2 = 0                         *SCR CNTR 
62 OB(100) = B1                   *ADDRESS
   COPY OB(B2) TO OB(101) FOR 2   *EXPECTED DATA
   COPY IB(B2) TO OB(103) FOR 2   *ACTUAL DATA
   COPY OB(B2+40) TO OB(105) FOR 2   *DIFF
   MSG 5, 7 WORDS FROM OB(100) TO LINE B6 
   B6 = B6 + 1
   B2 = B2 + 2
   GOTO 62 WHILE(B1+1.LE.17)     *LOOP ALL ADDRESSES
   MSG 20(B11,B10) TO LINE B6    *ERROR CNT LINE
   MSG 27 TO LINE B6+1
   GOTO 75                       *PICTURE AND LOOP
* 
* ----RESERVE CHANNEL FROM MALET/SYSTEM-----
64 B12 = 1
   RES , ABT 70 
   RETURN 
* ----SEND CLEAR RQSTK TO THE CRP---- 
66 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRRQ) , ABT 70
   OUT 1 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   GOTO 40                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT PROCESSING
   EXIT TO 97Z                      *PROCESS ABORT MSGS 
* 
* ---------------PICTURE DISPLAY AND LOOP---------
75 PICTURE
   HALT 
   BLANK
76 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 40                   *RETURN TO TEST LOOP 
77 END 30 
COMPILE   *CRP25C - RQSTK TEST-3 RANDOM DATA
   MODULE CRP25D,6000(200),LOCK 
***       CRP25D - TEST REQUEST STACK RQSTK - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP25D - REQUEST  STACK  ADDRESS  TEST - 4 (RQSTK)
2  FORMAT CRP25D .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT ADDRESSING/DATA ERROR IN REQUEST STACK
4  FORMAT  ADDRESS   EXPECTED    ACTUAL    DIFF.(HEX VALUES)
5  FORMAT   *H         *H*H       *H*H     *H*H 
7  FORMAT // MODULE ERROR LIMIT-CRP25D
20 FORMAT CRP25D   ERC = *DEC , LC = *DEC 
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, ADD=*HH, DIF=*H*HH 
27 FORMAT  -----------------------------------------------
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
   EQUATE CLEAR=503, CLRRQ=504
   DATA (OB(503),CON) 0000B , 4000B    *DIAG REG FUNCTIONS
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76    *RETURN FROM 97Z 
* 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE    *RUNNING MSG 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B0 = 0254D                *MODULE EXIT-TO FLAG 
   B8 = 0                    *ADD/COMP ADDRESS CNTR 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERR CNTR
* 
   B2 = 0                     *ADDRESS IMAGE
   B1 = 0                     *LOCATION CNTR
34 OB(B1) = B2.OR.0200        *ADDRESS AND UPPER BIT
   OB(B1+1) = B2.OR.0300      *-
   B2 = B2 + 1                *BUMP ADDRESS 
   GOTO 34 WHILE(B1+2.LE.36)  *FILL 16D CELLS 
* 
* ---------------DATA TEST------------------- 
* 
40 IF(P4.NE.0)DELAY P4 USEC     *DELAY IF SET 
   B0 = 0254D                   *EXIT-TO FLAG 
   B12 = 1
   RES ,ABT 70
   GOSUB 66                     *CLEAR RQSTK
* 
   BA = 0                       *STARTING ADDRESS IN BUFFER 
42 WC = 20                      *WD CNT FOR W/R 
   B12 = 2
   FUNC 645 , ABT 70
   B12 = 3
   OUT , ABT 70                 *WRITE 1/2 STK
* 
   B5 = 0 
   WC = 2 
43 B12 = 2
   FUNC 00 , ABT 70             *DUMMY GS FUNC
   FUNC 205 , ABT 70            *RD MODE 2
   B12 = 4
   IN , ABT 70
   BA = BA + 2
   GOTO 43 WHILE(B5+1.LT.10)    *READ 1/2 STK 
* 
   GOTO 42 WHILE(BA+0.LT.40)    *READ 2ND 1/2 STK 
* 
   WC = 2                       *COMPARE WD CNT 
   B1 = 0                       *STACK ADDRESS
   B2 = 0                       *BUFFER ADDRESS 
44 COMPARE OB(B2) TO IB(B2) FOR WC,ABT 54 
   B2 = B2 + 2                  *BUMP BUFFER LOCATION 
   GOTO 44 WHILE(B1+1.LE.17)    *COMPARE 16-2WD LOCATIONS 
* 
   MSG 20(B11,B10) TO DISPLAY 
* 
   GOTO 40 WHILE(B10+1.LE.150D)      *LOOP 150D TIMES 
   B10 = 0
   B1 = 0                            *CLEAR SCR CNTR
46 OB(B1) = OB(B1).XOR.7777.AND.377  *FORM COMPLIMENT ADD 
   GOTO 46 WHILE(B1+1.LE.37)
   GOTO 40 WHILE(B8+1.LE.1)          *LOOP TWICE
* 
* 
   IF(ES.AND.SL.NE.0)GOTO 42         *SL
* 
* ----------------ENDS / REPEATS--------------------
* 
   IF(P5.EQ.0)GOTO 50            *NOT USER COND.
   IF(ES.AND.RM.NE.0)GOTO 32     *RM AND USER COND(P5.NE.0) 
* 
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                          *RETURN TO PRIMARY MODULE
* 
* ----------------DATA COMPARE ERROR------------- 
* 
54 B11 = B11 + 1                  *CNT ERR
   B2 = 0 
55 OB(B2+40) = OB(B2).XOR.IB(B2)  *FORM LOG.DIF. IN OB(40+ )
   GOTO 55 WHILE(B2+1.LE.37)      *LOOP ALL DATA
   IF(ES.AND.SL.EQ.0)GOTO 60      *NOT SL 
   B2 = B1 + B1 + 40              *FORM BUFFER ADDRESS
   MSG 21(B11,B10,B1,OB(B2),OB(B2+1)) TO DISPLAY
   GOTO 40                        *RETURN TO LOOP 
* 
60 MSG 0 TO LINE 1                *TITLE MSG
   MSG 3 TO LINE 2                *WORDS
   MSG 4 TO LINE 3                *HEADER 
   B1 = 0                         *SCR CNTR 
   B2 = 0                         *SCR CNTR 
62 OB(100) = B1                   *ADDRESS
   COPY OB(B2) TO OB(101) FOR 2   *EXPECTED DATA
   COPY IB(B2) TO OB(103) FOR 2   *ACTUAL DATA
   COPY OB(B2+40) TO OB(105) FOR 2   *DIFF
   MSG 5, 7 WORDS FROM OB(100) TO LINE B1+4 
   B2 = B2 + 2
   GOTO 62 WHILE(B1+1.LE.17)    *LOOP ALL ADDRESSES 
   MSG 20(B11,B10) TO LINE B1+4 
   MSG 27 TO LINE B1+5
   GOTO 75                      *PICTURE AND LOOP 
* 
* -------------SEND CLEAR RQSTK TO THE CRP----------------
* 
66 B12 = 2
   FUNC 50 , ABT 70 
   B12 = 3
   OUT 1 WORDS FROM OB(CLRRQ) , ABT 70
   OUT 1 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   GOTO 40                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0 
   EXIT TO 97Z
* 
* -----------------PICTURE DISPLAY AND LOOP-------- 
75 PICTURE
   HALT 
   BLANK
76 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 40                   *RETURN TO TEST LOOP 
* 
77 END 30 
COMPILE   *CRP25D - RQSTK ADDRESS TEST-4
   MODULE CRP27,6000(200),LOCK
***       CRP27 - LOST PACKET REGISTER TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A TEST OF BOTH LOST PACKET REGISTERS BY MEANS
*         OF THE DIAGNOSTIC WRITE CAPABILITY OF THE CRP.  TEST
*         PATTERNS OF ALL ONES AND ZEROS, ALTERNATING ONES AND
*         ZEROS, AND MARCHING ONES AND ZEROS ARE WRITTEN AND
*         VERIFIED.  DATA TRANSLATION MODE 2 IS USED.  CYBER CRP
*         FUNCTIONS 03, 04, 43, AND 44 ARE VERIFIED.
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  CLEAR LOOP AND ERROR COUNTERS AND OTHER SCR CELLS.
*         4.  SET B15 FOR CALL TO PATTERN GENERATOR AND CALL 98C
*             TO GENERATE MODE 2 PATTERNS.
*         5.  PAUSE (P4) USEC.
*         6.  RESERVE THE CHANNEL TO THE CRP. 
*         7.  IF PARAMETER WORD P6/P7 CONTAINS A NON-ZERO VALUE,
*             EXECUTE THE REGISTER TEST USING THAT PARAMETER WORD.
*         8.  ELSE, EXECUTE THE ALL ONES - ALL ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         9.  EXECUTE THE ALTERNATING ONES AND ZEROS TEST.
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         10. EXECUTE THE MARCHING ONES AND ZEROS TEST. 
*             (REPEAT EACH PATTERN 150D TIMES.) 
*         11. REPEAT FROM 5 FOR LP-2. 
*         12. IF SL IS SELECTED, REPEAT STEPS 5-12. 
*         13. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         14. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-10.
*         15. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         16. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP27 
*           . CRP27 ERROR(S) IN MODULE = *DEC 
*           . CRP27 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP27 RUNNING-*A  LP-*D , LC=*DEC, PATTERN=*H*HHEX
*           . DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH  ACT=*H*HH 
*           .    LOGICAL DIFFERENCE = *H*H H
*           . CRP27 INTERNAL ERROR CRP27/CRP98C MODE(B15) = *OCT
*           . CRP27 PARAMETER ERROR  P5.GT.2  P5 = *OCT 
*           . TESTING LOST PACKET REGISTER - *D 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P5 CONDITION TO RUN  0, 1, OR 2 
*            0 - BOTH REGISTERS    1 - LP1 ONLY 
*            2 - LP2 ONLY 
*         P6 AND P7 IF NON ZERO ARE USED AS TEST PATTERN
*         (NO OTHER PATTERNS ARE GENERATED OR USED).
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-13 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B2  =    "     "
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B8  = LOST PACKET REGISTER TOGGLE.
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE.
* 
* 
*          IB(0) , IB(1)  READ BUFFER 
* 
*          OB 
*          0,1   DATA FROM PATTERN FOR OUTPUT 
*          4,5   LOG.DIFF CELLS 
*          51,52 READ FUNCTIONS 
*          61,62 WRITE FUNCTIONS
*          76    USER DATA FLAG 
*          77    PATTERN COUNT
*          100-  PATTERNS 
* 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
*          CRP98C - PATTERN GENERATOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP27 - LOST PACKET REG 1+2 TEST (LP1/2)
2  FORMAT CRP27 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
7  FORMAT // MODULE ERROR LIMIT-CRP27 
10 FORMAT CRP27 ERROR(S) IN MODULE = *DEC 
20 FORMAT CRP27 RUNNING-*A  LP-*D , LC=*DEC, PATTERN=*H*HH
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, EXP=*H*HH, ACT=*H*HH 
23 FORMAT    LOGICAL DIFFERENCE = *H*H
24 FORMAT  TESTING LOST PACKET REGISTER - *D
25 FORMAT CRP27 INTERNAL ERROR CRP27/CRP98C. MODE(B15)=*OCT 
26 FORMAT CRP27 PARAMETER ERROR P5.GT.2  P5 = *OCT
27 FORMAT  ---------------------------------------------- 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20, PSTART=100, PCNT=77, USERD=76
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE        *MODULE NAME MSG 
   B13 = 27D                     *MODULE NUMBER 
   B15 = 2                       *MODE TO 98C 
   CALL 98C                      *GENERATE PATTERN
   IF(B15.GT.2)GOTO 76           *ERROR RETURN FROM 98C 
32 MSG 0 TO DISPLAY              *RUN MSG 
* 
   OB(51) = 603                  *READ FROM LP-1
   OB(52) = 604                  *READ FROM LP-2
   OB(61) = 643                  *WRITE TO LP-1 
   OB(62) = 644                  *WRITE TO LP-2 
* 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
   B6 = 0                        *CLEAR ERROR MSG FLAG
   B8 = 1                        *LP1/LP2 INDICATOR 
   B9 = 0                        *PATTERN CNTR(SECONDARY CNTR)
   IF(P5.LT.3)GOTO 34 
   MSG 26(P5) TO PRINT,DISPLAY,DAYFILE
   PAUSE
   GOTO 30
* 
34 IF(P5.LT.2)GOTO 40            *TEST LP-2 REG 
   IF(P5.EQ.2) B8 = 2 
* 
* ------------------DATA TEST---------------------------
* 
* ----MOVE TEST PATTERN TO OB(0)
40 IF(P4.NE.0)DELAY P4 USEC 
   B1 = B9 + B9                      *ADDRESS OF DATA 
   OB(0) = OB(B1+PSTART).AND.377        *1ST DATA WORD
   B1 = B1 + 1
   OB(1) = OB(B1+PSTART).AND.377        *2ND DATA WORD
42 B12 = 1
   RES ,ABT 70
   WC = 2                    *OUT/IN/COMPARE WORD CNT 
   BA = 0                    *OUT/IN BUFFER ADDRESS 
   B7 = 5555
   IF(ES.AND.SL.NE.0)B7=2314
   IF(B6.EQ.0)MSG 20(B7,B8,B10,OB(0),OB(1)) TO DISPLAY
   B12 = 2
   FUNC OB(B8+60),ABT 70          *DIAG WRITE MODE 2 LP1/2
   B12 = 3
   OUT , ABT 70                   *SEND 2 WDS TO LP1/2 REG
   B12 = 2
   FUNC OB(B8+50),ABT 70          *DIAG READ MODE 2 LP1/2 
   B12 = 4
   IN , ABT 70                        *READ 2 WDS TO IB(0)
   COMPARE OB(0) TO IB(0) FOR WC,ABT 54 
   B6 = 0                             *RESET ERR MSG FLAG 
   GOTO 42 WHILE(B10+1.LE.50D)     *LOOP 50 TIMES 
* 
   IF(ES.AND.SL.NE.0)GOTO 42          *SCOPE LOOP 
   B10 = 0                            *RESET LOOP CNTR
   GOTO 40 WHILE(B9+1.LE.OB(PCNT))    *BUMP PATTERN / LOOP
   B9 = 0                             *CLEAR PATTERN FLAG 
* 
46 IF(P5.EQ.0)GOTO 40 WHILE(B8+1.LE.2)    *LOOP FOR LP1/2 
* 
* ----------------ENDS / REPEATS--------------------- 
* 
   IF(ES.AND.RM.NE.0)GOTO 32          *REPT MODULE
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   EXIT 
* 
* -------------------DATA COMPARE ERROR---------------
* 
54 B11 = B11 + 1              *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 56  *NOT SL 
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO DISPLAY 
   B6 = 1                    *SET ERR MSG UP FLAG 
   GOTO 40                   *SCOPE LOOP DATA ERROR 
* 
56 MSG 0 TO LINE 1
   MSG 24(B8) TO LINE 2 
   MSG 21(B11,B10,OB(0),OB(1),IB(0),IB(1)) TO LINE 3
   OB(4) = OB(0).XOR.IB(0)   *FORM LOGICAL DIFF 
   OB(5) = OB(1).XOR.IB(1)   *- 
   MSG 23(OB(4),OB(5)) TO LINE 4
   B1 = 7700                 *FLAG ERROR PROCESSING 
   CALL 97X                  *PROCESS ERROR MSGS
   GOTO 75
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                  *ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 74      *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   B6 = 1                         *SET ERR MSG UP FLAG
   GOTO 40                        *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   CALL 97X                  *PROCESS ABORT MSGS
* 
75 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 40                   *RETURN TO TEST LOOP 
* 
76 B15 = B15 - 10            *RESET TO MODE SEND TO 98C 
   MSG 25(B15) TO DISPLAY,PRINT,DAYFILE  *BAD MODE 98C
   END 30 
COMPILE   *CRP27 - LOST PACKET REGISTER TEST
   MODULE CRP29,6000(200),LOCK
***       CRP29 - END FLAG TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         FUNCTIONAL TEST OF THE END FLAG BIT IN THE GSW, RING
*         FUNCTION CODES 1010 AND 1000, AND CONTROL AND DATA FIFOS. 
* 
*         MODULES TESTS END-FLAG IN 2 PARTS.
*             29 - CONTROL AND PART - 1 
*             29A - PART - 2
* 
*   1.2   METHOD
* 
*             STEPS 1-8 APPLY TO BOTH MODULES.
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             (SL) IS SELECTED. 
*         4.  PAUSE (P4). 
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE END FLAG IS RESET. 
*             FAILURE SET ERROR CODE(ECD) TO 291. 
*         8.  IF AN ERROR IS DETECTED AND SCOPING LOOP IS SELECTED, 
*             GO TO STEP 3. 
*         9.  WRITE THE RING CONTROL REGISTER WITH A 1010 RING
*             FUNCTION CODE AND AN EQUIPMENT CODE SPECIFIED IN
*             PARAMETER WORD P0.
*         10. WRITE THE RING DATA REGISTER WITH ALTERNATING ONES AND
*             ZEROS DATA, OR WITH DATA IN PARAMETER WORDS P6 AND P7 
*             IF NON-ZERO.
*         11. READ THE GSW AND VERIFY THAT THE END FLAG IS SET. 
*             ERROR CODE = 292. 
*         12. IF AN ERROR IS DETECTED, AND SL IS SELECTED, GOTO STEP 3
*         13. READ THE DATA FIFO AND VERIFY THE DATA. ERROR CODE = 293
*         14. IF AN ERROR IS DETECTED, AND SL IS SELECTED, GOTO STEP 3
*         15. READ THE GSW AND VERIFY THAT THE END FLAG IS RESET. 
*         16. IF AN ERROR IS DETECTED, AND SL IS SELECTED, GOTO STEP 3. 
*         17. REPEAT STEPS 4-15 150D TIMES. 
*         18. REPEAT MODULE CONDITIONED BY P5.
* 
*      - CRP29A - 
*             STEPS 1-8 APPLY TO CRP29A ALSO. 
*         19. REPEAT STEPS 7 AND 8 WITH A RING FUNCTION CODE OF 0010. 
*         20. REPEAT STEPS 7 AND 8 WITH A RING FUNCTION CODE OF 1000. 
*         21. READ THE GSW AND VERIFY THAT THE END FLAG IS SET. 
*             ERROR CODE = 295. 
*         22. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5,17,19 - 20. 
*         23. SET AND RESET THE CLEAR FIFO BIT IN THE DIAGNOSTIC REG. 
*         24. READ THE GSW AND VERIFY THAT THE END FLAG IS RESET. 
*             ERROR CODE = 296. 
*         25. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5,AND 19 - 24.
*         26. REPEAT STEPS 1-8 AND 19-25 150D TIMES.
*         27. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         28. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-26.
*             REPEAT MODULE CONTROLLED BY P5 CONDITION REPEATPARAMETER. 
*         29. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND DAYFILE 
*             INDICATING THE NUMBER OF ERRORS.
*         30. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP29 
*           . CRP29 ERROR(S) IN MODULE = *DEC 
*           . CRP29 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP29  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
*           . CRP29.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
*           . END FLAG NOT RESET BY CLRCRP FUNC 0400B 
*           . END FLAG NOT SET BY RING FUNC=1010B 
*           . DATA COMPARE ERROR FROM RING
*           . END FLAG NOT RESET BY READ FROM DATA FIFO 
*           . DATA ERROR RNG TO DATA FIFO EXP=*H*HH, ACT=*H*HH
*           . CRP29 PARAMETER ERROR P5.GT.2  P5=*OCT
*           . CRP29A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
*           . CRP29A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
*           . END FLAG NOT RESET BY CRLCRP FUNC 0400B 
*           . END FLAG NOT SET BY RING FUNC 1000B 
*           . END FLAG NOT RESET BY CLRFIFO FUNC 1000B
*           . CRP29A INTERNAL ERROR CRP29/CRP29A  P5=*OCT 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P0 CRP EQUIPMENT NUMBER 
*         P4 LOOPING DELAY
*         P5 CONDITION PARAMETER REGISTER 
*            P5 = 0 RUN CRP29,CRP29A  ,  = 1 RUN ONLY CRP29 
*               = 2 RUN ONLY CRP29A 
*         P6, P7 USER DATA SELECTION FOR RDR DATA 
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-25 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
*         - IB -
*          0 , 1  READ BUFFER 
*         - OB -
*          400-402  RCR/RDR DATA
*          470-475  DIAG REG FUNCTIONS
*        - SB - 
*         0 , 1  STATUS FROM CRP
* 
* 
* 
* 
*   2.3   SUBMODULES USED 
*        - CRP29 -
*          CRP29A - CONTINUATION OF MODULE
*          CRP97X - ABORT MESSAGE PROCESSOR 
*        - CRP29A - 
*          CRP97Z - ERROR/ABORT MESSAGE PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP29 -  END-FLAG TEST - 1
2  FORMAT CRP29 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
5  FORMAT CRP29  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP29.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
7  FORMAT // MODULE ERROR LIMIT-CRP29 
10 FORMAT CRP29 ERROR(S)IN MODULE = *DEC
20 FORMAT END FLAG NOT RESET BY CLRCRP FUNC 0400B 
21 FORMAT END FLAG NOT SET BY RING FUNC=1010B 
22 FORMAT DATA COMPARE ERROR FROM RING
23 FORMAT END FLAG NOT RESET BY READ FROM DATA FIFO 
24 FORMAT DATA ERROR RNG TO DATA FIFO EXP=*H*HH, ACT=*H*HH
26 FORMAT CRP29 PARAMETER ERROR P5.GT.2  P5=*OCT
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRFIFO=474
   EQUATE RCRDATA=400,RDRDATA=401 
   DATA (OB(401),CON) 125,125 
   DATA (OB(470),H) 0000, 0100, 0200
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE        *MODULE NAME MSG 
   B13 = 29D                     *MODULE NUMBER 
   IF(P5.EQ.0)GOTO 32            *COND. OK 29/29A 
   IF(P5.EQ.1)GOTO 32            *COND. OK 29 
   IF(P5.EQ.2)GOTO 44            *IF P5 SELECTS SECOND TEST 
   MSG 26(P5) TO DISPLAY,PRINT,DAYFILE
   PAUSE
   GOTO 30                       *WAIT FOR PARAM CORRECTED
* 
32 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------END FLAG TEST--------------------- 
*                    1 ST HALF
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF P4 SET 
   B12 = 1
   RES ,ABT 70
   BA = CLRCRP                   *SET CLEAR CRP 
   GOSUB 64                      *WRITE FUNC TO DIAG REG
   GOSUB 66                      *READ GSW TO SB(0) 
   IF(SB(1).AND.4.NE.0) ERROR 20/291D GOTO 50  *EF NOT =0 
* 
   OB(400) = P0.AND.377.OR.5000  *RCR FNC RF=1010B(FIFO)
   B1 = P6.OR.P7                 *CHECK FOR USER DATA 
   IF(B1.EQ.0)GOTO 42            *NOT USER DATA 
   OB(401) = P6.AND.377          *SET USER DATA 
   OB(402) = P7.AND.377          *- 
42 GOSUB 62                      *WRITE RCR/RDR 
   GOSUB 66                      *READ GSW
   IF(SB(1).AND.4.EQ.0) ERROR 21/292D GOTO 50  *EF NOT=1
* 
   BA = 0                        *READ DF MODE 2
   WC = 2 
   B12 = 5
   FIN 206,ABT 70                *READ 16-BITS(FIFO)
   COMPARE OB(401) TO IB(0) FOR WC,ABT 47 
   GOSUB 66                      *READ GSW
   IF(SB(1).AND.4.NE.0) ERROR 23/294D GOTO 50  *EF NOT = 0
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0                       *CLEAR LOOP CNTR 
   IF(P5.EQ.0)GOTO 44            *CONTINUE IN 29A 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
44 CALL 29A                      *CONTINUE TESTING
   IF(ES.AND.RM.EQ.0)GOTO 46     *EXIT ON RETURN FROM 29A 
   GOTO 32                       *RPT BOTH MODULES
* 
* ---------------END / REPEATS----------------------------- 
* 
45 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
46 IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   EXIT                          *END MODULE
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
47 ERROR 22/293D            *DATA COMPARE ERROR FROM FIFO 
50 ENDSUB                   *CLEAR ANY PENDING SUBROUTINES
   GOSUB 66                 *READ CURRENT GSW 
   B11 = B11 + 1
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   IF(EM.NE.22)GOTO 54           *SKIP DATA ERROR MSG 
   MSG 24(OB(401),OB(402),IB(0),IB(1))TO LINE 4 
54 B1 = 7700                     *FLAG ERROR PROCESSING 
   CALL 97X                      *PROCESS ERROR MSGS
   GOTO 76                       *FINISH DISPLAY
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                    *WRITE RCR MODE 0
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                   *WRITE RDR MODE 2
   RETURN 
* ----WRITE DIAG REG----- 
64 B12 = 2                       *FUNC IS IN BA 
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* ----READ GSW----- 
66 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 0 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                       *ERROR CNTR
   ENDSUB                              *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74           *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY      *POST ABORT/LC MSG 
   GOTO 40                             *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                         *FLAG ABORT PROCESSING
   CALL 97X                       *PROCESS ABORT MSGS 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 45       *ERROR LIMIT
   GOTO 40                        *RETURN TO LOOP 
* 
77 END 30 
COMPILE   *CRP29 - END-FLAG TEST
   MODULE CRP29A,6000(200),LOCK 
***       CRP29A - TEST END-FLAG GS BIT - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP29A - END-FLAG TEST - 2
2  FORMAT CRP29A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP29A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP29A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP29A
20 FORMAT END FLAG NOT RESET BY CRLCRP FUNC 0400B 
24 FORMAT END FLAG NOT SET BY RING FUNC 1000B 
25 FORMAT END FLAG NOT RESET BY CLRFIFO FUNC 1000B
26 FORMAT CRP29A INTERNAL ERROR CRP29/CRP29A  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRFIFO=474
   EQUATE RCRDATA=400,RDRDATA=401 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
* 
   IF(P5.EQ.0)GOTO 31            *COND OK FOR 29/29A
   IF(P5.EQ.2)GOTO 31            *COND OK FOR 29A 
   MSG 26(P5) TO DISPLAY,PRINT,DAYFILE
   GOTO 77                       *EXIT/END--ERROR 
* 
31 IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
32 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------END FLAG TEST--------------------- 
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF P4 SET 
   B0 = 0291D 
   B12 = 1
   RES ,ABT 70
   BA = CLRCRP                   *SET CLEAR CRP 
   GOSUB 64                      *WRITE FUNC TO DIAG REG
   GOSUB 66                      *READ GSW TO SB(0) 
   IF(SB(1).AND.4.NE.0) ERROR 20/291D GOTO 50  *EF NOT =0 
* 
   OB(400) = P0.AND.377.OR.1000  *DATA TO FIFO RF=0010
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 42            *NOT USER DATA 
   OB(401) = P6.AND.377          *SET USER DATA 
   OB(402) = P7.AND.377          *- 
42 GOSUB 62                      *WRITE RCR/RDR 
   OB(400) = P0.AND.377.OR.4000  *RF=1000B  EMPTY PKT/EF
   GOSUB 62                      *WRITE RCR/RDR PACKET
   GOSUB 66                      *READ GSW
   IF(SB(1).AND.4.EQ.0) ERROR 24/295D GOTO 50   *EF NOT=1 
   BA = CLRFIFO                  *CLEAR FIFO DIAG FUNC
   GOSUB 64                      *WRITE FUNC TO DIAG REG
   GOSUB 66                      *READ GSW
   IF(SB(1).AND.4.NE.0) ERROR 25/296D GOTO 50   *EF NOT=0 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0                        *CLEAR LOOP CNTR
* 
* ----------------LOOPS/REPEATS---------------------
* 
   IF(P5.EQ.0)GOTO 46            *NOT USER SET COND.
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT FROM TOP
* 
46 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                         *RETURN TO 29 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUBS
   B11 = B11 + 1
   GOSUB 66                      *RD CURRENT GSW
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR MSGS
* 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                    *WRITE RCR MODE 0
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                   *WRITE RDR MODE 2
   RETURN 
* ----WRITE DIAG REG----- 
64 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* ----READ GSW----- 
66 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 0 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
* 
70 B11 = B11 + 1                        *ERROR CNTR 
   ENDSUB                        *CLEAR ANY PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74            *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *POST ABORT/LC MSG
   GOTO 40                       *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                        *FLAG ABORT PROCESSING 
   EXIT TO 97Z                   *PROCESS ABORT MSGS
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 46      *ERROR LIMIT 
   GOTO 40                       *RETURN TO PROPER LOOP 
* 
77 END 30 
COMPILE   *CRP29A - END-FLAG TEST 
   MODULE CRP31,6000(200),LOCK
***       CRP31 - LOST PACKET TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         FUNCTIONAL TEST OF THE LOST PACKET BIT AND MULTIPLE LOST
*         PACKETS BIT IN THE GSW,  THE DISABLE LOST PACKET BIT
*         AND CLEAR LOST PACKET BIT IN THE DIAGNOSTIC REGISTER, 
*         AND THE LOST PACKET REGISTERS.
* 
*         MODULE TEST THE LOST PACKET (LP) LOGIC IN 5 SUBMODULES. 
*            CRP31 - CONTROL
*            CRP31A - 31E EACH TEST A PORTION OF LP CIRCUITS. 
*         EACH MAY BY RUN/LOOPED INDEPENDENTLY WITH THE P5
*         PARAMETER REGISTER. 
* 
* 
*   1.2   METHOD
* 
*           STEPS 1-8 APPLY TO EACH SUBMODULE.
*         - CRP31 AND CRP31A -
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             (SL) IS SELECTED. 
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE LOST PACKET BIT AND
*             MULTIPLE LOST PACKET BIT ARE RESET. 
*             ERROR CODE(ECD) = 311  LOST PACKET, 
*                             = 312  MULTIPLE LOST PACKETS
*         8.  IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
* 
*         9.  WRITE THE RING CONTROL REGISTER WITH A 0010 RING FUNCTION 
*             CODE AND EQUIPMENT CODE SPECIFIED IN PARAMETER WORD P1. 
*         10. WRITE THE RING DATA REGISTER WITH DATA SPECIFIED IN 
*             PARAMETER WORDS P6 AND P7 IF NON-ZERO, OR ALTERNATING 
*             ONES AND ZEROS. 
*         11. READ THE GSW AND VERIFY THAT THE LOST PACKET BIT IS SET.
*             ECD = 313.
*         12. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         13. READ THE LOST PACKET REGISTERS AND VERIFY THE DATA. 
*             ECD = 314   ERROR IN LP-1 (CONTROL) 
*             ECD = 315   ERROR IN LP-2 (DATA)
*         14. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         15. READ THE GSW AND VERIFY THAT THE LOST PACKET BIT IS RESET.
*             ECD = 316  IF BIT NOT RESET.
*         16. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         17. REPEAT STEPS 1-16 150D TIMES. 
*         18. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER. 
* 
*       - CRP31B -
*             STEPS 1-8 APPLY TO CRP31B.
*         19. REPEAT STEPS 9, 10, AND 11. 
*         20. SET AND RESET THE CLEAR LOST PACKET BIT IN THE DIAGNOSTIC 
*             REGISTER. 
*         21. READ THE GSW AND VERIFY THAT THE LOST PACKET BIT IS RESET.
*             ECD = 318   IF BIT NOT RESET. 
*         22. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, AND 19 - 21. 
*         23. REPEAT STEPS 1-8, 9, 10, AND 11.
*         24. SET AND RESET THE DISABLE LOST PACKET BIT IN THE DIAGNOS- 
*             TIC REGISTER. 
*         25. READ THE GSW AND VERIFY THAT THE LOST PACKET BIT IS RESET.
*         26. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, AND 23 - 25. 
*         27. REPEAT STEPS 19-26 150D TIMES.
*         28. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER. 
* 
*       - CRP31C -
*             STEPS 1-8 APPLY TO CRP31C.
*         29. REPEAT STEPS 9 AND 10 TWICE.
*         30. READ THE GSW AND VERIFY THAT THE LOST PACKET AND MULTIPLE 
*             LOST PACKET BITS ARE SET. ECD = 313 OR 319. 
*         31. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5,29 AND 30.
*         32. READ THE LOST PACKET REGISTERS AND VERIFY THE DATA. 
*             ECD = 320 FOR LP1 (RCR) DATA ERROR. 
*             ECD = 321 IF SECOND LP HAS OVERWRITTEN FIRST. 
*             ECD = 322 FOR LP1 (RDR) DATA ERROR. 
*         33. READ THE GSW AND VERIFY THAT THE LOST PACKET AND MULTIPLE 
*             LOST PACKET BITS ARE RESET. 
*             ECD = 328.
*         34. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, AND 29 - 33. 
*         35. REPEAT STEPS 29-34. 150D TIMES. 
*         36. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER. 
* 
*       - CRP31D -
*            STEPS 1-8 APPLY TO CRP31D. 
*         37. REPEAT STEPS 29 AND 30. 
*         38. SET AND RESET THE CLEAR LOST PACKET BIT IN THE DIAGNOSTIC 
*             REGISTER. 
*         39. READ THE GSW AND VERIFY THAT THE LOST PACKET AND MULTIPLE 
*             LOST PACKET BITS ARE RESET. ECD = 323.
*         40. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5 AND 35 - 38.
*         41. REPEAT STEPS 1-8 AND 29 AND 30. 
*         42. SET AND RESET THE DISABLE LOST PACKET BIT IN THE DIAG-
*             NOSTIC REGISTER.
*         43. READ THE GSW AND VERIFY THAT THE LOST PACKET AND MULTIPLE 
*             LOST PACKET BITS ARE RESET. ECD = 324.
*         44. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, AND 39 - 41. 
*         45. REPEAT STEPS 37-43 150D TIMES.
*         46. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER. 
* 
*       - CRP31E -
*             STEPS 1-8 APPLY TO CRP31E.
*         47. SET THE DISABLE LOST PACKET BIT IN THE DIAGNOSTIC REG.
*         48. REPEAT STEPS 29 AND 30. 
*         49. READ THE GSW AND VERIFY THAT THE LOST PACKET AND MULTIPLE 
*             LOST PACKET BITS ARE RESET. 
*             ECD = 326 LP GS BIT SET.
*             ECD = 327 MLP GS BIT SET. 
*         50. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, AND 47 - 49. 
*         51. REPEAT STEPS 47-49 151D TIMES.
*         52. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER. 
*         53. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         54. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-53 . 
*             CONTROLLED BY RM SWITCH AND P5 PARAMETER. 
*         55. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS.
*         56. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP31 
*           . CRP31 ERROR(S) IN MODULE = *DEC 
*           . CRP31 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . DATA COMPARE ERROR LP-CTL EXP=*3HH, ACT=*3HH
*           . DATA COMPARE ERROR LP-DATA EXP=*H*HH, ACT=*H*HH 
*           . LOST PACKET GS BIT(LP) NOT RESET BY CLRCRP FUNC 
*           . MULTI-LOST PKT BIT(MLP) NOT RESET BY CLRCRP FUNC
*           . LOST PACKET GS BIT NOT SET BY RING FUNC=0010B 
*           . DATA COMPARE ERROR FROM RING IN LP CTL REG
*           . LOST PACKET GS BIT(LP) NOT RESET BY CLRCRP FUNC 
*           . MULTI-LOST PKT BIT(MLP) NOT RESET BY CLRCRP FUNC
*           . LOST PACKET GS BIT NOT SET BY RING FUNC=0010B 
*           . LOST PACKET GS BIT NOT RESET BY CLRLP FUNC
*           . LOST PACKET GS BIT NOT RESET BY DLPD FUNC 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -    P1 - NON-EXISTENT HPP EQUIPMENT CODE.
* 
*        - REPAIR MODE
*         P1 NON-EXISTENT HPP EQUIPMENT CODE. 
*         P4 LOOPING DELAY
*         P5 SUBMODULE(CONDITION)SELECTION. 
*            P5 = 0 RUN ALL SUBMODUOES
*               = 1 RUN ONLY CRP31A  ,  = 2 RUN ONLY CRP31B 
*               = 3 RUN ONLY CRP31C  ,  = 4 RUN ONLY CRP31D 
*               = 5 RUN ONLY CRP31E  ,  GT 5 ERROR. 
*          P6 , P7 RDR/LP2 DATA PATTERN 
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-29 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
*      - IB - 
*       0 , 1 READ BUFFER 
*      - OB - 
*       400-404  RING PACKET BUFFER 
*       470-477  DIAG REG FUNCTIONS 
*      - SB - 
*       0 , 1  CRP STATUS WORD
* 
* 
*   2.3   SUBMODULES USED 
*       - CRP31 - 
*          CRP31A TO CRP31E - SUBMODULE STRING. 
*       - CRP31A -
*          CRP31B - CONTINUATION OF MODULE
*          CRP97Z - ERROR/ABORT PROCESSOR 
*       - CRP31B -
*          CRP31C - CONTINUATION OF MODULE
*          CRP97Z - ERROR/ABORT PROCESSOR 
*       - CRP31C -
*          CRP31D - CONTINUATION OF MODULE
*          CRP98Q - ERROR PROCESSOR 
*       - CRP31D -
*          CRP31E - CONTINUATION OF MODULE
*          CRP98Q - ERROR PROCESSOR 
*       - CRP31E -
*          CRP98Q - ERROR PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP31  - LOST PACKET TEST 
10 FORMAT CRP31 ERROR(S)IN MODULE = *DEC
26 FORMAT CRP31 PARAMETER ERROR  P5 .GT. 5  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRLP=474,DLPD=476 
   EQUATE RCRDATA=400,RDRDATA=401 
*    RDR DATA  MODE 2 
   DATA (OB(401),CON) 125,125,377,377 
*    FUNCTIONS     CLEAR,CLRCRP,CLRLP,DLPD
   DATA (OB(470),H) 0000, 0100, 0400, 0001
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 31D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   IF(P5.EQ.0)GOTO 36        *NO USER SET CONDITION 
   IF(P5.LE.5)GOTO 34        *CONDITION IN RANGE
33 MSG 26(P5) TO DAYFILE,PRINT,DISPLAY   *P5 ERROR MSG
   PAUSE
   BLANK
   GOTO 30                   *RESTART MODULE
* 
* ----------------CALL SUBMODULES-------------------- 
* 
34 IF(P5.EQ.1)GOTO 36        *CONDITION 1 START 31A 
   IF(P5.EQ.2)GOTO 40        *CONDITION 2 START 31B 
   IF(P5.EQ.3)GOTO 42        *CONDITION 3 START 31C 
   IF(P5.EQ.4)GOTO 44        *CONDITION 4 START 31D 
   IF(P5.EQ.5)GOTO 46        *CONDITION 5 START 31E 
   GOTO 33                   *SHOULD NOT BE HERE. P5 ERROR
* 
36 CALL 31A                  *START SUBMODULE 31A 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
40 CALL 31B                  *START SUBMODULE 31B 
   GOTO 50                   *TEST RETURN,FROM SUBMODULE
* 
42 CALL 31C                  *START SUBMODULE 31C 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
44 CALL 31D                  *START SUBMODULE 31D 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
46 CALL 31E                  *START SUBMODULE 31E 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
* ---------------ENDS / REPEATS---------------------- 
* 
50 PASS 
52 IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   IF(B11.GT.ERRLIM)GOTO 60    *EXIT MODULE ON ERR LIMIT
   IF(ES.AND.RM.NE.0)GOTO 32   *RM
60 EXIT                        *END MODULE
* 
   END 30 
COMPILE   *CRP31 - LOST PACKET TEST CONTROL 
   MODULE CRP31A,6000(200),LOCK 
***       CRP31A - TEST LOST PACKET-MULTI-LOST PACKET GS BIT -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP31A - LOST PACKET TEST - 1 
2  FORMAT CRP31A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT DATA COMPARE ERROR LP-CTL EXP=*3HH, ACT=*3HH
4  FORMAT DATA COMPARE ERROR LP-DATA EXP=*H*HH, ACT=*H*HH 
5  FORMAT CRP31A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP31A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP31A
20 FORMAT LOST PACKET GS BIT(LP) NOT RESET BY CLRCRP FUNC 
21 FORMAT MULTI-LOST PKT BIT(MLP) NOT RESET BY CLRCRP FUNC
22 FORMAT LOST PACKET GS BIT NOT SET BY RING FUNC=0010B 
23 FORMAT DATA COMPARE ERROR FROM RING IN LP CTL REG
25 FORMAT DATA COMPARE ERROR FROM RING IN LP DATA REG 
26 FORMAT LOST PACKET GS BIT NOT RESET BY READ OF LP REGS 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRLP=474,DLPD=476 
   EQUATE RCRDATA=400,RDRDATA=401 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
* 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE        *RUNNING MSG 
32 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------LOST PACKET TEST---------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF P4 SET 
   B0 = 0311D 
   B12 = 1
   RES ,ABT 70
   GOSUB 66                      *WRITE FUNC TO DIAG REG
   GOSUB 64                      *READ GSW
* 
   IF(SB(1).AND.40.NE.0) ERROR 20/311D GOTO 50  *IF LP SET
   IF(SB(1).AND.100.NE.0)ERROR 21/312D GOTO 50  *IF MLP SET 
* 
   OB(400) = P1.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 42            *NO USER DATA-USE DEFLT
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
42 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(1).AND.40.EQ.0) ERROR 22/313D GOTO 50  *LP NOT SET 
* 
   BA = 0                        *READ LOST PACKET REGS 
   WC = 1 
   B12 = 5
   FIN 3,ABT 70                  *READ LP CTL (1 WD)
   COMPARE OB(400) TO IB(0) FOR WC,ABT 46 
   WC = 2 
   FIN 204,ABT 70                *READ LP DATA
   COMPARE OB(401) TO IB(0) FOR WC,ABT 47 
   GOSUB 64                      *READ GSW
   IF(SB(1).AND.40.NE.0) ERROR 26/316D GOTO 50  *IF LP SET
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0                       *CLEAT LOOP CNTR 
* 
* -----------------LOOPS/REPEATS----------------- 
* 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 31B 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
   GOTO 44                       *END MODULE/SUBMODULE
* 
43 EXIT TO 31B                   *CONTINUE TESTING
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                          *END MODULE
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
46 ERROR 23/314D GOTO 50         *LP CTL COMPARE ERROR
47 ERROR 25/315D                 *DATA COMPARE ERROR
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   IF(EM.EQ.23)MSG 3(OB(400),IB(0)) TO LINE 4  *CTL ERROR 
   IF(EM.EQ.25)MSG 4(OB(401),OB(402),IB(0),IB(1)) TO LINE 4 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR MSGS
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 0 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *CLRCRP ENTRY
67 B12 = 2                       *ANY FUNC ENTRY
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *CLEAR PENDING SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *POST ABORT/LC MSG
   GOTO 40                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                          *FLAG ABORT PROCESSING 
   EXIT TO 97Z                     *PROCESS ABORT MSGS
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 44        *ERROR LIMIT 
   GOTO 40                         *RETURN TO LOOP
* 
77 END 30 
COMPILE   *CRP31A - LOST PACKET TEST - 1
   MODULE CRP31B,6000(200),LOCK 
***       CRP31B - TEST LOST PACKET-MULTI-LOST PACKET GS BIT -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP31B - LOST PACKET TEST - 2 
2  FORMAT CRP31B .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP31B  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP31B.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP31B
20 FORMAT LOST PACKET GS BIT(LP) NOT RESET BY CLRCRP FUNC 
21 FORMAT MULTI-LOST PKT BIT(MLP) NOT RESET BY CLRCRP FUNC
22 FORMAT LOST PACKET GS BIT NOT SET BY RING FUNC=0010B 
23 FORMAT LOST PACKET GS BIT NOT RESET BY CLRLP FUNC
24 FORMAT LOST PACKET GS BIT NOT RESET BY DLPD FUNC 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRLP=474,DLPD=476 
   EQUATE RCRDATA=400,RDRDATA=401 
* 
* -----------------INITIALIZATION-------------- 
* 
30 IF(B0.EQ.0726D)GOTO 52        *RETURN FROM 97Z 
* 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE   *RUNNING MSG
32 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------LOST PACKET TEST---------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B0 = 0312D 
   GOSUB 54                      *RES CHANNAL AND CLRCRP
   GOSUB 64                      *READ GSW
   GOSUB 56                      *SET UP FOR LP.. 
*                                *STATUS/WRITE RCR-DR/STATUS
   BA = CLRLP                    *SET CLRLP 
   GOSUB 67                      *SEND FUNCTION 
   GOSUB 64                      *RD GSW
   IF(SB(1).AND.40.NE.0) ERROR 23/317D GOTO 50  *LP SET 
* 
42 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B0 = 0312D 
   GOSUB 54                      *RES CHAN AND CLRCRP 
   GOSUB 64                      *READ GSW
   GOSUB 56                      *SET UP
   BA = DLPD                     *SET DISABLE LP (DLPD) 
   GOSUB 67                      *SEND FUNCTION 
   GOSUB 64                      *RD GS 
   IF(SB(1).AND.40.NE.0) ERROR 24/318D GOTO 50  *LP SET 
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 31C 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
   GOTO 44
* 
43 EXIT TO 31C                   *CONTINUE TESTING
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 51     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 53                       *RETURN TO LOOP
* 
51 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR MSGS
* 
52 MSG 0 TO DISPLAY              *RESET RUNNING MSG 
   IF(B11.GT.ERRLIM)GOTO 44 
* 
53 IF(EM.LE.317D)GOTO 40         *LOOP BACK TO CONDITION
   IF(EM.EQ.318D)GOTO 42         *LOOP BACK 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----RES/CLRCRP----- 
54 B12 = 1
   RES ,ABT 70
   GOSUB 66                      *WRITE FUNC TO DIAG REG
   RETURN 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
56 IF(SB(1).AND.40.NE.0) ERROR 20/311D GOTO 50  *IF LP SET
   IF(SB(1).AND.100.NE.0)ERROR 21/312D GOTO 50  *IF MLP SET 
* 
   OB(400) = P1.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(1).AND.40.EQ.0) ERROR 22/313D GOTO 50  *LP NOT SET 
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                *WRITE RCR MODE 0
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70               *WRITE RDR MODE 2
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRLP 
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                        *ERROR CNTR 
   ENDSUB                               *CLEAR PENDING SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74            *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY       *POST ABORT/LC MSG
   GOTO 53                              *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                               *FLAG ABORT PROCESS 
   EXIT TO 97Z                          *PROCESS ABORT MSGS 
* 
77 END 30 
COMPILE   *CRP31B - LOST PACKET TEST - 2
   MODULE CRP31C,6000(200),LOCK 
***       CRP31C - TEST LOST PACKET-MULTI-LOST PACKET GS BIT -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP31C - LOST PACKET TEST - 3 
2  FORMAT CRP31C .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
6  FORMAT CRP31C.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP31C
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRLP=474,DLPD=476 
   EQUATE RCRDATA=400,RDRDATA=401 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0817D)GOTO 53        *RETURN FROM 98Q 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE        *RUNNING MSG 
32 MSG 0 TO DISPLAY 
   B0 = 0355                     *SET SUBMODULE CHAR
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------LOST PACKET TEST---------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B0 = 0355                     *SET SUBMODULE CHAR
   GOSUB 54                      *RES CHANNAL AND CLRCRP
   GOSUB 64                      *READ GSW
   B2 = 0                        *RDR MODIFIER
   GOSUB 55                      *SET UP FOR LP.. 
   B2 = 2                        *SET RDR MODIFIER
*                                *STATUS/WRITE RCR-DR/STATUS
   GOSUB 56                      *WRITE 2ND LOST PKT.(MLP)
   IF(SB(1).AND.100.EQ.0)ERROR 23/319D GOTO 50  *MLP ERROR
* 
42 BA = 0 
   WC = 1 
   B12 = 5
   FIN 3,ABT 70                  *READ RCR MODE 0 
   IF(OB(400).NE.IB(0))ERROR 3/320D GOTO 50  *RCR/RING BAD
   WC = 2                        *WC FOR RDR
   FIN 204,ABT 70                *READ RDR MODE 2 
   IF(IB(0).EQ.OB(403))ERROR 7/321D GOTO 50  *LP2 OVRWR 
   IF(OB(401).NE.IB(0))ERROR 4/322D GOTO 50  *RING DATA BAD 
* 
   GOSUB 64                      *READ GSW
   IF(SB(1).AND.140.NE.0)ERROR 14/328D GOTO 50  *LP/MLP SET 
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 31D 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
   GOTO 44
* 
43 EXIT TO 31D                   *CONTINUE TESTING
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 51     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 53                       *RETURN TO LOOP
* 
51 B1 = 0                        *CLEAR ABORT FLAG
   EXIT TO 98Q
53 B0 = 0355                     *RESET SUBMODULE CHAR
   IF(B11.GT.ERRLIM)GOTO 44      *ERROR LIMIT 
   IF(EC.LE.319D)GOTO 40         *LOOP BACK TO CONDITION
   IF(EC.GT.319D)GOTO 42         *LOOP BACK 
   IF(EC.GE.4000)GOTO 40         *DRIVER ABORT RETURN 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----RES/CLRCRP----- 
54 B12 = 1
   RES ,ABT 70
   GOSUB 66                      *WRITE FUNC TO DIAG REG
   RETURN 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
55 IF(SB(1).AND.40.NE.0) ERROR 20/311D GOTO 50  *IF LP SET
   IF(SB(1).AND.100.NE.0)ERROR 21/312D GOTO 50  *IF MLP SET 
* 
56 OB(400) = P1.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(1).AND.40.EQ.0) ERROR 22/313D GOTO 50  *LP NOT SET 
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA+B2                *B2 MODIFIES ON 2ND PKT 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRLP 
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 53                           *RETURN TO LOOP
* 
74 B1 = 7000                         *PROCESS NON.SL. ABT 
   EXIT TO 98Q                       *PROCESS ABORT 
* 
77 END 30 
COMPILE   *CRP31C - LOST PACKET TEST - 3
   MODULE CRP31D,6000(200),LOCK 
***       CRP31D - TEST LOST PACKET-MULTI-LOST PACKET GS BIT -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP31D - LOST PACKET TEST - 4 
2  FORMAT CRP31D .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
6  FORMAT CRP31D.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP31D
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRLP=474,DLPD=476 
   EQUATE RCRDATA=400 , RDRDATA=401 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0817D)GOTO 53        *RETURN FROM 98Q 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE        *RUNNING MSG 
32 MSG 0 TO DISPLAY 
   B0 = 0455                     *SET SUBMODULE CHAR
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------LOST PACKET TEST---------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B0 = 0455                     *SET SUBMODULE CHAR
   GOSUB 54                      *RES CHANNAL AND CLRCRP
   GOSUB 64                      *READ GSW
   GOSUB 55                      *SET UP FOR LP.. 
   BA = CLRLP                    *SET CLRLP 
   GOSUB 67                      *SEND / RESET DIAG REG 
   GOSUB 64                      *READ GSW
   IF(SB(1).AND.140.NE.0)ERROR 24/323D GOTO 50  *MLP=1/CLRLP
* 
42 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B0 = 0455                     *SET SUBMODULE CHAR
   GOSUB 54                      *RES CCHAN AND CLRCRP
   GOSUB 64                      *READ GSW
   GOSUB 55                      *CHK STAT/WR 2 LPS/CHK STAT
   BA = DLPD                     *SET DLPD IN DIAG REG
   GOSUB 67                      *FUNC TO DIAG REG
   GOSUB 64                      *READ GSW
   IF(SB(1).AND.140.NE.0)ERROR 25/324D GOTO 50  *MLP=1/DLPD 
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 31E 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
   GOTO 44                       *EXIT/END
* 
43 EXIT TO 31E                   *CONTINUE IN 31E 
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 53                       *RETURN TO LOOP
* 
52 B1 = 0                        *CLEAR ABORT FLAG
   EXIT TO 98Q                   *PROCESS ERROR 
53 B0 = 0455                     *SUBMODULE CHAR
   IF(B11.GT.ERRLIM)GOTO 44      *ERROR LIMIT EXIT/END
   IF(EC.LE.323D)GOTO 40         *LOOP BACK TO CONDITION
   IF(EC.GE.324D)GOTO 42         *LOOP BACK 
   IF(EC.GE.4000)GOTO 40         *DRIVER ABORT EC 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----RES/CLRCRP----- 
54 B12 = 1
   RES ,ABT 70
   GOSUB 66                      *WRITE FUNC TO DIAG REG
   RETURN 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
55 IF(SB(1).AND.40.NE.0) ERROR 20/311D GOTO 50  *LP SET 
   IF(SB(1).AND.100.NE.0)ERROR 21/312D GOTO 50  *MLP SET
* 
56 OB(400) = P1.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6                  *FORM RDR WD 
   OB(402) = P7                  *- 
57 B2 = 0                        *1ST PKT 
   GOSUB 62                      *WRITE RCR/RDR 
   B2 = 2                        *MODIFY RDR DATA ADDRESS 
   GOSUB 62                      *WR 2ND PKT
   IF(SB(1).AND.40.EQ.0) ERROR 22/313D GOTO 50  *LP NOT SET 
   IF(SB(1).AND.100.EQ.0)ERROR 23/319D GOTO 50  *MLP NOT SET
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA+B2                *B2 MODIFIES ON 2ND PKT 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 53                           *RETURN TO LOOP
* 
74 B1 = 7000                         *FLAG PROCESSOR ABT
   EXIT TO 98Q                       *PROCESS NON SL ABT
* 
77 END 30 
COMPILE   *CRP31D - LOST PACKET TEST - 4
   MODULE CRP31E,6000(200),LOCK 
***       CRP31E - TEST LOST PACKET-MULTI-LOST PACKET GS BIT -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP31E - LOST PACKET TEST - 5 
2  FORMAT CRP31E .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP31E  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP31E.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP31E
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRLP=474,DLPD=476 
   EQUATE RCRDATA=400 , RDRDATA = 401 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0817D)GOTO 40        *RETURN FROM 98Q 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE        *RUNNING MSG 
32 MSG 0 TO DISPLAY 
   B0 = 0555                     *SET SUBMODULE CHAR
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------LOST PACKET TEST - 5---------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B0 = 0555                     *RESET SUBMODULE CHAR
   GOSUB 54                      *RES CHANNAL AND CLRCRP
   GOSUB 64                      *READ GSW
   IF(SB(1).AND.40.NE.0) ERROR 20/311D GOTO 50  *MLP/LP SET 
   IF(SB(1).AND.100.NE.0)ERROR 21/312D GOTO 50
   BA = DLPD                     *DLPD FUNC CODE
   WC = 1 
   B12 = 6
   FOUT 50,ABT 70                *SEND FUNC TO DIAG REG.
   GOSUB 56                      *SEND 2 LOST PKTS
   IF(SB(1).AND.40.NE.0) ERROR 25/326D GOTO 50  *LP SET 
   IF(SB(1).AND.100.NE.0)ERROR 26/327D GOTO 50  *MLP SET
* 
   GOTO 40 WHILE(B10+1.LE.150D)  *LOOP 150D TIMES 
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 44            *CONTINUE IN 31D 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 B1 = 0                        *CLEAR ABORT FLAG
   EXIT TO 98Q                   *PROCESS ERROR 
   GOTO 40                       *RETURN TO LOOP
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----RES/CLRCRP----- 
54 B12 = 1
   RES ,ABT 70
   GOSUB 66                      *WRITE FUNC TO DIAG REG
   RETURN 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
55 IF(SB(1).AND.40.NE.0) ERROR 20/311D GOTO 50  *IF LP SET
   IF(SB(1).AND.100.NE.0)ERROR 21/312D GOTO 50  *IF MLP SET 
* 
56 OB(400) = P1.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6                  *FORM RDR WD 
   OB(402) = P7                  *- 
57 B2 = 0                        *1ST PKT 
   GOSUB 62                      *WRITE RCR/RDR 
   B2 = 2                        *MODIFY RDR DATA ADDRESS 
   GOSUB 62 
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA+B2                *B2 MODIFIES ON 2ND PKT 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 1 WORDS TO SB(0),ABT 70 
   RETURN 
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 B1 = 7000                         *FLAG ABORT
   EXIT TO 98Q                       *PROCESS NON SL ABT
* 
77 END 30 
COMPILE   *CRP31E - LOST PACKET TEST - 5
   MODULE CRP33,6000(200),LOCK
***       CRP33 - REQUEST STACK READY TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE REQUEST STACK READY BIT 
*         IN THE GSW, RING FUNCTION CODE 0001, THE CLEAR RQSTK READY
*         BIT IN THE DIAGNOSTIC REGISTER, AND THE REQUEST STACK 
*         MEMORY. 
*         MODULE TEST THE REQUEST STACK READY LOGIC IN 2 SUBMODULES.
*            CRP33 AND CRP33A 
* 
* 
*   1.2   METHOD
* 
*           STEPS 1 - 8 APPLY TO BOTH 33 AND 33A. 
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             (SL) IS SELECTED. 
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE REQUEST STACK READY
*             BIT IS RESET. ERROR CODE(ECD) = 331D. 
*         8.  IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         9.  WRITE THE RING CONTROL REGISTER WITH A 0001 RING
*             FUNCTION CODE AND AN EQUIPMENT CODE SPECIFIED IN
*             PARAMETER WORD P0.
*         10. WRITE THE RING DATA REGISTER WITH DATA SPECIFIED IN 
*             PARAMETER WORDS P6 AND P7 IF NON-ZERO, OR DATA OF 
*             ALTERNATING ONES AND ZEROS. 
*         11. READ THE GSW AND VERIFY THAT THE RQSTK READY BIT
*             IS SET. ECD = 332D. 
*         12. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         13. READ THE REQUEST STACK AND VERIFY THE DATA. 
*             ECD = 333D -DATA ERROR IN RQSTK DATA. 
*         14. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         15. READ THE GSW AND VERIFY THAT THE RQSTK READY BIT
*             IS RESET. ECD = 335.
*         16. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         17. REPEAT STEPS 1-16 150D TIMES. 
*         18. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER. 
* 
*       - CRP33A -
*            STEPS 1-8 APPLY TO CRP33A ALSO.
*         19. REPEAT STEPS 9,10, AND 11.
*         20. SET AND RESET THE CLEAR RQSTK BIT IN THE DIAGNOSTIC 
*             REGISTER. 
*         21. READ THE GSW AND VERIFY THAT THE RQSTK READY BIT
*             IS RESET. ECD = 335.
*         22. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, AND 19 - 21. 
*         23. REPEAT STEPS 19-22 150D TIMES.
*         24. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER. 
*         25. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         26. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-25.
*             REPEATS CONTROLLED BY P5 PARAMETER AND RM CONDITIONS. 
*         27. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS.
*         28. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP33 
*           . CRP33 ERROR(S) IN MODULE = *DEC 
*           . CRP33 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . RQSTK RDY GS BIT NOT RESET BY CLRCRP FUNC 
*           . RQSTK RDY GS BIT NOT SET BY RING FUNC=0001B 
*           . DATA COMPARE ERROR FROM RING TO RQSTK DATA
*           . RQSTK RDY BIT NOT RESET BY READ OF RQSTK REG
*           .          . DATA ERROR EXP=*H*HH , ACT=*H*HH 
*           . CRP33 PARAMETER ERROR  P5.GT.2  P5=*OCT 
*           . RQSTK RDY GS BIT NOT RESET BY CLRCRP FUNC 
*           . RQSTK RDY GS BIT NOT SET BY RING FUNC=0001B 
*           . RQSTK RDY BIT NOT RESET BY CLRRQ FUNC 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   P0 CRPEQUIPMENT CODE
* 
*        - REPAIR MODE
*         P0 CRP EQUIPMENT CODE.
*         P4 LOOPING DELAY
*         P5 SUBMODULE CONDITION SELECTOR 
*            P5 = 0 RUN BOTH CRP33 AND CRP33A.
*               = 1 RUN ONLY CRP33  ,  = 2 RUN ONLY CRP33A. 
*          P6 DATA PATTERN SELECTION FOR RQSTK DATA.
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-31 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*       - IB -
*        0 , 1 RQSTK DATA READ BUFFER 
*       - OB -
*        400-402 RING PACKET WRITE BUFFER 
*         470-475 DIAG REG FUNCTIONS
*       - SB -
*        0 , 1   CRP STATUS WORD
* 
* 
*   2.3   SUBMODULES USED 
*       - CRP33 - 
*          CRP33A - CONTINUATION OF MODULE
*          CRP97X - ERROR/ABORT PROCESSOR 
*       - CRP33A -
*          CRP97Z - ERROR/ABORT PRORESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP33  - RQSTK RDY TEST - 1 
2  FORMAT CRP33 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
5  FORMAT CRP33  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP33.SL. ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP33 
10 FORMAT CRP33 ERROR(S) IN MODULE = *DEC 
20 FORMAT RQSTK RDY GS BIT NOT RESET BY CLRCRP FUNC 
21 FORMAT RQSTK RDY GS BIT NOT SET BY RING FUNC=0001B 
23 FORMAT DATA COMPARE ERROR FROM RING TO RQSTK DATA
24 FORMAT RQSTK RDY BIT NOT RESET BY READ OF RQSTK REG
25 FORMAT FORMAT DATA ERROR EXP=*H*HH , ACT=*H*HH 
26 FORMAT CRP33 PARAMETER ERROR  P5.GT.2  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRRQ=474
   EQUATE RCRDATA=400,RDRDATA=401 
   DATA (OB(401),CON) 125,125 
   DATA (OB(470),H) 0000, 0100, 0800
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 33D
   IF(P5.EQ.0)GOTO 32            *COND OK 33/33A
   IF(P5.EQ.1)GOTO 32            *COND.FOR 33 
   IF(P5.EQ.2)GOTO 43            *COND. FOR 33A 
   MSG 26(P5) TO DISPLAY,PRINT,DAYFILE
   GOTO 77                       *END/EXIT INTERNAL ERROR 
* 
32 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------RQSTK RDY TEST - 1---------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   GOSUB 54                      *RES CHANNAL AND CLRCRP
   GOSUB 64                      *READ GSW
   GOSUB 55                      *SEND PKT CHK STATUS 
* 
   BA = 0 
   WC = 2 
   B12 = 5
   FIN 205,ABT 70                *READ RQSTK MODE 2 
   COMPARE OB(401) TO IB(0) FOR WC,ABT 46  *DATA ERROR
   GOSUB 64                      *READ GSW
   IF(SB(1).AND.1.NE.0) ERROR 24/334D GOTO 50  *RQS RDY SET 
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 33A 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
   GOTO 44                       *EXIT / END 33 
* 
43 CALL 33A                      *CALL NEXT SUBMODULE 33A 
* 
   IF(ES.AND.RM.EQ.0)GOTO 45
   GOTO 32                       *REPEAT MODULE 
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
45 IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
46 ERROR 23/333D                 *DATA COMP ERR RING/RQSTK
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   IF(EM.EQ.23)MSG 25(OB(401),OB(402),IB(0),IB(1)) TO LINE 4
   B1 = 7700                    *FLAG HALT TO 97X 
   CALL 97X                     *PROCESS PICTURE/HALT 
   GOTO 76                      *FINISH DISPLAY 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----RES/CLRCRP----- 
54 B12 = 1
   RES ,ABT 70
   GOSUB 66                      *WRITE FUNC TO DIAG REG
   RETURN 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
55 IF(SB(1).AND.1.NE.0) ERROR 20/331D GOTO 50  *IF RQSTK SET
* 
56 OB(400) = P0.AND.377.OR.0400  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(1).AND.1.EQ.0) ERROR 21/332D GOTO 50  *RQSTK RESET 
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----WRITE DIAG REG----- 
66 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(CLRCRP) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                     *FLAG ABORT MSGS
   CALL 97X                   *PROCESS ABORT MSGS 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 44      *ERROR LIMIT 
   GOTO 40                        *RETURN TO LOOP 
* 
77 END 30 
COMPILE   *CRP33 - RQSTK RDY TEST - 1 
   MODULE CRP33A,6000(200),LOCK 
***       CRP33A - TEST RQSTK  READY GS BIT - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP33A - RQSTK RDY TEST - 2 
2  FORMAT CRP33A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP33A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP33A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP33A
20 FORMAT RQSTK RDY GS BIT NOT RESET BY CLRCRP FUNC 
21 FORMAT RQSTK RDY GS BIT NOT SET BY RING FUNC=0001B 
22 FORMAT RQSTK RDY BIT NOT RESET BY CLRRQ FUNC 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRRQ=474
   EQUATE RCRDATA=400,RDRDATA=401 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
32 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------RQSTK RDY TEST - 2---------------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B0 = 0331D                    *SET EXIT-TO FLAG
   GOSUB 54                      *RES CHANNAL AND CLRCRP
   GOSUB 64                      *READ GSW
   GOSUB 55                      *SEND PKT CHK STATUS 
* 
   BA = CLRRQ 
   GOSUB 67                      *SEND CLRRQ FUNC TO DIAG 
   GOSUB 64                      *READ GSW
   IF(SB(1).AND.1.NE.0) ERROR 22/335D GOTO 50  *RQS RDY SET 
* 
   GOTO 40 WHILE(B10+1.LE.150D)  *LOOP 150D TIMES 
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 44            *EXIT/RETURN TO 33 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                          *EXIT/RETURN TO 33 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR MSGS
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----RES/CLRCRP----- 
54 B12 = 1
   RES ,ABT 70
   GOSUB 66                      *WRITE FUNC TO DIAG REG
   RETURN 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
55 IF(SB(1).AND.1.NE.0) ERROR 20/331D GOTO 50  *IF RQSTK SET
* 
56 OB(400) = P0.AND.377.OR.0400  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(1).AND.1.EQ.0) ERROR 21/332D GOTO 50  *RQSTK RESET 
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----WRITE DIAG REG----- 
66 BA = CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT PROCESSING
   EXIT TO 97Z                      *PROCESS ABORT MSGS 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 44         *ERROR LIMIT
   GOTO 40                          *RETURN TO LOOP 
* 
77 END 30 
COMPILE   *CRP33A - RQSTK RDY TEST - 2
   MODULE CRP35,6000(200),LOCK
***       CRP35 - DATA FIFO READY TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE DATA FIFO READY BIT 
*         IN THE GSW, RING FUNCTION CODE 0010, THE CLEAR CF/DF
*         BIT IN THE DIAGNOSTIC REGISTER, AND THE CONTROL AND 
*         DATA FIFO MEMORIES. 
*         MODULES TESTS DATA FIFO READY LOGIC IN 2 PARTS, 
*         CRP35 AND CRP35A. 
* 
* 
*   1.2   METHOD
* 
*           STEPS 1-8 APPLY TO BOTH CRP35 AND CRP35A. 
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             (SL) IS SELECTED. 
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE DATA FIFO READY BIT
*             IS RESET. ERROR CODE(ECD) = 351.
*         8.  IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         9.  WRITE THE RING CONTROL REGISTER WITH A 0010 RING
*             FUNCTION CODE AND AN EQUIPMENT CODE SPECIFIED IN
*             PARAMETER WORD P0 USING CYBER CRP FUNCTION 52.
*         10. WRITE THE RING DATA REGISTER WITH 2 DATA WORDS SPECIFIED
*             IN THE LOWER 8 BITS OF PARAMETER WORDS P6 AND P7 IF NON-
*             ZERO, OR DATA OF ALTERNATING ONES AND ZEROS, USING CYBER
*             CRP FUNCTION 53.
*         11. READ THE GSW AND VERIFY THAT THE DATA FIFO READY BIT
*             IS SET. ECD = 352.
*         12. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         13. SET AND RESET THE CLEAR FIFO BIT IN THE DIAGNOSTIC REG. 
*         14. READ THE GSW AND VERIFY THAT THE DATA FIFO READY BIT
*             IS RESET. ECD = 353.
*         15. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         16. REPEAT STEPS 4-15 150D TIMES. 
*         17. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER AND RM.
* 
*        - CRP35A - 
*            STEPS 1-8 APPLY TO CRP35A. 
*         18. REPEAT STEPS 9, 10, AND 11. 
*         19. READ THE CONTROL AND DATA FIFO USING CYBER CRP FUNCTION 
*             26 AND VERIFY THE DATA. 
*             ECD = 354 DATA ERROR IN CF. 
*             ECD = 355 DATA ERROR IN DF. 
*         20. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, 18 AND 19. 
*         21. READ THE GSW AND VERIFY THAT THE DATA FIFO READY BIT IS 
*             IS RESET. ECD = 353.
*         22. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, AND 18 - 21. 
*         23. REPEAT STEPS 18-22 150D TIMES.
*         24. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER. 
*         25. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         26. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1 - 25.
*         27. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         28. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP35 
*           . CRP35 ERROR(S) IN MODULE = *DEC 
*           . CRP35 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . DATA FIFO RDY GS BIT NOT RESET BY CLRCRP FUNC 
*           . DATA FIFO RDY GS BIT NOT SET BY RING FUNC=0010B 
*           . DATA FIFO RDY GS BIT NOT RESET BY CLRFIFO FUNC
*           . CRP35 PARAMETER ERROR  P5.GT.2  P5=*OCT 
*           . DATA DATA ERROR EXP=*H*H , ACT=*H*HH
*           . CTL DATA ERROR EXP=*3HH , ACT=*3HH
*           . CRP35A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
*           . CRP35A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
*           . // MODULE ERROR LIMIT-CRP35A
*           . DATA FIFO GS BIT NOT RESET BY CLRCRP FUNC 
*           . DATA FIFO GS BIT NOT SET BY RING FUNC=0010B 
*           . DATA COMPARE ERROR FROM RING TO FIFO DATA 
*           . CTL COMPARE ERROR FROM RING TO FIFO CTL 
*           . FIFO RDY BIT NOT RESET BY READ OF FIFO REGS 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   P0 CRP EQUIPMENT CODE 
* 
*        - REPAIR MODE
*         P0 CRP EQUIPMENT CODE 
*         P4 LOOPING DELAY
*         P5 SUBMODULE (CONDITION) SELECTOR 
*            P5 = 0 RUN BOTH CRP35 AND CRP35A.
*               = 1 RUN ONLY CRP35  ,  = 2 RUN ONLY CRP35A
*         P6 , P7 DATA PATTERN FOR RQSTK
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-33 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*       - IB -
*        0 - 3 RQSTK READ BUFFER
*       - OB -
*        400 - 402  RCR/RDR PACKET WRITE BUFFER 
*         470-475 DIAG REG FUNCTIONS
*       - SB -
*        0 , 1   CRP STATUS WORDS 
* 
* 
*   2.3   SUBMODULES USED 
*       - CRP35 - 
*          CRP35A - CONTINUATION OF MODULE
*          CRP97X - ERROR/ABORT PROCESSOR 
*       - CRP35A -
*          CRP97Z - ERROR/ABORT PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP35  - DATA FIFO RDY TEST - 1 
2  FORMAT CRP35 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
5  FORMAT CRP35  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP35.SL. ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP35 
10 FORMAT CRP35 ERROR(S) IN MODULE = *DEC 
20 FORMAT DATA FIFO RDY GS BIT NOT RESET BY CLRCRP FUNC 
21 FORMAT DATA FIFO RDY GS BIT NOT SET BY RING FUNC=0010B 
22 FORMAT DATA FIFO RDY GS BIT NOT RESET BY CLRFIFO FUNC
26 FORMAT CRP35 PARAMETER ERROR  P5.GT.2  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRFIFO=474
   EQUATE RCRDATA=400,RDRDATA=401 
   DATA (OB(401),CON) 125,125 
   DATA (OB(470),H) 0000, 0100, 0200
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 35D
32 IF(P5.EQ.0)GOTO 34            *COND OK 35/35A
   IF(P5.EQ.1)GOTO 34            *COND.FOR 35 
   IF(P5.EQ.2)GOTO 43            *COND. FOR 35A 
   MSG 26(P5) TO DISPLAY,PRINT,DAYFILE
   GOTO 77                       *END/EXIT INTERNAL ERROR 
* 
34 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------DATA FIFO RDY TEST - 1---------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   GOSUB 65                      *RES CHANNAL AND CLRCRP
   GOSUB 64                      *READ GSW
   GOSUB 54                      *SEND PKT CHK STATUS 
* 
   BA = CLRFIFO                  *CLRFIFO FUNC
   GOSUB 67                      *SEND DIAG REG FUNC/CLEAR
   GOSUB 64                      *READ GSW
   IF(SB(1).AND.2.NE.0) ERROR 22/353D GOTO 50  *FIFO RDY SET
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 35A 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
   GOTO 44                       *EXIT / END 35 
* 
43 CALL 35A                      *CALL NEXT SUBMODULE 35A 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE(RETURN FROM 35A) 
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                     *FLAG PICTURE/HALT TO 97X
   CALL 97X                      *PROCESS ERROR MSGS
   GOTO 76                       *FINISH DISPLAY
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
54 IF(SB(1).AND.2.NE.0) ERROR 20/351D GOTO 50  *D-FIFO SET
* 
56 OB(400) = P0.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(1).AND.2.EQ.0) ERROR 21/352D GOTO 50  *D-FIFO RESET
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES ,ABT 70
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT MSGS
   CALL 97X                         *PROCESS ABORT MSGS 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 44         *ERROR LIMIT
   GOTO 40                          *RETURN TO LOOP 
* 
77 END 30 
COMPILE   *CRP35 - DATA FIFO RDY TEST - 1 
   MODULE CRP35A,6000(200),LOCK 
***       CRP35A - TEST DATD FIFO READY GS BIT -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP35A - DATA FIFO RDY TEST - 2 
2  FORMAT CRP35A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT DATA ERROR EXP=*H*HH , ACT=*H*HH
4  FORMAT CTL DATA ERROR EXP=*3HH , ACT=*3HH
5  FORMAT CRP35A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP35A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP35A
20 FORMAT DATA FIFO GS BIT NOT RESET BY CLRCRP FUNC 
21 FORMAT DATA FIFO GS BIT NOT SET BY RING FUNC=0010B 
23 FORMAT DATA COMPARE ERROR FROM RING TO FIFO DATA 
24 FORMAT CTL COMPARE ERROR FROM RING TO FIFO CTL 
25 FORMAT FIFO RDY BIT NOT RESET BY READ OF FIFO REGS 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRFIFO=474
   EQUATE RCRDATA=400,RDRDATA=401 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
32 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------DATA FIFO RDY TEST - 2------------------ 
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B0 = 0351D 
   GOSUB 65                      *RES CHANNAL AND CLRCRP
   GOSUB 64                      *READ GSW
   GOSUB 54                      *SEND PKT CHK STATUS 
* 
   BA = 0 
   WC = 4 
   B12 = 5
   FIN 226,ABT 70                       *READ D-FIFO MODE 2 
   WC = 2                               *WC FOR FIFO DATA 
   COMPARE OB(401) TO IB(0) FOR WC,ABT 46      *DATA ERROR
   IB(2) = IB(2).LS.8.OR.IB(3)          *BUILD 12BITS 
   WC = 1                               *WC FOR CTL 
   COMPARE OB(400) TO IB(2) FOR WC, ABT 47     *CTL ERROR 
   GOSUB 64                             *READ GSW 
   IF(SB(1).AND.2.NE.0) ERROR 25/355D GOTO 50  *D-FIFO SET
* 
   GOTO 40 WHILE(B10+1.LE.150D)         *LOOP 150D TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 44            *CONTINUE IN 35A 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT                          *RETURN TO 35
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
46 ERROR 23/353D GOTO 50         *FIFO DATA ERROR 
47 ERROR 24/354D                 *FIFO CTL ERROR
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   IF(EM.EQ.23)MSG 3(OB(401),OB(402),IB(0),IB(1)) TO LINE 4 
   IF(EM.EQ.24)MSG 4(OB(400),IB(2)) TO LINE 4 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR MSGS
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
54 IF(SB(1).AND.2.NE.0) ERROR 20/352D GOTO 50  *D-FIFO SET
* 
56 OB(400) = P0.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(1).AND.2.EQ.0) ERROR 21/352D GOTO 50  *D-FIFO RESET
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CHAN / CLRCRP-----
65 B12 = 1
   RES , ABT 70 
* ----WRITE DIAG REG----- 
66 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *CLEAR PENDING SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *POST ABORT/LC MSG
   GOTO 40                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT PROCESSING
   EXIT TO 97Z                      *PROCESS ABORT MSGS 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 44         *ERROR LIMIT
   GOTO 40                          *RETURN TO LOOP 
* 
77 END 30 
COMPILE   *CRP35A - DATA FIFO RDY TEST - 2
   MODULE CRP37,6000(200),LOCK
***       CRP37 - CRP FIFO FULL RING STOP TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE CRP FIFO FULL 
*         RING STOP BIT IN THE GSW, AND THE CLEAR CF/DF BIT 
*         AND DISABLE RING STOP BIT IN THE DIAGNOSTIC REGISTER. 
*         MODULE TEST THE FIFO FILL RING STOP LOGIC IN 2 SUBMODULES.
*         CRP37 - CONTROL  ,  CRP37A AND CRP37B TEST PARTS. 
*         P5 IS AVAILABLE TO CONTROL SUBMODULE SELECTION. 
* 
* 
*   1.2   METHOD
* 
*           STEPS 1 - 8 APPLY TO BOTH CRP37A AND CRP37B.
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             (SL) IS SELECTED. 
*     - CRP37A -
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING 
*             STOP BIT IS RESET. ERROR CODE(ECD) = 371. 
*         8.  IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         9.  WRITE THE RING CONTROL REGISTER WITH A 0010 RING
*             FUNCTION CODE AND AN EQUIPMENT CODE SPECIFIED IN
*             PARAMETER WORD P0 USING CYBER CRP FUNCTION 52.
*         10. WRITE THE RING DATA REGISTER WITH THE 2 DATA WORDS
*             SPECIFIED IN THE LOWER 8 BITS OF PARAMETER WORDS
*             P6 AND P7 IF NON-ZERO, OR DATA WORDS OF ALTERNATING 
*             ONES AND ZEROS USING CYBER CRP FUNCTION 53. 
*         11. READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING 
*             STOP BIT REMAINS RESET. 
*             ECD = 372.
*         12. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         13. REPEAT STEPS 10 - 12 FOR 1016 ITERATIONS. 
*         14. REPEAT STEP 10 ONCE.
*         15. READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING 
*             STOP BIT IS SET. ECD = 374. 
*         16. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         17. READ THE DATA FIFO 1 TIME.
*         18. READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING 
*             STOP BIT IS RESET. ECD = 375. 
*         19. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         20. REPEAT STEPS 4-19 50D TIMES.
*         21. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER AND RM.
* 
*           - CRP37B -
*            STEPS 1 - 8 APPLY TO CRP37B. 
*         22. REPEAT STEPS 9 - 12. TO SETUP FIFO. 
*         23. SET THE DISABLE RING STOP BIT IN THE DIAGNOSTIC REG.
*         24. REPEAT STEP 10 ONCE.
*         25. READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING 
*             STOP BIT REMAINS RESET. 
*             ECD = 376 IF RING STOP 1 SET. 
*             ECD = 379 IF DATA FIFO RING STOP SET. 
*         26. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, AND 23 - 25. 
*         27. RESET THE DISABLE RING STOP BIT IN THE DIAGNOSTIC 
*             REGISTER. 
*         28. READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING 
*             STOP BIT IS SET.  ECD = 377 
*         29. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5, 27 AND 28. 
*         30. SET AND RESET THE CLEAR CF/DF BIT IN THE DIAGNOSTIC 
*             REGISTER. 
*         31. READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING 
*             STOP BIT IS RESET. ECD = 378. 
*         32. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5,30 AND 31.
*         33. REPEAT STEPS 26 - 32 50D TIMES. 
*         34. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER AND RM.
*         35. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         36. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         37. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP37 
*           . CRP37 ERROR(S) IN MODULE = *DEC 
*           . CRP37 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*          . DF RDY GS BIT NOT SET BY RING FUNC=0010B 
*          . DF RING STOP GS BIT NOT SET BY WRITING FULL FIFO 
*          . DF RING STOP GS BIT NOT RESET BY READ FROM FIFO
*          . CRP37B   ERC = *DEC , LC = *DEC
*          . DF RING STOP GS BIT NOT RESET BY CLRCRP FUNC 
*          . DF RING STOP GS BIT SET BY RING FUNC=0010B 
*          . SYS RNG STOP GS BIT SET WHILE DRS1 SET IN DIAG REG 
*          . SYS RNG STOP GS BIT DID NOT SET WHEN DRS1 CLEARED
*          . DF RNG STOP GS BIT NOT RESET BY CLRFIFO FUNC 
*          . RING STOP GS BIT NOT SET WITH FULL DF/DRS1 SET 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   P0 CRP EQUIPMENT CODE 
* 
*        - REPAIR MODE
*         P0 CRP EQUIPMENT CODE 
*         P4 LOOPING DELAY
*         P5 SUBMODULE (CONDITION) SELECTOR 
*             P5 = 0 RUN CRP37,37A,37B  ,  = 1 RUN ONLY CRP37A
*                = 2 RUN ONLY CRP37B
*         P6 , P7 DATA PATTERN FOR DATA FIFO. 
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-35 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B8  = DIAG REG FUNCTION CONTROL 
*         B9  = FIFO WORD COUNT 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*       - IB -
*        0 , 1  FIFO READ BUFFER
*       - OB -
*        400 - 402  RING PACKET BUFFER
*         470-477 DIAG REG FUNCTIONS
*       - SB -
*        0 , 1  CRP GS WORD 
* 
* 
*   2.3   SUBMODULES USED 
*        - CRP37 -
*            CRP37A , CRP37B - SUBMODULE STRING 
*         - CRP37A -
*             CRP37B - CONTINUATION OF MODULE 
*             CRP97Z - ERROR/ABORT PROCESSOR
*          - CRP37B - 
*             CRP97Z - ERROR/ABORT PROCESSOR
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP37  - FIFO FULL RING STOP TEST 
10 FORMAT CRP37 ERROR(S)IN MODULE = *DEC
26 FORMAT CRP37 PARAMETER ERROR  P5 .GT. 2  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRFIFO=474
   EQUATE RCRDATA=400,RDRDATA=401,DRS1=476
*    RDR DATA  MODE 2 
   DATA (OB(401),CON) 125,125,377,377 
*    FUNCTIONS     CLEAR,CLRCRP,CLRFIFO,DRS1
   DATA (OB(470),H) 0000, 0100, 0200, 0002
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 37D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   IF(P5.EQ.0)GOTO 36        *NO USER SET CONDITION 
   IF(P5.LE.2)GOTO 34        *CONDITION IN RANGE
33 MSG 26(P5) TO DAYFILE,PRINT,DISPLAY   *P5 ERROR MSG
   PAUSE
   BLANK
   GOTO 30                   *RESTART MODULE
* 
* ----------------CALL SUBMODULES-------------------- 
* 
34 IF(P5.EQ.1)GOTO 36        *CONDITION 1 START 37A 
   IF(P5.EQ.2)GOTO 40        *CONDITION 2 START 37B 
   GOTO 33                   *SHOULD NOT BE HERE. P5 ERROR
* 
36 CALL 37A                  *START SUBMODULE 37A 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
40 CALL 37B                  *START SUBMODULE 37B 
   GOTO 50                   *TEST RETURN,FROM SUBMODULE
* 
* ---------------ENDS / REPEATS---------------------- 
* 
50 PASS 
52 IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   IF(B11.GT.ERRLIM)GOTO 60    *EXIT MODULE ON ERR LIMIT
   IF(ES.AND.RM.NE.0)GOTO 32   *RM
60 EXIT                        *END MODULE
* 
   END 30 
COMPILE   *CRP37 - FIFO FULL RING STOP TEST 
   MODULE CRP37A,6000(200),LOCK 
***       CRP37A - TEST FIFO FULL - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP37A - FIFO FULL RING STOP TEST - 1 
2  FORMAT CRP37A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP37A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP37A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP37A
10 FORMAT CRP37A   ERC = *DEC , LC = *DEC 
20 FORMAT DF RING STOP GS BIT NOT RESET BY CLRCRP FUNC
21 FORMAT DF RING STOP GS BIT SET BY RING FUNC=0010B
22 FORMAT DF RDY GS BIT NOT SET BY RING FUNC=0010B
23 FORMAT DF RING STOP GS BIT NOT SET BY WRITING FULL FIFO
24 FORMAT DF RING STOP GS BIT NOT RESET BY READ FROM FIFO 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRFIFO=474
   EQUATE RCRDATA=400,RDRDATA=401,DRS1=476
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN 97Z
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
34 MSG 0 TO DISPLAY 
   B0 = 0371D                    *EXIT TO FLAG
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------FIFO FULL RING STOP TEST - 1------------ 
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   GOSUB 65                      *RES CHANNEL AND CLRCRP
   GOSUB 64                      *READ GSW (TO SB(0)) 
   GOSUB 54                      *CHK GS/SEND PKT/CHK STATUS
   IF(SB(1).AND.2.EQ.0) ERROR 22/373D GOTO 50   *DF NOT RDY 
   B9 = 1                        *SET FIFO CNT
41 GOSUB 56                      *WRITE RCR/RDR 
   GOTO 41 WHILE(B9+1.LE.1015D)  *ALMOST FILL FIFO
   GOSUB 62                      *WRITE 1 MORE FIFO WD
   IF(SB(0).AND.4.EQ.0)ERROR 23/374D GOTO 50   *NOT DRS1
* 
   BA = 0 
   WC = 2                        *SETUP FOR READ OF FIFO
   B12 = 5
   FIN 206,ABT 70                *RD FIFO 2 WD MODE 2 
   GOSUB 64                      *RD GSW
   IF(SB(0).AND.4.NE.0)ERROR 24/375D GOTO 50  *STILL FULL 
* 
   MSG 10(B11,B10) TO DISPLAY 
* 
   GOTO 40 WHILE(B10+1.LE.5D)      *LOOP 5 TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 37B 
   IF(ES.AND.RM.NE.0)GOTO 34     *RPT MODULE
   GOTO 44                       *EXIT / END 37 
* 
43 EXIT TO 37B                   *EXIT TO NEXT SUBMODULE 37B
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                      *FLAG ERROR PROCESSOR 
   EXIT TO 97Z                    *PROCESS ERROR MSGS 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
54 IF(SB(0).AND.4.NE.0) ERROR 20/371D GOTO 50  *DRS1 SET
* 
56 OB(400) = P0.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(0).AND.4.NE.0) ERROR 21/372D GOTO 50  *DRS1 SET
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES ,ABT 70
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   EXIT TO 97Z                       *PROCESS ABORT 
76 MSG 0 TO DISPLAY 
   B0 = 0371D                        *SUBMODULE FLAG
   IF(B11.GT.ERRLIM)GOTO 44          *ERROR LIMIT 
   GOTO 40                           *RETURN TO LOOP
* 
77 END 30 
COMPILE   *CRP37A - FIFO FULL RING STOP TEST - 1
   MODULE CRP37B,6000(200),LOCK 
***       CRP37B - TEST FIFO FULL - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP37B - FIFO FULL RING STOP TEST - 2 
2  FORMAT CRP37B .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP37B  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP37B.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP37B
10 FORMAT CRP37B   ERC = *DEC , LC = *DEC 
20 FORMAT DF RING STOP GS BIT NOT RESET BY CLRCRP FUNC
21 FORMAT DF RING STOP GS BIT SET BY RING FUNC=0010B
22 FORMAT SYS RNG STOP GS BIT SET WHILE DRS1 SET IN DIAG REG
23 FORMAT SYS RNG STOP GS BIT DID NOT SET WHEN DRS1 CLEARED 
24 FORMAT DF RNG STOP GS BIT NOT RESET BY CLRFIFO FUNC
25 FORMAT RING STOP GS BIT NOT SET WITH FULL DF/DRS1 SET
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRFIFO=474
   EQUATE RCRDATA=400,RDRDATA=401,DRS1=476
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
* 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
34 MSG 0 TO DISPLAY 
   B0 = 0372D                    *EXIT OT FLAG
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------FIFO FULL RING STOP TEST - 2---------- 
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B8 = 1                        *CLEAR DIAG AFTER FUNC 
   GOSUB 65                      *RES CHANNEL AND CLRCRP
   GOSUB 64                      *READ GSW (TO SB(0)) 
   B8 = 1                        *SKIP CLEAR OF DIAG REG BIT
   B9 = 0                        *SET FIFO WRITE CNT
   GOSUB 54            * FILL FIFO/CHK GS/SEND PKT/CHK GS 
   B8 = 0                        *DO NOT CLEAR DIAG REG BIT 
   BA = DRS1                     *FUNC DIAG REG 
   GOSUB 67                      *WRITE DIAG REG
   B8 = 0                        *SET WRITE 1 FIFO WD 
   GOSUB 54 
   IF(SB(0).AND.4.EQ.0)ERROR 25/379D GOTO 50  *NOT DF RS
   IF(SB(0).AND.1.NE.0)ERROR 22/376D GOTO 50  *NOT RS1
* 
   B8 = 1                        *CLEAR DIAG REG BIT
   BA = DRS1
   GOSUB 67                      *WRITE DIAG REG
   GOSUB 64                      *RD GSW
   IF(SB(0).AND.1.EQ.0)ERROR 23/377D GOTO 50  *DF STOP NOT
   BA = CLRFIFO                  *SET DIAG REG FUNC 
   B8 = 1                        *CLEAR DIAG REG BIT
   GOSUB 67                      *SEND CLRFIFO
   GOSUB 64                      *RD GSW
   IF(SB(0).AND.4.NE.0)ERROR 24/378D GOTO 50  *DF STILL FULL
* 
   MSG 10(B11,B10) TO DISPLAY 
* 
   GOTO 40 WHILE(B10+1.LE.50D)     *LOOP 50 TIMES 
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 44            *RETURN-EXIT TO 37 
   IF(ES.AND.RM.NE.0)GOTO 34     *RPT MODULE
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                     *FLAG ERROR MSGS 
   EXIT TO 97Z                   *PROCESS ERRORS
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
54 IF(SB(0).AND.4.NE.0) ERROR 20/371D GOTO 50  *DFRS SET
* 
56 OB(400) = P0.AND.377.OR.1000  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(B8.EQ.1)GOTO 57 WHILE(B9+1.LE.1015D)  *WRT FIFO 
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES ,ABT 70
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   IF(B8.EQ.0)RETURN             *SHORT RETURN (BITS SET) 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *CLEAR PENDING SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *POST ABORT/LC MSG
   GOTO 40                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                          *FLAG ABORT MSGS 
   EXIT TO 97Z                     *PROCESS ABORT MSGS
76 MSG 0 TO DISPLAY 
   B0 = 0372D                      *SUBMODULE EXIT TO FLAG
   IF(B11.GT.ERRLIM)GOTO 44        *ERROR LIMIT 
   GOTO 40                         *RETURN TO LOOP
* 
77 END 30 
COMPILE   *CRP37B - FIFO FULL RING STOP TEST - 2
   MODULE CRP39,6000(200),LOCK
***       CRP39 - RQSTK FULL RING STOP TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE REQUEST STACK 
*         FULL RING STOP BIT IN THE GSW, THE CLEAR RQSTK
*         BIT, DISABLE RQSTK FULL RING STOP BIT AND DISABLE 
*         RING STOP BIT IN THE DIAGNOSTIC REGISTER, AND THE 
*         RQSTK MEMORY. 
*         MODULE TEST THE RQSTK FULL RING STOP LOGIC IN 3 PARTS.
*         CRP39 - CONTROL  ,  CRP39A, 39B, 39C .
* 
* 
*   1.2   METHOD
* 
*           STEPS 1 - 8 APPLY TO EACH SUBMODULE.
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             (SL) IS SELECTED. 
* 
*      - CRP39A - 
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE RQSTK FULL RING STOP 
*             BIT IS RESET. ERROR CODE(ECD) = 391.
*         8.  IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         9.  WRITE THE RING CONTROL REGISTER WITH A 0001 RING
*             FUNCTION CODE AND AN EQUIPMENT CODE SPECIFIED IN
*             PARAMETER WORD P0 USING CYBER CRP FUNCTION 52.
*         10. WRITE THE RING DATA REGISTER WITH 2 DATA WORDS
*             SPECIFIED IN THE LOWER 8 BITS OF PARAMETER WORDS
*             P6 AND P7 IF NON-ZERO, OR DATA WORDS OF ALTERNATING 
*             ONES AND ZEROS USING CYBER CRP FUNCTION 53. 
*         11. READ THE GSW AND VERIFY THAT THE RQSTK FULL RING STOP 
*             BIT REMAINS RESET.
*             ECD = 392 RQSTK RING STOP SET.
*             ECD = 393 RQSTK NOT READY 
*         12. REPEAT STEPS 10 AND 11 FIFTEEN TIMES. 
*         13. REPEAT STEP 10. 
*         14. READ THE GSW AND VERIFY THAT THE RQSTK FULL RING STOP 
*             BIT IS SET. ECD = 394 
*         15. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         16. READ THE RQSTK USING MODE 2, CYBER CRP FUNCTION 05, 
*             AND VERIFY THE DATA.
*             ECD = 396 RQSTK DATA ERRORS.
*         17. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         18. READ THE GSW AND VERIFY THAT THE RQSTK FULL RING STOP 
*             BIT IS RESET. ECD = 395 
*         19. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         20. REPEAT STEPS 4-19 150D TIMES. 
*         21. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER AND RM.
* 
*       - CRP39B -
*           STEPS 1 - 8 APPLY TO CRP39B.
*         22. FILL THE RQSTK USING STEP 10. 
*         23. READ THE GSW AND VERIFY THAT THE RQSTK FULL RING STOP 
*             BIT IS SET. ECD = 396.
*         24. SET AND RESET THE CLEAR RQSTK BIT IN THE DIAGNOSTIC REG.
*         25. READ THE GSW AND VERIFY THAT THE RQSTK FULL RING STOP 
*             BIT IS RESET. ECD = 397.
*         26. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3,4,5,24 AND 25.
*         27. REPEAT STEPS 22-26 150D TIMES.
*         28. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER AND RM.
* 
*       - CRP39C -
*            STEPS 1 - 8 APPLY TO CRP39C. 
*         29. SET THE DISABLE RING STOP 1 BIT IN THE DIAGNOSTIC REG.
*         30. FILL THE RQSTK USING STEPS 12 AND 13. 
*         31. READ THE GSW AND VERIFY THAT THE RQSTK FULL RING STOP 
*             BIT REMAINS RESET.
*             ECD = 393 IF RQSTK RING STOP SET. 
*             ECD = 392 IF RING STOP SET. 
*         32. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3 - 7 AND 29 - 31.
*         33. READ ONE WORD FROM THE RQSTK USING STEP 16. 
*         34. RESET THE DISABLE RING STOP 1 BIT AND SET THE DISABLE 
*             RQSTK FULL RING STOP BIT IN THE DIAGNOSTIC REGISTER.
*         35. FILL THE RQSTK USING STEP 10. 
*         36. READ THE GSW AND VERIFY THAT THE RQSTK FULL RING STOP 
*             BIT REMAINS RESET. ECD = 394. 
*         37. IF AN ERROR IS DETECTED AND SL IS SELECTED, REPEAT STEPS
*             3 - 7 AND 29 - 36.
*         38. REPEAT STEPS 29-37 150D TIMES.
*         39. REPEAT SUBMODULE DEPENDING ON P5 PARAMETER AND RM.
*         40. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-37.
*         41. IF ANY ERRORS WERE DETECTED DURING EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERROS DETECTED.
*         42. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP39 
*           . CRP39 ERROR(S) IN MODULE = *DEC 
*           . CRP39 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . RQSTK RING STOP GS BIT NOT RESET BY CLRCRP FUNC 
*           . RQSTK RING STOP GS BIT SET BY LT 12 RING FUNCS
*           . RQSTK RDY GS BIT NOT SET BY RING FUNC=0001B 
*           . RQSTK RING STOP GS NOT SET BY 12 WRITES OF RQSTK
*           . RQSTK RING STOP GS BIT NOT RESET BY READ OF RQSTK 
*           . RQSTK DATA ERROR EXP=*H*HH , ACT=*H*HH
*           . RQSTK RING STOP GS BIT SET BY RING FUNC=0001B 
*           . RQSTK RDY GS BIT NOT SET BY RING FUNC=0001B 
*           . RQSTK RING STOP GS BIT NOT RESET BY CLRRQ FUNCTION
*           . RQSTK RING STOP GS BIT SET BY RING FUNC=0001B 
*           . SYS RNG STOP GS BIT SET WHILE DRS1 SET IN DIAG REG
*           . RQSTK RNG-STP GS BIT DID NOT SET WHEN DRS1 CLEARED
*           . RQSTK RNG-STP GS BIT SET WHILE DRQRS SET
*           . RQSTK RNG STOP GS BIT FAILED TO SET WITH DRS1 SET 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   P0 CRP EQUIPMENT CODE 
* 
*        - REPAIR MODE
*         P0 CRPEQUIPMENT CODE
*         P4 LOOPING DELAY
*         P5 SUBMODULE (CONDITION) SELECTOR 
*           P5 = 0 RUN CRP39,39A,39B,39C. 
*              = 1 RUN ONLY CRP39A  ,  = 2 RUN ONLY CRP39B
*              = 3 RUN ONLY CRP39C  , GT 3 ERROR
*        P6 , P7 DATA PATTERN FOR RQSTK.
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-37 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B8  = DIAG REG FUNCTION CONTROL 
*         B9  = RQSTK WORDS COUNTER 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*        - IB - 
*         0 , 1 RQSTK READ BUFFER 
*        - OB - 
*        400 - 402 RING PACKET BUFFER 
*         470-501 DIAG REG FUNCTIONS
*        - SB - 
*         0 , 1 CRP GS WORD 
* 
* 
*   2.3   SUBMODULES USED 
*       - CRP39 - CALL CRP39A,CRP39B,CRP39C 
*       - CRP39A -
*          CRP39B - CONTINUATION OF MODULE
*          CRP97Z - ERROR/ABORT PROCESSOR 
*       - CRP39B -
*          CRP39C - CONTINUATION OF MODULE
*          CRP97Z - ERROR/ABORT PROCESSOR 
*       - CRP39C -
*          CRP97Z - ERROR/ABORT PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP39  - REQUEST STACK FULL RING STOP TEST
10 FORMAT CRP39 ERROR(S)IN MODULE = *DEC
26 FORMAT CRP39 PARAMETER ERROR  P5 .GT. 3  P5=*OCT 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRRQ=474,DRS1=476 
   EQUATE RCRDATA=400,RDRDATA=401,DRQRS=500 
*    RDR DATA  MODE 2 
   DATA (OB(401),CON) 125,125,377,377 
*    FUNCTIONS     CLEAR, CLRCRP , CLRRQ, DRS1,DRQRS
   DATA (OB(470),H) 0000, 0100, 0800, 0002, 0020
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *MODULE NAME MSG 
   B13 = 39D                 *MODULE NUMBER 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   IF(P5.EQ.0)GOTO 36        *NO USER SET CONDITION 
   IF(P5.LE.3)GOTO 34        *CONDITION IN RANGE
33 MSG 26(P5) TO DAYFILE,PRINT,DISPLAY   *P5 ERROR MSG
   PAUSE
   BLANK
   GOTO 30                   *RESTART MODULE
* 
* ----------------CALL SUBMODULES-------------------- 
* 
34 IF(P5.EQ.1)GOTO 36        *CONDITION 1 START 39A 
   IF(P5.EQ.2)GOTO 40        *CONDITION 2 START 39B 
   IF(P5.EQ.3)GOTO 42        *CONDITION 3 START 39C 
   GOTO 33                   *SHOULD NOT BE HERE. P5 ERROR
* 
36 CALL 39A                  *START SUBMODULE 39A 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
40 CALL 39B                  *START SUBMODULE 39B 
   GOTO 50                   *TEST RETURN,FROM SUBMODULE
* 
42 CALL 39C                  *START SUBMODULE 39C 
   GOTO 50                   *TEST RETURN FROM SUBMODULE
* 
* ---------------ENDS / REPEATS---------------------- 
* 
50 PASS 
52 IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   IF(B11.GT.ERRLIM)GOTO 60    *EXIT MODULE ON ERR LIMIT
   IF(ES.AND.RM.NE.0)GOTO 32   *RM
60 EXIT                        *END MODULE
* 
   END 30 
COMPILE   *CRP39 - RQSTK FULL RING STOP TEST
   MODULE CRP39A,6000(200),LOCK 
***       CRP39A - RQSTK FULL  -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP39A - RQSTK FULL RING STOP TEST - 1
2  FORMAT CRP39A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP39A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP39A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP39A
20 FORMAT RQSTK RING STOP GS BIT NOT RESET BY CLRCRP FUNC 
21 FORMAT RQSTK RING STOP GS BIT SET BY LT 12 RING FUNCS
22 FORMAT RQSTK RDY GS BIT NOT SET BY RING FUNC=0001B 
23 FORMAT RQSTK RING STOP GS NOT SET BY 12 WRITES OF RQSTK
24 FORMAT RQSTK RING STOP GS BIT NOT RESET BY READ OF RQSTK 
25 FORMAT RQSTK DATA ERROR EXP=*H*HH , ACT=*H*HH
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRRQ=474,DRS1=476 
   EQUATE RCRDATA=400,RDRDATA=401,DRQRS=500 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN 97Z
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
34 MSG 0 TO DISPLAY 
   B0 = 0391D                    *EXIT TO FLAG
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------RQSTK FULL RING STOP TEST - 1------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   GOSUB 65                      *RES CHANNEL AND CLRCRP
   GOSUB 64                      *READ GSW (TO SB(0)) 
   GOSUB 54                      *CHK GS/SEND PKT/CHK STATUS
   IF(SB(1).AND.1.EQ.0) ERROR 22/393D GOTO 50   *DF NOT RDY 
   B9 = 1                        *SET RQSTK CNT 
41 GOSUB 56                      *WRITE RCR/RDR 
   GOTO 41 WHILE(B9+1.LE.11D)     *ALMOST FILL RQSTK
   GOSUB 62                      *WRITE 1 MORE RQSTK WD 
   IF(SB(0).AND.2.EQ.0)ERROR 23/394D GOTO 50   *NOT RQRS
* 
   BA = 0 
   WC = 2                        *SETUP FOR READ OF FIFO
   B9 = 0 
42 B12 = 5
   FIN 205,ABT 70                *RD RQSTK 2 WD MODE 2
   IF(OB(401).NE.IB(0))ERROR 25/396D GOTO 50   *DATA ERR
   IF(OB(402).NE.IB(1))ERROR 25/396D GOTO 50   *- 
   GOTO 42 WHILE(B9+1.LE.12D)    *RD FULL STK 
   GOSUB 64                      *RD GSW
   IF(SB(0).AND.2.NE.0)ERROR 24/395D GOTO 50  *STILL FULL 
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 39B 
   IF(ES.AND.RM.NE.0)GOTO 34     *RPT MODULE
   GOTO 44                       *EXIT / END 39 
* 
43 EXIT TO 39B                   *EXIT TO NEXT SUBMODULE 39B
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   IF(EM.NE.25)MSG EM TO LINE 2 
   IF(EM.EQ.25)MSG EM(OB(401),OB(402),IB(0),IB(1))TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                      *FLAG ERROR PROCESSOR 
   EXIT TO 97Z                    *PROCESS ERROR MSGS 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
54 IF(SB(0).AND.2.NE.0) ERROR 20/391D GOTO 50  *RQSTK SET 
* 
56 OB(400) = P0.AND.377.OR.0400  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(0).AND.2.NE.0) ERROR 21/392D GOTO 50  *RQRS SET
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES ,ABT 70
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG ABORT TO 97Z
   EXIT TO 97Z                      *PROCESS ABORT
76 MSG 0 TO DISPLAY 
   B0 = 0391D                       *SUBMODULE FLAG 
   IF(B11.GT.ERRLIM)GOTO 44         *ERROR LIMIT
   GOTO 40                          *RETURN TO LOOP 
* 
77 END 30 
COMPILE   *CRP39A - RQSTK FULL RING STOP TEST - 1 
   MODULE CRP39B,6000(200),LOCK 
***       CRP39B - RQSTK FULL - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP39B - RQSTK FULL RING STOP TEST - 2
2  FORMAT CRP39B .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP39B  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP39B.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP39B
20 FORMAT RQSTK RING STOP GS BIT NOT RESET BY CLRCRP FUNC 
21 FORMAT RQSTK RING STOP GS BIT SET BY RING FUNC=0001B 
22 FORMAT RQSTK RDY GS BIT NOT SET BY RING FUNC=0001B 
23 FORMAT RQSTK RING STOP GS BIT NOT RESET BY CLRRQ FUNCTION
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRRQ=474,DRS1=476 
   EQUATE RCRDATA=400,RDRDATA=401,DRQRS=500 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN 97Z
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
34 MSG 0 TO DISPLAY 
   B0 = 0392D                    *EXIT TO FLAG
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------RQSTK FULL RING STOP TEST - 2------------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   GOSUB 65                      *RES CHANNEL AND CLRCRP
   GOSUB 64                      *READ GSW (TO SB(0)) 
   GOSUB 54                      *CHK GS/SEND PKT/CHK STATUS
   B9 = 1                        *SET FIFO CNT
41 GOSUB 62                      *WRITE RCR/RDR 
   GOTO 41 WHILE(B9+1.LE.12D)    *FILL FIFO 
   GOSUB 64                      *GET GS
   IF(SB(0).AND.2.EQ.0)ERROR 22/396D GOTO 50   *NOT RQRS
* 
   BA = CLRRQ                    *SET CLEAR RQSTK FUNC
   GOSUB 67                      *SET/CLEAR BIT IN DIAG REG 
   GOSUB 64                      *GET GS
   IF(SB(0).AND.2.NE.0)ERROR 23/397D GOTO 50
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 43            *CONTINUE IN 37C 
   IF(ES.AND.RM.NE.0)GOTO 34     *RPT MODULE
   GOTO 44                       *EXIT / END 39 
* 
43 EXIT TO 39C                   *EXIT TO NEXT SUBMODULE 39C
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                      *FLAG ERROR PROCESSOR 
   EXIT TO 97Z                    *PROCESS ERROR MSGS 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
54 IF(SB(0).AND.2.NE.0) ERROR 20/391D GOTO 50  *RQRS SET
* 
56 OB(400) = P0.AND.377.OR.0400  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(0).AND.2.NE.0) ERROR 21/392D GOTO 50  *DRS1 SET
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES ,ABT 70
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   EXIT TO 97Z                       *PROCESS ABORT 
76 MSG 0 TO DISPLAY 
   B0 = 0391D                        *SUBMODULE FLAG
   IF(B11.GT.ERRLIM)GOTO 44          *ERROR LIMIT 
   GOTO 40                           *RETURN TO LOOP
* 
77 END 30 
COMPILE   *CRP39B - REQUEST STACK FULL RING STOP TEST - 2 
   MODULE CRP39C,6000(200),LOCK 
***       CRP39C - TEST RQSTK FULL -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP39C - RQSTK FULL RING STOP TEST - 3
2  FORMAT CRP39C .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP39C  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP39C.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP39C
20 FORMAT RQSTK RING STOP GS BIT NOT RESET BY CLRCRP FUNC 
21 FORMAT RQSTK RING STOP GS BIT SET BY RING FUNC=0001B 
22 FORMAT SYS RNG STOP GS BIT SET WHILE DRS1 SET IN DIAG REG
23 FORMAT RQSTK RNG-STP GS BIT DID NOT SET WHEN DRS1 CLEARED
24 FORMAT RQSTK RNG-STP GS BIT SET WHILE DRQRS SET
25 FORMAT RQSTK RNG STOP GS BIT FAILED TO SET WITH DRS1 SET 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRRQ=474,DRS1=476 
   EQUATE RCRDATA=400,RDRDATA=401,DRQRS=500 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
   IF(ES.AND.RM.EQ.0)MSG 0 TO PRINT,DAYFILE 
* 
34 MSG 0 TO DISPLAY 
   B0 = 0393D                    *EXIT OT FLAG
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------RQSTK FULL RING STOP TEST - 3----------
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B8 = 1                        *CLEAR DIAG AFTER FUNC 
   GOSUB 65                      *RES CHANNEL AND CLRCRP
   GOSUB 64                      *READ GSW (TO SB(0)) 
   IF(SB(0).AND.2.NE.0)ERROR 20/391D GOTO 50   *RQRS SET
   B8 = 0                        *LEAVE DIAG REG BIT SET
   BA = DRS1                     *DISABLE RING STOP 
   GOSUB 67                      *SET BIT IN DIAG REG 
   B8 = 1                        *LOOP TO FILL RQSTK
   B9 = 0                        *SET FIFO WRITE CNT
   GOSUB 54            *FILL FIFO/CHK GS/SEND PKT/CHK STATUS
* 
   GOSUB 64                      *GET GS
   IF(SB(0).AND.2.EQ.0)ERROR 25/393D GOTO 50  *RQRS NOT SET 
   IF(SB(0).AND.1.NE.0)ERROR 22/392D GOTO 50  *RS1 SET
   WC = 2 
   BA = 0 
   B12 = 5
   FIN 205 ,ABT 70               *RD 1 ENTRY
   B8 = 0                        *SKIP CLEAR OF DIAG BIT
   BA = DRQRS                    *DISABLE RQ RS 
   GOSUB 67                      *SET DIAG BIT
   GOSUB 62                      *WRITE ONE RQSTK 
   GOSUB 64                      *GET GS
   IF(SB(0).AND.2.NE.0)ERROR 24/394D GOTO 50   *RQRS SET
* 
   GOTO 40 WHILE(B10+1.LE.150D)  *LOOP 150D TIMES 
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(P5.EQ.0)GOTO 44            *RETURN-EXIT TO 39 
   IF(ES.AND.RM.NE.0)GOTO 34     *RPT MODULE
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                     *FLAG ERROR MSGS 
   EXIT TO 97Z                   *PROCESS ERRORS
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
54 IF(SB(0).AND.2.NE.0) ERROR 20/391D GOTO 50  *DFRS SET
* 
56 OB(400) = P0.AND.377.OR.0400  *FORM RCR WD 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(B8.EQ.1)GOTO 57 WHILE(B9+1.LE.12D)  *FILL RQSTK 
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES ,ABT 70
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   IF(B8.EQ.0)RETURN             *SHORT RETURN (BIT SET)
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT MSGS 
   EXIT TO 97Z                       *PROCESS ABORT MSGS
76 MSG 0 TO DISPLAY 
   B0 = 0393D                        *SUBMODULE EXIT TO FLAG
   IF(B11.GT.ERRLIM)GOTO 44          *ERROR LIMIT 
   GOTO 40                           *RETURN TO LOOP
* 
77 END 30 
COMPILE   *CRP39C - REQUEST STACK FULL RING STOP TEST - 3 
   MODULE CRP41,6000(200),LOCK
***       CRP41 - DEADMAN TIMER TEST (AL=21)
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE DEADMAN TIMER 
*         AND ASSOCIATED BIT IN THE GSW AND THE CLEAR DMT BIT 
*         IN THE DIAGNOSTIC REGISTER. 
*         MODULE CRP41 REQUIRES A MALET ACCESS LEVEL OF 21 TO EXECUTE.
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3. TEST AL FOR 21 OR GREATER. POST ERROR MESSAGE ARE PAUSE
*            FOR CORRECTION OF AL IS LESS THAN 21.
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE DMT. 
*         7.  READ THE GSW AND VERIFY THAT THE DEADMAN TIMER BIT IS 
*             RESET. ERROR CODE(ECD) = 411D.
*         8.  FUNCTION THE CRP FOR A WRITE TO THE DIAGNOSTIC REGISTER.
*         9.  ACTIVATE THE CHANNEL
*         10. PAUSE 4 MILLISECONDS AND CHECK FOR CHANNEL TO 
*             BECOME INACTIVE.
*             ECD = 415 IF CHANNEL INACTIVE AT START. 
*             ECD = 414 IF NOT DMT IN 16 SECONDS. 
*         11. READ THE GSW AND VERIFY THAT THE DEADMAN TIMER BIT IS 
*             SET. ECD = 412D 
*         12. SET AND RESET THE CLEAR DEADMAN TIMER BIT IN THE
*             DIAGNOSTIC REGISTER.
*         13. READ THE GSW AND VERIFY THAT THE DEADMAN TIMER BIT IS 
*             RESET. ECD = 413. 
*         14. REPEAT STEPS 4-13 25D TIMES.
*         15. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         16. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-15.
*         17. IF ANY ERRORS WERE DETECTED DURING THE EXECUTION OF 
*             THE MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         18. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP41 
*           . CRP41 ERROR(S) IN MODULE = *DEC 
*           . CRP41 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP41 DMT TEST ECD=*OCT,ERC=*DEC,LC=*DEC
*           .  CHANNEL FOUND INACTIVE BEFORE TIMING TEST START
*           .  CHANNEL DID NOT DEACTIVATE AFTER *DE SEC 
*           .  DEADMAN TIMEOUT OCCURED AT *D.*DE SEC. 
*           . CRP41 .SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
*           . CRP41 ERC=*DEC,LC=*DEC,GS=*H*HH,ECD=*DEC,P=*OCT 
*           . CRP41  -  END OF PASS *DEC -
*           . DMT GS BIT NOT RESET BY CLRCRP/CLRDMT FUNC
*           . DMT GS BIT NOT SET BY DEADMAN TIMOUT EC=412D
*           . DMT GS BIT NOT RESET BY CRLDMT FUNC  EC=412D
*           . CRP41    MODULE NOT EXECUTED, NEEDS AL=21,AL IS *O
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 ,  7 AND 13 HAVE RUN CORRECTLY. 
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = MILLESECOND COUNTER 
*         B1  = SECOND COUNTER. 
*         B2  = CHANNEL FLAG. 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
*      - OB - 
*        0 - 3  WRITE BUFFER ZERO WORDS 
*        476 - 503 DIAG REG FUNCTIONS.
*      - SB - 
*        0 , 1  CRP STATUS WORD 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP41 - DEADMAN TIMER GS FUNCTIONAL TEST
1  FORMAT CRP41 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
2  FORMAT CRP41 DMT TEST ECD=*OCT,ERC=*DEC,LC=*DEC
3  FORMAT  CHANNEL FOUND INACTIVE BEFORE TIMING TEST START
4  FORMAT  CHANNEL DID NOT DEACTIVATE AFTER *DE SEC 
5  FORMAT  DEADMAN TIMEOUT OCCURED AT *D.*DE SEC. 
6  FORMAT CRP41 .SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT - CRP41 
10 FORMAT CRP41 ERROR(S) IN MODULE = *DEC 
11 FORMAT CRP41 ERC=*DEC,LC=*DEC,GS=*H*HH,ECD=*DEC,P=*OCT 
12 FORMAT CRP41  -  END OF PASS *DEC -
20 FORMAT DMT GS BIT NOT RESET BY CLRCRP/CLRDMT FUNC
21 FORMAT DMT GS BIT NOT SET BY DEADMAN TIMOUT EC=412D
22 FORMAT DMT GS BIT NOT RESET BY CRLDMT FUNC  EC=412D
24 FORMAT CRP41    MODULE NOT EXECUTED, NEEDS AL=21,AL IS *O
* 
* ------------------------DATA----------------------------- 
* 
   EQUATE ERRLIM=20B,CLRCRP=500,CLEAR=476,CLRDMT=502
   DATA (OB(0),CON) 0,0,0,0         *4 ZERO DATA WORDS
*                      CLEAR    CLRCRP    CLRDMT
   DATA (OB(476),CON) 000,000 , 001,000 , 020,000 
* 
* ---------------------INITIALIZATION-------------------- 
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 41D                  *MODULE NUMBER
* 
   IF(AL.GE.21)GOTO 32
   MSG 24(AL) TO DISPLAY,PRINT
   MSG 24(AL) TO LINE 46
   GOTO 60                   *EXIT IF AL TOO LOW
* 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERROR CNTR
* 
* ------------------------TEST--------------------------- 
* 
34 IF(P4.NE.0)DELAY P4 USEC  *DELAY IF SET
   B12 = 1                   *ABT MSG NUMBER
   RES,ABT 70 
   GOSUB 66                  *CLEAR CRP 
   BA = CLRDMT
   GOSUB 67                  *CLEAR DMT 
   GOSUB 64                  *GET GS TO SB(0) 
   IF(SB(1).AND.10.NE.0)ERROR 20/411D GOTO 42 
* 
   B12 = 2
   FUNC 50 ,ABT 70           *WRITE DIAG REG MODE 2 
   BA = 0                    *FWA 
   WC = 1 
   B12 = 12 
   ACN ,ABT 70               *SET CHANNEL ACTIVE
   B0 = 0                    *MILLISEC CNTR 
   B1 = 0                    *SECOND CNTR 
   B2 = 0                    *FLAG CHANNEL ACTIVE ERROR 
40 B12 = 12 
   ACN, ABT 50               *SENSE CHAN. EXP.ACT. UNTIL DMT
   B12 = 14 
   DCN , ABT 70              *INSURE CHANNEL DEACTIVE 
   IF(B2.NE.0)GOTO 54        *NORMAL OUT AT END OF DMT. 
   ERROR 3/415D, GOTO 42     *ACTIVE CHANN ERROR
* 
* ----------------ERROR PROCESSOR---------------------
* 
42 ENDSUB 
   B11 = B11 + 1
   IF(ES.AND.SL.EQ.0)GOTO 44
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 34
* 
44 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 11(B10,B11,SB(0),SB(1),EC,EA) TO LINE 3
   B1 = 7700
   CALL 97X 
   IF(B11.GT.ERRLIM)GOTO 60 
   GOTO 34                    *LOOP TO TEST 
* 
* ---------------------TIME COUNTER---------------------
* 
50 B2 = 1                    *FLAG CHAN ACTIVE OK (1ST TIME)
   DELAY 4000D USEC          *DELAY 4 MILLISEC. 
   B0 = B0 + 1               *CNT MILLISECS.
   IF(B0.LT.250D)GOTO 40     *LOOP FOR 1 SEC
   B1 = B1 + 1               *CNT SECONDS 
   B0 = 0                    *RESET MILLISEC CNTR 
   IF(B1.LT.16D)GOTO 40      *LIMIT TO 16D SEC FOR DMT
   DCN ,ABT 52               *INSURE CHANNEL INACTIVE 
52 ERROR 4/414D, GOTO 42     *DMT FAILURE MSG 
* 
54 GOSUB 64                  *GET GS
   IF(SB(1).AND.10.EQ.0)ERROR 21/412D GOTO 42 
   BA = CLRDMT               *SET CLEAR DMT FUNC
   GOSUB 67                  *SET CLRDMT TO DIAG REG
   GOSUB 64                  *GET GS
   IF(SB(1).AND.10.NE.0)ERROR 22/413D GOTO 42 
   MSG 12(B10) TO LINE 45        *PASS MSG TO K DISPLAY 
   GOTO 34 WHILE(B10+1.LE.25D)   *LOOP 25D TIMES
* 
56 IF(ES.AND.RM.NE.0)GOTO 32
* 
* --------------------ENDS / REPEATS------------------
* 
60 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY , PRINT
   IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
* 
   EXIT 
* 
* ----------------SUBROUTINES-------------------------- 
* 
* ----GET GSW MODE 0
64 B12 = 2
   FUNC 200 , ABT 70              *READ GSW 
   B12 = 7
   STATUS 2 WORDS TO SB(0) , ABT 70 
   RETURN 
* ----FUNCTIONS TO DIAG REG.
66 BA = CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70             WRITE DIAG REG MODE 2
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* -------------------ABORTS-----------------------------
* 
70 B11 = B11 + 1             *ERROR CNTR
   ENDSUB 
   IF(ES.AND.SL.EQ.0)GOTO 74  *NOT SL 
   MSG 1(EA,EC,B11,B10)TO DISPLAY  *ERROR MSG 
   GOTO 34                   *SCOPE LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT MSGS 
   CALL 97X                  *PROCESS ABORT MSGS
* 
76 MSG 0 TO DISPLAY 
   IF(B11.LT.ERRLIM)GOTO 34  *TRY AGAIN TO ERROR LIMIT
   GOTO 60                   *EXITS 
* 
   END 30 
COMPILE   *CRP41 - FUNCTION TIME-OUT TEST 
   MODULE CRP43,6000(200),LOCK
***       CRP43 - RING STOP 1/RING DATA REGISTER FULL TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE RING DATA REGISTER FULL 
*         BIT IN THE GSW AND THE RING STOP 1 BIT IN THE DIAGNOSTIC
*         REGISTER. 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             IS SELECTED.
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE RING DATA REGISTER 
*             FULL BIT IS RESET. (ECD=0431D)
*         8.  IF AN ERROR  IS DETECTED AND SL IS SELECTED, GOTO STEP 3. 
*         9.  SET THE ENABLE RING STOP 1 BIT IN THE DIAGNOSTIC REGISTER.
*         10. WRITE THE RING CONTROL REGISTER WITH A 0001 RING
*             FUNCTION CODE AND AN EQUIPMENT CODE SPECIFIED IN
*             PARAMETER WORD P0 USING CYBER CRP FUNCTION 52.
*         11. WRITE THE RING DATA REGISTER WITH 2 DATA WORDS SPECIFIED
*             IN THE LOWER 8 BITS OF PARAMETER WORDS P6 AND P7 IF NON-
*             ZERO, DATA WORDS OF ALTERNATING ONES AND ZEROS USING
*             CYBER CRP FUNCTION 53.
*         12. READ THE GSW AND VERIFY THAT THE RING DATA REGISTER 
*             FULL BIT IS SET. (ECD=0432D)
*         13. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         14. RESET THE RING STOP 1 BIT IN THE DIAGNOSTIC REGISTER. 
*         15. READ THE GSW AND VERIFY THAT THE RING DATA REGISTER 
*             FULL BIT IS RESET. (ECD=0433D)
*         16. READ THE REQUEST STACK AND VERIFY THE DATA. (ECD=0434D) 
*         17. REPEAT STEPS 4-15 150D TIMES. 
*         18. IF SCOPING LOOP IS SELECTED, REPEAT STEPS 3-15. 
*         19. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         20. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-18.
*         21. IF ANY ERRORS WERE DETECTED DURING EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         22. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP43 
*           . CRP43 ERROR(S) IN MODULE = *DEC 
*           . CRP43 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP43  - RING STOP 1/RING DATA REG FULL STOP TEST 
*           . CRP43 LOOPING LC = *DEC 
*           . CRP43  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
*           . CRP43.SL. ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
*           . PKT RDY GS BIT NOT RESET BY CLRCRP FUNC 
*           . PKT RDY GS BIT NOT SET BY RC/RD WRITE AND ERS1 SET
*           . PKT RDY GS BIT NOT RESET BY CLEAR OF ERS1 DIAG BIT
*           . DATA ERROR IN DATA FROM RQSTK AFTER ERS1 CLEARED
*           . DATA ERR RQSTK FROM RCR-RDR. EXP=*H*HH , ACT=*H*HH
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P0 EQUIPMENT CODE OF THE CRP
*         P4 LOOPING DELAY
*         P6,P7 USER SUPPLIED PACKET DATA 
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-17 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B8  = DIAGNOSTIC REGISTER FUNCTION SWITCH 
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*          - IB - 
*         0,1   READ BUFFER 
* 
*          - OB - 
*         400,401,402  RING PACKET IMAGE
* 
*          - SB - 
*         0,1  CRP STATUS READ BUFFER 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP43  - RING STOP 1/RING DATA REG FULL STOP TEST 
2  FORMAT CRP43 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
4  FORMAT CRP43 LOOPING LC = *DEC 
5  FORMAT CRP43  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP43.SL. ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT - CRP43 
10 FORMAT CRP43 ERROR(S) IN MODULE = *DEC 
20 FORMAT PKT RDY GS BIT NOT RESET BY CLRCRP FUNC 
21 FORMAT PKT RDY GS BIT NOT SET BY RC/RD WRITE AND ERS1 SET
22 FORMAT PKT RDY GS BIT NOT RESET BY CLEAR OF ERS1 DIAG BIT
23 FORMAT DATA ERROR IN DATA FROM RQSTK AFTER ERS1 CLEARED
24 FORMAT DATA ERR RQSTK FROM RCR-RDR. EXP=*H*HH , ACT=*H*HH
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,CLRRQ=474,DRS1=476 
   EQUATE RCRDATA=400,RDRDATA=401,ERS1=500
   DATA (OB(401),CON) 125,125,377,377 
*                   CLEAR,CLRCRP,CLRRQ,DRS1 , ERS1
   DATA (OB(470),H) 0000, 0100, 0800, 0002, 0008
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE 
* 
34 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
   B13 = 43D                     *SET MODULE NUMBER 
* 
* ----------------RING STOP-1 / RING DATA REGISTER FULL --- 
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B8 = 1                        *FLAG SET/CLEAR OF DIAG FNC
   GOSUB 65                      *RES CHANNEL AND CLRCRP
   GOSUB 64                      *READ GSW TO SB(0) 
   IF(SB(1).AND.20.NE.0)ERROR 20/0431D GOTO 50  *PKT RDY SET
   B8 = 0                        *FLAG NO CLEAR OF DIAG REG 
   BA = ERS1                     *SET ENABLE RING STOP 1
   GOSUB 67                      *SEND DIAG REG FUNC
   GOSUB 56                      *WRITE RC/RDR PKT-RD-CHK GS
   B8 = 0                        *FLAG CLEAR DIAG REG 
   BA = CLEAR                    *CLEAR FUNC TO DIAG REG
   GOSUB 67 
   GOSUB 64                      *GET GSW 
   IF(SB(1).AND.20.NE.0)ERROR 22/0433D GOTO 50  *PKT NOT RDY
* 
   BA = 0                        *RD BA 
   WC = 2 
   B12 = 2
   FUNC 205 , ABT 70
   B12 = 4
   IN , ABT 70
   COMPARE OB(401) TO IB(0) FOR WC , ABT 46 
* 
   GOTO 40 WHILE(B10+1.LE.150D)   *LOOP 150D TIMES
* 
   IF(ES.AND.SL.EQ.0)GOTO 42      *NOT SL 
   MSG 4(B10) TO DISPLAY
   GOTO 40                        *SL REPEAT
42 B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(ES.AND.RM.NE.0)GOTO 34     *RPT MODULE
* 
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DISPLAY 
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
46 ERROR 23/0434D                *DATA COMPARE ERROR
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   IF(EM.EQ.23)MSG 24(OB(401),OB(402),IB(0),IB(1))TO LINE 4 
   B1 = 7700                      *FLAG ERROR PROCESSOR 
   CALL 97X                       *PROCESS ERROR MSGS 
   GOTO 76                        *FINISH DISPLAY 
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----SETUP-WRITE RCR/RDR-STATUS----- 
56 OB(400) = P0.AND.377.OR.0400  *FORM RCR WD (RQSTK) 
   B1 = P6.OR.P7                 *CHECK USER DATA 
   IF(B1.EQ.0)GOTO 57            *NOT USER DATA 
   OB(401) = P6.AND.377          *FORM RDR WD 
   OB(402) = P7.AND.377          *- 
57 GOSUB 62                      *WRITE RCR/RDR 
   IF(SB(1).AND.20.EQ.0) ERROR 21/0432D GOTO 50  *PKT SET 
   RETURN 
* ----WRITE RCR/RDR-----
* ----RCR FROM OB(400),RDR FROM OB(401+402) 
62 B12 = 6
   WC = 1 
   BA = RCRDATA 
   FOUT 52,ABT 70                 *WRITE RCR MODE 0 
   WC = 2 
   BA = RDRDATA 
   FOUT 253,ABT 70                *WRITE RDR MODE 2 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70              *FUNC READ GSW MODE 2
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES ,ABT 70
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   WC = 1                        *WRITE CNT FOR OUTPUT
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   IF(B8.EQ.0)RETURN             *SHORT OUT IF B8=0 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97X 
   CALL 97X                          *PROCESS ABORT MSGS
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 44          *ERROR LIMIT 
   GOTO 40                           *RETURN TO LOOP
* 
77 END 30 
COMPILE   *CRP43 - RING STOP/RING DATA REG FULL TEST - 1
   MODULE CRP45,6000(200),LOCK
***       CRP45 - ALL RING TRAFFIC TO FIFO TEST 
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE ENABLE ALL RING 
*         TRAFFIC TO FIFO BIT IN THE DIAGNOSTIC REGISTER. 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             IS SELECTED.
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING STOP
*             BIT IS RESET. (ECD=0451D) 
*         8.  IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         9.  SET THE ALL RING TRAFFIC TO FIFO BIT IN THE DIAGNOSTIC
*             REGISTER. 
*         10. READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING STOP
*             BIT REMAINS RESET. (ECD=0452D)
*         11. WRITE THE RING CONTROL REGISTER WITH ALL ZEROS. 
*         12. WRITE THE RING DATA REGISTER WITH ALL ZEROS.
*         13. REPEAT STEPS 10,11 AND 12 FOR 776 ITERATIONS, INCRE-
*             MENTING THE DATA ON EACH WRITE. 
*             EACH PACKET WRITTEN TO THE RING WILL BE WRITTEN INTO
*             THE DATA FIFO TWICE BECAUSE OF THE LOST-PACKET CONTROL
*             OF THE RING/CRP.
*         14. READ THE GSW AND VERIFY THAT THE CRP FIFO FULL RING STOP
*             IS SET. (ECD=0453D) 
*         15. IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         16. RESET THE ALL RING TRAFFIC TO FIFO BIT IN THE DIAGNOSTIC
*             REGISTER. 
*         17. READ ALL DATA IN THE DATA FIFO AND VERIFY.(ECD=0454D) 
*         18. REPEAT STEPS 4-17 50D TIMES.
*         19. IF SCOPING LOOP IS SELECTED, REPEAT STEPS 3-17. 
*         20. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         21. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-19.
*         22. IF ANY ERRORS WERE DETECTED DURING EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERROR DETECTED.
*         23. END OF MODULE 
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP45 
*           . CRP45 ERROR(S) IN MODULE = *DEC 
*           . CRP45 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP45  - ALL RING TRAFFIC TO FIFO TEST
*           . CRP45  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
*           . CRP45.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
*           . DF RING STOP GS BIT NOT RESET BY CLRCRP FUNC
*           . DF RING STOP GS SET AFTER EALLRT FUNC IN DIAG REG 
*           . DF RING STOP GS NOT SET AFTER WRITE OF 1016 PKTS
*           . DATA ERROR IN DF FROM RING TRAFFIC EC = 0454
*           . DF DATA ERROR EXP=*H*H*H*H , ACT=*H*H*H*H 
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-43 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = LOOP COUNTER/ADDRESS FOR PACKETS
*         B10 = MAIN LOOP COUNTER.
*         B8  = DIAGNOSTIC REGISTER CONTROL SWITCH. 
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*          - IB - 
*           0,1,2,3  READ DATA BUFFER 
* 
*          - OB - 
*           0,1,2,3  WRITE DATA PACKET IMAGE
*           4,5,6,7  DISPLAY DATA BUFFER
* 
*             - SB -
*           0,1  GENERAL STATUS READ BUFFER 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP45  - ALL RING TRAFFIC TO FIFO TEST
2  FORMAT CRP45 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
5  FORMAT CRP45  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP45.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
7  FORMAT // MODULE ERROR LIMIT-CRP45 
10 FORMAT CRP45 ERROR(S) IN MODULE = *DEC 
20 FORMAT DF RING STOP GS BIT NOT RESET BY CLRCRP FUNC
21 FORMAT DF RING STOP GS SET AFTER EALLRT FUNC IN DIAG REG 
22 FORMAT DF RING STOP GS NOT SET AFTER WRITE OF 1016 PKTS
23 FORMAT DATA ERROR IN DF FROM RING TRAFFIC EC = 0454
24 FORMAT DF DATA ERROR EXP=*H*H*H*H , ACT=*H*H*H*H 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,EALLRT=474 
*                   CLEAR,CLRCRP,EALLRT 
   DATA (OB(470),H) 0000, 0100, 0080
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 45D                     *MODULE NUMBER 
* 
32 MSG 0 TO DISPLAY 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -----------------FIFO FULL RING STOP TEST - 1------------ 
* 
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B8 = 1                        *CLR DIAG REG AFTER FUNC 
   GOSUB 65                      *RES CHANNEL AND CLRCRP
   GOSUB 64                      *READ GSW (TO SB(0)) 
   IF(SB(0).AND.4.NE.0)ERROR 20/451D GOTO 50  *RNG STP
   B8 = 0                        *LEAVE DIAG REG FUNC SET 
   BA = EALLRT                   *ALL TRFK TO DF FUNC 
   GOSUB 67                      *SEND FUNC TO DIAG REG 
   GOSUB 64                      *READ GSW
   IF(SB(0).AND.4.NE.0)ERROR 21/452D GOTO 50  *RG STP 
   B1 = 1                        *PRESET LOOP CNTR
42 OB(0) = B1.OR.1               *RCR DATA..AVOID 0 RNG FNC 
   OB(1) = P1.AND.377            *-  USER NON-HPP EQUIP CODE
   OB(2) = B1                    *RDR DATA
   OB(3) = B1                    *- 
* ---- EXPECT DATA TO BE WRITTEN INTO TWO WORDS IN THE FIFO 
* ---- BECAUSE OF LP/EALLRT HARDWARE CONSIDERATIONS 
* 
* ---- GENERATE PATTERNS WHERE RING FUNC IS NOT 0 AND 
* ---- EQUIP. CODE IS NOT FOR CRP OR EXISTING HPP.. 
* ---- THEREFORE USE P1 PARAMETER (NON-EXISTENT HPP). 
   WC = 4 
   BA = 0 
   B12 = 2
   FUNC 273 , ABT 70            *WRITE RCR/RDR
   B12 = 3
   OUT , ABT 70                 *SEND DATA
   GOTO 42 WHILE(B1+1.LT.776)   *FILL FIFO,ECH PKT WRTN TWCE
* 
   GOSUB 64                      *READ GSW
   IF(SB(0).AND.4.EQ.0)ERROR 22/453D GOTO 50  *RG NOT STP 
   BA = CLEAR                    *CLEAR DIAG REG
   B8 = 1                        *CLR AFTER FUNC
   GOSUB 67                      *WRITE DIAG REG
* 
   B12 = 1
   RES , ABT 70                  *RERESERVE CH
   B1 = 1                        *PRESET LOOP CNTR
   B12 = 2
   FUNC 226 , ABT 70             *RD DF MODE 2 28-BITS
   B4 = 0                        *CLR ERROR/LINE CNTR 
43 OB(0) = B1.AND.377            *SET COMPARE DATA
   OB(1) = B1.AND.377            *- 
   OB(2) = B1.AND.17.OR.1        *-TOP OF CONTROL 
   OB(3) = P1.AND.377            *- 
   B2 = 0                        *2 WD TOGGLE 
44 BA = 0 
   WC = 4 
   B12 = 4
   IN CHAIN , ABT 70             *RD ONE DF ADDRESS 
   IF(WT.EQ.0)GOTO 45            *NO INPUT SKIP COMPARE 
   IB(2) = IB(2).AND.17          *MASK SHORT CONTROL WD 
   COMPARE OB(0) TO IB(0) FOR WC , ABT 54  *CHK DATA
   GOTO 44 WHILE(B2+1.LE.1)      *2 WD TOGGLE 
45 GOTO 43 WHILE (B1+1.LT.775)   *LOOP ALL DATA 1 LESS
   IF(B4.NE.0)GOTO 50            *DISPLAY ANY ERRORS FOUND
* 
* 
   B12 = 14 
   DCN , ABT 46                  *INSURE CHANNEL DCNED
46 GOTO 40 WHILE(B10+1.LE.10D)     *LOOP 10 TIMES 
   B10 = 0
* 
* -----------------LOOPS/REPEATS----------------- 
* 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
47 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
   EXIT 
* 
* ---------------STATUS ERROR PROCESSOR-------------
* 
50 ENDSUB                        *CLEAR ANY PENDING SUB 
   B12 = 14 
   DCN , ABT 51                  *INSURE CHAN DCN 
51 B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *NOT SL POST MSG AND STOP
   MSG 6(B11,B10,SB(0),SB(1),EC,EA)TO DISPLAY 
   GOTO 40                       *RETURN TO LOOP
* 
52 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                      *FLAG ERROR PROCESSOR 
   GOTO 76                        *FINISH DISPLAY 
* 
* ----------------DATA ERROR------------------------------
* 
54 ERROR 23/454D                 *SET DATA ERROR EC/EM
   B4 = B4 + 1                   *CNT DATA ERROR
   IF(B4.GT.13D)GOTO 50          *DISPLAY FULL STOP 
   COPY IB(0) TO OB(4) FOR 4
   MSG 24 ,8 WORDS FROM OB(0) TO LINE B4+6
   GOTO 45                       *LOOP FOR MORE ERRORS
* 
* -----------------SUBROUTINES----------------------- 
* 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES ,ABT 70
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP
67 B12 = 2
   FUNC 250 , ABT 70
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   IF(B8.EQ.0)RETURN             *SHORT RETURN
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 40                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
76 CALL 97X                          *PROCESS ABORT 
   MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 47          *ERROR LIMIT 
   GOTO 40                           *RETURN TO LOOP
* 
   END 30 
COMPILE   *CRP45 - ALL RING TRAFFIC TO FIFO TEST
   MODULE CRP47,6000(200),LOCK
***       CRP47 - DISABLE AUTO DISCONNECT TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE DISABLE AUTO DISCONNECT 
*         BIT IN THE DIAGNOSTIC REGISTER. 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  PAUSE (P4) USEC.
*         4.  RESERVE THE CHANNEL TO THE CRP. 
*         5.  MASTER CLEAR THE CRP. 
*         6.  RESET THE DISABLE AUTOMATIC INACTIVE ON READ BIT IN THE 
*             DIAGNOSTIC REGISTER.
*         7.  READ THE GSW AND VERIFY THAT AN INACTIVE WAS RECEIVED.
*         8.  REPEAT STEPS 4-10 150D TIMES. 
* 
*         9.  PAUSE (P4) USEC.
*         10. RESERVE THE CHANNEL TO THE CRP. 
*         11. MASTER CLEAR THE CRP. 
*         12. SET THE DISABLE AUTOMATIC INACTIVE ON READ BIT IN THE 
*             DIAGNOSTIC REGISTER.
*         13. READ THE GSW AND VERIFY THAT NO INACTIVE WAS RECEIVED.
*         14. REPEAT STEPS 9-13 150D TIMES. 
*         15. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-14.
*         16. IF ANY ERRORS WERE DETECTED DURING EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         17. END OF MODULE. (END OF CONFIDENCE TEST) 
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP47 
*           . CRP47 ERROR(S) IN MODULE = *DEC 
*           . CRP47 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP47 - DISABLE AUTO DISCONNECT TEST
*           . CRP47.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
*           . CRP47   ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
*           . CRP47   PARAMETER ERROR  P5 MUST BE 0,1,2  P5=*OCT
*           . CRP47 CRP DID NOT DEACTIVATE CHANNEL IN NORMAL MODE 
*           . CRP47 CRP DEACTIVATED CHANNEL WITH DAI SET IN DIAG REG
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    -   NONE
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
*         P5 USER SELECTED CONDITIONS 
*            P5 = 0 RUN BOTH PARTS OF CRP47 
*               = 1 RUN ONLY THE DEACTIVATE PART OF 47
*               = 2 RUN ONLY THE DISABLE DEACTIVATE PART OF 47
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-45 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B8  = DIAGNOSTIC REGISTER FUNCTION CONTROL
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*          - OB - 
*         470-475 DIAG REG FUNCTIONS
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP47 - DISABLE AUTO DISCONNECT TEST
2  FORMAT CRP47 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
5  FORMAT CRP47  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP47.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
7  FORMAT // MODULE ERROR LIMIT-CRP47 
10 FORMAT CRP47 ERROR(S) IN MODULE = *DEC 
11 FORMAT CRP47   PARAMETER ERROR  P5 MUST BE 0,1,2  P5=*OCT
20 FORMAT CRP47 CRP DID NOT DEACTIVATE CHANNEL IN NORMAL MODE 
21 FORMAT CRP47 CRP DEACTIVATED CHANNEL WITH DAI SET IN DIAG REG
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=470,CLRCRP=472,DAI=474
*                   CLEAR,CLRCRP,DAI
   DATA (OB(470),H) 0000, 0100, 0040
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 47D                     *MODULE NUMBER 
   IF(P5.LT.3)GOTO 32            *P5 = 0,1,2 ARE OK 
   MSG 11(P5) TO PRINT,DISPLAY   *ERROR MSG 
   PICTURE
   PAUSE
   BLANK
   GOTO 30                       *LOOP FOR RECHECK
32 MSG 0 TO DISPLAY              *RUNNING MSG 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
   IF(P5.EQ.2)GOTO 44 
* 
* -----------------DEACTIVATE TEST--------------- 
* 
* 
* ----TEST DEACTIVATE-----
40 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   B9 = 1                        *SECTION CNTR
   B8 = 1                        *CLEAR DIAG REG AFTER FUNC 
   GOSUB 65                      *RES CHAN AND CLEAR CRP
   B12 = 2
   FUNC 200 , ABT 70             *RD GSW
   WC = 2 
   BA = 0 
   B12 = 4
   IN CHAIN , ABT 70             *LEAVE CHAN ACTIVE 
   DELAY 1 USEC 
   B12 = 14 
   DCN , ABT 42                  *EXPECT CRP TO DEACTIVE CH 
   ERROR 20/471D GOTO 56         *ERROR IF CHAN NOT DEACTIVE
42 GOTO 40 WHILE(B10+1.LT.150D)  *LOOP 150 TIMES
   B10 = 0                       *RESET LOOP CNTR 
* 
   IF(P5.EQ.1)GOTO 45            *CHECK ENDS IF P5 SET
* 
* ----TEST AUTO DEACTIVATE DISABLED-----
44 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF P4 SET 
   B9 = 2                        *SECTION CNTR
   B8 = 1                        *CLR DIAG REG AFTER FUNC 
   GOSUB 65                      *RERESERVE CH AND CLRCRP 
   B8 = 0                        *LEAVE DIAG REG SET
   BA = DAI                      *SET DISABLE DEACTIVE
   GOSUB 67                      *SEND FUNC 
   B12 = 2
   FUNC 200 , ABT 70
   WC = 2 
   BA = 0 
   B12 = 4
   IN CHAIN , ABT 70             *LEAVE CH ACTIVE 
   DELAY 1 USEC 
   B12 = 14 
   DCN , ABT 54                  *ERROR IF COMMAND ABORT
   GOTO 44 WHILE(B10+1.LT.150D)  *LOOP 150D TIMES 
   B10 = 0                       *RESET LOOP CNTR 
* 
* -----------------ENDS/REPEATS-----------------
* 
45 IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
46 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
*   EXIT       EXIT*END TEST SEQUENCE 
   GOTO 77                       *END TEST SEQUENCE.... 
* 
* -----------------ERROR POSTING------------------- 
* 
54 ERROR 21/472D                 *CHAN DCN WHEN NOT EXPECTED
56 B11 = B11 + 1
   IF(ES.AND.SL.EQ.0)GOTO 60     *SKIP IF SL
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 62                       *RETURN TO LOOP
* 
60 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7700                     *FLAG ERROR PROCESSOR
   CALL 97X                      *PROCESS ERROR MSGS
62 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM) GOTO 46
   IF(P5.EQ.2) GOTO 44           *RETURN TO LOOP
   IF(B9.EQ.1)GOTO 40            *RETURN TO CORRECT LOOP
   IF(B9.EQ.2)GOTO 44            *RETURN TO CORRECT LOOP
   GOTO 40                       *RETURN TO TOP OF LOOP 
* 
* -----------------SUBROUTINES----------------------
* 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES , ABT 70 
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP FUNC 
67 B12 = 2
   FUNC 250 , ABT 70
   WC = 1 
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   IF(B8.EQ.0)RETURN             *SHORT RETURN IF B8=0
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 62                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   CALL 97X                          *PROCESS ABORT 
   GOTO 62                           *RETURN TO LOOP
* 
77 END 30 
COMPILE   *CRP47 - DISABLE AUTO DISCONNECT TEST 
   MODULE CRP51,6000(200),LOCK
***       CRP51 - HIGH SPEED RING TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE CRP RING INTERFACE AT 
*         THE NORMAL HPP TRANSFER RATE.  TESTS THE RING INPUT 
*         REGISTER, CF/DF, RQSTK, LOST PACKET REGISTER, FUNCTION
*         DECODE, AND EQUIPMENT COMPARE LOGIC.
*         MODULE PREFORMS TEST OUTLINES BELOW IN A COMPLEXED TREE 
*         OF SUBMODULES.
*         CRP51 CONTROLS WHICH SUBMODLES ARE CALLED AND METHOD OF 
*         REPEATS DEPENDING ON P5 PARAMETER REGISTER. 
* 
* 
*   1.2   METHOD
* 
*            CRP51 CALL CRP51A, 51B, 51C
*              CRP51A EXITS-TO 510, 51D 
*              CRP51B EXITS-TO 510, 51E, 51F
*              CRP51C EXITS-TO 510, 51G 
* 
*      - CRP51 -
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             IS SELECTED.
*         4.  PAUSE (P4). 
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*     - CRP51A -
*         7.  DISABLE ALL RING STOPS. 
*         - CRP511-515
*         8.  DOWNLOAD THE TEST PROGRAM TO THE HPP WHOSE EQUIPMENT
*             CODE IS SPECIFIED IN PARAMETER WORD P2.  THE TEST 
*             PROGRAM PERFORMS THE FOLLOWING: 
*                          A. SENDS 64 PACKETS TO THE DATA FIFO 
*                          B. SENDS 1 PACKET TO THE REQUEST STACK.
*                          C. REPEATS A AND B 16 TIMES
*                          D. SENDS 2 LOST PACKETS
*         - CRP51A -
*         9.  START THE HPP PROGRAM.
*         10. PAUSE 
*         11. READ THE GSW AND VERIFY THAT THE FOLLOWING STATUS 
*             BITS ARE SET: 
*                          A. RQSTK RING STOP.
*                          B. RQSTK READY 
*                          C. DF READY
*     - CRP51B -
*       - CRP51E -
*         12. READ AND VERIFY RQSTK DATA. 
*       - CRP51F -
*         13. READ AND VERIFY LOST PACKET DATA. 
*     - CRP51C -
*       - CRP51G -
*         14. READ AND VERIFY CONTROL/DATA FIFO DATA. 
*     - CRP51 - 
*         15.  REPAET STEPS 4 - 14 25D TIMES. 
*         16. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         17. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-14.
*         18. IF ANY ERRORS WERE DETECTED DURING EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         19. END OF MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP51 
*           . CRP51 ERROR(S) IN MODULE = *DEC 
*           . CRP51 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP51 PARAMETER ERROR P5.GT.6  P5=*OCT
* 
*           . CRP51A END FLAG GS BIT FAILED TO SET
*           . CRP51A DF READY GS BIT FAILED TO SET
*           . CRP51A RQSTK READY GS BIT FAILED TO SET 
*           . CRP51A RQSTK RING STOP GS BIT FAILED TO SET 
* 
*           . CRP51D ..... STATUS ERROR ..... 
*           .   STOP HPP EQ=*H NOT ACCEPTED BY HPP
*           .   FAILURE COULD BE PARAM P2 ERROR OR RING FAILURE.
*           .   CHECK FOR CORRECT TARGET HPP. 
*           . CRP51D ERC=*DEC, LC=*DEC, STATUS =*H*H HEX
* 
*           . CRP51E DATA ERROR IN RQSTK
*           .   ADDRESS = *3H , LOG.DIFF = *H*H H 
*           .   ADDRESS  EXPECTED  ACTUAL   L.D.  (HEX VALUES)
*           .     *3H     *H*H     *H*H    *H*H 
*           . CRP51E RQSTK RING STOP GS BIT FAILED TO SET 
*           . CRP51E RQSTK READY GS BIT FAILED TO SET 
*           . CRP51E RQSTK READY GS BIT FAILED TO CLEAR ON READ 
*           . CRP51E RQSTK RING STOP GS BIT FAILED TO CLEAR 
* 
*           .  DATA ERROR IN LOST PACKET REGISTERS
*           . CRP51F LP/MLP FAILED TO CLEAR AFTER READ
*           .  LOST PACKET REGISTERS     LP-1(C)  LP-2(D) 
*           .              EXPECTED------ *H*HH   *H*HH 
*           .               ACTUAL------- *H*HH   *H*HH 
*           . CRP51F LP/MLP FAILED TO SET BEFORE READ OF LP REG.
* 
*           .   DATA ERROR IN CF/DF MEMORY FROM HPP/RING
*           .  ADDRESS=*3H H  , LOG DIFF=*H*H*H*H H 
*           .  ADDRESS  EXPECTED  ACTUAL  LOG.DIF.  HEX VALUES
*           .    *3H    *H*H*H*H
*           .                     *H*H*H*H  *H*H*H*H
*           . CRP51G   ..... STATUS ERROR ..... 
*           .   DF RDY GS BIT FAILED TO SET 
*           .   END FLAG GS BIT FAILED TO SET 
*           .   DF RDY GS BIT FAILED TO CLEAR AFTER READ
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    - 
*         P0 = CRP EQUIPMENT CODE 
*         P1 = NON-EXISTENT HPP EQUIPMENT CODE
*         P2 = TARGET HPP FOR TEST EQUIPMENT CODE 
* 
*        - REPAIR MODE
*         P0, P1 , P2 AS ABOVE
*         P4 LOOPING DELAY
*         P5  SUBMODULE ( CONDITION )SELECTOR 
*            P5 = 0 RUN MODULE AS OUTLINED 25D TIMES. 
*            P5 = 1 REPEAT DOWNLOAD OF HPP (NO START ISSUED)
*            P5 = 2  DOWNLOAD HPP THEN LOOP ON STOP/SET P/START OF HPP. 
*                    (S.P.S.) 
*            P5 = 3 LOOP ON DWONLOAD AND S.P.S OF HPP.
*            P5 = 4 IN CRP51B, LOOP ON S.P.S AND READ RQSTK 
*            P5 = 5 IN CRP51B, LOOP ON S.P.S. AND READ OF LP1/2.
*            P5 = 6 IN CRP51C, LOOP ON S.P.S. AND READ OF CF/DF FIFO. 
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-47 HAVE RUN CORRECTLY.
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B1  = CRP97Z FLAG.
*         B2  = SCRATCH CELL USED AS NEEDED.
*         B3  =    ..    ..   ..  ..    ..
*         B4  =    ..    ..   ..  ..    ..
*         B8  = DIAG REG FUNCTION CONTROL.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = ERROR/ABORT RETURN FLAG.
* 
*       - IB -
*        0,1,2,3 READ BUFFER
*        0 - 37 READ BUFFER 
*       - OB -
*        0 , 1  OUTPUT BUFFER 
*        0 - 273 HPP PROGRAM PACKETS BUFFER 
*        100 - 116 RQSTK / LP READ BUFFER 
*        140 - 145 DISPLAY DATA BUFFER
*        440 - 443 RESET REGISTER IMAGE 
*        470 - 473 STOP HPP PACKET
*        500 - 503 DIAG REG FUNCTIONS 
*       - SB -
*        0 , 1  CRP STATUS READ BUFFER
* 
* 
*   2.3   SUBMODULES USED 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP51 -  HIGH SPEED RING TEST 
2  FORMAT CRP51 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
10 FORMAT CRP51 ERROR(S) IN MODULE = *DEC 
11 FORMAT  - CRP51 END PASS = *DEC
12 FORMAT  -TEST REQUIRES APPROXIMATELY 20 SEC. TO RUN
26 FORMAT CRP51 PARAMETER ERROR P5.GT.6  P5=*OCT
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=500,CLRCRP=502
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE 
   MSG 12 TO PRINT               *WARNING MSG 
   B13 = 51D                     *MODULE NUMBER 
   B0 = 0510D                    *SET EXIT-TO FLAG
   IF(P5.LE.6)GOTO 32            *CHK P5 PARAMETER
   MSG 26(P5) TO DAYFILE,PRINT,DISPLAY
   PAUSE
   GOTO 30
* 
* --------------------------------------------------
* 
32 MSG 0 TO DISPLAY              *RUNNING MSG 
   B10 = 0                       *CLEAR LOOP CNTR 
   B11 = 0                       *CLEAR ERROR CNTR
   OB(502) = 0001 
   OB(503) = 0000 
   OB(500) = 0000 
   OB(501) = 0000 
* 
34 GOSUB 62                      *RES CHAN/RESET ALL HPPS 
   GOSUB 66                      *SEND CLRCRP TO DIAG REG 
* 
* -----------------TEST RING--------------------------
* 
* 
* ------------------DOWNLOAD HPP----------------------- 
* 
   IF(P5.EQ.0) GOTO 40           *NOT USER SELECTION
   IF(P5.GT.3) GOTO 44           *SKIP DOWNLOAD (P5=1,2,3)
40 CALL 51A                      *START TEST
* 
* -----------------TEST RQ / LP-------------------------
* 
44 IF(P5.GT.5)GOTO 46            *SKIP RQSTK/LP TEST(P5=4,5)
   CALL 51B                      *START SECOND HALF OF TEST 
* 
* ----------------TEST D-FIFO-------------------------- 
* 
46 IF(P5.EQ.0)GOTO 47            *RUN ALL SECTIONS
   IF(P5.NE.6)GOTO 50            *SKIP FIFO TEST (P5=6) 
47 CALL 51C                      *TEST DATA FIFO
* 
50 MSG 11(B10) TO LINE 45        *PASS MSG TO K DISPLAY 
   GOTO 34 WHILE(B10+1.LE.5D)      *LOOP 5 TIMES
* 
* ---------------ENDS/REPEATS-------------------------
   IF(B11.GT.ERRLIM)GOTO 60      *ERROR LIMIT 
   IF(ES.AND.RM.NE.0) GOTO 32    *REPEAT TEST 
* 
60 IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
* 
* ----CLEAR UP----- 
   GOSUB 62                      *RESET ALL HPPS
   GOSUB 66                      *CLEAR CRP 
*    EXIT.....                   *END MODULE
   GOTO 77                       *END MODULE SERIES 
* 
* -----------------SUBROUTINES------------------------
* 
* 
* ----SET/CLEAR EXRESET REG-----
62 OB(440) = 377                 *RESET REG DATA
   OB(441) = 377                 *- 
   OB(442) = 0000                *- 
   OB(443) = 0000                *- 
   B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 251 , ABT 70             *MODE 2 EXRESET REG
   B12 = 3
   OUT 2 WORDS FROM OB(440) , ABT 70  *SEND 1'S TO RESET REG
   OUT 2 WORDS FROM OB(442) , ABT 70  *CLEAR RESET REG
   RETURN 
* 
* ----WRITE DIAG REG----- 
66 B12 = 2
   FUNC 250 , ABT 70
   WC = 1 
   B12 = 3
   OUT 2 WORDS FROM OB(CLRCRP) , ABT 70 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 34                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97X 
   CALL 97X                          *PROCESS ABORT 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 60          *ERROR LIMIT 
   GOTO 34                           *RETURN TO LOOP
* 
* 
77 END 30 
COMPILE   *CRP51 - HIGH SPEED RING TEST -CONTROL- 
   MODULE CRP51A,6000(200),LOCK 
***       CRP51A - HPP RING TEST -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP51A -  HIGH SPEED RING TEST - 1
2  FORMAT CRP51A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP51A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP51A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP51A
10 FORMAT CRP51A ERROR(S) IN MODULE = *DEC
20 FORMAT CRP51A END FLAG GS BIT FAILED TO SET
21 FORMAT CRP51A DF READY GS BIT FAILED TO SET
22 FORMAT CRP51A RQSTK READY GS BIT FAILED TO SET 
25 FORMAT CRP51A RQSTK RING STOP GS BIT FAILED TO SET 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=500,CLRCRP=502,DALLRS=476 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0514D)GOTO 42        *RETURN FROM 51D 
   IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
   IF(B0.EQ.1514D)GOTO 33        *RETURN FROM DATA SUB 510
   B13 = 51D                     *MODULE NUMBER 
   B0 = 0511D                    *SET EXIT-TO FLAG
* 
32 MSG 0 TO DISPLAY              *RUNNING MSG 
   EXIT TO 510                   *LOAD DATA TO OB 
33 B0 = 0511D                    *RESET EXIT TO FLAG
   IF(ES.AND.RM.EQ.0)GOTO 34     *SKIP CLR OF CNTRS 
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* ----------------LOAD HPP--------------------------------
* 
34 B8 = 1                        *CLEAR DIAG REG AFTER FUNC 
   GOSUB 65                      *RES CHAN AND CLRCRP 
   BA = DALLRS                   *DISABLE ALL RNG STOPS 
   B8 = 0                        *LEAVE DIAG REG SET
   GOSUB 67                      *SEND FUNC TO DIAG REG 
* 
* 
*   P5=0/1
* 
41 EXIT TO 51D                   *DOWN LOAD HPP - P2
* 
42 B0 = 0511D                    *RESET EXIT TO FLAG
   IF(ES.AND.SL.NE.0)GOTO 41     *SL THIS SECTION 
   GOSUB 62                      *CHECK ERRLIM
   IF(P5.EQ.1)GOTO 41            *LOOP DOWN LOAD
* 
*     P5=0/2
43 GOSUB 60                      *STOP/SET-P/START HPP
* 
   IF(P4.NE.0)DELAY P4 USEC 
* 
   IF(ES.AND.SL.NE.0)GOTO 43     *SL THIS SECTION 
   GOSUB 62                      *CHECK ERRLIM
   IF(P5.EQ.2)GOTO 43            *LOOP S.P.S. 
* 
* ----------------DELAY AND CHECK STATUS------------------
   DELAY 4 USEC                  *PAUSE 
   GOSUB 64                      *RD GSW
   IF(SB(1).AND.2.EQ.0) ERROR 21/ 512D GOTO 54    *DF RDY 
   IF(SB(1).AND.1.EQ.0) ERROR 22/ 513D GOTO 54    *RQ RDY 
   IF(SB(0).AND.2.EQ.0) ERROR 25/ 516D GOTO 54    *RQ.RS
* 
* 
*     P5=0/3
   IF(P5.EQ.3)GOTO 34            *LOOP DOWN LOAD/S.P.S
* 
* 
* -----------------ENDS/REPEATS---------------------
* 
52 IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
   GOSUB 62                      *CHECK ERRLIM
53 IF(B11.NE.0)MSG 10(B11) TO PRINT,DAYFILE 
   EXIT                          *RETURN TO CRP51 
* 
* --------------ERROR ROUTINES--------------- 
* 
54 B11 = B11 + 1                 *BUMP ERROR CNT
   ENDSUB 
   IF(ES.AND.SL.EQ.0)GOTO 56     *SKIPF IF NOT SL 
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 34                       *LOOP
* 
* 
56 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
* 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
* 
* -----------------SUBROUTINES------------------------
* 
* ----STOP/SET P/START HPP----- 
60 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *WRT MODE 2 3 PKTS 
   B12 = 3
   OUT 14 WORDS FROM OB(400) , ABT 70      *SEND PKTS 
   RETURN 
* 
* ----CHECK ERRLIM----- 
62 IF(B11.LE.ERRLIM)RETURN       *B11 OK
   MSG 7 TO PRINT,DAYFILE        *ERROR LIMIT 
   GOTO 53                       *EXIT WITH ERRLIM
* 
* ----READ GS-----
64 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 200 , ABT 70
   B12 = 7
   STATUS 2 WORDS TO SB(0) , ABT 70 
   RETURN 
* 
* ----RES CH / CLRCRP-----
65 B12 = 1
   RES , ABT 70 
* ----WRITE DIAG REG----- 
66 BA = CLRCRP
67 OB(502) = 0001 
   OB(503) = 0000 
   OB(476) = 0000 
   OB(477) = 0006 
   OB(500) = 0000 
   OB(501) = 0000 
   B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   IF(B8.EQ.0) RETURN            *SHORT OUT IF B8=0 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 34                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   EXIT TO 97Z                       *PROCESS ABORT 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 53          *ERROR LIMIT 
   GOTO 34                           *RETURN TO LOOP
* 
* 
77 END 30 
COMPILE   *CRP51A - HIGH SPEED RING TEST - 1
   MODULE CRP51B,6000(200),LOCK 
***       CRP51B - HPP RING TEST -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP51B -  HIGH SPEED RING TEST - 2
2  FORMAT CRP51B .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP51B  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP51B.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP51B
10 FORMAT CRP51B ERROR(S) IN MODULE = *DEC
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=500,CLRCRP=502,DALLRS=476 
   EQUATE CLNUP=474 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0515D)GOTO 41        *RETURN FROM 51E 
   IF(B0.EQ.0516D)GOTO 45        *RETURN FROM 51F 
   IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
   IF(B0.EQ.1514D)GOTO 33        *RETURN FROM DATA SUB 510
   B0 = 0512D                    *SET EXIT-TO FLAG
* 
32 MSG 0 TO DISPLAY              *RUNNING MSG 
   EXIT TO 510                   *LOAD DATA TO OB 
33 B0 = 0512D                    *RESET EXIT TO FLAG
   IF(ES.AND.RM.EQ.0)GOTO 34     *SKIP CLEAR OF ERR/LOOP CNTRS
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -------------CONTROL TEST OF RQ/LP------------- 
* 
34 IF(ES.AND.RM.NE.0)GOTO 36     *CONTINUE
   IF(P5.EQ.0)GOTO 40            *NO CONDITIONS SET 
36 B8 = 1                        *CLEAR DIAG REG AFTER FUNC 
   BA = CLNUP                    *CLEAN UP FUNC FOR DIAG REG
   GOSUB 66                      *SEND FUNC 
   B8 = 0 
   BA = DALLRS
   GOSUB 67                      *DISABLE ALL RING STOPS
   GOSUB 60                      *S.P.S THE HPP(NO DOWNLOAD)
* 
* ---------------CHECK RQSTK----------------------------- 
* 
40 IF(P5.EQ.5)GOTO 44            *SKIP RQ TEST  DO LP 
* 
   EXIT TO 51E                   *READ RQSTK
* 
41 B0 = 0512D                    *RESET EXIT-TO FLAG
   GOSUB 62                      *CHECK ERRLIM
   IF(P5.EQ.4)GOTO 42            *CLEAN UP AND LOOP 
   GOTO 44                       *CONTINUE MODULE 
* 
42 BA = CLNUP                    *DIAG REG FUNC CLNUP 
   B8 = 1                        *RESET DIAG REG AFTER FUNC 
   GOSUB 66                      *SEND FUNC 
   B8 = 0 
   BA = DALLRS
   GOSUB 67                      *DISABLE ALL RING STOPS
   GOSUB 60                      *S.P.S HPP 
   DELAY 4 USEC                  *PAUSE FOR HPP 
   GOTO 40                       *REPEAT LOOP RQSTK CHECK 
* 
* ----------------CHECK LP/MLP------------------------
* 
44 EXIT TO 51F                   *READ LP 
* 
45 B0 = 0512D                    *RESET EXIT-TO FLAG
   GOSUB 62                      *CHECK ERRLIM
   IF(P5.EQ.5)GOTO 46            *CLEAN UP ANDF LOOP
   GOTO 50                       *CHECK ENDS-REPEATS
* 
46 BA = CLNUP                    *DIAG REG FUNC CLNUP 
   B8 = 1                        *RESET DIAG REG AFTER FUNC 
   GOSUB 66                      *SEND FUNC 
   B8 = 0 
   BA = DALLRS
   GOSUB 67                      *DISABLE ALL RING STOPS
   GOSUB 60                      *S.P.S HPP 
   DELAY 4 USEC                  *PAUSE FOR HPP 
   GOTO 44                       *REPEAT LOOP LP CHECK
* 
* 
* 
* -----------------ENDS/REPEATS---------------------
* 
50 IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
   GOSUB 62                      *CHECK ERRLIM
53 IF(B11.NE.0)MSG 10(B11) TO PRINT,DAYFILE 
   EXIT                          *RETURN TO CRP51 
* 
* --------------ERROR ROUTINES--------------- 
* 
54 B11 = B11 + 1                 *BUMP ERROR CNT
   ENDSUB 
   IF(ES.AND.SL.EQ.0)GOTO 56     *SKIPF IF NOT SL 
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 34                       *LOOP
* 
* 
56 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
* 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
* 
* -----------------SUBROUTINES------------------------
* 
* ----STOP/SET P/START----- 
60 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *WRT MODE 2 3 PKTS 
   B12 = 3
   OUT 14 WORDS FROM OB(400) , ABT 70        *SEND PKTS 
   RETURN 
* 
* ----CHK ERRLIM----- 
62 IF(B11.LE.ERRLIM)RETURN                *CONTINUE 
   MSG 7 TO PRINT,DAYFILE 
   GOTO 53                 *EXIT 51B
* 
* ----RES CHANNEL 
66 B12 = 1
   RES , ABT 70 
* ----WRITE DIAG REG----- 
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   IF(B8.EQ.0) RETURN            *SHORT OUT IF B8=0 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 34                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   EXIT TO 97Z                       *PROCESS ABORT 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 53          *ERROR LIMIT 
   GOTO 34                           *RETURN TO LOOP
* 
* 
77 END 30 
COMPILE   *CRP51B - HIGH SPEED RING TEST - 2
   MODULE CRP51C,6000(200),LOCK 
***       CRP51C - HIGH SPPED RING TEST PART 3 DF READ -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP51C -  HIGH SPEED RING TEST - 3
2  FORMAT CRP51C .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP51C  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP51C.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT-CRP51C
10 FORMAT CRP51C ERROR(S) IN MODULE = *DEC
20 FORMAT CRP51C END FLAG GS BIT FAILED TO SET
21 FORMAT CRP51C DF READY GS BIT FAILED TO SET
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=500,CLRCRP=502,DALLRS=476 
   EQUATE CLNUP=474 
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0517D)GOTO 42        *RETURN FROM 51G 
   IF(B0.EQ.0726D)GOTO 76        *RETURN FROM 97Z 
   IF(B0.EQ.1514D)GOTO 33        *RETURN FROM DATA SUB 510
   B0 = 0513D                    *SET EXIT-TO FLAG
* 
32 MSG 0 TO DISPLAY              *RUNNING MSG 
   EXIT TO 510                   *LOAD DATA TO OB 
33 B0 = 0513D                    *RESET EXIT TO FLAG
   IF(ES.AND.RM.EQ.0)GOTO 34     *SKIP CLR OF ERR/LOOP CNTRS
   B10 = 0                       *LOOP CNTR 
   B11 = 0                       *ERROR CNTR
* 
* -------------CONTROL TEST OF DF-------------
* 
34 IF(ES.AND.RM.NE.0)GOTO 36     *CONTINUE NORMAL ROUTE 
   IF(P5.EQ.0)GOTO 40            *NO CONDITIONS SET 
36 B8 = 1                        *CLEAR DIAG REG AFTER FUNC 
   BA = CLNUP                    *CLEAN UP FUNC FOR DIAG REG
   GOSUB 66                      *SEND FUNC 
   B8 = 0 
   BA = DALLRS
   GOSUB 67                      *DISABLE ALL RING STOPS
   GOSUB 60                      *S.P.S THE HPP(NO DOWNLOAD)
* 
* -----------------CHECK DATA FIFO--------------------
* 
* 
* ----CHECK STATUS BEFORE CALL
40 GOSUB 64                      *GET GS
   IF(SB(1).AND.2.EQ.0)ERROR 21/0518D GOTO 54  *DF NOT RDY
   IF(SB(1).AND.4.EQ.0)ERROR 20/0518D GOTO 54  *EF NOT SET
* 
   EXIT TO 51G                   *READ D-FIFO 
42 B0 = 0513D                    *RESET EXIT-TO FLAG
   GOSUB 62                      *CHECK ERRLIM
   IF(P5.EQ.6)GOTO 44            *CLEAN UP AND LOOP 
   GOTO 50                       *CONTINUE MODULE 
* 
44 BA = CLNUP                    *DIAG REG FUNC CLNUP 
   B8 = 1                        *RESETR DIAG REG AFTER FUNC
   GOSUB 66                      *SEND FUNC 
   B8 = 0 
   BA = DALLRS
   GOSUB 67                      *DISABLE ALL RING STOPS
   GOSUB 60                      *S.P.S HPP 
   DELAY 4 USEC                  *PAUSE FOR HPP 
* ----DUMMY READ OF RQSTK TO CLEAR RING STOP----- 
   B12 = 2
   FUNC 205 , ABT 70
   B12 = 4
   IN 30 WORDS TO IB(0) , ABT 70
* ----
   GOTO 40                       *REPEAT LOOP RQSTK CHECK 
* 
* 
* -----------------ENDS/REPEATS---------------------
* 
50 IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
   GOSUB 62                      *CHECK ERRLIM
53 IF(B11.NE.0)MSG 10(B11) TO PRINT,DAYFILE 
   EXIT                          *RETURN TO CRP51 
* 
* --------------ERROR ROUTINES--------------- 
* 
54 B11 = B11 + 1                 *BUMP ERROR CNT
   ENDSUB 
   IF(ES.AND.SL.EQ.0)GOTO 56     *SKIPF IF NOT SL 
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 34                       *LOOP
* 
* 
56 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
* 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
* 
* -----------------SUBROUTINES------------------------
* 
* ----STOP/SET P/START----- 
60 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *WRT MODE 2 3 PKTS 
   B12 = 3
   OUT 14 WORDS FROM OB(400) , ABT 70        *SEND PKTS 
   RETURN 
* 
* ----CHK ERRLIM----- 
62 IF(B11.LE.ERRLIM)RETURN         *CONTINUE
   MSG 7 TO PRINT,DAYFILE 
   GOTO 53                 *EXIT 51 
* 
* ----READ GS-----
64 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 200 , ABT 70
   B12 = 7
   STATUS 2 WORDS TO SB(0) , ABT 70 
   RETURN 
* 
* ----RES CHANNEL 
66 B12 = 1
   RES , ABT 70 
* 
* ----WRITE DIAG REG----- 
67 B12 = 2
   FUNC 250 , ABT 70
   B12 = 3
   OUT 2 WORDS FROM OB(BA) , ABT 70 
   IF(B8.EQ.0) RETURN            *SHORT OUT IF B8=0 
   OUT 2 WORDS FROM OB(CLEAR) , ABT 70
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 34                           *RETURN TO LOOP
* 
74 MSG 0 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   EXIT TO 97Z                       *PROCESS ABORT 
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 53          *ERROR LIMIT 
   GOTO 34                           *RETURN TO LOOP
* 
* 
77 END 30 
COMPILE   *CRP51C - HIGH SPEED RING TEST - 3
   MODULE CRP51D,6000(200),LOCK 
***       CRP51D - HIGH SPEED RING TEST   DOWNLOAD -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP51 -  HIGH SPEED RING TEST 
1  FORMAT CRP51D - DOWN LOAD HPP PROGRAM
2  FORMAT CRP51D .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP51D  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT - CRP51D
10 FORMAT CRP51D ..... STATUS ERROR ..... 
11 FORMAT   STOP HPP EQ=*H NOT ACCEPTED BY HPP
12 FORMAT   FAILURE COULD BE PARAM P2 ERROR OR RING FAILURE.
13 FORMAT   CHECK FOR CORRECT TARGET HPP. 
14 FORMAT CRP51D ERC=*DEC, LC=*DEC, STATUS =*H*H HEX
27 FORMAT ----------------------------------------------
* 
* -----------------DATA-------------------------- 
* 
   EQUATE ERRLIM=20 
* 
* ----------------INITIALIZATION----------------- 
* 
30 IF(B0.EQ.0726D)GOTO 51        *ABORT RETURN FROM 97Z 
   IF(B0.EQ.1514D)GOTO 52        *RETURN FROM 510 
   IF(B0.EQ.1519D)GOTO 50        *NORMAL RETURN FROM 511-515
   B0 = 0514D                    *SET EXIT-TO RETURN FLAG 
* 
   MSG 1 TO DISPLAY 
* 
* -----------------START DOWN LOAD OF HPP PROGRAM-------
* 
* ----SET STOP HPP PKT 0710 20XX----- 
36 OB(473) = P2.AND.377          *TARGET HPP TO STOP PKT
   OB(472) = 040                 *- 
   OB(471) = 020                 *- 
   OB(470) = 007                 *- 
* 
40 B12 = 1
   RES , ABT 70                  *RESERVE CHAN TO CRP 
* 
* ----RESET ALL HPPS ON RING
   OB(0) = 377                   *ONES FOR EXRESET REG
   OB(1) = 377                   *- 
   B12 = 2
   FUNC 251 , ABT 70             *MODE 2 WRITE EXRESET REG
   B12 = 3
   OUT 2 WORDS FROM OB(0) , ABT 70   *SEND ONES TO EXRESET
   OB(0) = 0
   OB(1) = 0                         *CLEAR REGISTER
   OUT 2 WORDS FROM OB(0) , ABT 70   *CLEAR REGISTER
* 
   BA = 470                          *SEND STOP TO TARGET HPP 
   GOSUB 60                          *SEND STOP 
* 
* ----CHECK STATUS
   GOSUB 62                        *GET GS
   OB(0) = SB(0).OR.SB(1)          *MERGE STATUS
   IF(OB(0).EQ.0) GOTO 44          *STATUS OK 
* 
* -----------------ERROR PROCESSING------------------------ 
* 
   B11 = B11 + 1
   B15 = 6666                    *ERROR RETURN
   IF(ES.AND.SL.EQ.0) GOTO 42    *NOT SL
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 52
* 
42 MSG 0 TO LINE 1
   MSG 1 TO LINE 2
   MSG 10 TO LINE 3 
   MSG 11(P2) TO LINE 4 
   MSG 12 TO LINE 5 
   MSG 13 TO LINE 6 
   MSG 14(B11,B10,SB(0),SB(1)) TO LINE 7
   MSG 27 TO LINE 8 
* 
   PICTURE
   HALT 
   BLANK
   GOTO 52                       *RETURN TO LOOP
* 
* --------------------------- 
* 
44 EXIT TO 511                   *START DWN LOAD SUBMODULE
* 
* ----------------------------
* 
* 
46 PASS 
* 
* 
50 B0 = 0514D                    *RESET EXIT-TO FLAG
   EXIT TO 510                   *SET UP DATA IN OB 
* 
* 
51 B15 = 7777                    *ABORT RETURN
52 B0 = 0514D                    *RESET EXIT-TO FLAG
   EXIT TO 51A                   *RETURN TO SUBMODULE 51A 
* 
* 
* ----------------SUBROUTINES------------------------------ 
* 
* ----WRITE ONE PKT TO RING FROM BA-----
60 B12 = 2
   FUNC 273 , ABT 70             *WRT MODE 2 RCR/RDR
   B12 = 3
   OUT 4 WORDS FROM OB(BA) , ABT 70  *SEND 1 PKT TO TO RING 
   RETURN 
* ----READ GSW----- 
62 B12 = 2
   FUNC 200, ABT 70              *FUNC READ GSW MODE 2
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 51                           *RETURN TO LOOP
* 
74 MSG 1 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   EXIT TO 97Z                       *PROCESS ABORT 
* 
* 
77 END 30 
COMPILE   *CRP51D - DOWN LOAD HPP PROGRAM 
   MODULE CRP51E,6000(200),LOCK 
***       CRP51E - HIGH SPEED RING TEST  READ RQSTK - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP51 -  HIGH SPEED RING TEST 
1  FORMAT CRP51E - READ DATA FROM HPP - RQSTK 
2  FORMAT CRP51E .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP51E  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
11 FORMAT CRP51E DATA ERROR IN RQSTK
12 FORMAT   ADDRESS = *3H , LOG.DIFF = *H*H H 
13 FORMAT   ADDRESS  EXPECTED  ACTUAL   L.D.  (HEX VALUES)
14 FORMAT     *3H     *H*H     *H*H    *H*H 
15 FORMAT CRP51E RQSTK RING STOP GS BIT FAILED TO SET 
16 FORMAT CRP51E RQSTK READY GS BIT FAILED TO SET 
17 FORMAT CRP51E RQSTK READY GS BIT FAILED TO CLEAR ON READ 
20 FORMAT CRP51E RQSTK RING STOP GS BIT FAILED TO CLEAR 
27 FORMAT ----------------------------------------------
* 
* -----------------DATA-------------------------------------
* 
   EQUATE ERRLIM = 20 
* 
* -----------------INITIALIZATION-------------------------- 
* 
30 IF(B0.EQ.0726D)GOTO 62        *RETURN FROM 97Z 
   B0 = 0515D                    *SET EXIT-TO FLAG
* 
   MSG 1 TO DISPLAY 
* 
* -----------------READ/VERIFY DATA-------------------
* 
40 B12 = 1
   RES , ABT 70                  *GET CHANNEL 
* 
* ----CHECK STATUS BEFORE READ
* 
   GOSUB 64                      *GET GS
   IF(SB(1).AND.1.EQ.0)ERROR 16/0518D GOTO 51  *RQ NOT RDY
   IF(SB(0).AND.2.EQ.0)ERROR 15/0518D GOTO 51  *RS NOT SET
* 
   B1 = 0                        *SET BUFFER INDEX
   B2 = 0                        *SET COMPARE INDEX 
42 GOSUB 64                      *GET STATUS
   IF(SB(1).AND.1.EQ.0)GOTO 44   *RQSTK EMPTY 
* 
   B12 = 2
   FUNC 205 , ABT 70             *READ RQSTK DATA MODE 2
   B12 = 4
   WC = 2 
   BA = B1                       *IN BUFFER ADDRESS 
   IN , ABT 70
   GOTO 42 WHILE(B1+2.LE.32D)    *READ ALL RQSTK AVAILABLE
* 
44 WC = 2 
   COMPARE OB(B2) TO IB(B2) FOR WC , ABT 50   *CHK RQSTK
   GOTO 44 WHILE(B2+2.LT.B1)                  *RD ALL STK 
* 
* ----CHECK STATUS AFTER RQSTK READ 
   GOSUB 64                      *GET GS
   IF(SB(1).AND.1.NE.0)ERROR 17/0518D GOTO 51  *RQ RDY
   IF(SB(0).AND.2.NE.0)ERROR 20/0518D GOTO 51  *RQ.RS SET 
* 
   GOTO 62                       *END OF SUBMODULE
* 
* ----------------DATA ERROR--------------------------
* 
50 ERROR 11/0519D                *RQSTK ERROR 
51 B11 = B11 + 1
   B15 = 6666                    *ERROR RETURN
   IF(ES.AND.SL.EQ.0)GOTO 52
   MSG 5(B11,B10,SB(0),SB(1),EA,EA) TO DISPLAY
   GOTO 62
* 
* 
* 
* 
52 MSG 0 TO LINE 1               *TITLE 
   MSG 1 TO LINE 2               *MODULE SUB TITLE
   MSG EM TO LINE 3              *DATA ERROR
   IF(EM.LT.15) GOTO 57          *FINISH STATUS ERROR MSG 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 4 
   MSG 27 TO LINE 5 
   GOTO 60                          *END DISPLAY
* 
53 B3 = 0 
54 OB(B3+100) = OB(B3).XOR.IB(B3)   *FORM LOG.DIFF. 
   GOTO 54 WHILE(B3+1.LT.B1)        *ALL DATA 
   B5 = B2.RS.1                     *DIVIDE ADDRESS BY 2
   MSG 12(B5,OB(B2+100),OB(B2+101)) TO LINE 4  *ADDRESS 
   MSG 13 TO LINE 5 
   B5 = 0                        *LINE CNTR 
   B3 = 0 
56 OB(140) = B5                  *ADDRESS 
   COPY OB(B3) TO OB(141) FOR 2  *MOVE DATA FOR DISPLAY 
   COPY IB(B3) TO OB(143) FOR 2  *- 
   COPY OB(B3+100) TO OB(145) FOR 2 
   MSG 14, 7 WORDS FROM OB(140) TO LINE B5+6
   B5 = B5 + 1
   GOTO 56 WHILE(B3+2.LT.B1)     *ALL RQSTK DATA
* 
57 MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE B5+7
   MSG 27 TO LINE B5+8
* 
60 PICTURE
   HALT 
   BLANK
   GOTO 62
* 
* ----------------ENDS/REPEATS------------------
* 
61 B15 = 7777                    *ABORT RETURN
62 B0 = 0515D                    *RESET EXIT-TO FLAG
   EXIT TO 51B                   *RETURN TO SUB 51B 
* 
* -----------------SUBROUTINES--------------------------- 
* 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200 , ABT 70             *READ GS MODE 2
   B12 = 7
   STATUS 2 WORDS TO SB(0) , ABT 70 
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 61                           *RETURN TO LOOP
* 
74 MSG 1 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   EXIT TO 97Z                       *PROCESS ABORT 97Z/51
* 
77 END 30 
COMPILE   *CRP51E - READ CRP DATA FROM HPP
   MODULE CRP51F,6000(200),LOCK 
***       CRP51F - HIGH SPEED RING TEST  READ LP -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP51 -  HIGH SPEED RING TEST 
1  FORMAT CRP51F - READ DATA FROM HPP -  LP 
2  FORMAT CRP51F .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP51F  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
15 FORMAT  DATA ERROR IN LOST PACKET REGISTERS
16 FORMAT CRP51F LP/MLP FAILED TO CLEAR AFTER READ
17 FORMAT  LOST PACKET REGISTERS     LP-1(C)  LP-2(D) 
20 FORMAT              EXPECTED------ *H*HH   *H*HH 
21 FORMAT               ACTUAL------- *H*HH   *H*HH 
24 FORMAT CRP51F LP/MLP FAILED TO SET BEFORE READ OF LP REG.
27 FORMAT ----------------------------------------------
* 
* -----------------DATA-------------------------------------
* 
   EQUATE ERRLIM = 20 
* 
* -----------------INITIALIZATION-------------------------- 
* 
30 IF(B0.EQ.0726D)GOTO 61        *RETURN FROM 97Z 
   B0 = 0516D                    *SET EXIT-TO FLAG
* 
   MSG 1 TO DISPLAY 
* 
* -----------------READ/VERIFY DATA-------------------
* 
40 B12 = 1
   RES , ABT 70                  *GET CHANNEL 
* 
   IF(P5.NE.5)GOTO 42            *NOT LOOP ON LP READ 
* ----DUMMY READ OF RQSTK TO CLEAR RING STOP----- 
* 
   B12 = 2
   FUNC 205 , ABT 70
   BA = 0 
   WC = 30D 
   B12 = 4
   IN , ABT 70
* 
* ----CHECK STATUS BEFORE READ
* 
42 GOSUB 64                      *GET STATUS
   IF(SB(1).AND.140.EQ.0)ERROR 24/0581D GOTO 51  *LP/MLP NOT
   B1 = 0                        *SET BUFFER INDEX
   B2 = 0                        *SET COMPARE INDEX 
* 
* 
46 B12 = 2
   FUNC 203 , ABT 70             *READ LP-1 (CONTROL) 
   B12 = 4
   IN 2 WORDS TO IB(0) , ABT 70  *READ LP-1 
* 
   B12 = 2
   FUNC 204 , ABT 70             *READ LP-2 (DATA)
   B12 = 4
   IN 2 WORDS TO IB(2) , ABT 70  *READ LP-2 
*    GET GS AFTER READ OF LP-2
   GOSUB 64                      *GET GSW 
   WC = 4                        *SET WC FOR COMPARE
   COMPARE IB(0) TO OB(40) FOR WC , ABT 47   *CHK LP DATA 
   IF(SB(1).AND.140.NE.0)ERROR 16/518D GOTO 51  *GS ERROR 
* 
   GOTO 62                       *END OF SUBMODULE
* 
47 ERROR 15/517D GOTO 51         *LP DATA ERROR 
51 B11 = B11 + 1
   B15 = 6666                    *ERROR RETURN
   IF(ES.AND.SL.EQ.0)GOTO 52
   MSG 5(B11,B10,SB(0),SB(1),EA,EA) TO DISPLAY
   GOTO 62
* 
* 
* 
* 
52 MSG 0 TO LINE 1               *TITLE 
   MSG 1 TO LINE 2               *MODULE SUB TITLE
   MSG EM TO LINE 3              *DATA ERROR
   IF(EM.EQ.16) GOTO 57          *FINISH STATUS ERROR MSG 
   IF(EM.GE.22) GOTO 57          *STATUS ERROR
   MSG 17 TO LINE 5 
   MSG 20, 4 WORDS FROM OB(40) TO LINE 6
   MSG 21, 4 WORDS FROM IB(0) TO LINE 7 
   B5 = 2 
   GOTO 57
* 
57 MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE B5+7
   MSG 27 TO LINE B5+8
* 
60 PICTURE
   HALT 
   BLANK
   GOTO 62
* 
* ----------------ENDS/REPEATS------------------
* 
61 B15 = 7777                    *ABORT RETURN
62 B0 = 0516D                    *RESET EXIT-TO FLAG
   EXIT TO 51B                   *RETURN TO SUB 51B 
* 
* -----------------SUBROUTINES--------------------------- 
* 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200 , ABT 70             *READ GS MODE 2
   B12 = 7
   STATUS 2 WORDS TO SB(0) , ABT 70 
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                     *ERROR CNTR
   ENDSUB                            *CLEAR PENDING SUBS
   IF(ES.AND.SL.EQ.0)GOTO 74         *NOT SL
   MSG 2(EA,EC,B11,B10)TO DISPLAY    *POST ABORT/LC MSG 
   GOTO 61                           *RETURN TO LOOP
* 
74 MSG 1 TO LINE 1
   B1 = 0                            *FLAG ABORT TO 97Z 
   EXIT TO 97Z                       *PROCESS ABORT 97Z/51
* 
* 
77 END 30 
COMPILE   *CRP51F - READ CRP DATA FROM HPP
   MODULE CRP51G,6000(200),LOCK 
***       CRP51G - HIGH SPEED RING TEST  READ CF-DF - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP51 -  HIGH SPEED RING TEST 
1  FORMAT CRP51G - READ DATA FROM HPP - DF
2  FORMAT CRP51G .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP51G  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
11 FORMAT   DATA ERROR IN CF/DF MEMORY FROM HPP/RING
12 FORMAT  ADDRESS=*3H H  , LOG DIFF=*H*H*H*H H 
13 FORMAT  ADDRESS  EXPECTED  ACTUAL  LOG.DIF.  HEX VALUES
14 FORMAT    *3H    *H*H*H*H
15 FORMAT                     *H*H*H*H  *H*H*H*H
17 FORMAT CRP51G   ..... STATUS ERROR ..... 
20 FORMAT   DF RDY GS BIT FAILED TO SET 
21 FORMAT   END FLAG GS BIT FAILED TO SET 
22 FORMAT   DF RDY GS BIT FAILED TO CLEAR AFTER READ
27 FORMAT ----------------------------------------------
* 
* -----------------DATA-------------------------------------
* 
   EQUATE ERRLIM = 20 
* 
* -----------------INITIALIZATION-------------------------- 
* 
* 
30 IF(B0.EQ.0726D) GOTO 61       *RETURN FROM 97Z 
   B0 = 0517D                    *SET EXIT-TO FLAG
* 
   MSG 1 TO DISPLAY 
* 
* 
* -----------------READ/VERIFY DATA-------------------
* 
40 B12 = 1
   RES , ABT 70                  *GET CHANNEL 
* 
* ----CHECK STATUS BEFORE READ
   GOSUB 64                      *GET GS
   IF(SB(1).AND.2.EQ.0)ERROR 20/0518D GOTO 50  *DF NOT RDY
   IF(SB(1).AND.4.EQ.0)ERROR 21/0518D GOTO 50  *EF NOT SET
* 
   B1 = 0                        *SCR CNTR
   B2 = 0                        *ERROR LINE CNTR 
   B4 = 0                        *ADDRESS CNTR
   B12 = 2
   FUNC 226 , ABT 70             *RD MODE 2 28-BITS CF/DF 
   OB(0) = 0                     *SET FIRST DATA PATTERN
   OB(1) = 0                     *- 
   OB(2) = 0002                  *- 
   OB(3) = P0.AND.377            *- 
* 
42 BA = 0                        *INPUT ADDRESS 
   WC = 4                        *RD 4 WDS
   IN CHAIN , ABT 70             *RD CF/DF CONTINOUS
   COMPARE IB(0) TO OB(0) FOR WC , ABT 50 
44 GOSUB 66                      *ADJUST EXPECTED PATTERN 
   B3 = OB(0).LS.8.OR.OB(1)      *FORM CHK CNTR 
   B4 = B4 + 1                   *BUMP ADDRESS
   GOTO 42 WHILE(B3+0.LE.1776)   *LOOP FOR FULL STACK 
* 
   IF(B2.NE.0)GOTO 55            *HALT ON LE 18 ERRORS
* 
   B12 = 14 
   DCN , ABT 46                  *INSURE CHANNEL INACTIVE 
46 GOSUB 64                      *GET GS
   IF(SB(1).AND.2.NE.0)ERROR 22/0518D GOTO 50  *DF RDY
   GOTO 62                       *EXIT / RETURN TO 51 
* 
* 
* ----------------DATA ERROR--------------------------
* 
50 B11 = B11 + 1
   B15 = 6666                    *ERROR RETURN
   IF(ES.AND.SL.EQ.0)GOTO 52
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 62
* 
52 MSG 0 TO LINE 1               *TITLE LINE
   MSG 1 TO LINE 2               *MODULE NAME 
   IF(EM.GE.20) GOTO 60 
   B2 = B2 + 2                   *BUMP ERROR LINE CNTR
   IF(B2.NE.2)GOTO 53            *SKIP HEADER MSGS
   MSG 11 TO LINE 3 
   MSG 13 TO LINE 4 
53 B1 = 0 
54 OB(B1+100) = OB(B1).XOR.IB(B1)  *FORM L.D. 
   GOTO 54 WHILE(B1+1.LE.3)      *WHOLE 28-BITS 
   MSG 14(B4,OB(0),OB(1),OB(2),OB(3)) TO LINE B2+4
   COPY IB(0) TO OB(74) FOR 4    *DATA TO OUTPUT
   MSG 15, 8 WORDS FROM OB(74) TO LINE B2+5 
   IF(B2.LT.18D)GOTO 44          *CONTINUE READ 
55 MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE B2+6
   MSG 27 TO LINE B2+7
* 
* 
56 PICTURE
   HALT 
   BLANK
   GOTO 62
* 
* ----STATUS ERROR MSGS 
60 MSG 17 TO LINE 3 
   MSG EM TO LINE 4 
   B2 = 0 
   GOTO 55
* 
* ----------------ENDS/REPEATS------------------------- 
* 
61 B15 = 7777                    *ABORT RETURN
62 B0 = 0517D                    *RESET EXIT-TO FLAG
   EXIT TO 51C                   *RETURN TO SUB 51C 
* 
* -----------------SUBROUTINES--------------------------- 
* 
* ----READ GSW----- 
64 B12 = 2
   FUNC 200 , ABT 70             *READ GS MODE 2
   B12 = 7
   STATUS 2 WORDS TO SB(0) , ABT 70 
   RETURN 
* 
* ----ADJUST EXPECTED FIFO PATTERN
66 OB(1) = OB(1) + 1             *BUMP DATA PATTERN 
   B1 = OB(1).AND.0077           *CHK PATTERN 
   IF(B1.NE.77)GOTO 67           *PATTERN OK
   OB(1) = OB(1) + 1             *EXTRA BUMP OF PATTERN 
67 IF(OB(1).NE.400)RETURN        *PATTERN OK
   OB(0) = OB(0) + 1             *NEXT CNTR RANK
   OB(1) = 0                     *RESET LOWER RANK
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                        *ERROR CNTR 
   ENDSUB                               *CLEAR PENDING SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74            *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *POST ABORT/LC MSG
   GOTO 61                              *RETURN TO LOOP 
* 
74 MSG 1 TO LINE 1
   B1 = 0                         *FLAG ABORT TO 97Z
   CALL 97X                       *PROCESS ABORT
* 
77 END 30 
COMPILE   *CRP51G - READ CRP DATA FROM HPP
   MODULE CRP510,6000(200),LOCK 
* 
* ------------------DATA------------------------------
* 
* ----  RQSTK DATA
   DATA (OB( 0),H) 003F 007F 00BF 00FF 013F 017F
   DATA (OB(14),H) 01BF 01FF 023F 027F 02BF 02FF
   DATA (OB(30),H) 033F 037F 03BF 03FF
* ----LP DATA 
   DATA (OB(40),H) 0200 5555    *02P1 
* ----STOP HPP/SET P/START HPP
   DATA (OB(400),H) 0710 2000   *20XX  P2 
   DATA (OB(404),H) 0731 0000   *00XX  P2 
   DATA (OB(410),H) 0700 2000   *20XX  P2 
* ----EXRESET DATA
   DATA (OB(440),CON) 377 , 377 
   DATA (OB(442),CON) 000 , 000 
* ----FUNCTIONS 
* -                 CLEAR , CLRCRP,DALLRS,CLNUP 
   DATA (OB(474),H)0E00, 0006, 0000, 0100 
* 
* -----------------MASK DATA AS NEEDED------------------- 
* 
20 B1 = P2.AND.377             *MASK P2 FOR NEXT DATA FIELDS
   OB(403) = B1 
   OB(407) = B1 
   OB(413) = B1 
* 
* ---- SET NON-HPP INTO LP-1
   OB(41) = P1.AND.377           *FORM LP-1 DATA (CONTROL)
* 
* 
* ----------------EXITS....RETURNS------------
* 
   B1 = B0                       *SAVE B0 
   B0 = 1514D                    *EXIT FLAG FOR CRP510
   IF(B1.EQ.0510D)EXIT           *EXIT RETURN TO 51 
   IF(B1.EQ.0511D)EXIT TO 51A 
   IF(B1.EQ.0512D)EXIT TO 51B 
   IF(B1.EQ.0513D)EXIT TO 51C 
   IF(B1.EQ.0514D)EXIT TO 51D 
   IF(B1.EQ.0515D)EXIT TO 51E 
   IF(B1.EQ.0516D)EXIT TO 51F 
   IF(B1.EQ.0517D)EXIT TO 51G 
* 
77 END 20 
COMPILE   *CRP510 - SET DATA BUFFER FOR CRP51 
   MODULE CRP511,6000(200),LOCK 
***       CRP511 - 515 HPP PROGRAM DOWN LOAD MODULES -
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
* IN THE FOLLOWING SEQUENCE OF PACKETS TO BE SENT FROM THE
* CRP THE FOLLOWING SUBSTITUTIONS MUST BE MADE IN THE DATA: 
* 
*              XX = EQUIP. CODE OF THE TARGET HPP - P2
*              YY = EQUIP. CODE OF THE CRP UNDER TEST - P0
*              ZZ = THE ADDRESS OF A NON-EXISTENT EQUIPMENT - P1
* 
* 
   DATA(OB(000),H) 05A1 C000  *C0XX  LOAD DEST. TABLE LOCS A-F WITH 
   DATA(OB(004),H) 05B1 C000  *C0XX  GOBBLE ON,RING PORT ON,DEST=1
   DATA(OB(010),H) 05C1 C000  *C0XX  HPP HOST EQUIPMENT CODE = XX 
   DATA(OB(014),H) 05D0 C000  *C0XX 
   DATA(OB(020),H) 05E1 C000  *C0XX 
   DATA(OB(024),H) 05F1 C000  *C0XX 
* 
   DATA(OB(030),H) 0710 2000  *20XX  STOP THE PROCESSOR 
   DATA(OB(034),H) 04A1 00D8  FORCE OP TBL LOC A=WRITE X0,P0,CLR A/D
   DATA(OB(040),H) 04B1 0098  FORCE OP TBL LOC B=WRITE X0,P1,CLR A/D
   DATA(OB(044),H) 04C1 00F8  FORCE OP TBL LOC C=WRITE X0,P2,CLR A/D
   DATA(OB(050),H) 04D0 00B8  FORCE OP TBL LOC D=WRITE X0,P3,CLR A/D
   DATA(OB(054),H) 04E1 0738  FORCE OP TBL LOC E=RING DATA->DR, A/D+1 
   DATA(OB(060),H) 04F1 0048  FORCE OP TBL LOC F=CLEAR A/D COUNTER
   DATA(OB(064),H) 0730 FF00  FFXX  SET P=ADDR-1 (LOAD PROG AT $100)
   DATA(OB(070),H) 01F1 0000  EXECUTE OP ENTRY F - CLEAR A/D COUNTER
* 
* --------------------------------------------------- 
*                        LOC $100 
   DATA(OB(074),H) 01E1 0000
   DATA(OB(100),H) 01E1 0800
   DATA(OB(104),H) 01E1 0000
   DATA(OB(110),H) 01E1 03F9
   DATA(OB(114),H) 01A1 0000
* 
   DATA(OB(120),H) 01E1 8006      K=$3F9    A0=LC(,K) 
   DATA(OB(124),H) 01E1 0000
   DATA(OB(130),H) 01E1 0000       A0 COMPARE CONTAINS FINAL LOOP COUNT 
   DATA(OB(134),H) 01E1 0000
   DATA(OB(140),H) 01B1 0000
* 
   DATA(OB(144),H) 01E1 0000
   DATA(OB(150),H) 01E1 0000
   DATA(OB(154),H) 01E1 0000
   DATA(OB(160),H) 01E1 0000
   DATA(OB(164),H) 01C1 0000      PARCELS 2 & 3 ARE ALL ZERO
   DATA(OB(170),H) 01D0 0000
* 
* --------------------------------------------------
*                        LOC $101 
   DATA(OB(174),H) 01E1 0000
   DATA(OB(200),H) 01E1 0200
   DATA(OB(204),H) 01E1 0000
   DATA(OB(210),H) 01E1 0039
   DATA(OB(214),H) 01A1 0000
* 
   DATA(OB(220),H) 01E1 8007      K=$0039   A1=LC(,K) 
   DATA(OB(224),H) 01E1 0000
   DATA(OB(230),H) 01E1 0000      A1 COMPARE CONTAINS TERMINAL COUNT
   DATA(OB(234),H) 01E1 0000      OF FIRST 64 PACKET GROUP
   DATA(OB(240),H) 01B1 0000
* 
   DATA(OB(244),H) 01E1 0000
   DATA(OB(250),H) 01E1 0000
   DATA(OB(254),H) 01E1 0000
   DATA(OB(260),H) 01E1 0000
   DATA(OB(264),H) 01C1 0000      PARCELS 2 & 3 ARE ALL ZEROS 
   DATA(OB(270),H) 01D0 0000
* 
* --------------------------------------------- 
* 
* ----------------ADD P2 TO PROPER LOCATIONS--------- 
* 
0  FORMAT CRP51 - HIGH SPEED RING TEST
1  FORMAT CRP511   HPP PROGRAM PART - 1 
2  FORMAT CRP511 .ABORT. P=*OCT,ECD=*OCT,ERC=*DEC,LC=*DEC 
5  FORMAT CRP511  ERC=*DEC, LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP511.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
20 FORMAT CRP511  STATUS ERROR FROM CRP...HPP LOAD ABORTED. 
* 
* -----------------INITIALIZATION------------------------ 
* 
30 B0 = 1515D                    30 B0SET EXIT-TO FLAG
* 
   OB(3) = P2.AND.377            *MASK IN P2 TARGET HPP 
   OB(7) = P2.AND.377            *- 
   OB(13) = P2.AND.377           *- 
   OB(17) = P2.AND.377           *- 
   OB(23) = P2.AND.377           *- 
   OB(27) = P2.AND.377           *- 
   OB(33) = P2.AND.377           *- 
   OB(67) = P2.AND.377           *- 
* 
   IF(B15.EQ.7777) EXIT          *FORCE RETURN TO CRP84 
* 
* 
* ----------------DOWN LOAD THIS CODE TO THE HPP------------
* 
40 B2 = 270                      *LAST ADDRESS OF VALID DATA
   B1 = 0                        *ADDRESS CNTR
* 
42 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *FUNC TO WRITE RCR/RDR M= 2
   WC = 4 
   BA = B1
   B12 = 3
   OUT , ABT 70                  *WRITE DATA
   GOTO 42 WHILE(B1+4.LE.B2)     *WRITE ALL VALID DATA
* 
   GOSUB 60                      *GET STATUS
   IF(SB(1).AND.377.NE.0)ERROR 20/1511D GOTO 50  *CHK STATUS
*                    EXPECT ALL LOWER BITS TO BE CLEAR
* 
   EXIT TO 512                   *CONTINUE IN NEXT SUBMODULE
* 
* -----------------STATUS ERROR PROCESSOR---------------
* 
50 B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *SL
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 40                       *LOOP ON ERROR 
* 
52 MSG 0 TO LINE 1               *TITLE MSG 
   MSG 1 TO LINE 2               *MODULE MSG
   MSG EM TO LINE 3              *ERROR MSG 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 4 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
*                                *RETURN IS TO 51 
* 
* ----------------SUBROUTINES---------------------------- 
* 
60 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                      *ERROR CNTR 
   ENDSUB                             *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74          *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY     *POST ABORT/LC MSG
   GOTO 40                            *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
* 
   END 30 
COMPILE   *CRP511 - HPP DATA FOR CRP51
   MODULE CRP512,6000(200),LOCK 
* ------------------------------------------------------- 
*                        LOC $102 
   DATA(OB(000),H) 01E1 0000
   DATA(OB(004),H) 01E1 0080
   DATA(OB(010),H) 01E1 0000
   DATA(OB(014),H) 01E1 0002
   DATA(OB(020),H) 01A1 0000
* 
   DATA(OB(024),H) 01E1 0008      K=$0002   FG=G00(,K)
   DATA(OB(030),H) 01E1 0000
   DATA(OB(034),H) 01E1 0000      G0 CONTAINS THE INCREMENT VALUE 
   DATA(OB(040),H) 01E1 0000      FOR A0 AND A1 
   DATA(OB(044),H) 01B1 0000
* 
   DATA(OB(050),H) 01E1 0000
   DATA(OB(054),H) 01E1 0000
   DATA(OB(060),H) 01E1 0000
   DATA(OB(064),H) 01E1 0000
   DATA(OB(070),H) 01C1 0000      PARCELS 2 & 3 ARE ALL ZEROS 
   DATA(OB(074),H) 01D0 0000
* 
* ----------------------------------------------- 
*                        LOC $103 
   DATA(OB(100),H) 01E1 0000
   DATA(OB(104),H) 01E1 0100
   DATA(OB(110),H) 01E1 0000
   DATA(OB(114),H) 01E1 003D
   DATA(OB(120),H) 01A1 0000
* 
   DATA(OB(124),H) 01E1 0008      K=$003D   FG=F00(K) 
   DATA(OB(130),H) 01E1 0000
   DATA(OB(134),H) 01E1 0000      F0 CONTAINS OFFSET FOR CALCULATING
   DATA(OB(140),H) 01E1 0000      THE TERMINAL COUNT FOR EACH 64 PACKE
   DATA(OB(144),H) 01B1 0000      GROUP.
* 
   DATA(OB(150),H) 01E1 0000
   DATA(OB(154),H) 01E1 0000
   DATA(OB(160),H) 01E1 0000
   DATA(OB(164),H) 01E1 0000
   DATA(OB(170),H) 01C1 0000      PARCELS 2 & 3 ARE ALL ZEROS 
   DATA(OB(174),H) 01D0 0000
* 
* ------------------------------------------------
*                        LOC $104 
   DATA(OB(200),H) 01E1 0000
   DATA(OB(204),H) 01E1 1400
   DATA(OB(210),H) 01E1 0000
   DATA(OB(214),H) 01E1 0000
   DATA(OB(220),H) 01A1 0000
* 
   DATA(OB(224),H) 01E1 0866                K=$0000   A0=A0(K)
   DATA(OB(230),H) 01E1 0867                           A1=A0(K) 
   DATA(OB(234),H) 01E1 0000
   DATA(OB(240),H) 01E1 0000                START PIPE-LINING A0 AND A1 
   DATA(OB(244),H) 01B1 0000
* 
   DATA(OB(250),H) 01E1 0000
   DATA(OB(254),H) 01E1 0000
   DATA(OB(260),H) 01E1 0000
   DATA(OB(264),H) 01E1 0000
   DATA(OB(270),H) 01C1 0000      PARCELS 2 & 3 ARE ALL ZEROS 
   DATA(OB(274),H) 01D0 0000
* 
* --------------------------------------------- 
* 
* 
0  FORMAT CRP51 - HIGH SPEED RING TEST
1  FORMAT CRP512   HPP PROGRAM PART - 2 
2  FORMAT CRP512 .ABORT. P=*OCT,ECD=*OCT,ERC=*DEC,LC=*DEC 
5  FORMAT CRP512  ERC=*DEC, LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP512.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
20 FORMAT CRP512  STATUS ERROR FROM CRP...HPP LOAD ABORTED. 
* 
* -----------------INITIALIZATION------------------------ 
* 
30 B0 = 1516D                    *SET EXIT-TO FLAG
* 
   IF(B15.EQ.7777) EXIT          *FORCE RETURN TO CRP84 
* 
* 
* ----------------DOWN LOAD THIS CODE TO THE HPP------------
* 
40 B2 = 274                      *LAST ADDRESS OF VALID DATA
   B1 = 0                        *ADDRESS CNTR
* 
42 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *FUNC TO WRITE RCR/RDR MODE 2
   WC = 4 
   BA = B1
   B12 = 3
   OUT , ABT 70                  *WRITE DATA
   GOTO 42 WHILE(B1+4.LE.B2)     *WRITE ALL VALID DATA
* 
   GOSUB 60                      *GET STATUS
   IF(SB(1).AND.377.NE.0)ERROR 20/1512D GOTO 50  *CHK STATUS
*                         EXPECT ALL LOWER BITS TO BE CLEAR 
* 
   EXIT TO 513                   *CONTINUE IN NEXT SUBMODULE
* 
* -----------------STATUS ERROR PROCESSOR---------------- 
* 
50 B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *SL
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 40                       *LOOP ON ERROR 
* 
52 MSG 0 TO LINE 1               *TITLE MSG 
   MSG 1 TO LINE 2               *MODULE MSG
   MSG EM TO LINE 3              *ERROR MSG 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 4 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
*                                *RETURN IS TO 51 
* 
* -----------------SUBROUTINES------------------------- 
* 
60 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
   EXIT                          *RETURN TO CALLER
* -----------------ABORTS------------------------------ 
* 
* 
70 B11 = B11 + 1                      *ERROR CNTR 
   ENDSUB                             *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74          *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY     *POST ABORT/LC MSG
   GOTO 40                            *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
* 
   END 30 
COMPILE   *CRP512 - HPP DATA FOR CRP51
   MODULE CRP513,6000(200),LOCK 
* --------------------------------------------------
*                        LOC $105 
   DATA(OB(000),H) 01E1 0000
   DATA(OB(004),H) 01E1 1400
   DATA(OB(010),H) 01E1 0000
   DATA(OB(014),H) 01E1 0001
   DATA(OB(020),H) 01A1 0000
* 
   DATA(OB(024),H) 01E1 0866                K=$0001   A0=A0(K)
   DATA(OB(030),H) 01E1 0867                           A1=A0(K) 
   DATA(OB(034),H) 01E1 0000
   DATA(OB(040),H) 01E1 0000      NEXT DATA WORD INTO THE PIPE
   DATA(OB(044),H) 01B1 0000
* 
   DATA(OB(050),H) 01E1 0000
   DATA(OB(054),H) 01E1 0000
   DATA(OB(060),H) 01E1 0000
   DATA(OB(064),H) 01E1 0000
   DATA(OB(070),H) 01C1 0000      PARCELS 2 & 3 ARE ALL ZEROS 
   DATA(OB(074),H) 01D0 0000
* 
* ------------------------------------------------- 
*                        LOC $106 
* 
   DATA(OB(100),H) 01E1 0000
   DATA(OB(104),H) 01E1 1E00
   DATA(OB(110),H) 01E1 0040
   DATA(OB(114),H) 01E1 0106
   DATA(OB(120),H) 01A1 0000
* 
   DATA(OB(124),H) 01E1 5F40      LOOP      K=LOOP    IF(A1.LE.C)JK() 
   DATA(OB(130),H) 01E1 200E  *2YYE  (P0)                 I0=$*2YY(A0)
   DATA(OB(134),H) 01E1 0A66                            A0=ADD(A0,G0) 
   DATA(OB(140),H) 01E1 0A67                             A1=ADD(A0,F0)
   DATA(OB(144),H) 01B1 0000
*          A0=0,2,4,...3A,3C,(3E),40...7A,7C,(7E),80...3FA,3FC
   DATA(OB(150),H) 01E1 0000  A1=0,3D,3F,41,...77,(79),7B,7D,...3F7 
   DATA(OB(154),H) 01E1 0007
   DATA(OB(160),H) 01E1 9A70
   DATA(OB(164),H) 01E1 0070
   DATA(OB(170),H) 01C1 0000      PARCELS 2 & 3 ARE THE SAME
   DATA(OB(174),H) 01D0 0000
* 
* --------------------------------------------------- 
*                        LOC $107 
* 
   DATA(OB(200),H) 01E1 0000
   DATA(OB(204),H) 01E1 1E00
   DATA(OB(210),H) 01E1 0040
   DATA(OB(214),H) 01E1 0000
   DATA(OB(220),H) 01A1 0000
* 
   DATA(OB(224),H) 01E1 200E  *2YYE   (P0)             I0=$*2YY(A0) 
   DATA(OB(230),H) 01E1 0A66                           A0=ADD(A0,G0)
   DATA(OB(234),H) 01E1 0A67                            A1=ADD(A0,G0) 
   DATA(OB(240),H) 01E1 0000
   DATA(OB(244),H) 01B1 0000      A0=1,3,5,...7B,7D,81...BB,
*                                        BD,C1...3F,A1=A0 
   DATA(OB(250),H) 01E1 0000
   DATA(OB(254),H) 01E1 0007
   DATA(OB(260),H) 01E1 AA70
   DATA(OB(264),H) 01E1 0070
   DATA(OB(270),H) 01C1 0000      PARCELS 2 & 3 ARE THE SAME
   DATA(OB(274),H) 01D0 0000
* 
* ----------------------------------------------- 
* 
* 
* ----------------MASK IN P0------------------------------
* 
0  FORMAT CRP51 - HIGH SPEED RING TEST
1  FORMAT CRP513   HPP PROGRAM PART - 3 
2  FORMAT CRP513 .ABORT. P=*OCT,ECD=*OCT,ERC=*DEC,LC=*DEC 
5  FORMAT CRP513  ERC=*DEC, LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP513.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
20 FORMAT CRP513  STATUS ERROR FROM CRP...HPP LOAD ABORTED. 
* 
* -----------------INITIALIZATION------------------------ 
* 
30 B0 = 1517D                    *SET EXIT-TO FLAG
* 
   B1 = P0.RS.4.AND.17           *FORM UPPER BITS OF P0 
   OB(132) = 40.OR.B1            *MASK IN BITS
   OB(226) = 40.OR.B1            *- 
   B1 = P0.AND.17.LS.4                  *FORM LOWER BITS OF P0
   OB(133) = 16.OR.B1            *- 
   OB(227) = 16.OR.B1            *- 
* 
   IF(B15.EQ.7777) EXIT          *FORCE RETURN TO CRP84 
* 
* 
* 
* ----------------DOWN LOAD THIS CODE TO THE HPP------------
* 
40 B2 = 274                      *LAST ADDRESS OF VALID DATA
   B1 = 0                        *ADDRESS CNTR
42 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *FUNC TO WRITE RCR/RDR M=2 
   WC = 4 
   BA = B1
   B12 = 3
   OUT , ABT 70                  *WRITE DATA
   GOTO 42 WHILE(B1+4.LE.B2)     *WRITE ALL VALID DATA
* 
   GOSUB 60                      *GET STATUS
   IF(SB(1).AND.377.NE.0)ERROR 20/1513D GOTO 50  *CHECK STATUS
*                         EXPECT ALL LOWER BITS TO BE CLEAR 
* 
   EXIT TO 514                   *CONTINUE IN NEXT SUBMODULE
* 
* -----------------STATUS ERROR PROCESSOR-------------------- 
* 
50 B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *SL
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 40                       *LOOP ON ERROR 
* 
52 MSG 0 TO LINE 1               *TITLE MSG 
   MSG 1 TO LINE 2               *MODULE MSG
   MSG EM TO LINE 3              *ERROR MSG 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 4 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
* 
* ----------------SUBROUTINES---------------------------- 
* 
60 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                      *ERROR CNTR 
   ENDSUB                             *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74          *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY     *POST ABORT/LC MSG
   GOTO 40                            *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
* 
   END 30 
COMPILE   *CRP513 - HPP DATA FOR CRP51
   MODULE CRP514,6000(200),LOCK 
* --------------------------------------------------
*                        LOC $108 
* 
   DATA(OB(000),H) 01E1 0000
   DATA(OB(004),H) 01E1 1A00
   DATA(OB(010),H) 01E1 0040
   DATA(OB(014),H) 01E1 0106
   DATA(OB(020),H) 01A1 0000
* 
   DATA(OB(024),H) 01E1 5C30                K=LOOP    IF(A0.LE.C)JK() 
   DATA(OB(030),H) 01E1 200E  *2YYE  (P0)                   I0=$2YY(A0) 
   DATA(OB(034),H) 01E1 0A66                            A0=ADD(A0,G0) 
   DATA(OB(040),H) 01E1 8007                             A1=LC(,A1) 
   DATA(OB(044),H) 01B1 0000
*                                        A0=3E,7E,FE,...3FE 
   DATA(OB(050),H) 01E1 0000                A1=79,B9,F9,...3F9
   DATA(OB(054),H) 01E1 0007
   DATA(OB(060),H) 01E1 8A00
   DATA(OB(064),H) 01E1 0070
   DATA(OB(070),H) 01C1 0000      PARCELS 2 & 3 ARE THE SAME
   DATA(OB(074),H) 01D0 0000
* 
* ----------------------------------------------------
*                        LOC $109 
* 
   DATA(OB(100),H) 01E1 0000
   DATA(OB(104),H) 01E1 1800
   DATA(OB(110),H) 01E1 0040
   DATA(OB(114),H) 01E1 0000
   DATA(OB(120),H) 01A1 0000
* 
   DATA(OB(124),H) 01E1 100E  *1YYE   (P0)                  I0=$1YY(A0) 
   DATA(OB(130),H) 01E1 0A66                           A0=ADD(A0,G0)
   DATA(OB(134),H) 01E1 0000
   DATA(OB(140),H) 01E1 0000                A0=3F,7F,BF,...3FF
   DATA(OB(144),H) 01B1 0000
* 
   DATA(OB(150),H) 01E1 0000
   DATA(OB(154),H) 01E1 0007
   DATA(OB(160),H) 01E1 0A00
   DATA(OB(164),H) 01E1 0070
   DATA(OB(170),H) 01C1 0000      PARCELS 2 & 3 ARE THE SAME
   DATA(OB(174),H) 01D0 0000
* ----------------------------------------------- 
*                        LOC $10A 
* 
   DATA(OB(200),H) 01E1 0000
   DATA(OB(204),H) 01E1 0000
   DATA(OB(210),H) 01E1 0040
   DATA(OB(214),H) 01E1 FFFF
   DATA(OB(220),H) 01A1 0000
* 
   DATA(OB(224),H) 01E1 800E  *8YYE  (P0)         K=$FFFF   I0=$8FF(K)
   DATA(OB(230),H) 01E1 0000
   DATA(OB(234),H) 01E1 0000                SET THE END FLAG
   DATA(OB(240),H) 01E1 0000
   DATA(OB(244),H) 01B1 0000
* 
   DATA(OB(250),H) 01E1 0000
   DATA(OB(254),H) 01E1 0000
   DATA(OB(260),H) 01E1 0000
   DATA(OB(264),H) 01E1 0000
   DATA(OB(270),H) 01C1 0000      PARCELS 2 & 3 ARE THE SAME
   DATA(OB(274),H) 01D0 0000
* 
* --------------------------------------------------
* 
* 
* ----------------MASK IN P1 AND P2-----------------
* 
0  FORMAT CRP51 - HIGH SPEED RING TEST
1  FORMAT CRP514   HPP PROGRAM PART - 4 
2  FORMAT CRP514 .ABORT. P=*OCT,ECD=*OCT,ERC=*DEC,LC=*DEC 
5  FORMAT CRP514  ERC=*DEC, LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP514.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
20 FORMAT CRP514  STATUS ERROR FROM CRP...HPP LOAD ABORTED. 
* 
* -----------------INITIALIZATION------------------------ 
* 
30 B0 = 1518D                    *SET EXIT-TO FLAG
* 
   B1 = P0.RS.4.AND.17           *FORM UPPER BITS OF P0 
   OB(32) = 40.OR.B1             *MASK IN BITS
   OB(126) = 20.OR.B1            *- 
   OB(226) = 200.OR.B1           *- 
   B1 = P0.AND.17.LS.4           *FORM LOWER BITS OF P0 
   OB(33) = 16.OR.B1             *MASK IN BITS
   OB(127) = 16.OR.B1            *- 
   OB(227) = 16.OR.B1            *- 
* 
* 
   IF(B15.EQ.7777) EXIT          *FORCE RETURN TO CRP84 
* 
* 
* 
* ----------------DOWN LOAD THIS CODE TO THE HPP------------
* 
40 B2 = 274                      *LAST ADDRESS OF VALID DATA
   B1 = 0                        *ADDRESS CNTR
* 
42 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *FUNC TO WRITE RCR/RDR MODE 2
   WC = 4 
   BA = B1
   B12 = 3
   OUT , ABT 70                  *WRITE DATA
   GOTO 42 WHILE(B1+4.LE.B2)     *WRITE ALL VALID DATA
* 
   GOSUB 60                      *GET STATUS
   IF(SB(1).AND.377.NE.0)ERROR 20/1514D GOTO 50  *CHECK STATUS
*                         EXPECT ALL LOWER BITS TO BE CLEAR 
* 
   EXIT TO 515                   *CONTINUE IN NEXT SUBMODULE
* 
* -----------------STATUS ERROR PROCESSOR---------------
* 
50 B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *SL
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 40                       *LOOP ON ERROR 
* 
52 MSG 0 TO LINE 1               *TITLE MSG 
   MSG 1 TO LINE 2               *MODULE MSG
   MSG EM TO LINE 3              *ERROR MSG 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 4 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
* 
* ----------------SUBROUTINES---------------------------- 
* 
60 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                      *ERROR CNTR 
   ENDSUB                             *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74          *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY     *POST ABORT/LC MSG
   GOTO 40                            *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
* 
   END 30 
COMPILE   *CRP514 - HPP DATA FOR CRP51
   MODULE CRP515,6000(200),LOCK 
* ----------------------------------------------------
*                        LOC $10B 
* 
   DATA(OB(000),H) 01E1 0000
   DATA(OB(004),H) 01E1 0000
   DATA(OB(010),H) 01E1 0040
   DATA(OB(014),H) 01E1 5555
   DATA(OB(020),H) 01A1 0000
* 
   DATA(OB(024),H) 01E1 200E  *2ZZE (P1)        K=$5555   I0=$2ZZ(K)
   DATA(OB(030),H) 01E1 0000
   DATA(OB(034),H) 01E1 0000                SEND FIRST LOST PACKET
   DATA(OB(040),H) 01E1 0000
   DATA(OB(044),H) 01B1 0000
* 
   DATA(OB(050),H) 01E1 0000
   DATA(OB(054),H) 01E1 0000
   DATA(OB(060),H) 01E1 0000
   DATA(OB(064),H) 01E1 0000
   DATA(OB(070),H) 01C1 0000      PARCELS 2 & 3 ARE THE SAME
   DATA(OB(074),H) 01D0 0000
* 
* ------------------------------------------------------
*                        LOC $10C 
* 
   DATA(OB(100),H) 01E1 0000
   DATA(OB(104),H) 01E1 0000
   DATA(OB(110),H) 01E1 0040
   DATA(OB(114),H) 01E1 AAAA
   DATA(OB(120),H) 01A1 0000
* 
   DATA(OB(124),H) 01E1 200E  *2ZZE  (P1)       K=$AAAA   I0=$2ZZ(K)
   DATA(OB(130),H) 01E1 0000
   DATA(OB(134),H) 01E1 0000                SEND SECOND LOST PACKET 
   DATA(OB(140),H) 01E1 0000
   DATA(OB(144),H) 01B1 0000
* 
   DATA(OB(150),H) 01E1 0000
   DATA(OB(154),H) 01E1 0000
   DATA(OB(160),H) 01E1 0000
   DATA(OB(164),H) 01E1 0000
   DATA(OB(170),H) 01C1 0000      PARCELS 2 & 3 ARE THE SAME
   DATA(OB(174),H) 01D0 0000
* 
* ------------------------------------------------
*                        LOC $10D 
* 
   DATA(OB(200),H) 01E1 1000
   DATA(OB(204),H) 01E1 0000
   DATA(OB(210),H) 01E1 0000
   DATA(OB(214),H) 01E1 010D
   DATA(OB(220),H) 01A1 0000
* 
   DATA(OB(224),H) 01E1 1900      IDLE      K=IDLE    JK(/JI) 
   DATA(OB(230),H) 01E1 0000
   DATA(OB(234),H) 01E1 0000                WAIT HERE 
   DATA(OB(240),H) 01E1 0000
   DATA(OB(244),H) 01B1 0000
* 
   DATA(OB(250),H) 01E1 0000
   DATA(OB(254),H) 01E1 0000
   DATA(OB(260),H) 01E1 0000
   DATA(OB(264),H) 01E1 0000
   DATA(OB(270),H) 01C1 0000      PARCELS 2 & 3 ARE THE SAME
   DATA(OB(274),H) 01D0 0000
*                              END OF MICRO-CODE
* ------------------------------------------------
* 
* 
* ----------------MASK IN P1 AND P2-----------------
* 
0  FORMAT CRP51 - HIGH SPEED RING TEST
1  FORMAT CRP515   HPP PROGRAM PART - 5 
2  FORMAT CRP515 .ABORT. P=*OCT,ECD=*OCT,ERC=*DEC,LC=*DEC 
5  FORMAT CRP515  ERC=*DEC, LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP515.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
20 FORMAT CRP515  STATUS ERROR FROM CRP...HPP LOAD ABORTED. 
* 
* -----------------INITIALIZATION------------------------ 
* 
30 B0 = 1519D                    *SET EXIT-TO FLAG
* 
   B1 = P1.RS.4.AND.17           *FORM UPPER BITS OF P1 
   OB(26) = 40.OR.B1             *MASK IN BITS
   OB(126) = 40.OR.B1            *- 
   B1 = P1.AND.17.LS.4               *- 
   OB(27) = 16.OR.B1             *MASK IN BITS
   OB(127) = 16.OR.B1            *- 
* 
* 
   IF(B15.EQ.7777) EXIT          *FORCE RETURN TO CRP84 
* 
* 
* 
* ----------------DOWN LOAD THIS CODE TO THE HPP------------
* 
40 B2 = 274                      *LAST ADDRESS OF VALID DATA
   B1 = 0                        *ADDRESS CNTR
* 
42 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *FUNC TO WRITE RCR/RDR MODE 2
   WC = 4 
   BA = B1
   B12 = 3
   OUT , ABT 70                  *WRITE DATA
   GOTO 42 WHILE(B1+4.LE.B2)     *WRITE ALL VALID DATA
* 
   GOSUB 60                      *GET STATUS
   IF(SB(1).AND.377.NE.0)ERROR 20/1515D GOTO 50  *CHECK STATUS
*                         EXPECT ALL LOWER BITS TO BE CLEAR 
* 
    EXIT TO 51D                   *RETURN TO SUBMODULE 51D
* 
* -----------------STATUS ERROR PROCESSOR---------------
* 
50 B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *SL
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 40                       *LOOP ON ERROR 
* 
52 MSG 0 TO LINE 1               *TITLE MSG 
   MSG 1 TO LINE 2               *MODULE MSG
   MSG EM TO LINE 3              *ERROR MSG 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 4 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
* 
* ----------------SUBROUTINES---------------------------- 
* 
60 B12 = 2
   FUNC 200, ABT 70               *FUNC READ GSW MODE 2 
   B12 = 7
   STATUS 2 WORDS TO SB(0),ABT 70 
   RETURN 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                      *ERROR CNTR 
   ENDSUB                             *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74          *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY     *POST ABORT/LC MSG
   GOTO 40                            *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
* 
   END 30 
COMPILE   *CRP515 - HPP DATA FOR CRP51
   MODULE CRP53,6000(200),LOCK
***       CRP53 - HPP RING STOP TEST
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*         PERFORMS A FUNCTIONAL TEST OF THE HPP RING STOP BIT IN
*         THE GSW, THE DISABLE RING STOP BIT IN THE DIAGNOSTIC
*         REGISTER, AND THE EXTERNAL RESET REGISTER.
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  DISPLAY THE REPEAT CONDITION MESSAGE IF SCOPING LOOP
*             IS SELECTED.
*         4.  PAUSE (P4) USEC.
*         5.  RESERVE THE CHANNEL TO THE CRP. 
*         6.  MASTER CLEAR THE CRP. 
*         7.  READ THE GSW AND VERIFY THAT THE HPP RING STOP BIT
*             IS RESET. ERROR CODE(ECD) = 531D. 
*         8.  IF AN ERROR IS DETECTED AND SL IS SELECTED, GOTO STEP 3.
*         9.  CALL CRP53A TO SEND THE FOLLOWING PACKETS TO THE HPP
*             WHOSE ADDRESS IS SPECIFIED IN PARAMETER WORD P3:  
*             IS SPECIFIED IN PARAMETER WORD P3:  
*                          A. FORCE LOAD REMOTE DESTINATION TABLE 
*                          B. SEND SET STATUS FLAG
*                          C. SEND SET STATUS FLAG
*                          D. SEND DATA TO MEMORY (12 WORDS)
*         10. READ THE GSW AND VERIFY THAT THE HPP RING STOP BIT
*             IS SET. 
*         11. READ THE RING STOP REGISTER AND VERIFY THAT THE 
*             ADDRESS MATCHES THAT SPECIFIED IN PARAMETER WORD P3.
*         12. WRITE THE RESET REGISTER WITH THE ADDRESS SPECIFIED 
*             IN PARAMETER WORD P3. 
*             ECD = 532D. 
*         13. READ THE GSW AND VERIFY THAT THE HPP RING STOP BIT
*             IS RESET. ECD = 534.
*         14. SET THE DISABLE RING STOP 1 BIT IN THE DIAGNOSTIC REG.
*         15. REPEAT STEP 9.
*         16. READ THE GSW AND VERIFY THAT THE HPP RING STOP BIT
*             REMAINS RESET. ECD = 535D.
*         17. REPEAT STEP 12. 
*         18. REPEAT STEPS 4 - 17 150D TIMES. 
*         19. IF AN ERROR IS DETECTED, REPORT THE ERROR.
*         20. IF REPEAT MODULE IS SELECTED, REPEAT STEPS 1-17.
*         21. IF ANY ERRORS WERE DETECTED DURING EXECUTION OF THE 
*             MODULE, SEND A MESSAGE TO THE DISPLAY, PRINT, AND 
*             DAYFILE INDICATING THE NUMBER OF ERRORS DETECTED. 
*         22. END OF MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . // MODULE ERROR LIMIT-CRP53 
*           . CRP53 ERROR(S) IN MODULE = *DEC 
*           . CRP53 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           . CRP53 PARAMETER ERROR P3 INVALID P3=*3H HEX 
*           . CRP53 HPP RING STOP GS BIT NOT RESET BY CRPCLR
*           . CRP53 HPP RING STOP GS BIT NOT SET  EC = 532
*           . CRP53 RSR DATA DOES NOT MATCH P3 PARAMETER
*           . CRP53 HPP RING STOP GS BIT NOT RESET BY EXRESETREG
*           . CRP53 HPP RING STOP GS BIT SET WITH DRS1 SET
* 
* 
*   1.4   PARAMETERS
*        - CONFIDENCE MODE    - 
*        P3  TARGET HPP FOR RING STOP TEST. 
* 
*        - REPAIR MODE
*         P4 LOOPING DELAY
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
*   2.1   ENTRY CONDITIONS
*         ASSUMES MODULES 1-5 AND 9-47 AND 51 HAVE RUN CORRECTLY. 
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B0  = EXIT-TO FLAG. IF SUBMODULES ARE USED THIS FLAG NUMBERS
*               THE MODULE OR SUBMODULE FROM WHICH THIS MODULE OR SUB-
*               MODULE HAS BEEN ENTERED FROM. 
*         B8  = DIAG REG FUNCTION CONTROL.
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
* 
* 
*       - OB -
*        0 - 73    HPP PROGRAM PACKETS (CRP531) 
*        100 , 101 PHYSICAL ADDRESS OF HPP FROM P3
*        400 - 413 HPP STOP/SET P /START PACKETS
*        200 - 205 DIAG REG FUNCTIONS.
*       - SB -
*        0 , 1  CRP STATUS WORD 
* 
* 
*   2.3   SUBMODULES USED 
*       - CRP53 - 
*          CRP53A - CONTROLS DOWNLOAD OF HPP
*          CRP97X - ERROR/ABORT PROCESSOR 
*       - CRP53A -
*          CRP531 - DOWNLOAD HPP AND BUILD OUTPUT BUFFER. 
*          CRP97Z - ERROR/ABORT PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
0  FORMAT CRP53 - HPP RING STOP TEST
2  FORMAT CRP53 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
5  FORMAT CRP53  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP53.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
7  FORMAT // MODULE ERROR LIMIT-CRP53 
10 FORMAT CRP53 ERROR(S) IN MODULE = *DEC 
17 FORMAT CRP53 PARAMETER ERROR P3 INVALID P3=*3H HEX 
20 FORMAT CRP53 HPP RING STOP GS BIT NOT RESET BY CRPCLR
21 FORMAT CRP53 HPP RING STOP GS BIT NOT SET  EC = 532
22 FORMAT CRP53 RSR DATA DOES NOT MATCH P3 PARAMETER
23 FORMAT CRP53 HPP RING STOP GS BIT NOT RESET BY EXRESETREG
24 FORMAT CRP53 HPP RING STOP GS BIT SET WITH DRS1 SET
27 FORMAT  -------------------------------------------- 
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=200,CLRCRP=202,DRS1=204,XRST=100
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE 
   B13 = 53D                     *MODULE NUMBER 
   B0 = 0053D                    *EXIT-TO FLAG
* 
   IF(P3.LE.15D)GOTO 32          *P3 VALID HPP
   MSG 17(P3) TO DISPLAY,PRINT,DAYFILE
   PAUSE
   BLANK
   GOTO 30                       *LOOP FOR CORRECTION ON P3 
* 
32 B10 = 0                         *LOOP COUNTER
   B11 = 0                       *ERROR CNTR
* 
* -----------------HPP RING  TEST---------------
* 
36 IF(P4.NE.0)DELAY P4 USEC      *DELAY IF SET
   MSG 0 TO DISPLAY                *RUNNING MSG 
   OB(200) = 0000                  *CLEAR 
   OB(201) = 0000 
   OB(202) = 0001                  *CLRCRP
   OB(203) = 0000 
   OB(204) = 0000                  *DRS1
   OB(205) = 0002 
   OB(100) = 0377                  *EXT RESET 
   OB(101) = 0377 
   B8 = 1                        *CLEAR DIAG REG AFTER FUNC 
   GOSUB 65                      *RES CHAN AND CLEAR CRP
   GOSUB 62                        *EXT RESET ALL HPPS
   GOSUB 64 
   IF(SB(0).AND.01.NE.0)ERROR 20/531D GOTO 52 
* 
* 
   CALL 53A                      *LOAD PROGRAM TO HPP 
* 
   GOSUB 64                      *GET GSW 
   IF(SB(0).AND.01.EQ.0)ERROR 21/531D GOTO 52 
* 
   FUNC 201                        *READ RSR1 
   IN 2 WORDS TO IB(0)
   GOSUB 60                      *BUILD PHYSICAL HPP ADDRESS
* 
   IF(IB(0).NE.OB(100))ERROR 22/0532D GOTO 52  *RSR1
   IF(IB(1).NE.OB(101))ERROR 22/0532D GOTO 52  *- 
* 
   OB(100) = OB(100).XOR.0377 
   OB(101) = OB(101).XOR.0377 
   GOSUB 62                      *SET (P3) IN EXRESET REG 
   GOSUB 64                      *READ GSW
   IF(SB(0).AND.01.NE.0)ERROR 23/534D GOTO 52 
* 
   BA = 204                        *SEND DRS1 
   B8 = 0                        *LEAVE DIAG REG SET
   GOSUB 67                      *SEND DIAG REG FUNC
* 
   CALL 53A                      *WRITE PKG TO HPP(P3)
* 
   GOSUB 64                      *GET GSW 
   IF(SB(0).AND.01.NE.0)ERROR 24/535D GOTO 52 
   GOSUB 62                      *SEND EXRESET
* 
* 
* 
   GOTO 36 WHILE(B10+1.LE.10D)     *LOOP 10 TIMES 
   B10 = 0                       *RESET LOOP CNTR 
* 
* -----------------ENDS/REPEATS-----------------
* 
   IF(ES.AND.RM.NE.0)GOTO 32     *RPT MODULE
* 
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
   IF(B11.NE.0)MSG 10(B11) TO DISPLAY,PRINT,DAYFILE 
* ----EXIT........END TEST SEQUENCE.......
   GOTO 77                       *END TEST SEQUENCE 
* 
* ----------------ERROR PROCESSOR-------------------
* 
52 B11 = B11 + 1                 *BUMP ERROR CNTR 
   ENDSUB 
   IF(ES.AND.SL.EQ.0)GOTO 54     *NOT SL
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 36
* 
54 MSG 0 TO LINE 1
   MSG EM TO LINE 2 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 3 
   B1 = 7753                       *FLAG ERROR PROCESSING 
   CALL 97X                      *PROCESS ERRO MSGS 
   GOTO 36
* 
* -----------------SUBROUTINES----------------------
* 
* ----GENERATE PHYSICAL HPP ADDRESS FROM P3-----
60 IF(P3.GT.7)GOTO 61            *SECOND WORDS
   OB(100) = 200.RS.P3.XOR.0377    *MOVE ADDRESS BIT
   OB(101) = 0377                  *SECOND WORD 
   RETURN 
61 B15 = P3 - 8                  *REMOVE BIAS OF SECOND WR
   OB(100) = 0377                  *FIRST WORD
   OB(101) = 200.RS.B15.XOR.0377   *MOVE ADDRESS BIT
   RETURN 
* ----SET/CLEAR EXRESET REG-----
62 FUNC 251                        *WR EXT RESET REG MODE 2 
   OUT 2 WORDS FROM OB(100) 
   OUT 2 WORDS FROM OB(CLEAR) 
   RETURN 
* ----READ GSW----- 
64 RES
   FUNC 200                        *READ GSW MODE 2 
   STATUS 2 WORDS TO SB(0)
   RETURN 
* ----RES CH/CLRCRP-----
65 B12 = 1
   RES
* ----WRITE DIAG REG----- 
66 BA = CLRCRP                   *ENTRY FOR CLRCRP FUNC 
67 FUNC 250 
   OUT 2 WORDS FROM OB(BA)         *SEND FUNC TO DIAG REG 
   IF(B8.EQ.0)RETURN             *SHORT RETURN IF B8=0
   OUT 2 WORDS FROM OB(CLEAR)      *SEND CLEAR TO DIAG REG
   RETURN 
* 
77 END 30 
COMPILE   *CRP53 - HPP RING STOP TEST 
   MODULE CRP53A,6000(200),LOCK 
***       CRP53A - HPP DOWNLOAD SUBMODULE - 
**
*         DOCUMENTATION FOR THIS SUBMODULE IS FOUND IN THE
*         PRIMARY MODULE. 
* 
0  FORMAT CRP53 -  HPP RING STOP TEST 
1  FORMAT CRP53A - STOP SYSTEM RING 
2  FORMAT CRP53A .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
5  FORMAT CRP53A  ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
6  FORMAT CRP53A.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
7  FORMAT // MODULE ERROR LIMIT - CRP53A
* 
* -----------------DATA-------------------------- 
* 
   EQUATE ERRLIM=20 
* 
* ----------------INITIALIZATION----------------- 
* 
30 IF(B0.EQ.0726D)GOTO 50        *ABORT RETURN FROM 97Z 
   IF(B0.EQ.0535D)GOTO 42        *NORMAL RETURN FROM 531
   B0 = 0531D                    *SET EXIT-TO RETURN FLAG 
* 
   MSG 1 TO DISPLAY 
* 
* -----------------START DOWN LOAD OF HPP PROGRAM-------
* 
36 OB(470) = 007                 *STOP PACKET 
   OB(471) = 020                 *- 
   OB(472) = 040                 *- 
   OB(473) = P3.AND.377          *TARGET HPP TO STOP PKT
* 
40 B12 = 1
   RES , ABT 70                  *RESERVE CHAN TO CRP 
   BA = 470                      *SEND STOP TO TARGET HPP 
   GOSUB 60                      *SEND STOP 
* 
   EXIT TO 531                   *START DWN LOAD SUBMODULE
* 
42 PASS 
* 
   B0 = 053D
50 EXIT                          *RETURN TO MAIN MODULE 53
* 
* 
* ----------------SUBROUTINES------------------------------ 
* 
* ----WRITE ONE PKT TO RING FROM BA-----
60 B12 = 2
   FUNC 273 , ABT 70             *WRT MODE 2 RCR/RDR
   WC = 4 
   B12 = 3
   OUT , ABT 70                  *SEND 1 PKT TO -TO RING- 
   RETURN 
* 
* ----------------ABORTS----------------------- 
* 
70 B11 = B11 + 1                        *ERROR CNTR 
   ENDSUB                               *CLEAR PENDING SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74            *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *POST ABORT/LC MSG
   GOTO 40                              *RETURN TO LOOP 
* 
74 MSG 1 TO LINE 1
   B1 = 0                         *FLAG ABORT TO 97Z
   EXIT TO 97Z                    *PROCESS ABORT
76 MSG 0 TO DISPLAY 
   IF(B11.GT.ERRLIM)GOTO 50       *ERROR LIMIT
   GOTO 40                        *RETURN TO LOOP 
* 
* 
77 END 30 
COMPILE   *CRP53A - DOWN LOAD HPP PROGRAM 
   MODULE CRP531,6000(200),LOCK 
***       CR531 - HPP PACKETS FOR     CR53 -
**
* 
* 
   DATA (OB(0),H) 0501 C000  *C0XX P3 LOAD DEST. TBL LOC 0 WITH CODE 1
   DATA (OB(4),H) 0201 0000  * SET STATUS FLAG BIT TO 0 
   DATA (OB(10),H) 0201 0000   * FORCE FIFO HOLD CONDITION
   DATA (OB(14),H) 0101 FFFF   * FILL INPUT FIFO AND FORCE RING STOP
   DATA (OB(20),H) 0101 FFFF   *- 
   DATA (OB(24),H) 0101 FFFF   *- 
   DATA (OB(30),H) 0101 FFFF   *- 
   DATA (OB(34),H) 0101 FFFF   *- 
   DATA (OB(40),H) 0101 FFFF   *- 
   DATA (OB(44),H) 0101 FFFF   *- 
   DATA (OB(50),H) 0101 FFFF   *- 
   DATA (OB(54),H) 0101 FFFF   *- 
   DATA (OB(60),H) 0101 FFFF   *- 
   DATA (OB(64),H) 0101 FFFF   *- 
   DATA (OB(70),H) 0101 FFFF   *- 
   DATA (OB(100),H)FFFF 
   DATA (OB(200),H) 0000, 0100, 0002
* ----STOP HPP/SET P/START HPP
   DATA (OB(400),H) 0710 2000   *20XX  P2 
   DATA (OB(404),H) 0731 0000   *00XX  P2 
   DATA (OB(410),H) 0700 2000   *20XX  P2 
* 
* ------------------------------------------------------- 
0  FORMAT CRP531  HPP RING STOP TEST
1  FORMAT CRP531  STOP SYSTEM RING
2  FORMAT CRP531 .ABORT. P=*OCT,ECD=*OCT,ERC=*DEC,LC=*DEC 
5  FORMAT CRP531  ERC=*DEC, LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT 
6  FORMAT CRP531.SL.ERC=*DEC,LC=*DEC,GS=*H*H,ECD=*DEC,P=*OCT
* 
* -----------------INITIALIZATION------------------------ 
* 
30 B0 = 0535D                    *SET EXIT-TO FLAG
* 
   OB(3) = P3.AND.377            *MASK IN P3 TARGET HPP 
* 
   B1 = P3.AND.377               *MASK P3 TO S.P.S
   OB(403) = B1 
   OB(407) = B1 
   OB(413) = B1 
   IF(B15.EQ.7777) EXIT          *FORCE RETURN TO CRP84 
* 
* 
* ----------------DOWN LOAD THIS CODE TO THE HPP------------
* 
40 B2 = 60                         *LAST ADDRESS OF VALID DATA
   B1 = 0                        *ADDRESS CNTR
* 
42 B12 = 1
   RES , ABT 70 
   B12 = 2
   FUNC 273 , ABT 70             *FUNC TO WRITE RCR/RDR M= 2
   WC = 4 
   BA = B1
   B12 = 3
   OUT , ABT 70                  *WRITE    DATA 
   GOTO 42 WHILE(B1+4.LE.B2)     *WRITE ALL VALID    DATA 
   EXIT TO 53A                   *RETURN TO SUBMODULE 53A 
* 
* -----------------STATUS ERROR PROCESSOR---------------
* 
50 B11 = B11 + 1                 *BUMP ERROR CNTR 
   IF(ES.AND.SL.EQ.0)GOTO 52     *SL
   MSG 6(B11,B10,SB(0),SB(1),EC,EA) TO DISPLAY
   GOTO 40                       *LOOP ON ERROR 
* 
52 MSG 0 TO LINE 1               *TITLE MSG 
   MSG 1 TO LINE 2               *MODULE MSG
   MSG EM TO LINE 3              *ERROR MSG 
   MSG 5(B11,B10,SB(0),SB(1),EC,EA) TO LINE 4 
   B1 = 7700                     *FLAG ERROR PROCESSING 
   EXIT TO 97Z                   *PROCESS ERROR 
*                                *RETURN IS TO 51 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                      *ERROR CNTR 
   ENDSUB                             *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74          *NOT SL 
   MSG 2(EA,EC,B11,B10)TO DISPLAY     *POST ABORT/LC MSG
   GOTO 40                            *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0                    *FLAG ABORT PROCESSING 
   EXIT TO 97Z               *PROCESS ABORT MSGS
* 
   END 30 
COMPILE   *CRP531 - HPP    DATA FOR CRP53 
   MODULE CRP64,6000(200) 
***       CRP64 - W/R/COM ANY REGISTER
**
* 
*   1.0   EXTERNAL MODULE DOCUMENTATION 
* 
*   1.1   PURPOSE 
* 
*        THIS MODULE IS INTENDED TO BE USED TO WRITE , READ, AND
*        VERIFY ANY REGISTER IN THE CRP IN ANY DATA MODE IN 
*        DIAGNOSTIC W/R MODE. 
* 
* 
*   1.2   METHOD
* 
*         1.  DISPLAY AND PRINT THE RUNNING MESSAGE FOR THE MODULE. 
*         2.  SET THE B13 REGISTER TO THE MODULE NUMBER.
*         3.  CLEAR LOOP AND ERROR COUNTERS AND OTHER SCR CELLS.
*         4.  SET THE MALET LOW-LEVEL CHANNEL TIMEOUT TO 2 USEC.
*         5.  VERIFY THE PARAMETERS ENTERED.
*             - P2 = WRITE READ FUNCTION. 
*                  = DEFAULT IS 40  (GSW) 
*                    ADD DIAGNOSTIC MODE BIT TO EACH FUNCTION.
*             - P3 = DATA TRANSLATION MODE. 
*                  = DEFAULT IS 0 
*                    MUST BE LE. 2. 
*             - P5 = W/R, W, R CONDITION
*                  = DEFAULT WRITE AND READ 
*                    1 = WRITE ONLY  ,  2 = READ ONLY 
*             - P6,P7,P8 USER DATA PATTERNS  WHICH DEPENDS ON MODE
*                  = DEFAULT DATA IS ZERO 
*             - P9 = WORDS COUNT
*                  = DEFAULTS TO MATCH TO TRANSLATION MODE. 
*                  ( MODE=0,WC=1 , MODE=1,WC=3, MODE=2,WC=2 ) 
*         6.  PAUSE (P4) USEC.
*         7.  RESERVE THE CHANNEL TO THE CRP. 
*         8.  FUNCTION THE CRP WITH WW FUNCTION CODE. 
*         9.  OUTPUT WC WORDS TO REGISTER.
*         10. CHECK P5 CONDITION PARAMETER. P5=0 CONTINUE.
*             P5=1 LOOP 
*             P5=2 CONTINUE (READ)
*         11. FUNCTION THE CRP WITH RR FUNCTION CODE. 
*         12. INPUT WC WORDS TO IB(0) AND IB(1) AND IB(2) AS NEEDED.
*         13. CHECK FOR ABNORMAL TERMINATION OF READ(TEST WT=WC). 
*         14. WRITE K DISPLAY IF DIAGNOSTIC SWITCH  S1  IS ON.
*         15. ELSE, COUNT PASS AND LOOP 150D TIMES. 
*         16. TEST RM FLAG AND REPEAT FROM 4 IF REQUIRED. 
*         17. EXIT THE MODULE.
* 
* 
*   1.3   ERRORS REPORTED/MESSAGES ISSUED 
*           . ABORT COMMAND MESSAGES REPORTED BY CRP97X 
*           . CRPXX .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
*           .   - - -  PARAMETER ERROR IN P*D  - - -
*           .  P2=WWRR FUNCS P2=*OCT   P3=MODE P3=*OCT
*           .  P9= WORD CNT  P9=*OCT   P5=COND P5=*OCT
*           .  P6, P7, P8 = DATA WORDS P6,P7,P8=*3H*3H*3HH
*           . LST FNC=*OCT,WFNC=*OCT,RFNC=*OCT,WC=*OCT
* 
* 
*   1.4   PARAMETERS
*        - REPAIR MODE
*        P2 WWRR FUNCTIONS
*        P3 DATA MODE 
*        P5 W/R CONDITION 
*        P4 LOOPING DELAY 
*        P6 AND P7 IF NON ZERO ARE USED AS TEST PATTERN 
*         (NO OTHER PATTERNS ARE GENERATED OR USED).
* 
  
* 
*   2.0   INTERNAL MODULE DOCUMENTATION 
* 
* 
* 
*   2.2   REGISTER AND BUFFER USAGE 
* 
*         B1  = SCRATCH CELL USED AS NEEDED.
*         B2  =    "     "
*         B6  = ERROR MESSAGE UP FLAG. IF SCOPE LOOP ERROR MESSAGE IS 
*               BEING DISPLAYED THIS B REG IS SET TO A 1. 
*         B7  = "SL"(2314) OR BLANKS(5555) CHARACTERS FOR RUNNING MSG 
*         B9  = 2ND LOOP COUNTER (PATTERNS OR FUNCTIONS). 
*         B10 = MAIN LOOP COUNTER.
*         B11 = ERROR COUNTER (20 IS THE CURRENT ERROR LIMIT FOR
*               UNEXPECTED ERRORS... ERRLIM ABORT). 
*         B12 = COMMAND ABORT MESSAGE FORMAT NUMBER - 10. 
*         B13 = MODULE RUNNING NUMBER.
*         B15 = MODE TO PATTERN GENERATOR SUBMODULE.
* 
* 
*          IB(0) , IB(1)  READ BUFFER 
* 
*          OB 
*          0,1   DATA FROM PATTERN FOR OUTPUT 
*          4,5   LOG.DIFF CELLS 
*          76    USER DATA FLAG 
*          77    PATTERN COUNT
*          100-  PATTERNS 
* 
* 
* 
*   2.3   SUBMODULES USED 
*          CRP97X - ABORT MESSAGE PROCESSOR 
* 
* 
* --------------------------------------------------------------- 
/--- PARAMETERS P2=WWRR,P3=MODE,P4=DELAY,P5=CONDITION,P9=WC 
/---P6,P7,P8=DATA 
0  FORMAT CRP64 - REPAIR TEST - 1 
2  FORMAT CRP64 .ABORT. P=*OCT, ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT .SL.ERC=*DEC LC=*DEC  W=*3H*3H*3HH  R=*3H*3H*3HH
7  FORMAT // MODULE ERROR LIMIT-CRP64 
10 FORMAT CRP64 ERROR(S) IN MODULE = *DEC 
17 FORMAT   - - -  PARAMETER ERROR IN P*D  - - -
20 FORMAT  P2=WWRR FUNCS P2=*OCT   P3=MODE P3=*OCT
21 FORMAT  P9= WORD CNT  P9=*OCT   P5=COND P5=*OCT
22 FORMAT  P6, P7, P8 = DATA WORDS P6,P7,P8=*3H*3H*3HH
23 FORMAT LST FNC=*OCT,WFNC=*OCT,RFNC=*OCT,WC=*OCT
27 FORMAT CRP64 ------------------------------------------- 
* 
* -----------------DATA DIVISION--------------------------
* 
   EQUATE ERRLIM = 20 
* 
* -----------------INITIALIZATION-------------------------
* 
30 MSG 0 TO PRINT,DAYFILE   *RUNNING MESSAGE
32 MSG 0 TO DISPLAY 
   B10 = 0                  *CLEAR LOOP CNTR
   B11 = 0
   B13 = 64D                *MODULE NUMBER
   B15 = 3                  *PRESET DISPLAY LINE CNTR 
   TIMEOUT TYPEA=2 USEC, TYPEB=2 USEC 
* 
* -----------------PARAMETER PREP---------------------- 
* 
   IF(P3.GT.2)ERROR 15/3 GOTO 50   *PARAM ERR P3=MODE 
   IF(P9.GT.3)ERROR 16/9 GOTO 50   *PARAM ERR P9=WC 
   IF(P5.GT.2)ERROR 17/5 GOTO 50   *PARAM ERR P5=CONDITION
* 
   B1 = P2.AND.7700.RS.6         *WRITE FUNC WW-- 
   IF(B1.EQ.0)B1 = 40            *DEFAULT IS GSW
   B2 = P2.AND.0077              *READ FUNC --RR
   B3 = P3.LS.6.OR.400           *MODE - DIAG MODE
   B1 = B1.OR.B3                 *MODE/R FUNC 
   B2 = B2.OR.B3                 *MODE/W FUNC 
   OB(101) = P6                  *WD 1
   OB(102) = P7                  *WD 2
   OB(103) = P8                  *WD 3
   IF(P3.NE.2)GOTO 33            *SKIP MODE 2 MASK
   OB(101) = OB(101).AND.377     *MASK IF MODE 2
   OB(102) = OB(102).AND.377     *- 
33 B4 = P9                       *WORD CNT
   IF(P9.NE.0)GOTO 34            *SET WC IF P9=0
   IF(P3.EQ.0)B4 = 1             *WC MODE 0 
   IF(P3.EQ.1)B4 = 3             *WC MODE 1 
   IF(P3.EQ.2)B4 = 2             *WC MODE 2 
* 
* ------------------TEST--------------------------------- 
* 
34 IF(P4.NE.0)DELAY P4 USEC 
   B12 = 1                     *ABT ERROR MSG 
   RES,ABT 70                  *GET CHANNEL TO CRP
   IF(P5.EQ.2)GOTO 36          *P5=2 READ ONLY
   B12 = 2
   FUNC B1,ABT 70              *WRITE FUNC B1 (FROM P2) 
   B12 =3 
   WC = B4
   BA = 101 
   OUT , ABT 70 
   IF(P5.EQ.1)GOTO 40          *P5=1 WRITE ONLY 
36 B12 = 2                     *ABT MSG 
   FUNC B2,ABT 70              *READ FUNC B2 (FROM P2)
   BA = 0 
   WC = B4
   B12 = 4
   IN ,ABT 70                *READ DATA WD(S) 
   IF(WT.NE.WC)GOTO 70
40 B10 = B10 + 1             *BUMP LOOP CNT 
* 
* --------------ERROR / REPEAT PROCESSING-----------------
* 
   IF(ES.AND.SL.EQ.0)GOTO 42        *NOT SCOPE LOOP 
   OB(77) = B11 
   OB(100) = B10
   OB(104) = IB(0)                  *MOVE IB FOR DISPLAY
   OB(105) = IB(1)                  *-
   OB(106) = IB(2)                  *-
* 
   MSG 3 ,8 WORDS FROM OB(77) TO DISPLAY
   IF(DS.AND.S1.EQ.0)GOTO 34                *CHECK DS-S1
   IF(OB(101).NE.IB(0))GOTO 41              *CHK FOR ERRORS 
   IF(OB(102).NE.IB(1))GOTO 41              *-
   IF(OB(103).NE.IB(2))GOTO 41              *-
   GOTO 34                                  *NOT ERROR FOUND
41 MSG 3,7 WORDS FROM OB(100) TO LINE B15 
   MSG 23(LF,B2,B1,WC) TO LINE 1
   B15 = B15 + 1                      *BUMP LINE CNT
   IF(B15.LE.46)GOTO 34               *LOOP-FILL PPU DISPLAY
   B15 = 3                            *RESET LINE CNTR
   GOTO 34
* 
42 IF(ES.AND.RM.NE.0) GOTO 32         *REPEAT MODULE
44 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY , PRINT
   IF(B11.NE.0)MSG 10(B11)TO DISPLAY,PRINT,DAYFILE
   GOTO 77                            *END MODULE 
* 
* -----------------PROCESS PARAMETER ERROR------------- 
* 
50 MSG 0 TO LINE 1                   *MODULE NAME 
   MSG 17 TO LINE 2                  *PARAM ERROR MSG 
   MSG 20(P2,P3) TO LINE 3           *P2,P3 
   MSG 21(P9,P5) TO LINE 4           *P4,P5 
   MSG 22(P6,P7,P8) TO LINE 5        *P6,P7,P8
   MSG 17(EC) TO LINE 6              *P REG IN ERROR
   MSG 27 TO LINE 7 
   PICTURE
   PAUSE
   MSG 17(EC) TO PRINT
   BLANK
   GOTO 32                           *LOOP FOR CORRECTION 
* 
* --------------ABORT PROCESSOR------------------------ 
* 
70 B11=B11+1                        *BUMP ERROR CNTR
   B12 = 2
   FUNC 01 , ABT 70 
   IF(ES.AND.SL.EQ.0) GOTO 74       *NOT SCOPE LOOP 
   MSG 2(EA,EC,B11,B10)TO DISPLAY   *ERROR MSG
   GOTO 34                          *SCOPE LOOP ON ERROR
* 
74 MSG 0 TO LINE 1
   B1 = 0                           *FLAG AORT MSGS 
   CALL 97X                         *PROCESS ABORTS 
   MSG 0 TO DISPLAY                 *RESET RUNNING MSG
   IF(B11.LE.ERRLIM) GOTO 34        *LOOP IF NOT ERR LIMIT
   GOTO 44                          *GO POST MSG AND EXIT 
77 END 30 
COMPILE,SOURCE   *CRP64 - REPAIR TEST 1 
   MODULE CRP65,6000(200) 
***     CRP65 - REPAIR MODULE - 2  DATA FIFO
**
* 
* 
*       1.0   EXTERNAL DOCUMENTATION
* 
*       1.1   PURPOSE 
* 
*             WRITE, READ, AND COMPARE DATA TO/FROM TO CONTROL AND
*             DATA FIFO. MODULE IS COMPLETELY PARAMETER DRIVEN. AN
*             UNDERSTANDING OF THE DATA FIFO IS NECESSARY TO RUN
*             THIS MODULE AND SUCCESSFULLY REPAIR TO FIFO.
* 
*       1.2   PARAMETERS
* 
*             P2 = CLEAR FIFO FLAG   0 = CLEAR FIFO (CLRFIFO DIAG FUNC) 
*                                        ON EACH PASS IN MODULE.
*                = 1 CLEAR FIFO ONLY EVERY 150D PASSES. 
*             P3 = CRP FIFO STACK WORD COUNT FOR W/R.  MAX IS 16D.
*             P5 = W/R/C CONDITION SWITCH 
*                = 0 WRITE , READ, COMPARE
*                = 1 WRITE ONLY 
*                = 2 READ ONLY
*             P6,P7,P8,P9 USER SUPPLIED DATA PATTERN. 
*                DEFAULT IS STACK ADDRESS 
* 
* 
*        1.3   MESSAGES 
* 
* 
*           . CRP65 - REPAIR MODULE - 2 DATA FIFO TEST
*           . CRP65 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
*           . ADDRESSING/DATA ERROR IN D FIFO 
*           .  ADDRESS   EXPECTED    ACTUAL    DIFF.(HEX VALUES)
*           .   *H                            *H*H*H*H
*           .            *H*H*H*H   *H*H*H*H
*           . // MODULE ERROR LIMIT-CRP65 
*           . CRP65 LOOPING P5=*OCT,LC(B10)=*DEC,WC(P3)=*3HH
*           . DATA ERR. ERC=*DEC,LC=*DEC,ADD=*HH,DIF=*H*H*H*HH
* 
* 
* 
* ----------------------------------------------------------------- 
* 
* 
/------P5=WRITE/READ SWITCH P5=0-W/R , =1  WRITE ONLY-------
/-----P6 ,P7,P8,AND P9 ARE USER DATA DEFAULT IS ADDRESS-----
/-----P3=CRP STK WD COUNT  MAX =16D-----
/-----P2=FIFO CLR FLAG . 0 CLEAR ALWAYS. 1 EVERY 150 PASSES 
/ 
0  FORMAT CRP65 - REPAIR MODULE - 2 DATA FIFO TEST
2  FORMAT CRP65 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
3  FORMAT ADDRESSING/DATA ERROR IN D FIFO 
4  FORMAT  ADDRESS   EXPECTED    ACTUAL    DIFF.(HEX VALUES)
5  FORMAT   *H                            *H*H*H*H
6  FORMAT            *H*H*H*H   *H*H*H*H
7  FORMAT // MODULE ERROR LIMIT-CRP65 
20 FORMAT CRP65 LOOPING P5=*OCT,LC(B10)=*DEC,WC(P3)=*3HH
21 FORMAT DATA ERR. ERC=*DEC,LC=*DEC,ADD=*HH,DIF=*H*H*H*HH
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM = 20 
   EQUATE CLEAR=503, CLRFIFO=504
   DATA (OB(503),CON) 0000B , 1000B    *DIAG REG FUNCTIONS
* 
* -----------------INITIALIZATION-----------------
* 
30 MSG 0 TO PRINT,DAYFILE    *RUNNING MSG 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERR CNTR
* 
   B1 = P6.OR.P7.OR.P8
   B1 = B1.OR.P9
   OB(0) = P6.AND.377        *MASK OUTPUT DATA..DATA
   OB(1) = P7.AND.377        *                  DATA
   OB(2) = P8.AND.17         *MASK OUTPUT DATA..CONTROL 
   OB(3) = P9.AND.377        *                  CONTROL 
   COPY OB(0) TO OB(4) FOR 100
   IF(B1.NE.0)GOTO 40        *TEST USER DATA
   B2 = 0                    *ADDRESS IMAGE 
34 DUP B2 TO OB(B1) FOR 4 
   B2 = B2 + 1               *BUMP ADDRESS
   GOTO 34 WHILE(B1+4.LE.100)   *FILL 16D CELLS 
* 
* ---------------DATA TEST------------------- 
* 
40 B12 = 1
   RES ,ABT 70
   GOSUB 66                     *CLEAR CLRFIFO
* 
43 BA = 0                       *STARTING ADDRESS IN BUFFER 
   WC = P3 + P3 + P3            *WD CNT FOR W/R 
   WC = WC + P3 
   IF(WC.GT.100)WC = 100        *IF P3.GT.16D 
   IF(WC.EQ.0)WC = 4            *DEFAULT WC 
   B15 = WC                     *HOLD WC IN B15 
   B12 = 2
   FUNC 647 , ABT 70            *MODE 2 DIAG WRITE
   B12 = 3
   OUT , ABT 70                 *WRITE STK
   MSG 20(P5,B10,P3)TO LINE 46
   IF(P5.EQ.1)GOTO 46           *LOOP ON WRITE IF P5=1
   B12 = 2
   FUNC 00 , ABT 70             *DUMMY FUNC TO CLEAR WRT
   FUNC 226 , ABT 70            *MODE 2 NORMAL READ 
   BA = 0 
   B12 = 4
   IN , ABT 70                  *BLK RD WC AS IN OUT
* 
   WC = 4                       *COMPARE WD CNT 
   B2 = 0                       *BUFFER ADDRESS 
   B1 = 0                       *CLEAR ADDRESS
44 COMPARE OB(B2) TO IB(B2) FOR WC,ABT 54 
   B1 = B1 + 1                   *BUMP ADDRESS
   GOTO 44 WHILE(B2+4.LT.B15)    *COMPARE 4WD LOCATIONS 
* 
46 IF(P2.EQ.0)GOTO 40 WHILE(B10+1.LE.150D)  *LOOP CLRFIFO 
   IF(P2.EQ.1)GOTO 43 WHILE(B10+1.LE.150D)  *LOOP NO CLRFIFO
   B10 = 0
* 
   IF(ES.AND.SL.NE.0)GOTO 40     *SL
* 
* ----------------ENDS / REPEATS--------------------
* 
   IF(ES.AND.RM.NE.0)GOTO 32     *RM
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
* ..EXIT                      *RETURN TO PRIMARY MODULE 
   GOTO 77                       *EXIT/END MODULE 
* 
* ----------------DATA COMPARE ERROR------------- 
* 
54 B11 = B11 + 1                   *CNT ERR 
   B2 = 0 
55 OB(B2+200) = OB(B2).XOR.IB(B2)  *FORM LOG.DIF. 
   GOTO 55 WHILE(B2+1.LE.100)      *LOOP ALL DATA 
   IF(ES.AND.SL.EQ.0)GOTO 60       *NOT SL
   B2 = B1 + B1 + 200              *FORM BUFFER ADDRESS 
   OB(400) = B11
   OB(401) = B10
   OB(402) = B1 
   COPY OB(B2) TO OB(403) FOR 4 
   MSG 21, 7 WORDS FROM OB(400) TO DISPLAY
   GOTO 40                        *RETURN TO LOOP 
* 
60 MSG 0 TO LINE 1                *TITLE MSG
   MSG 3 TO LINE 2                *WORDS
   MSG 4 TO LINE 3                *HEADER 
   B6 = 4                         *LINE CNTR
   B1 = 0                         *SCR CNTR 
   B2 = 0                         *SCR CNTR 
62 OB(100) = B1                   *ADDRESS
   COPY OB(B2+200) TO OB(101) FOR 4   *DIFF 
   MSG 5, 5 WORDS FROM OB(100) TO LINE B6 
   B6 = B6 + 1
   COPY OB(B2) TO OB(100) FOR 4 
   COPY IB(B2) TO OB(104) FOR 4 
   MSG 6 ,8 WORDS FROM OB(100) TO LINE B6 
   B6 = B6 + 1
   B1 = B1 + 1
   GOTO 62 WHILE(B2+4.LT.B15)     *LOOP ALL ADDRESSES 
   PICTURE
   HALT 
   BLANK
   GOTO 76
* 
* -------------SEND CLEAR FIFO TO THE CRP---------------- 
* 
66 B12 = 6
   WC = 1 
   BA = CLRFIFO                 *ADDRESS OF CLRRQ FUNC
   FOUT 50,ABT 70               *WRITE DIAGNOSTIC REG 
   BA = CLEAR 
   FOUT 50,ABT 70 
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   GOTO 40                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0 
   CALL 97X 
* 
76 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 40                   *RETURN TO TEST LOOP 
* 
77 END 30 
COMPILE,SOURCE   *CRP65 - REPAIR MODULE-2  FIFO  TEST 
   MODULE CRP66,6000(200) 
***     CRP66 - REPAIR MODULE - 3  REQUEST STACK
**
* 
* 
*       1.0   EXTERNAL DOCUMENTATION
* 
*       1.1   PURPOSE 
* 
*             WRITE , READ , AND COMPARE DATA TO/FROM TO REQUEST STACK. 
*              MODULE IS COMPLETELY PARAMETER DRIVEN. AN UNDER- 
*             STANDING OF THE RQSTK IS NECESSARY TO RUN THIS MODULE 
*             AND SUCCESSFULLY REPAIR TO RQSTK. 
* 
*       1.2   PARAMETERS
* 
*           P4 = DELAY IN USEC. 
*           P9 = STACK ADDRESSES TO W/R/C.
*           P5 = W/R/C CONDITION SWITCH 
*              = 0  W/R/C 
*              = 1  WRITE ONLY      = 2 READ ONLY 
* 
*        1.3   MESSAGES 
* 
* 
*           . CRP66 - REPAIR MODULE - 3 REQUEST STACK (RQSTK) 
*           . CRP66 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
*           . ADDRESSING/DATA ERROR IN REQUEST STACK
*           .  ADDRESS   EXPECTED    ACTUAL    DIFF.(HEX VALUES)
*           .   *H         *H*H       *H*H     *H*H 
*           . // MODULE ERROR LIMIT-CRP66 
*           . CRP66 LOOPING P5=*OCT,LC(B9)=*DEC,WC(P9)=*OCTB
*           . DATA ERR. ERC=*DEC, LC=*DEC, ADD=*HH, DIF=*H*HH 
*           .  -----------------------------------------------
* 
* 
* 
* ----------------------------------------------------------------- 
/ 
/------P5=WRITE/READ SWITCH P5=0-W/R , =1  WRITE ONLY-------
/-----P9=CRP STK WD COUNT-----
/ 
0  FORMAT CRP66 - REPAIR MODULE - 3 REQUEST STACK (RQSTK) 
2  FORMAT CRP66 .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC
3  FORMAT ADDRESSING/DATA ERROR IN REQUEST STACK
4  FORMAT  ADDRESS   EXPECTED    ACTUAL    DIFF.(HEX VALUES)
5  FORMAT   *H         *H*H       *H*H     *H*H 
7  FORMAT // MODULE ERROR LIMIT-CRP66 
20 FORMAT CRP66 LOOPING P5=*OCT,LC(B9)=*DEC,WC(P9)=*OCTB
21 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, ADD=*HH, DIF=*H*HH 
27 FORMAT  -----------------------------------------------
* 
* -----------------DATA---------------------------
* 
   EQUATE ERRLIM=20,CLEAR=503,CLRRQ=504 
   DATA (OB(503),CON) 0000B , 4000B    *DIAG REG FUNCTIONS
* 
* -----------------INITIALIZATION-----------------
* 
30 IF(B0.EQ.0726D)GOTO 76    *RETURN FROM 97Z 
* 
* 
31 MSG 0 TO PRINT,DAYFILE    *RUNNING MSG 
32 MSG 0 TO DISPLAY          *RUNNING MSG 
   B8 = 0                    *ADD/COMP ADD CNTR 
   B10 = 0                   *LOOP CNTR 
   B11 = 0                   *ERR CNTR
* 
   B2 = 0                    *ADDRESS IMAGE 
   B1 = 0                    *LOCATION CNTR 
34 OB(B1) = B2.OR.0200       *ADDRESS AND UPPER BIT 
   OB(B1+1) = B2.OR.0300     *- 
   B2 = B2 + 1               *BUMP ADDRESS
   GOTO 34 WHILE(B1+2.LE.36)  *FILL 16D CELLS 
* 
* ---------------DATA TEST------------------- 
* 
42 IF(P4.NE.0)DELAY P4 USEC     *DELAY IF SET 
   B12 = 1
   RES ,ABT 70
   GOSUB 66                     *CLEAR RQSTK
* 
   BA = 0                       *STARTING ADDRESS IN BUFFER 
   WC = P9 + P9                 *WD CNT FOR W/R 
   IF(WC.EQ.0)WC = 2            *DEFAULT WC 
   B12 = 2
   FUNC 645 , ABT 70
   B12 = 3
   OUT , ABT 70                 *WRITE FULL STK 
   B9 = B9 + 1                  *LOOP CNTR
   MSG 20(P5,B9,P9)TO LINE 46 
   IF(P5.EQ.1)GOTO 42           *LOOP ON WRITE IF P5=1
   BA = 0 
   WC = 2 
43 B12 = 2
   FUNC 00 , ABT 70             *DUMMY GS FUNC
   B12 = 2
   FUNC 205,ABT 70
   B12 = 4
   IN , ABT 70
   GOTO 43 WHILE(BA+2.LT.P9)   *READ FULL STK 
* 
   WC = 2                       *COMPARE WD CNT 
   B1 = 0                       *STACK ADDRESS
   B2 = 0                       *BUFFER ADDRESS 
44 COMPARE OB(B2) TO IB(B2) FOR WC,ABT 54 
   B2 = B2 + 2                  *BUMP BUFFER LOCATION 
   GOTO 44 WHILE(B1+1.LE.17)    *COMPARE 16-2WD LOCATIONS 
* 
   GOTO 42 WHILE(B10+1.LE.100D)  *LOOP 100D TIMES 
   B10 = 0
   B1 = 0                       *CLEAR SCR CNTR 
* 
   IF(ES.AND.SL.NE.0)GOTO 42     *SL
* 
* ----------------ENDS / REPEATS--------------------
* 
   IF(P5.EQ.0)GOTO 50            *NOT USER COND.
   IF(ES.AND.RM.NE.0)GOTO 32     *RM AND USER COND(P5.NE.0) 
* 
50 IF(B11.GT.ERRLIM)MSG 7 TO DISPLAY,PRINT,DAYFILE
*  EXIT...END....                *RETURN TO PRIMARY MODULE
   GOTO 77                       *END MODULE......
* 
* ----------------DATA COMPARE ERROR------------- 
* 
54 B11 = B11 + 1                  *CNT ERR
   B2 = 0 
55 OB(B2+40) = OB(B2).XOR.IB(B2)  *FORM LOG.DIF. IN OB(40+ )
   GOTO 55 WHILE(B2+1.LE.37)      *LOOP ALL DATA
   IF(ES.AND.SL.EQ.0)GOTO 60      *NOT SL 
   B2 = B1 + B1 + 40              *FORM BUFFER ADDRESS
   MSG 21(B11,B10,B1,OB(B2),OB(B2+1)) TO DISPLAY
   GOTO 42                        *RETURN TO LOOP 
* 
60 MSG 0 TO LINE 1                *TITLE MSG
   MSG 3 TO LINE 2                *WORDS
   MSG 4 TO LINE 3                *HEADER 
   B6 = 4                         *LINE CNTR
   B1 = 0                         *SCR CNTR 
   B2 = 0                         *SCR CNTR 
62 OB(100) = B1                   *ADDRESS
   COPY OB(B2) TO OB(101) FOR 2   *EXPECTED DATA
   COPY IB(B2) TO OB(103) FOR 2   *ACTUAL DATA
   COPY OB(B2+40) TO OB(105) FOR 2   *DIFF
   MSG 5, 7 WORDS FROM OB(100) TO LINE B6 
   B6 = B6 + 1
   B2 = B2 + 2
   GOTO 62 WHILE(B1+1.LE.17)    *LOOP ALL ADDRESSES 
   MSG 27 TO LINE B6
   GOTO 75                      *PICTURE AND LOOP 
* 
* -------------SEND CLEAR RQSTK TO THE CRP----------------
* 
66 B12 = 6
   WC = 1 
   BA = CLRRQ                 *ADDRESS OF CLRRQ FUNC
   FOUT 50,ABT 70             *WRITE DIAGNOSTIC REG 
   BA = CLEAR 
   FOUT 50,ABT 70 
   RETURN 
* 
* -----------------ABORTS------------------------------ 
* 
70 B11 = B11 + 1                    *ERROR CNTR 
   ENDSUB                           *END ANY SUBS 
   IF(ES.AND.SL.EQ.0)GOTO 74        *NOT SL 
   MSG 2(EA,EC,B11,B10) TO DISPLAY  *POST LOOP MSG
   GOTO 42                          *RETURN TO LOOP 
* 
74 MSG 0 TO LINE 1
   B1 = 0 
   CALL 97X 
* 
* -----------------PICTURE DISPLAY AND LOOP-------- 
75 PICTURE
   HALT 
   BLANK
76 MSG 0 TO DISPLAY          *REPORT RUN MSG
   IF(B11.GT.ERRLIM)GOTO 50  *ERROR LIMIT 
   GOTO 42                   *RETURN TO TEST LOOP 
* 
77 END 30 
COMPILE,SOURCE   *CRP66 - REPAIR MODULE-3 RQSTK 
   MODULE CRP84,6000(200),LOCK
0  FORMAT CRP84 - PRINT BUFFER DATA 
1  FORMAT   *H*H *H*H  ,  *H*H *H*H 
2  FORMAT *3H , *3H , *3H , *3H , *3H , *3H , *3H , *3H 
3  FORMAT P5=*OCT SELECTED PRINT OB IN -3H- FORMAT
4  FORMAT  *OCT, *OCT, *OCT, *OCT, *OCT, *OCT, *OCT, *OCT 
5  FORMAT P5=*OCT SELECTED PRINT OB IN -OCT- FORMAT 
6  FORMAT  *H , *H , *H , *H , *H , *H , *H , *H
7  FORMAT P5=*OCT SELECTED PRINT OB IN -H- FORMAT 
10 FORMAT PRINT MODULE 51 HPP PROGRAM DATA FORMAT 
11 FORMAT PRINT OF HPP SECTION CRP511 
12 FORMAT PRINT OF HPP SECTION CRP512 
13 FORMAT PRINT OF HPP SECTION CRP513 
14 FORMAT PRINT OF HPP SECTION CRP514 
15 FORMAT PRINT OF HPP SECTION CRP515 
16 FORMAT PRINT OF HPP SECTION CRP510 
21 FORMAT P5=*OCT SELECTED PRINT IB IN -3H- FORMAT
22 FORMAT P5=*OCT SELECTED PRINT IB IN -OCT- FORMAT 
23 FORMAT P5=*OCT SELECTED PRINT IB IN -H- FORMAT 
24 FORMAT ADDRESS IN BUFFER IS = *OCT O 
26 FORMAT 
27 FORMAT --------------------------------------------------
* 
* ----------------PRINT OUTPUT BUFFER---------- 
* 
30 MSG 0 TO PRINT,DISPLAY 
* 
   IF(P5.NE.77)GOTO 32          *NOT HPP PROGRAM PRINT
   B15 = 7777               *FLAG PRINT ONLY TO FORCE RETURN
* 
   CALL 511 
   MSG 10 TO PRINT
   MSG 11 TO PRINT
   B14 = 1                       *SET PRINT FORMAT
   GOSUB 70 
   CALL 512 
   MSG 12 TO PRINT
   GOSUB 70 
* 
   CALL 513 
   MSG 13 TO PRINT
   GOSUB 70 
* 
   CALL 514 
   MSG 14 TO PRINT
   GOSUB 70 
* 
   CALL 515 
   MSG 15 TO PRINT
   GOSUB 70 
* 
   CALL 510 
   MSG 16 TO PRINT
   GOSUB 70 
   GOTO 77
* 
* 
32 IF(P5.NE.0)GOTO 34 
   B14 = 4                       *FORMAT
   MSG 5(P5) TO PRINT 
   GOSUB 70                      *PRINT 
   GOTO 77
* 
34 IF(P5.NE.1)GOTO 36 
   B14 = 2                       *FORMAT
   MSG 3(P5) TO PRINT 
   GOSUB 70 
   GOTO 77
* 
36 IF(P5.NE.2)GOTO 40 
   B14 = 6
   MSG 7(P5) TO PRINT 
   GOSUB 70 
   GOTO 77
* 
40 IF(P5.NE.40)GOTO 42
   B14 = 4
   MSG 22(P5) TO PRINT
   GOSUB 70 
   GOTO 77
* 
42 IF(P5.NE.41)GOTO 44
   B14 = 2
   MSG 21(P5) TO PRINT
   GOSUB 70 
   GOTO 77
* 
44 IF(P5.NE.42)GOTO 77
   B14 = 6
   MSG 23(P5) TO PRINT
   GOSUB 70 
   GOTO 77
* 
* 
* 
* 
70 B1 = 0 
   MSG 26 TO PRINT
   B2 = P5
74 IF(B1.AND.77.EQ.0)MSG 24(B1) TO PRINT
   IF(P5.EQ.77)MSG B14, 8 WORDS FROM OB(B1) TO PRINT
   IF(P5.EQ.77) GOTO 76 
   IF(B2.AND.40.EQ.0)MSG B14,8 WORDS FROM OB(B1) TO PRINT 
   IF(B2.AND.40.EQ.40)MSG B14,8 WORDS FROM IB(B1) TO PRINT
76 GOTO 74 WHILE(B1+10.LE.500)
   MSG 26 TO PRINT
   MSG 27 TO PRINT
   MSG 26 TO PRINT
   RETURN 
77 END 30 
COMPILE,SOURCE   *CRP84 - PRINT HPP PROGRAM 
   MODULE CRP97X,6000(200),LOCK 
***   CRP97X - ERROR/ABORT MESSAGE PROCESSOR
**
* 
*       PROCESS ERROR HALTS AND COMMAND ABORT PROCESSING FOR ALL
*       PRIMINARY MODULES (ALL NON-SUBMODULES). 
* 
*       ENTRY - B1 = 0  COMMAND ABORT PROCESSING
*               B1 = 7700 ERROR HALT PROCESSING 
* 
*       USES  - IB(500,501,502) MODULE REPLACEMENT BUFFER 
*               B1 , B14
* 
*       REPORT ERRORS IF B1 IS NOT 0 OR 7700. 
* 
* 
* ------------------------------------------------------------
0  FORMAT CRP97X - ABORT ERROR MESSAGE PROCESSOR
2  FORMAT  CRP*D .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT BASED ON THE MODULE NUMBER AND TYPE OF FAILURE. 
4  FORMAT THE FOLLOWING BOARD REPLACEMENT ORDER IS SUGGESTED
5  FORMAT  *D  CHANNEL INTERFACE BOARD  -  77964175 
6  FORMAT  *D  CRP CONTROL BOARD        -  77964125 
7  FORMAT  *D  RING CONTROL BOARD       -  77964075 
10 FORMAT CRP53  EXP=*H*H   ACT=*H*H  HEX 
11 FORMAT  CRP*D ABORT ON .RES. COMMAND AT LINE *OCT
12 FORMAT  CRP*D ABORT ON .FUNC. COMMAND AT LINE *OCT 
13 FORMAT  CRP*D ABORT ON .OUT. COMMAND AT LINE *OCT
14 FORMAT  CRP*D ABORT ON .IN. COMMAND AT LINE *OCT 
15 FORMAT  CRP*D ABORT ON .FIN. COMMAND AT LINE *OCT
16 FORMAT  CRP*D ABORT ON .FOUT. COMMAND AT LINE *OCT 
17 FORMAT  CRP*D ABORT ON .STATUS. COMMAND AT LINE *OCT 
20 FORMAT  CRP*D ABORT ON .INB. COMMAND AT LINE *OCT
21 FORMAT  CRP*D ABORT ON .OUTB. COMMAND AT LINE *OCT 
22 FORMAT  CRP*D ABORT ON .ACN. COMMAND AT LINE *OCT
23 FORMAT  CRP*D ABORT ON .REL. COMMAND AT LINE *OCT
24 FORMAT  CRP*D ABORT ON .DCN. COMMAND AT LINE *OCT
26 FORMAT CRP97X INTERNAL ERROR B1 NOT SET FOR 97X(B1=*OCT) 
27 FORMAT  ---------------------------------------------
* 
* -----------------INITIALIZATION-----------------
* 
40 IF(B1.EQ.0)GOTO 60            *PROCESS ABORT MSGS
   IF(B1.EQ.7700)GOTO 50         *PROCESS MSG/HALT
   IF(B1.EQ.7753)GOTO 70
   MSG 26(B1) TO PRINT,DISPLAY   *B1 NOT SET FOR 97Z
   GOTO 77
* 
* 
* ----------------PROCESS MSG AND HALT--------------------- 
* 
50 PASS 
   MSG 27 TO LINE 5 
* 
* -----------------BOARD REPLACEMENT SUGGESTIONS------- 
* 
   IB(500) = 5                   *BOARD REPLACEMENT ORDER 
   IB(501) = 6                   *- 
   IB(502) = 0                   *- 
   IF(B13.LT.11D)GOTO 53          *ERROR 1
   IB(500)= 6                    *BOARD REPLACEMENT ORDER 
   IB(501) = 5                   *- 
   IB(502) = 7                   *- 
   IF(B13.LE.21D)GOTO 53          *ERROR 2
   IB(500) = 7                   *- 
   IB(501) = 6                   *- 
   IB(502) = 5                   *- 
   IF(B13.LE.47D)GOTO 53         *ERROR 3 
   IB(500) = 6
   IB(501) = 7
   IB(502) = 5
* 
53 B1 = IB(500)                  *SET UP
   B14 = 1
   MSG 3 TO LINE 7
   MSG 4 TO LINE 10 
   MSG B1(B14) TO LINE 11 
   B1 = IB(501) 
   B14 = 2
   MSG B1(B14) TO LINE 12 
54 IF(IB(502).EQ.0)GOTO 56       *END 
   B1 = IB(502) 
   B14 = 3
   MSG B1(B14) TO LINE 13 
* 
56 PICTURE
   HALT 
   BLANK
   EXIT                          RETURN TO CALLING MODULE 
* 
* ----------------PROCESS ABORT MSG------------------------ 
* 
60 PASS 
   B12 = B12 + 10                 *ADD BIAS TO EM 
   MSG B12(B13,EA) TO LINE 2      *ABORT MSG1 
   MSG EM(EC) TO LINE 3           *PRODUCT OVERLAY ABORT MSG
   MSG 2(B13,EA,EC,B11,B10) TO LINE 4   *SL TYPE MSG
   IB(500) = 5                   *BOARD REPLCMT 
   IB(501) = 6                   *- 
   IB(502) = 0
   MSG 27 TO LINE 5 
   GOTO 53                       *FINISH DISPLAY
* 
70 IF(EM.NE.22)GOTO 50
   COPY IB(0) TO OB(102) FOR 2
   MSG 10, 4 WORDS FROM OB(100) TO LINE 4 
   GOTO 50
*/MODSET CRP0009 CONTAINS 127 CARDS INCLUDING THIS COMMENT
* 
77 END 40 
COMPILE   *CRP97X - ABORT MESSAGE PROCESSOR 
   MODULE CRP97Z,6000(200),LOCK 
***   CRP97Z - ERROR/ABORT MESSAGE PROCESSOR
**
* 
*       PROCESS ERROR HALTS AND COMMAND ABORT PROCESSING FOR ALL
*       SUBMODULES. (ALL EXIT TO MODULES) 
* 
*       ENTRY - B1 = 0  COMMAND ABORT PROCESSING
*               B1 = 7700 ERROR HALT PROCESSING 
*               B0 = MODULE NUMBER OF "CALLING" MODULE
*                    NECESSAY FOR RETURN. 
*                    SUBMODULE WILL HALT IF IT CANNOT RETURN TO CALLER. 
* 
* 
*       USES  - IB(500,501,502) MODULE REPLACEMENT BUFFER 
*               B1 , B14
* 
*       REPORT ERROR IF B1 IS NOT 0 OR 7700.
* 
* 
* ------------------------------------------------------------
0  FORMAT CRP97Z - ABORT ERROR MESSAGE PROCESSOR
2  FORMAT  CRP*D .ABORT. P=*OCT,ECD=*OCT, ERC=*DEC, LC=*DEC 
3  FORMAT BASED ON THE MODULE NUMBER AND TYPE OF FAILURE. 
4  FORMAT THE FOLLOWING BOARD REPLACEMENT ORDER IS SUGGESTED
5  FORMAT  *D  CHANNEL INTERFACE BOARD  -  77964175 
6  FORMAT  *D  CRP CONTROL BOARD        -  77964125 
7  FORMAT  *D  RING CONTROL BOARD       -  77964075 
11 FORMAT  CRP*D ABORT ON .RES. COMMAND AT LINE *OCT
12 FORMAT  CRP*D ABORT ON .FUNC. COMMAND AT LINE *OCT 
13 FORMAT  CRP*D ABORT ON .OUT. COMMAND AT LINE *OCT
14 FORMAT  CRP*D ABORT ON .IN. COMMAND AT LINE *OCT 
15 FORMAT  CRP*D ABORT ON .FIN. COMMAND AT LINE *OCT
16 FORMAT  CRP*D ABORT ON .FOUT. COMMAND AT LINE *OCT 
17 FORMAT  CRP*D ABORT ON .STATUS. COMMAND AT LINE *OCT 
20 FORMAT  CRP*D ABORT ON .INB. COMMAND AT LINE *OCT
21 FORMAT  CRP*D ABORT ON .OUTB. COMMAND AT LINE *OCT 
22 FORMAT  CRP*D ABORT ON .ACN. COMMAND AT LINE *OCT
23 FORMAT  CRP*D ABORT ON .REL. COMMAND AT LINE *OCT
24 FORMAT  CRP*D ABORT ON .DCN. COMMAND AT LINE *OCT
25 FORMAT CRP97Z INTERNAL ERROR NO RETURN (B0=*OCT) 
26 FORMAT CRP97Z INTERNAL ERROR B1 NOT SET EXIT(B1=*OCT)
27 FORMAT  ---------------------------------------------
* 
* -----------------INITIALIZATION-----------------
* 
40 IF(B1.EQ.0)GOTO 60            *PROCESS ABORT MSGS
   IF(B1.EQ.7700)GOTO 62         *PROCESS MSG/HALT
   MSG 26(B1) TO PRINT,DISPLAY   *B1 NOT SET FOR 97Z
   GOTO 77
* 
* 
* ----------------PROCESS MSG AND HALT--------------------- 
* 
* 
* ----------------PROCESS ABORT MSG------------------------ 
* 
60 PASS 
   B12 = B12 + 10                *ADD BIAS TO EM
   MSG B12(B13,EA) TO LINE 2     *ABORT MSG1
   MSG EM(EC) TO LINE 3          *PRODUCT OVERLAY ABORT MSG 
   MSG 2(B13,EA,EC,B11,B10) TO LINE 4   *SL TYPE MSG
   IB(500) = 5                   *BOARD REPLCMT 
   IB(501) = 6                   *- 
   IB(502) = 0                   *- 
   MSG 27 TO LINE 5 
   GOTO 63
* 
62 MSG 27 TO LINE 5 
   IB(500) = 5                   *BOARD REPLACEMENT ORDER 
   IB(501) = 6                   *- 
   IB(502) = 0                   *- 
   IF(B13.LT.11D)GOTO 63          *ERROR 1
   IB(500)= 6                    *BOARD REPLACEMENT ORDER 
   IB(501) = 5                   *- 
   IB(502) = 7                   *- 
   IF(B13.LE.21D)GOTO 63          *ERROR 2
   IB(500) = 7                   *- 
   IB(501) = 6                   *- 
   IB(502) = 5                   *- 
   IF(B13.LE.47D)GOTO 63         *ERROR 3 
   IB(500) = 6
   IB(501) = 7
   IB(502) = 5
* 
63 B1 = IB(500)                  *SET UP
   B14 = 1
   MSG 3 TO LINE 7
   MSG 4 TO LINE 10 
   MSG B1(B14) TO LINE 11 
   B1 = IB(501) 
   B14 = 2
   MSG B1(B14) TO LINE 12 
64 IF(IB(502).EQ.0)GOTO 66       *END 
   B1 = IB(502) 
   B14 = 3
   MSG B1(B14) TO LINE 13 
* 
* 
66 PICTURE
   HALT 
   BLANK
* 
* ----------------RETURNS---------------------------------- 
* 
70 PASS 
   B1 = B0                       *HOLD RETURN NUMBER
   B0 = 0726D                    *FLAG FROM 97Z 
* 
   IF(B1.EQ.0211D)EXIT TO 21A    *RETURN TO 21A 
   IF(B1.EQ.0212D)EXIT TO 21B    *RETURN TO 21B 
   IF(B1.EQ.0213D)EXIT TO 21C    *RETURN TO 21C 
   IF(B1.EQ.0231D)EXIT TO 23A    *RETURN TO 23A 
   IF(B1.EQ.0232D)EXIT TO 23B    *RETURN TO 23B 
   IF(B1.EQ.0233D)EXIT TO 23C    *RETURN TO 23C 
   IF(B1.EQ.0234D)EXIT TO 23D    *RETURN TO 23D 
   IF(B1.EQ.0235D)EXIT TO 23E    *RETURN TO 23E 
   IF(B1.EQ.0251D)EXIT TO 25A    *RETURN TO 25A 
   IF(B1.EQ.0252D)EXIT TO 25B    *RETURN TO 25B 
   IF(B1.EQ.0253D)EXIT TO 25C    *RETURN TO 25C 
   IF(B1.EQ.0254D)EXIT TO 25D    *RETURN TO 25D 
   IF(B1.EQ.0291D)EXIT TO 29A    *RETURN TO 29A 
   IF(B1.EQ.0311D)EXIT TO 31A    *RETURN TO 31A 
   IF(B1.EQ.0312D)EXIT TO 31B    *RETURN TO 31B 
   IF(B1.EQ.0331D)EXIT TO 33A    *RETURN TO 33A 
   IF(B1.EQ.0351D)EXIT TO 35A    *RETURN TO 35A 
   IF(B1.EQ.0371D)EXIT TO 37A    *RETURN TO 37A 
   IF(B1.EQ.0372D)EXIT TO 37B    *RETURN TO 37B 
   IF(B1.EQ.0391D)EXIT TO 39A    *RETURN TO 39A 
   IF(B1.EQ.0392D)EXIT TO 39B    *RETURN TO 39B 
   IF(B1.EQ.0393D)EXIT TO 39C    *RETURN TO 39C 
   IF(B1.EQ.0511D)EXIT TO 51A    *RETURN TO 51A 
   IF(B1.EQ.0512D)EXIT TO 51B    *RETURN TO 51B 
   IF(B1.EQ.0514D)EXIT TO 51D    *RETURN TO 51D 
   IF(B1.EQ.0515D)EXIT TO 51E 
   IF(B1.EQ.0516D)EXIT TO 51F 
   IF(B1.EQ.0517D)EXIT TO 51G 
* ----RETURN TO 51D IF ABORTS IN 511,512,513,514,515
   IF(B1.LT.1514D)GOTO 72        *RETURN NOT TO 51A 
   IF(B1-1500.LE.0)GOTO 72     *MASK FOR 51X SUBMODULES 
   EXIT TO 51D                   *RETURN TO 51D FOR ALL 51X DWN LOADS 
* 
72 IF(B1.EQ.0531D)EXIT TO 53A    *RETURN TO 53A 
   IF(B1.EQ.0535D)EXIT TO 53A    *RETURN TO 53A 
* 
   MSG 25(B1) TO DISPLAY,PRINT   *NO RETURN 
* 
* 
77 END 40 
COMPILE   *CRP97Z - ABORT MESSAGE PROCESSOR 
   MODULE CRP98A,6000(200),LOCK 
***   CRP98A - ERROR PROCESSOR FOR CRP09 AND CRP10. 
**
* 
*        CRP98A PROCESSES ERROR FOR CRP09,10 .  PRINT ERROR DISPLAY.
* 
*        ENTRY  - 
*                 DATA READ BY CRP09 AND CRP10. 
*                 B13 = CALLERS MODULE NUMBER.
*                 OB(433...) MODULE NAMES FOR PRINT 
* 
*        USES   - 
*                 B7,B2,B3,B4 
*                 OB(0-7) 
* 
* 
* ------------------------------------------------------------- 
0  FORMAT CRP09 - FUNCTION DECODE/REGISTER SELECT TEST-1
1  FORMAT CRP10 - FUNCTION DECODE/REGISTER SELECT TEST-2
4  FORMAT SECTION *D FAILURE. NOT ABLE TO W/R DATA FROM A 
5  FORMAT REGISTER. FAILURE COULD BE A FUNCTION DECODE OF 
6  FORMAT REGISTER ADDRESS OR A DATA PATH FAILURE.
7  FORMAT   REGISTER   ERROR   EXPECTED      ACTUAL 
10 FORMAT     NAME     FLAG      DATA         DATA
11 FORMAT    *A*A*A     *A
12 FORMAT    *A*A*A     *A       *H*H         *H*H
13 FORMAT                      *H*H*H*H     *H*H*H*H
14 FORMAT ERROR FIRST DETECTED IN REGISTER *A*A*A.
15 FORMAT SL OR RM MAY BE USED TO REPEAT THIS FAILURE OR
16 FORMAT MODULE CRP*D WILL EXERCISE THIS REG. EXCLUSIVELY. 
20 FORMAT BASED ON THE MODULE NUMBER AND TYPE OF FAILURE. 
21 FORMAT THE FOLLOWING BOARD REPLACEMENT ORDER IS SUGGESTED
22 FORMAT  *D  CHANNEL INTERFACE BOARD  -  779641722
23 FORMAT  *D  CRP CONTROL BOARD        -  77964125 
24 FORMAT  *D  RING CONTROL BOARD       -  77964075 
26 FORMAT    LC=*DEC , ERC=*DEC 
27 FORMAT ------------------------------------------------
* 
* ------------------------DATA----------------------------
* 
   EQUATE ERRLIM=20, DRF=400, DWF=411, MNUM=422, REGNAM=433 
* 
* --------------------INITIALIZATION--------------------
* 
25 B7 = 1                    *LINE CNTR 
   IF(B13 .EQ. 9)MSG 0 TO LINE B7 
   IF(B13.EQ.10D)MSG 1 TO LINE B7 
   B7 = B7 + 1
   MSG 4(B13) TO LINE B7
   B7 = B7 + 1
   MSG 5 TO LINE B7 
   B7 = B7 + 1
   MSG 6 TO LINE B7 
   B7 = B7 + 2
   MSG 7 TO LINE B7 
   B7 = B7 + 1
   MSG 10 TO LINE B7
   B7 = B7 + 2
* ---- MOVE DATA FOR DISPLAY
   B2 = REGNAM                *REG NAMES
   B3 = 100                   *BUFFER INDEX 
   B4 = 200                   *FLAG INDEX 
* --REG NAME
30 OB(0) = OB(B2) 
   OB(1) = OB(B2+1) 
   OB(2) = OB(B2+2) 
   B2 = B2 + 3               *REG NAME INDEX
* --ERROR FLAG
   OB(3) = OB(B4) 
   IF(B13.EQ.10D)GOTO 34     *FOR 32 REGISTERS
* --EXPECTED DATA 16-BIT REG
32 OB(4) = OB(B3) 
   OB(5) = OB(B3+1) 
* --ACTUAL DATA 16-BIT REG. 
   OB(6) = IB(B3) 
   OB(7) = IB(B3+1) 
   MSG 12 , 8 WORDS FROM OB(0) TO LINE B7 
   B3 = B3 + 2
   GOTO 40
* -- EXPECTED DATA 32-BIT REG.
34 IF(B4.EQ.204)GOTO 32    *TRAP 16 BIT READ(06 FNC)
   MSG 11, 4 WORDS FROM OB(0) TO LINE B7
   B7 = B7 + 1
   OB(0) = OB(B3) 
   OB(1) = OB(B3+1) 
   OB(2) = OB(B3+2) 
   OB(3) = OB(B3+3) 
* --ACTUAL DATA 32-BIT REG. 
   OB(4) = IB(B3) 
   OB(5) = IB(B3+1) 
   OB(6) = IB(B3+2) 
   OB(7) = IB(B3+3) 
   MSG 13 , 8 WORDS FROM OB(0) TO LINE B7 
   B7 = B7 + 1               *EXTRA LINE FOR 32 REGS
   B3 = B3 + 4               *BUFFER INDEX
40 B7 = B7 + 1
   IF(B13.EQ. 9D)GOTO 30 WHILE(B4+1.LE.210)  *LOOP 16BIT REG
   IF(B13.EQ.10D)GOTO 30 WHILE(B4+1.LE.204)  *LOOP 32BIT REG
   B7 = B7 + 1
   B5 = B5.AND.77            *MSK OFF REG NUMBER BITS 
   B2 = B5 + B5 + B5         *FAILING REG NAME=B5*3 
   B2 = B2 + REGNAM 
   MSG 14(OB(B2),OB(B2+1),OB(B2+2)) TO LINE B7
   B7 = B7 + 1
   MSG 15 TO LINE B7
   B7 = B7 + 1
   B2 = B5 + MNUM             *FAILING REG TEST NUMBER
   OB(10) = OB(B2)
   MSG 16(OB(10)) TO LINE B7
   B7 = B7 + 1
   MSG 26(B10,B11) TO LINE B7 
   MSG 27 TO LINE B7+1
   MSG 20 TO LINE B7+2
   MSG 21 TO LINE B7+3
   B5 = 1 
   MSG 23(B5) TO LINE B7+4
   B5 = 2 
   MSG 24(B5) TO LINE B7+5
   B5 = 3 
   MSG 22(B5) TO LINE B7+6
* 
   PICTURE
   HALT 
   BLANK
   IF(B13 .EQ. 9)MSG 0 TO DISPLAY 
   IF(B13.EQ.10D)MSG 1 TO DISPLAY 
   EXIT 
   END 25 
COMPILE   *CRP98A - ERROR PROCESSOR FOR CRP09,10
   MODULE CRP98C,6000(200),LOCK 
***   CRP98C - PATTERN GENERATOR FOR PRIMARY MODULES. 
**
* 
*            BUILDS PATTERNS FOR MODES 0 , 1 , 2
* 
*            ENTRY - B15 = MODE FOR PATTERN 
* 
*            EXIT  - B15 = MODE + 10 IF ERROR 
*                    ELSE ; PATTERN WRITTEN IN OUTPUT BUFFER
*                    AT PSTART. 
*                    PCNT = NUMBER OF PATTERNS AVAILABLE
*                    USERD = 0 NOT USER DATA  , 1 USER DATA SUPPLIED
* 
* 
* ----------------------------------------------------------------- 
*     CALLED BY 13,15,17,19,21,27 
*       ENTRY B15 = MODE
*          P6,P7,P8 USER DATA FOR PATTERN 
*          IF DEFAULT IS NOT TO BE USED 
*     EXIT: 
*      B15 = ENTRY MODE IF NOT ERRORS 
*          =MODE +10 IF ERROR 
*      OB(PCNT) = NUMBER OF PATTERNS IN OB - 1. 
*      OB(USERD) = 0 IF DEFAULT PATTERN(S)
*                = 1 IF USER PATTERN
*       USES B1,B2, 
*            OB(PSTART) TO OB(PSTART+340) 
* 
* -----------------DATA---------------------------- 
* 
   EQUATE PSTART=100 , PCNT = 77 , USERD = 76 
* 
* -----------------INITIALIZATION------------------ 
* 
20 B2 = PSTART
   OB(USERD) = 0             *NOT USER DATA 
   IF(B15.NE.0)GOTO 30       *NOT MODE 0 REQUEST
* 
* -----------------MODE 0-------------------------
* -----------1 WD 12 BIT PATTERN------------------
* 
   IF(P6.EQ.0)GOTO 22        *NOT USER DATA 
   OB(B2) = P6               *SET USER DATA 
   OB(PCNT) = 1              *NUMBER OF 12 BIT PATTERNS 
   OB(USERD) = 1             *SET USER DATA GENERATED 
   GOTO 77                   *EXIT/RETURN 
* 
22 B1 = 0 
   OB( B2 ) = 7777           *ONES
   OB(B2+1) = 0000           *ZEROS 
   OB(B2+2) = 2525           *ONES/ZEROS
   OB(B2+3) = 5252           *ZEROS/ONES
   B2 = PSTART + 4
24 OB ( B2 ) = 0001.LS.B1    *MARCHING ONE
   OB(B2+14) = 7776.LS.B1    *MARCHING ZERO 
   B2 = B2 + 1
   GOTO 24 WHILE(B1+1.LE.13)  *LOOP FOR ALL PATTERNS
   OB(PCNT) = 34              *NUMBER OF 8-BIT PATTERNS 
   GOTO 77
* 
* -------------------MODE 2-----------------------
* ------------2 WD  8 BIT PATTERN-------------------
* 
30 IF(B15.NE.2)GOTO 40           *NOT MODE 2 PATTERN
   B1 = P6.OR.P7                 *TEST FOR USER DATA
   IF(B1.EQ.0) GOTO 32           *NO USER DATA(USE DEFAULT) 
   OB( B2 ) = P6.AND.377         *USER DATA WD 1
   OB(B2+1) = P7.AND.377         *- WD 2
   OB(PCNT) = 1                  *1 2-WD PATTERNS 
   OB(USERD) = 1                 *SET USER DATA GENERATED 
   GOTO 77                       *END SUB/RETURN
* 
32 B1 = 0                        *LOOP CNTR 
   DUP 0377 TO OB( B2 ) FOR 2    *ONES PATTERN
   DUP 0000 TO OB(B2+2) FOR 2    *ZEROS PATTERN 
   DUP 0125 TO OB(B2+4) FOR 2    *ONES-ZEROS PATTERN
   DUP 0252 TO OB(B2+6) FOR 2    *ZEROS-ONES PATTERN
   B2 = PSTART + 10 
   DUP 0000 TO OB(B2) FOR 40     *BKGD FOR MARCHING 1 
   DUP 0377 TO OB(B2+40) FOR 40  *BKGD FOR MARCHING O 
34 OB(B2+1 ) = 0001B.LS.B1.AND.377
   OB(B2+20) = 0001B.LS.B1.AND.377
   OB(B2+41) = 7776B.LS.B1.AND.377
   OB(B2+60) = 7776B.LS.B1.AND.377
   B2 = B2 + 2                   *BUMP ADDRESS
   GOTO 34 WHILE(B1+1.LE.7)      *LOOP FOR ALL ADDRESSES
   OB(PCNT) = 44                 *NUMBER OF 2WD PATTERNS
   GOTO 77                       *EXIT/RETURN 
* 
* ---------------------MODE 1-------------------- 
* ----------3 WD 32-BIT PATTERNS----------------- 
* 
40 IF(B15.NE.1)GOTO 76       *SET ERR EXIT/RETURN 
   B1 = P6.OR.P7.OR.P8       *TEST FOR USER DATA
   IF(B1.EQ.0)GOTO 42        *NO USER DATA(USE DEFAULT) 
   OB( B2 ) = P6             *USER DATA WD 1
   OB(B2+1) = P7             *- WD2 
   OB(B2+2) = P8             *- WD 3
   OB(PCNT) = 1              *1 3-WD PATTERN
   OB(USERD) = 1             *SET USER DATA GENERATED 
   GOTO 77                   *EXIT/RETURN 
* 
42 B1 = 0                        *LOOP CNTR 
   DUP 7777 TO OB( B2 ) FOR 3    *ONES PATTERN
   DUP 0000 TO OB(B2+3) FOR 3    *ZEROS PATTERN 
   DUP 2525 TO OB(B2+6) FOR 3    *ONES/ZEROS PATTERN
   DUP 5252 TO OB(B2+11) FOR 3   *ZEROS/ONES PATTERN
   B2 = PSTART + 14 
   DUP 0000 TO OB( B2) FOR 154   *BKGD FOR MARCHING 1 
   DUP 7777 TO OB(270) FOR 154   *BKGD FOR MARCHING 0 
44 OB( B2+2 ) = 0001.LS.B1
   OB(B2+45 ) = 0001.LS.B1
   OB(B2+110) = 0001.LS.B1
   OB(B2+156) = 7776.LS.B1
   OB(B2+221) = 7776.LS.B1
   OB(B2+264) = 7776.LS.B1
   B2 = B2 + 3
   GOTO 44 WHILE(B1+1.LE.13)  *LOOP FOR ALL PATTERNS
   OB(PCNT) = 116             *NUMBER OF 3WD PATTERNS 
   GOTO 77                    *EXIT/RETURN
* 
76 B15 = B15 + 10             *ERROR RETURN 
77 PASS 
   OB(PCNT) = OB(PCNT) - 1    *RESET PATTERN CNT TO CNT-1 
   EXIT                       *RETURN 
   END 20 
COMPILE   *CRP98C - DATA GENERATOR FOR REG TESTS (CALLED) 
   MODULE CRP98E,6000(200),LOCK 
***   CRP98E - PATTERN BUILDER FOR CRP11. 
**
* 
*        BUILD WRITE AND READ DATA FOR THE DIFFERENT MODES AND
*        WORD COUNTS TESTED IN CRP11. 
*        SETS FUNCTION CODES INTO OB(400).
* 
*        ENTRY -
*               B9 = CONDITION TO BUILD 
*        EXIT  -
*               B3 = ERROR RETURN FLAG
*                  = 0 ERROR   NON ZERO GOOD RETURN 
* 
*        USES   - 
*               OB(0-3) AND OB(100,101) 
* 
* 
* ------------------------------------------------------------
* 
* -----------------DATA-------------------------------
* 
* ----DIAGNOSTIC READ FUNCS.
   DATA (OB(401),CON) 411,511,511,511,611 
* 
* ----DIAGNOSTIC WRITE FUNCS. 
   DATA (OB(411),CON) 451,551,551,551,651 
* 
* ----WRITE WORDS CNTS
   DATA (OB(421),CON) 1 , 2 , 3 , 4 , 2 
* 
* --------------------------------------------- 
* 
20 B3 = 0                    *PRESET ERROR FLAG 
   IF(B9.LT.77)GOTO 24       *NOT PRETEST 
* ----CONDITION 77 + 100
   IF(B9.NE.77)GOTO 22       *CONDITION=100 
   OB(0) = 7777              *ONES TEST 
   OB(1) = 7777 
   OB(2) = 377
   OB(3) = 377
   GOTO 76                   EXIT/RETURN
22 IF(B9.NE.100)GOTO 77      *ERROR CONDITION 
   OB(0) = 0                 *ZREOS TEST
   OB(1) = 0
   OB(2) = 0
   OB(3) = 0
   GOTO 76                   *EXIT/RETURN 
24 OB(0) = 0443              *DEFAULT DATA 123 HEX
   OB(1) = 2126              *    '    '   456 HEX
   OB(2) = 3611              *    '    '   789 HEX
   OB(3) = 5274              *    '    '   ABC HEX
   IF(B9.LT.1) GOTO 77       *CONDITION ERROR - EXIT
   IF(B9.GT.5) GOTO 77       *CONDITION ERROR - EXIT
* 
* ---------------CONDITION 1----------------------- 
* 
   IF(B9.NE.1) GOTO 30       *NEXT CONDITION
* ----CONDITION 1WRITE-READ MODE 0-1 WD-(12-16-12)
   OB(0) = 2041              *DEFAULT DATA 421 HEX
   OB(1) = 0                 *CLEAR UNUSED DATA 
   OB(2) = 0
   OB(3) = 0
   OB(100) = 2041            *DEFAULT INPUT DATA 421 HEX
   OB(101) = 0
   IF(P6.EQ.0) GOTO 76       *NO USER DATA
   OB(0) = P6                *SET EXPECTED READ DATA
   OB(100) = P6              *USER DATA 
   GOTO 76                   *EXIT/RETURN 
* 
* ---------------CONDITION 2------------------------
30 IF(B9.NE.2) GOTO 40       *NEXT CONDITION
* ----COND.2 W/R MODE 1,2 WDS,BIT STRING(4X12-3X16-4X12)
   OB(2) = 0                 *DEFAULT DATA
   OB(3) = 0
   OB(100) = 0443            *EXPECTED READ DATA 123 HEX
   OB(101) = 2000            *EXPECTED READ DATA 400 HEX
   B1 = P6.OR.P7             *TEST FOR USER DATA
   IF(B1.EQ.0) GOTO 76       *NO USER DATA
   OB(0) = P6                *SET USER DATA 
   OB(1) = P7 
   OB(100) = P6              *BUILD EXPECTED READ DATA
   OB(101) = P7.AND.7400
   GOTO 76                   *EXIT/RETURN 
* 
* -------------------CONDITION 3--------------------
40 IF(B9.NE.3) GOTO 50       *NEXT CONDITION
* ----COND.3 W/R MODE 1,3 WDS,BIT STRING(4X12-3X16-4X12)
   OB(3) = 0                 *CLEAR UNUSED DATA 
   OB(100) = 2547            *EXPECTED READ DATA 567 HEX
   OB(101) = 4000            *EXPECTED READ DATA 800 HEX
   B1 = P6.OR.P7.OR.P8       *TEST FOR USER DATA
   IF(B1.EQ.0) GOTO 76       *NOT USER DATA 
   OB(0) = P6                *SET USER DATA FOR OUTPUT
   OB(1) = P7 
   OB(2) = P8 
   B1 = P8.RS.8.AND.17       *BUILD EXPECTED READ DATA
   B2 = P7.LS.4.AND.7760
   OB(100) = B1.OR.B2 
   OB(101) = P8.LS.4.AND.7400 
   GOTO 76                   *EXIT/RETURN 
* 
* --------------------CONDITION 4-------------------
50 IF(B9.NE.4) GOTO 60       *NEXT CONDITION
* ----COND.4 W/R MODE 1,4 WDS,BITSTRING(4X12-3X16-4X12) 
   OB(100) = 4653            *EXPECTED DATA 9AB HEX 
   OB(101) = 6000            *   '       '  C00 HEX 
   B1 = P6.OR.P7.OR.P8       *TEST FOR USER DATA
   B1 = B1.OR.P9
   IF(B1.EQ.0) GOTO 76       *NO USER DATA
   OB(0) = P6                *SET USER DATA FOR OUTPUT
   OB(1) = P7 
   OB(2) = P8 
   OB(3) = P9 
   B1 = P8.LS.8.AND.7400     *BUILD EXPECTED READ DATA
   B2 = P9.RS.4.AND.377 
   OB(100) = B1.OR.B2 
   OB(101) = P9.LS.4.AND.7400 
   GOTO 76                   *EXIT/RETURN 
* 
* ------------------CONDITION 5-------------------- 
60 IF(B9.NE.5) GOTO 77       *NO CONDITION MATCH ..ERROR
* ----COND.5 W/R MODE 2,2 WDS,CHAR MODE(2X8-16-2X8) 
   OB(2) = 0                 *CLEAR UNUSED DATA 
   OB(3) = 0
   OB(100) = 0043            *EXPECTED DATA 023 HEX 
   OB(101) = 0126            *   '      '   056 HEX 
   B1 = P6.OR.P7             *TEST FOR USER DATA
   IF(B1.EQ.0) GOTO 76       *NO USER DATA
   OB(0) = P6                *SET USED DATA 
   OB(1) = P7 
   OB(100) = P6.AND.377      *BUILD EXPECTED READ DATA
   OB(101) = P7.AND.377 
   GOTO 76                   *EXIT/RETURN 
* 
* ------------EXIT/RETURNS--------------
* 
76 B3 = 1                    *RESET ERROR FLAG(NO ERR)
77 EXIT                      *EXIT/RETURN TO CALLER 
   END 20 
COMPILE   *CRP98E - DATA GENERATOR FOR CRP11
   MODULE CRP98G,6000(200),LOCK 
***   CRP98G - PATTERN GENERATOR  MODES 0 , 2 
**
* 
*       BUILD MODE 0 AND 2 PATTERNS FOR SUBMODULES AS CALLED. 
*       SEE CRP98C FOR DESCRIPTION OF PSTART, PCNT , USERD. 
* 
* 
*       ENTRY B15 = MODE
*          P6,P7,P8 USER DATA FOR PATTERN 
*          IF DEFAULT IS NOT TO BE USED 
*     EXIT: 
*      B15 = ENTRY MODE IF NOT ERRORS 
*          =MODE +10 IF ERROR 
*      OB(PCNT) = NUMBER OF PATTERNS IN OB - 1. 
*      OB(USERD) = 0 IF DEFAULT PATTERN(S)
*                = 1 IF USER PATTERN
*       USES B1,B2, 
*            OB(PSTART) TO OB(PSTART+340) 
* 
* 
* --------------------------------------------------------------
0  FORMAT CRP98G INTERNAL ERROR MODE=*OCT, MODULE FLAG=*DEC 
* 
* -----------------DATA---------------------------- 
* 
   EQUATE PSTART=100 , PCNT = 77 , USERD = 76 
* 
* -----------------INITIALIZATION------------------ 
* 
20 B2 = PSTART
   OB(USERD) = 0             *NOT USER DATA 
   IF(B15.EQ.2)GOTO 30       *MODE 2 REQUESTED
   IF(B15.EQ.0)GOTO 22       *MODE 0 REQUESTED
   B15 = B15 + 10            *SET B15 TO ERROR MODE 
   GOTO 70                   *EXIT WITH ERROR IN B15
* 
* -----------------MODE 0-------------------------
* -----------1 WD 12 BIT PATTERN------------------
* 
22 IF(P6.EQ.0)GOTO 24        *NOT USER DATA 
   OB(B2) = P6               *SET USER DATA 
   OB(PCNT) = 1              *NUMBER OF 12 BIT PATTERNS 
   OB(USERD) = 1             *SET USER DATA GENERATED 
   GOTO 70                   *EXIT/RETURN 
* 
24 B1 = 0 
   OB( B2 ) = 7777           *ONES
   OB(B2+1) = 0000           *ZEROS 
   OB(B2+2) = 2525           *ONES/ZEROS
   OB(B2+3) = 5252           *ZEROS/ONES
   B2 = PSTART + 4
26 OB ( B2 ) = 0001.LS.B1    *MARCHING ONE
   OB(B2+14) = 7776.LS.B1    *MARCHING ZERO 
   B2 = B2 + 1
   GOTO 26 WHILE(B1+1.LE.13)  *LOOP FOR ALL PATTERNS
   OB(PCNT) = 34              *NUMBER OF 8-BIT PATTERNS 
   GOTO 70
* 
* -------------------MODE 2-----------------------
* ------------2 WD  8 BIT PATTERN-------------------
* 
30 PASS 
   B1 = P6.OR.P7                 *TEST FOR USER DATA
   IF(B1.EQ.0) GOTO 32           *NO USER DATA(USE DEFAULT) 
   OB( B2 ) = P6.AND.377         *USER DATA WD 1
   OB(B2+1) = P7.AND.377         *- WD 2
   OB(PCNT) = 1                  *1 2-WD PATTERNS 
   OB(USERD) = 1                 *SET USER DATA GENERATED 
   GOTO 70                       *END SUB/RETURN
* 
32 B1 = 0                        *LOOP CNTR 
   DUP 0377 TO OB( B2 ) FOR 2    *ONES PATTERN
   DUP 0000 TO OB(B2+2) FOR 2    *ZEROS PATTERN 
   DUP 0125 TO OB(B2+4) FOR 2    *ONES-ZEROS PATTERN
   DUP 0252 TO OB(B2+6) FOR 2    *ZEROS-ONES PATTERN
   B2 = PSTART + 10 
   DUP 0000 TO OB(B2) FOR 40     *BKGD FOR MARCHING 1 
   DUP 0377 TO OB(B2+40) FOR 40  *BKGD FOR MARCHING O 
34 OB(B2+1 ) = 0001B.LS.B1.AND.377
   OB(B2+20) = 0001B.LS.B1.AND.377
   OB(B2+41) = 7776B.LS.B1.AND.377
   OB(B2+60) = 7776B.LS.B1.AND.377
   B2 = B2 + 2                   *BUMP ADDRESS
   GOTO 34 WHILE(B1+1.LE.7)      *LOOP FOR ALL ADDRESSES
   OB(PCNT) = 44                 *NUMBER OF 2WD PATTERNS
   GOTO 70                       *EXIT/RETURN 
* 
* -----------------EXITS--------------------------
* 
70 PASS 
   OB(PCNT) = OB(PCNT)-1         *RESET PATTERN CNT TO CNT-1
   B1 = B0                       *SAVE EXITS FLAG 
   B0 = 0807D                    *SET MODULE EXITS FLAG 
   IF(B1.EQ.0251D)EXIT TO 25A    *RETURN TO 25A 
   IF(B1.EQ.0252D)EXIT TO 25B    *RETURN TO 25B 
   IF(B1.EQ.0253D)EXIT TO 25C    *RETURN TO 25C 
   IF(B1.EQ.0234D)EXIT TO 23D    *RETURN TO 23D 
   IF(B1.EQ.0233D)EXIT TO 23C    *RETURN TO 23C 
   IF(B1.EQ.0231D)EXIT TO 23A    *RETURN TO 23A 
   IF(B1.EQ.0211D)EXIT TO 21A    *RETURN TO 21A 
   IF(B1.EQ.0212D)EXIT TO 21B    *RETURN TO 21B 
   IF(B1.EQ.0888D)EXIT TO 81A 
* 
   B15 = B15 -10                 *RESET MODE
   MSG 0(B15,B1) TO DAYFILE,PRINT,DISPLAY 
   END 20 
COMPILE   *CRP98G - DATA GENERATOR FOR MODE 0-2(EXIT-TO)
   MODULE CRP98H,6000(200),LOCK 
***    CRP98H - BUILD MODE 1 PATTERNS FOR SUBMODULES
**
* 
*      BUILD MODE 1 PATTERNS IN 3 WORD LENGTHS FOR MODULES AS CALLED
* 
*      SEE CRP98C FOR DESCRIPTION OF PSTART , PCNT , USERD. 
* 
* 
* 
*       ENTRY B15 = MODE
*          P6,P7,P8,P9 USER DATA FOR PATTERN
*          IF DEFAULT IS NOT TO BE USED 
*           B0 = CALLING MODULE CODE NUM.(FOR RETURN) 
*     EXIT: 
*      B15 = ENTRY MODE IF NOT ERRORS 
*          =MODE +10 IF ERROR 
*      OB(PCNT) = NUMBER OF PATTERNS IN OB - 1. 
*      OB(USERD) = 0 IF DEFAULT PATTERN(S)
*                = 1 IF USER PATTERN
*            B0 = SET TO 98H RETURN CODE (0808D)
*       USES B1,B2, 
*            OB(PSTART) TO OB(PSTART+340) 
* 
* 
* 
* --------------------------------------------------- 
0  FORMAT CRP98H INTERNAL ERROR MODE=*OCT 
1  FORMAT CRP98H NO RETURN POSSIBLE MODULE FLAG = *DEC
* 
* -----------------DATA---------------------------- 
* 
   EQUATE PSTART=100 , PCNT = 77 , USERD = 76 
* 
* -----------------INITIALIZATION------------------ 
* 
20 B2 = PSTART
   OB(USERD) = 0             *NOT USER DATA (DEFAULT) 
   IF(B15.EQ.1)GOTO 30       *MODE 1 REQUESTED
   B15 = B15 + 10            *SET B15 TO ERROR MODE 
   GOTO 70                   *EXIT WITH ERROR SET IN B15
* 
* ---------------------MODE 1-------------------- 
* ----------3 WD 32-BIT PATTERNS----------------- 
* 
30 PASS 
   B1 = P6.OR.P7.OR.P8       *TEST FOR USER DATA
   IF(B1.EQ.0)GOTO 32        *NO USER DATA(USE DEFAULT) 
   OB( B2 ) = P6             *USER DATA WD 1
   OB(B2+1) = P7             *- WD2 
   OB(B2+2) = P8             *- WD 3
   OB(PCNT) = 1              *1 3-WD PATTERN
   OB(USERD) = 1             *SET USER DATA GENERATED 
   GOTO 70                   *EXIT/RETURN 
* 
32 B1 = 0                        *LOOP CNTR 
   DUP 7777 TO OB( B2 ) FOR 3    *ONES PATTERN
   DUP 0000 TO OB(B2+3) FOR 3    *ZEROS PATTERN 
   DUP 2525 TO OB(B2+6) FOR 3    *ONES/ZEROS PATTERN
   DUP 5252 TO OB(B2+11) FOR 3   *ZEROS/ONES PATTERN
   B2 = PSTART + 14 
   DUP 0000 TO OB( B2) FOR 154   *BKGD FOR MARCHING 1 
   DUP 7777 TO OB(270) FOR 154   *BKGD FOR MARCHING 0 
34 OB( B2+2 ) = 0001.LS.B1
   OB(B2+45 ) = 0001.LS.B1
   OB(B2+110) = 0001.LS.B1
   OB(B2+156) = 7776.LS.B1
   OB(B2+221) = 7776.LS.B1
   OB(B2+264) = 7776.LS.B1
   B2 = B2 + 3
   GOTO 34 WHILE(B1+1.LE.13)  *LOOP FOR ALL PATTERNS
   OB(PCNT) = 116             *NUMBER OF 3WD PATTERNS 
   GOTO 70                    *EXIT/RETURN
* 
* -----------------EXITS--------------------------
* 
70 PASS 
   OB(PCNT) = OB(PCNT)-1         *RESET PATTERN CNT TO CNT-1
   B1 = B0                       *SAVE EXITS FLAG 
   B0 = 0808D                    *SET MODULE EXITS FLAG 
   IF(B1.EQ.0251D)EXIT TO 25A    *RETURN TO 25A 
   IF(B1.EQ.0252D)EXIT TO 25B    *RETURN TO 25B 
   IF(B1.EQ.0253D)EXIT TO 25C    *RETURN TO 25C 
   IF(B1.EQ.0231D)EXIT TO 23A    *RETURN TO 23A 
   IF(B1.EQ.0232D)EXIT TO 23B    *RETURN TO 23B 
   IF(B1.EQ.0233D)EXIT TO 23C    *RETURN TO 23C 
   IF(B1.EQ.0234D)EXIT TO 23D    *RETURN TO 23D 
   IF(B1.EQ.0213D)EXIT TO 21C    *RETURN TO 21C 
   IF(B1.EQ.0888D)EXIT TO 82A 
* 
   B15 = B15 - 10                *RESET MODE
   MSG 0(B15) TO DAYFILE,PRINT,DISPLAY
   MSG 1 (B1) TO DAYFILE,PRINT,DISPLAY
   END 20 
COMPILE   *CRP98H - DATA GENERATOR MODE 1 (EXIT-TO) 
   MODULE,CRP98Q,6000(200),LOCK 
***   CRP98Q - ERROR PROCESSOR FOR CRP31 AND SUBMODULES 
**
* 
* 
*       POST ERROR MESSAGES FOR SUBMODULES OF CRP31 AND HALT. 
* 
* 
*       ENTRY - B1 = 7000  COMMAND ABORT PROCESSOR
*                  = 7700  ERROR HALT 
*               B0 = CHARACTER FOR RETURN 
*               EM = ERRROR MSG TO POST 
* 
* 
* 
* ----------------------------------------------------------------- 
0  FORMAT CRP31*A -  LOST PACKET TEST - *O
1  FORMAT CRP31*A/CRP98Q CALL ERROR NO RETURN B0=*OCT 
2  FORMAT DATA COMPARE ERROR IN LP CTL REG(LP1) 
3  FORMAT DATA COMPARE ERR RCR TO LP1 EXP=*3HH, ACT==*3HH 
4  FORMAT DATA COMPARE ERR RDR TO LP2 EXP=*H*HH, ACT=*H*HH
5  FORMAT DATA COMPARE ERROR IN LP DATA REG(LP2)
6  FORMAT CRP31*A  ERC=*DEC,LC=*DEC,GS=*OCT,ECD=*DEC,P=*OCT 
7  FORMAT LP2 OVERWRITTEN BY 2ND LOST PACKET
10 FORMAT LOST PKT BITS NOT RESET BY CLRLP FUNC 
11 FORMAT CRP31*A ABORT ON .RES. COMMAND AT LINE *OCT 
12 FORMAT CRP31*A ABORT ON .FUNC. COMMAND AT LINE *OCT
13 FORMAT CRP98Q INTERNAL ERROR B1 NOT SET (B1=*OCT)
15 FORMAT CRP31*A ABORT ON .FIN. COMMAND AT LINE *OCT 
16 FORMAT CRP31*A ABORT ON .FOUT. COMMAND AT LINE *OCT
17 FORMAT CRP31*A ABORT ON .STATUS. COMMAND AT LINE *OCT
20 FORMAT LOST PACKET GS BIT(LP) NOT RESET BY CLRCRP FUNC 
21 FORMAT MULTI-LOST PKT BIT(MLP) NOT RESET BY CLRCRP FUNC
22 FORMAT LOST PACKET GS BIT NOT SET BY RING FUNC=0010B 
23 FORMAT MULTI-LOST PACKET BIT NOT SET BY 2 LOST PACKETS 
24 FORMAT LOST PKT BITS NOT RESET BY DLPD FUNC
25 FORMAT LOST PKT BIT SET WITH DLPD SET IN DIAG.REG. 
26 FORMAT MULTI-LOST PKT BIT SET WITH DLPD SET IN DIAG.REG. 
27 FORMAT  ---------------------------------------------
* 
* ------------------DATA--------------------------------
* 
30 IF(B0.AND.77.NE.55)GOTO 74    *B0 NOT SET FOR RETURN 
   IF(B1.EQ.7000)GOTO 60         *ABORT MSG PROCESSOR 
   IF(B1.EQ.7700)GOTO 66         *POST SEPARATER AND HALT 
   MSG 13(B1) TO DISPLAY,PRINT   *ERROR ON B1 
   GOTO 77                       *END ERROR 
* 
* ----------------PROCESS ERROR MESSAGE------------------ 
* 
50 B2 = B0.RS.6              SET SUBMODULE CHAR 
   MSG 0(B2,B2) TO LINE 1           *POST TITLE LINE
   MSG 5(B11,B10,SB(0),EC,EA) TO LINE 2   *ERR/STATUS LINE
   MSG EM TO LINE 3 
   B1 = 4                    *NEXT LINE 
   GOTO 66
* 
* ----------------ABORT MSG PROCESSOR-------------------- 
* 
60 MSG 0(B2,B2) TO LINE 1 
   B12 = B12 + 10                *ADD BIAS
   MSG B12(B0,EA) TO LINE 2 
   MSG EM(EC) TO LINE 3 
   B1 = 4 
   IF(EC.EQ.320D)MSG 3(OB(400),IB(0))TO LINE B1 
   IF(EC.EQ.320D)B1 = B1 + 1     *BUMP LINE CNTR
   IF(EC.EQ.322D)MSG 4(OB(401),OB(401),IB(0)IB(1))TO LINE B1
   IF(EC.EQ.322D)B1 = B1 + 1    *BUMP LINE CNTR 
* 
66 IF(B1.EQ.7700)B1 = 4         *SET LINE NUMBER IF B1=7700 
   MSG 27 TO LINE B1
   PICTURE
   HALT 
   BLANK
   MSG 0(B2,B2) TO DISPLAY
* 
* ---------------EXIT / RETURN PORCESSOR------------------- 
* 
70 B1 = B0                        *HOLD SUBMODULE CHAR
   B0 = 0817D                     *EXIT-TO FLAG 
   IF(B0.EQ.0355)EXIT TO 31C      *RETURN TO 31C
   IF(B0.EQ.0455)EXIT TO 31D      *RETURN TO 31D
   IF(B0.EQ.0555)EXIT TO 31E      *RETURN TO 31E
* 
74 MSG 1(B13,B0) TO DISPLAY,PRINT,DAYFILE 
* 
77 END 30 
COMPILE   *CRP98Q - ERROR PROCESSOR FOR CRP31C,D,E
   MODULE CRP98V,6000(200),LOCK 
***   CRP98V - ERROR PROCESSOR FOR CRP23C,D,E 
**
* 
*       BUILD ERROR DISPLAY FOR CF/DF ERRORS FOR SUBMODULES CRP23C, 
*       CRP23D, CRP23E. 
* 
*       ENTRY - 
*              B0 = EXIT-TO FLAG FOR RETURN 
*              EM 
*              OB DATA AS DEFINED IN CRP23C,D,E./ 
* 
*       USE   - 
*           B1,B2,B4,B8,OB(477,500) 
* 
* 
* ----------------------------------------------------------- 
0  FORMAT CRP23*A - CF/DF MEMORY TEST-*D
3  FORMAT DATA ERR ERC=*DEC, LC=*DEC, DIF=*3H*3H*HH 
10 FORMAT ADDRESS   EXPECTED     ACTUAL    DIF. (HEX VALUES)
11 FORMAT    *3H     *H*H*H*H 
12 FORMAT                       *H*H*H*H   *H*H*H*H 
13 FORMAT  *3H        *H*H       *H*H      *H*H 
14 FORMAT - - - MORE DATA COMPARE ERRORS AVAILABLE - - -
15 FORMAT BASED ON THE MODULE NUMBER AND TYPE OF FAILURE. 
16 FORMAT THE FOLLOWING BOARD REPLACEMENT ORDER IS SUGGESTED
17 FORMAT  *D  CHANNEL INTERFACE BOARD  -  77964175 
20 FORMAT  *D  CRP CONTROL BOARD        -  77964125 
21 FORMAT  *D  RING CONTROL BOARD       -  77964075 
26 FORMAT CRP98V INTERNAL ERROR - B0=*OCT, B13=*DEC 
27 FORMAT ------------------------------------------------
* 
* -----------------DATA------------------------ 
* 
* 
* -----------------INITIALIZATION-------------- 
* 
30 IF(B0.NE.0233D)GOTO 31        *NOT 23C 
   OB(477) = 5503                *MODULE CHAR 
   OB(500) = 0003                *- 
31 IF(B0.NE.0234D)GOTO 32        *NOT 23D 
   OB(477) = 5504                *MODULE CHAR 
   OB(500) = 0004                *- 
32 IF(B0.NE.0235D)GOTO 34        *NOT 23E 
   OB(477) = 5505                *MODULE CHAR 
   OB(500) = 0005 
34 MSG 0(OB(477),OB(500)) TO LINE 1 
   MSG 10 TO LINE 2 
   B1 = 100                      *START OF BLOCKS 
   B8 = 0 
   B4 = 0 
36 B2 = 3                        *LINE CNTR 
   IF(B0.EQ.0234D)GOTO 44        *IF 23D
   IF(B0.EQ.0235D)GOTO 44        *IF 23E
* 
40 IB(B1+11) = IB(B1+1).XOR.IB(B1+5)  *FORM LOG DIFF
   IB(B1+12) = IB(B1+2).XOR.IB(B1+6)  *-
   IB(B1+13) = IB(B1+3).XOR.IB(B1+7)  *-
   IB(B1+14) = IB(B1+4).XOR.IB(B1+10)  *- 
* 
   MSG 11, 5 WORDS FROM IB(B1) TO LINE B2  *ADD/OUTPUT
   MSG 12, 8 WORDS FROM IB(B1+5) TO LINE B2+1 
   B2 = B2 + 2
   B1 = B1 + 15                  *BUMP BLOCK ADDRESS
   B8 = B8 + 1                   *CNT ERRORS OUTPUT 
   B4 = B4 + 1                   *BUMP ERROR CNT
   IF(B8.LE.10D)GOTO 40          *FILL PAGE 
   IF(B4.LT.B5)MSG 14 TO LINE B2+1
   GOTO 50
* 
* 
44 MSG 13, 7 WORDS FROM IB(B1) TO LINE B2 
   B2 = B2 + 1                   BUMP LINE CNT
   B1 = B1 + 7                   *BUMP BLOCK ADDRESS
   B8 = B8 + 1                   *CNT ERRORS
   B4 = B4 + 1                   *CNT ERRORS
   IF(B8.LE.16D)GOTO 34 
   IF(B4.LT.B5) MSG 14 TO LINE B2+1 
* 
50 MSG 27 TO LINE B2+2
   MSG 15 TO LINE B2+3
   MSG 16 TO LINE B2+4
   B8 = 1 
   MSG 21(B8) TO LINE B2+5
   B8 = 2 
   MSG 20(B8) TO LINE B2+6
   PICTURE
   HALT 
   BLANK
   B8 = 0                        *CLEAR DISPLAY ERRORS
   IF(B4.LT.B5) GOTO 36          *MORE DATA 
* 
* -----------------EXIT/RETURN--------------------- 
* 
   B1 = B0
   B0 = 0822D                *SET EXIT-TO FLAG
   MSG 0(OB(477),OB(500))TO DISPLAY 
* 
   IF(B1.EQ.0233D) EXIT TO 23C   *RETURN TO 23C 
   IF(B1.EQ.0234D) EXIT TO 23D   *RETURN TO 23D 
   IF(B1.EQ.0235D) EXIT TO 23E   *RETURN TO 23E 
* 
* ------------------ERROR ENDS----------------------
* 
   ERROR 0/0                     *SET EA FOR MSG 26 
   MSG 26(B0,EA,B13)TO DISPLAY,PRINT,DAYFILE
   END 30 
COMPILE   *CRP98V - ERROR PROCESSOR FOR CRP23C,D
   MODULE CRP98X,6000(200),LOCK 
***   CRP98X - ERROR PROCESSOR FOR CRP25A,B.
**
* 
*        BUILD ERROR DISPLAY FOR CRP25A AND CRP25B
* 
*        ENTRY -
*               B0 = EXIT-TO RETURN 
*               OB AND IB SET WITH DATA AS DEFINED IN CRP25A,B. 
* 
* 
* 
* ------------------------------------------------------------- 
0  FORMAT CRP25*A - REQUEST STACK TEST-*D (RQSTK) 
2  FORMAT DATA COMPARE ERROR IN RQSTK IN/OUT REGISTER 
3  FORMAT DATA COMPARE ERROR IN RQSTK DATA STACK
10 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, DIF=*H*H*H*HH
11 FORMAT    EXPECTED         ACTUAL
12 FORMAT    *H*H*H*HH       *H*H*H*HH
13 FORMAT DATA ERR. ERC=*DEC, LC=*DEC, RQSTK.DIF.=*H*HH 
14 FORMAT    ADRS     EXP.     ACT.     DIF.  (HEX VALUES)
15 FORMAT     *H      *H*H     *H*H     *H*H
16 FORMAT THE FOLLOWING BOARD REPLACEMENT ORDER IS SUGGESTED
17 FORMAT  *D  CHANNEL INTERFACE BOARD  -  77964175 
20 FORMAT  *D  CRP CONTROL BOARD        -  77964125 
21 FORMAT  *D  RING CONTROL BOARD       -  77964075 
22 FORMAT BASED ON THE MODULE NUMBER AND TYPE OF FAILURE. 
26 FORMAT CRP98X INTERNAL ERR-B0=*OCT, P=*OCT, B13=*DEC 
27 FORMAT ----------------------------------------------- 
* 
* --------------INITIALIZATION------------------- 
* 
30 PASS 
   IF(B0.EQ.0251D)GOTO 40     *CALLED BY 25A
   IF(B0.EQ.0252D)GOTO 44     *CALLED BY 25B
   GOTO 77
* 
* -----------------PROCESS COMPARE ERROR FROM 25A---- 
40 OB(477) = 0155                        *SET 'A' 
   OB(500) = 1                           *SET TEST NUMBER 
   MSG 0(OB(477),OB(500)) TO LINE 1      *TITLE LINE
   MSG 2 TO LINE 2                       *LOCATION
   MSG 11 TO LINE 3 
   COPY IB(0) TO OB(4) FOR 4    *MOVE DATA FOR MSG
   MSG 12, 8 WORDS FROM OB(0) TO LINE 4 
   MSG 10, 6 WORDS FROM OB(50) TO LINE 5
   MSG 27 TO LINE 6 
   GOTO 70
* 
* -----------------PROCESS ERROR FROM 25B------------ 
44 OB(477) = 0255                        *SET 'B' 
   OB(500) = 2                           *SET TEST NUMBER 
   MSG 0(OB(477),OB(500)) TO LINE 1      *TITLE LINE
   MSG 3 TO LINE 2                       *LOCATION
   B1 = 0 
   B2 = 0 
   MSG 14 TO LINE 3        *HEADER 1
46 OB(200) = B1 
   COPY OB(B2) TO OB(201) FOR 2 
   COPY IB(B2) TO OB(203) FOR 2 
   COPY OB(B2+40) TO OB(205) FOR 2
   MSG 15, 7 WORDS FROM OB(200) TO LINE B1+5
   B2 = B2 + 2
   GOTO 46 WHILE(B1+1.LT.16D)    *OUTPUT ALL DATA 
   B1 = B1 + 5                   *ADD BIAS TO LINE
   MSG 13(B11,B10,OB(501),OB(502))TO LINE B1
   MSG 27 TO LINE B1+1
   GOTO 70                        *EXIT 
* 
* ------------------RETURNS/EXITS-------------------- 
* 
70 MSG 22 TO LINE B1+3
   MSG 16 TO LINE B1+4
   B8 = 1 
   MSG 21(B8) TO LINE B1+5
   B8 = 2 
   MSG 20(B8) TO LINE B1+6
* 
   PICTURE
   HALT 
   BLANK
   B0 = 0824D                *SET EXIT-TO FLAG
   MSG 0(OB(477),OB(500))TO DISPLAY 
* 
74 IF(OB(500).EQ.1)EXIT TO 25A   *RETURN TO 25A(EXITED TO)
   IF(OB(500).EQ.2)EXIT TO 25B   *RETURN TO 25B(EXITED TO)
* 
77 ERROR 0/0                     *SET EA FOR MSG 26 
   MSG 26(B0,EA,B13)TO DISPLAY,PRINT,DAYFILE
   END 30 
COMPILE   *CRP98X - ERROR PROCESSOR FOR CRP25A,B
   MODULE CRP98Y,6000(200),LOCK 
***   CRP98Y - ERROR PROCESSOR FOR CRP23A,B 
**
* 
* 
*       BUILD ERROR DISPLAYS FOR CRP23A,B . 
* 
*       ENTRY - B0 = EXIT-TO RETURN FLAG
*               OB AND IB AS DEFINED IN CRP23A,B. 
* 
* 
* 
* --------------------------------------------------------
0  FORMAT CRP23*A - CF/DF REGISTER/MEMORY TEST-*D 
3  FORMAT DATA COMPARE ERROR IN CF/DF INPUT REGISTER
4  FORMAT DATA COMPARE ERROR IN CF/DF OUTPUT REGISTER 
6  FORMAT DATA ERR. ERC=*DEC, LC=*DEC, DIF=*3H*3HH
7  FORMAT DATA ERR. ERC=*DEC, LC=*DEC, DIF=*3H*3H*3HH 
11 FORMAT    EXPECTED         ACTUAL
17 FORMAT   *3H*3H*3HH      *3H*3H*3HH
20 FORMAT    *3H*3HH          *3H*3HH 
21 FORMAT BASED ON THE MODULE NUMBER AND TYPE OF FAILURE. 
22 FORMAT THE FOLLOWING BOARD REPLACEMENT ORDER IS SUGGESTED
23 FORMAT  *D  CHANNEL INTERFACE BOARD  -  77964175 
24 FORMAT  *D  CRP CONTROL BOARD        -  77964125 
25 FORMAT  *D  RING CONTROL BOARD       -  77964075 
26 FORMAT CRP98Y INTERNAL ERR-B0=*OCT, P=*OCT, B13=*DEC 
27 FORMAT ----------------------------------------------- 
* 
* --------------INITIALIZATION------------------- 
* 
30 PASS 
   IF(B0.EQ.0231D)GOTO 40     *CALLED BY 23A
   IF(B0.EQ.0232D)GOTO 50     *CALLED BY 23B
   GOTO 77
* 
* ----------------PROCESS ERROR FROM 23A----------- 
40 OB(477) = 0155            *SET 'A' FOR 23A 
   OB(500) = 1               *SET TEST NUMBER 
   MSG 0(OB(477),OB(500)) TO LINE 1  *BUILD ERR DISPLAY 
   MSG 4 TO LINE 2           *- 
   MSG 11 TO LINE 3 
   IF(B8.EQ.2)GOTO 41        *MOD 23 COND.2 
   MSG 20(OB(10),OB(11),IB(0),IB(1))TO LINE 4 
   MSG 6(B11,B10,OB(20),OB(21)) TO LINE 5 
   GOTO 70                   *EXIT/END DISPLAY
41 COPY IB(0) TO OB(23) FOR 3 
   MSG 17, 6 WORDS FROM OB(20) TO LINE 4
   MSG 7(B11,B10,OB(20),OB(21),OB(22))TO LINE 5 
42 GOTO 70
* 
* ----------------PROCESS ERROR FROM 23B----------- 
50 OB(477) = 0255            *SET 'B' FOR 23B 
   OB(500) = 2               *SET TEST NUMBER 
   MSG 0(OB(477),OB(500))TO LINE 1  *BUILD ERR DISPLAY
   MSG 3 TO LINE 2           *- 
   MSG 11 TO LINE 3 
   COPY IB(0) TO OB(13) FOR 3 
   MSG 17, 6 WORDS FROM OB(10) TO LINE 4
   MSG 7(B11,B10,OB(20),OB(21),OB(22))TO LINE 5 
   GOTO 70
* 
* ------------------RETURNS/EXITS-------------------- 
* 
70 MSG 27 TO LINE 6 
   MSG 21 TO LINE 10
   MSG 22 TO LINE 11
   B2 = 1 
   MSG 25(B2) TO LINE 12
   B2 = 2 
   MSG 24(B2) TO LINE 13
* 
   PICTURE                   *PROCESS DISPLAY AND HALT
   HALT 
   BLANK
   B0 = 0825D                *SET EXIT-TO FLAG
   MSG 0(OB(477),OB(500))TO DISPLAY 
* 
74 IF(OB(500).EQ.1)EXIT TO 23A   *RETURN TO 23A(EXITED TO)
   IF(OB(500).EQ.2)EXIT TO 23B   *RETURN TO 23B(EXITED TO)
77 ERROR 0/0                     *SET EA FOR MSG 26 
   MSG 26(B0,EA,B13)TO DISPLAY,PRINT,DAYFILE
   END 30 
COMPILE   *CRP98Y - ERROR PROCESSOR 
   MODULE CRP99,6000(200),LOCK
***  CRP99 - TABLE OF CONTENTS AND PARAMETERS 
**
* 
/------------------TABLE OF CONTENTS--------------------------
/ 
/   CRP99 - TABLE OF CONTENTS AND PARAMETERS
/   CRP99A - CONFIDENCE TEST MODULES - 01-XX
/ 
/------------------RESTRICTIONS AND LIMITATIONS---------------
/ 
/ 
/------------------PARAMETER DESCRIPTION----------------------
/ 
/ 
/   4.3.4 PARAMETERS
/ 
/     EXECUTIVE SWITCHS 
/ 
/         ALL PARAMETERS ARE IN OCTAL OR HEX. 
/         (THE CRP AND AFP ARE HEX MACHINES, HOWEVER THE
/          MAY USE THE PARAMETER REGISTERS AS MALET ALLOWS) 
/ 
/         P0= ADDRESS OF CRP UNDER TEST 
/ 
/         P1= ADDRESS OF NON-EXISTANT HPP (USED FOR LOST
/             PACKET TESTS).
/ 
/         P2= ADDRESS OF FUNCTIONAL HPP (USED FOR HIGH SPEED
/             RING TEST AND RING STOP TEST).
/ 
/         P3= RING STOP AND EXTERNAL RESET ADDRESS OF HPP.
/             (PHYSICAL HPP NO. USED ONLY IN MODULE CRP53)
/ 
/         P4= PAUSE VALUE (MICRO-SECONDS) 
/ 
/         P5= SUBMODULE SELECTOR
/ 
/         P6= DATA WORD 1  (MODES 0, 1, AND 2)
/ 
/         P7= DATA WORD 2  (MODES 1 AND 2)
/ 
/         P8= DATA WORD 3  (MODE 1) OR TIMEOUT COMMAND
/             FOR CRP01,03,05.
/ 
/         P9= DATA WORD 4  (MODE 1) , WORD COUNT OR OTHER 
/             CONDITIONS
/ 
/    DIAGNOSTIC SWITCHS 
/ 
/         S1= PPU FULL SCREEN DISPLAY 
/ 
/ 
/         PARAMETER REGISTER USAGE
/ 
/         THE CONFIDENCE TEST MODE DOES NOT MAKE USE OF THE 
/         PARAMETER REGISTERS WITH THE EXCEPTION OF P0 AND
/         P1.  IN ORDER FOR THE CONFIDENCE TEST TO EXECUTE
/         PROPERLY PARAMETER WORDS P2-P9 MUST BE ZERO.
/         PARAMETER WORD P0 CONTAINS THE ADDRESS OF THE 
/         CYBER RING PORT UNDER TEST. 
/         P1 CONTAINS THE ADDRESS OF A NON-EXISTENT HPP 
/         EQUIPMENT FOR USE IN LOST PACKET TESTS. 
/ 
/         THE CHECKOUT/REPAIR MODE MAKES EXTENSIVE USE OF 
/         THE PARAMETER REGISTERS.  BELOW IS A CROSS
/         REFERENCE TABLE SHOWING THE MODULES AND THE 
/         PARAMETER REGISTERS THAT THEY USE.
/ 
/ 
/       MODULE    P0  P1  P2  P3  P4  P5  P6  P7  P8  P9  S1
/       ------    --  --  --  --  --  --  --  --  --  --  --
/ 
/       CRP01                     XX              XX
/       CRP03                     XX      XX  XX  XX  XX
/       CRP05                     XX              XX  XX
/       CRP07                     XX
/       CRP09                     XX
/       CRP11                     XX      XX  XX
/       CRP13                     XX      XX  XX
/       CRP15                     XX      XX  XX
/       CRP17                     XX  XX  XX  XX
/       CRP19                     XX      XX  XX
/       CRP21                     XX  XX  XX  XX  XX
/       CRP23                     XX  XX  XX  XX  XX
/       CRP25                     XX  XX  XX  XX
/       CRP27                     XX  XX  XX  XX
/       CRP29     XX              XX  XX  XX  XX
/       CRP31         XX          XX  XX  XX  XX
/       CRP33     XX              XX  XX  XX  XX
/       CRP35     XX              XX  XX  XX  XX
/       CRP37     XX              XX  XX  XX  XX
/       CRP39     XX              XX  XX  XX  XX
/       CRP41                     XX
/       CRP43     XX              XX      XX  XX
/       CRP45                     XX
/       CRP47                     XX  XX
/       CRP51     XX  XX  XX      XX  XX
/       CRP53     XX          XX  XX
/ 
/       CRP64             XX  XX  XX  XX  XX  XX      XX  XX
/       CRP65             XX  XX      XX  XX  XX  XX  XX
/       CRP66                         XX              XX
/ 
/       CRP84                         XX
/ 
/ 
/ 
/ 
1  END 1
COMPILE,SOURCE   *CRP99 - PARAMETERS
   MODULE CRP99A,6000(200),LOCK 
***  CRP99A - LIST OF MODULES 
**
* 
/ 
/------------------MODULE DISCRIPTIONS------------------------
/ 
/  MODULE      MODULE                               RUN 
/  NUMBER      DESCRIPTION                          TIME
/  ------      -----------                          ----
/ 
/  00   PARAMETER VALIDATION                         01 SEC 
/  01   CHANNEL CONNECT/COMMUNICATIONS CHECK         01 SEC 
/  03   CHANNEL CONNECT/WRITE TEST (GSW MODE 0/2)    01 SEC 
/  05   CHANNEL CONNECT/READ TEST (GSW MODE 0/2)     01 SEC 
/  07   DEADMAN TIMER FUNCTIONAL TEST                09 SEC 
/  09   FUNCTION DECODE/REGISTER SELECT TEST(16-BIT) 02 SEC 
/  10   FUNCTION DECODE/REGISTER SELECT TEST(32-BIT) 01 SEC 
/  11   SHIFT (A/D) LOGIC TEST                       05 SEC 
/ 
/  13   GENERAL STATUS WORD TEST(GSW)                04 SEC 
/  15   DIAGNOSTIC REGISTER TEST(DIAG)               04 SEC 
/  17   RING STOP REGISTERS 1+2 TEST(RSR1/2)         06 SEC 
/  19   EXTERNAL RESET REGISTER TEST(EXRESET)        04 SEC 
/  21   RING CONTROL/RING DATA REGISTER TEST - CONTROL -
/       21A - RCR/RDR MODE 0(12/52+13/53) P5=0/1     06 SEC 
/       21B - RCR/RDR MODE 2(12/52+13/53) P5=0/2     07 SEC 
/       21C - RCR/RDR MODE 1(73/32)       P5=0/3     08 SEC 
/  23   CF/DF REGISTER/MEMORY TEST - CONTROL -
/       23A - CF/DF TEST FUNC (46/06/26)  P5=0/1     23 SEC 
/       23B - CF/DF TEST FUNC (47/07)     P5=0/2     13 SEC 
/       23C - CF/DF TEST FUNC (47/26)     P5=0/3   1:20 MIN 
/       23D - CF/DF TEST FUNC (47/06)     P5=0/4   1:20 MIN 
/       23E - CF/DF ADDRESSING (47/06)    P5=0/5     15 SEC 
/  25   REQUEST STACK TEST(RQSTK) - CONTROL - 
/       25A - RQSTK IN/OUT REG            P5=0/1     05 SEC 
/       25B - RQSTK STACK TEST            P5=0/2     22 SEC 
/       25C - RQSTK RANDOM DATA           P5=0/3     08 SEC 
/       25D - RQSTK ADDRESSING TEST       P5=0/4     03 SEC 
/  27   LOST PACKET REGISTER 1+2 TEST (LP1/2)        07 SEC 
/ 
/  29   END-FLAG TEST - 1                 P5=0/1     01 SEC 
/  29A  END-FLAG TEST - 2                 P5=0/2     01 SEC 
/  31   LOST PACKET TEST -  CONTROL - 
/       31A - LP-1 SET BITS FROM RING     P5=0/1     01 SEC 
/       31B - LP-2 CLEAR BITS BY DLPD     P5=0/2     01 SEC 
/       31C - LP-3 MULTI LP BITS          P5=0/3     01 SEC 
/       31D - LP-4                        P5=0/4     01 SEC 
/       31E - LP-5 CHECK BITS W/DLPD SET  P5=0/5     01 SEC 
/  33   RQSTK READY TEST - 1              P5=0/1     01 SEC 
/  33A  RQSTK READY TEST - 2              P5=0/2     01 SEC 
/  35   DATA FIFO READY TEST - 1          P5=0/1     01 SEC 
/  35A  DATA FIFO READY TEST - 2          P5=0/2     01 SEC 
/  37   FIFO FULL RING STOP TEST - CONTROL
/       37A - FIFO FULL STOP - 1          P5=0/1     23 SEC 
/       37B - FIFO FULL STOP - 2          P5=0/2     16 SEC 
/  39   RQSTK FULL RING STOP TEST - CONTROL 
/       39A - RQSTK FULL STOP - 1         P5=0/1     02 SEC 
/       39B - RQSTK FULL STOP - 2         P5=0/2     01 SEC 
/       39C - RQSTK FULL STOP - 3         P5=0/3     02 SEC 
/  41   DMT FUNCTIONAL TEST                          28 SEC 
/  43   RING STOP 1 / RING DATA REGISTER FULL TEST   01 SEC 
/  45   ALL RING DATA TO FIFO TEST                   16 SEC 
/  47   DISABLE AUTO DISCONNECT TEST                 01 SEC 
/ 
/  51   HIGH SPEED RING TEST                        3-5 MIN 
/       51A - DOWNLOAD HPP/START HPP      P5=0/1,2,3
/           51D - DOWNLOAD HPP PROGRAM
/       51B - READ RQSTK AND LP           P5=0/4,5
/           51E - READ RQSTK
/           51F - READ LP 
/       51C - READ DATA FIFO              P5=0/6
/           51G - READ FIFO 
/  53   HPP RING STOP TEST                           XX SEC 
/ 
/  64   REPAIR MODULE - 1 (W/R ANY REG-ANY MODE-ANY PATT) 
/  65   REPAIR MODULE - 2 (DF FIFO) 
/  66   REPAIR MODULE - 3 (RQSTK) 
/ 
/ 
/  84   UTILITY MODULE - 1 PRINT INPUT OR OUTPUT BUFFER 
/              CONTROLLED BY P5 
/ 
/ 
/ 
1  END 1
COMPILE,SOURCE   *CRP99A - LIST OF MODULES
