| code-address! |
code-address! |
| then ; |
then ; |
| |
|
| :noname |
: (int-to) ( xt -- ) dup >definer |
| ' dup >definer [ ' locals-wordlist ] literal >definer = |
case |
| if |
[ ' locals-wordlist ] literal >definer \ value |
| >body ! |
of >body ! endof |
| else |
[ ' parse-name ] literal >definer \ defer |
| |
of defer! endof |
| -&32 throw |
-&32 throw |
| endif ; |
endcase ; |
| :noname |
|
| comp' drop dup >definer |
: (comp-to) ( xt -- ) dup >definer |
| case |
case |
| [ ' locals-wordlist ] literal >definer \ value |
[ ' locals-wordlist ] literal >definer \ value |
| OF >body POSTPONE Aliteral POSTPONE ! ENDOF |
OF >body POSTPONE Aliteral POSTPONE ! ENDOF |
| |
[ ' parse-name ] literal >definer \ defer |
| |
OF POSTPONE Aliteral POSTPONE defer! ENDOF |
| \ !! dependent on c: etc. being does>-defining words |
\ !! dependent on c: etc. being does>-defining words |
| \ this works, because >definer uses >does-code in this case, |
\ this works, because >definer uses >does-code in this case, |
| \ which produces a relocatable address |
\ which produces a relocatable address |
| OF POSTPONE laddr# >body @ lp-offset, POSTPONE f! ENDOF |
OF POSTPONE laddr# >body @ lp-offset, POSTPONE f! ENDOF |
| -&32 throw |
-&32 throw |
| endcase ; |
endcase ; |
| |
|
| |
:noname |
| |
' (int-to) ; |
| |
:noname |
| |
comp' drop (comp-to) ; |
| interpret/compile: TO ( c|w|d|r "name" -- ) \ core-ext,local |
interpret/compile: TO ( c|w|d|r "name" -- ) \ core-ext,local |
| |
|
| : locals| ( ... "name ..." -- ) \ local-ext locals-bar |
: locals| ( ... "name ..." -- ) \ local-ext locals-bar |