*DECK RT5 
*** RT5 - A 6671 DIAGNOSTIC BASED ON THE SMM DIAGNOSTIC RT5 
*** EXTERNAL DOCUMENTATION
**
* 
* AUTHOR - CONCURRENT MAINTENANCE SOFTWARE DEVELOPEMENT 
*          MAINTENANCE SOFTWARE ENGINNERING 
*          QUALITY AND ENGEERING ORGANIZATION 
* 
* OVERVIEW - RT5 IS A DIAGNOSTIC FOR THE 6671 IN EITHER SYCHRONOUS
*            (201) MODE OR ASYNCHRONOUS (103) MODE ON ONE PORT USING THE
*            BUILT-IN SIMULATOR.
* 
* CALL - RUN RT5  OR RUN RT5(00,15,16)
* 
* 
* AFTER THE TEST CABLE IS CONNECTED FROM THE SIMULATOR TO THE PORT TO BE
* TESTED AND THE EQUIPMENT ASSIGNED THE FOLLOWING PARAMETERS NEED TO  BE
* SET.
* 
* PARAMETERS -
* 
* 
* THE  ASSIGNMENT  OF  THE PORT IS ACCOMPLISHED VIA THE USE OF THE PARA-
* METER REGISTERS P0 AND P1 (MAKE BOTH THE SAME AND SPECIFY D SO THE
* PORT NUMBER SELECTED IS THE SAME AS THE DECIMAL NUMBERED TEST CABLE 
* CONNECTOR).  THE CONTENTS OF P0 DEFINES THE OUTPUT PORT AND THE CON-
* TENTS OF P1 REGISTER IS THE INPUT PORT.  THE USER MUST ALSO SUPPLY A
* BAUD INDEX TO THE OVERLAY IN THE P2 REGISTER.  THE INDEX DEFINES THE
* BAUD RATE OF THE PORTS BEING DRIVEN.
* 
* 
*        110 =   110 BAUD ASYNC. (103 MODE) 
*        134 = 134.5 BAUD ASYNC. (103 MODE) 
*        150 =   150 BAUD ASYNC. (103 MODE) 
*        300 =   300 BAUD ASYNC. (103 MODE) 
*        600 =   600 BAUD ASYNC. (103 MODE) 
*       1200 =  1200 BAUD ASYNC. (103 MODE) 
* 
*       2000 =  2000 BAUD SYNC. (201 MODE)  SIMULATOR/LOOP BACK 
*       2400 =  2400 BAUD SYNC. (201 MODE)  SIMULATOR 
*       4000 =  4800 BAUD SYNC. (201 MODE)  SIMULATOR 
*       6000 =  9600 BAUD SYNC. (201 MODE)  SIMULATOR 
* 
*       2401 =  2400 BAUD SYNC. (201 MODE) 6671 MODEM LOOP-BACK 
*       4001 =  4800 BAUD SYNC. (201 MODE) 6671 MODEM LOOP-BACK 
*       6001 =  9600 BAUD SYNC. (201 MODE) 6671 MODEM LOOP-BACK 
* 
* 
* THE USER MAY SUPPLY A VALUE OF 0 THRU 7 IN THE P3 REGISTER  TO  DEFINE
* THE  NUMBER  OF  EXTRA BIT TIMES TO APPLY TO THE INPUT AND OUTPUT COM-
* MANDS (NORMALLY THIS IS LEFT ZERO). THIS REGISTER IS ALSO USED FOR THE
* FOLLOWING FLAGS - 
* 
*      BIT 0 = TRANSPARENT MODE 6671
*      BIT 1 = FULL DUPLEX. (CONSTANT CARRIER OPERATION)
*      BIT 2 = RESERVED.
*      BIT 3 = RESERVED.
*      BIT 4 = RESERVED.
*      BIT 5 = RESERVED.
*      BIT 6 = 2550-100 EMULATION.
*      BIT 7 = 8 PORT MUX.( ASSUMED IF 9600 BAUD 6671 ) 
*      BIT 8 = FULL WORD COUNT I/O. (NORMALLY TO THE HIGHEST PORT)
*      BITS 9 - 11 = EXTRA BIT TIMES. 
* 
* P4 REGISTER MAY BE USED  TO  SUPPLY  THE  SYNC  CODE  FOR  SYNCHRONOUS
* OPERATION  IF  IT IS A CODE OTHER THAN 026.  IF THE LOWER 8 BITS OF P4
* ARE ZERO, 026 WILL BE USED. OTHERWISE, THE VALUE SUPPLIED IN THE LOWER
* 8 BITS WILL BE USED.
* 
* P5 SET TO NON-ZERO WILL CAUSE THE LOOP FOR REPEAT CONDITION IN MODULES
* 15 (MEMORY TEST) AND 16 (MEMORY ADDRESSING TEST) TO BE LIMITED TO READ
* AND TEST RATHER THEN WRITE, READ, AND TEST. 
* 
* 
*                            *********
*                            *N O T E*
*                            *********
* 
* 
*  WHEN RUNNING IN SIMULATOR MODE,  SETTING P2 TO A 2400, 4000, OR 6000 
*  BAUD INDEX RESULTS IN A CHARACTER/BIT TIME EQUAL TO 2000 BAUD. IF THE
*  SIMULATOR CLOCK IS SET TO ANYTHING OTHER THAN 2000 BAUD, RT5 WILL
*  FAIL. ALSO AN INCORRECT SETTING OF THE SIMULATOR CLOCK WILL CAUSE
*  FALSE ERRORS IN RT5. 
* 
* 
*                            ABREVIATIONS 
*                            ------------ 
* 
*  LC = LOOP COUNT             EC = ERROR COUNT        S = SYNC BIT 
*  SA = SYNCA               ERCNT = ERROR COUNT       CO = CARRIER ON 
*  CC = CLEAR CARRIER BIT      DL = DROP LINE BIT     MR = MODEM READY
* MEM = MEMORY TEST             W = WORD               T = TERMINAL 
* MAD = MEMORY ADDRESS TEST    AW = ACTUAL WORD       EW = EXPECTED WORD
*   E = EXPECTED              TTY = TELETYPE           A = ACTUAL 
* 
*       DIP = DISASSEMBLY IN PROCESS BIT  CR = CHARACTER REJECT 
*       MPC = MESSAGE PARITY CHARACTER    ET = EXPECTED TERMINAL
*       EOM = END OF MESSAGE CHARACTER   SOM = START OF MESSAGE 
*      MODL = MODULE                           CHARACTER. 
* 
   MODULE RT500,6000(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TESTS ALL 6671 FUNCTIONS.
* 
*              RUNS ALL BAUD RATES. 
* 
*  DESCRIPTION - TEST FUNCTIONS.
* 
*                1. ISSUE FUNCTION. 
*                2. CHECK CHANNEL INACTIVE. 
*                3. REPEAT FOR ALL FUNCTIONS. 
*                4. REPEAT 10 TIMES.
* 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*                1. ALL PRODUCT OVERLAY MESSAGES. 
*                2. FUNCTION =
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-2 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT500 - 6671 FUNCTION TEST
 2 FORMAT FUNCTION = *OCT 
 3 FORMAT LOOP = *DEC, ERROR = *DEC, EC=*OCT, FNC = *OCT
 4 FORMAT RT500 - ERROR(S) IN MODULE
* 
*         FUNCTION TABLE
* 
   DATA (OB,CON) 0,1,2,3,100,200,400,500,600  *FUNCTIONS
* 
*         DISPLAY SECTION MESSAGE.
* 
/        FUNCTION TEST
20 MSG 1 TO PRINT           *PRINT SECTION MESSAGE
   WC=0 
21 MSG 1 TO DISPLAY         *DISPLAY SECTION MESSAGE
   B1=0                     *CLEAR STORE POINTER
* 
*         RESERVE AND FUNCTION CHANNEL. 
* 
22 B2=0                     *CLEAR LOOP COUNTER 
23 RES                      *RESERVE CHANNEL
24 FUNC OB(B2),ABT 40       *SENT FUNCTION
25 BA=BA+1
   IF (ES.AND.SL.EQ.0) GOTO 26   *IF NOT SCOPING LOOP 
   MSG 3 (BA,WC,EC,LF) TO DISPLAY 
* 
*         REPEAT FUNCTION ON REPEAT CONDITION.
* 
26 IF (ES.AND.RC.NE.0) GOTO 23   *IF REPEAT CONDITION 
* 
  
  
  
  
*         REPEAT FOR ALL FUNCTIONS. 
* 
   GOTO 24 WHILE (B2+1.NE.11)    *LOOP FOR ALL FUNCTIONS
* 
*         REPEAT 10 TIMES.
* 
   GOTO 22 WHILE (B1+1.NE.12)    *LOOP 10 TIMES 
* 
*         REPEAT MODULE.
* 
   IF (ES.AND.RM.NE.0) GOTO 21   *IF REPEAT MODULE
* 
*         EXIT MODULE.
* 
   IF (WC.EQ.0) GOTO 27          *IF NO ERRORS
   MSG 4 TO DAYFILE              * POST DAYFILE MESSAGE 
27 IF (B0.EQ.0) GOTO 30          *IF NOTHING ON SCREEN
   PICTURE                       *TAKE PICTURE AT END 
30 EXIT                          *END 
* 
*         DISPLAY ERRORS. 
* 
/        PROCESS ERRORS 
40 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.NE.0) GOTO 25   *IF SCOPING LOOP 
   MSG EM TO LINE B0             *POST ERROR MESSAGE
   B0=B0+1                       *BUMP LINE 
   MSG 2 (LF) TO LINE B0         *POST FUNCTION MESSAGE 
* 
*  HANDLE TERMINAL MODE ERROR DISPLAY 
* 
   IF (ES.AND.TM.EQ.0) GOTO 41
   PICTURE
   HALT 
   BLANK
   B0=0 
   RES
   GOTO 25
* 
*  K/L ERROR DISPLAY
* 
41 IF (ES.AND.SE.EQ.0) GOTO 42
   HALT                          *STOP ON ERROR 
   RES
42 GOTO 25 WHILE (B0+1.LT.47)    *IF SCREEN NOT FULL
   PICTURE                       *TAKE PICTURE
   BLANK                         *BLANK SCREEN
   RES
   B0=0                          *RESET LINE POINTER
   GOTO 25                       *RETURN
   END 20 
COMPILE 
   MODULE RT501,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST 1XXX CONTROL. 
* 
*              RUNS SYNCHRONOUS (201 MODE) ONLY.
* 
*  DESCRIPTION - TEST 1XXX CONTROL CODE.
* 
*                1. SET SYNC BIT. 
*                2. OUTPUT 1XXX, SYNC CHARACTER, AND DATA.
*                3. CHECK SYNC BIT AFTER EACH OUTPUT. 
*                4. SET SYNC. 
*                5. OUTPUT 1XXX, 4 SYNC CHARACTERS, AND DATA. 
*                6. CHECK SYNC BIT AFTER EACH OUTPUT. 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. SYNC AND SYNCA BIT NOT SETTING. 
*                3. SYNC AND SYNCA SETTING IN WRONG SEQUENCE. 
*                4. SYNC AND SYNCA SETTING ON 1 SYNC CHARACTER. 
*                5. SYNC AND SYNCA SET AT SAME TIME.
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0002,SA AND S BIT=*OCT AFTER 1000 SENT 
*    3. EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
*    4. EC=0005,SA AND S BIT=*OCT,1 SYNC AND 1 4377 SENT
*    5. EC=0002,SA AND S BIT=*OCT AFTER 1000 SENT 
*    6. EC=0006,S BIT SET BEFORE SA BIT 
*    7. EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
*    8. EC=0010,SA AND S BIT SET AT SAME TIME 
*    9. EC=0011,SA BIT SET, S BIT NOT SET AFTER 4 SYNCS 
*   10. EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
*   11. EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
*   12. EC=0014,S BIT DROPPED AFTER IT WAS SET
*   13. EC=0112,TRANSPARENT MODE,EXPECTED SYNC,RECVD *OCT 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-3 IN DESCRIPTION FOR ERRORS 2,4,5.
*                2. 4-6 IN DESCRIPTION FOR ERRORS 2-112.
* 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  S=SYNC BIT,SA=SYNCA BIT,VCS=VALID CHARACTER STATUS 
/ 
 1 FORMAT RT501 - 6671 RESYNC (1000) TEST 
* 
*         RUN ONLY IN SYNCHRONOUS MODE. 
* 
20 IF (P2.GE.2000) GOTO 21  *IF 201 MODE
   EXIT                     *ELSE SKIP SECTION
* 
*         POST RUN MESSAGE. 
* 
21 MSG 1 TO DISPLAY,PRINT   *DISPLAY SECTION MESSAGE
   EXIT TO 010              *EXIT TO MODULE 
   END 20 
COMPILE 
   MODULE RT5010,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  S=SYNC BIT,SA=SYNCA BIT,VCS=VALID CHARACTER STATUS 
/ 
 1 FORMAT RT501 - 6671 RESYNC (1000) TEST 
 2 FORMAT EC=0002,SA AND S BIT=*OCT AFTER 1000 SENT 
 3 FORMAT EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
 4 FORMAT EC=0005,SA AND S BIT=*OCT,1 SYNC AND 1 4377 SENT
 5 FORMAT LC = *DEC, ERCNT = *DEC 
* 
*         DISPLAY SECTION MESSAGE.
* 
/        CHECK SYNC BIT CLEAR AFTER 1000 + DOESNT SET ON 1
/        SYNC + NO DATA COMES IN -  DO I/O AND SAVE RESULTS 
20 MSG 1 TO DISPLAY         *DISPLAY SECTION MESSAGE
   B0=0 
   WC=0 
21 B1=0 
* 
*         RESERVE CHANNEL,ENABLE DTR, AND CLEAR MUX.
* 
   RES                      *RESERVE CHANNEL
   WRITE 7000,ABT 70        *BRING UP DTR ON OUTPUT 
   WRITE 7000 TO PORT P1,ABT 70  *BRING UP DTR ON INPUT 
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70 
* 
*         SET SYNC BIT, OUTPUT RESYNC AND SYNC CHARACTER. 
* 
   MAINTWR 20 TO WORD 3 OF PORT P1,ABT 70  *SET SYNC BIT
   OUTPUT 1000 TO PORT P1,ABT 70  *OUTPUT 1000 (CLEAR SYNC) 
   OUTPUT 1000 TO PORT P1,ABT 70  *OUTPUT 1000 (CLEAR SYNC) 
   OUTPUT P4,ABT 70         *OUTPUT SYNC CHARACTER
* 
*         OUTPUT 2 CHARACTERS GETTING SYNC AND SYNCA BITS.
* 
   GOSUB 64                 *RD WORD 3
   OUTPUT 4377,ABT 70       *OUTPUT CHARACTER 
   WAIT HALF                *WAIT 1/2 CHARACTER TIME
   OUTPUT 4377,ABT 70       *OUTPUT CHARACTER 
   IF (P2.LT.4000) GOTO 22  *IF NOT 4800/9600 
   WAIT BIT                 *WAIT 1 BIT TIME
22 GOSUB 64                 *READ WD 3,EXP - S=0
   WAIT CHAR                *WAIT CHARACTER TIME
   GOSUB 64                 *READ WD 3,EXP - S+SA=0 
   READ TO IB(B1),ABT 70    *READ INPUT BUFFER,EXP - VCS=0
* 
*         TEST RESULTS. 
* 
/        BEGIN TESTING
   B1=0 
   IF (IB(B1).AND.60.NE.0) ERROR 2/0,GOSUB 67 
   B1=B1+1
   IF (IB(B1).AND.20.NE.0) ERROR 3/0,GOSUB 67 
   B1=B1+1
   IF (IB(B1).AND.60.NE.0) ERROR 4/0,GOSUB 67 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
23 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21
   EXIT TO 011
* 
*         PUT SYNC AND SYNCA BITS IN INPUT BUFFER.
* 
/        READ WD 0 AND BUMP STORE POINTER SUBROUTINE
64 WAIT BIT 
   WAIT BIT 
   MAINTRD WORD 3 TO IB(B1) FROM PORT P1,ABT 70  *RD WD 3 
   B1=B1+1                       *BUMP POINTER
   RETURN                        *RETURN
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 23
/        PROCESS ERRORS AND END OF MODULE 
67 B7=IB(B1).AND.60              *MASK SYNC AND SYNCA 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B7) TO LINE B0        *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 5 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5011,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  S=SYNC BIT,SA=SYNCA BIT,VCS=VALID CHARACTER STATUS 
/ 
 1 FORMAT RT501 - 6671 RESYNC (1000) TEST 
 2 FORMAT EC=0002,SA AND S BIT=*OCT AFTER 1000 SENT 
 3 FORMAT EC=0006,S BIT SET BEFORE SA BIT 
 4 FORMAT EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
 5 FORMAT EC=0010,SA AND S BIT SET AT SAME TIME 
 6 FORMAT EC=0011,SA BIT SET, S BIT NOT SET AFTER 4 SYNCS 
 7 FORMAT EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
10 FORMAT EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
11 FORMAT EC=0014,S BIT DROPPED AFTER IT WAS SET
12 FORMAT EC=0112,TRANSPARENT MODE,EXPECTED SYNC,RECVD *OCT 
13 FORMAT LC = *DEC, ERCNT = *DEC 
14 FORMAT RT501 - ERROR(S) IN MODULE
* 
*         DISPLAY MODULE NUMBER.
* 
/        CHECK SYNC AND SYNCA BIT SEQUENCE AND SYNC INPUT IN
/        TRANSPARENT MODE 
20 MSG 1 TO DISPLAY 
   B0=0 
21 B2=0                     *CLEAR LOOP COUNTER 
   IB(10)=P4+1000           *PRESET INCASE NOT TRANSPARENT
   IB(11)=P4+1000 
   B1=0 
* 
*         RESERVE CHANNEL,BRING UP DTR, AND CLEAR MUX.
* 
   RES                      *RESERVE CHANNEL
   WRITE 7000,ABT 70        *BRING UP DTR ON OUTPUT 
   WRITE 7000 TO PORT P1,ABT 70  *BRING UP DTR ON INPUT 
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70 
* 
*         SET SYNC BIT, OUTPUT RESYNC AND SYNC CHARACTER. 
* 
   MAINTWR 20 TO WORD 3 OF PORT P1,ABT 70  *SET SYNC BIT
   OUTPUT 1000 TO PORT P1,ABT 70  *OUTPUT 1000 (CLEAR SYNC) 
   OUTPUT 1000 TO PORT P1,ABT 70  *OUTPUT 1000 (CLEAR SYNC) 
   OUTPUT P4,ABT 70         *OUTPUT SYNC CHARACTER
* 
*         OUTPUT 2 SYNC CHARACTERS CHECKING SYNC AND SYNC A BITS. 
* 
   GOSUB 64                 *RD WORD 3
   WAIT HALF                *WAIT HALF CHARACTER TIME 
   OUTPUT P4,ABT 70         *OUTPUT SYNC
22 WAIT HALF                *WAIT HALF CHARACTER TIME 
   OUTPUT P4,ABT 70         *OUTPUT SYNC
   GOSUB 64                 *READ WD 3,EXP - S+SA=0,SA=1
   GOTO 22 WHILE (B2+1.NE.2)  *LOOP 2 TIMES 
* 
*         OUTPUT 2 CHARACTERS CHECKING SYNC AND SYNCA BITS. 
* 
   WAIT HALF                *WAIT HALF CHARACTER TIME 
   B2=10                    *SET LOOP COUNTER/POINTER 
23 OUTPUT 4377,ABT 70       *OUTPUT CHARACTER 
   GOSUB 64                 *READ WD 3,EXP - S=1
   IF (P3.AND.1.EQ.0) GOTO 24  *IF NOT TRANSPARENT MODE 
   INPUT TO IB(B2),ABT 70   *INPUT DATA,EXP - SYNC CHAR 
24 GOTO 23 WHILE (B2+1.NE.12)  *LOOP 2 TIMES
   WAIT HALF                *WAIT HALF CHARACTER TIME 
   GOSUB 64                 *READ WD 3,EXP - S=1
* 
*         TEST RESULTS. 
* 
/        BEGIN TESTING
   B1=0 
   IF (IB(B1).AND.60.NE.0) ERROR 2/0,GOSUB 67 
   B1=B1+1
30 IF (IB(B1).AND.40.NE.0) GOTO 31
   IF (IB(B1).AND.20.NE.0) ERROR 3/0,GOSUB 71 
   GOTO 30 WHILE (B1+1.NE.5)
   ERROR 4/0,GOTO 32
31 IF (IB(B1).AND.20.NE.0) ERROR 5/0,GOTO 32
   B1=B1+1
   IF (B1.EQ.5) ERROR 6/0,GOTO 32 
   IF (IB(B1).AND.20.EQ.0) ERROR 7/0,GOTO 32
   IF (IB(B1).AND.40.EQ.0) GOTO 33
   ERROR 10/0 
32 GOSUB 71 
33 B1=B1+1
34 IF (IB(B1).AND.20.EQ.0) ERROR 11/0,GOSUB 71
   IF (B1.NE.3) GOTO 35 
   B7=IB(10)
   IF (B7-1000.NE.P4) ERROR 12/0,GOSUB 71 
35 IF (B1.NE.4) GOTO 36 
   B7=IB(11)
   IF (B7-1000.NE.P4) ERROR 12/0,GOSUB 71 
36 GOTO 34 WHILE (B1+1.LT.6)
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
37 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21   *IF REPEAT COND/MOD
   IF (ES.AND.RM.EQ.0) GOTO 40
   EXIT TO 010
* 
*         DAYFILE A MESSAGE IF ERRORS AND EXIT MODULE.
* 
40 IF (WC.EQ.0) GOTO 41 
   MSG 14 TO DAYFILE
41 EXIT 
* 
*         READ WORD 3 AND BUMP STORE POINTER. 
* 
/        READ WD 0 AND BUMP STORE POINTER SUBROUTINE
64 WAIT BIT 
   WAIT BIT 
   MAINTRD WORD 3 TO IB(B1) FROM PORT P1,ABT 70  *RD WD 3 
   B1=B1+1                       *BUMP POINTER
   RETURN                        *RETURN
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 37
/        PROCESS ERRORS AND END OF MODULE 
67 B7=IB(B1).AND.60 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B7) TO LINE B0        *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 13 (BA,WC) TO DISPLAY     *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT502,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - TEST 2XXX CONTROL CODE. 
* 
*             RUNS SYCHRONOUS (201 MODE) ONLY IF NOT
*             FULL DUPLEX.
* 
*  DESCRIPTION - TEST 2XXX CONTROL CODE.
* 
*                1. RESYNC 6671.
*                2. OUTPUT EOM, 2XXX, AND DATA. 
*                3. CHECK CLEAR CARRIER BIT AFTER 2XXX. 
*                4. CHECK MPC TRANSFERED BEFORE 2XXX DROP CARRIER.
*                5. CHECK CARRIER DOWN AND CARRIER OFF STATUS.
*                6. WAIT 2MS, CHECK CARRIER DOWN. 
*                7. CHECK CARRIER STILL DOWN AFTER 200MS. 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. CARRIER ON STATUS CONDITION.
*                3. CLEAR CARRIER BIT CONDITION.
*                4. RTS/CTS CONDITION 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0015,CARRIER NOT UP BY 200 MS AFTER 4XXX SENT
*    4. EC=0016,CC BIT NOT SET AFTER 2000 SENT
*    5. EC=0017,CC BIT DIDNT CLEAR AFTER 2000 SENT
*    6. EC=0020,TRANSFERED DATA BEFORE 2000= *OCT,0000 EXP
*    7. EC=0021,DATA STILL SHIFTING OUT AFTER 2000 SENT 
*    8. EC=0110,CO STATUS NOT UP BY 200 MS AFTER 4XXX SENT
*    9. EC=0111,CO STATUS UP AFTER 2000 SENT
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-7 IN DESCRIPTION. 
* 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  S=SYNC BIT, CO=CARRIER ON, CC=CLEAR CARRIER BIT, 
/  ODC=OUTPUT DISASSEMBLY CHARACTER 
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER. 
/ 
 1 FORMAT RT502 - 6671 DROP CARRIER (2000) TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0015,CARRIER NOT UP BY 200 MS AFTER 4XXX SENT
 4 FORMAT EC=0110,CO STATUS NOT UP BY 200 MS AFTER 4XXX SENT
 5 FORMAT EC=0111,CO STATUS UP AFTER 2000 SENT
 6 FORMAT EC=0016,CC BIT NOT SET AFTER 2000 SENT
 7 FORMAT EC=0020,TRANSFERED DATA BEFORE 2000= *OCT,0000 EXP
10 FORMAT EC=0017,CC BIT DIDNT CLEAR AFTER 2000 SENT
11 FORMAT EC=0021,DATA STILL SHIFTING OUT AFTER 2000 SENT 
12 FORMAT LC = *DEC, ERCNT = *DEC 
13 FORMAT RT502 - ERROR(S) IN MODULE
* 
*         RUN ONLY IF SYNCHRONOUS AND POST RUN MESSAGE. 
* 
/        DO I/O TO TEST DROP CARRIER
20 IF (P2.LT.2000) GOTO 32        *IF 103 MODE
   IF (P3.AND.2.NE.0) GOTO 32     *IF FULL DUPLEX 
   MSG 1 TO DISPLAY,PRINT         *DISPLAY SECTION MESSAGE
   WC=0 
* 
*         BRING UP DTR AND RESYNC.
* 
21 B1=0                           *CLEAR STORE POINTER
   RES                            *RESERVE CHANNEL
   WRITE 7000,ABT 70              *BRING UP DTR, OUTPUT PORT
   WRITE 7000 TO PORT P1,ABT 70   *BRING UP DTR, INPUT PORT 
   OUTPUT 1000 TO PORT P1,ABT 70  *OUTPUT 1000(CLEAR SYNC)
* 
*         OUTPUT 4 SYNC CHARACTERS AND TEST FOR SYNCHRONIZED. 
* 
22 OUTPUT P4,ABT 70               *OUTPUT SYNC
   WAIT HALF                      *WAIT 1/2 CHARACTER TIME
   GOTO 22 WHILE (B1+1.NE.5)      *LOOP FOR 5 SYNCS 
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *RD WD 3
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70  *IF S BIT=0
* 
*         SET OUTPUT MPC NON-ZERO AND OUTPUT EOM. 
* 
   MAINTWR 174 TO WORD 6,ABT 70   *SET OUTPUT MPC 
   OUTPUT 4203,ABT 70             *OUTPUT EOM 
* 
*         WAIT A CHARACTER TIME AND OUTPUT DROP CARRIER (RTS).
* 
   WAIT CHAR                      *WAIT CHARACTER TIME
   OUTPUT 2000,ABT 70             *OUTPUT 2000(DROP CARRIER)
   MAINTRD WORD 0 TO IB(0),ABT 70  *RD WD 0,EXP - CC=1
* 
*         WAIT CHARACTER TIME AND CHECK DC BIT, SET OUTPUT
*         DISASSEMBLY REGISTER NON-ZERO AND CHECK CC BIT. 
* 
   WAIT CHAR                       *WAIT CHARACTER TIME 
   MAINTRD WORD 4 TO IB(1),ABT 70  *RD WD 4,EXP - ODC=0 
   MAINTWR 377 TO WORD 4,ABT 70    *SET ODC = 377 
   MAINTRD WORD 0 TO IB(2),ABT 70  *RD WD 0,EXP -CC=0 
* 
*         READ OUTPUT DISASSEMBLY REGISTER TO INSURE SHIFTING 
*         HAS STOPPED AND READ TO CHECK ON CARRIER ON.
* 
   DELAY 2 MSEC                   *DELAY 2 MILLISECONDS 
   MAINTRD WORD 4 TO IB(3),ABT 70  *RD WD 4 
   WAIT BIT                        *WAIT BIT
   MAINTRD WORD 4 TO IB(4),ABT 70  *RD WD 4 
   IB(3)=IB(4).XOR.IB(3).AND.377  *TEST FOR NO SHIFTING 
   READ TO IB(4),ABT 70           *READ INPUT BUFFER
* 
*         WRITE TO INSURE RTS/CTS IS DOWN.
* 
   WRITE 4377,ABT 70              *WRITE CHARACTER
   WAIT HALF                      *WAIT 1/2 CHARACTER TIME
23 WRITE 4377,ABT 70              *WRITE CHARACTER
   READ TO IB(5),ABT 70           *READ INPUT BUFFER
   IF (IB(5).AND.400.EQ.0) GOTO 30  *IF NO CHARACTER REJECT 
   DELAY 1 MSEC                   *DELAY 1 MILLISECOND
   GOTO 23 WHILE (B1+1.NE.200D)   *LOOP FOR 200 MILLISECONDS
* 
*         TEST RESULTS. 
* 
/        BEGIN TESTING
   ERROR 3/0,GOSUB 71 
30 IF (IB(5).AND.1000.EQ.0) ERROR 4/0,GOSUB 71
   IF (IB(4).AND.1000.NE.0) ERROR 5/0,GOSUB 71
   IF (IB(0).AND.2000.EQ.0) ERROR 6/0,GOSUB 71
   B7=IB(1) 
   IF (IB(1).AND.377.NE.0) ERROR 7/0,GOSUB 71 
   IF (IB(2).AND.2000.NE.0) ERROR 10/0,GOSUB 71 
   IF (IB(3).NE.0) ERROR 11/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
31 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 32 
   MSG 13 TO DAYFILE
32 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 31
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B7) TO LINE B0        *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 12 (BA,WC) TO DISPLAY     *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT503,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -   TEST 3XXX CONTROL CODE. 
* 
*               RUNS SYNCHRONOUS (201 MODE) ONLY AND ONLY 
*               IF NOT FULL DUPLEX. 
* 
*  DESCRIPTION - TEST 3XXX CONTROL CODE.
* 
*                1. RESYNC 6671.
*                2. OUTPUT EOM, 3XXX, SYNC CHARACTER AND DATA.
*                3. CHECK CLEAR CARRIER BIT AFTER 3XXX. 
*                4. CHECK MPC TRANSFERED BEFORE 3XXX DROP CARRIER.
*                5. CHECK CARRIER DOWN AND CARRIER OFF STATUS.
*                6. WAIT 2MS, CHECK CARRIER DOWN. 
*                7. CHECK CARRIER STILL DOWN AFTER 200MS. 
*                8. CHECK SYNC CONDITONS AFTER SYNC CODE. 
*                9. CHECK SYNC CONDITONS AFTER DATA.
*               10. RESYNC 6671.
*               11. OUTPUT EOM, 3XXX, 4 SYNC CHARACTERS AND DATA. 
*               12. CHECK CLEAR CARRIER BIT AFTER 3XXX. 
*               13. CHECK MPC TRANSFERED BEFORE 3XXX DROP CARRIER.
*               14. CHECK CARRIER DOWN AND CARRIER OFF STATUS.
*               15. WAIT 2MS, CHECK CARRIER DOWN. 
*               16. CHECK CARRIER STILL DOWN AFTER 200MS. 
*               17. CHECK SYNC CONDITONS AFTER EACH SYNC CODE.
*               18. CHECK SYNC CONDITONS AFTER DATA.
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. THE SAME CONDITIONS AS ARE CHECKED BY THE 1XXX AND
*                   2XXX CONTROL CODES. 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
*    4. EC=0005,SA AND S BIT=*OCT,1 SYNC AND 1 4377 SENT
*    5. EC=0006,S BIT SET BEFORE SA BIT 
*    6. EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
*    7. EC=0010,SA AND S BIT SET AT SAME TIME 
*   10. EC=0011,SA BIT SET, S BIT NOT SET AFTER 4 SYNCS 
*   11. EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
*   12. EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
*   13. EC=0014,S BIT DROPPED AFTER IT WAS SET
*   14. EC=0015,CARRIER NOT UP BY 200 MS AFTER 4XXX SENT
*   15. EC=0016,CC BIT NOT SET AFTER 3000 SENT
*   16. EC=0017,CC BIT DIDNT CLEAR AFTER 3000 SENT
*   17. EC=0020,TRANSFERED DATA BEFORE 3000=*OCT,0000 EXP 
*   18. EC=0022,DATA STILL SHIFTING OUT AFTER 3000 SENT 
*   19. EC=0023,SA OR S BIT SET AFTER 3000 SENT 
*   20. EC=0111,CO STATUS UP AFTER 3000 SENT
*   21. EC=0110,CO STATUS NOT UP BY 200 MS AFTER 4XXX SENT
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-9 IN DESCRIPTION. 
*                2. 10-18 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT RT503 - 6671 3XXX CONTROL CODE TEST 
* 
*         RUN ONLY IF SYNCHRONOUS AND NOT FULL DUPLEX.
* 
20 IF (P2 LT 2000) GOTO 21     *IF 103 MODE 
   IF (P3 AND 2 NE 0) GOTO 21  *IF FULL DUPLEX
   MSG 1 TO DISPLAY,PRINT 
   EXIT TO 030
21 EXIT 
   END 20 
COMPILE 
   MODULE RT5030,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  SA=SYNCA BIT, S=SYNC BIT, CC=CLEAR CARRIER BIT,
/  CO=CARRIER ON STATUS, ODC=OUTPUT DISASSEMBLY CHARACTER 
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER. 
/ 
 1 FORMAT RT503 - 6671 3XXX CONTROL CODE TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT LC=*DEC,NO MODL ERR TESTING 
/        DO I/O TO TESTS 3000 CONTROL CODE
* 
*         DISPLAY RUN MESSAGE AND CLEAR CONSTANTS.
* 
20 MSG 1 TO DISPLAY 
   B0=0 
   WC=0 
21 B1=0 
   B7=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
   RES                            *RESERVE CHANNEL
   WRITE 7000,ABT 70              *BRING UP DTR ON OUTPUT 
   WRITE 7000 TO PORT P1,ABT 70   *BRING UP DTR ON INPUT
   OUTPUT 1000 TO PORT P1,ABT 70  *OUTPUT 1000 (CLEAR SYNC) 
* 
*         OUTPUT 4 SYNC CHARACTERS AND CHECK FOR SYNCHRONIZED.
* 
22 OUTPUT P4,ABT 70               *OUTPUT SYNC CHARACTER
   WAIT CHAR
   GOTO 22 WHILE (B7+1 NE 5)      *LOOP FOR 5 SYNCS 
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *RD WD 3,EXP S=1
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70 
* 
*         OUTPUT EOM AND SET OUTPUT MPC NON ZERO. 
* 
   OUTPUT 4203,ABT 70             *OUTPUT EOM 
   MAINTWR 174 TO WORD 6,ABT 70   *WRITE MPC
* 
*         DROP CARRIER AND RESYNC.
* 
   WAIT CHAR
   OUTPUT 3000,ABT 70             *OUTPUT 3000
* 
*         READ TO CHECK CC BIT, SYNC AND SYNCA BITS, AND
*         SET OUTPUT DISASSEMLBLY WORD NON ZERO.
* 
   MAINTRD WORD 0 TO IB(0),ABT 70  *RD WD 0,EXP CC=1
   MAINTRD WORD 3 TO IB(1) FROM PORT P1,ABT 70  *SA+S=0 
   WAIT CHAR
   MAINTWR 377 TO WORD 4,ABT 70    *377 TO ODC
   MAINTRD WORD 0 TO IB(2),ABT 70  *RD WD 0,EXP CC=0
* 
*         SEE IF RTS/CTS IS DOWN BY CHECKING FOR DISASSEMBLY
*         CONTINUING. 
* 
   DELAY 2 MSEC 
   MAINTRD WORD 4 TO IB(3),ABT 70  *RD WD 4 
   WAIT BIT 
   MAINTRD WORD 4 TO IB(4),ABT 70  *RD WD 4 
   IB(3)=IB(4).XOR.IB(3).AND.377   *EXP=0,NO DISASSEMBLY
   READ TO IB(4),ABT 70            *RD INPUT BUFFER,EXP CO=0
* 
*         OUTPUT SYNC CHARACTERS TO BRING CARRIER BACK UP.
* 
   WRITE P4,ABT 70                 *WRITE SYNC
   WAIT HALF
23 WRITE 4377,ABT 70               *WRITE CHARACTER 
   READ TO IB(5),ABT 70            *RD INPUT BUFFER,EXP CO=1
   IF (IB(5).AND.400.EQ.0) GOTO 24   *IF NOT CHARACTER REJ
   DELAY 1 MSEC 
   GOTO 23 WHILE (B1+1.NE.200D)    *LOOP UP TO 200 MSEC 
* 
*         READ TO INSURE SYNC AND SYNCA BIT WERE KNOCKED DOWN.
* 
24 IF (P2.LT.4000) GOTO 25          *IF NOT 4800 OR 9600
   WAIT BIT 
25 WAIT CHAR
   MAINTRD WORD 3 TO IB(6) FROM PORT P1,ABT 70  *EXP S=0
   WAIT CHAR
   MAINTRD WORD 3 TO IB(7) FROM PORT P1,ABT 70  *EXP SA+S=0 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
26 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21
   EXIT TO 031
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                          *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 26
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 3 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5031,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  SA=SYNCA BIT, S=SYNC BIT, CC=CLEAR CARRIER BIT,
/  CO=CARRIER ON STATUS, ODC=OUTPUT DISASSEMBLY CHARACTER 
/ 
 1 FORMAT RT503 - 6671 3XXX CONTROL CODE TEST 
 2 FORMAT EC=0016,CC BIT NOT SET AFTER 3000 SENT
 3 FORMAT EC=0017,CC BIT DIDNT CLEAR AFTER 3000 SENT
 4 FORMAT EC=0023,SA OR S BIT SET AFTER 3000 SENT 
 5 FORMAT EC=0111,CO STATUS UP AFTER 3000 SENT
 6 FORMAT EC=0110,CO STATUS NOT UP BY 200 MS AFTER 4XXX SENT
 7 FORMAT EC=0022,DATA STILL SHIFTING OUT AFTER 3000 SENT 
10 FORMAT EC=0015,CARRIER NOT UP BY 200 MS AFTER 4XXX SENT
11 FORMAT EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
12 FORMAT EC=0005,SA AND S BIT=*OCT,1 SYNC AND 1 4377 SENT
* 
*         TEST RESULTS FROM PREVIOUS MODULE.
* 
/        BEGIN TESTING
20 MSG 1 TO DISPLAY 
   B0=0 
   IF (IB(0).AND.2000.EQ.0) ERROR 2/0,GOSUB 71
   IF (IB(2).AND.2000.NE.0) ERROR 3/0,GOSUB 71
   IF (IB(1).AND.60.NE.0) ERROR 4/0,GOSUB 71
   IF (IB(4).AND.1000.NE.0) ERROR 5/0,GOSUB 71
   IF (IB(5).AND.1000.EQ.0) ERROR 6/0,GOSUB 71
   IF (IB(3).NE.0) ERROR 7/0,GOSUB 71 
   IF (IB(5).AND.400.NE.0) ERROR 10/0,GOSUB 71
   B7=IB(6).AND.60
   IF (B7.AND.20.NE.0) ERROR 11/0,GOSUB 71
   B7=IB(7).AND.60
   IF (B7.NE.0) ERROR 12/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
21 GOSUB 74 
   IF (ES.AND.RC.EQ.0) GOTO 22   *IF NOT RC + RM
   EXIT TO 030                   *GO TO SUB-MODULE
22 EXIT TO 032                   *GO TO SUB-MODULE
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1
   MSG EM (B7) TO LINE B0        *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5032,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  SA=SYNCA BIT, S=SYNC BIT, CC=CLEAR CARRIER BIT,
/  CO=CARRIER ON STATUS, ODC=OUTPUT DISASSEMBLY CHARACTER 
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER, SOM = START OF MESSAGE CHARACTER. 
/ 
 1 FORMAT RT503 - 6671 3XXX CONTROL CODE TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT LC=*DEC,NO MODL ERR TESTING 
* 
*         POST RUN MESSAGE AND CLEAR REGISTERS. 
* 
/        DO I/O FOR SECOND HALF OF 3000 TESTING 
20 MSG 1 TO DISPLAY 
   B0=0 
21 B1=0 
   B7=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
   RES                            *RESERVE CHANNEL
   MCLEAR,ABT 70                  *CLEAR MEMORY 
   WRITE 7000,ABT 70              *BRING UP DTR ON OUTPUT 
   WRITE 7000 TO PORT P1,ABT 70   *BRING UP DTR ON INPUT
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70 
   OUTPUT 1000 TO PORT P1,ABT 70  *OUTPUT 1000 (CLEAR SYNC) 
* 
*         OUTPUT 4 SYNC CHARACTERS AND CHECK FOR RESYNCED.
* 
22 OUTPUT P4,ABT 70               *OUTPUT SYNC CHARACTER
   WAIT CHAR
   GOTO 22 WHILE (B7+1.NE.5)      *LOOP FOR 5 SYNCS 
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *RD WD 3,EXP S=1
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70 
* 
*         OUTPUT EOM AND SET OUTPUT MPC NON ZERO. 
* 
   OUTPUT 4203,ABT 70             *OUTPUT EOM 
   MAINTWR 174 TO WORD 6,ABT 70   *WRITE MPC
* 
*         OUTPUT RESYNC AND DROP CARRIER. 
* 
   WAIT CHAR
   OUTPUT 3000,ABT 70             *OUTPUT 3000
* 
*         READ TO CHECK CC BIT AND SYNC AND SYNCA BITS. 
* 
   IF (P2.LT.4000) GOTO 23        *IF NOT 4800 OR 9600
   WAIT BIT 
23 MAINTRD WORD 0 TO IB(0) FROM PORT P1,ABT 70  *EXP CC=1 
   MAINTRD WORD 3 TO IB(1) FROM PORT P1,ABT 70  *EXP SA+S=0 
* 
*         CHECK ODC, SET IT NON ZERO AND CHECK CC BIT.
* 
   WAIT CHAR
   MAINTRD WORD 4 TO IB(2),ABT 70  *RD WD 4,EXP 0000 IN ODC 
   MAINTWR 377 TO WORD 4,ABT 70    *377 TO ODC
   MAINTRD WORD 0 TO IB(3),ABT 70  *RD WD 0,EXP CC=0
* 
*         CHECK RTS/CTS DOWN BY INSURE NO SHIFTING IN THE ODC.
* 
   DELAY 2 MSEC 
   MAINTRD WORD 4 TO IB(4),ABT 70  *RD WD 4 
   WAIT BIT 
   MAINTRD WORD 4 TO IB(5),ABT 70  *RD WD 4 
   IB(4)=IB(5).XOR.IB(4).AND.377   *EXP 0,NO DISASSEMBLY
   READ TO IB(5),ABT 70     *RD INPUT BUFFER,EXP CO=0 
   WAIT CHAR
   WRITE 4377,ABT 70        *INCASE MPC NEXT BIT SET
   WAIT CHAR
* 
*         START DATA OUT TO BRING RTS/CTS BACK UP.
* 
   OUTPUT P4,ABT 70          *WRITE SYNC
24 WRITE P4,ABT 70          *WRITE SYNC 
   READ TO IB(6),ABT 70     *RD INPUT BUFFER,EXP CO=1 
   IF (IB(6).AND.400.EQ.0) GOTO 25  *IF NO CHARACTER REJECT 
   DELAY 1 MSEC 
   GOTO 24 WHILE (B1+1.NE.200D)     *LOOP UP TO 200 MSEC
* 
*         OUTPUT MORE SYNC CHARACTERS CHECKING ON SYNC AND
*         SYNCA BIT SEQUENCE. 
* 
25 B1=7 
26 OUTPUT P4,ABT 70                 *OUTPUT SYNC
   WAIT BIT 
   WAIT BIT 
   MAINTRD WORD 3 TO IB(B1) FROM PORT P1,ABT 70  *SA+S SEQ
   GOTO 26 WHILE (B1+1.NE.11)  *LOOP FOR 2 SYNCS
* 
*         OUTPUT DATA CHARACTERS CHECKING ON SYNC AND SYNCA 
*         BIT SEQUENCES.
* 
27 WAIT HALF
   OUTPUT 4377,ABT 70          *OUTPUT CHARACTER
   MAINTRD WORD 3 TO IB(B1) FROM PORT P1,ABT 70  *SA+S SEQ
   GOTO 27 WHILE (B1+1.NE.15)  *LOOP FOR 4 DATA CHARACTERS
   READ TO IB(B1),ABT 70       *RD INPUT BUFFER 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
30 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21
   EXIT TO 033
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 30
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 3 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5033,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  SA=SYNCA BIT, S=SYNC BIT, CC=CLEAR CARRIER BIT,
/  CO=CARRIER ON STATUS, ODC=OUTPUT DISASSEMBLY CHARACTER 
/ 
 1 FORMAT RT503 - 6671 3XXX CONTROL CODE TEST 
 2 FORMAT EC=0016,CC BIT NOT SET AFTER 3000 SENT
 3 FORMAT EC=0017,CC BIT DIDNT CLEAR AFTER 3000 SENT
 4 FORMAT EC=0023,SA OR S BIT SET AFTER 3000 SENT 
 5 FORMAT EC=0111,CO STATUS UP AFTER 3000 SENT
 6 FORMAT EC=0110,CO STATUS NOT UP BY 200 MS AFTER 4XXX SENT
 7 FORMAT EC=0022,DATA STILL SHIFTING OUT AFTER 3000 SENT 
10 FORMAT EC=0015,CARRIER NOT UP BY 200 MS AFTER 4XXX SENT
11 FORMAT EC=0006,S BIT SET BEFORE SA BIT 
12 FORMAT EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
13 FORMAT EC=0010,SA AND S BIT SET AT SAME TIME 
14 FORMAT EC=0011,SA BIT SET, S BIT NOT SET AFTER 4 SYNCS 
15 FORMAT EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
16 FORMAT EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
17 FORMAT EC=0014,S BIT DROPPED AFTER IT WAS SET
20 FORMAT EC=0020,TRANSFERED DATA BEFORE 3000=*OCT,0000 EXP 
21 FORMAT RT503 - ERROR(S) IN MODULE
* 
*         TEST RESULTS OF PREVIOUS MODULE.
* 
/        BEGIN TESTING
30 MSG 1 TO DISPLAY 
   B0=0 
   IF (IB(0).AND.2000.EQ.0) ERROR 2/0,GOSUB 71
   B7=IB(2).AND.377 
   IF (B7.NE.0) ERROR 20/0,GOSUB 71 
   IF (IB(1).AND.60.NE.0) ERROR 4/0,GOSUB 71
   IF (IB(3).AND.2000.NE.0) ERROR 3/0,GOSUB 71
   IF (IB(4).NE.0) ERROR 7/0,GOSUB 71 
   IF (IB(6).AND.400.NE.0) ERROR 10/0,GOSUB 71
   IF (IB(6).AND.1000.EQ.0) ERROR 6/0,GOSUB 71
   IF (IB(5).AND.1000.NE.0) ERROR 5/0,GOSUB 71
   B1=7 
31 IF (IB(B1).AND.40.NE.0) GOTO 33
   IF (IB(B1).AND.20.NE.0) ERROR 11/0,GOSUB 71
   GOTO 31 WHILE (B1+1.NE.11) 
   ERROR 12/0 
32 GOSUB 71 
   GOTO 36
33 IF (IB(B1).AND.20.NE.0) ERROR 13/0,GOTO 32 
   GOTO 34 WHILE (B1+1.NE.11) 
   ERROR 14/0,GOTO 32 
34 IF (IB(B1).AND.20.EQ.0) ERROR 15/0,GOTO 32 
   IF (IB(B1).AND.40.NE.0) ERROR 16/0,GOSUB 71
35 IF (IB(B1).AND.20.EQ.0) ERROR 17/0,GOTO 32 
   GOTO 35 WHILE (B1+1.NE.15) 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
36 GOSUB 74 
   IF (ES.AND.RC.EQ.0) GOTO 37
   EXIT TO 032
37 IF (ES.AND.RM.EQ.0) GOTO 40
   EXIT TO 030
40 IF (WC.EQ.0) GOTO 41 
   MSG 21 TO DAYFILE
41 EXIT 
/        PROCESS ERRORS AND END OF MODULE.
71 WC=WC+1
   MSG EM (B7) TO LINE B0        *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 30 
COMPILE 
   MODULE RT504,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST 5XXX CONTROL CODE.
* 
*              RUNS SYNCHRONOUS (201 MODE) ONLY.
* 
* 
*  DESCRIPTION - TEST 5XXX CONTROL CODE.
* 
*                1. RESYNC 6671.
*                2. OUTPUT 1XXX, 5026, AND DATA.
*                3. CHECK SYNC BIT AFTER EACH OUTPUT. 
*                4. RESYNC 6671.
*                5. OUTPUT 1XXX, 4 SYNC CHARACTERS, AND DATA. 
*                6. CHECK SYNC BIT AFTER EACH OUTPUT. 
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS. 
*    2. THE SAME CONDITIONS ARE CHECKED AS ARE CHECK BY THE 1XXX
*       CONTROL CODE. 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0003,DATA CHAR=*OCT,1 SYNC AND 4 4377 SENT 
*    4. EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
*    5. EC=0005,SA AND S BIT=*OCT,1 SYNC AND 4 4377 SENT
*    6. EC=0006,S BIT SET BEFORE SA BIT 
*    7. EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
*    8. EC=0010,SA AND S BIT SET AT SAME TIME 
*    9. EC=0011,SA BIT SET,S BIT NOT SET AFTER 4 SYNCS
*   10. EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
*   11. EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
*   12. EC=0014,S BIT DROPPED AFTER IT WAS SET
*   13. EC=0024,SA OR S BIT SET AFTER 5000 SENT 
* 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-3 IN DESCRIPTION FOR ERRORS 1,3,4,5,24. 
*                2. 4-6 IN DESCRIPTION FOR ERRORS 1,6-13,24.
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT RT504 - 6671 5XXX CONTROL CODE TEST 
* 
*         RUN ONLY IF SYNCHRONOUS.
* 
20 IF (P2.GE.2000) GOTO 21  *IF 201 MODE
   EXIT 
21 MSG 1 TO DISPLAY,PRINT 
   EXIT TO 040
   END 20 
COMPILE 
   MODULE RT5040,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  SA=SYNCA BIT, S=SYNC BIT, VCS=VALID CHARACTER STATUS 
/ 
 1 FORMAT RT504 - 6671 5XXX CONTROL CODE TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0024,SA OR S BIT SET AFTER 5000 SENT 
 4 FORMAT EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
 5 FORMAT EC=0005,SA AND S BIT=*OCT,1 SYNC AND 4 4377 SENT
 6 FORMAT EC=0003,DATA CHAR=*OCT,1 SYNC AND 4 4377 SENT 
 7 FORMAT LC = *DEC, ERCNT = *DEC 
* 
*         POST RUN MESSAGE AND CLEAR REGISTERS. 
* 
/        DO I/O TO TEST 5000 CONTROL CODE 
20 MSG 1 TO DISPLAY 
   B0=0 
   WC=0 
21 B1=1 
   B2=0 
   B7=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
   RES                            *RESERVE CHANNEL
   MCLEAR,ABT 70                  *CLEAR MEMORY 
   B3=P4+1000                     *SET 5026 
   WRITE 7000,ABT 70              *DTR=1
   WRITE 7000 TO PORT P1,ABT 70   *DTR=1
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70 
   OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC 
* 
*         OUTPUT 4 SYNC CODES AND CHECK FOR RESYNCED. 
* 
22 OUTPUT P4,ABT 70               *OUTPUT SYNC
   WAIT HALF
   GOTO 22 WHILE (B7+1.NE.5)      *LOOP FOR 5 SYNCS 
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *EXP S=1
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70 
* 
*         OUTPUT CHARACTER. 
* 
   OUTPUT 4377,ABT 70       *OUTPUT CHARACTER 
   WAIT CHAR
* 
*         OUTPUT 5026 AND CHECK SYNC AND SYNCA BITS DOWN. 
* 
   OUTPUT 5000,ABT 70       *OUTPUT 5000
   OUTPUT B3,ABT 70         *OUTPUT 5026
   IF (P2.LT.4000) GOTO 23  *IF NOT 4800 OR 9600
   WAIT BIT 
23 MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *EXP SA+S=0 
* 
*         INSURE SYNC AND SYNCA BITS DONT REAPPEAR AND NO 
*         VALID CHARACTER IS SEEN.
* 
24 OUTPUT 4377,ABT 70       *OUTPUT CHARACTER 
   WAIT BIT 
   WAIT BIT 
   MAINTRD WORD 3 TO IB(B1) FROM PORT P1,ABT 70  *SA+S SEQ
   B1=B1+1
   READ TO IB(B1),ABT 70       *RD INPUT BUFFER,EXP NO VCS
   GOTO 24 WHILE (B1+1.NE.11)  *LOOP FOR 8 CHARACTERS 
* 
*         TEST RESULTS. 
* 
/        BEGIN TESTING
   IF (IB(0).AND.60.NE.0) ERROR 3/0,GOSUB 71
   B7=IB(3).AND.60
   IF (B7.AND.20.NE.0) ERROR 4/0,GOSUB 71 
   B7=IB(5).AND.60
   IF (B7.NE.0) ERROR 5/0,GOSUB 71
   B7=IB(6) 
   IF (B7.AND.4000.NE.0) ERROR 6/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
25 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21
   EXIT TO 041
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 25
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B7) TO LINE B0        *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 7 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5041,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  SA=SYNCA BIT, S=SYNC BIT, VCS=VALID CHARACTER STATUS 
/ 
 1 FORMAT RT504 - 6671 5XXX CONTROL CODE TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0024,SA OR S BIT SET AFTER 5000 SENT 
 4 FORMAT EC=0006,S BIT SET BEFORE SA BIT 
 5 FORMAT EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
 6 FORMAT EC=0010,SA AND S BIT SET AT SAME TIME 
 7 FORMAT EC=0011,SA BIT SET,S BIT NOT SET AFTER 4 SYNCS
10 FORMAT EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
11 FORMAT EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
12 FORMAT EC=0014,S BIT DROPPED AFTER IT WAS SET
13 FORMAT LC = *DEC, ERCNT = *DEC 
14 FORMAT RT504 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
/        DO I/O TO TEST 5000 CONTROL CODE 
20 MSG 1 TO DISPLAY 
   B0=0 
21 B1=1 
   B2=0 
   B7=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
   RES                            *RESERVE CHANNEL
   B3=P4+1000                     *SET 5026 
   WRITE 7000,ABT 70              *DTR=1
   WRITE 7000 TO PORT P1,ABT 70   *DTR=1
   OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC 
* 
*         OUTPUT 4 SYNC CODES AND CHECK FOR RESYNCED. 
* 
22 OUTPUT P4,ABT 70               *OUTPUT SYNC
   WAIT HALF
   GOTO 22 WHILE (B7+1.NE.5)      *LOOP FOR 5 SYNCS 
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *EXP S=1
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70 
* 
*         OUTPUT CHARACTER, 5026, AND CHECK FOR SYNC AND
*         SYNCA BITS DOWN.
* 
   OUTPUT 4377,ABT 70          *OUTPUT CHARACTER
   WAIT CHAR
   OUTPUT B3,ABT 70            *OUTPUT 5026 
   IF (P2.LT.4000) GOTO 23     *IF NOT 4800 OR 9600 
   WAIT BIT 
23 MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *EXP SA+S=0 
* 
*         OUTPUT 5 SYNC CODES CHECK SYNC AND SYNCA BITS.
* 
24 OUTPUT P4,ABT 70            *OUTPUT SYNC 
   MAINTRD WORD 3 TO IB(B1) FROM PORT P1,ABT 70  *SA+S SEQ
   GOTO 24 WHILE (B1+1 NE 5)   *LOOP FOR 5 SYNCS
* 
*         OUTPUT 3 DATA CHARACTERS CHECKING SYNC AND SYNCA BITS.
* 
25 OUTPUT 4377,ABT 70          *OUTPUT CHARACTER
   MAINTRD WORD 3 TO IB(B1) FROM PORT P1,ABT 70  *SA+S SEQ
   GOTO 25 WHILE (B1+1.NE.10)  *LOOP FOR 3 DATA CHARACTERS
* 
*         TEST RESULTS. 
* 
/        BEGIN TESTING
   B1=1 
   IF (IB(0).AND.60.NE.0) ERROR 3/10,GOSUB 71 
30 IF (IB(B1).AND.40.NE.0) GOTO 32
   IF (IB(B1) AND 20 NE 0) ERROR 4/0,GOTO 31
   GOTO 30 WHILE (B1+1.NE.7)
   ERROR 5/0
31 GOSUB 71 
   GOTO 35
32 IF (IB(B1).AND.20.NE.0) ERROR 6/0,GOTO 31
   GOTO 33 WHILE (B1+1.NE.7)
   ERROR 7/0,GOTO 31
33 IF (IB(B1).AND.20.EQ.0) ERROR 10/0,GOTO 31 
   IF (IB(B1).AND.40.NE.0) ERROR 11/0,GOSUB 71
34 IF (IB(B1).AND.20.EQ.0) ERROR 12/0,GOTO 31 
   GOTO 34 WHILE (B1+1.NE.10) 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
35 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21
   IF (ES.AND.RM.EQ.0) GOTO 36
   EXIT TO 040
36 IF (WC.EQ.0) GOTO 37 
   MSG 14 TO DAYFILE
37 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 35
/        PROCESS ERRORS AND END OF MODULE.
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 13 (BA,WC) TO DISPLAY     *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT505,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST 6XXX AND 7XXX CONTROL CODES.
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST 6XXX AND 7XXX CONTROL CODES.
* 
*                1. RESYNC 6671.
*                2. OUTPUT DATA AND 6XXX. 
*                3. CHECK DROP LINE AND CLEAR CARRIER BITS. 
*                4. WAIT 6 MS FOR LINE TO DROP. 
*                5. CHECK CARRIER DOWN, DROP LINE AND CARRIER BITS CLEAR. 
*                6. OUTPUT 7XXX.
*                7. CHECK DTR/RTS/CTS UP. 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. MODEM READY BIT CONDITION.
*                3. CARRIER ON BIT CONDITION. 
*                4. CLEAR CARRIER BIT CONDITION.
*                5. DROP LINE BIT CONDITION.
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0016,CC BIT DIDNT SET AFTER 6000 SENT
*    4. EC=0017,CC BIT DIDNT CLEAR AFTER 6000 SENT
*    5. EC=0025,CARRIER DIDNT DROP BY 6 MS AFTER 6000 
*    6. EC=0026,DL BIT DIDNT CLEAR AFTER 6000 SENT
*    7. EC=0027,DL BIT DIDNT SET AFTER 6000 SENT
*    8. EC=0030,MR STATUS UP AFTER 6000 SENT
*    9. EC=0031,CARRIER NOT UP BY 200 MS AFTER 7000 SENT
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-5 IN DESCRIPTION FOR ERRORS 1-30. 
*                2. 6-7 IN DESCRIPTION FOR ERROR 31.
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT RT505 - 6671 6XXX-7XXX CONTROL CODE TEST
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT         *POST SECTION MESSAGE 
   EXIT TO 050
   END 20 
COMPILE 
   MODULE RT5050,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  SA=SYNCA BIT, S=SYNC BIT, CC=CLEAR CARRIER BIT,
/  MR=MODEM READY, DL=DROP LINE BIT.
/ 
 1 FORMAT RT505 - 6671 6XXX-7XXX CONTROL CODE TEST
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0025,CARRIER DIDNT DROP BY 6 MS AFTER 6000 
 4 FORMAT EC=0026,DL BIT DIDNT CLEAR AFTER 6000 SENT
 5 FORMAT EC=0017,CC BIT DIDNT CLEAR AFTER 6000 SENT
 6 FORMAT EC=0027,DL BIT DIDNT SET AFTER 6000 SENT
 7 FORMAT EC=0016,CC BIT DIDNT SET AFTER 6000 SENT
10 FORMAT EC=0030,MR STATUS UP AFTER 6000 SENT
11 FORMAT LC = *DEC, ERCNT = *DEC 
* 
*         DISPLAY RUN MESSAGE.
* 
/        DO I/O TO TEST 6000 CONTROL CODE 
20 MSG 1 TO DISPLAY               *POST SECTION MESSAGE 
   B0=0 
   WC=0 
21 B1=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC (SYNCHRONOUS).
* 
   RES                            *RESERVE CHANNEL
   WRITE 7400,ABT 70              *DTR=1
   WRITE 7400 TO PORT P1,ABT 70   *DTR=1
   IF (P2.LT.2000) GOTO 24
   OUTPUT 1000 TO PORT P1,ABT 70  *OUTPUT RESYNC
* 
*         OUTPUT 5 SYNC CODES AND CHECK FOR SYNCED(SYNCHRONOUS).
* 
23 OUTPUT P4,ABT 70               *OUTPUT SYNC
   WAIT HALF
   GOTO 23 WHILE (B1+1.NE.5)      *LOOP FOR 5 SYNCS 
   MAINTRD WORD 3 TO IB (0) FROM PORT P1,ABT 70  *EXP S=1 
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70 
* 
*         OUTPUT CHARACTER, DROP DTR AND READ TO CHECK CC AND DL BIT. 
* 
24 OUTPUT 4377,ABT 70             *OUTPUT CHARACTER 
   OUTPUT 6000,ABT 70             *OUTPUT 6000
   MAINTRD WORD 0 TO IB(0),ABT 70  *RD WD 0,EXP CC+DL=1 
   WAIT CHAR
   WAIT CHAR
   MAINTRD WORD 0 TO IB(1),ABT 70  *RD WD 0,EXP CC+DL=0 
* 
*         FILL UP OUTPUT BUFFER AND DISASSEMBLY REGISTER. 
* 
   DELAY 6 MSEC 
   WRITE P4,ABT 70          *WRITE SYNC 
   WAIT HALF
   WRITE P4,ABT 70          *WRITE SYNC 
   WAIT HALF
   READ TO IB(2),ABT 70     *CLEAR VALID CHARACTER STATUS 
* 
*         INSURE NO DATA GOING OUT. 
* 
   B1=0 
25 WRITE P4,ABT 70          *WRITE SYNC 
   READ TO IB(2) FROM PORT P1,ABT 70  *READ INPUT BUFFER
   IF (IB(2).AND.400.EQ.0) GOTO 26    *IF NOT CHARACTER REJ 
   DELAY 1 MSEC 
   GOTO 25 WHILE (B1+1.NE.200D)       *LOOP FOR 200 MSEC
   GOTO 27                            *OK 
* 
*         CHECK RESULTS.
* 
/        BEGIN TESTING
26 IF (P2.LT.2000) GOTO 27         *ERROR EXPECTED ON ASYNC 
   ERROR 3/0,GOSUB 71 
27 IF (IB(1).AND.4000.NE.0) ERROR 4/0,GOSUB 71
   IF (IB(1).AND.2000.NE.0) ERROR 5/0,GOSUB 71
   IF (IB(0).AND.4000.EQ.0) ERROR 6/0,GOSUB 71
   IF (IB(0).AND.2000.EQ.0) ERROR 7/0,GOSUB 71
   IF (IB(2).AND.2000.NE.0) ERROR 10/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
30 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21
   EXIT TO 051
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 30
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 11 (BA,WC) TO DISPLAY     *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5051,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT505 - 6671 6XXX-7XXX CONTROL CODE TEST
 2 FORMAT EC=0031,CARRIER NOT UP BY 200 MS AFTER 7000 SENT
 3 FORMAT LC = *DEC, ERCNT = *DEC 
 4 FORMAT RT505 - ERROR(S) IN MODULE
* 
*         DISPLAY RUN MESSAGE.
* 
/        DO I/O TO TEST 7000 CONTROL CODE 
20 MSG 1 TO DISPLAY 
   B0=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND OUTPUT 2 SYNC CODES. 
* 
21 RES
   MAINTWR 0 TO WORD 5,ABT 70  *CLEAR OUTPUT BUFFER WORD
   WRITE 7400,ABT 70           *WRITE 7400
   OUTPUT P4,ABT 70            *OUTPUT SYNC 
   OUTPUT P4,ABT 70            *OUTPUT SYNC 
   B1=0 
* 
*         INSURE DATA IS BEING ACCEPTED.
* 
22 WRITE P4,ABT 70             *WRITE SYNC
   READ TO IB(0),ABT 70        *RD INPUT BUFFER 
   IF (IB(0).AND.400.EQ.0) GOTO 23  *IF NOT CHARACTER REJ 
   DELAY 1 MSEC 
   GOTO 22 WHILE (B1+1.NE.200D)  *LOOP UP TO 200 MSEC 
   ERROR 2/0,GOSUB 71            *IF DTR/RTS DOESNT COME UP 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
23 GOSUB 74 
   IF (ES AND RC NE 0) GOTO 21
   IF (ES.AND.RM.EQ.0) GOTO 24
   EXIT TO 050
24 IF (WC.EQ.0) GOTO 25 
   MSG 4 TO DAYFILE 
25 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 23
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 3 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT506,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST DATA TRANSFER.
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST DATA TRANSFER.
* 
*                1. RESYNC 6671.
*                2. OUTPUT CHARACTER. 
*                3. WAIT ONE CHARACTER TIME.
*                4. READ AND CHECK CHARACTER. 
*                5. REPEAT 2-4 UNTIL ALL CHARACTERS OUTPUTED. 
*                6. RESYNC 6671.
*                7. OUTPUT CHARACTER. 
*                8. OUTPUT CHARACTER. 
*                9. INPUT AND STORE.
*               10. REPEAT 8 AND 9 UNTIL ALL CHARACTERS OUTPUTED. 
*               11. INPUT AND STORE LAST CHARACTER. 
*               12. CHECK DATA. 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. SYNC BIT CONDITION. 
*                3. DATA ERRORS.
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0032,SINGLE CHAR SEQ, E=*OCT A=*OCT
*    4. EC=0032,STACKED CHAR SEQ, E=*OCT A=*OCT 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-5 IN DESCRIPTION FOR ERROR 32 SINGLE. 
*                1. 7-12 IN DESCRIPTION FOR ERROR 32 STACKED. 
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT RT506 - 6671 DATA PATTERNS TEST 
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MSG 
   EXIT TO 060
   END 20 
COMPILE 
   MODULE RT5060,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER, SOM = START OF MESSAGE CHARACTER. 
/  S=SYNC BIT.
/ 
 1 FORMAT RT506 - 6671 DATA PATTERNS TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0032,SINGLE CHAR SEQ, E=*OCT A=*OCT
 4 FORMAT LC = *DEC, ERCNT = *DEC 
* 
*         DISPLAY RUN MESSAGE 
* 
/        BUILD CHARACTER BUFFER 
20 MSG 1 TO DISPLAY         *POST SECTION MSG 
   B0=0 
   WC=0 
* 
*         BUILD CHARACTER BUFFER (WITHOUT EOM AND SYNCS IF 201 MODE). 
* 
21 B1=4000                  *SET 1ST CHARACTER
   B2=0                     *CLR STORE POINTER
22 IF (P2.LT.2000) GOTO 23  *IF 103 MODE
   B3=B1.XOR.4203.AND.177 
   IF (B3.EQ.0) GOTO 24     *IF EOM GENERATED,SKIP STORE
   B3=B1.XOR.P4.AND.177 
   IF (B3.EQ.0) GOTO 24     *IF SYNC GENERATED,SKIP STORE 
23 OB(B2)=B1                *STORE CHARACTER
   B2=B2+1                  *BUMP POINTER 
24 GOTO 22 WHILE (B1+1.LT.4400)  *LIMIT CHARACTER TO 377
* 
*         RESERVE CHANNEL, BRING UP DTR, AND CLEAR MUX. 
* 
/        DO SINGLE I/O
30 B7=0                          *CLEAR SYNC COUNTER
   RES
   WRITE 7000,ABT 70             *BRING DTR UP
   WRITE 7000 TO PORT P1,ABT 70 
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70          *CLEAR MUX 
   IF (P2.LT.2000) GOTO 34
* 
*         RESYNC IF 201 MODE. 
* 
31 OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC 
32 OUTPUT P4,ABT 70              *OUTPUT SYNC 
   WAIT HALF                     *WAIT HALF 
   GOTO 32 WHILE (B7+1.NE.5)     *LOOP FOR 5 SYNCS
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *RD WD 3
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70  *IF SYNC NOT SET 
* 
*         OUTPUT AND INPUT DATA (SINGLE CHARACTER SEQUENCE).
* 
34 B1=0                     *CLR POINTER
35 OUTPUT OB(B1),ABT 70     *OUTPUT CHARACTER 
   WAIT CHAR                *WAIT TIL CHARTER STARTED OUT 
   WAIT BIT 
   IF (P2.LT.2000) GOTO 36  *IF 103 MODE
   READ TO IB(B1),ABT 70    *CLEAR VCS ON 201 MODE
36 INPUT TO IB(B1),ABT 70   *INPUT CHARACTER
   IF (IB(B1)-OB(B1).NE.1000) ERROR 3/0,GOSUB 71  *CHECK CHAR 
   WAIT BIT 
   IF (ES.AND.RC.NE.0) GOTO 37
   GOTO 35 WHILE (B1+1.NE.B2)    *LOOP FOR ALL CHARACTERS 
   GOTO 40
37 GOSUB 74 
   RES                       *CONNECT DEVICE AND CHANNEL
   GOTO 35
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
40 GOSUB 74 
   EXIT TO 061
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 37
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (OB(B1),IB(B1)) TO LINE B0        *POST ERROR MESSAGE 
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 4 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   RES
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5061,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  S=SYNC BIT.
/ 
 1 FORMAT RT506 - 6671 DATA PATTERNS TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0032,STACKED CHAR SEQ, E=*OCT A=*OCT 
 4 FORMAT LC = *DEC, ERCNT = *DEC 
 5 FORMAT RT506 - ERROR(S) IN MODULE
* 
*         DISPLAY RUN MESAGE. 
* 
/        DO STACKED I/O 
20 MSG 1 TO DISPLAY         *POST RUN MESSAGE 
   B0=0 
21 B1=0                     *CLR OUTPUT POINTER 
   B3=0                     *CLR INPUT POINTER
   B7=0                     *CLEAR SYNC COUNTER 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND CLEAR MUX. 
* 
   RES
   WRITE 7000,ABT 70        *BRING DTR UP 
   WRITE 7000 TO PORT P1,ABT 70 
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70     *CLEAR MUX
   IF (P2.LT.2000) GOTO 24  *IF 103 MODE,SKIP RESYNC
* 
*         RESYNC (201 MODE).
* 
22 OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC 
23 OUTPUT P4,ABT 70               *OUTPUT SYNC
   WAIT HALF                      *WAIT HALF
   GOTO 23 WHILE (B7+1.NE.5)      *LOOP FOR 5 SYNCS 
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *RD WD 3
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70  *IF SYNC NOT SET 
* 
*         OUTPUT ONE CHARACTER. 
* 
24 OUTPUT OB(B1),ABT 70     *OUTPUT CHAR
   B1=B1+1                  *BUMP OUTPUT POINTER
* 
*         OUTPUT AND INPUT REST OF BUFFER (STACKED CHARACTER MODE). 
* 
25 OUTPUT OB(B1),ABT 70     *OUTPUT CHAR
   INPUT TO IB(B3),ABT 70   *INPUT CHAR 
   B3=B3+1                  *BUMP INPUT POINTER 
   GOTO 25 WHILE (B1+1.NE.B2)  *LOOP FOR ALL CHARACTER
* 
*         GET LAST (LAST TWO IF 201 MODE) CHARACTER.
* 
   IF (P2.LT.2000) GOTO 26  *IF 103 MODE
   WAIT HALF                *WAIT 
   INPUT TO IB(B3),ABT 70   *INPUT CHAR 
   B3=B3+1                  *BUMP INPUT POINTER 
26 WAIT HALF                *WAIT 
   INPUT TO IB(B3),ABT 70   *INPUT LAST CHARACTER 
* 
*         TEST RESULTS. 
* 
/        TEST STACKED CHARACTERS
   B1=0                     *CLR POINTER
27 IF (IB(B1)-OB(B1).NE.1000) ERROR 3/0,GOSUB 71  *IF ERR 
   GOTO 27 WHILE (B1+1.NE.B2)  *LOOP FOR ALL CHARACTERS 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
30 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21   *IF REPEAT COND/MOD
   IF (ES.AND.RM.EQ.0) GOTO 31
   EXIT TO 060
31 IF (WC.EQ.0) GOTO 32 
   MSG 5 TO DAYFILE 
32 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                   *END ANY SUBROUTINES
   GOSUB 71 
   GOTO 30
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (OB(B1),IB(B1)) TO LINE B0  *POST ERROR MESSAGE 
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 4 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT507,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -    TEST MPC GENERATION. 
* 
*                RUNS SYNCHRONOUS (201 MODE) ONLY AND ONLY
*                IF NOT TRANSPARENT AND NOT SYNC=366. 
* 
*  DESCRIPTION - TEST MPC GENERATION. 
* 
*                1. RESYNC 6671.
*                2. CLEAR OUTPUT MPC REGISTER.
*                3. OUTPUT SOM. 
*                4. CLEAR INPUT MPC REGISTER. 
*                5. OUTPUT DATA.
*                6. READ OUTPUT AND INPUT MPC AND STORE.
*                7. CHECK MPC IN OUTPUT MPC REGISTER AND OUTPUT BUFFER. 
*                8. OUTPUT 4077 AND CHECK FOR REJECT. 
*                9. READ INPUT MPC REGISTER AND INPUT BUFFER. 
*               10. CHECK RESULTS.
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. MPC DIDNOT TRANSFER TO OUTPUT BUFFER. 
*                3. MPC NEXT BIT. 
*                4. INPUT MPC ERROR.
*                5. OUTPUT MPC ERROR. 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0033,OPUT MPC TRANS DIDNT CAUSE CR ON CHAR OPUT
*    3. EC=0034,OUTPUT MPC UPDATE ERROR, A=*OCT, E=*OCT 
*    4. EC=0035,INPUT MPC UPDATE ERROR, A=*OCT, E=*OCT
*    5. EC=0036,MPC NEXT FLAG SET ON INPUT MPC
*    6. EC=0037,MPC NEXT FLAG NOT SET ON INPUT MPC
*    7. EC=0040,MPC INCORRECT, A=*OCT, E=5000 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-9 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT507 - 6671 MPC TEST 
   DATA (OB,CON) 4000,4376,4377,4002,4006,4014,4030,4060, 
  ,4140,4300,4200,4376,4003,4006,4014,4030,4060,4140,4300,
  ,4200,4377,4377,4377,4377,4252,4125,4175,4026,4203
* 
*         RUN IF SYNCHRONOUS, SYNC NOT 366, AND NOT TRANSPARENT MODE. 
* 
/        TEST IF LEGAL TO RUN 
20 IF (P3.AND.1.NE.0) GOTO 21  *IF TRANSPARENT MODE 
   IF (P4.EQ.4366) GOTO 21     *IF SYNC=366 
   IF (P2.LT.2000) GOTO 21     *IF 103 MODE 
   MSG 1 TO DISPLAY,PRINT      *POST SECTION MESSAGE
   EXIT TO 070                 *EXIT TO SUBMODULE 
21 EXIT 
   END 20 
COMPILE 
   MODULE RT5070,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER, SOM = START OF MESSAGE CHARACTER. 
/  OD = OUTPUT DISASSEMBLY BUFFER, CR = CHARACTER REJECT. 
/  S=SYNC BIT.
/ 
 1 FORMAT RT507 - 6671 MPC TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT LC=*DEC,NO MODL ERR TESTING 
* 
*         DISPLAY RUN MESSAGE.
* 
/        DO I/O 
20 MSG 1 TO DISPLAY         *POST SECTION MESSAGE 
   B0=0 
   WC=0 
21 B1=0                     *CLR OUTPUT AND MPC POINTER 
   B2=100                   *INPUT MPC POINTER
   B7=0                     *CLR SYNC COUNTER 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
   RES                            *RESERVE CHANNEL
   WRITE 7000,ABT 70              *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC RECIEVER
* 
*         OUTPUT 5 SYNC CODES AND CHECK RESYNCED. 
* 
22 OUTPUT P4,ABT 70           *OUTPUT SYNC
   WAIT HALF                  *WAIT 
   GOTO 22 WHILE (B7+1.NE.5)  *LOOP FOR 5 SYNCS 
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70 
* 
*         CLEAR OUTPUT MPC, OUTPUT SOM,1ST CHARACTER, READ
*         OUTPUT MPC FROM SOM, AND CLEAR INPUT MPC. 
* 
   MAINTWR 0 TO WORD 6,ABT 70  *CLEAR OUTPUT MPC
   OUTPUT 4001,ABT 70          *OUTPUT SOM
   OUTPUT OB(B1),ABT 70        *OUTPUT 1ST CHARACTER FROM BUFF
   MAINTRD WORD 6 TO IB(B1),ABT 70        *READ OUTPUT MPC
   MAINTWR 0 TO WORD 2 OF PORT P1,ABT 70  *CLR INPUT MPC
* 
*         OUTPUT ALL CHARACTERS FROM BUFFER CHECKING OUTPUT 
*         AND INPUT MPC FOR EACH. 
* 
23 B1=B1+1                          *BUMP POINTER 
   OUTPUT OB(B1),ABT 70             *OUTPUT FROM BUFFER 
   MAINTRD WORD 6 TO IB(B1),ABT 70  *READ OUTPUT MPC
   WAIT BIT                         *WAIT BIT 
   WAIT BIT                         *WAIT BIT 
   MAINTRD WORD 2 TO IB(B2) FROM PORT P1,ABT 70  *READ MPC
   GOTO 23 WHILE (B2+1.NE.134)      *LOOP FOR FULL BUFFER 
* 
*         WAIT FOR EOM TO APPEAR IN OUTPUT DISASSEMBLY REGISTER.
* 
24 MAINTRD WORD 4 TO IB(B2),ABT 70  *WAIT EOM IN OD BUFFER
   IF (IB(B2).AND.377.NE.203) GOTO 24 
* 
*         READ FINAL OUTPUT MPC, READ OUTPUT BUFFER TO INSURE 
*         MPC HAS TRANSFERED, AND READ INPUT MPC. 
   B1=B1+1                  *BUMP POINTER 
   MAINTRD WORD 6 TO IB(B1),ABT 70  *READ OUTPUT MPC
   B1=B1+1
   MAINTRD WORD 5 TO IB(B1),ABT 70  *READ OUTPUT BUFFER WD
   WAIT BIT 
   WAIT BIT 
   MAINTRD WORD 2 TO IB(B2) FROM PORT P1,ABT 70  *INPUT MPC 
* 
*         OUTPUT TO INSURE REJECT BECAUSE OF MPC TRANSFER TO OUTPUT 
*         BUFFER. 
* 
   WRITE 4077,ABT 70        *WRITE CHAR, EXPECT CR
   READ TO IB(140) FROM PORT P0,ABT 70  *READ,EXP CR
   OUTPUT 4077,ABT 70       *OUTPUT CHARACTER 
* 
*         READ FINAL INPUT MPC. 
* 
   WAIT BIT                 *WAIT BIT 
   WAIT BIT                 *WAIT BIT 
   B2=B2+1
   MAINTRD WORD 2 TO IB(B2) FROM PORT P1,ABT 70  *INPUT MPC 
   WAIT HALF
   OUTPUT 4077,ABT 70       *OUTPUT CHARACTER,EXP EOM RECVD 
* 
*         READ RESULT OF MPC FROM INPUT BUFFER. 
* 
   WAIT BIT 
   WAIT BIT 
   B2=B2+1
   READ TO IB(B2),ABT 70    *READ INPUT MPC CHARACTER 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
25 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21
   EXIT TO 071              *EXIT TO TEST RESULTS 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                   *END ANY SUBROUTINES
   GOSUB 71                 *POST MESSAGE 
   GOTO 25                  *TAKE PICTURE 
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 3 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5071,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER, SOM = START OF MESSAGE CHARACTER. 
/  OD = OUTPUT DISASSEMBLY BUFFER, CR = CHARACTER REJECT. 
/  OB=OUTPUT BUFFER, IB=INPUT BUFFER. 
/ 
 1 FORMAT RT507 - 6671 MPC TEST 
 2 FORMAT EC=0033,OPUT MPC TRANS DIDNT CAUSE CR ON CHAR OPUT
 3 FORMAT EC=0035,INPUT MPC UPDATE ERROR, A=*OCT, E=*OCT
 4 FORMAT EC=0034,OUTPUT MPC UPDATE ERROR, A=*OCT, E=*OCT 
 5 FORMAT EC=0036,MPC NEXT FLAG SET ON INPUT MPC
 6 FORMAT EC=0037,MPC NEXT FLAG NOT SET ON INPUT MPC
 7 FORMAT EC=0040,MPC INCORRECT, A=*OCT, E=5000 
10 FORMAT RT507 - ERROR(S) IN MODULE
* 
*         DISPLAY RUN MESSAGE.
* 
/        GENERATE EXPECTED MPC TO OB+100
20 MSG 1 TO DISPLAY         *POST SECTION MESSAGE 
   B0=0 
* 
*         BUILD EXPECTED MPC BUFFER.
* 
21 B1=0 
   B2=100 
   B3=376                   *MPC AFTER SOM
   OB(B2)=B3                *SOM
22 B2=B2+1                  *FOR CHARACTERS IN OB 
   IF (OB(B1).NE.4026) GOTO 23
   OB(B2)=B4                *REPEAT INPUT MPC IF SYNC 
   GOTO 24
23 B3=OB(B1).XOR.B3 
   GOSUB 40                 *GO ADD PARITY BIT
24 OB(B2)=B4
   GOTO 22 WHILE (B1+1.NE.35)  *LOOP
   B2=B2+1
   OB(B2)=B4+4000           *EXPECTED MPC TRANSFERED
* 
*         TEST RESULTS. 
* 
/        BEGIN TESTING
   IF (IB(140).AND.400.EQ.0) ERROR 2/0,GOSUB 71  *IF NO CR
   B1=0 
   B2=100 
30 B7=IB(B2)
   B4=B7.XOR.OB(B2).AND.177 
   IF (B4.NE.0) ERROR 3/0,GOSUB 71           *TEST INPUT MPC
   B7=IB(B1)
   IF (B7.XOR.OB(B2).NE.0) ERROR 4/0,GOSUB 71  *TEST OPUT MPC 
   IF (B1 EQ 35) GOTO 31
   IF (IB(B2).AND.400.NE.0) ERROR 5/0,GOSUB 71  *CHK MPC NEXT 
   GOTO 32
31 IF (IB(B2).AND.400.EQ.0) ERROR 6/0,GOSUB 71  *CHK MPC NEXT 
32 B2=B2+1
   GOTO 30 WHILE (B1+1.NE.36) 
   B7=IB(B1)
   IF (B7.XOR.OB(B2).NE.0) ERROR 4/0,GOSUB 71   *CHK OB MPC 
   B7=IB(B2)
   IF (B7.AND.4377.NE.4000) ERROR 7/0,GOSUB 71  *CHK IB MPC 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
33 GOSUB 74 
   IF (ES.AND.CM.EQ.0) GOTO 34
   EXIT TO 070
34 IF (WC.EQ.0) GOTO 35 
   MSG 10 TO DAYFILE
35 EXIT 
/        PARITY GEN SUBROUTINE
40 B4=B3.AND.177
   B5=B4.RS.4.XOR.B4
   B5=B5.RS.2.XOR.B5
   B5=B5.RS.1.XOR.B5
   B5=B5.AND.1.XOR.1
   B4=B5.LS.7+B4
   RETURN 
/        PROCESS ERRORS AND END OF MODULE 
71 MSG EM (B7,OB(B2)) TO LINE B0  *POST ERROR MESSAGE 
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT510,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -    TEST ASYNCHRONOUS CONTROL SEQUENCE.
* 
*                RUNS ASYNCHRONUS (103 MODE) ONLY AND ONLY
*                IF LESS THAN 300 BAUD. 
* 
*  DESCRIPTION - TEST ASYNCHRONOUS CONTROL SEQUENCE.
* 
*                1. EXIT SECTION IF 600 OR 1200 BAUD. 
*                2. CHECK WAIT TTY BIT ON OUTPUT AND INPUT. 
*                3. CHECK INPUT CLOCK EQUAL 0.
*                4. OUTPUT CHARACTER, CHECK WAIT TTY BIT CLEAR. 
*                5. CHECK START TTY BIT SET, WAIT TTY AND SENSE START.
*                6  CLEAR.
*                7. BEFORE 1/10 BIT, CHECK E. CONDITION STILL PRESENT.
*                8. AFTER 1/10 BIT, CHECK SENSE START SET AND START.
*                9  CLEAR.
*               10. BEFORE 1/2 BIT TIME, CHECK G. CONDITION STILL 
*                   PRESENT.
*               11. AFTER 1/2 BIT TIME, CHECK WAIT TTY,START,SENSE
*                   START AND CLOCK = 0.
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS
*                2. CONDITION OF CLOCK, WAIT TTY, SENSE AND START TTY 
*                   AT BEGINNING OF SEQUENCE. 
*                3. CONDITION OF CLOCK, WAIT TTY, SENSE AND START TTY 
*                   AT 1/10 BIT AND 1/2 BIT TIMES.
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0041,OUTPUT WAIT TTY BIT NOT SET 
*    3. EC=0042,EXPECTED WAIT SET,SENSE AND START CLR,*OCT
*    4. EC=0043,INPUT TTY CLK NON-ZERO WITH NO DATA COMING
*    5. EC=0044,OUTPUT WAIT TTY STILL SET AFTER DIP 
*    6. EC=0045,START TTY BIT DIDNT SET WHEN EXPECTED 
*    7. EC=0046,SENSE START BIT STILL SET AFTER START BIT 
*    8. EC=0047,WAIT TTY BIT STILL SET AFTER START BIT SET
*    9. EC=0050,START TTY CLEAR BEFORE 1/10 OF BIT TIME 
*   10. EC=0051,SENSE START BIT NOT SET AFTER 1/10 OF BIT 
*   11. EC=0052,WAIT TTY BIT STILL SET AFTER 1/10 OF BIT
*   12. EC=0053,START TTY BIT STILL SET AFTER 1/10 OF BIT 
*   13. EC=0054,SENSE START BIT CLEAR BEFORE 1/2 OF BIT 
*   14. EC=0055,SENSE,START OR WAIT SET AFTER 1/2 BIT,*OCT
*   15. EC=0056,CLOCK=*OCT,DIDNT CLR AFTER 1/2 OF BIT TIME
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 2-11 IN DESCRIPTION.
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  DIP = DISASSEMBLY IN PROCESS 
/ 
 1 FORMAT RT510 - 6671 TELETYPE SEQUENCE CHECK TEST 
 2 FORMAT LC=*DEC,NO MODL ERR TESTING 
* 
*         TABLE OF BAUD RATES 
* 
   DATA (OB,CON) 110,134,150              *BAUD RATES 
   BASE DECIMAL 
   DATA (OB(4),CON) 455,372,333           *  5 PERCENT BIT
   DATA (OB(8),CON) 909,744,667           * 15 PERCENT BIT
   DATA (OB(12),CON) 2727,2230,2000       * 45 PERCENT BIT
   DATA (OB(16),CON) 909,744,667          * 55 PERCENT BIT
   BASE OCTAL 
   DATA (OB(24),CON) 2,1603,1,6413,1,5013  *100 PERCENT 
* 
*         RUN ONLY IF 103 MODE AND 300 BAUD OR LESS.
* 
20 IF (P2.LT.300) GOTO 21     *IF LESS THAN 300 BAUD
   EXIT 
* 
*         POST RUN MESSAGE
* 
21 MSG 1 TO DISPLAY,PRINT     *POST SECTION MESSAGE 
   WC=0 
* 
*         FIND BAUD RATE IN TABLE.
* 
22 B1=0                       *CLR BAUD POINTER 
23 IF (P2.EQ.OB(B1)) GOTO 24  *FOUND BAUD 
   GOTO 23 WHILE (B1+1.NE.4)  *LOOP 
* 
*         RESERVE CHANNEL.
* 
24 RES
* 
*         FIND EXECUTION TIME OF A MAINTENACE READ AND DELAY
*         COMMAND.
* 
30 IF (RT.AND.7000.NE.0) GOTO 30   *WAIT FOR REAL TIME CLOCK
   B2=RT                           *CAPTURE CLOCK 
   MAINTRD WORD 0 TO IB(0),ABT 70  *DO MAINT READ 
   DELAY 10 USEC
   B2=RT-B2-10                *SAVE EXECUTION TIME
* 
*         SUBTRACT EXECUTION TIME FROM ALLL CONSTANTS.
* 
   B3=50                      *SET STORE ADDRESS
31 B4=0 
   B1=B1+4                    *SET 5 PERCENT POINTER
32 OB(B3)=OB(B1)-B2            *SAVE REMAINING DELAY
33 GOTO 31 WHILE (B3+1.NE.54)  *LOOP FOR 15,45,55 PERCENT 
* 
*         SET LOOP CONSTANT FOR FULL BIT. 
* 
   B1=B1.LS.1-14                *SET POINTER TO BIT TIME
   B3=OB(B1)                    *SAVE UPPER BITS
   B4=OB(B1+1)                  *SAVE LOWER 
   B1=0 
34 IF (B4.LT.B2) GOTO 36    *TEST FOR UNDER 
   B4=B4-B2                 *SAVE REMAINING 
35 B1=B1+1                  *BUMP LOOP COUNT
   GOTO 34                  *LOOP 
36 B4=B4-B2                 *SET LOWER
   IF (B3.EQ.0) GOTO 37     *UPPER ALSO EXHAUSTED 
   B3=B3-1                  *DECREMENT UPPER
   GOTO 35                  *LOOP 
* 
*         SET REGISTERS.
* 
37 B1=B1+1                  *ADD ONE MORE 
   B2=OB(50)                *SET B2 FOR  5 PERCENT
   B3=OB(51)                *SET B3 FOR 15 PERCENT
   B4=OB(52)                *SET B4 FOR 45 PERCENT
   B5=OB(53)                *SET B5 FOR 55 PERCENT
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
40 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 22
   EXIT TO 100              *EXIT TO SUBMODULE
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                   *END ANY SUBROUTINES
   GOSUB 71 
   GOTO 40
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 2 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5100,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  DIP = DISASSEMBLY IN PROCESS, TTY=TELETYPE 
/ 
 1 FORMAT RT510 - 6671 TELETYPE SEQUENCE CHECK TEST 
 2 FORMAT EC=0041,OUTPUT WAIT TTY BIT NOT SET 
 3 FORMAT EC=0042,EXPECTED WAIT SET,SENSE AND START CLR,*OCT
 4 FORMAT EC=0043,INPUT TTY CLK NON-ZERO WITH NO DATA COMING
 5 FORMAT EC=0044,OUTPUT WAIT TTY STILL SET AFTER DIP 
 6 FORMAT EC=0045,DIP OR STRT TTY BIT DIDNT SET WHEN EXPECTED 
 7 FORMAT EC=0046,SENSE START BIT STILL SET AFTER START BIT 
10 FORMAT EC=0047,WAIT TTY BIT STILL SET AFTER START BIT SET
11 FORMAT EC=0050,START TTY CLEAR BEFORE 1/10 OF BIT TIME 
12 FORMAT EC=0051,SENSE START BIT NOT SET AFTER 1/10 OF BIT 
13 FORMAT EC=0052,WAIT TTY BIT STILL SET AFTER 1/10 OF BIT
14 FORMAT EC=0053,START TTY BIT STILL SET AFTER 1/10 OF BIT 
15 FORMAT EC=0054,SENSE START BIT CLEAR BEFORE 1/2 OF BIT 
16 FORMAT EC=0055,SENSE,START OR WAIT SET AFTER 1/2 BIT,*OCT
17 FORMAT EC=0056,CLOCK=*OCT,DIDNT CLR AFTER 1/2 BIT TIME 
20 FORMAT LC = *DEC, ERCNT = *DEC 
21 FORMAT RT510 - ERROR(S) IN MODULE
* 
*         DISPLAY RUN MESSAGE.
* 
30 MSG 1 TO DISPLAY 
   B0=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, CLEAR MUX. 
* 
31 RES
   WRITE 7000,ABT 70
   WRITE 7000 TO PORT P1,ABT 70 
   WAIT CHAR                *WAIT FOR MUX TO CLEAR
   WAIT CHAR
   READ TO IB(0),ABT 70     *CLEAR ANY VALID CHARACTER STATUS 
* 
*         CHECK OUTPUT WAIT TTY UP. 
* 
   MAINTRD WORD 0 TO IB(0),ABT 70  *RD OUTPUT INFO
   IF (IB(0).AND.100.EQ.0) ERROR 2/0,GOSUB 71   *NO WAIT TTY
* 
*         CHECK ONLY INPUT WAIT TTY UP. 
* 
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70  *RD IN INFO 
   B7=IB(0).AND.700 
   IF (B7.XOR.100.NE.0) ERROR 3/0,GOSUB 71  *IN INFO INCORR 
* 
*         CHECK CLOCK CLEAR.
* 
   MAINTRD WORD 7 TO IB(0) FROM PORT P1,ABT 70  *RD IN INFO 
   IF (IB(0).AND.7400.NE.0) ERROR 4/0,GOSUB 71  *CLOCK SET
* 
*         OUTPUT CHARACTER. 
* 
   B6=0 
   B7=0 
   OUTPUT 4377,ABT 70       *OUTPUT CHAR
* 
*         WAIT FOR DIP. 
* 
32 MAINTRD WORD 0 TO IB(0),ABT 70  *WAIT FOR DIP
   GOTO 40 WHILE (B6+1.EQ.B1) 
   IF (IB(0).AND.1000.EQ.0) GOTO 32 
* 
*         CHECK OUTPUT WAIT CLEAR, AND WAIT FOR INPUT 
*         START BIT SET.
* 
33 MAINTRD WORD 3 TO IB(1) FROM PORT P1,ABT 70  *RD IN INFO 
   GOTO 40 WHILE (B7+1.EQ.B1) 
   IF (IB(1).AND.200.EQ.0) GOTO 33   *START DETECTED
* 
*         STROBE AT 5 PERCENT.
* 
34 DELAY B2 USEC
   MAINTRD WORD 3 TO IB(2) FROM PORT P1,ABT 70   * 5 PERCENT
* 
*         STROBE AT 15 PERCENT. 
* 
   DELAY B3 USEC
   MAINTRD WORD 3 TO IB(3) FROM PORT P1,ABT 70   *15 PERCENT
* 
*         STROBE AT 45 PERCENT. 
* 
   DELAY B4 USEC
   MAINTRD WORD 3 TO IB(4) FROM PORT P1,ABT 70   *45 PERCENT
* 
*         STROBE AT 55 PERCENT. 
* 
   DELAY B5 USEC
   MAINTRD WORD 7 TO IB(5) FROM PORT P1,ABT 70   *CLOCK 
   MAINTRD WORD 3 TO IB(6) FROM PORT P1,ABT 70   *55 PERCENT
* 
*         TEST RESULTS. 
* 
/        BEGIN TESTING
   IF (IB(0).AND.100.NE.0) ERROR 5/0,GOSUB 71 
   IF (IB(1).AND.400.NE.0) ERROR 7/0,GOSUB 71 
   IF (IB(2).AND.200.EQ.0) ERROR 11/0,GOSUB 71
   IF (IB(3).AND.400.EQ.0) ERROR 12/0,GOSUB 71
   IF (IB(1).AND.100.NE.0) ERROR 10/0,GOSUB 71
   IF (IB(3).AND.200.NE.0) ERROR 14/0,GOSUB 71
   IF (IB(3).AND.100.NE.0) ERROR 13/0,GOSUB 71
   IF (IB(4).AND.400.EQ.0) ERROR 15/0,GOSUB 71
   B7=IB(5).AND.7400
   IF (B7.NE.0) ERROR 17/0,GOSUB 71 
   B7=IB(6).AND.700 
   IF (B7.NE.0) ERROR 16/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
36 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 31
   IF (WC.EQ.0) GOTO 37 
   MSG 21 TO DAYFILE
37 EXIT 
40 ERROR 6/0,GOTO 70        *NO DIP WITHIN ONE BIT TIME 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 36
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF(ES.AND.SL.NE.0)RETURN   *IF SCOPING LOOP
72 MSG EM (B7) TO LINE B0        *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 20 (BA,WC) TO DISPLAY     *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   RES
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 30 
COMPILE 
   MODULE RT511,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - TEST LOST DATA. 
* 
*             RUNS BOTH SYNCHRONOUS (201 MODE) AND
*             ASYNCHRONOUS (103 MODE).
* 
*  DESCRIPTION - TEST LOST DATA.
* 
*                1. RESYNC 6671.
*                2. OUTPUT THREE CHARACTERS.
*                3. WAIT ONE CHARACTER TIME.
*                4. CHECK STATUS (LOST DATA SET). 
*                5. READ (LOST DATA SET). 
*                6. CHECK STATUS (LOST DATA CLEAR). 
*                7. WAIT ONE CHARACTER TIME.
*                8. READ (LOST DATA CLEAR). 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. CHECK LOST DATA STATUS BIT IN PORT STATUS AND 
*                   SERVICE FAILURE BIT IN MUX STATUS.
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0057,LOST DATA STATUS NOT SET AFTER FORCING
*    4. EC=0060,MUX SERV FAILURE STAT NOT SET AFTER FORCING 
*    5. EC=0061,LOST DATA STATUS DIDNT CLEAR AFTER READ 
*    6. EC=0062,MUX SERV FAILURE DIDNT CLEAR AFTER READ 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-8 IN DESCRIPTION. 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  S = SYNC BIT, LD = LOST DATA 
/ 
 1 FORMAT RT511 - 6671 LOST DATA TEST 
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0057,LOST DATA STATUS NOT SET AFTER FORCING
 4 FORMAT EC=0060,MUX SERV FAILURE STAT NOT SET AFTER FORCING 
 5 FORMAT EC=0061,LOST DATA STATUS DIDNT CLEAR AFTER READ 
 6 FORMAT EC=0062,MUX SERV FAILURE DIDNT CLEAR AFTER READ 
 7 FORMAT LC = *DEC, ERCNT = *DEC 
10 FORMAT RT511 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
21 B1=0 
   RES                      *RESERVE CHANNEL
   WRITE 7000,ABT 70        *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   IF (P2.LT.2000) GOTO 24
   OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC RECEIVER
* 
*         OUTPUTB 5 SYNC CODES AND CHECK RESYNCED (201 MODE)
* 
23 OUTPUT P4,ABT 70               *OUTPUT SYNC CODE 
   WAIT HALF                      *WAIT HALF CHARACTER
   GOTO 23 WHILE (B1+1.NE.5)      *LOOP FOR FIVE SYNCS
   MAINTRD WORD 3 TO IB (0) FROM PORT P1,ABT 70   *RD WD 3
   IF (IB(0) AND 20 EQ 0) ERROR 2/0,GOTO 70   *IF S BIT CLR 
* 
*         OUTPUT 2 CHARACTERS.
* 
24 OUTPUT 4001,ABT 70       *OUTPUT CHAR
   WAIT HALF                *WAIT HALF
   OUTPUT 4002,ABT 70       *OUTPUT CHAR
* 
*         WRITE THIRD CHARACTER.
* 
   WAIT CHAR                *WAIT CHAR
   WAIT HALF                *WAIT HALF
   WRITE 4004,ABT 70        *WRITE CHAR 
* 
*         WRITE FOURTH CHARACTER. 
* 
   WAIT CHAR                *WAIT CHAR
   WRITE 4004,ABT 70        *WRITE CHAR 
* 
*         GET MUX STATUS AND PORT STATUS (LD AND SERVICE FAILURE SET) 
* 
   STATUS TO IB(0),ABT 70   *TAKE STATUS,EXP=SERV FAIL
   READ TO IB(1),ABT 70     *READ INPUT BUFFER,EXP=LD 
* 
*         GET MUX STATUS AND PORT STATUS (LD AND SERVICE FAILURE CLEAR) 
* 
   STATUS TO IB(2),ABT 70   *TAKE STATUS,EXP SERV FAIL
   READ TO IB(3),ABT 70     *READ INPUT BUFFER,EXP LD 
* 
*         TEST RESULTS. 
* 
   IF (IB(1).AND.2000.EQ.0) ERROR 3/0,GOSUB 71
   IF (IB(0).AND.1.EQ.0) ERROR 4/0,GOSUB 71 
   IF (IB(3).AND.2000.NE.0) ERROR 5/0,GOSUB 71
   IF (IB(2).AND.1.NE.0) ERROR 6/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
25 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 26 
   MSG 10 TO DAYFILE
26 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 25
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 7 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT512,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST CHARACTER REJECT. 
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST CHARACTER REJECT. 
* 
*                1. RESYNC 6671.
*                2. OUTPUT THREE CHARACTERS.
*                3. READ (CHARACTER REJECT SET).
*                4. WAIT ONE CHARACTER TIME.
*                5. WRITE.
*                6. READ (CHARACTER REJECT CLEAR).
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. CHARACTER REJECT BIT NOT SETTING. 
*                3. CHARACTER REJECT BIT NOT CLEARING.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0063,CHARACTER REJECT NOT SET AFTER FORCING
*    4. EC=0064,CHARACTER REJECT ON WRITE AFTER WAIT CHAR 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-6 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER, SOM = START OF MESSAGE CHARACTER. 
/  OD = OUTPUT DISASSEMBLY BUFFER, CR = CHARACTER REJECT. 
/  S = SYNC BIT 
 1 FORMAT RT512 - 6671 CHARACTER REJECT TEST
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0063,CHARACTER REJECT NOT SET AFTER FORCING
 4 FORMAT EC=0064,CHARACTER REJECT ON WRITE AFTER WAIT CHAR 
 5 FORMAT LC = *DEC, ERCNT = *DEC 
 6 FORMAT RT512 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
/        DO I/O 
21 B1=0 
   RES                      *RESERVE CHANNEL
   WRITE 7000,ABT 70        *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   IF (P2.LT.2000) GOTO 24
   OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC RECEIVER
* 
*         OUTPUT 5 SYNC CODES AND CHECK RESYNCED (201 MODE).
* 
23 OUTPUT P4,ABT 70               *OUTPUT SYNC CODE 
   WAIT HALF                      *WAIT HALF CHARACTER
   GOTO 23 WHILE (B1+1.NE.5)      *LOOP FOR FIVE SYNCS
   MAINTRD WORD 3 TO IB (0) FROM PORT P1,ABT 70   *RD WD 3
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70   *IF S BIT CLR 
* 
*         OUTPUT ONE AND WRITE ANOTHER CHARACTER. 
* 
24 OUTPUT 4001,ABT 70       *OUTPUT CHAR
   WRITE 4001,ABT 70        *WRITE CHAR 
* 
*         WRITE EXPECTING CHARACTER REJECT. 
* 
   WRITE 4001,ABT 70        *WRITE CHAR 
   READ TO IB(0) FROM PORT P0,ABT 70   *RD OUTPUT,EXP=CR
* 
*         WAIT ONE AND TRY AGAIN THIS TIME NOT EXPECTING REJECT.
* 
   WAIT CHAR                *WAIT CHAR
   WRITE 4004,ABT 70        *WRITE CHAR 
   READ TO IB(1) FROM PORT P0,ABT 70  *RD OUTPUT,EXP=NO CR
* 
*         TEST RESULTS. 
* 
/        TEST RESULTS 
   IF (IB(0).AND.400.EQ.0) ERROR 3/0,GOSUB 71 
   IF (IB(1).AND.400.NE.0) ERROR 4/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
25 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 26 
   MSG 6 TO DAYFILE 
26 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 25
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 5 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT513,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST INPUT REQUIRED STATUS.
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST INPUT REQUIRED STATUS.
* 
*                1. RESYNC 6671.
*                2. OUTPUT TWO CHARACTERS.
*                3. WAIT ONE CHARACTER TIME.
*                4. TAKE STATUS (INPUT REQUIRED SET). 
*                5. READ. 
*                6. TAKE STATUS (INPUT REQUIRED CLEAR). 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. INPUT REQUIRED BIT NOT SETTING. 
*                3. INPUT REQUIRED BIT NOT CLEARING.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0065,MUX INPUT REQUIRED STATUS NOT SET 
*    4. EC=0066,MUX INPUT REQUIRED STAT DIDNT CLR AFTER RD
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-6 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  S = SYNC BIT.
/ 
 1 FORMAT RT513 - 6671 MUX INPUT REQUIRED TEST
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0065,MUX INPUT REQUIRED STATUS NOT SET 
 4 FORMAT EC=0066,MUX INPUT REQUIRED STAT DIDNT CLR AFTER RD
 5 FORMAT LC = *DEC, ERCNT = *DEC 
 6 FORMAT RT513 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
/        DO I/O 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
21 B1=0 
   RES                      *RESERVE CHANNEL
   WRITE 7000,ABT 70        *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   IF (P2.LT.2000) GOTO 24
   OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC RECEIVER
* 
*         OUTPUT 5 SYNC CODES AND CHECK RESYNCED(201 MODE)
* 
23 OUTPUT P4,ABT 70               *OUTPUT SYNC CODE 
   WAIT HALF                      *WAIT HALF CHARACTER
   GOTO 23 WHILE (B1+1.NE.5)      *LOOP FOR FIVE SYNCS
   MAINTRD WORD 3 TO IB (0) FROM PORT P1,ABT 70   *RD WD 3
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70   *IF S BIT CLR 
* 
*         OUTPUT 3 CHARACTERS AND READ MUX TO CLEAR VALID CHARACTER 
*         STATUS. 
* 
24 OUTPUT 4001,ABT 70       *OUTPUT CHAR
   OUTPUT 4002,ABT 70       *OUTPUT CHAR
   OUTPUT 4004,ABT 70       *OUTPUT CHAR
   READ TO IB(0),ABT 70     *READ TO CLR VALID CHAR STATUS
   WAIT CHAR                *WAIT CHARACTER 
   IF (P2.LT.4000) GOTO 25  *IF NOT 4800/9600 
   WAIT BIT                 *WAIT BIT 
* 
*         TAKE STATUS ONCE EXPECTING INPUT REQUIRED, READ, THEN TAKE
*         STATUS AGAIN EXPECTING INPUT REQUIRED TO BE DOWN. 
* 
25 STATUS TO IB(1),ABT 70   *GET STATUS,EXP=INPUT REQUIRED
   READ TO IB(0),ABT 70     *READ TO CLEAR INPUT REQUIRED 
   STATUS TO IB(2),ABT 70   *GET STATUS,EXP= NO INPUT REQD
* 
*         TEST RESULTS. 
* 
/        TEST RESULTS 
   IF (IB(1).AND.2.EQ.0) ERROR 3/0,GOSUB 71 
   IF (IB(2).AND.2.NE.0) ERROR 4/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
26 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 27 
   MSG 6 TO DAYFILE 
27 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 26
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 5 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT514,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST OUTPUT FAILURE STATUS.
* 
*              RUNS SYNCHRONOUS (201 MODE) ONLY 
* 
*  DESCRIPTION - TEST OUTPUT FAILURE STATUS.
* 
*                1. RESYNC 6671.
*                2. OUTPUT CHARACTER. 
*                3. WAIT TWO CHARACTER TIMES. 
*                4. TAKE STATUE (OUTPUT FAILURE SET). 
*                5. WRITE.
*                6. TAKE STATUS (OUTPUT FAILURE CLEAR). 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. OUTPUT FAILURE BIT NOT SETTING. 
*                3. OUTPUT FAILURE BIT NOT CLEARING.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0067,MUX OUTPUT FAILURE STATUS NOT SET 
*    3. EC=0070,MUX OUTPUT FAILURE STATUS DIDNT CLEAR 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-6 IN DESCRIPTION. 
* 
*  *******************************************************
*  *                                                     *
*  *    THIS MODULE MAY FAIL IF ALL PORTS EXPECT THE ONE *
*  *    BEING TESTED ARE NOT IN ASYNCHRONOUS (103) MODE. *
*  *                                                     *
*  *******************************************************
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT514 - 6671 MUX OUTPUT FAILURE TEST
 2 FORMAT EC=0067,MUX OUTPUT FAILURE STATUS NOT SET 
 3 FORMAT EC=0070,MUX OUTPUT FAILURE STATUS DIDNT CLEAR 
 4 FORMAT LC = *DEC, ERCNT = *DEC 
 5 FORMAT RT514 - ERROR(S) IN MODULE
* 
*         RUN ONLY IF SYNCHRONOUS MODE. 
* 
20 IF (P2.LT.2000) GOTO 23  *103 MODE 
   MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         RESERVE CHANNEL AND BRING DTR.
* 
/        DO I/O 
21 RES                      *RESERVE CHANNEL
   WRITE 7000,ABT 70        *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
* 
*         OUTPUT 3 CHARACTERS AND WAIT 2 1/2 CHARACTERS TIMES.
* 
   OUTPUT 4124,ABT 70       *OUTPUT CHAR
   OUTPUT 4124,ABT 70       *OUTPUT CHAR
   WAIT CHAR                *WAIT CHAR
   WAIT CHAR                *WAIT CHAR
   WAIT HALF                *WAIT HALF CHARACTER
* 
*         TAKE STATUS EXPECTING OUTPUT FAILURE, WRITE, THEN 
*         TAKE STATUS AGAIN EXPECTING OUTPUT FAILURE DOWN.
* 
   STATUS TO IB(0),ABT 70   *GET STATUS,EXP=OUTPUT FAILURE
   WRITE 4124,ABT 70        *WRITE CHAR 
   STATUS TO IB(1),ABT 70   *GET STATUS,EXP=NO OUTPUT FAIL
* 
*         TEST RESULTS. 
* 
/        TEST RESULTS 
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOSUB 71
   IF (IB(1).AND.20.NE.0) ERROR 3/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
22 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 23 
   MSG 5 TO DAYFILE 
23 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 22
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 4 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT515,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST MEMORY. 
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST MEMORY. 
* 
*                1. MAINTENANCE WRITE ALL WORDS.
*                2. CHECK MEMORY PARITY ERROR.
*                3. MAINTENANCE READ ALL WORDS. 
*                4. CHECK MEMORY PARITY ERROR.
*                5. CHECK DATA. 
*                6. REPEAT TO 1 FOR ALL PATTERNS. 
*                7. REPEAT TO 1 FOR FLOATING ONES AND ZEROS.
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS
*                2. MEMORY DATA ERRORS. 
*                3. MEMORY PARITY ERRORS. 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0116,MEMORY PARITY ERROR ON WRITE
*    3. EC=0117,MEMORY PARITY ERROR ON READ 
*    4. EC=0071,MEM A=*OCT, E=*OCT, W=*OCT, T=*OCT
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-5 IN DESCRIPTION FOR P5=0.
*                2. 3-5 IN DESCRIPTION FOR P5 NON ZERO. 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  MPE = MEMORY PARITY ERROR, MEM = MEMORY TEST 
/  A = ACTUAL, E = EXPECTED, W = WORD, T = TERMINAL 
/ 
 1 FORMAT RT515 - 6671 MEMORY TEST
 2 FORMAT RT515 - MEMORY PATTERN = *OCT 
 3 FORMAT RT515 - 0-3=*OCT, 4-7=*OCT
 4 FORMAT EC=0116,MEMORY PARITY ERROR ON WRITE
 5 FORMAT EC=0117,MEMORY PARITY ERROR ON READ 
 6 FORMAT EC=0071,MEM A=*OCT, E=*OCT, W=*OCT, T=*OCT
 7 FORMAT LC = *DEC, ERCNT = *DEC 
10 FORMAT RT515 - ERROR(S) IN MODULE
* 
*         MEMORY DATA PATTERNS TABLE. 
* 
   DATA (OB(200),CON) 0,7777,2525,5252,6314,1463,7070,0707
   DATA (OB(210),CON) 1,0,0,1,7776,7777,7777,7776 
* 
*         POST RUN MESSAGE. 
* 
/        DATA PATTERNS
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         GENERATE DATA BUFFER FROM PATTERNS TABLE AND
*         TEST MEMORY.
* 
21 B1=200 
22 B2=OB(B1)                *GET DATA PATTERN 
   MSG 2 (B2) TO DISPLAY    *POST MESSAGE 
   B3=WT.LS.3               *COMPUTE WORD COUNT 
   DUP B2 TO OB(0) FOR B3   *GENERATE PATTERN 
   GOSUB 60                 *DO TEST
   GOTO 22 WHILE (B1+1.LT.210)  *LOOP FOR ALL DATA PATTERNS 
* 
*         GENERATE FLOWING ONES AND ZEROS DATA BUFFER AND 
*         TEST MEMORY.
* 
/        FLOW ONES AND ZEROS
30 B2=0 
   B6=OB(B1)                 *GET PATTERNS FOR WORDS 0-3
   B7=OB(B1+1)               *GET PATTERNS FOR WORDS 4-7
31 MSG 3 (B6,B7) TO DISPLAY  *POST MESSAGE
   B3=WT.LS.2                *COMPUTE 1/2 WORD COUNT
   DUP B6 TO OB(0) FOR B3    *GENERATE WORDS 0-3
   DUP B7 TO OB(B3) FOR B3   *GENERATE WORDS 4-7
   GOSUB 60                  *DO TEST 
   B6=B6.LS.1                *SHIFT DATA FOR WORDS 0-3
   B7=B7.LS.1                *SHIFT DATA FOR WORDS 4-7
   GOTO 31 WHILE (B2+1.LT.12D)  *LOOP FOR 12 BITS 
   GOTO 30 WHILE (B1+2.LT.220)  *LOOP FOR ALL PATTERNS
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
32 GOSUB 74 
   IF (ES.AND.RM.NE.0) GOTO 21
   RES
   DUP 0 TO OB FOR 200
   MEMWR,ABT 33                 *CLEAR MEMORY 
33 B1=0 
34 RES
   WAIT CHAR
   READ TO IB(0),ABT 35         *READ TO CLEAR HOLD 
35 GOTO 34 WHILE (B1+1.LT.11D)  *DELAY BEFORE DROP
   IF (WC.EQ.0) GOTO 36 
   MSG 10 TO DAYFILE
36 EXIT 
* 
*         WRITE, READ, AND TEST MEMORY. 
* 
/        I/O
60 RES                            *RESERVE CHANNEL
   MEMWR,ABT 70                   *WRITE TO MEMORY ALL WORDS
   STATUS TO IB(200) HOLD,ABT 70  *CHECK FOR MPE
61 MEMRD,ABT 70                   *READ MEMORY ALL WORDS
   STATUS TO IB(201) HOLD,ABT 70  *CHECK FOR MPE
   IF (IB(200).AND.40.NE.0) ERROR 4/0,GOSUB 71  *TEST MPE 
   IF (IB(201).AND.40.NE.0) ERROR 5/0,GOSUB 71  *TEST MPE 
   B3=0 
   B4=0 
62 B5=0 
63 IF (IB(B3) NE OB(B3)) ERROR 6/0,GOSUB 71   *TEST DATA
   B3=B3+1
   GOTO 63 WHILE (B5+1.LT.WT)     *LOOP FOR ALL PORTS 
   GOTO 62 WHILE (B4+1.LT.8D)     *LOOP FOR ALL WORDS 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
   GOSUB 74 
   IF (ES.AND.RC.EQ.0) GOTO 64
   IF (P5.EQ.0) GOTO 60 
   RES
   GOTO 61
64 RETURN 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB 
   GOSUB 71 
   GOTO 32
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (IB(B3),OB(B3),B4,B5) TO LINE B0  *POST MESSAGE 
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 7 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT516,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST MEMORY ADDRESSING.
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST MEMORY ADDRESSING.
* 
*              1. MAINTENANCE WRITE ALL WORDS WITH ITS PORT AND WORD
*                 NUMBER. 
*              2. CHECK MEMORY PARITY ERRORS. 
*              3. MAINTENANCE READ ALL WORDS. 
*              4. CHECK MEMORY PARITY ERRORS. 
*              5. CHECK DATA. 
* 
*  ERRORS DETECTED -
* 
*              1. ALL PRODUCT OVERLAY ERRORS. 
*              2. MEMORY DATA ERRORS
*              3. MEMORY PARITY ERROR.
*              4. MEMORY ADDRESSING ERROR.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. EC=0116,MEMORY PARITY ERROR ON WRITE
*    3. EC=0117,MEMORY PARITY ERROR ON READ 
*    4. EC=0072,MAD AW=*OCT, AT=*OCT, EW=*OCT, ET=*OCT
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-5 IN DESCRIPTION FOR P5=0.
*                2. 3-5 IN DESCRIPTION FOR P5 NON ZERO. 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  MPE = MEMORY PARITY ERROR, MAD = MEMORY ADDRESSING 
/  TEST, AW = ACTUAL WORD, AT = ACTUAL TERMINAL 
/  EW = EXPECTED WORD, ET = EXPECTED TERMINAL.
/ 
 1 FORMAT RT516 - 6671 MEMORY ADDRESSING TEST 
 2 FORMAT EC=0116,MEMORY PARITY ERROR ON WRITE
 3 FORMAT EC=0117,MEMORY PARITY ERROR ON READ 
 4 FORMAT EC=0072,MAD AW=*OCT, AT=*OCT, EW=*OCT, ET=*OCT
 5 FORMAT LC = *DEC, ERCNT = *DEC 
 6 FORMAT RT516 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         GENERATE DATA BUFFER (PPWW WHERE PP IS PORT 
*         NUMBER AND WW THE WORD NUMBER)
   B1=0 
   B2=0 
21 B3=0 
22 OB(B2)=B1                *GENERATE PATTERN 
   B1=B1+100                *B1= 6 / PORT , 6 / WORD
   B2=B2+1
   GOTO 22 WHILE (B3+1.LT.WT) 
   B1=B1 AND 77 
   GOTO 21 WHILE (B1+1.LT.8D) 
* 
*         WRITE AND READ MEMORY.
* 
23 RES                            *RESERVE CHANNEL
   MEMWR,ABT 70                   *WRITE TO MEMORY ALL WORDS
   STATUS TO IB(200) HOLD,ABT 70  *CHECK FOR MPE
24 MEMRD,ABT 70                   *READ MEMORY ALL WORDS
   STATUS TO IB(201) HOLD,ABT 70  *CHECK FOR MPE
   IF (IB(200).AND.40.NE.0) ERROR 2/0,GOSUB 71  *TEST MPE 
   IF (IB(201).AND.40.NE.0) ERROR 3/0,GOSUB 71  *TEST MPE 
* 
*         CHECK DATA
* 
   B3=0 
   B4=0 
30 B5=0 
31 IF (IB(B3).NE.OB(B3)) ERROR 4/0,GOSUB 71   *TEST DATA
   B3=B3+1
   GOTO 31 WHILE (B5+1.LT.WT)  *LOOP FOR ALL PORTS
   GOTO 30 WHILE (B4+1.LT.8D)  *LOOP FOR ALL WORDS
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
32 GOSUB 74 
   IF (ES.AND.RC.EQ.0) GOTO 33
   IF (P5.EQ.0) GOTO 23 
   RES
   GOTO 24
33 IF (ES.AND.RM.NE.0) GOTO 23
   RES
   DUP 0 TO OB FOR 200
   MEMWR,ABT 34                 *CLEAR MEMORY 
34 B1=0 
35 RES
   WAIT CHAR
   READ TO IB(0),ABT 36         *READ TO CLEAR HOLD 
36 GOTO 35 WHILE (B1+1.LT.11D)  *DELAY BEFORE DROP
   IF (WC.EQ.0) GOTO 37 
   MSG 6 TO DAYFILE 
37 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 32
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 B6=IB(B3).RS.6 
   B7=IB(B3).AND.77 
   MSG EM (B7,B6,B4,B5) TO LINE B0  *POST MESSAGE 
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 5 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT517,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST ASCII CODE RECOGNITION. 
* 
*              RUNS SYNCHRONOUS (201 MODE) ONLY AND ONLY
*              IF NOT TRANSPARENT MODE AND NOT SYNC=366.
* 
*  DESCRIPTION - TEST ASCII CODE RECOGNITION. 
* 
*                1. START WITH 001. 
*                2. IF CHARACTER IS SYNC, SOM, OR EOM SKIP IT.
*                3. RESYNC 6671.
*                4. CLEAR OUTPUT MPC REGISTER.
*                5. OUTPUT CHARACTER. 
*                6. CHECK MPC OUTPUT REGISTER.
*                7. CLEAR INPUT MPC REGISTER. 
*                8. WAIT FOR CHARACTER IN INPUT BUFFER. 
*                9. CHECK INPUT MPC REGISTER. 
*               10. REPEAT 2 TO 9 FOR 1 - 376.
*               11. REPEAT 2 TO 9 FOR 000 AND 377.
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. CHARACTER INTERPRETED AS SOM, SYNC, OR EOM ON OUTPUT. 
*                3. CHARACTER INTERPRETED AS SOM, SYNC, OR EOM ON INPUT.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
*    3. EC=0075,*OCT INTERPRETED AS EOM ON OUTPUT 
*    4. EC=0074,*OCT INTERPRETED AS SYNC ON OUTPUT
*    5. EC=0073,*OCT INTERPRETED AS SOM ON OUTPUT 
*    6. EC=0077,*OCT RECOGNIZED AS SYNC ON INPUT
*    7. EC=0076,*OCT RECOGNIZED AS SOM ON INPUT 
*    8. EC=0100,*OCT RECOGNIZED AS EOM ON INPUT 
* 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 3-9 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER, SOM = START OF MESSAGE CHARACTER. 
/  OD = OUTPUT DISASSEMBLY BUFFER, CR = CHARACTER REJECT. 
/  S = SYNC BIT.
/ 
 1 FORMAT RT517 - 6671 ASCII CODE RECOGNITION TEST
 2 FORMAT EC=0001,S BIT NOT SET AFTER 4 SYNCS 
 3 FORMAT EC=0075,*OCT INTERPRETED AS EOM ON OUTPUT 
 4 FORMAT EC=0074,*OCT INTERPRETED AS SYNC ON OUTPUT
 5 FORMAT EC=0073,*OCT INTERPRETED AS SOM ON OUTPUT 
 6 FORMAT EC=0077,*OCT RECOGNIZED AS SYNC ON INPUT
 7 FORMAT EC=0076,*OCT RECOGNIZED AS SOM ON INPUT 
10 FORMAT EC=0100,*OCT RECOGNIZED AS EOM ON INPUT 
11 FORMAT LC = *DEC, ERCNT = *DEC 
12 FORMAT RT517 - ERROR(S) IN MODULE
* 
*         RUN ONLY IF SYNCHRONOUS, NOT SYNC=366 AND NOT TRANSPARENT.
* 
20 IF (P3.AND.1.NE.0) GOTO 31    *TRANSPARENT 
   IF (P2.LT.2000) GOTO 31       *103 MODE
   IF (P4.EQ.4366) GOTO 31       *SYNC = 4366 
   WC=0 
* 
*         POST RUN MESSAGE
* 
   MSG 1 TO DISPLAY,PRINT        *POST SECTION MESSAGE
* 
*         ELIMINATE SOM, SYNC, AND EOM FROM CHARACTER LIST. 
* 
21 B1=4000                       *SET DATA CHARACTER
22 B2=0 
   B7=B1.XOR.P4.AND.177 
   IF (B7.EQ.0) GOTO 30          *SKIP SYNC CHARACTER 
   IF (B1.EQ.4203) GOTO 30       *SKIP EOM
   IF (B1.EQ.4001) GOTO 30       *SKIP SOM
   IF (B1.AND.177.EQ.0) GOTO 23  *SPECIAL CASE 000
   B7=B1.AND.177
   IF (B7.NE.177) GOTO 24        *NOT SPECIAL CASE 377
23 B2=252 
24 B7=0 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
   RES                           *RESERVE CHANNEL 
   WRITE 7000,ABT 70             *DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   OUTPUT 1000 TO PORT P1,ABT 70  *RESYNC MUX 
* 
*         OUTPUT 5 SYNC CODES AND TEST FOR RESYNCED.
* 
25 OUTPUT P4,ABT 70 
   WAIT HALF
   GOTO 25 WHILE (B7+1.NE.5)
   MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70
   IF (IB(0).AND.20.EQ.0) ERROR 2/0,GOTO 70  *TEST RESYNC 
* 
*         OUTPUT THE CHARACTER AND SET OUTPUT MPC.
* 
   OUTPUT B1,ABT 70                *OUTPUT CHARACTER
   MAINTWR B2 TO WORD 6,ABT 70     *SET OUTPUT MPC
* 
*         READ OUTPUT BUFFER AND MPC, SET INPUT MPC.
* 
   WAIT CHAR
   MAINTRD WORD 6 TO IB(0),ABT 70  *READ OUTPUT MPC 
   MAINTRD WORD 5 TO IB(1),ABT 70  *READ OUTPUT BUFFER
   MAINTWR B2 TO WORD 2 OF PORT P1,ABT 70  *SET INPUT MPC 
* 
*         READ INPUT MPC. 
* 
   WAIT CHAR
   WAIT BIT 
   IF (P2.LT.4000) GOTO 26
   WAIT BIT 
26 MAINTRD WORD 2 TO IB(2) FROM PORT P1,ABT 70  *RD INP MPC 
* 
*         TEST RESULTS. 
* 
/        DO TESTING 
   IF (IB(1).AND.4000.NE.0) ERROR 3/0,GOSUB 71
   IF (IB(0).EQ.B2) ERROR 4/0,GOSUB 71
   B7=B1.XOR.177.XOR.IB(0)
   IF (B7.AND.177.EQ.0) ERROR 5/0,GOSUB 71
   IF (IB(2).EQ.B2) ERROR 6/0,GOSUB 71
   B7=B1.XOR.177.XOR.IB(2)
   IF (B7.AND.177.EQ.0) ERROR 7/0,GOSUB 71
   IF (IB(2).AND.400.NE.0) ERROR 10/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
27 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 24
30 GOTO 22 WHILE (B1+1.LT.4400)  *LOOP FOR ALL CHARACTERS 
   IF (ES.AND.RM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 31 
   MSG 12 TO DAYFILE
31 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 27
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B1) TO LINE B0        *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 11 (BA,WC) TO DISPLAY     *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT520,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST BIT AND CLOCK COUNTER SEQUENCE. 
* 
*              RUNS SYNCHRONOUS (201 MODE) AND ASYNCHRONOUS 
*              (103 MODE) IF LESS THAN 300 BAUD.
* 
*  DESCRIPTION - TEST BIT AND CLOCK COUNTER SEQUENCE. 
* 
*                1. IF 103 MODE GOTO 7. 
*                2. WAIT OUTPUT BIT COUNT = 0.
*                3. READ AND CHECK OUTPUT BIT COUNTER SEQUENCE. 
*                4. SEND SYNC CODES UNTIL SYNCA SETS. 
*                5. READ AND CHECK INPUT BIT COUNTER SEQUENCE.
*                6. EXIT. 
*                7. EXIT IF 600 OR 1200 BAUD. 
*                8. SEND CHARACTER TO 6671. 
*                9. WAIT FOR CHARACTER TO ENTER DISASSEMBLY REGISTER. 
*               10. READ OUTPUT CLOCK COUNT 10 TIMES (103 MODE) 
*               11. READ OUTPUT BIT COUNTS 12 TIMES.
*               12. SEND THREE CHARACTERS TO 6671.
*               13. WAIT FOR WAIT TTY BIT TO SET THEN CLEAR.
*               14. READ INPUT CLOCK 5 TIMES. 
*               15. READ INPUT BIT COUNT. 
*               16. READ INPUT CLOCK 10 TIMES.
*               17. READ INPUT BIT COUNT 11 TIMES.
*               18. CHECK ERRORS. 
* 
*  ERRORS DETECTED -
* 
*                1. ALL PRODUCT OVERLAY ERRORS. 
*                2. OUTPUT AND INPUT CLOCK COUNT INCORRECT. 
*                3. OUTPUT AND INPUT BIT COUNT INCORRECT. 
*                4. INPUT START BIT SEQUENCE INCORRECT. 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0101,OUTPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT
*    3. EC=0102,INPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT 
*    4. EC=0103,OUTPUT CLOCK CNT INCORRECT,A=*OCT,E=*OCT
*    5. EC=0104,INPUT CLK ON STRT BIT INCORRECT,A=*OCT,E=*OCT 
*    6. EC=0105,INPUT CLOCK COUNT INCORRECT,A=*OCT,E=*OCT 
* 
*  REPEAT CONDITION LOOP -
* 
*                1.  SYNC -  2-3 IN DESCRIPTION FOR 101,103.
*                            4-5 IN DESCRIPTION FOR 102,104,105.
*                2. ASYNC -  8-11 IN DESCRIPTION FOR 101,103. 
*                           12-18 IN DESCRIPTION FOR 102,104,105. 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT520 - 6671 BIT COUNT TEST - 201 MODE
 2 FORMAT EC=0101,OUTPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT
 3 FORMAT EC=0102,INPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT 
 4 FORMAT LC = *DEC, ERCNT = *DEC 
 5 FORMAT RT520 - ERROR(S) IN MODULE
 6 FORMAT RT520 - 6671 CLOCK AND BIT COUNT TEST - 103 MODE
* 
*         TEST ASYNCHRONOUS AND POST RUN MESSAGE
* 
20 WC=0 
   IF (P2.LT.2000) GOTO 50   *IF ASYNCHRONOUS MODE
   MSG 1 TO DISPLAY,PRINT    *POST MESSAGE
   B7=0 
* 
*         RESERVE CHANNEL AND BRING UP DTR. 
* 
21 RES                             *RESERVE CHANNEL 
   WRITE 7000,ABT 70               *BRING UP DTR
   WRITE 7000 TO PORT P1,ABT 70    *BRING UP DTR
* 
*         CHECK OUTPUT BIT COUNT, WAIT COUNT=0. 
* 
/        CHECK OUTPUT BIT COUNT.
   B1=0 
22 MAINTRD WORD 0 TO IB(B1),ABT 70  *WAIT FOR BIT COUNT=0 
   IF (IB(B1).AND.17.NE.0) GOTO 22
* 
*         WAIT FOR AND SAVE CHANGES IN BIT COUNT. 
* 
23 MAINTRD WORD 0 TO IB(B1+1),ABT 70  *LOOP WAITING CHANGE
   B2=IB(B1).XOR.IB(B1+1).AND.17
   IF (B2.EQ.0) GOTO 23 
   GOTO 23 WHILE (B1+1.NE.8D) 
* 
*         TEST RESULTS. 
* 
/        TEST 
   B1=0 
24 B2=IB(B1).AND.17                    *TEST INCREMENTING 
   IF (B2.NE.B1) ERROR 2/0,GOSUB 71 
   GOTO 24 WHILE (B1+1.LT.8D) 
   B2=IB(B1).AND.17                    *TEST WRAP TO ZERO 
   IF (B2.NE.0) ERROR 2/0,GOSUB 71
* 
*         HANDLE REPEAT.
* 
25 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 21
/        CHECK INPUT BIT COUNT
   B7=1 
* 
*         RESERVE CHANNEL, BRING UP DTR, AND RESYNC.
* 
30 RES                           *RESERVE CHANNEL 
   WRITE 7000,ABT 70             *BRING UP DTR
   WRITE 7000 TO PORT P1,ABT 70  *BRING UP DTR
   OUTPUT 1000,ABT 70 
* 
*         OUTPUT SYNCS. 
* 
   OUTPUT P4,ABT 70              *OUTPUT SYNC 
   WAIT HALF
31 WRITE P4,ABT 70               *WRITE SYNC
* 
*         WAIT FOR SYNCA TO SET.
* 
   B1=0 
32 MAINTRD WORD 3 TO IB(B1) FROM PORT P1,ABT 70  *WAIT SYNCA
   IF (IB(B1).AND.40.EQ.0) GOTO 32
* 
*         WAIT FOR AND SAVE CHANGES IN BIT COUNT. 
* 
34 MAINTRD WORD 3 TO IB(B1+1) FROM PORT P1,ABT 70  *CHANGE
   B2=IB(B1).XOR.IB(B1+1) AND 17
   IF (B2.EQ.0) GOTO 34 
   GOTO 34 WHILE (B1+1.LT.8D) 
* 
*         TEST RESULTS. 
* 
/        TEST 
   B1=0 
35 B2=IB(B1).AND.17 
   IF (B2.NE.B1) ERROR 3/0,GOSUB 71 
   GOTO 35 WHILE (B1+1.LT.8D) 
   B1=0 
   B2=IB(B1).AND.17 
   IF (B2.NE.0) ERROR 3/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
36 GOSUB 74 
   IF (ES.AND.RC.EQ.0) GOTO 37
   IF (B7.EQ.0) GOTO 21 
   GOTO 30
37 IF (ES.AND.RM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 40 
   MSG 5 TO DAYFILE 
40 EXIT 
* 
*         DETERMINE ASYNCHRONOUS RATE AND CALL MODULE.
* 
50 IF (P2.GE.300) GOTO 40 
   MSG 6 TO DISPLAY,PRINT 
   IF (P2.EQ.110) GOTO 41 
   IF (P2.EQ.134) GOTO 42 
   EXIT TO 204              *150 BAUD 
41 EXIT TO 200              *110 BAUD 
42 EXIT TO 202              *134.5 BAUD 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                   *END ANY SUBROUTINES
   GOSUB 71 
   GOTO 36
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B2,B1) TO LINE B0     *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 4 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5200,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT520 - 6671 CLOCK AND BIT COUNT TEST - 103 MODE
 2 FORMAT EC=0103,OUTPUT CLOCK CNT INCORRECT,A=*OCT,E=*OCT
 3 FORMAT EC=0101,OUTPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT
 4 FORMAT LC = *DEC, ERCNT = *DEC 
* 
*         DISPLAY RUN MESSAGE.
* 
20 MSG 1 TO DISPLAY          *DISPLAY RUN MESSAGE.
   B0=0 
* 
*         RESERVE CHANNEL.
* 
/        TEST OUTPUT BIT / CLOCK COUNT
   RES                       *RESERVE CHANNEL.
   B1=0 
* 
*         DETERMINE INSTRUCTION EXECUTION TIME. 
* 
21 IF (RT.AND.7000.NE.0) GOTO 21       *WAIT UPPER CLOCK=0. 
   B2=RT                               *SAVE IT 
   MAINTRD WORD 0 TO IB(0),ABT 70      *TIMED INSTRUCTION 
   DELAY 10 USEC                       *TIMED INSTRUCTION 
   GOTO 22 WHILE (B1+1.NE.11D)         *TIMED INSTRUCTION 
22 B2=RT-B2-10                         *SAVE ELASPE TIME
* 
*         SET DELAY CONSTANTS.
* 
   B5=909D-B2               *1/10 BIT - 1 MAINTRD 
   B6=9D                    *BIT TIME MILLISECONDS
   B7=91D                   *BIT TIME MICROSECONDS
23 IF (B7.GE.B2) GOTO 24
   B6=B6-1
   B7=B7+1000D
   GOTO 23
24 B7=B7-B2                 *SET TO BIT TIME - 1 MAINTRD
* 
*         RESERVE CHANNEL, BRING UP DTR, AND CLEAR MUX. 
* 
25 RES                           *RESERVE CHANNEL.
   WRITE 7000,ABT 70             *BRING UP DTR
   WRITE 7000 TO PORT P1,ABT 70  *BRING UP DTR
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70          *READ TO CLEAR MUX 
   B1=0 
   B2=1 
* 
*         WAIT FOR CLOCK COUNT LESS THAN 8. 
* 
26 MAINTRD WORD 4 TO IB (0),ABT 70   *WAIT COUNT LT 8 
   IF (IB(0).AND.4000.NE.0) GOTO 26 
* 
*         OUT TWO CHARACTERS AND GET BIT COUNT. 
* 
   OUTPUT 4377,ABT 70            *OUTPUT CHARACTER
   OUTPUT 4377,ABT 70            *OUTPUT CHARACTER
   MAINTRD WORD 0 TO IB(100),ABT 70  *BIT COUNT 
* 
*         STROBE CLOCK COUNT. 
* 
27 MAINTRD WORD 4 TO IB(B1),ABT 70   *CLOCK COUNT 
   DELAY B5 USEC
   GOTO 27 WHILE (B1+1.NE.11D)
* 
*         STROBE BIT COUNT. 
* 
30 MAINTRD WORD 0 TO IB(B2+100),ABT 70  *BIT COUNT
   DELAY B6 MSEC
   DELAY B7 USEC
   GOTO 30 WHILE (B2+1.NE.11D)
* 
*         TEST CLOCK RESULTS. 
* 
/        TEST CLOCK 
   B1=0 
40 B2=IB(B1).RS.8D
   IF (B2.NE.B1) ERROR 2/0,GOSUB 71 
   GOTO 40 WHILE (B1+1.LT.10D)
   B1=0 
   B2=IB(B1).RS.8D
   IF (B2.NE.0) ERROR 2/0,GOSUB 71
* 
*         TEST BIT RESULTS. 
* 
/        TEST BIT 
   B1=1 
41 B2=IB(B1+77).AND.17
   IF (B2.NE.B1) ERROR 3/0,GOSUB 71 
   GOTO 41 WHILE (B1+1.NE.11D)
   B1=0 
   B2=IB(B1+77).AND.17
   IF (B2.NE.0) ERROR 3/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
42 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 25
   EXIT TO 201
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 42
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B2,B1) TO LINE B0     *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 4 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5201,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  TTY = TELETYPE.
/ 
 1 FORMAT RT520 - 6671 CLOCK AND BIT COUNT TEST - 103 MODE
 2 FORMAT EC=0102,INPUT BIT COUNT INCORRECT, A=*OCT, E=*OCT 
 3 FORMAT EC=0104,INP CLK ON STRT BIT WRONG, A=*OCT, E=*OCT 
 4 FORMAT EC=0105,INPUT CLOCK COUNT INCORRECT,A=*OCT,E=*OCT 
 5 FORMAT LC = *DEC, ERCNT = *DEC 
 6 FORMAT RT520 - ERROR(S) IN MODULE
* 
*         DISPLAY RUN MESSAGE.
* 
20 MSG 1 TO DISPLAY          *DISPLAY RUN MESSAGE 
   B0=0 
* 
*         RESERVE CHANNEL.
* 
   RES                       *RESERVE CHANNEL 
   B1=0 
* 
*         DETERMINE INSTRUCTION EXECUTION TIME. 
* 
21 IF (RT.AND.7000.NE.0) GOTO 21
   B2=RT
   MAINTRD WORD 0 TO IB(0),ABT 70 
   DELAY 10 USEC
   GOTO 22 WHILE (B1+1.NE.11D)
22 B2=RT-B2-10
* 
*         SET DELAY CONSTANTS.
* 
   B5=909D-B2               *1/10 BIT - 1 MAINTRD 
   B6=9D                    *BIT TIME MILLISECONDS
   B7=91D                   *BIT TIME MICROSECONDS
23 IF (B7.GE.B2) GOTO 24
   B6=B6-1
   B7=B7 + 1000D
   GOTO 23
24 B7=B7-B2                 *SET TO BIT TIME - 1 MAINTRD
* 
*         RESERVE CHANNEL AND BRING UP DTR. 
* 
25 RES                           *RESERVE CHANNEL 
   WRITE 7000,ABT 70             *BRING UP DTR
   WRITE 7000 TO PORT P1,ABT 70  *BRING UP DTR
   WAIT CHAR
   B1=0 
   B2=2 
* 
*         OUTPUT 3 CHARACTERS.
* 
   OUTPUT 4377,ABT 70        *OUTPUT CHARACTER
   OUTPUT 4377,ABT 70        *OUTPUT CHARACTER
   WAIT HALF
   OUTPUT 4377,ABT 70        *OUTPUT CHARACTER
* 
*         WAIT FOR WAIT TTY TO SET. 
* 
26 MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70
   IF (IB(0).AND.100.EQ 0) GOTO 26  *WAIT TTY SET 
* 
*         WAIT FOR WAIT TTY TO CLEAR. 
* 
27 MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70
   IF (IB(0).AND.100.NE.0) GOTO 27  *WAIT TTY CLEAR 
* 
*         STROBE FIRST FIVE CLOCKS. 
* 
30 MAINTRD WORD 7 TO IB(B1+100),ABT 70  *CLOCK
   DELAY B5 USEC
   GOTO 30 WHILE (B1+1.LT.6)
* 
*         STROBE BIT AND REMAINDER OF CLOCKS. 
* 
   MAINTRD WORD 3 TO IB (1) FROM PORT P1,ABT 70  *BIT 
31 MAINTRD WORD 7 TO IB(B1+100) FROM PORT P1,ABT 70  *CLOCK 
   DELAY B5 USEC
   GOTO 31 WHILE (B1+1.LT.16D)
* 
*         STORBE BIT COUNT. 
* 
32 MAINTRD WORD 3 TO IB(B2) FROM PORT P1,ABT 70  *BIT 
   DELAY B6 MSEC
   DELAY B7 USEC
   GOTO 32 WHILE (B2+1.LT.12D)
* 
*         TEST BIT COUNT RESULTS. 
* 
/        TEST BIT COUNT 
   B3=0 
40 B2=IB(B3).AND.17 
   IF (B2.NE.B3) ERROR 2/0,GOSUB 71 
   GOTO 40 WHILE (B3+1.LT.11D)
   B3=0 
   B2=IB(B3).AND.17 
   IF (B2.NE.0) ERROR 2/0,GOSUB 71
* 
*         TEST CLOCK COUNT RESULTS. 
* 
/        TEST CLOCK 
   B1=0 
   B3=0 
41 B2=IB(B1+100).RS.8D
   IF (B3.NE.B2) ERROR 3/0,GOSUB 71 
   B3=B3+1
   GOTO 41 WHILE (B1+1.LT.5)
   B3=0 
42 B2=IB(B1+100).RS.8D
   IF (B3.NE.B2) ERROR 4/0,GOSUB 71 
   B3=B3+1
   GOTO 42 WHILE (B1+1.LT.15D)
   B3=0 
   B2=IB(B1+100).RS.8 
   IF (B2.NE.0) ERROR 4/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
43 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 25
   IF (ES.AND.RM.EQ.0) GOTO 44
   EXIT TO 200
44 IF (WC.EQ.0) GOTO 45 
   MSG 6 TO DAYFILE 
45 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 43
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B2,B3) TO LINE B0     *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 5 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5202,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT520 - 6671 CLOCK AND BIT COUNT TEST - 103 MODE
 2 FORMAT EC=0103,OUTPUT CLOCK CNT INCORRECT,A=*OCT,E=*OCT
 3 FORMAT EC=0101,OUTPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT
 4 FORMAT LC = *DEC, ERCNT = *DEC 
* 
*         DISPLAY RUN MESSAGE.
* 
20 MSG 1 TO DISPLAY 
   B0=0 
/        TEST OUTPUT BIT / CLOCK COUNT
* 
*         RESERVE CHANNEL.
* 
   RES
   B1=0 
* 
*         DETERMINE INSTRUCTION EXECUTION TIME. 
* 
21 IF (RT.AND.7000.NE.0) GOTO 21
   B2=RT
   MAINTRD WORD 0 TO IB(0),ABT 70 
   DELAY 10 USEC
   GOTO 22 WHILE (B1+1.NE.11D)
22 B2=RT-B2-10
* 
*         SET DELAY CONSTANTS.
* 
   B5=743D-B2               *1/10 BIT - 1 MAINTRD 
   B6=7D                    *BIT TIME MILLISECONDS
   B7=435D                  *BIT TIME MICROSECONDS
23 IF (B7.GE.B2) GOTO 24
   B6=B6-1
   B7=B7+1000D
   GOTO 23
24 B7=B7-B2                 *SET TO BIT TIME - 1 MAINTRD
* 
*         RESERVE CHANNEL, BRING UP DTR, AND CLEAR MUX. 
* 
25 RES
   WRITE 7000,ABT 70
   WRITE 7000 TO PORT P1,ABT 70 
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70 
   B1=0 
   B2=1 
* 
*         WAIT FOR CLOCK COUNT LESS THAN 8. 
* 
26 MAINTRD WORD 4 TO IB (0),ABT 70   *WAIT COUNT LT 8 
   IF (IB(0).AND.4000.NE.0) GOTO 26 
* 
*         OUTPUT TWO CHARACTERS AND GET BIT COUNT.
* 
   OUTPUT 4377,ABT 70 
   OUTPUT 4377,ABT 70 
   MAINTRD WORD 0 TO IB(100),ABT 70  *BIT COUNT 
* 
*         STROBE CLOCK COUNT. 
* 
27 MAINTRD WORD 4 TO IB(B1),ABT 70   *CLOCK COUNT 
   DELAY B5 USEC
   GOTO 27 WHILE (B1+1.NE.11D)
* 
*         STROBE BIT COUNT. 
* 
30 MAINTRD WORD 0 TO IB(B2+100),ABT 70  *BIT COUNT
   DELAY B6 MSEC
   DELAY B7 USEC
   GOTO 30 WHILE (B2+1.NE.11D)
* 
*         TEST CLOCK COUNT RESULTS. 
* 
/        TEST CLOCK 
   B1=0 
40 B2=IB(B1).RS.8D
   IF (B2.NE.B1) ERROR 2/0,GOSUB 71 
   GOTO 40 WHILE (B1+1.LT.10D)
   B1=0 
   B2=IB(B1).RS.8D
   IF (B2.NE.0) ERROR 2/0,GOSUB 71
* 
*         TEST BIT COUNT RESULTS. 
* 
/        TEST BIT 
   B1=1 
41 B2=IB(B1+77).AND.17
   IF (B2.NE.B1) ERROR 3/0,GOSUB 71 
   GOTO 41 WHILE (B1+1.NE.9D) 
   B1=0 
   B2=IB(B1+77).AND.17
   IF (B2.NE.0) ERROR 3/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
42 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 25
   EXIT TO 203
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                   *END ANY SUBROUTINES
   GOSUB 71 
   GOTO 42
   RETURN                        *RETURN
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B2,B1) TO LINE B0     *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 4 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5203,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  TTY = TELETYPE.
/ 
 1 FORMAT RT520 - 6671 CLOCK AND BIT COUNT TEST - 103 MODE
 2 FORMAT EC=0102,INPUT BIT COUNT INCORRECT, A=*OCT, E=*OCT 
 3 FORMAT EC=0104,INP CLK ON STRT BIT WRONG, A=*OCT, E=*OCT 
 4 FORMAT EC=0105,INPUT CLOCK COUNT INCORRECT,A=*OCT,E=*OCT 
 5 FORMAT LC = *DEC, ERCNT = *DEC 
 6 FORMAT RT520 - ERROR(S) IN MODULE
* 
*         DISPLAY RUN MESSAGE.
* 
20 MSG 1 TO DISPLAY 
   B0=0 
* 
*         RESERVE CHANNEL.
* 
   RES
   B1=0 
* 
*         DETERMINE INSTRUCTION EXECUTION TIME. 
* 
21 IF (RT.AND.7000.NE.0) GOTO 21
   B2=RT
   MAINTRD WORD 0 TO IB(0),ABT 70 
   DELAY 10 USEC
   GOTO 22 WHILE (B1+1.NE.11D)
22 B2=RT-B2-10
* 
*         SET DELAY CONSTANTS.
* 
   B5=743D-B2               *1/10 BIT - 1 MAINTRD 
   B6=7D                    *BIT TIME MILLISECONDS
   B7=435D                  *BIT TIME MICROSECONDS
23 IF (B7.GE.B2) GOTO 24
   B6=B6-1
   B7=B7 + 1000D
   GOTO 23
24 B7=B7-B2                 *SET TO BIT TIME - 1 MAINTRD
* 
*         RESERVE CHANNEL AND BRING UP DTR. 
* 
25 RES
   WRITE 7000,ABT 70
   WRITE 7000 TO PORT P1,ABT 70 
   WAIT CHAR
   B1=0 
   B2=2 
* 
*         OUTPUT 3 CHARACTERS.
* 
   OUTPUT 4377,ABT 70 
   OUTPUT 4377,ABT 70 
   WAIT HALF
   OUTPUT 4377,ABT 70 
* 
*         WAIT FOR WAIT TTY TO SET. 
* 
26 MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70
   IF (IB(0).AND.100.EQ 0) GOTO 26  *WAIT TTY SET 
* 
*         WAIT FOR WAIT TTY TO CLEAR. 
* 
27 MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70
   IF (IB(0).AND.100.NE.0) GOTO 27  *WAIT TTY CLEAR 
* 
*         READ CLOCK COUNTER FOR START BIT. 
* 
30 MAINTRD WORD 7 TO IB(B1+100),ABT 70  *CLOCK
   DELAY B5 USEC
   GOTO 30 WHILE (B1+1.LT.6)
* 
*         READ BIT COUNT AND CLOCK COUNT FOR REST OF COUNT. 
* 
   MAINTRD WORD 3 TO IB (1) FROM PORT P1,ABT 70  *BIT 
31 MAINTRD WORD 7 TO IB(B1+100) FROM PORT P1,ABT 70  *CLOCK 
   DELAY B5 USEC
   GOTO 31 WHILE (B1+1.LT.16D)
* 
*         READ CLOCK COUNT. 
* 
32 MAINTRD WORD 3 TO IB(B2) FROM PORT P1,ABT 70 
   DELAY B6 MSEC
   DELAY B7 USEC
   GOTO 32 WHILE (B2+1.LT.12D)
* 
*         TEST BIT COUNT. 
* 
/        TEST BIT COUNT 
   B3=0 
40 B2=IB(B3).AND.17 
   IF (B2.NE.B3) ERROR 2/0,GOSUB 71 
   GOTO 40 WHILE (B3+1.LT.9D) 
   B3=0 
   B2=IB(B3).AND.17 
   IF (B2.NE.0) ERROR 2/0,GOSUB 71
* 
*         TEST CLOCK COUNT. 
* 
/        TEST CLOCK 
   B1=0 
   B3=0 
41 B2=IB(B1+100).RS.8D
   IF (B3.NE.B2) ERROR 3/0,GOSUB 71 
   B3=B3+1
   GOTO 41 WHILE (B1+1.LT.5)
   B3=0 
42 B2=IB(B1+100).RS.8D
   IF (B3.NE.B2) ERROR 4/0,GOSUB 71 
   B3=B3+1
   GOTO 42 WHILE (B1+1.LT.15D)
   B3=0 
   B2=IB(B1+100).RS.8 
   IF (B2.NE.0) ERROR 4/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
43 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 25
   IF (ES.AND.RM.EQ.0) GOTO 44
   EXIT TO 200
44 IF (WC.EQ.0) GOTO 45 
   MSG 6 TO DAYFILE 
45 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 43
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B2,B3) TO LINE B0     *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 5 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5204,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT520 - 6671 CLOCK AND BIT COUNT TEST - 103 MODE
 2 FORMAT EC=0103,OUTPUT CLOCK CNT INCORRECT,A=*OCT,E=*OCT
 3 FORMAT EC=0101,OUTPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT
 4 FORMAT LC = *DEC, ERCNT = *DEC 
* 
*         DISPLAY RUN MESSAGE.
* 
20 MSG 1 TO DISPLAY 
   B0=0 
/        TEST OUTPUT BIT / CLOCK COUNT
* 
*         RESERVE CHANNEL.
* 
   RES
   B1=0 
* 
*         DETERMINE INSTRUCTION EXECUTION TIME. 
* 
21 IF (RT.AND.7000.NE.0) GOTO 21
   B2=RT
   MAINTRD WORD 0 TO IB(0),ABT 70 
   DELAY 10 USEC
   GOTO 22 WHILE (B1+1.NE.11D)
22 B2=RT-B2-10
* 
*         SET DELAY CONSTANTS.
* 
   B5=667D-B2               *1/10 BIT - 1 MAINTRD 
   B6=6D                    *BIT TIME MILLISECONDS
   B7=667D                  *BIT TIME MICROSECONDS
23 IF (B7.GE.B2) GOTO 24
   B6=B6-1
   B7=B7+1000D
   GOTO 23
24 B7=B7-B2                 *SET TO BIT TIME - 1 MAINTRD
* 
*         RESERVE CHANNEL, BRING UP DTR, AND CLEAR MUX. 
* 
25 RES
   WRITE 7000,ABT 70
   WRITE 7000 TO PORT P1,ABT 70 
   WAIT CHAR
   WAIT CHAR
   READ TO IB(0),ABT 70 
   B1=0 
   B2=1 
* 
*         WAIT FOR CLOCK COUNT LESS THAN 8. 
* 
26 MAINTRD WORD 4 TO IB (0),ABT 70   *WAIT COUNT LT 8 
   IF (IB(0).AND.4000.NE.0) GOTO 26 
* 
*         OUTPUT 3 CHARACTERS.
* 
   OUTPUT 4377,ABT 70 
   OUTPUT 4377,ABT 70 
   OUTPUT 4377,ABT 70 
* 
*         WAIT FOR DIP TO CLEAR.
* 
27 MAINTRD WORD 0 TO IB(0),ABT 70 
   IF (IB(0).AND.1000.NE.0) GOTO 27 
* 
*         WAIT FOR DIP TO SET.
* 
30 MAINTRD WORD 0 TO IB(0),ABT 70 
   IF (IB(0).AND.1000.EQ.0) GOTO 30 
* 
*         READ BIT AND ALL OF CLOCK COUNT.
* 
   MAINTRD WORD 0 TO IB(100),ABT 70  *BIT COUNT 
31 MAINTRD WORD 4 TO IB(B1),ABT 70   *CLOCK COUNT 
   DELAY B5 USEC
   GOTO 31 WHILE (B1+1.NE.11D)
* 
*         READ REST OF BIT COUNT. 
* 
32 MAINTRD WORD 0 TO IB(B2+100),ABT 70  *BIT COUNT
   DELAY B6 MSEC
   DELAY B7 USEC
   GOTO 32 WHILE (B2+1.NE.11D)
* 
*         TEST CLOCK COUNT. 
* 
/        TEST CLOCK 
   B1=0 
40 B2=IB(B1).RS.8D
   IF (B2.NE.B1) ERROR 2/0,GOSUB 71 
   GOTO 40 WHILE (B1+1.LT.10D)
   B1=0 
   B2=IB(B1).RS.8D
   IF (B2.NE.0) ERROR 2/0,GOSUB 71
* 
*         TEST BIT COUNT. 
* 
/        TEST BIT 
   B1=1 
41 B2=IB(B1+77).AND.17
   IF (B2.NE.B1) ERROR 3/0,GOSUB 71 
   GOTO 41 WHILE (B1+1.NE.10D)
   B1=0 
   B2=IB(B1+77).AND.17
   IF (B2.NE.0) ERROR 3/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
42 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 25
   EXIT TO 205
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 42
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B2,B1) TO LINE B0     *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 4 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT5205,667X(60),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  TTY = TELETYPE.
/ 
 1 FORMAT RT520 - 6671 CLOCK AND BIT COUNT TEST - 103 MODE
 2 FORMAT EC=0102,INPUT BIT COUNT INCORRECT, A=*OCT, E=*OCT 
 3 FORMAT EC=0104,INP CLK ON STRT BIT WRONG, A=*OCT, E=*OCT 
 4 FORMAT EC=0105,INPUT CLOCK COUNT INCORRECT,A=*OCT,E=*OCT 
 5 FORMAT LC = *DEC, ERCNT = *DEC 
 6 FORMAT RT520 - ERROR(S) IN MODULE
* 
*         DISPLAY RUN MESSAGE.
* 
20 MSG 1 TO DISPLAY 
   B0=0 
* 
*         RESERVE CHANNEL.
* 
   RES
   B1=0 
* 
*         DETERMINE INSTRUCTION EXECUTION TIME. 
* 
21 IF (RT.AND.7000.NE.0) GOTO 21
   B2=RT
   MAINTRD WORD 0 TO IB(0),ABT 70 
   DELAY 10 USEC
   GOTO 22 WHILE (B1+1.NE.11D)
22 B2=RT-B2-10
* 
*         SET DELAY CONSTANTS.
* 
   B5=667D-B2               *1/10 BIT - 1 MAINTRD 
   B6=6D                    *BIT TIME MILLISECONDS
   B7=667D                  *BIT TIME MICROSECONDS
23 IF (B7 GE B2) GOTO 24
   B6=B6-1
   B7=B7 + 1000D
   GOTO 23
24 B7=B7-B2                 *SET TO BIT TIME - 1 MAINTRD
* 
*         RESERVE CHANNEL AND BRING UP DTR. 
* 
25 RES
   WRITE 7000,ABT 70
   WRITE 7000 TO PORT P1,ABT 70 
   WAIT CHAR
   B1=0 
   B2=2 
* 
*         OUTPUT 3 CHARACTERS.
* 
   OUTPUT 4377,ABT 70 
   OUTPUT 4377,ABT 70 
   WAIT HALF
   OUTPUT 4377,ABT 70 
* 
*         WAIT FOR WAIT TTY TO SET. 
* 
26 MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70
   IF (IB(0).AND.100.EQ 0) GOTO 26  *WAIT TTY SET 
* 
*         WAIT FOR WAIT TTY TO CLEAR. 
* 
27 MAINTRD WORD 3 TO IB(0) FROM PORT P1,ABT 70
   IF (IB(0).AND.100.NE.0) GOTO 27  *WAIT TTY CLEAR 
* 
*         READ START BIT CLOCK COUNT. 
* 
30 MAINTRD WORD 7 TO IB(B1+100),ABT 70  *CLOCK
   DELAY B5 USEC
   GOTO 30 WHILE (B1+1.LT.6)
* 
*         READ BIT AND REST OF CLOCK COUNT. 
* 
   MAINTRD WORD 3 TO IB (1) FROM PORT P1,ABT 70  *BIT 
31 MAINTRD WORD 7 TO IB(B1+100) FROM PORT P1,ABT 70  *CLOCK 
   DELAY B5 USEC
   GOTO 31 WHILE (B1+1.LT.16D)
* 
*         READ BIT COUNT. 
* 
32 MAINTRD WORD 3 TO IB(B2) FROM PORT P1,ABT 70 
   DELAY B6 MSEC
   DELAY B7 USEC
   GOTO 32 WHILE (B2+1.LT.12D)
* 
*         TEST BIT COUNT. 
* 
/        TEST BIT COUNT 
   B3=0 
40 B2=IB(B3).AND.17 
   IF (B2.NE.B3) ERROR 2/0,GOSUB 71 
   GOTO 40 WHILE (B3+1.LT.10D)
   B3=0 
   B2=IB(B3).AND.17 
   IF (B2.NE.0) ERROR 2/0,GOSUB 71
* 
*         TEST CLOCK COUNT. 
* 
/        TEST CLOCK 
   B1=0 
   B3=0 
41 B2=IB(B1+100).RS.8D
   IF (B3.NE.B2) ERROR 3/0,GOSUB 71 
   B3=B3+1
   GOTO 41 WHILE (B1+1.LT.5)
   B3=0 
42 B2=IB(B1+100).RS.8D
   IF (B3.NE.B2) ERROR 4/0,GOSUB 71 
   B3=B3+1
   GOTO 42 WHILE (B1+1.LT.15D)
   B3=0 
   B2=IB(B1+100).RS.8 
   IF (B2.NE.0) ERROR 4/0,GOSUB 71
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
43 GOSUB 74 
   IF (ES.AND.RC.NE.0) GOTO 25
   IF (ES.AND.RM.EQ.0) GOTO 44
   EXIT TO 200
44 IF (WC.EQ.0) GOTO 45 
   MSG 6 TO DAYFILE 
45 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 43
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B2,B3) TO LINE B0     *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 5 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE RT521,6000(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST I/O IN PROCESS BIT. 
* 
*              RUNS IN BOTH SYNCHRONOUS (201 MODE) AND
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST I/O IN PROCESS BIT. 
* 
*                1. FUNCTION OUTPUT.
*                2. ACTIVE CHANNEL. 
*                3. WAIT 80 MICRO SECONDS.
*                4. DEACTIVATE CHANNEL. 
*                5. CHECK I/O IN PROCESS SET. 
*                6. WAIT 50 MILLI SECONDS.
*                7. CHECK I/O IN PROCESS CLEAR. 
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS. 
*    2. I/O IN PROCESS BIT NOT SETTING OR CLEARING. 
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. EC=0106,I/O IN PROCESS NOT SET BY 80 USEC AFTER CHANNEL ACTIVATED 
*    3. EC=0107,I/O IN PROCESS DIDNOT CLEAR AFTER CHANNEL ACTIVATED 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-7 IN DESCRIPTION. 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/ 
 1 FORMAT RT521 - 6671 I/O IN PROCESS BIT TEST
 2 FORMAT EC=0106,I/O IN PROCESS NOT SET BY 80 USEC AFTER CHANNEL ACTIVATED 
 3 FORMAT EC=0107,I/O IN PROCESS DIDNOT CLEAR AFTER CHANNEL ACTIVATED 
 4 FORMAT LC = *DEC, ERCNT = *DEC 
 5 FORMAT RT521 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT 
   BA=0 
   WC=16D 
* 
*         SET WORD COUNT. 
* 
   IF (P2.GE.6000) GOTO 21       *9600 BAUD 
   IF (P3.AND.200.EQ.0) GOTO 22  *NOT 8 PORT
21 WC=8D
* 
*         RESERVE CHANNEL, WRITE FUNCTION, ACTIVE, WAIT AND 
*         DEACTIVATE CHANNEL. 
* 
22 RES
   FUNC 1,ABT 70            *WRITE FUNCTION 
   ACN,ABT 70               *ACTIVE CHANNEL 
   DELAY 80 USEC            *DELAY 80 MICRO SECONDS 
   DCN,ABT 70               *DEACTIVATE CHANNEL 
* 
*         FUNCTION MAINTENANCE READ WITH HOLD, READ 
* 
   FUNC 500,ABT 70          *MAINTRD WORD 0 WITH HOLD 
   INB,ABT 70 
   FUNC 0,ABT 70            *CLEAR HOLD 
* 
*         FIND I/O IN PROCESS SET.
* 
/        FIND I/O IN PROCESS SET
   B2=0 
23 IF (IB(B2).AND.20.NE.0) GOTO 24
   GOTO 23 WHILE (B2+1.LT.WC) 
   ERROR 2/0,GOTO 70
* 
*         DELAY AND READ AGAIN. 
* 
24 DELAY 50 MSEC            *WAIT FOR I/O PROCESS TO CLEAR
   FUNC 100,ABT 70          *MAINTRD WORD 0 
   INB,ABT 70 
* 
*         INSURE I/O IN PROCESS NOT SET.
* 
/        INSURE I/O PROCESS NOT SET 
   B2=0 
25 IF (IB(B2).AND.20.NE.0) ERROR 3/0,GOTO 70
   GOTO 25 WHILE (B2+1.LT.WC) 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
26 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 22
   IF (B6.EQ.0) GOTO 27 
   MSG 5 TO DAYFILE 
27 GOTO 77                  *END SERIES 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                   *END ANY SUBROUTINES
   GOSUB 71 
   GOTO 26
/        PROCESS ERRORS AND END OF MODULE 
71 B6=B6+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   B7=B7+1                       *BUMP LOOP COUNTER 
   MSG 4 (B7,B6) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
77 END 20 
COMPILE 
   MODULE RT522,667X(60),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - STEP MODE.
* 
*             THIS MODULE WORKS IN CONJUNCTION WITH THE MUX 
*             STEP MODE HARDWARE, THE CLOCK BEING SUPPLIED
*             BY THE STEP MODE SWITCH. THE MODULE DISPLAYS
*             THE 4 MUX WORDS ASSOCIATED WITH THE PORT. 
* 
*             *** THIS MODULE IS NOT PART OF THE DIAGNOSTIC 
*                 PASS AND MUST BE CALLED SEPERATELY. *** 
* 
* 
*  DESCRIPTION - STEP MODE. 
* 
*                1. OUTPUT TWO CHARACTERS.
*                2. WAIT FOR A CHANGE IN OUTPUT BIT OR CLOCK COUNTER. 
*                3. DISPLAY NEXT STEP (ALL 8 PORT WORDS, INPUT AND
*                   OUTPUT DATA). 
*                4. OUTPUT CHARACTER. 
*                5. REPEAT TO 2 UNTIL ZERO WORD OUTPUTED. 
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS
* 
*  NORMAL AND ERROR MESSAGES ISSUED - 
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. STEP  CHAN DATA 
*    3.        IN   OUT 
*    4.        OUTPUT    BUFFERS      MPC       INPUT 
*    5.          INFO     IN   OUT   IN   OUT     INFO
*    6. *DEC  *OCT *OCT 
*    7.       *OCT *OCT  *OCT *OCT  *OCT *OCT  *OCT *OCT
*    8. 
* 
*  REPEAT CONDITION LOOP -
* 
*                1. 1-5 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, RTS = REQUEST TO SEND 
/  CTS = CLEAR TO SEND, VCS = VALID CHARACTER STATUS
/  EOM = END OF MESSAGE CHARACTER, MPC = MESSAGE PARITY 
/  CHARACTER, SOM = START OF MESSAGE CHARACTER. 
/  OD = OUTPUT DISASSEMBLY BUFFER, CR = CHARACTER REJECT. 
/ 
 1 FORMAT RT522 - 6671 STEP MODE
 2 FORMAT STEP  CHAN DATA 
 3 FORMAT        IN   OUT 
 4 FORMAT         OUTPUT    BUFFERS      MPC       INPUT
 5 FORMAT          INFO     IN   OUT   IN   OUT     INFO
 6 FORMAT *DEC  *OCT *OCT 
 7 FORMAT       *OCT *OCT  *OCT *OCT  *OCT *OCT  *OCT *OCT
10 FORMAT 
11 FORMAT LC = *DEC, ERCNT = *DEC 
12 FORMAT RT522 - ERROR(S) IN MODULE
   DATA (OB,CON) 7000,4026,4026,4001,4160,4140,4005,4203, 
  ,4000,4000,4000,0 
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT 
* 
*         BLANK SCREEN, POST TITLES, TAKE PICTURE OF TITLES AND 
*         SET CONSTANTS.
* 
21 BLANK                     *BLANK INCASE OF REPEAT
   GOSUB 60                  *POST TITLES 
   PICTURE                   *PUT TITLES ON OUTPUT
   B1=0                      *OB POINTER
   B2=0                      *STEP NUMBER 
   B3=7777                   *CHANGE FLAG 
* 
*         TEST FOR 0 WORD IN BUFFER.
* 
22 IF (OB(B1).EQ.0) GOTO 30  *END OF BUFFER 
* 
*         RESERVE CHANNEL,WRITE AND READ MUX. 
* 
   RES                       *RESERVE CHANNEL 
   WRITE OB(B1),ABT 70       *WRITE CHARACTER 
   READ TO IB(0),ABT 70      *READ TO CHECK VCS AND CR
* 
*         CHANGE CHANNEL INPUT DATA IF VCS. 
* 
   IF (IB(0).AND.4000.EQ.0) GOTO 23  *NO VCS
   IB(1)=IB(0).AND.7377      *CHANNEL DATA IN 
* 
*         CHANGE OUTPUT CHANNEL DATA POINTER IF NO REJECT.
* 
23 IF (IB(0).AND.400.NE.0) GOTO 24  *CR 
   B1=B1+1                   *BUMP OB POINTER 
* 
*         READ OUTPUT UPPER AND LOWER INFO WORDS. 
* 
24 MAINTRD WORD 0 TO IB(2),ABT 70  *OUTPUT INFO UPPER 
   MAINTRD WORD 4 TO IB(3),ABT 70  *OUTPUT INFO LOWER 
* 
*         IF NO CHANGE MUST BE ON SAME STEP, LOOP.
* 
   B4=IB(3).AND.7400         *GET CLOCK COUNTER 
   B4=IB(2).AND.17+B4        *GET BIT COUNTER AND MERGE 
   IF (B4.EQ.B3) GOTO 22     *NO CHANGE,LOOP
* 
*         BUMP STEP AND SAVE CURRENT CONDITION. 
* 
   B2=B2+1                   *BUMP STEP 
   B3=B4                     *STEP CONDITION FOR NEXT CHANGE
   B4=IB(2)                  *SAVE OUTPUT INFO UPPER
   B5=IB(3)                  *SAVE OUTPUT INFO LOWER
* 
*         READ REST OF WORDS. 
* 
   MAINTRD WORD 1 TO IB(2) FROM PORT P1,ABT 70  *BUFFER INP 
   B6=IB(2)                  *SAVE BUFFER UPPER, INPUT
   MAINTRD WORD 5 TO IB(2),ABT 70  *BUFFER OUTPUT 
   B7=IB(2)                  *SAVE BUFFER LOWER, OUTPUT 
   MAINTRD WORD 2 TO IB(2) FROM PORT P1,ABT 70  *MPC INPUT
   MAINTRD WORD 6 TO IB(3),ABT 70  *MPC OUTPUT
   MAINTRD WORD 3 TO IB(4) FROM PORT P1,ABT 70  *INP UPPER
   MAINTRD WORD 7 TO IB(5) FROM PORT P1,ABT 70  *INP LOWER
* 
*         BUILD DISPLAY DATA AND CLEAR TITLES.
* 
   MSG 6 (B2,IB(1),OB(B1)) TO PRINT                                      RT531A1
   MSG 6 (B2,IB(1),OB(B1)) TO LINE 3                                     RT531A1
   MSG 7 (B4,B5,B6,B7.IB(2),IB(3),IB(4),IB(5)) TO PRINT                  RT531A1
   MSG 7 (B4,B5,B6,B7.IB(2),IB(3),IB(4),IB(5)) TO LINE 7                 RT531A1
   GOTO 22                  *LOOP 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
30 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 31 
   MSG 12 TO DAYFILE
31 GOTO 77
* 
*         POST TITLES.
* 
/        POST TITLES
60 MSG 2 TO LINE 1                                                       RT531A1
   MSG 3 TO LINE 2                                                       RT531A1
   MSG 4 TO LINE 5                                                       RT531A1
   MSG 5 TO LINE 6                                                       RT531A1
   RETURN 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB                   *END ANY SUBROUTINES
   GOSUB 71 
   GOTO 30
/        PROCESS ERRORS AND END OF MODULE 
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM TO LINE B0             *POST ERROR MESSAGE
   GOTO 76 WHILE (B0+1.LT.50)    *IF SCREEN NOT FULL
74 IF (ES.AND.SL.EQ.0) GOTO 75   *IF NOT SCOPING LOOP 
   BA=BA+1                       *BUMP LOOP COUNTER 
   MSG 11 (BA,WC) TO DISPLAY     *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 MSG 1 TO DISPLAY              *REPOST RUN MESSAGE
   IF (B0.EQ.0) GOTO 76          *IF NO ERRORS
   PICTURE                       *TAKE PICTURE
   HALT                          *HALT IF STOP ON ERROR SET 
   BLANK                         *BLANK SCREEN
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
77 END 20 
COMPILE 
   MODULE RT599,667X(60),LOCK 
/ 
/ RT5 - A 6671 DIAGNOSTIC BASED ON THE SMM DIAGNOSTIC RT5 
/ 
/ OVERVIEW - RT5 IS A DIAGNOSTIC FOR THE 6671 IN EITHER 
/            SYCHRONOUS (201) MODE OR ASYNCHRONOUS (103)
/            MODE ON ONE PORT USING THE BUILT-IN SIMULATOR. 
/ 
/ CALL - RUN RT5  OR RUN RT5(00,15,16)
/ 
/ 
/ AFTER THE TEST CABLE IS CONNECTED FROM THE SIMULATOR TO 
/ THE PORT TO BE TESTED AND THE EQUIPMENT ASSIGNED THE
/ FOLLOWING PARAMETERS NEED TO BE SET.
/ 
/ PARAMETERS -
/ 
/ 
/ THE  ASSIGNMENT  OF  THE PORT IS ACCOMPLISHED VIA THE USE 
/ OF THE PARAMETER REGISTERS P0 AND P1 (MAKE BOTH THE 
/ SAME AND SPECIFY D SO THE PORT NUMBER SELECTED IS THE SAME AS THE 
/ DECIMAL NUMBERED TEST CABLE CONNECTER).  THE CONTENTS OF P0 REGISTER
/ DEFINES THE OUTPUT PORT AND THE CONTENTS OF THE P1 REGISTER IS THE
/ INPUT PORT. 
/ THE USER MUST ALSO SUPPLY A BAUD INDEX TO THE OVERLAY IN
/ THE P2 REGISTER. THE INDEX DEFINES THE BAUD RATE OF THE 
/ PORTS BEING DRIVEN. 
/ 
/    110 =   110 BAUD ASYNC. (103 MODE) 
/    134 = 134.5 BAUD ASYNC. (103 MODE) 
/    150 =   150 BAUD ASYNC. (103 MODE) 
/    300 =   300 BAUD ASYNC. (103 MODE) 
/    600 =   600 BAUD ASYNC. (103 MODE) 
/   1200 =  1200 BAUD ASYNC. (103 MODE) 
/ 
/   2000 =  2000 BAUD SYNC. (201 MODE)  SIMULATOR/LOOP BACK 
/   2400 =  2400 BAUD SYNC. (201 MODE)  SIMULATOR 
/   4000 =  4800 BAUD SYNC. (201 MODE)  SIMULATOR 
/   6000 =  9600 BAUD SYNC. (201 MODE)  SIMULATOR 
/ 
/   2401 =  2400 BAUD SYNC. (201 MODE) 6671 MODEM LOOP-BACK 
/   4001 =  4800 BAUD SYNC. (201 MODE) 6671 MODEM LOOP-BACK 
/   6001 =  9600 BAUD SYNC. (201 MODE) 6671 MODEM LOOP-BACK 
/ 
/ 
/ THE USER MAY SUPPLY A VALUE OF 0 THRU 7 IN THE P3 REGISTER
/ TO DEFINE THE NUMBER OF EXTRA BIT TIMES TO  APPLY  TO  THE
/ INPUT  AND  OUTPUT  COMMANDS (NORMALLY THIS IS LEFT ZERO).
/ THIS REGISTER IS ALSO USED FOR THE FOLLOWING FLAGS- 
/ 
/      BIT 0 = TRANSPARENT MODE 6671
/      BIT 1 = FULL DUPLEX. (CONSTANT CARRIER OPERATION)
/      BIT 2 = RESERVED.
/      BIT 3 = RESERVED.
/      BIT 4 = RESERVED.
/      BIT 5 = RESERVED.
/      BIT 6 = 2550-100 EMULATION.
/      BIT 7 = 8 PORT MUX.( ASSUMED IF 9600 BAUD 6671 ) 
/      BIT 8 = FULL WORD COUNT I/O. (NORM THE HIGHEST PORT) 
/      BITS 9 - 11 = EXTRA BIT TIMES. 
/ 
/ P4 REGISTER MAY BE USED  TO  SUPPLY  THE  SYNC  CODE  FOR 
/ SYNCHRONOUS OPERATION  IF  IT IS A CODE OTHER THAN 026. 
/ IF THE LOWER 8 BITS OF P4 ARE ZERO, 026 WILL BE USED. 
/ OTHERWISE, THE VALUE SUPPLIED IN THE LOWER 8 BITS WILL BE 
/ USED. 
/ 
/ P5 SET TO NON-ZERO WILL CAUSE THE LOOP FOR REPEAT 
/ CONDITION IN MODULES 15 (MEMORY TEST) AND 16 (MEMORY
/ ADDRESSING TEST) TO BE LIMITED TO READ AND TEST RATHER
/ THEN WRITE, READ, AND TEST. 
/ 
/ 
/                            *********
/                            *N O T E*
/                            *********
/ 
/ 
/  WHEN RUNNING IN SIMULATOR MODE,  SETTING P2 TO A 2400, 4000, OR 6000 
/  BAUD INDEX RESULTS IN A CHARACTER/BIT TIME EQUAL TO 2000 BAUD. IF THE
/  SIMULATOR CLOCK IS SET TO ANYTHING OTHER THAN 2000 BAUD, RT5 WILL
/  FAIL. ALSO AN INCORRECT SETTING OF THE SIMULATOR CLOCK WILL CAUSE
/  FALSE ERRORS IN RT5. 
/ 
/ 
10 PAUSE
   EXIT TO 990
   END 10 
COMPILE,SOURCE
   MODULE RT5990,667X(60),LOCK
/ 
/              MODULE RT500,6000(60)
/              ---------------------
/ 
/  OVERVIEW -  TESTS ALL 6671 FUNCTIONS.
/ 
/ 
/  DESCRIPTION - TEST FUNCTIONS.
/ 
/                1. ISSUE FUNCTION. 
/                2. CHECK CHANNEL INACTIVE. 
/                3. REPEAT FOR ALL FUNCTIONS. 
/                4. REPEAT 10 TIMES.
/ 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/                1. ALL PRODUCT OVERLAY MESSAGES. 
/                2. FUNCTION =
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-2 IN DESCRIPTION. 
/ 
/***********************************************************
/ 
/              MODULE RT501,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST 1XXX CONTROL. 
/ 
/ 
/  DESCRIPTION - TEST 1XXX CONTROL CODE.
/ 
/                1. SET SYNC BIT. 
/                2. OUTPUT 1XXX, SYNC CHARACTER, AND DATA.
/                3. CHECK SYNC BIT AFTER EACH OUTPUT. 
/                4. SET SYNC. 
/                5. OUTPUT 1XXX, 4 SYNC CHARACTERS, AND DATA. 
/                6. CHECK SYNC BIT AFTER EACH OUTPUT. 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. SYNC AND SYNCA BIT NOT SETTING. 
/                3. SYNC AND SYNCA SETTING IN WRONG SEQUENCE. 
/                4. SYNC AND SYNCA SETTING ON 1 SYNC CHARACTER. 
/                5. SYNC AND SYNCA SET AT SAME TIME.
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0002,SA AND S BIT=*OCT AFTER 1000 SENT 
/    3. EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
/    4. EC=0005,SA AND S BIT=*OCT,1 SYNC AND 1 4377 SENT
/    5. EC=0002,SA AND S BIT=*OCT AFTER 1000 SENT 
/    6. EC=0006,S BIT SET BEFORE SA BIT 
/    7. EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
/    8. EC=0010,SA AND S BIT SET AT SAME TIME 
/    9. EC=0011,SA BIT SET, S BIT NOT SET AFTER 4 SYNCS 
/   10. EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
/   11. EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
/   12. EC=0014,S BIT DROPPED AFTER IT WAS SET
/   13. EC=0112,TRANSPARENT MODE,EXPECTED SYNC,RECVD *OCT 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-3 IN DESCRIPTION FOR ERRORS 2,4,5.
/                2. 4-6 IN DESCRIPTION FOR ERRORS 2-112.
/ 
/ 
10 PAUSE
   EXIT TO 991
   END 10 
COMPILE,SOURCE
   MODULE RT5991,667X(60),LOCK
/ 
/              MODULE RT502,667X(60)
/              ---------------------
/ 
/  OVERVIEW - TEST 2XXX CONTROL CODE. 
/ 
/ 
/  DESCRIPTION - TEST 2XXX CONTROL CODE.
/ 
/                1. RESYNC 6671.
/                2. OUTPUT EOM, 2XXX, AND DATA. 
/                3. CHECK CLEAR CARRIER BIT AFTER 2XXX. 
/                4. CHECK MPC TRANSFERED BEFORE 2XXX DROP CARRIER.
/                5. CHECK CARRIER DOWN AND CARRIER OFF STATUS.
/                6. WAIT 2MS, CHECK CARRIER DOWN. 
/                7. CHECK CARRIER STILL DOWN AFTER 200MS. 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. CARRIER ON STATUS CONDITION.
/                3. CLEAR CARRIER BIT CONDITION.
/                4. RTS/CTS CONDITION 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0015,CARRIER NOT UP BY 200 MS AFTER 4XXX SENT
/    4. EC=0016,CC BIT NOT SET AFTER 2000 SENT
/    5. EC=0017,CC BIT DIDNT CLEAR AFTER 2000 SENT
/    6. EC=0020,TRANSFERED DATA BEFORE 2000= *OCT,0000 EXP
/    7. EC=0021,DATA STILL SHIFTING OUT AFTER 2000 SENT 
/    8. EC=0110,CO STATUS NOT UP BY 200 MS AFTER 4XXX SENT
/    9. EC=0111,CO STATUS UP AFTER 2000 SENT
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-7 IN DESCRIPTION. 
/ 
/***********************************************************
/ 
/              MODULE RT503,667X(60)
/              ---------------------
/ 
/  OVERVIEW -   TEST 3XXX CONTROL CODE. 
/ 
/ 
/  DESCRIPTION - TEST 3XXX CONTROL CODE.
/ 
/                1. RESYNC 6671.
/                2. OUTPUT EOM, 3XXX, SYNC CHARACTER AND DATA.
/                3. CHECK CLEAR CARRIER BIT AFTER 3XXX. 
/                4. CHECK MPC TRANSFERED BEFORE 3XXX DROP CARRIER.
/                5. CHECK CARRIER DOWN AND CARRIER OFF STATUS.
/                6. WAIT 2MS, CHECK CARRIER DOWN. 
/                7. CHECK CARRIER STILL DOWN AFTER 200MS. 
/                8. CHECK SYNC CONDITONS AFTER SYNC CODE. 
/                9. CHECK SYNC CONDITONS AFTER DATA.
/               10. RESYNC 6671.
/               11. OUTPUT EOM, 3XXX, 4 SYNC CHARACTERS AND DATA. 
/               12. CHECK CLEAR CARRIER BIT AFTER 3XXX. 
/               13. CHECK MPC TRANSFERED BEFORE 3XXX DROP CARRIER.
/               14. CHECK CARRIER DOWN AND CARRIER OFF STATUS.
/               15. WAIT 2MS, CHECK CARRIER DOWN. 
/               16. CHECK CARRIER STILL DOWN AFTER 200MS. 
/               17. CHECK SYNC CONDITONS AFTER EACH SYNC CODE.
/               18. CHECK SYNC CONDITONS AFTER DATA.
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. THE SAME CONDITIONS AS ARE CHECKED BY THE 1XXX AND
/                   2XXX CONTROL CODES. 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
/    4. EC=0005,SA AND S BIT=*OCT,1 SYNC AND 1 4377 SENT
/    5. EC=0006,S BIT SET BEFORE SA BIT 
/    6. EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
/    7. EC=0010,SA AND S BIT SET AT SAME TIME 
/   10. EC=0011,SA BIT SET, S BIT NOT SET AFTER 4 SYNCS 
/   11. EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
/   12. EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
/   13. EC=0014,S BIT DROPPED AFTER IT WAS SET
/   14. EC=0015,CARRIER NOT UP BY 200 MS AFTER 4XXX SENT
/   15. EC=0016,CC BIT NOT SET AFTER 3000 SENT
/   16. EC=0017,CC BIT DIDNT CLEAR AFTER 3000 SENT
/   17. EC=0020,TRANSFERED DATA BEFORE 3000=*OCT,0000 EXP 
/   18. EC=0022,DATA STILL SHIFTING OUT AFTER 3000 SENT 
/   19. EC=0023,SA OR S BIT SET AFTER 3000 SENT 
/   20. EC=0111,CO STATUS UP AFTER 3000 SENT
/   21. EC=0110,CO STATUS NOT UP BY 200 MS AFTER 4XXX SENT
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-9 IN DESCRIPTION. 
/                2. 10-18 IN DESCRIPTION. 
/ 
/ 
10 PAUSE
   EXIT TO 992
   END 10 
COMPILE,SOURCE
   MODULE RT5992,667X(60),LOCK
/ 
/              MODULE RT504,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST 5XXX CONTROL CODE.
/ 
/ 
/  DESCRIPTION - TEST 5XXX CONTROL CODE.
/ 
/                1. RESYNC 6671.
/                2. OUTPUT 1XXX, 5026, AND DATA.
/                3. CHECK SYNC BIT AFTER EACH OUTPUT. 
/                4. RESYNC 6671.
/                5. OUTPUT 1XXX, 4 SYNC CHARACTERS, AND DATA. 
/                6. CHECK SYNC BIT AFTER EACH OUTPUT. 
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS. 
/    2. THE SAME CONDITIONS ARE CHECKED AS ARE CHECK BY THE 1XXX
/       CONTROL CODE. 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0003,DATA CHAR=*OCT,1 SYNC AND 4 4377 SENT 
/    4. EC=0004,S BIT SET AFTER ONE SYNC CODE,*OCT
/    5. EC=0005,SA AND S BIT=*OCT,1 SYNC AND 4 4377 SENT
/    6. EC=0006,S BIT SET BEFORE SA BIT 
/    7. EC=0007,SA AND S BIT DIDNT SET AFTER 4 SYNCS
/    8. EC=0010,SA AND S BIT SET AT SAME TIME 
/    9. EC=0011,SA BIT SET,S BIT NOT SET AFTER 4 SYNCS
/   10. EC=0012,S BIT DIDNT SET ON NEXT SYNC AFTER SA BIT 
/   11. EC=0013,SA AND S BIT SET AT SAME TIME AFTER S BIT 
/   12. EC=0014,S BIT DROPPED AFTER IT WAS SET
/   13. EC=0024,SA OR S BIT SET AFTER 5000 SENT 
/ 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-3 IN DESCRIPTION FOR ERRORS 1,3,4,5,24. 
/                2. 4-6 IN DESCRIPTION FOR ERRORS 1,6-13,24.
/ 
/***********************************************************
/ 
/              MODULE RT505,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST 6XXX AND 7XXX CONTROL CODES.
/ 
/ 
/  DESCRIPTION - TEST 6XXX AND 7XXX CONTROL CODES.
/ 
/                1. RESYNC 6671.
/                2. OUTPUT DATA AND 6XXX. 
/                3. CHECK DROP LINE AND CLEAR CARRIER BITS. 
/                4. WAIT 6 MS FOR LINE TO DROP. 
/                5. CHECK CARRIER DOWN, DROP LINE AND CARRIER BITS CLEAR. 
/                6. OUTPUT 7XXX.
/                7. CHECK DTR/RTS/CTS UP. 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. MODEM READY BIT CONDITION.
/                3. CARRIER ON BIT CONDITION. 
/                4. CLEAR CARRIER BIT CONDITION.
/                5. DROP LINE BIT CONDITION.
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0016,CC BIT DIDNT SET AFTER 6000 SENT
/    4. EC=0017,CC BIT DIDNT CLEAR AFTER 6000 SENT
/    5. EC=0025,CARRIER DIDNT DROP BY 6 MS AFTER 6000 
/    6. EC=0026,DL BIT DIDNT CLEAR AFTER 6000 SENT
/    7. EC=0027,DL BIT DIDNT SET AFTER 6000 SENT
/    8. EC=0030,MR STATUS UP AFTER 6000 SENT
/    9. EC=0031,CARRIER NOT UP BY 200 MS AFTER 7000 SENT
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-5 IN DESCRIPTION FOR ERRORS 1-30. 
/                2. 6-7 IN DESCRIPTION FOR ERROR 31.
/ 
/ 
10 PAUSE
   EXIT TO 993
   END 10 
COMPILE,SOURCE
   MODULE RT5993,667X(60),LOCK
/ 
/              MODULE RT506,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST DATA TRANSFER.
/ 
/ 
/  DESCRIPTION - TEST DATA TRANSFER.
/ 
/                1. RESYNC 6671.
/                2. OUTPUT CHARACTER. 
/                3. WAIT ONE CHARACTER TIME.
/                4. READ AND CHECK CHARACTER. 
/                5. REPEAT 2-4 UNTIL ALL CHARACTERS OUTPUTED. 
/                6. RESYNC 6671.
/                7. OUTPUT CHARACTER. 
/                8. OUTPUT CHARACTER. 
/                9. INPUT AND STORE.
/               10. REPEAT 8 AND 9 UNTIL ALL CHARACTERS OUTPUTED. 
/               11. INPUT AND STORE LAST CHARACTER. 
/               12. CHECK DATA. 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. SYNC BIT CONDITION. 
/                3. DATA ERRORS.
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0032,SINGLE CHAR SEQ, E=*OCT A=*OCT
/    4. EC=0032,STACKED CHAR SEQ, E=*OCT A=*OCT 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-5 IN DESCRIPTION FOR ERROR 32 SINGLE. 
/                1. 7-12 IN DESCRIPTION FOR ERROR 32 STACKED. 
/ 
/***********************************************************
/ 
/              MODULE RT507,667X(60)
/              ---------------------
/ 
/  OVERVIEW -    TEST MPC GENERATION. 
/ 
/ 
/  DESCRIPTION - TEST MPC GENERATION. 
/ 
/                1. RESYNC 6671.
/                2. CLEAR OUTPUT MPC REGISTER.
/                3. OUTPUT SOM. 
/                4. CLEAR INPUT MPC REGISTER. 
/                5. OUTPUT DATA.
/                6. READ OUTPUT AND INPUT MPC AND STORE.
/                7. CHECK MPC IN OUTPUT MPC REGISTER AND OUTPUT BUFFER. 
/                8. OUTPUT 4077 AND CHECK FOR REJECT. 
/                9. READ INPUT MPC REGISTER AND INPUT BUFFER. 
/               10. CHECK RESULTS.
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. MPC DIDNOT TRANSFER TO OUTPUT BUFFER. 
/                3. MPC NEXT BIT. 
/                4. INPUT MPC ERROR.
/                5. OUTPUT MPC ERROR. 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0033,OPUT MPC TRANS DIDNT CAUSE CR ON CHAR OPUT
/    3. EC=0034,OUTPUT MPC UPDATE ERROR, A=*OCT, E=*OCT 
/    4. EC=0035,INPUT MPC UPDATE ERROR, A=*OCT, E=*OCT
/    5. EC=0036,MPC NEXT FLAG SET ON INPUT MPC
/    6. EC=0037,MPC NEXT FLAG NOT SET ON INPUT MPC
/    7. EC=0040,MPC INCORRECT, A=*OCT, E=5000 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-9 IN DESCRIPTION. 
/ 
/ 
10 PAUSE
   EXIT TO 994
   END 10 
COMPILE,SOURCE
   MODULE RT5994,667X(60),LOCK
/ 
/              MODULE RT510,667X(60)
/              ---------------------
/ 
/  OVERVIEW -    TEST ASYNCHRONOUS CONTROL SEQUENCE.
/ 
/ 
/  DESCRIPTION - TEST ASYNCHRONOUS CONTROL SEQUENCE.
/ 
/                1. EXIT SECTION IF 600 OR 1200 BAUD. 
/                2. CHECK WAIT TTY BIT ON OUTPUT AND INPUT. 
/                3. CHECK INPUT CLOCK EQUAL 0.
/                4. OUTPUT CHARACTER, CHECK WAIT TTY BIT CLEAR. 
/                5. CHECK START TTY BIT SET, WAIT TTY AND SENSE START.
/                6  CLEAR.
/                7. BEFORE 1/10 BIT, CHECK E. CONDITION STILL PRESENT.
/                8. AFTER 1/10 BIT, CHECK SENSE START SET AND START.
/                9  CLEAR.
/               10. BEFORE 1/2 BIT TIME, CHECK G. CONDITION STILL 
/                   PRESENT.
/               11. AFTER 1/2 BIT TIME, CHECK WAIT TTY,START,SENSE
/                   START AND CLOCK = 0.
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS
/                2. CONDITION OF CLOCK, WAIT TTY, SENSE AND START TTY 
/                   AT BEGINNING OF SEQUENCE. 
/                3. CONDITION OF CLOCK, WAIT TTY, SENSE AND START TTY 
/                   AT 1/10 BIT AND 1/2 BIT TIMES.
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0041,OUTPUT WAIT TTY BIT NOT SET 
/    3. EC=0042,EXPECTED WAIT SET,SENSE AND START CLR,*OCT
/    4. EC=0043,INPUT TTY CLK NON-ZERO WITH NO DATA COMING
/    5. EC=0044,OUTPUT WAIT TTY STILL SET AFTER DIP 
/    6. EC=0045,START TTY BIT DIDNT SET WHEN EXPECTED 
/    7. EC=0046,SENSE START BIT STILL SET AFTER START BIT 
/    8. EC=0047,WAIT TTY BIT STILL SET AFTER START BIT SET
/    9. EC=0050,START TTY CLEAR BEFORE 1/10 OF BIT TIME 
/   10. EC=0051,SENSE START BIT NOT SET AFTER 1/10 OF BIT 
/   11. EC=0052,WAIT TTY BIT STILL SET AFTER 1/10 OF BIT
/   12. EC=0053,START TTY BIT STILL SET AFTER 1/10 OF BIT 
/   13. EC=0054,SENSE START BIT CLEAR BEFORE 1/2 OF BIT 
/   14. EC=0055,SENSE,START OR WAIT SET AFTER 1/2 BIT,*OCT
/   15. EC=0056,CLOCK=*OCT,DIDNT CLR AFTER 1/2 OF BIT TIME
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 2-11 IN DESCRIPTION.
/ 
/***********************************************************
/ 
/              MODULE RT511,667X(60)
/              ---------------------
/ 
/  OVERVIEW - TEST LOST DATA. 
/ 
/ 
/  DESCRIPTION - TEST LOST DATA.
/ 
/                1. RESYNC 6671.
/                2. OUTPUT THREE CHARACTERS.
/                3. WAIT ONE CHARACTER TIME.
/                4. CHECK STATUS (LOST DATA SET). 
/                5. READ (LOST DATA SET). 
/                6. CHECK STATUS (LOST DATA CLEAR). 
/                7. WAIT ONE CHARACTER TIME.
/                8. READ (LOST DATA CLEAR). 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. CHECK LOST DATA STATUS BIT IN PORT STATUS AND 
/                   SERVICE FAILURE BIT IN MUX STATUS.
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0057,LOST DATA STATUS NOT SET AFTER FORCING
/    4. EC=0060,MUX SERV FAILURE STAT NOT SET AFTER FORCING 
/    5. EC=0061,LOST DATA STATUS DIDNT CLEAR AFTER READ 
/    6. EC=0062,MUX SERV FAILURE DIDNT CLEAR AFTER READ 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-8 IN DESCRIPTION. 
/ 
/ 
10 PAUSE
   EXIT TO 995
   END 10 
COMPILE,SOURCE
   MODULE RT5995,667X(60),LOCK
/ 
/              MODULE RT512,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST CHARACTER REJECT. 
/ 
/ 
/  DESCRIPTION - TEST CHARACTER REJECT. 
/ 
/                1. RESYNC 6671.
/                2. OUTPUT THREE CHARACTERS.
/                3. READ (CHARACTER REJECT SET).
/                4. WAIT ONE CHARACTER TIME.
/                5. WRITE.
/                6. READ (CHARACTER REJECT CLEAR).
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. CHARACTER REJECT BIT NOT SETTING. 
/                3. CHARACTER REJECT BIT NOT CLEARING.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0063,CHARACTER REJECT NOT SET AFTER FORCING
/    4. EC=0064,CHARACTER REJECT ON WRITE AFTER WAIT CHAR 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-6 IN DESCRIPTION. 
/ 
/***********************************************************
/ 
/              MODULE RT513,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST INPUT REQUIRED STATUS.
/ 
/ 
/  DESCRIPTION - TEST INPUT REQUIRED STATUS.
/ 
/                1. RESYNC 6671.
/                2. OUTPUT TWO CHARACTERS.
/                3. WAIT ONE CHARACTER TIME.
/                4. TAKE STATUS (INPUT REQUIRED SET). 
/                5. READ. 
/                6. TAKE STATUS (INPUT REQUIRED CLEAR). 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. INPUT REQUIRED BIT NOT SETTING. 
/                3. INPUT REQUIRED BIT NOT CLEARING.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0065,MUX INPUT REQUIRED STATUS NOT SET 
/    4. EC=0066,MUX INPUT REQUIRED STAT DIDNT CLR AFTER RD
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-6 IN DESCRIPTION. 
/ 
/ 
10 PAUSE
   EXIT TO 996
   END 10 
COMPILE,SOURCE
   MODULE RT5996,667X(60),LOCK
/ 
/              MODULE RT514,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST OUTPUT FAILURE STATUS.
/ 
/ 
/  DESCRIPTION - TEST OUTPUT FAILURE STATUS.
/ 
/                1. RESYNC 6671.
/                2. OUTPUT CHARACTER. 
/                3. WAIT TWO CHARACTER TIMES. 
/                4. TAKE STATUE (OUTPUT FAILURE SET). 
/                5. WRITE.
/                6. TAKE STATUS (OUTPUT FAILURE CLEAR). 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. OUTPUT FAILURE BIT NOT SETTING. 
/                3. OUTPUT FAILURE BIT NOT CLEARING.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0067,MUX OUTPUT FAILURE STATUS NOT SET 
/    3. EC=0070,MUX OUTPUT FAILURE STATUS DIDNT CLEAR 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-6 IN DESCRIPTION. 
/ 
/***********************************************************
/ 
/              MODULE RT515,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST MEMORY. 
/ 
/ 
/  DESCRIPTION - TEST MEMORY. 
/ 
/                1. MAINTENANCE WRITE ALL WORDS.
/                2. CHECK MEMORY PARITY ERROR.
/                3. MAINTENANCE READ ALL WORDS. 
/                4. CHECK MEMORY PARITY ERROR.
/                5. CHECK DATA. 
/                6. REPEAT TO 1 FOR ALL PATTERNS. 
/                7. REPEAT TO 1 FOR FLOATING ONES AND ZEROS.
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS
/                2. MEMORY DATA ERRORS. 
/                3. MEMORY PARITY ERRORS. 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0116,MEMORY PARITY ERROR ON WRITE
/    3. EC=0117,MEMORY PARITY ERROR ON READ 
/    4. EC=0071,MEM A=*OCT, E=*OCT, W=*OCT, T=*OCT
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-5 IN DESCRIPTION FOR P5=0.
/                2. 3-5 IN DESCRIPTION FOR P5 NON ZERO. 
/ 
/ 
10 PAUSE
   EXIT TO 997
   END 10 
COMPILE,SOURCE
   MODULE RT5997,667X(60),LOCK
/ 
/              MODULE RT516,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST MEMORY ADDRESSING.
/ 
/ 
/  DESCRIPTION - TEST MEMORY ADDRESSING.
/ 
/              1. MAINTENANCE WRITE ALL WORDS WITH ITS PORT AND WORD
/                 NUMBER. 
/              2. CHECK MEMORY PARITY ERRORS. 
/              3. MAINTENANCE READ ALL WORDS. 
/              4. CHECK MEMORY PARITY ERRORS. 
/              5. CHECK DATA. 
/ 
/  ERRORS DETECTED -
/ 
/              1. ALL PRODUCT OVERLAY ERRORS. 
/              2. MEMORY DATA ERRORS
/              3. MEMORY PARITY ERROR.
/              4. MEMORY ADDRESSING ERROR.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. EC=0116,MEMORY PARITY ERROR ON WRITE
/    3. EC=0117,MEMORY PARITY ERROR ON READ 
/    4. EC=0072,MAD AW=*OCT, AT=*OCT, EW=*OCT, ET=*OCT
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-5 IN DESCRIPTION FOR P5=0.
/                2. 3-5 IN DESCRIPTION FOR P5 NON ZERO. 
/ 
/***********************************************************
/ 
/              MODULE RT517,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST ASCII CODE RECOGNITION. 
/ 
/ 
/  DESCRIPTION - TEST ASCII CODE RECOGNITION. 
/ 
/                1. START WITH 001. 
/                2. IF CHARACTER IS SYNC, SOM, OR EOM SKIP
/                   IT. 
/                3. RESYNC 6671.
/                4. CLEAR OUTPUT MPC REGISTER.
/                5. OUTPUT CHARACTER. 
/                6. CHECK MPC OUTPUT REGISTER.
/                7. CLEAR INPUT MPC REGISTER. 
/                8. WAIT FOR CHARACTER IN INPUT BUFFER. 
/                9. CHECK INPUT MPC REGISTER. 
/               10. REPEAT 2 TO 9 FOR 1 - 376.
/               11. REPEAT 2 TO 9 FOR 000 AND 377.
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. CHARACTER INTERPRETED AS SOM, SYNC, OR
/                   EOM ON OUTPUT.
/                3. CHARACTER INTERPRETED AS SOM, SYNC, OR
/                   EOM ON INPUT. 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. EC=0001,S BIT NOT SET AFTER 4 SYNCS 
/    3. EC=0075,*OCT INTERPRETED AS EOM ON OUTPUT 
/    4. EC=0074,*OCT INTERPRETED AS SYNC ON OUTPUT
/    5. EC=0073,*OCT INTERPRETED AS SOM ON OUTPUT 
/    6. EC=0077,*OCT RECOGNIZED AS SYNC ON INPUT
/    7. EC=0076,*OCT RECOGNIZED AS SOM ON INPUT 
/    8. EC=0100,*OCT RECOGNIZED AS EOM ON INPUT 
/ 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 3-9 IN DESCRIPTION. 
/ 
10 PAUSE
   EXIT TO 998
   END 10 
COMPILE,SOURCE
   MODULE RT5998,667X(60),LOCK
/ 
/              MODULE RT520,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST BIT AND CLOCK COUNTER SEQUENCE. 
/ 
/ 
/  DESCRIPTION - TEST BIT AND CLOCK COUNTER SEQUENCE. 
/ 
/          1. IF 103 MODE GOTO 7. 
/          2. WAIT OUTPUT BIT COUNT = 0.
/          3. READ AND CHECK OUTPUT BIT COUNTER SEQUENCE. 
/          4. SEND SYNC CODES UNTIL SYNCA SETS. 
/          5. READ AND CHECK INPUT BIT COUNTER SEQUENCE.
/          6. EXIT. 
/          7. EXIT IF 600 OR 1200 BAUD. 
/          8. SEND CHARACTER TO 6671. 
/          9. WAIT FOR CHARACTER TO ENTER DISASSEMBLY 
/             REGISTER. 
/         10. READ OUTPUT CLOCK COUNT 10 TIMES (103 MODE) 
/         11. READ OUTPUT BIT COUNTS 12 TIMES.
/         12. SEND THREE CHARACTERS TO 6671.
/         13. WAIT FOR WAIT TTY BIT TO SET THEN CLEAR.
/         14. READ INPUT CLOCK 5 TIMES. 
/         15. READ INPUT BIT COUNT. 
/         16. READ INPUT CLOCK 10 TIMES.
/         17. READ INPUT BIT COUNT 11 TIMES.
/         18. CHECK ERRORS. 
/ 
/  ERRORS DETECTED -
/ 
/                1. ALL PRODUCT OVERLAY ERRORS. 
/                2. OUTPUT AND INPUT CLOCK COUNT INCORRECT. 
/                3. OUTPUT AND INPUT BIT COUNT INCORRECT. 
/                4. INPUT START BIT SEQUENCE INCORRECT. 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0101,OUTPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT
/    3. EC=0102,INPUT BIT COUNT INCORRECT,A=*OCT,E=*OCT 
/    4. EC=0103,OUTPUT CLOCK CNT INCORRECT,A=*OCT,E=*OCT
/    5. EC=0104,INPUT CLK ON STRT BIT INCORRECT,A=*OCT,E=*OCT 
/    6. EC=0105,INPUT CLOCK COUNT INCORRECT,A=*OCT,E=*OCT 
/ 
/  REPEAT CONDITION LOOP -
/ 
/          1.  SYNC -    2-3 IN DESCRIPTION FOR 101,103.
/                        4-5 IN DESCRIPTION FOR 102,104,105.
/          2. ASYNC -   8-11 IN DESCRIPTION FOR 101,103.
/                      12-18 IN DESCRIPTION FOR 102,104,105.
/ 
/***********************************************************
/ 
/              MODULE RT521,667X(60)
/              ---------------------
/ 
/  OVERVIEW -  TEST I/O IN PROCESS BIT. 
/ 
/ 
/  DESCRIPTION - TEST I/O IN PROCESS BIT. 
/ 
/                1. FUNCTION OUTPUT.
/                2. ACTIVE CHANNEL. 
/                3. WAIT 80 MICRO SECONDS.
/                4. DEACTIVATE CHANNEL. 
/                5. CHECK I/O IN PROCESS SET. 
/                6. WAIT 50 MILLI SECONDS.
/                7. CHECK I/O IN PROCESS CLEAR. 
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS. 
/    2. I/O IN PROCESS BIT NOT SETTING OR CLEARING. 
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. EC=0106,I/O IN PROCESS NOT SET BY 80 USEC AFTER 
/       CHANNEL ACTIVATED.
/    3. EC=0107,I/O IN PROCESS DIDNOT CLEAR AFTER CHANNEL 
/       ACTIVATED.
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-7 IN DESCRIPTION. 
/ 
/ 
10 PAUSE
   EXIT TO 999
   END 10 
COMPILE,SOURCE
   MODULE RT5999,667X(60),LOCK
/ 
/              MODULE RT522,667X(60)
/              ---------------------
/ 
/  OVERVIEW - STEP MODE.
/ 
/             THIS MODULE WORKS IN CONJUNCTION WITH THE MUX 
/             STEP MODE HARDWARE, THE CLOCK BEING SUPPLIED
/             BY THE STEP MODE SWITCH. THE MODULE DISPLAYS
/             THE 4 MUX WORDS ASSOCIATED WITH THE PORT. 
/ 
/             *** THIS MODULE IS NOT PART OF THE DIAGNOSTIC 
/                 PASS AND MUST BE CALLED SEPERATELY. *** 
/ 
/ 
/  DESCRIPTION - STEP MODE. 
/ 
/                1. OUTPUT TWO CHARACTERS.
/                2. WAIT FOR A CHANGE IN OUTPUT BIT OR CLOCK
/                   CONUTER.
/                3. DISPLAY NEXT STEP (ALL 8 PORT WORDS,
/                   INPUT AND OUTPUT DATA). 
/                4. OUTPUT CHARACTER. 
/                5. REPEAT TO 2 UNTIL ZERO WORD OUTPUTED. 
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS
/ 
/  NORMAL AND ERROR MESSAGES ISSUED - 
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. STEP  CHAN DATA 
/    3.        IN   OUT 
/    4.        OUTPUT    BUFFERS      MPC       INPUT 
/    5.          INFO     IN   OUT   IN   OUT     INFO
/    6. *DEC  *OCT *OCT 
/    7.       *OCT *OCT  *OCT *OCT  *OCT *OCT  *OCT *OCT
/    8. 
/ 
/  REPEAT CONDITION LOOP -
/ 
/                1. 1-5 IN DESCRIPTION. 
/ 
/ 
/**********  END OF RT5 EXTERNAL DOCUMENTATION *************
10 PAUSE
   END 10 
COMPILE,SOURCE
