ASMB,R,L,C
      HED COMPILER LIBRARY SPACE ROUTINE
      NAM SPC.C,7 92064-18239 770515 REV. 1726 $CLIB
* 
* 
*************************************************************** 
* (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.   * 
*************************************************************** 
* 
* 
* 
*   SOURCE PART NUMBER :       92060-18058
* 
* 
*  LINE SPACE ROUTINE 
* 
*  THIS ROUTINE WILL EJECT PAGES AND SPACE LINES ON LISTINGS
* 
* 
* 
* 
* 
* 
*  CALLING SEQUENCE:
* 
*         JSB SPC.C 
*         DEF FCB 
*         DEF FUN 
*         ERROR RETURN
*         NO ERROR RETURN 
* 
*  ON RETURN A < 0  INDICATES ERROR 
*            A = 0  INDICATES NO ERROR
* 
*      WHERE  FUN  <  0     INDICATES PAGE EJECT IF LINE PRINTER
*             FUN  >  0     SPACE 'FUN' LINES.
* 
* 
* 
*  ENTRY POINT: 
* 
      ENT SPC.C 
* 
*  EXTERNALS: 
* 
      EXT EXEC      SYSTEM EXEC 
      EXT WRTC.     WRITE ROUTINE 
      EXT ADS.C     FCB ADDRESS PASSER ROUTINE
      EXT C.FID     FCB ID WORD 
      EXT C.FLU     FCB LOGICAL UNIT WORD 
      EXT C.STR     FCB CURRENT EXTENT TRACK NUMBER WORD
      EXT C.SSC     FCB CURRENT EXTENT SECTOR NUMBER WORD 
      EXT C.EXT     FCB EXTENT NUMBER WORD
      EXT C.S/T     FCB NUMBER OF BLOCKS/TRACK WORD 
      EXT C.#SC     FCB NUMBER OF BLOCKS/EXTENT WORD
      EXT C.WRD     FCB CURRENT WORD POINTER WORD 
      EXT C.FAD     FCB DIRECTORY ADDRESS FROM D.RTR WORDS
      EXT C.HTR     FCB START OF FILE TRACK NUMBER WORD 
      EXT C.SLU     FCB SECONDARY LOGICAL UNIT NUMBER WORD
      EXT C.??      FCB PROMPT CHARACTERS 
      EXT C.GRW     FCB REWIND GUARANTEE ROUTINE ADDRESS
      EXT C.INS     FCB $INCLUDE ROUTINE ADDRESS
      EXT C.CNT     FCB CONTROL ROUTINE ADDRESS 
* 
      EXT C.PR1     PARAMETER ONE ADDRESS 
* 
* 
* 
*  DETERMINE TYPE OF OPERATION
* 
*   THE FCB CONTAINS THE OPERATION TYPE AS FOLLOWS: 
* 
*      TYPE  =  0   IS READ SOURCE FILE(OR LU)
*            =  1   IS WRITE BINARY FILE(OR LU) 
*            =  2   IS WRITE SCRATCH FILE 
*            =  3   IS WRITE LIST  FILE(OR LU)
*            =  R   IS READ SOURCE GUARANTEE REWINDABLILITY 
* 
* 
* 
A     EQU 0 
B     EQU 1 
* 
SPC.C NOP 
      JSB ADS.C     SET UP FILE CONTROL BLOCK ADDRESSES 
M1    DEC -1
      LDB C.PR1,I   GET CONTROL FUNCTION WORD 
      LDA C.FID,I   GET FILE/LU FLAG
      SSA           IS THIS LU? 
      JMP LUDEV     YES!
* 
*  THIS A FILE SO WRITE EITHER A M1 FOR PAGE EJECT OR WRITE 
*  THE NECESSARY LINE FOR LINE SPACING. 
* 
      LDA LBUF      SET UP BUFFER 
      STA C.PR1       FOR WRITE 
      SSB           PAGE EJECT? 
      JMP EJCTF     WRITE A M1 IN COL 1 OF A LINE TO DO PAGE EJECT
      CMB,INB       SET UP LINE 
      STB CTR         COUNTER 
WRT   LDB .1        WRITE A 
      JSB WRTC.       A BLANK LINE(ONE CHAR)
      JMP ERROR     ERROR RETURN
      ISZ CTR       DONE? 
      JMP WRT       NO! 
      JMP RETRN        YES! 
* 
*  EJECT PAGE 
* 
EJCTF LDA PBUF      SET UP
      STA C.PR1       PAGE EJECT BUFFER 
      LDB .1
      JSB WRTC.     WRITE A MINUS ONE FOR PAGE EJECT
      JMP ERROR     ERROR RETURN
      JMP RETRN 
* 
LUDEV LDA C.FLU,I   SET UP CONTROL WORD 
      AND B77       MASK EXTRANEOUS BITS
      IOR B1100     MASK IN LINE CONTROL FUNCTIONS
      STA LU
      STB CTR       SET CONTROL FUNCTION
      JSB EXEC      PERFORM 
      DEF *+4 
      DEF .3          CONTROL FUNCTION
      DEF LU
      DEF CTR 
RETRN ISZ SPC.C     GOOD RETURN 
ERROR JMP SPC.C,I   RETURN
* 
*  CONSTANTS AND VARIABLES
* 
.1    DEC 1 
.3    DEC 3 
B77   OCT 77
B1100 OCT 1100
CTR   NOP           LINE COUNTER
LU    NOP           LOGICAL UNIT
LBUF  DEF *+1 
      ASC 1,        BLANKS
PBUF  DEF .1
      END 
                                                