| : Scan? ( -- flag ) C-Pass @ 0= ; |
: Scan? ( -- flag ) C-Pass @ 0= ; |
| : Display? ( -- flag ) C-Pass @ 1 = ; |
: Display? ( -- flag ) C-Pass @ 1 = ; |
| : Debug? ( -- flag ) C-Pass @ 2 = ; |
: Debug? ( -- flag ) C-Pass @ 2 = ; |
| |
: ?.string ( c-addr u n -- ) Display? if .string else 2drop drop then ; |
| |
|
| : back? ( addr target -- addr flag ) |
: back? ( addr target -- addr flag ) |
| over u< ; |
over u< ; |
| [THEN] |
[THEN] |
| |
|
| : c-lit ( addr1 -- addr2 ) |
: c-lit ( addr1 -- addr2 ) |
| Display? IF |
|
| dup @ dup body> dup cfaligned over = swap in-dictionary? and if |
dup @ dup body> dup cfaligned over = swap in-dictionary? and if |
| ( addr1 addr1@ ) |
( addr1 addr1@ ) |
| dup body> @ dovar: = if |
dup body> @ dovar: = if |
| over 3 cells + @ decompile-prim ['] ;S xt>threaded = |
over 3 cells + @ decompile-prim ['] ;S xt>threaded = |
| r> and if |
r> and if |
| over 2 cells + @ ['] !does >body = if drop |
over 2 cells + @ ['] !does >body = if drop |
| S" DOES> " Com# .string 4 cells + EXIT endif |
S" DOES> " Com# ?.string 4 cells + EXIT endif |
| |
endif |
| [IFDEF] !;abi-code |
[IFDEF] !;abi-code |
| over 2 cells + @ ['] !;abi-code >body = if drop |
over 2 cells + @ ['] !;abi-code >body = if drop |
| S" ;abi-code " Com# .string 4 cells + EXIT endif |
S" ;abi-code " Com# ?.string 4 cells + |
| [THEN] |
c-stop on |
| |
EXIT |
| endif |
endif |
| |
[THEN] |
| endif |
endif |
| |
Display? if |
| \ !! test for cfa here, and print "['] ..." |
\ !! test for cfa here, and print "['] ..." |
| dup abs 0 <# #S rot sign #> 0 .string bl cemit |
dup abs 0 <# #S rot sign #> 0 .string bl cemit |
| endif |
else drop then |
| cell+ ; |
cell+ ; |
| |
|
| : c-lit+ ( addr1 -- addr2 ) |
: c-lit+ ( addr1 -- addr2 ) |