ASMB,L,N,C
*LOADR  USE 'ASMB,R,N' (RTE-II)  OR  'ASMB,R,Z' (RTE-III) 
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
*  ***************************************************************
* 
      IFN 
******* BEGIN NON-MEU CODE **** 
      HED RELOCATING LOADR FOR RTE-II  <1732> 
      NAM LOADR,3,90 92001-16002 REV.1732 770811
******* END NON-MEU CODE ****** 
      XIF 
      IFZ 
******* BEGIN MEU CODE ******** 
      HED RELOCATING LOADR FOR RTE-III  <1640>
      NAM LOADR,3,90 92060-16004 REV.1732 770811
      EXT $ENDS,$MATA 
******* END MEU CODE ********** 
      XIF 
* 
      UNL 
      IFN 
******* BEGIN NON-MEU CODE **** 
      LST 
*     NAME:   RTE LOADER
*     SOURCE: 92001-18002 
*     RELOC:  92001-16002 
*     PGMR:   P. KAPOOR, E. WONG, G. ANZINGER 
* 
      UNL 
******* END NON-MEU CODE ****** 
      XIF 
      IFZ 
******* BEGIN MEU CODE ******** 
      LST 
*     NAME:   RTE LOADER
*     SOURCE: 92001-18002 
*     RELOC:  92060-16004 
*     PGMR:   E. WONG 
* 
      UNL 
******* END MEU CODE ********** 
      XIF 
      LST 
      SUP 
      EXT EXEC,$LIBR,$LIBX,PRTN 
* 
      SKP 
*  LIST OF ERROR DIAGNOSTICS
* 
*     * = MODULE NAME PRINTED BEFORE DIAGNOSTIC 
*     **= ENTRY POINT NAME PRINTED AFTER MODULE NAME
* 
*  01 * - CHECKSUM ERROR
*  02 * - ILLEGAL RECORD
*  03 * - MEMORY OVERFLOW 
*  04 * - BP LINKAGE OVERFLOW 
*  05 * - SYMBOL TABLE OVERFLOW 
*  06 * - COMMON BLOCK ERROR
*  07 * **  - DUPLICATE ENTRY POINTS
*  08 - NO TRANSFER ADDR
*  09 * - RECORD OUT OF SEQUENCE
*  10 - ILLEGAL PARAMETER IN ON OR GO STATEMENT 
*  11 - ATTEMPT TO REPLACE A CORE RESIDENT PROG 
*  12 - LG AREA USED WITHOUT RESETTING (P1=2 IN 'GO') 
*       P1 WAS NOT INPUT AS 99 PREVIOUSLY.
*  13 - LG AREA HAS BEEN ILLEGALLY RESET - OVERWRITTEN. 
*       PROGRAM ADDITION ON LG AREA NOT ALLOWED FOR MAIN SEG
*       LOAD IF THE LOADER HAS ALREADY LOADED THE LAST SEGMENT. 
*       HAVING ONCE USED LG AREA FOR FORCE LOADING WITH P1=99,
*       LOADER CANNOT BE RESCHEDULED WITH P1=99 IN THE 'GO' REQUEST.
*  14 * - ASMB PRODUCED ILLEGAL RELOCATABLE . A DBL REC 
*       REFERS TO AN EXTERNAL WHICH HAS NOT BEEN DEFINED. 
*       (THE ORDINAL CAN NOT BE FOUND IN THE SYMBOL TABLE). 
*  15 * ** -  FORWARD REFERENCE TO A TYPE 3 OR TYPE 4 ENT OR TO 
*       AN EXT WITH OFFSET WHICH HAS NOT YET BEEN DEFINED,
*       OR A FORWARD INDIRECT EXTERNAL REFERENCE. 
*  16 - ILLEGAL PARTITION NUMBER OR CORRUPT MAP TABLE.
*  17 - NUMBER OF PAGES REQUIRED EXCEEDS AMOUNT IN PTTN.
*  18 - TOTAL NUMBER OF PAGES REQUIRED EXCEEDS 32.
* 
* 
*  LIST OF WARNINGS (THE RELOCATION IS NOT ABORTED) 
* 
*   17 - NUMBER OF PAGES REQUIRED EXCEEDS AMOUNT IN PTTN. 
      SKP 
* 
*      VARIABLES AND CONSTANTS
* 
PLIST NOP           LIST/NO LIST FLAG = 0/1 
CWABP NOP           CURRENT BASE PAGE ADDR
LST1  NOP           LST WORD 1 ADDR 
LST2  NOP           LST WORD 2 ADDR 
LST3  NOP           LST WORD 3 ADDR 
LST4  NOP           LST WORD 4 ADDR 
LST5  NOP           LST WORD 5 ADDR 
PRIOR NOP           ADDR OF PRIORITY IN ID SEG
PRENT NOP           ADDR OF PRIMARY ENTRY POINT 
NAM12 NOP           ADDR OF NAME 1,2
NAM34 NOP           ADDR OF NAME 3,4
NAM5  NOP           ADDR OF NAME 5, TYPE
RESL  NOP           ADDR OF 10'S MILLS. IN ID SEG 
TMDY1 NOP           ADDR OF TIME OF DAY ,LS 
TMDY2 NOP           ADDR OF TIME OF DAY , MS
NUPLS NOP           NO. UTILITY PROGS LOADED
TPREL NOP           CURRENT MAX PROG RELOC ADDR 
DBLAD NOP           DATA BLOCK RELOCATION ADDR
OPRND NOP           ABSOLUTE MEMORY ADDR
WDCNT NOP           TEMPORARY COUNTER 
DSKUN NOP           CURRENT DISK LOGICAL UNIT NO. 
DTRAK NOP           CURRENT DBUF TRACK
DSECT NOP           CURRENT DBUF SECTOR 
DCNT  NOP           CURRENT DBUF COUNT
CURAL NOP           CURRENT LBUF ADDR 
CURAT NOP           CURRENT TBUF ADDR 
TBUF  BSS 5         TEMPORARY BUFFER
MSEGF NOP           MAIN/SEGMENT FINAL LOAD FLAG
NPAR  BSS 7         NAME REC PARAMETERS 
BKLWR NOP           LAST WORD OF AVAILABLE MEM
LWA   NOP           LOADING AREA, 
BPFWA NOP           FWA OF ACTUAL BP LINK AREA
FWABP NOP           FWA AND LWA OF DUMMY
LWABP NOP           BASE PAGE AREA. 
SEGB  NOP           SEGMENT BASE PAGE LOWER BOUND 
DBFLG NOP           NO DEBUG/DEBUG FLAG = 0/1 
LGO   NOP           LOAD-AND-GO FLAG: 0=NO, >0=YES
MSEG  NOP           MAIN/SEGMENT LOAD FLAG: 0=NO, >O=YES
DBLFL NOP           FIRST DBL REC: -1,YES; 0,NO.
EDFLG NOP           EDIT FLAG: 1=ADDITION, 2=REPLACEMENT
PTYPE DEC 3         PROG TYPE 
PPRI  NOP           PROG PRIORITY 
OPCOD NOP 
COMTP NOP           TYPE OF COMMOM
MXCOM NOP           MAXIMUM COMMON LENGTH 
PAM1  NOP           PARM1 OF ON REQ 
PAM2  NOP 
BATCH NOP           BATCH MODE FLAG: 0=NO, -1=YES 
INDLU NOP 
N1    DEC -1
N9    DEC -9
N64   DEC -64 
N128  DEC -128
P2    DEC 2 
P3    DEC 3 
P4    DEC 4 
P5    DEC 5 
P6    DEC 6 
P7    DEC 7 
P8    DEC 8 
P12   DEC 12
P16   DEC 16
P18   DEC 18
P20   DEC 20
P22   DEC 22
P23   DEC 23
P26   DEC 26
P42   DEC 42
P98   DEC 98
P99   DEC 99
P128  DEC 128 
P9999 DEC 9999
M7    EQU P7
M17   OCT 17
M20   OCT 20
M60   OCT 60
M77   OCT 77
M177  OCT 177 
M200  OCT 200 
M300  OCT 300 
M377  OCT 377 
M400  OCT 400 
M0760 OCT 76000 
M7400 OCT 177400
NDAY  OCT 177574,025000 
ENTRL DEF *+3       RELOCATION BASE TABLE 
RBTAD DEF *+1       RELOCATION BASE TABLE 
      NOP 
PPREL NOP           CURRENT PROG BASE 
BPREL NOP           BASE PAGE BASE
COMAD NOP           COMMON BASE 
      NOP           ABSOLUTE BASE 
BLOK# NOP 
BLANK OCT 40
UBLNK OCT 20000 
UCHRG OCT 43400 
MSIGN OCT 100000
CHRDE ASC 1,DE
CHRBU ASC 1,BU
MESS2 DEF MBUF
AMEM3 DEF MBUF+3
AMEM6 DEF MBUF+6
MES10 DEF *+1 
      ASC 7,LOADR ABORTED 
PGMIN OCT 305 
SEOT  OCT 705       SET END OF TAPE CONWORD 
LISTU OCT 206       LIST OUTPUT UNIT NO.
BLST  NOP           BEGINNING OF LOADER SYMBOL TABLE
PLST  NOP           END OF LST
TLST  NOP           CURRENT LST ADDR. 
SLST  NOP           INITIALIZE FOR SEGMENT AREA.
FLST  NOP           FWA OF LST SET FOR USER'S PROG
OEFL1 NOP           ODD/EVEN SECTOR FLAG
SEOFG NOP           ODD/EVEN SEC FLAG FOR MAIN/SEG
LBOEF NOP           LIB ODD/EVEN SECOR FLAG 
LGTMP NOP           PREVIOUS LG ODD/EVEN SEC FLAG 
LGOEF NOP           CURRENT LG ODD/EVEN SECTOR FLAG 
LGOBF NOP           LG ON GO REQ. FLAG
#IDAD NOP           ADDR OF LONG ID SEGMENT 
* 
      SPC 1 
      IFN 
******* BEGIN NON-MEU CODE **** 
N40   DEC -40 
******* END NON-MEU CODE ****** 
      XIF 
      SPC 1 
      SPC 1 
      IFZ 
******* BEGIN MEU CODE ******** 
N140  DEC -140
N34   DEC -34 
P1000 DEC 1000
P21   DEC 21
M40   OCT 40
MES11 DEF *+1 
      ASC 9,00 PAGES REQUIRED 
MS11# EQU MES11+1 
#PGS  NOP           # PAGES NEEDED IN PTTN
#PTTN NOP           REQUESTED PTTN NUMBER 
#PGPT NOP           # PAGES IN PTTN 
#MPFT NOP           MEMORY PROTECT FENCE TABLE INDEX
#MNPG NOP           LOWEST PAGE NO. USED BY PROG
#MXPG NOP           HIGHEST PAGE NO. USED BY PROG 
#MXRT DEC -1        #PAGES IN LARGEST RT PTTN 
#MXBG DEC -1        #PAGES IN LARGEST BG PTTN 
ER.16 LDA ERR16     ILLEGAL PTTN #
      RSS 
ER.17 LDA ERR17     #PAGES REQ.>PTTN SIZE 
      RSS 
ER.18 LDA ERR18     TOTAL PAGES > 32
      JMP ABOR
ERR16 ASC 1,16
ERR17 ASC 1,17
ERR18 ASC 1,18
******* END MEU CODE ********** 
      XIF 
      SPC 1 
      SKP 
*      BASE PAGE COMMUNICATION VALUES 
* 
A     EQU 0 
B     EQU 1 
* 
.     EQU 1650B     ESTABLISH ORIGIN OF AREA
* 
INTLG EQU .+5       NUMBER OF INTERRUPT TBL ENTRIES 
TAT   EQU .+6       FWA OF TRACK ASSIGNMENT TABLE 
KEYWD EQU .+7       FWA OF KEYWORD BLOCK
XEQT  EQU .+39      ID SEGMENT ADDR OF LOADR
IDSDA EQU .+56      DISC ADDR. OF FIRST ID SEGMENT
IDSDP EQU .+57      -POSITION WITHIN SECTOR 
BPA2  EQU .+59      LWA RT DISC RES. BP LINK AREA 
RTORG EQU .+62      FWA OF REAL-TIME AREA 
RTCOM EQU .+63      LENGTH OF REAL TIME COMMON AREA 
RTLWA EQU .+65      LWA OF RT DISC RESIDENT AREA
BKORG EQU .+66      FWA OF BG AREA
BKCOM EQU .+67      LENGTH OF BG COMMON AREA
TATLG EQU .+69      LENGTH OF TRACK ASSIGNMENT TABLE
TATSD EQU .+70      # OF TRACKS ON SYSTEM DISC
SECT2 EQU .+71      # SECTORS/TRACK ON LU 2 (SYSTEM)
SECT3 EQU .+72      # SECTORS/TRACK ON LU 3 (AUX.)
DSCLB EQU .+73      DISC ADDR OF RES LIB ENTRY PTS
DSCLN EQU .+74      # OF RES LIB ENTRY POINTS 
DSCUT EQU .+75      DISC ADDR OF RELOC UTILITY PROGS
DSCUN EQU .+76      # OF RELOC UTILITY PROGS
LGOTK EQU .+77      LOAD-N-GO: LU,STG TRACK,# OF TRKS 
LGOC  EQU .+78      CURRENT LGO TRACK/SECTOR ADDR 
BKLWA EQU .+87      LWA OF MEMORY IN BG 
      SPC 1 
      IFN 
******* BEGIN NON-MEU CODE **** 
BPA1  EQU .+58      FWABP RT DISC RES 
BPA3  EQU .+60      FWABP BG DISC RES 
BKGBL OCT 1646      LWABP BG DISC RES 
URFWA EQU .+64      FWA OF USER RT DISC RES AREA
URLWA NOP           LWA OF USER RT DISC RES AREA
UBFWA EQU .+68      FWA OF USER BG DISC RES AREA
UBLWA EQU BKLWA     LWA OF USER BG DISC RES AREA
******* END NON-MEU CODE ****** 
      XIF 
      SPC 1 
      SPC 1 
      IFZ 
******* BEGIN MEU CODE ******** 
BPA1  EQU P2        FWABP USER RT DISC RES
BPA3  EQU BPA1      FWABP USER BG DISC RES
BKGBL EQU BPA2           LWABP USER BG DISC RES 
URFWA NOP           FWA USE RT DISC RES AREA
URLWA OCT 77777     LWA USER RT DISC RES AREA 
UBFWA EQU URFWA     FWA USER BG DISC RES AREA 
UBLWA EQU URLWA     LWA USER BG DISC RES AREA 
******* END MEU CODE ********** 
      XIF 
      SPC 1 
      SKP 
* 
*  LOADING OF PROGRAMS WITH THE RELOCATABLE LOADER CONSISTS OF
*    (1) LOADING PROGRAMS FROM THE INPUT UNIT 
*    (2) LOADING PROGRAMS FROM THE PROG LIB 
*  THE FIRST PROGRAM WITH A PRIMARY ENTRY POINT IS CONSIDERED 
*  TO BE THE MAIN PROGRAM.  AT LEAST ONE MAIN PROG MUST BE LOADED 
*  BEFORE THE LIBRARY IS LOADED.  LINKAGES FROM THE MAIN PROG 
*  TO ALL USER AND LIB SUBROUTINES IS DETERMINED BY ENTRIES 
*  IN THE LOADER SYMBOL TABLE (LST).
* 
*  EACH LST ENTRY CONSISTS OF 5 WORDS:
* 
*    *************************************************************
*    *  NAME -   *  NAME -   *  NAME -   *ENT/EXT FLG*           *
*    * CHARS 1,2 * CHARS 3,4 *  CHAR 5/  *  'V' BIT  *           *
*    *           *           *  ORDINAL  * ENT TYPE  * SYMB VALU *
*    *************************************************************
* 
*  EACH WORD IN THE LST ENTRY CONSISTS OF THE FOLLOWING:
* 
*    WORD 1: SYMBOL NAME - ASCII CHARACTERS 1,2 
*            BIT 15 = 1 MEANS THE ENTRY HAS BEEN LISTED 
*            BIT 15 = 0 MEANS THE ENTRY HAS NOT BEEN LISTED 
*    WORD 2: SYMBOL NAME - ASCII CHARACTERS 3,4 
*    WORD 3: (8-15) SYMBOL NAME - ASCII CHARACTER 5 
*            (0-7) EXT ORDINAL
*    WORD 4: ORGANIZED INTO FOLLOWING THREE FIELDS -
*            STATUS FIELD (BITS 0 TO 6) - INDICATES STATUS
*            OF THE SYMBOL AS FOLLOWS:
*            0 - ENT SYMBOL READ DURING LIB SCAN (COULD BE
*                FROM RES LIB, RELOC LIB ON DISC OR USER
*                GIVEN LIB).
*            1 - ENT SYMBOL READ DURING FORCE LOADING OF USER 
*                PROGRAM. 
*            2 - EXT ENTRY (UNDEFINED SYMBOL).
*            NOTE THAT STATUS OF A SYMBOL CHANGES FROM 2 TO 
*            0 OR 1 AS IT BECOMES DEFINED.
*            'V' BIT (BIT 7) - WHEN SET THEN WORD 5 HAS THE 
*             THE ADDRESS OF THE BASE PAGE LINK, ELSE WORD 5
*             HAS SYMBOL VALUE (VALUE OF ENT AFTER RELOCATIONA).
*            ENT TYPE (BITS 8 TO 15) - IS 0 FOR EXT ENTRY AND 
*            0 TO 4 (RELOCATION INDICATOR) FOR ENT SYMBOL.
*    WORD 5: BASE PAGE LINKAGE ADDR IF 'V' BIT IS SET 
*            ELSE SYMBOL VALUE .
* 
*  INITIALLY, THE LOADER SYMBOL TABLE CONSISTS OF THE ENTRY POINTS
*  FOR THE LIBRARY ROUTINES IN THE RESIDENT LIB AND THE 
*  SYSTEM ENTRY POINTS (TYPE 1 ENT NOT PICKED UP). AS EACH
*  USER PROGRAM IS LOADED AND ENT/EXT RECS PROCESSED, SYMBOLS 
*  ARE ADDED TO THE LIST.  WHEN ALL USER PROGS HAVE 
*  BEEN LOADED, AND LIB LOADING IS INITIATED, THE LOADER
*  SCANS LST FOR UNDEFINED SYMBOLS AND MATCHES THESE WITH THE 
*  ENT SYMBOLS IN LIBRARY DIRECTORY. ON FINDING A MATCH, THE
*  LOADER LOADS THE CORRESPONDING LIB PROG AND ADDS ITS 
*  ENT'S AND EXT'S TO THE LST.  THIS PROCEDURE CONTINUES UNTIL ALL
*  UNDEFINED SYMBOLS HAVE BEEN DEFINED OR A COMPLETE PASS THROUGH 
*  THE DIRECTORY FAILED TO RESOLVE ANY EXTERNAL . 
*     FOR MAIN/SEGMENT LOAD, IF UNRESOLVED SYMBOLS STILL REMAIN 
*  THEN THE ENTIRE LG AREA IS SCANNED FOLLOWING WHICH THE DISC
*  LIBRARY DIRECTORY  IS AGAIN SCANNED - IF NEED BE. IF ANY 
*  SYMBOL STILL REMAINS UNDEFINED AFTER THIS THEN IT LISTED 
*  - EXCEPT FOR UNDEFINED SYMBOLS IN MAIN - AND THE LOADER
*  SUSPENDS.
*     IF THE LOADER IS OPERATING UNDER BATCH, ALL OUTPUT
*  THAT NORMALLY COMES ON THE SYSTEM CONSOLE GETS LISTED
*  ON LU 6. 
* 
*  THE LST IS ORIGINED AT THE UPPER END OF THE LOADER AND EXTENDS 
*  TOWARD HIGH CORE.  AN IRRECOVERABLE ERROR IS DETECTED IF LST 
*  EXTENDS PAST THE LAST WORD OF AVAILABLE MEMORY.
*  IN CASE OF ERROR THE LOADER PRINTS THE NAME OF THE MODULE
*  IN WHICH THE ERROR OCCURED, FOLLOWED BY THE ERROR CODE.
*  IN CASE OF ERRORS 7 & 15 , NAME OF THE ENTRY POINT CAUSING 
*  THE VIOLATION IS ALSO PRINTED FOLLOWING THE MODULE NAME. 
* 
      SKP 
* 
*    LOADER INITIALIZATION SECTION
* 
*  LOADR IS SCHEDULED BY AN 'ON' STATEMENT HAVING 
* THE FOLLOWING FORMAT: 
* 
*    'ON,LOADR,P1,P2,P3,P4,P5' , WHERE: 
* 
*   P1 = N,   N IS THE LOGICAL UNIT NUMBER OF THE 
*              BINARY INPUT DEVICE FOR LOADING
*              PROGRAMS. IF P1 = 0, UNIT #5 IS USED.
*             IF P1 = 99, LOAD FROM THE DISC
*              LOAD-AND-GO AREA.
* 
*   P2 = N,   N IS THE LOGICAL UNIT NUMBER OF THE 
*              LIST OUTPUT DEVICE FOR PRINTING
*              LOADING INFORMATION. IF P2 = 0,
*              UNIT #6 IS USED. 
* 
*   P3 = N,   N IS A CODE FOR THE TYPE OF OPERATION:
      UNL 
      IFN 
      LST 
*             N IS A 2 DECIMAL DIGITS CODE (YZ) 
      UNL 
      XIF 
      IFZ 
      LST 
*             N IS A 3 DECIMAL DIGITS CODE (XYZ)
*             100'S DIGIT (X) - SUBSYSTEM GLOBAL AREA 
*             --------------------------------------- 
*               0 - SSGA NOT USED (DEFAULT) 
*               1 - SSGA USED BY PROG (ONLY IN RTE-III) 
      UNL 
      XIF 
      LST 
* 
*              10'S DIGIT (Y) - COMMON TYPE 
*             ----------------------------- 
      UNL 
      IFN 
      LST 
*               0 - DEFAULT RT COMMON FOR RT PROGS, 
*                           BG COMMON FOR BG PROGS
*                           LOCAL COMMON FOR TEMPORARY LOADS
      UNL 
      XIF 
      LST 
      UNL 
      IFZ 
      LST 
*               0 - DEFAULTS TO LOCAL COMMON   !! (*** NOTE THIS ***) !!
      UNL 
      XIF 
      LST 
*               1 - SYSTEM COMMON 
*                           RT COMMON FOR RT PROGS, 
*                           BG COMMON FOR BG PROGS
*               2 - LOCAL COMMON
*               3 - REVERSE COMMON
*                           RT COMMON FOR BG PROGS, 
*                           BG COMMON FOR RT PROGS
* 
*             DEFAULT 
*             COMMON    1'S DIGIT (Z) - OPERATION CODE
*             ----------------------------------------
*               2   0 - BG TEMPORARY(DEFAULT) 
*               2   1 - BG TEMPORARY WITH DEBUG 
*               1   2 - ONLINE EDIT 
*               -   3 - LIST PROGS
*               -   4 - PURGE PROG
*               2   5 - REAL-TIME TEMPORARY 
*               1   6 - REAL-TIME REPLACE 
*               1   7 - REAL-TIME ADD NEW 
*               1   8 - BG REPLACE
*               1   9 - BG ADD NEW
*   NOTE :   VALUES N=13,14,23,24,33 AND 34 ARE INVALID.
* 
*   P4 = N,   N IS THE STRUCTURE PARAMETER
      UNL 
      IFZ 
      LST 
*             (5 DECIMAL DIGITS CODE  XXYYZ)
*             XX - NUMBER OF PAGES REQUIRED 
*             ----------------------------- 
*              00    - USE PROG SIZE (DEFAULT)
*              01-32 - NUMBER OF PAGES
* 
*             YY - PTTN ASSIGNMENT
*             ------------------------- 
*              00    - NONE ASSIGNED (DEFAULT)
*              01-64 - PTTN NUMBER
* 
*              Z - STRUCTURE
*             --------------
      UNL 
      XIF 
      LST 
*              0 - MAIN PROG ONLY (DEFAULT) 
*              1 - BG MAIN+SEGMENT LOADING. 
* 
*   P5 = 1,   OMIT PROG NAME AND BOUNDS LIST
*      = 2,   OMIT LIST OF ENTRY POINTS 
*      = 3,   OMIT BOTH 
*      = 0,   DO BOTH LISTINGS (DEFAULT)
*   PARAMETERS P3, P4 AND P5 DEFAULT TO ZERO IF OMITTED.
* 
      SKP 
* 
MESS7 DEF *+1       THIS MESS MUST PRECEDE MBUF 
      ASC 11,DUPLICATE PROG NAME -
MBUF  BSS 66        NAM REC BUFFER
MBUF1 EQU MBUF+1
SBUF  BSS 128       DIRECTORY BLOCK BUFF
XBUF  BSS 128       DISC BUF FOR RELOCS 
DBUF  BSS 128       DISC BUF FOR ABS
LBUF  BSS 128       RELOC IN, UREAD, COMP TRKS
.BUF  EQU *         END OF BUFFERS IN OVERLAYED CODE
* 
      ORG MBUF      PUT INIT CODE IN BUFFER 
LOADR LDA B,I       SAVE
      STA PAM1       PARAMETER 1
      INB 
      LDA B,I       CHECK PARAMETER 
      STA PAM2      SAVE PARAMETER P2 
      SZA,RSS       IF LIST DEVICE NOT GIVEN
      LDA P6        USE 6 
      IOR M200      ADD V BIT TO USE COLUMN ONE 
      STA LISTU      SET NEW LU.
      INB 
      LDA B,I        AND 3, 
      STA OPCOD       OPERATION CODE. 
      INB 
      LDA B,I        AND 4, 
      SPC 1 
      IFN 
* BEGIN NON-DMS CODE ***************
      AND P1        KEEP ONLY BIT 0 IF RTE-II 
*** END NON-DMS CODE ***************
      XIF 
      SPC 1 
      STA MSEG        (MAIN/SEGMENT FLAG) 
      INB 
      LDA B,I        AND 5. 
      STA PLIST       (LIST/NO LIST)
      SPC 2 
      UNL 
* ******************DEBUGGING***********************
*     EXT DBUG
*     AND P3
*     CPA PLIST     PARAM > 3 ? 
*     JMP LOADP      NO, NORMAL EXECUTION 
*     STA PLIST      YES, SET CORRECT PARAM 
*     JSB DBUG       WE WANT DDT !
*     DEF *+1 
LOADP EQU * 
* ******************DEBUGGING***********************
      LST 
      SPC 1 
* 
      JSB EXEC
      DEF *+3       INDICATE UNDECLARED CORE
      DEF P22                       USAGE.
      DEF P3
      JSB LGSET     SET UP LG PARAMETERS
      LDA LGOC      SET UP END OF LG AREA ADDR
      STA LGOCP      FOR PROG INPUT 
      STA LGOCL       AND FOR LIB SCAN. 
      CLB             SET FLAG TO INDICATE
      SLA             WHETHER LAST LGOC ENDED 
      CCB             ON ODD SEC BOUNDRY OR EVEN. 
      STB LGOEF 
      LDB XEQT       (B)=ADDR OF LOADR'S ID SEG 
      ADB P20        (B)=ID SEG'S WORD 21 ADDR
      LDA B,I        GET WORD 21 TO CHECK BIT 15
      LDB LISTU      (B)=LIST LU CONTROL WORD 
      SSA            IF LOADR RUNNING UNDER BATCH 
      STB LIST1       THEN SYSOUT DEVICE IS LIST LU.
      CLB 
      SSA             SET 'BATCH' FLAG TO NON-ZERO
      CCB               IF RUNNING UNDER BATCH
      STB BATCH 
      LDA PLIST      CHECK PARAM 5
      SSA            IF NEGATIVE
      JMP LDI5        THEN INPUT ERROR
      ADA N4
      SSA,RSS        IF GREATER THAN 3
      JMP LDI5        THEN INPUT ERROR. 
      LDA PLIST 
      ARS            SET FLAG 
      STA ENFLG       FOR ENTRY POINT LISTING.
      LDA PAM1       CHECK PRAM 1.
      SZA,RSS        IF ZERO, GO TO CHECK #2, 
      JMP LDI2       LEAVE INPUT AS LU 5. 
      CPA P1        IF INPUT IS SYS TTY,
      JSB CHKP1      TREAT AS ERROR UNLESS P3=3 OR 4. 
      CPA P2        IS THIS TO THE DISK 
      JMP LDI5      JUST WHO DO YOU THINK YOUR KIDDING??????
      LDB P2
      CPA P99       IF PARAM
      STA LGO        WORD.
      CPA P99       IF LG TO BE USED
      STB LGOU      SET 'LG IN USE' FLAG
* 
LDI2  LDB XEQT       (B)=ADDR OF LOADR'S ID SEG 
      ADB P23        (B)=ADDR OF LOADR'S HIGH MAIN
      LDA B,I        SET UP LOADR SYMBOL TABLE TO 
      STA BLST         START FROM LOADR'S HIGH
      STA PLST           MAIN ADDR AND GROW UP
      STA TLST             TOWARD HIGH CORE.
      STA SLST
      STA FLST
      ADB N9         (B)=ADDR OF LOADR ID'S WORD 15 
      LDA B,I        GET LOADR'S PROG TYPE
      LDB RTLWA      GET ADDR OF LOADR'S LAST WORD
      SPC 1 
      IFN 
******* BEGIN NON-MEU CODE **** 
      ADB N1        SUBTR 1 FOR RTE-II
      STB URLWA 
******* END NON-MEU CODE ****** 
      XIF 
      SPC 1 
      SLA            SKIP IF LOADR IS FG
      LDB BKLWA      ELSE GET LWA OF BG.
      STB BKLWR      SET AS LWA AVAILABLE TO LOADR
      LDA OPCOD      GET P3 OF 'ON' REQUEST.
      SPC 1 
      IFN 
******* BEGIN NON-MEU CODE **** 
      ADA N40        ADD -40 TO CHECK RANGE 
******* END NON-MEU CODE ****** 
      XIF 
      SPC 1 
      SPC 1 
      IFZ 
******* BEGIN MEU CODE ******** 
      ADA N140      ADD 140 (MAX WITH SSGA) 
******* END MEU CODE ********** 
      XIF 
      SPC 1 
      SSA,RSS        IF OPCODE > 39 
      JMP LDI5        THEN INPUT ERROR
      LDA OPCOD      GET P3 AGAIN 
      CLB 
.MBUF                EQU *-MBUF    OVERLAY PROBLEM? 
      STB MBUF       CLEAR "VALID MODULE NAME PRESENT" FLAG 
      DIV P10        GET 'COMMON TYPE' (REG-A) AND
      STA COMTP        SAVE IT. 
      STB OPCOD      10-119 RANGE IN 'OPCOD'
      ADB OPTBL      ADD TABLE BASE ADDR TO OPCODE
      LDB B,I        RESOLVE INDIRECT 
      JMP B,I        GO TO PROPER PROCESSOR 
* 
OPTBL DEF *+1 
      DEF BGTMP      0=BG TEMPORARY 
      DEF DBGF       1=BG TEMP WITH 'DEBUG' 
      DEF LEDIT      2=EDIT WITH "GO" REQUEST 
      DEF LLIST      3=LIST ID SEGMENTS 
      DEF LDI3       4=PURGE PROG 
      DEF FGTMP      5=FG TEMPORARY 
      DEF FGRPL      6=FG REPLACE 
      DEF FGNEW      7=FG ADD NEW 
      DEF BGRPL      8=BG REPLACE 
      DEF BGNEW      9=BG ADD NEW 
* 
DBGF  ISZ DBFLG      SET DEBUG FLAG 
BGTMP JMP LEDT3      TREAT AS BG TEMPORARY
BGNEW CLB,INB,RSS    EDIT FLAG = 1 FOR NEW BG 
BGRPL LDB P2         EDIT FLAG = 2 FOR REPLACE
      STB EDFLG      SET PROPER EDIT FLAG 
      JMP LEDT3      SET COMMON BOUNDS
* 
FGNEW CLB,INB,RSS    EDIT FLAG = 1 FOR ADD
FGRPL LDB P2         EDIT FLAG = 2 FOR REPLACE
      STB EDFLG      SET PROPER EDIT FLAG 
FGTMP LDB P2
      STB PTYPE      SET PROG TYPE = 2
      JMP LEDT3      SET COMMON BOUNDS
* 
* NORMAL ON-LINE LOADING OPERATION
* 
LEDT3 EQU * 
      SPC 1 
      IFZ 
******* BEGIN MEU CODE ******** 
      LDA MSEG      GET PARAM P4
      CLB 
      DIV P1000     SAVE # PAGES REQ. 
      STA #PGS       00XXX-32XXX
      LDA B 
      CLB 
      DIV P10       SAVE PTTN # REQ.
      STA #PTTN      XX00X-XX64X
      STB MSEG       SAVE XXXX0-XXXX1 
* 
      CCB            GET ADDR MAP TABLE - 1 
      ADB $MATA       WHERE # OF PART. IS KEPT
      SZA,RSS       WAS PTTN# SPECIFIED?
      JMP NOPTN      NO, DO SIZE CHECK LATER
      SPC 2 
*     PARTITION WAS SPECIFIED FOR THIS PROG 
* 
      LDA B,I        YES, DO SIZE CHECK NOW 
      CMA 
      ADA #PTTN 
      SSA,RSS       ERR16 IF PTTN# > #PTTNS 
      JMP ER.16 
* 
                                                