MBLoaderOps.mesa
Modified by Lewis on 17-Sep-81 11:01:30
last edited by Levin on April 5, 1983 2:08 pmApril 5, 1983 2:08 pm
DIRECTORY
BcdDefs USING [EXPIndex, Link, MTIndex, NameRecord],
BcdOps USING [BcdBase, MTHandle, NameString],
PilotLoadStateFormat USING [ConfigIndex, ModuleInfo],
PrincOps USING [ControlLink, GFTIndex, GlobalFrameHandle, MaxNGfi],
MB USING [BHandle, Handle];
MBLoaderOps: DEFINITIONS =
BEGIN
ConfigIndex: TYPE = PilotLoadStateFormat.ConfigIndex;
ModuleInfo: TYPE = PilotLoadStateFormat.ModuleInfo;
From MBLoader
VirtualLinks: TYPE = LONG DESCRIPTOR FOR ARRAY OF BcdDefs.Link;
FindFiles: PROC [loadee: MB.BHandle]; -- find code files
FindCode: PROC [loadee: MB.BHandle]; -- load code into MBVM
FileNotFound: SIGNAL [name: STRING];
OpenLinkSpace: PROC [loadee: MB.BHandle, mth: BcdOps.MTHandle];
WriteLink: PROC [offset: CARDINAL, link: PrincOps.ControlLink];
ReadLink: PROC [offset: CARDINAL] RETURNS [link: PrincOps.ControlLink];
CloseLinkSpace: PROC;
WriteLinks: PROC [
loadee: MB.BHandle,
mth: BcdOps.MTHandle,
links: LONG POINTER TO ARRAY [0..0) OF PrincOps.ControlLink];
LinkFragLength: PROC [loadee: MB.BHandle, mth: BcdOps.MTHandle]
RETURNS [nLinks: CARDINAL];
GetVirtualLinks: PROC [loadee: MB.BHandle, mth: BcdOps.MTHandle]
RETURNS [virtualLinks: VirtualLinks];
ProcessUnboundImports: PROC;
From MBLoaderCore
InitLoaderCore: PROC [h: MB.Handle];
FinishLoaderCore: PROC;
From MBLoaderExtra
InitLoaderExtra: PROC [h: MB.Handle];
FinishLoaderExtra: PROC;
Bind: PROC [loadee: MB.BHandle, config: ConfigIndex];
GetSpace: PROC [nwords: CARDINAL] RETURNS [p: LONG POINTER];
FreeSpace: PROC [p: LONG POINTER];
AppendName: PROC [s: LONG STRING, ssb: BcdOps.NameString, name: BcdDefs.NameRecord];
From MBLoadState
bindings for an input Bcd's imports; BASE[Binding] biased by bcd.firstdummy
Binding: TYPE = LONG DESCRIPTOR FOR ARRAY --import gfi-- OF BindLink;
BindLink: TYPE = RECORD [
whichgfi: [0..PrincOps.MaxNGfi),
body: SELECT type: * FROM
interface => [eti: BcdDefs.EXPIndex],
module => [mti: BcdDefs.MTIndex],
notbound => NULL,
ENDCASE
];
InitLoadState: PROC [h: MB.Handle];
FinishLoadState: PROC;
InputLoadState: PROC RETURNS [nbcds: ConfigIndex];
UpdateLoadState: PROC [config: ConfigIndex, handle: MB.BHandle];
WriteLoadState: PROC;
Loadstate ModuleInfo (gfi -> <resolved?, Bcd#, gfi>) management
EnterModule: PROC [rgfi: PrincOps.GFTIndex, module: ModuleInfo];
GetModule: PROC [rgfi: PrincOps.GFTIndex] RETURNS [module: ModuleInfo];
AcquireBcd: PROC [config: ConfigIndex] RETURNS [handle: MB.BHandle];
ReleaseBcd: PROC [handle: MB.BHandle];
InitBinding: PROC [bcd: BcdOps.BcdBase] RETURNS [binding: Binding];
ReleaseBinding: PROC [bcd: BcdOps.BcdBase, binding: Binding] RETURNS [null: Binding];
BcdUnresolved: PROC [bcd: ConfigIndex] RETURNS [BOOLEAN];
BcdExports: PROC [bcd: ConfigIndex] RETURNS [BOOLEAN];
BcdExportsTypes: PROC [bcd: ConfigIndex] RETURNS [BOOLEAN];
GFT management
GetNextGFI: PROC [reserve: CARDINAL] RETURNS [next: PrincOps.GFTIndex];
SetGFTEntry: PROC [
frame: PrincOps.GlobalFrameHandle, gfi: PrincOps.GFTIndex, ngfi: CARDINAL];
Enumerators
EnumerationDirection: TYPE = {recentfirst, recentlast};
EnumerateModules: PROC [
proc: PROC [rgfi: PrincOps.GFTIndex, module: ModuleInfo] RETURNS [BOOLEAN]]
RETURNS [PrincOps.GFTIndex];
EnumerateBcds: PROC [
dir: EnumerationDirection, proc: PROC [ConfigIndex] RETURNS [BOOLEAN]]
RETURNS [config: ConfigIndex];
END.