version 1.271, 2012/04/12 16:11:40
|
version 1.278, 2012/09/18 15:21:08
|
Line 1109 if (u1<u2)
|
Line 1109 if (u1<u2)
|
else |
else |
u = u1; |
u = u1; |
: |
: |
2dup u< IF swap THEN drop ; |
2dup u> select ; |
|
|
umin ( u1 u2 -- u ) core |
umin ( u1 u2 -- u ) core |
if (u1<u2) |
if (u1<u2) |
Line 1117 if (u1<u2)
|
Line 1117 if (u1<u2)
|
else |
else |
u = u2; |
u = u2; |
: |
: |
2dup u> IF swap THEN drop ; |
2dup u< select ; |
|
|
|
mux ( u1 u2 u3 -- u ) gforth |
|
""multiplex @i{u1} for 1 bits in @i{u3}, @i{u2} for 0 bits in @i{u3} into @i{u}"" |
|
u = (u3 & u1) | (~u3 & u2); |
|
: |
|
tuck and >r invert and r> ; |
|
|
|
select ( u1 u2 f -- u ) gforth |
|
""select @i{u1} if @i{f} is true, @i{u2} if false."" |
|
u = f ? u1 : u2; |
|
: |
|
IF swap THEN nip ; |
|
|
\g compare |
\g compare |
|
|
Line 1516 c_addr2 = c_addr1+1;
|
Line 1528 c_addr2 = c_addr1+1;
|
: |
: |
dup 1+ swap c@ ; |
dup 1+ swap c@ ; |
|
|
|
cell/ ( n1 -- n2 ) gforth cell_divide |
|
""@i{n2} is the number of cells that fit into @i{n1}"" |
|
n2 = n1 / sizeof(Cell); |
|
: |
|
[ cell |
|
2/ dup [IF] ] 2/ [ [THEN] |
|
2/ dup [IF] ] 2/ [ [THEN] |
|
2/ dup [IF] ] 2/ [ [THEN] |
|
2/ dup [IF] ] 2/ [ [THEN] |
|
drop ] ; |
|
|
\g compiler |
\g compiler |
|
|
\+f83headerstring |
\+f83headerstring |
Line 1700 wfileid = (Cell)stderr;
|
Line 1723 wfileid = (Cell)stderr;
|
|
|
\+os |
\+os |
|
|
form ( -- urows ucols ) gforth |
(form) ( -- urows ucols ) gforth paren_form |
""The number of lines and columns in the terminal. These numbers may |
""The number of lines and columns in the terminal. These numbers may |
change with the window size. Note that it depends on the OS whether |
change with the window size. Note that it depends on the OS whether |
this reflects the actual size and changes with the window size |
this reflects the actual size and changes with the window size |
Line 1735 FLUSH_ICACHE((caddr_t)c_addr,u);
|
Line 1758 FLUSH_ICACHE((caddr_t)c_addr,u);
|
|
|
(bye) ( n -- ) gforth paren_bye |
(bye) ( n -- ) gforth paren_bye |
SUPER_END; |
SUPER_END; |
|
gforth_FP=fp; |
|
gforth_SP=sp; |
|
gforth_RP=rp; |
|
gforth_LP=lp; |
return (Label *)n; |
return (Label *)n; |
|
|
(system) ( c_addr u -- wretval wior ) gforth paren_system |
(system) ( c_addr u -- wretval wior ) gforth paren_system |
Line 2262 representation. If the string represents
|
Line 2289 representation. If the string represents
|
true. Otherwise, @i{flag} is false. A string of blanks is a special |
true. Otherwise, @i{flag} is false. A string of blanks is a special |
case and represents the floating-point number 0."" |
case and represents the floating-point number 0."" |
Float r; |
Float r; |
flag = to_float(c_addr, u, &r); |
flag = to_float(c_addr, u, &r, '.'); |
if (flag) { |
if (flag) { |
fp--; |
fp--; |
fp[0]=r; |
fp[0]=r; |
Line 2457 faxpy(ra, f_x, nstridex, f_y, nstridey,
|
Line 2484 faxpy(ra, f_x, nstridex, f_y, nstridey,
|
fdup dup f@ f* over + 2swap dup f@ f+ dup f! over + 2swap |
fdup dup f@ f* over + 2swap dup f@ f+ dup f! over + 2swap |
LOOP 2drop 2drop fdrop ; |
LOOP 2drop 2drop fdrop ; |
|
|
|
>float1 ( c_addr u c -- f:... flag ) gforth to_float1 |
|
""Actual stack effect: ( c_addr u c -- r t | f ). Attempt to convert the |
|
character string @i{c-addr u} to internal floating-point |
|
representation. If the string represents a valid floating-point number |
|
@i{r} is placed on the floating-point stack and @i{flag} is |
|
true. Otherwise, @i{flag} is false. A string of blanks is a special |
|
case and represents the floating-point number 0."" |
|
Float r; |
|
flag = to_float(c_addr, u, &r, c); |
|
if (flag) { |
|
fp--; |
|
fp[0]=r; |
|
} |
|
|
|
float/ ( n1 -- n2 ) gforth float_divide |
|
n2 = n1 / sizeof(Float); |
|
|
|
dfloat/ ( n1 -- n2 ) gforth sfloat_divide |
|
n2 = n1 / sizeof(DFloat); |
|
|
|
sfloat/ ( n1 -- n2 ) gforth dfloat_divide |
|
n2 = n1 / sizeof(SFloat); |
|
|
\+ |
\+ |
|
|
\ The following words access machine/OS/installation-dependent |
\ The following words access machine/OS/installation-dependent |
Line 2779 ip=IP;
|
Line 2829 ip=IP;
|
SUPER_END; |
SUPER_END; |
VM_JUMP(EXEC1((Xt)a_addr)); |
VM_JUMP(EXEC1((Xt)a_addr)); |
|
|
|
\+objects |
|
\g object_pointer |
|
|
|
>o ( c_addr -- r:c_old ) new to_o |
|
c_old = op; |
|
op = c_addr; |
|
|
|
o> ( r:c_addr -- ) new o_restore |
|
op = c_addr; |
|
|
|
o#+ ( #w -- c_addr ) new o_lit_plus |
|
c_addr = op + w; |
|
|
|
\+ |
\g static_super |
\g static_super |
|
|
ifdef(`STACK_CACHE_FILE', |
ifdef(`STACK_CACHE_FILE', |