| : back? ( addr target -- addr flag ) |
: back? ( addr target -- addr flag ) |
| over u< ; |
over u< ; |
| |
|
| : .word ( addr xt -- addr ) |
: .word ( addr x -- addr ) |
| look 0= IF |
\ print x as a word if possible |
| drop dup 1 cells - @ dup body> look |
dup look 0= IF |
| |
drop dup threaded>name 0= if |
| |
2drop dup 1 cells - @ dup body> look |
| IF |
IF |
| nip dup ." <" name>string rot wordinfo .string ." >" |
nip dup ." <" name>string rot wordinfo .string ." >" |
| ELSE |
ELSE |
| drop ." <" 0 .r ." >" |
drop ." <" 0 .r ." >" |
| THEN |
THEN |
| ELSE |
EXIT |
| dup cell+ @ immediate-mask and |
then |
| |
THEN |
| |
nip dup cell+ @ immediate-mask and |
| IF |
IF |
| bl cemit ." POSTPONE " |
bl cemit ." POSTPONE " |
| THEN |
THEN |
| dup name>string rot wordinfo .string |
dup name>string rot wordinfo .string |
| THEN ; |
; |
| |
|
| : c-call ( addr1 -- addr2 ) |
: c-call ( addr1 -- addr2 ) |
| Display? IF |
Display? IF |
| |
|
| : .name-without ( addr -- addr ) |
: .name-without ( addr -- addr ) |
| \ prints a name without a() e.g. a(+LOOP) or (s") |
\ prints a name without a() e.g. a(+LOOP) or (s") |
| dup 1 cells - @ look IF |
dup 1 cells - @ threaded>name IF |
| name>string over c@ 'a = IF |
name>string over c@ 'a = IF |
| 1 /string |
1 /string |
| THEN |
THEN |