ASMB,B,R,L,C
      HED RTS RELOCATING LOADER/2100
* 
*************************************************************** 
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1975.  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.       * 
*************************************************************** 
* 
* 
*   THE TERM RTS/2100 IS SYNONYMOUS WITH RTE-C AND
*   THE TERMS ARE USED INTERCHANGEABLY THROUGHOUT 
*   THIS DOCUMENT 
* 
********************************************************* 
* 
*   RTE-C LOADER MAIN CONTROL 
*    REV.A  JACK COOLWY  15MAY73
*    REV.B  D.L.S.  10MAR75  COPYRIGHT
* 
********************************************************* 
* 
      NAM LOADR 
* 
*   ENTRY POINT NAMES 
* 
      ENT PNAME,PNAMA,PRAMS 
      ENT LOADR 
* 
*   EXTERNAL REFERENCE NAMES
* 
      EXT LOEND 
      EXT PRCMD 
      EXT BPLOC,LOCC,BPAG4
      EXT B2,MD24,MD60,UPCM 
      EXT CNTR,?XFER,OPT.3
      EXT FWABP,LTG,ABRC1,FWAM,FWAC,COML
      EXT PACK,PUNCH,LST
      EXT LISTO,ASR33,B7
      EXT DIAG,ABORT
* 
B     EQU 1 
* 
      SUP 
**********************************************************
*   THE FUNCTION OF THIS LOADER IS TO RELOCATE AND LINK 
*   RELOCATABLE BINARY MODULES TOGETHER, AND PREPARE
*   THEM FOR EXECUTION ON AN RTS SYSTEM. AFTER
*   LOADING THIS  LOADER INTO CORE USING THE BBL OR BBDL, 
*   THE SIO DRIVERS TO BE USED ARE LOADED AND CONFIGURED
*   THE SNAPSHOT CAN THEN BE READ IN FROM THE PHOTO 
*   READER BY TYPING TR ON THE TTY. 
*   THIS SNAPSHOT CONTAINS THE DEFAULT
*   MEMORY BOUNDS, SYSTEM COMMON, AND DEFINES THE 
*   CORE-RESIDENT LIBRARY ROUTINES FOR THE TARGET RTS 
*   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.
* 
************************************************************************
* 
LOADR JMP BEGIN    SET ENTRY POINT AT 100 
      BSS 4 
      DEF LOEND   SET UP LOC 105B WITH LAST WRD USED
      BSS 2 
BEGIN NOP           START UP LOADER 
      LDA ABJMP   SET UP LOC 100 FOR
      STA LOADR    SUBSEQUENT STARTUPS
      LIA 1      GET SSW CONTENTS 
      SSA,RSS    IF BIT 15 IS 
      CLA         NOT SET, ASR33=0
      STA ASR33   SET, ASR33 = NON-ZERO 
      LDA 106B      GET LAST WORD OF FREE MEMORY
      STA OPT.3     SAVE
      STA LTEMP 
      LDA M1020       ZERO BASE PAGE LINK TABLE 
      STA CNTR
      LDB BPAG4     GET ADDRESS OF THE LINK TABLE 
      CLA 
      STA B,I 
      INB 
      ISZ CNTR
      JMP *-3 
      STA PNAME 
      STA ?XFER    CLEAR "HAVE MAIN" FLAG 
      STA LOCC
      STA BPLOC 
      STA COML    INITIALIZE "COMMON USED " FLAG
      STA LST     INITIALIZE SYM TAB LENGTH 
      LDA LISTO    RESET THE BIT TO OUTPUT MAP
      AND B7       HEADING (BIT # 3), BUT KEEP
      STA LISTO    BITS 0-2.
      JSB LTG      PUNCH LEADER.
      LDB ONMSG   PRINT MESSAGE 
      JSB DIAG    "LOADER STARTED"
      JSB PRCMD     PROCESS LOADER COMMANDS 
      JMP RESET     RETURN HERE AFTER ABORT 
      LDA PRCMD       NORMAL RETURN 
      ADA M1          SET UP PRCMD TO ALLOW 
      STA PRCMD      RESTART AT LOC 100 AS WELL AS RUN BUTTON 
      LDA LOCC
      SZA,RSS       IF NO MODULES RELOCATED,
      JMP NOINP      DONT OUTPUT SPECIAL RECORDS
      LDA B2
      STA ABRC1    STORE ADDRESS OF TIE-OFF RECORDS 
      DLD PNAME     GET PROGRAM NAME
      JSB TYOFF     PUNCH 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 
      DLD PRAMS+4 
      ADA MD24    24-COMPLEMENT HOURS 
      ADB MD60    60-COMPLEMENT MINUTES 
      JSB TYOFF   OUTPUT HOURS AND MINUTES
      DLD PRAMS+6  GET SECONDS & TENS OF MSECS
      ADA MD60    60-COMPLEMENT SECS
      ADB M100      100-COMPLEMENT T.MSECS
      JSB TYOFF   OUTPUT SECONDS AND TENS OF MILLISECONDS 
      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 
      LDA JMP3
      LDB ?XFER     GET TRANSFER ADDRESS
      JSB TYOFF 
      JSB LTG 
NOINP HLT 77B 
RESET LDA LTEMP 
      STA 106B
      JMP BEGIN   RESTART 
      SPC 1 
ABJMP JMP ABORT 
JMP3  JMP 3,I 
LTEMP NOP 
M1020 DEC -1020       LENGTH OF BP LINKS TABLE(EXCL.LOC 0-4)
M100  DEC -100
M1    DEC -1
PNAMA DEF PNAME 
PNAME  REP 3       PROGRAM NAME 
       NOP
      BSS 3     MODULE LENGTHS FOR MAIN 
PRAMS  DEC 3       DEFAULT TYPE 
      DEC 99       DEFAULT PRIORITY 
      REP 6        DEFAULT OTHER PARAMS 
       NOP
      SPC 2 
TYOFF NOP           PUNCH TWO-WORD TIE-OFF RECORD 
      JSB PACK      WORD 1 FROM (A) 
      LDA B         WORD 2 FROM (B) 
      JSB PACK
      JSB PUNCH 
      JMP TYOFF,I 
ONMSG DEF *+1 
      DEC 14
      ASC 7,LOADER STARTED
* 
      SPC 2 
      END LOADR 
                        