--- gforth/Attic/forth.h 1994/05/05 15:46:44 1.2 +++ gforth/Attic/forth.h 1995/01/19 17:48:02 1.13 @@ -1,5 +1,4 @@ /* - $Id: forth.h,v 1.2 1994/05/05 15:46:44 pazsan Exp $ Copyright 1992 by the ANSI figForth Development Group */ @@ -13,14 +12,17 @@ typedef void *Label; #define DOCON 1 #define DOVAR 2 #define DOUSER 3 -#define DODOES 4 -#define DOESJUMP 5 +#define DODEFER 4 +#define DODOES 5 +#define DOESJUMP 6 #include "machine.h" /* Forth data types */ typedef int Bool; #define FLAG(b) (-(b)) +#define FILEIO(error) (FLAG(error) & -37) +#define FILEEXIST(error) (FLAG(error) & -38) #define F_TRUE (FLAG(0==0)) #define F_FALSE (FLAG(0!=0)) @@ -35,7 +37,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 */ @@ -57,12 +59,12 @@ Label *engine(Xt *ip, Cell *sp, Cell *rp #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 +#define DOES_HANDLER_SIZE (2*sizeof(Cell)) #define MAKE_DOES_HANDLER(addr) 0 /* do nothing */ #endif #ifdef DEBUG -# define NAME(string) printf("%08x: %s\n",(int)ip,string); +# define NAME(string) fprintf(stderr,"%08x: "string"\n",(Cell)ip); #else # define NAME(string) #endif @@ -70,3 +72,7 @@ Label *engine(Xt *ip, Cell *sp, Cell *rp #define CF(const) (-const-2) #define CF_NIL -1 + +#ifndef CACHE_FLUSH +# define CACHE_FLUSH(addr,size) +#endif