<> <> <> 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; <> 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; <> InitLoaderCore: PROC [h: MB.Handle]; FinishLoaderCore: PROC; <> 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]; <> <> 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; < ) 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]; <> GetNextGFI: PROC [reserve: CARDINAL] RETURNS [next: PrincOps.GFTIndex]; SetGFTEntry: PROC [ frame: PrincOps.GlobalFrameHandle, gfi: PrincOps.GFTIndex, ngfi: CARDINAL]; <> 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.