--- gforth/kernel/cloop.fs 1999/05/17 14:53:30 1.1 +++ gforth/kernel/cloop.fs 2006/12/31 13:39:18 1.9 @@ -1,6 +1,6 @@ \ Structural Conditionals, loops part 12dec92py -\ Copyright (C) 1995,1996,1997 Free Software Foundation, Inc. +\ Copyright (C) 1995,1996,1997,1999,2001,2003,2006 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -16,35 +16,36 @@ \ 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. +\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. \ 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