Files
Arquivotheca.SunOS-4.1.4/games/chess/setup.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

139 lines
1.5 KiB
C

#ifndef lint
static char sccsid[] = "@(#)setup.c 1.1 94/10/31 SMI";
#endif
#include "old.h"
setup()
{
char bd[64];
char *p, *ip;
short i, err, nkng, c;
short wkp, bkp;
for(p=bd; p<bd+64; )
*p++ = 0;
err = 0;
nkng = 101;
p = bd;
for(i=0; i<8; i++) {
ip = p+8;
loop:
switch(c = getchar()) {
case 'K':
nkng -= 100;
c = 6;
bkp = p-bd;
break;
case 'k':
nkng--;
c = -6;
wkp = p-bd;
break;
case 'P':
c = 1;
break;
case 'p':
c = -1;
break;
case 'N':
c = 2;
break;
case 'n':
c = -2;
break;
case 'B':
c = 3;
break;
case 'b':
c = -3;
break;
case 'R':
c = 4;
break;
case 'r':
c = -4;
break;
case 'Q':
c = 5;
break;
case 'q':
c = -5;
break;
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
p += c-'0';
goto loop;
case ' ':
p++;
goto loop;
case '\n':
if(p > ip)
err++;
p = ip;
continue;
default:
err++;
if(c <= 0)
onhup();
goto loop;
}
if(p < ip)
*p++ = c;
goto loop;
}
if(nkng)
err++;
if(err) {
printf("Illegal setup\n");
return;
}
for(i=0; i<64; i++)
board[i] = bd[i];
amp = ambuf+1;
lmp = lmbuf+1;
eppos = 64;
bookp = 0;
mantom = 0;
moveno = 1;
wkpos = wkp;
bkpos = bkp;
flag = 0;
if(wkpos == 60) {
if(board[56] == -4)
flag |= 2;
if(board[63] == -4)
flag |= 1;
}
if(bkpos == 4) {
if(board[0] == 4)
flag |= 020;
if(board[7] == 4)
flag |= 010;
}
printf("Setup successful\n");
}