Annotation of gforth/smartdots.fs, revision 1.6

1.2       pazsan      1: \ smart .s                                             09mar2012py
                      2: 
1.4       pazsan      3: \ Copyright (C) 2012 Free Software Foundation, Inc.
1.2       pazsan      4: 
                      5: \ This file is part of Gforth.
                      6: 
                      7: \ Gforth is free software; you can redistribute it and/or
                      8: \ modify it under the terms of the GNU General Public License
                      9: \ as published by the Free Software Foundation, either version 3
                     10: \ of the License, or (at your option) any later version.
                     11: 
                     12: \ This program is distributed in the hope that it will be useful,
                     13: \ but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14: \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     15: \ GNU General Public License for more details.
                     16: 
                     17: \ You should have received a copy of the GNU General Public License
                     18: \ along with this program. If not, see http://www.gnu.org/licenses/.
                     19: 
                     20: \ idea: Gerald Wodni
1.1       pazsan     21: 
                     22: : addr? ( addr -- flag )
1.6     ! pazsan     23:     TRY  c@  IFERROR  2drop  false nothrow  ELSE  drop  true  THEN   ENDTRY ;
1.1       pazsan     24: 
                     25: : string? ( addr u -- flag )
1.6     ! pazsan     26:     TRY  dup #80 u> throw  bounds ?DO  I c@ bl < IF  -1 throw  THEN  LOOP
1.2       pazsan     27:        IFERROR  2drop drop false nothrow ELSE  true  THEN  ENDTRY ;
1.1       pazsan     28: 
                     29: : .string. ( addr u -- )
1.3       pazsan     30:     .\" s\" " type '"' emit space ;
1.1       pazsan     31: : .addr. ( addr -- )  hex. ;
                     32: 
1.2       pazsan     33: Variable smart.s-skip
                     34: 
                     35: : smart.s. ( n -- )
                     36:     smart.s-skip @  smart.s-skip off IF  drop  EXIT  THEN
1.5       pazsan     37:     over r> i swap >r -
                     38:     dup 1 = IF  false  ELSE  pick  2dup string?  THEN  IF
1.2       pazsan     39:        .string. smart.s-skip on
                     40:     ELSE  drop dup addr? IF  .addr.
                     41:        ELSE  .  THEN
                     42:     THEN ;
                     43: 
1.6     ! pazsan     44: ' smart.s. IS .s.

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