?DO   DO   LOOP   +LOOP   I   J   LEAVE

?DO ( n1 n2 -- )

DO ( n1 n2 -- )

Set up loop control parameters with index n2 and limit n1.

Example:

: testLoop
    256 32 do
        I emit
    loop ;

LOOP ( ---)

Add one to the loop index. If the loop index is then equal to the loop limit, discard the loop parameters and continue execution immediately following the loop. Otherwise continue execution at the beginning of the loop.

+LOOP ( n ---)

I ( --- n)

n is a copy of the current loop index.

J ( --- n)

n is a copy of the next-outer loop index.

LEAVE ( ---)

Discard the current loop control parameters. An ambiguous condition exists if they are unavailable. Continue execution immediately following the innermost syntactically enclosing DO...LOOP or DO...+LOOP.