ASMB,L,Z,C
*RTLGN  USE 'ASMB,Z '  ALWAYS !!
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  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.       *
*  ***************************************************************
* 
      HED RTE XL  GENERATOR 
      NAM RTLGN,3,99 92071-16077 REV.2041 800722
      LOD 2,SG,4
* 
*     NAME:    RTE XL  GENERATOR MAIN 
*     SOURCE:  92071-18077
*     PGMR:    B.C. 
* 
      ENT RTLGN 
* 
* 
      EXT EXEC,LOGLU,NAMR,.ENTR 
      EXT OPEN,CLOSE,READF,WRITF,PRTN 
      EXT IFBRK 
      EXT TH2.L,CNUMD,L.REL 
* 
      ENT DSTRG,IPBUF,STRNG,SLONG,DONE?,ISTRC,DIPBF 
      ENT DFTLU,FATAL,OP?,MSIZE,IPTN2,ABOR
      ENT EXIT,BREAK,ASTRX,LENTF
* 
      ENT F1,FILE1,TYPE1,F1SC,F1DSC,IERR1 
      ENT F2,FILE2,TYPE2,F2SC,F2DSC,IERR2 
      ENT F3,FILE3,TYPE3,F3SC,F3DSC,IERR3,OPSNP 
      ENT F4,FILE4,TYPE4,F4SC,F4DSC,IERR4 
      ENT CDCB1,ODCB2,SDCB3,LDCB4,ADCB3 
      ENT SEGNM,PPREL,COMFG,LNKDR,SIDCK 
      ENT FWFM,LWFM,BPFWA,LODPT,COMAD,COMLG,LWAPG 
      ENT TDBP,LDBP,CSDBP,CUDBP,CSRBP,CURBP 
      ENT NUMID,#ENPT,NLIB,CROM 
* 
      ENT READ,FLERR,NAMRR,DRKEY,SPACE,FCLOS,MOVE 
      ENT CLOS1,CLOS2,CLOS3,CLOS4 
      ENT DLOCC,LOCC,DBLOC,BPLOC
      ENT CNV99,L.OUT,STCR1,MAXAD,PARTN 
      ENT ERRCT,CONSL,AINT,WRDCT,EFBUF,PRERR
      ENT CBCOM,CFWSY,C$SCP,C$SC#,RECOF,SLOCC 
* 
      SUP PRESS EXTRANIOUS LISTING
* 
      SKP 
      SKP 
DSTRG DEF STRNG 
ADCB3 DEF SDCB3 
DIPBF DEF IPBUF 
STRNG BSS 40
IPBUF BSS 10       OUTPUT PARSED BUFFER 
* 
RTLGN JSB LOGLU     GET THE CONSOLE LU
      DEF *+2 
      DEF ANLU# 
      IOR M400      MERGE ECHO BIT
      STA DFTLU     AND SAVE
* 
* 
      JSB EXEC      GET THE RUN STRING
      DEF *+5 
      DEF P14 
      DEF P1
      DEF STRNG     THIS IS A GET NOT A PUT 
      DEF N80 
* 
      STB SLONG     SLONG = STRING LENGTH IN + CHAR 
* 
* 
* 
* 
      JSB EXEC
      DEF *+3 
      DEF P8
      DEF SEG1      LOAD SEGMENT 1
      NOP 
* 
      SKP 
* 
SLONG NOP           STRING LENGTH IN CHARS
DONE? NOP           =1 WHEN INPUT PRAMS CHECKED OUT 
* 
F1    DEF FILE1 
FILE1 ASC 3,COMMAD  COMMAND FILE NAME 
TYPE1 NOP 
F1SC  NOP 
F1DSC NOP 
* 
F2    DEF FILE2     OUTPUT FILE NAME
FILE2 ASC 3,SYSTEM  DEFAULT FILE = SYSTEM 
TYPE2 OCT 3 
F2SC  NOP 
F2DSC NOP 
* 
F3    DEF FILE3     SNAP FILE NAME
FILE3 ASC 3,SNAP    DEFAULT FILE = SNAP 
TYPE3 OCT 3 
F3SC  NOP 
F3DSC NOP 
* 
F4    DEF FILE4     LIST FILE NAME
FILE4 ASC 3,SYLIST  DEFAULT FILE = SYLIST 
TYPE4 OCT 3 
F4SC  NOP 
F4DSC NOP 
* 
*     GENERATOR BUFFER AREA 
* 
CDCB1 BSS 144       COMMAND DCB 
ODCB2 BSS 144       OUTPUT  DCB 
SDCB3 BSS 144       SNAP    DCB 
LDCB4 BSS 144       LIST    DCB 
* 
SEG1  ASC 3,L20G1 
* 
      SKP 
      SPC 1 
* 
* 
EXIT  LDA SEGNM 
      CPA P128      NORMAL TERMINATION? 
      RSS           YES 
      JMP ABOR      NO , ABNORMAL TERMINATION 
EXIT2 JSB SPACE 
      JSB CNUMD 
      DEF *+3 
      DEF ERRCT+0 
      DEF ERRMS+1 
      LDA P18 
      STA CONSL 
      LDB DERRM 
      JSB DRKEY 
* 
      JSB WRITF 
      DEF *+6 
      DEF ODCB2     WRITE OUT CURRENT RECORD
      DEF IERR2       OF OUTPUT FILE
      DEF OTBUF 
      DEF P128
      DEF RECN
* 
      LDA SLOCC     1ST USER PAGE # 
      ADA N1
      CMA,INA 
      ADA P64 
      ALS,ALS 
      ALS           MUTIPLY BY 8
      STA ITRUN     TRUNCATE VALUE
* 
      JSB FCLOS 
* 
      LDA N4        ZERO OUT NEXT 4 WDS AFTER 
      STA WRDCT     ERRCT FOR PRTN
      CLA 
      LDB DERRC     ADDRESS OF ERRCT
LP    INB 
      STA B,I 
      ISZ WRDCT     ANY MORE? 
      JMP LP        YES 
* 
      JSB PRTN      NO
      DEF *+2 
DERRC DEF ERRCT+0 
* 
      JSB EXEC
      DEF *+2 
      DEF P6
* 
DERRM DEF ERRMS 
ERRMS ASC 9,*        ERRORS * 
      SKP 
      SKP 
      SKP 
* 
*     SET UP CALL FOR OUTPUT
* 
*     CALL SEQUENCE 
* 
*     LDA DATA
*     LDB ADDRESS 
*     JSB STCR1 
* 
STCR1 NOP 
      STB ADRR      THIS IS THE ADDRESS 
      STA VALU      THIS IS THE VALUE OF THE ABOVE ADDRESS
      JSB L.OUT 
      DEF *+3 
      DEF ADRR
      DEF VALU
      JMP STCR1,I   RETURN
* 
ADRR  NOP 
VALU  NOP 
* 
* 
* 
*     PRINT ******
* 
ASTRX NOP 
      LDA P6
      LDB DASTX 
      JSB DRKEY 
      JMP ASTRX,I 
* 
* 
DASTX DEF *+1 
      ASC 3,******
* 
      SKP 
*THE FCLOSE ROUTINE CLOSES ALL FILES OPEN TO THE
*GENERATOR
* 
FCLOS NOP 
      JSB CLOS1 
      JSB CLOS3 
      JSB CLOS2 
      JSB CLOS4 
      JMP FCLOS,I 
* 
CLOS1 NOP 
      JSB CLOSE     CLOSE THE FILE
      DEF *+2 
      DEF CDCB1 
      JMP CLOS1,I 
* 
CLOS2 NOP 
      JSB CLOSE     YES 
      DEF *+4 
      DEF ODCB2 
      DEF IERRX 
      DEF ITRUN+0 
      JMP CLOS2,I 
* 
CLOS3 NOP 
      JSB CLOSE     YES 
      DEF *+2 
      DEF SDCB3 
      JMP CLOS3,I 
* 
CLOS4 NOP 
      LDA TYPE4 
      ERA,SLA 
      RSS 
      JMP CLOS4,I 
      JSB CLOSE 
      DEF *+2 
      DEF LDCB4 
* 
      CLA,INA       SET UP THE
      STA TYPE4     NUMERIC FIELD IN THE TYPE WORD
      JMP CLOS4,I   RETURN
* 
*     OPEN THE SNAP FILE
* 
OPSNP NOP 
      JSB OPEN
      DEF *+7 
      DEF SDCB3 
      DEF IERR3 
      DEF FILE3 
      DEF IPTN2 
      DEF F3SC
      DEF F3DSC 
      JMP OPSNP,I 
      SKP 
* 
*     READ THE COMMAND FILE 
* 
*     JSB READ
*     EOR RETURN
*     NO ERROR RETURN 
* 
* 
      SPC 1 
* 
READ  NOP 
FREAD JSB READF     READ THE COMMAND FILE 
      DEF *+6 
      DEF CDCB1 
      DEF IERR1 
      DEF STRNG 
      DEF P40 
      DEF CLEN
* 
      LDA IERR1 
      SSA,RSS       ANY ERRORS ?
      JMP FLCHK     NO
      LDB F1
      JSB FLERR     YES 
FLCHK LDB CLEN      GET LENGTH OF COMMAND JUST READ 
      SZB,RSS       WAS IT ZERO ? 
      JMP FREAD     YES, SO DO IT AGAIN 
      SSB           WAS IT NEGATIVE (IE END OF FILE)
      JMP READ,I    YES, SO FINISH PROCESSING 
* 
      CLE,ELB       CONVERT TO CHAR COUNT (MULT BY 2) 
      STB SLONG     SAVE READ LENGTH FOR PARSING ROUTINE
      CLA,INA       SET UP PARSING OFFSET TO STAT PARSING 
      STA ISTRC     AT THE FIRST CHARACTER
      JSB NAMRR     PARSE THE OP CODE 
      LDB IPBUF+1   GET 3RD & 4TH CHAR
      STB OP1?
      LDA IPBUF     AND SAVE THE OPCODE 
      STA OP? 
* 
      JSB IECHO     ECHO INPUT
      LDA OP?       GET OPCODE
      AND HIMSK 
      CPA ASTRK     IS IT A COMMENT ? 
      JMP FREAD     YES , READ ANOTHER RECORD 
* 
      JSB BREAK     CHECK BREAK FLAG
      CLA 
      STA PRERR     CLEAR PRINT ERROR FLAG
      ISZ READ
      JMP READ,I
* 
      SKP 
* 
*                                   PRINT MESSAGE ON LIST DEVICE
* 
*  THE DRKEY SUBROUTINE PRINTS A MESSAGE ON THE LIST OUTPUT DEVICE. 
* 
*  CALLING SEQUENCE:
*    A = NO. CHARACTERS (POS.) TO BE PRINTED. 
*    B = ADDRESS OF MESSAGE 
*    JSB DRKEY
* 
*  RETURN: CONTENTS OF A AND B ARE DESTROYED
* 
DRKEY NOP 
      STA CHAR#     SAVE THE # OF CHARACTERS
* 
      ADB N1        BACK THE ADDRESS UP BY ONE
      STB MADDR     AND SAVE FOR LU WRITE 
      STB MADDF     OR FILE WRITE 
      LDA B,I       GET THE WORD PRIOR TO THE BUFFER
      STA LTEMP     AND SAVE IT 
      LDA BLNK2     GET A BLANK 
      STA B,I       AND PUT IT IN THE BUFFER
* 
      LDB CHAR#     GET THE # OF CHARACTERS 
      ADB P3        ALLIGN TO A WORD & ACCOUNT FOR THE BLANK
      CLE,ERB       DIV BY 2 . NOW HAVE WORD COUNT
      STB COUNT     SAVE FOR LU OR FILE WRITE 
* 
      LDB CHAR#     GET THE # OF CHARS
      SLB,INB,RSS   ODD # ? 
      JMP GOWRT     NO, SO WRITE THE BUFFER OUT 
      CLE,ERB       INDEX 
      ADB MADDR     THE THE LAST WORD 
      LDA B,I       GET IT & PUT A BLANK
      AND HIMSK     IN THE LOW END
      ADA P32 
      STA B,I 
* 
GOWRT LDA CONSL     ECHO TO THE CONSOLE?
      SZA,RSS       YES 
      JMP WFILE     NO , WRITE TO THE FILE
* 
      JSB EXEC      REQUEST WRITE 
      DEF *+5 
      DEF P2        WRITE REQUEST CODE
      DEF DFTLU     ADDR OF CONSOLE UNIT NO.
MADDR DEF 0         BUFFER LOCATION 
      DEF COUNT     CURRENT WORD COUNT
      CLA 
      STA CONSL 
* 
WFILE JSB WRITF      DO THE FILE WRITE
      DEF *+5 
      DEF LDCB4+0 
      DEF IERR4+0 
MADDF NOP           BUFFER ADDRESS
      DEF COUNT     BUFFER LENGTH 
* 
      LDB LTEMP     GET THE ALTERED WORD
      STB MADDR,I   AND RESTORE IT
      SSA,RSS       ANY FILE ERRORS 
      JMP DRKEY,I   NO, SO RETURN 
* 
      LDA N6        LIST FILE ERROR 
      JSB MOVE      MOVE LIST FILE NAME 
      DEF FILE4+0   SOURCE
      DEF EFBUF+10  DESTINATION 
      LDA IERR4 
      CMA,INA 
      JSB CNV99 
      STA EFBUF+4 
* 
      JSB EXEC      DISPLAY ON CONSOLE FMP ERROR
      DEF *+5         OF
      DEF P2             LIST 
      DEF DFTLU+0             FILE
      DEF EFBUF 
      DEF P13 
* 
      JSB EXEC
      DEF *+2 
      DEF P6
      SKP 
* 
*                                   NEW LINE ON LIST OUTPUT DEVICE
* 
*  THE SPACE SUBROUTINE IS CALLED TO PAGE UP THE PRINTER. 
* 
*  CALLING SEQUENCE:
*    A = IGNORED
*    B = IGNORED
*    JSB SPACE
* 
*  RETURN: CONTENTS OF A AND B ARE DESTROYED. 
* 
SPACE NOP 
      CLA           SET COUNT = 0.
      LDB ALBUF     B = DUMMY ADDR. 
      JSB DRKEY     NEW LINE
      JMP SPACE,I   RETURN
* 
ALBUF DEF IPBUF 
* 
* 
* THE BREAK ROUTINE CATCHES ANY PROGRAM BREAKS AND DOES 
* A CLEAN TERMINATION.
* 
BREAK NOP 
      JSB IFBRK 
      DEF *+1 
      SSA           ANY BREAK INPUT ? 
      JMP EXIT      YES , SO EXIT THYSELF 
      JMP BREAK,I   NO SO JUST RETURN 
* 
*     ABORT ROUTINE 
* 
ABOR  LDA P6
      LDB MESFL 
      JSB DRKEY 
      JSB ASTRX     PRINT ******
      JMP EXIT2 
* 
MESFL DEF *+1 
      ASC 3,GEN AB
* 
      SKP 
* 
* THE IECHO ROUTINE ECHOS COMMAND FILE COMMANDS AND ECHOS 
* ANY BAD COMMANDS ENCOUNTERED IN THE COMMAND FILE
* IT ASSUMES THE WORD COUNT IN  ' CLEN ' AND THE BUFFER 
* TO BE OUTPUT IN ' DSTRG '.
* 
IECHO NOP 
      LDA CLEN
      RAL           WORD COUNT IS NOW CHAR COUNT
      LDB DSTRG     GET THE BUFFER ADDRESS
      JSB DRKEY     OUTPUT IT 
      JMP IECHO,I   RETURN TO CALLER
* 
      SKP 
* 
* 
*THE FLERR ROUTINE HANDLES ALL FILE ERRORS.  CALLING SEQUENCE:
* 
*          LDA     WITH ERROR CODE (NEGATIVE) 
*          LDB     WITH ADDRESS OF FILE 
*          JSB FLERR
* 
* 
*THIS ROUTINE WILL CLOSE ALL FILES
FLERR NOP 
      STA ERRSV     SAVE ERROR CODE 
      STB EFILE     SAVE NAME OF FILE 
      CMA,INA       MAKE ERROR POSITIVE 
      JSB CNV99     CONVERT TO ASCII
      STA EFBUF+4   PUT INTO ERROR MESSAGE
      LDA EFILE,I   GET THE FILE NAME 
      STA EFBUF+10  AND 
      ISZ EFILE          PUT
      LDA EFILE,I             IT
      STA EFBUF+11               INTO 
      ISZ EFILE                       THE 
      LDA EFILE,I    ERROR
      STA EFBUF+12           MESSAGE .
* 
* 
      LDA P26       GET THE CHAR COUNT
      STA CONSL     ECHO TO THE CONSL 
      LDB DEBUF     AND THE ADDRESS 
      JSB DRKEY     NOW PRINT THE ERROR MESSAGE 
      ISZ ERRCT     BUMP UP THE ERROR COUNTER 
      JSB ASTRX     PRINT ******
* 
      LDA ERRSV     GET ERROR CODE
      CPA N6        FILE NOT FOUND? 
      JMP FLERR,I   YES , OK TO CONTINUE
      CPA N7        FILE SEC. CODE ERROR? 
      JMP FLERR,I   YES , OK TO CONTINUE
      CPA N15       ILLEGAL NAME? 
      JMP FLERR,I   YES , OK TO CONTINUE
      CPA N32       CRN NOT FOUND?
      JMP FLERR,I   OK , GO GET NEXT COMMAND
* 
      JMP ABOR      ANY OTHER DISC ERROR ABORT
* 
EFILE NOP 
DEBUF DEF EFBUF 
EFBUF ASC 13,  FMGR -6  ON FILE  COMAND 
ERRSV NOP 
      SKP 
* 
* 
* THE NAMRR SUBROUTINE USES THE RELOCATABLE LIBRARY 
* PARSING ROUTINE NAMR.  THE INPUT TO NAMR IS A STRING
* OF ASCII CHARACTERS.
* THE OUTPUT IS A 10 WORD BUFFER PARSED AS :
* PRAM1,PRAM2,PRAM3,TYPE,S1,S2,S3,S4,S5,S6
* PARAMETERS BETWEEN COMMAS ARE PARSED.  SUBPARAMETERS ARE
* DELINEATED BY COLONS.  THE TYPE WORD DESCRIBES ALL
* PARAMETERS AS ASCII, NUMERIC, OR NULL.
* THE TYPE WORD IS BROKEN UP INTO 2 BIT FIELDS TO DESCRIBE
* THE INPUT.
*15,14 13,12  11,10  9,8  7,6  5,4  3,2   1,0 
*-----------------------------------------------
*       S6   ! S5   ! S4 ! S3 ! S2 ! S1 ! PRAM !
*-----------------------------------------------
* 
* PRAM = 0 ...NULL       PRAM1 = PRAM2 = PRAM3 = 0
* PRAM = 1....NUMERIC  (ONLY PRAM1 USED) PRAM1 = #
* PRAM = 2 ...NOT USED
* PRAM = 3 ... ASCII  (USES PRAM1,PRAM2,PRAM3 ) 
* 
* S1 - S6 ARE DEFINED THE SAME EXCEPT THEY ARE ONE WORD ONLY
* 
NAMRR NOP 
      JSB NAMR      THIS IS THE RELO LIBR PARSING ROUTINE 
      DEF *+5       RETURN ADDR 
      DEF IPBUF     ADDRESS OF 10 WORD PARSED BUFFER
      DEF STRNG     ADDRESS OF BUFFER TO BE PARSED
      DEF SLONG     CHARACTER LENGTH
      DEF ISTRC     CHAR OFFSET IN STRNG FOR NEXT PRAM
      JMP NAMRR,I   RETURN TO CALLER
* 
* 
      SKP 
      SKP 
MOVE  NOP           WORD MOVE SUBROUTINE
      STA CNT1      SAVE WORD COUNT 
      LDA MOVE,I    GET SOURCE
      STA PTN1      SET IN POINTER 1
      ISZ MOVE      STEP TO DEST. ADDR
      LDA MOVE,I    GET DEST. 
      ISZ MOVE      STEP TO RETURN ADDR 
MOV1  LDB PTN1,I    GET A WORD
      STB A,I       PUT IT AWAY 
      ISZ PTN1      STEP SOURCE 
      INA           AND DEST. ADDRES
      ISZ CNT1      DONE? 
      JMP MOV1      NO - CONTINUE 
      JMP MOVE,I    YES - EXIT
* 
* 
*     CONVERT TO DECIMAL ASCII (MAX VALUE = 99) 
*     CALL SEQUENCE:  LDA VALUE 
*                     JSB CNV99 
*                     STA ASCII 
* 
CNV99 NOP           QUICK CONVERSION
      CLB           BINARY TO DECIMAL ASCII 
      DIV P10       MAX VALUE = 99
      SZA 
      ADA M20       FORCE LEADING BLANK IF ZERO 
      ADA M40 
      ALF,ALF       PUT IN LEFT HALF
      IOR B 
      IOR M60 
      JMP CNV99,I   RETURN ASCII IN (A) 
      SKP 
* 
*     ROUTINE TO OUTPUT A WORD THAT HAS BEEN RELOCATED
* 
* 
*     JSB L.OUT 
*     DEF *+3 
*     DEF ADDRESS   ADDRESS OF ADDRESS
*     DEF VALUE     ADDRESS OF VALUE
* 
* 
DADD  NOP 
DVAL  NOP 
L.OUT NOP 
      JSB .ENTR 
      DEF DADD
      LDA DADD,I    GET ADDRESS 
      STA QTEMP 
      CMA,INA       NEGATE ADDRESS
      ADA CROM      ADD TOP OF MEMORY 
      SSA           OUTPUT FILE OVERFLOW? 
      JMP FILOV     YES , GIVE ERROR
      LDA DVAL,I    NO
      STA PTEMP 
* 
      LDA QTEMP           GET ADDRESS AGAIN 
      ADA B2000     ADA -2000B
      SSA           2000B OR GREATER ? IE NOT ON BASE PAGE
      RSS           NO , UPDATE BP
      JMP L.001     YES 
      INA 
      ADA TDBP      ADD TOP OF DUMMY BP 
      LDB PTEMP     GET VALUE 
      STB A,I       STORE VALUE IN DUMMY BP 
      LDA RECOF     GET REC. OFFSET 
      SZA           IF NOT SYS BP DO NOT OUTPUT 
      JMP L.20      NOT SYS BP
* 
L.001 CLB           CALCULATE RECORD # & WORD POSITION
      LDA QTEMP     GET ADDRESS 
      ADA P128      REC # = (ADDRESS+128)/128 
      DIV P128      QUOTIENT IN A = RECORD #
      ADA RECOF     ADD THE RECORD OFFSET 
      STA RECN      THIS THE RECORD # 
      INB           REMAINDER IN B + 1 = WORD POSITION
      STB WORDN     THIS THE WORD POSITION IN THE RECORD
* 
      CPA RECNO     NEW REC # EQUAL TO PREVIOUS REC #?
      JMP L.O10     YES , JUST DATE THE RECORD
* 
      JSB WRITF     NO , WRITE OUT CURRENT REC
      DEF *+6 
      DEF ODCB2 
      DEF IERR2 
      DEF OTBUF 
      DEF P128
      DEF RECNO 
* 
      SSA,RSS       ANY ERROR?
      JMP L.003     NO , CONTINUE 
      LDB F2        ADDRESS OF SYSTEM OUTPUT FILE NAME
      JSB FLERR 
* 
L.003 JSB READF     READ THE NEW RECORD IN
      DEF *+7 
      DEF ODCB2 
      DEF IERR2 
      DEF OTBUF 
      DEF P128
      DEF RTEMP 
      DEF RECN
      SSA,RSS       ANY ERROR?
      JMP L.006     NO , CONTINUE 
      LDB F2        ADDRESS OF SYSTEM OUTPUT FILE NAME
      JSB FLERR 
* 
L.006 LDA RECN
      STA RECNO     SAVE IT AS THE CURRENT RECORD # 
* 
L.O10 LDA WORDN     UPDATE THE RECORD 
      ADA N1        WITH THE NEW WORD 
      ADA AOTBF 
      LDB PTEMP     GET THE VALUE OF THE WORD 
      STB A,I       AND PLACE IT IN THE RECORD
* 
* 
* 
L.20  LDA MAXAD     GET CURRENT MAX ADDRESS 
      CMA,INA 
      ADA QTEMP     ADD CURRENT ADDRESS 
      SSA           MAX ADDRESS BIGGER ?
      JMP L.OT      YES 
      LDA QTEMP     NO , REPLACE CURRENT MAX ADDRESS
      STA MAXAD 
L.OT  LDA TH2.L     CURRENT HIGH ADDRESS + 1 OF THIS LOAD 
      CMA,INA       NEGATE
      ADA QTEMP     ADD CURRENT OUTPUT ADDRESS
      SSA           EQUAL OR GREATER? 
      JMP L.OUT,I   NO , RETURN 
      LDA QTEMP     YES , 
      INA           OUTPUT ADDRESS IS EQUAL OR LARGER 
      STA TH2.L     REPLACE IN TH2.L
      JMP L.OUT,I 
* 
FILOV LDA P6
      LDB MESOV 
      JSB DRKEY     PRINT OUTPUT FILE OVERFLOW
      JSB ASTRX     PRINT ******
      ISZ ERRCT 
      JMP EXIT
* 
MESOV DEF *+1 
      ASC 3,OV MEM  SYSTEM OUTPUT FILE OVERFLOWED 
* 
RECN  NOP 
WORDN NOP 
RECNO DEC 255 
* 
* 
AOTBF DEF OTBUF 
OTBUF BSS 128 
      SKP 
* 
*     VARIABLES 
* 
#ENPT NOP 
AINT  NOP           ADDRESS OF INT TABLE
ANLU# NOP 
BPFWA OCT 100       1ST WORD OF BASE PAGE 
BPLOC NOP 
C$SC# NOP           # OF SYSTEM COMMON
C$SCP NOP           # OF SYSTEM COMMON IN PAGES 
CBCOM NOP 
CFWSY NOP 
CHAR# NOP           INPUT # OF CHARACTER
CLEN  NOP           RECORD READ LENGTH
CNT1  NOP 
COMAD NOP           ADDRESS OF SYS COMMON OR 0 IF LOCAL 
COMFG NOP           UNLABEL COMMON IN FLAG
COMLG NOP           LENGTH OF SYSTEM COMMON OR 0
CONSL NOP           ECHO TO CONSOLE 1=YES 0=NO
COUNT DEC 13        CURRENT MESSAGE LENGTH
CROM  OCT 77777     TOP OF MEMORY 
CSDBP NOP           CURRENT SYS DUM BP
CSRBP NOP           CURRENT SYS REAL BP 
CUDBP NOP           CURRENT USER DUM BP 
CURBP NOP           CURRENT USER REAL BP
DBLOC DEF BPLOC 
DLOCC DEF LOCC
ERRCT NOP           ERROR COUNTER 
FATAL NOP           0/1 NO FATAL ERROR  / FATAL ERROR 
FWFM  NOP           1ST WORD OF FREE MEMORY 
IERR1 NOP 
IERR2 NOP 
IERR3 NOP 
IERR4 NOP 
IERRX NOP 
IPTN2 NOP           OPEN OPTION 
ITRUN NOP           TRUNCATION SIZE 
LDBP  NOP           LOWER BOUND OF DUMMY BASE PAGE
LENTF OCT 1         NO ENT PT / LIST ENT PT (DEFAULT) 
LNKDR NOP           BP LINK DIRECTION -1 = SYS LINK , 1 = USER LINK 
LOCC  NOP 
LODPT NOP           LOAD POINT
LTEMP NOP 
LWAPG NOP           LAST WORD OF ADDRESS SPACE
LWFM  NOP           LAST WORD OF FREE MEMORY
MAXAD NOP           CURRENT MAX ADDRESS 
MSIZE NOP           MEMORY SIZE 
NLIB  NOP           # OF LIBRARY FILES
NUMID NOP           # OF ID SEGMENTS
OP?   NOP 
OP1?  NOP 
PARTN NOP 
PPREL NOP 
PRERR NOP           0/-1 PRINT ERROR/ERROR PRINTED PREVIOUSLY 
PTEMP NOP 
PTN1  NOP 
QTEMP NOP 
RECOF NOP           RECORD OFFSET 256 IF SY. COM IS > 32K 
RTEMP NOP 
SEGNM NOP 
SIDCK NOP           SYSTEM ID CHECK 
SLOCC NOP           SAVE TOP OF SYSTEM LOCC 
TDBP  NOP           TOP OF DUMMY BASE PAGE
WRDCT NOP 
      SKP 
* 
*     PRE-SET VARIABLES 
* 
DFTLU DEC 1         DEFAULT LU
ISTRC DEC 1         POINTER TO CURRENT CHAR TO BE PARSE 
* 
*     CONTANTS
* 
P1    DEC 1 
P2    DEC 2 
P3    DEC 3 
P6    DEC 6 
P8    DEC 8 
P10   DEC 10
P13   DEC 13
P14   DEC 14
P18   DEC 18
P26   DEC 26
P32   DEC 32
P40   DEC 40
P64   DEC 64
P128  DEC 128 
* 
N1    DEC -1
N4    DEC -4
N6    DEC -6
N7    DEC -7
N15   DEC -15 
N32   DEC -32 
N80   DEC -80 
* 
M20   OCT 20
M40   OCT 40
M60   OCT 60
M400  OCT 400 
* 
B300  OCT -300
B2000 OCT -2000 
* 
ASTRK OCT 25000     THIS IS A * 
HIMSK OCT 177400
* 
BLNK2 ASC 1,        DOUBLE BLANK
* 
*      BASE PAGE COMMUNICATION VALUES 
* 
A     EQU 0 
B     EQU 1 
* 
* 
      SPC 3 
      END RTLGN 
                                            