-- File: BootmesaOps.Mesa
-- Last edited by Sandman; July 10, 1980 7:38 AM
-- Copyright Xerox Corporation 1979, 1980
DIRECTORY
AltoDefs USING [PageNumber],
BcdDefs USING [BCD, VersionStamp],
BcdOps USING [MTHandle],
ControlDefs USING [GFTIndex, GlobalFrameHandle],
ImageFormat USING [ImageHeader],
SegmentDefs USING [FileHandle, FileSegmentHandle],
SegOps USING [Seg, CodeClass],
StreamDefs USING [StreamHandle],
WartDefs USING [Header, TableBase];
BootmesaOps: DEFINITIONS =
BEGIN OPEN AltoDefs, SegOps, ControlDefs;
FirstFrameWord: TYPE = MACHINE DEPENDENT RECORD [
gfi: GFTIndex,
unused: [0..1],
copied, alloced, shared, started: BOOLEAN,
trapxfers, codelinks: BOOLEAN];
-- From Script
segTable, linkTable: WartDefs.TableBase;
InitializeBootScript: PROCEDURE;
FinishBootScript: PROCEDURE [startframe: GlobalFrameHandle] RETURNS [POINTER];
DeclareSegs: PROCEDURE;
DeclareCodeLinks: PROCEDURE;
DeclareUnlocked: PROCEDURE [s: Seg];
WriteScriptSegments: PROCEDURE;
DisableHyperspace: PROCEDURE;
-- From Image
WriteSwappedIn: PROCEDURE [s: Seg] RETURNS [BOOLEAN];
WriteSwappedOut: PROCEDURE [s: Seg] RETURNS [BOOLEAN];
SegmentToMap: PROCEDURE [Seg];
EnterMapSegment: PROCEDURE [Seg];
DeclareSegments: PROCEDURE;
WriteData, WriteNonData: PROCEDURE;
GetImageHeader: PROCEDURE RETURNS [SegmentDefs.FileSegmentHandle];
InitializeImage: PROCEDURE;
WriteImage: PROCEDURE;
-- From Bootmesa
InitializeHeap: PROCEDURE;
AllocGlobalFrame: PROCEDURE [framesize, nlinks: CARDINAL, framelinks: BOOLEAN]
RETURNS [POINTER];
InitializeLoadState: PROCEDURE;
MapLoadStates: PROCEDURE;
MapResidentCode: PROCEDURE;
MapSwappedInCode: PROCEDURE;
AdjustBcd: PROCEDURE [Seg];
InitializeBootmesa: PROCEDURE [STRING] RETURNS [BcdDefs.VersionStamp];
XFER: PROCEDURE [dest: GlobalFrameHandle];
SetDefaultMemoryLimits: PROCEDURE [fp, lp: PageNumber];
GetMemoryLimits: PROCEDURE RETURNS [fp, lp: PageNumber];
SetDefaultNProcesses: PROCEDURE [n: CARDINAL];
SetDefaultGFTLength: PROCEDURE [l: CARDINAL];
GetIOPage: PROCEDURE RETURNS [CARDINAL];
SetIOPage: PROCEDURE [CARDINAL];
TurnOffStartTrap: PROCEDURE;
SetResidentFramePages: PROCEDURE [CARDINAL];
SetNonResidentFramePages: PROCEDURE [CARDINAL];
BootmesaError: PROCEDURE [msg: STRING];
BootmesaModuleError: PROCEDURE [msg, config, module: STRING];
-- From BootLoader
InitializeLoading: PROCEDURE [STRING];
FinishLoading: PROCEDURE;
lsseg, initlsseg, fakebcdseg: Seg;
LoadModules: PROCEDURE [which: LoadClass];
AssignCodeSegments: PROCEDURE;
OpenLoadmap: PROCEDURE [root: STRING];
CloseLoadmap: PROCEDURE;
InitializeGFT: PROCEDURE [POINTER, CARDINAL];
-- From Utilities
MultipleNames: SIGNAL;
ModuleName: PROCEDURE [frame: GlobalFrameHandle, name: STRING];
ModuleGFI: PROCEDURE [STRING] RETURNS [ControlDefs.GFTIndex];
FrameForGFI: PROCEDURE [ControlDefs.GFTIndex] RETURNS [GlobalFrameHandle];
Frame: PROCEDURE [STRING] RETURNS [GlobalFrameHandle];
SetConfig: PROCEDURE [name: STRING];
ResetConfig: PROCEDURE;
CodeSegment: PROCEDURE [f: GlobalFrameHandle] RETURNS [Seg];
VirtualGlobalFrame: PROCEDURE [GlobalFrameHandle] RETURNS [GlobalFrameHandle];
MakeResident: PROCEDURE [SegmentDefs.FileSegmentHandle];
-- From Other Modules
SetSource: PROCEDURE [STRING];
-- From Parse
InitParse: PROCEDURE [PROCEDURE RETURNS [CHARACTER], SIGNAL];
ParseInput: PROCEDURE;
FinishParse: PROCEDURE;
LookUpModules: PROCEDURE;
NubFrame, WartFrame, UserControl: PROCEDURE RETURNS [GlobalFrameHandle];
EnumerateResidentModules: PROCEDURE [
proc: PROCEDURE [GFTIndex] RETURNS [BOOLEAN]] RETURNS [GFTIndex];
EnumerateSwappedInModules: PROCEDURE [
proc: PROCEDURE [GFTIndex] RETURNS [BOOLEAN]] RETURNS [GFTIndex];
EnumerateNoTrapModules: PROCEDURE [proc: PROCEDURE [GFTIndex] RETURNS [BOOLEAN]]
RETURNS [GFTIndex];
FinalizeParse: PROCEDURE;
BootAbort: SIGNAL;
LoadClass: TYPE = {resident, nonResident, initialization, notLoaded};
ModuleInfo: TYPE = RECORD [
mth: BcdOps.MTHandle,
frame: GlobalFrameHandle,
code: Seg,
class: CodeClass,
bound: BOOLEAN,
whenLoaded: LoadClass];
BootData: TYPE = RECORD [
moduleTable: DESCRIPTOR FOR ARRAY OF ModuleInfo,
bcd: POINTER TO BcdDefs.BCD,
image: POINTER TO ImageFormat.ImageHeader,
header: POINTER TO WartDefs.Header,
imageFileRoot: STRING,
imageFile: SegmentDefs.FileHandle,
imageStream: StreamDefs.StreamHandle,
vmFile: SegmentDefs.FileHandle,
headerSeg: SegmentDefs.FileSegmentHandle,
vmTableSeg, daSeg: Seg,
buildingImage: BOOLEAN];
dataObject: BootData;
END..