*DECK,RT3 
***  RT3 - 6673/6674 MULTIPLEXER TEST 
***  1.0 IDENTIFICATION 
**
*    1.1 PROGRAM NAME 
* 
*        RT3 - 6673/6674 MULTIPLEXER TEST 
* 
*    1.2 AUTHORS
* 
*        R.J. NETH
*        B.C. MILLER
*        DATE - SEPTEMBER 1, 1980 
* 
*    1.4 COPYRIGHT
* 
*        COPYRIGHT CONTROL DATA CORPORATION 1980
* 
***  2.0 INTRODUCTION 
**
*    2.1 OVERVIEW 
* 
*        RT3 IS A TEST DESIGNED TO EXERCISE THE FULL CAPABILITIES 
*        OF EACH DSC ASSOCIATED WITH A 6673/6674. INITIAL STATUS AND
*        -MODE- FUNCTIONS ARE TESTED FIRST BEFORE PROCEEDING TO MORE
*        COMPLICATED DATA TRANSFERS. THE ONLY REQUIREMENTS PRIOR TO 
*        INITIATING THE TEST ARE AN I/O CHANNEL AND PP, AND DSC 
*        SIMULATOR LOOPBACK CABLES HOOKED UP FOR EACH DSC TO BE TESTED. 
* 
*    2.2 CHARACTERISTICS
* 
*        1. PROGRAM NAME . . . . . . . . . . . . . . . . . RT3
*        2. TEST/DIAG/UTILITY/SYSTEM . . . . . . . . . . .TEST
*        3. VIRTUAL CODE/MICROCODE/PP CODE/OTHER . . . . MALET
*        4. RUN TIME (DEFAULT) . . . . . . . . 1 MIN., 00 SEC.
*        5. LEVEL OF ISOLATION . . . . . . . . . . . DETECTION
*        6. ON-LINE/OFF-LINE/BOTH. . . . . . . . . . . . .BOTH
*        7. ON-LINE SYSTEM . . . . . . . . . . . . NOS, NOS/BE
*        8. OFF-LINE SYSTEM. . . . . . . . . . . . . . . .CMSE
*        9. SOURCE CODE MAINTAINENCE . . . . . . . . . .UPDATE
* 
*    2.3 APPLICABLE DOCUMENTS 
* 
*        CUSTOMER ENGINEERING MANUAL - PUB. NO. 60201500
*        HARDWARE MAINTENANCE MANUAL - PUB. NO. 60205400
*        REFERENCE MANUAL - PUB. NO. 60334500 
* 
*    2.4 REQUIREMENTS/RESTRICTIONS
* 
*        EACH DSC TO BE TESTED MUST BE CABLED TO A SIMULATOR, AND THERE 
*        MUST BE A CHANNEL/PP CONNECTED TO THE MUX. RT3 IS DESIGNED TO
*        TEST TWO (2) DSC-S IN LOOPBACK MODE. THE DEVICE MUST EITHER BE 
*        TURNED OFF IN THE EST OR NOT DEFINED IN THE EST. ALSO, ACCESS
*        LEVEL (AL) 20 OR GREATER IS REQUIRED.
* 
*                                -NOTE- 
*        THE SIMULATOR CLOCK IN EACH DSC TO BE RUN MAY HAVE TO BE 
*        ADJUSTED SO FALSE ERRORS DO NOT OCCUR. 
* 
***  3.0 DESIGN OVERVIEW
**
*    3.1 MODULES OVERVIEW 
* 
*        A LIST OF ALL AVAILABLE MODULES FOLLOWS: 
*        RT301 - STATUS TEST
*        RT302 - LOOPBACK INTERRUPT TEST
*        RT303 - LOOPBACK DATA PATTERNS 
*        RT304 - LOOPBACK RANDOM PATTERNS 
*        RT305 - LOOPBACK RANDOM BLOCK LENGTHS
*        RT306 - CYCLIC CODE CHECK
*        RT320 - FIXED DATA PATTERN 
* 
*        NOTE THAT THE CONFIDENCE TEST CONSISTS OF MODULES 01 
*        THROUGH 06. MODULE 20 HAS TO BE CALLED SEPARATELY IN 
*        ORDER TO EXECUTE IT. 
* 
*    3.2 EXECUTION HIERARCHY
* 
*        RT301 VERIFYS PROPER EXECUTION OF THE CLEAR, TRANSMIT, AND 
*        RECEIVE FUNCTIONS. RT302 VERIFYS THE STATUS ASSOCIATED WITH
*        THE SYNC AND INTERRUPT WORDS. IF THOSE MODULES EXECUTE 
*        PROPERLY, WE ARE READY TO PROCEED WITH DATA TRANSFERS. 
*        RT303, RT304, AND RT305 PROVIDE INCREASINGLY DIFFICULT DATA
*        TRANSFERS TO THE MUX. RT306 VERIFYS CYCLIC CODE OPERATION; 
*        RT320 PROVIDES THE CAPABILITY (VIA THE P4 PARAMETER) OF
*        SELECTING A DATA PATTERN TO TRANSFER.
* 
***  4.0 PARAMETERS 
**
*    4.1 PARAMETER REGISTER DEFINITIONS 
* 
*        P0 = TRANSMITTING DSC
*        P1 = RECEIVING DSC 
*        P2 = NUMBER OF DSC-S TO TEST 
*        P3 = XXX1; PROVIDE CYCLIC CODE SIMULATION FOR MODULES 03/04/05 
*        P4 = DATA PATTERN FOR MODULE 20
* 
*    4.2 PARAMETER REGISTER USAGE 
* 
*        BELOW IS A CROSS-REFERENCE OF MODULES AND THE PARAMETER
*        REGISTERS THEY REFERENCE:  
* 
*           MODULE      P0   P1   P2   P3   P4
* 
*           RT301                 X 
*           RT302       X    X
*           RT303       X    X         X
*           RT304       X    X         X
*           RT305       X    X         X
*           RT306       X    X
*           RT320       X    X              X 
* 
***  5.0 USAGE
**
*    5.1 CONFIDENCE TESTING 
* 
*        RT3 HAS BEEN DESIGNED FOR EASY USE AS A CONFIDENCE TEST. 
*        MINIMUM PARAMETER INPUT IS REQUIRED. HOWEVER, THE TEST 
*        CANNOT BE RUN CONCURRENT WITH CUSTOMER USE OF THE MUX. 
*        SEE BLOCK 2.4 REQUIREMENTS/RESTRICTIONS. 
* 
***  6.0 MESSAGES 
**
*    6.1 NORMAL MESSAGES
* 
*        THE FOLLOWING MESSAGE IS PRINTED AND DISPLAYED DURING THE
*        NORMAL COURSE OF EXECUTING RT3:  
* 
*        RT3NN XXX
*        THIS INDICATES THAT MODULE NN IS NOW RUNNING. XXX IS A 
*        DESCRIPTION OF MODULE NN.
* 
*    6.2 ERROR DISPLAY FORMAT 
* 
*        THE FOLLOWING DISPLAY FORMAT IS USED BY RT3 TO REPORT
*        ERRORS TO THE USER:  
* 
*        ERROR FROM MODULE MMMM ERROR COUNT = EEEED 
*                    REGISTER CONTENTS
*          B0   B1   B2   B3   B4   B5   B6   B7
*         XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 
*          B8   BA   LF   WT   WC   EA   EC   EM
*         XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 
*          P0   P1   P2   P3   P4   P5   P6   P7
*         XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 
*                        MUX STATUS 
*               DSC0 DSC1 DSC2 DSC3 STATUS-ALL
*               SSSS SSSS SSSS SSSS   SSSS
*                   LAST FUNCTION = FFFF
*        EC - ZZZZ
*        AAAA 
* 
* 
*        MMMM = MODULE NUMBER IN EXECUTION WHEN ERROR OCCURED 
*        EEEE = NUMBER OF ERRORS THAT OCCURED IN MODULE MMMM
*               (D = DECIMAL) 
*        XXXX = REGISTER CONTENTS AT TIME OF FAILURE
*        -NOTE- FOR A DESCRIPTION OF THE VARIOUS REGISTERS AND
*               WHAT THE CONTENTS MEAN, REFER TO THE SPECIFIC 
*               MODULE. 
*        SSSS = LAST TAKEN MUX STATUS 
*        FFFF = FUNCTION IN EXECUTION AT TIME OF FAILURE
*        ZZZZ = ERROR CODE NUMBER AND BRIEF DESCRIPTION 
*               (EC = ERROR CODE) 
*        AAAA = ADDITIONAL INFORMATION ABOUT ABOVE ERROR CODE 
* 
*    6.3 ERROR MESSAGES 
* 
*        ERROR CODE AND MESSAGE:  
* 
*        EC - 01 ABORT ON RESERVE 
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                RESERVE THE I/O CHANNEL
* 
*        EC - 02 ABORT ON FUNCTION
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                EXECUTE A FUNCTION 
* 
*        EC - 03 ABORT ON INPUT STATUS-ALL
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                INPUT STATUS-ALL FROM THE MUX
* 
*        EC - 05 ABORT ON INPUT DSC STATUS
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                INPUT INDIVIDUAL DSC STATUS FROM THE MUX 
* 
*        EC - 13 ABORT ON OUTPUT INTERRUPT WORD 
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                OUTPUT THE INTERRUPT WORD TO THE MUX 
* 
*        EC - 21 ABORT ON OUTPUT OF DATA
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                OUTPUT DATA TO THE MUX 
* 
*        EC - 26 ABORT ON INPUT OF DATA 
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                INPUT DATA FROM THE MUX
* 
*        EC - 30 ABORT ON .FOUT. COMMAND
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                EXECUTE .FOUT. (FUNCTION AND OUTPUT OF DATA) 
* 
*        EC - 31 ABORT ON .FIN. COMMAND 
*                MALET DETECTED A PROBLEM WHEN ATTEMPTING TO
*                EXECUTE .FIN. (FUNCTION AND INPUT OF DATA) 
* 
*        -NOTE- THE PRODUCT OVERLAY ERROR MESSAGE WILL ALSO BE
*               PRINTED OUT AS PART OF THE ABOVE ERROR CODES
* 
*        EC - 04 STATUS-ALL ERROR EXP=0000 ACT=*OCT 
* 
*        EC - 06 DSC*OCT STATUS ERROR EXP=0000 ACT=*OCT 
* 
*        EC - 07 STATUS-ALL ERROR EXP=*OCT ACT=*OCT 
* 
*        EC - 10 DSC*OCT STATUS ERROR EXP=4006 ACT=*OCT 
* 
*        EC - 11 DSC*OCT STATUS ERROR EXP=0002 ACT=*OCT 
* 
*        EC - 12 DSC*OCT HUNG BUSY
* 
*        EC - 14 DSC*OCT SYNC WORD NOT ACKNOWLEDGED SET 
* 
*        EC - 15 DSC*OCT INTERRUPT RECEIVED NOT SET 
* 
*        EC - 16 DSC*OCT INTERRUPT RECEIVED FAILED TO CLEAR 
* 
*        EC - 17 DSC*OCT EQUIP FAILURE ON XMIT SEE STATUS 
* 
*        EC - 22 DSC*OCT STATUS INDICATES CYCLIC CODE ERROR 
* 
*        EC - 23 DATA COMP ERR ACT=*OCT EXP=*OCT WORD=*OCT
* 
*        EC - 24 DSC*OCT EQUIP FAILURE ON RECV SEE STATUS 
* 
*        EC - 27 CYCLIC CODE MISCOMPARE ACT=*OCT EXP=*OCT 
* 
*    6.4 DAYFILE MESSAGES 
* 
*        RT3NN - ERRORS IN MODULE = XXXX
*        THIS INDICATES THE NUMBER OF ERRORS IN MODULE NN 
*        SINCE THE LAST RUN DIRECTIVE. XXXX = DECIMAL COUNT.
* 
***  7.0 GLOSSARY 
**
*    7.1 DEFINITION OF TERMS
* 
*    7.2 ABBREVIATIONS
* 
*        B   = BINARY 
*        BA  = BEGINNING ADDRESS
*        D   = DECIMAL
*        DSC = DATA SET CONTROLLER
*        EA  = ERROR ADDRESS
*        EC  = ERROR COUNT/ERROR CODE 
*        EM  = ERROR MESSAGE
*        ES  = ERROR STOP 
*        IB  = INPUT BUFFER 
*        LF  = LAST FUNCTION
*        OB  = OUTPUT BUFFER
*        SB  = STATUS BUFFER
*        SL  = SCOPING LOOP 
*        WC  = WORD COUNT 
*        WT  = WORDS TRANSMITTED
* 
*    7.3 MISCELLANEOUS
* 
*        THE FOLLOWING IS A DESCRIPTION OF 6673/6674 STATUS,
*        PROVIDED HERE FOR EASY REFERENCE:  
* 
*          INDIVIDUAL DSC STATUS: 
*          XXX1 - INTERRUPT WORD RECEIVED 
*          XXX2 - DSC BUSY
*          XXX4 - SYNC WORD SENT AND NOT ACKNOWLEDGED 
*          XX1X - CYCLIC CODE WORD ERROR
*          XX2X - SELECTED TO RECEIVE AND NO CARRIER ON-OFF SIGNAL
*          XX4X - SELECTED TO TRANSMIT AND NO CLEAR-TO-SEND SIGNAL
*          X1XX - NO INTERLOCK OR NO CARRIER ON-OFF 
*          X2XX - NOT CONNECTED OR IN TEST MODE 
*          2XXX - SELECTED FOR RECEIVE AND I/O REGISTER FULL
*          4XXX - SELECTED FOR TRANSMIT AND I/O REGISTER EMPTY
* 
*          STATUS-ALL:  
*          THE STATUS-ALL WORD IS DIVIDED INTO FOUR (4) GROUPS: 
*          BITS 0-2 FOR DSC0
*          BITS 3-5 FOR DSC1
*          BITS 6-8 FOR DSC2
*          BITS 9-11 FOR DSC3 
*          THE FOLLOWING DEFINITIONS APPLY TO EACH STATUS-ALL GROUP:  
*          1 - SELECTED FOR RECEIVE AND I/O REGISTER FULL 
*          2 - SELECTED FOR TRANSMIT AND I/O REGISTER EMPTY 
*          4 - ANY OF THE FOLLOWING ERRORS: 
*              RECEIVE AND NO CARRIER ON-OFF
*              TRANSMIT AND NO CLEAR-TO-SEND
*              CYCLIC CODE ERROR
* 
   MODULE RT301,6000(66)
***  RT301 - STATUS TEST
**
*    1.0 PURPOSE
* 
*        RT301 VERIFYS THAT EACH DSC IS CAPABLE OF BEING
*        CLEARED, BEING SELECTED FOR TRANSMIT MODE, AND 
*        BEING SELECTED FOR RECEIVE MODE. STATUS-ALL AND
*        INDIVDUAL DSC STATUS IS CHECKED TO INSURE THE ABOVE. 
* 
*    2.0 METHOD 
* 
*        1. RESERVE I/O CHANNEL AND CLEAR MULTIPLEXER 
*        2. ISSUE CLEAR DSC FUNCTION TO -P2- DSC-S
*        3. ISSUE REQUEST STATUS-ALL FUNCTION AND 
*           INPUT STATUS-ALL TO PP
*        4. REPORT ERROR CODE 4 IF STATUS-ALL NON-ZERO
*        5. ISSUE REQUEST STATUS FUNCTION TO DSC AND
*           INPUT STATUS TO PP
*        6. REPORT ERROR CODE 6 IF STATUS NON-ZERO
*        7. REPEAT STEPS 5 AND 6 FOR -P2- DSC-S 
*        8. RESERVE I/O CHANNEL 
*        9. ISSUE SELECT TRANSMIT FUNCTION TO DSC 
*        10.ISSUE REQUEST STATUS-ALL FUNCTION AND 
*           INPUT STATUS-ALL TO PP
*        11.REPORT ERROR CODE 7 IF STATUS-ALL INCORRECT 
*        12.ISSUE REQUEST STATUS FUNCTION TO DSC AND
*           INPUT STATUS TO PP
*        13.REPORT ERROR CODE 10 IF STATUS INCORRECT
*        14.REPEAT STEPS 8-13 FOR -P2- DSC-S
*        15.RESERVE I/O CHANNEL 
*        16.ISSUE CLEAR DSC FUNCTION TO -P2- DSC-S
*        17.ISSUE SELECT RECEIVE FUNCTION TO DSC
*        18.ISSUE REQUEST STATUS-ALL FUNCTION AND 
*           INPUT STATUS-ALL TO PP
*        19.REPORT ERROR CODE 4 IF STATUS-ALL INCORRECT 
*        20.ISSUE REQUEST STATUS FUNCTION TO DSC AND
*           INPUT STATUS TO PP
*        21.REPORT ERROR CODE 11 IF STATUS INCORRECT
*        22.REPEAT STEPS 20 AND 21 FOR -P2- DSC-S 
*        23.ISSUE CLEAR DSC FUNCTION ON -P2- DSC-S
*           AND EXIT MODULE 
* 
*        -NOTE- THERE ARE THREE (3) POSSIBLE REPEAT 
*               CONDITION (RC) MODES: 
*               STEPS 1-6 
*               STEPS 8-13
*               STEPS 15-21 
* 
*    3.0 ERRORS REPORTED
* 
*        1. EC - 01 ABORT ON RESERVE
*        2. EC - 02 ABORT ON FUNCTION 
*        3. EC - 03 ABORT ON INPUT STATUS-ALL 
*        4. EC - 04 STATUS-ALL ERROR EXP=0000 ACT=*OCT
*        5. EC - 05 ABORT ON INPUT DSC STATUS 
*        6. EC - 06 DSC*OCT STATUS ERROR EXP=0000 ACT=*OCT
*        7. EC - 07 STATUS-ALL ERROR EXP=*OCT ACT=*OCT
*        8. EC - 10 DSC*OCT STATUS ERROR EXP=4006 ACT=*OCT
*        9. EC - 11 DSC*OCT STATUS ERROR EXP=0002 ACT=*OCT
* 
*    4.0 ENTRY CONDITIONS 
* 
*        EACH DSC MUST BE CABLED TO ITS RESPECTIVE SIMULATOR IN 
*        ORDER FOR THIS MODULE TO EXECUTE PROPERLY. OTHERWISE,
*        FALSE ERRORS WILL OCCUR. 
/ 
*    5.0 REGISTER AND BUFFER USAGE
* 
*        B0 = DSC NUMBER
*        B1 = FUNCTION
*        B3 = REPEAT CONDITION POINTER
*        B4 = SCOPING LOOP COUNTER
*        B5 = ERROR CODE IF ABORT 
*        B7 = MODULE ERROR COUNTER
* 
*        P2 = NUMBER OF DSC-S IN CONTROLLER TO TEST 
* 
*        SB(0) = DSC 0 STATUS 
*        SB(1) = DSC 1 STATUS 
*        SB(2) = DSC 2 STATUS 
*        SB(3) = DSC 3 STATUS 
*        SB(4) = STATUS ALL 
* 
*    6.0 SUBMODULES USED
* 
*        RT398A - ERROR PROCESSOR FOR COMMAND ABORTS
*        RT398B - ERROR PROCESSOR FOR MODULE ERRORS 
* 
* 
* ------------------DATA DIVISION---------------------------- 
* 
1  FORMAT RT301 - STATUS TEST 
2  FORMAT --------------------------------------------------
3  FORMAT RT301 - ERRORS IN MODULE = *DECD
4  FORMAT RT301 - LOOPS=*DECD ERRS=*DECD
* 
   DATA(OB,CON)2,20,200,2000
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MSG
* 
* ------------------TEST------------------------------------- 
* 
22 B5 = 1                    *ERROR CODE IF ABORT 
   RES, ABT 60               *GET I/O CHANNEL FROM SYSTEM 
   FUNC 400, ABT 24          *MULTIPLEXER CLEAR 
24 B3 = 1                    *REPEAT CONDITION POINTER
   B1 = B0 + 530             *CLEAR PORT FUNCTION 
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   GOTO 24 WHILE(B0 + 1 .LT. P2)   *LOOP FOR ALL PORTS
* 
   GOSUB 56                  *GET STATUS ALL
   B0 = 0                    *STARTING DSC NUMBER 
   IF(SB(4).NE.0)ERROR 0/4,GOTO 60  *IF STATUS ALL ERROR
* 
26 GOSUB 64                  *GET DSC STATUS
   IF(SB(B0).NE.0)ERROR 0/6,GOTO 60    *IF DSC STATUS ERROR 
* 
   IF(ES .AND. RC .EQ. 0)GOTO 27  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNTER 
   MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
   GOTO 22
* 
27 GOTO 26 WHILE(B0 + 1 .LT. P2)   *LOOP FOR ALL DSCS 
* 
   B0 = 0                    *STARTING DSC NUMBER 
   B3 = 2                    *REPEAT CONDITION POINTER
30 B5 = 1                    *ERROR CODE IF ABORT 
   RES, ABT 60               *GET I/O CHANNEL FROM SYSTEM 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 540             *SELECT XMIT FUNCTION
   FUNC B1 ,ABT 60           *ISSUE FUNCTION
   GOSUB 56                  *GET STATUS ALL
   DELAY 2 MSEC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 540             *SELECT XMIT FUNCTION
   FUNC B1,ABT 60            *ISSUE FUNCTION
   GOSUB 64                  *GET DSC STATUS
   IF(SB(4).AND.OB(B0).EQ.0)ERROR 0/7,GOTO 60  *IF ERROR
* 
   IF(SB(B0).NE.4006)ERROR 0/10,GOTO 60  *IF DSC STATUS ERR 
* 
   GOTO 30 WHILE(B0 + 1 .LT. P2)  *LOOP FOR ALL DSCS
* 
   IF(ES .AND. RC .EQ. 0)GOTO 32  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNTER 
   MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
   GOTO 30
* 
32 B0 = 0 
   B3 = 3                    *REPEAT CONDITION POINTER
34 B5 = 1                    *ERROR CODE IF ABORT 
   RES, ABT 60               *GET I/O CHANNEL FROM SYSTEM 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1,ABT 60            *ISSUE FUNCTION
   GOTO 34 WHILE(B0 + 1 .LT. P2)   *LOOP FOR ALL DSCS 
* 
   B0 = 0                    *STARTING DSC NUMBER 
36 B1 = B0 + 550             *SELECT RECEIVE FUNCTION 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   GOTO 36 WHILE(B0 + 1 .LT. P2)   *LOOP FOR ALL DSCS 
* 
   GOSUB 56                  *GET STATUS ALL
   IF(SB(4).NE.0)ERROR 0/4,GOTO 60  *IF STATUS ALL ERROR
* 
   B0 = 0                    *STARTING DSC NUMBER 
40 GOSUB 64                  *GET DSC STATUS
   IF(SB(B0).NE.2)ERROR 0/11,GOTO 60  *IF DSC STATUS ERROR
* 
   IF(ES .AND. RC .EQ. 0)GOTO 42  *IF NOT SCOPING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNTER 
   MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
   GOTO 34
* 
42 GOTO 40 WHILE(B0 + 1 .LT. P2)   *LOOP FOR ALL DSCS 
* 
   B0 = 0                    *STARTING DSC NUMBER 
43 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 530             *CLEAR PORT FUNCTION 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   GOTO 43 WHILE(B0 + 1 .LT. P2)   *LOOP FOR ALL DSCS 
* 
44 IF(B7.NE.0) MSG 3(B7) TO DAYFILE  *IF ERRORS, REPORT IT
   EXIT 
* 
* ------------------STATUS ALL SUBROUTINE-------------------- 
* 
56 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = 504                  *STATUS ALL FUNCTION 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   B5 = 3                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(4),ABT 60  *INPUT STATUS ALL
   RETURN 
* 
* ------------------ABORT AND ERROR PROCESSOR---------------- 
* 
60 ENDSUB                    *END ACTIVE SUBROUTINES
   B7 = B7 + 1               *BUMP ERROR COUNTER
   IF(ES .AND. SL .NE. 0)GOTO 62  *IF SCOPING LOOP
* 
   B5 = B5 + 100             *ADD MODULE NUMBER TO EC 
   CALL 98A                  *ISSUE ERROR MESSAGES
   PICTURE
   HALT 
   BLANK
   MSG 2 TO PRINT 
   IF(B7 .GE. 5)GOTO 44      *IF 5 ERRORS IN MODULE 
* 
   MSG 1 TO DISPLAY          *POST RUNNING MSG
   B5 = 1                    *ERROR CODE IF ABORT 
   RES, ABT 60               *GET I/O CHANNEL 
   GOTO 63                   *NOT SCOPING 
* 
62 MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
63 IF(B3 .EQ. 1)GOTO 22      *IF REPEAT CONDITION 1 
* 
   IF(B3 .EQ. 2)GOTO 30      *IF REPEAT CONDITION 2 
* 
   GOTO 34                   *REPEAT CONDITION 3
* 
* 
* -------------------DSC STATUS SUBROUTINE------------------- 
* 
64 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 510             *DSC STATUS FUNCTION 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(B0),ABT 60  *INPUT DSC STATUS 
   RETURN 
   END 20 
COMPILE         - RT301 - 
   MODULE RT302,6000(66)
***  RT302 - LOOPBACK INTERRUPT TEST
**
*    1.0 PURPOSE
* 
*        RT302 VERIFYS THAT THE SYNC WORD SENT AND NOT
*        ACKNOWLEDGED BIT (DSC STATUS BIT 2) IS CAPABLE 
*        OF BEING CLEARED, AND THAT THE INTERRUPT WORD
*        IS CAPABLE OF BEING SENT BY THE TRANSMITTING 
*        DSC, AND THE RESULTING STATUS BIT (DSC STATUS
*        BIT 0) IS CAPABLE OF BEING DETECTED BY THE 
*        RECEIVING DSC. 
* 
*    2.0 METHOD 
* 
*        1. RESERVE I/O CHANNEL 
*        2. ISSUE REQUEST STATUS FUNCTION TO THE TRANSMITTING 
*           DSC AND INPUT STATUS TO THE PP
*        3. CHECK FOR DSC BUSY
*        4. IF DSC BUSY, REPEAT STEPS 2 AND 3 UP TO 100D TIMES
*        5. IF DSC STILL BUSY, REPORT ERROR CODE 12 AND EXIT
*        6. ISSUE CLEAR DSC FUNCTION TO THE TRANSMITTING DSC
*        7. ISSUE REQUEST STATUS FUNCTION TO THE TRANSMITTING 
*           DSC AND INPUT STATUS TO THE PP
*        8. IF STATUS INCORRECT, REPORT ERROR CODE 6 AND EXIT 
*        9. REPEAT STEPS 2-8 FOR THE RECEIVING DSC
*        10.ISSUE SELECT TRANSMIT FUNCTION TO THE TRANSMITTING DSC
*        11.SEND THE INTERRUPT WORD 
*        12.REPEAT STEPS 2-5
*        13.ISSUE REQUEST STATUS FUNCTION TO THE TRANSMITTING 
*           DSC AND INPUT STATUS TO THE PP
*        14.IF STATUS INCORRECT, REPORT ERROR CODE 14 AND EXIT
*        15.ISSUE REQUEST STATUS FUNCTION TO THE RECEIVING
*           DSC AND INPUT STATUS TO THE PP
*        16.IF STATUS INCORRECT, REPORT ERROR CODE 15 AND EXIT
*        17.ISSUE CLEAR INTERRUPT WORD RECEIVED STATUS BIT
*           FUNCTION
*        18.ISSUE REQUEST STATUS FUNCTION TO THE RECEIVING
*           DSC AND INPUT STATUS TO THE PP
*        19.IF STATUS INCORRECT, REPORT ERROR CODE 16 AND EXIT
*        20.REPEAT STEPS 10-19 50D TIMES AND EXIT 
* 
*        -NOTE- THERE ARE TWO (2) POSSIBLE REPEAT 
*               CONDITION (RC) MODES: 
*               STEPS 2-9 
*               STEPS 10-19 
* 
*    3.0 ERRORS REPORTED
* 
*        1. EC - 01 ABORT ON RESERVE
*        2. EC - 02 ABORT ON FUNCTION 
*        3. EC - 05 ABORT ON INPUT DSC STATUS 
*        4. EC - 06 DSC*OCT STATUS ERROR EXP=0000 ACT=*OCT
*        5. EC - 12 DSC*OCT HUNG BUSY 
*        6. EC - 13 ABORT ON OUTPUT INTERRUPT WORD
*        7. EC - 14 DSC*OCT SYNC WORD NOT ACKNOWLEDGED SET
*        8. EC - 15 DSC*OCT INTERRUPT RECEIVED NOT SET
*        9. EC - 16 DSC*OCT INTERRUPT RECEIVED FAILED TO CLEAR
* 
*    4.0 ENTRY CONDITIONS - NONE
/ 
*    5.0 REGISTER AND BUFFER USAGE
* 
*        B0 = DSC NUMBER
*        B1 = FUNCTION
*        B2 = HUNG BUSY TIMEOUT COUNTER 
*        B3 = REPEAT CONDITION POINTER
*        B4 = SCOPING LOOP COUNTER
*        B5 = ERROR CODE IF ABORT 
*        B6 = MODULE LOOP COUNTER 
*        B7 = MODULE ERROR COUNTER
* 
*        P0 = TRANSMITTING DSC
*        P1 = RECEIVING DSC 
* 
*        SB(0) = DSC 0 STATUS 
*        SB(1) = DSC 1 STATUS 
*        SB(2) = DSC 2 STATUS 
*        SB(3) = DSC 3 STATUS 
*        SB(4) = STATUS ALL 
* 
*    6.0 SUBMODULES USED
* 
*        RT398A - ERROR PROCESSOR FOR COMMAND ABORTS
*        RT398B - ERROR PROCESSOR FOR MODULE ERRORS 
* 
* 
* ------------------DATA DIVISION---------------------------- 
* 
1  FORMAT RT302 - LOOPBACK INTERRUPT TEST 
2  FORMAT --------------------------------------------------
3  FORMAT RT302 - ERRORS IN MODULE = *DECD
4  FORMAT RT302 - LOOPS=*DECD ERRS=*DECD
* 
   DATA(OB,CON)7622 
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 1 TO DISPLAY,PRINT    *POST RUNNING MSG
* 
* ------------------TEST------------------------------------- 
* 
   B5 = 1                    *ERROR CODE IF ABORT 
   RES, ABT 60               *GET I/O CHANNEL 
22 B3 = 1                    *REPEAT CONDITION POINTER
   B0 = P0                   *XMITTING DSC
   GOSUB 50                  *WAIT NOT BUSY 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   GOSUB 56                  *GET DSC STATUS
   IF(SB(B0).NE.0)ERROR 0/6,GOTO 60  *IF DSC STATUS ERROR 
* 
   B0 = P1                   *RECEIVING DSC 
   GOSUB 50                  *WAIT NOT BUSY 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   GOSUB 56                  *GET DSC STATUS
   IF(SB(B0).NE.0)ERROR 0/6,GOTO 60  *IF DSC STATUS ERROR 
* 
   IF(ES .AND. RC .EQ. 0)GOTO 24  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNTER 
   MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
   GOTO 22                   *REPEAT CONDITION 1
* 
24 B3 = 2                    *REPEAT CONDITION POINTER
30 B0 = P0
   B1 = B0 + 540             *SELECT XMIT FUNCTION
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   B5 = 13                   *ERROR CODE IF ABORT 
   OUT 1 WORDS FROM OB, ABT 60    *SEND INTERRUPT WORD
   GOSUB 50                  *WAIT NOT BUSY 
   DELAY 1 MSEC              *SHORT DELAY 
   GOSUB 56                  *GET DSC STATUS
   IF(SB(B0).AND.4.NE.0)ERROR 0/14,GOTO 60  *IF SYNC NOT ACK
* 
   B0 = P1                   *RECEIVING DSC 
   GOSUB 56                  *GET DSC STATUS
   IF(SB(B0).AND.1.EQ.0)ERROR 0/15,GOTO 60  *IF INT NOT REC 
* 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 560             *CLEAR INT RECEIVED FUNCTION 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   GOSUB 56                  *GET DSC STATUS
   IF(SB(B0).AND.1.NE.0)ERROR 0/16,GOTO 60  *IF INT SET 
* 
   IF(ES .AND. RC .EQ. 0)GOTO 32  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNTER 
   MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
   GOTO 30                   *REPEAT CONDITION 2
* 
32 GOTO 30 WHILE(B6 + 1 .LT. 50D)  *REPEAT 50D TIMES
* 
40 IF(B7.NE.0) MSG 3(B7) TO DAYFILE  *IF ERRORS, REPORT IT
   EXIT 
* 
* ------------------WAIT NOT BUSY SUBROUTINE----------------- 
* 
50 B2 = 0                    *INITIALIZE LOOP COUNTER 
52 GOSUB 56                  *GET DSC STATUS
   IF(SB(B0) .AND. 2 .EQ. 0)GOTO 54    *IF NOT BUSY 
* 
   DELAY 20 USEC
   GOTO 52 WHILE(B2 + 1 .LT. 100D)  *WAIT NOT BUSY
* 
   ERROR 0/12,GOTO 60        *DSC HUNG BUSY ERROR 
* 
54 RETURN                    *EXIT SUBROUTINE 
* 
* ------------------DSC STATUS SUBROUTINE-------------------- 
* 
56 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 510             *DSC STATUS FUNCTION 
   FUNC B1, ABT 60           *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(B0),ABT 60  *INPUT DSC STATUS 
   RETURN                    *EXIT SUBROUTINE 
* 
* ------------------ABORT AND ERROR PROCESSOR---------------- 
* 
60 ENDSUB                    *END ACTIVE SUBROUTINES
   B7 = B7 + 1               *BUMP ERROR COUNTER
   IF(ES .AND. SL .NE. 0)GOTO 62  *IF SCOPING LOOP
* 
   B5 = B5 + 200             *ADD MODULE NUMBER TO EC 
   CALL 98A                  *REPORT ERRORS 
   PICTURE
   HALT 
   BLANK
   MSG 2 TO PRINT 
   IF(B7 .GE. 5)GOTO 40      *IF 5 ERRORS IN MODULE 
* 
   MSG 1 TO DISPLAY          *POST RUNNING MSG
   B5 = 1                    *ERROR CODE IF ABORT 
   RES, ABT 60               *GET I/O CHANNEL 
   GOTO 63
* 
62 MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
63 IF(B3 .EQ. 1)GOTO 22      *REPEAT CONDITION 1
* 
   GOTO 30                   *REPEAT CONDITION 2
* 
   END 20 
COMPILE         - RT302 - 
   MODULE RT303,6000(66)
***  RT303 - LOOPBACK DATA PATTERNS 
**
*    1.0 PURPOSE
* 
*        RT303 VERIFYS THAT THE TRANSMITTING DSC IS 
*        CAPABLE OF SENDING FIXED PATTERN BLOCKS OF 
*        400B WORDS, AND THAT THE RECEIVING DSC IS
*        CAPABLE OF INPUTTING THE SAME. DATA IS COM-
*        PARED AND INDIVIDUAL DSC STATUS IS CHECKED TO
*        INSURE THE ABOVE. IF PARAMETER P3 = 1, THIS
*        MODULE WILL ALSO SIMULATE THE CYCLIC CODE AND
*        COMPARE IT WITH THE GENERATED CODE.
* 
*    2.0 METHOD 
* 
*        1. RESERVE I/O CHANNEL 
*        2. ISSUE CLEAR DSC FUNCTION TO THE TRANSMITTING DSC
*        3. ISSUE CLEAR DSC FUNCTION TO THE RECEIVING DSC 
*        4. RESERVE I/O CHANNEL 
*        5. SET UP DATA PATTERN IN BLOCKS OF 400B WORDS WITH
*           INITIAL PATTERN = 0001
*        6. ISSUE SELECT RECEIVE FUNCTION TO RECEIVING DSC
*        7. ISSUE SELECT TRANSMIT FUNCTION TO TRANSMITTING DSC
*        8. ISSUE SELECT PORT FUNCTION TO TRANSMITTING DSC AND
*           OUTPUT ONE (1) WORD 
*        9. ISSUE SELECT PORT FUNCTION TO RECEIVING DSC AND 
*           INPUT ONE (1) WORD
*        10.REPEAT STEPS 8 AND 9 UNTIL ALL 400B WORDS HAVE BEEN 
*           TRANSFERRED 
*        11.ISSUE DSC STATUS FUNCTION TO TRANSMITTING DSC AND 
*           INPUT STATUS TO PP
*        12.ISSUE DSC STATUS FUNCTION TO RECEIVING DSC AND INPUT
*           STATUS TO PP
*        13.REPORT ERROR CODE 17 IF TRANSMITTING DSC STATUS 
*           INCORRECT 
*        14.REPORT ERROR CODE 24 IF RECEIVING DSC STATUS
*           INCORRECT 
*        15.REPORT ERROR CODE 22 IF RECEIVING DSC GOT A CYCLIC
*           CODE WORD ERROR 
*        16.REPORT ERROR CODE 14 IF TRANSMITTING DSC DID NOT
*           RECEIVE ACKNOWLEDGEMENT TO THE SYNC WORD
*        17.COMPARE INPUT AND OUTPUT DATA; REPORT ERROR CODE
*           23 IF BAD COMPARE 
*        18.IF PARAMETER P3 = 1, SIMULATE CYCLIC CODE 
*           AND ADD TO OB 
*        19.COMPARE OB AND IB; REPORT ERROR CODE 27 IF BAD
*           COMPARE (CYCLIC CODE BAD) 
*        20.GO TO STEP 4 AND REPEAT USING FOLLOWING PATTERNS: 
*           0002,0004,0010,0020,0040,0100,0200,0400,1000,2000,
*           4000; THEN EXIT 
* 
*        -NOTE- REPEAT CONDITION (RC) CONSISTS OF STEPS 6-19
* 
*    3.0 ERRORS REPORTED
* 
*        1. EC - 01 ABORT ON RESERVE
*        2. EC - 02 ABORT ON FUNCTION 
*        3. EC - 05 ABORT ON INPUT DSC STATUS 
*        4. EC - 14 DSC*OCT SYNC WORD NOT ACKNOWLEDGED SET
*        5. EC - 17 DSC*OCT EQUIP FAILURE ON XMIT SEE STATUS
*        6. EC - 22 DSC*OCT STATUS INDICATES CYCLIC CODE ERROR
*        7. EC - 23 DATA COMP ERR ACT=*OCT EXP=*OCT WORD=*OCT 
*        8. EC - 24 DSC*OCT EQUIP FAILURE ON RECV SEE STATUS
*        9. EC - 27 CYCLIC CODE MISCOMPARE ACT=*OCT EXP=*OCT
*        10.EC - 30 ABORT ON .FOUT. COMMAND 
*        11.EC - 31 ABORT ON .FIN. COMMAND
* 
*    4.0 ENTRY CONDITIONS - NONE
/ 
*    5.0 REGISTER AND BUFFER USAGE
* 
*        B0 = DSC NUMBER
*        B1 = FUNCTION
*        B2 = LOOP TERMINATOR FOR INPUT 
*        B3 = SELECT INPUT PORT FUNCTION
*        B4 = SCOPING LOOP COUNTER
*        B5 = ERROR CODE IF ABORT 
*        B6 = CURRENT DATA PATTERN
*        B7 = MODULE ERROR COUNTER
*        B8 = WORD COUNT
* 
*        P0 = TRANSMITTING DSC
*        P1 = RECEIVING DSC 
*        P3 = CYCLIC CODE CHECK 
* 
*        SB(0) = DSC 0 STATUS 
*        SB(1) = DSC 1 STATUS 
*        SB(2) = DSC 2 STATUS 
*        SB(3) = DSC 3 STATUS 
*        SB(4) = STATUS ALL 
* 
*    6.0 SUBMODULES USED
* 
*        RT398A - ERROR PROCESSOR FOR COMMAND ABORTS
*        RT398B - ERROR PROCESSOR FOR MODULE ERRORS 
* 
* 
* ------------------DATA DIVISION---------------------------- 
* 
1  FORMAT RT303 - LOOPBACK DATA PATTERNS
2  FORMAT---------------------------------------------------
3  FORMAT RT303 - ERRORS IN MODULE=*DECD
4  FORMAT RT303 - LOOPS=*DECD ERRS=*DECD
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 1 TO DISPLAY,PRINT 
   B6 = 1                    *STARTING DATA PATTERN 
* 
* ------------------TEST------------------------------------- 
* 
   B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
22 B0 = P0                   *XMITING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P1                   *RECEIVING DSC 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
24 B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
   B8 = 400                  *DATA BLOCKS OF 400B WORDS 
   DUP B6 TO OB FOR B8       *PUT DATA PATT IN OB 
26 BA = 0                    *INITIALIZE OUTPUT COUNTER 
   WC = 1 
   B3 = P1 + 520             *SELECT PORT FUNCTION
   B0 = P1                   *RECEIVING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 550             *SELECT RECEIVE FUNCTION 
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P0                   *XMITING DSC 
   B1 = B0 + 540             *SELECT XMIT FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B1 = P0 + 520             *SELECT OUTPUT FUNCTION
   GOSUB 50                  *TRANSFER DATA 
   GOSUB 46                  *GET DSCS STATUS 
   IF(SB(P1).AND.360.NE.0)ERROR 0/24,GOTO 64  *IF DSC ERR 
* 
   IF(SB(P0).AND.360.NE.0)ERROR 0/17,GOTO 64  *IF DSC ERR 
* 
   IF(SB(P1).AND.10.NE.0)ERROR 0/22,GOTO 64  *IF CYCLIC ERR 
* 
   IF(SB(P0).AND.4.NE.0)ERROR 0/14,GOTO 64  *IF SYNC NOT ACK
* 
   B5 = 23                   *ERROR CODE DATA ERROR 
   COMPARE IB TO OB FOR WC, ABT 64  *CHECK DATA 
   IF(P3 .AND. 1 .EQ. 0)GOTO 30    *IF NO CYCLIC CODE CHECK 
* 
   CALL 98X                  *GENERATE CYCLIC CODE
   IF(OB(WC).NE.IB(WC))ERROR 0/27,GOTO 64  *IF CODES MISCOMPARE 
* 
30 IF(ES .AND. RC .EQ. 0)GOTO 32  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNT 
   GOTO 66                   *REPEAT CONDITION
* 
32 B6 = B6 .LS. 1            *NEXT DATA PATTERN 
   IF(B6 .NE. 1)GOTO 24      *IF NOT END OF PATTERNS
* 
34 IF(B7.NE.0) MSG 3(B7) TO DAYFILE  *IF ERRORS, REPORT IT
   EXIT 
* 
* ------------------DSC STATUS SUBROUTINE-------------------- 
* 
* 
46 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P0 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P0),ABT 64  *INPUT DSC STATUS 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P1 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P1),ABT 64  *INPUT DSC STATUS 
   RETURN 
* 
* ------------------COMBINED INPUT-/OUTPUT------------------- 
* 
50 FOUT B1,ABT 60            *OUTPUT FIRST WORD 
   BA = BA + 1               *BUMP BUFFER POINTER 
52 FOUT B1,ABT 60            *SELECT PORT AND OUTPUT 1 WORD 
   FIN B3,ABT 62             *SELECT PORT AND INPUT 1 WORD
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   GOTO 52 WHILE(BA + 1 .LT. B8)  *IF XFER INCOMPLETE 
* 
   FIN B3,ABT 62         *SELECT PORT AND INPUT 
   BA = BA + 1           *BUMP BUFFER POINTER 
   FIN B3,ABT 62         *SELECT PORT AND INPUT 
   B8 = BA + 1
   COPY IB(1) TO IB(0) FOR B8  *REPOSITION INPUT BUFFER 
   WC = B8 - 2
   RETURN 
* 
* ------------------ABORT AND ERROR PROCESSOR---------------- 
* 
60 B5 = 30                   *ERROR CODE .FOUT. ABORT 
   GOTO 64                   *PROCESS ABORT 
* 
62 B5 = 31                   *ERROR CODE .FIN. ABORT
64 ENDSUB                    *END ACTIVE SUBROUTINES
   B7 = B7 + 1               *BUMP ERROR COUNTER
   IF(ES .AND. SL .NE. 0)GOTO 66  *IF SCOPING 
* 
   B5 = B5 + 300             *ADD MODULE NUMBER TO EC 
   CALL 98A                  *REPORT ERRORS 
   PICTURE
   HALT 
   BLANK
   MSG 2 TO PRINT 
   IF(B7 .GE. 5)GOTO 34      *IF 5 ERRORS IN MODULE 
* 
   MSG 1 TO DISPLAY 
   GOTO 24
* 
66 MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
70 B5 = 1                    *ERROR CODE IF ABORT 
   RES, ABT 64               *GET I/O CHANNEL 
   GOTO 26
* 
   END 20 
COMPILE         - RT303 - 
   MODULE RT304,6000(66)
***  RT304 - LOOPBACK RANDOM PATTERNS 
**
*    1.0 PURPOSE
* 
*        RT304 VERIFYS THAT THE TRANSMITTING DSC IS 
*        CAPABLE OF SENDING RANDOM PATTERN BLOCKS OF
*        400B WORDS, AND THAT THE RECEIVING DSC IS
*        CAPABLE OF INPUTTING THE SAME. DATA IS COM-
*        PARED AND INDIVIDUAL DSC STATUS IS CHECKED TO
*        INSURE THE ABOVE. IF PARAMETER P3 = 1, THIS
*        MODULE WILL ALSO SIMULATE THE CYCLIC CODE AND
*        COMPARE IT WITH THE GENERATED CODE.
* 
*    2.0 METHOD 
* 
*        1. RESERVE I/O CHANNEL 
*        2. ISSUE CLEAR DSC FUNCTION TO THE TRANSMITTING DSC
*        3. ISSUE CLEAR DSC FUNCTION TO THE RECEIVING DSC 
*        4. RESERVE I/O CHANNEL 
*        5. SET UP RANDOM DATA PATTERN IN BLOCKS OF 400B WORDS
*        6. ISSUE SELECT RECEIVE FUNCTION TO RECEIVING DSC
*        7. ISSUE SELECT TRANSMIT FUNCTION TO TRANSMITTING DSC
*        8. ISSUE SELECT PORT FUNCTION TO TRANSMITTING DSC AND
*           OUTPUT ONE (1) WORD 
*        9. ISSUE SELECT PORT FUNCTION TO RECEIVING DSC AND 
*           INPUT ONE (1) WORD
*        10.REPEAT STEPS 8 AND 9 UNTIL ALL 400B WORDS HAVE BEEN 
*           TRANSFERRED 
*        11.ISSUE DSC STATUS FUNCTION TO TRANSMITTING DSC AND 
*           INPUT STATUS TO PP
*        12.ISSUE DSC STATUS FUNCTION TO RECEIVING DSC AND INPUT
*           STATUS TO PP
*        13.REPORT ERROR CODE 17 IF TRANSMITTING DSC STATUS 
*           INCORRECT 
*        14.REPORT ERROR CODE 24 IF RECEIVING DSC STATUS
*           INCORRECT 
*        15.REPORT ERROR CODE 22 IF RECEIVING DSC GOT A CYCLIC
*           CODE WORD ERROR 
*        16.REPORT ERROR CODE 14 IF TRANSMITTING DSC DID NOT
*           RECEIVE ACKNOWLEDGEMENT TO THE SYNC WORD
*        17.COMPARE INPUT AND OUTPUT DATA; REPORT ERROR CODE
*           23 IF BAD COMPARE 
*        18.IF PARAMETER P3 = 1, SIMULATE CYCLIC CODE 
*           AND ADD TO OB 
*        19.COMPARE OB AND IB; REPORT ERROR CODE 27 IF BAD
*           COMPARE (CYCLIC CODE BAD) 
*        20.GO TO STEP 4 AND REPEAT 100D TIMES
* 
*        -NOTE- REPEAT CONDITION (RC) CONSISTS OF STEPS 6-19
* 
*    3.0 ERRORS REPORTED
* 
*        1. EC - 01 ABORT ON RESERVE
*        2. EC - 02 ABORT ON FUNCTION 
*        3. EC - 05 ABORT ON INPUT DSC STATUS 
*        4. EC - 14 DSC*OCT SYNC WORD NOT ACKNOWLEDGED SET
*        5. EC - 17 DSC*OCT EQUIP FAILURE ON XMIT SEE STATUS
*        6. EC - 22 DSC*OCT STATUS INDICATES CYCLIC CODE ERROR
*        7. EC - 23 DATA COMP ERR ACT=*OCT EXP=*OCT WORD=*OCT 
*        8. EC - 24 DSC*OCT EQUIP FAILURE ON RECV SEE STATUS
*        9. EC - 27 CYCLIC CODE MISCOMPARE ACT=*OCT EXP=*OCT
*        10.EC - 30 ABORT ON .FOUT. COMMAND 
*        11.EC - 31 ABORT ON .FIN. COMMAND
* 
*    4.0 ENTRY CONDITIONS - NONE
/ 
*    5.0 REGISTER AND BUFFER USAGE
* 
*        B0 = DSC NUMBER
*        B1 = FUNCTION
*        B2 = LOOP TERMINATOR FOR INPUT 
*        B3 = INPUT WORD COUNTER
*        B4 = SCOPING LOOP COUNTER
*        B5 = ERROR CODE IF ABORT 
*        B6 = MODULE LOOP COUNTER 
*        B7 = MODULE ERROR COUNTER
*        B8 = WORD COUNT
* 
*        P0 = TRANSMITTING DSC
*        P1 = RECEIVING DSC 
*        P3 = CYCLIC CODE CHECK 
* 
*        SB(0) = DSC 0 STATUS 
*        SB(1) = DSC 1 STATUS 
*        SB(2) = DSC 2 STATUS 
*        SB(3) = DSC 3 STATUS 
*        SB(4) = STATUS ALL 
* 
*    6.0 SUBMODULES USED
* 
*        RT398A - ERROR PROCESSOR FOR COMMAND ABORTS
*        RT398B - ERROR PROCESSOR FOR MODULE ERRORS 
* 
* 
* ------------------DATA DIVISION---------------------------- 
* 
1  FORMAT RT304 - LOOPBACK RANDOM PATTERNS
2  FORMAT---------------------------------------------------
3  FORMAT RT304 - ERRORS IN MODULE=*DECD
4  FORMAT RT304 - LOOPS=*DECD ERRS=*DECD
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 1 TO DISPLAY,PRINT 
* 
* ------------------TEST------------------------------------- 
* 
   B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
22 B0 = P0                   *XMITING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P1                   *RECEIVING DSC 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
24 B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
   B8 = 400                  *DATA BLOCKS OF 400B WORDS 
   RANDOM TO OB FOR B8       *PUT RANDOM PATRN IN BUF 
26 WC = 1 
   BA = 0                    *INITIALIZE OUTPUT COUNTER 
   B3 = P1 + 520             *SELECT INPUT PORT FUNCTION
   B0 = P1                   *RECEIVING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 550             *SELECT RECEIVE FUNCTION 
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P0                   *XMITING DSC 
   B1 = B0 + 540             *SELECT XMIT FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B1 = P0 + 520             *SELECT OUTPUT FUNCTION
   GOSUB 50                  *CHECK STATUS AND OUTPUT 
   GOSUB 46                  *GET DSCS STATUS 
   IF(SB(P1).AND.360.NE.0)ERROR 0/24,GOTO 64  *IF DSC ERR 
* 
   IF(SB(P0).AND.360.NE.0)ERROR 0/17,GOTO 64  *IF DSC ERR 
* 
   IF(SB(P1).AND.10.NE.0)ERROR 0/22,GOTO 64  *IF CYCLIC ERR 
* 
   IF(SB(P0).AND.4.NE.0)ERROR 0/14,GOTO 64  *IF SYNC NOT ACK
* 
   B5 = 23                   *ERROR CODE DATA ERROR 
   COMPARE IB TO OB FOR WC, ABT 64  *CHECK DATA 
   IF(P3 .AND. 1 .EQ. 0)GOTO 30   *IF NO CYCLIC CODE CHECK
* 
   CALL 98X                  *GENERATE CYCLIC CODE
   IF(OB(WC).NE.IB(WC))ERROR 0/27,GOTO 64  *IF CODES DIFFER 
* 
30 IF(ES .AND. RC .EQ. 0)GOTO 32  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNT 
   GOTO 66                   *REPEAT CONDITION
* 
32 GOTO 24 WHILE(B6 + 1 .LT. 100D)  *LOOP 100D TIMES
* 
34 IF(B7.NE.0) MSG 3(B7) TO DAYFILE  *IF ERRORS, REPORT IT
   EXIT 
* 
* ------------------DSC STATUS SUBROUTINE-------------------- 
* 
46 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P0 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P0),ABT 64  *INPUT DSC STATUS 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P1 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P1),ABT 64  *INPUT DSC STATUS 
   RETURN 
* 
* ------------------COMBINED INPUT OUTPUT-------------------- 
* 
50 FOUT B1,ABT 60            *OUTPUT FIRST WORD 
   BA = BA + 1               *BUMP BUFFER POINTER 
52 FOUT B1,ABT 60            *SELECT PORT AND OUTPUT 1 WORD 
   FIN B3,ABT 62             *SELECT PORT AND INPUT 1 WORD
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   GOTO 52 WHILE(BA + 1 .LT. B8)  *IF XFER INCOMPLETE 
* 
   FIN B3,ABT 62         *SELECT PORT AND INPUT 
   BA = BA + 1           *BUMP BUFFER POINTER 
   FIN B3,ABT 62         *SELECT PORT AND INPUT 
   B8 = BA + 1
   COPY IB(1) TO IB(0) FOR B8  *REPOSITION INPUT BUFFER 
   WC = B8 - 2
   RETURN 
* 
* ------------------ABORT AND ERROR PROCESSOR---------------- 
* 
60 B5 = 30                   *ERROR CODE .FOUT. ABORT 
   GOTO 64                   *PROCESS ABORT 
* 
62 B5 = 31                   *ERROR CODE .FIN. ABORT
64 ENDSUB                    *END ACTIVE SUBROUTINES
   B7 = B7 + 1               *BUMP ERROR COUNTER
   IF(ES .AND. SL .NE. 0)GOTO 66  *IF SCOPING 
* 
   B5 = B5 + 400             *ADD MODULE NUMBER TO EC 
   CALL 98A                  *REPORT ERRORS 
   PICTURE
   HALT 
   BLANK
   MSG 2 TO PRINT 
   IF(B7 .GE. 5)GOTO 34      *IF 5 ERRORS IN MODULE 
* 
   MSG 1 TO DISPLAY 
   GOTO 24
* 
66 MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
70 B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
   GOTO 26                   *REPEAT CONDITION
* 
   END 20 
COMPILE         - RT304 - 
   MODULE RT305,6000(66)
***  RT305 - LOOPBACK RANDOM BLOCK LENGTHS
**
*    1.0 PURPOSE
* 
*        RT305 VERIFYS THAT THE TRANSMITTING DSC IS 
*        CAPABLE OF SENDING RANDOM PATTERN BLOCKS OF
*        RANDOM LENGTH, AND THAT THE RECEIVING DSC IS 
*        CAPABLE OF INPUTTING THE SAME. DATA IS COM-
*        PARED AND INDIVIDUAL DSC STATUS IS CHECKED TO
*        INSURE THE ABOVE. IF PARAMETER P3 = 1, THIS
*        MODULE WILL ALSO SIMULATE THE CYCLIC CODE AND
*        COMPARE IT WITH THE GENERATED CODE.
* 
*    2.0 METHOD 
* 
*        1. RESERVE I/O CHANNEL 
*        2. ISSUE CLEAR DSC FUNCTION TO THE TRANSMITTING DSC
*        3. ISSUE CLEAR DSC FUNCTION TO THE RECEIVING DSC 
*        4. RESERVE I/O CHANNEL 
*        5. SET UP RANDOM DATA PATTERN IN BLOCKS OF RANDOM LENGTH 
*           (MINIMUM BLOCK LENGTH = 5)
*        6. ISSUE SELECT RECEIVE FUNCTION TO RECEIVING DSC
*        7. ISSUE SELECT TRANSMIT FUNCTION TO TRANSMITTING DSC
*        7. ISSUE SELECT PORT FUNCTION TO TRANSMITTING DSC AND
*           OUTPUT ONE (1) WORD 
*        9. ISSUE SELECT PORT FUNCTION TO RECEIVING DSC AND 
*           INPUT ONE (1) WORD
*        10.REPEAT STEPS 8 AND 9 UNTIL ALL WORDS HAVE BEEN
*           TRANSFERRED 
*        11.ISSUE DSC STATUS FUNCTION TO TRANSMITTING DSC AND 
*           INPUT STATUS TO PP
*        12.ISSUE DSC STATUS FUNCTION TO RECEIVING DSC AND INPUT
*           STATUS TO PP
*        13.REPORT ERROR CODE 17 IF TRANSMITTING DSC STATUS 
*           INCORRECT 
*        14.REPORT ERROR CODE 24 IF RECEIVING DSC STATUS
*           INCORRECT 
*        15.REPORT ERROR CODE 22 IF RECEIVING DSC GOT A CYCLIC
*           CODE WORD ERROR 
*        16.REPORT ERROR CODE 14 IF TRANSMITTING DSC DID NOT
*           RECEIVE ACKNOWLEDGEMENT TO THE SYNC WORD
*        17.COMPARE INPUT AND OUTPUT DATA; REPORT ERROR CODE
*           23 IF BAD COMPARE 
*        18.IF PARAMETER P3 = 1, SIMULATE CYCLIC CODE 
*           AND ADD TO OB 
*        19.COMPARE OB AND IB; REPORT ERROR CODE 27 IF BAD
*           COMPARE (CYCLIC CODE BAD) 
*        20.GO TO STEP 4 AND REPEAT 100D TIMES
* 
*        -NOTE- REPEAT CONDITION (RC) CONSISTS OF STEPS 6-19
* 
*    3.0 ERRORS REPORTED
* 
*        1. EC - 01 ABORT ON RESERVE
*        2. EC - 02 ABORT ON FUNCTION 
*        3. EC - 05 ABORT ON INPUT DSC STATUS 
*        4. EC - 14 DSC*OCT SYNC WORD NOT ACKNOWLEDGED SET
*        5. EC - 17 DSC*OCT EQUIP FAILURE ON XMIT SEE STATUS
*        6. EC - 22 DSC*OCT STATUS INDICATES CYCLIC CODE ERROR
*        7. EC - 23 DATA COMP ERR ACT=*OCT EXP=*OCT WORD=*OCT 
*        8. EC - 24 DSC*OCT EQUIP FAILURE ON RECV SEE STATUS
*        9. EC - 27 CYCLIC CODE MISCOMPARE ACT=*OCT EXP=*OCT
*        10.EC - 30 ABORT ON .FOUT. COMMAND 
*        11.EC - 31 ABORT ON .FIN. COMMAND
* 
*    4.0 ENTRY CONDITIONS - NONE
/ 
*    5.0 REGISTER AND BUFFER USAGE
* 
*        B0 = DSC NUMBER
*        B1 = FUNCTION
*        B2 = LOOP TERMINATOR FOR INPUT 
*        B3 = INPUT WORD COUNTER
*        B4 = SCOPING LOOP COUNTER
*        B5 = ERROR CODE IF ABORT 
*        B6 = MODULE LOOP COUNTER 
*        B7 = MODULE ERROR COUNTER
*        B8 = WORD COUNT
* 
*        P0 = TRANSMITTING DSC
*        P1 = RECEIVING DSC 
*        P3 = CYCLIC CODE CHECK 
* 
*        SB(0) = DSC 0 STATUS 
*        SB(1) = DSC 1 STATUS 
*        SB(2) = DSC 2 STATUS 
*        SB(3) = DSC 3 STATUS 
*        SB(4) = STATUS ALL 
* 
*    6.0 SUBMODULES USED
* 
*        RT398A - ERROR PROCESSOR FOR COMMAND ABORTS
*        RT398B - ERROR PROCESSOR FOR MODULE ERRORS 
* 
* 
* ------------------DATA DIVISION---------------------------- 
* 
1  FORMAT RT305 - LOOPBACK RANDOM BLOCK LENGTHS 
2  FORMAT---------------------------------------------------
3  FORMAT RT305 - ERRORS IN MODULE=*DECD
4  FORMAT RT305 - LOOPS=*DECD ERRS=*DECD
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 1 TO DISPLAY,PRINT 
* 
* ------------------TEST------------------------------------- 
* 
   B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
22 B0 = P0                   *XMITING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P1                   *RECEIVING DSC 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
24 B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
25 B8 = RT .AND. 374         *RANDOM BLOCK LENGTH 
   IF(B8 .LT. 5)GOTO 25      *IF BLOCK TO SMALL 
* 
   RANDOM TO OB FOR B8       *PUT RANDOM DATA IN BUF
26 WC = 1 
   BA = 0                    *INITIALIZE OUTPUT COUNTER 
   B3 = P1 + 520             *SELECT INPUT PORT FUNCTION
   B0 = P1                   *RECEIVING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 550             *SELECT RECEIVE FUNCTION 
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P0                   *XMITING DSC 
   B1 = B0 + 540             *SELECT XMIT FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B1 = P0 + 520             *SELECT OUTPUT PORT FUNCTION 
   GOSUB 50                  *CHECK STATUS AND OUTPUT 
   GOSUB 46                  *GET DSCS STATUS 
   IF(SB(P1).AND.360.NE.0)ERROR 0/24,GOTO 64  *IF DSC ERR 
* 
   IF(SB(P0).AND.360.NE.0)ERROR 0/17,GOTO 64  *IF DSC ERR 
* 
   IF(SB(P1).AND.10.NE.0)ERROR 0/22,GOTO 64  *IF CYCLIC ERR 
* 
   IF(SB(P0).AND.4.NE.0)ERROR 0/14,GOTO 64  *IF SYNC NOT ACK
* 
   B5 = 23                   *ERROR CODE DATA ERROR 
   COMPARE IB TO OB FOR WC, ABT 64  *CHECK DATA 
   IF(P3 .AND. 1 .EQ. 0)GOTO 30   *IF NO CYCLIC CODE CHECK
* 
   CALL 98X                  *GENERATE CYCLIC CODE
   IF(OB(WC).NE.IB(WC))ERROR 0/27,GOTO 64  *IF CODES DIFFER 
* 
30 IF(ES .AND. RC .EQ. 0)GOTO 32  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNT 
   GOTO 66                   *REPEAT CONDITION
* 
32 GOTO 24 WHILE(B6 + 1 .LT. 100D)  *LOOP FOR 100D BLOCKS 
* 
34 IF(B7.NE.0) MSG 3(B7) TO DAYFILE  *IF ERRORS, REPORT IT
   EXIT 
* 
* ------------------DSC STATUS SUBROUTINE-------------------- 
* 
46 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P0 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P0),ABT 64  *INPUT DSC STATUS 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P1 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P1),ABT 64  *INPUT DSC STATUS 
   RETURN 
* 
* ------------------COMBINED INPUT/OUTPUT-------------------- 
* 
50 FOUT B1,ABT 60            *OUTPUT FIRST WORD 
   BA = BA + 1               *BUMP BUFFER POINTER 
52 FOUT B1,ABT 60            *SELECT PORT AND OUTPUT 1 WORD 
   FIN B3,ABT 62             *SELECT PORT AND INPUT 1 WORD
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   BA = BA + 1               *BUMP BUFFER POINTER 
   FOUT B1,ABT 60            *SELECT PORT AND OUTPUT
   FIN B3,ABT 62             *SELECT PORT AND INPUT 
   GOTO 52 WHILE(BA + 1 .LT. B8)  *IF XFER INCOMPLETE 
* 
   FIN B3,ABT 62         *SELECT PORT AND INPUT 
   BA = BA + 1           *BUMP BUFFER POINTER 
   FIN B3,ABT 62         *SELECT PORT AND INPUT 
   B8 = BA + 1
   COPY IB(1) TO IB(0) FOR B8  *REPOSITION INPUT BUFFER 
   WC = B8 - 2
   RETURN 
* 
* ------------------ABORT AND ERROR PROCESSOR---------------- 
* 
60 B5 = 30                   *ERROR CODE .FOUT. ABORT 
   GOTO 64                   *PROCESS ABORT 
* 
62 B5 = 31                   *ERROR CODE .FIN. ABORT
64 ENDSUB                    *END ACTIVE SUBROUTINES
   B7 = B7 + 1               *BUMP ERROR COUNTER
   IF(ES .AND. SL .NE. 0)GOTO 66  *IF SCOPING 
* 
   B5 = B5 + 500             *ADD MODULE NUMBER TO EC 
   CALL 98A                  *REPORT ERRORS 
   PICTURE
   HALT 
   BLANK
   MSG 2 TO PRINT 
   IF(B7 .GE. 5)GOTO 34      *IF 5 ERRORS IN MODULE 
* 
   MSG 1 TO DISPLAY 
   GOTO 24
* 
66 MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
70 B5 = 1                    *ERROR CODE IF ABORT 
   RES, ABT 64               *GET I/O CHANNEL 
   GOTO 26
* 
   END 20 
COMPILE         - RT305 - 
   MODULE RT306,6000(66)
***  RT306 - CYCLIC CODE CHECK
**
*    1.0 PURPOSE
* 
*        RT306 VERIFYS THAT THE TRANSMITTING DSC IS 
*        CAPABLE OF SENDING FIXED PATTERN BLOCKS OF 
*        2 WORDS, AND THAT THE RECEIVING DSC IS 
*        CAPABLE OF INPUTTING THE SAME. INDIVIDUAL
*        DSC STATUS IS CHECKED TO INSURE THE ABOVE. THIS
*        MODULE WILL ALSO SIMULATE THE CYCLIC CODE AND
*        COMPARE IT WITH THE GENERATED CODE.
* 
*    2.0 METHOD 
* 
*        1. RESERVE I/O CHANNEL 
*        2. ISSUE CLEAR DSC FUNCTION TO THE TRANSMITTING DSC
*        3. ISSUE CLEAR DSC FUNCTION TO THE RECEIVING DSC 
*        4. RESERVE I/O CHANNEL 
*        5. SET UP DATA PATTERN IN BLOCKS OF 2 WORDS WITH 
*           INITIAL PATTERN = 0001
*        6. ISSUE SELECT RECEIVE FUNCTION TO RECEIVING DSC
*        7. ISSUE SELECT TRANSMIT FUNCTION TO TRANSMITTING DSC
*        8. ISSUE SELECT PORT FUNCTION TO TRANSMITTING DSC AND
*           OUTPUT ONE (1) WORD 
*        9. ISSUE SELECT PORT FUNCTION TO RECEIVING DSC AND 
*           INPUT ONE (1) WORD
*        10.REPEAT STEPS 8 AND 9
*        11.ISSUE DSC STATUS FUNCTION TO TRANSMITTING DSC AND 
*           INPUT STATUS TO PP
*        12.ISSUE DSC STATUS FUNCTION TO RECEIVING DSC AND INPUT
*           STATUS TO PP
*        13.REPORT ERROR CODE 17 IF TRANSMITTING DSC STATUS 
*           INCORRECT 
*        14.REPORT ERROR CODE 24 IF RECEIVING DSC STATUS
*           INCORRECT 
*        15.SIMULATE CYCLIC CODE AND ADD TO OB
*        16.COMPARE OB AND IB; REPORT ERROR CODE 27 IF BAD
*           COMPARE (CYCLIC CODE BAD) 
*        17.REPORT ERROR CODE 22 IF RECEIVING DSC GOT A CYCLIC
*           CODE WORD ERROR 
*        18.ADD ONE (1) TO PATTERN AND REPEAT FROM STEP 4 TILL
*           PATTERN = 7777; THEN EXIT 
* 
*        -NOTE- REPEAT CONDITION (RC) CONSISTS OF STEPS 6-17
* 
*    3.0 ERRORS REPORTED
* 
*        1. EC - 01 ABORT ON RESERVE
*        2. EC - 02 ABORT ON FUNCTION 
*        3. EC - 05 ABORT ON INPUT DSC STATUS 
*        4. EC - 17 DSC*OCT EQUIP FAILURE ON XMIT SEE STATUS
*        5. EC - 21 ABORT ON OUTPUT OF DATA 
*        6. EC - 22 DSC*OCT STATUS INDICATES CYCLIC CODE ERROR
*        7. EC - 24 DSC*OCT EQUIP FAILURE ON RECV SEE STATUS
*        8. EC - 26 ABORT ON INPUT OF DATA
*        9. EC - 27 CYCLIC CODE MISCOMPARE ACT=*OCT EXP=*OCT
*        10.EC - 30 ABORT ON .FOUT. COMMAND 
*        11.EC - 31 ABORT ON .FIN. COMMAND
* 
*    4.0 ENTRY CONDITIONS - NONE
/ 
*    5.0 REGISTER AND BUFFER USAGE
* 
*        B0 = DSC NUMBER
*        B1 = FUNCTION
*        B2 = LOOP TERMINATOR FOR INPUT 
*        B3 = INPUT WORD COUNTER
*        B4 = SCOPING LOOP COUNTER
*        B5 = ERROR CODE IF ABORT 
*        B6 = CURRENT DATA PATTERN/MODULE LOOP COUNTER
*        B7 = MODULE ERROR COUNTER
* 
*        P0 = TRANSMITTING DSC
*        P1 = RECEIVING DSC 
* 
*        SB(0) = DSC 0 STATUS 
*        SB(1) = DSC 1 STATUS 
*        SB(2) = DSC 2 STATUS 
*        SB(3) = DSC 3 STATUS 
*        SB(4) = STATUS ALL 
* 
*    6.0 SUBMODULES USED
* 
*        RT398A - ERROR PROCESSOR FOR COMMAND ABORTS
*        RT398B - ERROR PROCESSOR FOR MODULE ERRORS 
* 
* 
* ------------------DATA DIVISION---------------------------- 
* 
1  FORMAT RT306 - CYCLIC CODE CHECK 
2  FORMAT---------------------------------------------------
3  FORMAT RT306 - ERRORS IN MODULE=*DECD
4  FORMAT RT306 - LOOPS=*DECD ERRS=*DECD
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 1 TO DISPLAY,PRINT 
   B6 = 1                    *STARTING DATA PATTERN 
* 
* ------------------TEST------------------------------------- 
* 
   B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
22 B0 = P0                   *XMITING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P1                   *RECEIVING DSC 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
24 B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
   WC = 2                    *DATA BLOCKS OF 2 WORDS
   DUP B6 TO OB FOR WC       *PUT DATA PATT IN OB 
26 BA = 0                    *INITIALIZE OUTPUT COUNTER 
   B3 = 0                    *INPUT WORD COUNTER
   B0 = P1                   *RECEIVING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 550             *SELECT RECEIVE FUNCTION 
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P0                   *XMITING DSC 
   B1 = B0 + 540             *SELECT XMIT FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   OUT 1 WORDS FROM OB(BA),ABT 64  *OUTPUT FIRST WORD 
   BA = BA + 1               *BUMP OUTPUT POINTER 
   B2 = WC + 1               *SET LOOP TERMINATION
   GOSUB 50                  *CHECK STATUS AND OUTPUT 
   DELAY 350D USEC        *WAIT FOR MUX TO UPDATE STATUS
   GOSUB 46                  *GET DSCS STATUS 
   IF(SB(P1).AND.360.NE.0)ERROR 0/24,GOTO 64  *IF DSC ERR 
* 
   IF(SB(P0).AND.360.NE.0)ERROR 0/17,GOTO 64  *IF DSC ERR 
* 
   GOSUB 71                  *SIMULATE CYCLIC CODE WORD 
   IF(OB(WC).NE.IB(WC))ERROR 0/27,GOTO 64  *IF CODES DIFFER 
* 
   IF(SB(P1).AND.10.NE.0)ERROR 0/22,GOTO 64  *IF CYCLIC ERR 
* 
30 IF(ES .AND. RC .EQ. 0)GOTO 32  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNT 
   GOTO 66                   *REPEAT CONDITION
* 
32 GOTO 24 WHILE(B6 + 1 .NE. 7777)  *CHECK ALL PATTERNS 
* 
34 IF(B7.NE.0) MSG 3(B7) TO DAYFILE  *IF ERRORS, REPORT IT
   GOTO 67                   *EXIT MODULE 
* 
* ------------------DSC STATUS SUBROUTINE-------------------- 
* 
46 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P0 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P0),ABT 64  *INPUT DSC STATUS 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P1 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P1),ABT 64  *INPUT DSC STATUS 
   RETURN 
* 
* ------------------COMBINED INPUT OUTPUT-------------------- 
* 
50 B1 = P0 + 520             *SELECT OUTPUT DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 21                   *ERROR CODE IF ABORT 
   OUT 1 WORDS FROM OB(BA),ABT 64  *OUTPUT DATA WORD
   BA = BA + 1                     *BUMP OUTPUT POINTER 
52 B1 = P1 + 520             *SELECT INPUT DSC
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 26                   *ERROR CODE IF ABORT 
   IN 1 WORDS TO IB(B3),ABT 64  *INPUT DATA WORD
   B3 = B3 + 1               *BUMP INPUT POINTER
   IF(BA .LT. WC)GOTO 50     *IF XMIT INCOMPLETE
* 
   IF(B3 .LT. B2)GOTO 52    *IF INPUT INCOMPLETE
* 
   RETURN 
* 
* ------------------ABORT AND ERROR PROCESSOR---------------- 
* 
64 ENDSUB                    *END ACTIVE SUBROUTINES
   B7 = B7 + 1               *BUMP ERROR COUNTER
   IF(ES .AND. SL .NE. 0)GOTO 66  *IF SCOPING 
* 
   B5 = B5 + 600             *ADD MODULE NUMBER TO EC 
   CALL 98A                  *REPORT ERRORS 
   PICTURE
   HALT 
   BLANK
   MSG 2 TO PRINT 
   IF(B7 .GE. 5)GOTO 34      *IF 5 ERRORS IN MODULE 
* 
   MSG 1 TO DISPLAY 
   GOTO 24
* 
66 MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
70 B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
   GOTO 26                   *REPEAT CONDITION
* 
* 
* ------------------SIMULATE CYCLIC CODE WORD---------------- 
* 
71 BA = 0 
   B5 = 0 
   B1 = WC
72 B2 = 12D 
   B8 = OB(BA)
73 IF(B8 .AND. 4000 .EQ. 0)GOTO 75
* 
   IF(B5 .AND. 4000 .EQ. 0)GOTO 76
* 
74 B5 = B5 .AND. 3777 
   B5 = B5 .LS. 1 
   GOTO 77
* 
75 IF(B5 .AND. 4000 .EQ. 0)GOTO 74
* 
76 B5 = B5 .AND. 3777 
   B5 = B5 .LS. 1 .XOR. 4017
77 B8 = B8 .AND. 3777 
   B8 = B8 .LS. 1 
   GOTO 73 WHILE(B2 - 1 .NE. 0) 
* 
   BA = BA + 1
   GOTO 72 WHILE(B1 - 1 .NE. 0) 
* 
   OB(WC) = B5
   B5 = 0 
   RETURN                    *EXIT SUBROUTINE 
67 END 20 
COMPILE         - RT306 - 
   MODULE RT320,6000(66)
***  RT320 - FIXED DATA PATTERN 
**
*    1.0 PURPOSE
* 
*        RT320 VERIFYS THAT THE TRANSMITTING DSC IS 
*        CAPABLE OF SENDING FIXED PATTERN BLOCKS OF 
*        2 WORDS, AND THAT THE RECEIVING DSC IS 
*        CAPABLE OF INPUTTING THE SAME. PARAMETER P4
*        IS USED AS THE PATTERN. INDIVIDUAL DSC 
*        STATUS IS CHECKED TO INSURE THE ABOVE. THIS
*        MODULE WILL ALSO SIMULATE THE CYCLIC CODE AND
*        COMPARE IT WITH THE GENERATED CODE.
* 
*    2.0 METHOD 
* 
*        1. RESERVE I/O CHANNEL 
*        2. ISSUE CLEAR DSC FUNCTION TO THE TRANSMITTING DSC
*        3. ISSUE CLEAR DSC FUNCTION TO THE RECEIVING DSC 
*        4. RESERVE I/O CHANNEL 
*        5. SET UP DATA PATTERN IN BLOCKS OF 2 WORDS WITH 
*           INITIAL PATTERN = PARAMETER P4
*        6. ISSUE SELECT RECEIVE FUNCTION TO RECEIVING DSC
*        7. ISSUE SELECT TRANSMIT FUNCTION TO TRANSMITTING DSC
*        8. ISSUE SELECT PORT FUNCTION TO TRANSMITTING DSC AND
*           OUTPUT ONE (1) WORD 
*        9. ISSUE SELECT PORT FUNCTION TO RECEIVING DSC AND 
*           INPUT ONE (1) WORD
*        10.REPEAT STEPS 8 AND 9
*        11.ISSUE DSC STATUS FUNCTION TO TRANSMITTING DSC AND 
*           INPUT STATUS TO PP
*        12.ISSUE DSC STATUS FUNCTION TO RECEIVING DSC AND INPUT
*           STATUS TO PP
*        13.REPORT ERROR CODE 17 IF TRANSMITTING DSC STATUS 
*           INCORRECT 
*        14.REPORT ERROR CODE 24 IF RECEIVING DSC STATUS
*           INCORRECT 
*        15.SIMULATE CYCLIC CODE AND ADD TO OB
*        16.COMPARE OB AND IB; REPORT ERROR CODE 27 IF BAD
*           COMPARE (CYCLIC CODE BAD) 
*        17.REPORT ERROR CODE 22 IF RECEIVING DSC GOT A CYCLIC
*           CODE WORD ERROR 
*        18.REPEAT FROM STEP 4 USING PARAMETER P4 PATTERN 
*           7777B TIMES 
* 
*        -NOTE- REPEAT CONDITION (RC) CONSISTS OF STEPS 6-17
* 
*    3.0 ERRORS REPORTED
* 
*        1. EC - 01 ABORT ON RESERVE
*        2. EC - 02 ABORT ON FUNCTION 
*        3. EC - 05 ABORT ON INPUT DSC STATUS 
*        4. EC - 17 DSC*OCT EQUIP FAILURE ON XMIT SEE STATUS
*        5. EC - 21 ABORT ON OUTPUT OF DATA 
*        6. EC - 22 DSC*OCT STATUS INDICATES CYCLIC CODE ERROR
*        7. EC - 24 DSC*OCT EQUIP FAILURE ON RECV SEE STATUS
*        8. EC - 26 ABORT ON INPUT OF DATA
*        9. EC - 27 CYCLIC CODE MISCOMPARE ACT=*OCT EXP=*OCT
*        10.EC - 30 ABORT ON .FOUT. COMMAND 
*        11.EC - 31 ABORT ON .FIN. COMMAND
* 
*    4.0 ENTRY CONDITIONS - NONE
/ 
*    5.0 REGISTER AND BUFFER USAGE
* 
*        B0 = DSC NUMBER
*        B1 = FUNCTION
*        B2 = LOOP TERMINATOR FOR INPUT 
*        B3 = INPUT WORD COUNTER
*        B4 = SCOPING LOOP COUNTER
*        B5 = ERROR CODE IF ABORT 
*        B6 = MODULE LOOP COUNTER 
*        B7 = MODULE ERROR COUNTER
* 
*        P0 = TRANSMITTING DSC
*        P1 = RECEIVING DSC 
*        P4 = DATA PATTERN
* 
*        SB(0) = DSC 0 STATUS 
*        SB(1) = DSC 1 STATUS 
*        SB(2) = DSC 2 STATUS 
*        SB(3) = DSC 3 STATUS 
*        SB(4) = STATUS ALL 
* 
*    6.0 SUBMODULES USED
* 
*        RT398A - ERROR PROCESSOR FOR COMMAND ABORTS
*        RT398B - ERROR PROCESSOR FOR MODULE ERRORS 
* 
* 
* ------------------DATA DIVISION---------------------------- 
* 
1  FORMAT RT320 - FIXED DATA PATTERN
2  FORMAT---------------------------------------------------
3  FORMAT RT320 - ERRORS IN MODULE=*DECD
4  FORMAT RT320 - LOOPS=*DECD ERRS=*DECD
* 
* ------------------INITIALIZATION--------------------------- 
* 
20 MSG 1 TO DISPLAY,PRINT 
   B6 = 1                    *STARTING LOOP COUNT 
* 
* ------------------TEST------------------------------------- 
* 
   B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
22 B0 = P0                   *XMITING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P1                   *RECEIVING DSC 
   B1 = B0 + 530             *CLEAR DSC FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
24 B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
   WC = 2                    *DATA BLOCKS OF 2 WORDS
   B0 = P4                   *GET FIXED PATTERN 
   DUP B0 TO OB FOR WC       *PUT DATA PATT IN OB 
26 BA = 0                    *INITIALIZE OUTPUT COUNTER 
   B3 = 0                    *INPUT WORD COUNTER
   B0 = P1                   *RECEIVING DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = B0 + 550             *SELECT RECEIVE FUNCTION 
   FUNC B1, ABT 64           *ISSUE FUNCTION
   B0 = P0                   *XMITING DSC 
   B1 = B0 + 540             *SELECT XMIT FUNCTION
   FUNC B1, ABT 64           *ISSUE FUNCTION
   OUT 1 WORDS FROM OB(BA),ABT 64  *OUTPUT FIRST WORD 
   BA = BA + 1               *BUMP OUTPUT POINTER 
   B2 = WC + 1               *SET LOOP TERMINATION
   GOSUB 50                  *CHECK STATUS AND OUTPUT 
   DELAY 350D USEC        *WAIT FOR MUX TO UPDATE STATUS
   GOSUB 46                  *GET DSCS STATUS 
   IF(SB(P1).AND.360.NE.0)ERROR 0/24,GOTO 64  *IF DSC ERR 
* 
   IF(SB(P0).AND.360.NE.0)ERROR 0/17,GOTO 64  *IF DSC ERR 
* 
   GOSUB 71                  *SIMULATE CYCLIC CODE WORD 
   IF(OB(WC).NE.IB(WC))ERROR 0/27,GOTO 64  *IF CODES DIFFER 
* 
   IF(SB(P1).AND.10.NE.0)ERROR 0/22,GOTO 64  *IF CYCLIC ERR 
* 
30 IF(ES .AND. RC .EQ. 0)GOTO 32  *IF NOT REPEATING 
* 
   B4 = B4 + 1               *BUMP LOOP COUNT 
   GOTO 66                   *REPEAT CONDITION
* 
32 GOTO 24 WHILE(B6 + 1 .NE. 7777)  *CHECK ALL PATTERNS 
* 
34 IF(B7.NE.0) MSG 3(B7) TO DAYFILE  *IF ERRORS, REPORT IT
   GOTO 67                   *EXIT MODULE 
* 
* ------------------DSC STATUS SUBROUTINE-------------------- 
* 
46 B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P0 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P0),ABT 64  *INPUT DSC STATUS 
   B5 = 2                    *ERROR CODE IF ABORT 
   B1 = P1 + 510             *DSC STATUS FUNCTION 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 5                    *ERROR CODE IF ABORT 
   STATUS 1 WORDS TO SB(P1),ABT 64  *INPUT DSC STATUS 
   RETURN 
* 
* ------------------COMBINED INPUT OUTPUT-------------------- 
* 
50 B1 = P0 + 520             *SELECT OUTPUT DSC 
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 21                   *ERROR CODE IF ABORT 
   OUT 1 WORDS FROM OB(BA),ABT 64  *OUTPUT DATA WORD
   BA = BA + 1                     *BUMP OUTPUT POINTER 
52 B1 = P1 + 520             *SELECT INPUT DSC
   B5 = 2                    *ERROR CODE IF ABORT 
   FUNC B1,ABT 64            *ISSUE FUNCTION
   B5 = 26                   *ERROR CODE IF ABORT 
   IN 1 WORDS TO IB(B3),ABT 64  *INPUT DATA WORD
   B3 = B3 + 1               *BUMP INPUT POINTER
   IF(BA .LT. WC)GOTO 50     *IF XMIT INCOMPLETE
* 
   IF(B3 .LT. B2)GOTO 52    *IF INPUT INCOMPLETE
* 
   RETURN 
* 
* ------------------ABORT AND ERROR PROCESSOR---------------- 
* 
64 ENDSUB                    *END ACTIVE SUBROUTINES
   B7 = B7 + 1               *BUMP ERROR COUNTER
   IF(ES .AND. SL .NE. 0)GOTO 66  *IF SCOPING 
* 
   B5 = B5 + 2000            *ADD MODULE NUMBER TO EC 
   CALL 98A                  *REPORT ERRORS 
   PICTURE
   HALT 
   BLANK
   MSG 2 TO PRINT 
   IF(B7 .GE. 5)GOTO 34      *IF 5 ERRORS IN MODULE 
* 
   MSG 1 TO DISPLAY 
   GOTO 24
* 
66 MSG 4(B4,B7)TO DISPLAY    *POST SCOPING MSG
70 B5 = 1                    *ERROR CODE IF ABORT 
   RES,ABT 64                *GET I/O CHANNEL 
   GOTO 26                   *REPEAT CONDITION
* 
* 
* ------------------SIMULATE CYCLIC CODE WORD---------------- 
* 
71 BA = 0 
   B5 = 0 
   B1 = WC
72 B2 = 12D 
   B8 = OB(BA)
73 IF(B8 .AND. 4000 .EQ. 0)GOTO 75
* 
   IF(B5 .AND. 4000 .EQ. 0)GOTO 76
* 
74 B5 = B5 .AND. 3777 
   B5 = B5 .LS. 1 
   GOTO 77
* 
75 IF(B5 .AND. 4000 .EQ. 0)GOTO 74
* 
76 B5 = B5 .AND. 3777 
   B5 = B5 .LS. 1 .XOR. 4017
77 B8 = B8 .AND. 3777 
   B8 = B8 .LS. 1 
   GOTO 73 WHILE(B2 - 1 .NE. 0) 
* 
   BA = BA + 1
   GOTO 72 WHILE(B1 - 1 .NE. 0) 
* 
   OB(WC) = B5
   B5 = 0 
   RETURN                    *EXIT SUBROUTINE 
67 END 20 
COMPILE         - RT320 - 
   MODULE RT398A,6000(66) 
1  FORMAT ERROR FROM MODULE *OCT  ERROR COUNT = *DECD 
2  FORMAT             REGISTER CONTENTS 
3  FORMAT   B0   B1   B2   B3   B4   B5   B6   B7 
4  FORMAT  *OCT *OCT *OCT *OCT *OCT *OCT *OCT *OCT
5  FORMAT   B8   BA   LF   WT   WC   EA   EC   EM 
6  FORMAT                 MUX STATUS
7  FORMAT        DSC0 DSC1 DSC2 DSC3 STATUS-ALL 
10 FORMAT        *OCT *OCT *OCT *OCT    *OCT
11 FORMAT            LAST FUNCTION = *OCT 
12 FORMAT EC - 01 ABORT ON RESERVE
13 FORMAT EC - 02 ABORT ON FUNCTION 
14 FORMAT EC - 03 ABORT ON INPUT STATUS-ALL 
15 FORMAT EC - 05 ABORT ON INPUT DSC STATUS 
16 FORMAT EC - 13 ABORT ON OUTPUT INTERRUPT WORD
17 FORMAT EC - 21 ABORT ON OUTPUT OF DATA 
20 FORMAT EC - 26 ABORT ON INPUT OF DATA
21 FORMAT   P0   P1   P2   P3   P4   P5   P6   P7 
22 FORMAT EC - 30 ABORT ON .FOUT. COMMAND 
23 FORMAT EC - 31 ABORT ON .FIN. COMMAND
30 IB(410) = B0 
   IB(411) = B1 
   IB(412) = B2 
   IB(413) = B3 
   IB(414) = B4 
   IB(415) = B5 
   IB(416) = B6 
   IB(417) = B7 
   B5 = B5 .RS. 6            *GET MODULE NUMBER 
   B0 = 1                    *STARTING LINE NUMBER
   MSG 1(B5,B7)TO LINE B0    *POST ERR MSG
   B0 = B0 + 1               *BUMP LINE NUMBER
   MSG 2 TO LINE B0          *REGISTER CONTENTS 
   B0 = B0 + 1               *BUMP LINE COUNTER 
   MSG 3 TO LINE B0 
   B0 = B0 + 1               *BUMP LINE COUNTER 
   MSG 4,8 WORDS FROM IB(410)TO LINE B0  *POST B BOXES
   B0 = B0 + 1               *BUMP LINE NUMBER
   MSG 5 TO LINE B0 
   B0 = B0 + 1               *BUMP LINE NUMBER
   MSG 4(B8,BA,LF,WT,WC,EA,EC,EM)TO LINE B0 
   B0 = B0 + 1               *BUMP LINE NUMBER
   MSG 21 TO LINE B0
   B0 = B0 + 1             *BUMP LINE NUMBER
   MSG 4(P0,P1,P2,P3,P4,P5,P6,P7)TO LINE B0 
   B0 = B0 + 1             *BUMP LINE NUMBER
   MSG 6 TO LINE B0 
   B0 = B0 + 1               *BUMP LINE NUMBER
   MSG 7 TO LINE B0 
   B0 = B0 + 1               *BUMP LINE NUMBER
   MSG 10,5 WORDS FROM SB TO LINE B0   *POST MUX STATUS 
   B0 = B0 + 1               *BUMP LINE NUMBER
   MSG 11(LF)TO LINE B0      *POST LAST FUNCTION
   B0 = B0 + 1
   B5 = IB(415) .AND. 77     *GET ERROR CODE
   IF(EC .LT. 4000)GOTO 40   *IF NOT P.O. ERROR 
* 
   IF(B5.EQ.1)MSG 12 TO LINE B0   *IF ERROR CODE 1
* 
   IF(B5.EQ.2)MSG 13 TO LINE B0   *IF ERROR CODE 2
* 
   IF(B5.EQ.3)MSG 14 TO LINE B0   *IF ERROR CODE 3
* 
   IF(B5.EQ.5)MSG 15 TO LINE B0   *IF ERROR CODE 5
* 
   IF(B5.EQ.13)MSG 16 TO LINE B0  *IF ERROR CODE 13 
* 
   IF(B5.EQ.21)MSG 17 TO LINE B0  *IF ERROR CODE 21 
* 
   IF(B5.EQ.26)MSG 20 TO LINE B0  *IF ERROR CODE 26 
* 
   IF(B5.EQ.30)MSG 22 TO LINE B0  *IF ERROR CODE 30 
* 
   IF(B5.EQ.31)MSG 23 TO LINE B0  *IF ERROR CODE 31 
* 
37 B0 = B0 + 1               *BUMP LINE NUMBER
   MSG EM TO LINE B0         *POST P.O. MSG 
* 
* ------------------RESTORE REGISTERS AND EXIT------------- 
* 
   B0 = IB(410) 
   B1 = IB(411) 
   B2 = IB(412) 
   B3 = IB(413) 
   B4 = IB(414) 
   B5 = IB(415) 
   B6 = IB(416) 
   B7 = IB(417) 
   EXIT 
40 EXIT TO 98B
   END 30 
COMPILE         - RT398A -
   MODULE RT398B,6000(66) 
1  FORMAT EC - 04 STATUS-ALL ERROR EXP=0000 ACT=*OCT
2  FORMAT EC - 06 DSC*OCT STATUS ERROR EXP=0000 ACT=*OCT
3  FORMAT EC - 07 STATUS-ALL ERROR EXP=*OCT ACT=*OCT
4  FORMAT EC - 10 DSC*OCT STATUS ERROR EXP=4006 ACT=*OCT
5  FORMAT EC - 11 DSC*OCT STATUS ERROR EXP=0002 ACT=*OCT
6  FORMAT EC - 12 DSC*OCT HUNG BUSY 
7  FORMAT EC - 14 DSC*OCT SYNC WORD NOT ACKNOWLEDGED SET
10 FORMAT EC - 15 DSC*OCT INTERRUPT RECEIVED NOT SET
11 FORMAT EC - 16 DSC*OCT INTERRUPT RECEIVED FAILED TO CLEAR
12 FORMAT EC - 17 DSC*OCT EQUIP FAILURE ON XMIT SEE STATUS
13 FORMAT EC - 22 DSC*OCT STATUS INDICATES CYCLIC CODE ERROR
14 FORMAT EC - 23 DATA COMP ERR ACT=*OCT EXP=*OCT WORD=*OCT 
15 FORMAT EC - 24 DSC*OCT EQUIP FAILURE ON RECV SEE STATUS
16 FORMAT EC - 27 CYCLIC CODE MISCOMPARE ACT=*OCT EXP=*OCT
30 B5 = IB(415) .AND. 77     *MASK OFF ERROR CODE 
   IF(B5.NE.23)B5=EC         *IF NOT ERROR 23 USE EC REGISTER 
   B1 = IB(410)              *GET DSC NUMBER
   IF(B5 .NE. 4)GOTO 31      *IF NOT EC=4 
* 
   MSG 1(SB(4))TO LINE B0    *POST EC=4 MSG 
31 IF(B5 .NE. 6)GOTO 32      *IF NOT EC=6 
* 
   MSG 2(B1,SB(B1))TO LINE B0  *POST EC=6 MSG 
32 IF(B5 .NE. 7)GOTO 33      *IF NOT EC=7 
* 
   MSG 3(OB(B1),SB(4))TO LINE B0  *POST EC=7 MSG
33 IF(B5 .NE. 10)GOTO 34     *IF NOT EC=10
* 
   MSG 4(B1,SB(B1))TO LINE B0  *POST EC=10 MSG
34 IF(B5 .NE. 11)GOTO 35     *IF NOT EC=11
* 
   MSG 5(B1,SB(B1))TO LINE B0  *POST EC=11 MSG
35 IF(B5 .NE. 12)GOTO 36     *IF NOT EC=12
* 
   MSG 6(B1)TO LINE B0       *POST EC=12 MSG
36 IF(B5 .NE. 14)GOTO 37     *IF NOT EC=14
* 
   MSG 7(B1)TO LINE B0       *POST EC=14 MSG
37 IF(B5 .NE. 15)GOTO 40     *IF NOT EC=15
* 
   MSG 10(B1)TO LINE B0      *POST EC=15 MSG
40 IF(B5 .NE. 16)GOTO 41     *IF NOT EC=16
* 
   MSG 11(B1)TO LINE B0      *POST EC=16 MSG
41 IF(B5 .NE. 17)GOTO 42     *IF NOT EC=17
* 
   MSG 12(P0)TO LINE B0      *POST EC=17 MSG
42 IF(B5 .NE. 22)GOTO 43     *IF NOT EC=22
* 
   MSG 13(P1)TO LINE B0      *POST EC=22 MSG
43 IF(B5 .NE. 23)GOTO 44     *IF NOT EC=23
* 
   MSG 14(IB(WC),OB(WC),WC)TO LINE B0  *POST EC=23 MSG
44 IF(B5 .NE. 24)GOTO 45     *IF NOT EC=24
* 
   MSG 15(P1)TO LINE B0      *POST EC=24 MSG
45 IF(B5 .NE. 27)GOTO 46     *IF NOT EC=27
* 
   MSG 16(IB(WC),OB(WC))TO LINE B0  *POST EC=27 MSG 
* 
* - - -  RESTORE REGISTERS AND EXIT 
* 
46 B0 = IB(410) 
   B1 = IB(411) 
   B2 = IB(412) 
   B3 = IB(413) 
   B4 = IB(414) 
   B5 = IB(415) 
   B6 = IB(416) 
   B7 = IB(417) 
   EXIT 
   END 30 
COMPILE         - RT398B -
   MODULE RT398X,6000(66) 
20 BA = 0 
   B5 = 0 
   B1 = WC
22 B2 = 12D 
   B4 = OB(BA)
23 IF(B4 .AND. 4000 .EQ. 0)GOTO 26
* 
   IF(B5 .AND. 4000 .EQ. 0)GOTO 30
* 
24 B5 = B5 .AND. 3777 
   B5 = B5 .LS. 1 
   GOTO 32
* 
26 IF(B5 .AND. 4000 .EQ. 0)GOTO 24
* 
30 B5 = B5 .AND. 3777 
   B5 = B5 .LS. 1 .XOR. 4017
32 B4 = B4 .AND. 3777 
   B4 = B4 .LS. 1 
   GOTO 23 WHILE(B2 - 1 .NE. 0) 
* 
   BA = BA + 1
   GOTO 22 WHILE(B1 - 1 .NE. 0) 
* 
   OB(WC) = B5
   B5 = 0 
   EXIT 
   END 20 
COMPILE         - RT398X -
   MODULE RT399,6000(66)
***  RT399 - PARAMETERS 
**
* 
/ 
/  PARAMETER DESCRIPTION
/ 
/  P0 = TRANSMITTING DSC
/ 
/  P1 = RECEIVING DSC 
/ 
/  P2 = NUMBER OF DSC-S TO TEST 
/ 
/  P3 = XXX1; PROVIDE CYCLIC CODE SIMULATION
/       FOR MODULES 03/04/05
/ 
/  P4 = DATA PATTERN FOR MODULE 20
/ 
 1 END 1
COMPILE,SOURCE      - RT399 - PARAMETERS
   MODULE RT399A,6000(66) 
***  RT399A - LIST OF MODULES 
**
* 
/ 
/  MODULE          MODULE              ACCESS    RUN
/  NUMBER          DESCRIPTION         LEVEL     TIME 
/  ------          -----------         ------    ---- 
/ 
/  1. CONFIDENCE TEST MODULES 
/ 
/   01  STATUS TEST                      20       2 SEC.
/   02  LOOPBACK INTERRUPT TEST          20       2 SEC.
/   03  LOOPBACK DATA PATTERNS           20       2 SEC.
/   04  LOOPBACK RANDOM PATTERNS         20      10 SEC.
/   05  LOOPBACK RANDOM BLOCK LENGTHS    20       6 SEC.
/   06  CYCLIC CODE CHECK                20      19 SEC.
/ 
/ 
/  2. PARAMETER DRIVEN MODULES
/ 
/   20  FIXED DATA PATTERN               20      19 SEC.
/ 
 1 END 1
COMPILE,SOURCE      - RT399A - LIST OF MODULES
