@@ 225,11 225,13 @@ alias execute | immediate
: unyield BRSZ RSP) [+n], ; immediate
: break 16 rs+, [compile] ahead to _breaklbl ; immediate
-:iterator for ( n -- )
- ?dup if to i begin yield to1- i i not until then unyield ;
+:iterator for ( n -- ) [
+ 1 W+n, RSP) 4 +) !, drop, ahead
+ begin yield swap then -1 RSP) 4 +) [+n], NZ) branchC, drop
+ unyield exit,
:iterator for2 ( lo hi -- )
- 2dup < if to j to i begin yield to1+ i i j >= until else 2drop then unyield ;
+ to j to i i j < if begin yield to1+ i i j >= until then unyield ;
code fill ( a u c -- )
W>A, PSP) 4 +) @, W<>A, 1 PSP) [+n], begin \ A=a W=c P+0=u+1