ASMB,Q,C,Z
      IFZ 
      HED DVR37, NO SRQ ALARM SERVICE 
      NAM DVR37,0 59310-16002 REV.2026 800407 EQTX=18+7*D NSRQ
      XIF 
* 
      IFN 
      HED DVR37, WITH SRQ ALARM SERVICE 
      NAM DVR37,0 59310-16003 REV.2026 800407 EQTX=18+7*D  SRQ
      XIF 
* 
      ENT I.37,C.37 
      EXT $LIST 
* 
***************************************************** 
*     (C) COPYRIGHT HEWLETT-PACKARD CO., 1975       * 
*               ALL RIGHTS RESERVED                 * 
***************************************************** 
* 
*     DVR37 - RTE HP-IB DRIVER
* 
*     RELOC:  59310-16002 (NO SRQ SERVICE)
*     RELOC:  59310-16003 (WITH SRQ SERVICE)
*     SOURCE: 59310-18005 
* 
***************************************************** 
*     R.FAJARDO, 760329 
* 
* 
*     ASSEMBLE WITH N OPTION FOR SRQ ALARM SERVICE
*     ASSEMBLE WITH Z OPTION TO EXCLUDE SRQ SERVICE 
* 
********************************************************
* 
*1926 PCO 
* 1. OUCH1+1 CHANGED FROM JMP LOSE2 TO JMP L.RTN .
*    PROBLEM WAS FALSE IFC'S, PARTICULARLY WITH 2240. 
*    SOLUTION IS TO IGNORE IFC COMMAND ON BUS.
* 2. ADD SUPRESS LINE FEED NEXT OPERATION. (BIT 7 IN BEQT1) 
*    PROBLEM WAS THAT THIS FUNCTION WAS NEEDED TO HAVE THE MINIMUM
*    SET OF FEATURES FOR LINE PRINTER SUPPORT WITH THE HPIB DRIVER. 
*    SOLUTION WAS TO USE BIT 7 IN BEQT1 TO FLAG THE SUPPRESSION 
*    AND THEN CHECK THIS BIT BEFORE TO CRLF IS SENT AT THE END OF 
*    AND OUTPUT OPERATION (IN RESPONSE TO BIT 3 BEING SET IN EQT11).
*    BIT 7 IS SET BY CALL EXEC (3,ICNWD,0)  WHERE BITS 10-6 OF ICNWD
*    = 11 AND BITS 5-0 =LU. 
*    IF THE BIT 7 IS SET, THEN ONLY "CR" CAN BE APPENED TO NEXT WRITE 
*    OPERATION, FUNCTION CODE = 2. BIT7 IS CLEARED AFTER THE DATA HAS 
*    BEEN SENT FOR NEXT WRITE OPERATION. SET OR NOT.
* 
*    !!CAUTION!! NO CHECK IS MADE IN OUTPUT CONTINUATOR SECTION TO
*    DETERMINE IF APPENDED "LF" IS BEING SUPPRESSED FOR DATA MODE 
*    OR COMMAND MODE. IF "LF" IS EVER APPENDED TO COMMAND MODE, 
*    A CHECK WILL HAVE TO BE IMPLEMENTED. 
* 
************************************************************************* 
      SKP 
INTBA EQU 1654B     FWA INTERRUPT TABLE 
DUMMY EQU 1737B     PRIVILEDGED INTERRUPT I/O 
* 
EQT1  EQU 1660B     DEVICE SUSPEND LIST POINTER 
EQT2  EQU 1661B     DRIVER INITIATION SECTION ADDR
EQT3  EQU 1662B     DRIVER COMPLETION SECTION ADDR
EQT4  EQU 1663B     DRIVER I/O ASSIGNMENTS, 
EQT5  EQU 1664B     DRIVER STATUS INFORMATION 
EQT6  EQU 1665B     CURRENT I/O REQUEST,
EQT7  EQU 1666B     DATA BUFR ADDR/CONTROL PARM 
EQT8  EQU 1667B     DATA BUFR LNG/CONTROL PARM
EQT9  EQU 1670B     CONTROL BUFR ADDR 
EQT10 EQU 1671B     CONTROL BUFR LNG
EQT11 EQU 1672B     DRIVER CONTROL WORD,
EQT12 EQU 1771B     EQT ENTRY COUNT,
EQT13 EQU 1772B     EQT EXTENSION ADDR
EQT14 EQU 1773B     DEVICE TIME OUT VALUE 
EQT15 EQU 1774B     DEVICE TIME OUT CLOCK 
* 
      SUP 
      SKP 
* 
*     EQT ENTRY WORD FORMATS AS FOLLOW: 
* 
******EQT4 - FORMAT: D BPS TUU UUU CCC CCC
*      D=DMA ASSIGNED, 1=YES
*      B=BUFFERING ON, 1=YES
*      P=PWR FAIL SERVICED BY DVR, 0=NO 
*      S=TIME OUT SERVICED BY DVR, 1=YES
*      T=TIME OUT OCCURANCE, 1=YES
*      U=UNIT OR SUBCHAN, THIS REQUEST
*      C=I/O CHANNEL, THIS REQ. 
* 
******EQT5 - FORMAT: A ATT TTT TSS SSS SSS
*      A=AVAILABILITY 
*      T=DEVICE TYPE, 37
*      S=STATUS BYTE
* 
******EQT6 - FORMAT: C C0Z 0FF FFF 000 0RR
*      C=REQUEST TYPE, 0/1/2/3:STANDARD/BUFFERED/SYSTEM/CLASS 
*      F=SUBFUNCTION
*      R=I/O REQUEST, 1/2/3:READ/WRITE/CNTRL
*      Z=0/1 SINGLE/DOUBLE BUFR REQUEST 
* 
******EQT11 - FORMAT: S A0E B00 HL0 00C MDI 
*      S=SRQ SERVICE IN PROGRESS, 1=YES 
*      A=I/O REQUEST ABORTED TO SERVICE SRQ, 1=YES
*      E=EXPECT/ISSUE EOR WITH I/O, 1=YES 
*      B=EXPECT/ISSUE EOR WITH LAST DATA BYTE, 1=YES
*      H=ENABLE ASCII MODE I/O CARD LOGIC, 1=YES
*      L=SUPRESS LINE FEED. ONLY BIT 7 IN BEQT1 IS CHECKED. 
*      C=ENABLE CRLF POST PROCESSING, 1=YES 
*      M=DATA MODE, 1=ASCII, 0=BINARY 
*      D=DMA ACTIVE ON PENDING REQUEST, 1=YES 
*      I=I/O DIRECTION, 1=INPUT, 0=OUTPUT 
* 
******EQT12 - FORMAT: S PAB BBB BEE EEE EEE 
*      S=SRQ PENDING FLAG 
*      P=ALARM PROG SCHEDULING ACTIVE 
*      A=SRQ INTERRUPT ARMING FLAG
*      B=# ACTIVE BEQT ENTRIES, 0-31
*      E=# EQT EXTENSION WORDS, 19-255
* 
******EQT13 - FORMAT: I AAA AAA AAA AAA AAA 
*      I=INITIATOR/CONTINUATOR FLAG 
*      A=EQT EXTENSION ADDRESS
* 
      SKP 
* 
******BEQT1 - FORMAT S RDI JOP EL0 0UU UUU
*      S=0=DISABLE PRIORITY RESPONSE TO SRQ INTERRUPT 
*      R=0=DISABLE I/O RESTART ATTEMPT
*      D=0=DISABLE DMA USAGE
*      I=1=REQUIRE EOR FROM DEVICE. 
*      J=1=EXPECT EOR WITH LAST DATA BYTE 
*      O=1=ISSUE EOI TO DEVICE
*      P=1=ISUE EOI WITH LAST DATA BYTE 
*      E=1=ALLOW OCCURENCE OF ERROR TO ABORT CURRENT PROGRAM
*      L=SUPRESS LF ON NEXT OUTPUT
*      U=UNIT NUMBER
* 
******BEQ2 = FORMAT SC111111 C2222222 
*      S=1=ALARM PROGRAM IS TO BE SCHEDULED.
*      C111111 =CHARACTER 1 OF ALARM PROGRAM NAME 
*      C2222222=CHARACTER 2 OF ALARM PROGRAM NAME 
*     BEQ3 - FORMAT C3333333 C4444444 
*      C3333333=CHARACTER 3 OF ALARM PROGRAM NAME 
*      C4444444=CHARACTER 4 OF ALARM PROGRAM NAME 
*     BEQ4 = FORMAT C5555555 00000000 
*      C5555555=CHARACTER 5 OF ALARM PROGRAM NAME 
*     BEQT5- FORAMT 00000000 SSSSSSSS 
*      SSSSSSSS=LAST READ SERIAL POLL STATUS
*     BEQT6- FORMAT V VVV VVV VVV VVV VVV 
*      V=VALUE TO BE PASSED TO ALARM PROGRAM. 
*     BETQ7- FORMAT F CCC CCC CPP PPP PPP 
*      F=1 THEN P=ERROR STATUS OF LAST OPERATION. 
*      F=0 THEN CP = TRANSMISSION LOG LAST OPERATION. 
* 
      SKP 
* 
*     I/O INITIATOR SECTION 
* 
I.37  NOP 
      CLB           NO CLC,C
      JSB SETUP     CNFG I/O & BEQT ADDRS 
      JSB MINE      REGAIN HP-IB CONTROL
      JSB DMA?
      SZA           HAVE WE DMA?
      JMP I37A
      LDA EQT6,I     NO, DO WE NEED IT? 
      AND B3
      CPA B3
      JMP I37A      CONTROL REQUEST, NO.
      LDA BEQT1,I   I/O REQUEST,
      RAL,RAL        DMA REQUIRED?
      SSA,RSS 
      JMP I37A
      LDA B5         YES, GO GET IT 
      JMP I.37,I
I37A  EQU * 
* 
      IFN           **IF SRQ SERVICE***** 
      CLA           *                   * 
      LDB EQT11,I   *SRQ SERVICE BUSY?  * 
      SSB           *                   * 
      JMP I.37,I    * YES, AWAIT COMPLETION 
      XIF           ********************* 
* 
      LDA EQT13,I   INDICATE
      IOR BIT15      INITIATOR
      STA EQT13,I     SECTION 
      LDA EQT4,I    CLAIM 
      IOR BIT12      TIME OUT 
      STA EQT4,I      PROCESSING
* 
* 
RSTRT CLA,CCE       CLEAR:
      STA EQT11,I    DRIVER CNTRL WORD
      STA STSWD,I    PENDING EQT STATUS WORD
      STA XLOG,I     PENDING TRANSMISSION LOG 
      LDB BEQT1 
      ADB B6
      STA 1,I        BEQT7
      JSB STATS      INTERRUPT FLAG FROM PREVIOUS OP. 
* 
      LDA EQT6,I
      AND B3        GET REQUEST 
      CPA B3
      JMP I.CRQ      CONTROL! 
      SKP 
* 
*     I/O REQUESTS HERE 
* 
I000  LDA EQT6,I    LOAD I/O CTL WORD 
      ALF           SHIFT Z-BIT TO LSB
      AND B1        MASK
      STA ZBIT      AND SAVE
      SZA,RSS       Z=1?
      JMP *+4       NO. SKIP TEST OF CNTL BUFF LENGTH.
* 
      LDA EQT10,I   LOAD CTL BUFR LNGTH 
      SZA           LENGTH=0? 
      JMP I005       NO. GO SEND CNTRL BFFR.
      LDB UNIT       YES,LOAD SUBCHANNEL
      SZB,RSS       SUBCHANNEL=0? 
      JMP I015       YES,CHECK FOR DATA 
      LDA ZBIT       NO,LOAD Z-BIT
      CPA B1        Z-BIT=1? NOTE: CNTRL BFFR LNGTH =0. 
      JMP I015       YES,CHECK FOR DATA 
      LDA EQT8,I     NO,LOAD DATA BUFR LNGTH
      SZA           LENGTH=0? 
      JMP I010       NO,GENERATE AUTO ADDR CMNDS
      LDA EQT6,I     YES,LOAD EQT WORD 6
      AND B2103     MASK I/O REQ CODE 
      CPA B2        REQUEST CODE=2(WRITE REQ)? X=M=0? 
      JMP I010       YES,GENERATE AUTO ADDR CMNDS & CR-LF 
      JMP L.XIT      NO,EXIT
* 
*     ISSUE CONTROL BUFFER
* 
I005  SSA            CTL BUFR LGTH NEG(CHARS)?
      CMA,INA,RSS    YES,MAKE POSITIVE & SKIP 
      ALS            NO,WORDS. CNVRT TO +CHARS
      LDB EQT9,I    LOAD CMND BUFR ADDRESS
      JMP I012      AND OUTPUT
* 
I010  LDA EQT6,I     FETCH READ-WRITE FLAG. BIT0=1 IF READ. 
* 
      LDB #ULBT      FETCH UNL, BUS TALK
      SLA            TEST IF COMPUTER READ. 
      LDB #ULBL      YES. CHANGE TO UNL, BUS LISTEN.
* 
      STB CMDBA,I    STORE WORD IN COMMAND BUFFER.
* 
      LDB #DLSC      FETCH DEV LISTEN, SEC
      SLA            TEST IF COMPUTER READ. 
      LDB #DTSC      YES. CHANGE TO DEVICE TALK, SEC. 
* 
      LDA UNIT       FECTCH UNIT NUMBER.
      ALF,ALF        POSITION TO UPPER BYTE.
      ADB 0          FORM DEVICE TALK OR LISTEN ADDRESS.
* 
      LDA EQT9,I     FETCH SECONDARY
      AND B37        MASK UPPER BITS TO PREVENT DISASTER. 
      ADB 0          COMPLETE FORMING DEV,SEC.
* 
      STB CMDBA+1,I  STORE WORD IN COMMAND BUFFER.
* 
      LDB EQT9,I     FETCH SECONDARY ADDRESS AGAIN. 
      LDA B3         PREPARE TO SEND UNL,BUS,DEV
      SZB            TEST IF THERE WAS A SECONDARY ADDRESS. 
      INA            YES. SET COUNT FOR UNL,BUS,DEV,SEC 
* 
      LDB CMDBA      FETCH THE BUFFER ADDRESS.
I012  JSB DOIO      DO OUTPUT 
       OCT 60 
* 
*     SET UP DATA TRANSFER
* 
I015  LDA EQT8,I
      SZA           ANY DATA? 
      JMP I020       YES, GIVE IT 
      CPA UNIT      DIRECT I/O REQ? 
      JMP L.XIT      YES,EXIT 
      CPA ZBIT      Z-BIT=0?
      JMP I020       YES,ISSUE DATA 
      JMP L.XIT      NO,EXIT
I020  SSA 
      CMA,INA,RSS   MAKE +CHAR CNT
      ALS 
      STA T1
      LDA EQT6,I    EXTRACT I/O REQ 
      AND B3         & FORM CPU 
      XOR B3         TLK/LSN CMND,
      ALF,RAR         DATA MODE 
      IOR B100
      STA I028A 
      LDA EQT6,I
      ERA,RAL       (E)=I/O DIRECTION 
      ASR 6 
      AND B21       EXTRACT SUB-FUNCTION
      STA 1 
      LDA BEQT1,I   INIT DVR CNTRL WORD:
      AND BIT13     GET DMA REQUIREMENT 
      ALF            BIT 1: DMA ACTIVE, 1=YES 
      RAR,ELA        BIT 0: I/O DIRECTION, 1/0
      SLB,RSS       TRANSLATE M BIT 
      IOR B4         BIT 2: ASCII/BINARY, 1/0 
      SLB,RSS       ASCII OR BINARY?
      SLA,RSS       A. OUTPUT OR INPUT? 
      CPB B20       B. O. ASCII HONEST (TRANSPARENT) ?
      IOR BIT8         I. H. SET BIT 8 (ASCII CARD LOGIC ON) IF 
      STA EQT11,I         NH. ASCII INPUT OR ASCII HONEST OUTPUT. 
* 
      SLA           DETERMINE EOR REQUIREMENTS OUTPUT AND 
      JMP I021      INPUT.
      CLA           OUTPUT, 
      CPB B1         BINARY RECORD WITH EOI?
      LDA BEQT1,I    YES, USE CNFG WORD 
      RAL,RAL        NO, EOR NOT REQUIRED 
      JMP I022
* 
I021  LDA B14K      INPUT,
      SLB            BINARY OR ASCII? 
      LDA BEQT1,I    BINARY, USE CNFG WORD
* 
I022  AND B14K       PUT CNFG BITS, IF ANY, IN EQT 11 
      IOR EQT11,I 
      STA EQT11,I   POST REQUIREMENTS 
* 
* CHECK FOR BACK ARROW. SUPRESS ARROW AND LF IF 
* ASCII NON HONEST (TRANSPARENT) MODE.
* 
      SZB           ASCII RECORD? 
      JMP I028       NO.
      SLA,RSS        YES, DIRECTION?
      CPB T1           WRITE REQUEST! 
      JMP I026         READ REQUEST! OR 0 LNG WRITE!
      CCA 
      ADA T1        CHECK "_" CROCK 
      ARS 
      ADA EQT7,I    FIND BUFR END 
      LDA 0,I 
      LDB T1
      CMB,SLB,INB,RSS  ODD CHAR?
      ALF,ALF        YES, POSITION
      AND B377        & AXE 
      CPA B137      "_" ? 
      INB            YES, DROP CNT
      CMB,INB 
      STB T1
      CPA B137      "_" ? 
      JMP I028       YES, NO CRLF 
* 
I026  LDA EQT11,I   FLAG CRLF 
      IOR B10        POST-PROC. 
      STA EQT11,I    REQUIREMENT
* 
I028  LDA T1
      LDB EQT7,I    DO I/O OP 
      JSB DOIO
I028A  NOP          (CNTRL WORD)
      IOR XLOG,I    MAINTAIN ERR STATUS (IF ANY)
      STA XLOG,I    POST XMIS LOG 
* 
      LDA EQT11,I   CLEAR "SUPRESS LF" IF OUTPUT REQUEST. 
      SLA           OUTPUT? (EQT6 WOULD BE BETTER CHECK.) 
* 
      JMP L.XIT     NO. MAKE EXIT.
* 
      LDA BIT7      YES.
      CMA           FORM MASK TO CLEAR BIT 7. 
* 
      AND BEQT1,I   CLEAR THE SUPRESS LF FLAG.
      STA BEQT1,I 
* 
      JMP L.XIT     MAKE EXIT.
* 
      SKP 
* 
*     DISPATCH CONTROL REQUESTS 
* 
I.CRQ LDA EQT6,I    EXTRACT SUB-FUNCTION
      ASR 6 
      AND B37 
      STA 1 
      LDA UNIT      GET DEVICE ADDR 
      CLE,SZA,RSS   UNIT 0? 
      JMP IBCRQ      YES, BUS CONTROL 
      SZB,RSS        NO, DEVICE CONTROL 
      JMP ID00      DEVICE CLEAR
      CPB B1
      JMP ID01      DEVICE EOR
      CPB B6
      JMP ID06      DEVICE STATUS 
      CPB B11 
      JMP ID11      DEVICE LINE/FORM FEED 
      CPB B16 
      JMP IB16      REN TRUE
      IFN           **IF SRQ SERVICE***** 
      CPB B20       *                   * 
      JMP ID20      *ARM ALARM PROG     * 
      CPB B21       *                   * 
      JMP ID21      *CLEAR  ALARM PROG  * 
      XIF           ********************* 
      CPB B25 
      JMP ID25      SET DEVICE CNFG.WORD
      CPB B27 
      JMP ID27      CLEAR DEVICE CNFG.WORD
      JMP L.XIT     ELSE, IGNORE
* 
IBCRQ SZB,RSS 
      JMP IB00      BUS CLEAR 
      CPB B1
      JMP IB01      BUS EOR 
      CPB B6
      JMP IB06      BUS STATUS
      CPB B16 
      JMP IB16      REN TRUE
      CPB B17 
      JMP IB17      REN FALSE 
      CPB B25 
      JMP ID25      CONFIGURE BUS 
      CPB B27 
      JMP IB27      UNCONFIGURE BUS 
      CPB B30 
      JMP IB30      PARALLEL POLL 
      JMP L.XIT 
* 
      SKP 
* 
*     SELECTED DEVICE CLEAR 
* 
ID00  ALF,ALF       FORM CMNDS: 
      IOR #LSDC     UNT,UNL,LSN,SDC 
      STA CMDBA+1,I 
* 
      LDA EQT6,I    TEST FOR OF,PRGM,1
      ELA 
      CMA,SEZ,SSA   BIT15(E)=0?  OR  BIT14(SIGN)=1? 
      JMP L.XIT     NO.  REQUEST TYPE = 2 (SYSTEM). 
* 
      LDA B4        YES. REQUEST TYPE #2. 
      LDB CMDBA     LOAD BYTE CNT. AND BUF. ADDR. 
ID00A JSB DOIO      & ISSUE 
       OCT 60       (CMND MODE) 
      JMP L.XIT 
* 
*     ISSUE DEVICE EOR
* 
ID01  IOR #LSN      FORM CMNDS: 
      ALF,ALF 
      STA CMDBA+1,I  UNT,UNL,LSN
      LDA B3
      LDB CMDBA 
      JSB DOIO      ISSUE NOW 
       OCT 60 
IB01  CLA,INA 
      LDB .0A 
      JSB DOIO      GIVE EOR
       OCT 150      (DATA MODE) 
      JMP L.XIT 
* 
*     DEVICE STATUS 
* 
ID06  LDB BEQT2,I   FIRST CHECK IF THERE IS ALARM PROGRAM 
      SSB,RSS       WAITING TO BE SCHEDULED. (BIT 15 SET)?
      JMP ID06A     NO. GO READ NEW SERIAL POLL.
* 
      ELB,CLE,ERB   YES. CLEAR THE FLAG AND THEN RETURN THE 
      STB BEQT2,I        SERIAL POLL STATUS READ IN RESPONSE
      LDB BEQT1          TO THE SRQ.
      ADB B4
      LDA 1,I 
      STA STSWD,I 
      JMP L.XIT 
* 
ID06A IOR #TLK      FORM CMNDS TO READ SERIAL POLL STATUS:
      IOR #SPE. 
      STA CMDBA+1,I  UNT,UNL,SPE,TLK
      LDA B4
      LDB CMDBA 
      JSB DOIO      NOTIFY CNTRLR 
       OCT 60 
      ISZ EQT11,I   INDICATE INPUT
      CLA,INA            &
      LDB STSWD 
      JSB DOIO      TAKE STATUS 
       OCT 120      (DATA MODE, CPU LSN)
      LDA STSWD,I 
      ALF,ALF       POSITION STATUS BYTE
      STA STSWD,I 
      CLA 
      STA EQT11,I   INDICATE OUTPUT 
      LDA B2
      LDB A#SPD 
      JMP ID00A     SERIAL POLL DISABLE 
      SKP 
* 
*     DEVICE LINE/FORM FEED 
* 
ID11  LDB EQT7,I    LOAD CTL PARAMETER
      SZB,RSS       PARAMETER=0?
      JMP ID11C      YES, SET SUPRESS LF FOR NEXT WRITE.
      IOR #LSN       NO,MERGE LSN CMND WITH SUBCH 
      ALF,ALF       SHIFT TO UPPER BYTE 
      STA CMDBA+1,I AND SAVE IN CMND BUFR 
      LDA B3        LOAD CMND BUFR LNGTH
      LDB CMDBA     LOAD CMND BUFR ADDR 
      JSB DOIO      GO OUTPUT UNT,UNL,LSN CMNDS 
       OCT 60 
      LDA EQT7,I    LOAD CTL PARAMETER
      CMA,SSA,INA,RSS 
      JMP ID11B     GO ISSUE A FORM FEED
* 
      STA EQT7,I    SAVE LF CTR(- # OF CRLF'S)
ID11A LDA B14       LOAD DRIVER CTL WORD
      STA EQT11,I   AND SAVE IN EQT11 
      CLA 
      JSB DOIO      GO OUTPUT CR/LF 
       OCT 110
      ISZ EQT7,I    LAST CR/LF? 
      JMP ID11A      NO,OUTPUT ANOTHER
      JMP L.XIT      YES,EXIT 
* 
ID11B CLA,INA       SET BUFR LNGTH=1
      LDB FORMA     LOAD FORM FEED CMND ADDRESS 
      JSB DOIO      ISSUE FORM FEED CMND ONCE 
       OCT 110
      JMP L.XIT     AND EXIT
* 
ID11C LDA BEQT1,I   SET BIT7 IN BEQT1 TO SUPRESS LINE FEED. 
      IOR BIT7
      STA BEQT1,I 
      JMP L.XIT 
* 
      SKP 
      IFN           **IF SRQ SERVICE***** 
* 
*     ARM SRQ ALARM PROG  (IF "ASMB,...,N") 
* 
ID20  LDB EQT7,I    GET ALARM PROG BUFFER ADDRESS 
      LDA T2A       GET ADDRESS OF TEMPORARY BUFFER.
      JSB ID20M     MOVE PROG NAME AND VALUE TO TEMP BUFFER.
* 
      JSB $LIST 
      OCT 217       GET ID ADDRESS OF ALARM PROGRAM 
      DEF T2
      SZA           ID ADDRESS FOUND? 
      JMP LOSE4     NO, GO LOSE! NO SUCH PROGRAM
* 
      LDA BEQT2     YES, MOVE PROG NAME AND VALUE INTO BEQT.
      LDB T2A 
      JSB ID20M 
* 
      LDA EQT12,I   LOAD EQT WORD 12,SET SRQ INTERRUPT
      IOR BIT13     ARMING FLAG BIT 13
      STA EQT12,I   AND STORE IN EQT WORD 12
* 
      JMP L.XIT 
* 
ID20M NOP           MOVE 4 WORDS FROM BUFF B TO BUFF A. 
      STA T1        SAVE DESTINATION ADDRESS. 
      STB T3        SAVE FROM ADDRESS.
* 
      LDB M4        GET DOWN COUNT VALUE. 
* 
ID20N LDA T3,I
      STA T1,I
* 
      ISZ T3
      ISZ T1
* 
      INB,SZB       INCR DOWN COUNT AND TEST FOR END. 
      JMP ID20N 
* 
      STA T1,I      STORE 4TH WORD IN 5TH LOCATION ALSO.
* 
      JMP ID20M,I   ALL WORDS MOVED.
* 
      XIF 
* 
*     CLEAR DEVICE EQT EXTENSION
* 
ID27  CLA           0 CNFG WORD ENTRY 
      STA BEQT1,I 
* 
*     CLEAR ACTIVE SQR ALARM PROGRAM
* 
ID21  CLA 
      LDB BEQT2     LOAD ADDR OF ALARM PROG NAME BUFFER 
      STA 1,I       AND CLEAR 1ST PAIR OF CHARS 
      INB           INCREMENT TO ADDR OF 3RD WORD IN BEQT 
      STB T1        AND STORE 
      CLB 
      DST T1,I      CLEAR 2ND AND 3RD PAIR OF CHARS 
      JMP L.XIT 
* 
*     ESTABLISH DEVICE/BUS CNFG WORD
* 
ID25  LDA EQT7,I    GET CNFG WORD 
      AND HI11          & 
      IOR UNIT      MERGE DEVICE ADDR 
      STA BEQT1,I 
      JMP L.XIT 
      SKP 
* 
*     GENERAL HP-IB CLEAR 
* 
IB00  LDB EQT6,I    REQUEST FROM SYSTEM 
      ELA 
      CMA,SEZ,SSA   BIT15(E)=0? OR BIT14(SIGN)=1? 
      JMP L.XIT     NO. REQUEST TYPE = 2 (SYSTEM).
* 
      CLA,INA       YES. REQUEST TYPE # 2. ISSUE IFC. 
      JSB CNTLR          &
      LDA HI10      DELAY NO LESS 
      INA,SZA       THAN 100 USEC 
      JMP *-1 
      JSB MINE      REGAIN CNTRL
      LDB EQT7,I
      SZB           IF OPT.PARM#0 
      JMP L.XIT      DO IFC ONLY! 
      CLA,INA 
      LDB A#DCL     ADD UNIVERSAL 
      JMP ID00A      DEVICE CLEAR 
* 
*     DO PARALLEL POLL
* 
IB30  LDA B70       ISSUE PPE CMND
      JSB CNTLR 
      LDA B6        STROBE DIO LINES
      JSB CNTLR      TO INPUT REG.
IO5   LIA BUS       & TAKE DATA BYTE
      JMP IB06A      & POST IN EQT
* 
*     TAKE HP-IB STATUS 
* 
IB06  JSB STATS     GET STATUS WORD, (E)=0
      ASR 4         ISOLATE BUS SIGNAL LINE 
      AND B377       & BUS FUNCTION STATUS
IB06A STA STSWD,I    & POST IN EQT
      JMP L.XIT 
* 
*      REN TRUE/FALSE 
* 
IB16  LDA B3         REN TRUE 
      RSS 
IB17  LDA B2         REN FALSE
      JSB CNTLR 
      JMP L.XIT 
* 
*     CLEAR BUS CONFIGURATION 
* 
IB27  LDA EQT12,I   LOAD EQT WORD 12
      AND B377      MASK # OF EQT EXTENSION WORDS 
      STA EQT12,I   AND RESTORE 
      LDA DFCFG     LOAD DEFAULT BUS CNFG WORD
      LDB EQT4,I    LOAD EQT WORD 4 
      SSB           DMA BIT 15=0? 
      IOR BIT13      NO,SET DMA BIT IN DFLT WORD
      STA BCNFG,I   AND SAVE IN BUS CNFG WORD 
      JMP L.XIT 
* 
      SKP 
* 
*     I/O CONTINUATOR SECTION 
* 
C.37  NOP 
      STA I.37      =INTERRUPT SOURCE 
      CLB,INB       ENABLE CLC,C
      JSB SETUP     CNFG I/O & BEQT ADDRS 
       JMP OUCH     IFC DETECTED! 
      IFN           **IF SRQ SERVICE***** 
      LDA T1        RETRIEVE STATUS     * 
      LDB EQT11,I                       * 
      SSB           SRQ SERVICE ACTIVE? * 
      JMP C37C       YES, RESUME OPERATIONS 
      SSA           SRQ INTERRUPT?      * 
      JMP C.SRQ      YES, POSSIBLE ALARM* 
      XIF           ********************* 
* 
C37A  LDA EQT1,I
      SZA           I/O IN PROGRESS?
      JMP C37B       YES. 
      IFN           **IF SRQ SERVICE***** 
      LDA EQT12,I                       * 
      RAL,SLA       SRQ PENDING?        * 
      JMP C.SRQ      YES, SERVICE NOW.  * 
      SSA           ALARM PROG WAITING? * 
      JSB C.SCH      YES, SCHEDULE IT   * 
      XIF           ********************* 
      JMP C.OFF      NO, LEAVE
* 
C37B  LDA T1
      LDB EQT11,I 
      RBR,SLB,RBL   DMA I/O ACTIVE? 
      JMP C.DMA      YES, SPECIAL HANDLING
* 
C37C  RAL,RAL 
      SLB,RSS       INPUT REQUEST?
      JMP C37D
      SLA            YES, EXPECT IRL FLAG 
      JMP C.IRL        INPUT READY. 
      JMP C37E
C37D  SSA            NO, EXPECT ORA FLAG
      JMP C.ORA        OUTPUT ACCEPTED. 
* 
C37E  LDA EQT4,I
      ALF           TIME OUT? 
      SSA,RSS 
      JMP L.RTN      NO, DISMISS
      IFN           **IF SRQ SERVICE***** 
      LDA BIT15 
      SSB           SERIAL POLL HUNG?   * 
      JMP CONT.      BAD, BAD, LEROY BUS... 
      XIF           ********************* 
      SLB           INPUT REQUEST?
      BLF,SLB       EOR REQUIRED? 
      JMP LOSE1      DEVICE QUIT. 
      JMP C.IR3      ASSUME COMPLETE
      SKP 
* 
*     INTERFACE CLEAR SERVICE 
* 
OUCH  LDA EQT1,I    I/O IN PROGRESS?
      SZA 
      JMP OUCH1      YES. 
      IFN           **IF SRQ SERVICE***** 
      LDB EQT11,I                       * 
      SSB           SRQ SERVICE ACTIVE? * 
      JMP C.SR8      YES, NO LONGER...  * 
      XIF           ********************* 
      JMP C.OFF      NO, IGNORE 
OUCH1 JSB MINE      REGAIN CNTRL
      JMP L.RTN      IGNORE IFC STATUS PER 1926 PCO 
      SKP 
      IFN           **IF SRQ SERVICE**
* 
*     SERVICE REQUEST HANDLING (IF "ASMB,...,N")
* 
C.SRQ LDA EQT1,I
      SZA,RSS       I/O IN PROGRESS?
      JMP C.SR1      NO, GO POLL
      LDB BEQT1,I   SRQ ALLOWED TO
      SSB            KILL I/O OP? 
      JMP C.SR0 
      LDA EQT12,I    NO, DELAY SERVICE
      IOR BIT15 
      STA EQT12,I 
      JMP C37A
* 
C.SR0 LDA BIT14      YES, INDICATE SUCH 
C.SR1 IOR BIT11       (IN CASE OF EOR)
      STA EQT11,I 
      LDA EQT12,I   CLEAR PENDING 
      ELA,CLE,ERA    SRQ NOTIFICATION 
      STA EQT12,I 
      JSB SBEQT     GET #BEQT ENTS & BEQT ADDR
      CMA,INA,SZA,RSS    ANY? 
      JMP CSR3A      NO, DISABLE SRQ INTRPT 
      STA BQCNT,I 
* 
C.SR2 STB BEQTA,I   STORE DEVICE EQT EXT START ADDR 
      INB           INCREMENT TO 2ND WORD IN CURRENT EQT EXT
      LDA 1,I       LOAD 2ND WORD 
      SZA           IS SRQ ALARM PROG SET UP FOR THIS DEVICE? 
      JMP C.SR4      YES
C.SR3 ADB B6         NO,GO TO 1ST WORD IN NEXT DEVICE EQT EXT 
      ISZ BQCNT,I 
      JMP C.SR2 
      LDA EQT11,I 
      SSA           SRQ SERIAL POLL ACTIVATED?
      JMP C.SR7      YES, GO CHECK FOR CLAMERS. 
CSR3A LDA EQT12,I    NO. NOBODY WAS CONFIGURED
      IOR BIT13      WITH SRQ PROGRAM.
      XOR BIT13      DISABLE FUTURE SRQ 
      STA EQT12,I    INTERRUPTS FOR NOW.
      JMP C.SR8 
* 
C.SR4 LDB BEQTA,I   POSSIBLE SRQ SOURCE 
      LDA 1,I       LOAD DEVICE CONFIGURATION WORD
      AND B37       MASK DEVICE ADDRESS 
      IOR #TLK
      LDB EQT11,I 
      CCE,SSB       SRQ SERVICE ACTIVATED YET?
      JMP C.SR5 
      RBL,ERB        NO, ACTIVATE NOW 
      STB EQT11,I 
      IOR #SPE.      FORM CMNDS:
      STA CMDBA+1,I   UNT,UNL,SPE,TLK 
      LDA B4
      LDB CMDBA 
      JMP C.SR6 
* 
C.SR5 ALF,ALF        YES, ADDR NXT TLKER
      STA STSWD,I 
      CLA,INA 
      LDB STSWD 
C.SR6 JSB DOIO      DO SERIAL POLL
       OCT 60 
      SSA           ERRORS ?? 
      JMP DOWN       YES, NO MERCY... 
      ISZ EQT11,I   INDICATE INPUT
      CLA,INA           & 
      LDB STSWD      TAKE STATUS
      JSB DOIO
       OCT 120       (DATA MODE, CPU LSN) 
      SSA           TIME OUT? 
      JMP LOSE7      YES, GO LOSE!
      LDA EQT11,I   INDICATE OUTPUT 
      ERA,CLE,ELA 
      STA EQT11,I 
      LDB BEQTA,I   LOAD ADDRESS OF 1ST WORD IN CURRENT BEQT
      INB           INCREMENT TO ADDR OF 2ND WORD 
      LDA STSWD,I 
      AND BIT14 
      SZA,RSS       SRQ CLAIMED?
      JMP C.SR3      NO, TRY AGAIN
* 
      LDA 1,I        YES
      IOR BIT15     SET SRQ PROGRAM SCHED ACTIVE BIT IN BEQT2 
      STA 1,I       AND STORE 
      ADB B3        INCREMENT TO BEQT WORD 5,SRQ STATUS BYTE
      LDA STSWD,I   LOAD SRQ STATUS BYTE
      ALF,ALF       SHIFT TO LOWER BYTE 
      STA 1,I       SAVE STATUS BYTE IN BEQT WORD 5 
      LDA EQT12,I   LOAD EQT WORD 12 AND SET ALARM
      IOR BIT14     PROGRAM SCHEDULING ACTIVE BIT 14
      STA EQT12,I   AND STORE 
      LDB BEQTA,I 
      INB 
      JMP C.SR3     TRY FOR MORE
* 
C.SR7 LDA B2
      LDB A#SPD     ISSUE SERIAL POLL 
      JSB DOIO       DISABLE CMND 
       OCT 60 
      SSA           TIME-OUT? 
      JMP DOWN       YES, LOSE
      JSB C.SCH 
      SKP 
* 
C.SR8 LDB EQT11,I 
      RBL 
      SSB,RSS       I/O ABORTED?
      JMP CSR10 
      LDB BEQT1,I   YES, ATTEMPT RESTART? 
      RBL 
      SSB 
      JMP RSTRT      YES, DO IT 
      JMP LOSE3      NO, ABORT IT 
* 
CSR10 LDB EQT1,I
      SZB           NO, BUSY NOW? 
      JMP RSTRT      YES, RESUME
      STB EQT11,I    NO, CLEAR DVR CNTRL WORD 
      JMP C37A
* 
      SKP 
* 
*     ALARM PROGRAM SCHEDULING (IF "ASMB,...,N")
* 
C.SCH NOP 
      LDA EQT12,I   LOAD EQT WORD 12,EQT ENTRY COUNT
      XOR BIT14     SET ALARM SCHEDULING ACTIVE BIT 
      STA EQT12,I   AND STORE 
      JSB SBEQT     GET #BEQT ENTRIES(A),ADDRESS OF 1ST BEQT(B) 
      CMA,INA       SET COUNTER TO -#BEQT ENTRIES 
      STA BQCNT,I   AND STORE 
* 
C.SC1 INB           GO TO ADDR OF 2ND WORD IN CURRENT BEQT
      STB BEQTA,I   AND STORE IN BEQTA
      LDA 1,I       LOAD SECOND WORD OF CURRENT BEQT
      SSA           SCHEDULING ACTIVE BIT 15 SET? 
      JMP C.SC3     YES,TRY TO SCHEDULE PROGRAM IF IT EXISTS
C.SC2 ADB B6         NO,GO TO 1ST WORD IN NEXT BEQT 
      ISZ BQCNT,I    INCREMENT BEQT COUNTER 
      JMP C.SC1 
      JMP C.SCH,I   DONE, SO LEAVE
* 
C.SC3 ELA,CLE,ERA   FOUND, CLEAR SCHEDULING ACTIVE BIT 15 
      STA 1,I       AND STORE BACK INTO 2ND WORD IN BEQT
      STB C.SC4     STORE ADDR FOR SCHEDULING SRQ PROG
      ADB B3        INCR ADDR TO 5TH WORD IN BEQT,SRQ STATUS BYTE 
      STB PARM1     AND STORE 
* 
      INB           INCREMENT TO PASSED VALUE (BEQT6) 
      STB PARM4 
* 
      ADB M5        GO TO ADDR OF 1ST WORD IN CURRENT BEQT
      LDA 1,I       LOAD DEVICE CONFIGURATION WORD
      AND B37       MASK DEVICE ADDRESS 
      STA PARM2     AND STORE 
      LDA EQT1      LOAD DEVICE EQT ADDRESS 
      STA PARM3     AND STORE 
* 
      JSB $LIST     SCHEDULE ALARM PROGRAM
       OCT 701       BY NAME AND PASS IT
       DEF *+6       FOUR PARAMETERS
C.SC4  NOP           ALARM PROGRAM NAME BUFFER ADDRESS
PARM1  NOP           SRQ STATUS BYTE
       DEF PARM2     DEVICE ADDRESS 
       DEF PARM3     EQT ADDRESS
PARM4  NOP           PASSED VALUE 
* 
      SZA           SUCCESSFUL SCHEDULE?
      JMP C.SC5     NO,CHECK ERROR CODE 
      JMP C.SC6     YES,LOAD ADDR OF 2ND WRD IN CURRENT BEQT
* 
C.SC5 CPB B5        IS PROGRAM THERE? 
      JMP LOSE5     NO,GO LOSE! 
      LDA EQT12,I   YES, MAINTAIN ALARM PROGRAM 
      IOR BIT14       SCHEDULING ATTEMPT BY SETTING 
      STA EQT12,I     SCHEDULING ACTIVE BIT IN EQT WORD 12
      LDB BEQTA,I     LOAD ADDR OF 2ND WORD IN CURRENT BEQT 
      LDA 1,I         LOAD 2ND WORD IN BEQT 
      IOR BIT15       RESET SRQ PROG SCHED ACTIVE BIT 
      STA 1,I         AND STORE INTO 2ND WORD IN BEQT 
* 
C.SC6 LDB BEQTA,I     LOAD ADDR OF 2ND WORD IN CURRENT BEQT 
      JMP C.SC2     CONTINUE... 
      XIF 
      SKP 
* 
*     DMA COMPLETION SERVICE
* 
C.DMA BLF,ELB       GET EOR CHARACTERISTICS 
      RAL,RAL 
      ELA           A(15)=EOR FLAG, A(0)=W/BYTE 
      STA T1
      JSB DMA?      GET DMA CHAN
      STA T2           &
      JSB CFGIO     CNFG I/O INSTRUCTIONS 
       DEF DMAT2
      LDA DIO12 
      XOR B4        FORM LIB 2/3
      STA DIO12 
      STA DIO13 
DIO13 LIB 2 
      STB T3
      LDA T2
      LDB EQT11,I 
      CPA I.37      DMA COMPLETION? 
      JMP C.DMD      YES. 
      LDA T1
      SSA           EOR INDICATED?
      JMP C.DM1      YES. 
      LDA EQT4,I
      ALF 
      SSA,RSS       TIME OUT? 
      JMP L.RTN      NO, DISMISS
* 
C.DM1 SLB,RSS       DMA HUNG!  INPUT? 
      JMP DIO10      NO, SKIP WIERD CRAP
IO6   STC BUS       DISABLE DMA'S CLF 
      LDA B6         TO NOT CLEAR EOR FF
      JSB CNTLR     FORCE DMA CYCLE TO GET LAST BYTE
IO7   CLC BUS       ENABLE LATER CLF INSTRUCTIONS 
DIO10 CLC 6            &
DIO11 STF 6          STOP DMA 
      SLB,RSS       INPUT?
      JMP LOSE1      NO, DEVICE DOWN
* 
C.DM2 LDB T1
      SSB           EOR SEEN? 
      SLB           EXPECTED AFTER LAST BYTE? 
C.DM3 CLA,RSS 
      CCA            YES, ADJUST CNT
DIO12 LIB 2         TAKE DMA REMAINS
      CPB T3        SAME AS PREVIOUS CNT??
      RSS            YES, MUST HAVE BEEN EVEN CNT 
      ADA M1         NO, ADJUST FOR ODD CNT 
      BLS 
      ADB 0 
      ADB IOCNT,I 
      ADB IOLNG,I   =XMITTED CHAR CNT 
      LDA 1 
      ARS 
      ADA IOADR,I 
      STA IOADR,I   =BUFR END ADDR
      LDA EQT11,I 
      SLA           CHECK I/O DIRECTION 
      JMP C.DM4 
* 
      XOR B2        OUTPUT, CLEAR DMA 
      STA EQT11,I    ACTIVE STATUS
      AND BIT8      MAINTAIN ASCII LOGIC
      IOR REACT     ARM SRQ,ORA,PACKING 
      JSB CNTLR            &
      JMP C.OR8      DUMP REMAINDER 
* 
C.DM4 STB IOCNT,I   INPUT, POST APPROX.CNT
      AND B10        CRLF POST PROC?
      SZA,RSS 
      JMP C.IR3     NO, ALLOW ODD CHAR.FILL 
      LDB IOCNT,I    YES, END ON CRLF 
      ADB M2
      CLE,SSB,RSS 
      SZB,RSS 
      CLB,CCE 
      CCA,SEZ 
      CLA 
      ADA IOADR,I 
      STA IOADR,I 
C.DM5 LDA IOADR,I    GET CUR.WORD 
      LDA 0,I 
      SLB,RSS        EVEN CNT?
      ALF,ALF         YES, POSITION 
      AND B377       EXTRACT CHAR 
      CPA B15        CR?
      JMP C.DM6       OR
      CPA B12        LF?
      JMP C.DM6       OR
      CPB IOCNT,I    EOB? 
      JMP C.IR3       YES, DONE 
      SLB,INB        ODD CNT? 
      ISZ IOADR,I     YES, ADVANCE
      JMP C.DM5        & CONTINUE 
* 
C.DM6 STB IOCNT,I   POST VALID CHAR CNT 
      JMP C.IR3 
* 
C.DMD SLB           DMA COMPLETION FOR: 
      JMP C.DM2      INPUT. 
      JMP C.DM3      OUTPUT.
      SKP 
* 
*     OUTPUT CONTINUATOR SERVICE
* 
C.ORA LDA EQT11,I   GET EOR CHARACTERISTICS 
      ALF,CLE       A(0)=EOR REQ., A(15)=W/BYTE. ALSO CLR E.
      LDB IOCNT,I 
      SZB,RSS            BUFR FLUSHED?
      JMP C.OR5            YES. (E)=0 
      CPB B1             WEIRD CRAP? LAST BYTE? 
      JMP C.OR3            YES, (E)=0 
      INB,SZB,RSS        ODD BYTE?
      JMP C.OR3            YES. (E)=1 
      INB,SZB,RSS        LAST WORD? 
      JMP C.OR2            YES. (E)=1 
      STB IOCNT,I          NO.  (E)=0 
* 
C.OR1 LDA IOADR,I 
      LDA 0,I       GET DATA WORD 
      SEZ           NEXT OUTPUT UPPER BYTE ONLY?
      ALF,ALF        YES, POSITION
      LDB IOCNT,I    GET COUNT OF CHAR.S LEFT TO BE SENT. 
      CCE,SSB       WEIRD STUFF? ALSO SET E BIT.
      ISZ IOADR,I    NO, ADVANCE BUFR 
IO1   OTA BUS       ISSUE DATA
C.OR8 JSB STATS     GET STATUS
      RAL,RAL       CHECK FOR QUICK RESPONSE
      SSA           ??
      JMP C.ORA      YES, CONTINUE
      JMP L.RTN      NO, AWAIT INTERRUPT
* 
C.OR2 CLB,INB       INDICATE ONE MORE BYTE
      STB IOCNT,I    TO COME AFTER THIS ONE.
      CLB            INDICATE NO EOR AND ALSO 
      JMP C.OR4     DISABLE PACKING. (NO PACKING BIT 11=0)
* 
C.OR3 CLB           LAST BYTE! (E=0 LOWER) (E=1 UPPER)
      STB IOCNT,I   SET COUNT TO ZERO TO FLAG SPECIAL CASE. 
      SLA           EOR REQUIRED? 
      SSA,RSS       W/LAST BYTE?
      JMP C.OR4      NO.
      LDB B50        YES, GIVE EOR (BITS 5-3=5) ALSO NO PACKING.
      XOR B1        CLEAR FUTURE REQ. 
C.OR4 ALF,ALF       SEND COMMAND WORD TO I/O BOARD. 
      ALF           POSITION BIT 15 TO SIGN BIT.
      STA EQT11,I 
      AND BIT8      MAINTAIN ASCII LOGIC
      IOR 1 
      IOR REARM     ARM SQR,ORA INTRPT
      JSB CNTLR     NOTIFY CNTRLER
      JMP C.OR1 
* 
C.OR5 SLA,RSS       ALL BYTES HAVE BEEN SENT. EOR REQUIRED? 
      JMP C.OR6      NO, POSSIBLE CRLF
      IOR BIT15      YES, DO IT NOW 
      LDB .0A 
      STB IOADR,I 
      JMP C.OR3 
* 
C.OR6 ALF,ALF       POSITION BIT 3 TO SIGN POSITION 
      SSA,RSS       CRLF REQUIRED? BIT 3 SET? 
      JMP DOIOX     NO. MAKE EXIT.
* 
      XOR BIT15     YES. CLEAR FUTURE REQUIREMENT.
      ALF,ALF       POSITION BIT 11 TO SIGN POSITION. 
      IOR BIT12     ENABLE ASCII LOGIC (BIT 8 OF EQT11).
      STA 1         SAVE EQT11 IN B REGISTER. 
* 
      LDA CRLFA     GET ADDRESS OF CRLF 
      STA IOADR,I    AND PUT IN POINTER TO I/O BUFFER.
      ISZ IOLNG,I   INCR. COUNT FOR CR BUT NOT FOR LF YET.
      CCE           SET FLAG TO SEND UPPER BYTE.
* 
      LDA EQT6,I    CHECK IF OUTPUT MODE. 
      AND B3        MASK TO GET FUNCTION CODE.
      CPA B2        WRITE? CODE=2?
* 
      JMP C.OR7     YES.
* 
      JMP C.OR9     NO.   SEND LF.
* 
C.OR7 LDA BEQT1,I   CHECK IF LF IS TO BE SUPRESSED. 
      AND BIT7      SUPPRESS IF BIT 7 IS SET. 
      SZA           SUPPRESS? 
* 
      JMP C.ORB     YES.
* 
C.OR9 ISZ IOLNG,I   NO. NOW INCREMENT COUNT FOR LF. 
      LDA 1         RESTORE EQT11 TO A REGISTER.
      JMP C.OR2     GO SEND CRLF AS LAST TWO BYTES. 
* 
C.ORB LDA 1         RESTORE EQT11 TO A REGISTER.
      JMP C.OR3     GO SEND CR AS LAST BYTE.
* 
* 
      SKP 
* 
*     INPUT CONTINUATOR SERVICE 
* 
C.IRL BLF,ELB       GET EOR CHARACTERISTICS 
      ELA           & MERGE CUR EOR STATUS
      STA T1        A(15)=EOR, A(0)=W/BYTE REQ. 
      SSA,RSS       EOR?
      JMP C.IR1      NO, TAKE DATA
      SLA,RSS       EXPECT W/BYTE?
      JMP C.IR3      NO, EOR ONLY 
* 
C.IR1 LDA IOADR,I 
      STA T2
IO2   LIA BUS       TAKE DATA BYTE
      BLF,BLF       BIT 3, CRLF CHECK 
      SLB,RSS 
      JMP C.IR2 
      CPA B15       YES, IGNORE CR'S
      JMP CIR2A 
      CPA B12       LF? 
      JMP C.IR3      YES, END IT NOW
* 
C.IR2 LDB IOCNT,I   RETREIVE CNT
      SLB,RSS       EVEN BYTE?
      ALF,ALF        YES, POSITION
      SLB 
      IOR T2,I       NO, MERGE
      STA T2,I      POST IN BUFR
      SLB,INB       ODD BYTE? 
      ISZ IOADR,I    YES, ADVANCE BUFR
      STB IOCNT,I     & CNT CHAR
      CPB IOLNG,I   ALL DATA TAKEN? 
      JMP C.IR3      YES, DONE
CIR2A LDB T1
      CCE,SSB       EOR?
      JMP C.IR3      YES, END IT ALL
* 
C.IR4 JSB STATS     GET STATUS, CLEAR MAIN FLAG 
      RAL,RAL 
      SLA,RSS       CHECK QUICK RESPONSE? 
      JMP L.RTN      NOT YET, AWAIT INTERRUPT 
      LDB EQT11,I    HAVE IT, CONTINUE... 
      JMP C.IRL 
* 
C.IR3 CCE           CLEAR PENDING IRL 
      JSB STATS     INTERRUPT 
      CLA           ADJUST FOR VALID
      STA IOLNG,I    XMIS. LOG
      LDB IOCNT,I   ODD CNT?
      SLB,RSS        NO, DONE 
      JMP DOIOX 
      LDB EQT11,I 
      RBR,RBR 
      SLB,RSS       DATA TYPE?
      CLB,RSS       BINARY, 0 FILL
      LDB B40       ASCII, BLANK FILL 
      STB T2
      LDB IOADR,I 
      LDA 1,I 
      AND HI8 
      IOR T2
      STA 1,I 
      JMP DOIOX 
* 
      SKP 
* 
*     ERRORS
* 
LOSE1 CLA,INA,RSS   *I/O ERROR
LOSE2 LDA B2        *I/O ABORTED BY IFC 
      JMP LOSE
* 
      IFN           ************IF SRQ SERVICE**********
LOSE3 LDA B3        *     I/O ABORTED BY SRQ           *
      JMP LOSE      *                                  *
LOSE4 LDA B4        * NO ALARM PROGRAM FOUND WITH NAME *
      JMP LOSE      *SPECIFIED WHEN CTL REQ 20 WAS MADE*
LOSE5 LDA B5        *ON SRQ INTERRUPT, DRIVER COULD NOT*
      JSB EQSTS     *SCHEDULE ALARM PROGRAM SPECIFIED  *
      JMP DOWN      *IN DEVICE BEQT                    *
LOSE7 LDA B7        *NO STATUS RETURNED BY DEVICE IN   *
      JSB EQSTS     *RESPONSE TO A SERIAL POLL PRIOR TO*
      JMP DOWN      *TIMEOUT OCCURRING                 *
      XIF           ************************************
* 
LOSE6 LDA EQT13,I   *EQTX FULL
      IOR BIT15 
      STA EQT13,I   INDICATE INITIATOR
* 
      CLA           CLEAR BEQT1 ADDRESS SO BEQT7
      STA BEQT1     WILL NOT BE POSTED
* 
      LDA B6
LOSE  STA STSWD,I   POST ERR STATUS 
      LDA BIT15 
      STA XLOG,I    GIVE ERR
      JMP L.XIT      & QUIT 
* 
DOWN  CCA           *CRITICAL ERROR!
      STA CHAN
      LDB EQT13,I    & DOWN BUS NOW 
      SSB,RSS            VIA
      CLA,INA,RSS     CONTINUATOR 
      LDA B3          INITIATOR 
      JMP LXIT2 
* 
*     LOGICAL I/O CONTINUATOR EXITS 
* 
C.OFF LDA IDLE
      JSB CNTLR     ARM SQR, SET DATA MODE
IO8   CLC BUS,C      & OFF 59310B 
      CLA,CLE,RSS   INDICATE CLOCK OFF
L.RTN CLA,CCE       INDICATE CLOCK ON 
      STA T1
      CLO           INDICATE CONTINUATION 
      ISZ C.37
      JMP LXIT3 
      SKP 
* 
*     LOGICAL I/O COMPLETION EXITS
* 
L.XIT LDA STSWD,I   POST EQT STATUS IN EQT5 & BEQT7 
      JSB EQSTS            &
      LDA XLOG,I     GIVE XMIS.LOG
      RAL,CLE,ERA    PUT ERROR FLAG IN E REGISTER.
      LDB EQT8,I
      SSB           WORDS REQUESTED?
      JMP LXIT1      NO, GIVE +CHARS
      INA            YES, GIVE +WORDS 
      ARS 
LXIT1 SEZ           PUT THE ERROR BIT BACK IN 
      IOR BIT15      IF IT WAS SET. 
      STA XLOG,I
      SSA,RSS       ANY ERRORS? 
      JMP LXT1A      NO 
      LDA EQT6,I     YES,LOAD EQT WORD 6
      RAL,RAL        ROTATE REQ TYPE TO LOWER BIT 
      AND B3         AND MASK 
      SZA            REQ TYPE=0?
      JMP DOWN        NO,BUFRD REQ,AL ERRORS FATAL! 
      LDA BEQT1,I    YES,UNBUFRD REQ,LOAD CNFG WORD 
      ALF,ALF        ROTATE E-BIT TO LSB
      SLA,RSS        E-BIT=0? 
      JMP DOWN        YES,ALL ERRORS FATAL! 
* 
LXT1A LDB EQT13,I 
      SSB           INITIATOR?
      LDA B4         YES, IMMED.COMPLETE. (DON'T ABORT PROG)
      SSB,RSS 
      LDA BIT15      NO, FREE DMA CHAN. 
LXIT2 STA T1        =RETURN CODE
      LDA IDLE
      JSB CNTLR     ALLOW SQR, SET DATA MODE
IO9   CLC BUS,C      & KILL 59310B NOW
      CLA,CLE       INDICATE CLOCK OFF
      STA EQT11,I   CLEAR DVR CNTRL WORD
      STO           INDICATE COMPLETION 
LXIT3 LDA EQT13,I 
      SSA           DETERMINE EXIT ROUTE
      LDB I.37       INITIATOR. 
      SSA,RSS 
      LDB C.37       CONTINUATOR
      STB T2        =RETURN ADDR
      LDA EQT13,I 
      ELA,CLE,ERA   CLEAR I/C INDICATOR 
      STA EQT13,I 
      LDA EQT4,I
      IOR BIT11 
      XOR BIT11     CLEAR TIME OUT FLAG 
      STA EQT4,I
      SEZ,RSS       CLOCK OFF?
      CLA,RSS        YES, CLEAR IT
      LDA EQT14,I    NO, RECOVER TIME VALUE 
* 
      SKP 
* 
      IFN           **IF SRQ SERVICE***** 
      SOC           I/O COMPLETION?     * 
      JMP LXIT4      YES.               * 
      LDB EQT1,I                        * 
      SZB           I/O BUSY?           * 
      JMP LXIT5      YES.               * 
      LDB EQT11,I                       * 
      SSB           SRQ SERVICE BUSY?   * 
      JMP LXIT5      YES.               * 
LXIT4 LDB EQT12,I                       * 
      RBL,SLB       SRQ PENDING?        * 
      CCA            YES, HANDLE ON NXT INTRPT
      SSB           PROG SCHEDULING DELAYED?
      LDA TIME       YES, ACTIVATE TIME OUT 
      XIF           ********************* 
* 
LXIT5 STA EQT15,I 
      IFN           *******IF SRQ SERVICE********** 
      LDA DTOUT     *LOAD ADDRESS OF DUMMY TIMEOUT* 
      SOC           *IF COMPLETION EXIT           * 
      STA EQT15     *AVOID RTIOC CLOCK CLEAR      * 
      XIF           ******************************* 
* 
      LDB BEQT1     POST BEQT7
* 
      SZB,RSS        TEST IF BEQT IS SETUP (IE. NO ERR 6) 
      JMP LXIT6      ERR 6. NO ROOM IN EQTX.
* 
      ADB B6
      LDA XLOG,I    FIRST STORE TRANSMISSION LOG. 
      STA 1,I 
* 
      SSA,RSS       IF ERROR (BIT15 SET), THEN CHANGE THE 
      JMP LXIT6     STORED VALUE TO THE STATUS VALUE FROM 
      LDA EQT5,I    EQT5. 
      AND B377
      IOR BIT15 
      STA 1,I 
* 
LXIT6 LDA T1        BEGIN FINAL EXIT FROM DRIVER. 
      LDB XLOG,I
      ISZ CHAN      CRITICAL ERR? 
IO4   STC BUS        NO, ENABLE INTERRUPT 
      JMP T2,I      & LEAVE GRACEFULLY
      SKP 
*     DO I/O OPERATION
* 
*     (A)=+CHAR CNT, (B)=BUFR ADDR
*     JSB DOIO
*     DEF <BITS 6-3 OF HP-IB CNTRL WORD>
*     (A)=+CHAR CNT XMITTED 
* 
DOIO  NOP 
      STA IOLNG,I   POST CHAR LNG 
      STB IOADR,I   POST BUFR ADDR
      LDB EQT11,I 
      SLB           CHECK I/O DIRECTION?
      CLA,RSS        INPUT, INIT UP CNT 
      CMA,INA        OUTPUT, INIT DOWN CNT
      STA IOCNT,I 
* 
DOIO0 LDA EQT11,I   CONSTRUCT HP-IB CNTRL WORD: 
      AND BIT8       ALLOW ASCII MODE LOGIC 
      IOR DOIO,I    MERGE CMND/DATA MODE
      LDB EQT11,I 
      SLB,RBR       I/O DIRECTION?
      JMP DOIO1 
* 
      IOR BIT11     OUTPUT, PACKING ON
      SLB,RSS       DMA?
      IOR BIT13      NO, ARM ORA INTRPT 
      JMP DOIO2 
* 
DOIO1 SLB,RSS       INPUT, DMA? 
      IOR B50K       NO, ARM IRL,EOR INTRPT 
      SLB 
      IOR B16K       YES, ARM EOR,PACKING,DMA 
      STA T1        SAVE CONTROL WORD 
      LDA ENABL     LOAD CONTROL WORD TO SET NRFD FALSE 
      JSB CNTLR     GO ISSUE IT 
      LDA T1        LOAD HP-IB CONTROL WORD 
* 
DOIO2 IOR ENABL     ENABLE FUNNY FUNCTIONS
      JSB CNTLR     ISSUE CONTROL WORD FOR ATN FALSE,ETC... 
      LDA DOIO
      INA           POST RESUME ADDR
      STA ZOOM,I
      RBL,SLB       INPUT REQUEST?
IIO1  LIA BUS,C      YES, SET RFD FLOP
      RBR,SLB,RBL   DMA REQUEST?
      JMP DOIO3 
      CCE,SLB        NO, DIRECTION? 
      JMP C.IR4     INPUT, AWAIT INTERRUPT
      JMP C.ORA     OUTPUT, START CONTINUATOR 
* 
DOIO3 LDA IOLNG,I   INIT DMA I/O OP 
      INA 
      ARS               DETERMINE I/O LNG 
      CMA,INA,SZA,RSS     0 LNG?
      JMP DOIO5            YES, CRLF ONLY!
      STA T1
      SLB,BLF       OUTPUT? 
      JMP DOIO6      NO, IGNORE WHAT FOLLOWS! 
      LDA IOLNG,I 
      ERA           ALLOW FOR EOR ACTIVITY
      CCA,SEZ       ODD BYTE? 
      JMP DOIO4      YES, ALLOW FOR IT
      CLA 
      SLB,RSS       EOR REQUIRED? 
      JMP DOIO4      NO, NO ADJUSTMENT
      SSB           EOR W/BYTE? 
      LDA M2         YES, ALLOW FOR IT
DOIO4 STA IOCNT,I   POST ADJUSTMENT, IF ANY 
      SZA 
      ISZ T1        REDUCE DMA I/O LNG
      JMP DOIO6 
DOIO5 LDA EQT11,I   NOTHING LEFT, CLEAR 
      XOR B2         DMA ACTIVE STATUS
      STA EQT11,I 
      JMP DOIO0        & TRY AGAIN
* 
DOIO6 JSB DMA?      GET DMA CHAN
      JSB CFGIO     CONFIGURE DMA I/O 
       DEF DMAT1     INSTRUCTIONS 
      LDA DIO1
      AND B3
      JSB CFGIO     ALL OF THEM!
       DEF DMCT1
      LDA CHAN      GET HP-IB CHANNEL 
DIO1  OTA 6         & TELL DMA
CIO1  CLC 2 
      LDB EQT11,I 
      SLB           INPUT REQ?? 
IIO2  STC BUS        YES, $%&'&%$#$#&%$ 
      ERB           ESTABLISH I/O 
      LDA IOADR,I    DIRECTION
      RAL,ERA            &
CIO2  OTA 2          BUFR ADDR
CIO3  STC 2 
      LDB T1             &
CIO4  OTB 2          -WORD CNT
      CLF 0         INTERRUPTS OFF
DIO2  STC 6,C       START DMA 
      CLA 
      CPA DUMMY     PRIVILEDGED INTRPTS?
      JMP L.RTN      NO, AWAIT RESPONSE 
DIO3  CLC 6          YES, KILL DMA INTPRPT
      LDB INTBA 
      LDA DIO1                & 
      SLA 
      INB 
      LDA 1,I 
      IOR BIT15      ALLOW RTE TO HANDLE
      STA 1,I 
      STF 0         INTERRUPTS ON 
      JMP L.RTN     AWAIT DMA RESPONSE
* 
DOIOX LDA IOLNG,I   I/O OP COMPLETION HERE... 
      ADA IOCNT,I   (A)=XMIS LOG
CONT. LDB ZOOM,I       &
      JMP 1,I        RESUME 
      SKP 
*     FIND DMA CHANNEL ASSIGNMENT 
* 
DMA?  NOP 
      DLD INTBA,I 
      ELA,CLE,ERA   FIND AVAILABLE
      CPA EQT1       DMA CHANNEL
      JMP DMA1
      ELB,CLE,ERB 
      CPB EQT1
      JMP DMA2
      CLA           NONE! 
      JMP DMA?,I
DMA1  CLA,RSS 
DMA2  CLA,INA 
      ADA B6        (A)=DMA CHAN
      JMP DMA?,I
* 
*     ISSUE HP-IB CONTROLLER CMND 
* 
CNTLR NOP 
      IFN            ** IF SRQ SERVICE ** 
      STA DMA?                          * 
      LDA EQT11,I    IF DMA RUNNING 
      SSA,RSS         OR BUSY WITH SRQ
      RAR,SLA         THEN KILL SRQ     *  TEST DMA BIT HERE. 
      CLA,RSS         INTERRUPT 
      LDA EQT12,I    GET SRQ INTERRUPT  * 
      RAL,RAL         ARMING FLAG &     * 
      AND BIT15      ISSUE WITH CONTROL * 
      IOR DMA?        WORD              * 
      XIF            ******************** 
CNTL1 STF BUS 
CNTL2 OTA BUS 
      JMP CNTLR,I 
* 
*     TAKE HP-IB CONTROLLER STATUS
*     (E)=1 TO ALSO CLEAR MAIN FLAG 
* 
STATS NOP 
STAT1 STF BUS       ENABLE CARD CONTROL MODE
      SEZ           (E)=1 TO CLEAR MAIN FLAG ONLY 
STAT2 CLC BUS,C      WITH NO CHANGE TO EOR FF, ETC
STAT3 LIA BUS       DISABLE CONTROL MODE
      JMP STATS,I 
* 
*     REGAIN HP-IB CONTROL
* 
MINE  NOP 
      LDA B5
      JSB CNTLR     SET ACTIVE CNTRLR 
IO3   CLC BUS,C     CLEAR IFC STATUS
      JMP MINE,I
* 
      SKP 
* 
*     POST EQT STATUS BYTE
* 
EQSTS NOP 
      AND B377
      STA MINE      (A)=STATUS BYTE 
      LDA EQT5,I
      AND HI8 
      IOR MINE
      STA EQT5,I
      JMP EQSTS,I 
* 
*     CONFIGURE I/O INSTRUCTIONS
* 
*     (A)=I/O CHAN
*     JSB CFGIO 
*     DEF <INSTRUCTION TABLE> 
*     P+2: RETURN 
* 
CFGIO NOP 
      STA MINE      (A)=CHAN
      LDB CFGIO,I   GET TAB ADDR
      LDA 1,I 
      STA EQSTS     GET # ENTRIES 
CFG1  CCE,INB       SET INDIRECT BIT
      RBL,ERB        ON TAB ENT ADDR
      LDA 1,I 
      AND HI10      CNFG INSTRUCTION
      IOR MINE
      STA 1,I 
      ISZ EQSTS 
      JMP CFG1
      ISZ CFGIO 
      JMP CFGIO,I 
* 
*     GET #BEQT ENTRIES, 1ST BEQT ENTRY ADDR
* 
SBEQT NOP 
      LDA EQT12,I 
      ALF,ALF 
      AND B37 
      LDB EQT13,I 
      ELB,CLE,ERB 
      ADB FIXSZ 
      JMP SBEQT,I 
* 
*     INITIALIZE BEQT WORDS.
*         VALUE OF CONFIGURATION WORD IN A REGISTER.
*         ADDRESS OF BEQT1 FOR UNIT IN B REGISTER.
* 
CLRBE NOP 
      STA 1,I       SET CONFIG WORD IN BEQT1. 
      STB T1        SAVE BEQT1 ADDRESS. 
* 
      LDB M7        FETCH NEGATIVE LENGTH OF BEQT.
      CLA           SET REMAINING BEQT WORDS TO 0'S.
* 
CLRBF ISZ T1        INCREMENT ADDRESS.
      INB,SZB,RSS   INCREMENT DOWN COUNT. TEST FOR END. 
      JMP CLRBE,I   END OF BEQT.
* 
      STA T1,I      CLEAR BEQT WORD.
      JMP CLRBF     GO BACK AND CLEAR NEXT WORD.
* 
      SKP 
* 
*     CNFG I/O & SETUP BEQT 
* 
*     (A)=I/O CHANNEL 
*     (B)=0/1: DISABLE/ENABLE CLC,C 
*     JSB SETUP 
*     P+1: HP-IB CONTROL LOST 
*     P+2: NORMAL RETURN
* 
SETUP NOP 
      STB T3
      LDA EQT4,I    INSURE WE HAVE
      AND B77        BUS CHANNEL
      STA CHAN
      JSB CFGIO     CNFG I/O INSTRUCTIONS 
       DEF IOTAB
      LDB FIXSZ 
      CMB,INB 
      STB T1
      LDA EQT12,I   INSURE
      AND B377       MINIMUM
      ADA 1          SIZE EQTX
      SSA 
      JMP LOSE6     LOSE!!
* 
      LDA EQT13,I   FETCH FIRST EQTX ADDRESS. 
      LDB XEQTA     FETCH 1ST ADDR. FOR STORING EQTX ADDR.S.
SET1  STA 1,I       POST FIXED
      INA            EQTX ADDRS 
      INB 
      ISZ T1
      JMP SET1
* 
      LDA EQT12,I    LOAD EQT WORD 12 
      AND MASK       MASK # OF DEVICE ENTRIES 
      SZA            # OF DEVICE ENTRIES ZERO?
      JMP SET8       NO, SKIP AUTO ADDR BUFR INITIALIZATION 
      DLD CMDBF      YES,INITIALIZE AUTO ADDR CMND BUFR 
      DST CMDBA,I    FOR THIS HP-IB TO UNT,UNL,0,0
* 
SET8  LDA EQT4,I
      ASR 6         EXTRACT 
      AND B37        SUB-CHANNEL
      STA UNIT
* 
      LDA EQT12,I    LOAD EQT WORD 12.
      AND MASK      MASK TO GET DEVICE COUNT. 
      SZA           HAS BUS BEEN CONFIGURED?
      JMP SET       YES. BEEN THRU BEFORE.
* 
      LDA EQT12,I   NO. GET EQT WORD 12 AGAIN.
      IOR BIT8      SET DEVICE COUNT TO ONE 
      STA EQT12,I   AND STORE 
* 
      LDB EQT4,I    LOAD EQT WORD 4 
      LDA DFCFG     LOAD DEFAULT BUS CNFG WORD
      SSB           DMA BIT 15=0? 
      IOR BIT13      NO,SET DMA BIT IN DEFAULT WORD 
      LDB BCNFG     INITIALIZE BUS BEQT.
      JSB CLRBE 
* 
* 
SET   LDA UNIT      GET SUBCHANNEL (UNIT) NUMBER AGAIN. 
      SZA           SUBCHANNEL 0? 
      JMP SET2      NO. 
* 
      LDB BCNFG     LOAD BUS CNFG WORD ADDRESS
      JMP SET6
* 
SET2  JSB SBEQT     GET #BEQT ENTS & ADDR 
      STA T2        SAVE # OF CNFG SUB CHANNELS 
* 
      CMA,INA       FORM NEG. NO. OF CNGF. SUBCHANNELS. 
      STA T1        SAVE COUNT. 
* 
      CLA 
      STA BEQT1 
* 
* 
SET3  ISZ T1        INCREMENT DOWN COUNT. 
      JMP *+2 
      JMP SET4      EXIT LOOP WHEN COUNT GETS TO ZERO.
* 
      LDA 1,I       FETCH BEQT1 
      SZA,RSS       BEQT ENTRY EMPTY? 
      STB BEQT1      YES, REMEMBER IT 
* 
      AND B37       GET DEVICE ADDR 
      CPA UNIT      OF INTEREST?
      JMP SET6       YES, GOT IT
* 
      ADB B7
      JMP SET3       NO, TRY NEXT BEQT. 
* 
SET4  LDA BEQT1     UNIT NOT FOUND
      SZA           EMPTY ENTRY?
      JMP SET5      YES.
* 
      STB BEQT1      NO, NEED TO MAKE ONE 
      ADB B6         CALCULATE LAST NEEDED ADDRESS. 
      LDA EQT12,I   INSURE ROOM EXISTS
      AND B377      GET EQTX LENGTH.
      ADA EQT13,I   CALCULATE LAST AVAILABLE ADDRESS. 
      ELA,CLE,ERA   CLEAR THE I/C BIT. (IS THIS NECESSARY?) 
      CMA,INA 
      ADA 1         SUBTRACT AVAILABLE FROM NEEDED. 
      SSA,RSS       NEEDED GREATER THAN AVAILABLE?
      JMP LOSE6      YES, FULL! 
* 
      LDA T2        RETRIEVE # OF CNFG SUB CHANNELS 
      CPA B37       31 ENTRIES YET? 
      JMP LOSE6      YES, FULL! 
* 
      LDA EQT12,I 
      ADA BIT8      OK, CNT ENTRY 
      STA EQT12,I 
* 
SET5  LDB BEQT1     LOAD ADDRESS OF IST BEQT WORD 
      LDA UNIT      LOAD DEVICE ADDRESS 
      IOR DFCFG     MERGE DEFAULT DEVICE CONFIG WORD
      JSB CLRBE     INITIALIZE NEW BEQT.
      LDB BEQT1      LOAD ADDRESS OF BEQT WORD 1
* 
SET6  STB BEQT1     SAVE ADDRESS OF 1ST WORD IN BEQT
      INB           INCREMENT TO ADDRESS OF 2ND WORD IN BEQT
      STB BEQT2     STORE ADDRESS OF 2ND WORD IN BEQT 
* 
      LDB T3        RETRIEVE CLC,C FLAG.
      ERB           (E)=1 FOR CLC,C 
      JSB STATS     TAKE STATUS, CLEAR FLAG 
      STA T1
      AND B17 
      CPA B11       IFC DETECTED? 
      JMP SETUP,I    YES, LEAVE P+1 
      LDA T1
      AND B20 
      CPA B20       ACTIVE CONTROLLER?
      ISZ SETUP      YES, EXIT P+2
      JMP SETUP,I 
      SKP 
* 
*     EQT EXTENSION FIXED AREA ASSIGNMENTS
* 
FIXSZ DEF FIXND-*-2    EQTX MIN.SIZE REQ. 
XEQTA DEF *+1       *BEGIN FIXED EQTX AREA
IOLNG BSS 1       1 CUR I/O CHAR LNG
IOADR BSS 1       2 CUR I/O BUFR ADDR 
IOCNT BSS 1       3 CUR I/O CHAR CNT
XLOG  BSS 1       4 PENDING XMISSION LOG
STSWD BSS 1       5 PENDING EQT STATUS BYTE 
BEQTA BSS 1       6 SRQ, PENDING BEQT ADDR
BQCNT BSS 1       7 SRQ, PENDING BEQT CNT 
ZOOM  BSS 1      10 I/O RESUME ADDR 
DTOUT BSS 1      11 DUMMY TIMEOUT 
CMDBA BSS 2      12 AUTO ADDRESSING COMMAND BUFFER
BCNFG BSS 7      15 BUS CONFG WORD. (BEQT FOR UNIT 0) 
FIXND EQU *         *END FIXED EQTX AREA
* 
*     EQT EXTENSION VARIABLE AREA ENTRY 
*     ONE ASSIGNMENT PER UNIQUE SUBCHANNEL
* 
BEQT1 BSS 1         DEVICE CNFG WORD ADDRESS. 
BEQT2 BSS 1         SRQ ALARM PROG ADDRESS. 
* 
*     STORAGE, ETC
* 
BUS   EQU 20B       NOMINAL HP-IB CHANN 
TIME  DEC -100      SCHEDULE RETRY @ 10MSEC 
UNIT  BSS 1 
CHAN  BSS 1 
T1    BSS 1 
T3    BSS 1 
T2A   DEF *+1 
T2    BSS 5 
CFGWA DEF *+1 
      BSS 1 
ZBIT  BSS 1         Z-BIT IN LSB
PARM2 BSS 1         ALARM DEVICE ADDRESS
PARM3 BSS 1         ALARM DEVICE EQT ADDRESS
* 
.0A   DEF .0
A#SPD DEF #SPD. 
A#DCL DEF #DCL. 
CRLFA DEF CRLF
* 
.0    OCT 0 
B1    OCT 1 
B2    OCT 2 
B3    OCT 3 
B4    OCT 4 
B5    OCT 5 
B6    OCT 6 
B7    OCT 7 
B10   OCT 10
B11   OCT 11
B12   OCT 12
B14   OCT 14
B15   OCT 15
B16   OCT 16
B17   OCT 17
B20   OCT 20
B21   OCT 21
B25   OCT 25
B27   OCT 27
B30   OCT 30
B37   OCT 37
B40   OCT 40
B50   OCT 50
B70   OCT 70
B77   OCT 77
B100  OCT 100 
B137  OCT 137 
B177  OCT 177 
B377  OCT 377 
B2103 OCT 2103
B6K   OCT 6000
B14K  OCT 14000 
B16K  OCT 16000 
DFCFG OCT 17000 
B50K  OCT 50000 
MASK  OCT 17400 
ENABL OCT 207 
IDLE  OCT 247 
REACT OCT 24200 
REARM OCT 20200 
* 
BIT7  OCT 200 
BIT8  OCT 400 
BIT11 OCT 4000
BIT12 OCT 10000 
BIT13 OCT 20000 
BIT14 OCT 40000 
BIT15 OCT 100000
HI8   OCT 177400
HI10  OCT 177700
HI11  OCT 177740
CRLF  OCT 6412
FORMA DEF B6K 
M1    DEC -1
M2    DEC -2
M4    DEC -4
M5    DEC -5
M7    DEC -7
* 
* 
      SKP 
CMDBF OCT 57477,40040 UNTALK,UNLISTEN,TLK,LSN 
#LSN  EQU B40       LISTEN ADDR 
#TLK  EQU B100      TALK ADDR 
#SPE. EQU B14K      SERIAL POLL ENABLE
#SPD. OCT 14537     SERIAL POLL DISABLE,UNTALK
#LSDC OCT 20004     LSN ADDR 0, SDC 
#DCL. OCT 12000     UNIVERSAL DEVICE CLEAR
#ULBT OCT 37500     UNL, BUS TALK 
#ULBL OCT 37440     UNL, BUS LISTEN 
#DLSC OCT 20140     DEVICE LISTEN, SECONDARY
#DTSC OCT 40140     DEVICE TALK, SECONDARY
* 
      SKP 
IOTAB ABS *+1-IOTAE 
      DEF IO1 
      DEF IO2 
      DEF IO3 
      DEF IO4 
      DEF IO5 
      DEF IO6 
      DEF IO7 
      DEF IO8 
      DEF IO9 
      DEF IIO1
      DEF IIO2
      DEF CNTL1 
      DEF CNTL2 
      DEF STAT1 
      DEF STAT2 
      DEF STAT3 
IOTAE EQU * 
* 
DMAT1 ABS *+1-DMT1E 
      DEF DIO1
      DEF DIO2
      DEF DIO3
DMT1E EQU * 
* 
DMCT1 ABS *+1-DMC1E 
      DEF CIO1
      DEF CIO2
      DEF CIO3
      DEF CIO4
DMC1E EQU * 
* 
DMAT2 ABS *+1-DMT2E 
      DEF DIO10 
      DEF DIO11 
      DEF DIO12 
DMT2E EQU * 
* 
* 
SIZE  EQU *         DRIVER SIZE CHECK 
      END 
                  