      JSB SRSCU     SAVE RETURN ADDR, SC, ETC.
      ADA DM16      ADD -16 BASE 10 
      SSA           UNIT # < 16 ? 
      JMP P73DR     YES.
      LDB LASM2 
      SZB,RSS       IF LASM2 = 0, RETURN. 
      JSB RETRN 
      JSB SETP
      LDB EQT36,I 
      SSB,RSS       AUTO-SPEED ACTIVE FOR THIS DEVICE?
      JSB RETRN      NO.
      LDB LASM2     YES. USE LAST MAIN FOR MUX # 2. 
      JMP P73DB 
P73DR EQU * 
      ADA D16       RESTORE UNIT #. 
      ADA D16        TO FIND THE
      ADA UNEQP 
      LDB A,I 
P73DB EQU * 
      SZB,RSS 
      JMP P73DX 
      JSB SETP
      LDB PQT1
      LDA EQT36,I 
      SSA 
      STB LASM2 
      JMP P.73D 
      SKP 
* 
*    P.73D IS USED TO PROCESS ALL DATA INTERRUPTS.
*    BOTH P73D1 AND P73D2 CALL P.73D TO COMPLETE DATA INTERRUPT 
*    PROCESSING.
* 
      SPC 1 
P.73D EQU * 
      NOP 
      STB 300B      SAVE EQT ADDR FOR LOGICAL DVR 
      LDA EQT36,I 
      AND =B460                         4-15-75 
      SZA           DROP DATA INTER. DURING TRANSITION. 
      JSB RETRN 
      JSB CONFG     CONFIGURE I/O INSTRUCTIONS. 
LIB21 NOP           = CURRENT DATA STATUS. (LIB SC+1) 
      STB FSTAT 
      SPC 1 
      LDB EQT36,I 
      SSB           AUTO-SPEED IN PROGRESS? 
      JMP P73CR     YES.
      SLB,RBR       LINE STATE = RECEIVE ?
      JMP RDSTA     YES.
      SLB,RSS       NO. LINE STATE = SEND ? 
P.7FE EQU * 
      JSB RETRN     ERROR.
      SPC 2 
*  CHECK STATUS FOR WRITE REQ. DATA BOARD INTERRUPT.
      SPC 1 
CWSTA EQU * 
      LDA EQT19,I 
      SSA,RSS       FULL DUPLEX ? 
      JMP CWST1     NO. SKIP DATA STATUS TEST.
      LDB FSTAT       GET DATA STAUTS.
      SLB,RSS       INTERRUPT DUE TO DATA XMIT ?
      JMP BKCHK     NO. RECEIVED DATA. CHK BREAK. 
CWST1 CLA           YES.
      JMP P73WR     CONTINUE WRITE. 
      SPC 1 
*  CHECK DATA FOR BREAK CHAR (10 ZEROS IN LSB)
      SPC 1 
BKCHK EQU * 
      LDA DATA      IF 10 LSB OF
      AND =B1777     DATA = 0, THEN 
      SZA             BREAK.
      JSB RETRN     NO BREAK DETECTED. IGNORE INTERRUPT.
      LDA BIT12     SET BREAK STATUS BIT. 
      JMP P73WR     CALL LOGICAL DVR. 
      SPC 1 
*  CHECK STATUS FOR READ REQUEST DATA BOARD INTERRUPT.
      SPC 1 
RDSTA EQU * 
      LDB FSTAT      GET DATA STATUS. 
      SLB           IF X-MIT INTERRUPT RETURN.
      JSB RETRN 
      CLA 
      RBR,SLB       LOST CHAR INDICATED ? 
      IOR BIT13     YES. DATA ERROR.
      STA SAVEX 
      LDB EQT19,I 
      BLF,BLF 
      BLF,SLB       ODD PARITY ?
      JMP RDOPC     YES. CHK PARITY BIT.
      RBR,SLB       EVEN PARITY ? 
      JMP RDEPC     YES.
RDST1 LDA DATA      PARITY OFF !!!
      AND RHALF     MERGE STATUS
      IOR SAVEX      WITH CHAR AND
      JMP P73RR        CALL LOGICAL DVR.      SPC 1 
RDOPC EQU *         ODD PARITY CHECKING ROUTINE.
      LDB DATA
      SSB,RSS       ODD PARITY INDICATED? 
      IOR BIT13     NO.  EVEN.  ERROR!!!! 
      STA SAVEX     YES.
      JMP RDST1 
      SPC 1 
RDEPC EQU *         EVEN PARITY CHECKING ROUTINR. 
      LDB DATA
      SSB           EVEN PARITY INDICATED ? 
      JMP RDOPC+2   NO. ODD.  ERROR !!!!
      JMP RDOPC+3   YES.
      SPC 1 
P.73H EQU * 
      SPC 1 
*  CALL LOGICAL DVR WITH CHARACTER AND STATUS FROM PHYSICAL DVR. (READ REQ.)
      SPC 1 
P73RR EQU * 
      IOR LSTAT,I   A-REG. ALSO CONTAINS LINE STATUS. 
      LDB EQT22,I 
      STB LOGR
      LDB DUNIT 
      JSB LOGR,I     INDICATING CONTINUATION
      JSB COM73     COMPLETION RETURN 
      STA DADIR 
      JSB SRTIM 
      LDA DADIR 
      RAL,SLA       START READ DIRECTIVE ?
      JMP P73SR     YES.
      RAL,SLA       START WRITE DIRECTIVE ? 
      JMP P73SW     YES.
      JSB RETRN     YES.
      SPC 2 
*  START A READ OPERATION DIRECTIVE ISSUED BY LOGICAL 
*  DRIVER IN RESPONSE TO BEING CALLED FROM P73D(PRIVILEDGED 
*  INTERRUPT DATA PROCESSOR.
      SPC 1 
P73SR EQU * 
      JSB SR202     TURN LINE AROUND TO READ STATE. 
      JSB RETRN     EXIT. 
      JSB RETRN        EXIT.
      SPC 1 
*  START A WRITE OPERATION DIRECTIVE ISSUED BY LOGICAL
*  DRIVER IN RESPONSE TO BEING CALLED FROM P73D.
      SPC 1 
P73SW EQU * 
      JSB SW202 
      JMP P73SX     LINE ALREADY = SEND STATE.
      JSB RETRN     TURNING LINE TO SEND STATE. 
P73SY EQU * 
P73SX LDA DADIR 
      AND B177
      JSB CHAR      OUTPUT CHAR 
P73ST EQU * 
      JSB RETRN 
      SPC 2 
*  CALL LOGICAL DVR WITH STATUS FROM PHYSICAL DVR.  (WRITE REQ.)
      SPC 1 
P73WR EQU * 
      IOR LSTAT,I   A-REG. ALSO CONTAINS LINE STATUS. 
      LDB EQT23,I 
      STB LOGR
      LDB DUNIT 
      JSB LOGR,I     CALL TO LOGICAL DVR. 
      JSB COM73     COMPLETION RETURN 
      STA DADIR      TO BE OUTPUT & DIRECTIVES. 
      JSB SRTIM 
      LDA DADIR 
      RAL,SLA       START READ DIRECTIVE ?
      JMP P73SR     YES.
      RAL,SLA        NO. DIRECTIVE = START WRITE? 
      JMP P73SW     YES.
      SSA           NO. NOP DIRECTIVE ? 
      JSB RETRN     YES. EXIT.
      JMP P73SX     NO. CONTINUATION. 
      SPC 1 
*  CALL LOGICAL DVR WITH STATUS AND CHAR FROM PHYSICAL DVR. (CONTROL) 
      SPC 1 
P73CR EQU * 
      LDA DATA      GET INPUT 
      AND RHALF       CHAR. AND 
P73CW EQU * 
      LDB EQT24,I       CALL LOGICAL DVR AT 
      STB LOGR            CONTROL ENTRY9
      IOR LSTAT,I   A-REG. ALSO CONTAINS LINE STATUS. 
      JMP P73RR+3   CALL CONTROL. 
      HED ASYNC MUX UTILITY SUBROUTINES.
*  RETRN - RESTORES A,B,E,O AND FENSE BEFORE
*          RETURNING TO THE INTERRUPTED PROGRAM.
      SPC 1 
RETRN EQU * 
      NOP 
      CLA 
      STA P73C1 
      STA P73D2     CLEAR COMPARE ENTRIES.
      LDB RTADD 
      CPB TIMRT    DVR. ENTERED VIA TIMEOUT CALL ?
      JMP RTIMX     YES. EXIT VIA TIMER SUBR. 
      STA TIMRT    CLEAR COMPARE ENTRIES. 
      LDA SAVEO     RESTORE 
      CLE,ELA        E
      RAR,SLA         AND 
      STO              O FLAGS
      LDB SAVB       A AND B REGISTERS
CLFSC CLF SC        ACKNOWLEDGE INTERRUPT.
      LDA MPTFL 
      SZA,RSS 
      JMP *+4        ENABLE FENSE.
      LDA SAVA
RTIMX EQU * 
      STF 0         TURN ON INTERRUPT SYSTEM
      JMP RTADD,I   RETURN TO INTERRUPTED PROGRAM.
      LDA SAVA
      STF 0 
      STC 5 
      JMP RTADD,I 
      SPC 2 
*  THIS SUBR OUTPUTS THE A-REGISTER TO THE CONTROL
*  BOARD CURRENTLY INTERRUPTING. ALLOWS INHIBITING INTERRUPTS.
      SPC 1 
OUTCC EQU * 
      NOP 
OCCSC OTA SC
      STC SC,C
      JMP OUTCC,I 
      SPC 2 
*  SAVAL - SAVES THE A,B,E, AND O REGISTERS.
      SPC 1 
SAVAL EQU * 
      NOP 
      STA SAVA      SAVE A-REG. 
      STB SAVB      SAVE B-REG
      ERA,ALS       SAVE E
      SOC 
      INA 
      STA SAVEO     SAVE O
      JMP SAVAL,I 
      SPC 1 
SAVA  NOP 
SAVB  NOP 
SAVEO NOP 
      SPC 2 
*  SUBR OUTPUTS TO DATA BOARD CURRENTLY INTERRUPTING. 
*  ALLOWS INHIBITING INTERRUPTS ON THIS CHANNEL.
      SPC 1 
      SPC 2 
*  CHECK LINE STATUS TO SEE IF HALF DUPLEX LINE HAS 
*  COMPLETED LINE TURNAROUND FROM SEND TO RECEIVE 
*  OR FROM WRITE TO READ. 
      SPC 1 
CLINE EQU * 
      NOP 
*                   FETCH CONTROL STATUS AND FORMAT 
*                   I EXPECT THE FOLLOWING STATI
*                   INDICATED : 
* 
*                      1. CC (DATA SET READY) - UP
*                      2. CF (CARRIER(TERM)   - UP
*                      3. CB (CLEAR TO SEND ) - DOWN
      SPC 1 
      JSB FCL12 
      AND D3
      CPA D3        CC AND CF UP ?
      JMP *+3       YES.
CLNEX CCB           NO. 
      JMP CLINE,I   RETURN INDICATING BAD LINE. 
      LDA B 
      AND B2
      SZA          CB-DOWN ? SB=DON'T CARE. 
      JMP CLNEX     NO
      CLB           INDICATE LINE IN READ STATE.
      JMP CLINE,I   RETURN
      HED ASYNC MUX CONTROL BOARD INTERRUPT PROCESSOR.
*  THIS ROUTINE IS ENTERED WHEN A CONTROL BOARD INTERRUPTS
* 
*      P73C1 - PROCESSES INTERRUPT  FROM MUX # 1. CONTROL BOARD # 1.
* 
      SPC 2 
P73C1 EQU * 
      NOP 
      CLF 0 
      JSB SAVAL     SAVE ENVIRONMENT
      LDB P73C1 
P73CA EQU * 
      JSB CISUB     SAVE RETURN ADDR,SC, CONFIG. ETC. 
P73CC EQU * 
      ADA UNEQA     ADDR OF UNEQT TBL 
      LDB A,I 
      SZB 
      JMP P.73C 
      LDA DATA
      AND =B177763  CONTROL PARAMETERS WITH ES1 AND 
*                                   ES2 CLEARED TO INHIBIT INTERRUPTS 
      JSB OUTCC     SUBR CONFIGURED DURING SRSCU
      JSB RETRN 
      SKP 
* 
*     P73C2 - PROCESSES INTERRUPTS FROM MUX # 1, CONTROL BOARD # 2. 
* 
P73C2 EQU * 
      NOP 
      CLF 0 
      JSB SAVAL     SAVE ENVIRONMENT
      LDB P73C2 
      JMP P73CA 
      SKP 
* 
*     P73C3 - PROCESSES INTERRUPTS FROM MUX # 2. CONTROL BOARD # 1. 
* 
      SPC 1 
P73C3 EQU * 
      NOP 
      CLF 0 
      JSB SAVAL 
      LDB P73C3 
      STB P73C1 
P73CB EQU * 
      JSB CISUB     SAVE RETURN ADDR,SC, CONFIG. ETC. 
      ADA D16 
      JMP P73CC 
      SKP 
      SPC 1 
* 
*     P73C4 - PROCESSES INTERRUPTS FROM MUX # 2, CONTROL BOARD # 2. 
* 
P73C4 EQU * 
      NOP 
      CLF 0 
      JSB SAVAL 
      LDB P73C4 
      JMP P73CB 
      SKP 
* 
*    P.73C IS CALLED BY P73C1-4 TO COMPLETE CONTROL BOARD 
*    INTERRUPT PROCESSING.
* 
      SPC 2 
P.73C EQU * 
      STB 300B      CURRENT EQT ADDR
      JSB SETP      SET POINTERS
      JSB CONFG     CONFIGURE P.73 I/O INSTRUCTIONS.
      LDA DATA
      JSB OUTCC 
      JSB UPD25     UPDATE EQT25. (CURRENT LINE STATUS. 
PCON  EQU * 
      LDB EQT19,I   WHICH CONTROL SIGNAL CHANGED ?
      SSB           FULL DUPLEX TERM? 
      JMP P73C9     YES.
      LDA EQT36,I 
      AND B60 
      STA XFLG      SAVE TRANSITION STATE.
      SZA,RSS       XFLG = 0 ?
      JSB RETRN     YES. EXIT.
      LDA EQT36,I 
      AND B3
      SZA           LINE STATE = 0 ?
      JSB RETRN     NO. LET TIMER CHK LINE TURNS. 
      LDB XFLG
      CPB B20       TRANSITION STATE = RECEIVE ?
      JMP PC1       YES. CHK LINE OPEN STATUS.
      JSB FCL12     NO. TRANSITIONING TO SEND STATE.
      SLA,RSS       CC UP ? 
      JSB RETRN     NO. 
      STB A         YES. CHKCB AND SB.
      AND B3
      CPA B3        "CB AND SB" UP ?
      RSS           YES.
      JSB RETRN     NO. WAIT FOR THEM.
      LDA EQT36,I 
      AND =B177700  CLEAR TRANS STATE AND 
      IOR B2         SET LINE STATE = SEND. 
      STA EQT36,I 
      JMP PC2 
* 
*     PROCESS FULL DUPLEX INTERRUPTS HERE.
* 
      SPC 1 
P73C9 EQU * 
      LDA EQT36,I 
      AND B60 
      SZA,RSS       LINE OPEN ? 
      JSB RETRN     NO. EXIT. 
      LDA EQT25,I   YES.
      SLA           CC UP ? 
      JMP PC3       YES. COMPLETE LINE OPEN.
      JSB RETRN     NO. EXIT. 
* 
*     PROCESS LINE OPEN RECEIVE/AUTO SPEED FOR HALF DUPLEX DEVICES. 
* 
      SPC 1 
PC1   EQU * 
      JSB CLINE 
      SSB           LINE STATUS = RECEIVE?
      JSB RETRN     NO. 
PC3   LDA EQT36,I   YES. SET LINE STATE = 
      AND =B177700    RECEIVE AND CLEAR TRANSITION
      INA               STATE FLAGS.
      STA EQT36,I 
      LDB EQT19,I 
      SSB           HALF DUPLEX DEVICE? 
      JMP PC4       NO. SKIP OUTPUT TO 2ND CONTROL BOARD. 
      LDA SSAF      RAISE "SA" INHIBIT INTERRUPTS 
      JSB COUT2      FOR "SB" CHANGES.
PC4   LDB EQT36,I 
      SSB           AUTO-SPEED IN PROGRESS? 
      JSB RETRN     YES. WAIT FOR DATA INTERRUPTS.
PC2   LDB ML300     NO. DELAY 300 MIL/SEC 
      JSB PTIMR       AND COMPLETE. 
      JSB RETRN     EXIT AND WAIT FOR TIMEOUT.
      HED ASYNC MUX COMPLETION SUBROUTINE.
*  COM73 IS CALLED BY THE PHYSICAL AND LOGICAL DRIVERS
*  WHEN EITHER DECIDES THAT AN I/O REQUEST HAS BEEN COMPLETED.
*  THE LOGICAL DVR CALLS COM73 VIA COMPLETION RETURN AFTER
*  THE PHYSICAL DVR CALL THE LOGICAL. 
* 
      SPC 1 
COM73 EQU * 
      NOP 
      JSB CALED     GET ADDR OF INTERNAL EQT TBL ENTRY. 
      LDA A,I       GET EQT ADDR FROM INTERNAL TBL. 
      SZA,RSS       DEVICE BUSY?
      JSB RETRN 
      LDA EQT36,I 
      IOR B60       SET BOTH TS FLAGS.
      STA EQT36,I 
      SSA,RSS       PROCESSING AUTO-SPEED ? 
      JMP COM01     NO. SKIP. 
      JSB CFSPD     YES. CONFIGURE SPEED PARMS. 
COM01 EQU * 
*  HOUSEKEEP ALL REQUIRED 
*    ITEMS IN EQT ETC.
      LDA EQT36,I 
      AND BIT8
      SZA           COMPLETING AUTO-SPEED?
      JMP COM04     YES. DELAY 2 SECONDS. 
      LDA TIMV,I    
      SZA,RSS       CLEAR 
      JMP *+5 
      CLA             TIMERS
      STA TIMV,I  
      LDB EQT30        ONLY 
      JSB $TIME 
      LDA PTIMV,I        WHEN 
      SZA,RSS 
      JMP *+5              NECESSARY
      CLA 
      STA PTIMV,I            !!!!!!!!!!!!!
      LDB EQT26 
      JSB $TIME 
      SPC 1 
      LDA EQT34,I 
      AND =B147777
      JSB OUT        DISABLE ECHO & INTR.FOR THIS DEVICE. 
      SPC 1 
COM03 EQU * 
      SPC 1 
      LDA PQT1      CALL PRIVILEDGED INTERRUPT
      JSB $PCOM       COMPLETION SUBR.
      SPC 1 
* $PCOM CAUSES AN INTERRUPT ON THE PRIVILEDGED INTERRUPT BOARD. 
* WHEN DOS PROCESSES THIS INTERRUPT IT CALLS C.73 FOR I/O COMPLETION
* PROCESSING. 
      SPC 1 
      SPC 1 
      JSB RETRN     RESTORE ENVIRON. & RETURN.
      SPC 1 
COM04 EQU * 
      LDA EQT36,I 
      AND =B77717   CLEAR BITS 5&4(TRANS STATE) 4-15-75 
      STA EQT36,I 
      LDB =D-20     DELAY 2 SECONDS. THEN 
      JSB PTIMR       COMPLETE AUTO-SPEED REQ.
      JSB RETRN     EXIT AND WAIT FOR TIMER.
      SKP 
*  C.73 IS THE COMPLETION ROUTINE FOR THE 12920A.(ASYNC MUX)
*  DRIVER 
      SPC 2 
C.73  EQU * 
      NOP 
      CLF 0 
      LDB EQT1
      JSB SETP      SET EQT POINTERS. 
      LDA PQT9,I
      AND B3
      CPA B3        CONTROL REQ?
      RSS           YES. SKIP.
      JMP C730      NO. SKIP CONTROL CLEAR PROCESSING.
      LDA PQT9,I
      AND FCODM     GET FUNCTION CODE.
      SZA,RSS       CLEAR CONTROL REQ?
      STA PQT17,I   YES. SEVER LOGICAL DVR LINK!!!
C730  EQU * 
      LDA EQT36,I 
      AND =B177717  CLEAR TS FLAGS. 
      STA EQT36,I 
      JSB CEQAD      CLEAR EQT ADDR IN INTERNAL TBL.
      LDB EQT14,I   GET CHAR/WORD COUNT.
      CLA 
      STF 0 
      JMP C.73,I
      HED ASYNC MUX CONSTANTS-------!!!!!!! 
*   *  *  *   CONSTANTS  * *  *  *
      SPC 3 
INAUX DEF *+1 
      DEC -1
      DEC -1
AUXSA NOP           AUX CHNL SPEED PARM ADDR. 
AUXSP DEF *+1 
      OCT 120413    1200 BAUD 
      OCT 120427     600
      OCT 120457     300
      OCT 120537      150 
      OCT 121202     110 AND 11 BITS. 
INCLP DEF *+1 
      DEC -1        THIS CONSTANT IS FOR CLEARING ALL 
      DEC -1       -CHNLS ON MUX # 1 AND MUX # 2. 
SAVEC NOP 
DADIR NOP 
LOGR  NOP           ADDR OF LOGICAL DVR ENTRY POINT.
NULL  NOP           NULL OF TIME DELAY CHARACTER. 
DATA  NOP 
DATAC NOP 
FSTAT NOP 
XFLG  NOP           TRANSITION STATE FLAG.
EQT1  EQU 203B
EQT2  EQU 204B
EQT3  EQU 205B
EQT4  EQU 206B
EQT5  EQU 207B
EQT6  EQU 210B
EQT7  EQU 211B
EQT8  EQU 212B
EQT9  EQU 213B
EQT10 EQU 214B
EQT11 EQU 215B
EQT12 EQU 216B
EQT13 EQU 217B
EQT14 EQU 220B
EQT15 EQU 221B
EQT16 EQU 222B
EQT17 EQU 223B
MPTFL EQU 271B
SC    EQU 10B 
* 
*  BASE PAGE CONSTANTS
* 
M1    EQU 52B 
M2    EQU M1-1
M3    EQU M1-2
M4    EQU M1-3
M5    EQU M1-4
M6    EQU M1-5
M7    EQU M1-6
M8    EQU M1-7
M9    EQU M1-8
M10   EQU M1-9
M64   EQU M1-10 
B0    EQU M1+1
B1    EQU B0+1
B2    EQU B0+2
B3    EQU B0+3
B4    EQU B0+4
B5    EQU B0+5
B6    EQU B0+6
B7    EQU B0+7
B10   EQU B0+8
B11   EQU B0+9
B12   EQU B0+10 
B21   EQU B0+11 
B100  EQU B0+12 
B17   EQU B0+13 
B37   EQU B0+14 
B77   EQU B0+15 
B177  EQU B0+16 
B377  EQU B0+17     = RHALF 
LHALF EQU B0+18     = 177400
B3777 EQU B0+19 
DM64  EQU B0+20 
RQP3  EQU 230B
RQP4  EQU 231B
D1    EQU B1
D2    EQU B2
D3    EQU B3
D4    EQU B4
D5    EQU B5
EQT19 NOP 
EQT21 NOP 
EQT22 NOP 
EQT23 NOP 
EQT24 NOP 
EQT25 NOP 
EQT26 NOP 
EQT27 NOP 
EQT30 NOP 
EQT31 NOP 
EQT34 NOP 
EQT35 NOP 
EQT36 NOP 
EQT37 NOP 
EQT38 NOP 
PQT1  NOP 
PQT3  NOP 
PQT4  NOP 
PQT5  NOP 
PQT6  NOP 
PQT8  NOP 
PQT9  NOP 
PQT10 NOP 
PQT15 NOP 
PQT16 NOP 
PQT17 NOP 
LSTAT EQU PQT16     CURRENT LINE STATUS.
TIMV  EQU EQT38 
PTIMV EQU EQT37 
ML100 EQU M1
ML300 EQU M3
RHALF EQU B377
FCODM OCT 017700
BIT8  OCT 400 
BIT11 OCT 004000
BIT12 OCT 010000
BIT13 OCT 020000
BIT14 OCT 040000
BIT15 OCT 100000
BIT5  OCT 000040
BIT4  OCT 000020
B20   EQU BIT4
CMB12 OCT 167777
                                                                                                                                                                                