[ivy]<Satterthwaite>Mimosa>RTBcd.mesa!1

RTBcd.Mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Satterthwaite, 12-Mar-82 11:48:42
Russ Atkinson (RRA) January 31, 1985 1:12:13 pm PST
Satterthwaite June 3, 1986 10:57:42 am PDT
DIRECTORY
BcdDefs: TYPE USING [SGIndex, RefLitIndex, TypeIndex, VersionStamp],
RCMap: TYPE USING [Base, Index],
Symbols: TYPE USING [SEIndex];
RTBcd: DEFINITIONS = {-- BCD extensions for RT info
VersionID: CARDINAL = 03122;
rt segment headers
RTHeader: TYPE = RECORD[
versionIdent: CARDINAL ← VersionID,
refLitTable: RTBase RELATIVE POINTER TO RefLitList,
litBase: RTBase RELATIVE POINTER,-- to uninterpreted words
litLength: CARDINAL,
rcMapBase: RTBase RELATIVE RCMap.Base,
rcMapLength: CARDINAL,
stampTable: RTBase RELATIVE POINTER TO StampList,
typeTable: RTBase RELATIVE POINTER TO TypeList];
RTBase: TYPE = LONG BASE POINTER TO RTHeader;
REFs to literals and ATOMs
RefLitIndex: TYPE = BcdDefs.RefLitIndex;
RefLitItem: TYPE = RECORD[
referentType: TypeIndex,
offset, length: CARDINAL];
RefLitList: TYPE = RECORD[SEQUENCE length: NAT OF RefLitItem];
types
TypeIndex: TYPE = BcdDefs.TypeIndex;
TypeItem: TYPE = MACHINE DEPENDENT RECORD[
table (0): BcdDefs.SGIndex,
sei (2): Symbols.SEIndex,
canonical (4): BOOLEAN,
ct (5): CTInfo,
ut (6): UTInfo,
rcMap (9): RCMap.Index];
TypeList: TYPE = RECORD[SEQUENCE length: NAT OF TypeItem];
auxiliary type info
CTInfo: TYPE = RECORD[index: CARDINAL];-- offset of string from litBase
StampList: TYPE = RECORD[SEQUENCE limit: [1..NAT.LAST] OF BcdDefs.VersionStamp];
StampIndex: TYPE = RECORD[NAT];-- index in StampList
AnyStamp: StampIndex = [0];
UTInfo: TYPE = MACHINE DEPENDENT RECORD[
version (0): StampIndex,-- AnyStamp => sei good in any table
sei (1): Symbols.SEIndex];
}.