ASMB,R,L,C
      HED RTM RELOCATING LOADER 
* 
* 
********************************************************* 
* 
*   RTM LOADER MAIN CONTROL 
*   MIKE SCHOENDORF 
*   OCTOBER 8, 1976 
* 
*   SOURCE:        92064-18121
*   RELOCATEABLE:  92064-16023
********************************************************* 
* 
      NAM RTMLD,3,90  92064-16023  REV.1740  770618 
* 
*   ENTRY POINT NAMES 
* 
      ENT PNAME,PNAMA,PRAMS 
* 
*   EXTERNAL REFERENCE NAMES
* 
      EXT ABRC1,ABRT1,BPLOC,CLFL2,COML,CONSO
      EXT DBTAD,DIAG,DIAG2,EXEC6,FWABP,FWAC 
      EXT FWAM,INIT2,LDGEN,LGUNT,LNKDR,LOCC 
      EXT MAPS,.MEM4,PRCMD,PRINT,SCP,TIMES
      EXT TYOFF,?XFER 
      EXT KCVT
* 
* 
      SUP 
**********************************************************
*   THE FUNCTION OF THIS LOADER IS TO RELOCATE AND LINK 
*   RELOCATABLE BINARY MODULES TOGETHER, AND PREPARE
*   THEM FOR EXECUTION ON AN RTM SYSTEM. AFTER
*   STARTING THIS LOADER WITH A ON LOADR COMMAND
*   A SNAPSHOT CAN BE READ IN.
*   THIS SNAPSHOT CONTAINS THE DEFAULT
*   MEMORY BOUNDS, SYSTEM COMMON, AND DEFINES THE 
*   CORE-RESIDENT LIBRARY ROUTINES FOR THE TARGET RTM 
*   SYSTEM. 
*       SYMBOL TABLE ENTRY FORMAT:
* 
*      WORD 5 -   OCT 0   (LINK OR FIXUP TABLE ADDRESS) 
*           4 -   DEF SYMBOL   (HOLDS SYMBOL VALUE) 
*           3 -   OCT XX000  CHAR 5 AND FLAGS 
*           2 -   ASC 1,  CHARS 3,4 OF NAME 
*           1 -   ASC 1,  CHARS 1,2 OF NAME 
*   SHOULD ONLY BE REFERENCED VIA POINTERS LST1 THRU LST5,
*   USING SUBROUTINES LSTI AND LSTP.
* 
************************************************************************
* 
RTMLD CLA,INA 
      STA LNKDR     LINK DIRECTION FLAG 
      STA LDGEN     LOADER MAIN CONTROL CALLING 
      JSB LGUNT     GET LOGICAL UNIT NUMBERS
      LDB ONMSG   PRINT MESSAGE 
      JSB DIAG2   "LOADER STARTED"
      CLA           SET TO ANY MODULE TYPE ALLOWED
      JSB PRCMD     PROCESS LOADER COMMANDS 
      JMP ABRT1     PROGRAM TERMINATION 
RTML2 LDA LOCC
      SZA,RSS       IF NO MODULES RELOCATED,
      JMP RTML1      PROGRAM TERMINATION
      LDA B2
      STA ABRC1    STORE ADDRESS OF TIE-OFF RECORDS 
      DLD PNAME     GET PROGRAM NAME
      JSB TYOFF     OUTPUT CHARS 1,2,3,4 OF NAME
      LDA PNAME+2 
      AND UPCM
      IOR PRAMS    CHAR 5,TYPE
      LDB PRAMS+1   GET PRIORITY
      JSB TYOFF 
      LDA PRAMS+2 
      RAR,RAR       RES. CODE 
      RAR 
      IOR PRAMS+3 
      CLB           SPARE 
      JSB TYOFF 
      JSB TIMES     PROCESS TIME PARAMETERS 
      JSB TYOFF   OUTPUT TIME PARAMETERS
      CLA           SPARE 
      LDB .MEM4     LWAM
      JSB TYOFF     OUTPUT SPARES 
      LDA FWAM      GET LOW MAIN
      LDB LOCC      GET HIGH MAIN 
      JSB TYOFF      OUTPUT 
      LDA FWABP     GET LOW BASE PAGE 
      LDB BPLOC     GET HIGH BASE PAGE
      JSB TYOFF   OUTPUT LOW & HIGH BASE PAGE 
      LDA FWAC
      LDB COML
      JSB TYOFF 
      LDB DBTAD     GET DEBUG TRANSFER ADDRESS
      LDA SCP       LOAD WITH DEBUG?
      AND B10 
      SZA,RSS 
      LDB ?XFER     NO, USE PROGRAM XFER ADDRESS
      LDA JMP3
      JSB TYOFF 
      JSB CLFL2     CLOSE ABSOLUTE OUTPUT FILE
      LDB EDREL     PRINT MESSAGE 
      JSB DIAG      "RELOCATION FINISHED" 
      LDA FWAM      GET # OF PAGES USED FOR RELOCATION
      CMA 
      ADA LOCC
      AND B76K
      ALF 
      RAL,RAL 
      ADA B2
      STA NUMB
      JSB KCVT
      DEF *+2 
      DEF NUMB
      STA PAGES,I 
      LDA CONSO 
      SZA,RSS 
      JMP RTMLB     DON'T PRINT # PAGES 
      LDA P19 
      LDB PAGE
      JSB PRINT 
RTMLB LDA P19 
      LDB PAGE
      JSB MAPS
      LDB SNAP      PRINT MESSAGE 
      JSB DIAG      "INPUT SNAP REQUEST"
      JSB PRCMD     PROCESS SNAP REQUEST
      JMP ABRT1     PROGRAM TERMINATION 
      LDA B2
      STA SCP       SET FOR SEGMENT LOAD
      LDB SEGRL     REL SEGMENT 
      JSB DIAG
      JSB INIT2     INITIALIZE FOR SEGMENT LOAD 
      JSB PRCMD     GO RELOCATE IT
      JMP ABRT1     PROGRAM TERMINATION 
      LDA LOCC      ANY RELOCATION
      SZA 
      JMP RTML2     YES, GO OUTPUT TY-OFF RECORDS 
RTML1 LDB OFMSG     PRINT MESSAGE 
      JSB DIAG2     "LOADER FINISHED" 
      JMP EXEC6     PROGRAM TERMINATION 
      SPC 1 
JMP3  JMP 3,I 
PNAMA DEF PNAME 
PNAME  REP 3       PROGRAM NAME 
       NOP
      BSS 3     MODULE LENGTHS FOR MAIN 
PRAMS DEC 3        DEFAULT TYPE 
      DEC 9999     DEFAULT PRIORITY 
      REP 6        DEFAULT OTHER PARAMS 
       NOP
      SPC 2 
SEGRL DEF *+1 
      DEC 13
      ASC 7,* REL SEGMENT 
NUMB  NOP 
ONMSG DEF *+1 
      DEC 16
      ASC 8,* LOADER STARTED
EDREL DEF *+1 
      DEC 21
      ASC 11,* RELOCATION FINISHED
OFMSG DEF *+1 
      DEC 17
      ASC 9,* LOADER FINISHED 
PAGE  DEF *+2 
PAGES DEF *+2 
      ASC 1,* 
      BSS 1 
      ASC 8, PAGES REQUIRED 
SNAP  DEF *+1 
      DEC 11
      ASC 6,* SNAPSHOT? 
B2    OCT 2 
B10   OCT 10
B76K  OCT 76000 
P19   DEC 19
UPCM  OCT 77400 
* 
      SPC 2 
      END RTMLD 
                                                                                                                                                                                                                                                          