ASMB,R,L,C
* 
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  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-L GENERATOR SEGMENT 2 
      NAM RTLG2,5 92070-1X079 REV.2026 800508 
* 
*     NAME:    RTE L  GENERATOR SEGMENT 2 
*     SOURCE:  92070-18079
*     PGMR:    B.C. 
* 
      ENT RTLG2 
* 
* 
      EXT EXEC,.ENTR
      EXT OPEN,CLOSE,READF,WRITF,POSNT,RWNDF
      EXT L.BUF,LNKDR,CNUMO,CNUMD 
* 
      EXT DSTRG,IPBUF,STRNG,ISTRC,DIPBF 
      EXT OP?,IPTN2,ABOR,ASTRX
      EXT EXIT,#ENPT
      EXT SDCB3,IERR3,F3
      EXT ODCB2 
      EXT CLOS3,NLIB,CROM,AFWBG,ABGBP 
* 
      EXT SEGNM,COMFG,LNKDR,BGFLG,SIDCK 
      EXT FWFM,LWFM,BPFWA,COMAD,COMLG 
      EXT TDBP,LDBP,CSDBP,CUDBP 
* 
      EXT READ,FLERR,NAMRR,DRKEY,SPACE,MOVE 
      EXT DLOCC,LOCC,DBLOC,BPLOC,NUMID,ADDID
      EXT L.OUT,L.INT,L.LUN,OPSNP 
      EXT L.REL,L.CLS,L.ADD,L.LDF,L.MAT,L.SYE 
      EXT LBS.L,CBP.L,IGN.L,NM1.L,NM2.L,NM3.L,NM4.L 
      EXT TH1.L,TH2.L,NOR.L,PRI.L,PGT.L,FXN.L,PGL.L 
      EXT SRIPX,FXS.L,.CBT
      EXT ERRCT,CONSL,AINT,IP3,WRDCT,STCR1
      EXT BPR.L,CROM,PRERR,MAXAD,LENTF,INL.L
* 
      SUP PRESS EXTRANIOUS LISTING
* 
      SKP 
* 
F5    DEF FILE5 
FILE5 BSS 3         FILE NAME 
TYPE5 NOP 
F5SC  NOP 
F5DSC NOP 
* 
RDCB5 BSS 144 
IERR5 NOP 
DDCB5 DEF RDCB5 
* 
      SKP 
RTLG2 LDA SEGNM 
      CPA P5        SECOND TIME INTO SEGMENT? 
      JMP TIME2     YES 
* 
*     INITIALIZE LOADER LIBRARY 
* 
*     DO NOT REMOVE ANY OF THE NEXT 22 WORDS
* 
IDNAM JSB L.INT     NO
      DEF *+9 
      DEF FWFM+0    1ST WORD OF FREE SPACE
      DEF LWFM+0    LAST WORD OF FREE SPACE 
      DEF B1777     FIRST WORD OF BASE PAGE ( DECREASING )
      DEF COMAD+0   ADDR OF SYSTEM COMMON = 0 IF LOCAL
      DEF COMLG+0   LENGTH OF SYSTEM COMMON OR 0
      DEF B2000     LOAD POINT ADDRESS
      DEF CROM      TOP OF MEMORY 
      DEF TABLE     TABLE OF ADDRESSES OF SUBR. 
* 
      CCA 
      STA LNKDR     SYSTEM LINK DIRECTION 
      STA COMFG     UNLABEL COMMON IN FLAG
* 
      LDA B2000 
      STA LOCC
* 
      JSB SPACE 
      LDA P10 
      STA CONSL     ECHO ON CONSOLE 
      LDB DMES4     SYSTEM RELOCATION 
      JSB DRKEY     OUTPUT MESSAGE
      JSB SPACE 
* 
      SKP 
TIME2 CCA 
      STA INL.L     SET USE INDIRECT LINKS FOR JSB INST.
NXTOP JSB READ      READ INPUT
      JMP EXIT      END OF FILE 
      LDA OP?       GET THE OPCODE
      LDB OUTID 
      SLB,RSS       OUT OF ID SEGMENTS? 
      JMP CMPAR     NO , GO ON
      CPA EN        YES , IS THE COMMAND 'END' ?
      JMP END       YES , IT IS AN END
      JMP RTERR     NO , GIVE ' NO ID ' ERROR MESSAGE 
CMPAR CPA MS        IS IT A MULTIPLE SCAN?
      JMP MSERC     YES 
      CPA SE        IS IT SEARCH? 
      JMP SERCH     YES 
      CPA RE        IS IT RELOCATION? 
      JMP RELOC     YES 
      CPA DI        IS IT DISPLAY?
      JMP DISP      YES 
      CPA LO        IS IT SET LOCC? 
      JMP LOSET     YES 
      CPA BL        IS IT SET BLOCC?
      JMP BPSET     YES 
      CPA EN        IS IT END?
      JMP END       YES 
      CPA CO        IS IT UNLABEL COMMON? 
      JMP UNCOM     YES 
      CPA NE        IS IT NEXT RT PROG? 
      JMP END       YES , DO IT LIKE AN END 
      CPA ST        IS IT START UP PROG?
      JMP SRTPR     YES 
      CPA SC        IS IT USE SYSTEM COMMON?
      JMP SCOM      YES 
      CPA DB        IS IT DBUG ?
      JMP DBUG      YES 
      CPA LE        IS IT LENTRY ( LIST ENTRY PT ) ?
      JMP LENTY     YES 
WHAT? CLA 
      JSB LDRER     WHAT IS IT ?? 
      JMP NXTOP 
* 
DMES4 DEF MES4
MES4  ASC 5,* SYS REL 
* 
SEG3  ASC 3,RTLG3 
* 
      SKP 
* 
END   LDA LNKDR     GET LINK DIRECTION
      CPA N1        SYSTEM LINK?
      JMP EN90      YES 
* 
      LDA NOR.L 
      CPA N1        ANYTHING RELOCATED? 
      JMP EN75      NO
      LDA PRENT     YES , IS THERE A PRIMARY ENTRY POINT? 
      SZA,RSS 
      JMP TAERR     NO , TRANSFER ADDRESS ERROR 
* 
      LDA APNDB 
      SZA,RSS       WANT TO APPEND DBUG?
      JMP CKUDF     NO
      JSB L.SYE     YES 
      DEF *+6       ENTER .DBUG INTO SYM TBL AS UNDEFINED 
      DEF DB1X      ADDRESS OF .DBUG
      DEF P2
      DEF ZERO
      DEF P1
      DEF RESLT 
* 
CKUDF JSB UNDF?     CHECK FOR UNDEF 
      JMP OTUBP     NO , UNDEFS EVERYTHING IS FINE
* 
      JSB OPSNP     YES , OPEN THE SNAP FILE
* 
      JSB MRLOK     SEARCH SNAP FOR MEM RES ENT. PT.
      LDA TH2.L 
      STA LOCC      UPDATE LOCC 
* 
      LDA SCOMF     GET SYS COM FLAG
      STA SCBIT     SAVE IT FOR ID SEG SC BIT 
      SZA           USER SPECIFIED SYS COM? 
      JSB SYLOK     YES , GET SYS COM ENTRIES 
      LDA TH2.L 
      STA LOCC      UPDATE LOCC 
SCNAG CLA 
      STA SCOMF 
      STA SUBLD     CLEAR ANY SUBROUTINE LOADED IN LIB SCAN 
      JSB LBLOK     SEARCH THE SNAP LIBRARY 
      LDA TH2.L 
      STA LOCC      UPDATE LOCC 
* 
      JSB SYLOK     SEARCH SNAP FOR SYSTEM ENTRIES
      LDA TH2.L 
      STA LOCC      UPDATE LOCC 
      JSB UNDF?     ANY UNDEFINED?
      JMP OKCL3     NO , UNDEFINED EVERTHING OK 
      LDA SUBLD     YES , UNDEFINED 
      SZA           ANY SUBROUTINE LOADED DURING THE LIB SCAN?
      JMP SCNAG     YES , TRY LIBRARY SCAN AGAIN
      JSB DSUND     NO , DISPLAY ANY UNDEFINED
OKCL3 JSB CLOS3 
* 
*     OUTPUT USER BP LINKS
* 
OTUBP LDA STRUP 
      SZA,RSS       IS THIS THE START UP PROG?
      JMP OUTBP     NO
      LDA ADDID     ID SEGMENT ADDRESS
      LDB ABOOT     ADDRESS OF $BOOT
      JSB STCR1 
* 
OUTBP LDB CBP.L     GET CURRENT USER LINK 
      CPB BPFWA     USED ANY LINKS? 
      JMP EN55      NO
      ADB N1
      STB TCBPL     YES , OUTPUT THEM 
      ADB LDBP      ADD LOWER BOUND OF DUMMY BP 
EN50  STB TSDBP     SAVE DUMMY BP LOCATION
      LDA B,I       GET THE LINK VALUE
      LDB TCBPL     GET THE BP ADDRESS
      JSB STCR1     OUTPUT THE LINK 
      LDA TCBPL     GET THE ADDRESS 
      CPA BPFWA     ARE WE FINISH?
      JMP EN55      YES 
      ADA N1        NO
      STA TCBPL     SAVE THE REAL BP ADDRESS
      LDB TSDBP     GET THE NEXT VALUE
      ADB N1
      JMP EN50      PLAY IT AGAIN SAM 
* 
EN55  LDA BGLOD     GET FLAG FOR BG LOAD
      SZA,RSS       IS THIS A BG LOAD?
      JSB SRFI3     NO , CHECK IF THIS A INTERRUPT PROG 
      JSB BUFCL 
      NOP 
* 
      JSB CKDUP     CHECK FOR DUPLICATE PROG NAM
      JMP DUPGM     YES , DUP PROG NAM
* 
      CCA 
      STA L.BUF+0   ID 1 LIST LINKAGE 
      LDA STRUP     GET STARTUP FLAG
      SZA,RSS 
      JMP EN70      NOT STARTUP 
      LDA TEMP1 
      STA L.BUF+1   ID 2
      LDA TEMP2 
      STA L.BUF+2   ID 3
      LDA TEMP3 
      STA L.BUF+3   ID 4
      LDA TEMP4 
      STA L.BUF+4   ID 5
      LDA TEMP5 
      STA L.BUF+5   ID 6
EN70  LDA PRIOR 
      STA L.BUF+6   ID 7 PROIRITY 
      LDA PRENT 
      STA L.BUF+7   ID 8 PRIMARY ENTRY POINT
      LDA PNAME 
      STA L.BUF+12  ID 13 PROG NAME CHAR 1 & 2
      LDA PNAME+1 
      STA L.BUF+13  ID 14 PROG NAME CHAR 3 & 4
      LDA PNAME+2 
      AND HIMSK 
      STA L.BUF+14  ID 15 PROG NAME CHAR 5
      LDA M1000 
      LDB SCBIT 
      SZB           USING SYSTEM COMMOM?
      IOR B4000     YES , SET SC BIT
      STA L.BUF+15  ID 16 MR BIT & SC BIT 
      LDA LOMAN 
      STA L.BUF+20  ID 21 LOW MAIN
      LDA TH2.L 
      STA L.BUF+21  ID 22 HIGH MAIN + 1 
      STA L.BUF+22  ID 23 SET TO HIGH MAIN + 1
      LDA LOBP
      STA L.BUF+23  ID 24 LOW BP
      LDA CBP.L 
      STA L.BUF+24  ID 25 HIGH BP + 1 
      CLA,INA 
      STA L.BUF+28  ID 29 CONSOLE LU = 1
* 
      ISZ #PGM
      LDB ADDID 
      LDA #PGM
      CPA P22       # OF PROG EXCEEDS 22 ?
      JMP EN73      YES , DON'T PUT ID ADDRESS
      ADA N1
      ADA DIDNM     BUFFER ADDRESS
      STB A,I       ID NAM ADDRESS
EN73  STB A 
      ADB P29 
      STB ADDID 
      JSB SETCR     OUTPUT THE ID SEGMENT 
      ISZ ADDID 
* 
      LDA NUMID     USED UP ONE ID SEGMENT
      ADA N1
      STA NUMID 
* 
      LDA BGFLG     LOADED A BACKGND PROG?
      SZA,RSS 
      JMP EN75      NO
* 
      LDA ADDID     YES , FILL CONTENT OF $BGRS 
      ADA N30          WITH ID SEGMENT ADDRESS
      LDB ABGRS 
      JSB STCR1 
* 
EN75  LDA CBP.L 
      STA BPFWA     UPDATE 1ST  WORD OF BP
EN80  LDA BGFLG     LOADING BACKGND?
      SZA 
      JMP BGPRG     YES 
      LDA OP?       GET OP CODE 
      CPA EN        END FOR RT PROG?
      JMP ENDRT     YES , END RT PROG 
      JMP RT10      NO , NEXT RT PROG 
* 
TAERR LDA P19       NO TRANSFER ADDRESS ERROR 
      JSB LDRER 
      JMP EN75
* 
DUPGM LDA P22       DUPLICATE PROG NAM
      JSB LDRER     PRINT " DU PGM "
      JMP EN75
* 
EN90  JSB DSUND     DISPLAY ANY UNDEFINED 
      LDA CBP.L     REAL CURRENT BASE PAGE
      INA 
      STA TCBPL     TEMPORY CURRENT BASE PAGE 
      LDB CSDBP     GET CURRENT SYS. DUM BP 
      CPB TDBP      HAVE WE RELOCATED ANYTHING? 
      JMP EXIT      NO , BYE BYE
      LDB A         GET CURRENT REAL BP 
      ADB LDBP      ADD LOWER DUMMY BP
EN100 STB TSDBP     DUMMY BP LOCATION 
      LDA B,I       GET VALUE 
      LDB TCBPL 
      JSB STCR1     OUTPUT
      LDA TCBPL 
      INA 
      STA TCBPL 
      LDB TSDBP 
      INB 
      CPB TDBP
      RSS 
      JMP EN100 
* 
      ISZ SEGNM 
* 
      LDA SEGNM 
      CPA P1
      RSS           YES , LOAD SEGMENT 3
      JMP EN110     NO
* 
      JSB EXEC
      DEF *+3 
      DEF P8
      DEF SEG3
* 
EN110 CPA P6        CPA P6 LABEL COMMON FLAG? 
      RSS           YES 
      JMP EN120     NO
      LDA D$LCO 
      LDB LOCC
      JSB FSYMB     FIND & PATCH ADDRESS OF LABEL COMMON
      JSB MSENT     MISSING SYSTEM ENTRY POINT
      JMP EN300 
* 
EN120 CPA P7        BLANK COMMON FLAG?
      RSS           YES 
      JMP EN300     NO
      LDA D$BCO 
      LDB LOCC
      STB CBCOM     SAVE ADDRESS OF $BCOM 
      JSB FSYMB     FIND & PATCH ADDRESS OF BLANK COMMON
      JSB MSENT     MISSING SYSTEM ENTRY POINT
      CLA 
      STA INL.L     CLEAR USE OF INDIRECT FOR JSB INST. 
* 
* 
EN300 JMP NXTOP     GET NEXT OPERATION
* 
* 
* 
D$LCO DEF $LCOM 
$LCOM ASC 3,$LCOM 
* 
D$BCO DEF $BCOM 
$BCOM ASC 3,$BCOM 
* 
D$BOT DEF $BOOT 
$BOOT ASC 3,$BOOT 
* 
      SKP 
* 
* 
ENDRT CLA,INA 
      STA BGFLG 
      LDA LOCC
      STA CFWBG     SAVE ADDRESS OF FWBG
      LDB AFWBG 
      JSB STCR1     PATCH $FWBG (1ST WD OF BACKGND) 
* 
      LDA BPFWA 
      STA CBGBP     SAVE ADRESS OF BPFWA
      LDB ABGBP 
      JSB STCR1     PATCH $BGBP (1ST WD OF BACKGND BP)
* 
      LDA P2
      STA IPTN2     REOPEN THE SNAP FILE WITH UPDATE MODE 
      JSB OPSNP     OPEN THE SNAP FILE
* 
      JSB READF     READ IN HEADER RECORD 
      DEF *+6 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF STRNG+0 
      DEF P12 
      DEF LEN 
* 
      LDB DSTRG 
      LDA #ENPT     # OF SYS. MODULE & SYS COM ENT. PT. 
      ADA #MREP     ADD # OF RP,ABS,MR ENTRY POINT
      STA B,I 
      INB 
      LDA #MREP     # OF RP,ABS & MEM RES ENT. PT.
      ALF,ALF       SHIFT TO UPPER BYTE 
      IOR NLIB      # OF LIBRARY IN SNAP
      STA B,I 
      INB 
      LDA CROM      LAST WORD OF MEMORY 
      STA B,I 
      INB 
      LDA LOCC      CONTENTS OF $FWBG 
      STA B,I 
      ADB P3
      LDA BPFWA     CONTENTS OF $BGBP 
      STA B,I 
      ADB P4
      LDA SIDCK     SYS ID CHECK
      STA B,I 
      INB 
      STB CNT20     SAVE ADDRESS OF CK SUM
* 
      LDA N10 
      STA CNT10     CHECKSUM FOR HEADER RECORD
      LDB DSTRG 
      LDA B,I       GET FIRST VALUE 
CKSUM INB 
      ADA B,I       ADD NEXT VALUE
      ISZ CNT10     FINISH ?
      JMP CKSUM     NO , ADD NEXT WORD
      STA CNT20,I   YES , PUT IT IN WD 12 OF RECORD 1 
* 
      JSB RWNDF     REWIND TO RECORD 1
      DEF *+3 
      DEF SDCB3+0 
       DEF IERR3+0
* 
      JSB WRITF     WRITE OUT HEADER RECORD 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF STRNG+0 
      DEF P12 
* 
      JSB CSPER     CHECK FOR SNAP FILE WRITE ERROR 
* 
* 
      JMP BGPRG     GET BACKGND PROG
      SKP 
* 
MSSUB NOP 
* 
MSERC CLA           IS A MULTIPLE SCAN
      STA MULT
      CMA 
      STA LBS.L 
      JMP DOPRS 
* 
RELOC CLA           NOW SET A FEW FLAGS 
      STA LBS.L     NOT A LIBRARY SCAN
      JMP DOPRS     NOW GO DO THE PARSE 
SERCH CCA           NOW SET A FEW FLAGS 
      STA LBS.L     IS A LIBRARY SEARCH 
      STA MULT      NOT A MULTIPLE SCAN 
* 
DOPRS CLA           SET A FEW FLAGS 
      STA IGN.L     DON'T IGNOR THIS MODULE 
      STA TP7FG     CLEAR PROG TYPE 7 FLAG
      STA SMDNM     CLEAR SEARCH MODULE NAME
      STA MODFD     CLEAR MODULE FOUND FLAG 
      CCA 
      STA NM1.L     NAM MUST BE FIRST 
      STA NOR.L     SUBR LOADED IN THIS SCAN
      STA FSCOM     DON'T ACCEPT SYS. COM. COMMD AFTER THIS 
      STA FDBUG     DON'T ACCEPT DBUG COMMD AFTER THIS
      LDA LOCC
      STA TH2.L 
* 
      LDB REL1S 
      SSB,RSS       1ST REL COMMD IN PROG LOAD? 
      JMP SNPCK     NO
      STA LOMAN     YES , SAVE LOCC IN LOMAN FOR ID SEG 
      LDA CBP.L     GET CURRENT BASE PAGE AND SAVE FOR ID SEG 
      STA LOBP      LOW BP FOR ID SEG 
      CLA 
      STA REL1S     CLEAR 1ST REL COMMD 
* 
* IF PROGRAM STARTS ON SAME PAGE AS THE END OF MEMORY RESIDENT LIBRARY
* THEN FORCE  JSB EXT DIRECT  INSTRUCTIONS TO USE AN INDIRECT LINK. 
* THIS PREVENTS A SHARED ROUTINE FROM BEING INTERRUPTED ON THE CALL!
* 
      CLB 
      LDA CFWRT 
      ADA N1        CALCULATE LAST WORD OF MEM RES. LIB.
      AND B7600 
      STA TEMOP 
      LDA TH2.L     FIRST INSTRUCTION WORD OF PROGRAM 
      AND B7600     ISOLATE PAGE BITS 
      CPA TEMOP     SAME PAGE AS MEM RES LIB? 
      CCB           YES 
      STB INL.L     0/-1, NO/YES FORCE JSB EXT TO INDIRECT
* 
SNPCK LDA SNPLB     GET SNAP LIBRARY FLAG 
      SZA           SEARCHING SNAP LIBRARY
      JMP MVIPB     YES 
      JSB NAMRR     NO PARSE THE INPUT
      SSA           WAS THERE ANYTHING TO PARSE ? 
      JMP WHAT?     NO INPUT
* 
MVIPB LDA N6        GET THE WORD COUNT
      JSB MOVE      MOVE THE NAMR TO THE DCB AREA 
      DEF IPBUF+0   SOURCE
      DEF FILE5     DESTINATION 
      LDA TYPE5     GET THE TYPE WORD 
      AND P3        KEEP ONLY THE LEAST 2 BITS
      STA TYPE5 
* 
      LDA SNPLB     GET SNAP LIBRARY FLAG 
      SZA           SEARCHING SNAP LIBRARY
      JMP OPREL     YES 
      JSB NAMRR     GET POSSIBLE MODULE NAME
      SSA           IS THERE A NAME?
      JMP OPREL     NO NAME , GO OPEN REL FILE
* 
      LDA DIPBF     CHECK FOR LEGAL FILE NAME 
      ADA P3
      LDA A,I 
      AND P3
      SZA,RSS       IS IT A NULL PARM?
      JMP OPREL     YES , NULL DO SEARCH
      CPA P3        IS THIS A ASCII NAME? 
      RSS           YES , SAVE IT 
      JMP MODNM     NO, ERROR ILLGAL MODULE NAME
      LDA N3        MOVE FILE NAME
      JSB MOVE       MOVE IT TO MDNAM 
      DEF IPBUF+0 
DMDNM DEF MDNAM 
      CLA,INA 
      STA SMDNM     SET FLAG TO SEARCH FOR IT 
* 
* 
* 
OPREL JSB OPEN      OPEN THE FILE ! 
      DEF *+7 
      DEF RDCB5     DCB 
      DEF IERR5     ERROR FLAG
      DEF FILE5     ASCII FILE NAME 
      DEF IPTN1     READ OPTION 
      DEF F5SC      SECURITY CODE 
      DEF F5DSC     CART REF #
      SSA,RSS       ANY ERROR IN THE READ ? 
      JMP L.MOR     NO
      LDB F5        YES , GET THE FILE NAME 
      JSB FLERR     AND REPORT
      JMP CLSRF 
* 
L.MOR JSB L.RED     READ A RELOCATABLE RECORD 
      DEF *+2 
      DEF FLAG
* 
      LDA FLAG
      SSA           IS IT EOF?
      JMP CKMUL     YES , CHECK FOR MULTIPLE SCAN 
* 
      JSB L.CLS     GO CLASSIFY THE REL. RECORD 
      DEF *+3 
      DEF TYPE
      DEF SBFLD     SUBFIELD REC , GEN=0
      SSA           RTN REC TYPE , 0=OK , -1=CK SUM ERR 
      JMP RELER     CHECK SUM ERROR 
* 
      LDA TYPE
      CPA P1
      JMP REL       RELOCATE THE NAM REC TO SET UP PROG TYPE
* 
      LDA PGT.L     GET PROGRAM TYPE
      CPA P5        IS IT A SEGMENTED PROGRAM?
      JMP SEGER     ERROR , SEGMENTED PROGRAM NOT ALLOWED DURING GEN
      CPA P7        IS IT A TYPE 7 SUBROUTINE ? 
      STA TP7FG     YES SET THE PROGRAM TYPE 7 FLAG 
* 
      LDA SMDNM 
      SZA,RSS       IS THERE A MODULE NAME? 
      JMP CKMRP     NO , MODULE NAME
      LDA NM2.L     YES , SEARCH FOR NAME MODULE
      INA 
      RAL 
      LDB DMDNM     ADDRESS OF MODULE NAME
      RBL 
      JSB .CBT      COMPARE THEM
      DEF P5
      NOP 
      JMP SMDFD     NAME MATCHED
      JMP ENAM      NAME NOT MATCHED
      JMP ENAM      NAME NOT MATCHED
SMDFD CLA,INA 
      STA MODFD     SET MODULE NAM FOUND
* 
CKMRP LDB SEGNM 
      CPB P5        LOADING MEMORY RESIDENT?
      RSS           YES , ALLOW TYPE 6 MODULE ONLY
      JMP REL       NO
* 
      LDA PGT.L     GET PROGRAM TYPE
      CPA P6        IS MODULE TYPE 6? 
      JMP REL       YES 
      CPA P14       IS IT TYPE 14?
      JMP REL       YES 
      CPA P30       IS IT TYPE 30 , RTE IV SSGA?
      JMP REL       YES 
      LDA LBS.L     GET SEARCH FLAG 
      SSA           IS THIS A SEARCH ?
      JMP RELFD     YES , FILE FORWARD
      LDA P17       NO , THIS IS NOT A TYPE 6,14,30 MODULE
      JSB LDRER     GIVE ERROR
      JMP CLSRF     GO CLOSE THE REL. FILE
* 
SEGER LDA P12       ERROR MESSAGE 'SEGMENTED PROG. NOT ALLOWED
      JSB LDRER 
      JMP CLSRF     GO CLOSE THE REL. FILE
* 
RELFD JSB L.RED     READ A RELO RECORD
      DEF *+2 
      DEF FLAG
* 
      LDA FLAG
      SSA           IS IT EOF?
      JMP CKMUL     YES , CHECK FOR MULT. SCAN
* 
      JSB L.CLS     GO CLASSIFY THE REL RECORD
      DEF *+3 
      DEF TYPE
      DEF SBFLD     SUBFIELD RED , GEN = 0
      SSA           RTN REC TYPE , 0=OK , -1=CK SUM ERR 
      JMP RELER     CHECK SUM ERROR 
* 
      LDA TYPE
      CPA P5        IS IT AN END RECORD 
      JMP RELED     YES 
      JMP RELFD     NO , SPACE FORWARD TO NEXT SUBROUTINE 
      SKP 
* 
      SPC 1 
REL   JSB L.REL     NO, SO GO PROCESS RECORD !
      DEF *+2 
      DEF FLAG
* 
      LDA FLAG      GET ERROR FLAG
      SZA           ANY ERROR?
      RSS           YES 
      JMP REL2      NO
* 
RELER CMA,INA       SET ERROR CODE TO POSITIVE
      JSB LDRER     PRINT ERROR 
      JMP CLSRF     CLOSE RELOCATABLE FILE
* 
REL2  LDA TYPE      GET REC TYPE
      CPA P5        IS IT AN END? 
      JMP RELED     YES 
      CPA P2        IS IT AN ENT? 
      RSS           YES 
      JMP L.MOR     NO
      LDA TP7FG 
      CPA P7
      JMP TP7SB     YES , TYPE 7 SUBROUTINE 
      LDA SEGNM 
      CPA P6        IS IT SYSTEM COMMON ? 
      JMP SCOMT     YES , TAG SYMBOL AS SYSTEM COMMON 
      CPA P5        LOADING MEM. RES. LIBRARY ? 
      JMP TRMRL     YES , TAG SYMBOL AS MEM. RES. 
      JMP L.MOR 
* 
TRMRL LDA P8        SET TAG TO BIT 3 MEM. RES.
      STA TAGSM 
      JMP TAGEN 
* 
TP7SB LDA B40 
      STA TAGSM     SET TAG TO BIT 5
      JMP TAGEN 
* 
SCOMT LDA P16 
      STA TAGSM     SET TAG TO BIT 4 SYSTEM COMMON
* 
TAGEN LDB DLBUF     GET # OF ENTRIES
      INB 
      LDA B,I        FROM WD 2 OF ENT RECORD
      AND B17 
      CMA,INA 
      STA CNT10     NEGATE # OF ENT SYMBOL
      ADB P2        POINT TO 1ST SYMBOL 
MRTAG STB SYMAD     SAVE THE SYMBOL ADDRESS 
* 
      JSB L.ADD 
      DEF *+5 
SYMAD DEF * 
      DEF VALUA 
      DEF SADDR 
      DEF RESLT 
      LDA RESLT 
      SZA 
      JMP ERSYM 
      LDB SADDR     SYMBOL ADDRESS
      ADB P3
      LDA B,I       GET WORD 4 OF SYMBOL TABLE
      AND P3        GET S FIELD 
      CPA P2        IS IT UNDEFINED?
      JMP ERSYM     YES, NEXT SYMBOL
      LDA B,I       NO ,GET WORD 4 OF SYMBOL TABLE AGAIN
      IOR TAGSM     TAG SYM NOT TO BE IN SNAP BIT 5 
      STA B,I        OR TAG AS SYSTEM COMMON
ERSYM ISZ CNT10 
      RSS 
      JMP L.MOR 
      LDB SYMAD 
      ADB P4
      JMP MRTAG     MATCH NEXT SYMBOL 
* 
* 
* 
RELED LDA IGN.L     ANY THING LOADED? 
      SZA,RSS 
      RSS 
      JMP ENAM      NO
* 
      ISZ SUBLD     YES, A SUBROUTINE IS LOADED 
      LDA PRI.L     GET PRIMARY ENTRY POINT ADDRESS 
      SZA,RSS       DOES IT HAVE ONE? 
      JMP PMAP      NO
      LDB PRIFG     YES 
      CPB N1        IS IT THE FIRST ONE?
      JMP PREN1     YES 
      JSB DEBUG     NO , CHECK IF THE DEBUG MODULE
      JMP PMAP
PREN1 LDB P1
      STB PRIFG 
      STA PRENT     YES SAVE THE ADDRESS FOR THE RT PROG
      LDB NM4.L,I   GET THE PROGRAM PRIORTY 
      STB PRIOR     AND SAVE IT FOR THE ID SEGMENT
      LDB NM2.L 
      LDA B,I 
      CMA,INA 
      JSB MOVE      GET THE PROGRAM NAME
      DEF NM2.L+2 
      DEF PNAME     AND SAVE IT 
* 
      SKP 
* 
*     PRINT MODULE BOUNDS 
* 
PMAP  JSB BUFCL     BLANK OUT L.BUF 
BLNK2 ASC 1,
* 
      LDB NM2.L     GET MODULE NAME 
      LDA B,I 
      CMA,INA 
      JSB MOVE
      DEF NM2.L+2 
      DEF L.BUF+0 
* 
      JSB CNUMO     CONVERT LOWER BOUND ADDRESS 
      DEF *+3 
      DEF TH1.L+0 
      DEF L.BUF+3 
* 
      LDA TH2.L     GET HIGH ADDRESS +1 OF THIS LOAD
      STA LOCC      STORE IT IN LOCC
      LDA TH1.L 
      CCA           SUBTRACT -1 
      LDB PGL.L     PROGRAM LENGTH
      SZB           IF ZERO 
      SSB           OR NEGATIVE 
      JMP ADTH2     ADDING LWA IS CORRECT (NO LINKS)
      ADA TH1.L     ELSE ADD CURR PROG RELOC ADDR 
      ADA B         ADD LENGTH
      RSS 
ADTH2 ADA TH2.L     ADD LWA PROG
      STA ADDR      STORE IT TEMPORARY
      JSB CNUMO     CONVERT UPPER BOUND ADDRESS 
      DEF *+3 
      DEF ADDR
      DEF L.BUF+6 
* 
      LDB NM3.L 
      LDA B,I 
      SZA,RSS       IS IT ZERO? 
      JMP PM10      YES , NO COMMENTS 
      CMA,INA 
      JSB MOVE
      DEF NM3.L+2 
      DEF L.BUF+10
* 
PM10  JSB SPACE 
      LDA P120
      LDB DLBUF 
      JSB DRKEY     PRINT BOUNDS
* 
      JSB BUFCL     BLANK OUT L.BUF 
      ASC 1,
* 
      LDA BP
      STA L.BUF 
* 
      JSB CNUMO 
      DEF *+3 
      DEF BPR.L+0 
      DEF L.BUF+2 
* 
      LDA P10 
      LDB DLBUF 
      JSB DRKEY 
      JSB SPACE 
* 
      LDA LENTF 
      SZA,RSS       LIST ENTRY POINTS ? 
      JMP ENAM      NO
      JSB BUFCL     YES , BLANK OUT L.BUF 
      ASC 1,
* 
      CLA 
      STA ADDR
      STA PNTR
* 
PM20  JSB L.LDF 
      DEF *+4 
      DEF ADDR
      DEF PNTR
      DEF N1        JUST GIVE ME THE SYMBOL FOR THIS MODULE 
      LDA ADDR
      SZA,RSS       IS THIS THE END 
      JMP ENAM0     YES 
* 
      LDA ADDR
      STA PMSY1 
      STA PMSY2 
      JSB L.ADD 
      DEF *+5 
PMSY1 DEF ADDR
      DEF VALUA 
      DEF SADDR 
      DEF RESLT 
* 
      LDA N3
      JSB MOVE
PMSY2 DEF ADDR
      DEF L.BUF+1 
      LDA L.BUF+3 
      AND HIMSK 
      IOR B40       ADD BLANK TO 3RD WORD 
      STA L.BUF+3 
* 
      JSB CNUMO 
      DEF *+3 
      DEF VALUA 
      DEF L.BUF+5 
* 
      LDA P16 
      LDB DLBUF 
      JSB DRKEY 
      JMP PM20
ENAM0 JSB SPACE 
* 
ENAM  CCA           EXPECT ANOTHER NAM
      STA NM1.L 
      CLA 
      STA TP7FG     CLEAR TYPE 7 FLAG 
      JMP L.MOR 
* 
CKMUL LDA MULT      IS IT A MULTIPLE SCAN?
      ISZ NOR.L 
      SSA           YES 
      JMP CLSRF     NOT A MULTIPLE SCAN OR NOTHING LOADED 
      JSB RWNDF     REWIND THE FILE 
      DEF *+3 
      DEF RDCB5 
      DEF IERR5 
* 
      CCA 
      STA NOR.L     RESET TO NO SUBR LOADED 
      JMP L.MOR 
* 
CLSRF JSB CLOSE 
      DEF *+2 
      DEF RDCB5     CLOSE THE RELOCATION
* 
      LDA SMDNM 
      SZA,RSS       SEARCHING FOR MODULE NAM? 
      JMP CKSLB     NO
      LDA MODFD     YES 
      SZA           WAS THE MODULE FOUND? 
      JMP CKSLB     YES 
      LDA P27       NO , GIVE ERROR 
      JSB LDRER 
CKSLB LDA SNPLB 
      SZA           SEARCHING LIBRARY IN SNAP?
      JMP MSSUB,I   YES , RETURN TO LBLOK 
      JMP NXTOP     NO
* 
* 
MODNM LDA P25       ILLEGAL MODULE NAME IN SEARCH COMND 
      JSB LDRER 
      JMP NXTOP 
* 
* 
      SKP 
* 
* 
*     USE SYSTEM COMMON FOR PROGRAM 
* 
SCOM  LDA SEGNM 
      SZA,RSS       IS IT SYSTEM REL. PHASE?
      JMP WHAT?     YES , NOT ALLOWED 
      LDA FSCOM     GET ACCEPT SCOM COMMD FLAG
      SZA           ACCEPT IT?
      JMP SCERR     NO , SEQUENCE ERROR 
      CLA,INA       SET USE SYSTEM COMMON FLAG
      STA SCOMF 
      JSB L.INT     INIT LIBRARY
      DEF *+9         TO USE SYSTEM COMMON
      DEF FWFM+0
      DEF LWFM+0
      DEF BPFWA+0 
      DEF CBCOM+0   ADDRESS OF BLANK COMMON 
      DEF LENBC     LENGTH OF BLANK SYSTEM COMMON 
      DEF LOCC+0
      DEF CROM+0
      DEF TABLE+0 
      JMP NXTOP 
* 
SCERR LDA P18       SCOM MUST BE SPECIFIED BEFORE 
      JSB LDRER     ANY RELOCATION
      JMP NXTOP 
* 
* 
* 
      SKP 
* 
*     SET FLAG FOR AUTOMATIC APPEND OF DBUG 
* 
DBUG  LDA SEGNM 
      SZA,RSS       IS IT SYSTEM REL. PHASE?
      JMP WHAT?     YES , DBUG NOT ALLOWED
      LDA FDBUG     GET ACCEPT DB FLAG
      SZA           ACCEPT IT ? 
      JMP DBERR     NO , OUT OF SEQUENCE
      CLA,INA       YES 
      STA FDBUG     SET FLAG
      STA DBFLG     SET USE DBUG FLAG 
      STA APNDB     SET APPEND DBUGR
      JMP NXTOP 
* 
DBERR LDA P26 
      JSB LDRER 
      JMP NXTOP 
* 
* 
*     GET LIST ENTRY POINTS   LENTRIES,ON 
*                                     ,OF 
* 
LENTY JSB NAMRR     GET OPTION ON OR OF 
      SSA           END OF INPUT ?
      JMP WHAT?     YES , NO OPTION 
      CLB           NO
      LDA IPBUF 
      CPA ON        IS IT ON OPTION?
      JMP LENON     YES 
      CPA OF        IS IT OF OPTION?
      JMP LENOF     YES 
      JMP WHAT?     OPTION ERROR
LENON INB           SET ON OPTION 
LENOF STB LENTF     STORE IN LIST ENT FLAG
      JMP NXTOP     NEXT COMMAND
* 
      SKP 
      SPC 1 
* 
*     START UP PROGRAM PARAMETERS 
* 
SRTPR LDA SEGNM 
      SZA,RSS       IS IT SYS. REL. PHASE?
      JMP WHAT?     YES, NOT ALLOWED
      CLA,INA       SET STARTUP FLAG
      STA STRUP 
      JSB NAMRR     GET NEXT INPUT
      SSA 
      JMP NXTOP     END OF STRING 
      LDA IPBUF 
      STA TEMP1 
      JSB NAMRR     GET NEXT INPUT
      SSA 
      JMP NXTOP     END OF STRING 
      LDA IPBUF 
      STA TEMP2 
      JSB NAMRR     GET NEXT INPUT
      SSA 
      JMP NXTOP     END OF STRING 
      LDA IPBUF 
      STA TEMP3 
      JSB NAMRR     GET NEXT INPUT
      SSA 
      JMP NXTOP     END OF STRING 
      LDA IPBUF 
      STA TEMP4 
      JSB NAMRR     GET NEXT INPUT
      SSA 
      JMP NXTOP     END OF STRING 
      LDA IPBUF 
      STA TEMP5 
      JSB SPACE 
      JMP NXTOP 
* 
* 
      SKP 
* 
*     DISPLAY UNDEF 
* 
DISP  JSB DSUND 
      JMP NXTOP 
* 
* 
* 
WHICH LDA FLAG
      SZA,RSS 
      JMP DSPBP     DISPLAY BPLOCC
* 
*     DISPLAY LOCC
* 
      LDA DLOCC     GET ADDRESS OF LOCC 
      STA DSP50 
      JMP DSP30     GO CONVERT AND PRINT IT 
* 
*     DISPLAY BPLOCC
* 
DSPBP LDA CBP.L 
      STA BPLOC 
      LDA DBLOC 
      STA DSP50 
DSP30 JSB CNUMO     CONVERT TO OCTAL #
      DEF *+3 
DSP50 DEF LOCC
      DEF ADDR
      LDA P6
      LDB DADDR 
      JSB DRKEY     PRINT LOCC VALUE
      JSB SPACE 
      JMP NXTOP 
* 
* 
* 
      SKP 
* 
*     LOCC,VALUE
* 
LOSET CCA           COMPLEMENT A SET LOCC 
      STA FLAG
      JMP GTVAL 
* 
*     SET BPLOCC
* 
*     BPLOCC,VALUE
* 
BPSET CLA           CLEAR A SET BPLOCC
      STA FLAG
GTVAL JSB NAMRR     GET LOCC VALUE
      SSA,RSS       END OF STRING ? 
      RSS           NO
      JMP WHICH     YES, GO PRINT VALUE 
      CCA 
      STA FSCOM     FLAG NOT TO ACCEPT SCOM COMMD 
      LDB DIPBF 
      ADB P3
      LDA B,I       GET INPUT TYPE
      CPA P1        IS IT NUMERIC?
      RSS 
      JMP ILBND     ILLEGAL BOUNDS
      ADB N3        POINT BACK TO VALUE 
      LDA B,I       GET VALUE 
      SSA           POSITIVE? 
      JMP ILBND     NO , ERROR
      STA TLOCC     SAVE IT TEMPORY 
      LDB FLAG
      SZB,RSS 
      JMP BPLO
      STA B 
      LDA P16 
      CMB,INB 
      ADB LOCC
      SSB,RSS       NEW LOCC BIGGER THAN OLD LOCC?
      JSB LDRER     NO , GIVE WARNING MESSAGE 
      LDA TLOCC 
      STA LOCC
      JSB SPACE 
      JMP NXTOP 
* 
BPLO  LDB M2000     GET -2000B
      ADB A         ADD NEW BP
      SSB,RSS       WITHIN BP RANGE?
      JMP ILBND     NO , BOUNCE IT
      LDA LNKDR     GET LINK DIRECTION
      CPA N1        SYSTEM LINK?
      JMP BPSY      YES 
      LDA CSDBP     NO , GET CURRENT SYS DUMMY BP 
      CMA,INA       NEGATE
      ADA TLOCC     ADD NEW BP
      ADA LDBP      ADD LOW DUMMY BP BOUND
      SSA,RSS       NEW BP OVERFLOWED INTO SYS DUM BP?
      JMP L.A20     YES , BP OVERFLOWED 
      LDA TLOCC     NO , SET NEW CURRENT USER DUMMY BP
      ADA LDBP
      STA CUDBP 
      JMP BPRP
BPSY  LDA TLOCC     GET NEW BP
      ADA LDBP      ADD LOW DUMMY BP BOUND
      CMA,INA       NEGATE
      ADA CUDBP     ADD CURRENT USER DUMMY BP 
      SSA,RSS       OVERFLOWED INTO USER BP?
      JMP L.A20     YES , BASE PAGE OVERFLOWED
      LDA TLOCC     NO
      ADA LDBP
      STA CSDBP     SET NEW CURRENT SYS DUMMY BP
BPRP  LDA TLOCC 
      STA BPLOC     OK , REPLACE IT AT USER'S RISK
      STA CBP.L 
      JSB SPACE 
      JMP NXTOP 
* 
ILBND LDA P21       ILLEGAL BOUNDS
      JSB LDRER 
      JMP NXTOP 
* 
      SKP 
* 
*     UNLABEL COMMON BLOCK
*       LEGAL CALL AFTER SEGMENT 5
* 
UNCOM LDA P7        IS IT CALLED FROM AFTER LABEL COMMON? 
      CPA SEGNM 
      RSS           YES 
      JMP WHAT?     NO , IT IS A ERROR
      ISZ COMFG     YES , IS IT THE FIRST TIME? 
      JMP WHAT?     NO , CALLED MORE THAN ONCE
      JSB NAMRR     GET SIZE OF UNLABEL COMMON
      SSA 
      JMP BCMER     END OF RECORD NO INPUT SIZE 
      LDB DIPBF 
      ADB P3
      LDA B,I       GET INPUT TYPE
      CPA P1        IS IT NUMERIC?
      RSS           YES 
      JMP BCMER     NO ERROR
      LDA IPBUF     LOAD THE SIZE 
      SSA           POSITIVE? 
      JMP BCMER     NO , ERROR
      STA LENBC 
      ADA LOCC      BUMP LOCC FOR THE UNLABEL COMMON SIZE 
      STA LOCC
UNC10 LDA D$FWR 
      LDB LOCC
      STB CFWRT     SAVE ADDRESS OF $FWRT 
      JSB FSYMB     FIND & PATCH $FWRT (1ST WD RT PROG) 
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
      JMP DZPRV 
* 
BCMER LDA P24 
      JSB LDRER 
      JMP UNC10 
* 
D$FWR DEF $FWRT 
$FWRT ASC 3,$FWRT 
* 
D$SYB DEF $SYBP 
$SYBP ASC 3,$SYBP 
* 
D$FWB DEF $FWBG 
$FWBG ASC 3,$FWBG 
* 
D$BGB DEF $BGBP 
$BGBP ASC 3,$BGBP 
* 
D$ROM DEF $ROM
$ROM  ASC 3,$ROM
* 
D$BGR DEF $BGRS 
$BGRS ASC 3,$BGRS 
* 
$STRT ASC 3,$STRT 
      SKP 
* 
*     GENERAL CLEANUP AND OUTPUT SYSTEM SNAP
* 
* 
*     FIND ADDRESS OF $LIBX 
*      AND CONSTRUCT JSB $LIBX,I
* 
DZPRV LDA $LIBX 
      JSB LADD      FIND SYMBOL 
      STA B         SAVE RESULT IN B
      SZB           IS DRIVER ENTRY POINT THERE?
      JSB MSENT     NO , ERROR DISPLAY IT 
* 
      JSB L.SCN     SCAN FOR A BASE PAGE
      DEF *+3 
      DEF VALUA 
      DEF BPADR 
* 
      LDA BPADR 
      SSA,RSS       BASE PAGE ALLOCATED 
      JMP CNST5     YES 
* 
      JSB L.ABP     NO ALLOCATE A BP
      DEF *+3 
      DEF DUMBP 
      DEF BPADR 
* 
      LDA VALUA 
      STA DUMBP,I   UPDATE DUMMY BP WITH LINK 
* 
*     POST BASE PAGE LINK TO DISC FILE
* 
      LDB BPADR 
      JSB STCR1 
* 
CNST5 LDA BPADR 
      IOR IJSB      ADD JSB 0,I CODE
      STA JBLBX     JSB $LIBX,I 
* 
*     FIND .ZPRV IN SYMBOL TABLE
* 
      LDA .ZPRV 
      JSB LADD
      CPA P2
      JMP FNDFX     .ZPRV UNDEFINDED
      JMP DZRNT     .ZPRV NOT THERE , GO ON 
FNDFX LDA SADDR 
      STA SYMCH     SYMBOL TO MATCH 
* 
*     SET UP TEMP1 TO FIND THE FIXUP
* 
      LDB FXN.L     LAST ENTRY OF FIXUP 
      STB TEMP1 
NXFIX LDB TEMP1 
      JSB FDFIX     FIND FIXUP
      JMP DLIBR     FINISH DO ZRENT 
      INA           FOUND MATCHING ENTRY (A)=ADDRESS OF FIXUP 
      STA ADFEX      AND SAVE IT
* 
* 
      JSB RDOUT     READ OUTPUT FILE FOR DEF EXIT 
      DEF *+3 
      DEF ADFEX     ADDRESS TO READ ( DEF EXIT )
      DEF AEXIT 
* 
* 
      LDA N1        ADDRESS OF DEF EXIT 
      LDB ADFEX 
      JSB STCR1 
* 
      LDA JBLBX 
      LDB AEXIT 
      JSB STCR1     OUTPUT JSB $LIBX,I
* 
* 
      ISZ AEXIT 
* 
      JSB RDOUT     READ OUTPUT FILE FOR EXIT+1 
      DEF *+3 
      DEF AEXIT 
      DEF TEMP2 
      LDA TEMP2 
      IOR M1000     MERGE BIT 15
      LDB AEXIT     PUT IN DEF SUB,I
      JSB STCR1 
* 
      JMP NXFIX 
* 
* 
$LIBR DEF *+1 
      ASC 3,$LIBR 
* 
$LIBX DEF *+1 
      ASC 3,$LIBX 
* 
.ZPRV DEF *+1 
.ZPV1 ASC 3,.ZPRV 
* 
* 
.ZRNT DEF *+1 
.ZRN1 ASC 3,.ZRNT 
* 
D$CKS DEF $CKSM 
$CKSM ASC 3,$CKSM 
* 
      SKP 
DLIBR LDA $LIBR 
      JSB LADD
      STA B         SAVE RESULT IN B
      SZB           IS ENTRY POINT THERE? 
      JSB MSENT     NO , ERROR
      ISZ SADDR 
      ISZ SADDR     POINT TO WD 4 OF $LIBR
      ISZ SADDR 
      LDA SADDR,I   LOAD WD 4 
      STA TYPE      SAVE IT IN TYPE 
      LDA VALUA     LOAD WD 5 
      STA VALUR     SAVE IT FOR LATER 
* 
      JSB L.MAT 
      DEF *+5 
      DEF .ZPV1 
      DEF TYPE
      DEF VALUR 
      DEF RESLT 
* 
*     FIND .ZRNT
* 
DZRNT LDA .ZRNT 
      JSB LADD
      CPA P2
      JMP FNFIX     .ZRNT UNDEFINED GO FIND ANY FIXUP 
      JMP RTPRG     .ZRNT NOT THERE , JUST GO ON
* 
FNFIX LDA SADDR     ADDRESS OF .ZRNT IN SYMBOL TABLE
      STA SYMCH     SYMBOL ADDRESS TO MATCH 
* 
*     SET UP TEMP1 TO FIND THE FIXUP
* 
RTPRG LDB FXN.L     LAST ENTRY OF FIXUP 
      STB TEMP1 
NXTFX LDB TEMP1 
      JSB FDFIX     FIND FIXUP
      JMP XCHN      FINISH CHANGE .ZPRV & .ZRENT
      INA 
      STA ADFEX     ADDRESS OF DEF EXIT 
* 
      JSB RDOUT 
      DEF *+3 
      DEF ADFEX     ADDRESS OF DEF EXIT 
      DEF AEXIT     CONTENT OF DEF EXIT (ADDRESS OF EXIT) 
* 
      LDA JBLBX 
      LDB AEXIT 
      JSB STCR1     OUTPUT JSB $LIBX,I
* 
      ISZ AEXIT 
      JSB RDOUT     READ OUTPUT FILE FOR EXIT + 1 
      DEF *+3 
      DEF AEXIT     ADDRESS OF EXIT+1 
      DEF TEMP2     CONTENTS OF EXIT+1(DEF TDB) 
* 
      LDA TEMP2     DEF TDB 
      LDB ADFEX     ADDRESS OF DEF EXIT 
      JSB STCR1     OUTPUT DEF TDB
* 
      JSB L.MAT 
      DEF *+5 
      DEF .ZRN1     POINT .ZRNT TO $LIBR
      DEF TYPE
      DEF VALUR 
      DEF RESLT 
* 
      JMP NXTFX     DO NEXT FIXUP 
* 
*     CHANGE .ZPRV AND .ZRNT TO RSS (2001)
* 
XCHN  LDA .ZPRV 
      JSB SWRSS 
* 
      LDA .ZRNT 
      JSB SWRSS 
* 
      LDA D$SYB 
      LDB CBP.L 
      INB 
      STB CSYBP     SAVE ADDRESS OF $SYBP 
      JSB FSYMB 
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
* 
      LDA BPFWA     GET 1ST WORD OF BP
      STA CBP.L     SET REAL USER BP FOR RT PROG. 
      CLA,INA 
      STA LNKDR     SET USER LINKS = 1
* 
      LDA D$RTB 
      LDB BPFWA 
      STB CRTBP     SAVE ADDRESS OF $RTBP 
      JSB FSYMB     FIND & PATCH 1ST WD OF RT BP
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
* 
      LDA D$ROM     FIND & PATCH $ROM 
      LDB CROM
      JSB FSYMB     FIND & PATCH $ROM 
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
* 
      LDA D$FWB 
      CLB 
      JSB FSYMB     FIND ADDRESS OF $FWBG 
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
      LDA VALUA     SAVE ADDRESS OF $FWBG 
      STA AFWBG 
* 
      LDA D$BGB 
      CLB 
      JSB FSYMB     FIND ADDRESS OF $BGBP 
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
      LDA VALUA 
      STA ABGBP     SAVE ADDRESS OF $BGBP 
* 
      LDA D$BGR 
      CLB 
      JSB FSYMB 
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
      LDA VALUA 
      STA ABGRS     SAVE ADDRESS OF $BGRS 
* 
      LDA D$BOT 
      CLB 
      JSB FSYMB     FIND & PATCH ADDRESS OF $BOOT 
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
      LDA VALUA 
      STA ABOOT     SAVE ADDRESS OF $BOOT 
* 
      JSB L.ADD     FIND ADDRESS OF $STRT 
      DEF *+5 
      DEF $STRT 
      DEF VALUA 
      DEF SADDR 
      DEF RESLT 
      LDA RESLT     GET RESULT
      SZA 
      JSB MSENT      MISSING SYSTEM ENTRY POINT 
      LDA VALUA     ADDRESS OF $STRT
      LDB P3
      JSB STCR1     PUT ADDRESS OF $STRT IN LOC 3 
* 
      LDA JMP3I     JMP 3,I 
      LDB P2
      JSB STCR1     PUT JMP 3,I IN LOC 2
* 
*     OUTPUT THE SNAP 
* 
      JSB OPSNP     REOPEN THE SNAP FILE
* 
      JSB BUFCL 
      NOP 
      LDA CFWRT     CONTENTS OF $FWRT 
      STA L.BUF+4 
      LDA CSYBP     CONTENTS OF $SYBP 
      STA L.BUF+5 
      LDA CRTBP     CONTENTS OF $RTBP 
      STA L.BUF+7 
      LDA CBCOM     CONTENTS OF $BCOM 
      STA L.BUF+8 
      LDA LENBC     LENGTH OF BLANK COMMON
      STA L.BUF+9 
* 
      JSB WRITF     OUTPUT REC 1 OF SNAP FILE 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF L.BUF+0 
      DEF P12 
      JSB CSPER     CHECK SNAP FILE WRITE ERROR 
* 
*     OUTPUT SYSTEM ENTRY POINTS
* 
      CLA,INA       1ST TIME FLAG 
      STA TEMP2 
* 
SNP2  CLA 
      STA PNTR
      STA CNT10 
* 
      LDA P3
      STA L.BUF+0 
GSYEN JSB L.LDF     GET A SYSTEM ENTRY
      DEF *+4 
      DEF ADDR
      DEF PNTR
      DEF P1        GIVE ME ALL OF THEM 
      LDA ADDR
      SZA,RSS 
      JMP ESYEN 
      STA ADDRX 
      STA B 
      LDA B,I 
      AND M7777     MASK OUT PRINT IT BIT 
      STA B,I 
      ADB P3        POINT TO WORD 4 OF SYMBOL 
      LDA B,I       LOAD WORD 4 AND CHECK 
      AND B40        TO SEE IF SHOULD BE EXCLUDED FROM SNAP 
      SZA 
      JMP GSYEN     YES , EXCLUDED FROM SNAP
      LDA B,I       GET WORD 4 AGAIN? 
      AND HIMSK 
      ALF,ALF 
      CPA P4        IS IT AN RP SYMBOL? 
      JMP GRP       YES 
      CPA P3        IS IT AN ABSOLUTE 
      RSS           YES 
      JMP GCK       NO
GRP   STA B,I       REPLACE WD 4 WITH 3=ABS , 4=RP
      JMP GSUM
GCK   LDA B,I       LOAD WD 4 AGAIN 
      AND P8
      SZA,RSS       IS IT MEM. RES. SYMBOL? 
      JMP CKSCM     NO , CHECK SYS COM SYMBOL 
      CLA           YES , MEM RES. SYMBOL 
      STA B,I       PUT 0 IN WORD 4 
      JMP GSUM
* 
CKSCM LDA TEMP2 
      CPA P1        PASS 1? 
      JMP GSYEN     YES , NEXT SYMBOL 
      LDA B,I       GET WORD 4 AGAIN
      AND P16 
      SZA           SYSTEM COMMON ENTIES
      LDA P2        YES , SET SYMBOL AS SYSTEM COMMON 
      STA B,I       RESTORE WORD 4
* 
GSUM  STB TEMP1     SAVE ADDRESS OF SYM TBL WD 4
      INB 
      LDA B,I 
      ADA SIDCK     ARITHMETIC SUM FOR SYSTEM CHECK WD
      STA SIDCK     AND SAVE IT 
* 
      LDA N5
      JSB MOVE      MOVE SYSTEM ENTRY TO OUTPUT BUFFER
ADDRX NOP 
      DEF L.BUF+1 
      LDA L.BUF+3 
      AND HIMSK 
      IOR B40       ADD BLANK TO 3RD WORD 
      STA L.BUF+3 
* 
      LDA B40 
      STA TEMP1,I   EXCLUDE SYMBOL FROM NEXT PASS 
* 
      JSB WRITF     OUTPUT ENTRY TO SNAP FILE 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF L.BUF+0 
      DEF P6
      JSB CSPER     CHECK FOR SNAP FILE WRITE ERROR 
* 
      ISZ CNT10 
      JMP GSYEN     GET ANOTHER ENTRY POINT 
* 
ESYEN LDA CNT10 
      LDB TEMP2 
      CPB P1        1ST PASS? 
      RSS           YES 
      JMP PASS2 
      STA #MREP     # OF RP,ABS & MEM RES ENT. PT.
      ISZ TEMP2     SET PASS 2 FLAG 
      JMP SNP2      DO SYS MODULE & SYS COM ENT PT. 
* 
PASS2 STA #ENPT     SAVE # OF SYSTEM ENTRY POINTS 
* 
*     FIND & PATCH $CKSM
* 
      LDA D$CKS 
      LDB SIDCK 
      JSB FSYMB 
      JSB MSENT     MISSING SYSTEM ENTRY POINT
* 
*     GET LIBRARY FILE NAME 
* 
      JSB SPACE 
      LDA P12 
      LDB DMS65     PRINT " LIB FILES ? " 
      JSB DRKEY 
* 
RDLIB JSB READ      GET LIBRARY FILE NAME 
      JMP EXIT
      LDA OP? 
      CPA EN
      JMP OTBP
      CPA LI
      JMP LIBRY     GO GET A LIBRARY NAME 
LIERR CLA 
      JSB LDRER     WHAT IS IT??
      JMP OTBP
* 
LIBRY JSB NAMRR     PARSE THE INPUT 
      SSA 
      JMP LIERR 
      LDA IPBUF 
      SZA 
      CPA BLNK2 
      JMP LIERR 
* 
      LDA N6
      JSB MOVE
      DEF IPBUF+0 
      DEF LIBFL 
* 
      JSB WRITF 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF LIBFL+0   ADDRESS OF LIBRARY FILE 
      DEF P6
      JSB CSPER     CHECK FOR SNAP FILE WRITE ERROR 
* 
      ISZ NLIB      BUMP UP THE NUMBER OF LIBRARY 
      JMP RDLIB 
* 
*     OUTPUT SYSTEM BP TO SNAP
* 
OTBP  LDA CSYBP 
      CMA,INA 
      ADA B2000 
      CLB 
      DIV P128
      CMA,INA 
      STA CNT20     NEGATIVE COUNT OF THE # OF 128 WD RECORDS 
      STB ZTEM5    # OF WD REMAINING
* 
      LDA CSYBP 
      ADA LDBP
MBP   STA PNTR      ADDRESS OF DUMMY BP 
      STA ADDBP 
* 
      JSB WRITF 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
ADDBP NOP 
      DEF P128
      JSB CSPER     CHECK FOR SNAP FILE WRITE ERROE 
* 
      ISZ CNT20 
      RSS 
      JMP FINBP 
      LDA PNTR
      ADA P128
      JMP MBP       MORE BP 
* 
FINBP LDA PNTR
      ADA P128
      STA ADBP
      JSB WRITF 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
ADBP  NOP 
      DEF ZTEM5 
      JSB CSPER     CHECK FOR SNAP FILE WRITE ERROR 
      JSB CLOS3 
* 
      SKP 
* 
*     RELOCATE REAL TIME PROGRAMS 
* 
      LDA NUMID 
      STA CNMID 
* 
RT10  JSB SPACE 
      LDA P14 
      STA CONSL     ECHO TO CONSOLE 
      LDB MES50     REL RT PROG 
RT20  JSB DRKEY 
      JSB SPACE 
      CCA 
      STA NOR.L     SET NOTHING LOADED FLAG 
* 
      LDA NUMID 
      SZA           OUT OF ID SEGMENT?
      JMP RT30      NO
      CLA,INA       YES, SET OUT OF ID FLAG 
      STA OUTID 
      JMP NXTOP 
* 
RT30  CLA 
      STA SCOMF     CLEAR USE SYSTEM FLAG 
      STA FSCOM     CLEAR ALLOW SYS. COM FLAG 
      STA FDBUG     CLEAR ALLOW DBUG FLAG 
      STA PRENT     CLEAR PRIMARY ENTRY POINT 
      STA STRUP     CLEAR START UP FLAG 
      STA DBFLG     CLEAR DBUG FLAG 
      STA APNDB     CLEAR APPEND DBUGR FLAG 
      STA TEMP1     CLEAR TEMP1 TO TEMP5
      STA TEMP2 
      STA TEMP3 
      STA TEMP4 
      STA TEMP5 
* 
      CCA           1ST PRIMARY ENTRY PT. 
      STA PRIFG 
      STA REL1S     SET 1ST REL COMMD FOR PROG LOAD 
* 
      JSB L.INT 
      DEF *+9 
      DEF FWFM+0
      DEF LWFM+0
      DEF BPFWA+0 
      DEF ZERO+0
      DEF ZERO+0
      DEF LOCC+0
      DEF CROM+0
      DEF TABLE 
* 
      JMP NXTOP 
* 
RTERR LDA P14 
      JSB LDRER     OUT OF ID SEGMENT 
      JMP EXIT1 
* 
* 
DMS65 DEF MES65 
MES65 ASC 6,* LIB FILES 
* 
MES50 DEF *+1 
      ASC 7,* REL RT PROG 
* 
D$RTB DEF $RTBP 
$RTBP ASC 3,$RTBP 
      SKP 
* 
BGPRG LDA BGLOD     CHECK IF FIRST BG PROG
      SZA 
      JMP EXIT1     NO , WE ARE FINISH. 
      CLA,INA       SET BGLOD TO 1
      STA BGLOD 
* 
      LDA P14 
      STA CONSL 
      LDB MES70     REL BG PROG 
      JMP RT20
* 
EXIT1 LDB CFWBG     GET START OF BG PROG
      CMB,INB       NEGATE
      ADB CROM      ADD TOP OF MEMORY 
* 
      LDA CBGBP     GET START OF BG BASE PAGE 
      CMA,INA       NEGATE
      ADA CSYBP     ADD START OF SYSTEM BASE PAGE 
* 
      ADA B         ADD BOTH
      CLB 
      DIV P128      DIVIDE BY 128 TO GET # OF BLOCK 
      ADA P2        ROUND UP BY TWO 
      MPY CNMID     MULTIPLY BY THE # OF ID SEGMENT 
      STA ZTEM5 
* 
      JSB CNUMD     CONVERT BLOCK SIZE TO DECIMAL 
      DEF *+3 
      DEF ZTEM5 
      DEF ME80
* 
      JSB SPACE 
      LDA P28 
      LDB MES80 
      JSB DRKEY     PRINT SWAP FILE SIZE FOR THE SYSTEM 
* 
      LDA CFWRT 
      ADA N1
      STA ZTEM5 
      JSB CNUMO 
      DEF *+3 
      DEF ZTEM5 
      DEF ME75
      JSB SPACE 
      LDA P14 
      LDB MES75 
      JSB DRKEY     PRINT SYSTEM SIZE 
* 
      LDA CFWRT 
      CMA,INA 
      ADA CFWBG 
      STA ZTEM5 
      JSB CNUMO 
      DEF *+3 
      DEF ZTEM5 
      DEF ME82
      JSB SPACE 
      LDA P14 
      LDB MES82     PRINT REAL TIME SIZE
      JSB DRKEY 
* 
      LDA CRTBP 
      CMA,INA 
      ADA CBGBP 
      STA ZTEM5 
      JSB CNUMO 
      DEF *+3 
      DEF ZTEM5 
      DEF ME84
      JSB SPACE 
      LDA P16 
      LDB MES84 
      JSB DRKEY     PRINT REAL TIME BP SIZE 
* 
      LDA CFWBG 
      CMA,INA 
      ADA CROM
      STA ZTEM5 
      JSB CNUMO 
      DEF *+3 
      DEF ZTEM5 
      DEF ME86
      JSB SPACE 
      LDA P14 
      LDB MES86 
      JSB DRKEY     PRINT BACKGND SIZE
* 
      LDA CBGBP 
      CMA,INA 
      ADA CSYBP 
      STA ZTEM5 
      JSB CNUMO 
      DEF *+3 
      DEF ZTEM5 
      DEF ME88
      JSB SPACE 
      LDA P16 
      LDB MES88 
      JSB DRKEY     PRINT BACKGND BP SIZE 
* 
      LDA MAXAD 
      ADA N2        LENGTH OF SYSTEM IN WORD 0
      CLB 
      JSB STCR1 
* 
      LDA P2
      LDB P1        1ST ADDRESS TO LOAD 
      JSB STCR1 
* 
      LDA P128
      STA SEGNM     SIGNAL NORMAL TERMINATION 
* 
      JMP EXIT
* 
MES70 DEF *+1 
      ASC 7,* REL BG PROG 
* 
MES80 DEF *+1 
      ASC 8,* SWAP FILE SZ
ME80  NOP 
      NOP 
      NOP 
           ASC 3, BLOCK 
* 
MES75 DEF *+1 
      ASC 4,* SYS SZ
ME75  BSS 3 
* 
MES82 DEF *+1 
      ASC 4,* RT SZ 
ME82  BSS 3 
* 
MES84 DEF *+1 
      ASC 5,* RT BP SZ
ME84  BSS 3 
* 
MES86 DEF *+1 
      ASC 4,* BG SZ 
ME86  BSS 3 
* 
MES88 DEF *+1 
      ASC 5,* BG BP SZ
ME88  BSS 3 
      SKP 
* 
*     THIS SUBR HANDLES THE SPECIAL PROCESING REQUIRED FOR THE
*     RTE-L DBUGR PACKAGE. DEBUG IS CALLED AFTER THE RECORD IS
*     PROCESSED ONLY IF THE LAST MODULE WAS LOADED AND HAS A PRIMARY
*     ENTRY POINT. A CHECK IS MADE TO SEE IF THE LATEST MODULE WAS
*     'DBUGR'.  IF SO DBURG'S PRIMARY ENTRY POINT IS SAVED IN THE 
*     PROGRAM ID SEGMENT AND THE ACTUAL PRIMARY ENTRY POINT IS SAVED
*     IN '.DBUG'. 
* 
DEBUG NOP 
      LDA DBFLG     IS DEBUG ALLOWED? 
      SZA,RSS       WELL? 
      JMP DEBUG,I   NO, SO FORGET IT
* 
      LDB NM2.L     GET PROG NAME 1,2 
      INB 
      LDA B,I 
      CPA DB1       CHARS =D,B? 
      RSS           YES - CONTINUE
      JMP DEBUG,I   RETURN = PROG IS NOT 'DBUGR'
      INB 
      LDA B,I 
      CPA DB2       CHARS =U,G? 
      RSS           YES - CONTINUE
      JMP DEBUG,I RETURN - PROG IS NOT 'DBUGR'
      INB           GET PROG NAME 5 
      LDA B,I 
      CPA DB3       CHAR = R? 
      RSS           YES - CONTINUE
      JMP DEBUG,I   RETURN - PROG IS NOT 'DBUGR'
* 
      JSB L.ADD     FIND ADDRESS OF DBUGR IN LST
      DEF *+5 
      DEF DB1X      ADDRESS OF SYMBOL NAME
      DEF VALUX 
      DEF SADDX     SYMBOL TABLE ADDRESS
      DEF RESLX     RESULT RETURNED 
      SZA           IS 'DBUGR' FOUND? 
      NOP           NO , THIS IS AN ERROR CONDITION 
      LDA PRENT     GET THE PROGRAM'S PRIMARY ENTRY 
      LDB VALUX     AND SET INTO .DBUG ENTRY POINT
      JSB STCR1     OUTPUT WORD TO DISC 
      LDA PRI.L     NOW SET THE PRIMARY ENTRY 
      STA PRENT     OF 'DEBUG' INTO THE ID SEGMENT
      JMP DEBUG,I   RETURN
* 
VALUX BSS 1 
RESLX BSS 1 
SADDX BSS 1 
DB1   ASC 1,DB
DB2   ASC 1,UG
DB3   ASC 1,R 
DB1X  ASC 3,.DBUG 
* 
      SKP 
* 
*     CHECK FOR INTERRUPT RT PROGRAM
* 
SRFI3 NOP 
      CLA 
      STA WRDCT 
      LDA DPNAM     ADDRESS PROGRAM NAME
SRFI4 JSB SRIPX     GO SEARCH PROGRAM NAME TABLE
      RSS           FOUND NAME
      JMP SRFI3,I   END OF TABLE
      LDA IP3,I     COMPARES,GET SC 
      AND B77 
      SZA,RSS 
      JMP SRFI4 
      ADA AINT      ADDRESS OF INTERRUPT TABLE
      ADA N16 
      LDB A 
      LDA ADDID 
      CMA,INA 
      JSB STCR1 
      LDA IP3,I 
      AND M400      ZERO OUT SELECT CODE
      STA IP3,I 
      JMP SRFI4 
* 
      SKP 
* 
*     CHECK FOR ANY UNDEFS
* 
*     JSB UNDF? 
*      NO UNDEFS
*      YES THERE ARE UNDEFS 
* 
UNDF? NOP 
      CLA 
      STA PNTR
      STA PRTFG     CLEAR 1ST TIME PRINT FLAG 
      JSB L.LUN     GET UNDEFINED EXTERNAL
      DEF *+4 
      DEF ADDR
      DEF PNTR
      DEF FLAG
      SZB           UNDEF ? 
      ISZ UNDF?     YES , UNDEFS
      JMP UNDF?,I   NO
* 
* 
*     CHECK FOR ANY SNAP FILE ERROR 
* 
*     A = ERROR CODE FROM WRITF 
*     JSB CSPER 
* 
CSPER NOP 
      SSA,RSS       ANY ERROR?
      JMP CSPER,I   NO , RETURN 
      LDB F3        ADDRESS OF SNAP FILE NAME 
      JSB FLERR 
      JMP CSPER,I   RETURN
* 
* 
      SKP 
* 
*     CHECK FOR DUPLICATE PROGRAM NAME
* 
*     JSB CKDUP 
*     ERROR RTN     DUP PROGRAM NAME
*     NORMAL RTN
* 
CKDUP NOP 
      LDA #PGM
      SZA,RSS 
      JMP OKRTN     OK TO RETURN NOTHING TO CHECK 
      CMA,INA       NEGATE # OF PROGRAMS
      STA ZTEM4 
      LDA DIDNM     ADDRESS OF IDNAMS 
      STA ZPTN
      LDA PNAME+2 
      AND HIMSK 
      STA PNAME+2 
CKD10 LDA DPNAM 
      STA TLOCC 
      LDA N3
      STA ZTEM5 
      LDA ZPTN,I    GET ID SEGMENT ADDRESS
      ADA P12 
      STA AEXIT     ADDRESS OF ID SEG PROG NAM
RDNXT JSB RDOUT 
      DEF *+3 
      DEF AEXIT     ADDRESS OF ID 
      DEF ZTEM3 
* 
      LDA ZTEM3     CHAR OF NAM 
      CPA TLOCC,I   EQUAL TO CURRENT PROG NAM 
      RSS           YES 
      JMP NXNM      NO , NO NEED TO CHECK OTHER CHAR
      ISZ AEXIT     GET NEXT CHAR 
      ISZ TLOCC 
      ISZ ZTEM5     ANY MORE CHARACTERS 
      JMP RDNXT     YES 
      JMP DURTN     NO , DUPLICATE PROG NAM 
* 
NXNM  ISZ ZPTN
      ISZ ZTEM4 
      JMP CKD10 
OKRTN ISZ CKDUP 
DURTN JMP CKDUP,I 
* 
      SKP 
* 
*     PLACE RP , ABS & MEM RES ENTRY INTO SYM TABLE 
* 
MRLOK NOP 
      JSB POSNT 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF P2
      DEF P2        POSITION TO REC 2 OF SNAP FILE
      SSA           ERROR?
      JMP MRFMP     YES 
* 
      LDA #MREP     GET # OF MEM RES ENTRY PT.
      CMA,INA 
      STA CNT10 
* 
NXMR  JSB READF     READ AN ENTRY 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF SNAME+0 
      DEF P10 
      SSA           ERROR?
      JMP MRFMP     YES 
* 
      LDA SNAME+4   GET WORD 4 OF SNAP
      ALF,ALF       PLACE IN UPPER BYTE FOR SYM. TBL. 
      STA SNAME+4   RESTORE IT
* 
      LDA SNAME+1   GET CHARACTER 1 
      IOR M1000     SET BIT 15
      STA SNAME+1   RESTORE IT
      JSB L.SYE     STUFF SYMBOL TABLE
      DEF *+6 
      DEF SNAME+1 
      DEF SNAME+4 
      DEF SNAME+5 
      DEF ZERO
      DEF RESLT 
      LDA RESLT 
      SSA,RSS       ANY ERROR?
      JMP BMPMR     NO
      CMA,INA       ERROR , LST OV
      JSB LDRER 
      JMP EXIT
* 
BMPMR ISZ CNT10 
      JMP NXMR
      JMP MRLOK,I 
* 
MRFMP LDA P13 
      JSB LDRER 
      JMP MRLOK,I 
      SKP 
* 
*     SEARCH THE SNAP FOR SYSTEM ENTRY POINTS 
* 
SYLOK NOP 
* 
      LDA #MREP 
      ADA P2
      STA IREC
      JSB POSNT     POSITION TO START OF SYSTEM ENT 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF IREC
      DEF P2
      SSA           ERROR?
      JMP SNFMP     YES 
* 
      LDA #ENPT     GET # OF SYSTEM ENTRIES 
      CMA,INA 
      STA CNT10 
* 
NXENT JSB READF     READ AN ENTRY 
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF SNAME+0 
      DEF P10 
      SSA           ERROR?
      JMP SNFMP     YES 
* 
      LDB SCOMF     GET SYS COMMON FLAG 
      LDA SNAME+4   CHECK IF THIS IS A SYS COM ENTRY
      CPA P2        IS IT A SYSTEM COMMON ENTRY?
      RSS           YES 
      JMP FIXEN     NO
* 
      SZB,RSS       USER SPECIFED SYS COM?
      JMP UPCNT     NO , NEXT ENTRY 
      CLA           YES 
      STA SNAME+4   PLACE IN WORD 4 OF SYM TABLE
      LDA SNAME+1   GET CHAR 1
      IOR M1000     SET BIT 15
      STA SNAME+1   RESTORE IT
      JSB L.SYE     STUFF SYM TABLE 
      DEF *+6 
      DEF SNAME+1 
      DEF SNAME+4 
      DEF SNAME+5 
      DEF ZERO
      DEF RESLT 
      LDA RESLT 
      SSA,RSS       ANY ERROR?
      JMP UPCNT     NO
      CMA,INA       YES , ERROR LST OV
      JSB LDRER 
      JMP EXIT
* 
FIXEN SZB           SEARCH SYSTEM ENTRY?
      JMP UPCNT     NO
      JSB L.MAT     YES, FIXUP PREVIOUS REFERENCES
      DEF *+5 
      DEF SNAME+1 
      DEF SNAME+4 
      DEF SNAME+5 
      DEF RESLT 
UPCNT ISZ CNT10 
      JMP NXENT     NO , READ NEXT ENTRY
      JMP SYLOK,I 
* 
SNFMP LDA P13 
      JSB LDRER 
      JMP SYLOK,I 
* 
SNAME BSS 10
      SKP 
* 
*     SEARCH THE SNAP LIBRARY FOR UNDEFS
* 
LBLOK NOP 
      JSB RWNDF 
      DEF *+3 
      DEF SDCB3+0 
      DEF IERR3+0 
* 
      LDA #ENPT     GET # OF ENTRY POINT
      ADA #MREP     ADD # OF MR , ABS , RP ENTRY POINTS 
      INA 
      STA IREC      LIBRARY RECORD #
* 
      JSB POSNT     POSITION TO LIBRARY RECORD
      DEF *+5 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF IREC
      DEF IRB 
* 
      LDA NLIB      GET # OF LIBRARY
      SZA,RSS       IS IT NON ZERO? 
      JMP LBL20     NO , IT IS ZERO EXIT
      CMA,INA       YES , THERE IS AN LIBRARY 
      STA CNT30 
* 
RSLIB JSB READF     READ SNAP LIBRARY 
      DEF *+6 
      DEF SDCB3+0 
      DEF IERR3+0 
      DEF IPBUF+0 
      DEF P6
      DEF LEN 
* 
      CLA,INA 
      STA ISTRC     SET NAMRR COUNTER 
      STA SNPLB     SET FLAG TO RETURN HERE 
* 
      JSB MSSUB     GO SEARCH THE SNAP LIBRARY
* 
      ISZ CNT30     ANY MORE LIBRARY? 
      JMP RSLIB     YES 
LBL20 CLA           NO
      STA SNPLB 
      JMP LBLOK,I 
* 
IREC  NOP 
IRB   NOP 
* 
      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,??      WHAT IS IT ?? 
      ASC 3,CK SUM  CHECK SUM ERROR 
      ASC 3,IL REC  ILLEGAL RECORD
      ASC 3,OV MEM  MEMORY OVERFLOW 
      ASC 3,OV FIX  FIXUP TABLE OVERFLOW
      ASC 3,OV SYM  SYMBOL TABLE OVERFLOW 
      ASC 3,CM BLK  COMMON BLOCK ERROR
      ASC 3,DU ENT  DUPLICATE ENTRY POINTS
      ASC 3,RE SEQ  RECORD OUT OF SEQUENCE
      ASC 3,IL REL  ILLEGAL RELOCATABLE 
      ASC 3,RF EMA  ILLEGAL REFERENCE TO EMA
      ASC 3,RF EMA  ILLEGAL REFERENCE TO EMA
      ASC 3,IL SEG  SEGMENTED PROG. NOT ALLOWED 
      ASC 3,SNP ER  SNAP FILE ERROR 
      ASC 3,NO ID   NO MORE ID SEGMENTS 
      ASC 3,MS ENT  MISSING SYSTEM ENTRY POINT
      ASC 3,LOC WR  WARNING LOCC SET BACKWARD 
      ASC 3,IL MRL  MEMORY RESIDENT IS NOT TYPE 6,14,30 
      ASC 3,SCM SQ  SYS COM MUST BE BEFORE ANY RELOCATION 
      ASC 3,TR ADD  NO TRANSFER ADDRESS 
      ASC 3,UN EXT  UNDEFINED EXTERNAL
      ASC 3,IL BND  ILLEGAL BOUND IN LOCC OR BPLOCC 
      ASC 3,DU PGM  DUPLICATE PROGRAM NAME
      ASC 3,OV BSE  BASE PAGE LINKAGE OVERFLOW
      ASC 3,BNK CM  BLANK COMMON ERROR
      ASC 3,MOD NM  ILLEGAL MODULE NAME IN SEARCH COMND 
      ASC 3,DB SEQ  DBUG COMMD MUST BE SPECIFY BEFORE ANY RELOCATION
      ASC 3,NO MOD  SPECIFIED MODULE NAM NOT FOUND
* 
      SKP 
* 
*     OUTPUT CONSECUTIVE CORE LOCATIONS 
* 
*     LDA START     STARTING ADDRESS
*     LDB END       ENDING ADDRESS
*     JSB SETCR     DATA WILL BE AT STRNG 
* 
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 DLBUF     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 
      SKP 
* 
*     DISPLAY UNDEF 
* 
DSUND NOP 
      CLA 
      STA PNTR
      STA PRTFG     CLEAR 1ST TIME PRINT FLAG 
DSP10 JSB L.LUN     GET A UNDEFINED EXTERNAL
      DEF *+4 
DADDR DEF ADDR      ADDRESS OF 3 WORD UNDEF 
      DEF PNTR      GET THE ADDRESS 
      DEF FLAG
      LDA ADDR
      SZA,RSS       IS THERE A UNDEFINED
      JMP DSUND,I   NO , FINISH 
      LDA ADDR
      RAL 
      LDB .ZPRV 
      RBL 
      JSB .CBT
      DEF P5
      NOP 
      JMP DSP10 
      NOP 
      NOP 
      LDA ADDR
      RAL 
      LDB .ZRNT 
      RBL 
      JSB .CBT
      DEF P5
      NOP 
      JMP DSP10 
      NOP 
      NOP 
      LDA PRTFG     WANT TO PRINT HEADER? 
      SZA 
      JMP DSP60     NO
      JSB SPACE     YES 
      LDA P20 
      STA PRTFG 
      JSB LDRER 
DSP60 LDA P5
      LDB ADDR       GET SYMBOL ADDRESS 
      JSB DRKEY     GO PRINT IT 
      JMP DSP10     GO GET ANOTHER SYMBOL 
* 
PRTFG NOP 
* 
* 
      SKP 
* 
* 
*     SWITCH .ZPRV AND .ZRNT TO RSS ( 2001B ) 
* 
*     CALL SEQUENCE 
*     LDA ADDRESS OF SYMBOL 
*     JSB SWRSS 
* 
SWRSS NOP 
      JSB LADD
      LDA SADDR     ADDRESS OF SYMBOL IN TABLE
      ADA P3
      LDB P4
      BLF,BLF 
      STB A,I       PUT SYMBOL AS RP IN WD 4
      INA 
      LDB B2001 
      STB A,I       RSS ( 2001B ) IN WD 5 
      JMP SWRSS,I 
* 
* 
      SKP 
*     THE BUFCL SUBROUTINE STUFFS A 60 WORD BUFFER WITH CALL+1
* 
* 
*     CALLING SEQUENCE: 
*       A = IGNORED 
*       JSB BUFCL 
*       CALL+1 = DATA TO STUFFED
* 
*     RETURN: CONTENTS OF A AND B ARE DESTROYED 
* 
BUFCL NOP 
      LDB DLBUF 
      LDA N60 
      STA WDCNT     SET BUFFER LENGTH = 60
      LDA BUFCL,I   GET STUFF DATA
      STA B,I       CLEAR BUFFER WORD 
      INB 
      ISZ WDCNT     ALL WORDS CLEAR?
      JMP *-3       NO - CONTINUE CLEARING
      ISZ BUFCL 
      JMP BUFCL,I RETURN
* 
WDCNT NOP           TEMPORARY WORD COUNTER
* 
* 
* 
* 
*     MISSING SYSTEM SYMBOL -- ERROR MESSAGE
* 
MSENT NOP 
      LDA PRERR 
      SZA           PRINT ERROR?
      JMP MSENT,I   NO , PRINTED PREVIOUSLY 
      LDA P15       YES 
      JSB LDRER     PRINT " MS ENT "
      CCA 
      STA PRERR     SET ERROR PRINTED FLAG
      JMP MSENT,I 
* 
* 
      SKP 
*     TO ALLOCATE A BASE PAGE LINK
* 
* 
*     JSB TABLE ENTRY #1,I  L.ABP 
*     DEF RETRN 
*     DEF DUMY      RETURNS DUMMY BP ADDRESS  NEG = ERROR 
*     DEF REAL      RETURNS REAL BP ADDRESS 
* 
DBP   NOP 
RBP   NOP 
L.ABP NOP 
      JSB .ENTR 
      DEF DBP 
      LDA LNKDR     GET LINK DIRECTION
      CPA N1        IS IT A SYSTEM LINK ? 
      JMP L.A10     YES 
      LDA CBP.L     GET REAL BP 
      ADA LDBP      ADD LOWER BOUND FOR DUMMY BP
      CPA CSDBP     HAS IT REACH SYS BP AREA? 
      JMP L.A20     YES , ERROR 
      STA DBP,I 
      INA 
      STA CUDBP 
      LDA CBP.L     GET CURRENT USER REAL BP
      STA RBP,I 
      INA 
      STA CBP.L     UPDATE CURRENT REAL BP
      JMP L.ABP,I   RETURN
* 
*     SYSTEM LINK ALLOCATION
* 
L.A10 LDA CBP.L     GET REAL BP 
      ADA LDBP      ADD LOWER BOUND FOR DUMMY BP
      CPA CUDBP     HAS IT REACH USER BP AREA?
      JMP L.A20     YES , ERROR 
      STA DBP,I     NO , STORE DUMMY BP 
      ADA N1
      STA CSDBP     UPDATE CURRENT SYS DUM BP 
      LDA CBP.L 
      STA RBP,I     STORE REAL BP 
      ADA N1
      STA CBP.L     UPDATE CURRENT SYS REAL BP
      JMP L.ABP,I 
* 
L.A20 CCA           ERROR 
      STA DBP,I 
      LDA P23 
      JSB LDRER     BASE PAGE LINKAGE OVERFLOW
      JMP EXIT
* 
* 
* 
      SKP 
* 
*     TO SCAN DUMMY BASE PAGE ( OR EXISTING BASE PAGE ) 
*     FOR AN EXISTING BASE LINK.
* 
*     JSB TABLE ENTRY #2,I  L.SCN 
*     DEF RETRN 
*     DEF VALUE     VALUE TO SCAN FOR  (REAL BP)
*     DEF BPADR     +/-  ADDRESS TO USE / NOT FOUND 
* 
VALAD NOP           ADDRESS OF VALUE
BPADR NOP 
L.SCN NOP 
      JSB .ENTR 
      DEF VALAD 
      LDA VALAD,I   GET VALUE TO SCAN FOR 
      LDB TDBP      SCAN SYS DUMMY BP 
L.S20 CPB CSDBP     IS IT EQUAL TO CURRENT SYS DUM BP 
      JMP L.S30     YES , TRY USER BASE PAGE
      CPA B,I       IS IT EQUAL TO SEARCH VALUE 
      JMP FNDSY     YES , SYSTEM BP LINK
      ADB N1        NO, ADD LINK DIRECTION FOR NEXT BP VALUE
      JMP L.S20     NO CONTINUE SEARCH
FNDSY CMB,INB       CALCULATE REAL BP ADDRESS 
      ADB TDBP      ADD TOP OF DUMMY BP ADDRESS 
      CMB,INB       DIFFERENCE BETWEEN CURRENT AND TOP DUM BP 
      ADB B1777     SUBTRACT FROM TOP OF REAL BP
      STB BPADR,I   THIS IS THE REAL LINK 
      JMP L.SCN,I   RETURN
* 
L.S30 LDB LDBP      LOWER BOUND FOR USER DUMMY BP 
      ADB BPFWA     SET USER BP LOCATION
L.S60 CPB CUDBP     IS IT EQUAL CURRENT USER DUM BP?
      JMP NOTF      YES , RETURN NOT FOUND
      CPA B,I 
      JMP FNDUS     YES , FOUND USER BP 
      INB           NO , GET NEXT ADDRESS 
      JMP L.S60     IS IT EQUAL TO CURRENT BP?
FNDUS LDA LDBP      FOUND USER BP 
      CMA,INA 
      ADB A 
      STB BPADR,I 
      JMP L.SCN,I 
* 
NOTF  CCB           NOT FOUND 
      STB BPADR,I 
      JMP L.SCN,I 
* 
      SKP 
* 
*     ROUTINE TO FIND SYSTEM SYMBOL AND PATCH UP ITS VALUE
* 
*     CALLING SEQUENCE
* 
*     LDA ADDRESS OF SYMBOL 
*     LDB VALUE TO PATCH IN 
*     JSB FSYMB 
*     ERROR RETURN
*     NORMAL RETURN 
* 
FSYMB NOP 
      STB PVAL      SAVE PATCH VALUE
      JSB LADD      FIND SYMBOL 
      SZA           ANY ERROR 
      JMP ERTN      YES , ERROR 
      LDA PVAL      PATCH VALUE 
      LDB VALUA 
      JSB STCR1 
      ISZ FSYMB     NORMAL RETURN 
ERTN  JMP FSYMB,I 
* 
PVAL  NOP 
      SKP 
* 
*     FIND SYMBOL IN SYMBOL TABLE 
* 
*     CALLING SEQUENCE
*     LDA ADDRESS OF SYMBOL IN ASCII
*     JSB LADD
*      NORMAL RETURN
*      (A)=RESULT 
* 
* 
LADD  NOP 
      STA SYBAD 
      JSB L.ADD 
      DEF *+5 
SYBAD NOP 
      DEF VALUA 
      DEF SADDR 
      DEF RESLT 
      LDA RESLT 
      JMP LADD,I
* 
VALUA NOP 
SADDR NOP 
RESLT NOP 
* 
* 
* 
*     SUBROUTINE TO FIND FIXUP ENTRIES
* 
*     (A)=ADDRESS OF .ZPRV/.ZRNT
*     (B)=CURRENT POINTER TO FIXUP ENTRY
* 
*     CALLING SEQUENCE
*     JSB FDFIX 
*      END OF SEARCH
*      FOUND MATCHING ENTRIES 
* 
FDFIX NOP 
FD10  CPB FXS.L     END OF FIXUP? 
      JMP FDFIX,I 
      INB 
      LDA B,I       GET FIXUP ENTRY WORD 2
      CPA SYMCH     IS IT A MATCHING ENTRY
      JMP FOND      YES 
      ADB P3
      JMP FD10      GET NEXT ONE
* 
FOND  ADB P3
      STB TEMP1 
      ADB N4        POINT TO WD 1 OF FIXUP
      LDA B,I       ADDRESS OF DEF EXIT 
      ISZ FDFIX 
      JMP FDFIX,I 
* 
* 
* 
*     READ A WORD FROM THE OUTPUT FILE
* 
*     JSB RDOUT 
*     DEF *+3 
*     DEF DADD      ADDRESS TO READ 
*     DEF DVAL      CONTENTS OF ADDRESS 
* 
DADD  NOP 
DVAL  NOP 
RDOUT NOP 
      JSB .ENTR 
      DEF DADD
* 
      CLB 
      LDA DADD,I    GET ADDRESS 
      ADA P128      REC # =(ADDRESS+128)/128
      DIV P128      QUOTIENT IN A = RECORD #
      STA RECN      THIS IS THE RECORD #
      INB           REMAINDER IN B+1 = WORD POSITION
      STB WORDN     THIS THE WORD POSITION IN THE RECORD
* 
      JSB READF 
      DEF *+7 
      DEF ODCB2 
      DEF IERR5 
      DEF RDCB5 
      DEF P128
      DEF RTEMP 
      DEF RECN
* 
      LDA WORDN 
      ADA N1
      ADA DDCB5 
      LDB A,I 
      STB DVAL,I
      JMP RDOUT,I 
* 
* 
RECN  NOP 
RTEMP NOP 
WORDN NOP 
* 
      SKP 
* 
*     ROUTINE TO READ IN A RELOCATABLE RECORD . 
* 
*     JSB L.RED 
*     DEF *+2 
*     DEF FLAG      0/-1  OK/EOF
* 
* 
DFLAG NOP 
L.RED NOP 
      JSB .ENTR 
      DEF DFLAG 
RREAD JSB READF     READ THE NEXT REL RECORD
      DEF *+6 
      DEF RDCB5 
      DEF IERR5 
      DEF L.BUF+0   RELOCATABLE RECORD BUFFER ! 
      DEF P60 
      DEF LEN       ACTUAL RECORD LENGTH READ 
* 
      SSA,RSS       ANY ERROR?
      JMP FNXT2     NO
      STA DFLAG,I 
      JMP L.RED,I 
* 
FNXT2 STA DFLAG,I 
      LDA LEN       GET THE RECORD LENGTH READ
      SZA,RSS       ZERO RECORD LENGTH ?
      JMP RREAD     YES, SO TRY AGAIN 
      SSA,RSS       NO, WAS IT A NEG LENGTH ( -1 )
      JMP L.RED,I   NO , RETURN 
      STA DFLAG,I   YES , SET EOF 
      JMP L.RED,I 
* 
* 
      SKP 
      SKP 
* 
TABLE DEF L.ABP+0 
      DEF L.SCN+0 
      DEF L.OUT+0 
* 
* 
      SKP 
* 
P1    DEC 1 
P2    DEC 2 
P3    DEC 3 
P4    DEC 4 
P5    DEC 5 
P6    DEC 6 
P7    DEC 7 
P8    DEC 8 
P10   DEC 10
P12   DEC 12
P13   DEC 13
P14   DEC 14
P15   DEC 15
P16   DEC 16
P17   DEC 17
P18   DEC 18
P19   DEC 19
P20   DEC 20
P21   DEC 21
P22   DEC 22
P23   DEC 23
P24   DEC 24
P25   DEC 25
P26   DEC 26
P27   DEC 27
P28   DEC 28
P29   DEC 29
P30   DEC 30
P60   DEC 60
P120  DEC 120 
P128  DEC 128 
* 
N1    DEC -1
N2    DEC -2
N3    DEC -3
N4    DEC -4
N5    DEC -5
N6    DEC -6
N10   DEC -10 
N16   DEC -16 
N30   DEC -30 
N60   DEC -60 
* 
B17   EQU P15 
B40   OCT 40
B77   OCT 77
B1777 OCT 1777
B2000 OCT 2000
B2001 OCT 2001
B4000 OCT 4000
B7600 OCT 76000 
* 
M400  OCT -400
M2000 OCT -2000 
M1000 OCT 100000
* 
BL    ASC 1,BL
BP    ASC 1,BP
CO    ASC 1,CO
DB    ASC 1,DB
DI    ASC 1,DI
EN    ASC 1,EN
LE    ASC 1,LE
LI    ASC 1,LI
LO    ASC 1,LO
MS    ASC 1,MS
NE    ASC 1,NE
OF    ASC 1,OF
ON    ASC 1,ON
RE    ASC 1,RE
SC    ASC 1,SC
SE    ASC 1,SE
ST    ASC 1,ST
* 
HIMSK OCT 177400
M7777 OCT 77777 
* 
JMP3I JMP 3,I 
IJSB  JSB 0,I 
* 
      SKP 
* 
#PGM  NOP           # OF PROGRAMS 
#MREP NOP           # OF RP,ABS & MEM RES ENT. PT.
ABGRS NOP 
ABOOT NOP 
ADDR  NOP 
      NOP 
      NOP 
ADFEX NOP 
AEXIT NOP 
APNDB NOP           0/1 NO DBUG/APPEND DBUG 
BGLOD NOP 
CBCOM NOP 
CBGBP NOP 
CFWBG NOP 
CFWRT NOP 
CNMID NOP 
CRTBP NOP 
CSYBP NOP 
CNT10 NOP 
CNT20 NOP 
CNT30 NOP 
DBFLG NOP 
DUMBP NOP 
FDBUG NOP 
FLAG  NOP 
FSCOM NOP           0=ACCEPT SCOM , -1=NOT ACCEPT SCOM
IPTN1 DEC 1         OPEN NON EXECLUSIVE FOR REL & SEARCH
JBLBX NOP           JSB $LIBX,I 
LEN   NOP           LEN OF RELOCATABLE RECORD 
LENBC NOP           LENGTH OF BLANK COMMON
LOBP  NOP           LOW BP FOR RT PROG
LOMAN NOP           LOW MAIN FOR RT PROG
MODFD NOP           0/1 MODULE NOT FOUND/MODULE FOUND 
MULT  NOP           0/-1 YES/NO , NOT A MULTIPLE SCAN 
OUTID NOP           0/1  NO/YES OUT OF ID SEGMENTS
PNTR  NOP 
PRENT NOP           PRIMARY ENTRY PT. FOR RT PROG.
PRIFG NOP           FLAG TO INDICATE FIRST ENTRY POINT
PRIOR NOP           PRIORTY 
REL1S NOP           0/-1  NOT 1ST REL COMMD / YES 1ST REL COMMD 
SBFLD NOP           SUBFIELD REC , GEN=0
SCBIT NOP           0/1 DON'T SET SC IN ID/ SET SC IN ID
SCOMF NOP           0/1 DO NOT USE / USE SYSTEM COMMON
SMDNM NOP           0/1 NO NAME/SEARCH FOR MODULE NAME
SNPLB NOP 
STRUP NOP           STARTUP PROG FLAG 1=YES 0=NO
SUBLD NOP           ANY SUBROUTINE LOADED DURING A SNAP LIB SCAN
SYMCH NOP 
TAGSM NOP           TAG BIT 4 = SYS COM , BIT 5 = NOT INCLUDED IN SNAP
TCBPL NOP 
TEMOP NOP 
TEMP1 NOP 
TEMP2 NOP 
TEMP3 NOP 
TEMP4 NOP 
TEMP5 NOP 
TLOCC NOP 
TSDBP NOP 
TYPE  NOP           TYPE OF MODULE
TP7FG NOP 
VALUR NOP 
ZERO  NOP 
ZPTN  NOP 
ZTEM3 NOP 
ZTEM4 NOP 
ZTEM5 NOP 
* 
DPNAM DEF PNAME 
PNAME NOP 
      NOP 
      NOP 
* 
MDNAM NOP 
      NOP 
      NOP 
DLBUF DEF L.BUF+0 
* 
DIDNM DEF IDNAM 
LIBFL BSS 6 
A     EQU 0 
B     EQU 1 
* 
      END RTLG2 
                                        