--- gforth/engine/engine.c 2007/03/19 12:54:41 1.100 +++ gforth/engine/engine.c 2007/07/07 21:46:05 1.103 @@ -24,7 +24,6 @@ #else #define USE_TOS #endif -#define USE_NO_FTOS #include "config.h" #include "forth.h" @@ -236,7 +235,7 @@ extern int gforth_memcmp(const char * s1 #ifdef GFORTH_DEBUGGING #if DEBUG -#define NAME(string) { saved_ip=ip; asmcomment(string); fprintf(stderr,"%08lx depth=%3ld: "string"\n",(Cell)ip,sp0+3-sp);} +#define NAME(string) { saved_ip=ip; asmcomment(string); fprintf(stderr,"%08lx depth=%3ld tos=%016lx: "string"\n",(Cell)ip,sp0+3-sp,sp[0]);} #else /* !DEBUG */ #define NAME(string) { saved_ip=ip; asm(""); } /* the asm here is to avoid reordering of following stuff above the @@ -265,6 +264,15 @@ extern int gforth_memcmp(const char * s1 } #endif +#ifdef STANDALONE +jmp_buf throw_jmp_buf; + +void throw(int code) +{ + longjmp(throw_jmp_buf,code); /* !! or use siglongjmp ? */ +} +#endif + #if defined(HAS_FFCALL) || defined(HAS_LIBFFI) #define SAVE_REGS IF_fpTOS(fp[0]=fpTOS); gforth_SP=sp; gforth_FP=fp; gforth_RP=rp; gforth_LP=lp; #define REST_REGS sp=gforth_SP; fp=gforth_FP; rp=gforth_RP; lp=gforth_LP; IF_fpTOS(fpTOS=fp[0]);