-- JaMMasterDefs.mesa -- Written by: John Warnock, January 1979. -- Last changed by Doug Wyatt, February 10, 1981 2:00 PM DIRECTORY StreamDefs USING [StreamHandle]; -- Basic definitions required by the JaM Machine. JaMMasterDefs: DEFINITIONS = { Object: TYPE = MACHINE DEPENDENT RECORD [ litflag(0:0..0): MACHINE DEPENDENT {lit(0),nolit(1)}, DataField(0:1..63): SELECT Type(0:1..15): MType FROM IntegerType => [IntegerVal(1:0..15): INTEGER], LongIntegerType => [LongIntegerVal(1:0..31): LONG INTEGER], RealType => [RealVal(1:0..31): REAL], BooleanType => [BooleanVal(1:0..15): BOOLEAN], StringType => [Offset(1:0..0): [0..1], Length(1:1..15): [0..77777B], Address(2:0..31): LONG POINTER], StreamType => [SHandle(1:0..15): StreamDefs.StreamHandle], CommandType => [Command(1:0..15): CommandIndex], DictType => [Address(1:0..31): LONG POINTER], ArrayType => [Length(1:0..15): CARDINAL, ArrayPtr(2:0..31): LONG POINTER], StackType => [StkPtr(1:0..15): Stack], FrameType => [FrmPtr(1:0..15): POINTER TO Frame], MarkType => [], UserType => [Type(1:0..15): CARDINAL, Address(2:0..31): LONG POINTER], NullType => [], ENDCASE]; MType: TYPE = MACHINE DEPENDENT { IntegerType(0), LongIntegerType(1), RealType(2), BooleanType(3), StringType(4), StreamType(5), CommandType(6), DictType(7), ArrayType(8), StackType(9), FrameType(10), MarkType(11), UserType(12), NullType(13)}; CommandIndex: TYPE = CARDINAL; -- Basic stack definitions. Frame: TYPE = MACHINE DEPENDENT RECORD [opstk,dictstk,execstk:Stack]; Stack: TYPE = POINTER TO StackLink; StackLink: TYPE = POINTER TO StackEntry; StackEntry: TYPE = MACHINE DEPENDENT RECORD [ob:Object,nextEntry:StackLink]; }.(670)