ASMB,L,C,B
      HED DVR74    12966 PHYSICAL LEVEL DRIVER
      NAM DVR74,0,0 
      ENT I.74,C.74 
      EXT $TIME 
****************************************************                            
*     12966 ASYNCRONOUS I/F BIT ASSIGNMENTS        *                            
****************************************************                            
*                                                  *                            
*         TRANSMIT DATA                            *                            
*         BIT                 MEANING              *                            
*         15                  MASTER RESET         *                            
*         14,13,12            0,0,0                *                            
*         11,10,9,8           NOT USED             *                            
*         7,6,5,4,3,2,1,0     DATA OUT             *                            
*                                                  *                            
****************************************************                            
*         ENABLE MODEM STATUS INTERFACE            *                            
*         BIT                 MEANING              *                            
*         15                  MASTER RESET         *                            
*         14,13,12            0,0,1                *                            
*         11,10,9,8,7,6,5     NOT USED             *                            
*         4(CB)               ENABLE CLEAR TO SEND *                            
*         3 (CC)              ENABLE DATA SET READY*                            
*         2 (CE)              ENABLE RINGING       *                            
*         1 (CF)              ENABLE CARRIER DETECT*                            
*         0 (SBB/SCF)         SEC.RX DATA/SIGDETECT*                            
*                                                  *                            
****************************************************                            
*         MODEM REFERENCE                          *                            
*         BIT                 MEANING              *                            
*         15                  MASTER RESET         *                            
*         14,13,12            0,1,0                *                            
*         11,10,9,8,7,6,5     NOT USED             *                            
*         4 (CB)              REF CLEAR TO SEND    *                            
*         3 (CC)              REF DATA SET READY   *                            
*         2 (CE)              REF RINGING          *                            
*         1 (CF)              REF CARRIER DETECT   *                            
*         0 (SBB/SCF)         REF RX DATA/SIGDETECT*                            
*                                                  *                            
****************************************************                            
*         CHARACTER FRAME CONTROL                  *                            
*         BIT                 MEANING              *                            
*         15                  MASTER RESET         *                            
*         14,13,12            0,1,1                *                            
*         11,10,9,8,7,6       NOT USED             *                            
*         5                   1=TWO STOP BITS/0=ONE*                            
*         4                   1=ECHO ON/0=OFF      *                            
*         3                   1=PARITY ON/0=OFF    *                            
*         2                   1=PARITY EVEN/0=ODD  *                            
*         1,0                 CHARACTER SIZE       *                            
*                             00=5 BITS NO PARITY  *                            
*                             01=6 BITS NO PARITY  *                            
*                             10=7 BITS NO PARITY  *                            
*                             11=8 BITS NO PARITY  *                            
*                                                  *                            
****************************************************                            
*         INTERFACE CONTROL                        *                            
*         BIT                 MEANING              *                            
*         15                  MASTER RESET         *                            
*         14,13,12            1,0,0                *                            
*         11,10,9             NOT USED             *                            
*         8                   1=TRANSMIT/0=RECEIVE *                            
*         7                   1=REQUEST TO SEND    *                            
*         6                   1=DATA TERMINAL READY*                            
*         5                   1=SECONDARY XMIT DATA*                            
*                             0=SECONDARY REQ SEND *                            
*         4                   1=DMA ON/0=OFF       *                            
*         3,2,1,0             BAUD RATE            *                            
*                             0000=EXTERNAL X16    *                            
*                             0011=110             *                            
*                             0100=134.5           *                            
*                             0101=150             *                            
*                             0110=300             *                            
*                             0111=600             *                            
*                             1001=1200            *                            
*                             1011=2400            *                            
*                             1100=3600            *                            
*                             1101=4800            *                            
*                             1110=7200            *                            
*                             1111=9600            *                            
*                                                  *                            
****************************************************                            
*         INTER STATUS RESET                       *                            
*         BIT                 MEANING              *                            
*         15                  MASTER RESET         *                            
*         14,13,12            1,0,1                *                            
*         11,10,9,8,7,6       NOT USED             *                            
*         5                   CLEAR SPECIAL CHAR   *                            
*         4                   CLEAR BUFFER HALFULL *                            
*         3                   CLEAR BUFFER FULL    *                            
*         2                   CLEAR BUFFER EMPTY   *                            
*         1                   CLEAR BREAK INDICATOR*                            
*         0                   CLEAR PARITY ERROR / *                            
*                             OVERFLOW             *                            
*                                                  *                            
****************************************************                            
*         SPECIAL CHARACTER SET                    *                            
*         BIT                 MEANING              *                            
*         15                  MASTER RESET         *                            
*         14,13,12            1,1,0                *                            
*         11,10,9             NOT USED             *                            
*         8                   1=ADD SPECIAL CHAR   *                            
*                             0=REMOVE SPECIAL CHAR*                            
*         7,6,5,4,3,2,1,0     SPECIAL CHARACTER    *                            
*                                                  *                            
****************************************************                            
*         RECEIVE DATA                             *                            
*         BIT                 MEANING              *                            
*         15                  0=INVALID DATA       *                            
*                             1=VALID DATA         *                            
*         14                  1=SPECIAL CHARACTER  *                            
*                             0=MARK               *                            
*         13,12,11,10,9,8     CHAR COUNT IN BUFFER *                            
*         7,6,5,4,3,2,1,0     DATA INPUT           *                            
*                                                  *                            
****************************************************                            
*         STATUS                                   *                            
*         BIT                 MEANING              *                            
*         15                  1=DEVICE INTERRUPT   *                            
*         14                  1=SPECIAL CHARACTER  *                            
*         13,12,11,10         NOT USED             *                            
*         9                   1=BUFFER HALF FULL   *                      
*         8                   1=BUFFER FULL        *                            
*         7                   1=BUFFER EMPTY       *                            
*         6                   1=BREAK KEY          *                            
*         5                   1=PARITY ERROR/OVERFL*                            
*         4                   1=CLEAR TO SEND      *                            
*         3                   1=DATA SET READY     *                            
*         2                   1=RING INDICATOR     *                            
*         1                   1=CARRIER DETECT     *                            
*         0                   1=SECONDARY RXED DATA*                            
*                             1=SEC.RXED LINE SIG  *                            
*                             DETECT               *                            
*                                                  *                            
****************************************************                            
A     EQU 0 
B     EQU 1 
SC    EQU 0 
****************************************************                            
C.74  EQU * 
      NOP 
      CLB          ZERO RETURN
      STB SAVA     CODE 
      STA SCODE    SAVE SELECT CODE 
      JSB INTON    TEST INTERRUPT SYSTEM
      JSB SAVE
      JSB SETQ     SET EQT
      LDA SCODE    UNIT SELECT CODE 
      JSB SETIO    SET I/O INSTRUCTIONS 
      JSB STAT     INPUT STATUS 
      LDB LSIT
      JMP LSWCH    LINE STATE 
****************************************************                            
*                                                  *                            
*                                                  *                            
****************************************************                            
I.74  EQU * 
      NOP 
      CLB 
      STB RTX      SET RETURN FOR I.74
      STB SAVA     ZERO RETURN CODE 
      STA SCODE    SAVE SELECT CODE 
      LDA $EQ15,I  REMOVE 
      AND DUNBT    DONE 
      STA $EQ15,I  BIT
      LDB I.74     SAVE RETURN ADDRESS
      STB EXIT
      JSB INTON    TEST INTERRUPT SYSTEM
      LDB $EQ17,I 
      LDA $EQ9,I   GET REQUEST
      AND =B7777   SAVE FUNCT & REQUEST 
      CPA INCD     INITIALIZE REQUEST 
      JMP I.74B    YES
      SZB,RSS      LOG.LINK PRESENT PROC
      CPA P03$     CLEAR REQUEST
      JMP I.74A    YES
      LDA P01$     NO/INVALID 
      STA SAVA
      JSB RTRN     RETURN TO DOS
I.74B EQU * 
      LDB $EQ11,I  GET EXTENSION ADDRESS
      STB $EQ17,I  LINK WITH LOGICAL
      INB 
      LDA B,I      GET EQT19
      STA $EQ6,I   SAVE IN CONTROL WORD 
      CLA 
      STA $EQ3     INSURE EQT RESET 
      STA $EQ5,I   CLEAR LINE STATE 
      STA $EQ16,I 
      LDA $EQ1     GET EQT BASE 
      ADB P07$     COMPUTE EQT26
      STA B,I      SAVE AS TIMER (DVR74)
      ADB P04$
      STA B,I 
****************************************************                            
*                                                  *                            
*         BUILD BASIC CONTROL WORD                 *                            
*                                                  *                            
****************************************************                            
      LDA $EQ6,I   GET PARAMETER WORD 
      STA B 
      AND M17$     ISOLATE CHAR SIZE
      ADA N05$     SUBTRACT FIVE
      STA RHOLD    STORE CHAR SIZE
      LDA B 
      AND M60$     ISOLATE PARITY BITS
      SZA,RSS      CLEAR
      JMP NEXTT    YES/TEST NEXT BIT
      STA B 
      LDA RHOLD    GET CONTROL WORD 
      IOR P08$
      CPB M40$     PARITY EVEN
      IOR P04$     YES
NEXTT STA RHOLD 
      JSB SETQ
      LDA $EQ6,I
      AND M100$    ISOLATE ECHO BIT 
      SZA,RSS      CLEAR
      JMP NEXT1    YES/TEST NEXT BIT
      LDA RHOLD    GET CONTROL WORD 
      IOR M20$     SET ECHO ON
      STA RHOLD 
NEXT1 LDA $EQ6,I
      AND M200$    ISOLATE STOP BITS
      SZA,RSS      CLEAR
      JMP NEXT2    YES/ 
      CLA          NO 
      IOR M40$     SET TWO STOP BITS
NEXT2 ADA RHOLD    COMBINE WORD 
      IOR B13$     CHARACTER
      IOR B12$     FRAME
      STA EQT34,I  CONTROL IN EQT34 
****************************************************                            
*         BUILD RX CONTROL WORD                    *                            
****************************************************                            
      LDA EQT21,I 
      ALF,ALF      BAUD RATE RIGHT POS
      AND M177$    CALCULATE
      ADA TBL0     BAUD 
      LDA A,I      RATE 
      IOR M100$    CD ON
      IOR B14$     INTERFACE BIT
      STA $EQ6,I   RX CONTROL WORD EQT6 
****************************************************                            
*         BUILD TX CONTROL WORD                    *                            
****************************************************                            
      LDA EQT21,I  CALCULATE
      AND RBYT$    BAUD 
      ADA TBL0     RATE 
      LDA A,I 
      IOR M700$    CD,CA,XMIT 
      IOR B14$     INTERFACE BIT
      STA $EQ15,I 
*                                                                               
****************************************************                            
*         OUTPUT SPECIAL CONTROLS TO THE 12966     *                            
****************************************************                            
      LDA SCODE    GET SELECT CODE
      JSB SETIO    GET I/O INSTRUCTIONS 
      LDA $EQ15,I  TX CONTROL WORD
      IOR B15$     MASTER RESET ON
      JSB OTA      OUTPUT TO BOARD
      LDB TCONT    256 CHARACTER COUNT
      LDA SPEC     SPECIAL CHAR CONT WORD 
      XOR M400$    SPECIAL BIT OFF
OUT0  JSB OTA 
      INA          NEXT LOCATION
      INB,SZB      COUNT UP 
      JMP OUT0     NO 
      LDA EQT25,I  ADDRESS OF COUNT & SP
      STA B 
      LDA A,I      GET COUNT
      STA TCON1    STORE
      INB 
NSPEC LDA B 
      LDA A,I 
      INB 
      IOR SPEC     SPEC CHAR CONTROL
      JSB OTA 
      ISZ TCON1    COUNT UP 
      JMP NSPEC    NO 
      LDA CLR      YES
      JSB OTA      OUTPUT INTER STAT RE.
      LDA EQT34,I  OUTPUT CHAR FRAME
      JSB OTA 
I.74A EQU * 
      LDA $EQ1
      JSB SETQ     SET EQT
      LDA $EQ4,I   SET
      AND LBYT$    STATUS 
      STA $EQ4,I   TO ZERO
      LDA SCODE    GET SELECT CODE
      JSB SETIO    SET I/O INSTRUCTIONS 
      LDA $EQ9,I   ISOLATE FUNCTION 
      AND =B7777   AND REQUEST
      CPA P03$     CLEAR REQUEST
      JMP C0       YES
      AND M17$
      CPA P01$     READ REQUEST 
      JMP READ     YES
      CPA P02$     WRITE REQUEST
      JMP WRITE    YES
      CPA P03$     CONTROL REQUEST
      JMP CONTL    YES
      ISZ SAVA     INDICATE ERROR 
      JSB RTRN     BACK TO DOS
****************************************************                            
*                                                  *                            
*         READ REQUEST INITIATION                  *                            
*                                                  *                            
****************************************************                            
READ  EQU * 
      CLF 0        INHIBIT INTERRUPTS 
      LDA $EQ1     EQT BASE 
      STA EQTB     FOR LOGICAL
      JSB LCHK     CHECK FOR DSR
      CCB          INDICATE INITIATION
      JSB EQT22,I  CALL LOGICAL READ
      JMP READ1    COMPLETE 
READC JSB DRCTV    EVALUATE DIRECTIVES
      JSB RTRN     RETURN TO DOS
*                                                                               
READ1 EQU * 
      LDA P04$     INDICATE IMMEDIATE 
      STA SAVA     COMPLETION 
      JSB DONE
****************************************************                            
*                                                  *                            
*         WRITE REQUEST INITIATION                 *                            
*                                                  *                            
****************************************************                            
WRITE EQU * 
      CLF 0        INHIBIT INTERRUPTS 
      LDA $EQ1     EQT BASE 
      STA EQTB     FOR LOGICAL
      JSB LCHK     CHECK FOR DSR
      CCB          INDICATE INITIATION
      JSB EQT23,I  CALL LOGICAL WRITE 
      JMP READ1    COMPLETE 
      JSB WRITC    CONTINUE 
      JSB RTRN     BACK TO DOS
WRITC EQU * 
      NOP 
      JSB DRCTV    EVALUATE DIRECTIVES
      AND RBYT$    MASK OFF 
      JSB OTA      OUTPUT CHARACTERS
      JMP WRITC,I 
****************************************************                            
*                                                  *                            
*         CONTROL REQUEST INITIATION               *                            
*                                                  *                            
****************************************************                            
CONTL EQU * 
      CLA 
      CLF 0        INHIBIT INTERRUPTS 
      LDB $EQ1
      STB EQTB
      CCB          INDICATE INITIATION
      JSB EQT24,I  CALL LOGICAL CONTROL 
      JMP READ1    COMPLETE 
                                                                                                                                                                                                                                            