const word probe = 9999
const word radius = 127 * 127
pointer screen @ $80

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
    }
  }
  screen += 40
}

void main() {
  word i@$e0, bingo@$e2
  word x@$e4, y@$e6, p@$e8, t@$ea
  byte n@$82

  screen = os_SAVMSC

  x = 0
  y = 0
  bingo = 0

  pause()
  os_RTCLOK = 0

  for i,0,to,probe {
    n = pokey_random & 127
    x = n * word(n)
    n = pokey_random & 127
    y = n * word(n)
    if ((x + y) <= radius) {
      bingo += 1
    }
  }
  p = 4 * bingo

  t = os_RTCLOK.b2 + (os_RTCLOK.b1 * 256)

  printScore(t)
  printScore(p)

  while true {}
}