Index: arch/unix/unix.c =================================================================== RCS file: /srv/cvs/openbios/kernel/arch/unix/unix.c,v retrieving revision 1.22 diff -u -r1.22 unix.c --- arch/unix/unix.c 21 Oct 2003 20:55:33 -0000 1.22 +++ arch/unix/unix.c 30 Oct 2003 13:17:41 -0000 @@ -76,7 +76,7 @@ "sp@", "move", "fill", "(emit)", "(?key)", "(key)", "execute", "here", "here!", "dobranch", "do?branch", "unaligned-w@", "unaligned-w!", "unaligned-l@", "unaligned-l!", "ioc@", "iow@", - "iol@", "ioc!", "iow!", "iol!", "i", "j" + "iol@", "ioc!", "iow!", "iol!", "i", "j", "call" }; /* @@ -758,6 +758,11 @@ #define USAGE "usage: %s [options] [dictionary file|source file]\n\n" +void banner(void) +{ + printf(BANNER); +} + int main(int argc, char *argv[]) { struct sigaction sa; @@ -850,6 +855,7 @@ /* set terminal to do non blocking reads */ init_terminal(); + printf("BANNER: %p\n",banner); read_dictionary(argv[optind]); PC = findword("initialize"); if (PC != (ucell) (-1)) { Index: kernel/internal.c =================================================================== RCS file: /srv/cvs/openbios/kernel/kernel/internal.c,v retrieving revision 1.2 diff -u -r1.2 internal.c --- kernel/internal.c 21 Oct 2003 20:55:33 -0000 1.2 +++ kernel/internal.c 30 Oct 2003 13:17:41 -0000 @@ -152,6 +152,19 @@ PC = (ucell) & trampoline; } +/* + * call ( ... function-ptr -- ??? ) + */ +static void call(void) +{ + void (*funcptr) (void); + funcptr=(void *)POP(); +#ifdef DEBUG_INTERPRETER + printk("call: %x", funcptr); +#endif + funcptr(); +} + static void dodoes(void) { /* DODOES */ ucell data = *(ucell *) PC + (2 * sizeof(ucell)); Index: kernel/primitives.c =================================================================== RCS file: /srv/cvs/openbios/kernel/kernel/primitives.c,v retrieving revision 1.10 diff -u -r1.10 primitives.c --- kernel/primitives.c 12 Oct 2003 14:00:00 -0000 1.10 +++ kernel/primitives.c 30 Oct 2003 13:17:41 -0000 @@ -134,5 +134,6 @@ iowstore, /* iow! */ iolstore, /* iol! */ loop_i, /* i */ - loop_j /* j */ + loop_j, /* j */ + call /* call */ };