/* port tou kwdika c gia z80 apo ti selida http://www.z88dk.org/wiki/doku.php?id=libnew:examples:pi ston atari 8-bit ( cc65 compiler - http://cc65.github.io/cc65/ ) ** sly*m Jan 2016 ** */ #include #define DIGITS 1000 #define ITERNUM DIGITS / 4 * 14 typedef unsigned char byte; unsigned long res; unsigned int secs; int main() { long r[ITERNUM + 1]; long i, k; long b, d; long c; char keyin[1]; byte jiflow; byte jifmed; byte jifhi; /* midenismos xronou die8ynseis 18, 19, 20 (0x0012, 0x0013, 0x0014 RTCLOK) */ *(byte*)0x0012 = 0; *(byte*)0x0013 = 0; *(byte*)0x0014 = 0; c = 0; for (i = 0; i < ITERNUM; i++) r[i] = 2000; for (k = ITERNUM; k > 0; k -= 14) { d = 0; i = k; while (1) { d += r[i] * 10000; b = i * 2 - 1; r[i] = d % b; d /= b; i--; if (i == 0) break; d *= i; } printf("%.4d", (int)(c + d / 10000)); c = d % 10000; } jifhi = *(byte*)0x0012; jifmed = *(byte*)0x0013; jiflow = *(byte*)0x0014; /* vbls pou metri8ikan */ res = (unsigned long)jifhi << 16; res |= (unsigned long)jifmed << 8; res |= (unsigned long)jiflow; /* dia 50 hertz (pal) = deyterolepta */ secs = (unsigned int)(res / 50); printf(" ** %d sec **\npata [return]", secs); gets(keyin); return 0; }