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 SEGMENT 1 
      NAM L20G1,5 92071-1X078 REV.2041 800715 
* 
* 
*     NAME:    RTE XL  GENERATOR SEGMENT 1
*     SOURCE:  92071-18078
*     PGMR:    B.C. 
* 
      ENT L20G1 
* 
* 
      EXT EXEC,LOGLU,NAMR,.ENTR,PURGE 
      EXT OPEN,CLOSE,READF,WRITF,CREAT,RWNDF
* 
      EXT DSTRG,IPBUF,STRNG,SLONG,DONE?,ISTRC,DIPBF 
      EXT DFTLU,FATAL,OP?,MSIZE,IPTN2,ABOR
      EXT CPL.L,EXIT,LIMEM
* 
      EXT FWFM,LWFM,BPFWA,LODPT,COMAD,COMLG,LWAPG 
      EXT TDBP,LDBP,CSDBP,CUDBP 
* 
      EXT READ,FLERR,NAMRR,DRKEY,SPACE,FCLOS,MOVE 
      EXT ERRCT,ASTRX 
* 
      EXT F1,FILE1,TYPE1,F1SC,F1DSC,IERR1 
      EXT F2,FILE2,TYPE2,F2SC,F2DSC,IERR2 
      EXT F3,FILE3,TYPE3,F3SC,F3DSC,IERR3 
      EXT F4,FILE4,TYPE4,F4SC,F4DSC,IERR4 
      EXT CDCB1,ODCB2,SDCB3,LDCB4 
      EXT EFBUF,CONSL,FTIME,ADCB3,.MVW
      EXT CLOS2,CLOS3,CLOS4,OPSNP,CNV99,STCR1 
* 
      SUP PRESS EXTRANIOUS LISTING
* 
      SKP 
      SKP 
* 
*     PARSE THE RU STRING 
* 
L20G1 JSB NAMRR     PARSE TWICE TO GET RID OF THE RU AND
      JSB NAMRR     THE RTLGN. WE NOW HAVE PARAMETERS.
* 
* 
      JSB NAMRR     NOW GET THE COMMAND FILE NAME 
      SSA,RSS       END OF STRING ? 
      JMP GTCMD     NO
* 
NOCMD JSB EXEC      NO
      DEF *+5 
      DEF P2           COMMAND
      DEF DFTLU+0 
      DEF EFBUF+0              FILE 
      DEF COUNT 
* 
EXIT3 JSB EXEC                      EXIT
      DEF *+2 
      DEF P6
* 
* 
GTCMD LDA N6        GET THE NEG COUNT AGAIN 
      JSB MOVE      AND MOVE THE NAME TO THE CMND NAME BUFFER 
      DEF IPBUF+0   SOURCE OF MOVE
      DEF FILE1+0   COMMAND FILE NAME ADDRESS 
      LDA TYPE1     GET THE PARSE TYPE WORD 
      AND P3        KEEP ONLY THE LEAST TWO BITS
      STA TYPE1     AND SAVE FOR LATER
      CPA P3        COMMAND IS A FILE?
      RSS           YES 
      JMP NOCMD     NO , EXIT NO COMMAND FILE 
* 
*     LIST FILE NAMR
* 
      JSB NAMRR     GET THE LIST FILE 
      SSA 
      JMP OPNF4     END OF STRING , USE DEFAULT 
      LDA IPBUF+3   NULL INPUT? 
      SZA,RSS       NO
      JMP OPNF4     YES , USE DEFAULT 
      LDA N6        GET THE NEG COUNT AGAIN 
      JSB MOVE      AND MOVE THE NAME TO THE LIST BUFFER
      DEF IPBUF+0   SOURCE OF MOVE
      DEF FILE4+0   LIST FILE NAME ADDRESS
      LDA TYPE4     GET THE PARSE TYPE WORD 
      AND P3        KEEP ONLY THE LEAST TWO BITS
      STA TYPE4     AND SAVE FOR LATER
      ERA,SLA       IS IT A FILE OR AN LU ? 
      JMP OPNF4     FILE, LET'S START 
* 
LIERR JSB EXEC      NO , ILLEGAL NAME 
      DEF *+5 
      DEF P2
      DEF DFTLU+0 
      DEF LSTER 
      DEF P13 
      JMP EXIT3 
* 
*     PROCESS AND OPEN LIST FILE
* 
OPNF4 LDA FILE4 
      AND HIMSK     KEEP ONLY UPPER BYTE
      CPA ACENT     IS IT A ' 
      JMP OPEN4     YES , GO OPEN THE FILE
* 
CRAT4 JSB CREAT     NO , SO CRATE THE FILE
      DEF *+8 
      DEF LDCB4+0 
      DEF IERR4+0 
      DEF FILE4+0 
      DEF P150
      DEF P3
      DEF F4SC+0
      DEF F4DSC+0 
      SSA,RSS       ANY ERROR?
      JMP OPEN4     NO DO AN EXPLICT OPEN 
F4ERR SSA,RSS       ANY ERROR ? 
      JMP F4TST     NO ,
F4ER2 JSB CLOS4     YES , SO CLOSE THE OUTPUT FILE
      LDA N6        MOVE FILE NAME
      JSB MOVE
      DEF FILE4+0   SOURCE
      DEF LSTNM     DESTINATION 
      LDA IERR4     ERROR CODE IN A 
      CMA,INA       MAKE POSITIVE 
      JSB CNV99 
      STA LSTER+4 
      JMP LIERR 
* 
* 
OPEN4 JSB OPEN      OPEN THE LIST FILE
      DEF *+7 
      DEF LDCB4+0 
      DEF IERR4+0 
      DEF FILE4+0 
      DEF IPTN2+0   OPEN OPTION 
      DEF F4SC+0
      DEF F4DSC+0 
* 
      CPA N6        DID WE FIND THE FILE
      JMP CRAT4     NO , GO CRATE IT
      JMP F4ERR     SEE IF ANY ERROR
* 
F4TST JSB WRITF     TEST WRITE THE LIST FILE FOR SEC CODE 
      DEF *+5 
      DEF LDCB4+0 
      DEF IERR4+0 
      DEF SDCB3+0 
      DEF P1
* 
      SSA           ANY ERROR?
      JMP F4ER2     YES , ERROR 
* 
*     OUTPUT FILE NAMR
* 
      JSB NAMRR     NO , NOW GET THE OUTPUT FILE NAME 
      SSA           END OF STRING 
      JMP GTSNP     YES 
      LDA IPBUF+3   NULL INPUT? 
      SZA,RSS       NO
      JMP GTSNP     YES , USE DEFAULT 
      LDA N6        GET THE NEG COUNT FOR MOVE WORDS
      JSB MOVE      TO THE OUTPUT FILE BUFFER 
      DEF IPBUF+0   SOURCE OF MOVE
      DEF FILE2+0   OUTPUT FILE NAME ADDRESS
      LDA TYPE2     GET THE PARSE TYPE WORD 
      AND P3        KEEP ONLY THE LEAST TWO BIT 
      STA TYPE2     AND SAVE IT FOR LATER 
* 
*     SNAP FILE NAMR
* 
GTSNP JSB NAMRR     GET THE SNAP FILE NAME
      SSA           END OF STRING   ? 
      JMP F1OPN     YES, USE DEFAULT
      LDA IPBUF+3   NULL INPUT? 
      SZA,RSS       NO
      JMP F1OPN     YES , USE DEFAULT 
      LDA N6        GET THE NEG COUNT AGAIN 
      JSB MOVE      AND MOVE THE NAME TO THE SNAP FILE BUFER
      DEF IPBUF+0   SOURCE OF MOVE
      DEF FILE3+0    SNAP FILE NAME ADDRESS 
      LDA TYPE3     GET THE PARSE TYPE WORD 
      AND P3        KEEP ONLY THE LEAST TWO BIT 
      STA TYPE3     AND SAVE FOR LATER
* 
*     PROCESS AND OPEN COMMAND FILE 
* 
F1OPN JSB OPEN      OPEN THE COMMAND FILE 
      DEF *+7 
      DEF CDCB1+0   DATA CONTROL BLOCK
      DEF IERR1+0   ERROR FLAG
      DEF FILE1+0   FILE NAMR 
      DEF IPTN2+0   OPEN OPTION 
      DEF F1SC+0    SECURITY CODE 
      DEF F1DSC+0   CARTRIDGE REF # 
* 
      SSA,RSS       ANY ERRORS ?
      JMP F2OPN     NO
      LDB P1
      STB FATAL     SET THE FATAL FLAG
      LDB F1        GET THE FILE NAME ADDRESS 
      JSB FLERR     YES 
      JMP ABOR      AFTER ERROR ON COMMAND FILE , HANG IT UP
* 
*     PROCESS AND OPEN THE SYSTEM OUTPUT FILE 
* 
F2OPN LDA TYPE2     CHECK OUTPUT FILE NAME
      ERA,SLA       IT IS A FILE OR AN LU ? 
      JMP OPNF2     A FILE, OPEN IT 
      LDA N15       AN LU , IT SHOULD BE A FILE 
      STA IERR2     ECHO ILLEGAL FILE 
      JMP F2ER
* 
OPNF2 LDA FILE2 
      AND HIMSK     KEEP ONLY UPPER BYTE
      CPA ACENT     IS IT A ' 
      JMP PURG2     YES , GO PURGE THE FILE 
* 
CRAT2 JSB CREAT     NO , SO CRATE THE FILE
      DEF *+8 
      DEF ODCB2+0 
      DEF IERR2+0 
      DEF FILE2+0 
      DEF P512
      DEF P1
      DEF F2SC+0
      DEF F2DSC+0 
F2ERR SSA,RSS       ANY ERROR ? 
      JMP F3OPN     NO
F2ER  JSB CLOS2     YES , SO CLOSE THE OUTPUT FILE
      LDB F2        GET THE FILE NAME ADDRESS TO B
      LDA IERR2     ERROR CODE IN A 
      JSB FLERR     DO FILE ERROR THING 
      CLA,INA 
      STA FATAL 
      JMP F3OPN 
* 
PURG2 JSB PURGE     PURGE THE OUTPUT FILE 
      DEF *+6 
      DEF ODCB2+0 
      DEF IERR2+0 
      DEF FILE2+0 
      DEF F2SC+0
      DEF F2DSC+0 
* 
      SSA,RSS       ANY ERROR?
      JMP CRAT2     NO
      CPA N6        YES , DID WE FIND THE FILE? 
      JMP CRAT2     NO , GO CRATE IT
      JMP F2ERR     OTHER ERRORS
* 
*     PROCESS AND OPEN SNAP FILE
* 
F3OPN LDA TYPE3     CHECK SNAP FILE NAME
      ERA,SLA       IT IS A FILE OR AN LU ? 
      JMP OPNF3     A FILE, OPEN IT 
      LDA P1
      STA FATAL     SET THE FATAL FLAG
      LDA N15       AN LU , IT SHOULD BE A FILE 
      STA IERR3     ECHO ILLEGAL FILE 
      JMP F3ER
* 
OPNF3 LDA FILE3 
      AND HIMSK     KEEP ONLY UPPER BYTE
      CPA ACENT     IS IT A ' 
      JMP OPEN3     YES , GO OPEN THE FILE
* 
CRAT3 JSB CREAT     NO , SO CRATE THE FILE
      DEF *+8 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF FILE3+0 
      DEF P35 
      DEF P3
      DEF F3SC+0
      DEF F3DSC+0 
F3ERR SSA,RSS       ANY ERROR ? 
      JMP F3TST     NO ,
F3ER  JSB CLOS3     YES , SO CLOSE THE OUTPUT FILE
      LDB F3        GET THE FILE NAME ADDRESS TO B
      LDA IERR3     ERROR CODE IN A 
      JSB FLERR     DO FILE ERROR THING 
      CLA,INA 
      STA FATAL 
      JMP EREAD 
* 
OPEN3 JSB OPSNP     OPEN THE SNAP FILE
      CPA N6        DID WE FIND THE FILE
      JMP CRAT3     NO , GO CRATE IT
      JMP F3ERR     SEE IF ANY ERROR
* 
F3TST JSB WRITF     TEST WRITE TO SNAP FILE 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF FILE3+0 
      DEF P12 
* 
      SSA,RSS       ANY ERROR?
      JMP INIT0     NO
      JMP F3ER
* 
INIT0 JSB CLOS3     CLOSE SNAP FILE FOR NOW 
      CLA 
      STA ADCB3,I 
      LDA ADCB3 
      STA B 
      INB 
      JSB .MVW
      DEF P128
      NOP 
* 
      LDB N512
      STB CNT1      INITIALIZE THE OUTPUT FILE TO ZERO
INIT5 JSB WRITF 
      DEF *+5 
      DEF ODCB2+0 
      DEF IERR2+0 
      DEF SDCB3+0 
      DEF P128
* 
      SSA,RSS       ANY ERROR?
      JMP INIT8     NO
      JMP F2ER      YES , ECHO ERROR
* 
INIT8 ISZ CNT1
      JMP INIT5 
* 
EREAD LDA FATAL     ANY FATAL ERROR ? 
      SLA 
      JMP ABOR      YES , GO ABORT
* 
      SKP 
* 
*     ALL FILES OK
* 
      JSB RWNDF     REWIND LIST FILE AFTER TEST WRITE 
      DEF *+2 
      DEF LDCB4+0 
* 
      JSB FTIME     GET SYSTEM TIME 
      DEF *+2 
      DEF BUFF
* 
      LDA SLONG     ECHO THE RUN STRING 
      LDB DSTRG 
      JSB DRKEY 
* 
      JSB SPACE 
* 
      LDA P34       ECHO THE DATE AND TIME
      LDB TIMAD 
      JSB DRKEY 
* 
      JSB SPACE 
* 
      LDA P14 
      STA CONSL     ECHO TO CONSOL
      LDB DMES0 
      JSB DRKEY     OUTPUT " RTLGN - XL " 
* 
* 
      SKP 
* 
*     GET LINKING SPECIFICATION 
* 
      CLA,INA 
      STA CPL.L     DEFAULT TO CURRENT PAGE LINKING 
      JSB SPACE 
      LDA P14 
      LDB MES1      LINKING OPTION? 
      JSB DRKEY 
      JSB READ
      JMP EXIT      END OF FILE 
      LDA OP? 
      CPA LI        IS IT LINK? 
      RSS           YES 
      JMP LNKER     NO , LINK SPECIFICATION ERROR 
      JSB NAMRR     GET THE OPTIONS 
      SSA 
      JMP LNKER     END OF STRING, NO SPECIFICATION 
      CLA 
      LDB IPBUF     GET THE INPUT 
      CPB BP        IS IT BASE PAGE LINKAGE ? 
      JMP LNK30     YES 
      CPB CP        IS IT CP? 
      JMP GFMEM     YES 
      JMP LNKER     NO , USE CP AND ISSUE WARNING 
* 
LNK30 STA CPL.L     0/1 DON'T USE/ USE CURRENT PAGE LINK
      JMP GFMEM 
* 
LNKER LDA P1        DEFAULT TO CURRENT PAGE LINK
      JSB LDRER 
      JMP GFMEM 
* 
MES1  DEF *+1 
      ASC 7,* CP/BP LINK? 
* 
      SKP 
* 
*     GET FREE MEMORY 
* 
GFMEM JSB LIMEM 
      DEF *+4 
      DEF ANOP
      DEF FWFM+0    ADDRESS OF PROG'S HIGHEST WD+1
      DEF LWFM+0    # OF WORDS AFTER PROG END 
* 
      LDA LWFM      # OF WDS AFTER FREE MEMORY
      ADA N1
      ADA FWFM      FIRST WORD OF FREE MEMORY 
      STA TDBP      TOP OF DUMMY BASE PAGE
      STA CSDBP     SET CURRENT SYSTEM DUMMY BP 
      ADA N1023     ALLOW 1024 LOCATION FOR DUMMY BP
      STA LDBP      SET LOWER BOUND OF DUMMY BP 
      ADA BPFWA 
      STA CUDBP     SET CURRENT USER DUMMY BP 
      LDA LWFM      CHECK FOR OVERFLOW
      ADA N1024 
      SSA           IS IT POSITIVE? 
      JMP GTF10     NO , OVERFLOW 
      ADA FWFM      YES , ADD FIRST WD FREE MEMORY
      STA LWFM      SET LAST WORD OF FREE MEMORY
* 
      LDA N1024     ZERO OUT DUMMY BASE PAGE
      STA CNT1
      CLA 
      LDB LDBP      LOWER BOUNDS OF DUMMY BP
LP    STA B,I 
      INB 
      ISZ CNT1      ANY MORE? 
      JMP LP        YES 
* 
      JMP LSEG2     GO LOAD SEGMENT 2 
GTF10 CLA 
      JSB LDRER     PARTITION OVERFLOWED
      JMP EXIT
* 
LSEG2 LDA B101      PUT DATE AND TIME IN 101B TO 121B 
      LDB B121
      JSB SETCR 
* 
      JSB EXEC
      DEF *+3       LOAD SEGMENT 2
      DEF P8
      DEF SEG2      L20G2 
* 
      SKP 
      SKP 
* 
* 
*     LDRER OUTPUTS ERRORS TO THE LIST DEVICE 
* 
*     CALLING SEQUENCE: 
*                       A-REG = +VE ERROR CODE
*                       JSB LDRER 
*                       RETURN
* 
* 
LDRER NOP 
      MPY P3        CALCULATE OFFSET INTO LIST OF ERROR CODE
      ADA EMESS     ADD STARTING ADDRESS OF LIST
      STA B         AND SAVE IN B-REG FOR OUTPUT
      LDA P6        LENGTH OF MESSAGE IN CHARACTERS 
      JSB DRKEY     PRINT IT
      ISZ ERRCT     BUMP UP ERROR COUNT 
      JSB ASTRX     PRINT ******
      JSB SPACE 
      JMP LDRER,I   AND RETURN
* 
* 
EMESS DEF *+1 
      ASC 3,OV FIX  PARTITION OVERFLOWED
      ASC 3,LNK ER  LINK ERROR , DEFAULT TO CP LINKING
* 
      SKP 
* 
* 
*     OUTPUT CONSECUTIVE CORE LOCATIONS 
* 
*     LDA START     STARTING ADDRESS
*     LDB END       ENDING ADDRESS
*     JSB SETCR     DATA WILL BE AT BUFF0 
* 
SETCR NOP 
      STA ZTEM5    STARTING ADDRESS 
      CMA,INA       NEGATE STARTING ADDRESS 
      ADA B         ADD ENDING ADDRESS
      INA           ADD 1 FOR TOTAL # TO OUTPUT 
      CMA,INA       NEGATE FOR COUNT
      STA CNT10 
      LDA TIMAD     ADDRESS OF DATA 
      STA CNT20 
SET10 LDA CNT20,I   GET DATA
      LDB ZTEM5     GET ADDRESS 
      JSB STCR1     OUTPUT
      ISZ CNT20     NEXT DATA WORD
      ISZ ZTEM5     NEXT ADDRESS
      ISZ CNT10     ANY MORE OUTPUT ? 
      JMP SET10     YES 
      JMP SETCR,I   NO
* 
      SKP 
* 
*     CONTANTS
* 
P1    DEC 1 
P2    DEC 2 
P3    DEC 3 
P6    DEC 6 
P8    DEC 8 
P12   DEC 12
P13   DEC 13
P14   DEC 14
P34   DEC 34
P35   DEC 35
P128  DEC 128 
P150  DEC 150 
P512  DEC 512 
* 
N1    DEC -1
N6    DEC -6
N15   DEC -15 
N512  DEC -512
N1023 DEC -1023 
N1024 DEC -1024 
* 
B101  OCT 101 
B121  OCT 121 
* 
BP    ASC 1,BP
CP    ASC 1,CP
LI    ASC 1,LI
SEG2  ASC 3,L20G2 
* 
ANOP  NOP 
CNT1  NOP 
CNT10 NOP 
CNT20 NOP 
ZTEM5 NOP 
COUNT DEC 13
* 
ACENT OCT 23400 
HIMSK OCT 177400
* 
LSTER ASC 9,  FMGR -15 ON FILE
      OCT 20040 
LSTNM OCT 20040 
      OCT 20040 
      OCT 20040 
* 
DMES0 DEF *+1 
      ASC 7,* RTLGN - XL
TIMAD DEF BUFF0 
BUFF0 OCT 20040 
      OCT 20040 
BUFF  BSS 30
* 
      SKP 
* 
*      BASE PAGE COMMUNICATION VALUES 
* 
A     EQU 0 
B     EQU 1 
* 
      SPC 3 
      END L20G1 
                                                                                                                                                                                                                              