ASMB,Q,C
      HED DVG67 RTE 12889 PHYSICAL LEVEL DRIVER * (C) HEWLETT-PACKARD 
      NAM DVG67,0,0 91741-16001 REV 2013 791026 
      SPC 1 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS      *
*  * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY.   *
******************************************************************
      SPC 1 
      ENT IG67,CG67,EQTAD,HREC,HSND,HCONT 
      EXT $CGRN 
      SPC 1 
************************** DVG67 ************************** 
*                                                         * 
*     SOURCE: 91741-18001                                 * 
*                                                         * 
*     BINARY: 91741-16001                                 * 
*                                                         * 
*     TOM KEANE                                           * 
*                                                         * 
*     JUNE 24, 1976                                       * 
*                                                         * 
*********************************************************** 
*                                                         * 
* MODIFIED BY DMT BEGINNING 5/29/79 TO REMOVE UNUSED CODE * 
* AND MAKE THE COMMENTS READABLE.                         * 
*                                                         * 
*********************************************************** 
      SPC 2 
A     EQU 0 
B     EQU 1 
SC    EQU 0 
CHAN  EQU 1673B 
      SPC 1 
*                                                  *
* THE FOLLOWING DRIVER WAS WRITTEN FOR A DOS III   *
* PHYSICAL LEVEL DRIVER.                           *
*                                                  *
*  RTE EQT TABLE AND INTERNAL STORAGE NAME
EQT01 EQU 1660B 
EQT04 EQU 1663B     STAT1 
EQT05 EQU 1664B     STAT2 
EQT06 EQU 1665B     CONWD 
EQT07 EQU 1666B     PARM1 
EQT08 EQU 1667B     PARM2 
EQT09 EQU 1670B 
EQT13 EQU 1772B     TRLOG 
EQT15 EQU 1774B 
      SKP 
****************************************************
*                                                  *
*                  CONTINUATOR SECTION             *
*                                                  *
****************************************************
*   MODIFIED TO CHECK FOR SPURIOUS INTERRUPT BY DMT (7/11/78) 
CG67  NOP 
      LDB EQT01,I   SPURIOUS
      SZB,RSS        INTERRUPT? 
      JMP SPURI         YES--IGNORE.
SPRTN CLB          ZERO RETURN
      STB SAVA      CODE. 
      STA SCODE    SAVE SELECT CODE.
      JSB INTON    TEST INTERRUPT SYSTEM. 
      CLA,INA      SET RETURN 
      STA RTX       FLAG. 
      LDA EQT04,I  WAS IT 
      ALF           TIMER 
      SSA,RSS        INTERRUPT? 
      JMP WEND        NO. 
      LDA EQT04,I     YES. RESET
      AND PAROF         TIMER 
      STA EQT04,I        BIT. 
      JMP LTIM     JUMP TO TIMER ROUTINE. 
* 
WEND  LDB LSIT     GET TABLE BASE.
      JMP LSWCH    GO PROCESS.
      SPC 2 
*  SPURIOUS INTERRUPT-- 
SPURI LDB SWORD    IF WE'RE EXPECTING 
      SZB           AN ENQ, 
      JMP SPRTN      NOT SPURIOUS.
SPUR2 STB EQT15,I   ZERO TIME-OUT CLOCK WORD. 
* 
*   KEEP LONG-TERM COUNT FOR # OF SPURIOUS INTERRUPTS 
*    IN UNUSED "# ERROR-FREE MSGS RECEIVED" EQT EXTENSION WORD. 
* 
      LDB P65$      BUMP
      JSB BUMP       STATISTIC. 
      ISZ CG67      MAKE A
      JMP CG67,I     CONTINUATION RETURN. 
      SKP 
****************************************************
*                                                  *
*                  INITIATOR SECTION               *
*                                                  *
****************************************************
IG67  NOP 
      CLB 
      STB RTX      CLEAR RETURN FLAG. 
      STB SAVA     ZERO RETURN CODE.
      STA SCODE    SAVE SELECT CODE.
      JSB INTON    TEST INTERRUPT SYSTEM. 
      LDA EQT09,I  GET REQUEST. 
      AND MASK1    ISOLATE FUNCTION AND REQUEST.
      CPA INCD     INITIALIZE REQUEST?
      JMP I.67B     YES.
      AND MASK2 
      CPA B4400    CLEAR REQUEST? 
      JMP I.67A     YES.
      LDB EXTSN 
      SZB          LOGICAL LINKAGE PRESENT? 
      JMP I.67A     YES.
      CLA,INA      NO. INVALID REQUEST. 
      STA SAVA      RETURN TO 
      JMP RTRN       SYSTEM.
* 
*  HANDLE INITIALIZE REQUEST
I.67B LDB EQT07,I  GET EXTENSION ADDRESS. 
      STB EXTSN    LINK WITH LOGICAL. 
      CLA 
      STA STAT2    CLEAR LINE STATE 
      STA CONWD     AND TEST BITS.
* 
I.67A LDB EQT05,I  SET UP 
      STB STAT1     INTERNAL
      LDB EQT07,I    EQT
      STB PARM1       VALUES. 
      LDB EQT08,I 
      STB PARM2 
      LDB EQT13,I 
      STB TRLOG 
      LDA EXTSN     SET UP
      INA            EQT
      STA TSBTS       EXTENSION 
      ADA P03$         TOO. 
      LDB A,I 
      STB DEQ22 
      INA 
      LDB A,I 
      STB DEQ23 
      INA 
      LDB A,I 
      STB DEQ24 
      LDA CONWD    GET DMA
      AND DMAMF     CHANNEL 
      IOR DMAA       AND
      LDB CHAN        SET 
      SLB              ALLOCATED
      IOR DMAM          FLAG. 
      STA CONWD 
      LDA STAT1    SET
      AND LBYT$     STATUS
      STA STAT1      TO ZERO. 
      LDA SCODE    GET SELECT CODE. 
      JSB SETIO    SET I/O INSTRUCTIONS.
      LDA EQT09,I  GET CONTROL WORD.
      AND MASK2    ISOLATE FUNCTION CODE. 
      CPA B4400    CLEAR REQUEST? 
      JMP C0        YES.
      LDA EQT06,I  GET CURRENT I/O WORD.
      AND B17$     ISOLATE BITS 0-3.
      CPA P02$     WRITE OR CONTROL REQUEST?
      JMP TWOPR     YES. CHECK OPTIONAL PARAM.
* 
      CPA P01$     READ REQUEST?
      JMP READR     YES.
      ISZ SAVA     INDICATE ERROR 
      JMP RTRN      AND RETURN TO SYSTEM. 
* 
*  BECAUSE RTE CONTROL REQUESTS CANNOT PASS ENOUGH PARAMETERS,
*  SOME WRITE REQUESTS MAY ACTUALLY BE CONTROL REQUESTS.
* 
TWOPR LDA EQT09,I  GET OPTIONAL PARAMETER.
      AND N64$     REMOVE LOGICAL UNIT. 
      IOR P02$     INSERT REQUEST CODE. 
      STA EQT06,I  STORE IN CONTROL WORD. 
      AND BIT14    IF BIT 14 IS SET,
      SZA           IT'S A CONTROL
      JMP CONTL      REQUEST. 
      SPC 2 
****************************************************
*                                                  *
*                  WRITE REQUEST INITIATION        *
*                                                  *
****************************************************
      STA SWORD    CLEAR "WAITING FOR ENQ" FLAG.
      CCB          INDICATE INITIATION CALL.
      JSB DEQ23,I  CALL LOGICAL WRITE (HSLC). 
      JMP DONE      COMPLETION RETURN.
      JSB SETMR    CONTINUATION RETURN. 
      JMP RTRN     RETURN TO SYSTEM.
      SKP 
****************************************************
*                                                  *
*                  READ REQUEST INITIATION         *
*                                                  *
****************************************************
READR LDA EQT09,I  GET CONTROL WORD.
      AND N64$     REMOVE LOGICAL UNIT. 
      IOR P01$     INSERT REQUEST CODE. 
      STA EQT06,I  STORE CONROL WORD TO SYSTEM. 
      AND MASK2    IS IT THE
      CPA B4500     SPECIAL READ? 
      JMP SPECR     YES.
* 
      CCB          INDICATE INITIATION CALL.
      CLA,INA 
      JSB DEQ22,I  CALL LOGICAL READ (HSLC).
      JMP DONE      COMPLETION RETURN.
      JSB SETMR    CONTINUATION RETURN. 
      JMP RTRN     RETURN TO SYSTEM.
* 
SPECR STA SWORD    SET SPECIAL CASE.
      LDA PARM1,I  GET RN PARAMETER.
      STA RNUMB    STORE. 
      JSB RDMA     INHIBIT DMA INTERRUPTS.
      LDA IO05A    START
      STA STDMA     INSTRUCTION.
      LDA RECV     LINE STATE 
      STA STAT2     EQUALS RECEIVE. 
      JSB READP    ENABLE INTERFACE.
      JMP DONE1    IMMEDIATE COMPLETION.
      SKP 
****************************************************
*                                                  *
*                  CONTROL REQUEST INITIATION      *
*                                                  *
****************************************************
CONTL LDA EQT06,I  CURRENT I/O WORD.
      XOR CONOF    SET BIT 14 OFF, 1 ON.
      STA EQT06,I  RESTORE SYSTEM CONTROL WORD. 
      CLA 
      CCB          INDICATE INITIATION CALL.
      JSB DEQ24,I  CALL LOGICAL CONTROL (HSLC). 
      JMP DONE1     COMPLETION RETURN.
      LDA EQT06,I  GET CONTROL WORD.
      ALF,ALF      ISOLATE
      RAL,RAL       FUNCTION
      AND B77$       CODE.
      ADA N04$     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 CODE.
      SPC 1 
*  INVALID REQUEST
CNTL1 ISZ STAT1    INDICATE INVALID 
      JMP DONE1     REQUEST AND RETURN. 
      SPC 3 
*--------------------------------------------------+
*                  CONTROL TRANSFER TABLE          !
*--------------------------------------------------+
      DEF C0       CLEAR
      DEF DONE1    INITIALIZE(NO ADDITIONAL PROCESS)
      DEF C2       LINE OPEN
      DEF C3       LINE CLOSE 
CNTLT DEF * 
      SPC 1 
*--------------------------------------------------+
*                  CLEAR REQUEST                   !
*--------------------------------------------------+
C0    JSB CLC.C    CLEAR INTERFACE. 
      JSB RDMA     RELEASE DMA. 
      CLA          BREAK
      STA EXTSN     LINKAGE.
      LDA IDLE     LINE STATE 
      STA STAT2     EQUALS IDLE.
      JMP DONE1    RETURN.
      SPC 1 
*--------------------------------------------------+
*                  LINE OPEN REQUEST               !
*--------------------------------------------------+
C2    LDA TSBTS,I  GET TEST BITS. 
      RAL          PRIMARY
      SSA           STATION?
      JSB SETBT     YES. SET INDICATOR. 
      LDA AOPEN    LINE STATE 
      STA STAT2     EQUALS OPEN.
      JMP DONE1    RETURN.
* 
SETBT NOP 
      LDA CONWD    GET TEST BITS. 
      IOR BIT10    SET PRIMARY STATION. 
      STA CONWD    STORE WORD.
      JMP SETBT,I 
      SPC 1 
*--------------------------------------------------+
*                  LINE CLOSE REQUEST              !
*--------------------------------------------------+
C3    JSB CLC.C    CLEAR INTERFACE. 
      JSB RDMA     RELEASE DMA. 
      LDA CLOSE    LINE STATE 
      STA STAT2     EQUALS CLOSED.
      JMP DONE1    RETURN.
      SPC 3 
********************************************************
*                                                      *
*   ENTER HERE IF HSLC INDICATED COMPLETION FROM READ, *
*   WRITE, OR CONTROL INITIATION. (P+1 RETURN)         *
*                                                      *
********************************************************
* 
DONE  LDA IDLE      SET LINE STATE
      STA STAT2      TO IDLE. 
      LDA RTX       IF FROM INITIATOR,
      SZA            DO IMMEDIATE COMPLETION. 
      JMP RTRN
* 
DONE1 LDA P04$      INDICATE IMMEDIATE
      STA SAVA       COMPLETION.
      JMP RTRN      RETURN TO SYSTEM. 
      SKP 
************************************************
*                                              *
*                  LOGICAL TIMER               *
*                                              *
************************************************
LTIM  LDB LSTT     GET TABLE BASE.
* 
LSWCH ADB STAT2    PROCESS
      LDB B,I        BY LINE
      JMP B,I         STATE.
      SPC 2 
*--------------------------------------------------+
*         LOGICAL STATE TABLE FOR TIMER            !
*--------------------------------------------------+
LSTT  DEF *+1 
      DEF RTRN     0-CLOSED 
      DEF RTRN     1-AWAITING OPEN
      DEF RTRN     2-IDLE 
      DEF LSTC     3-RECEIVE
      DEF LSTD     4-CONTROL
      DEF LSTE     5-SEND 
      DEF LSTE     6-SEND TO RECEIVE
      SPC 2 
*--------------------------------------------------+
*       LOGICAL STATE TABLE FOR CONTINUATION       !
*--------------------------------------------------+
LSIT  DEF *+1 
      DEF RTRN     0-CLOSED 
      DEF RTRN     1-AWAITING OPEN
      DEF RTRN     2-IDLE 
      DEF LSIC     3-RECEIVE
      DEF LSID     4-CONTROL
      DEF LSIE     5-SEND 
      DEF LSIF     6-SEND TO RECEIVE
      SKP 
****************************************************
*                                                  *
*                  SET UP I/O INSTRUCTIONS         *
*                                                  *
****************************************************
SETIO NOP 
      ADA ISTCC    FORM STC INSTRUCTION 
      STA IO07
      STA IO08
      STA IO09
      STA IO10
      ADA ICLCC    FORM CLC INSTRUCTION 
      STA XIO02 
      ADA IOTA     FORM OTA INSTRUCTION 
      STA XIO03 
      ADA ILIA     FORM LIA INSTRUCTION 
      STA XIO05 
      ADA ISTF     FORM STF INSTRUCTION 
      STA IO06
* 
*             CONFIGURE DMA LOW SC INSTRUCTIONS 
* 
      LDB P02$
      LDA CONWD 
      AND DMAM
      SZA 
      INB 
      ADB ISTCC 
      STB IO02
      ADB ICLCC 
      STB IO00
      ADB IOTA
      STB IO01
      STB IO03
      ADB ILIA
      STB IO15
* 
*             CONFIGURE DMA HI SC INSTRUCTIONS
* 
      ADB .ISTC 
      STB IO05
      ADB ICLCC 
      STB IO05A 
      STB IO05B 
      ADB IOTA
      STB IO04
      ADB ISTF0 
      STB IO13
      STB IO14
      JMP SETIO,I 
      SKP 
****************************************************
*                                                  *
*                SET RTE TIMER                     *
*                                                  *
*             B=TIME (CENTISECONDS)                *
*             <0-INITIATE/UPDATE VALUE             *
*             =0-NO REQUEST                        *
*             >0-CANCEL REQUEST                    *
*                                                  *
****************************************************
SETMR NOP 
      STB EQT15,I  STORE TIMER COUNT. 
      LDA EQT04,I  TELL SYSTEM
      IOR BIT12     WE WILL SERVICE 
      STA EQT04,I    TIMER INTERRUPTS.
      JMP SETMR,I  RETURN.
      SPC 2 
****************************************************
*                                                  *
*             START READ                           *
*                                                  *
*   A-REG = ADDRESS,     B-REG = BYTE COUNT        *
*                                                  *
****************************************************
HREC  NOP 
      STA ADDR     STORE OFF
      STB LNGTH     PARAMETERS. 
      LDB HREC,I   GET TIMER PARAMETER. 
      ISZ HREC     IF TIMER REQUESTED,
      SZB 
      JSB SETMR      GO SET IT. 
      LDA RECV     LINE STATE 
      STA STAT2     EQUALS RECEIVE. 
      JSB RDMA     RELEASE DMA. 
      LDA ADDR     GET BOTH 
      LDB LNGTH     PARAMETERS. 
      BRS          CHANGE BYTES TO WORDS. 
      IOR BIT15    SET INPUT. 
      JSB INDMA    SET UP DMA.
      SZB,RSS      DO NOT START 
      JMP NONDM     IF LENGTH = 0.
      LDA IO05     FOR DMA
      STA STDMA     TRANSFER
      LDA CONWD    SET BIT INDICATING 
      IOR DMAA      WE ARE USING
      STA CONWD      DMA. 
      LDA IO05A 
      STA STDMA+1 
      JMP DMARD 
* 
NONDM JSB RDMA     INHIBIT DMA INTERRUPTS.
      LDA IO05A    START INSTRUCTION. 
      STA STDMA 
* 
DMARD JSB READP 
      LDA SWORD    SPECIAL
      SZA,RSS       CASE? 
      JMP CRTN       CONTINUATION RETURN TO SYSTEM. 
      CLA          RESET
      STA SWORD     SPECIAL CASE FLAG.
      LDA EBIT     EOT
      SZA,RSS       RECEIVED? 
      JMP ENQR       NO. FAKE ENQ.
      CLA           YES. CLEAR
      STA EBIT       TEST WORD. 
      JMP EOTR      FAKE EOT. 
      SPC 1 
INDMA NOP 
IO00  CLC DMAL,C   INITIALIZE DMA ROUTINE.
IO01  OTA DMAL     SET ADDRESS. 
IO02  STC DMAL,C
      LDA B        SET COUNT. 
IO03  OTA DMAL
      LDA SCODE    SET SELECT CODE. 
IO04  OTA DMAH
      JMP INDMA,I  RETURN.
      SPC 2 
****************************************************
*                                                  *
*             START WRITE                          *
*                                                  *
*     A-REG = ADDRESS,  B-REG = BYTE COUNT         *
*                                                  *
****************************************************
HSND  NOP 
      STA ADDR     STORE
      STB LNGTH     PARAMETERS. 
      LDB HSND,I   TIMER
      ISZ HSND      PARAMETER?
      SZB 
      JSB SETMR    YES. SET TIME. 
      LDA SEND     LINE STATE 
      STA STAT2     EQUALS SEND.
IO07  STC SC,C     SET INTERFACE CONTROL WORD.
      LDA TCWD1 
      JSB OTA 
      JSB RDMA     RELEASE DMA. 
      LDA ADDR     INITIALIZE DMA 
      LDB LNGTH     AND SET 
      STB TRLOG      XLOG.
      BRS          CHANGE BYTES TO WORDS. 
      JSB INDMA    INITIALIZE DMA.
      SZB,RSS      DO NOT START 
      JMP NODMW     IF LENGTH = 0.
      LDA CONWD    SET BIT INDICATING 
      IOR DMAA      WE ARE USING
      STA CONWD      DMA. 
IO05  STC DMAH,C   START DMA. 
IO05A CLC DMAH,C
IO06  STF SC       START TRANSFER.
      JMP CRTN     CONTINUATION RETURN TO SYSTEM. 
* 
NODMW JSB RDMA     INHIBIT DMA INTERRUPTS.
      JMP IO05A    RETURN.
      SPC 3 
****************************************************
*                                                  *
*             WRITE ONE WORD OUT                   *
*             CONTROL REQUEST                      *
*                                                  *
****************************************************
HCONT NOP 
      STA ADDR     STORE
      ISZ HCONT     PARAMETER.
      LDA CNTRR    LINE STATE 
      STA STAT2     EQUALS CONTROL. 
      JSB RDMA     INHIBIT DMA INTERRUPTS.
IO10  STC SC,C     SET INTERFACE CONTROL WORD.
      LDA TCWD5 
      JSB OTA 
      LDA ADDR,I   GET CHARACTER. 
      JSB OTA 
      JMP CRTN     CONTINUATION RETURN TO SYSTEM. 
      SPC 2 
*--------------------------------------------------+
*                  CONTROL INTERRUPT               !
*--------------------------------------------------+
LSID  CLA,RSS      NORMAL COMPLETION. 
* 
LSTD  LDA P15$     TIMEOUT. 
      JMP HCONT,I  RETURN TO LOGICAL. 
      SPC 2 
*--------------------------------------------------+
*             SEND INTERRUPT                       !
*             WRITE END OF TEXT                    !
*--------------------------------------------------+
LSIE  JSB RDMA     RELEASE DMA. 
      LDA TCWD3    END OF TEXT. 
      JSB CLC.C    SEND ETX.
      JSB OTA 
      LDA TRLOG    MODIFY 
      CMA,INA 
      AND B17$      ETX 
      ALF,ALF        BY 
      ALF             BYTE
      IOR ETX          COUNT. 
      JSB OTA 
      JSB WAIT
      LDA TCWD4    SEND CRC.
      JSB CLC.C 
      JSB OTA 
      JSB OTA      DUMMY WORD.
      JSB WAIT
      LDA S2R      LINE STATE EQUALS
      STA STAT2     SEND TO RECEIVE.
      LDA IO05A    INHIBIT DMA. 
      STA STDMA    START INSTRUCTION. 
      JSB READP    READ GARBAGE CHARACTER.
LSIF  CLA          RETURN TO
      CLB           LOGICAL.
      JMP HSND,I   COMPLETION.
* 
LSTE  LDA P15$     TIMEOUT. 
      JMP HSND,I   RETURN TO LOGICAL. 
      SPC 1 
* 
WAIT  NOP           SUBROUTINE TO WAIT
      LDA DELAY      SEVERAL MICRO-SECONDS
CHK   SLA,RAR         SO HP3000 WON'T 
      JMP WAIT,I       MISS ANY DATA. 
      JMP *+1,I 
      DEF CHK 
      SPC 2 
*--------------------------------------------------+
*             ENABLE INTERFACE TO READ             !
*--------------------------------------------------+
READP NOP 
      LDA RCWD1    SET CONTROL WORD.
      JSB CLC.C 
      JSB OTA 
      JSB LIA      READ 1 OR 2
      JSB LIA       DATA WORDS. 
IO08  STC SC,C     SET CONTROL, CLEAR FLAG, 
      JSB LIA       AND CLEAR THE STATUS WORD.
STDMA NOP          [OVERLAY WITH START DMA INST.] 
      NOP          [OVERLAY WITH CLC DMAH.] 
      CLA          CLEAR THE START DMA INST.
      STA STDMA 
      STA STDMA+1 
      JMP READP,I  RETURN TO CALLER.
      SPC 2 
*--------------------------------------------------+
*             PROCESS END OF TEXT                  !
*--------------------------------------------------+
PETX  EQU * 
IO14  STF DMAH     INHIBIT DMA XFERS. 
IO15  LIA DMAL     GET CHARACTER COUNT. 
      STA MOD16    SAVE IT. 
      JSB WAIT     WAIT FOR HP 3000.
      JSB CLC.C    READ STATUS
      JSB LIA       WORD. 
      JSB LIA      READ CRC WORD. 
      LDA TCWD4    TRANSMIT 
      JSB CLC.C     CRC 
      JSB OTA        TO 
      JSB OTA         CHECK IT. 
      JSB WAIT
      JSB CLC.C    READ STATUS &
      JSB LIA       CHECK 
      AND P02$       ERROR
      SZA             BITS. 
      JMP BTEXT    CRC ERROR. 
      LDA MOD16    CHECK MODULO COUNT.
      LDB LNGTH    NEGATIVE BYTE COUNT. 
      CMB,INB      MAKE IT POSITIVE 
      BRS           WORDS.
      STB LNGTH 
      ADA LNGTH    ADD WORD COUNT.
      ALS          MAKE POSITIVE BYTES. 
      STA TRLOG    STORE IN XMISSION LOG. 
      ALF,ALF 
      ALF 
      XOR XTE 
      AND NIB3     MASK FOR ERROR.
      SZA 
      JMP BTEX1 
      JSB RDMA     RELEASE DMA. 
      LDA P10$     GOOD TEXT. 
      JMP HREC,I   RETURN TO LOGICAL. 
* 
BTEXT LDA P11$     CRC ERROR. 
      JMP LRTN     RETURN TO LOGICAL. 
* 
* 
BTEX1 LDA P12$     TEXT UNDERRUN. 
      JMP LRTN     RETURN TO LOGICAL. 
      SPC 2 
*-----------------------------------------------------+ 
*                  RECEIVE INTERRUPT                  ! 
*-----------------------------------------------------+ 
LSIC  LDA SCODE 
      ADA N08$     IGNORE 
      SSA           DMA 
      JMP CRTN       INTERRUPTS.
      JSB CLC.C    READ INTERRUPT.
      JSB LIA      TAG1 WORD? 
      SLA           NO, JUST DATA WORD. 
      JMP RTAG1    YES. 
WENDC STC SC,C     REENABLE INTERFACE.
      JSB LIA 
      JSB LIA 
      JMP CRTN     CONTINUATION RETURN TO SYSTEM. 
* 
RTAG1 JSB LIA      LOAD TAG1 WORD.
      STA XTE      SAVE CHARACTER.
      AND MASK0    CLEAR HI-ORDER BIT.
      CPA ACK0     CHARACTER =
      JMP ACK0R      ACK0 
      CPA ENQ      CHARACTER =
      JMP ENQR       ENQ
      CPA EOT      CHARACTER =
      JMP EOTR       EOT
      CPA ACK1     CHARACTER =
      JMP ACK1R      ACK1 
      CPA WACK     CHARACTER =
      JMP WACKR      WACK 
      CPA RVI      CHARACTER =
      JMP RVIR       RVI
      CPA NAK      CHARACTER =
      JMP NAKR       NAK
      CPA DEOT     CHARACTERS = 
      JMP DEOTR      DLE EOT
      CPA TTD      CHARACTERS = 
      JMP TTDR       STX ENQ/ABORTED TEXT 
      AND MASK1    HI-ORDER BITS. 
      CPA ETX      CHARACTER =
      JMP PETX       ETX/PROCESS CRC
      JMP BTEXT    NO RECOGNIZABLE CHARACTERS.
XTE   OCT 0 
IO09  EQU WENDC 
      SPC 1 
ACK0R CLA,INA 
      JMP LRTN  
      SPC 1 
ACK1R LDA P02$
      JMP LRTN  
      SPC 1 
WACKR LDB P10$     BUMP WACK/TTD
      JSB BUMP      LONG-TERM STAT. 
      LDA P03$
      JMP LRTN  
      SPC 1 
RVIR  LDA P04$
      JMP LRTN  
      SPC 1 
ENQR  LDA P05$
      LDB SWORD     WAITING FOR 
      SZB,RSS        LINE BID?
      JMP HREC,I    NO. TAKE LOGICAL RETURN.
      JMP SCASE     YES. SPECIAL CASE.
      SPC 1 
NAKR  LDB P05$     BUMP NAK 
      JSB BUMP      LONG-TERM STAT. 
      LDA P06$
      JMP LRTN  
      SPC 1 
EOTR  LDA P07$
      LDB SWORD     WAITING FOR 
      SZB,RSS        LINE BID?
      JMP HREC,I       NO. TAKE LOGICAL RETURN. 
      STA EBIT      SET EOT RECEIVED. 
* 
SCASE LDA RNUMB     UNLOCK RN.
      JSB $CGRN 
      CLA,INA 
      STA TRLOG 
      JMP CRTN      CONTINUATION RETURN TO SYSTEM.
      SPC 1 
DEOTR LDA P08$
      JMP LRTN  
      SPC 1 
TTDR  LDA P09$
      JMP LRTN  
      SPC 2 
LSTC  LDA P15$     TIMEOUT. 
      JMP HREC,I   RETURN TO LOGICAL. 
      SPC 3 
*  IF DVG67 WAS IN "SPECIAL READ" STATE (WAITING FOR LINE BID) AND
*  SOMETHING OTHER THAN ENQ OR EOT CAME DOWN THE LINE, HANDLE AS A
*  SPURIOUS INTERRUPT. OTHERWISE RETURN TO LOGICAL DRIVER.
* 
LRTN  LDB SWORD    WAS DRIVER WAITING 
      SZB,RSS       FOR LINE BID (ENQ)? 
      JMP HREC,I      NO. RETURN TO LOGICAL.
      CLB             YES. TREAT AS A 
      JMP SPUR2        SPURIOUS INTERRUPT.
                                                                                                                                                                                                      