-- file RTBcd.Mesa
-- last modified by Satterthwaite, 12-Mar-82 11:48:42
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 (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];
}.