byte i @ $b0 pointer screen @ $b2 array(word) scores[17] @ $80 asm void openmode(byte register(a) m) @ $ef9c extern asm void pause() { lda os_RTCLOK.b2 .rt_check: cmp os_RTCLOK.b2 beq .rt_check rts } // print in HEX void printScore(word val) { array(byte) tmp[4] byte iter tmp[0] = val.hi >> 4 tmp[1] = val.hi & %00001111 tmp[2] = val.lo >> 4 tmp[3] = val.lo & %00001111 for iter:tmp { if tmp[iter] < 10 { screen[iter] = tmp[iter] + $10 } else { screen[iter] = tmp[iter] + $17 } } if i < 16 { screen[4] = 0 screen[5] = 'G' atariscr screen[6] = 'R' atariscr screen[7] = '.' atariscr if i < 10 { screen[8] = i + $10 } else { screen[8] = i + $17 } } else { screen[4] = 0 screen[5] = 'O' atariscr screen[6] = 'F' atariscr screen[7] = 'F' atariscr } screen += 40 } void main(){ for i:scores { scores[i] = 0 } for i,0,to,15 { openmode(i) pause() os_RTCLOK.b2 = 0 while os_RTCLOK.b2 < 100 { scores[i] += 1 } } os_SDMCTL = 0 i = 16 pause() os_RTCLOK.b2 = 0 while os_RTCLOK.b2 < 100 { scores[i] += 1 } os_SDMCTL = $22 openmode(0) screen = os_SAVMSC for i:scores { printScore(scores[i]) } while true {} }