|
|
1.1 root 1: /* header file for move generator hes 890318
2: Modified: 890510 minor bug fixed in Newataks
3: 890606 NEWMOVE levels 1-6 */
4:
5: #if (NEWMOVE >= 1)
6: extern short distdata[64][64];
7: extern short taxidata[64][64];
8:
9: #define taxicab(a,b) taxidata[a][b]
10: #define distance(a,b) distdata[a][b]
11:
12: extern void Initialize_dist();
13: #endif
14:
15: #if (NEWMOVE >= 2)
16: struct sqdata {
17: short nextpos;
18: short nextdir;
19: };
20: extern struct sqdata posdata[3][8][64][64];
21:
22: extern void Initialize_moves();
23:
24: #define ataks(side,a)\
25: {\
26: register short u,c,sq;\
27: register struct sqdata *p;\
28: short i,piece,*PL;\
29: \
30: for (u = 64; u; a[--u] = 0); \
31: PL = PieceList[side];\
32: for (i = 0; i <= PieceCnt[side]; i++)\
33: {\
34: sq = PL[i];\
35: piece = board[sq];\
36: c = control[piece];\
37: p = posdata[side][piece][sq];\
38: if (piece == pawn) {\
39: u = p[sq].nextdir; /* follow captures thread */\
40: while (u != sq) {\
41: a[u] = ++a[u] | c;\
42: u = p[u].nextdir;\
43: }\
44: }\
45: else {\
46: u = p[sq].nextpos;\
47: while (u != sq) {\
48: a[u] = ++a[u] | c;\
49: if (color[u] == neutral)\
50: u = p[u].nextpos;\
51: else\
52: u = p[u].nextdir;\
53: }\
54: }\
55: }\
56: }
57: #endif
58:
59: #if (NEWMOVE >= 3)
60: extern short PieceList[2][16];
61:
62: extern int Sqatakd();
63: #endif
64:
65: #if (NEWMOVE > 3)
66: extern short Kfield[2][64],PINVAL,control[7],hung[2],XRAY;
67:
68: extern BRscan();
69: #endif
70:
71: #if (NEWMOVE > 4)
72: #define valueQ 1100
73:
74: extern short PieceCnt[2],value[7],svalue[64];
75:
76: extern CaptureList();
77: #endif
78:
79: #if (NEWMOVE > 5)
80: extern GenMoves();
81: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.