<> <> <> <> <> <> DIRECTORY BasicLoadState USING [TypeCode], BcdDefs USING [BcdBase, ModuleIndex, MTIndex], PrincOps USING [GFTIndex]; BasicLoadStateFormat: DEFINITIONS = BEGIN ModuleIndex: TYPE = BcdDefs.ModuleIndex; LoadState: TYPE = LONG POINTER TO LoadStateObject; versionID: CARDINAL = 03302; -- 03302 is compatible with Rubicon Pilot LoadStateObject: TYPE = MACHINE DEPENDENT RECORD [ versionident(0): CARDINAL, nBcds(1): ConfigIndex, gft(2): ModuleTable, bcds(2+SIZE[ModuleTable]): SEQUENCE length(2+SIZE[ModuleTable]): ConfigIndex OF BcdInfo]; ConfigIndex: TYPE = [0..377B]; nullConfig: ConfigIndex = LAST[ConfigIndex]; ModuleTable: TYPE = ARRAY PrincOps.GFTIndex OF ModuleInfo; ModuleInfo: TYPE = MACHINE DEPENDENT RECORD [ fill0: [0..(LAST[CARDINAL]/(LAST[ConfigIndex]-FIRST[ConfigIndex]+1))/2] _ 0, resolved: BOOL, config: ConfigIndex, fill1: [0..LAST[CARDINAL]/(LAST[ModuleIndex]-FIRST[ModuleIndex]+1)] _ 0, module: ModuleIndex]; nullModule: ModuleInfo = [resolved: FALSE, config: nullConfig, module: 0]; BcdInfo: TYPE = MACHINE DEPENDENT RECORD [ SELECT OVERLAID * FROM ptr => [bcd: BcdDefs.BcdBase], flags => [ fill: [0..LAST[CARDINAL]/4] _ 0, exports, typeExported: BOOL] ENDCASE]; Bcd: TYPE = LONG POINTER TO BcdInfo; <> Extension: TYPE = ARRAY PrincOps.GFTIndex OF ExtensionEntry; ExtensionEntry: TYPE = MACHINE DEPENDENT RECORD [ mti(0): BcdDefs.MTIndex, type(1): BasicLoadState.TypeCode ]; nullType: BasicLoadState.TypeCode = LOOPHOLE[0]; END.