DIRECTORY BasicLoadStateFormat USING [ConfigIndex, ModuleInfo], BcdDefs USING [BcdBase, EXPIndex, Link, MTHandle, MTIndex, MTNull], PrincOps USING [ControlLink, GFTIndex, GlobalFrameHandle, MaxNGfi], MB USING [BHandle, Handle], Rope USING [ROPE]; MBLoaderOps: DEFINITIONS = BEGIN ConfigIndex: TYPE = BasicLoadStateFormat.ConfigIndex; ModuleInfo: TYPE = BasicLoadStateFormat.ModuleInfo; VirtualLinks: TYPE = LONG DESCRIPTOR FOR ARRAY OF BcdDefs.Link; RealLinksTable: TYPE = ARRAY [0..256) OF PrincOps.ControlLink; RealLinks: TYPE = REF RealLinksTable; FindFiles: PROC [loadee: MB.BHandle]; -- find code files FindCode: PROC [loadee: MB.BHandle]; -- load code into MBVM FileNotFound: SIGNAL [name: Rope.ROPE]; OpenLinkSpace: PROC [loadee: MB.BHandle, mth: BcdDefs.MTHandle]; WriteLink: PROC [offset: CARDINAL, link: PrincOps.ControlLink]; ReadLink: PROC [offset: CARDINAL] RETURNS [link: PrincOps.ControlLink]; CloseLinkSpace: PROC; WriteLinks: PROC [loadee: MB.BHandle, mth: BcdDefs.MTHandle, links: RealLinks]; LinkFragLength: PROC [loadee: MB.BHandle, mth: BcdDefs.MTHandle] RETURNS [nLinks: CARDINAL]; GetVirtualLinks: PROC [loadee: MB.BHandle, mth: BcdDefs.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]; VersionMismatch: SIGNAL [interface, ref1, ref2: Rope.ROPE]; Binding: TYPE = REF BindingRecord; BindingRecord: TYPE = RECORD [ bias: PrincOps.GFTIndex, -- = bcd.firstdummy b: SEQUENCE n: --import gfi-- CARDINAL 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; EnterModule: PROC [ rgfi: PrincOps.GFTIndex, module: ModuleInfo, mti: BcdDefs.MTIndex _ BcdDefs.MTNull]; GetModule: PROC [rgfi: PrincOps.GFTIndex] RETURNS [module: ModuleInfo]; AcquireBcd: PROC [config: ConfigIndex] RETURNS [handle: MB.BHandle]; InitBinding: PROC [bcd: BcdDefs.BcdBase] RETURNS [binding: 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. MBLoaderOps.mesa Modified by Lewis on 17-Sep-81 11:01:30 last edited by Levin on September 30, 1983 4:53 pm From MBLoader From MBLoaderCore From MBLoaderExtra From MBLoadState Loadstate ModuleInfo (gfi -> ) management GFT management Enumerators Êœ˜Jšœ™Jšœ'™'Jšœ2™2J˜šÏk ˜ Jšœœ˜5Jšœœ6˜CJšœ œ5˜CJšœœ˜Jšœœœ˜J˜—Jšœ œ˜J˜Jš˜J˜Jšœ œ$˜5Jšœ œ#˜3J˜Jšœ ™ ˜Jš œœœ œœœœ˜?Jšœœœ œ˜>Jšœ œœ˜%J˜JšÏn œœ œ Ïc˜9Jšžœœ œ Ÿ˜=Jšœœ œ˜'J˜Jšž œœ œ!˜@Jšž œœ œ˜?Jšžœœ œœ˜GJšžœœ˜J˜šž œœ œ3˜OJ˜—šžœœ œ ˜@Jšœ œ˜J˜—šžœœ œ ˜AJšœ˜%J˜—Jšžœœ˜—J˜Jšœ™˜Jšžœœœ ˜$Jšžœœ˜—J˜Jšœ™˜Jšžœœœ ˜%Jšžœœ˜J˜Jšžœœ œ˜5Jšœœœ˜;—J˜Jšœ™˜Jšœ œœ˜"šœœœ˜JšœŸ˜-JšœœŸ œœ ˜2J˜—šœ œœ˜J˜ šœœ ˜J˜%J˜$Jšœ œ˜Jš˜—šœ˜J˜——Jšž œœœ ˜#Jšžœœ˜J˜Jšžœœœ˜2Jšžœœœ ˜@Jšžœœ˜J˜Jšœ?™?J˜šž œœ˜JšœT˜T—Jšž œœœ˜GJ˜Jšž œœœ œ ˜DJ˜šž œœœ˜DJ˜—Jšž œœœœ˜9Jšž œœœœ˜6Jšžœœœœ˜;J˜Jšœ™J˜Jšž œœ œœ˜Gšž œœ˜JšœAœ˜KJ˜—Jšœ ™ J˜Jšœœ˜7J˜šžœœ˜Jšœœ/œœ˜KJšœ˜J˜—šž œœ˜Jšœ!œœœ˜FJšœ˜J˜——Jšœ˜˜J˜——…— ÞŽ