const word size = 8192 word RTCLOK @ $13, SAVMSC @ $58 word i@$e0, prime@$e2, k@$e4, count@$e6 pointer screen@$e8 asm void pause() { lda $14 .rt_check: cmp $14 beq .rt_check rts } // print in HEX void printScore() { array(byte) tmp[4] byte iter screen = SAVMSC tmp[0] = RTCLOK.lo >> 4 tmp[1] = RTCLOK.lo & %00001111 tmp[2] = RTCLOK.hi >> 4 tmp[3] = RTCLOK.hi & %00001111 for iter:tmp { if tmp[iter] < 10 { screen[iter] = tmp[iter] + $10 } else { screen[iter] = tmp[iter] + $17 } } } void main() { array(bool) flags[size] align(1024) byte iter pause() RTCLOK = 0 for iter,9,downto,0 { count = 0 for i:flags { flags[i] = true } for i:flags { if flags[i] { prime = (i * 2) + 3 k = i + prime while k <= size { flags[k] = false k += prime } count += 1 } } } printScore() while true {} }