Diff for /gforth/smartdots.fs between versions 1.6 and 1.8

version 1.6, 2012/03/27 23:02:01 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 28 Line 31
   
 : .string. ( addr u -- )  : .string. ( addr u -- )
     .\" s\" " type '"' emit space ;      .\" s\" " type '"' emit space ;
 : .addr. ( addr -- )  hex. ;  : .addr. ( addr -- )
       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 ;
   

Removed from v.1.6  
changed lines
  Added in v.1.8


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>