CatchFormat.mesa, Edited by
JGS, 11-Nov-81 15:53:26
Sweet, July 19, 1982 12:02 pm
Satterthwaite November 27, 1985 2:46:13 pm PST
DIRECTORY
PrincOps: TYPE USING [BytePC, FrameSizeIndex, localbase, PrefixHandle];
CatchFormat: DEFINITIONS = {
Codebase: TYPE = PrincOps.PrefixHandle;
CatchAction: TYPE = CARDINAL;
cReject: CatchAction = 0;
cResume: CatchAction = 1;
cEnable: CatchAction = 2;
cExit: CatchAction = 3;
CatchIndex: TYPE = NAT;
CatchNull: CatchIndex = CatchIndex.LAST;
EnableItem: TYPE = RECORD[
start: PrincOps.BytePC,
length: CARDINAL,
index: CatchIndex,
alsoNested: BOOL];
EnableIndex: TYPE = CARDINAL[0..CARDINAL.LAST/EnableItem.SIZE);
EnableTableBody: TYPE = RECORD[SEQUENCE count: EnableIndex OF EnableItem];
EnableTable: TYPE = Codebase RELATIVE POINTER TO EnableTableBody;
EnableHandle: TYPE = LONG POINTER TO EnableTableBody;
if et[i].alsoNested = TRUE for any i IN [0..et.count) then
et+SIZE[EnableTableBody[et.count]] is a valid EnableTable
CatchEVBody: TYPE = RECORD[SEQUENCE count: CatchIndex OF PrincOps.BytePC];
CatchEV: TYPE = Codebase RELATIVE POINTER TO CatchEVBody;
nullCatchEV: CatchEV = LOOPHOLE[0];
CatchEVHandle: TYPE = LONG POINTER TO CatchEVBody;
word after entry vector is CatchEV*2
sigOffset: CARDINAL = PrincOps.localbase + 1;
msgOffset: CARDINAL = PrincOps.localbase + 2;
defaultFsi: PrincOps.FrameSizeIndex = 1;
}.