--- gforth/Attic/forth.h 1994/02/11 16:30:46 1.1 +++ gforth/Attic/forth.h 1994/05/07 14:55:51 1.4 @@ -1,5 +1,5 @@ /* - $Id: forth.h,v 1.1 1994/02/11 16:30:46 anton Exp $ + $Id: forth.h,v 1.4 1994/05/07 14:55:51 anton Exp $ Copyright 1992 by the ANSI figForth Development Group */ @@ -7,6 +7,15 @@ typedef void *Label; +/* symbol indexed constants */ + +#define DOCOL 0 +#define DOCON 1 +#define DOVAR 2 +#define DOUSER 3 +#define DODOES 4 +#define DOESJUMP 5 + #include "machine.h" /* Forth data types */ @@ -26,7 +35,7 @@ typedef Label Xt; typedef Label *Xt; #endif -Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp); +Label *engine(Xt *ip, Cell *sp, Cell *rp, Float *fp, Address lp); #ifndef DIRECT_THREADED /* i.e. indirect threaded */ @@ -45,7 +54,7 @@ Label *engine(Xt *ip, Cell *sp, Cell *rp ca is the code address */ #define MAKE_CF(cfa,ca) ((*(Label *)(cfa)) = ((Label)ca)) /* make a code field for a defining-word-defined word */ -#define MAKE_DOES_CF(cfa,does_code) ({MAKE_CF(cfa,DODOES); \ +#define MAKE_DOES_CF(cfa,does_code) ({MAKE_CF(cfa,symbols[DODOES]); \ ((Cell *)cfa)[1] = (Cell)does_code;}) /* the does handler resides between DOES> and the following Forth code */ #define DOES_HANDLER_SIZE 8 @@ -53,7 +62,15 @@ Label *engine(Xt *ip, Cell *sp, Cell *rp #endif #ifdef DEBUG -# define NAME(string) puts(string); +# define NAME(string) printf("%08x: %s\n",(int)ip,string); #else # define NAME(string) #endif + +#define CF(const) (-const-2) + +#define CF_NIL -1 + +#ifndef CACHE_FLUSH +# define CACHE_FLUSH(addr,size) +#endif