-- JaMStackDefs.mesa -- Written by John Warnock, January, 1979. -- Last changed by Doug Wyatt, February 10, 1981 6:39 PM -- Last changed by Doug Brotz, June 5, 1981 2:40 PM DIRECTORY JaMMasterDefs USING[Object, Stack, StackLink]; JaMStackDefs: DEFINITIONS = { OPEN JaMMasterDefs; -- "Push" pushes a descriptor onto the current operand stack. Push: PROCEDURE[ob: Object, stack: Stack]; -- "Pop" returns the descriptor from the top of the operand stk. Pop: PROCEDURE[stack: Stack] RETURNS[Ob: Object]; -- "Top" returns the top of stack without popping. i.e. Dup Pop. Top: PROCEDURE[stack: Stack] RETURNS[Ob: Object]; -- "Dup" Duplicates the top descriptor onto the stack. Dup: PROCEDURE[stack: Stack]; -- "Exch" Exchanges the top entries on the stack. Exch: PROCEDURE[stack: Stack]; -- "ClrStk" clears the stack. ClrStk: PROCEDURE[stack: Stack]; -- "CopyStk" copies the top n entries on the given stack. CopyStk: PROCEDURE[n: CARDINAL, stack: Stack]; -- "CountStk" counts the entries on the given stack. CountStk: PROCEDURE[stack: Stack] RETURNS[n: CARDINAL]; -- "CountToMark" counts the entries on the given stack to the first mark. CountToMark: PROCEDURE[stack: Stack] RETURNS[n: CARDINAL]; ClrToMark: PROCEDURE[stack: Stack]; -- "Indx" makes a copy of the ith stack element, counting from 0. Indx: PROCEDURE[stack: Stack, i: CARDINAL]; -- "MoveStkOps" transfers a number of descriptors from one stack -- to another. This is an internal procedure. MoveStkOps: PROCEDURE[From, To: Stack, Count: CARDINAL]; -- "StackForall" executes a given procedure for each element on the stack, -- i.e. each element is passed to the given procedure. -- The given stack is left unaltered. StackForall: PROCEDURE[stack: Stack, proc: PROCEDURE[Object] RETURNS[BOOLEAN]] RETURNS[BOOLEAN]; -- The following routines make the above routines into intrinsics. PopOpStk: PROCEDURE; DupOpStk: PROCEDURE; ExchOpStk: PROCEDURE; ClearOpStk: PROCEDURE; CopyOpStk: PROCEDURE; RollOpStk: PROCEDURE; CountOpStk: PROCEDURE; CountToMrk: PROCEDURE; ClearToMrk: PROCEDURE; Mark: PROCEDURE; Index: PROCEDURE; -- The next two procedures are used in conjunction with error recovery. FreeLoc: PROCEDURE RETURNS[sl: StackLink]; RestoreStk: PROCEDURE[sl: StackLink, s: Stack]; CleanupStack: PROCEDURE; JaMStack: PROGRAM; }. DKW March 27, 1980 6:19 PM added JaMStack: PROGRAM; DKW September 30, 1980 5:38 PM added Indx, Index DKB June 5, 1981 2:39 PM added CleanupStack (670)