--- gforth/kernel/cloop.fs 2000/09/23 15:06:09 1.2 +++ gforth/kernel/cloop.fs 2007/12/31 18:40:26 1.10 @@ -1,12 +1,12 @@ \ Structural Conditionals, loops part 12dec92py -\ Copyright (C) 1995,1996,1997,1999 Free Software Foundation, Inc. +\ Copyright (C) 1995,1996,1997,1999,2001,2003,2006 Free Software Foundation, Inc. \ This file is part of Gforth. \ Gforth is free software; you can redistribute it and/or \ 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. \ This program is distributed in the hope that it will be useful, @@ -15,36 +15,36 @@ \ GNU General Public License for more details. \ You should have received a copy of the GNU General Public License -\ along with this program; if not, write to the Free Software -\ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +\ along with this program. If not, see http://www.gnu.org/licenses/. \ Structural Conditionals 12dec92py -Variable leavings +\ this works with flash -: (leave) here leavings @ , leavings ! ; -: LEAVE compile branch (leave) ; immediate restrict -: ?LEAVE compile 0= compile ?branch (leave) ; +: (leave) -1 , ; +: LEAVE postpone branch (leave) ; immediate restrict +: ?LEAVE postpone 0= postpone ?branch (leave) ; immediate restrict -: DONE ( addr -- ) leavings @ - BEGIN 2dup u<= WHILE dup @ swap >resolve REPEAT - leavings ! drop ; immediate restrict +: DONE ( addr -- ) here swap ?DO + I @ ['] branch = I @ ['] ?branch = or I @ ['] (?do) = or + I cell+ @ -1 = and IF I cell+ >resolve THEN + cell +LOOP ; immediate restrict \ Structural Conditionals 12dec92py -: DO compile (do) here ; immediate restrict +: DO postpone (do) here ; immediate restrict -: ?DO compile (?do) (leave) here ; +: ?DO postpone (?do) (leave) here ; immediate restrict -: FOR compile (for) here ; immediate restrict +: FOR postpone (for) here ; immediate restrict -: loop] dup