| |
|
| \c #include <avcall.h> |
\c #include <avcall.h> |
| \c #include <callback.h> |
\c #include <callback.h> |
| \c extern Cell *gforth_RP; |
|
| \c extern unsigned char *gforth_LP; |
|
| \c static av_alist alist; |
\c static av_alist alist; |
| \c static va_alist gforth_clist; |
\c static va_alist gforth_clist; |
| |
\c #ifndef HAS_BACKLINK |
| |
\c static void **saved_gforth_pointers; |
| |
\c #endif |
| \c static float frv; |
\c static float frv; |
| \c static int irv; |
\c static int irv; |
| \c static double drv; |
\c static double drv; |
| \c static void * prv; |
\c static void * prv; |
| \c typedef void *Label; |
\c typedef void *Label; |
| \c typedef Label *Xt; |
\c typedef Label *Xt; |
| \c Label *gforth_engine(Xt *ip, Cell *sp, Cell *rp0, Float *fp, char *lp); |
|
| \c |
\c |
| \c void gforth_callback_ffcall(Xt* fcall, void * alist) |
\c void gforth_callback_ffcall(Xt* fcall, void * alist) |
| \c { |
\c { |
| |
\c #ifndef HAS_BACKLINK |
| |
\c void **gforth_pointers = saved_gforth_pointers; |
| |
\c #endif |
| |
\c { |
| \c /* save global valiables */ |
\c /* save global valiables */ |
| \c Cell *rp = gforth_RP; |
\c Cell *rp = gforth_RP; |
| \c Cell *sp = gforth_SP; |
\c Cell *sp = gforth_SP; |
| \c |
\c |
| \c gforth_clist = (va_alist)alist; |
\c gforth_clist = (va_alist)alist; |
| \c |
\c |
| \c gforth_engine(fcall, sp, rp, fp, lp); |
\c gforth_engine(fcall, sp, rp, fp, lp, gforth_UP); |
| \c |
\c |
| \c /* restore global variables */ |
\c /* restore global variables */ |
| \c gforth_RP = rp; |
\c gforth_RP = rp; |
| \c gforth_LP = lp; |
\c gforth_LP = lp; |
| \c gforth_clist = clist; |
\c gforth_clist = clist; |
| \c } |
\c } |
| |
\c } |
| |
|
| \c #define av_start_void1(c_addr) av_start_void(alist, c_addr) |
\c #define av_start_void1(c_addr) av_start_void(alist, c_addr) |
| c-function av-start-void av_start_void1 a -- void |
c-function av-start-void av_start_void1 a -- void |