-- JaMFns.mesa
-- Last changed by Doug Wyatt, 20-Jan-82 16:37:25

DIRECTORY
  StreamDefs USING [StreamHandle];

JaMFns: DEFINITIONS = {

Frame: TYPE = LONG POINTER TO FrameObject;
FrameObject: TYPE;

StreamHandle: TYPE = StreamDefs.StreamHandle;

Register: PROC[LONG STRING, PROC[Frame], Frame ← NIL];

Execute: PROC[LONG STRING, Frame ← NIL];

PushInteger: PROC[INTEGER, Frame ← NIL];
PopInteger: PROC[Frame ← NIL] RETURNS[INTEGER];

PushLongInteger: PROC[LONG INTEGER, Frame ← NIL];
PopLongInteger,GetLongInteger: PROC[Frame ← NIL] RETURNS[LONG INTEGER];

PushReal: PROC[REAL, Frame ← NIL];
PopReal,GetReal: PROC[Frame ← NIL] RETURNS[REAL];

PushBoolean: PROC[BOOLEAN, Frame ← NIL];
PopBoolean: PROC[Frame ← NIL] RETURNS[BOOLEAN];

PushString: PROC[LONG STRING, Frame ← NIL];
PopString: PROC[LONG STRING, Frame ← NIL];
StringOverflow: SIGNAL[s: LONG STRING] RETURNS[ns: LONG STRING];

PushStream: PROC[StreamHandle, Frame ← NIL];
PopStream: PROC[Frame ← NIL] RETURNS[StreamHandle];

Pop: PROC[Frame ← NIL];

GetJaMBreak: PROC[Frame ← NIL] RETURNS[BOOLEAN];
SetJaMBreak: PROC[BOOLEAN ← TRUE, Frame ← NIL];

}.