      JSB DRCTV    EVALUATE DIRECTIVES
      LDA $EQ9,I
      ALF,ALF 
      RAL,RAL 
      AND M77$     ISOLATE FUNCTION CODE
      ADA N05$     FUNCTION LESS
      SSA,RSS      THAN FIVE
      JMP CNTL1    NO/INVALID 
      ADA CNTLT    YES CALCULATE
      LDA A,I      TABLE ADDRESS
      JMP A,I      PROCESS BY FUNCTION
*                                                                               
*                                                                               
CNTL1 EQU * 
      ISZ $EQ4,I   INDICATE INVALID 
      JMP READ1    REQUEST
****************************************************                            
*                                                  *                            
*         CONTROL TRANSFER TABLE                   *                            
*                                                  *                            
****************************************************                            
      DEF C0       CLEAR
      DEF READ1    INITIALIZE 
      DEF C2       LINE OPEN
      DEF C3       LINE CLOSE 
      DEF C4       SET ECHO 
CNTLT DEF * 
*                                                                               
*         CLEAR REQUEST                                                         
*                                                                               
C0    EQU * 
      LDA $EQ17,I 
      SZA          SKIP IF NOT LINKED 
      JSB DQT      DEQUE TIMERS 
      LDA CLR 
      IOR B15$     MASTER RESET 
      JSB OTA      CLEAR I/F CONTROL
      JSB CLC 
      CLA          CLEAR EXTENSION
      STA $EQ17,I  WORD 
      LDA $EQ15,I  PUT ON 
      IOR B09$     DONE 
      STA $EQ15,I  BIT
      JMP READ1 
*                                                                               
*         LINE OPEN REQUEST                                                     
*                                                                               
C2    EQU * 
      LDA $EQ10,I  GET
      AND P03$     OPTION 
      SZA,RSS      RING 
      JMP C2A      YES
      STA TBT1
      LDA $EQ6,I   LINE OPEN
      IOR B11$     REQUEST
      STA $EQ6,I
      LDA TBT1
      CPA P01$     RECEIVE
      JMP C2B      YES
      CPA P02$     SEND 
      JMP C2C      YES
*         NO/IDLE                                                               
      JMP C2B 
C2E   EQU * 
      LDA AOPEN    LINE STATE 
      STA $EQ5,I   EQUALS OPEN
      JSB STC      ENABLE INTERRUPTS
      JMP TEST
*                                                                               
C2A   EQU * 
      LDA ARING    LINE STATE 
      STA $EQ5,I   EQUALS AWAITING RING 
      LDA CLR      CLEAR
      IOR B15$     BOARD
      JSB OTA      DROP DATA TERMINAL RDY 
      JSB STC      ENABLE I/F BOARD 
      JSB RTRN
*                                                                               
*                                                                               
*                                                                               
C2B   EQU * 
      LDA $EQ15,I  REMOVE 
      AND RCVON    TRANSMIT 
      STA $EQ15,I  BIT
      JSB RCVI     CONFIGURE FOR RECEIVE
      JMP C2E 
*                                                                               
*                                                                               
*                                                                               
C2C   EQU * 
      LDA $EQ15,I  ENABLE 
      IOR B11$     TRANSMIT 
      STA $EQ15,I  BIT
      JSB SNDI     CONFIGURE FOR TRANSMIT 
      JMP C2E 
****************************************************                            
*                                                  *                            
*         LINE CLOSE REQUEST                       *                            
*                                                  *                            
****************************************************                            
C3    EQU * 
      LDA CLOSE    LINE STATE 
      STA $EQ5,I   EQUALS CLOSED
      LDA $EQ15,I 
      AND CDOFF 
      JSB OTA      CLEAR I/F
      CLA          TWO SECOND TIMER 
      LDB =D-20    FOR DATA SET READY 
      JSB DRCTV    TO DROP
      JSB CLC      TURN OFF INTERRUPTS
      JSB RTRN
*                                                                               
*                                                                               
C4    EQU * 
      LDB $EQ10,I  GET PARAMETER
      LDA EQT34,I 
      AND ECHO     CLEAR ECHO BIT 
      SZB          REQUEST FOR ENABLE 
      IOR M20$     YES/SET IT 
      STA EQT34,I 
      JSB OTA      OUTPUT WORD
      JMP READ1    COMPLETE 
*                                                                               
****************************************************                            
*                                                  *                            
*         SET EQT EXTENSION                        *                            
*                                                  *                            
****************************************************                            
SETQ  EQU * 
      NOP 
      LDA $EQ17,I 
      INA          ADDRESS
      CPA EQT19    ALREADY SET
      JMP SETQ,I   YES/RETURN 
      STA EQT19    NO/SET UP EXTENSION
      INA 
      STA EQT20 
      INA 
      STA EQT21 
      INA 
      LDB A,I 
      STB EQT22 
      INA 
      LDB A,I 
      STB EQT23 
      INA 
      LDB A,I 
      STB EQT24 
      INA 
      STA EQT25 
      ADA P02$
      STA EQT27 
      ADA P04$
      STA EQT31 
      ADA P03$
      STA EQT34 
      INA 
      STA EQT35 
      INA 
      STA EQT36 
      JMP SETQ,I
*****************************************************                           
*****************************************************                           
*                                                   *                           
*         TIME OFF                                  *                           
*                                                   *                           
*****************************************************                           
*         INITIAL SETUP FOR TIMEOUT                 *                           
*         A=EQT                                     *                           
*         B=TIMER FLAG MASK                         *                           
*                                                   *                           
*                                                   *                           
*****************************************************                           
TIMOF EQU * 
      NOP 
      STB TMOF1    SAVE TIMER TYPE
      JSB SETQ     SET EQT
      LDA $EQ3,I
      AND M77$     GET SELECT CODE
      JSB SETIO    SET I/O INSTRUCTIONS 
      LDA TMOF1 
      CMA 
      AND $EQ16,I  CLEAR TIMER
      STA $EQ16,I  IN PROGRESS
      JMP TIMOF,I 
*                                                                               
TMOF1 NOP 
*****************************************************                           
*                                                   *                           
*         LINE CHECK                                *                           
*                                                   *                           
*****************************************************                           
*****************************************************                           
LCHK  EQU * 
      NOP 
      LDA $EQ5,I   LINE STATE 
      CPA CLOSE    EQUAL CLOSED?
      JMP LCHK1    YES
      JSB STAT     NO/GET I/F STATUS
      LDA EQT25,I 
      XOR S$CC     COMPLIMENT DSR 
      AND S$CC     AND ISOLATE
      ALF,ALF      POSITION FOR 
      ALF,RAR      LINE ERROR 
*                                                                               
*NOTE-"DATA SET NOT READY" INDICATES LINE ERROR                                 
*                                                                               
      STA B        SAVE STATUS BITS 
      RBL          DSR ON 
      SSB,RSS 
      JMP LCHK,I   YES
      LDA $EQ9,I   ISOLATE FUNCTION 
      AND M17$
      CPA P01$     READ REQUEST 
      JMP RLE 
      LDA SEND     NEXT STATE 
LER   STA $EQ5,I   SEND 
      LDA B        RESTORE
      RAR          STATUS 
      JMP LCHK,I
RLE   LDA RECV     NEXT STATE 
      JMP LER      RECEIVE
LCHK1 EQU * 
      ISZ $EQ4,I   INVALID REQUEST
      JMP READ1    IMMEDIATE COMPLETION 
*****************************************************                           
*                                                   *                           
*         DIRECTIVE EVALUATOR                       *                           
*                                                   *                           
*         A=DIRECTIVE BITS (15-8), OUTPUT DATA (7-0)*                           
*         15-START READ                             *                           
*         14-START WRITE                            *                           
*         13-NO OPERATION                           *                           
*                                                   *                           
*         B=TIMER REQUEST                           *                           
*         <0-INITIATE/UPDATE VALUE                  *                           
*         =0-NO REQUEST                             *                           
*         >0-CANCEL REQUEST                         *                           
*                                                   *                           
*****************************************************                           
DRCTV EQU * 
      NOP 
      JSB STC      ENABLE BOARD 
      STA DRCTA    SAVE DIRECTIVES
      SZB,RSS      TIMING REQUEST 
      JMP DRCT1    NO 
      LDA $EQ16,I  YES
      SSB          CANCEL REQUEST 
      JMP DRCT2    NO 
      ELA,CLE,ERA  CLEAR IN PROGRESS BIT
      CLB          INDICATE CANCEL
      JMP DRCT3 
DRCT2 EQU * 
      SSA          TIMER IN PROGRESS
      CMB,INB      YES/INDICATE RESET 
      IOR B15$     SET IN PROGRESS BIT
DRCT3 EQU * 
      STA $EQ16,I  UPDATE FLAGS 
      STB A 
      LDB LTIMA    SET PROCESSOR TO 
      STB EQT31,I  LOGICAL TIMER
      LDB EQT31 
      ADB N01$     PASS EQT30 AS TIMER
      JSB $TIME    CALL TIMER 
DRCT1 EQU * 
      LDA DRCTA 
      RAL,SLA      START READ 
      JSB SREAD    YES
      RAL,SLA      START WRITE
      JSB SWRIT    YES
      SSA          NOP
      JSB RTRN     YES
      LDA DRCTA    NO DIRECTIVES
      JMP DRCTV,I  RETURN 
*                                                                               
DRCTA NOP 
*                                                                               
*****************************************************                           
*                                                   *                           
*         START READ                                *                           
*                                                   *                           
*****************************************************                           
SREAD EQU * 
      NOP 
      LDA $EQ5,I
      CPA RECV     LINE STATE = RECEIVE 
      JMP SRD1     YES
      LDB EQT19,I  FULL DUX 
      SSB          SYSTEM 
      JMP C2B      YES
      LDA $EQ15,I  NO 
      AND RCVON    REMOVE 
      STA $EQ15,I  TRANSMIT 
      JSB RCVI     BIT
      LDA P08$     NEXT 
      STA $EQ5,I   STATE
      JMP TEST     PR TO RCV #3 
*                                                                               
SRD1  EQU * 
      JSB STAT     START INPUT
      JMP STATB 
*                                                                               
*                                                                               
*****************************************************                           
*                                                   *                           
*         START WRITE                               *                           
*                                                   *                           
*****************************************************                           
SWRIT EQU * 
      NOP 
      JSB CLC      TURN OFF INTERRUPTS
      LDB $EQ5,I   GET PREVIOUS STATE 
      LDA PSND     SET LINE STATE EQUALS
      STA $EQ5,I   PREPARE TO SEND
      LDA DRCTA    GET CHARACTER
      AND RBYT$    MASK OFF BITS
      STA EQT35,I  SAVE CHARACTER FOR O/P 
      CPB SEND     PRIOR STATE SEND?
      JMP SWRT1    YES/BYPASS TURNAROUND
      JMP C2C 
SWRT1 EQU * 
      JSB STOUT    START OUTPUT 
      LDA SEND     LINE STATE 
      STA $EQ5,I   EQUALS SEND
      JSB STAT     GET I/F STATUS 
      CLA 
      JMP LDID1 
*****************************************************                           
*         START OUTPUT                              *                           
*****************************************************                           
STOUT EQU * 
      NOP 
      LDA EQT35,I  GET PENDING CHAR.
      JSB OTA      O/P TO INTERFACE 
      JSB STC      ENABLE INTERRUPTS
      JMP STOUT,I 
*****************************************************                           
*                                                   *                           
*                                                   *                           
*         LOGICAL TIMER                             *                           
*                                                   *                           
*                                                   *                           
*****************************************************                           
LTIMA DEF LTIM
LTIM  EQU * 
      NOP 
      JSB CLC      TURN OFF BOARD 
      LDB B15$
      JSB TIMOF    SET UP FOR TIMER OFF 
      JSB STAT     I/P BOARD STATUS 
      LDA P02$
      STA RTX      INDICATE TIMER RETURN
      LDA P08$
      LDB LSTT     PROCESS
LSWCH ADB $EQ5,I   BY 
      LDB B,I      LINE 
      JMP B,I      STATE
LSTT  DEF *+1 
      DEF LSTA     0-CLOSED 
      DEF LSTB     1-AWAITING RING
      DEF LSTB     2-AWAITING OPEN
      DEF LSTB     3-IDLE 
      DEF LSTD     4-PREPARE TO SEND
      DEF LSTD     5-SEND 
      DEF LSTD     6-PRE TO RCV#1 FLUSH WRITE 
      DEF LSTD     7-PRE TO RCV#2 BUFFER EMPTY
      DEF LSTC     8-PRE TO RCV#3 DELAY 
      DEF LSTC     9-RECEIVE
      DEF LSTB     10-AUTO SPEED
*                                                                               
LSIT  DEF *+1 
      DEF LSIA     0-CLOSED 
      DEF LSIB     1-AWAITING RING
      DEF LSIC     2-AWAITING OPEN
      DEF LSIA     3-IDLE 
      DEF LSII     4-PREPARE TO SEND
      DEF LSID     5-SEND 
      DEF LSIE     6-PR TO RCV #1 
      DEF LSIF     7-PR TO RCV #2 
      DEF LSIH     8-PR TO RCV #3 
      DEF LSIG     9-RECEIVE
      DEF LSIK     10-AUTO SPEED
*                                                                               
*                                                                               
LSTA  EQU * 
      NOP 
      LDA $EQ15,I  FORCE FINAL INTERRUPT
      IOR B10$     FROM 2 SEC TIMER AFTER 
      AND RCVON    DATA SET READY 
      STA $EQ15,I  GOES DOWN
LSIA  EQU * 
      LDA CLR      CLEAR
      IOR B15$     INTERFACE
      JSB OTA 
      JSB CLC      TURN OFF BOARD 
      JSB DONE
*                                                                               
*                                                                               
LSIB  EQU * 
      AND S$CE     ISOLATE RINGING BIT
      SZA,RSS      SET
      JMP LSIB1    NO 
      JSB CLC      YES/TURN OFF BOARD 
      JSB DONE     COMPLETE 
LSIB1 EQU * 
      JSB STC      ENABLE INTERRUPTS
      JSB RTRN
*                                                                               
*                                                                               
LSIC  EQU * 
      NOP 
      CLF 0        INHIBIT SYSTEM INTERRUPTS
      LDA EQT25,I 
      SSA,RSS      DEVICE INTERRUPT 
      JMP RTRNI    NO 
      AND DEVBT 
      STA SWORD    SAVE INTERRUPT BITS
      IOR B13$     OUTPUT REF WORD
      JSB OTA 
      LDA $EQ15,I  IS THE 
      ALF          BOARD
      SSA          RECEIVING
      JMP LSIC1    NO/TRANSMIT
      CLA          GET BOARDS 
      CCB          STATUS 
      JSB BSTAT    BOARD STATUS GOOD
      JMP RTRNI    NO 
      LDA $EQ6,I   LINE 
      ALF          OPEN 
      SSA          REQUEST
      JMP NOIN     YES
      LDA RECV     NEXT STATE 
      STA $EQ5,I   RECEIVE
      JMP TEST
NOIN  LDA $EQ6,I   REMOVE LINE
      AND RCVON    OPEN BIT 
      STA $EQ6,I
      LDA $EQ10,I 
      SSA          AUTO SPEED 
      JMP NOIN3    YES
      LDA RECV     LINE STATE RECEIVE 
NOIN2 STA $EQ5,I
      JSB CLC      DISABLE BOARD
      JSB RTRN     COMPLETE 
NOIN3 LDA AUTOS    NEXT STATE 
      ISZ C.74     AUTO SPEED 
      JMP NOIN2 
LSIC1 EQU * 
      CLA          TEST BOARD 
      CLB,INB      STATUS 
      JSB BSTAT    BOARD STATUS GOOD
      JMP RTRNI    NO 
      LDA $EQ6,I   LINE 
      ALF          OPEN 
      SSA          REQUEST
      JMP NOIN1    YES
      LDA SEND     NEXT STATE 
      STA $EQ5,I   SEND 
      JSB STOUT    START OUTPUT (OCT 15, 1974)
      JSB STAT     I/F STATUS 
      JMP LSID     RETURN TO LOGICAL
NOIN1 LDA $EQ6,I   REMOVE LINE
      AND RCVON    OPEN BIT 
      STA $EQ6,I
      LDA SEND     NEXT STATE 
      JMP NOIN2    SEND 
RTRNI EQU * 
      CLA,INA      RETURN TO DOS
      STA SAVA     WITH NOT READY 
      JMP TEST
*                                                                               
*                                                                               
LSII  EQU * 
      LDA SEND     LINE STATE 
      STA $EQ5,I   EQUALS SEND
LSID  EQU * 
      CLA          WRITE INTERRUPT ENTRY
LSTD  EQU * 
      CLB,INB      WRITE TIMER ENTRY
      JSB BSTAT    TEST BOARD STATUS
      NOP 
LDID1 EQU * 
      CLF 0        INHIBIT SYSTEM INTERRUPTS
      LDB $EQ1     WHILE IN LOGICAL DRIVER
      STB EQTB     EQT BASE 
      LDB $EQ5,I   LINE STATE 
      JSB EQT23,I  CALL LOGICAL WRITE 
      JSB DONE     COMPLETE 
      STA EQT35,I 
      STB EQT36,I  TEMP STORAGE FOR LOGICAL TIMER 
      RAL,SLA      IS IT READ 
      JMP LSID2    YES
      RAR          NO 
      JSB DRCTV    CHECK FOR TIMER
      CLB 
      STB EQT36,I 
      LDA EQT25,I  STATUS WORD
      SSA          DEVICE INTERRUPT ON
      JMP TBRAK    YES
      ALF,ALF      BREAK
      RAL          CONDITION
      SSA          ON 
      JMP LSID     YES
      RAR,RAR      BUFFER 
      SLA          HALF FULL           V BOARD
      JMP *+3      YES                 CHANGES
                                                    