version 1.42, 2005/06/28 06:45:07
|
version 1.45, 2005/10/02 11:30:32
|
Line 123 AUser CSP
|
Line 123 AUser CSP
|
2dup r@ read-file throw over <> abort" could not read whole file" |
2dup r@ read-file throw over <> abort" could not read whole file" |
r> close-file throw ; |
r> close-file throw ; |
|
|
: slurp-fid { fid -- addr u } \ gforth |
: slurp-fid ( fid -- addr u ) \ gforth |
\G @var{addr u} is the content of the file @var{fid} |
\G @var{addr u} is the content of the file @var{fid} |
|
{ fid } |
0 0 begin ( awhole uwhole ) |
0 0 begin ( awhole uwhole ) |
dup 1024 + dup >r extend-mem ( anew awhole uwhole R: unew ) |
dup 1024 + dup >r extend-mem ( anew awhole uwhole R: unew ) |
rot r@ fid read-file throw ( awhole uwhole uread R: unew ) |
rot r@ fid read-file throw ( awhole uwhole uread R: unew ) |
Line 153 AUser CSP
|
Line 154 AUser CSP
|
\ this is only a marker; it is never really interpreted |
\ this is only a marker; it is never really interpreted |
compile-only-error ; immediate |
compile-only-error ; immediate |
|
|
|
[ifdef] compiler1 |
: postponer1 ( c-addr u -- ... xt ) |
: postponer1 ( c-addr u -- ... xt ) |
2dup find-name dup if ( c-addr u nt ) |
2dup find-name dup if ( c-addr u nt ) |
nip nip name>comp |
nip nip name>comp |
Line 179 AUser CSP
|
Line 181 AUser CSP
|
\ switch into postpone state |
\ switch into postpone state |
['] postponer1 is parser1 state on ; immediate restrict |
['] postponer1 is parser1 state on ; immediate restrict |
|
|
|
[then] |
|
|
\ f.rdp |
\ f.rdp |
|
|
: push-right ( c-addr u1 u2 cfill -- ) |
: push-right ( c-addr u1 u2 cfill -- ) |
Line 196 AUser CSP
|
Line 200 AUser CSP
|
ur nd - 1- dup { beforep } fsign + nexp 0 max >= and if |
ur nd - 1- dup { beforep } fsign + nexp 0 max >= and if |
\ fixed-point notation |
\ fixed-point notation |
c-addr ur beforep nexp - dup { befored } '0 push-right |
c-addr ur beforep nexp - dup { befored } '0 push-right |
|
befored 1+ ur >= if \ <=1 digit left, will be pushed out by '.' |
|
rf fabs f2* 0.1e nd s>d d>f f** f> if \ round last digit |
|
'1 c-addr befored + 1- c! |
|
endif |
|
endif |
c-addr beforep 1- befored min dup { beforez } 0 max bl fill |
c-addr beforep 1- befored min dup { beforez } 0 max bl fill |
fsign if |
fsign if |
'- c-addr beforez 1- 0 max + c! |
'- c-addr beforez 1- 0 max + c! |