ASMB,R,L,C
*     NAME:   OUTDF 
*     SOURCE: 92070-18119 
*     RELOC:  92070-16119 
*     PGMR:   D.J.W., B.W.
* 
*  ***************************************************************
*  * (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.       *
*  ***************************************************************
* 
* 
      NAM OUTDF,7  92070-1X119  REV.2026  800508
* 
*  THIS SUBROUTINE CREATES THE OUTPUT FILE.  IF THE HOST OPERATING
*  SYSTEM IS RTE-L  A TYPE 6 FILE IS CREATED, OTHERWISE A TYPE 1
*  FILE IS CREATED.  THE FILE IS THEN OPENED FOR TYPE ONE ACCESS. 
*  IF NO NAMR WAS SUPPLIED A SCRATCH FILE IS CREATED.  IF NO FILE SIZE
*  IS SUPPLIED THEN THE FILE IS CREATED WITH THE MAXIMUM SIZE WHICH WILL
*  FIT IN  THE CURRENT BACKGROUND OR REAL-TIME AREA TAKING INTO ACCOUNT 
*  THE NUMBER OF SEGMENTS.  IF THIS IS NOT POSSIBLE, A FILE OF SIZE 
*  -1 IS CREATED. 
* 
*  5/8/80  CHANGED TYPE-1 ON RTE-IV TO TYPE-6 
*          B.W. 
* 
*  CALLING SEQUENCE:  JSB OUTDF 
* 
*  ON RETURN:      P+1:  ERROR, A-REG = FMP ERROR CODE
*                  P+2:  GOOD RETURN
* 
      ENT OUTDF 
      EXT  .MVW,CREAT,CRETS,FMPER,I.ERR 
      EXT  ODCB,ONAMR, OPEN,OTDFT,OUTBF,OUTOP 
      EXT TMSTG,PGFWA,PGLWA,BPFWA,BPLWA,#SGMT 
* 
A     EQU 0 
B     EQU 1 
* 
* 
OUTDF NOP           OUTPUT FILE DEFINED FLAG
      LDB P6
      STB FTYPE     SAVE FILE TYPE 6
      LDA ONAMR+7   HAS THE FILE SIZE BEEN SPECIFIED ?
      SZA 
      JMP CROUT     YES, GO CREATE THE FILE 
* 
*  NO SIZE SPECIFIED, CREATE THE SIZE FILE NEEDED WHICH CORRESPONDS 
*  TO THE MAXIMUM PROGRAM WHICH MAY BE RELOCATED ACCORDING TO PGFWA,
*  PGLWA, AND #SGMT.
* 
      LDA #SGMT 
      INA 
      STA MPYR      MULTIPLIER = NUMBER OF SEGMENTS + 1 
      LDA PGFWA     CALCULATE MAXIMUM MEMORY AVAILABLE
      CMA 
      ADA PGLWA 
      ADA O10 
      ADA O200      BUMP TO NEXT SECTOR 
      CLB 
      DIV O200
      STA ONAMR+7   NUMBER OF SECTORS REQUIRED
      LDA BPFWA     CALCULATE MAXIMUM BASE PAGE AVAILABLE 
      CMA 
      ADA BPLWA 
      ADA O200      BUMP TO NEXT SECTOR 
      CLB 
      DIV O200
      ADA ONAMR+7   MAX SECTORS FOR MEMORY AND BASE PAGE
      MPY MPYR      MAX SECTORS FOR MAIN AND EACH SEGMENT 
      INA           ADD ONE FOR A LONG ID SECTOR
      INA           AND DS NEEDS ONE EXTRA SHORT ID 
      STA ONAMR+7   FILE SIZE TO BE CREATED 
* 
*  CREATE THE OUTPUT FILE 
* 
CROUT LDB ONAMR     HAS THE OUTPUT FILE BEEN NAMED ?
      SZB,RSS 
      JMP GTSCR     NO, GET A SCRATCH FILE
* 
CRFIL JSB CREAT     CREATE THE OUTPUT FILE
      DEF *+9 
      DEF ODCB+0    OUTPUT DCB
      DEF I.ERR      ERROR PARAMETER
      DEF ONAMR+0   OUTPUT NAMR 
      DEF ONAMR+7   FILE SIZE 
      DEF FTYPE     FILE TYPE 
      DEF ONAMR+4   SECURITY CODE 
      DEF ONAMR+5   CARTRIDGE REFERENCE NUMBER
      DEF IDCBS     DCB SIZE
* 
      CPA M33       FMP RETURN = NO ROOM ?
      JMP GTLST        YES, CREATE THE LARGEST POSSIBLE FILE THEN 
      SSA           ANY OTHER FMP ERROR ? 
      JMP ERR??     YES, GO HANDLE IT 
* 
      ARS           SAVE ACTUAL FILE SIZE CREATED IN ONAMR
      STA ONAMR+7   FOR FINAL FILE TRUNCATION 
* 
*  OPEN THE OUTPUT FILE FOR TYPE 1 ACCESS 
* 
FOPN  JSB OPEN      OPEN FILE AS A TYPE ONE 
      DEF *+7 
      DEF ODCB+0    OUTPUT FILE DCB 
      DEF I.ERR+0    ERROR PARAMETER
      DEF ONAMR+0   OUTPUT FILE NAME
      DEF IOPTN     OPEN OPTION WORD
      DEF ONAMR+4   SECURITY CODE 
      DEF ONAMR+5   CARTRIDGE REFERENCE NUMBER
* 
      SSA           FMP ERROR ? 
      JMP ERR??     YES, GO HANDLE IT 
* 
*  CREATED AND OPENED, MOVE TIME STRING INTO FIRST BLOCK
* 
      LDA ATIME     MOVE TIME STRING
      LDB AO112     INTO THE OUTPUT FILE
      JSB .MVW
      DEF P15       LENGTH OF FIFTEEN WORDS 
      NOP 
* 
      ISZ OUTOP     SET 'OUTPUT FILE OPENED' FLAG 
      ISZ OUTDF     NO ERROR, RETURN P+2
      JMP OUTDF,I 
* 
ATIME DEF TMSTG+0 
AO112 DEF OUTBF+112 
FTYPE DEC 6         FILE TYPE, DEFAULT IS TO TYPE 6 
MPYR  BSS 1         MULTIPLIER
M31   DEC -31       $OPSY VALUE FOR RTE-L 
M1    DEC -1
M33   DEC -33 
O200  OCT 200 
O10   OCT 10
P15   DEC 15
P6    DEC 6 
* 
* 
*  COULDN'T CREATE THE SIZE WE WANTED SO JUST TAKE WHAT 
*  WE CAN GET.
* 
GTLST LDA M1        CREATE WITH SIZE = -1 
      CPA ONAMR+7   DID WE JUST TRY THAT ?
      JMP ERR??     YES, WELL THEN WE GOT PROBLEMS
      STA ONAMR+7   NO, SO GIVE IT A TRY
      JMP CRFIL     GO CREATE ! 
* 
*  ERROR PROCESSING 
* 
ERR?? JSB FMPER     OUTPUT ERROR MESSAGE TO LIST
      DEF ONAMR+0   VIOLATION NAMR
      JMP OUTDF,I   TAKE ERROR RETURN 
* 
*  CREATE A SCRATCH FILE
* 
GTSCR STB NUM       SET NUMBER FOR SCRATCH FILE CALL
      STA ONAMR+8   PREPARE FOR DOUBLE WORD CALL
      STB ONAMR+7 
SCRET JSB CRETS     CREATE SCRATCH FILE 
      DEF *+11
      DEF ODCB+0    OUTPUT FILE DCB 
      DEF I.ERR+0    ERROR PARAMETER
      DEF NUM       SCRATCH FILE NUMBER 
      DEF ONAMR+0   SCRATCH FILE NAME 
      DEF ONAMR+7   FILE SIZE 
      DEF FTYPE     FILE TYPE 
      DEF ONAMR+4   SECURITY CODE 
      DEF ONAMR+5   CARTRIDGE NUMBER
      DEF IDCBS     DCB SIZE
      DEF JSIZE     SIZE FILE CREATED 
* 
      LDA I.ERR     ERROR RETURN ?
      CPA N2        FILE ALREADY THERE ?
      JMP NXNAM     YES, SO GET NEXT NAME 
      CPA M33       NO ROOM ? 
      JMP LRGST     YES, WELL THEN TRY THE LARGEST ALLOWABLE
      SSA           ANY OTHER FMP ERROR ? 
      JMP ERR??     YES, OUTPUT MESSAGE 
      LDA JSIZE+1   NO ERROR, SAVE ACTUAL SIZE CREATED
      ARS           SAVE FILE SIZE CREATED IN BLOCKS
      STA ONAMR+7   USED WHEN FILE IS TRUNCATED AT END OF LOAD
      ISZ OTDFT     SET 'DEFAULT OUTPUT FILE' FLAG
      JMP FOPN      NO, OPEN THE FILE AS A TYPE ONE 
* 
NXNAM ISZ NUM       INCREMENT SCRATCH FILE NUMBER 
      JMP SCRET     AND TRY ANOTHER CREATE
* 
LRGST LDA M1        GET LENGTH = -1 
      CPA ONAMR+7   WAS THIS WHAT WE JUST TRIED ? 
      JMP ERR??     YES, WELL THEN WE GOT PROBLEMS
      STA ONAMR+7   NO, SO GIVE IT ANOTHER TRY
      STA ONAMR+8 
      JMP SCRET     GO CREATE A SCRATCH 
* 
* 
IOPTN OCT 4         OPTION PARM 
IDCBS DEC 144       DCB SIZE
JSIZE BSS 2         FILE SIZE CREATED 
NUM   NOP           SCRATCH FILE NUMBER 
N2    DEC -2
      END 
                            