version 1.7, 2012/03/27 23:06:42
|
version 1.8, 2012/03/27 23:17:52
|
Line 21
|
Line 21
|
|
|
: addr? ( addr -- flag ) |
: addr? ( addr -- flag ) |
TRY c@ IFERROR 2drop false nothrow ELSE drop true THEN ENDTRY ; |
TRY c@ IFERROR 2drop false nothrow ELSE drop true THEN ENDTRY ; |
|
: .var? ( addr -- flag ) |
|
TRY body> @ dovar: <> throw IFERROR 2drop false nothrow |
|
ELSE true THEN ENDTRY ; |
|
|
: string? ( addr u -- flag ) |
: string? ( addr u -- flag ) |
TRY dup #80 u> throw bounds ?DO I c@ bl < IF -1 throw THEN LOOP |
TRY dup #80 u> throw bounds ?DO I c@ bl < IF -1 throw THEN LOOP |
Line 30
|
Line 33
|
.\" s\" " type '"' emit space ; |
.\" s\" " type '"' emit space ; |
: .addr. ( addr -- ) |
: .addr. ( addr -- ) |
dup >name dup IF ." ' " .name drop ELSE drop hex. THEN ; |
dup >name dup IF ." ' " .name drop ELSE drop hex. THEN ; |
|
: .var. ( addr -- ) |
|
dup body> >name dup IF .name drop ELSE drop hex. THEN ; |
|
|
Variable smart.s-skip |
Variable smart.s-skip |
|
|
: smart.s. ( n -- ) |
: smart.s. ( n -- ) |
smart.s-skip @ smart.s-skip off IF drop EXIT THEN |
smart.s-skip @ smart.s-skip off IF drop EXIT THEN |
over r> i swap >r - |
over r> i swap >r - \ we access the .s loop counter |
dup 1 = IF false ELSE pick 2dup string? THEN IF |
dup 1 = IF false ELSE pick 2dup string? THEN IF |
.string. smart.s-skip on |
.string. smart.s-skip on |
ELSE drop dup addr? IF .addr. |
ELSE drop dup addr? IF dup .var? IF .var. ELSE .addr. THEN |
ELSE . THEN |
ELSE . THEN |
THEN ; |
THEN ; |
|
|