ASMB,Q,R,C
      HED          RT4G3 - LOADING CONTROL SEGMENT
      NAM RT4G3,5,90 92067-16318 REV.2001 790817
      SPC 1 
******************************************************************
*  * (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.       *
******************************************************************
      SPC 2 
      SPC 1 
******************************************************************
* 
*   NAME:           RT4G3 
*   SOURCE PART #:  92067-18318 
*   REL PART #:     92067-16318 
*   WRITTEN BY:     JJC, KFH, JH, GAA 
* 
******************************************************************
      SPC 1 
* 
*   ENTRY POINT NAMES 
* 
      ENT \GENS 
* 
*   EXTERNAL REFERENCE NAMES
* 
      EXT \PART 
* 
      EXT \EXIT,\CLDP 
      EXT \LODN,\GNIO,\FSEC,\SYTB 
      EXT \CURL,\CPL2 
      EXT \TBCH,\PIOC,\SWPF,\LBUF,\TBUF 
      EXT \CONV,\ABDO,\DSKA,\DSKO,\DSKI 
      EXT \OCTN,\ADSK,\PTYP,\TMSK 
      EXT \GET#,\GETC,\SPAC,\READ,\GNER,\MESS,\ABOR 
      EXT \ADBP,\PREL,\NUMP 
      EXT \ILST,\LSTX,\LSTS 
      EXT \LST3,\LST4,\LST5 
      EXT \INID,\IDX,\TIDN,\IDXS
      EXT \ID1,\ID2,\ID3,\ID4,\ID5,\ID6,\ID8
      EXT \TBLK,\MRT2 
      EXT \LRBP,\URBP,\IRBP 
      EXT \CUBP,\UCBP,\ICBP,\CBPA 
      EXT \LNK,\LNKS
      EXT \LNK1,\LNK2,\LNK3 
      EXT \SEGS,\SYS,\USRS,\USER,\DSYS
      EXT \SRET,\PFIX,\TFIX,\ADBF,\OLDA 
      EXT \TRUN 
      EXT \IRER,\TERM 
      EXT \ABCO,\MXAB,\TIME,\TIM1,\MULR 
      EXT \CPLB,\ASKY,\SSID,\SKYA 
      EXT \INER 
      EXT \SCTK,\IBI
* 
* 
* 
A     EQU 0 
B     EQU 1 
      SUP 
************************************************************************
* 
      SKP 
*************************************************************************** 
* 
*                                                              770913 
* 
*    THE FOLLOWING BLOCK OF STORAGE FOR VARIABLES PRECEEDS, 
*    AND IS REFERENCED BY, EACH SEGMENT.  IT IS NOT OVERLAID
*    AS EACH NEW SEGMENT IS LOADED INTO MEMORY. 
* 
*    THE LOCATION OF EACH VARIABLE MUST BE THE SAME IN ALL
*    SEGMENTS.  IF A CHANGE IS MADE, MAKE THE SAME CHANGES
*    IN THE REST OF THE SEGMENTS. 
* 
*************************************************************************** 
* 
* 
TB30  BSS 160       TRACK MAP TABLE/HEADER RECORD BUFFER
* 
ILIST BSS 64        USER SYSTEM PROG IDENT ADDR LIST
CURIL BSS 1         CURRENT ILIST ADDRESS 
* 
SYSCH BSS 1         SUBCHANNEL OF SYSTEM UNIT.
DCHNL BSS 1         CHANNEL OF SYSTEM DISK UNIT 
AUXCH BSS 1         SUBCHANNEL OF AUX UNIT. 
DSIZE BSS 1         DISK SIZE -NO. OF TRACKS. 
#SUBC BSS 1         # DISC SUBCHANNELS DEF'D (7905/7920)
DAUXN BSS 1         AUXILIARY DISK SIZE.
ADS#  BSS 1         AUX DISC SECTORS/TRACK. 
* 
*             RELOCATION BASE TABLE.
RBTA  BSS 1         ABSOLUTE PROGRAM BASE.
TPREL BSS 1         CURRENT PROGRAM BASE ADDRESS. 
TPBRE BSS 1         BASE PAGE RELOCATION ADDRESS. 
COMAD BSS 1         CURRENT COMMON RELOCATION BASE. 
      BSS 1         ABS PROGRAM BASE FOR MR CODE. 
* 
WDCNT BSS 1         TEMPORARY WORD COUNTER. 
DSKSY BSS 1         INITIAL ID SEGMENT DISK ADDRESS 
IDSP  BSS 1         POSITION OF 1ST ID SEG. IN SECT 
TTYCH BSS 1         SYSTEM TTY CHANNEL NO.
* 
PLFLG BSS 1         PROGRAM LOAD. FLAG = -1/0 = L/NL
DSCNT BSS 1         DISK SEGMENT SECTOR COUNT 
* 
NXFLG BSS 1         ENT/EXT FLAG = -1/0 
EXCNT BSS 1         SYMBOL COUNTER
* 
LCNT  BSS 1         CURRENT \LBUF COUNT 
DCNT  BSS 1         CURRENT DBUF COUNT
CURAI BSS 1         CURRENT IBUF COUNT
* 
CPLS  BSS 1         ADDRESS OF TOP OF FIXED CP LINK IMAGE 
CPL1  BSS 1         ADDRESS OF LOW CURRENT PAGE LINK SPECS. 
CPL1H BSS 1         NUMBER OF CURRENT PAGE LINKS ASSIGNED 
CPL2H BSS 1         IN LOW AND HIGH AREA RESPECTIVELY 
URBP1 BSS 1         LWA R/T DISC RES BP LINK AREA 
CURAK BSS 1         CURRENT KBUF ADDRESS
* 
CURAT BSS 1         CURRENT \TBUF ADDRESS 
TCNT  BSS 1         CURRENT \TBUF COUNT 
* 
CURAP BSS 1         CURRENT PLIST ADDRESS 
* 
AMAD  BSS 1         CURRENT MLIST ADDRESS 
* 
IXCNT BSS 1         ID EXTENSION COUNT
IDEXC BSS 1         CURRENT ID EXT'S USED 
IDEX  BSS 1         ADDRESS OF ID EXTENSION TABLE 
* 
LICNT BSS 1         LONG ID SEGMENT COUNT 
SSCNT BSS 1         BG. SEG ID COUNT
* 
DSKID BSS 1         DISK ID SEGMENT ADDRESS 
KEYCN BSS 1         TOTAL KEYWORD COUNT 
KEYCT BSS 1         CURRENT KEYWORD COUNT 
* 
MLIST BSS 11        MEMORY MAP BUFFER 
* 
TEMP1 BSS 1 
TEMP2 BSS 1 
LWH1  BSS 1 
LWH2  BSS 1 
LWH3  BSS 1 
LWH4  BSS 1 
L01   BSS 1 
* 
FSYBP BSS 1         FIRST WORD SYS BP LINKAGE 
SYSAD BSS 1         CURRENT ID SEGMENT ADDRESS
* 
TBREL BSS 1         CURRENT BP RELOC ADDR 
PBREL BSS 1         INITIAL BP RELOC ADDR 
* 
RELAD BSS 1         CURRENT CORE RELOCATION ADDRESS 
* 
BSBAD BSS 1         BG SEGMENT BP RELOC ADDR
BSPAD BSS 1         BG SEGMENT PROG RELOC ADDR
* 
LFLAG BSS 1         PROGRAMS-LOADED FLAG
IMAIN BSS 1         CURRENT MAIN IDENT INDEX. 
HDFLG BSS 1         HEADING FORMAT FLAG 
CIDNT BSS 1         CURRENT MAIN IDENT INDEX. 
* 
AEQT  BSS 1         ADDRESS OF EQUIPMENT TABLE
CEQT  BSS 1         NO. ENTRIES IN EQUIPMENT TABLE
SPLCO BSS 1         SPOOL EQT COUNT 
DVMAP BSS 1         ADDRESS OF DRIVER MAP TABLE 
* 
DPFLG BSS 1         DP RELOCATION FLAG, 0=YES, -1=NO
DPLN BSS 1          PAGE LENGTH OF DRIVER PARTITION 
DPADD BSS 1         START ADDR OF DRIVER PARTITION
DSKDP BSS 1         DISK ADDRESS OF DP #2 
PAGE# BSS 1         NEXT PHYSICAL PAGE TO ALLOCATE
DPNUM BSS 1         CURRENT DP# -1, OR TOT DP PAGES 
SDID  BSS 1         IDENT IDEX OF SYS DISK DRIVER 
LWDP1 BSS 1         LAST WORD OF DP, +1 
FWSDA BSS 1         FIRST WORD OF SDA 
* 
ASQT  BSS 1         ADDR OF DEVICE REFERENCE TABLE
CSQT  BSS 1         NO. ENTRIES IN DEV. REF. TABLE
* 
AINT  BSS 1         ADDRESS OF INTERRUPT TABLE
* 
DSKIN BSS 1         DISK ADDR OF INT CODE RECORD
INTCN BSS 1         RECORD COUNT OF INT CODE
* 
IDSAV BSS 1         INDEX OF CURRENT IDENT. 
DSKMN BSS 1         INITIAL MAIN DISK ADDRESS 
BSSDP BSS 1         INITIAL DISK RES MAIN BSS DISP
PRENT BSS 1         PRIMARY ENTRY POINT 
DBLAD BSS 1         CURRENT DBL ADDRESS 
REKEY BSS 1         INSTRUCTION TYPE BYTE 
INSCN BSS 1         INSTRUCTION TYPE COUNTER
INSTR BSS 1         CURRENT INSTRUCTION 
PAGNO BSS 1         CURRENT PAGE NO.
OPRND BSS 1         CURRENT OPERAND 
PLGTH BSS 1         PROGRAM LENGTH
* 
DRT2  BSS 1         DISK DRT ENTRY ( SYSTEM)
DRT3  BSS 1         AUX DISK DRT ENTRY
* 
LIBFG BSS 1 
LDTYP BSS 1 
* 
SCH1  BSS 1         INDEX OF IDENT OF PGM TO BE SCHEDULED 
SCH3  BSS 1         ADDRESS OF CURRENT ID SEGMENT 
SCH4  BSS 1         ADDRESS OF THE SCHEDULED PGM ID SEG 
FGBGC BSS 1         BACKGROUND USING FG COMMON FLAG 
$LIBR BSS 1         INDEX OF $LIBR ENT
$LIBX BSS 1         INDEX OF $LIBX ENT
CUPRI BSS 1 
* 
BLLO  BSS 1         -(LOWER BUFFER LIMIT) 
BLHI  BSS 1         -(UPPER BUFFER LIMIT) 
* 
MEM6  BSS 1 
MEM12 BSS 1 
* 
COMRT BSS 1         MAXIMUM RT COM LENGTH 
COMBG BSS 1         MAXIMUM BG COM LENGTH 
COMSZ BSS 1         #WORDS COMMON DECLARED IN CURRENT MAIN
RTCAD BSS 1         RT COMMON ADDRESS 
BGCAD BSS 1         BG COMMON ADDRESS 
FPCOM BSS 1         FIRST PAGE OCCUPIED BY COMMON 
LPCOM BSS 1         LAST PAGE CONTAINING ANY COMMON 
* 
FPSAM BSS 1         1ST PAGE CONTAINING S.A.M.
FWSAM BSS 1         1ST WORD CONTAINING S.A.M.
SYMAD BSS 1         VALUE FOR AVMEM IN SCOM 
SAM#1 BSS 1         SIZE OF FIRST CHUNK OF SAM
SAM#2 BSS 1         SIZE OF SECOND CHUNK OF SAM 
SAM2P BSS 1         START PAGE OF SAM #2
LWTAI BSS 1         LAST WORD OF TABLE AREA I FOR SAM#0 
FWPRV BSS 1         FIRST WORD FOR PRIVILEGED PROGRAMS
* 
FWSYS BSS 1         FIRST WORD OF SYSTEM CODE 
LPSYS BSS 1         LAST PAGE CONTAINING SYS
LWSYS BSS 1         LAST WORD OF SYSTEM 
LPSLB BSS 1         LAST PAGE OF SLOW BOOT
LWSLB BSS 1         LAST WORD OF SLOW BOOT
MTYPE BSS 1         MAIN PROGRAMS'S TYPE
* 
HIBP  BSS 1         BP LINK MODE FOR FIXUP ENTRIES
LOLNK BSS 1         LOW LINK FOR SSGA,LIB, OR SYS 
HILNK BSS 1         HI LINK USED BY MEM RES PRG 
BPINC BSS 1         BP LINK ALLOCATION MODE, -1=DOWN,1=UP 
BPLMT BSS 1         LAST AVAIL BP LINK IN CURRENT MODE, +1
* 
TPMAX BSS 1         HWM FOR RELOCATION OF BG MAINS & SEGS 
MAXPT BSS 1         NUM PARTS. ALLOWED
MAT.  BSS 1         ADDRESS OF MEMORY ALLOCATION TABLE
* 
SSGA. BSS 1         FWA SSGA
MAP.  BSS 1         PTR TO MEU RES MAP
MPFT. BSS 1         PTR TO MPFT 
* 
EMLNK BSS 1         EMA SYMBOL'S LINK 
EMLST BSS 1         LST INDEX OF EMA SYMBOL 
EMDSK BSS 1         DISK ADDR OF EMA PROGRAM
* 
*     MEMORY RESIDENT AREA POINTERS 
* 
MRACM BSS 1         MR ACCESS COMMON FLAG (>0 IF YES) 
LBCAD BSS 1         FIRST WORD OF MEMORY RES LIBRARY
LEND  BSS 1         LAST  WORD OF MEMORY RES LIBRARY
FWMRP BSS 1         FIRST WORD OF MEMORY RES PROGRAM AREA 
EMRP  BSS 1         LAST  WORD OF MEMORY RES PROGRAM AREA 
FPMRP BSS 1         FIRST PAGE OF MEMORY RES PROGRAM AREA 
FPMBP BSS 1         PAGE # FOR MEMORY RES BASE PAGE 
MRP#  BSS 1         # PAGES OCCUPIED BY MRL & MRP'S 
DSKMB BSS 1         DISK ADDRESS OF MEMORY RES BASE PAGE
DSKMR BSS 1         DISK ADDRESS OF MEMORY RESIDENT LIB/PROG AREA 
DSKBP BSS 1         SYSTEM DISK ADDRESS 
* 
DSKAV BSS 1         NEXT AVAILABLE DISK ADDRESS 
DSKLC BSS 1         DISK ADDRESS OF LIBRARY CODE
DSKLB BSS 1         DISK ADDR OF LIBRARY ENTRY PTS
DSKUT BSS 1         UTILITY PROG DISK ADDRESS 
DSKBS BSS 1         DISK ADDR OF MAIN BG DISK RES BP
DSKBR BSS 1         CURRENT MAIN BG DISK RES DISK AD
ADICT BSS 1         ADDR OF DISK DICTIONARY 
LBCNT BSS 1         RESIDENT LIBR ENTRY PT COUNT
SYCNT BSS 1         SYSTEM ENTRY POINT COUNT
KEYAD BSS 1         CURRENT KEYWORD ADDRESS 
* 
SYBAD BSS 1         ADDR OF FIRST BP LINK FOR BG
IDSAD BSS 1         ADDR OF FIRST ID SEGMENT
ABSID BSS 1         IDENT ADDR FOR NEXT BG SEG SCAN 
IDMBS BSS 1         BG MAIN ADDRESS FOR BS REF
* 
SYTRK BSS 1         DISK ADDR WHERE SYSTEM BEGINS - TRACK 
SYSEC BSS 1         DISK ADDR WHERE SYSTEM BEGINS - SECTOR
* 
SSGAF BSS 1         SSGA ACCESS FLAG
SPAR2 BSS 1         SPARE VARIABLE
SPAR3 BSS 1         SPARE VARIABLE
SPAR4 BSS 1         SPARE VARIABLE
SPAR5 BSS 1         SPARE VARIABLE
* 
********************************************************* 
*                                                       * 
*  END OF COMMON STORAGE BLOCK FOR ALL SEGMENTS.        * 
*                                                       * 
********************************************************* 
* 
      SPC 4 
AILST DEF ILIST 
      SKP 
*  NOTE THE FOLLOWING RESOLVES ARITHMETIC DEF'S TO EXTERNALS
* 
LABS  CCA           GET LOOP COUNTER
      STA TEMP1     SAVE
      LDB LSTAA     GET ADDRESS OF LIST 
LOOP  LDA B,I       GET ADDRESS 
      RSS 
      LDA A,I 
      RAL,CLE,SLA,ERA 
      JMP *-2 
      STA B,I       AND SAVE IT AGAIN 
      INB 
      ISZ TEMP1 
      JMP LOOP
      JMP \SRET     RETURN TO MAIN
* 
* 
LSTAA DEF *+1 
ATBUF DEF \TBUF+0 
      SKP 
*                                   PROGRAM CONSTANT FACTORS
N1    DEC -1
N2    DEC -2
N5    DEC -5
N7    DEC -7
P6    DEC 6 
P7    DEC 7 
P9    DEC 9 
P10   DEC 10
P13   DEC 13
P15   DEC 15
P17   DEC 17
P18   DEC 18
P20   DEC 20
P22   DEC 22
P24   DEC 24
P28   DEC 28
P30   DEC 30
P31   DEC 31
P34   DEC 34
P36   DEC 36
P38   DEC 38
P40   DEC 40
P46   DEC 46
P48   DEC 48
L2000 OCT -2000 
M7    EQU P7
M37   EQU P31 
M77   OCT 77
M177  OCT 177 
M200B OCT 200 
M777  OCT 777 
M1000 OCT 1000
M1777 OCT 1777
M2000 OCT 2000
M1377 OCT 137777
M7777 OCT 77777 
M3777 OCT 37777 
M7400 OCT 177400
M7737 OCT 77377 
* 
LWASM EQU M7777 
LWSBP OCT 1645
* 
HLT0  HLT 0B
MSIGN OCT 100000
UBLNK OCT 20000 
D$STR DEF *+1 
      ASC 3,$STRT 
      SKP 
* 
*                                   LOAD ABSOLUTE SYSTEM
* 
*  THIS SEGMENT CONTROLS THE GENERATION OF
*  THE ABSOLUTE CODE FOR THE SYSTEM.  EACH PROGRAM
*  IS LOADED BY TYPE AS FOLLOWS:
* 
*    (1) TABLE AREA I 
*    (2) SSGA & COMMON
*    (3) SYSTEM DRIVER AREA 
*    (4) TABLE AREA II
*    (5) SYSTEM 
*    (6) PARTITION DRIVERS
*    (7) RESIDENT LIBRARY 
*    (8) MEMORY RESIDENTS 
*    (9) RT DISK RESIDENTS
*    (10) PR DISK RESIDENTS (AND BG SEGMENTS) 
*    (11) BG DISK RESIDENTS (AND BG SEGMENTS) 
* 
*  EACH TYPE OF PROGRAM IS LOADED IN THE FOLLOWING MANNER:
* 
*  THE IDENTIFICATION BLOCK FOR THE PROGRAM IS LOCATED
*  IN IDENT.  A CALL TO LOAD IS EXECUTED TO LOAD THIS PROGRAM AND 
*  ALL CALLED SUBROUTINES.  IF THE PROGRAM IS DISK RESIDENT,
*  THE BASE PAGE SECTION OF CODE IS WRITTEN ON THE DISK 
*  IMMEDIATELY AFTER THE MAIN SECTION OF CODE.  IF THE
*  PROGRAM IS RT DISK RESIDENT, THE BOUNDARIES OF THE LARGEST 
*  SECTION OF BASE PAGE AND PROGRAM ARE SAVED.  IF THE PROGRAM IS 
*  A USER PROGRAM (OTHER THAN SYSTEM USER PROGRAM) AN ID SEGMENT IS 
*  GENERATED. 
* 
      SKP 
* 
*     INITIALIZATION
* 
\GENS LDB P64       GET FWA BP
      STB FSYBP     SET ADDR OF FIRST SYS LINK
      JSB \SPAC     NEW LINE
* 
*     CLEAR LST WORD 5 (SYMBOL VALUE) 
* 
      JSB \ILST     INITIALIZE LST ADDRESSES
CLLST JSB \LSTX      SET LST ADDRESSES
      JMP CLRID-1   CLEAR USAGE FLAGS 
      CLA 
      LDB \LST4,I    GET TYPE 
      ADB N7        IF SELF 
      SSB,RSS       DEFINING SKIP CLEAR 
      STA \LST5,I    CLEAR \LST WORD 5
      LDA \LST3,I    GET WORD 3 OF \LST ENTRY 
      AND M7400     ISOLATE UPPER CHARACTER 
      STA \LST3,I    SET \LST WORD 3 WITH NO ORDINAL
      JMP CLLST     CONTINUE CLEARING LST 
* 
*     CLEAR PROGRAM USAGE FLAGS 
* 
      JSB \INID     INITIALIZE IDENT ADDRESSES
CLRID JSB \IDX       SET IDENT ADDRESSES
      JMP IDCLR     ALL IDENT FLAGS CLEAR 
      LDA \ID3,I     GET USAGE FLAG 
      AND M7400     SET FLAG = ZERO 
      STA \ID3,I     SET CLEARED USAGE FLAG 
      JMP CLRID     CLEAR NEXT IDENT FLAG 
* 
*     CLEAR PAGE 1 FOR INDIRECT LINKS 
* 
IDCLR LDA L2000 
      STA WDCNT     SET WORD COUNT = 2000(8)
      CLA 
      LDB \ADBP      GET ADDRESS OF PSEUDO BASE PAGE
CLRBP STA B,I       CLEAR WORD IN BASE PAGE AREA
      INB           INCR PAGE ADDRESS 
      ISZ WDCNT     SKIP - AREA CLEARED 
      JMP CLRBP     CONTINUE CLEARING 
      SKP 
* 
*     LOAD INITIALIZATION 
* 
      SPC 1 
      CLA 
      STA RBTA      CLEAR THE RELOCATION BASE TABLE 
      STA TPREL 
      STA TPBRE 
      STA COMAD+1 
      STA RELAD 
      STA \TBLK     RESET THE LNKX STARTER
      STA LIBFG     SET "NOT LOADING RES LIB" 
      STA KEYCT 
      STA COMAD     RESET COMMON RELOC BASE 
      STA IDSAV 
      STA MTYPE 
      STA DPNUM     NO DP'S YET 
      SPC 1 
*     SET BOUNDS FOR BASE PAGE LINK SCANNING
      SPC 1 
      STA \LRBP      SHOW NO LINKS IN RESIDENT
      STA \URBP       BASE PAGE AREA
      SPC 1 
      STA DSKMB 
* 
*     SET BP LINK PARAMETERS TO ALLOCATE TOP-DOWN 
*     FROM THE SYSMMM COMMUNICATION AREA. 
* 
      CCA 
      STA BPINC     SET INC = -1
      STA DPFLG     NOT DP RELOC MODE 
* 
      ADA LWSBP     SET FIRST LINK ADDR TO
      STA PBREL     FIRST WORD BELOW SCOM 
* 
      LDA FSYBP     SET BP LINK ALLOCATION
      STA BPLMT     LIMIT TO LOWEST WORD AVAILABLE
      SPC 1 
      STA \CUBP      SET CURRENT SCAN AREA TO FIRST LINK ADDR 
      ADA \ADBP        AND SET MEMORY ADDR IN RT4GN 
      STA \ICBP        IMAGE OF THE AREA
* 
      LDA M1000     SET HIGH BASE PAG INDICATOR 
      STA HIBP      FOR FIXUP BUILDING
      SPC 1 
      LDA LWSBP     CURRENT PROGS SCAN AREA ENDS AT 
      STA \UCBP      SYSTEM COMM AREA 
      SPC 1 
      LDA \CBPA     MARK CURRENT PAGE LINK
      STA \CPL2      AREA EMPTY 
      STA CPLS
      SPC 1 
*     SET RELOCATION ADDRESSES
      SPC 1 
      LDA M2000 
      STA \PREL     SYSTEM RELOC BASE = 2000B 
      CLA 
      STA DSKMR 
      SPC 1 
*     SET INITIAL DISK ADDRESSES
      SPC 1 
      LDA \ADSK     GET DISC ADDR AFTER BOOT EXTENSION
      STA DSKBP     & SAVE AS DISC LOCATION OF BASE PAGE
      SPC 1 
*     SET UP VALUES FOR LATER SYSTEM ENTRY POINTS 
      SPC 1 
      AND M177      MASK OFF SECTOR WHERE SYS BEGINS
      STA SYSEC       SAVE IT 
      LDA \ADSK 
      ALF,ALF 
      RAL           SHIFT TRACK INTO PLACE
      AND M777      MASK OFF TRACK WHERE SYS BEGINS 
      STA SYTRK       SAVE IT.
      SPC 1 
*     STORE BASE PAGE ON DISK, JUST TO SAVE SPACE FOR IT
      SPC 1 
      LDA M2000     GET UPPER ADDR+1
      CLB           AND LOWER ADDRESS 
      JSB BPOUT     DUMP A BASE PAGE TO DISK
      SPC 1 
*     BUMP TO NEXT EVEN SECTOR
      SPC 1 
      JSB DSKEV     ALIGN AT EVEN SECTOR
      STA \DSYS+3   AND SAVE IN \ABDO MAP 
      SPC 1 
*     SET UP LABDO CONTROL WORDS TO ACCESS SYSTEM AREA OF DISK
      SPC 1 
      JSB \SYS
      SPC 1 
*     SET PROGRAM TYPE MASK TO LOOK AT WHOLE
*     TYPE FIELD WHEN SCANNING THROUGH IDENT LIST 
      SPC 1 
      LDA M177      LOW SEVEN BITS
      STA \TMSK 
      SKP 
* 
*     BUILD I/O TABLES
* 
      JSB UPAG#     UPDATE VAR. PAGE# FOR MESSAGES
      SPC 1 
      JSB \GNIO     BRING IN SEG 5, GO TO IT
      SPC 1 
* 
*     LOAD TABLE AREA I MODULES 
* 
      LDA P15       SET  MODULE TYPE
      STA \PTYP 
LODI  JSB IDSCN     SCAN IDENTS 
      JMP PSEUD     END OF IDENTS 
      LDB \ID3,I    GET USAGE FLAG
      SLB,INB       SKIP IF UNLOADED
      JMP LODI
* 
      STB \ID3,I    SET WORD 3 WITH USAGE FLAG
      JSB \LODN     INITIATE AND LOAD 
      JSB INCAD     UPDATE \PREL AND PBREL
      JMP LODI      PROCESS NEXT TA.I MODULE
* 
PSEUD JSB NOTST     TEST FOR PROGRAMS LOADED
      SPC 1 
* 
* 
*     ASK FOR OVERRIDE OF DRIVER PARTITION SIZE 
* 
      LDA P16       SET MAX SIZE FOR
      STA TEMP2     DP LENGTH 
* 
      CLB 
      LDA P2        ASK IF THEY WANT TO 
      CMA           CHANGE THE
      JSB CHBND      SIZE AND 
      DEF MES32     THEN STORE
      DEF TEMP2     THE 
      STA DPLN      NEW SIZE
* 
*     LOAD THE SYSTEM DISK DRIVER (PLUS ANY OTHER DRIVERS 
*     THAT WILL FIT) INTO DRIVER PARTITION #1 
* 
      CCA           SIGNAL \\LDP WHICH DP MODE
      JSB \CLDP     NOW LOAD DP #1
* 
*     LOAD SSGA MODULES 
* 
      JSB \SPAC     MAKE IT LOOK NICE 
      LDA P30 
      STA \PTYP      SET MODULE TYPE
      LDA FPCOM     GET FIRST PAGE COMMON AREA
      CMA,INA         CONVERT TO DEC. PAGE #
      LDB MS31A         AND STUFF IN MESSAGE. 
      JSB \CONV 
      LDA P38       PRINT: SUBSYSTEM GLOBAL AREA <<PAGE XXXX>>: 
      LDB MES31 
      JSB SETHD 
* 
SSGAL JSB IDSCN     SCAN IDENTS 
      JMP SETCM     END OF IDENTS 
      LDA \ID3,I    PICK UP LOAD FLAG 
      CLB,INB 
      IOR B         SET LOADED BIT
      STA \ID3,I    AND RESTORE 
      JSB \LODN     LOAD THE MODULE 
      JSB INCAD     UPDATE \PREL AND PBREL
      JMP SSGAL     THEN GO FIND NEXT 
* 
SETCM JSB NOTST     TEST FOR PROGRAMS LOADED
* 
* 
*     SET UP THE REAL TIME COMMON AREA
* 
      JSB \SPAC 
      LDA \PREL     COMPUTE MAX SIZE  BY
      STA RTCAD      SUBTRACTING CURRENT
      CMA             LOCATION FROM 
      ADA M3777     LAST ALLOWED (APPROX. 37777)
      STA TEMP2     SAVE AS THE LIMIT 
* 
      CLB 
      LDA COMRT 
      CMA           ASK IF THEN 
      JSB CHBND     WANT TO 
      DEF MES53     CHANGE THE SIZE 
      DEF TEMP2     OF RT COMMON
      STA COMRT     SAVE IT 
* 
      LDA RTCAD     LOAD STARTING ADDRESS 
      LDB MES14+1   OF RT COMMON
      JSB \CONV     AND STUFF IN MESSAGE
      LDA P20 
      LDB MES14 
      JSB \MESS     AND PRINT IT
      JSB \SPAC 
      SPC 1 
* 
*     SET UP BG COMMON
* 
      LDA COMRT     SAVE BASE 
      ADA \PREL      ADDRESS OF 
      STA BGCAD       BG COMMON 
* 
      ADA COMBG     BUMP TO END OF DECLARED 
      ADA N1
      IOR M1777     ROUND TO END OF PAGE
      STA TEMP2     SAVE TEMPORARILY
      LDB BGCAD     GET FWA BG COMMON 
      CMB,INB        AND SUBTRACT 
      ADA B          IN ORDER TO GET DEFAULTED
      INA            SIZE 
      STA COMBG     AND SAVE NEW SIZE 
* 
      LDB TEMP2     GET LAST WORD ADDRES
      CMB,INB       AND SUBTRACT FROM LAST
      ADB M3777     ALLOWED ADDRESS 
      STB TEMP2     AND SAVE AS UPPER LIMIT 
* 
      CMA 
      CLB,INB       ASK IF THEY 
      JSB CHBND      WANT TO
      DEF MES57       CHANGE THE
      DEF TEMP2        SIZE OF BG COMMON
* 
      ADA COMBG     UPDATE BG COMMON SIZE 
      STA COMBG     BY THAT SIZE
* 
      LDA BGCAD     LOAD STARTING ADDR
      LDB MES18+1    OF BG COMMON 
      JSB \CONV       AND STUFF IN
      LDA P20          MESSAGE
      LDB MES18 
      JSB \MESS     PRINT IT
* 
      LDA COMBG     LOAD NEW SIZE OF BG 
      CMA,INA       COMMON AND
      LDB MES62+1    STUFF IN MESSAGE 
      JSB \CONV      (DECIMAL)
      LDA P16 
      LDB MES62 
      JSB \MESS     AND PRINT IT
      JSB \SPAC 
* 
*     WRITE HALTS ON DISK FOR RT AND BG COMMON AREAS
* 
      LDA COMRT     GET TOTAL 
      ADA COMBG      COMMON SIZE
      LDB \PREL     GET RELOC BASE
      SZA,RSS 
      JMP NOCOM     JUMP IF NO COMMON 
* 
      CMA,INA       SET LOOP COUNTER
      STA TCNT       TO -(LENGTH OF COMMON) 
WTCOM LDA HLT0      GET HALT 0 VALUE
      JSB \ABDO      WRITE ONE
      ISZ TCNT       HALT AT A TIME 
      JMP WTCOM       UNTIL DONE
* 
      STB \PREL     UPDATE RELOC BASE FOR SDA 
NOCOM STB FWSDA     SAVE START ADDRESS OF SDA 
* 
      SKP 
* 
*     LOAD SYSTEM DRIVER AREA 
* 
      SPC 1 
      CLA           SET TO SCAN FOR 
      STA \PTYP     TYPE 0 MODULES
      JSB UPAG#     UPDATE PAGE#. 
      CMA,INA         CONVERT TO DECIMAL. 
      LDB MS63A 
      JSB \CONV     CONVERT PAGE # AND
      LDA P36         STUFF IN MESSAGE. 
      LDB MES63     PRINT:
      JSB SETHD       "SYSTEM DRIVER AREA <<PAGE XXXX>>:" 
* 
* 
SDAL  JSB SCDRV     GET NEXT DRIVER 
      JMP SYSTB     END OF IDENTS 
      JMP SDAL      A PRD - GO GET NEXT DRIVER
      LDA \ID3,I    PICK UP 
      CLB,INB        USAGE FLAG 
      IOR B           AND SET 
      STA \ID3,I       LOADED BIT 
* 
      JSB \LODN     LOAD THE MODULE 
      JSB INCAD     UPDATE PBREL & \PREL
      JMP SDAL      PROCESS NEXT DRIVER 
      SPC 1 
* 
*     RESERVE SPACE AND SET UP SYSTEM TABLES
*     IN TABLE AREA II. 
* 
SYSTB JSB UPAG#     UPDATE PAGE # FOR SEG 5.
      JSB NOTST     TEST FOR PROGRAMS LOADED
      JSB \SYTB     GO DO IT IN SEG 5 
      SPC 1 
* 
*     LOAD TABLE AREA II MODULES
* 
      LDA P13       SET MODULE TYPE 
      STA \PTYP 
LODII JSB IDSCN     SCAN IDENTS 
      JMP ENDII     END OF IDENTS 
      LDB \ID3,I    GET USAGE FLAG
      SLB,INB       SKIP IF UNLOADED
      JMP LODII     IGNORE LOADED PROGRAMS
* 
      STB \ID3,I    UPDATE WORD 3 USAGE FLAG. 
      JSB \LODN     INITIATE AND LOAD THE PROGRAM 
      JSB INCAD     UPDATE \PREL & PBREL
      JMP LODII     PROCESS NEXT TA.II MODULE 
* 
ENDII JSB NOTST     TEST FOR PROGRAMS LOADED
* 
      CCA           GET LAST WORD USED BY 
      ADA \PREL     TABLE AREA II MODULES 
      IOR M1777     AND ROUND TO END OF PAGE
      INA           GET FIRST WORD ADDRESS OF NEXT PAGE 
      STA FWPRV     AND SAVE AS PRIV LOAD PT
                                                                                                                                                  