ASMB,R,L,C
      HED COMPILER LIBRARY UTILITY ROUTINE  ADS.C 
      NAM ADS.C,7 92060-16102  770809 REV. 1901 $CLIB 
* 
*     NAME:   ADS.C 
*     SOURCE: 92060-18071 
*     PGMR:   G.A.A. - EARL STUTES
* 
*************************************************************** 
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977.  ALL RIGHTS     * 
* RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE-  * 
* REPRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * 
* OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.   * 
*************************************************************** 
      SPC 2 
      EXT P.PAS 
      ENT C.LNK     ADDRESS OF FCB LINK WORD
      ENT C.FID     ADDRESS OF FCB ID WORD
      ENT C.FLU     ADDRESS OF FCB LU WORD
      ENT C.STR     ADDRESS OF BASE TRACK WORD
      ENT C.SSC     ADDRESS OF BASE SECTOR WORD 
      ENT C.RSC     ADDRESS OF CURRENT RELATIVE SECTOR
      ENT C.EXT     ADDRESS OF CURRENT EXTENT 
      ENT C.S/T     ADDRESS OF NUMBER OF SECTORS/TRACK WORD 
      ENT C.#SC     ADDRESS OF FILE SIZE WORD 
      ENT C.WRD     ADDRESS OF WORD POSITION WORD 
      ENT C.BFF     ADDRESS OF DATA BUFFER
      ENT C.FAD     ADDRESS OF DIRECTORY ADDRESS WORDS
      ENT C.HTR     ADDRESS OF HEAD TRACK OF FILE 
      ENT C.HLU     ADDRESS OF HEAD LU OF FILE
      ENT C.SLU     ADDRESS OF SECONDARY LOGICAL UNIT 
      ENT C.RC#     ADDRESS OF CURRENT RECORD # 
      ENT C.??      ADDRESS OF PROMPT CHARACTERS
      ENT C.GRW     ADDRESS OF REWIND GUARANTEE ROUTINE 
      ENT C.INS     ADDRESS OF INCLUDE ROUTINE
      ENT C.PR1     DEFS TO PARAMETERS  INDIRECTS REMOVED 
      ENT C.PR2 
      ENT C.PR3 
      ENT C.PR4 
      ENT C.PR5 
      ENT C.PR6 
      ENT C.PR7 
      ENT C.FCB     FCB ADDRESS 
      ENT C.NAM     THE NAMR BUFFER POINTER 
      ENT C.TYP     TYPE AS PER "NAMR",=0 NULL,=1 LU,=3 FILE
      ENT C.SC      SECURITY CODE 
      ENT C.CR      CARTRIDGE REFERENCE NUMBER
      ENT C.FTY     FILE TYPE 
      ENT C.FSZ     FILE SIZE 
      ENT C.NA2,C.NA3,C.NA9,C.NA0 
*         ABOVE ARE THE REST OF THE NAMR POINTERS 
      ENT C.CNT 
* 
      ENT ADS.C     THIS ROUTINE ENTRY POINT
      ENT LINC.     ENTRY POINT FOR LINK SETUP ONLY 
      ENT INDC.     INDIRECT CLEANER
* 
*     THIS ROUTINE SET UP THE ABOVE VALUES FOR USE BY 
*     OTHER ROUTINES IN THE COMPILER LIBRARY
* 
*     CALLING SEQUENCE
* 
* ENT  NOP      ENTRY POINT OF SUBROUTINE 
*      JSB ADS.C
*     DEC -N        -# OF PRAMS (0-7) 
*    - RETURN - REGS AS AT CALL 
* 
*     WHERE ENT WAS CALLED BY 
* 
*     JSB ENT 
*     DEF FCB 
*     DEF P1
*      .
*      .
*      .
*     DEF PN        (MAX OF 7  MIN OF ZERO) 
* 
*     ON RETURN ENT WILL POINT TO THE ADDRESS FOLLOWING THE 
*     DEF PN
      SKP 
ADS.C NOP           LETS GET TO IT
      STA ASAVE     SAVE REGS 
      STB BSAVE 
      LDB ADS.C     GET THE ADDRESS 
      ADB N2        OF THE ENT
      STB AD
      JSB IND       GET THE FIRST DEF 
* 
      CPB C.LNK     IF ALREADY SET UP 
      JMP EXIT1     JUST EXIT 
* 
      LDA B 
      JSB LINKS     SET UP THE LINKS
* 
      CLB,CCE       SET TO GET REST BY VALUE
      ERB           CLEAR E SET SIGN ON B 
      JSB P.PAS     GET THE REST
      DEC -2
C.GRW NOP           INSURE REWINDABILITY ADDRESS
C.INS NOP           INCLUDE ROUTINE ADDRESS 
* 
EXIT1 LDA PAD       SET THE ADDRESS OF THE PRAMS
      STA PA        FOR LOOP
      LDA ADS.C,I   GET THE PRAMETER COUNT
      ISZ ADS.C     STEP TO THE RETURN ADDRESS
      SZA,RSS       IF NO PRAMS 
      JMP EXIT      GO EXIT 
* 
      IOR N8        LIMIT IS 7
MV    JSB IND       GET THE NEXT DEF
      STB PA,I      SET IT IN THE LIST
      ISZ PA        STEP THE PADRESS
      INA,SZA       DONE? 
      JMP MV        NO
* 
EXIT  LDA ASAVE     RESTORE 
      LDB BSAVE     THE REGISTERS 
      JMP ADS.C,I   AND RETURN
* 
IND   NOP           INDIRECT ROUTINE
      LDB AD,I      GET THE DEF 
      ISZ AD,I      STEP THE USER RETURN ADDRESS
      JSB INDC.     GET THE POINTED TO DEF
* 
      JMP IND,I     AND RETURN
* 
INDC. BSS 1         CLEAR OFF THE INDIRECTS 
INDLP LDB B,I 
      RBL,CLE,SLB,ERB 
      JMP INDLP 
      JMP INDC.,I 
* THIS PROCEDURE SETS UP THE POINTERS TO AN FCB 
*   GIVEN THE ADDRESS OF THE FCB IN THE A REGISTER
* 
*  CALLING SEQUENCE 
*    LDA .FCB      LOAD THE FCB POINTER IN A
*    JSB LINKS
* 
*  ON RETURN A IS SET TO THE ADDRESS OF THE LAST
*  POINTER STORED + 1 
* 
LINKS BSS 1 
LINC. EQU LINKS 
      CLB,CLE 
      JSB P.PAS     GET THE FIRST 18 WORDS
      DEC -28 
C.LNK NOP 
C.FCB EQU C.LNK 
C.FID NOP 
C.FLU NOP 
C.STR NOP 
C.SSC NOP 
C.S/T NOP 
C.#SC NOP 
C.FAD NOP 
C.FA2 NOP 
C.HTR NOP 
C.HLU NOP 
C.??  NOP 
C.SLU NOP 
C.RC# NOP 
C.WRD NOP 
C.RSC NOP 
C.EXT NOP 
C.NAM NOP 
C.NA2 NOP 
C.NA3 NOP 
C.TYP NOP 
C.SC  NOP 
C.CR  NOP 
C.FTY NOP 
C.FSZ NOP 
C.NA9 NOP 
C.NA0 NOP 
C.BFF NOP 
      LDB C.BFF 
      JSB INDC. 
      STB C.BFF 
      JMP LINKS,I 
* 
ASAVE BSS 1 
BSAVE NOP 
N2    DEC -2
N8    DEC -8        MASK
PAD   DEF *+1 
C.PR1 NOP 
C.PR2 NOP 
C.PR3 NOP 
C.PR4 NOP 
C.PR5 NOP 
C.PR6 NOP 
C.PR7 NOP 
PA    NOP 
AD    EQU C.PR7 
A     EQU 0 
B     EQU 1 
      SPC 3 
* FOLLOWING ARE THE ENTRY POINTS FOR THOSE ROUTINES THAT ARE
* NOT IMPLEMENTED OR NOT USED BY A PARTICULAR FCB 
      ENT C.DUM 
      ENT INSC. 
      ENT CNTC. 
C.DUM BSS 1 
INSC. EQU C.DUM 
CNTC. EQU C.DUM 
      ISZ C.DUM 
      JMP C.DUM,I 
C.CNT DEF C.DUM 
      END 
