#include "old.h" rline() { char *p1; int c; loop0: p1 = sbuf; loop: c = getchar(); if(c <= 0) exit(0); if(c == '#') goto loop0; if(c != '*') { *p1++ = c; goto loop; } switch(getchar()) { case '#': goto loop0; case '*': if(p1 != sbuf+4) { printf("bad input\n"); goto loop0; } sbuf[0] += 'a'-'1'; sbuf[2] += 'a'-'1'; *p1++ = '\0'; return; case '0': exit(0); case '1': spread(""); return; case '2': spread("first"); return; case '3': spread("clock"); return; case '4': spread("score"); return; case '5': spread("remove"); return; case '6': spread("repeat"); return; case '7': spread("save"); return; case '8': spread("restore"); return; } printf("bad option\n"); goto loop; } spread(s) char *s; { char *p; p = sbuf; while(*p++ = *s++) ; } pboard() { int i, x, y, c, p; i = 0; x = 8; while(x--) { y = 8; while(y--) { p = board[i++]; if(p == 0) { printf("space\n"); continue; } if(p < 0) printf("white "); else printf("black "); putpiece("kqrbnp pnbrqk"[p+6]); } pause(); printf("end\n"); pause(); } } putpiece(p) { char *s; s = "god only knows"; switch(p) { case 'p': s = "pawn"; break; case 'n': s = "knight"; break; case 'b': s = "bishop"; break; case 'r': s = "rook"; break; case 'q': s = "queen"; break; case 'k': s = "king"; break; } printf("%s\n", s); } out1(m) { putnumb(moveno); pause(); out(m); pause(); } out(m) int m; { int from, to, epf, pmf; from = m>>8; to = m&0377; mantom? bmove(m): wmove(m); epf = pmf = 0; switch(amp[-1]) { case 0: case 1: stdp(board[to]); ed: printf("at\n"); stdb(from); if(amp[-2]) { printf("takes\n"); stdp(amp[-2]); printf("at\n"); } else printf("to\n"); stdb(to); break; case 3: printf("castle queen side\n"); break; case 2: printf("castle king side\n"); break; case 4: epf = 1; putpiece('p'); goto ed; case 5: pmf = 1; putpiece('p'); goto ed; } if(pmf) { printf("becomes\n"); putpiece('q'); } if(epf) { printf("en passent\n"); } if(check()) printf("check\n"); mantom? bremove(): wremove(); } stdp(p) int p; { if(p < 0) p = -p; p = "ppnbrqk"[p]; putpiece(p); } stdb(b) int b; { int r, f; r = b/8; if((f = b%8) < 4) putpiece('q'); else { putpiece('k'); f = 7-f; } f = "rnb\0"[f]; if(f) putpiece(f); putnumb(mantom? r+1: 8-r); } prtime(a, b) { printf("compute time is\n"); putnumb(a); printf("real time is\n"); putnumb(b); pause(); } putnumb(n) { if(n <= 12) { putdig(n); putchar('\n'); return; } if(n <= 19) { putdig(n+1); printf("teen\n"); return; } if(n >= 100) { putnumb(n/100); printf("hundred\n"); n %= 100; if(n) putnumb(n); return; } putdig(n/10+11); printf("tee\n"); n %= 10; if(n) putnumb(n); } putdig(n) { char *s; s = "god only knows"; switch(n) { case 0: s = "zero"; break; case 1: s = "one"; break; case 2: s = "two"; break; case 3: s = "three"; break; case 4: case 15: s = "four"; break; case 5: s = "five"; break; case 6: case 17: s = "six"; break; case 7: case 18: s = "seven"; break; case 8: case 19: s = "eight"; break; case 9: case 20: s = "nine"; break; case 10: s = "ten"; break; case 11: s = "eleven"; break; case 12: s = "twelve"; break; case 13: s = "twen"; break; case 14: s = "thir"; break; case 16: s = "fif"; break; } printf(s); } pause() { printf("...\n"); } score1(m) { if(!mantom) { putnumb(moveno); pause(); } out(m); pause(); } score() { int *p; p = amp; while(amp[-1] != -1) { mantom? wremove(): bremove(); decrem(); } posit(score1, p); printf("the end\n"); }