version 1.36, 2004/08/27 15:53:50
|
version 1.46, 2005/11/05 23:26:49
|
Line 1
|
Line 1
|
\ miscelleneous words |
\ miscelleneous words |
|
|
\ Copyright (C) 1996,1997,1998,2000,2003 Free Software Foundation, Inc. |
\ Copyright (C) 1996,1997,1998,2000,2003,2004 Free Software Foundation, Inc. |
|
|
\ This file is part of Gforth. |
\ This file is part of Gforth. |
|
|
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 139 AUser CSP
|
Line 140 AUser CSP
|
: compile-literal ( n -- ) |
: compile-literal ( n -- ) |
postpone literal ; |
postpone literal ; |
|
|
|
: compile-compile-literal ( n -- ) |
|
compile-literal postpone compile-literal ; |
|
|
|
: compile-2literal ( n1 n2 -- ) |
|
postpone 2literal ; |
|
|
|
: compile-compile-2literal ( n1 n2 -- ) |
|
compile-2literal postpone compile-2literal ; |
|
|
: [[ ( -- ) |
: [[ ( -- ) |
\G switch from postpone state to compile state |
\G switch from postpone state to compile state |
\ 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 |
|
|
: postponer ( c-addr u -- ) |
[ifdef] compiler1 |
|
: 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 |
2dup [comp'] [[ d= if |
2dup [comp'] [[ d= if |
2drop ['] compiler is parser |
2drop ['] compiler1 is parser1 ['] noop |
else |
else |
postpone, |
['] postpone, |
endif |
endif |
else |
else |
drop |
drop |
2dup snumber? dup if |
2dup 2>r snumber? dup if |
0> IF |
0> IF |
swap postpone literal postpone compile-literal |
['] compile-compile-2literal |
|
ELSE |
|
['] compile-compile-literal |
THEN |
THEN |
postpone Literal postpone compile-literal |
2rdrop |
2drop |
|
ELSE |
ELSE |
drop no.extensions |
drop 2r> no.extensions |
THEN |
THEN |
then ; |
then ; |
|
|
: ]] ( -- ) |
: ]] ( -- ) |
\ switch into postpone state |
\ switch into postpone state |
['] postponer is parser state on ; immediate restrict |
['] postponer1 is parser1 state on ; immediate restrict |
|
|
|
[then] |
|
|
\ f.rdp |
\ f.rdp |
|
|
Line 186 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! |
Line 286 AUser CSP
|
Line 305 AUser CSP
|
\G followed by a list of the items; TOS is the right-most item. |
\G followed by a list of the items; TOS is the right-most item. |
." <" fdepth 0 .r ." > " fdepth 0 max maxdepth-.s @ min dup 0 |
." <" fdepth 0 .r ." > " fdepth 0 max maxdepth-.s @ min dup 0 |
?DO dup i - 1- floats fp@ + f@ 16 5 11 f.rdp space LOOP drop ; |
?DO dup i - 1- floats fp@ + f@ 16 5 11 f.rdp space LOOP drop ; |
|
|
|
\ defer stuff |
|
|
|
[ifundef] defer@ : defer@ >body @ ; [then] |
|
|
|
:noname ' defer@ ; |
|
:noname postpone ['] postpone defer@ ; |
|
interpret/compile: action-of ( interpretation "name" -- xt; compilation "name" -- ; run-time -- xt ) \ gforth |
|
\G @i{Xt} is the XT that is currently assigned to @i{name}. |
|
|
|
' action-of |
|
comp' action-of drop |
|
interpret/compile: what's ( interpretation "name" -- xt; compilation "name" -- ; run-time -- xt ) \ gforth-obsolete |
|
\G Old name of @code{action-of} |
|
|
|
|
|
: typewhite ( addr n -- ) \ gforth |
|
\G Like type, but white space is printed instead of the characters. |
|
\ bounds u+do |
|
0 max bounds ?do |
|
i c@ #tab = if \ check for tab |
|
#tab |
|
else |
|
bl |
|
then |
|
emit |
|
loop ; |
|
|