BasicLoadStateFormat.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
McJones, April 18, 1980 1:26 PM
Rovner, 4-May-82 9:29:27
Levin, May 19, 1983 2:05 pm
Russ Atkinson (RRA) January 31, 1985 11:14:14 am PST
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;
Stuff previously in BasicLoadStateFormatExtension
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.