-- 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]; }.