*DECK TFE 
*** TFE - A 2550 EMULATOR DIAGNOSTIC. 
*** EXTERNAL DOCUMENTATION
**
* 
* AUTHOR - CONCURRENT MAINTENANCE SOFTWARE DEVELOPEMENT 
*          MAINTENANCE SOFTWARE ENGINEERING 
*          QUALITY AND ENGINEERING ORGANIZATION 
* 
* OVERVIEW - TFE  IS  A DIAGNOSTIC FOR THE 2550 EMULATOR IN EITHER SYNC-
*            HRONOUS (201) MODE (6671 MODE ONLY) OR  ASYNCHRONOUS  (103)
*            MODE  (6671  OR  6676  MODE) USING TWO PORTS LOOPED BACK TO
*            BACK.
* 
* CALL - RUN TFE  OR RUN TFE(00,01,02)
* 
* CONTROLWARE LEVEL - RELEASE 3 (E03) 
* 
* 
************************************************************************
*                                                                      *
*                            CAUTION                                   *
*                                                                      *
* TFE  WILL  NOT  RUN  IF THE PORT IS SELECTED FOR SWITCHED AND 134.5  *
* BAUD AS THIS SELECTS AUTO-BAUD IN  THE  CONTROLWARE  (SEE  2550-100  *
* CONTROLWARE REFERENCE MANUAL).                                       *
*                                                                      *
************************************************************************
* 
* 
* AFTER THE TEST CABLE IS CONNECTED FROM THE OUTPUT PORT  TO  THE  INPUT
* PORT  TO BE TESTED AND THE EQUIPMENT ASSIGNED THE FOLLOWING PARAMETERS
* NEED TO BE SET. 
* 
* PARAMETERS -
* 
* 
* THE ASSIGNMENT OF THE PORTS ARE 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 THE  P1  REGISTER  DEFINES  THE  INPUT
* PORT  WITH LINE 1 (LINE NUMBERS ARE DECIMAL) AT THE 2550 EQUAL TO PORT
* 0. 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) 
*                2402 =  2400 BAUD ASYNC. (103 MODE)
*                4002 =  4800 BAUD ASYNC. (103 MODE)
*                6002 =  9600 BAUD ASYNC. (103 MODE)
* 
*       2400 =  2400 BAUD SYNC. (201 MODE)  SIMULATOR 
*       4000 =  4800 BAUD SYNC. (201 MODE)  SIMULATOR 
*       6000 =  9600 BAUD SYNC. (201 MODE)  SIMULATOR 
* 
* 
* 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 = N/A
*      BIT 7 = *** FOR 6671 USE ONLY ***
*      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
* 01 (MEMORY TEST) AND 02 (MEMORY ADDRESSING TEST) TO BE LIMITED TO READ
* AND TEST RATHER THEN WRITE, READ, AND TEST. 
* 
* 
*                LOOP BACK CABLE PART NUMBERS 
*                ---------------------------- 
* 
*                3 FEET    -    74872009
*                4 FEET    -    74872010
*                6 FEET    -    74872011
*                8 FEET    -    74872012
* 
* 
*                BAUD VERSES BIT LENGTH, PARITY, AND STOP BITS
*                ---------------------------------------------
* 
*      SYNCHRONOUS -    ALL    , 8 BITS , IGNORE PARITY 
* 
*     ASYNCHRONOUS -  110 BAUD , 8 BITS , IGNORE PARITY , 2 STOP BITS 
*                     134 BAUD , 7 BITS , IGNORE PARITY , 1 STOP BIT
*                     150 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT
*                     300 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT
*                     600 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT
*                    1200 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT
* 
* 
* 
*                            ABBREVIATIONS
*                            -------------
* 
*     A = ACTUAL                E = EXPECTED           EC = ERROR CODE
* 
*    LC = LOOP COUNT        ERCNT = ERROR COUNT 
* 
*   MEM = MEMORY              MAD = MEMORY ADDRESS    LOC = LOCATION
* 
* WD/PT = WORD OR PORT       OTBF = OUTPUT BUFFER    INBF = INPUT BUFFER
* 
*   DSR = DATA SET READY       CO = CARRIER ON        MPC = MESSAGE PARITY
* 
* 
*                            TFE00 ONLY 
*                            ---------- 
* 
*               L = LOOP COUNT          C = ERROR CODE
* 
*               F = FUNCTION            E = ERROR COUNT 
* 
* 
   MODULE TFE00,6000(62,63),LOCK
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TESTS ALL 2550 EMULATOR 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
 1 FORMAT TFE00 - 2550 EMULATOR FUNCTION TEST 
 2 FORMAT FUNCTION = *OCT 
 3 FORMAT L=*DEC,E=*DEC,C=*OCT,F=*OCT 
 4 FORMAT TFE00 - 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. 
* 
/         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.
* 
/         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 
   IF (ES.AND.TM.EQ.0) GOTO 41
   PICTURE
   HALT 
   BLANK
   B0=0 
   RES
   GOTO 25
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 TFE01,667X(62,63),LOCK
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST MEMORY. 
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST MEMORY. 
* 
*    1. MAINTENANCE WRITE ALL WORDS.
*    2. MAINTENANCE READ ALL WORDS. 
*    3. CHECK DATA. 
*    4. REPEAT TO 1 FOR ALL PATTERNS. 
*    5. REPEAT TO 1 FOR FLOATING ONES AND ZEROS.
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS
*    2. MEMORY DATA ERRORS. 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0010,MEM A=*OCT E=*OCT LOC=*OCT=OTBF WD/PT *OCT
*    3. EC=0011,MEM A=*OCT E=*OCT LOC=*OCT=INBF WD/PT *OCT
* 
* 
*  REPEAT CONDITION LOOP -
* 
*    1. 1-3 IN DESCRIPTION FOR P5=0.
*    2. 2-3 IN DESCRIPTION FOR P5 NON ZERO. 
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TFE01 - 2550 EMULATOR MEMORY TEST 
 2 FORMAT TFE01 - MEMORY PATTERN = *OCT 
 3 FORMAT TFE01 - 0-3=*OCT, 4-7=*OCT
 4 FORMAT EC=0010,MEM A=*OCT E=*OCT LOC=*OCT=OTBF WD/PT *OCT
 5 FORMAT EC=0011,MEM A=*OCT E=*OCT LOC=*OCT=INBF WD/PT *OCT
 6 FORMAT LC = *DEC, ERCNT = *DEC 
 7 FORMAT TFE01 - 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. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         GENERATE DATA BUFFER FROM PATTERNS TABLE AND
*         TEST MEMORY.
* 
/         GENERATE PATTERN
21 B1=200 
22 B2=OB(B1)                *GET DATA PATTERN 
   MSG 2 (B2) TO DISPLAY    *POST MESSAGE 
   DUP B2 TO OB(0) FOR 200  *GENERATE PATTERN 
/         DO I/O
   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.
* 
/         TEST FLOWING 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 
   DUP B6 TO OB(0) FOR 64D    *GENERATE WORDS 0-3 
   DUP B7 TO OB(64D) FOR 64D  *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.
* 
/         EXIT MODULE 
40 GOSUB 74 
   IF (ES.AND.RM.NE.0) GOTO 21
   RES
   DUP 0 TO OB FOR 200
   MEMWR,ABT 41                 *CLEAR MEMORY 
41 B1=0 
42 RES
   DELAY 100 MSEC 
   READ TO IB(0),ABT 43         *READ TO CLEAR HOLD 
43 IF (WC.EQ.0) GOTO 44 
   MSG 7 TO DAYFILE 
44 EXIT 
* 
*         WRITE, READ, AND TEST MEMORY. 
* 
/         I/O SUBROUTINE
60 RES                            *RESERVE CHANNEL
   MEMWR,ABT 70                   *WRITE TO MEMORY ALL WORDS
61 MEMRD,ABT 70                   *READ MEMORY ALL WORDS
   B3=0 
* 
*         TEST OUTPUT BUFFER
* 
/         TEST OUTPUT BUFFER
   B4=0 
62 IF (IB(B3).NE.OB(B3)) ERROR 4/0,GOSUB 71   *TEST DATA
   B3=B3+1
   GOTO 62 WHILE (B4+1.LT.64D)     *LOOP FOR ALL WORDS
* 
*         TEST INPUT BUFFER 
* 
/         TEST INPUT BUFFER 
   B4=0 
63 IF (IB(B3).NE.OB(B3)) ERROR 5/0,GOSUB 71   *TEST DATA
   B3=B3+1
   GOTO 63 WHILE (B4+1.LT.64D)     *LOOP FOR ALL WORDS
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
/         EXIT MODULE 
   GOSUB 74 
   IF (ES.AND.RC.EQ.0) GOTO 66
   IF (P5.EQ.0) GOTO 60 
   RES
   GOTO 61
66 RETURN 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
/        DRIVER ERROR ROUTINE 
70 ENDSUB 
   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 (IB(B3),OB(B3),B3,B4) 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 6 (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 TFE02,667X(62,63),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 ADDRESS. 
*    2. MAINTENANCE READ ALL WORDS. 
*    3. CHECK DATA. 
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS. 
*    2. MEMORY DATA ERRORS
*    4. MEMORY ADDRESSING ERROR.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. EC=0020,MAD A=*OCT E=*OCT LOC=*OCT=OTBF WD/PT *OCT
*    3. EC=0021,MAD A=*OCT E=*OCT LOC=*OCT=INBF WD/PT *OCT
* 
*  REPEAT CONDITION LOOP -
* 
*    1. 1-3 IN DESCRIPTION FOR P5=0.
*    2. 2-3 IN DESCRIPTION FOR P5 NON ZERO. 
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TFE02 - 2550 EMULATOR MEMORY ADDRESSING TEST
 2 FORMAT EC=0020,MAD A=*OCT E=*OCT LOC=*OCT=OTBF WD/PT *OCT
 3 FORMAT EC=0021,MAD A=*OCT E=*OCT LOC=*OCT=INBF WD/PT *OCT
 4 FORMAT LC = *DEC, ERCNT = *DEC 
 5 FORMAT TFE02 - 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)
/         GENERATE ADDRESS PATTERN
   B1=0 
21 OB(B1)=B1                *GENERATE PATTERN 
   GOTO 21 WHILE (B1+1.LT.128D) 
* 
*         WRITE AND READ MEMORY.
* 
/         DO I/O
22 RES                            *RESERVE CHANNEL
   MEMWR,ABT 70                   *WRITE TO MEMORY ALL WORDS
23 MEMRD,ABT 70                   *READ MEMORY ALL WORDS
* 
*         TEST OUTPUT BUFFER
* 
/         TEST OUTPUT BUFFER
   B3=0 
   B4=0 
30 IF (IB(B3).NE.OB(B3)) ERROR 2/0,GOSUB 71   *TEST DATA
   B3=B3+1
   GOTO 30 WHILE (B4+1.LT.64D)  *LOOP FOR ALL WORDS 
* 
*         TEST INPUT BUFFER 
* 
/         TEST INPUT BUFFER 
   B4=0 
31 IF (IB(B3).NE.OB(B3)) ERROR 3/0,GOSUB 71   *TEST DATA
   B3=B3+1
   GOTO 31 WHILE (B4+1.LT.64D)  *LOOP FOR ALL WORDS 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
/         EXIT MODULE 
40 GOSUB 74 
   IF (ES.AND.RC.EQ.0) GOTO 41
   IF (P5.EQ.0) GOTO 22 
   RES
   GOTO 23
41 IF (ES.AND.RM.NE.0) GOTO 22
   RES
   DUP 0 TO OB FOR 200
   MEMWR,ABT 42                 *CLEAR MEMORY 
42 B1=0 
43 RES
   DELAY 100 MSEC 
   READ TO IB(0),ABT 44         *READ TO CLEAR HOLD 
44 IF (WC.EQ.0) GOTO 45 
   MSG 5 TO DAYFILE 
45 EXIT 
* 
*         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 (IB(B3),OB(B3),B3,B4) 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 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 TFE03,667X(62,63),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. OUTPUT 6000 TO DROP DTR.
*    2. WAIT FOR UP TO 500 MS FOR DSR/CO TO DROP. 
*    3. IF 6676 MODE, GOTO 6. 
*    4. WAIT FOR UP TO 500 MS TO INSURE DSR/CO STAYS DOWN.
*    5. OUTPUT 7000 TO BRING DTR UP.
*    6. WAIT FOR UP TO 500 MS FOR DSR/CO TO COME UP.
*    7. CHECK RESULTS.
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS
*    2. DTR/DSR/CO CONTROL MALFUNCTIONS 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0030,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
*    3. EC=0031,DSR/CO NOT DOWN BY 500 MS AFTER 6000 SENT 
*    4. EC=0032,DSR/CO DIDNT STAY DOWN AFTER 6000 SENT
*    5. EC=0033,DSR/CO NOT UP BY 500 MS,6000/7000 SENT
* 
*  REPEAT CONDITION LOOP -
* 
*    1. 1 - 7 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TFE03 - 6671 EMULATOR 6XXX-7XXX CONTROL CODE TEST 
 2 FORMAT EC=0030,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
 3 FORMAT EC=0031,DSR/CO NOT DOWN BY 500 MS AFTER 6000 SENT 
 4 FORMAT EC=0032,DSR/CO DIDNT STAY DOWN AFTER 6000 SENT
 5 FORMAT EC=0033,DSR/CO NOT UP BY 500 MS,6000/7000 SENT
 6 FORMAT LC = *DEC, ERCNT = *DEC 
 7 FORMAT TFE03 - ERROR(S) IN MODULE
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, VCS = VALID CHARACTER STATUS, 
/  LD = LOST DATA, EOM = END OF MESSAGE CHARACTER,
/  CR = CHARACTER REJECT
/ 
* 
*         DISPLAY RUN MESSAGE.
* 
/        DO I/O TO TEST 6000 CONTROL CODE 
20 MSG 1 TO DISPLAY,PRINT         *POST SECTION MESSAGE 
   WC=0 
* 
*         RESERVE CHANNEL,ENABLE DTR, AND CLEAR MUX.
* 
/         RESERVE CHANNEL,ENABLE DTR,CLEAR MUX AND WAIT 
/         FOR CARRIER ON. 
21 B1=0 
   B3=0 
   B4=0 
   B5=0 
   RES                          *RESERVE CHANNEL
   WRITE 6400,ABT 70            *CLEAR ANY OUTPUT 
   WRITE 6400 TO PORT P1,ABT 70 
   DELAY 500 MSEC 
   WRITE 7000,ABT 70            *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   DELAY 100 MSEC 
   READ TO IB(0),ABT 70         *CLEAR INPUT
22 B2=P1                        *WAIT FOR CO
   READ TO IB(0),ABT 70 
   IF (IB(0).AND.1000.EQ.0) GOTO 23 
   B2=P0
   READ TO IB(0) FROM PORT P0,ABT 70
   IF (IB(0).AND.1000.NE.0) GOTO 30 
23 DELAY 1 MSEC 
   GOTO 22 WHILE (B1+1.LT.500D) 
   ERROR 2/0,GOTO 70
* 
*         DROP DTR AND CLEAR COUPLER
* 
/         OUTPUT DROP DTR AND CHECK DSR/CO DOWN 
30 RES                       *RESERVE CHANNEL 
   OUTPUT 6400,ABT 70        *OUTPUT DROP DTR CODE
   READ TO IB(0),ABT 70      *CLEAR COUPLER 
* 
*         LOOP WAITING FOR DSR/CO TO DROP 
* 
31 READ TO IB(0),ABT 70              *READ STATUS 
   IF (IB(0).AND.3000.EQ.0) GOTO 32  *IF DSR/CO DOWN
   DELAY 1 MSEC                      *WAIT 1 MILLISEC 
   GOTO 31 WHILE (B3+1.LT.500D)      *LOOP FOR 500 MILLISECS
* 
*         IF 6676 MODE DSR/CO SHOULD COME BACK UP 
* 
/         IN SYNC MODE DTR EXPECTED TO STAY DOWN
32 IB(1)=0
   IF (P2.LT.2000) GOTO 35   *IF ASYNC MODE 6671
   IF(P2 .AND. 2 .NE. 0)GOTO 35   *IF ASYNC MODE 6671 
* 
*         INSURE DSR/CO STAY DOWN 
* 
33 READ TO IB(1),ABT 70              *READ STATUS 
   IF (IB(1).AND.3000.NE.0) GOTO 34  *IF DSR/CO UP
   DELAY 1 MSEC                      *DELAY 1 MILLISEC
   GOTO 33 WHILE (B4+1.LT.500D)      *LOOP FOR 500 MILLISECS
* 
*         BRING DTR BACK UP 
* 
/         BRING DTR BACK UP AND CHECK DSR/CO UP 
34 OUTPUT 7000,ABT 70        *OUTPUT BRING UP DTR 
* 
*         WAIT FOR DSR/CO TO COME UP
* 
35 READ TO IB(2),ABT 70                 *READ STATUS
   IF (IB(2).AND.3000.EQ.1000) GOTO 36  *IF DSR/CO UP 
   DELAY 1 MSEC                         *DELAY 1 MILLISEC 
   GOTO 35 WHILE (B5+1.LT.500D)         *LOOP FOR 500 MILLS 
* 
*         TEST RESULTS
* 
/         TEST RESULTS
36 IF (IB(0).AND.3000.NE.0) ERROR 3/0,GOSUB 71
   IF (IB(1).AND.3000.NE.0) ERROR 4/0,GOSUB 71
   IF (IB(2).AND.3000.NE.1000) ERROR 5/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
/         EXIT MODULE 
40 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 41 
   MSG 7 TO DAYFILE 
41 EXIT 
* 
*         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
   IF (ES.AND.SL.EQ.0) GOTO 72   *IF NOT SCOPING LOOP 
   RETURN                        *RETURN
72 MSG EM (B2,IB(0)) 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 6 (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 TFE04,667X(62,63),LOCK
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST 7XXX CONTROL. 
* 
*              RUNS SYNCHRONOUS (201 MODE,6671 MODE) ONLY.
* 
*  DESCRIPTION - TEST 7XXX CONTROL CODE.
* 
*    1. DO A NORMAL OUTPUT/INPUT SEQUENCE.
*    2. OUTPUT 7000 TO CLEAR RECIEVER SYNC. 
*    3. OUTPUT TWO CHARACTERS BEFORE SYNC CODE AND CHECK
*       THAT THEY DONT APPEAR ON THE RECEIVE PORT.
*    4. CHECK RESULTS.
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS. 
*    2. DATA ERRORS 
*    3. DATA TRANSFER WITHOUT RESYNC
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0040,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
*    3. EC=0041, DATA ERROR, E=*OCT, A=*OCT 
*    4. EC=0042, MPC ERROR, E=*OCT, A=*OCT
*    5. EC=0043, *OCT RECEIVED BEFORE RECEIVER RESYNCED 
* 
*  REPEAT CONDITION LOOP -
* 
*    1. 1 - 4 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TFE04 - 2550 EMULATOR RESYNC (7000) TEST
 2 FORMAT EC=0040,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
 3 FORMAT EC=0041, DATA ERROR, E=*OCT, A=*OCT 
 4 FORMAT EC=0042, MPC ERROR, E=*OCT, A=*OCT
 5 FORMAT EC=0043, *OCT RECEIVED BEFORE RECEIVER RESYNCED 
 6 FORMAT LC = *DEC, ERCNT = *DEC 
 7 FORMAT TFE04 - ERROR(S) IN MODULE
   DATA (OB,CON) 4001,4203,2000 
   DATA(OB(10),CON)4006,4006,4026,4026,4001,4203,2000 
* 
*         DISPLAY SECTION MESSAGE.
* 
20 IF(P2.LT.2400)EXIT        IF NOT 201 MODE
   IF(P2 .AND. 2 .NE. 0)EXIT      *IF NOT 201 MODE
21 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         RESERVE CHANNEL,ENABLE DTR, AND CLEAR MUX.
* 
22 B1=0 
   B3=0 
   RES                          *RESERVE CHANNEL
   WRITE 6400,ABT 70            *CLEAR ANY OUTPUT 
   WRITE 6400 TO PORT P1,ABT 70 
   DELAY 500 MSEC 
   WRITE 7000,ABT 70            *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   DELAY 100 MSEC 
   READ TO IB(0),ABT 70         *CLEAR INPUT
23 B2=P1                        *WAIT FOR CO
   READ TO IB(0),ABT 70 
   IF (IB(0).AND.1000.EQ.0) GOTO 24 
   B2=P0
   READ TO IB(0) FROM PORT P0,ABT 70
   IF (IB(0).AND.1000.NE.0) GOTO 30 
24 DELAY 1 MSEC 
   GOTO 23 WHILE (B3+1.LT.500D) 
   ERROR 2/0,GOTO 70
* 
*         RESYNC
* 
30 OUTPUT P4,ABT 70           *OUTPUT SYNC CODE 
   WAIT HALF
   GOTO 30 WHILE (B1+1.NE.5)  *LOOP FOR 5 
* 
*         OUTPUT STRING OF CHARACTERS 
* 
   B1=0 
31 OUTPUT OB(B1),ABT 70       *OUTPUT NORMAL STRING 
   GOTO 31 WHILE (B1+1.NE.3)  *LOOP FOR ALL 
* 
*         INPUT STRING OF CHARACTERS
* 
   B1=0 
32 INPUT TO IB(B1),ABT 70     *INPUT NORMAL STRING
   GOTO 32 WHILE (B1+1.NE.3)  *LOOP FOR ALL 
* 
*         TEST RESULTS
* 
   B1=0 
33 B2=OB(B1)
   IF (IB(B1)-B2.NE.1000) ERROR 3/0,GOSUB 71
   GOTO 33 WHILE (B1+1.NE.2)
   B2=5000
   IF (B2.NE.IB(B1)) ERROR 4/0,GOSUB 71 
* 
*         RESERVE CHANNEL,ENABLE DTR, AND CLEAR MUX.
* 
   B1=0 
   B3=0 
   OB(12)=P4                    *SET SYNC CHARACTER 
   OB(13)=P4
   RES                          *RESERVE CHANNEL
   WRITE 6400,ABT 70            *CLEAR ANY OUTPUT 
   WRITE 6400 TO PORT P1,ABT 70 
   DELAY 500 MSEC 
   WRITE 7000,ABT 70            *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   DELAY 100 MSEC 
   READ TO IB(0),ABT 70         *CLEAR INPUT
34 B2=P1                        *WAIT FOR CO
   READ TO IB(0),ABT 70 
   IF (IB(0).AND.1000.EQ.0) GOTO 35 
   B2=P0
   READ TO IB(0) FROM PORT P0,ABT 70
   IF (IB(0).AND.1000.NE.0) GOTO 36 
35 DELAY 1 MSEC 
   GOTO 34 WHILE (B3+1.LT.500D) 
   ERROR 2/0,GOTO 70
* 
*         OUTPUT CHARACTER STRING WITH TWO CHARACTERS 
*         BEFORE SYNC CODES THAT SHOULD NEVER BE SEEN ON
*         INPUT.
* 
36 B1=10
37 OUTPUT OB(B1),ABT 70        *OUTPUT CHARACTERS 
   GOTO 37 WHILE (B1+1.NE.17)  *LOOP FOR ALL
* 
*         INPUT  CHARACTER STRING 
* 
   WAIT CHAR                   *WAIT CHAR 
   B1=0 
40 INPUT TO IB(B1),ABT 70      *INPUT CHARACTER 
   GOTO 40 WHILE (B1+1.NE.3)   *LOOP FOR ALL
* 
*         INSURE CHARACTERS BEFORE SYNC CODES DIDNT APPEAR
*         ON INPUT
* 
   B1=0 
41 B2=IB(B1)
   IF(B2.NE.5006)GOTO 44
43 ERROR 5/0,GOSUB 71 
44 GOTO 41 WHILE (B1+1.NE.3)
* 
*         HANDLE END OF MODULE
* 
45 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 22
   IF(WC.NE.0)MSG 7 TO DAYFILE
46 EXIT 
* 
*         HANDLE ERRORS, DISPLAY, AND PRINT FILE. 
* 
70 ENDSUB                        *END ANY SUBROUTINES 
   GOSUB 71 
   GOTO 45
71 WC=WC+1                       *BUMP ERROR COUNTER
   IF(ES.AND.SL.NE.0)RETURN   *IF SCOPING LOOP
72 MSG EM (B2,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 6 (BA,WC) TO DISPLAY      *POST LOOP/ERROR COUNT 
   RETURN                        *RETURN
75 CALL 98A                                                              TFE001G
76 RETURN                        *RETURN
   END 20 
COMPILE 
   MODULE TFE05,667X(62,63),LOCK
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST DATA TRANSFER.
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST DATA TRANSFER.
* 
*    1. GENERATE ALL CHARACTERS IN OUTPUT BUFFER (EXCEPT
*       FOR SYNC AND EOM IN SYCHRONOUS MODE)
*    2. OUTPUT TWO CHARACTERS.
*    3. OUTPUT CHARACTER. 
*    4. INPUT CHARACTER.
*    5. LOOP TO 3 FOR ALL OUTPUT CHARACTERS.
*    6. INPUT LAST TWO CHARACTERS.
*    7. CHECK DATA. 
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS. 
*    2. DATA ERRORS 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0050,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
*    3. EC=0051, DATA ERROR, E=*OCT, A=*OCT 
* 
*  REPEAT CONDITION LOOP -
* 
*    1. 2 - 7 IN DESCRIPTION. 
* 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TFE05 - 2550 EMULATOR DATA PATTERNS TEST
 2 FORMAT EC=0050,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
 3 FORMAT EC=0051, DATA ERROR, E=*OCT, A=*OCT 
 4 FORMAT LC = *DEC, ERCNT = *DEC 
 5 FORMAT TFE05 - ERROR(S) IN MODULE
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, VCS = VALID CHARACTER STATUS, 
/  LD = LOST DATA, EOM = END OF MESSAGE CHARACTER,
/  CR = CHARACTER REJECT
/ 
* 
*         DISPLAY RUN MESAGE. 
* 
/        DO STACKED I/O 
20 MSG 1 TO DISPLAY,PRINT   *POST RUN MESSAGE 
    WC=0
* 
* 
* 
/         GENERATE CHARACTER BUFFER 
   B1=4000
   B2=0 
21 IF (P2.LT.2400) GOTO 22   *IF NOT SYNCHRONOUS
   B3=B1.XOR.4203.AND.177 
   IF(B3.EQ.0) GOTO 23       *IF EOM, SKIP
   B3=B1.XOR.P4.AND.177 
   IF(B3.EQ.0) GOTO 23       *IF SYNC CODE
22 OB(B2)=B1                 *STORE IT
   B2=B2+1
   IF (P2.NE.134) GOTO 23 
   B1=B1+1                   *SKIP ODD CHARACTERS AT 134.5
23 GOTO 21 WHILE (B1+1.LT.4400)  *LOOP FOR ALL CHARACTERS 
* 
*         RESERVE CHANNEL,ENABLE DTR, AND CLEAR MUX.
* 
/         RESERVE CHANNEL,ENABLE DTR,CLEAR MUX AND WAIT 
/         FOR CARRIER ON. 
24 B1=0 
   B3=0 
   B4=0 
   B7=0 
   RES                          *RESERVE CHANNEL
   WRITE 6400,ABT 70            *CLEAR ANY OUTPUT 
   WRITE 6400 TO PORT P1,ABT 70 
   DELAY 500 MSEC 
   WRITE 7000,ABT 70            *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   DELAY 100 MSEC 
   READ TO IB(0),ABT 70         *CLEAR INPUT
25 B5=P1                        *WAIT FOR CO
   READ TO IB(0),ABT 70 
   IF (IB(0).AND.1000.EQ.0) GOTO 26 
   B5=P0
   READ TO IB(0) FROM PORT P0,ABT 70
   IF (IB(0).AND.1000.NE.0) GOTO 30 
26 DELAY 1 MSEC 
   GOTO 25 WHILE (B4+1.LT.500D) 
   OB(0)=B5 
   ERROR 2/0,GOTO 70
* 
* 
* 
30 IF (P2.LT.2400) GOTO 32  *IF 103 MODE,SKIP RESYNC
   IF(P2 .AND. 2 .NE. 0)GOTO 32   *IF 103 MODE, SKIP RESYNC 
* 
*         RESYNC (201 MODE).
* 
31 OUTPUT P4,ABT 70               *OUTPUT SYNC
   WAIT HALF                      *WAIT HALF
   GOTO 31 WHILE (B7+1.NE.5)      *LOOP FOR 5 SYNCS 
* 
*         OUTPUT ONE (TWO IF 201 MODE) CHARACTERS.
* 
32 OUTPUT OB(B1),ABT 70     *OUTPUT CHAR
   B1=B1+1                  *BUMP OUTPUT POINTER
   OUTPUT OB(B1),ABT 70     *OUTPUT CHAR
   B1=B1+1                  *BUMP OUTPUT POINTER
* 
*         OUTPUT AND INPUT REST OF BUFFER (STACKED CHARACTER MODE). 
* 
33 OUTPUT OB(B1),ABT 70        *OUTPUT CHAR 
   INPUT TO IB(B3),ABT 70      *INPUT CHAR
   B3=B3+1                     *BUMP INPUT POINTER
   GOTO 33 WHILE (B1+1.NE.B2)  *LOOP FOR ALL CHARACTER
* 
*         GET LAST (LAST TWO IF 201 MODE) CHARACTER.
* 
   IF (P2.LT.2400) GOTO 34
   IF(P2 .AND. 2 .NE. 0)GOTO 34   *IF 103 MODE, SKIP
   OUTPUT 2000,ABT 70       *DROP CARRIER 
   INPUT TO IB(B3),ABT 70   *INPUT CHARACTER
   B3=B3+1
34 INPUT TO IB(B3),ABT 70   *INPUT CHAR 
   B3=B3+1                  *BUMP INPUT POINTER 
   INPUT TO IB(B3),ABT 70   *INPUT LAST CHARACTER 
* 
*         TEST RESULTS. 
* 
/        TEST STACKED CHARACTERS
   B1=0                        *CLR POINTER 
35 IF (IB(B1)-OB(B1).NE.1000) ERROR 3/0,GOSUB 71  *IF ERR 
   GOTO 35 WHILE (B1+1.NE.B2)  *LOOP FOR ALL CHARACTERS 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
40 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 24   *IF REPEAT COND/MOD
   IF (WC.EQ.0) GOTO 41 
   MSG 5 TO DAYFILE 
41 EXIT 
* 
*         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 (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 TFE06,667X(62,63),LOCK
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST CHARACTER REJECT. 
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST CHARACTER REJECT. 
* 
*    1. OUTPUT 5 SYNCS AND A DATA CHARACTER.
*    2. WRITE ONE CHARACTER.
*    3. READ OUTPUT PORT EXPECTING CHARACTER REJECT.
*    4. READ OUTPUT PORT EXPECTING NO CHARACTER REJECT. 
*    5. WAIT CHARACTER TIME.
*    6. WRITE CHARACTER.
*    7. READ OUTPUT PORT EXPECTING NO CHARACTER REJECT. 
*    8. CHECK RESULTS.
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS. 
*    2. CHARACTER EJECT NOT SETTING.
*    3. CHARACTER NOT CLEARING AFTER A READ.
*    4. CHARACTER REJECT CONSTANTLY SET.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0060,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
*    3. EC=0061,CHARACTER REJECT NOT SET AFTER FORCING
*    4. EC=0062,CHARACTER REJECT NOT CLEAR AFTER READ 
*    5. EC=0063,CHARACTER REJECT ON WRITE AFTER WAIT CHAR 
* 
*  REPEAT CONDITION LOOP -
* 
*    1. 1 - 8 IN DESCRIPTION. 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TFE06 - 2550 EMULATOR CHARACTER REJECT TEST 
 2 FORMAT EC=0060,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
 3 FORMAT EC=0061,CHARACTER REJECT NOT SET AFTER FORCING
 4 FORMAT EC=0062,CHARACTER REJECT NOT CLEAR AFTER READ 
 5 FORMAT EC=0063,CHARACTER REJECT ON WRITE AFTER WAIT CHAR 
 6 FORMAT LC = *DEC, ERCNT = *DEC 
 7 FORMAT TFE06 - ERROR(S) IN MODULE
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, VCS = VALID CHARACTER STATUS, 
/  LD = LOST DATA, EOM = END OF MESSAGE CHARACTER,
/  CR = CHARACTER REJECT
/ 
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         RESERVE CHANNEL,ENABLE DTR, AND CLEAR MUX.
* 
/         RESERVE CHANNEL,ENABLE DTR,CLEAR MUX AND WAIT 
/         FOR CARRIER ON. 
21 B1=0 
   RES                          *RESERVE CHANNEL
   WRITE 6400,ABT 70            *CLEAR ANY OUTPUT 
   WRITE 6400 TO PORT P1,ABT 70 
   DELAY 500 MSEC 
   WRITE 7000,ABT 70            *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   DELAY 100 MSEC 
   READ TO IB(0),ABT 70         *CLEAR INPUT
22 B2=P1                        *WAIT FOR CO
   READ TO IB(0),ABT 70 
   IF (IB(0).AND.1000.EQ.0) GOTO 23 
   B2=P0
   READ TO IB(0) FROM PORT P0,ABT 70
   IF (IB(0).AND.1000.NE.0) GOTO 30 
23 DELAY 1 MSEC 
   GOTO 22 WHILE (B1+1.LT.500D) 
   ERROR 2/0,GOTO 70
* 
*         OUTPUT 5 SYNC CODES AND CHECK RESYNCED (201 MODE).
* 
/         DO I/O
30 B1=0 
31 OUTPUT P4,ABT 70               *OUTPUT SYNC CODE 
   GOTO 31 WHILE (B1+1.NE.5)      *LOOP FOR FIVE SYNCS
* 
*         OUTPUT ONE AND WRITE ANOTHER CHARACTER. 
* 
   OUTPUT 4001,ABT 70             *OUTPUT CHAR
* 
*         WRITE EXPECTING CHARACTER REJECT. 
* 
   WRITE 4001,ABT 70        *WRITE CHAR 
   READ TO IB(0) FROM PORT P0,ABT 70   *RD OUTPUT,EXP=CR
   READ TO IB(1) FROM PORT P0,ABT 70   *RD OUTPUT,EXP NO CR 
* 
*         WAIT ONE AND TRY AGAIN THIS TIME NOT EXPECTING REJECT.
* 
   WAIT CHAR                *WAIT CHAR
   WAIT HALF                *WAIT HALF
   WRITE 4005,ABT 70        *WRITE CHAR 
   READ TO IB(2) 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 
   IF (IB(2).AND.400.NE.0) ERROR 5/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
/         EXIT MODULE 
40 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 41 
   MSG 7 TO DAYFILE 
41 EXIT 
* 
*         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 (B2,IB(0)) 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 6 (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 TFE07,667X(62,63),LOCK
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW - TEST LOST DATA. 
* 
*             RUNS BOTH SYNCHRONOUS (201 MODE) AND
*             ASYNCHRONOUS (103 MODE).
* 
*  DESCRIPTION - TEST LOST DATA.
* 
*    1. OUTPUT THREE CHARACTERS.
*    2. WRITE 4 CHARACTERS. 
*    3. READ TO CLEAR COUPLER.
*    4. STATUS EXPECTING SERVICE FAILURE BIT SET. 
*    5. READ EXPECTING LOST DATA. 
*    6. STATUS EXPECTING SERVICE FAILURE BIT CLEAR. 
*    7. READ EXPECTING NO LOST DATA.
*    8. CHECK RESULTS.
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS. 
*    2. LOST DATA BIT FAILURE.
*    3. MUX SERVICE FAILURE STAUS BIT FAILURE.
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES
*    2. EC=0070,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
*    3. EC=0071,LOST DATA STATUS NOT SET AFTER FORCING
*    4. EC=0072,MUX SERV FAILURE STAT NOT SET AFTER FORCING*
*    5. EC=0073,LOST DATA STATUS DIDNT CLEAR AFTER READ 
*    6. EC=0074,MUX SERV FAILURE DIDNT CLEAR AFTER READ 
* 
*  REPEAT CONDITION LOOP -
* 
*    1. 1-8 IN DESCRIPTION. 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TFE07 - 2550 EMULATOR LOST DATA TEST
 2 FORMAT EC=0070,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
 3 FORMAT EC=0071,LOST DATA STATUS NOT SET AFTER FORCING
 4 FORMAT EC=0072,MUX SERV FAILURE STAT CLEAR AFTER FORCING 
 5 FORMAT EC=0073,LOST DATA STATUS DIDNT CLEAR AFTER READ 
 6 FORMAT EC=0074,MUX SERV FAILURE DIDNT CLEAR AFTER READ 
 7 FORMAT LC = *DEC, ERCNT = *DEC 
10 FORMAT TFE07 - ERROR(S) IN MODULE
/ 
/  DTR = DATA TERMINAL READY, DSR = DATA SET READY, 
/  CO = CARRIER ON, VCS = VALID CHARACTER STATUS, 
/  LD = LOST DATA, EOM = END OF MESSAGE CHARACTER,
/  CR = CHARACTER REJECT
/ 
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
* 
*         RESERVE CHANNEL,ENABLE DTR, AND CLEAR MUX.
* 
/         RESERVE CHANNEL,ENABLE DTR,CLEAR MUX AND WAIT 
/         FOR CARRIER ON. 
21 B1=0 
   RES                          *RESERVE CHANNEL
   WRITE 6400,ABT 70            *CLEAR ANY OUTPUT 
   WRITE 6400 TO PORT P1,ABT 70 
   DELAY 500 MSEC 
   WRITE 7000,ABT 70            *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   DELAY 100 MSEC 
   READ TO IB(0),ABT 70         *CLEAR INPUT
22 B2=P1                        *WAIT FOR CO
   READ TO IB(0),ABT 70 
   IF (IB(0).AND.1000.EQ.0) GOTO 23 
   B2=P0
   READ TO IB(0) FROM PORT P0,ABT 70
   IF (IB(0).AND.1000.NE.0) GOTO 30 
23 DELAY 1 MSEC 
   GOTO 22 WHILE (B1+1.LT.500D) 
   ERROR 2/0,GOTO 70
* 
* 
* 
30 B1=0 
   IF (P2.LT.2400) GOTO 32
   IF(P2 .AND. 2 .NE. 0)GOTO 32   *IF 103 MODE, SKIP RESYNC 
* 
*         OUTPUT 5 SYNC CODES AND CHECK RESYNCED (201 MODE) 
* 
/         DO I/O
31 OUTPUT P4,ABT 70               *OUTPUT SYNC CODE 
   GOTO 31 WHILE (B1+1.NE.5)      *LOOP FOR FIVE SYNCS
* 
*         OUTPUT 2 CHARACTERS.
* 
32 OUTPUT 4001,ABT 70       *OUTPUT CHAR
   OUTPUT 4002,ABT 70       *OUTPUT CHAR
   OUTPUT 4004,ABT 70       *OUTPUT CHAR
* 
*         WRITE THIRD CHARACTER.
* 
   IF(P2.GE.6000) GOTO 33 
   WAIT CHAR                *WAIT CHAR
   WAIT HALF                *WAIT HALF
   WRITE 4005,ABT 70        *WRITE CHAR 
* 
*         WRITE FOURTH CHARACTER. 
* 
   WAIT CHAR                *WAIT CHAR
   WRITE 4006,ABT 70        *WRITE CHAR 
   WAIT CHAR
   WRITE 4007,ABT 70        *WRITE CHAR 
   WAIT CHAR
   WRITE 4010,ABT 70        *WRITE CHAR 
   GOTO 34
* 
*         WRITE THIRD CHARACTER.
* 
33 WAIT HALF                *WAIT HALF
   WRITE 4005,ABT 70        *WRITE CHAR 
* 
*         WRITE FOURTH CHARACTER. 
* 
   WAIT HALF                *WAIT CHAR
   WRITE 4006,ABT 70        *WRITE CHAR 
   WAIT HALF
   WRITE 4007,ABT 70        *WRITE CHAR 
   WAIT HALF
   WRITE 4010,ABT 70        *WRITE CHAR 
   WAIT HALF
* 
*         GET MUX STATUS AND PORT STATUS (LD AND SERVICE FAILURE SET) 
* 
34 STATUS TO IB(0),ABT 70   *TAKE STATUS,EXP=SERV FAIL
   READ TO IB(1),ABT 70     *READ TO CLEAR COUPLER
   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 NO SERV FAIL 
   READ TO IB(3),ABT 70     *READ INPUT BUFFER,EXP NO LD
* 
*         TEST RESULTS. 
* 
/         TEST RESULTS
   IF (IB(1).AND.3000.NE.3000) ERROR 3/0,GOSUB 71 
   IF (IB(0).AND.1.EQ.0) ERROR 4/0,GOSUB 71 
   IF (IB(3).AND.3000.EQ.3000) ERROR 5/0,GOSUB 71 
   IF (IB(2).AND.1.NE.0) ERROR 6/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
/         EXIT MODULE 
40 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 41 
   MSG 10 TO DAYFILE
41 EXIT 
* 
*         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 (B2,IB(0)) 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 TFE08,667X(62,63),LOCK
*** EXTERNAL DOCUMENTATION
**
* 
*  OVERVIEW -  TEST INPUT REQUIRED STATUS.
* 
*              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
*              ASYNCHRONOUS (103 MODE). 
* 
*  DESCRIPTION - TEST INPUT REQUIRED STATUS.
* 
*    1. OUTPUT 4 CHARACTERS.
*    2. READ TO CLEAR VCS AND INPUT REQUIRED. 
*    3. WAIT CHARACTER TIME.
*    4. STATUS EXPECTING INPUT REQUIRED STATUS. 
*    5. READ TO CLEAR INPUT REQUIRED. 
*    6. STATUS EXPECTING INPUT REQUIRED STATUS. 
* 
*  ERRORS DETECTED -
* 
*    1. ALL PRODUCT OVERLAY ERRORS. 
*    2. MUX INPUT REQUIRED STATUS FAILURE 
* 
*  ERROR MESSAGES ISSUED -
* 
*    1. ALL PRODUCT OVERLAY MESSAGES. 
*    2. EC=0080,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
*    3. EC=0081,MUX INPUT REQUIRED STATUS NOT SET 
*    4. EC=0082,MUX INPUT REQUIRED STAT DIDNT CLR AFTER RD
* 
*  REPEAT CONDITION LOOP -
* 
*    1. 1 - 6 IN DESCRIPTION. 
* 
*** INTERNAL DOCUMENTATION
 1 FORMAT TFE08 - 2550 EMULATOR MUX INPUT REQUIRED TEST 
 2 FORMAT EC=0080,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
 3 FORMAT EC=0081,MUX INPUT REQUIRED STATUS NOT SET 
 4 FORMAT EC=0082,MUX INPUT REQUIRED STAT DIDNT CLR AFTER RD
 5 FORMAT LC = *DEC, ERCNT = *DEC 
 6 FORMAT TFE08 - ERROR(S) IN MODULE
/ 
/  DTR = DATA TERMINAL READY, CO = CARRIER ON 
/  VCS = VALID CHARACTER STATUS 
/ 
* 
*         POST RUN MESSAGE. 
* 
20 MSG 1 TO DISPLAY,PRINT   *POST SECTION MESSAGE 
   WC=0 
/        DO I/O 
* 
*         RESERVE CHANNEL,ENABLE DTR, AND CLEAR MUX.
* 
/         RESERVE CHANNEL,ENABLE DTR,CLEAR MUX AND WAIT 
/         FOR CARRIER ON. 
21 B1=0 
   RES                          *RESERVE CHANNEL
   WRITE 6400,ABT 70            *CLEAR ANY OUTPUT 
   WRITE 6400 TO PORT P1,ABT 70 
   DELAY 500 MSEC 
   WRITE 7000,ABT 70            *BRING UP DTR 
   WRITE 7000 TO PORT P1,ABT 70 
   DELAY 100 MSEC 
   READ TO IB(0),ABT 70         *CLEAR INPUT
22 B2=P1                        *WAIT FOR CO
   READ TO IB(0),ABT 70 
   IF (IB(0).AND.1000.EQ.0) GOTO 23 
   B2=P0
   READ TO IB(0) FROM PORT P0,ABT 70
   IF (IB(0).AND.1000.NE.0) GOTO 30 
23 DELAY 1 MSEC 
   GOTO 22 WHILE (B1+1.LT.500D) 
   ERROR 2/0,GOTO 70
* 
* 
* 
30 B1=0 
   IF (P2.LT.2400) GOTO 32
   IF(P2 .AND. 2 .NE. 0)GOTO 32   *IF 103 MODE, SKIP RESYNC 
* 
*         OUTPUT 5 SYNC CODES AND CHECK RESYNCED(201 MODE)
* 
/         DO I/O
31 OUTPUT P4,ABT 70               *OUTPUT SYNC CODE 
   WAIT HALF                      *WAIT HALF CHARACTER
   GOTO 31 WHILE (B1+1.NE.5)      *LOOP FOR FIVE SYNCS
* 
*         OUTPUT 3 CHARACTERS AND READ MUX TO CLEAR VALID CHARACTER 
*         STATUS. 
* 
32 OUTPUT 4001,ABT 70       *OUTPUT CHAR
   OUTPUT 4005,ABT 70       *OUTPUT CHAR
   OUTPUT 4007,ABT 70       *OUTPUT CHAR
   OUTPUT 4011,ABT 70       *OUTPUT CHAR
   READ TO IB(0),ABT 70     *READ TO CLR VCS AND INPUT REQD.
   IF(P2 .AND. 2 .NE. 0)GOTO 33   *IF ASYNC 
   IF(P2 .GE. 6000)GOTO 34        *IF 9600 BAUD SYNC
33 WAIT HALF
34 WAIT HALF
* 
*         TAKE STATUS ONCE EXPECTING INPUT REQUIRED, READ, THEN TAKE
*         STATUS AGAIN EXPECTING INPUT REQUIRED TO BE DOWN. 
* 
   STATUS TO IB(0),ABT 70   *GET STATUS,EXP=INPUT REQUIRED
   READ TO IB(1),ABT 70     *READ TO CLEAR INPUT REQUIRED 
   STATUS TO IB(1),ABT 70   *GET STATUS,EXP= NO INPUT REQD
* 
*         TEST RESULTS. 
* 
/        TEST RESULTS 
   IF (IB(0).AND.2.EQ.0) ERROR 3/0,GOSUB 71 
   IF (IB(1).AND.2.NE.0) ERROR 4/0,GOSUB 71 
* 
*         HANDLE REPEAT AND END OF MODULE.
* 
/         EXIT MODULE 
40 GOSUB 74 
   IF (ES.AND.CM.NE.0) GOTO 21
   IF (WC.EQ.0) GOTO 41 
   MSG 6 TO DAYFILE 
41 GOTO 77
* 
*         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 (B2,IB(0)) 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
77 END 20 
COMPILE 
   MODULE TFE98A,667X(62,63)LOCK                                         TFE001G
01 FORMAT TFE04 - 2550 EMULATOR RESYNC (7000) TEST                       TFE001G
10 MSG 1 TO DISPLAY                                                      TFE001G
   IF(B0.EQ.0)EXIT              *IF NOT ERRORS POSTED                    TFE001G
   PICTURE                      *TAKE PICTURE                            TFE001G
   HALT                         *HALT IF STOP ON ERROR SET               TFE001G
   BLANK                        *CLEAR SCREEN                            TFE001G
   B0 = 0                       *RESET LINE POINTER                      TFE001G
   MSG 1 TO DISPLAY             *REPOST RUN MESSAGE                      TFE001G
   EXIT                         *RETURN TO CALLER                        TFE001G
   END 10                                                                TFE001G
COMPILE                                                                  TFE001G
   MODULE TFE99,667X(62,63),LOCK
/ 
/ TFE - A 2550 EMULATOR DIAGNOSTIC. 
/ 
/ OVERVIEW - TFE  IS  A  DIAGNOSTIC FOR THE 2550 EMULATOR IN
/            EITHER SYNCHRONOUS (201) MODE (6671 MODE  ONLY)
/            OR  ASYNCHRONOUS (103) MODE (6671 OR 6676 MODE)
/            USING TWO PORTS LOOPED BACK TO BACK. 
/ 
/ CALL - RUN TFE  OR RUN TFE(00,01,02)
/ 
/ CONTROLWARE LEVEL - RELEASE 3 (E03) 
/ 
/                 ***** CAUTION ***** 
/ TFE WILL NOT RUN IF THE PORT IS SELECTED FOR SWITCHED  AND
/ 134.5  BAUD  AS  THIS SELECTS AUTO-BAUD IN THE CONTROLWARE
/ (SEE 2550-100 CONTROLWARE REFERENCE MANUAL).
/ 
/ AFTER  THE TEST CABLE IS CONNECTED FROM THE OUTPUT PORT TO
/ THE INPUT PORT TO BE TESTED AND THE EQUIPMENT ASSIGNED THE
/ FOLLOWING PARAMETERS NEED TO BE SET.
/ 
/                     - PARAMETERS -
/ THE ASSIGNMENT OF THE PORTS ARE 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
/ THE  P1  REGISTER DEFINES THE INPUT PORT WITH LINE 1 (LINE
/ NUMBERS ARE DECIMAL) AT THE 2550 EQUAL TO PORT 0. 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) 
/       2400 =  2400 BAUD SYNC.  (201 MODE)  SIMULATOR
/       2402 =  2400 BAUD ASYNC. (103 MODE) 
/       4000 =  4800 BAUD SYNC.  (201 MODE)  SIMULATOR
/       4002 =  4800 BAUD ASYNC. (103 MODE) 
/       6000 =  9600 BAUD SYNC.  (201 MODE)  SIMULATOR
/       6002 =  9600 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 = N/A
/      BIT 7 = *** FOR 6671 USE ONLY ***
/      BIT 8 = FULL WORD COUNT I/O. (NORMALLY 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.  OTHER-
/ WISE, THE VALUE SUPPLIED IN THE LOWER 8 BITS WILL BE USED.
/ 
/ P5  SET TO NON-ZERO WILL CAUSE THE LOOP FOR REPEAT CONDIT-
/ ION IN MODULES 01 (MEMORY TEST) AND 02 (MEMORY  ADDRESSING
/ TEST)  TO  BE  LIMITED TO READ AND TEST RATHER THEN WRITE,
/ READ, AND TEST. 
/ 
/          BAUD VERSES BIT LENGTH, PARITY, AND STOP BITS
/          ---------------------------------------------
/ 
/    SYNC -    ALL    , 8 BITS , IGNORE PARITY
/ 
/   ASYNC -  110 BAUD , 8 BITS , IGNORE PARITY , 2 STOP BITS
/            134 BAUD , 7 BITS , IGNORE PARITY , 1 STOP BIT 
/            150 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT 
/            300 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT 
/            600 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT 
/           1200 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT 
/           2400 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT 
/           4800 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT 
/           9600 BAUD , 8 BITS , IGNORE PARITY , 1 STOP BIT 
/ 
/                  MODULE TFE00,6000(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW -  TESTS ALL 2550 EMULATOR 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. 
/ 
10 PAUSE
   EXIT TO 990
   END 10 
COMPILE,SOURCE
   MODULE TFE990,667X(62,63),LOCK 
/ 
/                  MODULE TFE01,667X(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW -  TEST MEMORY. 
/ 
/              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
/              ASYNCHRONOUS (103 MODE). 
/ 
/  DESCRIPTION - TEST MEMORY. 
/ 
/    1. MAINTENANCE WRITE ALL WORDS.
/    2. MAINTENANCE READ ALL WORDS. 
/    3. CHECK DATA. 
/    4. REPEAT TO 1 FOR ALL PATTERNS. 
/    5. REPEAT TO 1 FOR FLOATING ONES AND ZEROS.
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS
/    2. MEMORY DATA ERRORS. 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0010,MEM A=*OCT E=*OCT LOC=*OCT=OTBF WD/PT *OCT
/    3. EC=0011,MEM A=*OCT E=*OCT LOC=*OCT=INBF WD/PT *OCT
/ 
/ 
/  REPEAT CONDITION LOOP -
/ 
/    1. 1-3 IN DESCRIPTION FOR P5=0.
/    2. 2-3 IN DESCRIPTION FOR P5 NON ZERO. 
/ 
/ 
/                  MODULE TFE02,667X(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW -  TEST MEMORY ADDRESSING.
/ 
/              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
/              ASYNCHRONOUS (103 MODE). 
/ 
/  DESCRIPTION - TEST MEMORY ADDRESSING.
/ 
/    1. MAINTENANCE WRITE ALL WORDS WITH ITS ADDRESS. 
/    2. MAINTENANCE READ ALL WORDS. 
/    3. CHECK DATA. 
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS. 
/    2. MEMORY DATA ERRORS
/    4. MEMORY ADDRESSING ERROR.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. EC=0020,MAD A=*OCT E=*OCT LOC=*OCT=OTBF WD/PT *OCT
/    3. EC=0021,MAD A=*OCT E=*OCT LOC=*OCT=INBF WD/PT *OCT
/ 
/  REPEAT CONDITION LOOP -
/ 
/    1. 1-3 IN DESCRIPTION FOR P5=0.
/    2. 2-3 IN DESCRIPTION FOR P5 NON ZERO. 
/ 
/ 
/                  MODULE TFE03,667X(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW -  TEST 6XXX AND 7XXX CONTROL CODES.
/ 
/              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
/              ASYNCHRONOUS (103 MODE). 
/ 
/  DESCRIPTION - TEST 6XXX AND 7XXX CONTROL CODES.
/ 
/    1. OUTPUT 6000 TO DROP DTR.
/    2. WAIT FOR UP TO 500 MS FOR DSR/CO TO DROP. 
/    3. IF 6676 MODE, GOTO 6. 
/    4. WAIT FOR UP TO 500 MS TO INSURE DSR/CO STAYS DOWN.
/    5. OUTPUT 7000 TO BRING DTR UP.
/    6. WAIT FOR UP TO 500 MS FOR DSR/CO TO COME UP.
/    7. CHECK RESULTS.
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS
/    2. DTR/DSR/CO CONTROL MALFUNCTIONS 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0030,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
/    3. EC=0031,DSR/CO NOT DOWN BY 500 MS AFTER 6000 SENT 
/    4. EC=0032,DSR/CO DIDNT STAY DOWN AFTER 6000 SENT
/    5. EC=0033,DSR/CO NOT UP BY 500 MS,6000/7000 SENT
/ 
/  REPEAT CONDITION LOOP -
/ 
/    1. 1 - 7 IN DESCRIPTION. 
/ 
10 PAUSE
   EXIT TO 991
   END 10 
COMPILE,SOURCE
   MODULE TFE991,667X(62,63),LOCK 
/ 
/                  MODULE TFE04,667X(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW -  TEST 7XXX CONTROL. 
/ 
/              RUNS SYNCHRONOUS (201 MODE,6671 MODE) ONLY.
/ 
/  DESCRIPTION - TEST 7XXX CONTROL CODE.
/ 
/    1. DO A NORMAL OUTPUT/INPUT SEQUENCE.
/    2. OUTPUT 7000 TO CLEAR RECIEVER SYNC. 
/    3. OUTPUT TWO CHARACTERS BEFORE SYNC CODE AND CHECK
/       THAT THEY DONT APPEAR ON THE RECEIVE PORT.
/    4. CHECK RESULTS.
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS. 
/    2. DATA ERRORS 
/    3. DATA TRANSFER WITHOUT RESYNC
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0040,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
/    3. EC=0041, DATA ERROR, E=*OCT, A=*OCT 
/    4. EC=0042, MPC ERROR, E=*OCT, A=*OCT
/    5. EC=0043, *OCT RECEIVED BEFORE RECEIVER RESYNCED 
/ 
/  REPEAT CONDITION LOOP -
/ 
/    1. 1 - 4 IN DESCRIPTION. 
/ 
/ 
/                  MODULE TFE05,667X(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW -  TEST DATA TRANSFER.
/ 
/              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
/              ASYNCHRONOUS (103 MODE). 
/ 
/  DESCRIPTION - TEST DATA TRANSFER.
/ 
/    1. GENERATE ALL CHARACTERS IN OUTPUT BUFFER (EXCEPT
/       FOR SYNC AND EOM IN SYCHRONOUS MODE)
/    2. OUTPUT TWO CHARACTERS.
/    3. OUTPUT CHARACTER. 
/    4. INPUT CHARACTER.
/    5. LOOP TO 3 FOR ALL OUTPUT CHARACTERS.
/    6. INPUT LAST TWO CHARACTERS.
/    7. CHECK DATA. 
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS. 
/    2. DATA ERRORS 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0050,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
/    3. EC=0051, DATA ERROR, E=*OCT, A=*OCT 
/ 
/  REPEAT CONDITION LOOP -
/ 
/    1. 2 - 7 IN DESCRIPTION. 
/ 
/ 
/                  MODULE TFE06,667X(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW -  TEST CHARACTER REJECT. 
/ 
/              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
/              ASYNCHRONOUS (103 MODE). 
/ 
/  DESCRIPTION - TEST CHARACTER REJECT. 
/ 
/    1. OUTPUT 5 SYNCS AND A DATA CHARACTER.
/    2. WRITE ONE CHARACTER.
/    3. READ OUTPUT PORT EXPECTING CHARACTER REJECT.
/    4. READ OUTPUT PORT EXPECTING NO CHARACTER REJECT. 
/    5. WAIT CHARACTER TIME.
/    6. WRITE CHARACTER.
/    7. READ OUTPUT PORT EXPECTING NO CHARACTER REJECT. 
/    8. CHECK RESULTS.
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS. 
/    2. CHARACTER EJECT NOT SETTING.
/    3. CHARACTER NOT CLEARING AFTER A READ.
/    4. CHARACTER REJECT CONSTANTLY SET.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0060,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
/    3. EC=0061,CHARACTER REJECT NOT SET AFTER FORCING
/    4. EC=0062,CHARACTER REJECT NOT CLEAR AFTER READ 
/    5. EC=0063,CHARACTER REJECT ON WRITE AFTER WAIT CHAR 
/ 
/  REPEAT CONDITION LOOP -
/ 
/    1. 1 - 8 IN DESCRIPTION. 
/ 
10 PAUSE
   EXIT TO 992
   END 10 
COMPILE,SOURCE
   MODULE TFE992,667X(62,63),LOCK 
/ 
/                  MODULE TFE07,667X(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW - TEST LOST DATA. 
/ 
/             RUNS BOTH SYNCHRONOUS (201 MODE) AND
/             ASYNCHRONOUS (103 MODE).
/ 
/  DESCRIPTION - TEST LOST DATA.
/ 
/    1. OUTPUT THREE CHARACTERS.
/    2. WRITE 4 CHARACTERS. 
/    3. READ TO CLEAR COUPLER.
/    4. STATUS EXPECTING SERVICE FAILURE BIT SET. 
/    5. READ EXPECTING LOST DATA. 
/    6. STATUS EXPECTING SERVICE FAILURE BIT CLEAR. 
/    7. READ EXPECTING NO LOST DATA.
/    8. CHECK RESULTS.
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS. 
/    2. LOST DATA BIT FAILURE.
/    3. MUX SERVICE FAILURE STAUS BIT FAILURE.
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES
/    2. EC=0070,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
/    3. EC=0071,LOST DATA STATUS NOT SET AFTER FORCING
/    4. EC=0072,MUX SERV FAILURE STAT NOT SET AFTER FORCING 
/    5. EC=0073,LOST DATA STATUS DIDNT CLEAR AFTER READ 
/    6. EC=0074,MUX SERV FAILURE DIDNT CLEAR AFTER READ 
/ 
/  REPEAT CONDITION LOOP -
/ 
/    1. 1-8 IN DESCRIPTION. 
/ 
/                  MODULE TFE08,667X(62,63) 
/                  ------------------------ 
/ 
/  OVERVIEW -  TEST INPUT REQUIRED STATUS.
/ 
/              RUNS BOTH SYNCHRONOUS (201 MODE) AND 
/              ASYNCHRONOUS (103 MODE). 
/ 
/  DESCRIPTION - TEST INPUT REQUIRED STATUS.
/ 
/    1. OUTPUT 4 CHARACTERS.
/    2. READ TO CLEAR VCS AND INPUT REQUIRED. 
/    3. WAIT CHARACTER TIME.
/    4. STATUS EXPECTING INPUT REQUIRED STATUS. 
/    5. READ TO CLEAR INPUT REQUIRED. 
/    6. STATUS EXPECTING INPUT REQUIRED STATUS. 
/ 
/  ERRORS DETECTED -
/ 
/    1. ALL PRODUCT OVERLAY ERRORS. 
/    2. MUX INPUT REQUIRED STATUS FAILURE 
/ 
/  ERROR MESSAGES ISSUED -
/ 
/    1. ALL PRODUCT OVERLAY MESSAGES. 
/    2. EC=0080,CO WILL NOT COME UP, PORT=*OCT, STAT=*OCT 
/    3. EC=0081,MUX INPUT REQUIRED STATUS NOT SET 
/    4. EC=0082,MUX INPUT REQUIRED STAT DIDNT CLR AFTER RD
/ 
/  REPEAT CONDITION LOOP -
/ 
/    1. 1 - 6 IN DESCRIPTION. 
/ 
/          ***** END OF TFE EXTERNAL DOCUMENTATION *****
/ 
10 PAUSE
   END 10 
COMPILE,SOURCE
*** ULD - A UP-LINE DUMP PROGRAM FOR THE 2550-100 EMULATOR
*** EXTERNAL DOCUMENTATION
**
* 
* AUTHOR - P. V. EVANS
*          MAINTENANCE SOFTWARE ENGINNERING 
* 
* OVERVIEW - THE UPLINE DUMP UTILITY PROVIDES A METHOD TO DUMP  THE 
*         MACRO- MEMORY  AND  THE  MICRO-REGISTER  FILE  OF THE 2550-100
*         ON THE CYBER PRINTER. THE MICRO-MEMORY IS NOT DUMPED  BECAUSE 
*         IT IS NOT  CHANGED  DURING  EXECUTION. THE OUTPUT CONSISTS OF 
*         MEMORY IMAGE IN HEX  FORMAT  WITH  THE  HEX  CHARACTER
*         CONVERTED TO DISPLAY CHARACTERS ON THE RIGHT OF THE PAGE. 
* 
*         THE  DUMP  UTILITY  IS PROVIDED IN TWO SEPERATE PARTS, ONE FOR
*         THE CYBER AND THE OTHER FOR THE 2550-100. THE 2550-100 PART OF
*         THE  DUMP  UTILITY  IS  BUILT INTO THE STANDARD 667X EMULATION
*         CONTROLWARE AND THEREFORE THERE IS NO NEED TO  LOAD  THE  DUMP
*         PROGRAM.   THE  CYBER  PART CONSISTS OF A MALET PROGRAM CALLED
*         ULD00.
* 
*         THE  DUMP  OPERATION  IS  PERFORMED  ONE  CHARACTER  PER CYCLE
*         THROUGH PORT 0 OF COUPLER 1, EQ 1. THE  CYBER  PPU  TAKES  ONE
*         CHARACTER  PER  CYCLE  OFF THE CHANNEL THROUGH PORT 0 POSITION
*         AND BUILDS A PRINT FILE.
* 
*         OPERATING INSTRUCTIONS -
* 
*          A. CYBER DUMP OPERATION -
* 
*            1. DROP TELEX, EXPORT, OR INTERCOM TO RELEASE CHANNEL FOR
* 
*               THE DUMP UTILITY. 
* 
*            2. RUN A MALET JOB TO EXECUTE ULD00 AFTER ASSIGNING THE EST
*               ORDINAL OF THE 2550-100, WHICH CORRESPONDS TO  THE  2550
*               CONFIGURATION DEFINITION OF COUPLER 1 EQ 1. 
* 
*            3. IF THE DUMP HAS NOT YET BEEN INITIATED FROM THE 
*               2550-100, THE FOLLOWING MESSAGE APPEARS ON THE B DISPLAY
* 
*               *2550-100 DUMP NOT ENABLED.*
* 
*            4. IF THE ABOVE MESSAGE APPEARS, THE FOLLOWING SHOULD BE 
*               PERFORMED - 
* 
*          B. 2550-100 DUMP OPERATION - 
* 
*            1. FIRST INITIATE THE CYBER PART OF THE DUMP.
* 
*            2. MASTER CLEAR THE 2550 ON THE LOCAL PANEL. 
* 
*            3. AT THE 2550 CRT OR TTY CONSOLE DO THE FOLLOWING-
* 
*             ***** NOTE USE ALL UPPER CASE ALPHA CHARACTERS ********** 
*             *                                                       * 
*             *  A. PRESS THE ESCAPE KEY                              * 
* 
*                B. TYPE J11(COLON)   (SET FCR) 
* 
*                C. TYPE K1A00(COLON) (SET P REG TO START OF DUMP PROG) 
* 
*             *  D. TYPE I(COLON)     (START DUMP PROGRAM)            * 
*             *                                                       * 
*             ***** NOTE USE ALL UPPER CASE ALPHA CHARACTERS ********** 
* 
* 
*          C. MESSAGES
* 
*            1. 2550-100 STATUS = 0000. 
*            2. 2550-100 DUMP NOT ENABLED.
*            3. 2550-100 DUMPING. 
*            4. 2550-100 DUMP COMPLETE. 
* 
   MODULE ULD00,6000(62,63),LOCK
*** INTERNAL DOCUMENTATION
/ 
/  EOJ = END OF JOB FLAG, EOL = END OF LINE FLAG, 
/  HDR = HEADER FLAG, MOD 5 = MODULUS 5 COUNTER 
/ 
/  2550-100 DUMP PROGRAM
/  B1=CHARACTER, B2= UPPER/LOWER CHARACTER, 
/  B3=MOD 5, B4=OUTPUT POINTER, B7=EOJ FLAG 
/ 
 1 FORMAT 2550-100 STATUS = 0000. 
 2 FORMAT 2550-100 DUMP NOT ENABLED.
 3 FORMAT 2550-100 DUMPING. 
 4 FORMAT 2550-100 DUMP COMPLETE. 
* 
*         EQUATE END-OF-LINE, END-OF-JOB, AND 
*         HEADER WORD.
* 
   EQUATE EOL TO 6000 
   EQUATE EOJ TO 5000 
   EQUATE HDR TO 4077 
* 
*         ASCII TO DISPLAY CODE COVERSION TABLE.
* 
   DATA (OB(000),CON) 55,55,55,55,55,55,55,55 
   DATA (OB(010),CON) 55,55,55,55,55,55,55,55 
   DATA (OB(020),CON) 55,55,55,55,55,55,55,55 
   DATA (OB(030),CON) 55,55,55,55,55,55,55,55 
   DATA (OB(040),CON) 55,55,55,55,55,55,55,55 
   DATA (OB(050),CON) 51,52,47,45,56,46,57,50 
   DATA (OB(060),CON) 33,34,35,36,37,40,41,42 
   DATA (OB(070),CON) 43,44,55,55,55,55,55,55 
   DATA (OB(100),CON) 55,01,02,03,04,05,06,07 
   DATA (OB(110),CON) 10,11,12,13,14,15,16,17 
   DATA (OB(120),CON) 20,21,22,23,24,25,26,27 
   DATA (OB(130),CON) 30,31,32,55,55,55,55,55 
   DATA (OB(140),CON) 55,55,55,55,55,55,55,55 
   DATA (OB(150),CON) 55,55,55,55,55,55,55,55 
   DATA (OB(160),CON) 55,55,55,55,55,55,55,55 
   DATA (OB(170),CON) 55,55,55,55,55,55,55,55 
* 
*         MOVE CONVERSION TABLE, RESERVE CHANNEL, AND 
*         CHECK FOR NORMAL STATUS.
/ 
20 COPY OB(0) TO IB(100) FOR 200  *MOVE DATA TO INPUT BUFFER
   RES
   FUNC 2,ABT 70                  *GET STATUS 
   IN 1 WORDS TO IB(0),ABT 70 
   IF (IB(0).EQ.0) ERROR 1/0,GOTO 70  *IF 0 
   MSG 2 TO DISPLAY               *POST MESSAGE 
* 
*         WAIT FOR 2 HEADER WORDS.
* 
21 RES
   FUNC 3,ABT 70                *SELECT INPUT 
   IN 1 WORDS TO IB(0),ABT 70 
   IF(IB(0).NE.HDR) GOTO 21     *LOOP IF NOT HEADER 
   GOTO 21 WHILE (B7+1.LT.2)    *LOOP FOR TWO HEADER BYTES
   B7=0                         *CLEAR END-OF-JOB FLAG
   MSG 3 TO DISPLAY,PRINT 
* 
*         LOOP WAIT FOR VALID CHARACTER STATUS. 
* 
22 RES
   FUNC 3,ABT 70                  *SELECT INPUT 
   IN 1 WORDS TO IB(0),ABT 70 
   B1=IB(0) 
   IF (B1.AND.4000.EQ.0) GOTO 22  *IF NOT VALID CHARACTER 
* 
*         IF END-OF-JOB SET FLAG. 
* 
   IF (B1.NE.EOJ) GOTO 23         *IF NOT END-OF-JOB
   B7=1                           *SET END-OF-JOB FLAG
   GOTO 30                        *END-OF-JOB 
* 
*         TEST FOR END-OF-LINE. 
* 
/ 
23 IF (B1.EQ.EOL) GOTO 30         *END-OF-LINE
* 
*         CONVERT TO DISPLAY CODE.
* 
/ 
24 B1=B1 AND 177               *MASK OUT CHARACTER
   B1=IB(B1+100)               *GET EQUIVALENT DISPLAY CODE 
   IF (B1.EQ.0) GOTO 22        *IF ILLEGAL CHARACTER
* 
*         TEST FOR LOWER CHARACTER. 
* 
/ 
   IF (B2.AND.1.NE.0) GOTO 25  *LOWER CHARACTER 
* 
*         PROCESS UPPER CHARACTER.
* 
/ 
   OB(B4)=B1.LS.6              *PUT IN UPPER PART OF WORD 
   B2=B2+1                     *TOGGLE UPPER/LOWER FLAG 
   GOTO 22                     *LOOP
* 
*         PROCESS LOWER CHARACTER.
* 
/ 
25 OB(B4)=OB(B4)+B1            *PUT IN LOWER PART OF WORD 
   B2=B2+1                     *TOGGLE UPPER/LOWER FLAG 
   GOTO 26 WHILE (B3+1.LT.5)   *BUMP MOD 5
   B3=0                        *CLEAR ON MOD 5
* 
*         TEST FOR BUFFER FULL, IF SO WRITE TO DISK.
* 
/ 
26 GOTO 22 WHILE (B4+1.LT.500)    *LOOP IF BUFFER NOT FULL
   SYSWR                          *WRITE TO DISK
   B4=0                           *CLEAR OUTPUT POINTER 
   GOTO 22                        *LOOP FOR MORE
* 
*         END-OF-LINE OR JOB. 
*         IF UPPER CHARACTER SKIP FILL. 
/ 
30 IF (B2.AND.1.EQ.0) GOTO 31     *UPPER CHARACTER
* 
*         LOWER CHARACTER SO FILL OUT WORD. 
* 
/ 
   OB(B4)=OB(B4)+55               *PUT SPACE IN LOWER 
   GOTO 32
* 
*         FILL OUT LINE TO MOD 5 BYTES. 
* 
/ 
31 OB(B4)=0                       *PUT END OF LINE IN BUFFER
32 GOTO 33 WHILE (B4+1.LT.500)    *BUFFER NOT FULL
   SYSWR                          *WRITE TO DISK
   B4=0                           *CLEAR OUTPUT POINTER 
33 GOTO 31 WHILE (B3+1.LT.5)      *LOOP FOR MOD 5 
  
* 
*         CLEAR COUNTERS AND LOOP IF NOT END-OF-JOB.
* 
   B3=0                         *CLEAR ON MOD 5 
   B2=0                         *CLEAR UPPER/LOWER FLAG 
   IF (B7.EQ.0) GOTO 22         *IF END OF JOB
* 
*         SET UP COMPLETE MESSAGE AND FLUSH BUFFER. 
* 
   ERROR 4/0                    *SET END MESSAGE
   IF (B4.EQ.0) GOTO 35         *OUTPUT BUFFER EMPTY
34 OB(B4)=0                     *CLEAR REST OF OUTPUT BUFFER
   GOTO 34 WHILE (B4+1.LT.500)
   SYSWR                        *WRITE TO DISK
35 SYSREW                    *FLUSH BUFFER
* 
*         TERMINATE.
* 
/ 
70 MSG EM TO DISPLAY,PRINT      *POST MESSAGE 
   PICTURE
   END 20                       *END
COMPILE 
   MODULE ULD99,6000(62,63),LOCK
/ 
/ ULD - A UP-LINE DUMP PROGRAM FOR THE 2550-100 EMULATOR
/ 
/ OVERVIEW -  THE  UPLINE  DUMP UTILITY PROVIDES A METHOD TO
/         DUMP THE MACRO- MEMORY AND THE MICRO-REGISTER FILE
/         OF  THE  2550-100 ON THE CYBER PRINTER. THE MICRO-
/         MEMORY IS NOT DUMPED BECAUSE  IT  IS  NOT  CHANGED
/         DURING  EXECUTION.  THE  OUTPUT CONSISTS OF MEMORY
/         IMAGE IN HEX FORMAT WITH THE  HEX  CHARACTER  CON-
/         VERTED  TO  DISPLAY CHARACTERS ON THE RIGHT OF THE
/         PAGE. 
/ 
/         THE DUMP  UTILITY  IS  PROVIDED  IN  TWO  SEPERATE
/         PARTS,  ONE  FOR  THE  CYBER AND THE OTHER FOR THE
/         2550-100. THE 2550-100 PART OF THE DUMP UTILITY IS
/         BUILT INTO THE STANDARD 667X EMULATION CONTROLWARE
/         AND THEREFORE THERE IS NO NEED TO  LOAD  THE  DUMP
/         PROGRAM.  THE  CYBER  PART  CONSISTS  OF  A  MALET
/         PROGRAM CALLED ULD00. 
/ 
/         THE DUMP OPERATION IS PERFORMED ONE CHARACTER  PER
/         CYCLE THROUGH PORT 0 OF COUPLER 1, EQ 1. THE CYBER
/         PPU TAKES ONE CHARACTER PER CYCLE OFF THE  CHANNEL
/         THROUGH  PORT  0 POSITION AND BUILDS A PRINT FILE.
/ 
/ 
/         OPERATING INSTRUCTIONS -
/ 
/          A. CYBER DUMP OPERATION -
/ 
/            1. DROP TELEX, EXPORT, OR INTERCOM TO RELEASE
/               CHANNEL FOR THE DUMP UTILITY. 
/ 
/            2. RUN A  MALET  JOB  TO  EXECUTE  ULD00  AFTER
/               ASSIGNING  THE  EST ORDINAL OF THE 2550-100,
/               WHICH CORRESPONDS TO THE 2550  CONFIGURATION
/               DEFINITION OF COUPLER 1 EQ 1. 
/ 
/            3. IF THE DUMP HAS NOT YET BEEN INITIATED  FROM
/               THE  2550-100, THE FOLLOWING MESSAGE APPEARS
/               ON THE B DISPLAY
/ 
/               *2550-100 DUMP NOT ENABLED.*
/ 
/            4. IF  THE ABOVE MESSAGE APPEARS, THE FOLLOWING
/               SHOULD BE PERFORMED - 
/ 
/          B. 2550-100 DUMP OPERATION - 
/ 
/            1. FIRST INITIATE THE CYBER PART OF THE DUMP.
/ 
/            2. MASTER CLEAR THE 2550 ON THE LOCAL PANEL. 
/ 
/            3. AT THE 2550 CRT OR TTY CONSOLE DO THE 
/               FOLLOWING-
/ 
/             ** NOTE USE ALL UPPER CASE ALPHA CHARACTERS **
/             *                                            *
/             *  A. PRESS THE ESCAPE KEY                   *
/ 
/                B. TYPE J11(COLON)   (SET FCR) 
/ 
/                C. TYPE K1A00(COLON) (SET P REG TO START OF
/                                      DUMP PROG) 
/ 
/             *  D. TYPE I(COLON)     (START DUMP PROGRAM) *
/             *                                            *
/             ** NOTE USE ALL UPPER CASE ALPHA CHARACTERS **
/ 
/ 
/          C. MESSAGES
/ 
/            1. 2550-100 STATUS = 0000. 
/            2. 2550-100 DUMP NOT ENABLED.
/            3. 2550-100 DUMPING. 
/            4. 2550-100 DUMP COMPLETE. 
/ 
/***************** END OF ULD EXTERNAL DOCUMENTATION *******
10 PAUSE
   END 10 
COMPILE,SOURCE
