#include <stdio.h>

void main(void)
{
  register unsigned int stop, i, r, x, y;
  register unsigned int b, p;
  register unsigned char n;
  register unsigned char *rndp = 0xd20a;
  register unsigned char *tick = 0x14;
  register unsigned char *tack = 0x13;

  b = 0;
  r = 127 * 127;
  p = 10000;

  n = *tick;
  while (*tick == n) { ; }

  printf("\nMonte-Carlo PI cc65 V2.18\n");

  asm(" lda #0");
  asm(" sta $13");
  asm(" sta $14");

  for (i = 0 ; i < p; ++i)
  {
    n = (*rndp | 128) ^ 128;
    x = n * n;
    n = (*rndp | 128) ^ 128;
    y = n * n;
    if ((x + y) <= r)
      ++b;
  }
  b = 4 * b;
  stop = *tick + (*tack * 256);
  printf("%d%c%c%c%c%c%c\n", b, 30, 30, 30, 30, 255, 46);
  printf("%d ticks\n", stop);

  infinite:
    goto infinite;
}