1TS 
          IDENT  1TS,STM
          PERIPH
          BASE   MIXED
          SST 
*COMMENT  1TS - INTERNAL STIMULATION DRIVER.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE   1TS - INTERNAL STIMULATION DRIVER.
          SPACE  4,10 
***       1TS - INTERNAL STIMULATION DRIVER.
*         G. R. MANSFIELD.   72/08/10.
*         R. A. JAPS.        77/12/05.
          SPACE  4,10 
***       *1TS* IS A STIMULATION DRIVER WHICH IS CALLED BY *STIMULA*
*         TO STIMULATE LOW SPEED INTERACTIVE TERMINALS FOR *IAF*. 
          SPACE  4,10 
***       INPUT REGISTER FORMAT.
* 
*T IR     18/ *1TS* ,24/ 0 ,18/ADDR 
* 
*         ADDR   ADDRESS OF CONTROL TABLE ENTRY FOR STIMULATION.
*                ADDR IS ZERO FOR STIMULATION INITIALIZATION. 
* 
*         REFER TO *STIMULA* FOR TABLE FORMATS. 
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         * IAF ABORT.* 
*                STIMULATION WAS ABORTED BECAUSE *IAF* WAS NOT
*                COMMUNICATING WITH THE STIMULATOR. 
* 
*         * OUT OF SYNCH.*
*                THE STIMULATION WAS ABORTED BECAUSE *1TS* WAS OUT OF 
*                SYNCH WITH *IAF*.
* 
*         * LOST STIMOUT DATA.* 
*                *1TS* WAS NOT ABLE TO RECOVER ALL OUTPUT BECAUSE THE 
*                CM BUFFERS WERE FULL.
* 
*         *XXXXXX.XXX SEC. 1TS CYCLE TIME.* 
*                INFORMATIVE MESSAGE STATING THE MAXIMUM CYCLE TIME 
*                FOR *1TS*. 
* 
*         * INVALID OPTIONAL THINK TIME.* 
*                STIMULATION WAS ABORTED BECAUSE OF AN INVALID OPTIONAL 
*                THINK TIME SPECIFICATION IN THE SCRIPTS.  CORRECT
*                SCRIPTS AND RETRY. 
* 
*         * ERROR IN SPECIAL ACCOUNT NUMBER.* 
*                STIMULATION WAS ABORTED BECAUSE AN ERROR IN THE
*                SCRIPTS WAS ENCOUNTERED WHILE PROCESSING THE SPECIAL 
*                ACCOUNT NUMBER FLAGS.
* 
*         * STIMULATION INITIATED.* 
*                INFORMATIVE MESSAGE STATING THAT THE STIMULATION HAS 
*                STARTED. 
* 
*         * IAF NOT ACTIVE.*
*                STIMULATION WAS ABORTED BECAUSE *IAF* WAS NOT AT 
*                CONTROL POINT 1.  BRING UP *IAF* AND RETRY.
* 
*         * MEMORY REQUEST ERROR.*
*                AN INTERNAL ERROR INDICATING THAT *STIMULA* HAS NOT
*                REQUESTED ENOUGH FL FOR THE STIMULATION. 
* 
*         * INPUT REQUESTED PAST END OF SCRIPT - NNNN.* 
*                AN INPUT REQUEST WAS RECEIVED EVEN THOUGH END OF 
*                SCRIPT HAD BEEN REACHED ON TERMINAL *NNNN*.  THIS
*                IS A FATAL ERROR.
          SPACE  4,10 
***       INSTALLATION NOTES. 
* 
*         THE STIMULATION DRIVER INTERFACES WITH *STIMULA*. 
*         *1TS* IS A STIMULATION DRIVER THAT COMMUNICATES 
*         WITH *1TN* VIA CHANNEL (INTERNAL STIMUALTION).
* 
*                              ************** 
*                              *            * 
*                              *    1TS     * 
*                              *            * 
*                              ************** 
*                                    I
*                CHANNEL             I
*                                    I
*                              ************** 
*                              *            * 
*                              *    1TN     * 
*                              *            * 
*                              ************** 
          SPACE  4
**        COMMON DECKS. 
  
  
*CALL     COMSACC 
*CALL     COMSPIM 
*CALL     COMPMAC 
*CALL     COMPCHI 
*CALL     COMSREM 
*CALL     COMSSCD 
*CALL     COMSSSD 
          LIST   X
*CALL     COMSSTM 
          LIST   -X 
          TITLE  DIRECT CELLS AND ASSEMBLY CONSTANTS. 
 DIRECT   SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 DP       EQU    20 - 24     DATA POINTER 
 TT       EQU    DP+2        THINK TIME 
 RT       EQU    DP+3        DATA RATE
 CK       EQU    DP+4        CLOCK
 OC       EQU    25          OUTPUT CHARACTER 
 IC       EQU    26          INPUT CHARACTER
 AT       EQU    30          ACTIVE TERMINAL COUNT
 LS       EQU    31          LAST SECOND COUNT
 MT       EQU    32          1TS MAX CYCLE TIME 
 LM       EQU    33          LAST MILLISECOND COUNT 
 MC       EQU    34          MILLISECOND COUNT
 NT       EQU    35          NUMBER OF TERMINALS
 TC       EQU    36          TERMINAL COUNT 
 LC       EQU    37          NUMBER OF TERMINALS TO LOGIN 
 OT       EQU    40          OUTPUT TERMINAL NUMBER 
 IT       EQU    41          INPUT TERMINAL NUMBER
 TW       EQU    42 - 47     WORD TWO OF *TTER* ENTRY 
 LI       EQU    TW+0        LINE SPEED 
 IS       EQU    TW+1        INPUT SPEED
 LD       EQU    TW+2        LOGOUT DELAY 
 TI       EQU    TW+3        INITIAL THINK TIME 
 TO       EQU    TW+4        OPTIONAL THINK TIME
 SC       EQU    47          SECOND COUNT 
 IN       EQU    60 - 64     IN POINTER 
****
          SPACE  4,10 
**        ASSEMBLY CONSTANTS. 
  
  
 CH       EQU    15          STIMULATOR CHANNEL 
          TITLE  MACRO DEFINITIONS. 
 RETURN   SPACE  4
**        RETURN - RETURN TO MANAGER TO ADVANCE TERMINAL PROCESSING.
* 
*         RETURN EXIT,ADDR
* 
*         ENTRY  *EXIT* = MANAGER EXIT NUMBER.
*                *ADDR* = MANAGER RETURN ADDRESS. 
*                IF *ADDR* IS NULL, RETURN TO NEXT PROGRAM ADDRESS. 
  
  
          PURGMAC RETURN
  
 RETURN   MACRO  N,A
  LDC A *+4 
  LJM N STT 
          ENDM
 TTADD    SPACE  4
**        TTADD - GENERATE TERMINAL TABLE ADDRESS.
* 
*         TTADD  TER,W
* 
*         ENTRY  *TER* = DIRECT LOCATION CONTAINING TERMINAL NUMBER.
*                W = 0, ADDRESS OF FIRST WORD OF ENTRY. 
*                  = 1, ADDRESS OF SECOND WORD OF ENTRY.
*                  = 2, ADDRESS OF THIRD WORD OF ENTRY. 
*                  = 3, ADDRESS OF FOURTH WORD OF ENTRY.
*                  = 4, ADDRESS OF FIFTH WORD OF ENTRY. 
* 
*         EXIT   (A) = DESIRED ADDRESS. 
  
  
 TTADD    MACRO T,W 
  LOCAL L 
  LDD RA
  SHN 6 
  ADD T 
  QUAL
L ADC **
  QUAL *
   IFC  EQ,$W$0$
 TTE0  RMT
  CON L 
 TTE0  RMT
   ENDIF
   IFC  EQ,$W$1$
 TTE1  RMT
   CON L
 TTE1  RMT
   ENDIF
   IFC  EQ,$W$2$
 TTE2  RMT
   CON L
 TTE2  RMT
   ENDIF
   IFC  EQ,$W$3$
 TTE3  RMT
   CON  L 
 TTE3  RMT
   ENDIF
   IFC  EQ,$W$4$
 TTE4  RMT
   CON  L 
 TTE4  RMT
   ENDIF
          ENDM
          TITLE  MAIN PROGRAM.
 STM      SPACE  4
**        STM - MAIN PROGRAM. 
  
  
          ORG    PPFW 
 STM      RJM    PRS         PRESET PROGRAM 
          ACN    CH 
  
*         UPDATE CLOCKS.
  
 STM1     LDC    RTCL        READ REAL TIME CLOCK 
          CRD    CM 
          LDD    CM+4        SET ELAPSED MILLISECOND COUNT
          SBM    STMD 
          PJN    STM2        IF CLOCK NOT RECYCLED
          ADC    10000B      IF CLOCK RECYCLED
 STM2     STD    MC          SET MILLISECOND COUNT SINCE LAST CYCLE 
          SBD    MT          CHECK CYCLE TIME 
          MJN    STM4        IF MAXIMUM NOT EXCEEDED
          RAD    MT          SET NEW MAXIMUM
 STM4     LDD    MC 
          RAD    LM          ADD LAST MILLISECOND 
          SBK    1000D
          PJN    STM5        IF SECOND ELAPSED
          LDN    0
          UJN    STM6        TOGGLE SECOND STATUS 
  
 STM5     STD    LM          SAVE LAST MILLISECOND
          AOD    LS          UPDATE LAST SECOND 
          LDN    1
 STM6     STD    SC          SET SECOND COUNT STATUS
          LDD    CM+4        CURRENT TIME 
          STM    STMD 
          LDD    NT          SET TERMINAL COUNT 
          STD    TC 
          LDD    MA          STORE CLOCK
          CWD    AT 
          LDN    2           SET ON LINE CONTROL
          STM    LCIC 
  
*         CHECK FOR END OF STIMULATION. 
  
 STM7     PAUSE 
          LDD    CM+1 
          STM    STMF        SAVE ERROR STATUS
          RJM    SAA         SET ABSOLUTE ADDRESSES 
          LDC    ** 
 STMF     EQU    *-1         (ERROR STATUS) 
          NJN    STM11       IF ERROR FLAG SET
          LDN    0
*         LDN    1           (INTERNAL ERROR ENCOUNTERED) 
 STMA     EQU    *-1
          NJN    STM11       IF INTERNAL ERROR ENCOUNTERED
          IJM    STM10,CH    IF DRIVER ABORTED
          FJM    STM8,CH     IF DRIVER READY
          LDN    77          DELAY
          SBN    1
          NJN    *-1         IF DELAY NOT EXPIRED 
          UJN    STM7        RETRY
  
 STM8     IAN    CH+40       INPUT SYNC CODE
          LPC    7777        TRUNCATE TO 12 BITS
          LMC    7777        CHECK FOR SYNC CODE
          NJN    STM9        IF NOT SYNC CODE 
          RJM    SSL         ENTER STIMULATOR SERVICE LOOP
          LDD    AT          CHECK ACTIVE TERMINAL COUNT
          ZJN    STM11       IF NONE ACTIVE 
          LJM    STM1        LOOP 
  
*         PROCESS OUT OF SYNC CONDITION.
  
 STM9     LDC    MSGB        SET MESSAGE ADDRESS
          UJN    STM12       TERMINATE STIMULATION RUN
  
*         PROCESS *IAF* ABORT.
  
 STM10    LDC    MSGA        * IAF ABORTED.*
          UJN    STM12       TERMINATE STIMULATION RUN
  
*         PROCESS END OF STIMULATION. 
  
 STM11    RJM    TDR         TERMINATE DRIVER 
          LDC    0
*         LDC    MSGE        * INVALID OPTIONAL THINK TIME.*
*         LDC    MSGB        * OUT OF SYNCH.* 
*         LDC    MSGF        * ERROR IN SPECIAL ACCOUNT NUMBER.*
*         LDC    MSGG        * INPUT REQUESTED PAST END OF SCRIPT...* 
 STMB     EQU    *-1
          ZJN    STM13       IF NO ERROR MESSAGE
  
*         TERMINATE STIMULATION RUN.
* 
*         ENTRY  (A) = MESSAGE ADDRESS. 
  
 STM12    RJM    DFM
 STM13    LDN    ZERL        CONVERT MAXIMUM CYCLE TIME 
          CRD    CM 
          LDD    MT 
          ZJN    STM14       IF NO TIME ACCUMULATED 
          STD    CM+4 
          LDD    MA 
          CWD    CM 
          MONITOR  RDCM      REQUEST DATA CONVERSION
          LDD    MA          SET UP MESSAGE 
          CRM    MSGD,ON     *XXXXXX.XXX SEC. 1TS CYCLE TIME.*
          LDC    MSGD 
          RJM    DFM
 STM14    RJM    ESD         END STIMOUT DATA 
          LDD    IR+3        SET CONTROL TABLE ENTRY COMPLETE 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          CRD    CM 
          LDC    4000 
          STD    CM 
          LDC    0
 STMC     EQU    *-1         (TOTAL TIMES IN REGULATION)
          STD    CM+1 
          LDD    IR+3 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          CWD    CM 
          UJN    DPP         DROP PPU 
  
 STMD     CON    0           PREVIOUS TIME
 DPP      SPACE  4
**        DPP - DROP PPU. 
  
  
 DPP      MONITOR  DPPM      DROP PPU 
          LJM    PPR         EXIT TO PP RESIDENT
          SPACE  4,10 
**        STIMULATION COMPLETION MESSAGES.
  
 MSGA     DATA   C* IAF ABORT.* 
 MSGB     DATA   C* OUT OF SYNCH.*
 MSGC     DATA   C* LOST STIMOUT DATA.* 
 MSGD     DATA   C*XXXXXX.XXX SEC. 1TS CYCLE TIME.* 
 MSGE     DATA   C* INVALID OPTIONAL THINK TIME.* 
 MSGF     DATA   C* ERROR IN SPECIAL ACCOUNT NUMBER.* 
 MSGG     DATA   H* INPUT REQUESTED PAST END OF SCRIPT -* 
 MSGH     DATA   C*NNNN.* 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPC2D 
          TITLE  TERMINATION ROUTINES.
 TDR      SPACE  4,15 
**        TDR - TERMINATE DRIVER. 
* 
*         ENTRY  STIMULATION ENDED. 
*                (NT) = NUMBER OF TERMINALS.
* 
*         EXIT   ALL TERMINALS SET OFF LINE.
*                TO *STM10*, IF OUT OF SYNCH OR *1TN* NOT RESPONDING. 
* 
*         USES   T1 - T4. 
* 
*         MACROS PAUSE, TTADD.
  
  
 TDR      SUBR               ENTRY/EXIT 
          LDN    20 
          STD    T4 
          LDN    0
          STD    T3 
 TDR1     IJM    STM10,CH    IF DRIVER ABORTED
          PAUSE 
          EJM    TDR1,CH     WAIT FOR DRIVER
          IAN    CH+40       INPUT SYNC CODE
          LPC    7777        TRUNCATE TO 12 BITS
          LMC    7777 
          ZJN    TDR2        IF IN SYNCH
          LJM    STM10       IF DRIVER ABORTED
  
 TDR2     STD    T1 
          STD    T2          CLEAR ACTIVE COUNT 
 TDR3     TTADD  T1,0        READ TERMINAL TABLE ENTRY
          CRD    DP 
          LDD    DP          CHECK STATUS 
          SHN    21-13
          MJN    TDR5        IF OFF LINE
          LDD    T2 
          NJN    TDR6        IF ONE ALREADY PROCESSED 
          AOD    T3 
          SBN    20 
          NJN    TDR4        DELAY LOG OFF
          STD    T3 
          LDC    4000        SET OFF LINE 
          STD    DP 
          TTADD  T1,0 
          CWD    DP 
 TDR4     LDD    TH          SET TERMINAL LOGGED OFF
          STD    T2 
          UJN    TDR6        OUTPUT CHARACTER 
  
 TDR5     LDN    0           SET OFF LINE 
 TDR6     OAN    CH+40
          FJM    *,CH 
          IAN    CH+40       ACCEPT DRIVER INPUT
          AOD    T1          ADVANCE TERMINAL NUMBER
          LMD    NT 
          NJP    TDR3        IF MORE TERMINALS
          LDD    T2 
          ZJN    TDR8        IF NO TERMINALS LOGGED OFF 
 TDR7     LJM    TDR1        LOOP 
  
 TDR8     SOD    T4 
          NJN    TDR7        IF FINAL PASS INCOMPLETE 
          DCN    CH+40
          LJM    TDRX        RETURN 
 ESD      SPACE  4,15 
**        ESD -  END STIMOUT DATA.
* 
*         ENTRY  STIMULATION COMPLETE.
*                (NT) = NUMBER OF TERMINALS.
* 
*         EXIT   DATA WORD IN *TTER* FLUSHED TO FET BUFFER. 
* 
*         USES   T1, T7, CM - CM+4. 
* 
*         CALLS  SDW. 
* 
*         MACROS TTADD. 
  
  
 ESD      SUBR               ENTRY/EXIT 
          LDN    1           (NO OUTPUT RECOVERY) 
*         LDN    0           (OUTPUT RECOVERY)
 ESDA     EQU    *-1
          NJN    ESDX        IF NO OUTPUT RECOVERY
          STD    T1          ZERO DUMMY CHARACTER 
          STD    T7          TERMINAL NUMBER
 ESD1     TTADD  T7,3        READ TERMINAL TABLE ENTRY
          CRD    CM 
          LDD    CM 
          ZJN    ESD2        IF NO ENTRY IN DATA WORD 
          RJM    SDW         STORE DATA WORD
 ESD2     AOD    T7          ADVANCE TERMINAL NUMBER
          LMD    NT 
          NJN    ESD1        IF MORE TERMINALS
          UJN    ESDX        RETURN 
          TITLE  STIMULATOR SERVICE.
 OFL      SPACE  4,10 
*         RETURNS FOR TERMINAL IDLE AND OFF LINE. 
  
  
 OFL      STM    TOCA,OT     SET ENTRY ADDRESS
 OFL1     LDN    0           SET OFF LINE STATUS
          STD    OC 
          UJN    STT1        STORE TERMINAL TABLE ENTRY 
  
 OFL2     LDN    0           SET OFF LINE STATUS
          STD    OC 
          UJN    NOP         RETURN FOR NO OPERATION
 ONL      SPACE  4,10 
*         RETURNS FOR TERMINAL IDLE AND ON LINE.
  
  
 ONL      STM    TOCA,OT     SET ENTRY ADDRESS
 ONL1     LDD    TH          SET ON LINE STATUS 
          STD    OC 
          UJN    STT1        STORE TERMINAL TABLE ENTRY 
  
 ONL2     LDD    TH          SET ON LINE STATUS 
 ONL3     STD    OC 
          UJN    NOP         RETURN FOR NO OPERATION
 STT      SPACE  4,10 
*         RETURNS FOR STORE TERMINAL TABLE ENTRY. 
  
  
 STT      STM    TOCA,OT     SET ENTRY ADDRESS
 STT1     TTADD  OT,0        STORE TERMINAL TABLE ENTRY 
          CWD    DP 
*         UJN    NOP         RETURN FOR NO OPERATION
 NOP      SPACE  4,10 
*         RETURN FOR NO OPERATION.
  
 NOP      AOD    OT          ADVANCE OUTPUT TERMINAL
          LMD    NT 
          NJN    SSL4        IF LIMIT NOT REACHED 
          STD    OT 
*         UJN    SSL4        PROCESS NEXT TERMINAL
 SSL      SPACE  4,10 
**        SSL - STIMULATOR SERVICE LOOP.
* 
*         ENTRY  (NT) = NUMBER OF TERMINALS BEING STIMULATED. 
*                (TC) = TERMINAL COUNT. 
* 
*         EXIT   ALL TERMINALS SERVICED.
* 
*         USES   IC, IT, TC, T1.
* 
*         CALLS  RTC. 
* 
*         NOTES  UPLINE DATA PROCESSORS RETURN TO THE SERVICE 
*                LOOP AT *SSL4*.
* 
*                *SSL* IS RESPONSIBLE FOR SENDING AND RECEIVING 
*                DATA FROM THE STIMULATOR CHANNEL.
  
  
 SSL4     IAN    CH+40       INPUT CHARACTER
          STD    IC 
          SOD    TC          DECREMENT TERMINAL COUNT 
          NJN    SSL1        IF NOT END OF TERMINALS
*         UJN    SSLX 
  
 SSL      SUBR               ENTRY/EXIT 
 SSL1     LDD    OC          OUTPUT CHARACTER 
          OAN    CH+40
          FJM    *,CH 
          LDD    IC          CHECK PREVIOUS INPUT CHARACTER 
          SHN    6
          PJN    SSL2        IF NO INPUT DATA 
          RJM    RTC         READ TERMINAL CHARACTER
 SSL2     AOD    IT          ADVANCE INPUT TERMINAL 
          LMD    NT 
          NJN    SSL3        IF LIMIT NOT REACHED 
          STD    IT 
 SSL3     LDM    TOCA,OT
          STD    T1 
          LJM    0,T1        ENTER OUTPUT ROUTINE 
          TITLE  UPLINE DATA PROCESSING ROUTINES. 
 LGI      SPACE  4,20 
**        LGI - PROCESS LOGIN.
* 
*         ENTRY  (LC) = LOGIN COUNT.
*                (SC) = SECOND COUNT. 
*                (OT) = OUTPUT TERMINAL.
*                (LCIC) = ON LINE CONTROL.
* 
*         EXIT   TERMINAL SET ON LINE.
* 
*         USES   LC, OC, CM - CM+4, DP - DP+4.
* 
*         MACROS RETURN, TTADD. 
* 
*         NOTES  *LGI* IS RESPONSIBLE FOR THE RATE AT WHICH 
*                TERMINALS ARE BROUGHT ON LINE. 
  
  
 LGI      LDD    LC          CHECK LOGIN COUNT
          NJN    LGI1        IF LOGIN ALLOWED 
          LJM    OFL2        SET OFF LINE STATUS
  
 LGI1     TTADD  OT,0        READ TERMINAL TABLE ENTRY
          CRD    DP 
          SOD    LC          DECREMENT LOGIN COUNT
          RETURN OFL
 LGIA     LDD    SC          CHECK SECOND COUNT 
          NJN    LGI2        IF SECOND ELAPSED
          LJM    OFL2        SET OFF LINE STATUS
  
 LGI2     TTADD  OT,0        READ TERMINAL TABLE ENTRY
          CRD    DP 
          SOD    CK          DECREMENT CLOCK
          ZJN    LGI3        IF START TIME REACHED
          MJN    LGI3        IF START TIME REACHED
          LJM    OFL1        SET OFF LINE STATUS
  
 LGI3     AOD    LC          ADJUST LOGIN COUNT 
          LDD    DP          CLEAR OFF LINE 
          LPN    77          KEEP UPPER 6 BITS OF SCRIPT ADDRESS
          STD    DP 
          RETURN OFL
 LGIB     LDM    LCIC        CHECK ON LINE CONTROL
          NJN    LGI4        IF OKAY TO BRING ON LINE 
          LJM    OFL2        SET OFF LINE STATUS
  
 LGI4     SOM    LCIC        DECREMENT ON LINE CONTROL
          TTADD  OT,0 
          CRD    DP 
          RETURN ONL
 LGI5     LDC    5000        SEND LEGAL CHARACTER 
          LJM    ONL3        SET ON LINE STATUS 
  
  
 LCIC     CON    0           ON LINE CONTROL
 LGID     CON    0           NUMBER OF ACTIVE TERMINALS 
 REJ      SPACE  4,10 
**        REJ - REJECT CHARACTER. 
* 
*         EXIT   (OC) = 1400. 
* 
*         USES   OC, DP - DP+4. 
* 
*         MACROS RETURN, TTADD. 
  
  
 REJ      BSS    0           ENTRY
          TTADD  OT,0        READ TERMINAL TABLE ENTRY
          CRD    DP 
          LDD    CK          CHECK CLOCK
          SBD    MC 
          MJN    REJ1        IF CHARACTER DELAY ELAPSED 
          STD    CK 
          LDC    1400        SET OUTPUT CHARACTER REJECT
          STD    OC 
          LJM    STT1        UPDATE TERMINAL STATUS 
  
 REJ1     ADD    RT          RESET CLOCK
          PJN    REJ2 
          LDD    RT 
 REJ2     STD    CK 
          RETURN ONL,ONL2 
 TTD      SPACE  4,15 
**        TTD - THINK TIME DELAY. 
* 
*         ENTRY  (OT) = OUTPUT TERMINAL NUMBER. 
* 
*         EXIT   THINK TIME DELAY EXPIRED.
*                INPUT SPEED SET FOR UPLINE DATA. 
*                TO *WTC*.
* 
*         USES   DP - DP+4, TW - TW+4.
* 
*         MACROS RETURN, TTADD. 
* 
*         NOTES  *TTD* IS RESPONSIBLE FOR GENERATING AND
*                PROCESSING A THINK TIME DELAY BEFORE SENDING 
*                UPLINE DATA. 
  
  
 TTD      BSS    0           ENTRY
          TTADD  OT,0        READ TERMINAL TABLE ENTRY
          CRD    DP 
          LDD    TT          SET THINK TIME 
          LPC    177
          STD    CK 
          IAN.   14          SELECT RANDOM INCREMENT
 TTDA     LPN    ** 
          RAD    CK 
          ZJN    TTD2        IF NO DELAY
          AOD    CK 
          RETURN ONL
          LDD    SC          CHECK SECOND COUNT 
          NJN    TTD1        IF SECOND ELAPSED
          LJM    ONL2        RETURN ON LINE STATUS
  
 TTD1     TTADD  OT,0        READ TERMINAL TABLE ENTRY
          CRD    DP 
          SOD    CK          DECREMENT CLOCK
          ZJN    TTD2        IF THINK TIME ELAPSED
          LJM    ONL1        RETURN ON LINE STATUS
  
 TTD2     TTADD  OT,1        READ TERMINAL TABLE ENTRY
          CRD    TW 
          LDD    IS          SET INPUT SPEED
          STD    CK 
          STD    RT 
          RETURN ONL,WTC
 WTC      SPACE  4,25 
**        WTC - WRITE CHARACTER.
* 
*         ENTRY  INPUT SPEED SET IN *TTER*. 
*                (OT) = OUTPUT TERMINAL.
*                (MC) = MILLESECOND TIME CLOCK. 
* 
*         EXIT   (OC) = OUTPUT CHARACTER. 
*                TO *STT1* IF CHARACTER TO OUTPUT.
*                TO *OTT1* TO PROCESS OPTIONAL THINK TIME.
*                TO *ONL1* IF OPTIONAL THINK TIME PROCESSED.
* 
*         USES   T0 - T6, DP - DP+4, TW - TW+4. 
* 
*         CALLS  GNT, OTT, SAN, SDC.
* 
*         MACROS TTADD. 
* 
*         NOTES  *WTC* IS RESPONSIBLE FOR THE FOLLOWING - 
*                1. PROCESSING INPUT SPEED FOR UPLINE DATA. 
*                2. GETTING THE NEXT CHARACTER OF UPLINE DATA 
*                   FROM THE SESSION SCRIPT IN CM.
*                3. PROCESS ANY SPECIAL CHARACTERS RELATED TO 
*                   TASKS, OPTIONAL THINK TIME, OR DYNAMIC
*                   USER NUMBERS. 
  
  
 WTC      BSS    0           ENTRY
          TTADD  OT,0        READ TERMINAL TABLE ENTRY
          CRD    DP 
  
*         CHECK IF INPUT THINK TIME EXPIRED.
  
          LDD    CK          CHECK CLOCK
          SBD    MC 
          MJN    WTC1        IF CHARACTER DELAY ELAPSED 
          STD    CK 
          LJM    ONL1        RETURN ON LINE STATUS
  
 WTC1     ADD    RT          SET NEW RATE 
          PJN    WTC2 
          LDD    RT 
 WTC2     STD    CK 
  
*         SAVE CURRENT SCRIPT ADDRESS FOR POSSIBLE LINE 
*         REGULATION PROCESSING.
  
          LDD    DP 
          SHN    21-11
          PJN    WTC3        IF NOT BEGINNING OF LINE 
          TTADD  OT,4        SAVE CURRENT ADDRESS OF SCRIPT 
          CRD    T1 
          LDD    DP 
          STD    T1 
          LDD    DP+1 
          STD    T1+1 
          LDN    0
          STD    T1+2 
          TTADD  OT,4 
          CWD    T1 
  
*         GET NEXT CHARACTER FROM SCRIPT SESSION. 
  
 WTC3     LDD    DP          SET BYTE NUMBER
          SHN    14 
          LPN    7
          STD    T5 
          LDD    DP 
          LPN    77 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    DP+1 
          CRD    T0 
          LDD    HN          ADVANCE BYTE 
          RAD    DP 
          SHN    -6 
          LPN    7
          LMN    5
          NJN    WTC4        IF NOT END OF WORD 
          AOD    DP+1        ADVANCE WORD 
          SHN    -14
          ADD    DP 
          LPC    1077        RESET BYTE 
          STD    DP 
 WTC4     TTADD  OT,0 
          CWD    DP 
          TTADD  OT,1 
          CRD    TW 
  
*         CHECK CHARACTERS FOR SPECIAL PROCESSING.
  
          LDI    T5          CHECK FOR SPECIAL CHARACTER
          SHN    -11
          ZJN    WTC7        IF NOT SPECIAL CHARACTER 
          LDN    0           CLEAR INDEX
          STD    T6 
 WTC5     LDM    TSCH,T6     CHECK FOR SPECIAL CHARACTER
          ZJN    WTC7        IF END OF TABLE
          LMI    T5 
          ZJN    WTC6        IF SPECIAL CHARACTER 
          LDN    2           ADVANCE TABLE INDEX
          RAD    T6 
          UJN    WTC5        LOOP 
  
 WTC6     LDM    TSCH+1,T6   GET PROCESSOR ADDRESS
          STD    T6 
          LJM    0,T6        PROCESS SPECIAL CHARACTER
  
 WTC7     LDD    TO 
          ZJN    WTC8        IF NOT IN OPTIONAL THINK TIME MODE 
          LJM    OTT1        PROCESS OPTIONAL THINK TIME
  
 WTC8     LDI    T5          SET CHARACTER
          LMD    TH          STORE OUTPUT CHARACTER 
          STD    OC 
          LDD    DP          CLEAR FIRST OUTPUT FLAG
          LPC    6777 
          STD    DP 
          LDD    TO          CHECK OPTIONAL THINK TIME ENTRY
          ZJN    WTC9        IF NOT OPTIONAL THINK TIME ENTRY 
          LDC    ONL1&STT1
 WTC9     LMC    STT1 
          STM    WTCA 
          LDD    OT          SET TERMINAL NUMBER
          STD    T7 
          LDD    OC          STORE DATA CHARACTER 
          LPC    377
          RJM    SDC
          LJM    *
*         LJM    STT1        (NO OPTIONAL THINK TIME) 
*         LJM    ONL1        (OPTIONAL THINK TIME PRESENT)
 WTCA     EQU    *-1
 TSCH     SPACE  4,10 
**        TSCH - TABLE OF SPECIAL CHARACTERS. 
* 
*T        12/ CHAR
*T,       12/ ADDR
* 
*         CHAR   SPECIAL CHARACTER (ASCII)
*         ADDR   ADDRESS OF PROCESSOR 
  
  
 TSCH     BSS    0
          CON    .ELCR,EOL   END OF LINE
          CON    .ELXO,EOL   END NOF LINE 
          CON    .ESC,EOL    ESCAPE 
          CON    .ETX,EOL    END OF TEXT
          CON    .AUTO,WTC7  SOURCE LINE INPUT
          CON    .BTSK,SNT   BEGIN TASK 
          CON    .ETSK,PET   END TASK 
          CON    .SACN,SAN   DYNAMIC LOGIN
          CON    .OPTT,OTT   OPTIONAL THINK TIME
          CON    .ESCR,EOS   END OF SCRIPT
          CON    .ESXO,EOS   END OF SCRIPT
          CON    0,0         END OF TABLE 
 EOL      SPACE  4,20 
**        EOL - PROCESS END OF LINE.
* 
*         ENTRY  (OT) = OUTPUT TERMINAL NUMBER. 
*                (TO) = OPTIONAL THINK TIME.
*                (DP - DP+4) = TERMINAL STATUS. 
* 
*         EXIT   TERMINAL STATUS UPDATED IN *TTER*. 
*                (OC) = OUTPUT CHARACTER. 
*                TO *STT1* IF NO ERROR. 
*                TO *ONL1* IF ERROR ENCOUNTERED.
* 
*         USES   CK, DP, RT, TO, TT, CM - CM+4. 
* 
*         CALLS  ETM, SDC.
* 
*         MACROS TTADD. 
  
  
 EOL      BSS    0           ENTRY
          LDD    TO 
          NJN    EOL1        IF OPTIONAL THINK TIME 
          LJM    EOL5        IF NORMAL PROCESSING 
  
 EOL1     LMC    6000        CHECK FLAG FOR \\
          ZJN    EOL3        IF RESET TO INITIAL THINK TIME 
          LDD    TO          CHECK OPTIONAL THINK TIME
          LPC    1777 
          STD    T6 
          ADC    -200 
          PJN    EOL4        IF ENTRY TOO LARGE 
 EOL2     LDD    TT          CURRENT RC,TT VALUES IN TERMINAL TABLE 
          LPC    7600        KEEP RC VALUE
          ADD    T6          INSERT NEW TT VALUE
          STD    TT 
          STD    RT 
          STD    CK 
          LDN    0
          STD    TO          CLEAR OPTIONAL THINK TIME
          TTADD  OT,1 
          CWD    TW 
          LJM    ONL1        RETURN ON LINE 
  
 EOL3     LDD    TI          SET INITIAL THINK TIME 
          STD    T6 
          UJN    EOL2        INSERT THINK TIME
  
 EOL4     LDC    MSGE        SET INTERNAL ERROR STATUS
          STM    STMB 
          LDC    LDNI+1 
          STM    STMA 
          LJM    ONL1        RETURN ON LINE 
  
*         PROCESS END OF LINE (CARRIAGE RETURN, ECS, ETX).
  
 EOL5     BSS    0           ENTRY
          LDC    ONL2        SET ON LINE
          STM    TOCA,OT
          LDD    LI          RESET LINE SPEED FOR OUTPUT
          STD    RT 
          LDI    T5          STORE OUTPUT CHARACTER 
          LPC    377
          LMC    5000 
          STD    OC 
          TTADD  OT,2 
          CRD    CM 
          LDD    CM+4 
          ZJN    EOL6        IF NOT SOURCE LINE INPUT 
          LDC    TTD         SET THINK TIME DELAY PROCESSOR 
          STM    TOCA,OT
          LDD    DP          SET FIRST OUTPUT CHARACTER ENCOUNTERED 
          LPC    6777 
          LMC    1000 
          STD    DP 
 EOL6     LDD    CM+2        CLEAR USER NUMBER FLAG 
          LPN    77 
          STD    CM+2 
          LDN    0
          STD    CK 
          STD    CM+4        CLEAR SOURCE LINE INPUT FLAG 
          TTADD  OT,2 
          CWD    CM 
          LDD    OT          SET TERMINAL NUMBER
          STD    T7 
          LDD    OC          STORE DATA CHARACTER 
          LPC    377
          RJM    SDC
          RJM    ETM         ENTER TIME 
          LJM    STT1        RETURN TERMINAL STATUS 
 EOS      SPACE  4,20 
**        EOS - PROCESS END OF SCRIPT.
* 
*         ENTRY  (DP - DP+4) = TERMINAL STATUS. 
*                (RBUF - RBUF+4) = *RA+0* WORD. 
* 
*         EXIT   TERMINAL STATUS AND SCRIPT ADDRESS UPDATED.
*                TO *EOL5* IF LAST SESSION. 
*                TO *EOL* IF NEW SESSION TO BE STIMULATED.
* 
*         USES   T6, T7, CM - CM+4, DP - DP+4.
  
  
 EOS      BSS    0           ENTRY
          LDD    DP+2 
          LPC    7600 
          NJN    EOS1        REPEAT COUNT PRESENT 
          LDD    DP          SET END OF SESSION 
          LPN    77 
          LMC    6000 
          STD    DP 
          LJM    EOL5        PROCESS END OF LINE
  
 EOS1     LDM    RBUF        CHECK LOOP FLAG
          SHN    21-13
          PJN    EOS2        IF NEXT RECORD TO BE USED
          LJM    EOS5        IF REPEAT ON SESSION RECORD
  
*         LOOP ON FILE - SET ADDRESS OF NEXT SESSION RECORD.
  
 EOS2     LDN    0
          STD    T7 
          LDD    DP 
          SHN    -6 
          ZJN    EOS3        IF THE 1ST BYTE OF A NEW WORD
          AOD    T7 
 EOS3     AOD    T7 
          LDD    DP 
          LPN    77 
          SHN    14 
          ADD    DP+1 
          ADD    T7 
          STD    DP+1 
          SHN    -14
          STD    DP 
          SBM    RBUF 
          SHN    14 
          ADD    DP+1 
          SBM    RBUF+1 
          ZJN    EOS4        IF LAST SESSION - LOOP TO FIRST SESSION
          LJM    EOS9        IF SESSION TO CONTINUE TO NEXT SCRIPT
  
 EOS4     LDM    RBUF+3      SET FWA OF FIRST SCRIPT
          STD    DP+1 
          LDM    RBUF+2 
          LJM    EOS8        DECREMENT REPEAT COUNT 
  
*         LOOP ON SESSION - SET ADDRESS OF CURRENT SESSION RECORD.
  
 EOS5     LDD    DP 
          SHN    -6 
          ZJN    EOS6        IF THE FIRST BYTE OF A NEW WORD
          LDN    1
 EOS6     STD    T6          ADDRESS OF NEXT SESSION RECORD 
          LDD    DP 
          LPN    77 
          STD    DP 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    DP+1 
          ADD    T6          FORM POINTER TO START OF CURRENT RECORD
          CRD    CM 
          LDD    DP+1        BACK UP POINTER TO START OF RECORD 
          SBD    CM+4 
          ADD    T6 
          STD    DP+1 
          PJN    EOS7        IF POSITIVE
          ADC    10000B      IF NEGATIVE, ADD THE CARRY 
          STD    DP+1 
          SOD    DP          DECREMENT DUE TO THE CARRY 
 EOS7     LDD    DP 
          SBD    CM+3 
 EOS8     STD    DP 
  
*         DECREMENT REPEAT COUNT. 
  
 EOS9     LDD    DP+2        CHECK FOR UNLIMITED REPEAT COUNT 
          LPC    7600        MASK REPEAT COUNT
          LMC    7600 
          ZJN    EOS10       IF RC=31 (MAXIMUM, DO NOT DECREMENT) 
          LDC    -200        DECREMENT REPEAT COUNT BY 1
          RAD    DP+2 
 EOS10    LJM    EOL         PROCESS END OF LINE
 PET      SPACE  4,20 
**        PET - PROCESS END OF TASK.
* 
*         ENTRY  (OT) = OUTPUT TERMINAL NUMBER. 
* 
*         EXIT   SCRIPT ADDRESS RESET IN *TTER*.
*                TASK COMPLETION COUNTER ADVANCED.
* 
*         USES   CM - CM+4, DP - DP+4, T0 - T0+4. 
* 
*         MACROS TTADD. 
* 
*         NOTES  IF NO TASK ENTRY ADDRESS IS PRESENT IN *TTER*, THEN
*                THE SPECIAL CHARACTER, *.ETSK*, WILL BE PROCESSED AS 
*                A CHARACTER OF DATA. 
* 
*                *END OF TASK* PROCESSING WILL RESET THE DYNAMIC
*                LOGIN FIELD IN *TTER*. 
  
  
 PET      BSS    0           ENTRY
          TTADD  OT,2        READ THIRD WORD OF *TTER* ENTRY
          CRD    CM 
          LDD    CM+2        READ SECOND WORD OF *TASK* ENTRY 
          LPN    77 
          STD    CM+2 
          ADD    CM+3 
          NJN    PET1        IF TASK ENTRY ADDRESS PRESENT
          LJM    WTC7        NO SPECIAL PROCESSING REQUIRED 
  
 PET1     LDD    CM+2 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    CM+3 
          ADN    1
          CRD    T0 
          AOD    T3          INCREMENT TASK COMPLETED COUNTER 
          LDD    CM+2        WRITE SECOND WORD OF *TASK* ENTRY
          SHN    6
          ADD    RA 
          SHN    6
          ADD    CM+3 
          ADN    1
          CWD    T0 
          TTADD  OT,0        READ TERMINAL STATUS 
          CRD    DP 
          LDD    DP          SET OLD SCRIPT ADDRESS 
          LMD    CM 
          LPC    7000 
          LMD    CM 
          STD    DP 
          LDD    CM+1 
          STD    DP+1 
          TTADD  OT,0        SET SCRIPT ADDRESS 
          CWD    DP          REPLACE *TTER* WITH OLD SCRIPT ADDR
          LDD    CM+2        CLEAR TASK ENTRY ADDRESS 
          SCN    77 
          STD    CM+2 
          LDN    0
          STD    CM+3 
          TTADD  OT,2 
          CWD    CM 
          LJM    WTC3        PROCESS NEXT CHARACTER 
 SNT      SPACE  4,20 
**        SNT - SET NEXT TASK.
* 
*         ENTRY  (OT) = OUTPUT TERMINAL NUMBER. 
* 
*         EXIT   NEXT BEST TASK SET IN *TTER*.
*                TO *WTC3*. 
* 
*         USES   T6, T7, CM - CM+4, DP - DP+4.
* 
*         MACROS TTADD. 
  
  
 SNT      BSS    0           ENTRY
          TTADD  OT,0        READ TERMINAL STATUS 
          CRD    CM 
          TTADD  OT,2        READ TASK ADDRESS
          CRD    DP 
          LDD    CM          SAVE CURRENT SCRIPT ADDRESS
          LPC    777
          STD    DP 
          LDD    CM+1 
          STD    DP+1 
          LDD    RA          GET NEXT BEST TASK 
          SHN    6
          ADN    RANT 
          CRD    CM 
          LDD    CM+3 
          SHN    14 
          ADD    CM+4 
          NJN    GNT1        IF TASK SET
          LDD    RA          ADVANCE NO TASK COUNTER
          SHN    6
          ADN    RASC 
          CRD    CM 
          AOD    CM+4 
          LDD    RA          GET DEFAULT TASK ADDRESS 
          SHN    6
          ADN    RASC 
          CWD    CM 
          ADN    RATK        SET DEFAULT TASK 
          CRD    CM 
          STM    GNTA        SET DEFAULT TASK FLAG
          LDD    CM+3 
          SHN    14 
          ADD    CM+4        LOAD ADDRESS OF TASK TABLE 
          NJN    GNT1        IF TASK TABLE EXISTS 
          LJM    WTC7        CONTINUE CHARACTER PROCESSING
  
 GNT1     LDD    CM+4        SAVE FWA OF TASK 
          STD    T7 
          LDD    CM+3        GET FWA OF TASK TEXT 
          LPN    77 
          STD    T6 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    CM+4 
          CRD    CM 
          ADN    1
          CRD    T0          READ SECOND WORD OF TASK ENTRY 
          LDD    DP+2 
          LPC    7700 
          ADD    T6 
          STD    DP+2 
          LDD    T7 
          STD    DP+3 
          TTADD  OT,2        SAVE OLD SCRIPT ADDRESS
          CWD    DP 
          TTADD  OT,0        READ TERMINAL STATUS 
          CRD    DP 
          LDD    DP          SET TASK ADDRESS 
          LPC    7000 
          ADD    CM+3 
          STD    DP 
          LDD    CM+4 
          STD    DP+1 
          TTADD  OT,0 
          CWD    DP 
          LDC    ** 
 GNTA     EQU    *-1         (DEFAULT TASK FLAG)
          NJN    GNT2        IF DEFAULT TASK SELECTED 
          LDN    ZERL        CLEAR TASK ADDRESS 
          CRD    CM 
          LDD    RA 
          SHN    6
          ADN    RANT 
          CWD    CM 
 GNT2     AOD    T4          INCREMENT *TASK CALLED*
          LDD    T6          UPDATE SECOND WORD OF *TASK* ENTRY 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    T7 
          ADN    1
          CWD    T0 
          LDN    0           CLEAR DEFAULT TASK FLAG
          STM    GNTA 
          LJM    WTC3        PROCESS NEXT CHARACTER 
 OTT      SPACE  4,10 
**        OTT - OPTIONAL THINK TIME.
* 
*         ENTRY  ((T5)) = OUTPUT CHARACTER. 
*                (TO) = OPTIONAL THINK TIME.
* 
*         EXIT   (TO) = OPTIONAL THINK TIME.
*                TO *WTC3*. 
* 
*         USES   TO, T6.
* 
*         MACROS TTADD. 
* 
*         NOTE   OPTIONAL THINK TIME IS SET INTO *TTER* WHEN
*                END OF LINE IS PROCESSED.
  
  
 OTT      BSS    0           ENTRY
          LDD    TO 
          ZJN    OTT4        IF NOT RESET REQUEST 
          LDC    6000        SET FLAG TO RESET INITIAL THINK TIME 
          STD    TO 
          UJN    OTT5        UPDATE *TTER*
  
 OTT1     BSS    0           ENTRY
          LDN    0
          STD    T6 
 OTT2     LDM    TANV,T6     GET ASCII NUMBER FROM TABLE
          ZJN    OTT5        IF END OF TABLE - IGNORE CHARACTER 
          LMI    T5 
          ZJN    OTT3        IF MATCH 
          AOD    T6 
          UJN    OTT2        UPDATE *TTER*
  
 OTT3     LDD    TO          SET OPTIONAL THINK TIME
          LPC    777
          SHN    3
          LMD    T6 
 OTT4     LMC    4000B       SET FLAG (IN CASE OF LEADING 0 CHARS)
          STD    TO 
          UJN    OTT5 
  
 OTT5     TTADD  OT,1 
          CWD    TW          REPLACE *TTER-1* ENTRY 
          LJM    WTC3        PROCESS NEXT CHARACTER 
 TANV     SPACE  4,10 
**        TANV - TABLE OF ASCII NUMERIC VALUES. 
  
  
 TANV     BSS    0
          LOC    0
          CON    .ZER        0
          CON    .ONE        1
          CON    .TWO        2
          CON    .THR        3
          CON    .FOR        4
          CON    .FIV        5
          CON    .SIX        6
          CON    .SEV        7
          CON    0           END OF TABLE 
          LOC    *O 
 SAN      SPACE  4,10 
**        SAN - SET ACCOUNT NUMBER. 
* 
*         ENTRY  ((T5)) = OUTPUT CHARACTER. 
*                (OT) = OUTPUT TERMINAL.
* 
*         EXIT   ((T5)) = NEXT OUTPUT CHARACTER.
*                ACCOUNT FLAG IN *TTER* UPDATED.
*                TO *WTC3*. 
* 
*         USES   T5, T6, CM - CM+4. 
* 
*         MACROS TTADD. 
  
  
 SAN      BSS    0           ENTRY
          LDM    SDWA        SET TERMINAL NUMBER
          ADD    OT 
          STD    T6 
          TTADD  OT,2        READ TERMINAL TABLE ENTRY
          CRD    CM 
          LDD    CM+2        GET ACCOUNT NUMBER POINTER 
          SHN    14 
          LPN    7
          NJN    SAN1        IF FIRST CHARACTER PROCESSED 
          LDD    T6          SET FIRST CHARACTER OF TERMINAL NUMBER 
          SHN    14 
          UJN    SAN3        REPLACE SPECIAL CHARACTER
  
 SAN1     SBN    1
          NJN    SAN2        IF SECOND CHARACTER PROCESSED
          LDD    T6          SET SECOND CHARACTER OF TERMINAL NUMBER
          SHN    17 
          UJN    SAN3        REPLACE SPECIAL CHARACTER
  
 SAN2     SBN    1
          NJN    SAN4        IF THIRD CHARACTER PROCESSED - FLAG ERROR
          LDD    T6          SET THIRD CHARACTER OF TERMINAL NUMBER 
 SAN3     LPC    7           ISOLATE LOWER 3-BITS 
          STD    T6 
          LDM    TANV,T6     CONVERT NUMBER TO ASCII CHARACTER
          STI    T5          SAVE OUTPUT CHARACTER
          LDD    CM+2 
          ADC    100         INCREMENT ACCOUNT NUMBER POINTER BY 1
          STD    CM+2 
          TTADD  OT,2        WRITE TERMINAL TABLE ENTRY 
          CWD    CM 
          LJM    WTC7        PROCESS NEXT CHARACTER 
  
 SAN4     LDC    MSGF        SET INTERNAL ERROR STATUS
          STM    STM12
          LDC    LDNI+1 
          STM    STMA 
          LJM    WTC3        PROCESS NEXT CHARACTER 
          TITLE  DOWNLINE DATA PROCESSING ROUTINES. 
 RTC      SPACE  4,25 
**        RTC - READ TERMINAL CHARACTER.
* 
*         ENTRY  (IC) = INPUT CHARACTER.
* 
*         EXIT   TO *HNU* IF (IC) = 6000. 
*                TO *INI* IF (IC) = 6400. 
* 
*         USES   T7, DP - DP+4. 
* 
*         CALLS  ETM, SDC.
  
  
 RTC      SUBR               ENTRY/EXIT 
          LDD    IC 
          LPC    6777 
          LMC    1000 
          LMC    7000 
          ZJN    RTCX        IF PHONE LINE ENABLE 
          LMC    .IISE&7000 
          NJN    RTC1        IF NOT HANG UP 
          LJM    HNU         HANG UP
  
 RTC1     LMC    .IISI&.IISE
          NJN    RTC2        IF NOT BEGIN INPUT 
          LJM    INI         INITIATE INPUT 
  
 RTC2     LDM    TOCA,IT     CHECK ROUTINE
          LMC    LGI5 
          ZJN    RTCX        RETURN IF LOGIN IN PROCESS 
          LDC    REJ         SET REJECT 
 RTC3     STM    TOCA,IT
 RTC4     LDD    IT          SET TERMINAL NUMBER
          STD    T7 
          TTADD  IT,0 
          CRD    DP 
          LDD    DP 
          SHN    21-11
          MJN    RTC5        IF NOT POSSIBLY THE SECOND CHARACTER 
          LDD    IC          CHARACTER
          LPC    4376 
          LMC    4024 
          ZJN    RTC6        IF ECHO *LF* - DO NOT PUT OUT TIME 
          LMC    4032&4024
          ZJN    RTC6        IF *CR* SENT 
          LMC    4000&4032
          ZJN    RTC5        IF NULL CHARACTER SENT FOR CARRIAGE DELAY
          LMC    4376&4000
          ZJN    RTC5        IF DELETE CHARACTER SENT IN TAPE MODE
          LDC    1000 
          RAD    DP 
          TTADD  IT,0 
          CWD    DP          SET FIRST CHARACTER FLAG 
          RJM    ETM         ENTER TIME 
 RTC5     LDD    IC          STORE DATA CHARACTER 
          LPC    377
          RJM    SDC
 RTC6     LJM    RTCX        RETURN 
 HNU      SPACE  4,25 
**        HNU - HANG UP.
* 
*         ENTRY  (IT) = INPUT TERMINAL. 
*                (NT) = NUMBER OF TERMINALS.
*                (AT) = ACTIVE TERMINAL COUNT.
* 
*         EXIT   IF REPEAT COUNT NOT PRESENT, TERMINAL SET OFF LINE 
*                (AT) = ACTIVE TERMINAL COUNT.
*                (LC) = LOGIN CONTROL.
* 
*         USES   AT, DP - DP+4, TW - TW+4.
* 
*         MACROS TTADD. 
* 
*         NOTES  IF A REPEAT COUNT IS PRESENT, *HNU* WILL 
*                INITIALIZE THE *TTER* ENTRY FOR THE NEXT SESSION 
*                TO BE PROCESSED.  THIS INCLUDES SETTING THE THINK
*                TIME, AND LOGIN DELAY.  *PSO* HAS ALREADY SET
*                THE SESSION ADDRESS IN *TTER*. 
*                IF NO REPEAT COUNT IS PRESENT, THE TERMINAL IS 
*                SET OFF LINE.
  
  
 HNU      BSS    0           ENTRY
          TTADD  IT,0        READ TERMINAL TABLE ENTRY
          CRD    DP 
          LDD    DP          SET OFF LINE 
          LPC    3777 
          LMC    4000 
          STD    DP 
          TTADD  IT,1 
          CRD    TW 
          LDD    TT          REPLACE INITIAL THINK TIME 
          LPC    7600 
          ADD    TI 
          STD    TT 
          TTADD  IT,0 
          CWD    DP 
          LDD    DP          CHECK SESSION STATUS 
          SHN    21-12
          MJN    HNU1        IF END OF SESSIONS 
          LDD    LD 
          STD    CK          SET *LOGOUT DELAY* AS *LOGIN DELAY*
          TTADD  IT,0 
          CWD    DP          REPLACE TERMINAL TABLE ENTRY 
          TTADD  IT,2        CLEAR LINE FEED
          CRD    CM 
          LDD    CM 
          LPC    3777 
          STD    CM 
          TTADD  IT,2 
          CWD    CM 
          LDC    LGI         SET LOGIN
          STM    TOCA,IT
          LJM    RTCX        RETURN 
  
 HNU1     SOD    AT          DECREMENT ACTIVE TERMINAL COUNT
          LDC    OFL2        SET OFF LINE 
          LJM    RTC3        RETURN 
 INI      SPACE  4,25 
**        INI - INITIATE INPUT. 
* 
*         ENTRY  UPLINE DATA TO BE INITIATED. 
*                (IT) = INPUT TERMINAL. 
* 
*         EXIT   OUTPUT PROCESSOR SET IN *TOCA*.
*                INPUT TYPING SPEED SET IF LOGIN IN PROCESS.
* 
*         USES   DP - DP+4. 
* 
*         CALLS  HNU. 
* 
*         MACROS TTADD. 
  
  
 INI      BSS    0           ENTRY
          TTADD  IT,0 
          CRD    DP 
          LDD    DP 
          SHN    -12
          LMN    3
          ZJP    INI2        IF END OF SCRIPT HAS BEEN REACHED
          LDM    TOCA,IT
          LMC    LGI5 
          NJN    INI1        IF LOGIN NOT IN PROCESS
          TTADD  IT,1 
          CRD    TW 
          LDD    IS          SET INPUT TYPING SPEED FOR DATA RATE 
          STD    RT 
          STD    CK 
          TTADD  IT,0 
          CWD    DP 
          LDC    WTC         SET WRITE CHARACTER
          STM    TOCA,IT
          LJM    RTCX 
  
 INI1     LDC    TTD         SET THINK TIME 
          STM    TOCA,IT
          LJM    RTCX        RETURN 
  
 INI2     LDC    MSGG        SET INTERNAL ERROR STATUS
          STM    STMB 
          LDC    LDNI+1 
          STM    STMA 
          LDD    IT          SET TERMINAL NUMBER IN MESSAGE 
          SHN    -6 
          RJM    C2D         CONVERT DIGITS 
          STM    MSGH 
          LDD    IT 
          RJM    C2D         CONVERT DIGITS 
          STM    MSGH+1 
          LJM    HNU         HANG UP PHONE
          TITLE  COMMON SUBROUTINES.
 ETM      SPACE  4,10 
**        ETM - ENTER TIME. 
* 
*         ENTRY  (LS) = LAST SECOND CLOCK.
*                (LM) = LAST MILLESECOND CLOCK. 
* 
*         EXIT   TIME STAMP SET ON DATA.
* 
*         CALLS  SDC. 
  
  
 ETM      SUBR               ENTRY/EXIT 
          LDD    LS          ENTER LAST SECOND CLOCK
          LPC    1777 
          LMC    6000        SET TIME FLAG FOR *DEMUX*
          RJM    SDC         STORE TIME BYTE
          LDD    LM          ENTER MILLISECONDS 
          LPC    1777 
          LMC    4000        SET TIME FLAG
          RJM    SDC         STORE MS TIME BYTE 
          UJN    ETMX        RETURN 
 SAA      SPACE  4,10 
**        SAA - SET ABSOLUTE ADDRESSES. 
* 
*         EXIT   ABSOLUTE ADDRESSES SET IN *SDW*. 
* 
*         USES   T1 - T2, CM - CM+4.
  
  
 SAA      SUBR               ENTRY/EXIT 
          LDC    ** 
 SAAA     EQU    *-1         (FET ADDRESS)
          SHN    6
          LMC    **          (FET ADDRESS)
 SAAB     EQU    *-1
          ZJN    SAAX        IF NO OUTPUT RECOVERED 
          ADD    RA          SET IN POINTER ADDRESS 
          SHN    6
          ADN    2
          STD    T2 
          STM    .INA+1 
          SHN    -14
          STD    T1 
          ADC    LDCI 
          STM    .INA 
          LDD    T1 
          SHN    14 
          LMD    T2 
          CRD    IN          READ IN
*         PSN                (AFTER FIRST ENTRY)
 SAAC     EQU    *-1
          SBN    1
          CRD    CM          READ FIRST 
          LDD    CM+3 
          LPN    37 
          SHN    14 
          ADD    CM+4 
          SBN    1           ADJUST FOR IN ADVANCEMENT
          STM    .FT1+1 
          SHN    -14
          ADC    LDCI 
          STM    .FT1 
          LDD    T1          READ LIMIT 
          SHN    14 
          LMD    T2 
          ADN    2
          CRD    CM 
          LDD    CM+3 
          LPN    37 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    CM+4 
          SBN    1
          STM    .LM1+1 
          SHN    -14
          ADC    LMCI 
          STM    .LM1 
          LDD    RA          SET RA 
          SHN    6
          STM    .RA1+1 
          SHN    -14
          ADC    ADCI 
          STM    .RA1 
          LDC    PSNI        DISABLE READ OF IN 
          STM    SAAC 
          LJM    SAAX        RETURN 
 SDC      SPACE  4,20 
**        SDC - STORE DATA CHARACTER. 
* 
*         ENTRY  (A) = CHARACTER. 
*                (T7) = TERMINAL NUMBER.
* 
*         EXIT   DATA WORD IN *TTER* UPDATED WITH CHARACTER.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  SDW. 
* 
*         NOTES  *SDC* USES THE DATA WORD (FOURTH WORD OF 
*                THE *TTER* ENTRY) AS A TEMPORARY BUFFER FOR
*                OUTPUT.  ONCE THIS WORD IS FULL, *SDC* IS CALLED 
*                TO ENTER IT INTO THE OUTPUT BUFFER.
  
  
 SDC      SUBR               ENTRY/EXIT 
          STD    T1          SAVE CHARACTER 
          LDN    1           (NO OUTPUT RECOVERY) 
*         LDN    0           (OUTPUT RECOVERY)
 SDCA     EQU    *-1
          NJN    SDCX        IF NO OUTPUT RECOVERY
          TTADD  T7,3        READ TERMINAL TABLE ENTRY
          CRD    CM 
          AOD    CM 
          LMN    4
          ZJN    SDC1        IF END OF WORD PACK
          LDD    T1 
          STM    CM,CM
          TTADD  T7,3        WRITE TERMINAL TABLE ENTRY 
          CWD    CM 
          LDD    T1 
          NJN    SDC2        IF NOT END OF SESSION
 SDC1     RJM    SDW
 SDC2     UJN    SDCX        RETURN 
 SDW      SPACE  4,20 
**        SDW - STORE DATA WORD.
* 
*         ENTRY  (T7) = TERMINAL NUMBER.
*                (T1) = CHARACTER.
*                (IN - IN+4) = ADDRESS TO IN POINTER. 
* 
*         EXIT   DATA WORD WRITTEN TO FET BUFFER. 
*                IN POINTER UPDATED IN FET. 
* 
*         USES   IN+3, IN+4, CM - CM+4. 
* 
*         CALLS  DFM. 
  
  
 SDW      SUBR               ENTRY/EXIT 
          LDD    T7          ENTER TERMINAL NUMBER
          ADC    ** 
 SDWA     EQU    *-1         (TERMINAL BIAS)
          STD    CM 
          LDD    T1          ENTER CHARACTER
          STD    CM+4 
          LDD    IN+3        STORE DATA WORD
          SHN    14 
          ADD    IN+4 
 .RA1     ADC    ** 
          CWD    CM 
 .LM1     LMC    **          CHECK IN 
          NJN    SDW1        IF IN .NE LIMIT-1
 .FT1     LDC    **          RESET IN = FIRST 
          STD    IN+4 
          SHN    -14
          STD    IN+3 
 SDW1     AOD    IN+4        ADVANCE IN 
          SHN    -14
          ZJN    SDW2 
          AOD    IN+3 
 SDW2     BSS    0
 .INA     LDC    **          UPDATE IN
          CWD    IN 
          ADN    1
          CRD    CM          READ OUT 
          LDD    IN+3 
          SBD    CM+3        IN-OUT 
          SHN    14 
          ADD    IN+4 
          SBD    CM+4 
          NJN    SDW3        IF IN IS NOT EQUAL TO OUT
          LDC    MSGC        OVERFLOW MESSAGE 
          RJM    DFM
 SDW3     LDN    ZERL 
          CRD    CM 
          TTADD  T7,3        CLEAR DATA WORD ENTRY
          CWD    CM          CLEAR ACCUMULATOR WORD 
          LJM    SDWX        RETURN 
          TITLE  INITIALIZATION.
 PRS      SPACE  4,20 
**        PRS - PRESET PROGRAM. 
  
  
 PRS3     LDN    0           CLEAR TERMINAL NUMBER
          STD    T1 
          LDD    NT          SET ACTIVE TERMINAL COUNT
          STD    AT 
 PRS4     LDC    LGI         ENTRY ADDRESS = LOGIN
          STM    TOCA,T1
          TTADD  T1,0 
          CRD    CM 
          LDD    CM          CHECK DISABLED STATUS
          SHN    21-12
          PJN    PRS5        IF TERMINAL ACTIVE 
          SOD    AT          DECREMENT ACTIVE TERMINAL COUNT
          LDC    OFL2        SET ENTRY ADDRESS OFF LINE 
          STM    TOCA,T1
 PRS5     AOD    T1          ADVANCE TERMINAL NUMBER
          LMD    NT 
          NJN    PRS4        IF NOT END OF TABLE
          LDC    RTCL        READ REAL TIME CLOCK 
          CRD    CM 
          LDD    CM+4        SET LAST MILLISECOND COUNT 
          STM    STMD        SET PREVIOUS TIME
          LDD    RA          READ *RA*
          SHN    6
          CRM    RBUF,ON
*         UJN    PRSX        RETURN 
  
 PRS      SUBR               ENTRY/EXIT 
          PAUSE  NE 
          LDK    NCPL        CHECK *STIMULA* CONTROL POINT
          CRD    CM 
          LDD    CM+1 
          SHN    7
          LMD    CP 
          ZJN    PRS0        IF *STIMULA* AT LAST CONTROL POINT 
          LDC    =C+ *STM* MUST BE AT LAST CP.+ 
          LJM    ABT         ABORT
  
 PRS0     RJM    CTS         CHECK *IAF* STATUS 
          LDD    IR+3 
          LPN    37 
          STD    IR+3 
          ADD    IR+4 
          NJN    PRS1        IF STIMULATION TO BE INITIATIED
          RJM    ICT         INITIALIZE CONTROL TABLE 
          LJM    DPP         DROP PPU 
  
 PRS1     RJM    ISC         INITIALIZE STIMULATOR CHANNELS 
          LDD    RA          READ CONTROL WORD
          SHN    6
          ADN    RACW 
          CRD    CM 
          LDD    CM          SET NUMBER OF *TTER* ENTRIES 
          STM    SADA 
          LDD    CM+1        SET ACTIVATE COUNT 
          STD    LC 
          LDD    CM+2        SET THINK TIME INCREMENT MASK
          LPN    77 
          RAM    TTDA 
          LDD    CM+4        SAVE REQUIRED FL 
          STM    SCPA 
          LDD    IR+3        READ CONTROL TABLE ENTRY 
          LPN    37 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          CRD    TW 
          RJM    SCP         START CENTRAL PROGRAM
          RJM    IOR         INITIALIZE OUTPUT RECOVERY 
          LDD    TW+3        SET BASE TERMINAL TABLE ADDRESS
          LPN    37 
          STD    T3 
          LDD    TW+4 
          STD    T4 
          RJM    SAD         SET TERMINAL TABLE ADDRESSES 
          LDN    0           CLEAR OUTPUT CHARACTER 
          STD    OC 
          STD    IC          CLEAR INPUT CHARACTER
          STD    MT          MAXIMUM CYCLE TIME 
          STD    LM          LAST MILLISECOND CLOCK 
          STD    LS          LAST SECOND CLOCK
          LDD    NT          INPUT TERMINAL = N-1 
          SBN    1
          STD    IT 
          ZJN    PRS2        IF ONLY ONE TERMINAL 
          LDN    1
 PRS2     STD    OT          SET OUTPUT TERMINAL NUMBER 
          LJM    PRS3        INITIALIZE *TOCA*
 TOCA     SPACE  4,10 
**        TOCA - TABLE OF OUTPUT CONTROL ADDRESSES. 
* 
*         ENTRY  1 WORD.
* 
*         ADDRESS OF CURRENT OUTPUT ROUTINE.
  
  
          USE    // 
 RBUF     EQU    6000        *RA* BUFFER
 TOCA     EQU    RBUF+5      OUTPUT PROCESSOR BUFFER
 IBUF     EQU    TOCA+100    INPUT BUFFER 
 OBUF     EQU    IBUF+100    OUTPUT BUFFER
 TBUF     EQU    OBUF+100    TRACE BUFFER 
          ERRNG  7776-TBUF-100*5  BUFFER OVERFLOW 
          ERRNG  TOCA-PRSX-2 OVERFLOW INTO BUFFER 
 ABT      SPACE  4,10 
**        ABT - ABORT JOB.
* 
*         ENTRY  (A) = ERROR MESSAGE. 
  
  
 ABT      RJM    DFM         ISSUE DAYFILE MESSAGE
          MONITOR  ABTM      ABORT JOB
          LJM    PPR         EXIT TO PP RESIDENT
 CTS      SPACE  4,15 
**        CTS - CHECK *IAF* STATUS. 
* 
*         ENTRY  NONE.
* 
*         EXIT   (NT) = NUMBER OF TERMINALS.
*                (DP) = STIMULATOR CHANNEL. 
*                TO *ABT* IF *IAF* NOT ACTIVE.
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         MACROS SFA. 
  
  
 CTS5     LDC    =C* IAF NOT ACTIVE.* 
          LJM    ABT
  
 CTS      SUBR               ENTRY/EXIT 
          LDN    PPUL        SET PPU COUNT
          CRD    CM 
          LDD    CM+2 
          STD    T1 
          LMN    10D
          ZJN    CTS1        IF ONLY 10 PPUS
          LDN    20D
          STD    T1          SET 20 PPUS
 CTS1     LDN    PPCP        SET START OF PPU COMMUNICATIONS AREA 
          CRD    CM 
          LDD    CM+4 
          STD    T2 
 CTS2     SOD    T1          DECREMENT PPU COUNT
          ZJN    CTS5        IF END OF PPU
          LDN    10          ADVANCE INPUT REGISTER ADDRESS 
          RAD    T2 
          CRD    CM          READ INPUT REGISTER
          LDD    CM+1        CHECK NAME 
          SCN    77 
          SHN    6
          LMD    CM 
          LMC    3RN1T
          NJN    CTS2        IF NOT *1TN* 
 CTS3     SFA    EST,CM+2    READ STIMULATOR EST ENTRY
          ADK    EQDE 
          CRD    CM 
          LDD    CM+1        SET CHANNEL NUMBER 
          LPN    37 
          STD    DP 
          LDD    CM+4        SET PORT COUNT 
          LPC    777
          NJN    CTS4        IF PORTS SPECIFIED 
          LDD    TH          SET DEFAULT PORT COUNT 
 CTS4     STD    NT 
          LJM    CTSX        RETURN 
 ICT      SPACE  4,20 
**        ICT - INTIALIZE CONTROL TABLE.
* 
*         ENTRY  (NT) = NUMBER OF TERMINALS.
* 
*         EXIT   CONTROL TABLE BUILT STARTING AT (RA+5).
* 
*         USES   CM - CM+4, T1 - T5.
  
  
 ICT      SUBR               ENTRY/EXIT 
          LDN    ZERL        RETURN NUMBER OF TERMINALS 
          CRD    CM 
          CRD    T1 
          LDD    NT 
          STD    CM+1 
          LDD    RA 
          SHN    6
          ADN    TCWD 
          CWD    CM 
          ADN    1           SET END OF TABLE 
          CWD    T1 
          LDN    1           SET NUMBER OF *TCWD* ENTRIES 
          STD    T1+4 
          LDD    RA 
          SHN    6
          ADN    RAPP 
          CWD    T1 
          UJN    ICTX        RETURN 
 IOR      SPACE  4,10 
**        IOR - INITIALIZE OUTPUT RECOVERY. 
* 
*         ENTRY  (TW - TW+4) = CONTROL TABLE ENTRY. 
* 
*         EXIT   FET ADDRESS SET IN *SAA* 
* 
*         USES   T1, T2.
  
  
 IOR      SUBR               ENTRY/EXIT 
          LDD    TW+3        SET ADDRESS OF IN
          SCN    77 
          STM    SAAA 
          SHN    6
          LMD    TW+2 
          STM    SAAB 
          ZJN    IORX        IF NO OUTPUT RECOVERED 
          LDC    IORA        SET MODIFICATION TABLE 
          STD    T1 
 IOR1     LDI    T1          SET ADDRESS
          ZJN    IOR2        IF END OF TABLE
          STD    T2 
          AOD    T1 
          LDI    T1 
          STI    T2 
          AOD    T1 
          UJN    IOR1        LOOP TO END OF TABLE 
  
 IOR2     LDD    TW          SET TERMINAL BIAS
          LPC    3777 
          STM    SDWA 
          LJM    IORX        RETURN 
  
 IORA     BSS    0
          CON    SDCA 
          LDN    0
          CON    ESDA 
          LDN    0
  
          CON    0           END OF TABLE 
 ISC      SPACE  4,20 
**        ISC - INITIALIZE STIMULATOR CHANNELS. 
* 
*         ENTRY  (DP) = CHANNEL NUMBER. 
* 
*         EXIT   CHANNEL INSTRUCTIONS MODIFIED. 
* 
*         USES   T1, T2.
* 
*         MACROS CHTL.
  
  
 ISC      SUBR               ENTRY/EXIT 
          LDC    TCHS        SET FWA OF CHANNEL TABLE 
          STD    T1 
 ISC1     LDI    T1 
          STD    T2 
          LDD    DP 
          CHTL   *
          SBN    CH 
          ZJN    ISCX        RETURN IF ALL INSTRUCTIONS MODIFIED
          RAI    T2          MODIFY INSTRUCTION 
          AOD    T1 
          UJN    ISC1        LOOP FOR ALL INSTRUCTIONS
  
 TCHS     CHTB
 RQS      SPACE  4,20 
**        RQS - REQUEST STORAGE.
* 
*         ENTRY  (A) = STORAGE REQUEST. 
* 
*         EXIT   STIMULATOR FIELD LENGTH ADJUSTED.
*                TO *ABT* IF ERROR. 
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         MACROS MONITOR, PAUSE.
  
  
 RQS3     LDC    =C*MEMORY REQUEST ERROR.*
          LJM    ABT
  
 RQS      SUBR               ENTRY/EXIT 
          STD    T1          SAVE REQUEST 
          LDD    IR+3        CHECK OUTPUT RECOVERY
          SCN    77 
          ADD    IR+2 
          ZJN    RQS1        IF NOT SET 
          LDD    NT 
 RQS1     ADD    NT          COMPUTE LAST WORD TO BE WRITTEN
          ADD    NT 
          ADD    NT 
          STD    T2 
          LDD    IR+3 
          LPN    37 
          SHN    14 
          ADD    IR+4 
          ADD    T2 
          ADN    77 
          SHN    -6 
          SBD    T1 
          ZJN    RQS2        IF ENOUGH ROOM 
          PJN    RQS3        IF NOT ENOUGH ROOM FOR WRITES
 RQS2     LDD    T1          REQUEST STORAGE
          STD    CM+1 
          LDN    0           SET CM REQUEST 
          STD    CM+2 
          MONITOR  RSTM 
          LDD    FL          CHECK FIELD LENGTH 
          LMD    T1 
          NJN    RQS2        IF REQUEST REJECTED
          LJM    RQSX        RETURN 
 SCP      SPACE  4,20 
**        SCP - START CENTRAL PROGRAM.
* 
*         ENTRY  (SCPA) = FL REQUIRED FOR STIMULATION.
*                (TW - TW+4) = CONTROL WORD FROM *TCWD*.
* 
*         EXIT   FL SET.
*                CPU PROGRAM STARTED IF OUTPUT TO BE RECOVERED. 
*                REMAINING COPIES OF STIMULATION DRIVER CALLED. 
*                TO *DPP* IF ERROR FLAG SET AT CONTROL POINT. 
* 
*         USES   CM - CM+4, T1 - T1+4.
* 
*         CALLS  DFM, RQS.
* 
*         MACROS CHTE, MONITOR, PAUSE.
* 
*         NOTES  *SCP* IS RESPONSIBLE FOR STARTING THE CPU
*                IF OUTPUT IS TO BE RECOVERED.
  
  
 SCP      SUBR               ENTRY/EXIT 
          LDD    IR+3 
          SHN    14 
          LMD    IR+4 
          LMN    TCWD 
          NJN    SCPX        IF NOT FIRST COPY OF *1TS* 
          LDN    0
          STD    CM+1 
          MONITOR  DCPM      CLEAR CPU STATUS 
          LDC    *           (REQUIRED FL)
 SCPA     EQU    *-1
          RJM    RQS         REQUEST STORAGE
          LDC    =C* STIMULATION INITIATED.*
          RJM    DFM
  
*         START CPU IF OUTPUT IS TO BE RECOVERED. 
  
          LDD    TW+3 
          SCN    77 
          ADD    TW+2 
          ZJN    SCP1        IF CENTRAL PROGRAM NOT NEEDED
          LDD    CP          READ EXCHANGE PACKAGE
          CRD    CM 
          LDC    STMO        SET (P)
          STD    CM+1 
          SHN    -14
          STD    CM 
          LDD    CP 
          CWD    CM 
          MONITOR  RCPM      REQUEST CPU
 SCP1     LJM    SCPX        RETURN 
 SAD      SPACE  4,10 
**        SAD - SET ADDRESSES.
* 
*         ENTRY  (T3 - T4) = BASE ADDRESS FOR *TTER*. 
* 
*         EXIT   TABLE ADDRESS SET. 
* 
*         USES   T1, T2, T3, T4, T5.
  
  
 SAD      SUBR               ENTRY/EXIT 
          LDC    SADB 
          STD    T1 
 SAD1     LDI    T1          SET NEXT TABLE ADDRESS 
          ZJN    SADX        IF NO MORE TABLES
          STD    T2 
 SAD2     LDI    T2 
          NJN    SAD3        IF NOT END OF TABLE
          LDC    *           (NUMBER OF *TTER* ENTRIES) 
 SADA     EQU    *-1
          RAD    T4 
          SHN    -14
          RAD    T3 
          AOD    T1 
          UJN    SAD1        PROCESS NEXT TABLE 
  
 SAD3     STD    T5 
          LDD    T3          SET TABLE ENTRY ADDRESS
          RAI    T5 
          LDD    T4 
          RAM    1,T5 
          AOD    T2 
          UJN    SAD2        LOOP 
  
 SADB     BSS    0
          CON    TTE0        *TTER* WORD 0 ADDRESS
          CON    TTE1        *TTER* WORD 1 ADDRESSES
          CON    TTE2        *TTER* WORD 2 ADDRESSES
          CON    TTE3        *TTER* WORD 3 ADDRESSES
          CON    TTE4        *TTER* WORD 4 ADDRESSES
          CON    0           END OF TABLE 
          SPACE  4,10 
**        INITIALIZATION TABLES.
  
  
 TTE0     BSS    0
 TTE0     HERE
          CON    0
  
 TTE1     BSS    0
 TTE1     HERE
          CON    0
  
 TTE2     BSS    0
 TTE2     HERE
          CON    0
  
 TTE3     BSS    0
 TTE3     HERE
          CON    0
  
 TTE4     BSS    0
 TTE4     HERE
          CON    0
          SPACE  4
          END 
