--- gforth/prim 1999/05/06 21:33:32 1.29 +++ gforth/prim 1999/05/15 20:00:21 1.32 @@ -129,6 +129,7 @@ EXEC(*(Xt *)a_addr); : @ execute ; +\fhas? skipbranchprims 0= [IF] \+glocals branch-lp+!# -- gforth branch_lp_plus_store_number @@ -208,6 +209,8 @@ else INC_IP(1); \+ +\f[THEN] +\fhas? skiploopprims 0= [IF] condbranch((next),-- cmFORTH paren_next, if ((*rp)--) { @@ -437,6 +440,8 @@ n = rp[4]; r> r> r> r> r> r> dup itmp ! >r >r >r >r >r >r itmp @ ; [IFUNDEF] itmp variable itmp [THEN] +\f[THEN] + \ digit is high-level: 0/0% move c_from c_to ucount -- core @@ -713,6 +718,7 @@ ud = (UDCell)u1 * (UDCell)u2; and >r >r 2dup d+ swap r> + swap r> ; um/mod ud u1 -- u2 u3 core u_m_slash_mod +""ud=u3*u1+u2, u1>u2>=0"" #ifdef BUGGY_LONG_LONG UDCell r = umdiv(ud,u1); u2=r.hi; @@ -928,6 +934,13 @@ dcomparisons(du, ud1 ud2, d_u_, ud1, ud2 \+ within u1 u2 u3 -- f core-ext +""u2=r - r> u< ; @@ -1636,7 +1649,7 @@ wior=FILEIO(ferror((FILE *)wfileid)); */ if ((flag=FLAG(!feof((FILE *)wfileid) && fgets(c_addr,u1+1,(FILE *)wfileid) != NULL))) { - wior=FILEIO(ferror((FILE *)wfileid)); /* !! ior? */ + wior=FILEIO(ferror((FILE *)wfileid)!=0); /* !! ior? */ if (wior) clearerr((FILE *)wfileid); u2 = strlen(c_addr);