--- gforth/prim 1999/05/16 17:13:22 1.33 +++ gforth/prim 1999/08/07 21:40:35 1.37 @@ -488,7 +488,11 @@ the first string is smaller, @i{n} is -1 is 1. Currently this is based on the machine's character comparison. In the future, this may change to consider the current locale and its collation order."" +#ifdef MEMCMP_AS_SUBROUTINE +n = gforth_memcmp(c_addr1, c_addr2, u10) THEN ; -text c_addr1 u c_addr2 -- n new dash_text +#ifdef MEMCMP_AS_SUBROUTINE +n = gforth_memcmp(c_addr1, c_addr2, u); +#else n = memcmp(c_addr1, c_addr2, u); +#endif if (n<0) n = -1; else if (n>0) @@ -1266,7 +1274,11 @@ while(a_addr != NULL) f83name1=(struct F83Name *)(a_addr[1]); a_addr=(Cell *)(a_addr[0]); if ((UCell)F83NAME_COUNT(f83name1)==u && +#ifdef MEMCMP_AS_SUBROUTINE + gforth_memcmp(c_addr, f83name1->name, u)== 0 /* or inline? */) +#else memcmp(c_addr, f83name1->name, u)== 0 /* or inline? */) +#endif { f83name2=f83name1; break; @@ -1353,7 +1365,8 @@ a_addr = PFA(xt); : 2 cells + ; -\+standardthreading +\ threading stuff is currently only interesting if we have a compiler +\fhas? standardthreading has? compiler and [IF] >code-address xt -- c_addr gforth to_code_address ""@i{c-addr} is the code address of the word @i{xt}."" @@ -1415,7 +1428,7 @@ n=1; : 1 ; -\+ +\f[THEN] key-file wfileid -- n gforth paren_key_file #ifdef HAS_FILE @@ -1681,7 +1694,7 @@ wior = FILEIO(putc(c, (FILE *)wfileid)== if (wior) clearerr((FILE *)wfileid); #else -putc(c, stdout); +PUTC(c); #endif \+file @@ -2178,3 +2191,12 @@ UP=up=(char *)a_addr; : up ! ; Variable UP + +wcall u -- gforth +IF_FTOS(fp[0]=FTOS); +FP=fp; +sp=(SYSCALL(Cell(*)(Cell *, void *))u)(sp, &FP); +fp=FP; +IF_TOS(TOS=sp[0];) +IF_FTOS(FTOS=fp[0]); +