version 1.23, 1996/07/16 20:57:09
|
version 1.27, 1996/12/28 17:19:24
|
Line 21
|
Line 21
|
|
|
#include "config.h" |
#include "config.h" |
#include <limits.h> |
#include <limits.h> |
|
#if defined(NeXT) |
|
# include <libc.h> |
|
#endif /* NeXT */ |
|
|
typedef void *Label; |
typedef void *Label; |
|
|
Line 131 typedef Label *Xt;
|
Line 134 typedef Label *Xt;
|
#define PFA1(cfa) PFA(cfa) |
#define PFA1(cfa) PFA(cfa) |
/* CODE_ADDRESS is the address of the code jumped to through the code field */ |
/* CODE_ADDRESS is the address of the code jumped to through the code field */ |
#define CODE_ADDRESS(cfa) (*(Label *)(cfa)) |
#define CODE_ADDRESS(cfa) (*(Label *)(cfa)) |
/* DOES_CODE is the Forth code does jumps to */ |
/* DOES_CODE is the Forth code does jumps to */ |
#define DOES_CODE(cfa) ((cfa[0] == symbols[DODOES]) ? cfa[1] : NULL) |
#define DOES_CODE(cfa) ({Xt _cfa=(Xt)(cfa); \ |
#define DOES_CODE1(cfa) (cfa[1]) |
_cfa[0] == symbols[DODOES] ? _cfa[1] : NULL;}) |
|
#define DOES_CODE1(cfa) (cfa[1]) |
/* MAKE_CF creates an appropriate code field at the cfa; |
/* MAKE_CF creates an appropriate code field at the cfa; |
ca is the code address */ |
ca is the code address */ |
#define MAKE_CF(cfa,ca) ((*(Label *)(cfa)) = ((Label)ca)) |
#define MAKE_CF(cfa,ca) ((*(Label *)(cfa)) = ((Label)ca)) |
Line 166 typedef Label *Xt;
|
Line 170 typedef Label *Xt;
|
#define CACHE_FLUSH(addr,size) |
#define CACHE_FLUSH(addr,size) |
#endif |
#endif |
|
|
|
#ifdef USE_TOS |
|
#define IF_TOS(x) x |
|
#else |
|
#define IF_TOS(x) |
|
#define TOS (sp[0]) |
|
#endif |
|
|
|
#ifdef USE_FTOS |
|
#define IF_FTOS(x) x |
|
#else |
|
#define IF_FTOS(x) |
|
#define FTOS (fp[0]) |
|
#endif |
|
|
Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp, Address lp); |
Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp, Address lp); |
|
|
/* dblsub routines */ |
/* dblsub routines */ |