--- gforth/prim 1999/02/03 00:10:21 1.22 +++ gforth/prim 1999/02/16 06:32:30 1.24 @@ -141,8 +141,7 @@ goto branch; branch -- gforth branch: -ip = (Xt *)(((Cell)IP)+(Cell)NEXT_INST); -NEXT_P0; +SET_IP((Xt *)(((Cell)IP)+(Cell)NEXT_INST)); : r> dup @ + >r ; @@ -150,8 +149,7 @@ NEXT_P0; \ this is non-syntactical: code must open a brace that is closed by the macro define(condbranch, $1 $2 -$3 ip = (Xt *)(((Cell)IP)+(Cell)NEXT_INST); - NEXT_P0; +$3 SET_IP((Xt *)(((Cell)IP)+(Cell)NEXT_INST)); NEXT; } else @@ -189,8 +187,7 @@ if (f==0) { if (f==0) { sp++; IF_TOS(TOS = sp[0]); - ip = (Xt *)(((Cell)IP)+(Cell)NEXT_INST); - NEXT_P0; + SET_IP((Xt *)(((Cell)IP)+(Cell)NEXT_INST)); NEXT; } else @@ -204,8 +201,7 @@ few cycles in that case, but is easy to invocation */ if (f!=0) { sp--; - ip = (Xt *)(((Cell)IP)+(Cell)NEXT_INST); - NEXT_P0; + SET_IP((Xt *)(((Cell)IP)+(Cell)NEXT_INST)); NEXT; } else @@ -516,6 +512,8 @@ else if (n>0) dup 0< IF drop -1 ELSE 0> 1 and THEN ; toupper c1 -- c2 gforth +""For a character a-z, convert to the equivalent upper-case +character. All other characters are unchanged."" c2 = toupper(c1); : dup [char] a - [ char z char a - 1 + ] Literal u< bl and - ; @@ -955,8 +953,7 @@ fp = f_addr; ;s -- gforth semis ""The primitive compiled by @code{EXIT}."" -ip = (Xt *)(*rp++); -NEXT_P0; +SET_IP((Xt *)(*rp++)); >r w -- core to_r *--rp = w; @@ -1447,6 +1444,10 @@ if (old_tp) #endif getenv c_addr1 u1 -- c_addr2 u2 gforth +""The string c-addr1 u1 specifies an environment variable. The string c-addr2 u2 +is the host operating system's expansion of that environment variable. If the +environment variable does not exist, c-addr2 u2 specifies a string 0 characters +in length."" c_addr2 = getenv(cstr(c_addr1,u1,1)); u2 = (c_addr2 == NULL ? 0 : strlen(c_addr2));