ASMB,R,L,C
      HED COMPILER LIBRARY SPACE ROUTINE
      NAM SPC.C,7 92060-16102 781101 REV. 1901 $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.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 
* 
* 
* 
* 
SPC.C NOP 
      JSB ADS.C     SET UP FILE CONTROL BLOCK ADDRESSES 
      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 
A1    ASC 1,1 
B77   OCT 77
B1100 OCT 1100
CTR   NOP           LINE COUNTER
LU    NOP           LOGICAL UNIT
LBUF  DEF *+1 
      ASC 1,        BLANKS
PBUF  DEF A1
      END 
                                                                                                                                                                                                                                                          