Diff for /gforth/kernel/xchars.fs between versions 1.10 and 1.17

version 1.10, 2007/10/17 15:50:01 version 1.17, 2011/12/31 15:29:26
Line 1 Line 1
 \ extended characters (either 8bit or UTF-8, possibly other encodings)  \ extended characters (either 8bit or UTF-8, possibly other encodings)
 \ and their fixed-size variant  \ and their fixed-size variant
   
 \ Copyright (C) 2005,2006 Free Software Foundation, Inc.  \ Copyright (C) 2005,2006,2007,2008,2011 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
 \ Gforth is free software; you can redistribute it and/or  \ Gforth is free software; you can redistribute it and/or
 \ modify it under the terms of the GNU General Public License  \ modify it under the terms of the GNU General Public License
 \ as published by the Free Software Foundation; either version 2  \ as published by the Free Software Foundation, either version 3
 \ of the License, or (at your option) any later version.  \ of the License, or (at your option) any later version.
   
 \ This program is distributed in the hope that it will be useful,  \ This program is distributed in the hope that it will be useful,
Line 16 Line 16
 \ GNU General Public License for more details.  \ GNU General Public License for more details.
   
 \ You should have received a copy of the GNU General Public License  \ You should have received a copy of the GNU General Public License
 \ along with this program; if not, write to the Free Software  \ along with this program. If not, see http://www.gnu.org/licenses/.
 \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.  
   
 \ We can do some of these (and possibly faster) by just using the  \ We can do some of these (and possibly faster) by just using the
 \ utf-8 words with an appropriate setting of max-single-byte, but I  \ utf-8 words with an appropriate setting of max-single-byte, but I
Line 48  Defer x\string- ( xc-addr1 u1 -- xc-addr Line 47  Defer x\string- ( xc-addr1 u1 -- xc-addr
 \G last xchar in the buffer.  \G last xchar in the buffer.
 Defer xc@ ( xc-addr -- xc ) \ xchar-ext xc-fetch  Defer xc@ ( xc-addr -- xc ) \ xchar-ext xc-fetch
 \G Fetchs the xchar @var{xc} at @var{xc-addr1}.  \G Fetchs the xchar @var{xc} at @var{xc-addr1}.
   Defer xc!+ ( xc xc-addr1 -- xc-addr2 ) \ xchar-ext      xc-store
   \G Stores the xchar @var{xc} at @var{xc-addr1}. @var{xc-addr2} is the next
   \G unused address in the buffer.
 Defer xc!+? ( xc xc-addr1 u1 -- xc-addr2 u2 f ) \ xchar-ext     xc-store-plus-query  Defer xc!+? ( xc xc-addr1 u1 -- xc-addr2 u2 f ) \ xchar-ext     xc-store-plus-query
 \G Stores the xchar @var{xc} into the buffer starting at address  \G Stores the xchar @var{xc} into the buffer starting at address
 \G @var{xc-addr1}, @var{u1} pchars large. @var{xc-addr2} points to the  \G @var{xc-addr1}, @var{u1} pchars large. @var{xc-addr2} points to the
Line 83  Defer -trailing-garbage ( xc-addr u1 -- Line 85  Defer -trailing-garbage ( xc-addr u1 --
     over >r +x/string      over >r +x/string
     r> xc@ ;      r> xc@ ;
   
 Create xholdbuf 8 allot  
 : xhold ( xc -- )  : xhold ( xc -- )
     \G Put xc into the pictured numeric output      \G Put xc into the pictured numeric output
     xholdbuf 8 xc!+? 2drop      dup xc-size negate chars holdptr +!
     BEGIN  1- dup  xholdbuf u>=  WHILE  dup c@ hold  REPEAT  drop ;      holdptr @ dup holdbuf u< -&17 and throw
       8 xc!+? 2drop drop ;
   
   : xc, ( xchar -- ) here unused xc!+? 2drop dp ! ;
   
 \ fixed-size versions of these words  \ fixed-size versions of these words
   

Removed from v.1.10  
changed lines
  Added in v.1.17


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