*DECK TT3 
*** TT3 - A 6676 DIAGNOSTIC BASED ON THE SMM DIAGNOSTIC TT3 
*** EXTERNAL DOCUMENTATION
**
* 
* AUTHOR - CONCURRENT MAINTENANCE SOFTWARE DEVELOPEMENT 
*          MAINTENANCE SOFTWARE ENGINNERING 
*          QUALITY AND ENGINEERING ORGANIZATION 
* 
* OVERVIEW - TT3 IS A DIAGNOSTIC FOR THE 6676 IN ASYCHRONOUS (103) MODE 
*            ON A TWO PORT LOOP BACK. 
* 
* CALL - RUN TT3  OR RUN TT3(01,03) 
* 
* 
* AFTER THE TEST CABLE IS CONNECTED FROM THE INPUT PORT  TO  THE  OUTPUT
* 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. THE CONTENTS OF P0 REGISTER   DEFINES   THE
* OUTPUT  PORT  AND  THE  CONTENTS 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) 
* 
* 
* 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 = N/A
*      BIT 1 = N/A
*      BIT 2 = RESERVED.
*      BIT 3 = RESERVED.
*      BIT 4 = RESERVED.
*      BIT 5 = RESERVED.
*      BIT 6 = 2550-100 EMULATION.
*      BIT 7 = *** FOR 6671 USE ONLY ***
*      BIT 8 = FULL WORD COUNT I/O. (NORMALLY TO THE HIGHEST PORT)
*      BITS 9 - 11 = EXTRA BIT TIMES. 
* 
   MODULE TT301,667X(61),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - CHECK CHARACTER AND DISCONNECT CODES. 
* 
* 
*  DESCRIPTION - CHECK CHARACTER AND DISCONNECT CODES.
* 
*          1. SEND DISCONNECT CODE AND EXPECT INPUT TO BE ZERO. 
*          2. OUTPUT CHARACTER. 
*          3. WAIT CHARACTER TIME.
*          4. INPUT CHARACTER.
*          5. CHECK CHARACTER.
*          6. REPEAT 2 - 5 FOR ALL CHARACTERS.
*          7. OUTPUT CHARACTER. 
*          8. OUTPUT CHARACTER. 
*          9. INPUT CHARACTER.
*         10. REPEAT 8 - 9 FOR ALL CHARACTERS.
*         11. INPUT LAST CHARACTER. 
*         12. CHECK ALL CHARACTERS INPUTTED.
* 
* 
*  ERRORS DETECTED -
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. INPUT NONZERO AFTER DISCONNECT.
*         3. DATA ERROR IN SINGLE AND STACKED SEQUENCES.
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0001,INPUT=*OCT AFTER 6000 SENT,EXPECTED 0000
*    3. EC=0002,SINGLE CHARACTER SEQUENCE, A=*OCT, E=*OCT 
*    4. EC=0003,STACKED CHARACTER SEQUENCE, A=*OCT, E=*OCT
* 
*  REPEAT CONDITION LOOP -
* 
*         1. 1 IN DESCRIPTION IF ERROR 1. 
*         2. 2 - 6 IN DESCRIPTION FOR ERROR 2.
*         3. 7 - 12 IN DESCRIPTION FOR ERROR 3
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TT301 - 6676 CHARACTER SEQUENCE TEST
 2 FORMAT EC=0001,INPUT=*OCT AFTER 6000 SENT,EXPECTED 0000
 3 FORMAT EC=0002,SINGLE CHARACTER SEQUENCE, A=*OCT, E=*OCT 
 4 FORMAT EC=0003,STACKED CHARACTER SEQUENCE, A=*OCT, E=*OCT
 5 FORMAT LC = *DEC, ERCNT = *DEC 
 6 FORMAT TT301 - ERROR(S) IN MODULE
/ 
/  DTR = DATA TERMINAL READY
/ 
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0                     *CLEAR ERROR COUNTER
* 
*         DISCONNECT TEST.
* 
/        DROP DTR TEST
21 B7=0 
   RES                    *RESERVE CHANNEL
   OUTPUT 6000,ABT 70     *OUTPUT DTR CHARACTER 
   DELAY 100D MSEC        *WAIT 100 MILLI-SECONDS 
   READ TO IB(0),ABT 70   *READ INPUT PORT
   B3=IB(0) 
   IF (B3.EQ.0) GOTO 22   *DATA SHOULD BE ZERO
   ERROR 2/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
22 GOSUB 74 
   DELAY 200D MSEC       *DELAY TO ALLOW DTR TO COME BACK UP
   IF (ES.AND.RC.NE.0) GOTO 21   *LOOP ON REPEAT CONDITION
* 
*         SINGLE CHARACTER SEQUENCE.
* 
/        SINGLE CHARACTER SEQUENCE
23 B1=0                     *CLEAR CHAR COUNTER 
   B7=1                     *SET SUBSECTION FLAG
   GOSUB 60                 *CLEAR MUX
24 GOSUB 64                 *OUTPUT CHARACTER 
   WAIT CHAR                *WAIT 
   INPUT TO IB(0),ABT 70    *INPUT CHARACTER
   B2=B2+1000               *SET OUTPUT DATA TO EXPECTED
   B3=IB(0) 
   IF (B3.NE.B2) ERROR 3/0,GOSUB 71  *OUTPUT=INPUT
   IF (ES.AND.RC.NE.0) GOTO 26
   GOTO 24 WHILE (B1+1.LT.400)     *LOOP FOR ALL CHARACTERS 
   GOTO 30
26 GOSUB 74 
   GOTO 24
* 
*         STACKED CHARACTER SEQUENCE. 
* 
/        STACKED CHARACTER SEQUENCE 
30 B1=0                     *CLEAR CHARACTER COUNTER
   B7=2                     *SET SUBSECTION FLAG
   GOSUB 60                 *CLEAR MUX
   GOSUB 64                 *SEND 1ST CHARACTER 
   B1=B1+1                  *BUMP CHARACTER 
31 GOSUB 64                 *OUTPUT CHARACTER 
   WAIT HALF                *WAIT 
   INPUT TO IB(B1),ABT 70   *INPUT CHARACTER
   GOTO 31 WHILE (B1+1.LT.400)  *LOOP FOR ALL CHARS 
   WAIT HALF                *WAIT 
   INPUT TO IB(B1),ABT 70   *INPUT LAST CHARACTER 
* 
*         TEST RESULTS. 
* 
   B1=1 
40 B2=B1-1                  *SET EXPECTED CHARACTER 
   IF (P2.NE.134) GOTO 41   *IF NOT 134.5 
   B2=B2.AND.77.LS.1        *SHIFT
   B2=B2+1                  *ADD STOP BIT 
41 B2=B2+5000               *ADD UPPER EXPECTED BITS
   B3=IB(B1)
   IF (B3.NE.B2) ERROR 4/0,GOSUB 71  *OUTPUT=INPUT
   GOTO 40 WHILE (B1+1.LT.401)       *LOOP FOR ALL CHARS
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
42 GOSUB 74 
   IF (ES.AND.RC.EQ.0) GOTO 43      *NO REPEATS 
   IF (B7.EQ.0) GOTO 21     *REPEAT DIFFERENT SUBSECTIONS 
   IF (B7.EQ.1) GOTO 23 
   GOTO 30
43 IF (ES.AND.RM.NE.0) GOTO 21       *REPEAT MODULE 
   IF (WC.EQ.0) GOTO 44 
   MSG 6 TO DAYFILE 
44 EXIT 
* 
*         CLEAR MUX.
* 
/        CLEAR MUX
60 RES                      *RESERVE CHANNEL
   WAIT CHAR                *WAIT 
   WAIT CHAR                *WAIT 
   READ TO IB(0),ABT 70     *READ TO CLEAR MUX
   RETURN                   *RETURN 
* 
*         GENERATE CHARACTER AND OUTPUT.
* 
/        GENERATE CHARACTER AND OUTPUT
64 B2=B1                    *SET OUTPUT CHAR
   IF (P2.NE.134) GOTO 65   *NOT 134.5
   B2=B2.AND.77.LS.1        *SHIFT
   B2=B2+1                  *SET STOP BIT 
65 B2=B2+4000               *SET UPPER BIT
   OUTPUT B2,ABT 70         *OUTPUT CHARACTER 
   RETURN                   *RETURN 
* 
*         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 (B3,B2) 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
   RES                           *RESERVE CHANNEL 
   B0=0                          *RESET LINE POINTER
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE TT302,667X(61),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - CHECK CHARACTER REJECT STATUS BIT.
* 
* 
*  DESCRIPTION - CHECK CHARACTER REJECT STATUS BIT. 
* 
*         1. OUTPUT 2 CHARACTERS
*         2. WRITE 3RD CHARACTER TO MUX.
*         3. EXPECT CHARACTER REJECT. 
*         4. WAIT ONE CHARACTER TIME. 
*         5. WRITE CHARACTER. 
*         6. EXPECT NO CHARACTER REJECT.
* 
* 
*  ERRORS DETECTED -
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. NO CHARACTER REJECT. 
* 
* 
*  ERROR MESSAGES ISSUED -
* 
*         1. ALL PRODUCT OVERLAY MESSAGES 
*         2. EC=0004,NO CHARACTER REJECT
* 
*  REPEAT CONDITION LOOP -
* 
*         1. 1 - 6 IN DESCRIPTION.
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TT302 - 6676 CHARACTER REJECT TEST
 2 FORMAT EC=0004,NO CHARACTER REJECT 
 3 FORMAT LC = *DEC, ERCNT = *DEC 
 4 FORMAT TT302 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST MESSAGE.
   WC=0                     *CLEAR EROR COUNTER 
* 
*         RESERVE CHANNEL AND CLEAR MUX.
* 
21 RES                      *RESERVE CHANNEL
   WAIT CHAR                *WAIT CHARACTER TIME
   WAIT CHAR                *WAIT CHARACTER TIME
   READ TO IB(0),ABT 70     *READ TO CLEAR MUX
* 
*         OUTPUT 1 AND WRITE 2 CHARACTERS.
* 
   OUTPUT 4077,ABT 70       *OUTPUT CHARACTER 
   WRITE 4077,ABT 70        *WRITE CHARACTER
   WRITE 4077,ABT 70        *WRITE CHARACTER
* 
*         READ EXPECTING CHARACTER REJECT.
* 
   READ TO IB(0) FROM PORT P0,ABT 70     *READ FROM MUX 
   IF (IB(0).AND.400.EQ.0) ERROR 2/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 4 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 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 TT303,667X(61),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - CHECK LOST DATA STATUS BIT. 
* 
* 
*  DESCRIPTION - CHECK LOST DATA STATUS BIT.
* 
*         1. READ TO CLEAR MUX. 
*         2. OUTPUT 3 CHARACTERS AT CHARACTER TIME INTERVALS. 
*         3. INPUT EXPECTING THE LOST DATA BIT SET. 
* 
* 
*  ERRORS DETECTED -
* 
*         1. ALL PRODUCT OVERLAY ERRORS.
*         2. LOST DATA NOT SET. 
* 
*  ERROR MESSAGES ISSUED -
* 
*         1. ALL PRODUCT OVERLAY MESSAGES 
*         2. EC=0005,LOST DATA NOT SET
* 
*  REPEAT CONDITION LOOP -
* 
*         1. 1 - 3 IN DESCRIPTION.
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TT303 - 6676 LOST DATA TEST 
 2 FORMAT EC=0005,LOST DATA NOT SET 
 3 FORMAT LC = *DEC, ERCNT = *DEC 
 4 FORMAT TT303 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST MESSAGE.
   WC=0                     *CLEAR ERROR COUNTER. 
* 
*         RESERVE CHANNEL AND CLEAR MUX.
* 
21 RES                      *RESERVE CHANNEL
   WAIT CHAR                *WAIT CHARACTER TIME
   WAIT CHAR                *WAIT CHARACTER TIME
   READ TO IB(0),ABT 70     *READ TO CLEAR MUX
* 
*         OUTPUT 3 CHARACTERS AT CHARACTER TIME INTERVALS.
* 
   OUTPUT 4077,ABT 70       *OUTPUT CHARACTER 
   WAIT CHAR                *WAIT CHARACTER TIME
   WRITE 4077,ABT 70        *WRITE CHARACTER
   WAIT CHAR                *WAIT CHARACTER TIME
   WRITE 4077,ABT 70        *WRITE CHARACTER
   WAIT CHAR                *WAIT CHARACTER TIME. 
* 
*         READ EXPECTING LOST DATA. 
* 
   READ TO IB(0),ABT 70     *READ MUX 
   IF (IB(0).AND.1000.EQ.0) ERROR 2/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 4 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 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 TT304,667X(61),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - CHECK SERVICE FAILURE STATUS BIT. 
* 
* 
*  DESCRIPTION - CHECK SERVICE FAILURE STATUS BIT.
* 
*         1. READ TO CLEAR THE SERVICE FAILURE BIT. 
*         2. WAIT TWO CHARACTER TIMES.
*         3. EXPECT THE SERVICE FAILURE BIT TO BE SET.
* 
* 
*  ERRORS DETECTED -
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. SERVICE FAILURE NOT CLEARING.
*         3. SEVRVICE FAILURE NOT SETTING.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. EC=0006,SERVICE FAILURE SET AFTER A READ
*    3. EC=0007,SERVICE FAILURE NOT SET AFTER 2 CHAR TIMES
* 
*  REPEAT CONDITION LOOP -
* 
*         1. 1 - 3 IN DESCRIPTION.
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TT304 - 6676 SERVICE FAILURE TEST 
 2 FORMAT EC=0006,SERVICE FAILURE SET AFTER A READ
 3 FORMAT EC=0007,SERVICE FAILURE NOT SET AFTER 2 CHAR TIMES
 4 FORMAT LC = *DEC, ERCNT = *DEC 
 5 FORMAT TT304 - ERROR(S) IN MODULE
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST MESSAGE 
   WC=0                     *CLEAR ERROR COUNTER
* 
*         RESERVE CHANNEL AND CLEAR MUX.
* 
21 RES                      *RESERVE CHANNEL
   WAIT CHAR                *WAIT CHARACTER TIME
   WAIT CHAR                *WAIT CHARACTER TIME
   READ TO IB(0),ABT 70     *READ TO CLEAR MUX
* 
*         READ STATUS EXPECT SERVICE FAILURE BIT CLEAR. 
* 
   STATUS TO IB(0),ABT 70   *READ STATUS
* 
*         WAIT 2 CHARACTER TIMES, READ STATUS EXPECTING 
*         THE SERVICE FAILURE BIT SET.
* 
   WAIT CHAR                *WAIT CHARACTER TIME
   WAIT CHAR                *WAIT CHARACTER TIME
   STATUS TO IB(1),ABT 70   *READ STATUS
* 
*         TEST RESULTS. 
* 
   IF (IB(0).AND.1.NE.0) ERROR 2/0,GOSUB 71 
   IF (IB(1).AND.1.EQ.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 TT305,667X(61),LOCK 
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - CHECK INPUT REQUIRED STATUS BIT.
* 
* 
*  DESCRIPTION - CHECK INPUT REQUIRED STATUS BIT. 
* 
*         1. READ TO CLEAR INPUT REQUIRED STATUS BIT. 
*         2. WAIT FOR BIT TO SET AGAIN. 
*         3. READ TO CLEAR INPUT REQUIRED STATUS BIT. 
*         4. TIME NEXT SETTING OF BIT AND DISPLAY RESULTS.
* 
* 
*  ERRORS DETECTED -
* 
*         1. ALL PRODUCT OVERLAY ERRORS 
*         2. INPUT REQUIRED NOT SETTING.
*         2. TIME FOR INPUT REQUIRED TO SET.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. EC=0010,INPUT REQUIRED NOT SET
*    3. *OCT*OCT OCTAL USEC FOR INPUT REQUIRED TO SET 
* 
*  REPEAT CONDITION LOOP -
* 
*         1. 1 - 4 IN DESCRIPTION.
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TT305 - 6676 INPUT REQUIRED TEST
 2 FORMAT EC=0010,INPUT REQUIRED NOT SET
 3 FORMAT *OCT*OCT OCTAL USEC FOR INPUT REQUIRED TO SET 
 4 FORMAT LC = *DEC, ERCNT = *DEC 
 5 FORMAT TT305 - ERROR(S) IN MODULE
/ 
/  IR = INPUT REQUIRED STATUS BIT 
/ 
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST MESSAGE 
   WC=0                     *CLEAR ERROR COUNTER
* 
*         RESERVE CHANNEL.
* 
21 RES                      *RESERVE CHANNEL
   IB(1)=0                  *CLEAR FOR TIME TEST
   B1=0                     *CLEAR FOR TIME TEST
* 
*         DETERMINE EXECUTION TIME OF INSTRUCTUONS. 
* 
22 IF (RT.AND.7000.NE.0) GOTO 22  *WAIT FOR UPPER 3=0 
   B2=RT                          *SAVE TIME
   STATUS TO IB(0),ABT 70         *READ STATUS
   IF (IB(1).AND.2.NE.0) GOTO 23  *WONT JUMP
   GOTO 23 WHILE (B1+1.NE.7776)   *WILL ALWAYS JUMP 
23 B2=RT-B2                       *FIND TOTAL TIME
* 
*         WAIT FOR INPUT REQUIRED TO SET THEN READ TO CLEAR IT. 
* 
   B1=0 
   READ TO IB(0),ABT 70           *CLEAR IR BIT 
24 STATUS TO IB(0),ABT 70         *READ STATUS
   IF (IB(0).AND.2.EQ.0) GOTO 24  *LOOP IF IR NOT SET 
   READ TO IB (0),ABT 70          *READ TO CLEAR IT 
* 
*         TIME THE NEXT SETTING OF THE INPUT REQUIRED STATUS BIT. 
* 
25 STATUS TO IB(0),ABT 70         *READ STATUS
   IF (IB(0).AND.2.NE.0) GOTO 26  *IF IR SET
   GOTO 25 WHILE (B1+1.NE.7776)   *LOOP 
   ERROR 2/0,GOTO 70              *NEVER SET
* 
*         CONVERT LOOP COUNT TO TIME AND POST RESULTS.
* 
26 B3=0 
   B4=0 
27 B5=B3+B2.RS.12D
   B3=B3+B2 
   B4=B4+B5 
   GOTO 27 WHILE (B1-1.NE.0)
   IF (ES.AND.SL.NE.0) GOTO 30         *INHIBIT OVERWRITE 
   MSG 3 (B4,B3) TO DISPLAY,PRINT 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
30 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 31 
   MSG 5 TO DAYFILE 
31 GOTO 77
* 
*         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 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
77 END 20 
COMPILE 
   MODULE TT399,667X(61),LOCK 
/ 
/ TT3 - A 6676 DIAGNOSTIC BASED ON THE SMM DIAGNOSTIC TT3 
/ 
/ OVERVIEW - TT3 IS A DIAGNOSTIC FOR THE 6676 IN ASYCHRONOUS
/            (103) MODE ON A TWO PORT LOOP BACK.
/ 
/ CALL - RUN TT3  OR RUN TT3(01,03) 
/ 
/ 
/ AFTER THE TEST CABLE IS CONNECTED FROM THE INPUT  PORT  TO
/ THE  OUTPUT  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. THE  CONTENTS  OF  P0
/ REGISTER  DEFINES  THE  OUTPUT PORT AND THE CONTENTS 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) 
/ 
/ 
/ 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 = N/A
/      BIT 1 = N/A
/      BIT 2 = RESERVED.
/      BIT 3 = RESERVED.
/      BIT 4 = RESERVED.
/      BIT 5 = RESERVED.
/      BIT 6 = 2550-100 EMULATION.
/      BIT 7 = *** FOR 6671 USE ONLY ***
/      BIT 8 = FULL WORD COUNT I/O.(NORM TO THE HIGHEST PORT) 
/      BITS 9 - 11 = EXTRA BIT TIMES. 
/ 
/***********************************************************
/ 
/                MODULE TT301,667X(61)
/                ---------------------
/ 
/  OVERVIEW - CHECK CHARACTER AND DISCONNECT CODES. 
/ 
/ 
/  DESCRIPTION - CHECK CHARACTER AND DISCONNECT CODES.
/ 
/          1. SEND DISCONNECT CODE AND EXPECT INP TO BE ZERO. 
/          2. OUTPUT CHARACTER. 
/          3. WAIT CHARACTER TIME.
/          4. INPUT CHARACTER.
/          5. CHECK CHARACTER.
/          6. REPEAT 2 - 5 FOR ALL CHARACTERS.
/          7. OUTPUT CHARACTER. 
/          8. OUTPUT CHARACTER. 
/          9. INPUT CHARACTER.
/         10. REPEAT 8 - 9 FOR ALL CHARACTERS.
/         11. INPUT LAST CHARACTER. 
/         12. CHECK ALL CHARACTERS INPUTTED.
/ 
/ 
/  ERRORS DETECTED -
/ 
/         1. ALL PRODUCT OVERLAY ERRORS.
/         2. INPUT NONZERO AFTER DISCONNECT.
/         3. DATA ERROR IN SINGLE AND STACKED SEQUENCES.
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0001,INPUT=*OCT AFTER 6000 SENT,EXPECTED 0000
/    3. EC=0002,SINGLE CHARACTER SEQUENCE, A=*OCT, E=*OCT 
/    4. EC=0003,STACKED CHARACTER SEQUENCE, A=*OCT, E=*OCT
/ 
/  REPEAT CONDITION LOOP -
/ 
/         1. 1 IN DESCRIPTION IF ERROR 1. 
/         2. 2 - 6 IN DESCRIPTION FOR ERROR 2.
/         3. 7 - 12 IN DESCRIPTION FOR ERROR 3
/ 
10 PAUSE
   EXIT TO 990
   END 10 
COMPILE,SOURCE
   MODULE TT3990,667X(61),LOCK
/ 
/                MODULE TT302,667X(61)
/                ---------------------
/ 
/  OVERVIEW - CHECK CHARACTER REJECT STATUS BIT.
/ 
/ 
/  DESCRIPTION - CHECK CHARACTER REJECT STATUS BIT. 
/ 
/         1. OUTPUT 2 CHARACTERS
/         2. WRITE 3RD CHARACTER TO MUX.
/         3. EXPECT CHARACTER REJECT. 
/         4. WAIT ONE CHARACTER TIME. 
/         5. WRITE CHARACTER. 
/         6. EXPECT NO CHARACTER REJECT.
/ 
/ 
/  ERRORS DETECTED -
/ 
/         1. ALL PRODUCT OVERLAY ERRORS 
/         2. NO CHARACTER REJECT. 
/ 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/         1. ALL PRODUCT OVERLAY MESSAGES 
/         2. EC=0004,NO CHARACTER REJECT
/ 
/  REPEAT CONDITION LOOP -
/ 
/         1. 1 - 6 IN DESCRIPTION.
/ 
/***********************************************************
/ 
/                MODULE TT303,667X(61)
/                ---------------------- 
/ 
/  OVERVIEW - CHECK LOST DATA STATUS BIT. 
/ 
/ 
/  DESCRIPTION - CHECK LOST DATA STATUS BIT.
/ 
/         1. READ TO CLEAR MUX. 
/         2. OUTPUT 3 CHARACTERS AT CHARACTER TIME INTERVALS. 
/         3. INPUT EXPECTING THE LOST DATA BIT SET. 
/ 
/ 
/  ERRORS DETECTED -
/ 
/         1. ALL PRODUCT OVERLAY ERRORS.
/         2. LOST DATA NOT SET. 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/         1. ALL PRODUCT OVERLAY MESSAGES 
/         2. EC=0005,LOST DATA NOT SET
/ 
/  REPEAT CONDITION LOOP -
/ 
/         1. 1 - 3 IN DESCRIPTION.
/ 
10 PAUSE
   EXIT TO 991
   END 10 
COMPILE,SOURCE
   MODULE TT3991,667X(61),LOCK
/ 
/                MODULE TT304,667X(61)
/                ---------------------
/ 
/  OVERVIEW - CHECK SERVICE FAILURE STATUS BIT. 
/ 
/ 
/  DESCRIPTION - CHECK SERVICE FAILURE STATUS BIT.
/ 
/         1. READ TO CLEAR THE SERVICE FAILURE BIT. 
/         2. WAIT TWO CHARACTER TIMES.
/         3. EXPECT THE SERVICE FAILURE BIT TO BE SET.
/ 
/ 
/  ERRORS DETECTED -
/ 
/         1. ALL PRODUCT OVERLAY ERRORS 
/         2. SERVICE FAILURE NOT CLEARING.
/         3. SEVRVICE FAILURE NOT SETTING.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. EC=0006,SERVICE FAILURE SET AFTER A READ
/    3. EC=0007,SERVICE FAILURE NOT SET AFTER 2 CHAR TIMES
/ 
/  REPEAT CONDITION LOOP -
/ 
/         1. 1 - 3 IN DESCRIPTION.
/ 
/***********************************************************
/ 
/                MODULE TT305,667X(61)
/                ---------------------
/ 
/ 
/  OVERVIEW - CHECK INPUT REQUIRED STATUS BIT.
/ 
/ 
/  DESCRIPTION - CHECK INPUT REQUIRED STATUS BIT. 
/ 
/         1. READ TO CLEAR INPUT REQUIRED STATUS BIT. 
/         2. WAIT FOR BIT TO SET AGAIN. 
/         3. READ TO CLEAR INPUT REQUIRED STATUS BIT. 
/         4. TIME NEXT SETTING OF BIT AND DISPLAY RESULTS.
/ 
/ 
/  ERRORS DETECTED -
/ 
/         1. ALL PRODUCT OVERLAY ERRORS 
/         2. INPUT REQUIRED NOT SETTING.
/         2. TIME FOR INPUT REQUIRED TO SET.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. EC=0010,INPUT REQUIRED NOT SET
/    3. *OCT*OCT OCTAL USEC FOR INPUT REQUIRED TO SET 
/ 
/  REPEAT CONDITION LOOP -
/ 
/         1. 1 - 4 IN DESCRIPTION.
/ 
10 PAUSE
   END 10 
COMPILE,SOURCE
