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