ASMB,C,Q
      NAM IBLU5,7 92425-16050 REV.2001 791204 
* 
*---------------------------------------------------------------
* 
*     RELOC.     92425-16050
*     SOURCE     92425-18050
* 
* 
*     HP 92425C TEST SYSTEM SOFTWARE IS THE PROPRIETARY 
*     MATERIAL OF THE HEWLETT-PACKARD COMPANY.  USE AND 
*     DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. 
* 
*     (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 
*     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. 
* 
*---------------------------------------------------------------
* 
* 
* 
* DESCRIPTION:
* 
* THIS IS A FORTRAN CALLABLE INTEGER FUNCTION USED TO RETURN THE LU NUMBER
* ASSIGNED TO EQT SUBCHANNEL 0 FOR ANY OTHER LU NUMBER ON THE SAME EQT. 
* 
* IT'S USE COULD BE TO FIND THE LU NUMBER OF AN HPIB CONTROL CARD 
* SO A REMOTE ENABLE CONTROL CALL COULD BE ISSUED TO THAT CARD. 
* 
* 
* PARAMETERS: 
* 
* THERE IS ONE INTEGER PARAMETER PASSED TO THE FUNCTION.
*    THIS PARAMETER IS THE AUTO-ADDRESS LU NUMBER OF AN HPIB DEVICE.
* THERE IS ONE INTEGER PARAMETER RETURNED BY THE FUNCTION.
*    THIS PARAMETER IS THE LU NUMBER FOR SUBCHANNEL 0 OF THE
*    EQT OF THE AUTO-ADDRESSED LU NUMBER. 
* BOTH PARAMETERS ARE SESSION LU'S IF IN SESSION OR SYSTEM LU'S 
*    IF NOT IN SESSION AS DETERMINED BY SYSTEM UTILITY SESSN (ID).
* 
* 
* ERRORS: 
* 
* THIS FUNCTION HAS ONE ERROR RETURN.  IF NO LU IS FOUND CORRESPONDING TO 
* SUBCHANNEL-0 OF THE EQT, OR THE PARAMETER LU IS OUTSIDE THE DRT RANGE,
* OR THE PROGRAM IS IN SESSION AND A SESSION LU CANNOT BE FOUND,
* ZERO IS RETURNED. 
* 
* 
* 
* CALLING SEQUENCE: 
* 
*     FORTRAN CALLING SEQUENCE: 
*         . 
*         . 
*         . 
*C     SET THE LU NUMBER OF AN HPIB AUTO-ADDRESS DEVICE 
*      LU1=33 
*C     GET THE NON-AUTO-ADDRESS LU NUMBER 
*C
*      LU0=IBLU0(LU1) 
*C
*C     CHECK FOR ERROR
*      IF(LU0.EQ.0) GOTO 900
*C     DO AN HPIB REMOTE ENABLE 
*      CALL EXEC(100003B,1600B+LU0) 
*C     ERROR RETURN 
*      GOTO 900 
*C     NORMAL RETURN
*        .
*        .
*        .
* 
* 
      HED IBLU0 
*     ASSEMBLER CALLING SEQUENCE: 
*         . 
*         . 
*      EXT IBLU0,EXEC 
*         . 
*      LDA =D33      GET THE AUTO-ADDRESS LU NUMBER 
*      STA LUNUM     SAVE IT. 
*      JSB IBLU0     JUMP SUB TO FUNCTION.
*      DEF *+2
*      DEF LUNUM     AUTO-ADDRESS LU NUMBER.
*      SZA,RSS       ERROR? 
*      JMP ERPNT     YES, PROCESS ERROR 
*      ADA =B1600    NO, ADD THE REMOTE ENABLE COMMAND. 
*      STA LUN00     SAVE THE SUBCHAN-0 LU NUMBER.
*      JSB EXEC 
*      DEF *+3
*      DEF CNWRD
*      DEF LUN00
*      JMP ERPNT     ERROR RETURN.
**                   NORMAL RETURN. 
*         . 
*         . 
*LUN00 NOP           TEMP STORAGE FOR HPIB LU NUMBER
*CNWRD OCT 100003    EXEC CONTROL COMMAND 
*LUNUM NOP           TEMP STORAGE FOR AUTO-ADDRESS DEVICE LU NUM
* 
      SKP 
      ENT IBLU0 
      EXT .ENTR,LUTRU,SESSN 
      SPC 1 
LU    NOP 
IBLU0 NOP 
      JSB .ENTR 
      DEF LU
* 
      JSB SESSN     CHECK IF IN SESSION.
      DEF *+2 
      DEF XEQT      INDICATE ID SEGMENT OF CURRENT PROGRAM. 
      STB SSTA      SAVE THE SWITCH TABLE ADDRESS.
      ERA 
      STA SESSF     SAVE THE IN SESSION FLAG. 
* 
      JSB LUTRU   GET SYSTEM LU 
      DEF *+2     THIS LU WILL BE USED TO SEARCH THE DRT. 
      DEF LU,I
      STA B 
      ADB M1        ADJUST LU FOR INDEXING INTO DRT.
      SSB           INDEX VALUE NEGATIVE? 
      JMP ERR         YES 
* 
      LDA 1653B     GET THE DRT TABLE LENGTH
      CMA,INA        NEGATE 
      STA LUMAX       AND SAVE IT.
      ADA B         SUBTRACT DRT LENGTH FROM INDEX. 
      SSA,RSS       INDEX TOO BIG?
      JMP ERR         YES 
* 
      LDA 1652B     GET THE DRT POINTER 
      STA DRT        AND SAVE IT. 
* 
      ADB A          GET THE EQT NUMBER OF LU 
      LDA B,I 
      AND =B77      MASK FOR EQT
      SZA,RSS       EQT ASSIGNED? (EQT.NE.0?) 
      JMP ERR         NOPE. 
* 
      STA EQT       THEN SAVE IT. 
* 
      CLB           SET STARTING INDEX FOR EQT SUB 0
      STB DRTIN      SEARCH TO ZERO.
* 
AGAIN LDA DRT,I     GET THE NEXT DRT ENTRY. 
      AND =B174077  MASK FOR EQT. 
      CPA EQT       EQT'S MATCH?
      JMP BINGO       YES.
SDRTC ISZ DRT       BUMP LU POINTER,
      ISZ DRTIN      DRT INDEX
      ISZ LUMAX       AND END OF LIST COUNT. SKIP ON END. 
      JMP AGAIN     ELSE...TRY, TRY AGAIN.
      JMP ERR       ERROR. NO SUBCHANNEL 0. 
* 
BINGO LDA DRTIN     MOVE DRT INDEX TO A REG.
* 
      LDB SESSF     GET SESSION FLAG. 
      SSB,RSS       IN SESSION? (SAVED E BIT = 0) 
      JMP SWSST     YES. GO SEARCH SWITCH TABLE.
* 
      INA           NO. CONVERT DRT INDEX TO LU.
      JMP IBLU0,I   RETURN TO CALLING PROGRAM 
* 
SWSST LDB SSTA      GET SWITCH TABLE ADDRESS. 
      STB SSTAP     INITIALIZE SWITCH TABLE POINTER 
      XLB SSTA,I    GET SWITCH TABLE LENGTH.
* 
      ALF,ALF       POSITION SYSTEM LU TO UPPER 8 BITS
      STA LUSYS      AND SAVE. (ACTUALLY LU - 1)
* 
SLOOP ISZ SSTAP     GO TO NEXT ENTRY IN SWITCH TABLE
      XLA SSTAP,I 
      AND B1774     MASK TO GET UPPER BYTE. 
* 
      CPA LUSYS     FOUND SYS LU? 
      JMP LUFND     YES. LU HAS BEEN FOUND
* 
SSCNT INB,SZB,RSS   END OF SWITCH TABLE?
      JMP SDRTC     YES. CONTINUE SEARCHING DRT.
* 
      JMP SLOOP     NO. CHECK NEXT ENTRY IN SST.
* 
LUFND XLA SSTAP,I   CHECK LEGALITY OF FOUND LU. 
      AND B377      SESSION LU IS LOWER BYTE. 
* 
      INA           INCREMENT TO GET TRUE LU. 
      STA LUSES 
* 
      JSB LUTRU 
      DEF *+2 
      DEF LUSES 
* 
      ADA M1       SUBTRACT 1 FROM SYSTEM LU. 
      CPA DRTIN    DOES SYS LU FROM DRT MATCH LUTRU?
      RSS          YES. 
      JMP SDRTC    NO. CONITINUE SEARCH IN DRT. 
* 
      LDA LUSES    GET SESSION LU.
      JMP IBLU0,I  RETURN TO CALLING PROGRAM. 
ERR   CLA           OOPS...ERROR RETURN.
      JMP IBLU0,I    FOUND LU NUMBER. 
      SPC 2 
LUMAX NOP 
LUSYS NOP 
LUSES NOP 
DRT   NOP 
DRTIN NOP 
EQT   NOP 
SSTA  NOP 
SSTAP NOP 
SESSF NOP 
B377  OCT 377 
B1774 OCT 177400
M1    DEC -1
A     EQU 0 
B     EQU 1 
XEQT  EQU 1717B 
      END 
                                                                                                                                                                                                                            