| \G @code{system} command. |
\G @code{system} command. |
| |
|
| : system ( c-addr u -- ) \ gforth |
: system ( c-addr u -- ) \ gforth |
| \G Pass the string specified by @var{c-addr u} to the host operating system |
\G Pass the string specified by @var{c-addr u} to the host operating |
| \G for execution in a sub-shell. |
\G system for execution in a sub-shell. The value of the environment |
| |
\G variable @code{GFORTHSYSTEMPREFIX} (or its default value) is |
| |
\G prepended to the string (mainly to support using @code{command.com} |
| |
\G as shell in Windows instead of whatever shell Cygwin uses by |
| |
\G default; @pxref{Environment variables}). |
| (system) throw TO $? ; |
(system) throw TO $? ; |
| |
|
| : sh ( "..." -- ) \ gforth |
: sh ( "..." -- ) \ gforth |
| ur compile-fliterals uw compile-literals |
ur compile-fliterals uw compile-literals |
| target compile, POSTPONE exit reveal ; |
target compile, POSTPONE exit reveal ; |
| |
|
| : const-does> ( run-time: w*uw r*ur uw ur "name" -- ) |
: const-does> ( run-time: w*uw r*ur uw ur "name" -- ) \ gforth |
| \G Defines @var{name} and returns.@sp 0 |
\G Defines @var{name} and returns. |
| |
\G |
| \G @var{name} execution: pushes @var{w*uw r*ur}, then performs the |
\G @var{name} execution: pushes @var{w*uw r*ur}, then performs the |
| \G code following the @code{const-does>}. |
\G code following the @code{const-does>}. |
| here >r 0 POSTPONE literal |
here >r 0 POSTPONE literal |
| POSTPONE (const-does>) |
POSTPONE (const-does>) |
| POSTPONE ; |
POSTPONE ; |
| noname : POSTPONE rdrop |
noname : POSTPONE rdrop |
| lastxt r> cell+ ! \ patch the literal |
latestxt r> cell+ ! \ patch the literal |
| ; immediate |
; immediate |
| |
|
| \ !! rewrite slurp-file using slurp-fid |
\ !! rewrite slurp-file using slurp-fid |
| : slurp-file ( c-addr1 u1 -- c-addr2 u2 ) |
: slurp-file ( c-addr1 u1 -- c-addr2 u2 ) \ gforth |
| \G @var{c-addr1 u1} is the filename, @var{c-addr2 u2} is the file's contents |
\G @var{c-addr1 u1} is the filename, @var{c-addr2 u2} is the file's contents |
| r/o bin open-file throw >r |
r/o bin open-file throw >r |
| r@ file-size throw abort" file too large" |
r@ file-size throw abort" file too large" |
| 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 } |
: 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} |
| 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 ) |
| 10e f* |
10e f* |
| loop ; |
loop ; |
| [then] |
[then] |
| |
|
| |
: f.s ( -- ) \ gforth f-dot-s |
| |
\G Display the number of items on the floating-point stack, |
| |
\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 |
| |
?DO dup i - 1- floats fp@ + f@ 16 5 11 f.rdp space LOOP drop ; |
| |
|
| |
\ defer stuff |
| |
|
| |
: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} |