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

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
}
}