| (THeader (:) ; |
(THeader (:) ; |
| |
|
| : :noname ( -- colon-sys ) |
: :noname ( -- colon-sys ) |
| X cfalign there |
switchrom X cfalign there |
| \ define a nameless ghost |
\ define a nameless ghost |
| here ghostheader dup last-header-ghost ! dup to lastghost |
here ghostheader dup last-header-ghost ! dup to lastghost |
| (:) ; |
(:) ; |
| |
|
| [THEN] |
[THEN] |
| |
|
| |
T has? rom H [IF] |
| |
Builder (Value) |
| |
Build: ( n -- ) ;Build |
| |
by: :dovalue ( target-body-addr -- n ) T @ @ H ;DO |
| |
|
| |
Builder Value |
| |
Build: T here 0 A, H switchram T align here swap ! , H ;Build |
| |
by (Value) |
| |
|
| |
Builder AValue |
| |
Build: T here 0 A, H switchram T align here swap ! A, H ;Build |
| |
by (Value) |
| |
[ELSE] |
| Builder (Value) |
Builder (Value) |
| Build: ( n -- ) ;Build |
Build: ( n -- ) ;Build |
| by: :docon ( target-body-addr -- n ) T @ H ;DO |
by: :docon ( target-body-addr -- n ) T @ H ;DO |
| Builder AValue |
Builder AValue |
| BuildSmart: T A, H ;Build |
BuildSmart: T A, H ;Build |
| by (Value) |
by (Value) |
| |
[THEN] |
| |
|
| Defer texecute |
Defer texecute |
| |
|
| Builder Defer |
Builder Defer |
| |
T has? rom H [IF] |
| |
Build: ( -- ) T here 0 A, H switchram T align here swap ! H [T'] noop T A, H ( switchrom ) ;Build |
| |
by: :dodefer ( ghost -- ) X @ X @ texecute ;DO |
| |
[ELSE] |
| BuildSmart: ( -- ) [T'] noop T A, H ;Build |
BuildSmart: ( -- ) [T'] noop T A, H ;Build |
| by: :dodefer ( ghost -- ) X @ texecute ;DO |
by: :dodefer ( ghost -- ) X @ texecute ;DO |
| |
[THEN] |
| |
|
| Builder interpret/compile: |
Builder interpret/compile: |
| Build: ( inter comp -- ) swap T A, A, H ;Build-immediate |
Build: ( inter comp -- ) swap T A, A, H ;Build-immediate |
| >r then, r> compile ALiteral compile c(abort") then, ;Cond |
>r then, r> compile ALiteral compile c(abort") then, ;Cond |
| [THEN] |
[THEN] |
| |
|
| |
X has? rom [IF] |
| |
Cond: IS T ' >body @ H compile ALiteral compile ! ;Cond |
| |
: IS T >address ' >body @ ! H ; |
| |
Cond: TO T ' >body @ H compile ALiteral compile ! ;Cond |
| |
: TO T ' >body @ ! H ; |
| |
[ELSE] |
| Cond: IS T ' >body H compile ALiteral compile ! ;Cond |
Cond: IS T ' >body H compile ALiteral compile ! ;Cond |
| : IS T >address ' >body ! H ; |
: IS T >address ' >body ! H ; |
| Cond: TO T ' >body H compile ALiteral compile ! ;Cond |
Cond: TO T ' >body H compile ALiteral compile ! ;Cond |
| : TO T ' >body ! H ; |
: TO T ' >body ! H ; |
| |
[THEN] |
| |
|
| Cond: defers T ' >body @ compile, H ;Cond |
Cond: defers T ' >body @ compile, H ;Cond |
| |
|