V7/usr/src/games/chess/init.c
#include "old.h"
main()
{
int i;
printf("Chess\n");
itinit();
lmp = lmbuf;
amp = ambuf;
*amp++ = -1;
*lmp++ = -1; /* fence */
bookf = open("/usr/lib/book", 0);
if(bookf > 0)
read(bookf, &bookp, 2);
i = 64;
while(i--)
dir[i] = (edge[i/8]<<6) | edge[i%8];
play(0);
}
ctime(s, t)
{
printf("%s: %d:%d%d\n", s, t/60, (t/10)%6, t%10);
}
check()
{
return((!wattack(bkpos) || !battack(wkpos))? 1: 0);
}
increm()
{
clktim[mantom] =+ clock();
if(mantom)
moveno++;
mantom = !mantom;
}
decrem()
{
mantom = !mantom;
if(mantom)
moveno--;
}
stage()
{
int i, a;
qdepth = depth+8;
for(i=0; i<13; i++)
pval[i] = ipval[i];
value = 0;
for(i=0; i<64; i++) {
a = board[i];
value =+ (pval+6)[a];
}
if(value > 150)
gval = 1; else
if(value < -150)
gval = -1; else
gval = 0;
i = -6;
while(i <= 6) {
a = (pval+6)[i];
if(a < 0)
a =- 50; else
a =+ 50;
if(a < 0)
a = -((-a)/100); else
a =/ 100;
if(i)
(pval+6)[i] = a*100-gval;
i++;
}
a = 13800;
i = 64;
while(i--)
a =- abs((pval+6)[board[i]]);
if(a > 4000)
game = 3; else
if(a > 2000)
game = 2; else
if(moveno > 5)
game = 1; else
game = 0;
}
posit(f, p, a)
int (*f)();
int *p;
{
int m;
while(amp != p) {
m = amp[3]<<8;
m =| amp[4]&0377;
(*f)(m, a);
if(mantom) {
bmove(m);
moveno++;
mantom = 0;
} else {
wmove(m);
mantom = 1;
}
}
}
rept1(m, a)
int *a;
{
int i;
if(mantom != a[64])
return;
for(i=0; i<64; i++)
if(board[i] != a[i])
return;
a[65]++;
}
rept()
{
int a[66], i, *p;
for(i=0; i<64; i++)
a[i] = board[i];
a[64] = mantom;
a[65] = 0;
p = amp;
while(amp[-1] != -1) {
if(amp[-2])
break;
i = board[amp[-3]];
if(i == 1 || i == -1)
break;
mantom? wremove(): bremove();
decrem();
}
posit(rept1, p, a);
return(a[65]);
}