ASMB,R,Q,C
      NAM B.SET,7 92076-1X015  REV 2040  800722 92076-12001 
* 
      ENT B.SET 
* 
      EXT SRQ.T,.ENTR,PNAME,IMESS,EXEC,$LUTA,IPUT 
      EXT CNFUE,IXGET 
* 
********************************************************************
*  * (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 PROIR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.         *
********************************************************************
* 
*     NAME:   B.SET 
*     RELOC:  PART OF 92076-12001 
*     SOURCE: 92076-18015 
*     PGMR:   T.A.L.
* 
* 
A     EQU 0 
B     EQU 1 
* 
CPAR1 BSS 1 
CPAR2 BSS 1 
CPAR3 BSS 1 
CPAR4 BSS 1 
* 
B.SET NOP 
      JSB .ENTR 
       DEF CPAR1
      LDA CPAR2,I   LOAD TRAP NUMBER
      CMA,SSA,INA   TRAP #'S 1-16 
      SZA,RSS       ARE LEGAL 
      JMP LOSE      ZERO OR NEG. LOSES
      ADA .16 
      SSA 
      JMP LOSE      GT 16 LOSES 
      LDB SRQ.T     GET SRQ.T ADDRESS 
      LDA CPAR2,I   GET TRAP #
      ADA M1        SUBTRACT ONE
      STA TRAP
      RAL           INDEX BY TRAP # 
      ADA TRAP       INTO ARV.L 
      ADB A          TABLE. 
      STB ARVAD     SAVE ARV.L TABLE ADDRESS
      JSB IXGET     GET DVT TABLE ADDRESS 
       DEF *+2
       DEF LUTA 
      STA B         SAVE IT 
      LDA CPAR1,I   LOAD FIRST PARAMETER
      AND B77       MASK LU 
      STA LU        SAVE IT 
      CMA,INA,SZA,RSS CONVERT TO NEG. LU, ZERO? 
      JMP LOSE      YES, LOSE 
      ADA B         ADD TO LAST CONFIGURED LU 
      SSA           VALID LU? 
      JMP LOSE      NO, EXIT WITH ERROR MESSAGE 
      ADB LU        INDEX TO APPROPRIATE
      ADB M1        DVT ADDRESS POINTER 
      STB TBLAD     SAVE IT 
      JSB IXGET     GET DVT ADDRESS 
       DEF *+2
       DEF TBLAD
      SZA,RSS       ADDRESS = 0?
      JMP LOSE       YES, LOSE
      STA DVTA       NO, SAVE DVT ADDRESS 
      ADA .4        INDEX TO DVT WORD 5 
      STA TBLAD     SAVE ADDRESS
      JSB IXGET     GET DVT WORD 5
       DEF *+2
       DEF TBLAD
      ELA,CLE,ERA   CLEAR SIGN BIT
      ADA .5        INDEX TO IFT WORD 6 
      STA TBLAD     SAVE ADDRESS
      JSB IXGET     GET INTERFACE TYPE
       DEF *+2
       DEF TBLAD
      ALF,ALF       SHIFT AND 
      AND B77        MASK INTERFACE TYPE
      SZA,RSS       INTERFACE TYPE = 0? 
      JMP LOSE       YES, TERMINAL
      CPA .5        INTERFACE TYPE = 5? 
      JMP LOSE       YES, TERMINAL
      CPA B37       INTERFACE TYPE = 37B? 
      JMP BUSLU      YES, CHECK FOR BUS LU
      CPA B50       INTERFACE TYPE = 50B
      JMP LOSE       YES, GPIO PARALLEL CARD
      JMP LOSE       NO, ERROR
BUSLU LDB DVTA      GET DVT ADDRESS 
      ADB .22       INDEX TO DVT PARAMETER ($DVTP)
      STB TBLAD     SAVE ADDRESS
      JSB IXGET     GET FIRST DRIVER PARAMETER
       DEF *+2
       DEF TBLAD
      CPA B36       BUS LU? 
      CLA            YES, RETURN A=0
      LDB CPAR4     GET OPTIONAL PARAM ADDR 
      SZB           ZERO? 
      LDB CPAR4,I   NO, GET FUNCTION
      CPB .1        FUNCTION = 1? 
      JMP SRQ        YES, SERIAL POLL 
      LDA CTL40      NO, PARALLEL POLL
      JMP SRQP
* 
SRQ   SZA,RSS       BUS LU? 
      JMP LOSE       YES, LOSE
      LDA CTL20     GET CONTROL REQUEST CODE
SRQP  IOR LU        MERGE LU
      STA CTLWD     AND SAVE CONTROL WORD 
      LDA LU        GET LU
      JSB CNFUE     CHECK LU CONFIGURATION
      SZA,RSS       LU CONFIGURED?
      JMP CTL       NO, CONTINUE
      LDA CTLWD     YES, SET
      IOR NBUE      'NB UE' BITS
      STA CTLWD     IN CONTROL WORD 
* 
CTL   LDA M16       ARV.L TABLE COUNTER 
      STA COUNT     SAVE IT 
      LDB SRQ.T     GET ARV.L TABLE ADDRESS 
NEXT  LDA B,I       GET LU FROM TABLE 
      CPA LU        LU ALREADY THERE? 
      JMP ZERO      YES, ZERO IT
      ADB .3        INDEX TO NEXT LU
      ISZ COUNT     TABLE EXHAUSTED?
      JMP NEXT      NO, GET NEXT LU 
      JMP GO        YES, PUT LU INTO TABLE
ZERO  STB TBLAD     SAVE ADDRESS
      JSB IPUT      ZERO LU IN ARV.L TABLE
       DEF *+3
       DEF TBLAD
       DEF .0 
      ISZ TBLAD     INDEX TO VALUE ADDRESS
      JSB IPUT      ZERO VALUE IN ARV.L TABLE 
       DEF *+3
       DEF TBLAD
       DEF .0 
      ISZ TBLAD     INDEX TO STATUS ADDRESS 
      JSB IPUT      ZERO STATUS IN ARV.L TABLE
       DEF *+3
       DEF TBLAD
       DEF .0 
GO    JSB IPUT      PUT LU INTO ARV.L TABLE 
       DEF *+3       AT CORRESPONDING TRAP ENTRY
       DEF ARVAD
       DEF LU 
      LDA SRV.N     SERVICE PROGRAM NAME "SRV.L"
      STA PARM3 
      LDA SRV.N+1 
      STA PARM4 
      LDA SRV.N+2 
      STA PARM5 
      LDA CPAR3,I   GET OPTIONAL VALUE
      STA PARM6     SAVE IT 
* 
      JSB EXEC      SCHEDULE "SRV.L" PROGRAM
       DEF *+7
       DEF .A3      ADD "NO-ABORT BIT" TO REQ. CODE 
       DEF CTLWD
       DEF PARM3
       DEF PARM4
       DEF PARM5
       DEF PARM6
       NOP
      JMP B.SET,I   RETURN
* 
.0    DEC 0 
.1    DEC 1 
.3    DEC 3 
.4    DEC 4 
.5    DEC 5 
.16   DEC 16
.22   DEC 22
M16   DEC -16 
M1    DEC -1
B36   OCT 36
B37   OCT 37
B50   OCT 50
B77   OCT 77
CTL20 OCT 2000
CTL40 OCT 4000
NBUE  OCT 60000 
.A3   OCT 100003
SRV.N ASC 3,SRV.L 
LUTA  DEF $LUTA 
* 
TBLAD NOP 
ARVAD NOP 
COUNT NOP 
TRAP  NOP 
LU    NOP 
DVTA  NOP 
CTLWD NOP 
PARM3 BSS 1 
PARM4 BSS 1 
PARM5 BSS 1 
PARM6 BSS 1 
* 
LOSE  JSB PNAME 
       DEF *+2
       DEF MSGA+6   GET PROGRAM NAME
      JSB IMESS 
       DEF *+4
       DEF .2       WRITE 
       DEF MSGA     "ILL RQ-HPIB" 
       DEF .13      MESSAGE 
* 
      JMP B.SET,I   RETURN
* 
.2    DEC 2 
.13   DEC 13
      SUP 
MSGA  ASC 13,ILL RQ-HPIB XXXXXXABORTED
* 
      END 
                                                                                                                                                                                                  