5.4. The .for directive

With the .for directive you can generate loops as in modern programming languages. The .for directive takes an init expression list, a boolean expression, and an iteration list separated by a semicolon. The last two arguments and the body are executed as long as the boolean expression evaluates to true.

// Prints the numbers from 0 to 9
.for(var i=0;i<10;i++)  .print "Number " + i  

// Make data for a sine wave
.for(var i=0;i<256;i++) .byte round(127.5+127.5*sin(toRadians(360*i/256)))

Since argument 1 and 3 are lists, you can leave them out, or you can write several expressions separated by comma:

// Print the numbers from 0 to 9
.var i=0
.for (;i<10;) {
    .print i
    .eval i++
}

// Sum the numbers from 0 to 9 and print the sum at each step
.for(var i=0, var sum=0;i<10;sum=sum+i,i++)  
    .print “The sum at step “ + I “ is “ + sum

With the for loop you can quickly generate tables and unroll loops. You can, for example, do a classic ‘blitter fill’ routine like this:

.var blitterBuffer=$3000
.var charset=$3800
.for (x=0;x<16;x++) {
    .for(var y=0;y<128;y++) {
        if (var y=0)  lda blitterBuffer+x*128+y
        else          eor blitterBuffer+x*128+y
        sta charset+x*128+y
    }
}