1TM 
          IDENT  1TM,FWA
          TITLE  1TM - RDF TWO-PORT MULTIPLEXER DRIVER. 
          PERIPH
          BASE   MIXED
          SST    SSCP 
*COMMENT  1TM - TWO-PORT MULTIPLEXER DRIVER.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 ITM      SPACE  4,10 
***       1TM - TWO-PORT MULTIPLEXER DRIVER.
* 
*         P. D. FARRELL      81/11/18.
 ITM      SPACE  4,10 
***       *1TM* PROVIDES THE PPU INTERFACE BETWEEN THE
*         REMOTE DIAGNOSTIC FACILITY, *RDF*, AND THE
*         CYBER 170-8X5 TWO-PORT MULTIPLEXER. 
* 
*         *1TM* COMMUNICATES WITH THE TWO-PORT MULTIPLEXER
*         AND WITH THE *RDF* CPU INTERFACE, EITHER *RDF*
*         OR *IAF*. 
 ITM      SPACE  4,10 
***       PROGRAM CALL -
* 
*T IR     18/*1TM*, 6/0, 12/RCC, 12/RTS, 12/CTL WD PTR
* 
*                RCC = RECALL CONTROL.
*                    = 0, IF NOT PP RECALL AND NOT *2TM* CALL.
*                    = 10/EQ, 1/S, 1/P, IF PP RECALL OR *2TM* CALL. 
*                      EQ = RESERVED EQUIPMENT NUMBER.
*                      S = 1, IF PORT CURRENTLY IS RESERVED FOR 
*                          *1TM*. 
*                      P = PORT NUMBER. 
* 
*                RTS = REAL-TIME CLOCK (SECONDS) AT START 
*                      OF DRIVER INACTIVITY TIME-OUT. 
*                    = 0 ON INITIAL CALL OR ON EXECUTIVE
*                      RECALL.
* 
*                CTL WD PTR = POINTER TO DRIVER CONTROL WORD
*                             IN CM EXECUTIVE TABLE *VDRL*. 
* 
* 
*         (DRIVER CONTROL WORD) = ON INITIAL DRIVER CALL -
* 
*T,              12/0, 24/ DRIVER NAME (*1TM*), 24/0
* 
*         (DRIVER CONTROL WORD) = ON DRIVER RECALL OR ON
*                                 EXECUTIVE RECALL -
* 
*T,              12/IL, 24/SA, 12/TC, 12/TN.
* 
*                            IL = DRIVER INTERLOCK. 
*                            SA = DRIVER STACK ADDRESS. 
*                            TC = DRIVER TERMINAL COUNT.
*                            TN = TERMINAL NUMBER OF DRIVER PORT. 
* 
*         AFTER INITIALIZATION, *1TM* WILL WAIT FOR FOUR SECONDS
*         FOR TERMINAL LOGIN.  IF THE TERMINAL DOES NOT ATTEMPT 
*         TO LOGIN WITHIN FOUR SECONDS, *1TM* WILL DROP FROM
*         THE PPU AND RETURN VIA PPU RECALL AFTER 5 SECONDS.
* 
*         IF THE USER HAS NOT ATTEMPTED TO LOGIN WITHIN 15
*         MINUTES, *1TM* WILL DROP FROM THE PPU WITHOUT RE- 
*         CALLING ITSELF UNLESS THE *DEDICATED RDF* FLAG IS 
*         SET.  IF THE *DEDICATED RDF* FLAG IS SET, *1TM* WILL
*         CONTINUE TO LOOK FOR LOGIN FOR 4 SECONDS AND DROP 
*         FOR 5 SECONDS.
* 
*         ONCE *1TM* HAS DROPPED FROM THE PPU AFTER 15 MINUTES
*         OF NO TERMINAL ACTIVITY, *1TM* MUST BE REACTIVATED
*         BY ENTERING THE *DSD* CONSOLE COMMAND TO REQUEST
*         THAT *RDF* RESTART *1TM* (EXECUTIVE RECALL).
          SPACE  4,15 
***       OPERATOR TERMINAL CONTROL.
* 
* 
*         EXCEPT FOR THE TOGGLE FUNCTION OF THE *F7* KEY OF A CDC 
*         721 TERMINAL (SEE ITEM 7 BELOW), *1TM* TERMINAL PROTOCOL
*         IS IDENTICAL TO IAF STIMULATOR PROTOCOL.  IN GENERAL, ALL 
*         INPUT AND OUTPUT IS PROCESSED ON A LINE-BY-LINE BASIS AND 
*         THE UNIT OF INPUT IS THE LOGICAL LINE.
* 
*         (1)    TO LOGIN, POWER UP THE TERMINAL IF HARDWIRED 
*                OR DIAL-IN IF DIAL UP LINE, THEN ENTER THE 
*                CHARACTER *B* IF BLOCK-EDIT TERMINAL OR *CR* 
*                IF NOT.  IF THE CENTRAL SITE DOES NOT REPLY
*                IMMEDIATELY WITH THE LOGIN MESSAGE, WAIT ONE 
*                OR TWO SECONDS AND TRY AGAIN.
* 
*         (2)    TO COMPLETE AN INPUT LINE, DEPRESS THE *RETURN*
*                KEY.  IT IS NOT NECESSARY TO ENTER A *LINE 
*                FEED* SINCE THE DRIVER WILL SUPPLY ONE.
* 
*         (3)    TO DELETE OR IGNORE AN INPUT LINE, ENTER 
*                *ESC*.  THE DRIVER WILL DISCARD THE LINE 
*                AND WILL REPLY WITH THE MESSAGE *DEL*. 
* 
*         (4)    TO DELETE A PREVIOUSLY ENTERED CHARACTER,
*                DEPRESS THE *BACKSPACE* CHARACTER (LEFT
*                ARROW ON SOME KEYBOARDS).
* 
*         (5)    TO TERMINATE OUTPUT, DEPRESS THE *BREAK* KEY 
*                OR THE *S* KEY.
* 
*         (6)    TO INTERRUPT OUTPUT, DEPRESS THE *I* KEY.
*                OUTPUT MAY BE RESUMED BY ENTERING *P*
*                FOLLOWED BY *RETURN*.
* 
*         (7)    TO TOGGLE TO ANOTHER TWO PORT MUX DRIVER (*MDD*
*                OR *SCD*) WHICH HAS ALREADY BEEN BROUGHT UP ON 
*                THE PORT USED BY *1TM*, DEPRESS THE *F7* KEY 
*                ON A CDC 721 TERMINAL.  NOTE THAT THIS SHARING 
*                CAPABILITY DOES NOT EXIST ON A CYBER 170-865/875.
          SPACE  4,15 
***       DAYFILE MESSAGES -
* 
* 
*         * 1TM - RDF TIME-OUT.*
*                THIS MESSAGE INDICATES THAT NO TERMINAL ACTIVITY 
*                HAS OCCURRED FOR 15 MINUTES (ASSEMBLY PARAMETER) 
*                AND THAT *RDF* IS NOT IN *DEDICATED* MODE.  *1TM*
*                HAS DROPPED FROM THE PPU WITHOUT RECALL AND HAS
*                SIGNALLED DRIVER-DROP TO *RDF*.
* 
*         * 1TM - NO TPM RESPONSE.* 
*                THE TWO-PORT MULTIPLEXER FAILED TO RESPOND 
*                TO A STATUS REQUEST FUNCTION.
* 
*         * 1TM - RDF CANNOT BE RUN ON MAINFRAME.*
*                THE MAINFRAME DOES NOT HAVE THE NECESSARY HARDWARE 
*                TO SUPPORT USAGE OF *RDF*. 
* 
*         * 1TM - NO TPM AVAILABLE.*
*                EITHER THERE IS NO TWO-PORT MULTIPLEXER AVAILABLE
*                IN THE EQUIPMENT STATUS TABLE OR THE MULTIPLEXER 
*                CHANNEL IS NOT AVAILABLE.
* 
*         * 1TM - RMEEE CXX PNN FYYYY REJECT.*
*                TWO-PORT MULTIPLEXER, EST ORDINAL *EEE*, 
*                CHANNEL NUMBER *XX*, PORT NUMBER *NN*, HAS 
*                REJECTED FUNCTION *YYYY. 
* 
*         * 1TM - RDF TERMINATED.*
*                *RDF* IS NOT ENABLED.  *1TM* WILL ISSUE THIS 
*                MESSAGE, THEN DROP AFTER SIGNALLING DRIVER DROP
*                TO *RDF*.  *1TM* MAY BE RESTARTED BY ENABLING
*                *RDF* AND BY ENTERING THE CONSOLE COMMAND TO 
*                RESTART *1TM*. 
 ITM      SPACE  4,15 
***       ERROR LOG MESSAGES -
* 
* 
*         * RMEEE CXX PNN FYYYY REJECT.*
*                TWO-PORT MULTIPLEXER, EST ORDINAL *EEE*, 
*                CHANNEL NUMBER *XX*, PORT NUMBER *NN*, HAS 
*                REJECTED FUNCTION *YYYY. 
* 
*         * RDF CARRIER LOST.*
*                INDICATES THAT THE CARRIER HAS DROPPED ON AN 
*                ACTIVE TERMINAL.  THE TERMINAL IS IMMEDIATELY
*                LOGGED OUT WHEN THIS OCCURS. 
* 
*         * RDF INITIATED.* 
*                ISSUED WHEN TERMINAL INITATES LOGIN. 
* 
*         * RDF TERMINATED.*
*                *RDF* IS NOT ENABLED.  *1TM* WILL ISSUE THIS 
*                MESSAGE, THEN DROP AFTER SIGNALLING DRIVER DROP
*                TO *RDF*.  *1TM* MAY BE RESTARTED BY ENABLING
*                *RDF* AND BY ENTERING THE CONSOLE COMMAND TO 
*                RESTART *1TM*. 
* 
*         * RDF TIME-OUT.*
*                THIS MESSAGE ACCOMPANIES THE * 1TM - RDF 
*                TIME-OUT.* DAYFILE MESSAGE AND INDICATES THAT NO 
*                TEMINAL ACTIVITY HAS OCCURRED FOR 15 MINUTES 
*                (ASSEMBLY PARAMETER) AND THAT *RDF* IS IS NOT IN 
*                DEDICATED MODE.  *1TM* HAS DROPPED FROM THE PPU
*                WITHOUT RECALL AND HAS SIGNALLED DRIVER-DROP TO
*                *RDF*. 
 ITM      TITLE  INTERNAL DOCUMENTATION.
 ITM      SPACE  4,40 
**        TWO-PORT MULTIPLEXER FUNCTION CODES.
* 
*         THE FOLLOWING IS A DESCIPTION OF TWO-PORT MULTIPLEXER 
*         STATUS AND DATA FORMATS.
* 
* 
*         TWO-PORT MULTIPLEXER STATUS CODES-
* 
*                BIT         DESCRIPTION
*                ---         -----------
* 
*               11-5         NOT USED.
*                  4         OUTPUT BUFFER READY (NOT FULL).
*                  3         INPUT READY. 
*                  2         CARRIER ON.
*                  1         DATA SET READY.
*                  0         RING INDICATOR.
* 
* 
*         TWO-PORT MULTIPLEXER MODE SELECTION FUNCTION CODES- 
* 
*                BIT         DESCRIPTION
*                ---         -----------
* 
*               11-6         NOT USED.
*                  5         ENABLE LOOP-BACK.
*                  4         DISABLE PARITY.
*                  3         NUMBER OF STOP BITS- 
*                                0 = 1 STOP BIT.
*                                1 = 2 STOP BITS. 
*                2-1         DATA BITS PER CHARACTER- 
*                               00 = 5 BITS.
*                               01 = 6 BITS.
*                               10 = 7 BITS.
*                               11 = 8 BITS.
*                  0         PARITY-
*                                0 = ODD PARITY.
*                                1 = EVEN PARITY. 
* 
* 
*         INPUT DATA BYTE FORMAT- 
* 
*                BIT         DESCRIPTION
*                ---         -----------
* 
*                 11         DATA SET READY.
*                 10         DATA SET READY .AND. CARRIER ON. 
*                  9         LOST DATA. 
*                  8         FRAMING ERROR OR PARITY ERROR. 
*                7-0         DATA BITS. 
* 
* 
*         OUTPUT DATA BYTE FORMAT-
* 
*                BIT         DESCRIPTION
*                ---         -----------
* 
*               11-8         NOT USED.
*                  7         DATA PARITY. 
*                6-0         DATA BITS (LEAST SIGNIFICANT DATA BIT
*                            IN BIT POSITION 0).
 ITM      SPACE  4,25 
**        TWO-PORT MULTIPLEXER EST ENTRY. 
* 
*         THE FORMAT OF THE TWO-PORT MULTIPLEXER EQUIPMENT STATUS 
*         TABLE ENTRY IS AS SHOWN BELOW.
* 
*T EST    12/0, 12/CH, 12/0, 12/RM, 11/0, 1/N 
* 
*                CH = CHANNEL NUMBER. 
* 
*                RM = MNEMONIC *RM*.
* 
*                N  = PORT NUMBER, 0 OR 1.
* 
* 
*         THE FORMAT OF THE *EQPDECK* ENTRY FOR THE TWO-PORT
*         MULTIPLEXER IS AS SHOWN BELOW.
* 
*         EQXXX=RM,ST=ON/OFF,CH=NN,PT=N.
* 
*                *EQ* = MNEMONIC *EQ*.
* 
*                *RM* = MNEMONIC *RM*.
* 
*                ST   = STATUS, *ON* OR *OFF*.
* 
*                PN   = PORT NUMBER, *0* OR *1*.
* 
*                CH   = CHANNEL NUMBER. 
* 
*         EXAMPLE - 
* 
*         EQ765=RM,ST=ON,CH=15,PT=0.
* 
*                THE ABOVE ENTRY DEFINES EST ORDINAL 765 AS PORT 0 OF 
*                THE TWO-PORT MULTIPLEXER, LOGICALLY *ON* IN THE EST. 
 ITM      TITLE  TERMINAL TABLE USAGE.
 ITM      SPACE  4,25 
**        *1TM* TERMINAL TABLE USAGE. 
* 
*         *1TM* USES THE *RDF* TERMINAL TABLE IN THE SAME 
*         MANNER AS DOES THE 6671/6676 MULTIPLEXER DRIVER,
*         *1TD*, WITH THE EXCEPTION THAT TERMINAL TYPES 
*         ARE NOT SIGNIFICANT (SINCE ONLY ONE TERMINAL TYPE 
*         AND ONE TRANSLATION TABLE ARE SUPPORTED). 
 VFST     SPACE  4,15 
**        TERMINAL TABLE WORD *VFST*. 
* 
*         NOTE - ONLY THOSE FIELDS REFERENCED BY *1TM*
*         ARE DESCRIBED.
* 
*T        12/FS, 12/FS+1, 12/FS+2, 12/FS+3, 12/FS+4 
* 
*                FS   = 12/ UPPER 12 BITS OF JSN. 
* 
*                FS+1 = 12/ LOWER 12 BITS OF JSN. 
 VROT     SPACE  4,15 
**        TERMINAL TABLE WORD *VROT*. 
* 
*         NOTE - ONLY THOSE FIELDS REFERENCED BY *1TM*
*         ARE DESCRIBED.
* 
*T        12/RO, 12/RO+1, 12/RO+2, 12/RO+3, 12/RO+4 
* 
*                RO+4 = JOB STATUS BITS - 
* 
*                            BIT       DESCRIPTION
*                            ---       -----------
*                              6       LIST IN PROGRESS.
*                              4       OUTPUT ON MASS STORAGE.
*                              0       JOB BUSY IF ZERO.
 VDPT     SPACE  4,15 
**        TERMINAL TABLE WORD *VDPT*. 
* 
*T        12/DP, 12/DP+1, 12/DP+2, 12/DP+3, 12/DP+4 
* 
*                DP   = 12/ FIRST POT OF LINE.
* 
*                DP+1 = 12/ CURRENT POT OF LINE.
* 
*                DP+2 = 3/ FIRST WORD OF LINE IN FIRST POT. 
*                       1/ INPUT INITIATED IF SET.
*                       1/ NEXT POT REQUESTED IF SET. 
*                       3/ CURRENT WORD OF LINE IN CURRENT POT. 
*                       4/ CURRENT CHARACTER OF LINE. 
* 
*                DP+3 = FLAG BITS - 
* 
*                            BIT       DESCRIPTION
*                            ---       -----------
*                           11-8       NOT USED.
*                              7       TERMINAL MODE- 
*                                          0 = *TTY*. 
*                                          1 = *BLKEDIT*. 
*                              6       FULL DUPLEX. 
*                            5-4       NOT USED.
*                              3       BINARY INPUT.
*                              2       TRANSPARENT INPUT MODE.
*                              1       EXTENDED MODE. 
*                              0       ODD PARITY.
* 
*                DP+4 = 12/ CURRENT REENTRY ADDRESS.
 VCHT     SPACE  4,15 
**        TERMINAL TABLE WORD *VCHT*. 
* 
*T        12/CH, 12/CH+1, 12/CH+2, 12/CH+3, 12/CH+4 
* 
*                CH   = IF INPUT -
*                       12/ UPPER CHARACTER OF INPUT BYTE.
*                     = IF OUTPUT - 
*                       12/ STACK FOR ROUTINE ADDRESS.
* 
*                CH+1 = IF INPUT -
*                       12/ CHARACTER COUNT OF LINE.
*                     = IF OUTPUT - 
*                       12/ SCRATCH.
* 
*                CH+2 = IF INPUT -
*                       12/SCRATCH. 
*                     = IF OUTPUT - 
*                       12/ PARTIALLY PROCESSED CONTROL BYTE. 
* 
*                CH+3 = 12/ INPUT CHARACTER COUNT ACCUMULATOR.
* 
*                CH+4 = 12/ OUTPUT CHARACTER COUNT ACCUMULATOR. 
* 
*         *VCHT* IS WRITTEN BY *IAF*/*RDF* DURING JOB RECOVERY AFTER
*         SUSPENDING *1TM*.  *1TM* WAITS FOR INTERRUPT ACKNOWLEDGE
*         BEFORE WRITING *VCHT*.
 VDCT     SPACE  4,15 
**        TERMINAL TABLE WORD *VDCT*. 
* 
*         NOTE - ONLY THOSE BITS AND FIELDS DIRECTLY USED BY *1TM*
*         ARE DESCRIBED.
* 
*T        12/DC, 12/DC+1, 12/DC+2, 12/DC+3, 12/DC+4 
* 
*                DC   = FLAG BITS - 
* 
*                            BIT       DESCRIPTION
*                            ---       -----------
*                             11       DRIVER REQUEST IN BYTE 4.
*                             10       INTERRUPT ACKNOWLEDGE. 
*                              9       LOGGED IN. 
*                              6       READ DATA. 
*                              3       EXTENDED (ASCII 6/12) MODE.
*                              2       TEXT MODE. 
*                              1       AUTO MODE. 
*                              0       TAPE MODE. 
* 
*                DC+1 = CONTROL FIELDS -
* 
*                            BIT       DESCRIPTION
*                            ---       -----------
*                            7-3       USER DELAY COUNT.
*                            2-0       FWA IN OUTPUT POT. 
* 
*                DC+3 = ACCESS CONTROL -
* 
*                            BIT       DESCRIPTION
*                            ---       -----------
*                             10       NO TIME-OUT. 
* 
*                DC+4 = INTERLOCK BYTE.  IF NONZERO, ONLY *1TM* 
*                       MAY MODIFY *VDCT*.  IF ZERO, ONLY *RDF* 
*                       MAY MODIFY *VDCT*.
*                     = 12/ DRIVER REQUEST IF BIT 2**11 OF BYTE 
*                           0 IS SET, 
*                     = 12/ OUTPUT POT IF BIT 2**11 OF BYTE 
*                           0 IS NOT SET. 
 VSTT     SPACE  4,15 
**        TERMINAL TABLE WORD *VSTT*. 
* 
*         NOTE - ONLY THOSE FIELDS REFERENCED BY *1TM*
*         ARE DESCRIBED.
* 
*T        12/ST, 12/ST+1, 12/ST+2, 12/ST+3, 12/ST+4 
* 
*                ST = FLAG BITS - 
* 
*                            BIT       DESCRIPTION
*                            ---       -----------
*                              8       DETACH IN PROGRESS.
*                              0       LOGOUT IN PROGRESS.
  
          TITLE  DEFINITION COMMON DECKS. 
 ITM      SPACE  4,10 
**        DEFINE *QUAL* BLOCK ORDER.
  
  
          QUAL   CTL         CONTROL BLOCK
          QUAL   RDM         READ MODE
          QUAL   WTM         WRITE MODE 
          QUAL   TRN         TRANSLATION TABLES 
          QUAL   TLX         DRIVER-TO-EXECUTIVE FUNCTIONS
          QUAL   1TD         EXECUTIVE-TO-DRIVER FUNCTIONS
          QUAL   MACRO$      MACRO CALLS
          QUAL
 ITM      SPACE  4,10 
**        DEFINITION COMMON DECKS.
  
  
*CALL     COMPMAC 
*CALL     COMPMRM 
*CALL     COMSCPS 
*CALL     COMSIOU 
*CALL     COMSPIM 
*CALL     COMSREM 
*CALL     COMSSSD 
*CALL     COMSTCM 
          LIST   X
*CALL     COMSTDR 
          LIST   *
          TITLE  MACRO DEFINITIONS. 
 ADCM     SPACE  4,10 
**        ADCM - GENERATE ADD CONSTANT MACRO. 
* 
*         ADCM   OPC,TBL
* 
*         ENTRY  *OPC* = MACRO NAME TO BE GENERATED.
*                *TBL* = TABLE NAME OF ADDRESSES OF MACRO CALLS.
* 
*         MACROS MACREF.
  
  
 ADCM     MACRO  OPC,TBL,INST 
 OPC      MACRO  CNST 
          LOCAL  A
          MACREF OPC
          QUAL
          IFC    EQ,$INST$$ 
 A        ADC    CNST 
          ELSE   1
 A        INST   CNST 
          ENDIF 
          QUAL   *
 TBL      RMT 
          CON    A
 TBL      RMT 
 OPC      ENDM
 ADCM     ENDM
  
  
*         DEFINE MACROS.
  
  
          ADCM   ADCRA,TRAA 
          ADCM   LDCRA,TRAA,LDC 
          ADCM   ADCTR,TTRA 
          ADCM   ADCPT,TPTA 
          ADCM   ADCPL,TPLA 
          ADCM   LDCDQ,TDQA,LDC 
          ADCM   LMCDQ,TDQA,LMC 
          ADCM   ADCBM,TBMA 
          ADCM   LDCTN,TTNA,LDC 
 ASCO     SPACE  4,10 
**        ASCO - GENERATE MULTIPLEXER OUTPUT FOR *ASCII* CODE.
* 
*NAME     ASCO   CH,EQU 
* 
*         ENTRY  *NAME* = NAME FOR ASSIGNMENT OF CODE.
*                *CH* = *ASCII* CHARACTER VALUE IN HEXIDECIMAL. 
*                *EQU* = ASSIGNMENT PSEUDO OP.
* 
*         MACROS PAR. 
  
  
          MACRO  ASCO,A,C,D 
  NOREF .1
  PAR 0#_C,0
A D 4000+0#_C+.1*200
 ASCO     ENDM
 INASC    SPACE  4,10 
**        INASC - GENERATE *ASCII* INPUT TRANSLATION. 
* 
*CH       INASC  DPC,PROC 
* 
*         ENTRY  *CH* = *ASCII* CHARACTER VALUE IN HEXIDECIMAL. 
*                *DPC* = DISPLAY CODE VALUE.
*                *PROC* = SPECIAL PROCESSOR CODE. 
  
  
          MACRO  INASC,A,C,D
  NOREF .2,.3 
  IFC NE,*C** 
.2 SET D
.3 SET C/100
  IFNE .3,0,2 
.2 SET D CES
.3 SET .3/2-74/2
   VFD 5/.2,1/.3,6/C-C/100*100
  ELSE 2
.2 SET D NLI
   VFD 5/.2,7/0 
 INASC    ENDM
 JMP      SPACE  4,15 
**        JMP - GENERATE THREADED JUMP. 
* 
*         JMP    ADDR 
* 
*         ENTRY  *ADDR* = BRANCH ADDRESS. 
* 
*         MACROS UJP. 
  
  
 JMP      MACRO  A
   NOREF ._A
.1 IF DEF,._A 
.2 IFLE *-._A,37B 
  UJN ._A 
 ._A SET *-1
.2 ELSE 
 ._A SET *
  LJM A 
.2 ENDIF
.1 ELSE 
 ._A SET *
   UJP A
.1 ENDIF
 JMP      ENDM
 OTASC    SPACE  4,10 
**        OTASC - GENERATE *ASCII* OUTPUT TRANSLATION.
* 
*DPC      OTASC  CH,PROC
* 
*         ENTRY  *CH* = *ASCII* CHARACTER VALUE IN HEXIDECIMAL. 
*                *DPC* = DISPLAY CODE VALUE.
*                *PROC* = SPECIAL PROCESSOR CODE. 
* 
*         MACROS ASCO.
  
  
          MACRO  OTASC,A,C,D
  NOREF .2
  IFC NE,*C** 
.2 ASCO C,SET 
  CON .2
  ELSE 1
  CON D NLO 
 OTASC    ENDM
 PAR      SPACE  4,10 
**        PAR - GENERATE CHARACTER PARITY BIT.
* 
*         PAR    CH,OE
* 
*         ENTRY  *CH* = CHARACTER VALUE.
*                *OE* = ODD/EVEN (0=EVEN, 1=ODD)
* 
*         EXIT   *.1* = PARITY. 
  
  
 PAR      MACRO  A,B
  NOREF .1
P MICRO A+1,1, 011010011001011010010110011010011001011001101001011010011
,00101101001011001101001011010011001011001101001100101101001011001101001
.1 SET "P"&;B 
 PAR      ENDM
 RETURN   SPACE  4,10 
**        RETURN - RETURN TO MANAGER TO ADVANCE TERMINAL PROCESSING.
* 
*         RETURN  ADDR
* 
*         ENTRY  *ADDR* = NEXT PROCESSSING ADDRESS.  IF NULL
*                         OR IF "*", RETURN TO NEXT PROGRAM 
*                         ADDRESS.
* 
*         MACROS JMP, MACREF. 
  
  
          PURGMAC RETURN
 RETURN   MACRO  A
  MACREF RETURN 
.1 IFC EQ,$A$$
  RJM MGR$
.1 ELSE 
.2 IFC EQ,$A$*$ 
  RJM MGR$
.2 ELSE 
  LDC A 
  JMP MGR=
.2 ENDIF
.1 ENDIF
 RETURN   ENDM
 TTADD    SPACE  4,10 
**        TTADD - GENERATE TERMINAL TABLE ADDRESS.
* 
*TAG      TTADD  NAM,OPR,TNUM 
* 
*         ENTRY  *NAM* = DESIRED WORD OF TERMINAL TABLE ENTRY.
*                *OPR* = OPERAND TO LOAD A. (IF NULL *LDD*) 
*                *TNUM* = TAG NAME OF TERMINAL NUMBER. (IF NULL *TN*) 
* 
*         EXIT   (A) = DESIRED ADDRESS. 
  
  
          MACRO  TTADD,TAG,NAM,OPR,TNUM 
  LOCAL A 
  MACREF TTADD
TAG  TTAP OPR,TNUM
  QUAL
A ADC NAM 
  QUAL *
TTTA RMT
  CON A 
TTTA RMT
TTADD     ENDM
          TITLE  SYMBOLIC EQUIVALENCES. 
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 DI       EQU    16          MULTIPLEXER INPUT DATA 
 DO       EQU    17          MULTIPLEXER OUTPUT DATA
  
 DP       EQU    20 - 24     TERMINAL TABLE WORD *VDPT* 
*                            12/ FIRST POT OF CURRENT LINE
*                            12/ CURRENT POT OF CURRENT LINE
*                            12/ CURRENT WORD AND BYTE OF CURRENT POT 
*                            12/ TERMINAL MODE FLAGS
*                            12/ DRIVER CONTROL ADDRESS 
  
 CH       EQU    25 - 31     TERMINAL TABLE WORD *VCHT* 
*                            12/ TEMPORARY STORAGE
*                            12/ LINE CHARACTER COUNT 
*                            12/ PARTIALLY PROCESSED CONTROL BYTE 
*                            12/ INPUT CHARACTER COUNT
*                            12/ OUTPUT CHARACTER COUNT 
  
 DC       EQU    32 - 36     TERMINAL TABLE WORD *VDCT* 
 RN       EQU    37          REGISTER NUMBER
 LF       EQU    40          LINE ACTIVITY FLAG 
 F7       EQU    41          START OF *F7* SEQUENCE/NO TIME-OUT = 1 
 IN       EQU    42 - 46     CIRCULAR QUEUE *IN* POINTER
 PN       EQU    47          PORT NUMBER - 0 OR 1 
 PY       EQU    57          PARITY - BIT 2**7 SET IF ODD PARITY
 RQ       EQU    60 - 64     *RDF* REQUEST WORD 
 TN       EQU    64          TERMINAL NUMBER
 EQ       EQU    65          EST ORDINAL
 HS       EQU    66          HALF-SECOND FLAG - SET TO 1 FOR
                             ONE DRIVER CYCLE EACH HALF-SECOND
 IT       EQU    67          HALF-SECOND INTERVAL TIMER - DECREMENTED 
                             BY 1 EACH HALF-SECOND IF NONZERO 
 ITM      SPACE  4,10 
**        TIME-OUT VALUES.
  
  
 COTIO    EQU    2*2         *CARRIER ON* TIME-OUT (1/2 SECONDS)
 DSRTIO   EQU    2*2         *DATA SET READY* TIME-OUT (1/2 SECONDS)
 HUPTIO   EQU    3*2         HANG-UP-PHONE DELAY (1/2 SECONDS)
 INATIO   EQU    15D*60D     INACTIVITY TIME-OUT (SECONDS)
 LINTIO   EQU    5*2         LOGIN TIME-OUT (1/2 SECONDS) 
 NTIO     EQU    10D*60D*2   NORMAL TIME-OUT (1/2 SECONDS)
 RINGTIO  EQU    4*2         RING INDICATOR TIME-OUT (1/2 SECONDS)
 RPATIO   EQU    2*2         REGAIN PORT ACCESS TIME-OUT (1/2 SECONDS)
 UTIO     EQU    30D*2       USER NUMBER TIME-OUT (1/2 SECONDS) 
  
 PRTO     EQU    3*60D*10D   INITIAL PORT RESERVATION TIME-OUT
 ITM      SPACE  4,10 
**        PROGRAM EQUIVALENCES. 
  
  
 BDRATE   EQU    9600D       MAXIMUM BAUD RATE
 CHRATE   EQU    BDRATE/10D  CHARACTER RATE/SEC 
 LODS     EQU    10          OPERATOR DISPLAY BUFFER LENGTH 
 MNCT     EQU    1000D/CHRATE  MINIMUM CYCLE TIME (MSECS) 
 OMBUFL   EQU    37D         OPERATOR MESSAGE BUFFER LENGTH 
 RCLDLY   EQU    2           PP RECALL DELAY (SECONDS)
 NRPR     EQU    77          DELAY FOR REGAINING PORT ACCESS
          SPACE  4,10 
**        CHARACTER EQUIVALENCES. 
  
  
*         INTERNAL CODES. 
  
 .ICR     EQU    210         CARRIAGE RETURN
 .ILF     EQU    211         LINE FEED
 .INL     EQU    212         NEW LINE (CR/LF) 
 .ECP     EQU    770001      END OF CURRENT POT 
  
*         CARRIAGE CONTROL MICROS.
  
 CR       MICRO  1,, @H      CARRIAGE RETURN
 LF       MICRO  1,, @I      LINE FEED
 NL       MICRO  1,, @J      NEW LINE (CR/LF) 
  
*         ASCII CHARACTER (7 DATA BITS).
  
 .ABRK    EQU    0#00        (BRK) BREAK
 .ACLN    EQU    0#3A        (CLN) COLON
 .AESC    EQU    0#1B        (ESC) ESCAPE 
 .APCT    EQU    0#25        (PCT) PERCENT
 .ASP     EQU    0#20        (CR)  SPACE
  
*         *ASCII* TERMINAL CONTROL CHARACTERS.
  
 .CCAN    ASCO   18,EQU      (CAN) CANCEL (CTL-X) 
 .CCLN    ASCO   3A,EQU      (CLN) COLON
 .CCR     ASCO   0D,EQU      (CR)  CARRIAGE RETURN
 .CDC1    ASCO   11,EQU      (DC1) DEVICE CONTOL 1
 .CDC4    ASCO   14,EQU      (DC4) DEVICE CONTROL 4 
 .CDEL    ASCO   7F,EQU      (DEL) DELETE 
 .CLF     ASCO   0A,EQU      (LF) LINE FEED 
 .CNUL    ASCO   00,EQU      (NUL) NULL 
 .CPCT    ASCO   25,EQU      (PCT) PERCENT
 .CRS     ASCO   1E,EQU      (RS) RECORD SEPARATOR
 ITM      SPACE  4,10 
**        TWO-PORT MULTIPLEXER PORT OPERATING MODE. 
* 
*         DISABLE PARITY      = NOT SELECTED. 
*         NUMBER OF STOP BITS = 1.
*         NUMBER OF DATA BITS = 7.
*         PARITY              = EVEN. 
  
 TPMODE   EQU    5           SELECT OPERATING MODE
  
****
 ITM      TITLE  GLOBAL DATA STORAGE. 
 FWA      SPACE  4,15 
**        FWA - DRIVER ENTRY POINT. 
  
  
          ORG    PPFW 
  
 FWA      UJN    FWA1        EXECUTE PRESET ON INITIAL LOAD 
          BSS    1
*         SUBR               (*2TM* CALL OF *1TM*)
  
 FWA1     LJM    PRS         EXECUTE PRESET 
*         UJN    ITM         ENTER DRIVER MAIN PROGRAM
  
 FWAE     EQU    *           LWA+1 OF ENTRY CODE
 ITM      SPACE  4,10 
**        1TM - GLOBAL DATA STORAGE.
  
  
          ORG    FWA
  
 OMCC     BSS    1           OPERATOR MESSAGE CHARACTER COUNT 
 RDAT     BSS    1           REPEATED DATA
  
 GLBSE    EQU    *           LWA+1 OF GLOBAL DATA STORAGE 
 ITM      SPACE  4,10 
 CTL      MAX    FWAE,GLBSE  LWA+1 OF ENTRY CODE AND GLOBAL DATA
 ITM      TITLE  MAIN CONTROL LOOP. 
          QUAL   CTL
          ORG    CTL
 ITM      SPACE  4,20 
**        ITM - TWO-PORT MULTIPLEXER DRIVER MAIN CONTROL LOOP.
* 
*         SEQUENTIALLY EXECUTES THE MAIN PROCESSES OF THE 
*         MULTIPLEXER DRIVER. 
* 
*         ENTRY  FROM *PRS* - 
*                EQUIPMENT AND CHANNEL RESERVED.
*                MULTIPLEXER AND PORT SELECTED. 
*                (IR+3) = REAL-TIME CLOCK (SECONDS) AT START
*                         OF DRIVER INACTIVITY TIME-OUT.
*                (SSMX) = PORT STATUS.
*                (LF)   = SET *ON* FOR INITIAL CONNECT ATTEMPT. 
* 
*         EXIT   TO *RCL* TO RECALL PPU IF NO MULTIPLEXER ACTIVITY. 
*                TO *IMT* TO DROP PPU IF TIMED-OUT. 
* 
*         CALLS  AVT, CAR, CCQ, CEF, CIT, CMF, MGR., RPI, SVM, *3TM*. 
* 
*         MACROS EXECUTE. 
  
  
 ITM      BSS    0           DRIVER ENTRY 
          EXECUTE  3TM
 ITM1     RJM    CEF         CHECK ERROR FLAG 
          RJM    CMF         CHECK *RDF* STATUS 
          RJM    AVT         ADVANCE TIMERS 
          RJM    SVM         SERVICE MULTIPLEXER
          RJM    MGR.        PROCESS TERMINALS
          RJM    CAR         CHECK FOR REQUEST OF PORT AND RELEASE
          NJN    ITM2        IF PORT WAS NOT RELEASED 
          STD    F7          CLEAR POSSIBLE START OF *F7* SEQUENCE
          RJM    RPI         INITIALIZE FOR REGAINING PORT
 ITM2     RJM    CCQ         CHECK CIRCULAR QUEUE 
          LDD    LF          CHECK LINE ACTIVITY FLAG 
          NJN    ITM1        IF LINE ACTIVITY 
  
*         EXIT MAIN CONTROL LOOP. 
  
          RJM    CIT         CHECK INACTIVITY TIME-OUT
          NJN    ITM3        IF TIMED-OUT 
          LJM    RCL         RECALL PPU 
  
*         THE DRIVER HAS TIMED OUT BECAUSE OF NO LINE 
*         ACTIVITY.  ERROR LOG AND DAYFILE MESSAGES WILL BE 
*         ISSUED AND THE PP WILL BE DROPPED WITHOUT RECALL. 
  
 ITM3     LDN    MTIO+40     * RDF TIME-OUT.* 
          JMP    IMT         ISSUE MESSAGES AND TERMINATE 
 MGR      TITLE  MGR - TERMINAL MANAGER.
 MGR      SPACE  4,20 
**        MGR - TERMINAL MANAGER. 
* 
*         THE TERMINAL MANAGER PERFORMS THE STATUS CHECKS UPON THE
*         PORT AND EXECUTES THE REENTRANT PROCESSOR FOR THE LINE. 
* 
*         ENTRY  (DP+4) = REENTRANT PROCESSING ADDRESS. 
*                (SSMX) = PORT STATUS.
*                (DI)   = TERMINAL INPUT. 
*                (DO)   = TERMINAL OUTPUT.
* 
*         EXIT   TO (DP+4) -
*                  (A)  = INPUT DATA. 
*                  (DI) = INPUT DATA. 
*                  (DC - DC+4) = TERMINAL TABLE WORD *VDCT*.
*                TO *CIS* IF INPUT RECEIVED WHILE IN *WRITE* MODE.
*                TO *OFL* IF TERMINAL DROPS OFF LINE. 
* 
*         CALLS  STA. 
  
  
 MGR.     SUBR               ENTRY/EXIT 
          LDM    SSMX        GET PORT STATUS
          SHN    21-2 
          MJN    MGR1        IF ON-LINE (CARRIER ON)
  
*         CHECK STATUS OF OFF-LINE TERMINAL.
  
          LDD    DP+4        CHECK PROCESSOR ADDRESS
          SBK    LINPE
          MJN    MGR2        IF LINE PROCESSING 
          LJM    OFL         SET TERMINAL OFF-LINE
  
*         PROCESS ON-LINE TERMINAL. 
  
 MGR1     LDD    DI          CHECK INPUT DATA 
          NJN    MGR3        IF INPUT RECEIVED
          LDD    DO          CHECK OUTPUT 
          SHN    21-13
          PJN    MGR2        IF NO OUTPUT IN BUFFER 
          LDD    DP+4        CHECK PROCESSING ADDRESS 
          SBK    WTM
          PJN    MGR.X       IF IN *WRITE* MODE 
  
*         ENTER TERMINAL PROCESSING ROUTINE.
  
 MGR2     RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VDCT        READ *VDCT*
          CRD    DC 
          LDD    DI          GET INPUT DATA 
          LJM    0,DP+4      ENTER PROCESSING ROUTINE 
  
*         CHECK INPUT RECEIVED. 
  
 MGR3     LDD    DP+4        CHECK PROCESSING ADDRESS 
          SBK    WTM
          MJN    MGR2        IF NOT IN *WRITE* MODE 
          LJM    CIS         CHECK INTERRUPT STATUS 
 MGR      SPACE  4,15 
**        MGR - RETURNS FROM REENTRY PROCESSORS.
 MGR      SPACE  4,15 
**        MGR$ - RETURN FROM *RETURN* MACRO (NULL OR * ADDRESS FIELD).
* 
*         ENTRY  (MGR$) = REENTRY ADDRESS.
  
  
 MGR$     CON    0           (REENTRY ADDRESS)
          LDM    MGR$        GET REENTRY ADDRESS
*         UJN    MGR=        SET REENTRY ADDRESS
 MGR=     SPACE  4,15 
**        MGR= - RETURN FROM *RETURN  ADDR* MACRO.
* 
*         ENTRY  (A) = REENTRY ADDRESS. 
  
  
 MGR=     STD    DP+4        SET REENTRY ADDRESS
*         UJN    MGR         WRITE TERMINAL TABLE WORDS AND EXIT
 MGR      SPACE  4,15 
**        MGR - RETURN WITH NO CHANGE OF REENTRY ADDRESS. 
* 
*         ENTRY  (DP+4) = REENTRY ADDRESS.
  
  
 MGR      RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VDPT        WRITE *VDPT* AND *VCHT* TO CM
          CWD    DP 
          ADK    VCHT-VDPT
          CWD    CH 
          UJP    MGR.X       EXIT FROM MANAGER
 ITM      TITLE  CTL - LINE PROCESSING ROUTINES.
 DIN      SPACE  4,25 
**        DIN - PROCESS PORT DIALED-IN. 
* 
*         WAITS FOR TERMINAL OPERATOR TO IDENTIFY TERMINAL, 
*         THEN NOTIFIES *RDF* THAT THE TERMINAL HAS DIALED
*         IN AND REQUESTS LOGIN PROCESSING. 
* 
*         ENTRY  (A) = INPUT DATA.
*                (DP+4) = *DIN*.
* 
*         EXIT   TO *LIN* TO PROCESS LOGIN -
*                  ERROR LOG MESSAGE ISSUED.
*                  *CAN* ISSUED TO CLEAR SCREEN.
*                  (CH - CH+4) = 0. 
*                  (DP - DP+2) = 0. 
*                  (DP+3) = *BLKEDIT* OR *TTY* SET. 
*                  (IR+3) = CURRENT REAL-TIME CLOCK (SECONDS).
*                TO *MGR* IF TERMINAL FAILS TO INITIATE LOGIN.
*                  (LF) = ZERO TO FORCE DRIVER DROP.
* 
*         USES   IT, T7.
* 
*         CALLS  DFM, ERQ.
* 
*         MACROS RETURN.
  
  
 DIN      BSS    0           ENTRY
          LDD    DC          CHECK *VDCT* TERMINAL STATUS 
          NJP    MGR         IF LAST USER NOT OFF, RETURN 
          RJM    SPA
          RJM    CTM         CLEAR TERMINAL 
          RJM    RMA
          LDK    LINTIO      SET LOGIN TIME-OUT 
          STD    IT 
          RETURN *           REENTER
          NJN    DIN1        IF INPUT RECEIVED
          LDD    IT          GET TIMER
          STD    LF          SET/CLEAR LINE ACTIVITY FLAG 
          JMP    MGR         EXIT/REENTER 
  
*         CHECK INPUT FOR TERMINAL TYPE INDICATOR.
* 
*         ENTRY  (A)  = INPUT DATA. 
*                (DI) = INPUT DATA. 
  
 DIN1     LPC    177         MASK CHARACTER 
          STD    T7 
          LDN    ZERL        CLEAR DIRECT CELLS 
          CRD    CH 
          CRD    DP 
          LDN    /TLX/DIN    REQUEST DIAL-IN PROCESSING 
          RJM    ERQ
          LDM    TINT,T7     TRANSLATE INPUT CHARACTER
          LPN    77 
          LMN    1RB
          NJN    DIN2        IF NOT *B* 
          LDC    200         SET *BLKEDIT* TERMINAL TYPE
          RAD    DP+3 
 DIN2     LDC    =C* RDF INITIATED.*+ERLN 
          RJM    DFM         ISSUE ERROR LOG MESSAGE
          LDC    .CCAN       ISSUE *CAN* TO CLEAR SCREEN
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
          RETURN LIN         PROCESS LOGIN
 HUP      SPACE  4,25 
**        HUP - HANG UP PHONE LINE. 
* 
*         ISSUES *DC4* TO TERMINATE SESSION IF *PACER*
*         TERMINAL.  DISCONNECTS THE COMMUNICATIONS LINE
*         TO TERMINATE THE CONNECTION.
* 
*         EXIT   TO *MGR* TO DROP/RECALL DRIVER - 
*                  *DC4* ISSUED IF *PACER* TERMINAL.
*                  MULTIPLEXER CLEARED IF PORT IS NEITHER BEING 
*                  REQUESTED NOR RE-REQUESTED.
*                  TERMINAL TABLE CLEANED UP. 
*                  (IR+3) = CURRENT REAL-TIME CLOCK (SECONDS).
*                  (DP) = 0.
*                  (LF)   = ZERO TO FORCE DROP/RECALL.
* 
*         USES   IT.
* 
*         CALLS  AMA, CUT, ERQ, IFN, RPI, RMA, SAT. 
* 
*         MACROS RETURN.
  
  
 HUP      BSS    0           ENTRY
  
*         ISSUE *DC4* TO TERMINATE SESSION IF *PACER* TERMINAL. 
  
          LDC    .CDC4       ISSUE *DC4*
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
  
*         DELAY TO ALLOW OUTPUT BUFFER TO CLEAR.
  
          LDK    HUPTIO      SET DELAY
          STD    IT 
          RETURN *           REENTER
          LDD    IT          CHECK TIMER
          ZJN    HUP1        IF DELAY COMPLETE
          JMP    MGR         REENTER
  
*         DISCONNECT COMMUNICATIONS LINE IF IT IS NOT BEING 
*         RE-REQUESTED BY ANOTHER DRIVER. 
  
 HUP1     RJM    CRR         CHECK RE-REQUESTED AND REQUESTED 
          STD    T7          SAVE STATUS
          NJN    HUP2        IF ANOTHER PROCESSOR NEEDS PORT
          RJM    AMA         ACQUIRE MULTIPLEXER ACCESS 
          LDK    MXMC        CLEAR MULTIPLEXER I/O BUFFERS
          RJM    IFN
          LDK    MXDR        CLEAR *DATA TERMINAL READY*
          RJM    IFN
          LDK    MXRTS       CLEAR *REQUEST TO SEND*
          RJM    IFN
          RJM    RMA         RELEASE MULTIPLEXER ACCESS 
  
*         DROP POTS AND CLEAN UP TERMINAL TABLE.
  
 HUP2     LDD    DP          CHECK IF POTS ASSIGNED 
          ZJN    HUP3        IF NO POTS ASSIGNED
          STD    RQ+3        DROP POTS
          LDN    /TLX/DRT 
          RJM    ERQ
 HUP3     STD    DP          CLEAR POT POINTER
          STD    LF          CLEAR LINE ACTIVITY FLAG 
          RJM    CUT         CLEAN UP TERMINAL TABLE
          LDD    T7          RE-REQUESTED AND REQUESTED STATUS
          ZJN    HUP4        IF ANOTHER PROCESSOR DOES NOT NEED PORT
          RJM    RTD         RELEASE MULTIPLEXER AND DELAY
          LDC    ONL         SET REENTRY ADDRESS
          STD    DP+4 
          RJM    RPI         INITIALIZE FOR REGAINING PORT ACCESS 
 HUP4     RJM    SAT         SET ACTIVITY TIMER 
          JMP    MGR         EXIT TO MANAGER
 OFL      SPACE  4,15 
**        OFL - PROCESS USER OFF LINE.
* 
*         DROPS ALL POTS ASSOCIATED WITH THE TERMINAL AND NOTIFIES
*         *RDF* TO LOGICALLY DISCONNECT THE TERMINAL. 
* 
*         EXIT   TO *MGR* FORCE DRIVER DROP/RECALL -
*                  ERROR LOG MESSAGE ISSUED.
*                  (LF) = ZERO TO FORCE DRIVER DROP/RECALL. 
*                  (DP) = 0.
* 
*         CALLS  DFM, ERQ.
  
  
 OFL      BSS    0           ENTRY
          LDC    =C* RDF CARRIER LOST.*+ERLN
          RJM    DFM         ISSUE ERROR LOG MESSAGE
          LDD    DP          SET ASSIGNED POTS TO BE DROPPED
          STD    RQ+3 
          LDN    /TLX/HUP    REQUEST HUNG UP PHONE PROCESSING 
          RJM    ERQ
          STD    DP          CLEAR POT POINTER
          UJP    HUP         DISCONNECT LINE
 ONL      SPACE  4,25 
**        ONL - WAIT FOR TERMINAL TO COME ON-LINE.
* 
*         WAITS FOR INDICATION THAT THE MULTIPLEXER PORT
*         HAS CONNECTED TO AN ACTIVE LINE, THEN PROCESSES 
*         THE INTERFACE PROTOCOL.  *ONL* EXITS TO *DIN* FOR 
*         DIAL-IN WHEN THE CONNECTION HAS BEEN ESTABLISHED
*         AND WHEN THE TERMINAL OPERATOR ENTERS A CHARACTER 
*         (ANY CHARACTER IS ACCEPTED) TO INITIATE LOGIN.
* 
*         ENTRY  (LF) = NONZERO FOR INITIAL DRIVER ENTRY. 
*                MULTIPLEXER AND PORT SELECTED. 
* 
*         EXIT   TO *DIN* WHEN PORT IS ON-LINE -
*                  (LF) = NONZERO.
*                TO *MGR* IF PORT DOES NOT COME ON-LINE - 
*                  (LF) = ZERO TO FORCE DRIVER DROP/RECALL. 
* 
*         USES   IT.
* 
*         CALLS  IFN, RMA, SPA. 
* 
*         MACROS RETURN.
  
  
 ONL      BSS    0           ENTRY
          LDK    RINGTIO     SET RING TIME-OUT
          STD    IT 
          RETURN *           SET REENTRY
  
*         WAIT FOR *RING INDICATOR* (DIAL-UP LINE) OR FOR 
*         *CARRIER ON* AND *DATA SET READY* (HARD-WIRED 
*         LINE).
  
          LDM    SSMX        CHECK PORT STATUS
          SHN    21-0        CHECK *RING INDICATOR* 
          MJN    ONL1        IF SET 
          RJM    SPA         SET PORT ACCESS
          LDK    MXDR+1      SET *DATA TERMINAL READY*
          RJM    IFN
          RJM    RMA
          LDK    DSRTIO      SET *DATA SET READY* TIME-OUT
          STD    IT 
          RETURN *
          LDM    SSMX        CHECK PORT STATUS
          LPN    6           CHECK *CARRIER ON* & *DATA SET READY*
          LMN    6
          NJP    ONL3        IF NOT *DATA SET READY* AND *CARRIER ON* 
  
*         SET *DATA TERMINAL READY* AND WAIT FOR *DATA SET READY*.
  
 ONL1     RJM    SPA
          LDK    MXDR+1      SET *DATA TERMINAL READY*
          RJM    IFN
          RJM    RMA
          LDK    DSRTIO      SET *DATA SET READY* TIME-OUT
          STD    IT 
          RETURN *           SET REENTRY
          LDM    SSMX        CHECK PORT STATUS
          LPN    2
          ZJN    ONL3        IF NOT *DATA SET READY*
  
*         SET *REQUEST TO SEND* AND WAIT FOR *CARRIER ON*.
  
          RJM    SPA
          LDK    MXRTS+1     ISSUE *REQUEST TO SEND*
          RJM    IFN
          RJM    RMA
          LDK    COTIO       SET *CARRIER ON* TIME-OUT
          STD    IT 
          RETURN *           SET REENTRY
          LDM    SSMX        CHECK PORT STATUS
          LPN    4
          ZJN    ONL3        IF NOT *CARRIER ON*
  
*         TERMINAL IS ON-LINE.  EXIT TO DIAL-IN PROCESSOR.
  
          RETURN DIN         ENTER DIAL-IN PROCESSOR
  
*         TERMINAL HAS FAILED TO RESPOND.  EXIT TO MANAGER
*         FOR REENTRY OR DRIVER DROP/RECALL.
* 
*         EXIT   (LF) = (IT).  IF ZERO, THE LINE FUNCTION HAS 
*                       TIMED-OUT AND THE DRIVER WILL BE FORCED 
*                       TO DROP/RECALL. 
  
 ONL3     LDD    IT          SET/CLEAR LINE ACTIVITY
          STD    LF 
          JMP    MGR         REENTER
 RPA      SPACE  4,15 
**        RPA - REGAIN PORT ACCESS. 
* 
*         ENTRY  (NT) = 0, IF TIME-OUT ALLOWED. 
*                     = 1, IF NO TIME-OUT.
*                (IT) = DELAY IF (NT) = 0.
*                       WAIT *DELAY* SECONDS BEFORE PP RECALL OR
*                       TIME-OUT CHECK. 
*                (RPAA) = REENTRY ADDRESS WHEN ACCESS OBTAINED. 
* 
*         USES   F7, LF.
* 
*         CALLS  CTM, IFN, RMA, STM.
  
  
 RPA      BSS    0           ENTRY
 RPA1     RETURN *
          SOM    RPAC 
          NJN    RPA1        IF DELAY PERIOD NOT YET EXPIRED
          LDK    NRPR 
          STM    RPAC        RESET DELAY PERIOD 
          RJM    STM         SELECT TERMINAL ON MUX 
          NJN    RPA2        IF PORT RESERVED 
          LDD    F7 
          NJN    RPA1        IF NO TIME-OUT 
          LDD    IT          SET/CLEAR LINE ACTIVITY
          STD    LF 
          UJN    RPA1        RETURN 
  
*         INITIALIZE MULTIPLEXER AND TERMINAL.
  
 RPA2     LDK    MXSM+TPMODE SET PORT OPERATING MODE
          RJM    IFN
          LDK    MXMC        CLEAR PORT I/O BUFFERS 
          RJM    IFN
          RJM    CTM         CLEAR TERMINAL 
          RJM    RMA         RELEASE MULTIPLEXER ACCESS 
          LDN    77 
          STD    LF 
          LDN    0           SET NO TIME-OUT
          STD    F7 
          LDC    ONL         SET NEXT REENTRY ADDRESS 
 RPAA     EQU    *-1
          JMP    MGR=        SET REENTRY ADDRESS
  
  
 RPAC     CON    NRPR        DELAY PERIOD COUNTER 
 RPI      SPACE  4,15 
**        RPI - REGAIN PORT ACCESS INITIALIZATION.
* 
*         ENTRY  (DP+4) = CURRENT REENTRY ADDRESS.
* 
*         EXIT   (DP+4) = NEW REENTRY ADDRESS.
*                (IT) = DELAY IF (F7) = 0.
*                       WAIT *DELAY* SECONDS BEFORE PP RECALL OR
*                       TIME-OUT CHECK. 
*                (F7) = 1, IF IN MIDDLE OF RDF SESSION. 
*                (RPAA) = (DP+4) ON ENTRY IF (F7) HAS BEEN SET TO 1,
*                         OTHERWISE, IT IS SET TO /CTL/ONL. 
* 
*         USES   F7, IT.
  
  
 RPI      SUBR               ENTRY/EXIT 
          LDD    DP+4 
          SBK    LINPE
          MJN    RPI3        IF LINE PROCESSING 
  
*         INITIALIZE *RPA* TO NOT GIVE UP THE PP. 
  
 RPI1     LDN    1           NO TIME-OUT SELECTED 
          STD    F7 
          LDD    DP+4        SAVE CURRENT RE-ENTRY ADDRESS
 RPI2     STM    RPAA 
          LDC    RPA         NEW REENTRY IS *RPA* 
          STD    DP+4 
          UJN    RPIX        RETURN 
  
*         CHECK FOR *HUP* PROCESSING. 
  
 RPI3     ADC    LINPE-HUP
          MJN    RPI4        IF NOT IN *HUP*
          SBK    HUP3-HUP 
          MJN    RPI1        IF IN *HUP*
  
*         INITIALIZE *RPA* TO TIME-OUT AND RECALL PP. 
  
 RPI4     LDK    RPATIO      SET TIME-OUT BEFORE RECALL/DROP
          STD    IT 
          LDC    ONL
          UJN    RPI2        SET REENTRY
          SPACE  4
 LINPE    BSS    0           END OF LINE PROCESSING 
 ITM      TITLE  CTL - TERMINAL CONTROL ROUTINES. 
 CIS      SPACE  4,25 
**        CIS - CHECK INTERRUPT STATUS. 
* 
*         CIS DETERMINES THE STATUS OF A SUSPECTED INTERRUPT INPUT
*         CHARACTER.  THE CHARACTER *S* IS A LEVEL 0 INTERRUPT TO 
*         *RDF*.  AN *INTERRUPT* AND THE CHARACTER *I* ARE LEVEL 1
*         INTERRUPTS TO *RDF*.
* 
*         ENTRY  (A)    = INPUT DATA. 
*                (DI)   = INPUT DATA. 
*                (DP+4) = PROCESSING ADDRESS. 
* 
*         EXIT   TO *MGR* IF INTERRUPT IGNORED. 
*                TO *INT* IF INTERRUPT -
*                  (A) = *TIET* IF *BREAK* OR *I* KEY.
*                      = *TAET* IF *S* KEY. 
*                TO *AWT* IF TERMINAL MESSAGE IN PROGRESS.
* 
*         USES   (CH) = BREAK TIMER.
* 
*         MACROS RETURN.
  
  
 CIS      BSS    0           ENTRY
          LDD    DP+1        CHECK FOR TERMINAL MESSAGE 
          SHN    -6 
          LMN    77 
          NJN    CIS1        IF NOT ISSUING MESSAGE 
          LJM    /WTM/AWT    CONTINUE TERMINAL OUTPUT 
  
 CIS1     LDD    DC          CHECK TERMINAL STATUS
          SHN    21-11       CHECK *LOGGED IN* BIT
          PJN    CIS5        IF NOT LOGGED IN, IGNORE CHARACTER 
  
*         PROCESS ASCII *BRK* CHARACTER.
  
          LDD    DI          CHECK INPUT CHARACTER
          LPC    177
          LMK    .ABRK
          NJN    CIS4        IF NOT START OF BREAK
 CIS2     LDK    100D/MNCT+1 START TIMER FOR BREAK
          STD    CH 
 CIS3     RETURN *           REENTER
          NJN    CIS2        IF BREAK STILL IN PROGRESS 
          SOD    CH          DECREMENT TIMER
          NJN    CIS3        IF NOT TIMED-OUT 
          UJN    CIS6        PROCESS AS INTERRUPT 
  
*         PROCESS CHARACTER OTHER THAN ASCII *BRK*. 
  
 CIS4     STD    T7          TRANSLATE INPUT CHARACTER
          LDM    TINT,T7
          LPN    77 
          LMN    1RS
          ZJP    CIS7        IF *S* KEY 
          LMN    1RI&1RS
          ZJP    CIS6        IF *I* KEY 
 CIS5     JMP    MGR         IGNORE INVALID CHARACTER 
  
*         PROCESS INTERRUPT CHARACTER.
  
 CIS6     LDN    TIET&TAET   SET *TIET* INTERRUPT CODE
 CIS7     LMN    TAET        SET *TAET* INTERRUPT CODE
          LJM    INT         ENTER INTERRUPT
 CTO      SPACE  4,20 
**        CTO - CHECK TIME-OUT. 
* 
*         *CTO* IS ENTERED WHEN AN INPUT CHARACTER HAS NOT BEEN 
*         RECEIVED FROM A TERMINAL.  THE ELAPSED TIME IS CHECKED, AND 
*         IF EXCEEDED, THE USER IS LOGGED OFF.
* 
*         ENTRY  (DP+4) = PROCESSING ADDRESS. 
* 
*         EXIT   TO *MGR* IF TIME NOT ELAPSED.
*                TO *RWC* IF TIMED-OUT -
*                  TIME-OUT LOGOUT REQUEST ENTERED. 
*                  SOURCE DUMP FORCED IF READ ACTIVE. 
*                TO *TFR* IF FUNCTION REQUEST FROM EXECUTIVE. 
*                TO *RWC* IF OUTPUT ASSIGNED -
*                  (DP+2) = 0.
* 
*         USES   DO, CM - CM+4. 
* 
*         CALLS  ERQ, STA.
  
  
 CTO      BSS    0           ENTRY
          LDD    DO          CHECK OUTPUT BUFFER
          SHN    21-13
          MJN    CTO1        IF OUTPUT DATA 
          LDD    HS          CHECK HALF-SECOND FLAG 
          ZJN    CTO1        IF HALF-SECOND NOT ELAPSED 
          RAD    DO          ADVANCE TIMER
          LMC    NTIO 
          ZJN    CTO2        IF NORMAL TIME-OUT ELAPSED 
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VROT        READ *VROT*
          CRD    CM 
          LDD    CM+4        CHECK JOB STATUS 
          LPN    1
          NJN    CTO3        IF JOB NOT ACTIVE
          STD    DO          CLEAR TIMER
 CTO1     JMP    MGR         EXIT 
  
*         CHECK FOR *NO TIME-OUT*.
  
 CTO2     LDD    DC+3        CHECK USER ACCESS
          SHN    21-12       CHECK NO-TIME-OUT BIT
          PJN    CTO4        IF NOT SET 
          LDN    0
          STD    DO          CLEAR TIMER
          UJN    CTO1        EXIT 
  
*         PROCESS INACTIVE JOB. 
  
 CTO3     LDD    DC+4        CHECK MESSAGE ASSIGNMENT 
          NJN    CTO6        IF MESSAGE ASSIGNED
          LDD    DC          CHECK *LOGGED IN*
          SHN    21-11
          MJN    CTO1        IF SET 
          LDD    DO          CHECK TIMER
          LMC    UTIO 
          NJN    CTO1        IF LOGIN TIME-OUT NOT ELAPSED
  
*         LOG OFF USER. 
  
 CTO4     LDC    CTO5        SET REENTRY ADDRESS
          UJN    CTO8        FORCE SOURCE INPUT DUMP
  
 CTO5     LDN    /TLX/TOT    REQUEST TIME-OUT LOGOUT
          RJM    ERQ
          STD    DP+2        CLEAR READ STATUS
          JMP    RWC         ENTER READ/WRITE CONTROL 
  
*         CHECK FOR FUNCTION REQUEST. 
  
 CTO6     LDD    DC          CHECK MESSAGE TYPE 
          SHN    21-13
          PJN    CTO7        IF NOT FUNCTION REQUEST
          LJM    TFR         PROCESS *RDF* FUNCTION REQUEST 
  
 CTO7     LDC    RWC         SET REENTRY ADDRESS
  
*         FORCE SOURCE DUMP IF READ ACTIVE. 
* 
*         ENTRY  (A) = REENTRY ADDRESS. 
  
 CTO8     STD    DP+4        SET REENTRY ADDRESS
          LDD    DP+2        GET INPUT STATUS 
          SHN    21-10
          PJN    CTO9        IF INPUT NOT INITIATED 
          LPN    7           SET POT LENGTH 
          LMN    40          SET FORCED DUMP FLAG 
          STD    RQ+1 
          LDD    DP          SET FIRST, CURRENT POT 
          STD    RQ+2 
          STD    RQ+3 
          LDN    /TLX/RIN    REQUEST SOURCE INPUT DUMP
          RJM    ERQ
          STD    DP          CLEAR POINTERS 
          STD    DP+2 
 CTO9     JMP    MGR         RETURN TO MANAGER
 INT      SPACE  4,20 
**        INT - PROCESS INTERRUPT.
* 
*         *INT* REQUESTS *RDF* TO TERMINATE OUTPUT AND THE USER 
*         PROGRAM IN RESPONSE TO AN INTERRUPT FROM THE TERMINAL.
* 
*         ENTRY  (A) = INTERRUPT CODE-
*                    = *TIET* IF *I* KEY OR *BREAK*.
*                    = *TAET* IF *S* KEY. 
* 
*         EXIT   TO *RWC* IF HANG-UP-PHONE REQUIRED.
*                TO *SUS* TO SUSPEND TERMINAL AFTER INTERRUPT - 
*                  (DP)   = 0.
* 
*         USES   T7, CM - CM+4. 
* 
*         CALLS  ERQ, STA.
  
  
 INT      BSS    0           ENTRY
          STD    T7          SAVE INTERRUPT CODE
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADK    VSTT        READ *VSTT*
          CRD    CM 
          LDD    CM          CHECK LOGOUT AND DETACH STATUS 
          LPC    0401 
          NJN    INT1        IF LOGOUT OR DETACH IN PROGRESS
          LDD    DC          CHECK FOR DRIVER REQUEST 
          SHN    21-13
          PJN    INT2        IF NO REQUEST
          LDD    DC+4        CHECK REQUEST
          LMN    /1TD/HUP 
          NJN    INT2        IF NOT HANG UP PHONE 
 INT1     UJN    RWC         ENTER READ/WRITE CONTROL 
  
 INT2     LDD    DP          SET POTS TO BE DROPPED 
          STD    RQ+3 
          LDD    T7          SET INTERRUPT CODE 
          STD    RQ+2 
          LDN    /TLX/PUB    PROCESS USER BREAK 
          RJM    ERQ
          STD    DP          CLEAR POT POINTER
          LJM    SUS         SUSPEND TERMINAL 
 LIN      SPACE  4,15 
**        LIN - PROCESS LOGIN.
* 
*         EXIT   TO *CLI* WHEN *RDF* RESPONDS TO LOGIN REQUEST -
*                  (DP)   = POT ASSIGNMENT. 
*                  (DP+1) = (DP). 
*                  (VDCT) BYTE 4 = 0. 
* 
*         CALLS  WDC. 
  
  
 LIN      BSS    0           ENTRY
          LDD    DC          CHECK TERMINAL STATUS
          LMD    HN 
          ZJN    LIN1        IF *RDF* READY 
          JMP    MGR         EXIT 
  
 LIN1     LDD    DC+4        SET POT ASSIGNMENT 
          STD    DP 
          STD    DP+1 
          LDN    0           CLEAR POT ASSIGNMENT 
          STD    DC+4 
          RJM    WDC         REWRITE VDCT 
          LJM    /RDM/CLI    PROCESS COMMAND LINE INPUT 
 RWC      SPACE  4,20 
**        RWC - READ/WRITE CONTROL. 
* 
*         ENTRY  COMPLETION OF READ OR WRITE OPERATION. 
* 
*         EXIT   TO *RDM* IF INPUT RECEIVED FROM TERMINAL.
*                TO *WTM* IF MESSAGE ASSIGNED BY *RDF* -
*                  (DP)   = OUTPUT POT ASSIGNMENT.
*                  (DP+1) = (DP). 
*                  (DP+2) = FIRST WORD INDEX. 
*                  (VDCT) BYTE 4 = 0. 
*                TO *TFR* IF FUNCTION REQUEST RECEIVED FROM *RDF*.
*                TO *CTO* IF TERMINAL IDLE. 
* 
*         CALLS  CEM, ERQ, WDC. 
* 
*         MACROS RETURN.
  
  
 RWC      BSS    0           ENTRY
          RJM    CEM         CLEAR EXTENDED MODE
  
*         ENTRY TO PREVENT TRANSMISSION MODE CHANGE.
*         CHECK FOR INPUT FROM TERMINAL.
  
 RWC1     RETURN *           SET REENTRY
          LDD    DI          CHECK FOR INPUT DATA 
          ZJN    RWC2        IF NO DATA RECEIVED
          LJM    RDM         ENTER READ MODE
  
*         CHECK FOR MESSAGE ASSIGNMENT OR FUNCTION REQUEST. 
  
 RWC2     LDD    DC+4        CHECK OUTPUT ASSIGNMENT
          NJN    RWC3        IF MESSAGE ASSIGNED
          LJM    CTO         CHECK TIME-OUT 
  
 RWC3     LDD    DC          CHECK MESSAGE TYPE 
          SHN    21-13
          PJN    RWC4        IF NOT FUNCTION REQUEST
          LJM    TFR         PROCESS *RDF* FUNCTION REQUEST 
  
*         PREPARE NEW OUTPUT. 
  
 RWC4     LDD    DP          CHECK FIRST POT
          ZJN    RWC5        IF NOT ASSIGNED
          STD    RQ+3        SET POT
          LDN    /TLX/DRT    REQUEST DROP POT CHAIN 
          RJM    ERQ
 RWC5     LDD    DC+4        CURRENT POT = ASSIGNMENT 
          STD    DP 
          STD    DP+1 
          LDD    DC+1        CURRENT WORD = FIRST WORD OF ASSIGNMENT
          LPN    7
          SHN    4
          STD    DP+2 
          LDD    DC+1        CLEAR STARTING WORD
          SCN    7
          STD    DC+1 
          LDN    0           CLEAR ASSIGNMENT 
          STD    DC+4 
          RJM    WDC         REWRITE VDCT 
          JMP    WTM         ENTER WRITE MODE 
 SUS      SPACE  4,15 
**        SUS - SUSPEND DRIVER FOR *RDF* INTERRUPT ACKNOWLEDGE. 
* 
*         WAITS UNTIL *RDF* SETS THE INTERRUPT ACKNOWLEDGE
*         BIT IN THE TERMINAL TABLE.
* 
*         EXIT   TO *RWC* AFTER ACKNOWLEDGE SET - 
*                  *VDCT* INTERRUPT ACKNOWLEDGE BIT CLEARED.
*                TO *MGR.* WITHOUT TERMINAL TABLE WRITE UNTIL INTERRUPT 
*                  ACKNOWLEDGE SET.  *IAF* CAN WRITE *VDCT* AND *VCHT*
*                  UNTIL THIS TIME. 
* 
*         CALLS  ERQ, STA, WDC. 
  
  
 SUS      BSS    0           ENTRY
          LDD    DC          GET TERMINAL STATUS
          SHN    21-12       CHECK INTERRUPT ACKNOWLEDGE BIT
          MJN    SUS1        IF SET 
          LDC    SUS         SET REENTRY ADDRESS
          STD    DP+4 
          RJM    STA         SET TERMINAL TABLE ADDRESS 
          ADN    VDPT        WRITE *VDPT* 
          CWD    DP 
          LJM    MGR.        EXIT WITHOUT TERMINAL TABLE WRITE
  
 SUS1     SHN    1           CLEAR INTERRUPT ACKNOWLEDGE BIT
          SCN    1
          SHN    12-0 
          STD    DC 
          RJM    WDC         REWRITE *VDCT* 
          SBN    VDCT-VCHT   READ *VCHT* FOR CHARACTER COUNT RECOVERY 
          CRD    CH 
          LDD    DC+4        CHECK FOR DRIVER ASSIGNMENT
          NJN    SUS2        IF PRESENT 
          LDN    /TLX/RES    REQUEST NEW ASSIGNMENT 
          RJM    ERQ
 SUS2     JMP    RWC         ENTER READ/WRITE CONTROL 
          TITLE  *RDF* FUNCTION REQUEST PROCESSORS. 
 TFR      SPACE  4,15 
**        TFR - PROCESS *RDF* FUNCTION REQUEST. 
* 
*         EXIT   TO FUNCTION REQUEST PROCESSOR -
*                  (A)    = (DP+3)- 
*                  (T3)   = FUNCTION REQUEST. 
*                  (VDCT) = FUNCTION REQUEST CLEARED. 
* 
*         USES   T1, T2, T3.
* 
*         CALLS  ERQ, WDC.
  
  
 TFR      BSS    0           ENTRY
          LDD    DC+4        SAVE REQUEST CODE
          STD    T3 
          LPN    77 
          SBN    TTFRL
          MJN    TFR1        IF LEGAL FUNCTION
          LCN    TTFRL       SET ILLEGAL FUNCTION 
 TFR1     ADN    TTFRL
          STD    T1 
          LDN    /TLX/RES    REQUEST ADDITIONAL OUTPUT
          RJM    ERQ
          STD    DC+4        CLEAR FUNCTION REQUEST 
          LDD    DC          CLEAR DRIVER REQUEST BIT 
          LPC    3777 
          STD    DC 
          RJM    WDC         WRITE VDCT 
          LDM    TTFR,T1     SET FUNCTION PROCESSOR ADDRESS 
          STD    T2 
          NJN    TFR2        IF A VALID ENTRY 
          JMP    MGR         EXIT 
  
 TFR2     LDD    DP+3        SET (A) = TERMINAL MODE FLAGS
          LJM    0,T2        ENTER PROCESSOR
 TTFR     SPACE  4,10 
**        TTFR - TABLE OF *RDF* FUNCTION REQUESTS.
  
  
 TTFR     INDEX 
  
          INDEX  /1TD/BGI,BGI   BEGIN INPUT 
          INDEX  /1TD/CFD,CFD   CLEAR FULL DUPLEX 
          INDEX  /1TD/HUP,HUP   HANG UP THE PHONE 
          INDEX  /1TD/IIP,IIP   ISSUE INPUT PROMPT
          INDEX  /1TD/LGI,LGI   PROCESS LOGIN 
          INDEX  /1TD/SCE,SCE   SET/CLEAR EXTENDED MODE 
          INDEX  /1TD/SDU,SUS   SUSPEND DRIVER FOR USER BREAK 
          INDEX  /1TD/SEP,SEP   SET EVEN PARITY 
          INDEX  /1TD/SFD,SFD   SET FULL DUPLEX 
          INDEX  /1TD/SNM,SNM   SET NORMAL MODES
          INDEX  /1TD/SOP,SOP   SET ODD PARITY
          INDEX  /1TD/STT,STT   SET TERMINAL TYPE 
  
          INDEX  /1TD/REQL
 TTFRL    EQU    *-TTFR 
 BGI      SPACE  4,15 
**        BGI - BEGIN INPUT.
* 
*         ISSUES *START TAPE READER* CONTROL CODE IF TERMINAL 
*         IS IN *TAPE* MODE.  CONTROL IS THEN TRANSFERRED 
*         TO THE *READ* PROCESSOR.
* 
*         ENTRY  (DC) = BIT 2**0 SET IF *TAPE* MODE.
* 
*         EXIT   TO *RDM* - 
*                  *DC1* ISSUED IF TERMINAL IN *TAPE* MODE. 
* 
*         MACROS RETURN.
  
  
 BGI      BSS    0           ENTRY
          LDD    DC          CHECK FOR *TAPE* MODE
          LPN    1
          ZJN    BGI1        IF NOT IN *TAPE* MODE
          LDC    .CDC1       ISSUE *DC1* TO START TAPE READER 
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
 BGI1     RETURN RDM         ENTER *READ* MODE
 CFD      SPACE  4,15 
**        CFD - CLEAR *FULL DUPLEX* FLAG. 
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *MGR* - 
*                  (DP+3) = *FULL DUPLEX* CLEARED.
  
  
 CFD      BSS    0           ENTRY
          LPC    7677        CLEAR *FULL DUPLEX* FLAG 
          STD    DP+3 
          JMP    MGR         EXIT 
 IIP      SPACE  4,20 
**        IIP - ISSUE INPUT PROMPT. 
* 
*         ISSUE INPUT PROMPT CHARACTER IF TRANSPARENT, BINARY,
*         OR AUTO MODE IS NOT SET.
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *WTM* TO ISSUE PROMPT MESSAGE - 
*                  PROMPT MESSAGE WRITTEN TO POT. 
*                  (DP+2) = 0.
*                  (CH+2) = 0.
*                TO *RWC* IF *TRANSPARENT*, *AUTO*, OR
*                *BINARY* MODE. 
*                  /TLX/RES EXECUTIVE REQUEST ISSUED. 
* 
*         USES   T0 - T4. 
* 
*         CALLS  ERQ, STA, SWA. 
  
  
 IIP      BSS    0           ENTRY
          SHN    21-2        CHECK TERMINAL MODE
          MJN    IIP1        IF *TRANSPARENT* MODE
          LPN    1
          NJN    IIP2        IF *BINARY* MODE 
          LDD    DC 
          LPN    2
          NJN    IIP2        IF *AUTO* MODE 
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADK    VSTT        READ *VSTT*
          CRD    T0 
          LDD    T0          CHECK FOR NO-PROMPT MODE 
          LPN    40 
          NJN    IIP2        IF NO-PROMPT MODE
          STD    CH+2        CLEAR ESCAPE CONTROL 
          STD    DP+2        CLEAR WORD POINTER 
          RJM    SWA         SET WORD ADDRESS IN OUTPUT POT 
          CWM    IIPA,ON     WRITE PROMPT TO POT
          JMP    WTM         ENTER WRITE MODE 
  
 IIP1     LDN    0           CLEAR INPUT POINTER
          STD    DP+2 
 IIP2     LDN    /TLX/RES    REQUEST NEXT MESSAGE 
          RJM    ERQ
          JMP    RWC         WAIT FOR *BGI* REQUEST 
  
  
 IIPA     DATA   4L? "EB"    INPUT PROMPT 
          CON    0,0,0
 LGI      SPACE  4,15 
**        LGI - PROCESS USER LOGIN. 
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *LIN* TO COMPLETE LOGIN - 
*                  (DP - DP+2) = 0. 
*                  (CH - CH+4) = 0. 
* 
*         USES   T7.
* 
*         CALLS  ERQ. 
* 
*         MACROS RETURN.
  
  
 LGI      BSS    0           ENTRY
          LPC    200         RETAIN *BLKEDIT* TERMINAL TYPE 
          STD    T7 
          LDD    DP          CHECK POT ASSIGNMENT 
          ZJN    LGI1        IF NONE
          STD    RQ+3        DROP POTS
          LDN    /TLX/DRT 
          RJM    ERQ
 LGI1     LDN    ZERL        CLEAR CONTROL WORDS
          CRD    DP 
          CRD    CH 
          LDD    T7          RESET TERMINAL TYPE
          STD    DP+3 
          RETURN LIN         ENTER LOGIN
 SCE      SPACE  4,15 
**        SCE - SET/CLEAR EXTENDED MODE.
* 
*         SET/CLEAR EXTENDED TRANSMISSION MODE DEPENDING
*         UPON MODE IN *VDCT*.
* 
*         CALLS  CEM. 
  
  
 SCE      BSS    0           ENTRY
          RJM    CEM
          JMP    MGR         EXIT 
 SEP      SPACE  4,15 
**        SEP - SET *EVEN* PARITY.
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *MGR* - 
*                  (DP+3) = PARITY RESET TO *EVEN*. 
*                  (PY)   = PARITY RESET TO *EVEN*. 
  
  
 SEP      BSS    0           ENTRY
          SCN    1           CLEAR *ODD* PARITY FLAG
          STD    DP+3 
          LDN    0           CLEAR *ODD* PARITY BIT 
          STD    PY 
          JMP    MGR         EXIT 
 SFD      SPACE  4,15 
**        SFD - SET *FULL DUPLEX* FLAG. 
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *MGR* - 
*                  (DP+3) = *FULL DUPLEX* SET 
  
  
 SFD      BSS    0           ENTRY
          LPC    7677        SET FULL-DUPLEX FLAG 
          LMD    HN 
          STD    DP+3 
          JMP    MGR         EXIT 
 SNM      SPACE  4,15 
**        SNM - SET NORMAL MODES. 
* 
*         CLEARS EXTENDED MODE AND ODD PARITY.
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *SEP* - 
*                  (A) = (DP+3), *EXTENDED MODE* CLEARED. 
  
  
 SNM      BSS    0           ENTRY
          SCN    2           CLEAR *EXTENDED* MODE
          JMP    SEP         SET EVEN PARITY
 SOP      SPACE  4,15 
**        SOP - SET *ODD* PARITY. 
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *MGR* - 
*                  (DP+3) = PARITY SET TO *ODD*.
*                  (PY)   = PARITY SET TO *ODD*.
  
  
 SOP      BSS    0           ENTRY
          SCN    1           SET *ODD* PARITY FLAG
          LMN    1
          STD    DP+3 
          LDC    1S7         SET *ODD* PARITY BIT 
          STD    PY 
          JMP    MGR         EXIT 
 STT      SPACE  4,15 
**        STT - SET TERMINAL TYPE.
* 
*         SET TERMINAL TYPE TO *BLKEDIT* OR TO *TTY*. 
* 
*         ENTRY  (A)  = (DP+3). 
*                (T3) = FUNCTION REQUEST -
*                     = 6/TYPE, 6/. 
*                       TYPE = 0 IF *TTY* 
*                            = 1 IF *BLKEDIT*.
* 
*         EXIT   TO *MGR* - 
*                  (DP+3) = NEW TERMINAL TYPE.
  
  
 STT      BSS    0           ENTRY
          LPC    -200        CLEAR CURRENT TERMINAL TYPE
          STD    DP+3 
          LDD    T3          CHECK TYPE REQUESTED 
          SHN    -6 
          ZJN    STT1        IF *TTY* 
          LDC    200         SET *BLKEDIT*
          RAD    DP+3 
 STT1     JMP    MGR         EXIT 
          SPACE  4,10 
          QUAL
  
 CTO      EQU    /CTL/CTO 
 LINPE    EQU    /CTL/LINPE 
 MGR      EQU    /CTL/MGR 
 MGR$     EQU    /CTL/MGR$
 MGR=     EQU    /CTL/MGR=
 RWC      EQU    /CTL/RWC 
 RDM      TITLE  READ MODE. 
          QUAL   RDM
 RDM      SPACE  4,30 
**        RDM - READ MODE ENTRY PROCESSOR.
* 
*         ENTRY  (DP+1) = FIRST POT FOR INPUT LINE. 
*                (DP+2) = 3/FIRST WORD OF LINE, 
*                         1/INPUT INITIATED,
*                         1/POT REQUESTED,
*                         3/CURRENT WORD OF LINE, 
*                         4/CURRENT CHARACTER OF LINE.
* 
*                FOR SPECIAL INPUT PROCESSING - 
*                (DP+3)  *TRANSPARENT INPUT* STATUS.
*                (DP+3)  *BINARY INPUT* STATUS. 
* 
*                (CH) = BINARY INPUT TERMINATION CHARACTER. 
*                (CH+1) = BINARY INPUT TERMINATION COUNT. 
* 
*         EXIT   TO *ARD* IF *ASCII* FORMAT READ -
*                  (A)    = INPUT DATA. 
*                  (DI)   = INPUT DATA. 
*                  (DP+4) = *ARD*.
*                TO *BRD* IF NOS *BINARY* FORMAT READ - 
*                  (A)    = INPUT DATA. 
*                  (DI)   = INPUT DATA. 
*                  (DP+4) = *BRD*.
*                TO *TTM* IF NO INPUT POT AVAILABLE FOR DATA. 
  
  
 RDM      BSS    0           ENTRY
          LDD    DP          CHECK FIRST POT ASSIGNED 
          ZJN    RDM4        IF NO INPUT POT
          LDD    DP+3        CHECK BINARY TRANSMISSION
          SHN    21-3 
          PJN    RDM2        IF NOT SET 
          LDD    CH+1        CHECK BINARY COUNT 
          NJN    RDM1        IF SET 
          LCN    10 
          RAD    DP+3        CLEAR BINARY MODE
          UJN    RDM2 
  
 RDM1     LDC    BRD         SET BINARY READ
          UJN    RDM3 
  
 RDM2     LDC    ARD         SELECT READ PROCESSOR
 RDM3     STD    DP+4        SET PROCESSOR ADDRESS
          LDD    DI          SET (A) = INPUT DATA 
          LJM    0,DP+4      ENTER PROCESSOR
  
*         PROCESS LACK OF INPUT POT.  IF THE INPUT DATA HAS 
*         NO NEED TO BE TRANSLATED AND STORED IT WILL BE IGNORED. 
*         IF THE DATA IS VALID, A DIAGNOSTIC MESSAGE WILL BE
*         ISSUED TO THE TERMINAL OPERATOR.
  
 RDM4     LDD    DI          GET INPUT CHARACTER
          LPC    177
          STD    T7 
          LDM    TINT,T7     TRANSLATE CHARACTER
          SHN    -7 
          ZJN    RDM5        IF NOT SPECIAL CHARACTER 
          LMN    /TRN/NLI 
          NJN    RDM5        IF NOT NULL INPUT
          JMP    MGR         IGNORE CHARACTER 
  
 RDM5     LDN    RILM        *RE-ENTER LAST LINE* 
          LJM    TTM         ISSUE TERMINAL MESSAGE 
 ARD      TITLE  READ MODE - *ASCII* READ PROCESSOR.
 ARD      SPACE  4,25 
**        ARD - *ASCII* TERMINAL READ.
* 
*         PROCESSES INPUT DATA FROM *ASCII* MODE TERMINAL.
* 
*         ENTRY  (A)    = INPUT DATA. 
*                (DI)   = INPUT DATA. 
*                (DP+4) = *ARD*.
* 
*         EXIT   TO *EIC* IF INPUT RECEIVED - 
*                  (DI) = INPUT DATA. 
*                  (T7) = LOWER 7 BITS OF INPUT.
*                  (DO) = 0 IF NOT FULL DUPLEX. 
*                       = INPUT DATA IF FULL DUPLEX.
*                TO *CTO* IF NO INPUT RECEIVED -
*                  (DP+4) = *ARD*.
*                TO *DLO* IF LOST-DATA CONDITION ON LINE. 
*                TO PROCESSOR IF SPECIAL CHARACTER RECEIVED.
* 
*         USES   T1, T2.
* 
*         CALLS  EMD. 
  
  
 ARD      BSS    0           ENTRY
          NJN    ARD1        IF CHARACTER RECEIVED
          LJM    CTO         CHECK TIME-OUT 
  
 ARD1     SHN    21-11       CHECK CHARACTER STATUS 
          PJN    ARD2        IF NOT LOST DATA 
          LJM    DLO         PROCESS LOST DATA
  
*         ISSUE INPUT TO OUTPUT OR CLEAR (DO), DEPENDING
*         UPON TERMINAL DUPLEX MODE.
  
 ARD2     SHN    11-21       EXTRACT CHARACTER
          LPC    4377        ASSUME ECHOPLEX MODE 
          STD    DO 
          LPC    177         EXTRACT DATA BITS
          STD    T7 
          RJM    EMD         ENTER OPERATOR MESSAGE DATA
          LDD    DP+3        CHECK ECHOPLEX MODE
          LPC    100
          NJN    ARD3        IF SET 
          STD    DO          CLEAR OUTPUT 
  
*         TRANSLATE INPUT CHARACTER.
  
 ARD3     LDM    TINT,T7     READ TRANSLATION TABLE ENTRY 
          STD    T7          SAVE TRANSLATION 
          SHN    -7          CHECK FOR SPECIAL PROCESSING 
          NJN    ARD5        IF SPECIAL PROCESSING REQUIRED 
          LDD    F7 
          NJN    ARD7        IF START OF *F7* SEQUENCE DETECTED 
 ARD4     LJM    EIC         ENTER INPUT CHARACTER
  
  
*         PROCESS SPECIAL READ CHARACTER. 
  
 ARD5     STD    T1          SET PROCESSOR INDEX
          LMN    /TRN/CLW 
          ZJN    ARD6        IF LOWER CASE *W*
          LDD    F7 
          NJN    ARD7        IF START OF *F7* SEQUENCE DETECTED 
 ARD6     LDM    TRSP-1,T1   SET PROCESSOR ADDRESS
          STD    T2 
          LDD    DP+3        SET (A) = (DP+3) 
          LJM    0,T2        ENTER PROCESSOR
  
*         START OF *F7* SEQUENCE DETECTED BUT NOT FINISHED. 
*         THAT IS, FOLLOWING THE 1E (HEX), A 77 (HEX) WAS NOT 
*         RECEIVED. 
  
 ARD7     SBN    2
          ZJN    ARD8        IF PREVIOUS CHARACTER IS SET UP
          LDD    DI          CURRENT CHARACTER WILL BE NEXT 
          STM    SVMA 
          AOD    F7 
          LDK    .CRS        PROCESS PREVIOUS CHARACTER 
          STD    DI 
          UJP    ARD1        EXTRACT CHARACTER
  
 ARD8     STD    F7          CLEAR *F7* FLAG
          UJN    ARD4        ENTER INPUT CHARACTER
 TRSP     SPACE  4,10 
**        TRSP - TABLE OF SPECIAL READ CHARACTER PROCESSORS.
  
  
 TRSP     BSS    0
          QUAL   TRN
          LOC    1
  
 CES      CON    /RDM/CES    CHECK ESCAPE STATUS
 CLW      CON    /RDM/CLW    CHECK LOWER CASE *W* 
 CRS      CON    /RDM/CRS    CHECK *RS* 
 CRT      CON    /RDM/CRT    CARRIAGE RETURN
 DEL      CON    /RDM/DEL    DELETE (RUBOUT)
 DLN      CON    /RDM/DLN    LINE DELETE
 DPC      CON    /RDM/DPC    DELETE PREVIOUS CHARACTER
 EOT      CON    /RDM/EOT    END OF TRANSMISSION
 NLI      CON    /RDM/NLI    NULL INPUT 
 ECI      CON    /RDM/ECI    ESCAPE CHARACTER INPUT 
 CLN      CON    /RDM/CLN    COLON
 BRK      CON    /RDM/BRK    BREAK
 ETX      CON    /RDM/ETX    ETX
  
          LOC    *O 
          NOREF  CES,NLI
          QUAL   *
 RDM      TITLE  READ MODE - *BINARY* READ PROCESSOR. 
 BRD      SPACE  4,15 
**        BRD - BINARY READ PROCESSOR.
* 
*         ENTRY  (A)    = INPUT DATA CHARACTER. 
*                (DI)   = INPUT DATA CHARACTER. 
*                (CH)   = INPUT TERMINATION CHARACTER.
*                (CH+1) = INPUT LINE CHARACTER COUNT. 
*                (DP+4) = *BRD*.
* 
*         EXIT   TO *CLI* TO PROCESS COMMAND LINE.
*                TO *DLO* IF LOST DATA. 
*                TO *SLI* TO PROCESS SOURCE LINE. 
* 
*         CALLS  ERQ, WDC.
  
  
 BRD      BSS    0           ENTRY
          NJN    BRD1        IF INPUT RECEIVED
          LJM    CTO         CHECK TIME-OUT 
  
 BRD1     STD    T7          SAVE INPUT CHARACTER 
          SHN    21-11       CHECK *LOST DATA* BIT
          PJN    BRD2        IF *LOST DATA* NOT SET 
          LJM    DLO         PROCESS DATA LOST
  
 BRD2     LDD    DP+3        CHECK *FULL DUPLEX*
          LPC    100
          ZJN    BRD3        IF NOT SET 
          LDD    DI          ISSUE INPUT CHARACTER TO OUTPUT
          LPC    4377 
 BRD3     STD    DO          SET/CLEAR OUTPUT BUFFER
          LDD    CH          SAVE INPUT TERMINATOR CHARACTER
          STD    CH+2 
          LDD    T7          FORMAT INPUT CHARACTER 
          LPC    4300 
          STD    CH          SET UPPER HALF FOR *WIC* 
          LDD    T7          SET LOWER HALF FOR *WIC* 
          LPN    77 
          STD    T7 
          AOD    DP+2        ADVANCE INPUT BYTE NUMBER
          RJM    WIC         WRITE INPUT CHARACTER
          AOD    CH+3        ADVANCE INPUT CHARACTER COUNT
          SHN    -14
          ZJN    BRD4        IF NO OVERFLOW 
          STD    RQ+2        REQUEST ACCOUNTING MESSAGE 
          LDN    /TLX/IAM 
          RJM    ERQ
 BRD4     LDD    CH+2        RESTORE TERMINATOR 
          STD    CH 
          SHN    6
          MJN    BRD5        IF NO TERMINATOR SPECIFIED 
          SHN    -6 
          LMD    T7 
          LPC    177
          ZJN    BRD6        IF TERMINATOR RECIEVED 
 BRD5     SOD    CH+1        DECREMENT CHARACTER COUNT
          SBN    1
          MJN    BRD6        IF END OF BINARY INPUT 
          JMP    MGR         RETURN TO MANAGER
  
*         TERMINATE BINARY READ OPERATION.
  
 BRD6     LDN    0           ENTER END-OF-LINE
          STD    CH 
          STD    DO          CLEAR OUTPUT 
          STD    T7 
          STD    CH+1        CLEAR CHARACTER COUNT
          STD    CH+2        CLEAR ESCAPE CONTROL 
          AOD    DP+2        WRITE END OF LINE
          RJM    WIC
          LCN    10          CLEAR BINARY INPUT 
          RAD    DP+3 
          LDD    DC          CHECK TERMINAL STATUS
          SHN    21-6 
          MJN    CLI         IF *READ DATA* 
          LJM    SLI         PROCESS SOURCE LINE INPUT
          TITLE  READ MODE - MAIN ROUTINES. 
 CLI      SPACE  4,15 
**        CLI - PROCESS COMMAND LINE INPUT. 
* 
*         TRANSMITS THE COMMAND LINE TO *RDF*.
* 
*         CALLS  ERQ. 
* 
*         EXIT   TO *RWC* - 
*                  (DO) = *LF* IF *TAPE* MODE.
*                  INPUT POTS RELEASED TO EXECUTIVE.
*                  (DP) = 0.
  
  
CLI       BSS    0           ENTRY
          LDD    DP          SET FIRST POT OF LINE
          STD    RQ+3 
          LDD    DP+2        SET FIRST WORD 
          SHN    -11
          STD    RQ+2 
          LDN    /TLX/CLI    REQUEST COMMAND LINE INPUT 
          RJM    ERQ
          STD    DP          CLEAR FIRST POT
          STD    DP+2        CLEAR POINTERS 
          LDD    DC          CHECK TERMINAL STATUS
          LPN    1
          ZJN    CLI1        IF NOT IN *TAPE* MODE
          LDK    .CLF        ISSUE *LF* TO TERMINAL 
          STD    DO 
 CLI1     JMP    RWC         ENTER READ/WRITE CONTROL 
 DLO      SPACE  4,15 
**        DLO - PROCESS LOST DATA.
* 
*         NOTIFY *RDF* THAT A LOST DATA CONDITION OCCURRED ON THE 
*         TERMINAL LINE.
* 
*         EXIT   TO *NIP* TO PROCESS LOST DATA -
*                  (RQ+2) = 1.
  
  
 DLO      BSS    0           ENTRY
          LDN    1           SET LOST-DATA BIT
          STD    RQ+2 
          LJM    NIP         PROCESS LOST DATA
 EIC      SPACE  4,20 
**        EIC - ENTER INPUT CHARACTER.
* 
*         ENTERS INPUT CHARACTER IN INPUT AND COUNTS CHARACTER. 
*         IF THE LINE CHARACTER COUNT EXCEEDS THE MAXIMUM, AN 
*         OVERFLOW MESSAGE WILL BE ISSUED.
* 
*         ENTRY  (T7) = CHARACTER TO BE ENTERED.
*                (DP+4) = *ARD*.
* 
*         EXIT   TO *MGR* IF NO OVERFLOW -
*                  (CH+1) = LINE CHARACTER COUNT INCREMENTED. 
*                TO *TTM* IF LINE OVERFLOW. 
* 
*         CALLS  WIC. 
  
  
 EIC      BSS    0           ENTRY
          RJM    WIC         WRITE INPUT CHARACTER TO INPUT POT 
          AOD    CH+1        INCREMENT LINE CHARACTER COUNT 
          SBK    VXLL 
          PJN    EIC1        IF LINE OVERFLOW 
          JMP    MGR         REENTER ASCII READ PROCESSOR 
  
*         PROCESS INPUT LINE OVERFLOW.
  
 EIC1     LDN    LOFM        SET MESSAGE POINTER
          LJM    TTM         ISSUE TERMINAL MESSAGE 
 EIL      SPACE  4,15 
**        EIL - END OF INPUT LINE.
* 
*         TERMINATES INPUT FOR THE CURRENT LINE AND CALLS 
*         THE APPROPRIATE END OF LINE PROCESSOR.
* 
*         EXIT   (CH+1) = 0.
*                (CH+2) = 0.
*                (DP+3) = *TRANSPARENT* MODE CLEARED. 
*                TO *CLI* IF COMMAND LINE INPUT.
*                TO *RDM* IF OPERATOR MESSAGE ISSUED. 
*                TO *SLI* IF SOURCE LINE INPUT. 
* 
*         CALLS  EOM, ERQ, RPC, WIC.
* 
*         MACROS ADCBM. 
  
  
 EIL      BSS    0           ENTRY
          RJM    EOM         ENTER OPERATOR MESSAGE 
          LDD    DP+2        CHECK CHARACTER POSITION 
          LPN    1
          NJN    EIL1        IF LOWER CHARACTER 
  
*         ENTER *BLANK* AS UPPER CHARACTER IF PREVIOUS CHARACTER
*         IS A *COLON* (00).
  
          LDD    CH+1        CHECK LINE CHARACTER COUNT 
          ZJN    EIL3        IF START OF LINE 
          LDD    MA          SAVE POINTER WORD
          CWD    DP 
          RJM    RPC         READ PRECEDING CHARACTER 
          STD    T7 
          LDD    MA          RESTORE POINTER WORD 
          CRD    DP 
          LDD    T7          CHECK PRECEDING CHARACTER
          NJN    EIL3        IF NOT COLON 
          LDN    1R          ENTER BLANK
          STD    T7 
          RJM    WIC
  
*         ENTER *BLANK* AS LOWER CHARACTER IF NOT IN *TRANSPARENT*
*         MODE, ELSE ENTER NULL (00). 
  
 EIL1     LDD    DP+3        CHECK FOR TRANSPARENT MODE 
          LPN    4
          ZJN    EIL2        IF NOT TRANSPARENT MODE
          LDN    1R 
 EIL2     LMN    1R 
          STD    T7 
          RJM    WIC
  
*         ENTER NULL (00) AS UPPER CHARACTER TO FORCE END-OF-LINE.
  
 EIL3     LDN    0           ENTER END OF LINE
          STD    T7 
          RJM    WIC
          LDD    DP+3        CLEAR *TRANSPARENT* MODE 
          SCN    4
          STD    DP+3 
  
*         COMPLETE END OF LINE PROCESSING.
  
          LDD    CH+1        ADVANCE INPUT CHARACTER COUNT
          RAD    CH+3 
          SHN    -14
          ZJN    EIL4        IF NO OVERFLOW 
          STD    RQ+2 
          LDN    /TLX/IAM    REQUEST ISSUE ACCOUNTING MESSAGE 
          RJM    ERQ
 EIL4     STD    CH+1        CLEAR INPUT LINE CHARACTER COUNT 
          STD    CH+2        CLEAR ESCAPE CONTROL 
          LDD    DC          CHECK TERMINAL STATUS
          SHN    21-6 
          MJN    EIL6        IF *READ DATA*, PROCESS AS COMMAND 
          SHN    6-2
          MJN    EIL5        IF *TEXT* MODE, PROCESS AS SOURCE
          LDD    DP+2        READ FIRST WORD OF LINE
          LPC    7000 
          SHN    6
          ADD    DP 
          SHN    3
          ADCBM 
          CRD    CM 
          LDD    CM          CHECK FIRST CHARACTER
          SHN    -6 
          SBN    1R0
          MJN    EIL6        IF NOT DIGIT 
          SBN    1R9+1-1R0
 EIL5     MJN    SLI         IF DIGIT 
 EIL6     LJM    CLI         PROCESS COMMAND LINE 
 ESC      SPACE  4,20 
**        ESC - PROCESS ESCAPE CODES. 
* 
*         ENTERS UPPER AND LOWER HALVES OF ESCAPE 
*         CHARACTER (74XX OR 76XX). 
* 
*         ENTRY  (T7) = ESCAPE CODE CHARACTER.
*                       BIT 2**6 SET IF ESCAPE 1 (76XX).
*                       BIT 2**6 CLEAR IF ESCAPE 2 (74XX).
*                (DP+4) = *ARD*.
* 
*         EXIT   ESCAPE CODE WRITTEN TO INPUT POT.
*                TO *EIC* TO COMPLETE LOWER 6 BITS OF CHARACTER - 
*                  (T7) = CHARACTER.
* 
*         USES   CH+2.
* 
*         CALLS  WIC. 
  
  
 ESC      BSS    0           ENTRY
          LDD    T7          SAVE CHARACTER 
          STD    CH+2 
          SHN    -5          SET PROPER ESCAPE CODE 
          LPN    2
          ADN    74 
          STD    T7 
          RJM    WIC         WRITE ESCAPE CODE
          LDD    CH+2        SET DISPLAY CODE 
          LPC    177         PRESERVE ESCAPE BIAS 
          STD    T7 
          JMP    EIC         ENTER REMAINDER OF CHARACTER 
 NIP      SPACE  4,15 
**        NIP -  NO INPUT POT AVAILABLE.
* 
*         NOTIFY *RDF* THAT NO INPUT WAS AVAILABLE AND
*         ISSUE *RE-ENTER LAST LINE* MESSAGE TO TERMINAL. 
* 
*         ENTRY  (RQ+2) = 0 IF NO INPUT POT AVAILABLE.
*                       = 1 IF DATA LOST ON LINE. 
* 
*         EXIT   TO *TTM* TO ISSUE MESSAGE. 
* 
*         CALLS  ERQ. 
  
  
 NIP      BSS    0           ENTRY
          LDN    /TLX/DLO    REQUEST LOST DATA PROCESSING 
          RJM    ERQ
          LDN    RILM        SET RE-ENTER LINE MESSAGE
          LJM    TTM         ISSUE TERMINAL MESSAGE 
 SLI      SPACE  4,15 
**        SLI - SOURCE LINE INPUT.
* 
*         TRANSMITS FIRST POT OF DATA TO EXECUTIVE AS SOURCE
*         INPUT IF MORE THAN ONE POT OF SOURCE LINE(S). 
* 
*         EXIT   TO *ARD* TO WAIT FOR ADDITIONAL INPUT -
*                  DATA TRANSMITTED TO EXECUTIVE AS SOURCE INPUT. 
* 
*         CALLS  RIN. 
* 
*         MACROS RETURN.
  
  
 SLI      BSS    0           ENTRY
          LDD    DP+2        SAVE *POT REQUESTED* FLAG
          LPC    360
          LMC    400         SET *INPUT INITIATED*
          STD    DP+2 
          SHN    5
          RAD    DP+2 
          RJM    RIN         RELEASE INPUT DATA 
          RETURN ARD         REENTER READ PROCESSOR 
          TITLE  READ MODE - SPECIAL CHARACTER PROCESSORS.
 BRK      SPACE  4,20 
**        BRK - PROCESS BREAK.
* 
*         (1)    IGNORE BREAK IF IN *TAPE* MODE.
*         (2)    INTERRUPT JOB IF ACTIVE. 
*         (3)    DELETE LINE IF INPUT ACTIVE AND IF NOT 
*                IN *TRANSPARENT* MODE. 
*         (4)    ENTER *BRK* CHARACTER AND TERMINATE LINE 
*                IF IN *TRANSPARENT* MODE.
*         (5)    EXIT FROM *TEXT* MODE IF IN *TEXT* MODE. 
* 
*         EXIT   TO *RDM* IF IN *TAPE* MODE.
*                TO */CTL/INT* TO INTERRUPT JOB.
*                TO *TTM* TO ISSUE *DEL* MESSAGE. 
*                TO *EIL* TO TERMINATE INPUT LINE.
*                TO *ETX2* TO EXIT FROM *TEXT* MODE.
* 
*         CALLS  STA, WIC.
* 
*         MACROS RETURN.
  
  
 BRK      BSS    0           ENTRY
          LDD    DC          CHECK TERMINAL STATUS
          LPN    1
          ZJN    BRK1        IF NOT IN *TAPE* MODE
          JMP    RDM         IGNORE CHARACTER 
  
 BRK1     LDK    100D/MNCT+1 START TIMER FOR BREAK
          STD    DO 
 BRK2     RETURN *           REENTER
          NJN    BRK1        IF BREAK STILL IN PROGRESS 
          SOD    DO 
          NJN    BRK2        IF NOT TIMED-OUT 
          LDD    CH+1        CHECK INPUT LINE 
          NJN    BRK4        IF LINE NOT EMPTY
  
*         PROCESS EMPTY INPUT LINE. 
  
          LDD    DC          CHECK TERMINAL STATUS
          LPN    4
          ZJN    BRK3        IF NOT *TEXT* MODE 
          LJM    ETX2        EXIT *TEXT* MODE 
  
*         INTERRUPT JOB IF ACTIVE.
  
 BRK3     RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VROT        READ *VROT*
          CRD    CM 
          LDD    CM+4        CHECK JOB ACTIVITY 
          LMN    1
          ZJN    BRK5        IF NO JOB ACTIVITY 
          LDK    TIET        SET INTERRUPT CODE 
          LJM    /CTL/INT    INTERRUPT JOB
  
*         PROCESS NON-EMPTY INPUT LINE. 
  
 BRK4     LDD    DP+3        CHECK MODE 
          LPN    4
          NJN    BRK6        IF TRANSPARENT MODE
 BRK5     LDN    DELM        SET *DEL* MESSAGE
          LJM    TTM         ISSUE TERMINAL MESSAGE 
  
*         ENTER TRANSPARENT MODE DATA.
  
 BRK6     LDN    76          STORE ESCAPE 
          STD    T7 
          RJM    WIC
          LDN    40          STORE DISPLAY CODE 
          STD    T7 
          RJM    WIC
          RETURN EIL         ENTER END-OF-LINE PROCESSING 
 CES      SPACE  4,20 
**        CES - CHECK ESCAPE STATUS.
* 
*         DETERMINES WHETHER AN ESCAPE CHARACTER IS TO
*         BE ENTERED AS AN ESCAPE CHARACTER, AS AN UPPER
*         CASE CHARACTER, OR IS TO BE IGNORED.
* 
*         ENTRY  (T7)   = TRANSLATED CHARACTER. 
*                (DP+4) = *ARD*.
* 
*         EXIT   TO *ESC* TO ENTER ESCAPE CHARACTER IF
*                  TERMINAL IS IN EXTENDED MODE.
*                TO *EIC* TO ENTER UPPER CASE CHARACTER IF NOT
*                  IN EXTENDED MODE AND ALPHA CHARACTER.
* 
  
  
 CES      BSS    0           ENTRY
          LDD    DP+3        CHECK TERMINAL MODE
          LPN    6
          ZJN    CES1        IF NOT EXTENDED MODE 
          JMP    ESC         ENTER ESCAPE CHARACTER 
  
 CES1     LDD    T7          CHECK CHARACTER TRANSLATION
          SHN    21-6 
          PJN    CES2        IF ESCAPE 2
          LDD    T7          CHECK LOWER SIX BITS 
          LPN    77 
          ZJN    CES2        IF *7600*
          SBN    1RZ+1
          PJN    CES2        IF NOT LOWER CASE ALPHA
          JMP    EIC         ENTER AS UPPER CASE ALPHA
  
 CES2     JMP    MGR         IGNORE CHARACTER 
 CLN      SPACE  4,20 
**        CLN - PROCESS *COLON* INPUT (64 CHARACTER SET). 
* 
*         ENTERS *COLON* CHARACTER AS *00* IF IN NORMAL INPUT 
*         MODE OR AS *7604* IF IN EXTENDED INPUT MODE.
* 
*         ENTRY  (A) = (DP+3).
*                (T7) = CHARACTER.
* 
*         EXIT   COLON *00* WRITTEN IF NORMAL MODE. 
*                TO *ESC* TO ENTER *7604* IF EXTENDED MODE -
*                  (T7) = 204B. 
* 
*         CALLS  WIC. 
* 
*         NOTE   IF THE SYSTEM IS IN 63 CHARACTER SET MODE, 
*                A COLON WILL BE BE AUTOMATICALLY ENTERED AS
*                *63* AND THIS ROUTINE WILL NOT BE CALLED.
  
  
 CLN      BSS    0           ENTRY
          LPN    6           CHECK TERMINAL MODE
          NJN    CLN1        IF *ASCII* OR *TRANSPARENT*
          LDC    200         SET UP *00* CHARACTER
          STD    T7 
          RJM    WIC         WRITE INPUT CHARACTER
          JMP    MGR         EXIT 
  
 CLN1     LDC    204         SET UP *7604* CHARACTER
          STD    T7 
          JMP    ESC         ENTER ESCAPE CHARACTER 
CLW       SPACE  4,15 
**        CLW - CHECK LOWER CASE *W*. 
* 
*         THE SEQUENCE NORMALLY ISSUED BY THE *F7* KEY ON 
*         A CDC 721 TERMINAL IS *RS*, LOWER CASE W.  THIS 
*         ROUTINE DETECTS THE SECOND CHARACTER IN THE SEQUENCE. 
* 
*         ENTRY  (F7) = 0, IF *RS* NOT PREVIOUSLY DETECTED. 
*                     .NE. 0 IF *RS* HAS BEEN DETECTED. 
* 
*         EXIT   TO *EIC* IF *F7* SEQUENCE NOT DETECTED.
*                TO *MGR* IF *F7* SEQUENCE HAS BEEN DETECTED. 
* 
*         USES   DO.
* 
*         CALLS  RTD, RPI.
  
  
 CLW      BSS    0           ENTRY
          LDD    F7 
          NJN    CLW1        IF *F7*
          JMP    EIC         ENTER INPUT CHARACTER
  
 CLW1     LDN    0
          STD    DO 
          STD    F7 
          RJM    CRR         CHECK RE-REQUESTED BIT 
          LPN    20 
          ZJN    CLW2        IF NOT RE-REQUESTED
          RJM    RTD         RELEASE AND DELAY
          RJM    /CTL/RPI    INITIALIZE FOR REGAINING PORT ACCESS 
 CLW2     JMP    MGR         RETURN 
 CRS      SPACE  4,15 
**        CRS - CHECK *RS*. 
* 
*         THE SEQUENCE NORMALLY ISSUED BY THE *F7* KEY ON 
*         A CDC 721 TERMINAL IS *RS*, LOWER CASE W.  THIS 
*         ROUTINE DETECTS THE FIRST CHARACTER IN THE SEQUENCE 
*         AND SETS A FLAG IF IT IS NOT ALREADY SET. 
* 
*         ENTRY  (F7) = 0, IF *RS* NOT PREVIOUSLY DETECTED. 
*                     .NE. 0 IF *RS* HAS BEEN DETECTED. 
* 
*         EXIT   TO *EIC* IF *RS* HAS ALREADY BEEN DETECTED.
*                TO *MGR* IF *RS* WAS NOT DETECTED BEFORE.
  
  
 CRS      BSS    0           ENTRY
          LDD    F7 
          ZJN    CRS1        IF *RS* NOT DETECTED 
          JMP    EIC         ENTER INPUT CHARACTER
  
 CRS1     STD    DO          CLEAR INPUT CHARACTER IN ECHOPLEX MODE 
          AOD    F7          SET START OF *F7* SEQUENCE 
          JMP    MGR         RETURN 
 CRT      SPACE  4,15 
**        CRT - PROCESS CARRIAGE RETURN.
* 
*         ISSUE *LINE FEED* TO TERMINAL AND ENTER END-OF-LINE 
*         PROCESSOR.
* 
*         ENTRY  (CH+1) = INPUT LINE CHARACTER COUNT. 
*                (DP+4) = *ARD*.
* 
*         EXIT   ASCII *LF* ISSUED TO TERMINAL IF NOT IN
*                  *TAPE* MODE. 
*                TO *EIL* TO TERMINATE INPUT LINE.
*                TO *MGR* IF CHARACTER TO BE IGNORED. 
  
  
 CRT      BSS    0           ENTRY
          LDD    DP+3        CHECK TERMINAL TYPE
          SHN    21-7 
          MJN    CRT2        IF *BLKEDIT* 
          LDD    DC          CHECK TERMINAL STATUS
          LPN    1
          ZJN    CRT1        IF NOT IN *TAPE* MODE
          LDD    CH+1        CHECK LINE CHARACTER COUNT 
          NJN    CRT2        IF NOT EMPTY INPUT LINE
          JMP    MGR         IGNORE CHARACTER 
  
 CRT1     LDC    .CLF        ISSUE LINE FEED
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
 CRT2     JMP    EIL         ENTER END-OF-LINE PROCESSOR
 DEL      SPACE  4,15 
**        DEL - PROCESS *DEL* CHARACTER.
* 
*         PROCESS *DEL* AS ESCAPE CHARACTER IF *BLKEDIT* TERMINAL,
*         ELSE PROCESS AS NULL INPUT. 
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *CES* IF *BLKEDIT* TERMINAL.
*                TO *NLI* IF NOT *BLKEDIT* TERMINAL - 
*                  (A) = (DP+3).
  
  
 DEL      BSS    0           ENTRY
          SHN    21-7        CHECK TERMINAL TYPE
          MJP    CES         IF *BLKEDIT* 
          LDD    DP+3 
          JMP    NLI         PROCESS AS NULL INPUT
 DLN      SPACE  4,20 
**        DLN - PROCESS DELETE LINE.
* 
*         ENTRY  (A) = (DP+3).
*                (CH+1) = INPUT LINE LENGTH.
*                (DP+4) = *ARD*.
* 
*         EXIT   TO *CES* IF *BLKEDIT* TERMINAL.
*                TO *ESC* TO ENTER CHARACTER. 
*                TO *MGR* TO IGNORE CHARACTER.
*                TO *TTM* TO ISSUE LINE DELETE MESSAGE. 
  
  
 DLN      BSS    0           ENTRY
  
*         PROCESS AS ESCAPE CHARACTER IF *BLKEDIT* TERMINAL.
  
          SHN    21-7        CHECK TERMINAL TYPE
          MJP    CES         IF *BLKEDIT* 
  
*         ENTER CHARACTER IF IN *TRANSPARENT* MODE. 
  
          LDD    DP+3        CHECK FOR *TRANSPARENT* MODE 
          LPN    4
          ZJN    DLN1        IF NOT SET 
          JMP    ESC         ENTER ESCAPE CHARACTER 
  
*         IGNORE CHARACTER IF NULL INPUT LINE.
  
 DLN1     STD    DO          SUPPRESS DUPLEX ECHO-BACK
          LDD    CH+1        CHECK INPUT LINE LENGTH
          NJN    DLN2        IF NOT NULL LINE 
          JMP    MGR         IGNORE CHARACTER 
  
*         DELETE INPUT LINE.
  
 DLN2     LDN    DELM        *DEL*
          JMP    TTM         ISSUE TERMINAL MESSAGE 
 DPC      SPACE  4,15 
**        DPC - DELETE PRECEEDING CHARACTER.
* 
*         DELETE CHARACTER PRECEDING CHARACTER IF NOT *BLKEDIT* 
*         TERMINAL.  ENTER CHARACTER IF *BLKEDIT*.
* 
*         ENTRY  (A) = (DP+3).
* 
*         EXIT   TO *CES* IF *BLKEDIT* TERMINAL.
*                TO *MGR* IF CHARACTER DELETED- 
*                  (DP+1) = CURRENT POT BACKED UP.
*                  (DP+2) = CURRENT WORD AND CHARACTER BACKED UP. 
*                  (CH+1) = CHARACTER COUNT DECREMENTED.
*                  (OMCC) = CHARACTER COUNT DECREMENTED.
* 
*         USES   T0 - T5. 
* 
*         CALLS  BUP, RPC, SWA. 
  
  
 DPC      BSS    0           ENTRY
          SHN    21-7        CHECK TERMINAL TYPE
          MJP    CES         IF *BLKEDIT* 
          LDM    OMCC        DECREMENT OPERATOR MESSAGE CHARACTER COUNT 
          ZJN    DPC1        IF ZERO
          SOM    OMCC 
 DPC1     LDD    CH+1        CHECK LINE CHARACTER COUNT 
          NJN    DPC2        IF NONZERO 
          JMP    MGR         EXIT 
  
 DPC2     SOD    CH+1        DECREMENT LINE CHARACTER COUNT 
          RJM    BUP         BACK UP POINTERS 
          LDD    DP+2        CHECK CHARACTER NUMBER 
          SHN    21 
          PJN    DPC3        IF UPPER CHARACTER 
          LPN    7           SET BYTE 
          STD    T5 
          RJM    SWA         SET WORD ADDRESS 
          CRD    T0          READ WORD
          LDI    T5          EXTRACT UPPER CHARACTER
          SCN    77 
          STD    CH 
          LDN    0           CLEAR BYTE 
          STI    T5 
          RJM    SWA         SET WORD ADDRESS 
          CWD    T0          STORE WORD 
 DPC3     LDD    DP+3        CHECK *ASCII* MODE 
          LPN    6
          ZJN    DPC5        IF NOT SET 
          LDD    MA          SAVE POINTER WORD
          CWD    DP 
          RJM    RPC         READ PREVIOUS CHARACTER
          SBN    74 
          MJN    DPC4        IF NOT ESCAPE
          ZJN    DPC6        IF ESCAPE 2
          SBN    76-74
          ZJN    DPC6        IF ESCAPE 1
 DPC4     LDD    MA          RESTORE POINTER WORD 
          CRD    DP 
 DPC5     JMP    MGR         EXIT 
  
 DPC6     LDD    DP+2        CHECK CHARACTER NUMBER 
          SHN    21-0 
          PJN    DPC5        IF UPPER CHARACTER 
          LDI    T5          EXTRACT UPPER CHARACTER
          SCN    77 
          STD    CH 
          LDN    0           CLEAR BYTE 
          STI    T5 
          RJM    SWA         SET WORD ADDRESS 
          CWD    T0          STORE WORD 
          JMP    MGR         EXIT 
 EOT      SPACE  4,15 
**        EOT - END OF TRANSMISSION (*BLKEDIT* TERMINAL). 
* 
*         PROCESS *EOT* TERMINATOR OF INPUT LINE.  IF THE 
*         LINE IS NOT NULL, A CARRIAGE RETURN WILL BE TRANS-
*         MITTED TO THE TERMINAL.  IF THE LINE IS EMPTY, THE
*         LINE WILL BE IGNORED. 
* 
*         ENTRY  (A) = DP+3.
* 
*         EXIT   TO *CES* IF NOT *BLKEDIT* TERMINAL.
*                TO *EIL* IF *BLKEDIT* TERMINAL AND NOT NULL
*                  INPUT LINE.
*                TO *MGR* IF *BLKEDIT* TERMINAL AND NULL INPUT
*                  LINE.
* 
*         MACROS RETURN.
  
  
 EOT      BSS    0           ENTRY
          SHN    21-7        CHECK TERMINAL TYPE
          PJP    CES         IF NOT *BLKEDIT* 
          LDD    CH+1        CHECK LINE LENGTH
          ZJP    MGR         IF NULL
          LDC    .CCR        ISSUE *CR* 
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
          RETURN *           REENTER
          LDC    .CLF        ISSUE *LF* 
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
          RETURN EIL         ENTER INPUT LINE 
 ECI      SPACE  4,20 
**        ECI - ESCAPE CHARACTER INPUT. 
* 
*         DIRECTS PROCESSING OF *74* AND *76* INPUT CHARACTERS. 
*         IF IN EXTENDED OR TRANSPARENT MODE, THE *74* CODE IS
*         STORED AS  *7401* AND THE *76* CODE IS STORED AS
*         *7402*. 
* 
*         ENTRY  (A) = (DP+3).
*                (T7) = CHARACTER.
* 
*         EXIT   TO *EIC* TO ENTER SINGLE CHARACTER CODE IF 
*                  NOT IN EXTENDED MODE.
*                TO *ESC* TO ENTER ESCAPE CODE (7401 OR 7401) 
*                  IF IN EXTENDED MODE. 
  
  
 ECI      BSS    0           ENTRY
          LPN    6           CHECK TERMINAL MODE
          ZJN    ECI1        IF NEITHER *ASCII* NOR TRANSPARENT 
          JMP    ESC         ENTER ESCAPE CODE CHARACTERS 
  
 ECI1     LDD    T7          CONVERT TO SINGLE DISPLAY CODE 
          LPN    3
          SHN    1
          ADN    72 
          STD    T7 
          JMP    EIC         ENTER INPUT CHARACTER
 ETX      SPACE  4,15 
**        ETX - END OF TEXT.
* 
*         EXIT   TO *CES* IF INPUT LINE NOT EMPTY.
*                TO *CES* IF NOT IN TEXT MODE.
*                TO *RWC* AFTER EXITTING FROM *TEXT* MODE.
* 
*         CALLS  ERQ, WDC.
  
  
 ETX      BSS    0           ENTRY
          LDD    CH+1        CHECK INPUT LINE CHARACTER COUNT 
          NJN    ETX1        IF LINE NOT EMPTY
          LDD    DC          CHECK TERMINAL STATUS
          LPN    4
          NJN    ETX2        IF *TEXT* MODE 
 ETX1     LDD    DP+3 
          LJM    CES         CHECK ESCAPE STATUS
  
 ETX2     LDD    DC          CLEAR *INPUT REQUESTED*, *TEXT* MODE 
          LPC    7373 
          STD    DC 
          RJM    WDC         REWRITE *VDCT* 
          LDD    DP+1        GET POT TO BE DUMPED 
          STD    RQ+3 
          LDD    DP+2        EXTRACT WORD COUNT OF POT
          SHN    -4 
          LPN    7
          STD    RQ+2 
          LDN    /TLX/ETX    EXIT TEXT MODE REQUEST 
          RJM    ERQ
          STD    DP          CLEAR FIRST POT POINTER
          STD    DP+1        CLEAR CURRENT POT POINTER
          STD    DP+2        CLEAR POSITION WITHIN CURRENT POT
          JMP    RWC         ENTER READ/WRITE CONTROL 
 NLI      SPACE  4,15 
**        NLI - PROCESS NULL INPUT. 
* 
*         ENTRY  (A) = (DP+3).
*                (DP+4) = PROCESSING ADDRESS. 
* 
*         EXIT   TO *MGR* IF CHARACTER TO BE IGNORED. 
*                TO *EIC* IF CHARACTER TO BE ENTERED. 
*                TO *ESC* IF ESCAPE CHARACTER TO BE ENTERED.
  
  
 NLI      BSS    0           ENTRY
          LPN    4           CHECK *TRANSPARENT* MODE 
          ZJN    NLI1        IF NOT SET 
          LDD    CH+2 
          LPC    177
          ZJN    NLI1        IF NO CHARACTER DEFINED
          STD    T7          ENTER CHARACTER
          SHN    21-6        CHECK FOR ESCAPE 2 
          MJN    NLI2        IF ESCAPE 2
          LJM    EIC         ENTER INPUT CHARACTER
  
 NLI1     JMP    MGR         IGNORE CHARACTER 
  
 NLI2     LJM    ESC         ENTER ESCAPE CHARACTER 
 RDM      TITLE  READ MODE - SUBROUTINES. 
 EMD      SPACE  4,25 
**        EMD - ENTER OPERATOR MESSAGE DATA.
* 
*         ENTERS DATA FOR POSSIBLE OPERATOR MESSAGE INTO
*         THE OPERATOR MESSAGE BUFFER.  IN ORDER FOR THE
*         INPUT DATA TO BE CONSIDERED A CANDIDATE FOR AN
*         OPERATOR MESSAGE, THE FIRST CHARACTER OF INPUT
*         MUST BE AN ASCII *ESC* CHARACTER.  RECEIPT OF AN
*         ADDITIONAL ASCII *ESC* CHARACTER AFTER THE START OF 
*         THE MESSAGE WILL CAUSE THE MESSAGE TO BE NO LONGER
*         CONSIDERED A CANDIDATE FOR AN OPERATOR MESSAGE. 
* 
*         ENTRY  (T7)   = LOWER 7 BITS OF INPUT DATA. 
*                (CH+1) = LINE CHARACTER COUNT. 
*                (F7) = 0 IF START OF *F7* SEQUENCE NOT DETECTED. 
*                (OMCC) = OPERATOR MESSAGE CHARACTER COUNT. 
*                       = NONZERO IF POSSIBLE OPERATOR MESSAGE. 
* 
*         EXIT   DATA ENTERED IN OPERATOR MESSAGE BUFFER. 
*                (OMCC) = INCREMENTED IF POSSIBLE MESSAGE 
*                         CHARACTER.
*                       = 0 IF *ESC* RECEIVED AFTER START OF
*                         MESSAGE.
* 
*         USES   T1, T2.
  
  
 EMD      SUBR               ENTRY/EXIT 
          LDD    F7          CHECK FOR START OF *F7* SEQUENCE DETECTED
          NJN    EMDX        IF DETECTED
          LDD    CH+1        CHECK LINE CHARACTER COUNT 
          ADM    OMCC        ADD MESSAGE CHARACTER COUNT
          NJN    EMD2        IF EITHER IS NONZERO 
  
*         CHECK FIRST INPUT CHARACTER FOR *ESC* CODE. 
  
          LDD    T7          GET INPUT CHARACTER
          LMK    .AESC
          NJN    EMDX        IF NOT *ESC* 
          LDC    2L          SET BLANK IN BUFFER
          STM    OMBUF
 EMD1     AOM    OMCC        INCREMENT MESSAGE CHARACTER COUNT
          UJN    EMDX        RETURN 
  
*         CHECK FOR *ESC* AFTER START OF INPUT. 
  
 EMD2     SBD    CH+1        CHECK VALUE OF *OMCC*
          ZJN    EMDX        IF ZERO
          LDD    T7          GET INPUT CHARACTER
          SBK    .AESC
          NJN    EMD3        IF NOT *ESC* 
          STM    OMCC        CLEAR MESSAGE CHARACTER COUNT
          UJN    EMDX        RETURN 
  
*         TRANSLATE INPUT CHARACTER TO MESSAGE BUFFER.
  
 EMD3     ADK    .AESC-.ASP  CHECK CHARACTER VALUE
          MJN    EMDX        IF NOT TRANSLATABLE
          LDM    OMCC        CHECK BUFFER LENGTH
          SBK    68D
          PJP    EMDX        IF OVERFLOW, IGNORE CHARACTER
          LDM    TINT,T7     GET TRANSLATION
          LPN    77          MASK UPPER CASE BITS 
          STD    T1          SAVE TRANSLATION 
  
*         ENTER CHARACTER IN MESSAGE BUFFER.
  
          LDM    OMCC        GET BUFFER CHARACTER COUNT 
          SHN    22-1        SET CURRENT BYTE 
          STD    T2 
          SHN    1           SHIFT CHARACTER POSITION 
          LPN    1
          NJN    EMD4        IF LOWER CHARACTER 
          LDD    T1          STORE AS UPPER CHARACTER 
          SHN    6
          STM    OMBUF,T2 
          JMP    EMD1        INCREMENT CHARACTER COUNT
  
 EMD4     LDD    T1          STORE AS LOWER CHARACTER 
          RAM    OMBUF,T2 
          JMP    EMD1        INCREMENT CHARACTER COUNT
 EOM      SPACE  4,40 
**        EOM - ENTER OPERATOR MESSAGE. 
* 
*         CHECKS THE CONTENTS OF THE OPERATOR MESSAGE BUFFER
*         FOR A VALID OPERATOR MESSAGE.  IF THE BUFFER CONTENTS 
*         CONSTITUTE AN OPERATOR MESSAGE, THE MESSAGE WILL BE 
*         TRANSMITTED TO THE DSD *A,OPERATOR* DISPLAY BUFFER
*         AND THE INPUT LINE FROM WHICH THE MESSAGE WAS EX- 
*         TRACTED WILL BE DISCARDED.
* 
*         ENTRY  (OMCC) = MESSAGE CHARACTER COUNT.
*                       = ZERO IF NO POSSIBLE MESSAGE IN
*                         BUFFER. 
*                (OMBUF) = TRANSLATED MESSAGE.
* 
*         EXIT   TO CALLER IF NO MESSAGE ISSUED - 
*                  (OMCC) = 0.
*                TO *TTM* IF MESSAGE HAS BEEN ISSUED. 
*                  (A) = ADDRESS OF *READY* MESSAGE.
*                  (CH+1) = 0.
* 
*         ERROR  TO *TTM* TO ISSUE *CONSOLE BUSY* MESSAGE IF
*                OPERATOR DISPLAY BUFFER BUSY.
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         CALLS  STA, ZOM.
* 
*         MACROS MONITOR. 
  
  
 EOM      SUBR               ENTRY/EXIT 
          LDM    OMCC        CHECK MESSAGE LENGTH 
          ZJN    EOMX        IF ZERO
          SBN    4
          MJN    EOM1        IF TOO SHORT 
  
*         VALIDATE MESSAGE FORMAT.
  
          LDM    OMBUF       CHECK FIRST 2 CHARACTERS 
          LMC    2R M 
          NJN    EOM1        IF NOT * M*
          LDM    OMBUF+1     CHECK SECOND 2 CHARACTERS
          LMC    2RS= 
          ZJN    EOM2        IF *S=*
 EOM1     LDN    0           CLEAR MESSAGE LENGTH 
          STM    OMCC 
          JMP    EOMX        RETURN TO CALLER 
  
*         INTERLOCK OPERATOR DISPLAY BUFFER.
  
 EOM2     LDK    LDSP        READ *L* DISPLAY POINTER 
          CRD    CM 
          LDD    CM+2        GET *L* DISPLAY BUFFER ADDRESS 
          SHN    14 
          LMD    CM+3 
          SBK    LODS        SET FWA OF OPERATOR DISPLAY BUFFER 
          STD    CM+4 
          STM    EOMA+1 
          SHN    -14
          STD    CM+3 
          ADC    LDCI 
          STM    EOMA 
          LDN    0           FORMAT INTERLOCK REQUEST 
          STD    CM+1 
          STD    CM+2 
          MONITOR UTEM       ISSUE INTERLOCK REQUEST
          LDD    CM+1 
          ZJN    EOM3        IF INTERLOCK GRANTED 
          LDN    MBSY        * CONSOLE BUSY*
          LJM    TTM         ISSUE TERMINAL MESSAGE 
  
*         FORMAT DISPLAY BUFFER HEADER WORD.
  
 EOM3     RJM    ZOM         ZERO-FILL MESSAGE
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADK    VFST        READ *VFST* TO GET JSN 
          CRD    CM 
          LDD    TN          SET TERMINAL NUMBER IN HEADER
          ADC    2R00 
          STD    CM+2 
          LDN    0
          STD    CM+3 
          LDN    1           SET BUFFER BUSY BIT
          STD    CM+4 
  
*         COPY BUFFER HEADER AND MESSAGE TO DISPLAY BUFFER. 
  
          LDN    7           SET MESSAGE DATA LENGTH
          STD    T1 
 EOMA     LDC    *           WRITE BUFFER HEADER
          CWD    CM 
          ADN    1           WRITE BUFFER MESSAGE DATA
          CWM    OMBUF+2,T1 
  
*         SET OPERATOR MESSAGE FLAG IN DISPLAY BUFFER 
  
          LDN    1           FORMAT *UTEM* REQUEST
          STD    CM+1 
          LDN    0
          STD    CM+2 
          STD    CM+3 
          LDK    OPRL 
          STD    CM+4 
          LDD    MA          WRITE MESSAGE PARAMETERS 
          CWM    EOMB,ON
          MONITOR UTEM       ISSUE MONITOR REQUEST
  
*         EXIT TO *TTM* TO ISSUE *READY* MESSAGE. 
* 
*         ENTRY  (A) = ZERO (FROM *MONITOR* REQUEST). 
  
          STD    CH+1        CLEAR INPUT CHARACTER COUNT
          LDN    RDYM        SET MESSAGE ADDRESS
          JMP    TTM         ISSUE TERMINAL MESSAGE 
  
  
 EOMB     VFD    6/0,6/1,6/59D,42/1  *UTEM* PARAMETER WORD
 RIN      SPACE  4,15 
**        RIN - RELEASE INPUT POTS TO EXECUTIVE.
* 
*         TRANSMITS FILLED INPUT POTS TO *RDF* EXECUTIVE
*         VIA *RIN* REQUEST.
* 
*         ENTRY  (DP)   = FIRST POT OF INPUT LINE.
*                (DP+1) = CURRENT POT OF INPUT. 
* 
*         EXIT   FIRST THROUGH CURRENT POT RELEASED IF
*                  FIRST IS NOT THE CURRENT POT.
*                  (DP) = (DP+1). 
* 
*         CALLS  ERQ. 
  
  
 RIN      SUBR               ENTRY/EXIT 
          LDD    DP          SET FIRST POT
          STD    RQ+3 
          LMD    DP+1 
          ZJN    RIN1        IF FIRST POT .EQ. CURRENT POT
          LDD    DP+1        SET CURRENT POT
          STD    DP 
          STD    RQ+2 
          LDN    /TLX/RIN    RELEASE POT
          RJM    ERQ
 RIN1     STD    RQ+3        CLEAR REQUEST
          UJN    RINX        RETURN 
 RPC      SPACE  4,15 
**        RPC - READ PREVIOUS CHARACTER.
* 
*         ENTRY  NONE.
* 
*         EXIT   (A) = PREVIOUS CHARACTER.
*                IF PREVIOUS CHARACTER IS LOWER-
*                  (T0 - T0+4) = DATA WORD. 
*                  (T5) = BYTE NUMBER.
*                  (T6) = WORD NUMBER.
* 
*         USES   T0 - T5. 
* 
*         CALLS  BUP, SWA.
  
  
 RPC1     LDD    CH          SET CHARACTER
          SHN    -6 
  
 RPC      SUBR               ENTRY/EXIT 
          RJM    BUP         BACK UP POINTERS 
          LDD    DP+2        CHECK CHARACTER NUMBER 
          SHN    21 
          PJN    RPC1        IF UPPER CHARACTER 
          LPN    7           SET BYTE 
          STD    T5 
          RJM    SWA         SET WORD ADDRESS 
          CRD    T0 
          LDI    T5          SET CHARACTER
          LPN    77 
          UJN    RPCX        RETURN 
 WIC      SPACE  4,25 
**        WIC - WRITE INPUT CHARACTER.
* 
*         ENTRY  (T7) = CHARACTER.
*                (CH) = UPPER CHARACTER IF LOWER CHARACTER IS 
*                       TO BE STORED. 
*                IF (T7) = 0, AND UPPER CHARACTER IS TO BE PROCESSED, 
*                END OF LINE IS ASSUMED.  IN ORDER TO PREVENT 
*                CONFUSION BETWEEN THE DISPLAY CODE COLON *00* AND
*                END OF LINE, A *00* COLON IS PASSED TO *WIC* AS A
*                *200* CODE.
* 
*         EXIT   TO *NIP* IF NO INPUT POT.
* 
*         USES   T0 - T5. 
* 
*         CALLS  ERQ, RLT, SWA. 
* 
*         MACROS RETURN.
  
  
 WIC6     LPN    7           SET CURRENT BYTE 
          STD    T5 
          NJN    WIC7        IF NOT START OF NEW WORD 
          LDN    ZERL 
          UJN    WIC8 
  
 WIC7     RJM    SWA         SET CURRENT WORD ADDRESS 
 WIC8     CRD    T0 
          LDD    T7          MERGE UPPER AND LOWER CHARACTERS 
          LPN    77          MASK FOR COLON 
          LMD    CH 
          STI    T5          STORE BYTE 
          RJM    SWA         WRITE WORD TO CM POT 
          CWD    T0 
          LDI    T5 
          ADD    T7 
          ZJN    WIC2        IF  END OF LINE
          AOD    DP+2        ADVANCE CHARACTER
          LPN    17 
          LMN    12 
          ZJN    WIC2        IF END OF WORD 
*         UJN    WICX        RETURN 
  
*         WIC - ENTRY/EXIT. 
  
 WIC      SUBR               ENTRY/EXIT 
 WIC1     LDD    DP+2        CHECK CHARACTER NUMBER 
          SHN    21 
          MJN    WIC6        IF LOWER 
  
*         PROCESS UPPER CHARACTER.
  
          AOD    DP+2        ADVANCE CHARACTER POINTER
          LDD    T7          CHECK CHARACTER
          SHN    6           STORE UPPER CHARACTER
          STD    CH 
          NJN    WICX        IF NOT END OF LINE 
          UJN    WIC1        FORCE END OF LINE
  
*         PROCESS END OF WORD.
  
 WIC2     LDD    DP+2        CHECK WORD NUMBER
          SHN    -4 
          LPN    7
          LMN    7
          ZJN    WIC4        IF END OF POT
          LDD    DP+2        ADVANCE WORD NUMBER, RESET CHARACTER 
          SCN    17 
          ADN    20 
          STD    DP+2 
          SHN    -4          CHECK WORD NUMBER
          LPN    17 
          SBN    5
          MJN    WICX        RETURN IF WORD 5 NOT REACHED 
          SBN    3
          PJN    WICX        RETURN IF POT REQUESTED
          LDC    200         SET *POT REQUESTED*
          RAD    DP+2 
          RJM    RLT         READ NEXT POT LINK 
          NJN    WIC3        IF POT LINKED
          LDD    DP+1        SET CURRENT POT
          STD    RQ+3 
          LDN    /TLX/LPT    REQUEST POT
          RJM    ERQ
 WIC3     JMP    WICX        RETURN 
  
*         PROCESS END OF POT. 
  
 WIC4     LDD    DP+2        RESET WORD AND CHARACTER 
          LPC    7400 
          STD    DP+2 
          RJM    RLT         GET NEXT POT LINK
          ZJN    WIC5        IF POT NOT LINKED
          STD    DP+1        SET NEW CURRENT POT
          LDD    DP+3 
          LPN    10 
          ZJN    WIC3        IF NOT BINARY MODE, RETURN 
          LDD    DC          CHECK TERMINAL STATUS
          SHN    21-6 
          MJN    WIC3        IF *READ DATA* SET 
          RJM    RIN         RELEASE INPUT DATA 
          JMP    WICX        RETURN 
  
 WIC5     RETURN NIP         PROCESS NO-INPUT-POT 
 ZOM      SPACE  4,15 
**        ZOM - ZERO-FILL OPERATOR MESSAGE BUFFER.
* 
*         ZERO-FILLS THE OPERATOR MESSAGE BUFFER FROM THE LAST
*         CHARACTER ENTERED INTO THE BUFFER TO THE END OF THE 
*         BUFFER. 
* 
*         ENTRY  (OMCC) = NUMBER OF CHARACTERS IN BUFFER. 
* 
*         EXIT   BUFFER ZERO-FILLED.
* 
*         USES   T1.
  
  
 ZOM      SUBR               ENTRY/EXIT 
          LDM    OMCC        GET BUFFER CHARACTER COUNT 
          SHN    22-1        SET PPU BYTE COUNT 
          STD    T1 
          SHN    1           ADD LAST CHARACTER INDEX 
          LPN    1
          RAD    T1 
 ZOM1     SBK    37D         CHECK FOR END OF BUFFER
          PJN    ZOMX        IF BUFFER COMPLETE 
          LDN    0           CLEAR BUFFER BYTE
          STM    OMBUF,T1 
          AOD    T1          INCREMENT BUFFER INDEX 
          UJN    ZOM1        LOOP TO END OF BUFFER
          SPACE  4,10 
          QUAL
  
 RDM      EQU    /RDM/RDM 
 WTM      TITLE  WRITE MODE.
          QUAL   WTM
 WTM      SPACE  4,20 
**        WTM - WRITE MODE CONTROL. 
* 
*         DETERMINES WHETHER A WRITE OPERATION SHOULD BE IN NOS 
*         *BINARY* OR IN *ASCII* FORMAT AND BRANCHES TO THE FORMAT
*         WRITE PROCESSOR.
* 
*         ENTRY  (DP+1) = FIRST POT OF OUTPUT.
*                (DP+2), CURRENT WORD = FIRST WORD OF OUTPUT. 
*                (DP+3)  *BINARY TRANSMISSION* STATUS 
*                (CH+2) = ESCAPE CONTROL. 
* 
*         EXIT   TO *AWT* FOR *ASCII* FORMAT WRITE. 
*                TO *BWT* FOR NOS *BINARY* FORMAT WRITE.
* 
*         CALLS  ERQ, RLT.
  
  
 WTM      BSS    0           ENTRY
          RJM    RLT         CHECK POT LINK 
          NJN    WTM1        IF POT LINKED
          LDN    /TLX/RES    REQUEST MORE OUTPUT
          RJM    ERQ
 WTM1     LDD    DP+3        CHECK *BINARY TRANSMISSION*
          LPN    10 
          ZJN    AWT         IF *ASCII* WRITE 
          LJM    BWT         ENTER *BINARY* WRITE 
 AWT      TITLE  WRITE MODE - *ASCII* WRITE PROCESSOR.
 AWT      SPACE  4,50 
**        AWT - *ASCII* WRITE PROCESSOR.
* 
*         ISSUES *ASCII* CHARACTER DATA TO TERMINAL.
* 
*         ENTRY  (CH+2) = ESCAPE CONTROL. 
* 
*         EXIT   (CH+2) = ESCAPE CONTROL UPDATED. 
* 
*         ESCAPE CONTROL -
* 
*                4XXX  =  VALID CHARACTER POINTER XXX.
*                0100  =  ESCAPE 1. 
*                0200  =  ESCAPE 2. 
*                0300  =  *00* (POSSIBLE EOL) BYTE HAS BEEN 
*                         DETECTED.  THIS SITUATION WILL OCCUR
*                         WHEN THE LOWER CHARACTER OF AN
*                         OUTPUT BYTE IS FOUND TO BE ZERO.
*                         AT THIS POINT, FURTHER TESTING MUST 
*                         BE DONE TO DETERMINE WHETHER OR NOT 
*                         THIS ZERO CHARACTER IS PART OF
*                         AN END OF LINE OR IS FOLLOWED BY
*                         DATA.  THIS LATTER CONDITION IS A 
*                         FALSE END OF LINE AND THE ZERO
*                         CHARACTER MUST BE PROCESSED AS A
*                         COLON.
*                04XX  =  FALSE EOL HAS BEEN DETECTED.
*                         XX = NEXT OUTPUT CHARACTER. 
*                05XX  =  SUSPENDED CONTROL PROCESSING.  THIS 
*                         SITUATION OCCURS WHEN A CONTROL 
*                         CHARACTER PROCESSOR IS UNABLE TO
*                         TO DETERMINE WHETHER OR NOT A 
*                         SUSPECTED CONTROL CHARACTER IS
*                         FOLLOWED BY AN END OF LINE. 
*                         THIS WILL OCCUR WHEN THERE IS 
*                         NO FURTHER DATA IN THE CURRENT
*                         OUTPUT POTS AND THE DRIVER MUST 
*                         WAIT FOR FURTHER OUTPUT TO BE 
*                         ASSIGNED. 
  
  
 AWT      BSS    0           ENTRY
          RETURN *           REENTER
  
*         CHECK ESCAPE CONTROL. 
  
          LDD    CH+2        GET ESCAPE CONTROL 
          SHN    -6 
          ZJN    AWT1        IF NULL
          STD    T1 
          SBN    TECPL       TEST FOR VALID DATA BIT
          PJN    AWT1        IF VALID DATA SET
          LDM    TECP-1,T1   SET PROCESSOR ADDRESS
          STD    T2 
          LDD    CH+2        SAVE LOWER SIX BITS
          LPN    77 
          STD    T7 
          LJM    0,T2        PROCESS ESCAPE CONTROL 
  
*         GET NEXT OUTPUT CHARACTER.
  
 AWT1     RJM    ROC         GET NEXT CHARACTER 
          PJN    AWT3        IF NOT CONTROL BYTE
 AWT2     LJM    SOC         PROCESS CONTROL BYTE 
  
 AWT3     NJN    AWT4        IF NON-ZERO
          LJM    AWT11       CHECK POSSIBLE END OF LINE 
  
*         CHECK OUTPUT CHARACTER. 
  
 AWT4     SBN    74          CHECK FOR ESCAPE CHARACTER 
          MJN    AWT7        IF NOT ESCAPE 1 OR 2 
          ZJN    AWT5        IF ESCAPE 2
          SBN    76-74
          NJN    AWT7        IF NOT ESCAPE 1
          LCN    1
  
*         PROCESS ESCAPE CHARACTER. 
  
 AWT5     ADN    2           SET ESCAPE CHARACTER BIAS
          SHN    6
          STD    CH+2 
          LDD    DP+3 
          LPN    2
          ZJN    AWT7        IF NOT EXTENDED MODE 
 AWT6     RJM    ROC         GET NEXT OUTPUT CHARACTER
          MJN    AWT2        IF CONTROL BYTE
          ADD    CH+2        ADD ESCAPE CHARACTER BIAS
          STD    T7 
          ADC    -214 
          MJN    AWT7        IF LEGAL CHARACTER 
          LDN    0           IGNORE INVALID CHARACTER 
          STD    CH+2 
          LJM    AWT         LOOP FOR NEXT CHARACTER
  
*         CLEAR ESCAPE CONTROL. 
* 
*                (T7) = OUTPUT CHARACTER PLUS ESCAPE BIAS.
  
 AWT7     LDN    0           CLEAR ESCAPE CONTROL 
          STD    CH+2 
  
*         TRANSLATE AND ISSUE OUTPUT CHARACTER. 
* 
*                (T7) = OUTPUT CHARACTER PLUS ESCAPE BIAS.
  
 AWT8     RJM    TOC         TRANSLATE OUTPUT CHARACTER 
          SHN    6
          PJN    AWT10       IF SPECIAL PROCESSING REQUIRED 
          AOD    CH+1        ADVANCE CHARACTER COUNT/LINE 
          AOD    CH+4        ADVANCE OUTPUT CHARACTER COUNT 
          SHN    -14
          ZJN    AWT9        IF NO OVERFLOW (4096 CHARACTERS) 
          LDN    /TLX/IAM    REQUEST ISSUE ACCOUNTING MESSAGE 
          RJM    ERQ
  
*         ISSUE TRANSLATED CHARACTER TO OUTPUT. 
  
 AWT9     LDD    T7          GET TRANSLATED CHARACTER 
          STD    DO          ISSUE CHARACTER TO OUTPUT
          LJM    AWT         LOOP FOR NEXT CHARACTER
  
*         PERFORM SPECIAL PROCESSING. 
  
 AWT10    SHN    -6          SET SPECIAL PROCESSOR INDEX
          STD    T1 
          LDM    TWSP,T1     GET CHARACTER PROCESSOR ADDRESS
          LJM    MGR=        ENTER CHARACTER PROCESSOR
  
*         PROCESS POSSIBLE END OF LINE. 
  
 AWT11    LDC    300         SET OUTPUT CONTROL 
          STD    CH+2 
 AWT12    RJM    ROC         GET NEXT CHARACTER 
          PJN    AWT15       IF NOT CONTROL BYTE
          LJM    SOC
  
*         ENTRY FROM CONTROL CHARACTER PROCESSORS.
* 
*               (A) = FALSE CONTROL BYTE VALUE. 
  
 AWT13    STD    CM          SAVE FALSE CONTROL BYTE
          LDD    CH+2        CHECK OUTPUT CONTROL 
          LMC    300
          NJN    AWT14       IF NOT SUSPENDED COLON 
          STD    CM 
          SOD    DP+2        BACK UP CHARACTER
 AWT14    LDD    CM 
 AWT15    ADC    400         SET ESCAPE CONTROL 
          STD    CH+2 
          LDN    00          SET COLON
          STD    T7 
          LJM    AWT8        TRANSLATE AND ISSUE CHARACTER
 TECP     SPACE  4,10 
**        TECP - TABLE OF ESCAPE CONTROL PROCESSORS.
  
  
 TECP     BSS    0
          LOC    1
  
          CON    AWT6        *0100* - ESCAPE 1. 
          CON    AWT6        *0200* - ESCAPE 2. 
          CON    AWT12       *0300* - POSSIBLE *EOL*. 
          CON    AWT4        *04XX* - FALSE *EOL*.
          CON    SOC1        *05XX* - SUSPENDED OUTPUT CONTROL. 
  
 TECPL    BSS    0
          LOC    *O 
 TWSP     SPACE  4,10 
**        TWSP - TABLE OF SPECIAL WRITE PROCESSORS. 
  
  
 TWSP     BSS    0
          QUAL   TRN
          LOC    0
  
 NLO      CON    /WTM/AWT    NULL CHARACTER (IGNORED) 
 ACR      CON    /WTM/ACR    CARRIAGE RETURN
 ANL      CON    /WTM/ANL    NEW LINE (CR/LF) 
  
          LOC    *O 
          NOREF  NLO
          QUAL   *
 BWT      TITLE  WRITE MODE - *BINARY* WRITE PROCESSOR. 
 BWT      SPACE  4,15 
**        BWT - BINARY WRITE. 
* 
*         WRITES NOS *BINARY* MODE DATA TO TERMINAL.
* 
*         CALLS  ROC, ERQ.
  
  
 BWT      BSS    0           ENTRY
          RETURN *           REENTER
          RJM    ROC         READ OUTPUT CHARACTER
          MJP    SOC         IF CONTROL BYTE
          LDI    T5          READ ENTIRE 12-BIT CHARACTER 
          STD    DO          STORE OUTPUT 
          SHN    21-13       CHECK FORMAT 
          PJN    BWT2        IF NOT BINARY FORMAT 
          AOD    DP+2        ADVANCE CHARACTER COUNT
          AOD    CH+4 
          SHN    -14
          ZJN    BWT1        IF NO OVERFLOW 
          LDN    /TLX/IAM    ISSUE ACCOUNTING MESSAGE 
          RJM    ERQ
 BWT1     JMP    MGR         REENTER
  
*         TERMINATE BINARY MODE OUTPUT. 
  
 BWT2     LCN    10          CLEAR BINARY MODE BIT
          RAD    DP+3 
          SOD    DP+2        RESET CHARACTER POSITION 
          LDN    0           CLEAR ESCAPE CONTROL 
          STD    CH+2 
          LDN    1           SET CHARACTER COUNT NON-ZERO 
          STD    CH+1 
          JMP    AWT         ENTER *ASCII* WRITE
 WTM      TITLE  WRITE MODE - MAIN ROUTINES.
 ISN      SPACE  4,15 
**        ISN - ISSUE ASCII *NUL* CHARACTERS. 
* 
*         ENTRY  (A) = DEFAULT REPEAT COUNT.
* 
*         EXIT   TO *AWT* TO CONTINUE WRITE OPERATION.
* 
*         CALLS  DDC, SRC.
  
  
 ISN      BSS    0           ENTRY
          RJM    DDC         DETERMINE DELAY COUNT
          SHN    14 
          ADK    .CNUL       SET *NUL* CHARACTER
          LMD    PY          TOGGLE ODD PARITY
          RJM    SRC         SEND REPEATED CHARACTER
          JMP    AWT         CONTINUE WRITE 
 SOC      SPACE  4,15 
**        SOC - SET OUTPUT CONTROL. 
* 
*         ENTRY (A)  = OUTPUT CONTROL BYTE SET BY *ROC*.
*               (T7) = LOWER 12 BITS OF *ROC* CONTROL BYTE. 
* 
*         EXIT   TO CONTROL BYTE PROCESSOR. 
* 
*         CALLS  ERQ, RLT.
  
  
 SOC4     RJM    RLT         CHECK POT LINK 
          NJN    SOC5        IF LINKED
          LDC    /CTL/RWC1   SET REENTRY ADDRESS
          STD    DP+4 
          UJN    SOC6 
  
*         SET NEXT POT. 
  
 SOC5     STD    DP          SET POT POINTER
          LDD    DP+1        DROP CURRENT POT 
          STD    RQ+3 
          LDN    /TLX/DRP 
          RJM    ERQ
          LDD    DP          SET CURRENT POT
          STD    DP+1 
          RJM    RLT         CHECK THIS POT LINK
          NJN    SOC7        IF POT LINKED
  
*         REQUEST ADDITIONAL OUTPUT.
  
 SOC6     LDN    /TLX/RES    REQUEST ADDITIONAL OUTPUT
          RJM    ERQ
 SOC7     LDN    0           CLEAR LINE POSITION
          STD    DP+2 
          STD    DO          CLEAR OUTPUT 
          JMP    MGR         EXIT 
  
  
*         SOC - ENTRY.
  
 SOC      BSS    0           ENTRY
          SHN    21-20       CHECK BIT 20 
          MJN    SOC4        IF SET, THEN END OF POT
          AOD    DP+2        ADVANCE CHARACTER POINTER
  
*         CHECK CONTROL BYTE. 
  
 SOC1     LDD    T7          CHECK CONTROL BYTE 
          ZJN    SOC3        IF END OF LINE 
          LMN    2R"IB" 
          ZJN    SOC2        IF INTERNAL END OF BLOCK 
          LDD    DP+3        CHECK MODE 
          SHN    21-3 
          PJN    SOC2        IF NOT BINARY
          SOD    DP+2        TERMINATE BINARY MODE
          LJM    BWT2 
  
*         EXIT TO CONTROL BYTE PROCESSOR. 
  
 SOC2     LDN    /TLX/RES    REQUEST ADDITIONAL OUTPUT
          RJM    ERQ
 SOC3     LDM    TSOC,T7     SET REENTRY ADDRESS
          LJM    MGR=        REENTER
 TTM      SPACE  4,25 
**        TTM - ISSUE TERMINAL MESSAGE. 
* 
*         ISSUES MESSAGE TO TERMINAL. 
* 
*         ENTRY  (A) = ADDRESS OF FORMATTED MESSAGE.
* 
*         EXIT   (CM+2) = 0.
*                (OMCC) = 0.
*                TO *RDM* AFTER MESSAGE IS COMPLETE IF THERE
*                  ARE INPUT POTS AVAILABLE - 
*                  (DP+1) = CURRENT POT RESET TO START OF LINE. 
*                  (DP+2) = CURRENT WORD RESET TO START OF LINE.
*                TO *RWC* AFTER MESSAGE IS COMPLETE IF THERE
*                  IS NO INPUT POT AVAILABLE. 
* 
*         USES   (DP+1) = MESSAGE ADDRESS POINTER.
*                (DP+2) = MESSAGE BYTE POINTER. 
* 
*         CALLS  SEM. 
* 
*         MACROS RETURN.
  
  
 TTM      BSS    0           ENTRY
          ADC    7700        SET MESSAGE PSEUDO-POT-POINTER 
          STD    DP+1 
          LDD    DP+2        CLEAR BYTE POINTER 
          LPC    7600 
          STD    DP+2 
          LDN    0           CLEAR OUTPUT CONTROL 
          STD    CH+2 
          STM    OMCC        CLEAR OPERATOR MESSAGE 
          RJM    SEM         SET EXTENDED MODE
          RETURN AWT         ENTER WRITE MODE 
  
  
*         ENTERED HERE FROM SUBROUTINE *ROC* TO EXTRACT NEXT
*         MESSAGE CHARACTER TO BE RETURNED TO WRITE PROCESSOR.
  
 TTM1     LDM    TTMA-7700,DP+1  GET NEXT CHARACTER 
          STD    T7 
          LDD    DP+2        TOGGLE BYTE INDEX
          LMN    1
          STD    DP+2 
          LPN    1
          NJN    TTM2        IF UPPER CHARACTER 
          AOD    DP+1        INCREMENT MESSAGE ADDRESS
          LDD    T7 
          LPN    77          EXTRACT LOWER CHARACTER
          UJN    TTM3 
  
 TTM2     LDD    T7          EXTRACT UPPER CHARACTER
          SHN    -6 
 TTM3     STD    T7          SET CHARACTER
          ZJN    TTM5        IF END OF MESSAGE
          SOD    CH+4        PREVENT CHARACTER COUNT ON MESSAGE 
          LDD    T7 
          LJM    ROCX        ISSUE CHARACTER
  
*         RESET LINE POINTERS AND EXIT. 
  
 TTM5     LDD    DP+2        RESET CURRENT WORD 
          SHN    -5 
          LMD    DP+2 
          SCN    17 
          STD    DP+2 
          LDD    DP          RESET CURRENT POT
          STD    DP+1 
          ZJN    TTM6        IF NO INPUT POT
          RJM    CEM         CLEAR EXTENDED MODE
          LJM    RDM         RE-ENTER READ MODE 
  
 TTM6     LDN    /TLX/RES    RESTART JOB
          RJM    ERQ
          JMP    RWC         ENTER READ/WRITE CONTROL 
  
  
**        TABLE OF TERMINAL MESSAGES. 
  
 TTMA     BSS    0
          LOC    0
  
 DELM     DATA   Z+ *DEL*"NL"+
 LOFM     DATA   Z+"NL" *OVL*"NL"+
 MBSY     DATA   Z+"NL" *CONSOLE BUSY*"NL"+ 
 RDYM     DATA   Z+"NL" *READY*"NL"+
 RILM     DATA   Z+"NL" *RE-ENTER LAST LINE*"NL"+ 
  
          LOC    *O 
          TITLE  WRITE MODE - OUTPUT CONTROL BYTE PROCESSORS. 
 TSOC     SPACE  4,10 
**        TSOC - TABLE OF OUTPUT CONTROL BYTE PROCESSORS. 
*         INDEXED BY CONTROL CODE.
  
  
 TSOC     BSS    0
          LOC    0
  
          CON    EOL         END OF LINE
          CON    EOB         END OF BLOCK 
          CON    ECB         END OF CORRESPONDENCE BLOCK
          CON    ATI         AUTO INPUT 
          CON    LOF         LOG OFF USER 
          CON    TPI         TRANSPARENT INPUT
          CON    BNI         BINARY INPUT 
          CON    BNO         BEGIN BINARY OUTPUT
          CON    EOL         UNUSED - TREAT AS END OF LINE
          CON    BEO         BEGIN EXTENDED OUTPUT
          CON    EOL         UNUSED - TREAT AS END OF LINE
          CON    EOS         END OF STRING
          CON    IEB         INTERNAL END OF BLOCK
          CON    ETI         EXECUTIVE AUTO MODE INPUT
  
 TSOCL    BSS    0
          LOC    *O 
 EOL      SPACE  4,15 
***       0000   END OF OUTPUT LINE.
* 
*         THIS CONTROL BYTE CAUSES THE TERMINAL TO BE POSITIONED TO 
*         THE BEGINNING OF THE NEXT LINE.  THE REMAINDER OF THE WORD
*         IN WHICH THE *END OF LINE* OCCURS IS DISCARDED. 
* 
*         EXIT   (CH+1) = 0.
*                (CH+2) = 0.
*                TO *ANL* IF IN *ASCII* MODE. 
*                TO *AWT* IF IN BINARY MODE.
* 
*         CALLS  CEM. 
  
  
 EOL      BSS    0           ENTRY
          LDN    0           CLEAR LINE CHARACTER COUNT 
          STD    CH+1 
          STD    CH+2        CLEAR ESCAPE CONTROL 
          LDD    DP+2        CLEAR WORD AND CHARACTER POINTERS
          SCN    17 
          LMN    12 
          STD    DP+2 
          LDD    DP+3        CHECK FOR BINARY MODE
          LPN    10 
          NJN    EOL1        IF BINARY MODE 
          RJM    CEM         CLEAR/RESET EXTENDED MODE
          JMP    ANL         ISSUE *NEW LINE* 
  
 EOL1     LMD    DP+3        CLEAR BINARY MODE
          STD    DP+3 
          JMP    AWT         CONTINUE OUTPUT
 EOB      SPACE  4,20 
***       0001   END OF OUTPUT BLOCK. 
* 
*         THIS CONTROL BYTE IS USED TO TERMINATE OUTPUT BEFORE
*         THE END OF POT IS REACHED.  THE REMAINDER OF THE POT IS 
*         DISCARDED AND THE TERMINAL IS NOT POSITIONED TO THE 
*         START OF THE NEXT LINE. 
* 
*         THIS CONTROL BYTE MUST BE FOLLOWED BY AN END-OF-LINE. 
* 
*         EXIT   TO *RWC* FOR NEXT OPERATION -
*                  (DP+2) = 0.
*                  (CH+1) = 0.
*                  (CH+2) = 0.
* 
*         CALLS  CLT. 
  
  
 EOB      BSS    0           ENTRY
          LDN    1RA
          RJM    CLT         CHECK FOR LINE TERMINATION 
 EOB1     LDN    0           CLEAR CHARACTER POSITION 
          STD    DP+2 
          STD    CH+1        RESET CHARACTER COUNT
          STD    CH+2        CLEAR ESCAPE CONTROL 
          JMP    RWC
 ECB      SPACE  4,20 
***       0002   END OF CORRESPONDENCE BLOCK. 
* 
*         SPECIAL END OF BLOCK PROCESSING FOR POSSIBLE
*         CORRESPONDENCE TERMINALS. 
*         THIS CODE ENABLES INPUT IF CORRESPONDENCE TERMINAL, 
*         OTHERWISE IT IS TREATED AS A *0001* BYTE. 
* 
*         THIS CONTROL BYTE MUST BE FOLLOWED BY AN END-OF-LINE. 
* 
*         NOTE   THIS CONTROL BYTE IS NOT MEANINGFUL TO THE 
*                THE TWO-PORT MULTIPLEXER DRIVER. 
* 
*         EXIT   TO *EOB1* TO TERMINATE OUTPUT BLOCK. 
* 
*         CALLS  CLT. 
  
  
  
 ECB      BSS    0           ENTRY
          LDN    1RB         CHECK FOR LINE TERMINATOR
          RJM    CLT
          JMP    EOB1        PROCESS AS *EOB* 
 ATI      SPACE  4,20 
***       0003   INITIATE AUTO-MODE INPUT.
* 
*         THIS CONTROL BYTE MUST BE FOLLOWED BY AN END OF LINE
*         AND TERMINATES OUTPUT.
*         THE WORD CONTAINING THE AUTO INPUT CONTROL BYTE IS
*         MOVED TO THE FIRST WORD OF THE POT FOR SUBSEQUENT 
*         INPUT WHICH MUST FOLLOW IMMEDIATELY.
* 
*         EXIT   TO *RDM* TO READ IN AUTO MODE. 
*                TO *RWC* TO PROCESS DRIVER REQUEST.
* 
*         ERROR  TO *AWT13* IF INVALID REQUEST. 
* 
*         CALLS  CLT, CKL, ERQ, MDS, RSW, SWA.
* 
*         MACROS RETURN.
  
  
 ATI7     LDN    1RC         REENTER WRITE MODE 
*         LDN    1RM         (CONTROL BYTE 0015B) 
 ATIB     EQU    *-1
          JMP    AWT13       CONTINUE WRITE 
  
*         ATI - ENTRY.
  
 ATI      BSS    0           ENTRY
          LDC    LDNI+1RC    CONTROL BYTE TO REENTER WRITE MODE 
          STM    ATIB 
          LDC    MDS         SET UP CALL TO SUBROUTINE MDS
          STM    ATIA 
          LDN    1RC
  
*         ATI1 - ENTRY FROM *ATI* AND *ETI*.
* 
*         ENTRY  (ATIA) = *MDS* IF CALLED FROM *ATI*. 
*                       = *WDS* IF CALLED FROM *ETI*. 
*                (ATIB) = DISPLAY CHARACTER FOR ERROR PROCESSING. 
  
 ATI1     RJM    CLT         CHECK FOR LINE TERMINATION 
          RJM    CKL         CHECK *LIST* STATUS
          MJN    ATI7        IF FILE BEING LISTED 
          LDD    DC          CHECK TERMINAL STATUS
          LPN    2
          NJN    ATI3        IF AUTO INPUT MODE SET 
          LDD    DC+4        CHECK VDCT INTERLOCK 
          ZJN    ATI2        IF NOT INTERLOCKED 
          LDN    2           SET AUTO INPUT MODE
          RAD    DC 
          RJM    WDC         WRITE VDCT 
          UJN    ATI3        SET WORD/BYTE NUMBER 
  
 ATI2     LDN    /TLX/SAI    REQUEST SET AUTO INPUT 
          RJM    ERQ
 ATI3     LDD    DP+2        SET BYTE NUMBER
          SHN    -1 
          LPN    7
          STD    T5 
          RJM    SWA         SET WORD ADDRESS 
          CRD    T0          READ DATA WORD 
          LDN    0           CLEAR BYTE 
          STI    T5 
          STD    CH+2        CLEAR ESCAPE CONTROL 
          RJM    MDS         RESTORE WORD AND SET FIRST WORD
*         RJM    RSW         (CONTROL BYTE 0015)
 ATIA     EQU    *-1
          LDD    DP+2 
          SCN    17 
          SHN    5
          LMD    DP+2 
          SBN    2           DECREMENT CHARACTER NUMBER 
          STD    DP+2 
          LPN    17 
          STD    CH+1        SET INPUT LINE CHARACTER COUNT 
          LDD    DP+3        CLEAR BINARY AND EXTENDED MODES
          SCN    12 
          STD    DP+3 
  
*         WAIT FOR EXECUTIVE TO SET *AUTO* MODE.
  
 ATI4     RETURN *           REENTER
          LDD    DC          CHECK TERMINAL STATUS
          SHN    21-1 
          MJN    ATI5        IF AUTO MODE SET 
          LDD    DC+4        CHECK FOR DRIVER REQUEST 
          NJP    RWC         IF DRIVER REQUEST
          JMP    MGR         REENTER
  
 ATI5     LPN    2           SET NORMAL/EXTENDED MODE BIT 
          RAD    DP+3 
          RETURN RDM         ENTER READ MODE
 LOF      SPACE  4,15 
***       0004   LOGOFF TERMINAL USER.
* 
*         THIS BYTE LOGS-OFF THE USER.  IT MUST BE THE FIRST
*         BYTE OF OUTPUT AND MUST BE FOLLOWED BY AN END-OF-LINE.
* 
*         CALLS  ERQ, CKL, CLT. 
  
  
 LOF      BSS    0           ENTRY
          RJM    CKL         CHECK *LIST* STATUS
          MJN    LOF1        IF FILE BEING LISTED 
          LDD    CH+1        CHECK LINE CHARACTER COUNT 
          NJN    LOF1        IF NOT FIRST BYTE
          LDN    1RD
          RJM    CLT         CHECK FOR LINE TERMINATION 
          LDN    1           SET NORMAL LOGOFF
          STD    RQ+2 
          LDN    /TLX/FLO    FORCE LOGOUT 
          RJM    ERQ
          LJM    EOB1 
  
 LOF1     LDN    1RD
          JMP    AWT13       REENTER WRITE MODE 
 TPI      SPACE  4,15 
***       0005   INITIATE TRANSPARENT MODE INPUT. 
* 
*         THIS CONTROL BYTE SETS TRANSPARENT INPUT FOR THE NEXT INPUT 
*         REQUEST. IT MUST APPEAR IN THE FIRST BYTE OF A WORD 
*         AND BE FOLLOWED BY AN END-OF-LINE.
* 
*         TRANSPARENT INPUT ALLOWS ALL CHARACTERS TO BE TRANSMITTED 
*         TO THE CPU PROGRAM. 
* 
*         CALLS  CKL, CLT.
  
  
 TPI      BSS    0           ENTRY
          RJM    CKL         CHECK *LIST* STATUS
          MJN    TPI1        IF FILE BEING LISTED 
          LDD    DP+2        CHECK BYTE 
          LPN    17 
          LMN    2
          NJN    TPI1        IF NOT FIRST BYTE
          LDN    1RE
          RJM    CLT         CHECK FOR LINE TERMINATION 
          LDD    DP+3        SET TRANSPARENT MODE 
          SCN    14 
          LMN    4
          STD    DP+3 
          JMP    EOB1        TERMINATE OUTPUT BLOCK 
  
 TPI1     LDN    1RE
          JMP    AWT13       REENTER WRITE MODE 
 BNI      SPACE  4,25 
***       0006   INITIATE BINARY MODE INPUT.
* 
*         THIS CONTROL BYTE SETS BINARY INPUT FOR THE NEXT INPUT
*         REQUEST.  THE CONTROL BYTE MUST BE THE FIRST BYTE OF A WORD.
*         THE NEXT 2 BYTES ARE THE TERMINATION CONDITIONS AS FOLLOWS -
* 
*         THE FIRST BYTE (BYTE 1) IS THE MAXIMUM NUMBER OF CHARACTERS 
*         TO BE RECEIVED BEFORE THE INPUT IS TERMINATED.  IF THE
*         VALUE IS 0, 1 IS ASSUMED. 
* 
*         THE SECOND CONTROL BYTE (BYTE 2) IS A TERMINATION CODE. 
*         WHEN A CHARACTER IS RECEIVED FROM THE TERMINAL WHICH
*         MATCHES THE BOTTOM 8 BITS OF THIS BYTE, THE INPUT OPERATION 
*         IS TERMINATED.  IF BIT 13 OF THIS BYTE IS SET, NO TERMINATION 
*         CHARACTER IS ASSUMED. 
* 
*         EXIT   (CH) = TERMINATION CHARACTER.
*                (CH+1) = INPUT LINE CHARACTER COUNT. 
* 
*         CALLS  CKL, SWA.
  
  
 BNI5     LDN    1RF
          JMP    AWT13       CONTINUE WRITE MODE
  
*         BNI - ENTRY.
  
 BNI      BSS    0           ENTRY
          RJM    CKL         CHECK *LIST* STATUS
          MJN    BNI5        IF FILE BEING LISTED 
          LDD    DP+3        CLEAR BINARY MODE
          SCN    10 
          STD    DP+3 
          LDD    CH+1        CHECK CHARACTER COUNT
          NJN    BNI5        IF NOT FIRST BYTE
          RJM    SWA         SET WORD ADDRESS 
          CRD    CM          READ DATA WORD 
          LDD    CM+3        CHECK FOR TERMINATION
          ADD    CM+4 
          NJN    BNI5        IF NOT TERMINATED
          LDD    CM+1        SET CHARACTER COUNT
          NJN    BNI2 
 BNI1     LDN    1
 BNI2     STD    CH+1 
          ADC    -VXLL-1
          MJN    BNI3        IF NOT MORE THAN INTERACTIVE MAXIMUM 
          LDD    DC          CHECK TERMINAL STATUS
          SHN    21-6 
          MJN    BNI1        IF *READ DATA* SET 
 BNI3     LDD    CM+2        SET TERMINATION CHARACTER
          STD    CH 
          LDN    2           SET CHARACTER 2
          STD    DP+2 
          LDN    10          SET BINARY MODE
          RAD    DP+3 
          RJM    SWA         WRITE FIRST WORD 
          CWM    BNIA,ON
          LDN    0           CLEAR START OF *F7* SEQUENCE 
          STD    F7 
          JMP    RWC         ENTER READ/WRITE CONTROL 
  
  
 BNIA     DATA   0007,0,0,0,0  BINARY MODE HEADER 
 BNO      SPACE  4,15 
***       0007   INITIATE BINARY MODE OUTPUT. 
* 
*         THIS CONTROL BYTE INITIATES BINARY OUTPUT.  IT MUST 
*         APPEAR IN THE FIRST BYTE OF OUTPUT. 
* 
*         EXIT   TO *BWT* IF VALID CONTROL BYTE.
*                TO *AWT13* IF INVALID CONTROL BYTE.
  
  
 BNO      BSS    0           ENTRY
          LDD    DP+3        CLEAR BINARY MODE
          SCN    10 
          STD    DP+3 
          LDD    CH+1        CHECK CHARACTER COUNT
          NJN    BNO1        IF NOT FIRST BYTE
          LDN    10          SET BINARY TRANSMISSION
          RAD    DP+3 
          LJM    BWT         ENTER BINARY WRITE MODE
  
 BNO1     LDN    1RG
          JMP    AWT13       CONTINUE WRITE MODE
 BEO      SPACE  4,15 
***       0011   BEGIN EXENDED OUTPUT.
* 
*         THIS CONTROL BYTE INITIATES EXTENDED MODE OUTPUT. 
*         IT MUST APPEAR IN THE FIRST BYTE OF THE OUTPUT LINE.
* 
*         EXIT   TO *AWT* TO INITIATE EXTENDED OUTPUT.
*                TO *AWT13* IF INVALID CONTROL BYTE.
* 
*         CALLS  SEM. 
  
  
 BEO      BSS    0           ENTRY
          LDD    CH+1 
          NJN    BEO1        IF NOT FIRST BYTE
          RJM    SEM         SET EXTENDED MODE
          JMP    AWT         INITIATE OUTPUT
  
 BEO1     LDN    1RI
          JMP    AWT13       CONTINUE WRITE MODE
 EOS      SPACE  4,15 
***       0013   END OF STRING. 
* 
*         THIS BYTE ACTS AS A LOGICAL LINE TERMINATOR WHEN
*         FOLLOWED BY AN END OF LINE.  THE TERMINAL CARRIAGE
*         WILL NOT BE REPOSITIONED AND OUTPUT WILL CONTINUE 
*         WITH THE NEXT LINE OF DATA. 
* 
*         EXIT   (CH+1) = 0.
*                (CH+2) = 0.
*                TO *SOC* IF END OF CURRENT POT - 
*                  (A) = *.ECP*.
*                TO *AWT* TO CONTINUE WRITE IF NOT END OF POT.
* 
*         CALLS  CEM, CLT, ROC. 
  
  
 EOS      BSS    0           ENTRY
          LDN    1RK         CHECK FOR LINE TERMINATION 
          RJM    CLT
          STD    CH+1        CLEAR CHARACTER COUNT
          STD    CH+2        CLEAR CONTROL BYTE 
          RJM    ROC         FORCE LINE SKIP IF IN BYTE 4 
          LMC    .ECP        CHECK IF END OF POT REACHED
          NJN    EOS1        IF NOT END OF CURRENT POT
          LMC    .ECP 
          LJM    SOC         SET OUTPUT CONTROL 
  
 EOS1     LDD    DP+2        REPOSITION TO READ NEXT WORD 
          SCN    17 
          LMN    12 
          STD    DP+2 
          RJM    CEM         CLEAR EXTENDED MODE
          JMP    AWT         CONTINUE OUTPUT
 IEB      SPACE  4,20 
***       0014   INTERNAL END OF BLOCK. 
* 
*         THIS CONTROL BYTE IS USED INTERNALLY BY *1TO* ONLY TO 
*         TERMINATE OUTPUT BEFORE THE END OF POT IS REACHED.  THE 
*         REMAINDER OF THE POT IS DISCARDED, THE TERMINAL IS NOT
*         REPOSITIONED TO THE BEGINNING OF THE NEXT LINE, AND ANY 
*         SPECIAL MODES (E.G., EXTENDED OR BINARY TRANSMISSION) 
*         WILL REMAIN SET.  THIS BYTE MUST APPEAR AS THE FIRST BYTE 
*         OF A WORD, AND MUST BE FOLLOWED BY AN END OF LINE.
* 
*         EXIT   TO *RWC1* IF VALID CONTROL BYTE. 
*                TO *AWT13* IF INVALID CONTROL BYTE.
* 
*         CALLS  CLT. 
* 
*         MACROS RETURN.
  
  
 IEB      BSS    0           ENTRY
          LDD    DP+2        CHECK CHARACTER POSITION 
          LPN    17 
          LMN    2
          NJN    IEB1        IF NOT FIRST BYTE IN WORD
          LDN    1RL         CHECK FOR LINE TERMINATION 
          RJM    CLT
          STD    DP+2        CLEAR CHARACTER POSITION 
          RETURN /CTL/RWC1   ENTER READ/WRITE CONTROL 
  
 IEB1     LDN    1RL
          JMP    AWT13       REENTER WRITE MODE 
 ETI      SPACE  4,15 
***       0015   EXECUTIVE AUTO INPUT.
* 
*         THIS CONTROL BYTE IS INTENDED TO BE USED BY *RDF* FOR 
*         AUTO MODE INPUT. THE WORD IN WHICH THE CONTROL BYTE OCCURS
*         IS USED AS THE FIRST N CHARACTERS OF THE INPUT LINE.
*         N MUST BE EVEN AND LESS THAN 9. 
* 
*         THIS CONTROL BYTE MUST BE FOLLOWED BY AN END-OF-LINE. 
* 
*         EXIT   TO *ATI1* TO INITIATE AUTO MODE INPUT -
*                  (A)    = 1RM.
*                  (RTIA) = *RSW*.
*                  (RTIB) = *LDNI+1RM*. 
  
  
 ETI      BSS    0           ENTRY
          LDC    LDNI+1RM    SET CONTROL TO REENTER WRITE MODE
          STM    ATIB 
          LDC    RSW         SET UP CALL TO SUBROUTINE RSW
          STM    ATIA 
          LDN    1RM
          LJM    ATI1        AUTO MODE INPUT PROCESSING 
          TITLE  WRITE MODE - SPECIAL CHARACTER PROCESSORS. 
 ACR      SPACE  4,15 
**        ACR - PROCESS *CARRIAGE RETURN* OUTPUT. 
* 
*         ISSUES *CARRIAGE RETURN* TO THE TERMINAL, FOLLOWED
*         BY *NUL* CHARACTERS IF IN KEYBOARD MODE OR BY 
*         *DEL* CHARACTERS IF IN TAPE MODE. 
* 
*         EXIT   TO *AWT* TO CONTINUE WRITE OPERATION.
* 
*         USES   T7.
* 
*         CALLS  DDC, SRC.
* 
*         MACROS RETURN.
  
  
 ACR      BSS    0           ENTRY
          LDC    .CCR        ISSUE *CR* TO OUTPUT 
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
          RETURN *           REENTER
          LDN    3           SET DEFAULT DELAY COUNT
          RJM    DDC         DETERMINE TERMINAL DELAY COUNT 
          STD    T7 
          LDD    DC          CHECK TERMINAL STATUS
          LPN    1
          ZJN    ACR1        IF NOT IN *TAPE* MODE
          LDK    .CDEL       SET ASCII *DEL* CODE 
          UJN    ACR2 
  
 ACR1     LDK    .CNUL       SET ASCII *NUL* CODE 
 ACR2     SHN    6           ADD DELAY COUNT
          ADD    T7 
          SHN    14 
          LMD    PY          TOGGLE ODD PARITY
          RJM    SRC         SEND REPEATED CHARACTERS 
          JMP    AWT         REENTER WRITE MODE 
 ANL      SPACE  4,15 
**        ANL - PROCESS *NEW LINE* OUTPUT.
* 
*         ISSUES *CARRIAGE RETURN* FOLLOWED BY *LINE FEED*
*         TO THE TERMINAL, THEN FOLLOWED BY *NULL* CHARACTERS.
* 
*         EXIT   TO *ISN* TO ISSUE *NULL* CHARACTERS. 
* 
*         MACROS RETURN.
  
  
 ANL      BSS    0           ENTRY
          LDC    .CCR        ISSUE *CR* TO OUTPUT 
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
          RETURN *           REENTER
          LDC    .CLF        ISSUE *LF* TO OUTPUT 
          LMD    PY          TOGGLE ODD PARITY
          STD    DO 
          RETURN *           REENTER
          LDN    2           SET DEFAULT REPEAT COUNT 
          JMP    ISN         ISSUE *NUL*S 
 WTM      TITLE  WRITE MODE - SUBROUTINES.
 CKL      SPACE  4,15 
**        CKL - CHECK LIST STATUS.
* 
*         EXIT   (A) = NEGATIVE IF FILE LIST IN PROGRESS. 
* 
*         USES   T1 - T5. 
* 
*         CALLS  STA. 
  
  
 CKL      SUBR               ENTRY/EXIT 
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VROT        READ *VROT*
          CRD    T1 
          LDD    T1+4        LOAD STATUS BYTE 
          SHN    21-6        SHIFT *LIST* STATUS BIT
          UJN    CKLX        RETURN 
 CLT      SPACE  4,25 
**        CLT - CHECK FOR LINE TERMINATION. 
* 
*         CHECKS CURRENT OUTPUT FOR LINE TERMINATION. 
* 
*         ENTRY  (A) = NEXT OUTPUT CHARACTER IF NOT END OF LINE.
* 
*         EXIT   TO CALLING ROUTINE IF LINE TERMINATED. 
*                TO WRITE MODE IF LINE NOT TERMINATED.
*                LINE TERMINATION CAN BE EXPLICIT IN THE CASE OF
*                A VALID END OF LINE FOLLOWING THE CURRENT LINE 
*                POSITION, OR IT MAY BE IMPLICIT IN THE CASE OF THERE 
*                BEING NO FURTHER DATA, EITHER ASSIGNED OR ON 
*                MASS STORAGE.
*                IN THE EVENT THAT NO DETERMINATION CAN  BE MADE
*                BECAUSE THE DRIVER IS AT THE END OF THE CURRENT
*                POT STRING BUT OUTPUT IS WAITING ON MASS STORAGE,
*                OR IF THE JOB IS CURRENTLY IN EXECUTION, 
*                EXIT IS TO READ/WRITE CONTROL WITH SUSPENDED CONTROL 
*                STATUS SET IN (CH+2).
* 
*         USES   T0 - T5, CM, CM+1, (MA)-(MA)+5.
* 
*         CALLS  RLT, ROC, STA. 
* 
*         MACROS RETURN.
  
  
 CLT      SUBR               ENTRY/EXIT 
          STD    CM          SAVE CALLING CODE
          LDD    MA          SAVE POINTER WORD
          CWD    DP 
          RJM    ROC         READ NEXT CHARACTER
          LMC    .ECP 
          ZJN    CLT3        IF END OF CURRENT POT
          LMC    .ECP 
  
*         CHECK NEXT OUTPUT BYTE FOR END OF LINE. 
  
 CLT1     SHN    1           CHECK FOR END OF LINE
          LMN    1
          STD    CM+1        STORE FLAG (ZERO IF END OF LINE) 
 CLT2     LDD    MA          RESTORE POINTER WORD 
          CRD    DP 
          LDD    CM+1        CHECK FLAG 
          ZJN    CLTX        IF END OF LINE 
          LJM    CLT6 
  
*         ADVANCE TO NEXT POT.
  
 CLT3     STD    DP+2        CLEAR POINTERS 
          STD    CM+1 
          RJM    RLT         CHECK POT LINK 
          ZJN    CLT4        IF POT NOT LINKED
          STD    DP+1        SET NEXT POT 
          RJM    ROC         READ NEXT CHARACTER
          UJN    CLT1 
  
*         CHECK FOR ADDITIONAL OUTPUT.
  
 CLT4     LDD    DC          CHECK FOR DRIVER REQUEST 
          SHN    21-13
          MJN    CLT2        IF DRIVER REQUEST
          LDD    DC+4 
          NJN    CLT5        IF OUTPUT ASSIGNED 
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VROT        READ *VROT*
          CRD    T0 
          LDD    T0+4        CHECK JOB STATUS 
          LPN    21 
          LMN    1
          ZJN    CLT2        IF NOT EXECUTING AND NO OUTPUT 
  
*         SUSPEND CONTROL UNTIL FURTHER OUTPUT IS ASSIGNED. 
  
 CLT5     LDD    MA          RESET POINTER WORD 
          CRD    DP 
          LDD    CM          SET SUSPENDED CONTROL
          ADC    600
          STD    CH+2 
          RETURN /CTL/RWC1   ENTER READ/WRITE CONTROL 
  
*         REENTER WRITE MODE IF NO TERMINATOR.
  
 CLT6     LDD    DP+3        CHECK *BINARY* MODE
          SHN    21-3 
          MJN    CLT7        IF SET 
          LDD    CM          SET OUTPUT CHARACTER 
          LJM    AWT13       REENTER WRITE MODE 
  
 CLT7     SOD    DP+2        BACK UP CHARACTER
          LJM    BWT2        EXIT BINARY MODE 
 MDS      SPACE  4,15 
**        MDS - MOVE DATA WORD TO START OF POT. 
* 
*         MOVE THE WORD CONTAINING THE AUTO INPUT CONTROL BYTE
*         TO THE FIRST WORD OF THE POT FOR SUBSEQUENT INPUT.
* 
*         ENTRY  (TO - T4) = DATA WORD. 
* 
*         CALLS  SWA. 
  
  
 MDS      SUBR               ENTRY/EXIT 
          LDD    DP+2        CLEAR POT WORD POINTER 
          LPC    0617 
          STD    DP+2 
          RJM    SWA         SET WORD ADDRESS 
          CWD    T0          WRITE WORD TO POT
          UJN    MDSX        RETURN 
 ROC      SPACE  4,20 
**        ROC - READ OUTPUT CHARACTER.
* 
*         EXIT   (T5) = OUTPUT BYTE ADDRESS.
*                (T7) = LOWER 12 BITS OF (A). 
*                (A) = POSITIVE - 
*                        (A) = OUTPUT CHARACTER.
*                    = NEGATIVE - 
*                        (A) = 400000B + CONTROL BYTE VALUE, OR,
*                              770001 (END OF POT). 
* 
*         USES   DP+2, T7, T0 - T5. 
* 
*         CALLS  SWA. 
* 
*         MACROS ADCBM. 
  
  
*         PROCESS ODD (LOWER) CHARACTER.
  
 ROC9     LPN    7           SET BYTE NUMBER
          STD    T5 
          AOD    DP+2        ADVANCE CHARACTER NUMBER 
          RJM    SWA         READ DATA WORD 
          CRD    T0 
          LDI    T5          EXTRACT LOWER CHARACTER
          LPN    77 
 ROC10    STD    T7          SET CHARACTER
*         UJN    ROCX 
  
  
*         ROC - ENTRY.
  
 ROC      SUBR               ENTRY/EXIT 
          LDD    DP+1        CHECK CURRENT POT POINTER
          SHN    -6 
          LMN    77 
          NJN    ROC1        IF NOT MESSAGE PSEUDO-POT POINTER
          LJM    TTM1        GET MESSAGE CHARACTER
  
 ROC1     LDD    DP+2        CHECK CHARACTER NUMBER 
          SHN    21 
          MJN    ROC9        IF ODD CHARACTER 
  
*         PROCESS EVEN (UPPER) CHARACTER. 
  
          LPN    77          CHECK WORD STATUS
          LMN    75 
          NJN    ROC2        IF NOT END OF WORD AND END OF POT
          LDC    .ECP 
          UJN    ROCX 
  
 ROC2     LPN    7
          NJN    ROC3        IF NOT END OF WORD 
          STD    T5          SET BYTE 0 
          LDN    21-12       ADVANCE WORD AND SET ODD CHARACTER 
          RAD    DP+2 
          UJN    ROC4 
  
 ROC3     LMN    5           SET BYTE NUMBER
          STD    T5 
          AOD    DP+2        ADVANCE CHARACTER
 ROC4     RJM    SWA         SET WORD ADDRESS 
          CRD    T0          READ WORD
          LDI    T5          EXTRACT UPPER CHARACTER
          SHN    -6 
          NJN    ROC6        IF NOT CONTROL BYTE
          LDI    T5 
          ZJN    ROC7        IF ZERO BYTE 
          SBN    TSOCL
          PJN    ROC8        IF NOT CONTROL BYTE
          ADN    TSOCL
 ROC5     LMC    400000 
 ROC6     LJM    ROC10
  
*         CHECK FOR END OF LINE.
  
 ROC7     AOD    T5          ADVANCE BYTE POINTER 
          LMN    5
          ZJN    ROC5        IF END OF WORD 
          LDI    T5 
          ZJN    ROC7        IF NO DATA IN NEXT BYTE
 ROC8     LDN    0           ISSUE COLON
          UJN    ROC6 
 RSW      SPACE  4,15 
**        RSW - RESTORE WORD. 
* 
*         THE WORD IN WHICH THE CONTROL BYTE 0015 OCCURS IS USED
*         AS THE FIRST N CHARACTERS OF THE INPUT LINE.
* 
*         ENTRY  (T0 - T4) = DATA WORD. 
* 
*         CALLS  SWA. 
  
  
 RSW      SUBR               ENTRY/EXIT 
          RJM    SWA         SET WORD ADDRESS 
          CWD    T0          WRITE WORD TO POT
          UJN    RSWX        RETURN 
 SRC      SPACE  4,15 
**        SRC - SEND REPEATED CHARACTER.
* 
*         ENTRY  (A) = 6/REPEAT COUNT, 12/CHARACTER.
* 
*         EXIT   CHARACTER TRANSMITTED (A) TIMES. 
* 
*         USES   (CH)   = RETURN ADDRESS. 
*                (CH+1) = REPEAT COUNT. 
* 
*         MACROS RETURN.
  
  
 SRC      SUBR               ENTRY/EXIT 
          LPC    -4000       SET OUTPUT CHARACTER BIT 
          LMC    4000 
          STM    RDAT        SAVE CHARACTER 
          SHN    -14         SET REPEAT COUNT 
          STD    CH+1 
          ZJN    SRCX        IF ZERO
          LDM    SRC         SET RETURN ADDRESS 
          STD    CH 
 SRC1     LDM    RDAT        TRANSMIT OUTPUT
          STD    DO 
          RETURN *           REENTER
          SOD    CH+1        DECREMENT REPEAT COUNT 
          NJN    SRC1        IF NOT EXHAUSTED 
          LJM    0,CH        REENTER CALLING ROUTINE
 TOC      SPACE  4,15 
**        TOC - TRANSLATE ASCII OUTPUT CHARACTER. 
* 
*         TRANSLATES OUTPUT DATA CHARACTER AND SETS THE 
*         PROPER PARITY (EVEN OR ODD) ON THE TRANSLATED 
*         OUTPUT CHARACTER. 
* 
*         ENTRY  (T7) = CHARACTER TO BE TRANSLATED. 
* 
*         EXIT   (A) = 4000B+CHARACTER IF SPECIAL PROCESOR
*                      NOT DEFINED. 
*                    = SPECIAL PROCESSOR INDEX IF DEFINED.
*                (T7) = (A).
  
  
 TOC      SUBR               ENTRY/EXIT 
          LDM    TOTP,T7     READ TRANSLATION TABLE ENTRY 
          STD    T7 
          SHN    21-13       CHECK FOR VALID CHARACTER
          PJN    TOC1        IF IF SPECIAL PROCESSOR
          LDD    T7          TOGGLE PARITY
          LMD    PY          TOGGLE ODD PARITY
          STD    T7 
 TOC1     LDD    T7          RETURN (A) = TRANSLATION 
          UJN    TOCX        RETURN 
          SPACE  4,10 
          QUAL
  
 WTM      EQU    /WTM/WTM 
 TTM      EQU    /WTM/TTM 
 DELM     EQU    /WTM/DELM
 LOFM     EQU    /WTM/LOFM
 MBSY     EQU    /WTM/MBSY
 RDYM     EQU    /WTM/RDYM
 RILM     EQU    /WTM/RILM
 ITM      TITLE  GENERAL SUBROUTINES. 
 AVT      SPACE  4,15 
**        AVT - ADVANCE TIMERS. 
* 
*         EXIT   (HS) = NONZERO IF 1/2 SECOND ELAPSED.
*                     = CLEARED BETWEEN 1/2 SECOND CYCLES.
*                (IT) = DECREMENTED BY ONE EACH 1/2 
*                       SECOND IF NONZERO.
* 
*         USES   CM - CM+4. 
* 
*         MACROS DELAY. 
  
  
 AVT      SUBR               ENTRY/EXIT 
 AVT1     LDK    RTCL        READ REAL-TIME CLOCK 
          CRD    CM 
          LDD    CM+4        CHECK CYCLE TIME 
          SBM    AVTA 
          PJN    AVT2        IF NO OVERFLOW 
          ADC    10000
 AVT2     SBK    MNCT 
          PJN    AVT3        IF MINIMUM CYCLE TIME ELAPSED
          DELAY 
          UJN    AVT1        LOOP 
  
 AVT3     LDD    CM+4        UPDATE MSECS BITS 11-0 
          STM    AVTA 
          SHN    -11         CHECK INTERVAL 
          SHN    17 
          LMD    CM+3 
          SHN    3
          LPC    7777 
          SBM    AVTB        CHECK MSECS BITS 20-9
          ZJN    AVT4        IF NO CHANGE 
          RAM    AVTB        UPDATE MSECS BITS 20-9 
          LDN    1
 AVT4     STD    HS          SET/CLEAR HALF-SECOND FLAG 
          ZJN    AVT5        IF NOT 1/2 SECOND INTERVAL 
          LDD    IT          CHECK 1/2 SECOND TIMER 
          ZJN    AVT5        IF ZERO
          SOD    IT          DECREMENT TIMER
 AVT5     UJP    AVTX        RETURN 
  
  
 AVTA     CON    0           PREVIOUS REAL-TIME MSECS (BITS 11-0) 
 AVTB     CON    0           PREVIOUS REAL-TIME MSECS (BITS 20-9) 
 BUP      SPACE  4,15 
**        BUP - BACK UP POINTERS. 
* 
*         BACKS UP THE CURRENT CHARACTER, CURRENT WORD, 
*         AND CURRENT POT POINTERS TO THE IMMEDIATELY 
*         PRECEDING CHARACTER POSITION. 
* 
*         EXIT   (DP+1) = NEW CURRENT POT.
*                (DP+2) = NEW CURRENT WORD AND CHARACTER. 
* 
*         USES   T5, T6.
* 
*         CALLS  RLT. 
  
  
 BUP5     SOD    DP+2        DECREMENT CHARACTER NUMBER 
  
 BUP      SUBR               ENTRY/EXIT 
          LDD    DP+2        CHECK CHARACTER NUMBER 
          LPN    17 
          NJN    BUP5        IF NOT FIRST CHARACTER OF WORD 
          LDD    DP+1        CHECK CURRENT POT
          LMD    DP 
          NJN    BUP2        IF NOT FIRST POT 
          LDD    DP+2        CHECK WORD NUMBER
          SHN    5
          LMD    DP+2 
          LPC    7000 
          ZJN    BUPX        IF FIRST WORD
 BUP1     LCN    20-11       DECREMENT WORD NUMBER, SET LAST CHARACTER
          RAD    DP+2 
          UJN    BUPX 
  
 BUP2     LDD    DP+2        CHECK CURRENT WORD 
          LPC    160
          NJN    BUP1        IF NOT FIRST WORD OF POT 
          LDD    DP+1        SAVE CURRENT POT 
          STD    T6 
          LDD    DP          SET FIRST POT
 BUP3     STD    DP+1 
          RJM    RLT         READ LINK TABLE
          LMD    T6 
          ZJN    BUP4        IF CURRENT POT REACHED 
          LMD    T6          SET NEXT POT 
          UJN    BUP3        LOOP 
  
 BUP4     LDD    DP+2        SET LAST WORD, LAST CHARACTER
          LPC    7000 
          LMC    371         SET *POT REQUESTED*
          STD    DP+2 
          LJM    BUPX        RETURN 
 CCQ      SPACE  4,15 
**        CCQ - CHECK CIRCULAR REQUEST QUEUE. 
* 
*         CHECKS THE DRIVER CIRCULAR REQUEST QUEUE FOR
*         AMOUNT OF FREE SPACE REMAINING AND RECALLS THE
*         CPU IF THE QUEUE IS MORE THAN HALF FULL.
* 
*         USES   CM - CM+4. 
* 
*         MACROS LDCDQ, MONITOR.
  
  
 CCQ      SUBR               ENTRY/EXIT 
          LDCDQ  3           READ CIRCULAR QUEUE *OUT* POINTER
          CRD    CM 
          LDD    IN+3        CHECK *IN* - *OUT* 
          SBD    CM+3 
          SHN    14 
          ADD    IN+4 
          SBD    CM+4 
          PJN    CCQ1        IF *IN* .GE. *OUT* 
          ADK    VDSL 
 CCQ1     SBK    VDSL/2 
          MJN    CCQX        IF QUEUE .LE. HALF FULL
          MONITOR  RCLM      RECALL CPU 
          UJN    CCQX        RETURN 
 CEF      SPACE  4,15 
**        CEF - CHECK ERROR FLAG. 
* 
*         CHECKS CPU ERROR FLAG.  IF SET, DROPS EQUIPMENT 
*         AND CHANNEL AND DROPS THE PPU.
* 
*         EXIT   TO *DPP* IF ERROR FLAG SET.
* 
*         USES   CM - CM+4. 
  
  
 CEF      SUBR               ENTRY/EXIT 
          LDD    CP          READ CP STATUS WORD
          ADK    STSW 
          CRD    CM 
          LDD    CM+1        CHECK ERROR FLAG 
          ZJN    CEFX        IF NO ERROR FLAG 
          LJM    DPP         DROP PPU 
 CEM      SPACE  4,15 
**        CEM - CLEAR EXTENDED TRANSMISSION MODE. 
* 
*         SET/RESET EXTENDED TRANSMISSION MODE DEPENDING
*         UPON MODE IN *VDCT*.
* 
*         EXIT   (A) = (DP+3).
*                (DP+3) = EXTENDED MODE CLEARED OR SET. 
  
  
 CEM      SUBR               ENTRY/EXIT 
          LDD    DP+3        CLEAR EXTENDED MODE
          SCN    2
          STD    DP+3 
          LDD    DC          GET TERMINAL STATUS
          SHN    1-3         SET EXTENDED/NORMAL MODE 
          LPN    2
          RAD    DP+3 
          UJN    CEMX        RETURN 
 CIT      SPACE  4,15 
**        CIT - CHECK FOR INACTIVITY TIME-OUT.
* 
*         ENTRY  (IR+3) = REAL-TIME CLOCK (SECONDS) AT START
*                         OF DRIVER INACTIVITY TIME-OUT.
* 
*         EXIT   (A) = NONZERO IF DRIVER TIMED-OUT. 
*                    = ZERO IF NOT TIMED-OUT. 
* 
*         USES   CM - CM+4. 
  
  
 CIT      SUBR               ENTRY/EXIT 
          LDK    SSTL        READ SUBSYSTEM CONTROL WORD
          CRD    CM 
          LDD    CM+3        CHECK *RDF* STATUS 
          SHN    21-10
          PJN    CIT2        IF *RDF* IN DEDICATED STATUS 
          LDK    RTCL        READ REAL-TIME CLOCK 
          CRD    CM 
          LDD    CM+1        CHECK ELAPSED TIME 
          SBD    IR+3 
          PJN    CIT1        IF NO ROLLOVER 
          ADC    10000
 CIT1     SBK    INATIO      SUBTRACT TIME-OUT INTERVAL 
          MJN    CIT2        IF INTERVAL NOT EXCEEDED 
          LDN    77          (A) STATUS = TIMED-OUT 
          UJN    CITX        RETURN 
  
 CIT2     LDN    0           (A) STATUS = NOT TIMED-OUT 
          UJN    CITX        RETURN 
 CMF      SPACE  4,15 
**        CMF - CHECK *RDF* STATUS. 
* 
*         CHECKS TO SEE THAT *RDF* IS ENABLED.  IF NOT, 
*         ISSUE ERROR LOG MESSAGE AND EXIT TO *ERR*.
* 
*         EXIT   RETURN TO CALLER IF *RDF* ENABLED. 
*                TO *ERR* IF *RDF* DISABLED - 
*                  ERROR LOG MESSAGE ISSUED.
*                  (A) = ADDRESS OF DAYFILE MESSAGE.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  DFM. 
  
  
 CMF      SUBR               ENTRY/EXIT 
          LDK    SSSL        READ SUBSYSTEM STATUS
          CRD    CM 
          LDM    CMFB+1      SET MASK 
          STM    CMFC 
          LDM    CMFB        GET *SSSL* BYTE NUMBER 
          STD    T1 
          LDM    CM,T1       READ BYTE
          LPC    ** 
 CMFC     EQU    *-1         (*RDF* MASK BIT) 
          ZJN    CMFX        IF *RDF* NOT DISABLED
          LDN    MTER        * RDF TERMINATED.* 
          JMP    IMT         ISSUE MESSAGE AND TERMINATE
  
*         CALCULATE *SSSL* BYTE AND MASK FOR *RDF*. 
  
 .1       SET    MXSI-RDSI
 .2       SET    .1/12D 
 .3       SET    4-.2 
 .4       DECMIC .1-12D*.2
 .5       SET    1S".4" 
  
 CMFB     CON    .3          *SSSL* BYTE NUMBER 
          CON    .5          *SSSL* MASK
 CUT      SPACE  4,15 
**        CUT - CLEAN UP TERMINAL TABLE.
* 
*         CLEARS ALL INFORMATION FROM THE TERMINAL TABLE OF THE 
*         LOGGED OUT USER, LEAVING VROT SET COMPLETE. 
* 
*         EXIT   TERMINAL TABLE WORDS ZEROED OUT.  (VROT), BIT
*                ZERO, SET. 
* 
*         USES   T0 - T5. 
* 
*         CALLS  STA. 
  
  
 CUT      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    T0 
          LDN    0
          STD    T5 
 CUT1     RJM    STA         SET FWA OF TERMINAL TABLE
          ADD    T5 
          CWD    T0          CLEAR OUT TERMINAL TABLE 
          AOD    T5 
          SBN    VTTL 
          NJN    CUT1        IF MORE WORDS TO CLEAR 
          AOD    T4          SET COMPLETE BIT IN VROT 
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VROT        WRITE *VROT* 
          CWD    T0 
          UJN    CUTX        EXIT 
 CWA      SPACE  4,15 
**        CWA - SET DRIVER CONTROL WORD ADDRESS.
* 
*         RETURNS THE ABSOLUTE CM ADDRESS OF THE DRIVER CONTROL 
*         WORD WITHIN *RDF* FIELD LENGTH. 
* 
*         ENTRY  (IR+4) = DRIVER CONTROL WORD POINTER.
* 
*         EXIT   (A) = CM ADDRESS OF DRIVER CONTROL WORD. 
  
  
 CWA      SUBR               ENTRY/EXIT 
          LDD    RA          SET CM ADDRESS 
          SHN    6
          ADD    IR+4        ADD DRIVER CONTROL WORD POINTER
          UJN    CWAX        RETURN 
 DCE      SPACE  4,15 
**        DCE - DROP CHANNEL AND EQUIPMENT. 
* 
*         ENTRY  (EQ) = BIT 2**9 SET IF EQUIPMENT RESERVED. 
* 
*         EXIT   CHANNEL AND EQUIPMENT DROPPED. 
*                (EQ) = BIT 2**9 RESET. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CLR, RTM.
* 
*         MACROS DCHAN, MONITOR.
  
  
 DCE      SUBR               ENTRY/EXIT 
          LDD    EQ          CHECK EQUIPMENT
          SBD    TH 
          MJN    DCEX        IF NOT RESERVED
          STD    EQ          CLEAR BIT 2**9 
          STD    CM+1        DROP EQUIPMENT 
          MONITOR DEQM
          LDN    MX          DROP MULTIPLEXER CHANNEL 
          DCHAN 
          RJM    RTM         RELEASE TERMINAL ON MULTIPLEXER
          RJM    CLR         CLEAR LAST REQUEST 
          UJN    DCEX        RETURN 
 DDC      SPACE  4,20 
**        DDC - DETERMINE DELAY COUNT.
* 
*         DETERMINES THE TERMINAL NULL CHARACTER (*NUL* OR
*         *DEL*) COUNT BASED UPON THE DELAY COUNT IN THE
*         USER'S TERMINAL TABLE AND UPON THE DEFAULT COUNT
*         PRESENTED TO THE ROUTINE.  IF THERE IS NO COUNT 
*         DEFINED IN THE TERMINAL TABLE, THE DEFAULT COUNT
*         WILL BE USED. 
* 
*         ENTRY  (A) = DEFAULT COUNT. 
* 
*         EXIT   (A) = DELAY COUNT. 
  
  
 DDC      SUBR               ENTRY/EXIT 
          STD    T0          SAVE DEFAULT COUNT 
          LDD    DC+1        GET USER DELAY COUNT 
          SHN    -3 
          LPN    37 
          ZJN    DDC1        IF NO USER DELAY COUNT DEFINED 
          STD    T0 
 DDC1     LDD    T0          GET DELAY COUNT
          UJN    DDCX        RETURN 
 DPP      SPACE  4,15 
**        DPP - DROP PPU. 
* 
*         DROPS CHANNEL AND EQUIPMENT, SIGNALS DRIVER SHUTDOWN
*         TO *RDF*, AND DROPS THE PPU.
* 
*         EXIT   TO *PPR*.
* 
*         CALLS  DCE, SDS.
* 
*         MACROS MONITOR. 
  
  
 DPP      BSS    0           ENTRY
          RJM    DCE         DISCONNECT CHANNEL AND EQUIPMENT 
          RJM    SDS         SIGNAL DRIVER SHUTDOWN 
          MONITOR DPPM       DROP PPU 
          LJM    PPR         EXIT TO PPU RESIDENT 
 ERQ      SPACE  4,20 
**        ERQ - ENTER CIRCULAR REQUEST QUEUE. 
* 
*         ERQ IS USED TO PLACE AN ENTRY IN THE DRIVER CIRCULAR REQUEST
*         QUEUE FOR *RDF* TO PROCESS. 
* 
*         ENTRY  (A) = REQUEST CODE.
*                (RQ+1 - RQ+3) = PARAMETERS.
*                (TN) = TERMINAL NUMBER.
* 
*         EXIT   IN UPDATED.
*                (A) = 0. 
*                (RQ+1 - RQ+3) = 0. 
* 
*         USES   IN+3, IN+4, RQ - RQ+3. 
* 
*         MACROS LDCDQ, LMCDQ.
  
  
 ERQ1     AOD    IN+4        ADVANCE IN 
          SHN    -14
          RAD    IN+3        ADD OVERFLOW 
 ERQ2     LDCDQ  2           UPDATE IN
          CWD    IN 
          LDN    0           EXIT ERQ WITH A=0
          STD    RQ+1        CLEAR REQUEST BUFFER 
          STD    RQ+2 
          STD    RQ+3 
  
*         ERQ - ENTRY.
  
 ERQ      SUBR               ENTRY/EXIT 
          ADC    2000        ADD FUNCTION BIAS
          STD    RQ 
          LDD    IN+3        ENTER REQUEST
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IN+4 
          CWD    RQ 
          LMCDQ  4+VDSL 
          NJN    ERQ1        IF *IN* NOT EQUAL TO LIMIT-1 
          LDCDQ  1           RESET IN = FIRST 
          CRD    IN 
          UJN    ERQ2 
 FTER     SPACE  4,10 
**        FTER - FUNCTION TIME-OUT ERROR PROCESSOR. 
* 
*         ENTRY  (A) = FUNCTION CODE. 
* 
*         EXIT   (A) = 1/ERROR LOG FLAG, 5/MESSAGE NUMBER.
  
  
 FTER     BSS    0           ENTRY
          STM    IMTB        SAVE FUNCTION CODE 
          LDN    MFTO+40     * RMEEE CXX PYY FNNNN REJECT.* 
*         JMP    IMT         ISSUE MESSAGE AND TERMINATE
 IMT      SPACE  4,10 
**        IMT - ISSUE MESSAGE AND TERMINATE.
* 
*         ENTRY  (A) = 1/ERROR LOG FLAG, 5/MESSAGE NUMBER.
* 
*         EXIT   TO *4TM*.
* 
*         MACROS EXECUTE. 
  
  
 IMT      BSS    0           ENTRY
          STM    IMTA        SAVE MESSAGE REQUEST 
          EXECUTE  4TM
          LJM    DPP         DROP PP
  
  
 IMTA     BSS    1           MESSAGE REQUEST
 IMTB     BSS    1           FUNCTION CODE
 MRER     SPACE  4,10 
**        MRER - NORMAL ERROR PROCESSOR FOR *COMPMRA*.
* 
*         EXIT   (A) = MESSAGE NUMBER.
  
  
 MRER     BSS    0           ENTRY
          LDN    MNTA        * NO TPM AVAILABLE.* 
          UJN    IMT         ISSUE MESSAGE AND TERMINATE
 RCL      SPACE  4,15 
**        RCL - RECALL PPU. 
* 
*         REQUESTS PPU RECALL AFTER DEFINED DELAY PERIOD, 
*         THEN EXITS TO PPU RESIDENT. 
* 
*         ENTRY  (IR - IR+4) = PPU INPUT REGISTER.
* 
*         EXIT   TO *PPR*.
*                (IR+2) = 10/EQ, 1/S, 1/P.
*                         EQ = RESERVED EQUIPMENT NUMBER. 
*                         S = 1, IF PORT CURRENTLY IS RESERVED FOR
*                             *1TM*.
*                         P = PORT NUMBER.
* 
*         USES   CM - CM+4. 
* 
*         MACROS DCHAN, MONITOR.
  
  
 RCL      BSS    0           ENTRY
          LDN    MX          DROP CHANNEL 
          DCHAN 
          LDD    EQ          SAVE RECALL STATUS INFORMATION 
          SHN    2
          LMD    PN 
          STD    IR+2 
          LDM    SFMX 
          ZJN    RCL1        IF PORT NOT ATTACHED 
          LDD    IR+2 
          LMN    2
          STD    IR+2 
 RCL1     LDD    MA          WRITE INPUT REGISTER TO MESSAGE BUFFER 
          CWD    IR 
          LDN    ZERL        CLEAR REQUEST PARAMETERS 
          CRD    CM 
          LDK    PTMF        SET TIMED RECALL REQUEST 
          STD    CM+1 
          LDC    RCLDLY*1000D  SET RECALL DELAY (MILLISECONDS)
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          MONITOR RECM       REQUEST PPU RECALL 
          JMP    PPR         EXIT TO PPU RESIDENT 
 RLT      SPACE  4,15 
**        RLT - READ LINK TABLE.
* 
*         READS THE POT LINK TABLE. 
* 
*         ENTRY  (DP+1) = POT POINTER IN LINK TABLE.
* 
*         EXIT   (A) = NEXT POT.
* 
*         USES   T0 - T5. 
* 
*         MACROS ADCPL. 
  
  
 RLT      SUBR               ENTRY/EXIT 
          LDD    DP+1        SET BYTE NUMBER
          LPN    3
          STD    T5 
          LDD    DP+1        READ LINK WORD 
          SHN    -2 
          ADCPL 
          CRD    T0 
          LDI    T5          RETURN WITH NEXT LINK
          UJN    RLTX 
 SAT      SPACE  4,15 
**        SAT - SET ACTIVITY TIME.
* 
*         SETS THE LOWER 12 BITS OF THE REAL-TIME SECONDS 
*         CLOCK INTO (IR+3).
* 
*         EXIT   (IR+3) = CURRENT REAL-TIME SECONDS.
* 
*         USES   CM - CM+4. 
  
  
 SAT      SUBR               ENTRY/EXIT 
          LDK    RTCL        READ REAL-TIME CLOCK 
          CRD    CM 
          LDD    CM+1        SET SECONDS
          STD    IR+3 
          UJN    SATX        RETURN 
 SDS      SPACE  4,15 
**        SDS - SIGNAL DRIVER SHUTDOWN. 
* 
*         SIGNALS DRIVER SHUTDOWN BY SETTING THE DRIVER 
*         SHUTDOWN FLAG IN THE DRIVER CONTROL WORD. 
* 
*         EXIT   DRIVER SHUTDOWN FLAG SET IN DRIVER 
*                CONTROL WORD.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CWA. 
  
  
 SDS      SUBR               ENTRY/EXIT 
          RJM    CWA         SET DRIVER CONTROL WORD ADDRESS
          CRD    CM          READ DRIVER CONTROL WORD 
          LDD    CM          CHECK SHUTDOWN FLAG
          NJN    SDSX        IF DRIVER SHUTDOWN ALREADY SET, RETURN 
          LDN    1           SET DRIVER SHUTDOWN FLAG 
          STD    CM 
          RJM    CWA         REWRITE DRIVER CONTROL WORD
          CWD    CM 
          UJN    SDSX        RETURN 
 SEM      SPACE  4,15 
**        SEM - SET EXTENDED MODE.
* 
*         SETS THE EXTENDED *ASCII* MODE BIT IN DP+3. 
* 
*         EXIT   (DP+3) = EXTENDED (*ASCII*) MODE SET.
  
  
 SEM      SUBR               ENTRY/EXIT 
          LDD    DP+3        SET *ASCII* MODE 
          SCN    2
          LMN    2
          STD    DP+3 
          UJN    SEMX        RETURN 
 STA      SPACE  4,15 
**        STA - SET TERMINAL TABLE ADDRESS. 
* 
*         SETS THE ABSOLUTE CM FWA OF TERMINAL TABLE. 
* 
*         ENTRY  (TN) = TERMINAL NUMBER.
* 
*         EXIT   (A) = ABSOLUTE FWA OF TERMINAL TABLE.
* 
*         MACROS TTADD. 
  
  
 STA      SUBR               ENTRY/EXIT 
          TTADD  0           SET FWA OF TERMINAL TABLE
          UJN    STAX        RETURN 
 SVM      SPACE  4,15 
**        SVM - SERVICE MULTIPLEXER.
* 
*         PERFORMS DATA OUTPUT AND INPUT OPERATIONS ON THE
*         TWO-PORT MULTIPLEXER. 
* 
*         ENTRY  (DO) = OUTPUT DATA IF BIT 2**11 SET. 
* 
*         EXIT   (DO) = ZERO IF DATA SENT.
*                     = OUTPUT DATA IF OUTPUT BUFFER FULL.
*                (DI) = INPUT DATA. 
*                     = ZERO IF NO INPUT DATA.
* 
*         CALLS  IFN, RMA, SPA. 
  
  
 SVM4     LDN    0
          STM    SVMA 
 SVM5     RJM    RMA         RELEASE MULTIPLEXER ACCESS 
  
 SVM      SUBR               ENTRY/EXIT 
          LDN    0           CLEAR INPUT DATA 
          STD    DI 
          LDM    SFMX 
          ZJN    SVMX        IF PORT NOT SELECTED 
          RJM    SPA         START PORT ACCESS
          LPN    6           CHECK *CARRIER ON* AND *DATA SET READY*
          LMN    6
          NJN    SVM5        IF NOT *CARRIER ON* AND *DATA SET READY* 
  
*         WRITE OUTPUT DATA TO MULTIPLEXER PORT.
  
          LDM    SSMX        GET PORT STATUS
          LPN    20 
          ZJN    SVM1        IF NOT *OUTPUT BUFFER READY* 
          LDD    DO          CHECK OUTPUT DATA
          SHN    21-13
          PJN    SVM1        IF NO OUTPUT DATA
          LDC    MXWT        SELECT *WRITE* FUNCTION
          RJM    IFN
          LDD    DO          TRANSMIT DATA TO PORT
          LPC    377
          ACN    MX 
          OAN    MX 
          DCN    MX+40
          LDN    0           CLEAR OUTPUT DATA POINTER
          STD    DO 
  
*         READ INPUT DATA FROM MULTIPLEXER PORT.
  
 SVM1     LDC    ** 
 SVMA     EQU    *-1
          ZJN    SVM2        IF NO PREVIOUS CHARACTER 
          STD    DI          RETURN PREVIOUS CHARACTER
          UJP    SVM4        RELEASE MULTIPLEXER ACCESS 
  
 SVM2     LDM    SSMX        CHECK PORT STATUS
          LPN    10 
          ZJN    SVM3        IF NOT *INPUT DATA READY*
          LDD    HN          SELECT *READ* FUNCTION 
          ERRNZ  MXRD-100    *MXRD* CHANGED 
          RJM    IFN
          ACN    MX 
          IAN    MX          INPUT DATA FROM PORT 
          DCN    MX+40
 SVM3     STD    DI          STORE INPUT DATA 
          UJP    SVM5        RELEASE MULTIPLEXER ACCESS 
 SWA      SPACE  4,15 
**        SWA - SET WORD ADDRESS. 
* 
*         SET ADDRESS OF CURRENT WORD OF CURRENT POT. 
* 
*         ENTRY  (DP+1) = CURRENT POT.
*                (DP+2) = WORD POINTER. 
* 
*         EXIT   (A) = CM ADDRESS OF CURRENT WORD (ABSOLUTE). 
* 
*         MACROS ADCBM. 
  
  
 SWA      SUBR               ENTRY/EXIT 
          LDD    DP+2        SET WORD 
          LPC    160
          SHN    21-6 
          LMD    DP+1        SET POT POINTER
          SHN    3           TIMES 10B
          ADCBM              ADD POT BUFFER ADDRESS 
          UJN    SWAX 
 WDC      SPACE  4,15 
**        WDC - WRITE TERMINAL TABLE WORD *VDCT*. 
* 
*         WRITES TERMINAL TABLE WORD *VDCT* TO CENTRAL MEMORY.
* 
*         ENTRY  (DC - DC+4) = TERMINAL TABLE WORD *VDCT*.
* 
*         EXIT   (A) = ADDRESS OF *VDCT* WORD.
* 
*         CALLS  STA. 
  
  
 WDC      SUBR               ENTRY/EXIT 
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VDCT        WRITE *VDCT* TO CM 
          CWD    DC 
          UJN    WDCX        RETURN 
          SPACE  4,10 
**        COMMON DECKS
  
 MRA$     EQU    0
          LIST   X
 QUAL$    EQU    0
*CALL     COMPMRA 
  
 APA$     EQU    0
 PMA$     EQU    0
*CALL     COMPTMA 
          LIST   -X 
 OMBUF    SPACE  4,15 
**        OMBUF - OPERATOR MESSAGE BUFFER.
  
  
 OMBUF    BSS    0           OPERATOR MESSAGE BUFFER
  
 OVLA     EQU    OMBUF+OMBUFL+5  OVERLAY LOAD ADDRESS 
 PRS      TITLE  DRIVER PRESET. 
          USE    PRESET 
 PRS      SPACE  4,30 
**        PRS - PRESET DRIVER.
* 
*         ENTRY  (IR+2) = 0, IF NOT PP RECALL AND NOT *2TM* CALL. 
*                       = 10/EQ, 1/S, 1/P, IF PP RECALL OR *2TM* CALL.
*                         EQ = RESERVED EQUIPMENT NUMBER. 
*                         S = 1, IF PORT CURRENTLY IS RESERVED FOR
*                             *1TM*.
*                         P = PORT NUMBER.
*                (IR+3) = REAL-TIME CLOCK (SECONDS) AT START
*                         OF DRIVER INACTIVITY TIME-OUT.
*                       = ZERO ON INITIAL CALL OR EXECUTIVE RECALL. 
*                (IR+4) = DRIVER CONTROL WORD POINTER.
*                (DRIVER CONTROL WORD) INITIAL CALL = 
*                     12/0, 6/0, 18/DRN, 24/0 
*                        DRN = DRIVER NAME. 
*                (DRIVER CONTROL WORD) PP OR EXECUTIVE RECALL = 
*                     12/3, 24/CSA, 12/TC, 12/TN
*                        CSA = CIRCULAR STACK ADDRESS.
*                        TC  = TERMINAL COUNT.
*                        TN  = DRIVER TERMINAL NUMBER.
* 
*         EXIT   TO *ITM*, DRIVER CONTROL LOOP -
*                  CHANNEL AND EQUIPMENT RESERVED.
*                  (EQ) = EST ORDINAL + 2**9. 
*                  (LF) = NONZERO FOR INITIAL CONNECTION ATTEMPT. 
*                  (PN) = MULTIPLEXER PORT NUMBER - 0 OR 1. 
*                  (IR+3) = CURRENT REAL-TIME CLOCK (SECONDS) 
*                           IF INITIAL CALL OR EXECUTIVE RECALL.
*                         = INPUT REGISTER CONTENTS IF PP RECALL. 
*                  (OMCC) = 0.
*                  (SF7D) = 0.
*                  TRANSLATION TABLES MODIFIED IF SYSTEM IS IN
*                  63 CHARACTER SET MODE. 
* 
*         CALLS  CEF, CWA, PMA, SAD, SAT, SPN, STA. 
* 
*         MACROS EXECUTE, LDCDQ, RCHAN. 
  
  
 PRS      BSS    0           ENTRY
          RJM    PMA         PRESET MULTIPLEXER ACCESS
          LDD    IR+2 
          NJN    PRS1        IF RECALL
          EXECUTE  2TM       PRESET NON-RECALL LOAD 
  
*         PRESET VALUES FROM RECALL.
  
 PRS1     LPN    1
          STD    PN          SET PORT NUMBER
          RJM    SPN
          STD    IT          CLEAR INTERVAL TIMER 
          LDD    IR+2 
          LPN    2
          ZJN    PRS2        IF PORT WAS NOT SELECTED 
          LDD    PN 
          ADC    MXPT 
          STM    SFMX 
 PRS2     LDD    IR+2        RESTORE EQUIPMENT NUMBER 
          SHN    -2 
          STD    EQ 
          LDN    MX          REQUEST CHANNEL
          RCHAN 
          LDN    2           SET PORT ACQUIRED BEFORE FLAG
          STM    STMC 
          RJM    CEF         CHECK ERROR FLAG 
          LDM    SFMX 
          NJN    PRS3        IF PORT SELECTED 
          LDC    /CTL/RPA    SET REENTRY ADDRESS TO REGAIN PORT 
          STM    PRSA 
          LDN    RPATIO      SET TIME-OUT 
          STD    IT 
  
*         SET ABSOLUTE ADDRESSES AND SIGNAL INITIALIZATION COMPLETE.
  
 PRS3     RJM    SAD         SET ABSOLUTE CM ADDRESSES
          RJM    CWA         READ DRIVER CONTROL WORD 
          CRD    DC 
          LDD    DC+4 
          STD    TN 
          LDN    0           CLEAR INTERLOCK
          STD    DC 
          RJM    CWA         REWRITE DRIVER CONTROL WORD
          CWD    DC 
  
*         PRESET TERMINAL ROUTINE ADDRESS.
  
          LDN    ZERL        CLEAR *VDPT* IMAGE 
          CRD    DP 
          CRD    CH          CLEAR *VCHT* IMAGE 
          LDC    /CTL/ONL    SET STARTING ADDRESS 
 PRSA     EQU    *-1
*         LDC    /CTL/RPA    (PP RECALL AND PORT NOT SELECTED)
          STD    DP+4 
          RJM    STA         SET FWA OF TERMINAL TABLE
          ADN    VDPT        WRITE *VDPT* 
          CWD    DP 
          ADN    VCHT-VDPT   WRITE *VCHT* 
          CWD    CH 
  
*         INITIALIZE MISCELLANEOUS POINTERS.
  
          LDN    0           CLEAR INPUT AND OUTPUT DATA
          STD    DI 
          STD    DO 
          STD    F7          CLEAR START OF *F7* SEQUENCE DETECTED
          STD    HS          CLEAR HALF-SECOND FLAG 
          STD    PY          CLEAR ODD PARITY 
          STM    OMCC        CLEAR OPERATOR MESSAGE CHARACTER COUNT 
          LDN    77 
          STD    LF 
          LDCDQ  2           SET CIRCULAR QUEUE *IN*
          CRD    IN 
  
*         SET TIME-OUT IF INITIAL CALL OR EXECUTIVE RECALL. 
  
          LDD    IR+3        CHECK TIME-OUT 
          NJN    PRS4        IF DRIVER RECALL 
          RJM    SAT         SET ACTIVITY TIME-OUT
 PRS4     LJM    /CTL/ITM    ENTER DRIVER MAIN LOOP 
          TITLE  DRIVER PRESET SUBROUTINES. 
 SAD      SPACE  4,15 
**        SAD - SET ABSOLUTE ADDRESSES. 
* 
*         DETERMINES ABSOLUTE CM ADDRESS AND CALLS *SIA*
*         TO INSERT THEM INTO PP INSTRUCTIONS.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  CWA, SIA.
  
  
 SAD      SUBR               ENTRY/EXIT 
  
*         SET BUFFER MEMORY ADDRESS REFERENCES. 
  
          LDC    TBMA        SET INSTRUCTION ADDRESS TABLE POINTER
          STD    T1 
          LDD    RA          READ BUFFER MEMORY POINTER 
          SHN    6
          ADK    VBMP 
          CRD    CM 
          LDN    CM+3        SET FWA BUFFER MEMORY
          RJM    SIA         SET INSTRUCTION ADDRESSES
  
*         SET DRIVER REQUEST QUEUE REFERENCES.
  
          LDC    TDQA        SET INSTRUCTION ADDRESS TABLE POINTER
          STD    T1 
          RJM    CWA         READ DRIVER CONTROL WORD 
          CRD    CM 
          LDN    CM+1        SET FWA DRIVER REQUEST QUEUE 
          RJM    SIA         SET INSTRUCTION ADDRESSES
  
*         SET POT LINK TABLE REFERENCES.
  
          LDC    TPLA        SET INSTRUCTION ADDRESS TABLE POINTER
          STD    T1 
          LDD    RA          READ POT LINK TABLE POINTER
          SHN    6
          ADK    VPLP 
          CRD    CM 
          LDN    CM+1        SET FWA POT LINK TABLE 
          RJM    SIA         SET INSTRUCTION ADDRESSES
  
  
*         SET TERMINAL TABLE REFERENCES.
  
          LDC    TTTA        SET INSTRUCTION ADDRESS TABLE POINTER
          STD    T1 
          LDD    RA          READ TERMINAL TABLE ADDRESS POINTER
          SHN    6
          ADK    VTTP 
          CRD    CM 
          LDN    CM+1        SET FWA OF TERMINAL TABLES 
          RJM    SIA         SET INSTRUCTION ADDRESSES
          UJP    SADX        RETURN 
 SIA      SPACE  4,15 
**        SIA - SET INSTRUCTION ADDRESSES.
* 
*         SETS ABSOLUTE ADDRESSES IN INSTRUCTION ADDRESS
*         FIELDS. 
* 
*         ENTRY  (T1) = ADDRESS OF TABLE OF INSTRUCTION 
*                       ADDRESSES.
*                (A) = ADDRESS IN PP OF CM ADDRESS. 
* 
*         USES   T2, T6, T7.
  
  
 SIA      SUBR               ENTRY/EXIT 
          STD    T2          SAVE ADDRESS POINTER 
          LDI    T2          GET ABSOLUTE ADDRESS 
          SHN    6           ABSOLUTE RELATIVE ADDRESS
          ADD    RA 
          SHN    6
          ADM    1,T2 
          STD    T7          SAVE LOWER 12 BITS 
          SHN    -14
          STD    T6 
  
 SIA1     LDI    T1          READ INSTRUCTION ADDRESS 
          ZJP    SIAX        IF END OF ADDRESS TABLE
          STD    T2 
          LDD    T7          SET LOWER 12 BITS
          RAM    1,T2 
          SHN    -14
          ADD    T6          ADD OVERFLOW 
          RAI    T2          SET UPPER 6 BITS 
          AOD    T1          ADVANCE TABLE INDEX
          UJN    SIA1        LOOP TO END OF TABLE 
          SPACE  4,10 
          QUAL
 PMA      HERE
 ITM      TITLE  INITIALIZATION TABLES. 
 ITM      SPACE  4,15 
**        TABLES OF CENTRAL MEMORY REFERENCE INSTRUCTION
*         ADDRESSES.
  
  
 TBMA     BSS    0           BUFFER MEMORY REFERENCES 
 TBMA     HERE
          CON    0
  
 TDQA     BSS    0           DRIVER REQUEST QUEUE REFERENCES
 TDQA     HERE
          CON    0
  
 TPLA     BSS    0           POT LINK TABLE REFERENCES
 TPLA     HERE
          CON    0
  
 TTTA     BSS    0           TERMINAL TABLE REFERENCES
 TTTA     HERE
          CON    0
          SPACE  4,10 
          USE    *
          QUAL
  
          OVERFLOW
          TTL    1TM/2TM - NON-PP RECALL PRESET.
          TITLE  INITIAL DRIVER PRESET. 
          IDENT  2TM,PREX 
*COMMENT  1TM - PRESET. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 2TM      SPACE  4,10 
***       INITIAL DRIVER PRESET.
          SPACE  4,10 
          ORG    PPFW 
          QUAL   PRE
 PRE      SPACE  4,30 
**        PRE - PRESET DRIVER.
* 
*                (IR+3) = REAL-TIME CLOCK (SECONDS) AT START
*                         OF DRIVER INACTIVITY TIME-OUT.
*                       = ZERO ON INITIAL CALL OR EXECUTIVE RECALL. 
*                (IR+4) = DRIVER CONTROL WORD POINTER.
*                (DRIVER CONTROL WORD) INITIAL CALL = 
*                     12/0, 6/0, 18/DRN, 24/0 
*                        DRN = DRIVER NAME. 
*                (DRIVER CONTROL WORD) PP OR EXECUTIVE RECALL = 
*                     12/3, 24/CSA, 12/TC, 12/TN
*                        CSA = CIRCULAR STACK ADDRESS.
*                        TC  = TERMINAL COUNT.
*                        TN  = DRIVER TERMINAL NUMBER.
* 
*         EXIT   TO *ITM*, PRESET - 
*                  EQUIPMENT RESERVED.
*                  MULTIPLEXER AND PORT SELECTED. 
*                (IR+2) = 10/EQ, 1/S, 1/P.
*                         EQ = RESERVED EQUIPMENT NUMBER. 
*                         S = 1, IF PORT CURRENTLY IS RESERVED FOR
*                             *1TM*.
*                         P = PORT NUMBER.
*                  (IR+3) = CURRENT REAL-TIME CLOCK (SECONDS) 
*                           IF INITIAL CALL OR EXECUTIVE RECALL.
*                         = INPUT REGISTER CONTENTS IF PP RECALL. 
*                TO *MRER* IF NO TPM AVAILABLE. 
* 
*         CALLS  CEF, CEQ, CWA, INI, RCE, SEL.
* 
*         MACROS EXECUTE, LDCDQ.
  
  
 PRE      SUBR               ENTRY
          LDN    0
          STD    EQ 
          RJM    CEF         CHECK ERROR FLAG 
          RJM    CWA         SET DRIVER CONTROL WORD ADDRESS
          CRD    DC          READ DRIVER CONTROL WORD 
  
*         PROCESS INITIAL DRIVER LOAD.
  
          RJM    CEQ         CHECK EQUIPMENT
          LDD    DC+4        CHECK TERMINAL NUMBER
          STD    TN 
          NJN    PRE1        IF DEFINED - DRIVER RECALL 
          RJM    INI         PROCESS INITIAL DRIVER LOAD
  
*         RESERVE TWO-PORT MULITPLEXER AND SELECT PORT. 
  
 PRE1     LDD    EQ          CHECK IF EQUIPMENT AVAILABLE 
          NJN    PRE2        IF EQUIPMENT AVAILABLE 
          LJM    MRER        * 1TM - NO TPM AVAILABLE.* 
  
 PRE2     RJM    CMF         CHECK RDF STATUS 
          RJM    RCE         RESERVE CHANNEL AND EQUIPMENT
          RJM    SEL         SELECT MULTIPLEXER PORT
  
*         LOAD MAIN OVERLAY.
  
          LDN    MX          RELEASE CHANNEL
          DCHAN 
          LDD    EQ          SAVE RECALL STATUS INFORMATION 
          SHN    2
          LMD    PN 
          STD    IR+2 
          LDM    SFMX 
          ZJN    PRE3        IF PORT NOT ATTACHED 
          LDD    IR+2 
          LMN    2
          STD    IR+2 
 PRE3     EXECUTE  1TM
  
  
          QUAL   *
 PREX     EQU    /PRE/PREX
          QUAL   PRE
          TITLE  DRIVER PRESET SUBROUTINES. 
 CEF      SPACE  4,15 
**        CEF - CHECK ERROR FLAG. 
* 
*         CHECKS CPU ERROR FLAG.  IF SET, DROPS EQUIPMENT 
*         AND CHANNEL AND DROPS THE PPU.
* 
*         EXIT   TO *DPP* IF ERROR FLAG SET.
* 
*         USES   CM - CM+4. 
  
  
 CEF      SUBR               ENTRY/EXIT 
          LDD    CP          READ CP STATUS WORD
          ADK    STSW 
          CRD    CM 
          LDD    CM+1        CHECK ERROR FLAG 
          ZJN    CEFX        IF NO ERROR FLAG 
          LJM    DPP         DROP PPU 
 CEQ      SPACE  4,20 
**        CEQ - CHECK EQUIPMENT.
* 
*         CHECKS FOR EQUIPMENT TYPE *RM* IN THE EST.
*         SETS THE EST ORDINAL. 
* 
*         EXIT   (A)  = EST ORDINAL IF NONZERO. 
*                     = ZERO IF EQUIPMENT NOT FOUND.
*                (EQ) = EST ORDINAL IF NONZERO. 
*                     = ZERO IF EQUIPMENT NOT FOUND.
*                (PN) = PORT NUMBER IF EQUIPMENT FOUND. 
*                (RCEA) = UPPER ACCESS LEVEL LIMIT FOR TWO-PORT MUX.
* 
*         USES   CM - CM+4, DP - DP+4, T0 - T0+4. 
* 
*         MACROS SFA. 
  
  
 CEQ      SUBR               ENTRY/EXIT 
          LDN    0           PRESET NOT FOUND 
          STD    EQ 
          LDK    ESTP        READ EST POINTER 
          CRD    DP 
          LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    DP 
 CEQ1     AOD    DP          ADVANCE EST ORDINAL
          LMD    DP+2 
          ZJN    CEQX        IF END OF EST
          SFA    EST,DP      READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          ADK    EQAE-EQDE
          CRD    T0 
          LDD    CM+3        CHECK EQUIPMENT MNEMONIC 
          LMC    2RRM 
          NJN    CEQ1        IF NOT EQUIPMENT TYPE *RM* 
          LDD    CM 
          LPN    3
          NJN    CEQ1        IF *RM* EQUIPMENT NOT *ON* 
          LDD    T0+3        SAVE UPPER ACCESS LEVEL LIMIT
          LPN    7
          STM    RCEA 
          LDD    CM+4        SET PORT NUMBER
          LPN    1
          STD    PN 
          LDD    DP          EXIT WITH (A) = (EQ) = EST ORDINAL 
          STD    EQ 
          UJP    CEQX        RETURN 
 CMF      SPACE  4,15 
**        CMF - CHECK *RDF* STATUS. 
* 
*         CHECKS TO SEE THAT *RDF* IS ENABLED.  IF NOT, 
*         ISSUE ERROR LOG MESSAGE AND EXIT TO *ERR*.
* 
*         EXIT   RETURN TO CALLER IF *RDF* ENABLED. 
*                TO *ERR* IF *RDF* DISABLED - 
*                  ERROR LOG MESSAGE ISSUED.
*                  (A) = ADDRESS OF DAYFILE MESSAGE.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  DFM. 
  
  
 CMF      SUBR               ENTRY/EXIT 
          LDK    SSSL        READ SUBSYSTEM STATUS
          CRD    CM 
          LDM    CMFB+1      SET MASK 
          STM    CMFC 
          LDM    CMFB        GET *SSSL* BYTE NUMBER 
          STD    T1 
          LDM    CM,T1       READ BYTE
          LPC    ** 
 CMFC     EQU    *-1         (*RDF* MASK BIT) 
          ZJN    CMFX        IF *RDF* NOT DISABLED
          LDN    MTER        * RDF TERMINATED.* 
          LJM    IMT         ISSUE MESSAGE AND TERMINATE
  
*         CALCULATE *SSSL* BYTE AND MASK FOR *RDF*. 
  
 .1       SET    MXSI-RDSI
 .2       SET    .1/12D 
 .3       SET    4-.2 
 .4       DECMIC .1-12D*.2
 .5       SET    1S".4" 
  
 CMFB     CON    .3          *SSSL* BYTE NUMBER 
          CON    .5          *SSSL* MASK
 CWA      SPACE  4,15 
**        CWA - SET DRIVER CONTROL WORD ADDRESS.
* 
*         RETURNS THE ABSOLUTE CM ADDRESS OF THE DRIVER CONTROL 
*         WORD WITHIN *RDF* FIELD LENGTH. 
* 
*         ENTRY  (IR+4) = DRIVER CONTROL WORD POINTER.
* 
*         EXIT   (A) = CM ADDRESS OF DRIVER CONTROL WORD. 
  
  
 CWA      SUBR               ENTRY/EXIT 
          LDD    RA          SET CM ADDRESS 
          SHN    6
          ADD    IR+4        ADD DRIVER CONTROL WORD POINTER
          UJN    CWAX        RETURN 
 DCE      SPACE  4,15 
**        DCE - DROP CHANNEL AND EQUIPMENT. 
* 
*         ENTRY  (EQ) = BIT 2**9 SET IF EQUIPMENT RESERVED. 
* 
*         EXIT   CHANNEL AND EQUIPMENT DROPPED. 
*                (EQ) = BIT 2**9 RESET. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CLR, RTM.
* 
*         MACROS DCHAN, MONITOR.
  
  
 DCE      SUBR               ENTRY/EXIT 
          LDD    EQ          CHECK EQUIPMENT
          SBD    TH 
          MJN    DCEX        IF NOT RESERVED
          STD    EQ          CLEAR BIT 2**9 
          STD    CM+1        DROP EQUIPMENT 
          MONITOR  DEQM 
          LDN    MX          DROP MULTIPLEXER CHANNEL 
          DCHAN 
          RJM    RTM         RELEASE TERMINAL ON MULTIPLEXER
          RJM    CLR         CLEAR LAST REQUEST 
          UJN    DCEX        RETURN 
 DPP      SPACE  4,15 
**        DPP - DROP PPU. 
* 
*         DROPS CHANNEL AND EQUIPMENT, SIGNALS DRIVER SHUTDOWN
*         TO *RDF*, AND DROPS THE PPU.
* 
*         EXIT   TO *PPR*.
* 
*         CALLS  DCE, SDS.
* 
*         MACROS MONITOR. 
  
  
 DPP      BSS    0           ENTRY
          RJM    DCE         DISCONNECT CHANNEL AND EQUIPMENT 
          RJM    SDS         SIGNAL DRIVER SHUTDOWN 
          MONITOR  DPPM      DROP PPU 
          LJM    PPR         EXIT TO PPU RESIDENT 
 INI      SPACE  4,25 
**        INI - PROCESS INITIAL LOAD. 
* 
*         PROCESSES THE INITIAL LOAD OF THE DRIVER DURING 
*         *RDF* INITIALIZATION. 
* 
*         ENTRY  (IR+4) = DRIVER CONTROL WORD POINTER.
*                (DC - DC+4) = DRIVER CONTROL WORD. 
* 
*         EXIT   *VDRL* DRIVER CONTROL WORD INITIALIZED.
*                MUX TABLE ENTRY INITIALIZED. 
*                (DC - DC+4) = DRIVER CONTROL WORD. 
*                (TN) = DRIVER TERMINAL NUMBER. 
* 
*         ERROR  TO *ERR* IF NOT CYBER 170-8XX. 
*                  (A) = ADDRESS OF ERROR MESSAGE.
* 
*         USES   CM - CM+4, DC - DC+4.
* 
*         CALLS  CEF, CWA, TID. 
  
  
 INI      SUBR               ENTRY/EXIT 
          RJM    STP         SYNCHRONIZE *TSEM* PROCESSING
  
*         TRANSMIT PORT COUNT TO EXECUTIVE INITIALIZATION.
  
          LDN    ZERL 
          CRD    CM 
          LDN    1           SET TERMINAL COUNT 
          STD    CM+3 
          STD    DC+3 
          STD    DC          SET REPLY INTERLOCK NON-ZERO 
          LDN    2           SET TERMINAL ID TABLE LENGTH 
          STD    DC+4 
          LDD    RA          WRITE MUX TABLE ENTRY
          SHN    6
          ADC    MUXP+VMTM
          CWD    CM 
          RJM    CWA         SET DRIVER CONTROL WORD ADDRESS
          CWD    DC          WRITE DRIVER CONTROL WORD
  
*         WAIT FOR CP EXECUTIVE INITIALIZATION TO REPLY.
  
 INI2     DELAY              PAUSE FOR 128 USECS
          RJM    CEF         CHECK ERROR FLAG 
          RJM    CWA         SET DRIVER CONTROL WORD ADDRESS
          CRD    DC          READ DRIVER CONTROL WORD 
          LDD    DC          CHECK FOR EXECUTIVE RESPONSE 
          NJN    INI2        IF NO RESPONSE FROM EXECUTIVE
  
*         SET TERMINAL NUMBER AND TERMINAL ID TABLE.
  
          LDD    DC+4        SET ASSIGNED TERMINAL NUMBER 
          STD    TN 
          RJM    TID         SET TERMINAL ID TABLE
  
*         DROP PP IF NOT CYBER 170-8XX MAINFRAME. 
  
          LDK    MABL        CHECK MAINFRAME TYPE 
          CRD    CM 
          LDD    CM+1 
          SHN    21-13
          PJP    INIX        IF CYBER 170-8XX MAINFRAME 
          LDN    MCBR        * RDF CANNOT BE RUN ON MAINFRAME.* 
          LJM    IMT         ISSUE MESSAGE AND TERMINATE
 RCE      SPACE  4,15 
**        RCE - RESERVE CHANNEL AND EQUIPMENT.
* 
*         ENTRY  (RCEA) = UPPER ACCESS LEVEL LIMIT OF TPM.
* 
*         EXIT   EQUIPMENT AND CHANNEL RESERVED.
*                (EQ) = BIT 2**49 SET TO INDICATE THAT EQUIPMENT
*                       IS RESERVED.
*                MUX TABLE ENTRY UPDATED WITH CH, PN, AND UAL.
* 
*         ERROR  TO *MRER* IF EQUIPMENT NOT ASSIGNED. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS RCHAN, MONITOR.
  
  
 RCE      SUBR               ENTRY/EXIT 
          LDD    EQ          CHECK EQUIPMENT
          STD    CM+1 
          SBD    TH 
          PJN    RCEX        IF ALREADY RESERVED
          LDK    REQS        REQUEST ACTIVE EQUIPMENT 
          STD    CM+2 
          MONITOR REQM       REQUEST EQUIPMENT
          LDD    CM+1 
          NJN    RCE1        IF EQUIPMENT ASSIGNED
          LJM    MRER        * 1TM - NO TPM AVAILABLE.* 
  
 RCE1     LDN    MX          REQUEST CHANNEL
          RCHAN 
          LDD    TH          SET BIT 2**9 ON EST ORDINAL
          RAD    EQ 
          LDD    RA          READ MUX TABLE ENTRY 
          SHN    6
          ADC    MUXP+VMTM
          CRD    CM 
          LDN    MX          SET CHANNEL
          SHN    6
          LMD    PN          SET PORT NUMBER
          STD    CM 
          LDC    *           SET UPPER ACCESS LEVEL LIMIT FOR MUX 
 RCEA     EQU    *-1
          STD    CM+2 
          LDD    RA          REWRITE MUX TABLE ENTRY
          SHN    6
          ADC    MUXP+VMTM
          CWD    CM 
          UJP    RCEX        RETURN 
 SDS      SPACE  4,15 
**        SDS - SIGNAL DRIVER SHUTDOWN. 
* 
*         SIGNALS DRIVER SHUTDOWN BY SETTING THE DRIVER 
*         SHUTDOWN FLAG IN THE DRIVER CONTROL WORD. 
* 
*         EXIT   DRIVER SHUTDOWN FLAG SET IN DRIVER 
*                CONTROL WORD.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CWA. 
  
  
 SDS      SUBR               ENTRY/EXIT 
          RJM    CWA         SET DRIVER CONTROL WORD ADDRESS
          CRD    CM          READ DRIVER CONTROL WORD 
          LDD    CM          CHECK SHUTDOWN FLAG
          NJN    SDSX        IF DRIVER SHUTDOWN ALREADY SET, RETURN 
          LDN    1           SET DRIVER SHUTDOWN FLAG 
          STD    CM 
          RJM    CWA         REWRITE DRIVER CONTROL WORD
          CWD    CM 
          UJN    SDSX        RETURN 
 SEL      SPACE  4,15 
**        SEL - SELECT MULTIPLEXER PORT.
* 
*         CALLS *STM* TO SELECT THE TPM PORT, TO GET
*         AND STORE THE PORT STATUS AND ISSUES TPM
*         FUNCTION CODES TO SET THE PORT OPERATING MODE,
*         SET *DATA TERMINAL READY*, AND *REQUEST TO SEND*. 
* 
*         ENTRY  (PN) = PORT NUMBER.
* 
*         EXIT   PORT SELECTED. 
*                (SSMX) = PORT STATUS.
*                TO *MRER* IF PORT NOT RESERVED.
* 
*         CALLS  IFN, PMA, RMA, STM.
  
  
 SEL      SUBR               ENTRY/EXIT 
          RJM    PMA         PRESET MUX ACCESS
          LDD    PN          GET PORT NUMBER
          LDC    PRTO        SET TIME OUT DELAY 
          STD    T2 
          LDD    PN          GET PORT NUMBER
          RJM    SPN         SET PORT NUMBER
 SEL1     RJM    STM
          NJN    SEL3        IF PORT RESERVED 
          LDN    100D/4      DELAY 100 MILLISECONDS 
          STD    T0 
 SEL2     DELAY 
          RJM    CEF         CHECK ERROR FLAG 
          RJM    CTE
          PJN    SEL2        IF 100 MILLISECONDS NOT EXPIRED
          SOD    T2 
          NJN    SEL1        IF TIME OUT NOT EXPIRED
          LJM    MRER        * 1TM - NO TPM AVAILABLE.* 
  
 SEL3     LDC    MXSM+TPMODE SET PORT OPERATING MODE
          RJM    IFN
          LDK    MXDR+1      SET *DATA TERMINAL READY*
          RJM    IFN
          LDK    MXRTS+1     SET *REQUEST TO SEND*
          RJM    IFN
          LDK    MXMC        CLEAR PORT I/O BUFFERS 
          RJM    IFN
          RJM    RMA         RELEASE MULTIPLEXER ACCESS 
          UJP    SELX        RETURN 
 STP      SPACE  4,15 
**        STP - SYNCHRONIZE MONITOR *TSEM* PROCESSING.
* 
*         ISSUE SPECIAL *TSEM* REQUEST TO ENABLE
*         *TSEM* REQUEST PROCESSING.
* 
*         ENTRY  (IR+4) = DRIVER CONTROL WORD POINTER.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 STP      SUBR               ENTRY/EXIT 
          LDK    ZERL        CLEAR ZERO WORD
          CRD    CM 
          LCN    0           SET *TSEM* REQUEST 
          STD    CM 
          LDD    MA          WRITE REQUEST TO MESSAGE BUFFER
          CWD    CM 
          MONITOR TSEM       ISSUE *TSEM* REQUEST 
          UJN    STPX        RETURN 
 TID      SPACE  4,15 
**        TID - SET TERMINAL ID TABLE.
* 
*         WRITES DRIVER TERMINAL ID TABLE TO CM.
* 
*         ENTRY  (DC - DC+4) = DRIVER CONTROL WORD. 
* 
*         EXIT   DRIVER TERMINAL ID TABLE WRITTEN TO CM.
* 
*         USES   CM - CM+4. 
  
  
 TID      SUBR               ENTRY/EXIT 
          LDD    DC+1        SET DRIVER STACK ADDRESS 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    DC+2 
          ADN    4           READ *LIMIT* POINTER 
          CRD    CM 
          LDD    CM+3        SET ADDRESS FOR ID TABLE 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    CM+4 
          CWM    TIDA,ON     WRITE ID TABLE TO CM 
          CWM    TIDB,ON
          UJN    TIDX        RETURN 
  
  
 TIDA     VFD    60/3LTPM    TPM TERMINAL ID
 TIDB     VFD    60/6LBLKTPM  BLKEDIT TPM TERMINAL ID 
          TITLE  ERROR PROCESSING ROUTINES. 
 FTER     SPACE  4,10 
**        FTER - FUNCTION TIME-OUT ERROR PROCESSOR. 
* 
*         ENTRY  (A) = FUNCTION CODE. 
* 
*         EXIT   (A) = 1/ERROR LOG FLAG, 5/MESSAGE NUMBER.
  
  
 FTER     BSS    0           ENTRY
          STM    //IMTB      SAVE FUNCTION CODE 
          LDN    MFTO+40     * RMEEE CXX PYY FNNNN REJECT.* 
*         JMP    IMT         ISSUE MESSAGE AND TERMINATE
 IMT      SPACE  4,10 
**        IMT - ISSUE MESSAGE AND TERMINATE.
* 
*         ENTRY  (A) = 1/ERROR LOG FLAG, 5/MESSAGE NUMBER.
* 
*         EXIT   TO *4TM*.
* 
*         MACROS EXECUTE. 
  
  
 IMT      BSS    0           ENTRY
          STM    //IMTA      SAVE MESSAGE REQUEST 
          EXECUTE  4TM
          LJM    DPP         DROP PP
 MRER     SPACE  4,10 
**        MRER - NORMAL ERROR PROCESSOR FOR *COMPMRA*.
* 
*         EXIT   (A) = MESSAGE NUMBER.
  
  
 MRER     BSS    0           ENTRY
          LDN    MNTA        * NO TPM AVAILABLE.* 
          UJN    IMT         ISSUE MESSAGE AND TERMINATE
          SPACE  4,10 
*         COMMON DECKS. 
  
*CALL     COMPMRA 
*CALL     COMPTMA 
 PMA      HERE
          SPACE  4,10 
          QUAL   *
          SPACE  4,10 
          OVERFLOW  PPFW,IMTA 
          TITLE 
          TTL    1TM/3TM - MODIFY TRANSLATION TABLES. 
          IDENT  3TM,MTTX 
*COMMENT  1TM - MODIFY TRANSLATION TABLES.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 3TM      SPACE  4,10 
***       3TM - MODIFY TRANSLATION TABLES.
          SPACE  4,10 
          ORG    OVLA 
 MTT      SPACE  4,15 
**        MTT - MODIFY TRANSLATION TABLES.
* 
*         MODIFIES TRANSLATION TABLES FOR 63 CHARACTER SET. 
* 
*         EXIT   TRANSLATION TABLES MODIFIED IF THE SYSTEM
*                IS IN 63 CHARACTER SET MODE. 
* 
*         USES   CM - CM+4. 
  
  
 MTT      SUBR               ENTRY/EXIT 
          LDK    IPRL        CHECK SYSTEM CHARACTER SET MODE
          CRD    CM 
          LDD    CM+2 
          LPN    1
          NJN    MTTX        IF SYSTEM IN 64 CHARACTER SET MODE 
  
*         MODIFY INPUT CONVERSION TABLE.
  
          LDN    63          SET *COLON*
          STM    TINT+.ACLN 
          LDC    204         SET *PERCENT*
          STM    TINT+.APCT 
  
*         MODIFY OUTPUT CONVERSION TABLE. 
  
          LDC    .CCLN       SET *COLON*
          STM    TOTP+63
          LDC    .CPCT       SET *PERCENT*
          STM    TOTP+204 
          JMP    MTTX        RETURN 
          TITLE  INPUT TRANSLATION TABLE. 
 TTY      SPACE  4,15 
***       TTY - *ASCII* TERMINAL, 64 CHARACTER SET. 
* 
*         USA STANDARD CODE FOR INFORMATION INTERCHANGE.
*         USAS X3.4-1968 REVISION OF X3.4-1967. 
  
  
**        INPUT CONVERSION. 
* 
*         INDEXED BY *ASCII* CHARACTER VALUE. 
  
  
 TINT     BSS    0           FWA OF INPUT TRANSLATION TABLE 
          QUAL   TRN
          LOC    0
  
 00       INASC  7640,BRK    NUL  FIRST CHARACTER OF A BREAK
 01       INASC  7641        SOH  START OF HEADING
 02       INASC  7642        STX  START OF TEXT 
 03       INASC  7643,ETX    ETX  END OF TEXT 
 04       INASC  7644,EOT    EOT  END OF TRANSMISSION 
 05       INASC  7645        ENQ  ENQUIRY 
 06       INASC  7646        ACK  ACKNOWLEDGE 
 07       INASC  7647        BEL  BELL
 08       INASC  7650,DPC    BS   BACKSPACE 
 09       INASC  7651        HT   HORIZONTAL TABULATION 
 0A       INASC  7652,NLI    LF   LINE FEED 
 0B       INASC  7653        VT   VERTICAL TABULATION 
 0C       INASC  7654        FF   FORM FEED 
 0D       INASC  7655,CRT    CR   CARRIAGE RETURN 
 0E       INASC  7656        SO   SHIFT OUT 
 0F       INASC  7657        SI   SHIFT IN
  
 10       INASC  7660        DLE  DATA LINK ESCAPE
 11       INASC  7661        DC1  DEVICE CONTROL 1 (X-ON) 
 12       INASC  7662        DC2  DEVICE CONTROL 2
 13       INASC  7663        DC3  DEVICE CONTROL 3 (X-OFF)
 14       INASC  7664        DC4  DEVICE CONTROL 4 (STOP) 
 15       INASC  7665        NAK  NEGATIVE ACKNOWLEDGE
 16       INASC  7666        SYN  SYNCHRONOUS IDLE
 17       INASC  7667        ETB  END OF TRANSMISSION BLOCK 
 18       INASC  7670        CAN  CANCEL
 19       INASC  7671        EM   END OF MEDIUM 
 1A       INASC  7672        SUB  SUBSTITUTE
 1B       INASC  7673,DLN    ESC  ESCAPE
 1C       INASC  7674        FS   FILE SEPARATOR
 1D       INASC  7675        GS   GROUP SEPARATOR 
 1E       INASC  7676,CRS    RS   RECORD SEPARATOR
 1F       INASC  7677        US   UNIT SEPARATOR
  
 20       INASC  55          SP   SPACE 
 21       INASC  66          EX   EXCLAMATION POINT 
 22       INASC  64          DQ   DOUBLE QUOTE (DIARESIS) 
 23       INASC  60          NM   NUMBER SIGN 
 24       INASC  53          DS   DOLLAR SIGN 
 25       INASC  63          PCT  PERCENT 
* 25      INASC  7404        PCT  PERCENT (63 CHARACTER SET)
 26       INASC  67          AM   AMPERSAND 
 27       INASC  70          AP   APOSTROPHE
 28       INASC  51          OP   OPENING PARENTHESIS 
 29       INASC  52          CP   CLOSING PARENTHESIS 
 2A       INASC  47          AS   ASTERISK
 2B       INASC  45          PL   PLUS
 2C       INASC  56          CM   COMMA (CEDILLA) 
 2D       INASC  46          MI   MINUS (HYPHEN)
 2E       INASC  57          PD   PERIOD (DECIMAL POINT)
 2F       INASC  50          SL   SLANT 
  
 30       INASC  33          0
 31       INASC  34          1
 32       INASC  35          2
 33       INASC  36          3
 34       INASC  37          4
 35       INASC  40          5
 36       INASC  41          6
 37       INASC  42          7
 38       INASC  43          8
 39       INASC  44          9
 3A       INASC  ,CLN        CL   COLON 
* 3A      INASC  63          CL   COLON (63 CHARACTER SET)
 3B       INASC  77          SC   SEMICOLON 
 3C       INASC  72          LT   LESS THAN 
 3D       INASC  54          EQ   EQUALS
 3E       INASC  73          GT   GREATER THAN
 3F       INASC  71          QM   QUESTION MARK 
  
 40       INASC  7401,ECI    AT   COMMERCIAL AT 
 41       INASC  01          A
 42       INASC  02          B
 43       INASC  03          C
 44       INASC  04          D
 45       INASC  05          E
 46       INASC  06          F
 47       INASC  07          G
 48       INASC  10          H
 49       INASC  11          I
 4A       INASC  12          J
 4B       INASC  13          K
 4C       INASC  14          L
 4D       INASC  15          M
 4E       INASC  16          N
 4F       INASC  17          O
  
 50       INASC  20          P
 51       INASC  21          Q
 52       INASC  22          R
 53       INASC  23          S
 54       INASC  24          T
 55       INASC  25          U
 56       INASC  26          V
 57       INASC  27          W
 58       INASC  30          X
 59       INASC  31          Y
 5A       INASC  32          Z
 5B       INASC  61          OB   OPENING BRACKET 
 5C       INASC  75          RVS  REVERSE SLANT 
 5D       INASC  62          CB   CLOSING BRACKET 
 5E       INASC  7402,ECI    CF   CIRCUMFLEX
 5F       INASC  65          UL   UNDERLINE 
  
 60       INASC  7407        GV   GRAVE ACCENT
 61       INASC  7601        A    LC
 62       INASC  7602        B    LC
 63       INASC  7603        C    LC
 64       INASC  7604        D    LC
 65       INASC  7605        E    LC
 66       INASC  7606        F    LC
 67       INASC  7607        G    LC
 68       INASC  7610        H    LC
 69       INASC  7611        I    LC
 6A       INASC  7612        J    LC
 6B       INASC  7613        K    LC
 6C       INASC  7614        L    LC
 6D       INASC  7615        M    LC
 6E       INASC  7616        N    LC
 6F       INASC  7617        O    LC
  
 70       INASC  7620        P    LC
 71       INASC  7621        Q    LC
 72       INASC  7622        R    LC
 73       INASC  7623        S    LC
 74       INASC  7624        T    LC
 75       INASC  7625        U    LC
 76       INASC  7626        V    LC
 77       INASC  7627,CLW    W    LC
 78       INASC  7630        X    LC
 79       INASC  7631        Y    LC
 7A       INASC  7632        Z    LC
 7B       INASC  7633        LB   LEFT BRACE
 7C       INASC  7634        VL   VERTICAL LINE 
 7D       INASC  7635        RB   RIGHT BRACE 
 7E       INASC  7636        TL   TILDE (OVERLINE)
 7F       INASC  7637,DEL    DEL  DELETE (RUBOUT) 
          QUAL   *
          LOC    *O 
          TITLE  OUTPUT TRANSLATION TABLE.
**        OUTPUT CONVERSION.
*         INDEXED BY DISPLAY CODE VALUE.
  
  
 TOTP     BSS    0           FWA OF OUTPUT TRANSLATION TABLE
          QUAL   TRN
          LOC    0
  
 00       OTASC  3A          COLON
 01       OTASC  41          A
 02       OTASC  42          B
 03       OTASC  43          C
 04       OTASC  44          D
 05       OTASC  45          E
 06       OTASC  46          F
 07       OTASC  47          G
  
 10       OTASC  48          H
 11       OTASC  49          I
 12       OTASC  4A          J
 13       OTASC  4B          K
 14       OTASC  4C          L
 15       OTASC  4D          M
 16       OTASC  4E          N
 17       OTASC  4F          O
  
 20       OTASC  50          P
 21       OTASC  51          Q
 22       OTASC  52          R
 23       OTASC  53          S
 24       OTASC  54          T
 25       OTASC  55          U
 26       OTASC  56          V
 27       OTASC  57          W
  
 30       OTASC  58          X
 31       OTASC  59          Y
 32       OTASC  5A          Z
 33       OTASC  30          0
 34       OTASC  31          1
 35       OTASC  32          2
 36       OTASC  33          3
 37       OTASC  34          4
  
 40       OTASC  35          5
 41       OTASC  36          6
 42       OTASC  37          7
 43       OTASC  38          8
 44       OTASC  39          9
 45       OTASC  2B          PL   PLUS
 46       OTASC  2D          MI   MINUS (HYPHEN)
 47       OTASC  2A          AS   ASTERISK
  
 50       OTASC  2F          SL   SLANT 
 51       OTASC  28          OP   OPENING PARENTHESIS 
 52       OTASC  29          CP   CLOSING PARENTHESIS 
 53       OTASC  24          DS   DOLLAR SIGN 
 54       OTASC  3D          EQ   EQUALS
 55       OTASC  20          SP   SPACE 
 56       OTASC  2C          CM   COMMA (CEDILLA) 
 57       OTASC  2E          PD   PERIOD (DECIMAL POINT)
  
 60       OTASC  23          NM   NUMBER SIGN 
 61       OTASC  5B          OB   OPENING BRACKET 
 62       OTASC  5D          CB   CLOSING BRACKET 
 63       OTASC  25          PCT  PERCENT 
* 63      OTASC  30          CLN  COLON (63 CHARACTER SET)
 64       OTASC  22          DQ   DOUBLE QUOTE (DIARESIS) 
 65       OTASC  5F          UL   UNDERLINE 
 66       OTASC  21          EX   EXCLAMATION POINT 
 67       OTASC  26          AM   AMPERSAND 
  
 70       OTASC  27          AP   APOSTROPHE
 71       OTASC  3F          QM   QUESTION MARK 
 72       OTASC  3C          LT   LESS THAN 
 73       OTASC  3E          GT   GREATER THAN
 74       OTASC  40          AT   COMMERCIAL AT 
 75       OTASC  5C          RVS  REVERSE SLANT 
 76       OTASC  5E          CF   CIRCUMFLEX
 77       OTASC  3B          SC   SEMICOLON 
  
*         EXTENDED CHARACTER SET (ESCAPE 1).
  
 7600     OTASC              NULL 
 7601     OTASC  61          A    LC
 7602     OTASC  62          B    LC
 7603     OTASC  63          C    LC
 7604     OTASC  64          D    LC
 7605     OTASC  65          E    LC
 7606     OTASC  66          F    LC
 7607     OTASC  67          G    LC
  
 7610     OTASC  68          H    LC
 7611     OTASC  69          I    LC
 7612     OTASC  6A          J    LC
 7613     OTASC  6B          K    LC
 7614     OTASC  6C          L    LC
 7615     OTASC  6D          M    LC
 7616     OTASC  6E          N    LC
 7617     OTASC  6F          O    LC
  
 7620     OTASC  70          P    LC
 7621     OTASC  71          Q    LC
 7622     OTASC  72          R    LC
 7623     OTASC  73          S    LC
 7624     OTASC  74          T    LC
 7625     OTASC  75          U    LC
 7626     OTASC  76          V    LC
 7627     OTASC  77          W    LC
  
 7630     OTASC  78          X    LC
 7631     OTASC  79          Y    LC
 7632     OTASC  7A          Z    LC
 7633     OTASC  7B          LB   LEFT BRACE
 7634     OTASC  7C          VL   VERTICAL LINE 
 7635     OTASC  7D          RB   RIGHT BRACE 
 7636     OTASC  7E          TL   TILDE (OVERLINE)
 7637     OTASC  7F          DEL  DELETE
  
 7640     OTASC  00          NUL  NULL (MEDIA FILL) 
 7641     OTASC  01          SOH  START OF HEADING
 7642     OTASC  02          STX  START OF TEXT 
 7643     OTASC  03          ETX  END OF TEXT 
 7644     OTASC  04          EOT  END OF TRANSMISSION 
 7645     OTASC  05          ENQ  ENQUIRY 
 7646     OTASC  06          ACK  ACKOWLEDGE
 7647     OTASC  07          BEL  BELL
  
 7650     OTASC  08          BS   BACKSPACE 
 7651     OTASC  09          HT   HORIZONTAL TABULATION 
 7652     OTASC  0A          LF   LINE FEED 
 7653     OTASC  0B          VT   VERTICAL TABULATION 
 7654     OTASC  0C          FF   FORM FEED 
 7655     OTASC  ,ACR        CR   CARRIAGE RETURN 
 7656     OTASC  0E          SO   SHIFT OUT 
 7657     OTASC  0F          SI   SHIFT IN
  
 7660     OTASC  10          DLE  DATA LINK ESCAPE
 7661     OTASC  11          DC1  DEVICE CONTROL 1 (X-ON) 
 7662     OTASC  12          DC2  DEVICE CONTROL 2
 7663     OTASC  13          DC3  DEVICE CONTROL 3 (X-OFF)
 7664     OTASC  14          DC4  DEVICE CONTROL 4 (STOP) 
 7665     OTASC  15          NAK  NEGATIVE ACKNOWLEDGE
 7666     OTASC  16          SYN  SYNCHRONOUS IDLE
 7667     OTASC  17          ETB  END OF TRANSMISSION BLOCK 
  
 7670     OTASC  18          CAN  CANCEL
 7671     OTASC  19          EM   END OF MEDIUM 
 7672     OTASC  1A          SUB  SUBSTITUTE
 7673     OTASC  1B          ESC  ESCAPE
 7674     OTASC  1C          FS   FILE SEPARATOR
 7675     OTASC  1D          GS   GROUP SEPARATOR 
 7676     OTASC  1E          RS   RECORD SEPARATOR
 7677     OTASC  1F          US   UNIT SEPARATOR
  
*         EXTENDED CHARACTER SET (ESCAPE 2).
  
 7400     OTASC              NULL 
 7401     OTASC  40          AT   COMMERCIAL AT 
 7402     OTASC  5E          CF   CIRCUMFLEX
 7403     OTASC              NULL 
 7404     OTASC  3A          CL   COLON 
* 7404    OTASC  25          PCT  PERCENT (63 CHARACTER SET)
 7405     OTASC  11          DC1  DEVICE CONTROL 1 (X-ON) 
 7406     OTASC  13          DC3  DEVICE CONTROL 3 (X-OFF)
 7407     OTASC  60          GV   GRAVE ACCENT
  
 7410     OTASC  ,ACR        CR   CARRIAGE RETURN 
 7411     OTASC  0A          LF   LINE FEED 
 7412     OTASC  ,ANL        NL   NEW LINE (CR/LF)
  
          QUAL   *
          LOC    *O 
  
          OVERFLOW  OVLA
          TTL    1TM/4TM - MESSAGE PROCESSOR. 
          TITLE  MESSAGE PROCESSOR. 
          IDENT  4TM,MGPX 
*COMMENT  1TM - MESSAGE PROCESSOR.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
          ORG    OVLA 
 MGP      SPACE  4,15 
**        MGP - MESSAGE PROCESSOR.
* 
*         ENTRY  (A) = 1/E,5/N. 
*                      E = 1, IF MESSAGE IS TO GO TO ERROR LOG ALSO.
*                      N = ERROR MESSAGE NUMBER FROM TABLE *TMSG*.
* 
*         USES   T0, T1, T2.
* 
*         CALLS  DFM, O2D.
* 
*         NOTES  WHEN A MESSAGE IS ISSUED TO THE ERROR LOG, THE 
*                FIRST SIX CHARACTERS (* 1TM -*) ARE NOT SENT.
  
  
 MGP      SUBR               ENTRY/EXIT 
          LDM    IMTA        MESSAGE REQUEST
          STD    T0 
          LPN    37 
          ADC    TMSG-1 
          STD    T1          ADDRESS OF ADDRESS OF MESSAGE
          LDI    T1          SAVE MESSAGE ADDRESS 
          STM    MGPA 
          LDD    T1 
          LMC    TMSG+MFTO-1
          ZJN    MGP3        IF FUNCTION TIME-OUT 
 MGP1     LDD    T0 
          SHN    21-5 
          PJN    MGP2        IF NOT TO BE ISSUED TO THE ERROR LOG 
          LDI    T1 
          ADC    3+ERLN 
          RJM    DFM         ISSUE ERROR LOG MESSAGE
 MGP2     LDC    ** 
 MGPA     EQU    *-1
          RJM    DFM         ISSUE DAYFILE MESSAGE
          JMP    MGPX        RETURN 
  
*         FORMAT EST ORDINAL INTO DAYFILE MESSAGE.
  
 MGP3     LDI    T1          SET FWA OF MESSAGE 
          STD    T2 
          LDD    EQ          CONVERT UPPER 3 BITS 
          SHN    -6 
          LPN    7
          ADC    2RM0 
          STM    4,T2 
          LDD    EQ          CONVERT LOWER 6 BITS 
          RJM    O2D
          STM    5,T2 
  
*         FORMAT CHANNEL AND PORT NUMBERS INTO DAYFILE MESSAGE. 
  
          LDN    MX          CONVERT CHANNEL NUMBER 
          RJM    O2D
          STM    7,T2 
          LDD    PN          CONVERT PORT NUMBER
          RJM    O2D
          STM    11,T2
  
*         FORMAT FUNCTION CODE INTO DAYFILE MESSAGE.
  
          LDM    IMTB        CONVERT UPPER TWO DIGITS 
          SHN    -6 
          RJM    O2D
          STM    13,T2
          LDM    IMTB        CONVERT LOWER TWO DIGITS 
          RJM    O2D
          STM    14,T2
          UJP    MGP1        ISSUE MESSAGES 
  
  
 TMSG     BSS    0           TABLE OF ERROR MESSAGES
          LOC    1
  
 MCBR     CON    =C* 1TM - RDF CANNOT BE RUN ON MAINFRAME.* 
 MFTO     CON    =C* 1TM - RMEEE CXX PYY FNNNN REJECT.* 
 MNTA     CON    =C* 1TM - NO TPM AVAILABLE.* 
 MTIO     CON    =C* 1TM - RDF TIME-OUT.* 
 MTER     CON    =C* 1TM - RDF TERMINATED.* 
  
          LOC    *O 
 O2D      SPACE  4,15 
**        O2D - CONVERT TWO DIGITS TO OCTAL DISPLAY CODE. 
* 
*         ENTRY  (A) = TWO OCTAL DIGITS TO BE CONVERTED.
* 
*         EXIT   (A) = DISPLAY CODE CONVERSION. 
  
  
 O2D      SUBR               ENTRY/EXIT 
          LPN    77          MASK EXTRANEOUS BITS 
          STD    T0          SAVE OCTAL VALUE 
          SHN    3           SPLIT UPPER AND LOWER 3-BIT VALUES 
          LMD    T0 
          SCN    70 
          ADC    2R00        CONVERT DIGITS 
          UJN    O2DX        RETURN 
  
  
          OVERFLOW  OVLA
          TTL    1TM - RDF TWO-PORT MULTIPLEXER DRIVER. 
 ITM      SPACE  4
          END 
