-- JaMMasterDefs.mesa
-- Written by: John Warnock, January 1979.
-- Last changed by Doug Wyatt, September 29, 1980 11:31 AM

DIRECTORY
StreamDefs: FROM "StreamDefs" USING [StreamHandle];

-- This definitions file provides the basic definitions required by the
-- JaM Machine. Included are the object definitions, the stack definitions,
-- and some of the basic procedural interface definitions.


JaMMasterDefs: DEFINITIONS =
BEGIN
Object: TYPE = MACHINE DEPENDENT RECORD [
litflag: {lit,nolit},
DataField: SELECT Type: MType FROM
IntegerType => [IntegerVal:INTEGER],
LongIntegerType => [LongIntegerVal:LONG INTEGER],
Mesa5RealType => [RealVal:LONG UNSPECIFIED],
BooleanType => [BooleanVal:BOOLEAN],
StringType => [Offset: [0..1], Length: [0..77777B],
Address:LONG POINTER],
StreamType => [SHandle:StreamDefs.StreamHandle],
CommandType => [Command:CommandIndex],
DictType => [Address:LONG POINTER],
ArrayType => [Length: CARDINAL, ArrayPtr: LONG POINTER],
StackType => [StkPtr: Stack],
FrameType => [FrmPtr:POINTER TO Frame],
MarkType => [],
UserType => [Type: CARDINAL, Address: LONG POINTER],
NullType => [],
RealType => [RealVal:REAL],
ENDCASE];

MType : TYPE =
MACHINE DEPENDENT {
IntegerType,LongIntegerType,Mesa5RealType,
BooleanType,StringType,StreamType,CommandType,
DictType,ArrayType,StackType,FrameType,MarkType,
UserType,NullType,RealType,(17B)};

CommandIndex:TYPE = [0..MaxCommands];
CommandArray:TYPE = ARRAY CommandIndex OF PROCEDURE;
MaxCommands:CARDINAL = 255;

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

END.

DKW July 25, 1980 4:06 PM
made everything MACHINE DEPENDENT
changed RealType to Mesa5RealType (Mesa5-style REALs)
added new RealType (Mesa6-style Ieee standard REALs)