Annotation of gforth/smartdots.fs, revision 1.2
1.2 ! pazsan 1: \ smart .s 09mar2012py
! 2:
! 3: \ Copyright (C) 1995,1998,1999,2001,2003,2006,2007,2011 Free Software Foundation, Inc.
! 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.2 ! pazsan 23: TRY @ IFERROR 2drop false nothrow ELSE drop true THEN ENDTRY ;
1.1 pazsan 24:
25: : string? ( addr u -- flag )
26: TRY 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 -- )
30: '"' emit type '"' emit space ;
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
! 37: over r> i swap >r - pick 2dup string? IF
! 38: .string. smart.s-skip on
! 39: ELSE drop dup addr? IF .addr.
! 40: ELSE . THEN
! 41: THEN ;
! 42:
! 43: ' smart.s. IS .s.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>