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
DIRECTORY
BcdDefs USING [SGIndex, RefLitIndex, TypeIndex, VersionStamp],
RCMap USING [Base, Index],
Symbols 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 (1: 0..13): Symbols.SEIndex,
canonical (1: 14..15): BOOLEAN,
ct (2): CTInfo,
ut (3): UTInfo,
rcMap (5): 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..LAST[NAT]] 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];
}.