ASMB,R,L,Z,C HED DRT/EQT ADDRESS ROUTINE * (C) HEWLETT-PACKARD CO. 1976 * IFN NAM DRTEQ,7 91700-16151 REV.A 760117 XIF IFZ NAM DRTEQ,14 91700-16151 REV.A 760117 XIF ENT DRTEQ IFN EXT .ENTR XIF IFZ EXT .ENTP,$LIBR,$LIBX XIF * NAME: DRTEQ * SOURCE: 91700-18151 * RELOC: 91700-16151 * PGMR: C.C.H. [ 01/17/76 ] * ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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. * ****************************************************************** * * DRTEQ ACCEPTS A USER-SUPPLIED LOGICAL UNIT NUMBER, AND RETURNS * TO THE CALLER, BOTH THE CONTENTS OF THE DEVICE REFERENCE TABLE * ENTRY FOR THAT LOGICAL UNIT, AND THE ADDRESS OF THE FIRST WORD * OF THE EQT ENTRY WHICH IS LINKED TO THE SPECIFIED LOGICAL UNIT. * * DRTEQ CALLING SEQUENCE: * * JSB DRTEQ * DEF *+2 [ OR *+2+N WHERE N= NUMBER OF OPTIONAL PARAMETERS <=2 ] * DEF LU ADDRESS OF LOGICAL UNIT NO. IN QUESTION. * [DEF DRTEN] [OPTIONAL ADDRESS FOR RETURN OF DRT ENTRY CONTENTS.] * [DEF EQTAD] [OPTIONAL ADDRESS FOR RETURN OF EQT ENTRY LOCATION.] * =DRT ENTRY CONTENTS; =EQT ADDRESS. * * FORTRAN CALLING SEQUENCE: CALL DRTEQ(LU,IDRT,IEQAD) OR REG=DRTEQ(LU) * * NOTE: IN THE SPECIAL CASE OF LOGICAL UNIT NUMBERS WHICH ARE * LINKED TO EQT #0 ("BIT BUCKET"), THE DRT ENTRY RETURNED * TO 'DRTEN' & WILL REFLECT THE ACTUAL CONTENTS; I.E., * ANY SUBCHANNEL OR LU-LOCK BITS WILL BE PASSED TO THE CALLER. * SINCE THERE IS NO EQT ENTRY ASSOCIATED WITH THE LU, * 'EQTAD' & WILL BOTH BE SET =0. * * DRTEQ ERROR PROCESSING: * * INVALID LOGICAL UNIT NUMBERS WILL BE INDICATED BY SETTING -1 * INTO THE RETURNED PARAMETERS-IF ANY, AND INTO BOTH &, UPON * RETURN TO THE CALLER. * * SUP [SUPPRESS EXTENDED LISTING] * LU NOP LOGICAL UNIT ADDRESS. P1 DEF A OPTIONAL DRT ENTRY RETURN ADDRESS. P2 DEF B OPTIONAL EQT ADDRESS RETURN LOCATION. SPC 1 DRTEQ NOP ENTRY/EXIT. IFN JSB .ENTR OBTAIN DIRECT ADDRESSES XIF IFZ JSB $LIBR DEFINE THIS SUBROUTINE NOP TO BE PRIVILEGED. JSB .ENTP PRIVILEGED: GET DIRECT ADDRESSES. XIF DEF LU DEFINE PARAMETER STORAGE AREA. SPC 1 * RE-INITIALIZE CALLING-PARAMETER ADDRESSES TO POINT TO & , * IN ORDER TO ALLOW USER TO CALL WITHOUT RETURN-DATA PARAMETERS. SPC 1 DLD P1 GET PARAMETER ADDRESSES-IF ANY. DST DRT SAVE FOR DATA RETURN. DLD REGDF GET INITIAL PARAMETER DEFINITION. DST P1 RE-INITIALIZE FOR NO PARAMETERS. SPC 1 * VERIFY THAT CALLER HAS REQUESTED DATA FOR A VALID LOGICAL UNIT NO. SPC 1 LDA LU,I GET THE USER SUPPLIED LU NUMBER. AND B77 ISOLATE THE PERTINENT BITS. ADA M1 SUBTRACT ONE, FOR VALIDITY CHECKING. STA B SAVE FOR DRT INDEXING. CMA,CLE IF THE SPECIFIED LU NUMBER ADA LUMAX IS NOT IN THE RANGE: SEZ,RSS 1<=LU<=LUMAX, THEN JMP ERROR THE LU IS INVALID! SPC 1 * RETRIEVE THE CONTENTS OF THE DEVICE REFERENCE TABLE ENTRY. SPC 1 ADB DRTA FIND THE DEVICE REFERENCE TABLE ENTRY LDA B,I FOR A VALID LOGICAL UNIT NUMBER. STA AREG SAVE THE DRT ENTRY FOR THE CALLER. STA LU SAVE IT FOR RETURN IN . AND B77 ISOLATE THE EQT ORDINAL. CLB PREPARE TO RETURN EQT ADDRESS =0. SZA,RSS IF THE ORDINAL IS ZERO, JMP ZERO RETURN WITH EQT ADDRESS =0. SPC 1 * CALCULATE THE ADDRESS OF THE EQUIPMENT TABLE ENTRY LINKED TO THE LU. SPC 1 ADA M1 ORDINAL-1 =RELATIVE EQT ENTRY ORDINAL. MPY D15 RELATIVE ENTRY*WORDS/ENTRY =OFFSET. LDB A GET EQT-ENTRY OFFSET IN . ADB EQTA FORM ABSOLUTE EQT-ENTRY ADDRESS IN . ZERO STB BREG SAVE THE EQT ADDRESS FOR THE CALLER. JMP EXIT GO TO RETURN THE REQUESTED INFORMATION. * SKP * PROCESS INVALID LOGICAL UNIT NUMBER ERRORS. SPC 1 ERROR CCA INVALID LOGICAL UNIT NUMBER. STA AREG RETURN TO USER WITH BOTH PARAMETERS STA BREG AND & SET TO -1. SPC 1 * PASS DATA BACK TO THE CALLER AND THEN RETURN. SPC 1 EXIT LDA AREG = DRT ENTRY OR -1, IF ERROR. STA DRT,I PASS DRT ENTRY TO CALLER, IF REQUESTED. LDB BREG = EQT ADDRESS OR -1, IF ERROR. STB EQTAD,I PASS EQT ADDRESS TO CALLER, IF REQUESTED. IFN JMP DRTEQ,I RETURN:=DRT OR -1;=EQT ADD. OR -1. XIF IFZ JSB $LIBX RETURN TO CALLER DEF DRTEQ VIA PRIVILEGED PROCESSOR. XIF SPC 1 * CONSTANTS, POINTERS, AND STORAGE. SPC 1 A EQU 0 B EQU 1 B77 OCT 77 EQTA EQU 1650B ADDRESS OF 1RST WORD OF EQUIPMENT TABLE. DRTA EQU 1652B ADDRESS OF DEVICE REFERENCE TABLE. LUMAX EQU 1653B NUMBER OF VALID DRT ENTRIES. M1 DEC -1 D15 DEC 15 AREG NOP TEMPORARY STORAGE: DRT ENTRY OR ERROR. BREG NOP TEMPORARY STORAGE: EQT ADDR. OR ERROR. DRT NOP DRT RETURN-PARAMETER ADDRESS. EQTAD NOP EQT ADDR. RETURN-PARAMETER ADDRESS. REGDF OCT 0,1 REGISTER ADDRESSES FOR INITIALIZATION. SPC 1 END