extern void InterpDump(STR *,THING *);
extern WORD Interp(STR *,THING *,THING *,THING *,STR *,LWORD *,EXIT *);
extern void InterpInit(LWORD iMaxInstr);
extern void InterpStackAlloc(LWORD iStackSize,LWORD iMaxParameter,LWORD iLocalVar);
extern void InterpSnoop(BYTE *msg, THING *thing);
extern void InterpSnoopStr(BYTE *msg);
extern void InterpSnoopStack(ULWORD pos);
typedef struct InterpVarType {
BYTE iDataType; /* type of data */
LWORD iInt; /* integer data */
void *iPtr; /* pointer data */
} INTERPVARTYPE;
typedef struct InterpStack {
INTERPVARTYPE *iVariable; /* used internally by interp - don't use!! */
BYTE iDataType; /* type of data - set for you by interp. */
LWORD iInt; /* integer data goes here */
void *iPtr; /* pointer data (thing, str, extra) goes here */
} INTERPSTACK;
#define INTERP_MAX_INSTR 1000 /* Maximum # instructions Interp will execute */
/* before automatically exiting. This is to */
/* guard against infinite loops like */
/* "while (1);" in the code. */