version 1.9, 1994/09/05 17:36:17
|
version 1.16, 1995/10/11 19:39:33
|
Line 1
|
Line 1
|
/* |
/* |
$Id$ |
|
Copyright 1992 by the ANSI figForth Development Group |
Copyright 1992 by the ANSI figForth Development Group |
*/ |
*/ |
|
|
Line 14 typedef void *Label;
|
Line 13 typedef void *Label;
|
#define DOVAR 2 |
#define DOVAR 2 |
#define DOUSER 3 |
#define DOUSER 3 |
#define DODEFER 4 |
#define DODEFER 4 |
#define DODOES 5 |
#define DOFIELD 5 |
#define DOESJUMP 6 |
#define DODOES 6 |
|
#define DOESJUMP 7 |
/* Some versions of some unices (Linux) have the symbol BIG_ENDIAN defined |
|
in their standard headers. Make sure it's undefined -- Lennart */ |
|
#ifdef BIG_ENDIAN |
|
#undef BIG_ENDIAN |
|
#endif |
|
|
|
#include "machine.h" |
#include "machine.h" |
|
|
Line 66 Label *engine(Xt *ip, Cell *sp, Cell *rp
|
Line 60 Label *engine(Xt *ip, Cell *sp, Cell *rp
|
#define MAKE_DOES_CF(cfa,does_code) ({MAKE_CF(cfa,symbols[DODOES]); \ |
#define MAKE_DOES_CF(cfa,does_code) ({MAKE_CF(cfa,symbols[DODOES]); \ |
((Cell *)cfa)[1] = (Cell)does_code;}) |
((Cell *)cfa)[1] = (Cell)does_code;}) |
/* the does handler resides between DOES> and the following Forth 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 */ |
#define MAKE_DOES_HANDLER(addr) 0 /* do nothing */ |
#endif |
#endif |
|
|
#ifdef DEBUG |
#ifdef DEBUG |
# define NAME(string) printf("%08x: "string"\n",(int)ip); |
# define NAME(string) fprintf(stderr,"%08x: "string"\n",(Cell)ip); |
#else |
#else |
# define NAME(string) |
# define NAME(string) |
#endif |
#endif |
Line 80 Label *engine(Xt *ip, Cell *sp, Cell *rp
|
Line 74 Label *engine(Xt *ip, Cell *sp, Cell *rp
|
|
|
#define CF_NIL -1 |
#define CF_NIL -1 |
|
|
#ifndef CACHE_FLUSH |
#ifndef FLUSH_ICACHE |
# define CACHE_FLUSH(addr,size) |
#warning flush-icache probably will not work (see manual) |
|
# define FLUSH_ICACHE(addr,size) 0 |
|
#endif |
|
|
|
#ifdef DIRECT_THREADED |
|
#define CACHE_FLUSH(addr,size) FLUSH_ICACHE(addr,size) |
|
#else |
|
#define CACHE_FLUSH(addr,size) 0 |
#endif |
#endif |