ASMB,R,L,C
      HED DVR65 29001-60003 REV D 750730
      NAM DVR65 29001-60003 REV D 750730
      SPC 2 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1975.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
******************************************************************
      SPC 2 
******************************************************************
* 
* DVR65              COMMUNICATIONS DRIVER FOR DS/1 
* 
* SOURCE PART #      29001-80003 REV D
* 
* REL PART #         29001-60003 REV D
* 
* WRITTEN BY:        LARRY POMATTO
* 
* DATE WRITTEN:      DECEMBER 1973
* 
* MODIFIED BY:       BOB SHATZER
* 
* DATE MODIFIED:     30 JULY 1975 
* 
******************************************************************
      SPC 3 
* 
*     DEFINE ENTRY POINTS 
* 
      ENT I.65,C.65 
      SPC 3 
* 
*     DEFINE EXTERNALS
* 
      EXT $LIST 
      SPC 3 
* 
*     DEFINE A AND B REG
* 
A     EQU 0 
B     EQU 1 
* 
      SKP 
* 
*     CALLING SEQUENCES 
* 
      SPC 2 
*     TRANSMIT REQUEST AND DATA 
      SPC 1 
*     JSB EXEC
*     DEF *+6 
*     DEF IRW       1=READ  2=WRITE 
*     DEF LU        LOGICAL UNIT OF CARD
*     DEF PBUF      PRAM BUFFER 
*     DEF PBUFL     PRAM BUFFER LENGTH (ALWAYS 4) 
*     DEF IMODE     0=REQUEST AND DATA,1=DATA,2=REQUEST 
* 
*PBUF DEF DATA BUFFER ADDRESS 
*     DEC DATA BUFFER LENGTH
*     DEF REQUEST BUFFER
*     DEC REQUEST LENGTH (IN WORDS) 
* 
*PBUFL DEC 4
* 
      SPC 2 
*RECEIVE OR TRANSMIT DATA ONLY
      SPC 1 
*     JSB EXEC
*     DEF *+6 
*     DEF IRW       READ OR WRITE 
*     DEF LU
*     DEF DATA BUFFER 
*     DEF DATA BUFFER LENGTH
*     DEF MODE      IN THIS CASE=1
* 
      SPC 2 
*     RECEIVE OR TRANSMIT REQUEST ONLY
      SPC 1 
*     JSB EXEC
*     DEF *+6 
*     DEF IRW       READ OR WRITE 
*     DEF LU
*     DEF REQUEST BUFFER
*     DEF REQUEST BUFFER LENGTH 
*     DEF MODE      IN THIS CASE=2
      SPC 2 
*     ENABLE LISTEN MODE
      SPC 1 
*     JSB EXEC
*     DEF *+3 
*     DEF RCODE     OCT 3 
*     DEF CONWD     100B+LU 
* 
*RCODE OCT 3
*CONWD OCT 100B+LU
* 
      SPC 2 
*     SEND STOP 
      SPC 1 
*     JSB EXEC
*     DEF *+3 
*     DEF RCODE 
*     DEF CONWD 
* 
*RCODE OCT 3
*CONWD OCT 0+LU 
* 
      SPC 2 
*     CLEAR REQUEST 
      SPC 1 
*     JSB EXEC
*     DEF *+3 
*     DEF RCODE 
*     DEF CONWD 
* 
*RCODE OCT 3
*CONWD OCT 200+LU 
      SPC 3 
* 
*     ERROR CODES 
* 
* ERROR BIT          ERROR
* 0    REQUEST COMPLETED...NO ERRORS
* 1    DRIVER BUSY OR READ REQUEST OR 
*      DRIVER NOT BUSY ON A DATA REQUEST
* 2    ZERO LENGTH DATA BUFFER OR 
*      CALLING SEQUENCE WRONG ON REQ AND DATA 
* 3    TIME OUT 
* 4    STOP RECEIVED...IF LENGTH WORD=-1, OTHERWISE 
*      NOT CORRECT INTERNAL HAND SHAKE
* 5    REQUEST LENGTH OUT OF RANGE
*      DRIVER OUT OF SYNC REQUEST REJECTED
* 6    PARITY ERROR 
*      THIS CAN ALSO OCCUR ON OUT OF SYNC 
* 7    BROKEN LINE...DRIVER DISABLES THE CARD 
* 
      SPC 4 
* 
*     EQT WORD USAGE BREAKDOWN
* 
*     EQT #         USE 
*     1             DEFINED 
*     2             DEFINED 
*     3             DEFINED 
*     4             DEFINED 
*     5             DEFINED 
*     6             DEFINED 
*     7             DEFINED 
*     8             DATA BUFFER ADDRESS (REQ AND DATA)
*     9             DATA BUFFER LENGTH (REQ AND DATA) 
*     10            CO-ROUTINE ENTRY POINT (DEFINED DYNAMICLY)
*     11            PARITY COUNTER
*     12            CURRENT STATUS TABLE (SEE BREAKDOWN)
*     13            ADDRESS OF ID SEG TO RUN ON INTERRUPT 
*     14            DEFINED 
*     15            DEFINED 
      SPC 2 
* 
*     BREAKDOWN OF EQT WORD 12
* 
*     BIT           USAGE 
*     0-7           NOT USED
*     8             WAITING FOR DATA
*     9             REQUEST PENDING 
*     10            LISTEN MODE ENABLED 
*     11            NOT USED
*     12            READ/WRITE FLAG(FOR DATA ON REQ AND DATA) 
*     13            REQUEST AND DATA(1=YES,0=REQ ONLY)
*     14            NO DMA,DMA (0=DMA,1=SPECIAL OPEN LOOP)
*     15            READ/WRITE FLAG(ON CURRENT TRANSACTION) 
      SKP 
I.65  NOP 
      JSB SETIO     CONFIGURE I/O INSTRUCTIONS
      LDA EQT13,I   FIRST ENTRY 
      SZA                       FOR DEVICE? 
      JMP NFIR      NO. 
      LDA EQT4,I    FETCH SELECT CODE 
      AND B77       ISOLATE 
      ADA MN6       SUBTRACT 6 TO FIND
      ADA INTBA       ENTRY IN INTERRUPT TABLE
      LDB A,I       FETCH USER INTERRUPT LINK 
      CMB,INB       GET INTERRUPT LINK
      STB EQT13,I     AND SAVE
      LDB EQT1      SET DRIVER
      STB A,I         INTERRUPT LINK
      JSB RDD.C     CLEAR RECEIVER AND STATUS WORDS 
      LDA EQT4,I    TELL RTE THAT I WANT CONTROL ON TIME OUTT 
      IOR .100
      IOR .200      AND ON POWER FAIL 
      STA EQT4,I
* 
NFIR  LDA EQT4,I    GET EQT WORD 4
      RAL           ROTATE TO ISOLATE BUSY BIT
      SSA,RSS       IS IT SET?
      JMP NFIR1     NO - NORMAL ENTRY 
      CLA           WAS BUSY - SIMULATE LISTEN REQUEST
      STA EQT6,I    (POWER FAIL CONDITION)
      JMP STPRQ     SEND STOP 
NFIR1 LDA EQT6,I    GET REQUEST CODE
      AND B377      MASK OFF CODE 
      STA EQT6,I    AND SAVE IT 
      CLE           CLEAR E REG 
      CPA B2        IS IT A WRITE?
      CCE,RSS       YES...SET E REG 
      CPA B1        IS IT A READ? 
      JMP REQ       YES...WRITE OR READ 
      CPA B3        IS IT A STOP REQUEST? 
      JMP STPRQ     YES 
      CPA B203      IS IT A CLEAR REQ?
      JMP LCREQ     YES...CLEAR REQ.
      CPA B103      IS IT AN ENABLE LISTEN MODE 
      JMP LCREQ     YES 
RQERR LDA B2        CONTROL REQUEST ERROR 
      RSS 
RWERR CLA,INA       READ WRITE ERROR
      JMP IDON      RETURN
* 
B3    OCT 3 
B377  OCT 377 
      SKP 
* 
*     HERE FOR CLEAR REQUEST AND ENABLE LISTEN MODE 
* 
LCREQ LDA EQT12,I   GET CURRENT STATUS OF CARD
      AND WTMSK     MASK OFF WAITING FOR DATA FLAG
      SZA           ARE WE WAITING FOR DATA?
      JMP STPRQ     YES...SEND STOP 
      LDA EQT6,I    GET REQUEST TYPE
      CPA B103      WAS IT ENABLE LISTEN MODE?
      JSB LSREQ     YES - GO ENABLE LISTEN
      JSB CLREQ     NO - MUST BE CLEAR REQUEST
      STA EQT12,I   SAVE STATUS 
      JSB ICHAS     SAVE COMPLETION RETURN POINT
      LDB B1        GET GOOD STATUS BIT 
      JMP BUSY4     GO TO COMPLETION RETURN 
* 
*     SUBROUTINE TO SET UP ENABL LSTN MODE
* 
LSREQ NOP 
LISTI STC 0,C       SET RECEIVE INTERRUPT MODE
      CLA 
      STA EQT15,I   DISABLE TIMEOUT 
      LDB LSTNI     GET ADDRESS OF LISTEN INTERRUPT 
      LDA .020      SET LISTEN ENABLED STATUS 
      ISZ LSREQ     BUMP RETURN POINT 
      JMP LSREQ,I   RETURN
* 
*     SUBROUTINE TO ISSUE CLEAR REQUEST 
* 
CLREQ NOP 
      JSB RDD.C     READ DATA AND STATUS FROM CARD TO CLEAR IT
      LDB UNKNI     GET UNKNOWN INTERRUPT ADDRESS 
      CLA           RESET STATUS
      JMP CLREQ,I   RETURN
* 
*     HERE FOR SEND STOP REQUEST
* 
STPRQ JSB SSTOP     SEND STOP 
      LDB STPRA     GET STOP REQUEST CONTINUATOR ADDRESS
STRQ1 STC 0         PUT CARD IN TRANSMIT MODE 
      JMP IEXIT+1   AND RETURN WITH OPERATION IN PROGRESS 
      SKP 
* 
*     SUBROUTINE TO SEND A STOP 
* 
SSTOP NOP           SAVE RETURN ADDRESS 
      LDA CC        GET STOP WORD 
      JSB OUTPA     SEND STOP 
      JMP SSTOP,I   RETURN
* 
*     SUBROUTINE TO SEND REQUEST COMING 
* 
SRC   NOP 
      LDA CA        GET REQUEST COMING WORD 
      JSB OUTPA     SEND WORD 
      JMP SRC,I     RETURN
* 
*     ALL NORMAL EXITS FROM INITIATOR COME THRU HERE
* 
IEXIT STC 0,C       SET FOR RECEIVE MODE
      CLA           GET A ZERO
      JMP IDON1     RETURN
* 
* 
*     SUBROUTINE TO SEND TNW
* 
STNW  NOP 
      LDA CB        GET TRANSMIT NEXT WORD
      JSB OUTPA     OUTPUT WORD 
      JMP STNW,I    RETURN
* 
*     SUBROUTINE TO RETRANSMIT LAST WORD
* 
SRLW  NOP 
      LDA CD        RETRANSMINT LAST WORD 
      JSB OUTPA     OUTPUT CHARACTER
      JMP SRLW,I    RETURN
* 
*     ROUTINE TO SET ERROR FLAG IF DRIVER CURRENTLY BUSY
*     PROCESSING A REQUEST
* 
BUSY1 LDB B2        GET ERROR CODE
BUSY  JSB STAT      PUT NEW STATUS IN EQT 5 
      JMP RWERR     EXIT AND REPORT ERROR 
* 
*     HERE FOR IMMEDIATE COMPLETION RETURN
*     A REG SHOULD CONTAIN THE STATUS OF LAST REQUEST 
* 
*     BUSY2 LABEL IS USED FOR 'SOFT' REJECTS OF REQUESTS. 
*     THAT IS, A REQUEST WHICH IS RECEIVED WHEN THERE IS
*     EITHER A REQUEST PENDING OR A DATA PENDING CONDITION
*     CURRENTLY EXISTING. 
* 
BUSY2 LDB B2        GET BUSY BIT FOR IMMED COMPL REJECT 
BUSY4 JSB STAT      PUT NEW STATUS IN EQT 5 
      LDA B4        SET FOR IMMEDIATE COMPLETION
      SPC 1 
* 
*     HERE FOR COMPLETION RETURN
*     EQT 10 WILL BE SET DEPENDING UPON LISTEN MODE 
*     STATUS
* 
IDON  STA TEMP2     SAVE COMPLETION STATUS
      LDA EQT12,I   GET CURRENT DRIVER STATUS 
      AND .020      MASK OFF ALL BUT LISTEN ENABLE
      LDB LSTNI     GET ADDRESS OF LISTEN ENABLED ROUTINE 
      SZA,RSS       LISTEN MODE ENABLED?
      LDB UNKNI     NO
      LDA TEMP2     GET STATUS AGAIN
IDON1 JSB ICHAS     SAVE ROUTINE ADDRESS
      JMP I.65,I    RETURN TO RTE SYSTEM
* 
      SKP 
* 
*     COME HERE ON A READ OR WRITE
*     MUST DECIDE WHETHER OR NOT TO SEND OR RECEIVE 
* 
REQ   CLA           GET READ WRITE FLAG IN BIT 15 
      ERA 
      STA RWFLG     SAVE READ/WRITE FLAG
      LDA EQT12,I   GET CURRENT STATUS
      AND WTMSK     MASK FOR WAIT 
      STA WAITF     SAVE WAIT FLAG
      LDA EQT12,I   GET CURRENT STATUS
      AND .010      GET REQUEST COMING FLAG 
      STA RPFLG     SAVE REQUEST COMING FLAG
      LDA EQT12,I   GET STATUS WORD 
      AND .020      MASK ALL BUT LISTEN ENABLED FLAG
      STA LSNFG     SAVE LISTEN ENABLED FLAG
      LDA EQT9,I    GET SUBMODE AGAIN 
      AND B7        MASK OFF FOR SUBMODE
      STA B         LEGAL SUBMODE...0-2 
      ADB MN3 
      SSB           GREATER THAN 2? 
      SSA           OR NEGATIVE?
      JMP RQERR     YES...ERROR 
      ADA BRAD      GET BRANCH ADDRESS ON SUBMODE 
      LDB A,I       GET ADDRESS 
      JMP B,I       GO TO CORRECT ROUTINE 
* 
      SKP 
* 
*     HERE FOR RECEIVE OR TRANSMIT DATA ONLY
* 
TRDTA LDA WAITF     GET WAITING FOR DATA FLAG 
      SZA,RSS       ARE WE WAITING? 
      JMP BUSY1     NO...SET REQ NOT ACCEPTED...RETURN
      LDB B4        GET LENGTH ERROR BIT
      LDA EQT8,I    GET LENGTH
      SZA,RSS       ZERO LENGTH...ILLEGAL 
      JMP BUSY      ZERO LENGTH...ERROR BIT 2 
      LDB RWFLG     GET READ WRITE FLAG 
      CLE,SZB,RSS   READ? 
      JMP MODK1     YES 
      LDA EQT11,I   GET OTHER SIDES MODE
      AND B7        MASK OFF ALL BUT MODE 
      CLE,SZA       DMA OPEN? 
      CCE           NO...DMA SPECIAL
MODK1 CLA           GET A ZERO
      ERA,RAR       SET DMA MODE
      IOR B         SET IN READ WRITE FLAG
      IOR EQT12,I   MASK INTO STATUS WORD 
      AND MN401     MASK OFF DATA PENDING 
      STA EQT12,I   SAVE CURRENT STATUS 
      LDB WDINT     SET FOR POSSIBLE WRITE INTERRUPT
      SSA           READ OR WRITE?
      JMP TRDT3     WRITE...DO NOT SET FOR DMA TRANSFER UNTIL READY 
      LDA B77       GET MODE MASK...FOR CLEARING PARITY COUNT 
      AND EQT11,I 
      STA EQT11,I 
      JSB GTDMA     SET UP DMA
      LDB RDINT     GET READ INTERRUPT
TRDT3 JSB STNW      TELL OTHER SIDE TO "LET HER GO" 
      JMP IEXIT     DO A CONTINUATION RETURN
* 
B103  OCT 103 
MN6   OCT 177772
B203  OCT 203 
WTMSK OCT 400 
RPFLG NOP 
LSNFG NOP 
UNKNI DEF IUNKN 
LSTNI DEF ILSTN 
RDINT DEF INTRD 
WDINT DEF INTWD 
WR1IT DEF ITWR1 
BRAD  DEF *+1 
      DEF RQ.DT 
      DEF TRDTA 
      DEF TRREQ 
RWFLG NOP 
WAITF NOP 
MN3   OCT -3
MN401 OCT 177377
B1    OCT 1 
B10   OCT 10
.020  OCT 2000
.010  OCT 1000
* 
      SKP 
* 
* 
*REQUEST AND DATA TRANSMISSION MODE 
* 
RQ.DT LDA EQT8,I    FETCH BUFFER LENGTH 
      LDB B4        GET LENGTH ERROR BIT
      CPA B4        LENGTH OF 4?
      RSS           YES.
      JMP BUSY      ERROR...THEY DONT KNOW WHAT THEY ARE DOING! 
      LDA WAITF     ARE WE WAITING FOR DATA 
      LDB RPFLG     GET REQUEST PENDING FLAG
      SZB,RSS       REQUEST PENDING?
      SZA 
      JMP BUSY2     YES...ILLEGAL REQUEST 
      LDB EQT7,I    GET BUFFER ADDRESS
      STB EQT9,I    SAVE BUFFER ADDRESS 
      INB           INDEX TO DATA BUFFER LENGTH 
      LDA B,I       GET DATA BUFFER LENGTH
      LDB B4        GET LENGTH ERROR CODE JUST IN CASE
      SZA,RSS       IS DATA LENGTH ZERO?
      JMP BUSY      YES - REJECT THE CALL 
      LDB EQT7,I    GET EQT7 AGAIN
      ADB B2        GET DISPLACEMENT TO REQUEST BUFFER INFO 
      LDA B,I       GET REQUEST BUFFER ADDRESS
      STA EQT7,I    SAVE REQUEST BUFFER ADDRESS 
      INB           GET NEXT ADDRESS
      LDA B,I       GET REQUEST BUFFER LENGTH 
      STA EQT8,I    SAVE REQUEST LENGTH 
      LDB RWFLG     SET DATA DIRECTION FLAG 
      LDA .100      GET BIT 12
      SZB,RSS       WRITE OR READ DATA? 
      CLA           READ DATA 
      IOR .200      SET FOR REQUEST AND DATA
* 
*     HERE FOR STARTING OF A SEND REQUEST 
* 
SREQ1 IOR WTBIT     SET FOR WRITING...BIT 15
      IOR LSNFG     MASK IN LISTEN ENABLED FLAG 
      STA EQT12,I   SET IT IN 
      JSB SRC       SEND REQUEST COMING 
      LDB WR1IT 
      JMP IEXIT     DO A NORMAL CONTINUATION EXIT 
* 
B40   OCT 40
B77   OCT 77
.100  OCT 10000 
.400  OCT 40000 
WTBIT OCT 100000
* 
      SKP 
* 
*     HERE FOR RECEIVE OR TRANSMIT REQUEST ONLY 
* 
TRREQ LDA WAITF     GET WAIT FLAG 
      SZA           ARE WE WAITING FOR DATA?
      JMP BUSY2     YES...REJECT REQUEST
      STA EQT11,I   CLEAR PARITY AND MODE 
      LDA RPFLG     GET REQUEST PENDING FLAG
      SZA,RSS       IS THERE A REQUEST PENDING? 
      JMP TRROK     NO - GO ON AND PROCESS
      ALF,ALF       REQ PENDING - MOVE RPEND TO BIT 15
      RAR,RAR 
      XOR RWFLG     XOR WITH READ/WRITE FLAG
      SZA,RSS       IF ZERO, RPEND AND WRITE - ILLEGAL
      JMP BUSY1     REJECT REQUEST
TRROK LDB RWFLG     GET READ/WRITE FLAG 
      CLA           GET A ZERO
      SZB           READ OR WRITE?
      JMP SREQ1     WRITE 
      LDA LSNFG     SET LISTEN FLAG..CURRENT STATUS OF DRIVER 
      STA EQT12,I   SAVE NEW STATUS 
      LDB LNRCI     GET READ REQ INTERRUPT
      JMP TRDT3     TELL OTHER SIDE TO CONTINUE 
* 
LNRCI DEF ILNRC 
* 
      SKP 
* 
*     CONTINUATION SECTION
* 
C.65  NOP 
      JSB SETIO     CONFIGURE I/O INSTRUCTIONS
      LDA EQT1,I    GET EQT WORD 1
      SZA           IS DRIVER BUSY? 
      JMP C.651     YES - GO ON 
      LDB EQT10,I   DRIVER WAS NOT BUSY 
      CPB LSTNI     WAS IT IN LISTEN MODE?
      JMP C.651     YES - THAT'S OK 
      CPB ILS4A     WAS IT PROCESSING TRASH IN LSTN MODE? 
      JMP C.651     YES - THAT'S OK, TOO
      STA EQT15,I   SPURIOUS INTERRUPT - KILL TIMEOUT 
      JSB RDD.C     CLEAR CARD
      JMP CEXT4     AND EXIT
C.651 LDB EQT10,I   GET BRANCH ADDRESS FOR ROUTINE
      SZB,RSS       MAKE SURE IT IS NOT ZERO
      JMP IUNKN     GO TO UNKNOWN INTERRUPT PROCESSOR 
      JSB TIMCK     CHECK FOR TIMEOUT 
      CPB INTTO     WAS TIMEOUT EXPECTED? 
      JMP B,I       YES - GO AND PROCESS
      CPB LSTNI     IN LISTEN MODE? 
      JMP ILSN4     YES - IGNORE TIMEOUT
      CPB ILS4A     PROCESSING TRASH IN LISTEN MODE?
      JMP ILSN4     YES - IGNORE TIMEOUT
      LDA .020      ELSE SET LISTEN MODE IN EQT 12
      STA EQT12,I 
      JMP LNRC2     AND GO SEND STOP
* 
      SKP 
* 
*     UNKNOWN INTERRUPTS COME HERE
*     WE'RE IN TROUBLE IF WE EVER GET HERE!!!!! 
* 
IUNKN CLA           GET A ZERO
      STA EQT12,I   CLEAR ALL CARD STATUS 
      JSB RDD.C     CLEAR CARD BY READING IT
      LDB B77       SET ALL STATUS ERROR BITS 
      ERB,CLE,ELB   DROP OF 'OK' BIT
      JMP CEND      GET OUT...NOW!!!
* 
      SKP 
* 
*     HERE FOR FIRST INTERRUPT WHEN CARD IN LISTEN MODE 
* 
ILSTN JSB CHECK     FIND OUT WHAT THEY SENT US
      JMP ILSN4     TIME OUT...IGNORE 
      JMP ILSN3     PARITY ERROR...TELL THEM TO RETRY 
      JMP ILSN5     STOP...IGNORE 
* 
*     IF WE GET THIS FAR...CHECK RETURN A REG WITH DATA WORD
* 
      SZA,RSS       MAKE SURE A BROKEN LINE DIDN'T SNEAK IN 
      JMP CHCK2     BROKEN LINE...TURN OFF CARD 
      CPA CA        REQUEST COMING? 
      JMP ILSN1     YES...PROCESS AS A REQUEST COMING 
      LDB EQT1,I    GET EQT 1 WORD
      SZB,RSS       WAS DRIVER BUSY?
      JMP ILSN4     NO - JUST IGNORE INTERRUPT
      JSB SSTOP     SEND STOP...UNKNOWN WORD
      LDB ILS4A     SET CONTINUATOR ENTRY 
      JMP CEXT1     EXIT CONTINUATOR WITH CARD IN XMIT MODE 
ILSN1 LDB EQT13,I   GET I/O ADDRESS OF PROGRAM
      STB PROG      SAVE ADDRESS
      ADB B17       GET TO STATUS 
      LDA B,I       GET STATUS
      AND B17       MASK OFF ALL BUT STATUS 
      SZA           BUSY? 
      JMP ILSN3     YES...TELL OTHER SIDE TO RETRY
      LDB EQT13,I   GET TO B REG
      ADB B12       GET TO B REG
      LDA EQT4      GET ADDRESS OF LU 
      STA B,I       SAVE ADDRESS
      JSB $LIST     SCHEDULE PROGRAM
      OCT 101 
PROG  NOP 
      LDA EQT12,I   GET OLD STATUS
      AND .020      MASK OFF ALL BUT LISTEN ENABLED 
      IOR .010      SET IN REQUEST PENDING
      STA EQT12,I   AND SAVE IT 
ILSN4 CLA 
      STA EQT15,I   CLEAR TIMEOUT 
      JSB RDD.C     CLEAR CARD BY READING IT
      LDB LSTNI     SET FOR LISTEN MODE INTERRUPT 
      JMP CEXIT     AND EXIT
* 
*     HERE IF WE GOT A PARITY ERROR 
* 
ILSN3 JSB SRLW      RETRANSMIT LAST WORD
      JMP ILSN4     RESET AS THOUGH NOTHING HAPPENED
* 
*     HERE ON STOP...CLEAR STATUS 
* 
ILSN5 LDA EQT12,I 
      AND MN1K      MASK OF REQUEST PENDING FLAG
      STA EQT12,I 
      JMP ILSN4     TERMINATE 
* 
ILS4A DEF ILSN4 
      SKP 
* 
*     HERE FOR LENGTH COMING INTERRUPT
* 
ILNRC JSB CCHCK     CHECK FOR TIME OUT,PARITY ERROR,STOP
      INA           NEGATE COUNT
      ADA EQT8,I    IS IT WITHIN RANGE? 
      LDB B40       GET ERROR CODE...INCASE OF ERROR
      SSA 
      JMP LNRC4     SEND STOP AND TERMINATE 
      LDA TEMP2     GET LENGTH AGAIN
      CMA           GET COUNT POSITIVE
      STA EQT6,I    SAVE LENGTH FOR RETURN
      STA EQT8,I    SAVE FOR DMA TRANSFER 
      JSB STNW      TELL OTHER SIDE TO CONTINUE 
      JSB CEXT2     DO CONTINUATION EXIT...GIVE NEXT INTERRUPT ADDRESS
* 
      SKP 
                                                                                                                                                                                                                                        