version 1.85, 2006/03/05 14:29:05
|
version 1.86, 2006/03/05 20:57:41
|
Line 577 doer? :dodefer [IF]
|
Line 577 doer? :dodefer [IF]
|
\G set with @code{defer!} or @code{is} (and they have to, before first |
\G set with @code{defer!} or @code{is} (and they have to, before first |
\G executing @i{name}. |
\G executing @i{name}. |
Header Reveal dodefer: cfa, |
Header Reveal dodefer: cfa, |
['] defer-default A, ; |
[ has? rom [IF] ] here >r cell allot |
|
dpp @ ram here r> flash! ['] defer-default A, dpp ! |
|
[ [ELSE] ] ['] defer-default A, [ [THEN] ] ; |
|
|
[ELSE] |
[ELSE] |
|
|
has? rom [IF] |
has? rom [IF] |
: Defer ( "name" -- ) \ gforth |
: Defer ( "name" -- ) \ gforth |
Create ['] defer-default A, |
Create here >r cell allot |
|
dpp @ ram here r> flash! ['] defer-default A, dpp ! |
DOES> @ @ execute ; |
DOES> @ @ execute ; |
[ELSE] |
[ELSE] |
: Defer ( "name" -- ) \ gforth |
: Defer ( "name" -- ) \ gforth |
Line 595 doer? :dodefer [IF]
|
Line 598 doer? :dodefer [IF]
|
: defer@ ( xt-deferred -- xt ) \ gforth defer-fetch |
: defer@ ( xt-deferred -- xt ) \ gforth defer-fetch |
\G @i{xt} represents the word currently associated with the deferred |
\G @i{xt} represents the word currently associated with the deferred |
\G word @i{xt-deferred}. |
\G word @i{xt-deferred}. |
>body @ ; |
>body @ [ has? rom [IF] ] @ [ [THEN] ] ; |
|
|
: Defers ( compilation "name" -- ; run-time ... -- ... ) \ gforth |
: Defers ( compilation "name" -- ; run-time ... -- ... ) \ gforth |
\G Compiles the present contents of the deferred word @i{name} |
\G Compiles the present contents of the deferred word @i{name} |
Line 617 interpret/compile: DOES> ( compilation
|
Line 620 interpret/compile: DOES> ( compilation
|
|
|
: defer! ( xt xt-deferred -- ) \ gforth defer-store |
: defer! ( xt xt-deferred -- ) \ gforth defer-store |
\G Changes the @code{defer}red word @var{xt-deferred} to execute @var{xt}. |
\G Changes the @code{defer}red word @var{xt-deferred} to execute @var{xt}. |
>body ! ; |
>body [ has? rom [IF] ] @ [ [THEN] ] ! ; |
|
|
: <IS> ( "name" xt -- ) \ gforth |
: <IS> ( "name" xt -- ) \ gforth |
\g Changes the @code{defer}red word @var{name} to execute @var{xt}. |
\g Changes the @code{defer}red word @var{name} to execute @var{xt}. |