DIRECTORY Literals USING [ltType, stType], Symbols USING [ISEIndex, CTXIndex, ExtensionType, seType, htType, ssType, ctxType, mdType, bodyType], Table USING [Base, Selector, Limit], TimeStamp USING [Stamp], Tree USING [Link, treeType]; SymbolSegment: DEFINITIONS = { VersionID: CARDINAL = 08140; Base: TYPE = Table.Base; Limit: CARDINAL = Table.Limit; ExtRecord: TYPE = RECORD [ type: Symbols.ExtensionType[$value..$default], sei: Symbols.ISEIndex, -- the key tree: Tree.Link]; ExtIndex: TYPE = Base RELATIVE POINTER [0..Limit) TO ExtRecord; ExtNull: ExtIndex = ExtIndex.LAST; treeType: Table.Selector = Tree.treeType; seType: Table.Selector = Symbols.seType; htType: Table.Selector = Symbols.htType; ssType: Table.Selector = Symbols.ssType; ctxType: Table.Selector = Symbols.ctxType; mdType: Table.Selector = Symbols.mdType; bodyType: Table.Selector = Symbols.bodyType; ltType: Table.Selector = Literals.ltType; stType: Table.Selector = Literals.stType; extType: Table.Selector = 9; atType: Table.Selector = 10; -- atom and typeId table constType: Table.Selector = 11; Tables: TYPE = Table.Selector[treeType..constType]; WordOffset: TYPE = CARDINAL; BlockDescriptor: TYPE = RECORD [offset: WordOffset, size: CARDINAL]; STHeader: TYPE = RECORD [ versionIdent: CARDINAL, version: TimeStamp.Stamp, creator: TimeStamp.Stamp, sourceVersion: TimeStamp.Stamp, definitionsFile: BOOL, extended: BOOL, directoryCtx, importCtx, outerCtx: Symbols.CTXIndex, hvBlock: BlockDescriptor, htBlock: BlockDescriptor, ssBlock: BlockDescriptor, outerPackBlock: BlockDescriptor, innerPackBlock: BlockDescriptor, constBlock: BlockDescriptor, seBlock: BlockDescriptor, ctxBlock: BlockDescriptor, mdBlock: BlockDescriptor, bodyBlock: BlockDescriptor, extBlock: BlockDescriptor, treeBlock: BlockDescriptor, litBlock: BlockDescriptor, sLitBlock: BlockDescriptor, epMapBlock: BlockDescriptor, spareBlock: BlockDescriptor, fgRelPgBase: CARDINAL, fgPgCount: [0..256]]; FGHeader: TYPE = RECORD [ offset: WordOffset, length: CARDINAL, sourceFile: StringBody -- text follows --]; SourceStep: CARDINAL = 0FFh; ObjectStep: CARDINAL = 07Fh; Stride: CARDINAL = 03FFFh; FGTEntry: TYPE = RECORD [SELECT tag: * FROM normal => [deltaObject: [0..ObjectStep], deltaSource: [0..SourceStep]], step => [which: {source, object}, delta: [0..Stride]] ENDCASE]; }. *SymbolSegment.Mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Satterthwaite, February 17, 1983 3:01 pm Russ Atkinson (RRA) January 31, 1985 1:06:12 pm PST symbol table extensions allocation codes symbol segment headers fine grain table header fine grain table declarations Κ–˜codešœ™Kšœ Οmœ1™