- #if !defined(EPDDEFS_INCLUDED) 
- /* *INDENT-OFF* */ 
- #  define EPDDEFS_INCLUDED 
- /*>>> epddefs.h: Extended Position Description definitions */ 
- /* Revised: 1996.06.23 */ 
- /* 
-    Copyright (C) 1996 by Steven J. Edwards (sje@mv.mv.com) 
-    All rights reserved.  This code may be freely redistibuted and used by 
-    both research and commerical applications.  No warranty exists. 
-  */ 
- /* 
-    Everything in this source file is independent of the host program. 
-    Requests for changes and additions should be communicated to the author 
-    via the e-mail address given above. 
-  */ 
- /* 
-    This file was originally prepared on an Apple Macintosh using the 
-    Metrowerks CodeWarrior 6 ANSI C compiler.  Tabs are set at every 
-    four columns.  Further testing and development was performed on a 
-    generic PC running Linux 1.3.20 and using the gcc 2.7.0 compiler. 
-  */ 
- /* inclusion telltale */ 
- #  if (!defined(_epddefs)) 
- #    define _epddefs 1 
- /* subprogram storage class for non-statics (usually empty definition) */ 
- #    define nonstatic 
- /* a bit */ 
- #    define bit 0x01 
- /* bit positions */ 
- #    define bit_00 (bit <<  0) 
- #    define bit_01 (bit <<  1) 
- #    define bit_02 (bit <<  2) 
- #    define bit_03 (bit <<  3) 
- #    define bit_04 (bit <<  4) 
- #    define bit_05 (bit <<  5) 
- #    define bit_06 (bit <<  6) 
- #    define bit_07 (bit <<  7) 
- #    define bit_08 (bit <<  8) 
- #    define bit_09 (bit <<  9) 
- #    define bit_10 (bit << 10) 
- #    define bit_11 (bit << 11) 
- #    define bit_12 (bit << 12) 
- #    define bit_13 (bit << 13) 
- #    define bit_14 (bit << 14) 
- #    define bit_15 (bit << 15) 
- /* bit width constants */ 
- #    define nybbW  4 
- #    define byteW  8 
- /* simple masks */ 
- #    define nybbM 0x000f 
- /* useful types */ 
- typedef void *voidptrT; 
- typedef unsigned char byteT, *byteptrT; 
- typedef char *charptrT; 
- typedef short int siT, *siptrT; 
- typedef long int liT, *liptrT; 
- typedef float srT, *srptrT; 
- typedef double lrT, *lrptrT; 
- typedef FILE *fptrT; 
-   
- /* text I/O buffer length */ 
- #    define tL 256 
- /* EPD I/O buffer length */ 
- #    define epdL 4096 
- /* the standard algebraic notation character vector type */ 
- #    define sanL 16 
-                 /* must be at least 8; extra room for alternatives */ 
- typedef char sanT[sanL]; 
- typedef sanT *sanptrT; 
-   
- /* SAN style attributes, priority ordered (used for encoding) */ 
- typedef siT ssaT; 
-   
- #    define ssaL 12 
- #    define ssa_nil (-1) 
- #    define ssa_capt  0 /* 5 way: capture indicator */ 
- #    define ssa_case  1 /* 2 way: letter case */ 
- #    define ssa_chec  2 /* 3 way: checking */ 
- #    define ssa_cast  3 /* 5 way: castling */ 
- #    define ssa_prom  4 /* 4 way: promoting */ 
- #    define ssa_ptar  5 /* 2 way: pawn target rank skip */ 
- #    define ssa_chmt  6 /* 4 way: checkmating */ 
- #    define ssa_epct  7 /* 2 way: en passant capture */ 
- #    define ssa_draw  8 /* 2 way: drawing */ 
- #    define ssa_move  9 /* 2 way: movement indicator */ 
- #    define ssa_edcf 10 /* 2 way: extra disambiguating character (file) */ 
- #    define ssa_edcr 11 /* 2 way: extra disambiguating character (rank) */ 
- /* SAN style vector */ 
- typedef siT ssavT[ssaL]; 
-   
- /* colors (ordering is critical) */ 
- typedef siT cT, *cptrT; 
-   
- #    define cQ 2 
- #    define cL (bit << cQ) 
- #    define rcQ 1 
- #    define rcL (bit << rcQ) 
- #    define c_nil (-1) 
- #    define c_w 0 
-                 /* white */ 
- #    define c_b 1 
-                 /* black */ 
- #    define c_v 2 
-                 /* vacant */ 
- #    define c_x 3 
-                 /* extra */ 
- /* pieces (ordering is critical) */ 
- typedef siT pT, *pptrT; 
-   
- #    define pL 8 
- #    define rpL 6 
- #    define p_nil (-1) 
- #    define p_p 0 
-                 /* pawn */ 
- #    define p_n 1 
-                 /* knight */ 
- #    define p_b 2 
-                 /* bishop */ 
- #    define p_r 3 
-                 /* rook */ 
- #    define p_q 4 
-                 /* queen */ 
- #    define p_k 5 
-                 /* king */ 
- #    define p_v 6 
-                 /* vacant */ 
- #    define p_x 7 
-                 /* extra */ 
- /* color piece combinations (ordering is critical) */ 
- typedef siT cpT; 
-   
- #    define cpL 16 
- #    define rcpL 12 
- #    define cp_nil (-1) 
- #    define cp_wp  0    /* white pawn */ 
- #    define cp_wn  1    /* white knight */ 
- #    define cp_wb  2    /* white bishop */ 
- #    define cp_wr  3    /* white rook */ 
- #    define cp_wq  4    /* white queen */ 
- #    define cp_wk  5    /* white king */ 
- #    define cp_bp  6    /* black pawn */ 
- #    define cp_bn  7    /* black knight */ 
- #    define cp_bb  8    /* black bishop */ 
- #    define cp_br  9    /* black rook */ 
- #    define cp_bq 10    /* black queen */ 
- #    define cp_bk 11    /* black king */ 
- #    define cp_v0 12    /* vacant */ 
- #    define cp_x0 13    /* extra 0 */ 
- #    define cp_x1 14    /* extra 1 */ 
- #    define cp_x2 15    /* extra 2 */ 
- /* ranks */ 
- typedef siT rankT; 
-   
- #    define rankM (0x0007) 
- #    define rankQ 3 
- #    define rankL (bit << rankQ) 
- #    define rank_nil (-1) 
- #    define rank_1 0 
- #    define rank_2 1 
- #    define rank_3 2 
- #    define rank_4 3 
- #    define rank_5 4 
- #    define rank_6 5 
- #    define rank_7 6 
- #    define rank_8 7 
- /* files */ 
- typedef siT fileT; 
-   
- #    define fileM (0x0007) 
- #    define fileQ 3 
- #    define fileL (bit << fileQ) 
- #    define file_nil (-1) 
- #    define file_a 0    /* QR */ 
- #    define file_b 1    /* QN */ 
- #    define file_c 2    /* QB */ 
- #    define file_d 3    /* Q */ 
- #    define file_e 4    /* K */ 
- #    define file_f 5    /* KB */ 
- #    define file_g 6    /* KN */ 
- #    define file_h 7    /* KR */ 
- /* location mappings */ 
- #    define map_sq(r, f) (((r) << fileQ | (f))) 
- #    define map_file(sq) ((sq) & 0x07) 
- #    define map_rank(sq) ((sq) >> fileQ) 
- /* squares */ 
- typedef siT sqT, *sqptrT; 
-   
- #    define sqM (0x003f) 
- #    define sqQ (rankQ + fileQ) 
- #    define sqL (bit << sqQ) 
- #    define sq_nil (-1) 
- #    define sq_a1 map_sq(rank_1, file_a) 
- #    define sq_b1 map_sq(rank_1, file_b) 
- #    define sq_c1 map_sq(rank_1, file_c) 
- #    define sq_d1 map_sq(rank_1, file_d) 
- #    define sq_e1 map_sq(rank_1, file_e) 
- #    define sq_f1 map_sq(rank_1, file_f) 
- #    define sq_g1 map_sq(rank_1, file_g) 
- #    define sq_h1 map_sq(rank_1, file_h) 
- #    define sq_a2 map_sq(rank_2, file_a) 
- #    define sq_b2 map_sq(rank_2, file_b) 
- #    define sq_c2 map_sq(rank_2, file_c) 
- #    define sq_d2 map_sq(rank_2, file_d) 
- #    define sq_e2 map_sq(rank_2, file_e) 
- #    define sq_f2 map_sq(rank_2, file_f) 
- #    define sq_g2 map_sq(rank_2, file_g) 
- #    define sq_h2 map_sq(rank_2, file_h) 
- #    define sq_a3 map_sq(rank_3, file_a) 
- #    define sq_b3 map_sq(rank_3, file_b) 
- #    define sq_c3 map_sq(rank_3, file_c) 
- #    define sq_d3 map_sq(rank_3, file_d) 
- #    define sq_e3 map_sq(rank_3, file_e) 
- #    define sq_f3 map_sq(rank_3, file_f) 
- #    define sq_g3 map_sq(rank_3, file_g) 
- #    define sq_h3 map_sq(rank_3, file_h) 
- #    define sq_a4 map_sq(rank_4, file_a) 
- #    define sq_b4 map_sq(rank_4, file_b) 
- #    define sq_c4 map_sq(rank_4, file_c) 
- #    define sq_d4 map_sq(rank_4, file_d) 
- #    define sq_e4 map_sq(rank_4, file_e) 
- #    define sq_f4 map_sq(rank_4, file_f) 
- #    define sq_g4 map_sq(rank_4, file_g) 
- #    define sq_h4 map_sq(rank_4, file_h) 
- #    define sq_a5 map_sq(rank_5, file_a) 
- #    define sq_b5 map_sq(rank_5, file_b) 
- #    define sq_c5 map_sq(rank_5, file_c) 
- #    define sq_d5 map_sq(rank_5, file_d) 
- #    define sq_e5 map_sq(rank_5, file_e) 
- #    define sq_f5 map_sq(rank_5, file_f) 
- #    define sq_g5 map_sq(rank_5, file_g) 
- #    define sq_h5 map_sq(rank_5, file_h) 
- #    define sq_a6 map_sq(rank_6, file_a) 
- #    define sq_b6 map_sq(rank_6, file_b) 
- #    define sq_c6 map_sq(rank_6, file_c) 
- #    define sq_d6 map_sq(rank_6, file_d) 
- #    define sq_e6 map_sq(rank_6, file_e) 
- #    define sq_f6 map_sq(rank_6, file_f) 
- #    define sq_g6 map_sq(rank_6, file_g) 
- #    define sq_h6 map_sq(rank_6, file_h) 
- #    define sq_a7 map_sq(rank_7, file_a) 
- #    define sq_b7 map_sq(rank_7, file_b) 
- #    define sq_c7 map_sq(rank_7, file_c) 
- #    define sq_d7 map_sq(rank_7, file_d) 
- #    define sq_e7 map_sq(rank_7, file_e) 
- #    define sq_f7 map_sq(rank_7, file_f) 
- #    define sq_g7 map_sq(rank_7, file_g) 
- #    define sq_h7 map_sq(rank_7, file_h) 
- #    define sq_a8 map_sq(rank_8, file_a) 
- #    define sq_b8 map_sq(rank_8, file_b) 
- #    define sq_c8 map_sq(rank_8, file_c) 
- #    define sq_d8 map_sq(rank_8, file_d) 
- #    define sq_e8 map_sq(rank_8, file_e) 
- #    define sq_f8 map_sq(rank_8, file_f) 
- #    define sq_g8 map_sq(rank_8, file_g) 
- #    define sq_h8 map_sq(rank_8, file_h) 
- /* regular board */ 
- typedef union rbU { 
-   cpT rbm[rankL][fileL];        /* rank/file indexing */ 
-   cpT rbv[sqL];                 /* square indexing */ 
- } rbT, *rbptrT; 
-   
- /* nybble board vector */ 
- #    define nbL (sqL / (byteW / nybbW)) 
- typedef byteT nbvT[nbL]; 
-   
- /* flanks */ 
- typedef siT flankT; 
-   
- #    define flankL 2 
- #    define flank_nil (-1) 
- #    define flank_k 0   /* kingside */ 
- #    define flank_q 1   /* queenside */ 
- /* direction indices */ 
- typedef siT dxT; 
-   
- #    define dxQ 4 
- #    define dxL (bit << dxQ) 
- #    define dx_nil (-1) 
- #    define dx_0  0 
- #    define dx_1  1 
- #    define dx_2  2 
- #    define dx_3  3 
- #    define dx_4  4 
- #    define dx_5  5 
- #    define dx_6  6 
- #    define dx_7  7 
- #    define dx_8  8 
- #    define dx_9  9 
- #    define dx_a 10 
- #    define dx_b 11 
- #    define dx_c 12 
- #    define dx_d 13 
- #    define dx_e 14 
- #    define dx_f 15 
- /* direction vector displacements */ 
- typedef siT dvT; 
-   
- #    define dv_0 (( 0 * fileL) + 1) 
- #    define dv_1 (( 1 * fileL) + 0) 
- #    define dv_2 (( 0 * fileL) - 1) 
- #    define dv_3 ((-1 * fileL) - 0) 
- #    define dv_4 (( 1 * fileL) + 1) 
- #    define dv_5 (( 1 * fileL) - 1) 
- #    define dv_6 ((-1 * fileL) - 1) 
- #    define dv_7 ((-1 * fileL) + 1) 
- #    define dv_8 (( 1 * fileL) + 2) 
- #    define dv_9 (( 2 * fileL) + 1) 
- #    define dv_a (( 2 * fileL) - 1) 
- #    define dv_b (( 1 * fileL) - 2) 
- #    define dv_c ((-1 * fileL) - 2) 
- #    define dv_d ((-2 * fileL) - 1) 
- #    define dv_e ((-2 * fileL) + 1) 
- #    define dv_f ((-1 * fileL) + 2) 
- /* extended direction vector offsets */ 
- typedef siT xdvT; 
-   
- #    define xdv_0 (( 0 * xfileL) + 1) 
- #    define xdv_1 (( 1 * xfileL) + 0) 
- #    define xdv_2 (( 0 * xfileL) - 1) 
- #    define xdv_3 ((-1 * xfileL) - 0) 
- #    define xdv_4 (( 1 * xfileL) + 1) 
- #    define xdv_5 (( 1 * xfileL) - 1) 
- #    define xdv_6 ((-1 * xfileL) - 1) 
- #    define xdv_7 ((-1 * xfileL) + 1) 
- #    define xdv_8 (( 1 * xfileL) + 2) 
- #    define xdv_9 (( 2 * xfileL) + 1) 
- #    define xdv_a (( 2 * xfileL) - 1) 
- #    define xdv_b (( 1 * xfileL) - 2) 
- #    define xdv_c ((-1 * xfileL) - 2) 
- #    define xdv_d ((-2 * xfileL) - 1) 
- #    define xdv_e ((-2 * xfileL) + 1) 
- #    define xdv_f ((-1 * xfileL) + 2) 
- /* extended rank, file, and square types */ 
- typedef siT xrankT; 
-   
- #    define xrankQ (rankQ + 1) 
- #    define xrankL (bit << xrankQ) 
- typedef siT xfileT; 
-   
- #    define xfileQ (fileQ + 1) 
- #    define xfileM 0x0f 
- #    define xfileL (bit << xfileQ) 
- typedef siT xsqT, *xsqptrT; 
-   
- #    define xsqQ (xrankQ + xfileQ) 
- #    define xsqL (bit << xsqQ) 
- /* the extended board type */ 
- typedef union xbU { 
-   cpT xbm[xrankL][xfileL]; 
-   cpT xbv[xsqL]; 
- } xbT, *xbptrT; 
-   
- /* extended board mapping macros */ 
- #    define map_xrank_xsq(xsq) ((xsq) >> xfileQ) 
- #    define map_xfile_xsq(xsq) ((xsq) & xfileM) 
- #    define map_xsq_xrank_xfile(xrank, xfile) (((xrank) << xfileQ) | (xfile)) 
- /* extended conversion macros */ 
- #    define xbdrL 4 
- #    define map_xfile_file(file) ((file) + xbdrL) 
- #    define map_xrank_rank(rank) ((rank) + xbdrL) 
- #    define map_file_xfile(xfile) ((xfile) - xbdrL) 
- #    define map_rank_xrank(xrank) ((xrank) - xbdrL) 
- #    define map_sq_xsq(xsq) \ 
-         (((((xsq) >> xfileQ) - xbdrL) << fileQ) | (((xsq) & xfileM) - xbdrL)) 
- #    define map_xsq_sq(sq) \ 
-         ((((((sq) >> fileQ) & fileM) + xbdrL) << xfileQ) | \ 
-         (((sq) & fileM) + xbdrL)) 
- /* castling availability indicators */ 
- typedef siT caiT; 
-   
- #    define caiL (rcL * flankL) 
- #    define cai_nil (-1) 
- #    define cai_wk ((c_w * flankL) + flank_k) 
- #    define cai_wq ((c_w * flankL) + flank_q) 
- #    define cai_bk ((c_b * flankL) + flank_k) 
- #    define cai_bq ((c_b * flankL) + flank_q) 
- /* castling index mapper */ 
- #    define castim(cai) (bit << (cai)) 
- /* castling flags */ 
- typedef siT castT; 
- typedef castT *castptrT; 
-   
- #    define cf_wk castim(cai_wk) 
- #    define cf_wq castim(cai_wq) 
- #    define cf_bk castim(cai_bk) 
- #    define cf_bq castim(cai_bq) 
- /* centipawn evaluation */ 
- typedef siT cpevT, *cpevptrT; 
-   
- /* some interesting centipawn evaluations */ 
- #    define cpev_best ((cpevT) ((((liT) bit) << 15) - 1)) 
- #    define cpev_bust (-cpev_best) 
- #    define cpev_draw 0 
- #    define cpev_mate cpev_best 
- #    define cpev_wrck (cpev_bust - 1) 
- /* mate and loss synthesis macros (fullmove distance argument) */ 
- #    define synth_mate(n) (cpev_mate - ((n) * 2) + 1) 
- #    define synth_loss(n) (cpev_bust + ((n) * 2)) 
- /* distance to mate/loss macros (mate/loss centipawn argument) */ 
- #    define synth_distance_mate(cpev)  ((siT) (((cpev_mate - (cpev)) + 1) / 2)) 
- #    define synth_distance_loss(cpev)  ((siT) (((cpev) - cpev_bust) / 2)) 
- /* maximum distance to mate/loss (fullmove distance count) */ 
- #    define max_dist_mateL 1024 
- #    define max_dist_lossL 1024 
- /* forced mate/loss detection macros (mate/loss centipawn argument) */ 
- #    define forced_mate(cpev) ((cpev) >= ((cpev_mate - (max_dist_mateL * 2)) + 1)) 
- #    define forced_loss(cpev) ((cpev) <= (cpev_bust + (max_dist_lossL * 2))) 
- /* move flag bits */ 
- typedef siT mfT; 
-   
- #    define mf_bust (bit << 0)  /* illegal move */ 
- #    define mf_chec (bit << 1)  /* checking */ 
- #    define mf_chmt (bit << 2)  /* checkmating */ 
- #    define mf_draw (bit << 3)  /* drawing (includes stalemating) */ 
- #    define mf_exec (bit << 4)  /* executed at least once */ 
- #    define mf_null (bit << 5)  /* special null move */ 
- #    define mf_sanf (bit << 6)  /* needs file disambiguation */ 
- #    define mf_sanr (bit << 7)  /* needs rank disambiguation */ 
- #    define mf_stmt (bit << 8)  /* stalemating */ 
- /* special case move type */ 
- typedef siT scmvT; 
-   
- #    define scmvQ 3 
- #    define scmvL (bit << scmvQ) 
- #    define scmv_nil (-1) 
- #    define scmv_reg 0  /* regular */ 
- #    define scmv_epc 1  /* en passant capture */ 
- #    define scmv_cks 2  /* castles kingside */ 
- #    define scmv_cqs 3  /* castles queenside */ 
- #    define scmv_ppn 4  /* pawn promotes to knight */ 
- #    define scmv_ppb 5  /* pawn promotes to bishop */ 
- #    define scmv_ppr 6  /* pawn promotes to rook */ 
- #    define scmv_ppq 7  /* pawn promotes to queen */ 
- /* move type */ 
- typedef struct mS { 
-   mfT m_flag;                   /* move flags */ 
-   sqT m_frsq;                   /* from square */ 
-   sqT m_tosq;                   /* to square */ 
-   cpT m_frcp;                   /* from color-piece */ 
-   cpT m_tocp;                   /* to color-piece */ 
-   scmvT m_scmv;                 /* special case move indication */ 
- } mT, *mptrT; 
-   
- /* game termination indicator markers */ 
- typedef siT gtimT, *gtimptrT; 
-   
- #    define gtimL 4 
- #    define gtim_nil (-1) 
- #    define gtim_w 0    /* White won */ 
- #    define gtim_b 1    /* Black won */ 
- #    define gtim_d 2    /* draw */ 
- #    define gtim_u 3    /* unknown */ 
- /* clockstamp length hh:mm:ss */ 
- #    define clockstampL (2 + 1 + 2 + 1 + 2 + 1) 
- /* datestamp length YYYY.MM.DD */ 
- #    define datestampL (4 + 1 + 2 + 1 + 2 + 1) 
- /* duration length dddd:hh:mm:ss */ 
- #    define durationL (4 + 1 + 2 + 1 + 2 + 1 + 2 + 1) 
- /* EPD operand basetype */ 
- typedef siT eobT; 
-   
- #    define eobL 2 
- #    define eob_nil (-1) 
- #    define eob_string 0        /* quoted string */ 
- #    define eob_symbol 1        /* unquoted symbol */ 
- /* EPD operand value type */ 
- typedef struct eovS { 
-   eobT eov_eob;                 /* basetype */ 
-   charptrT eov_str;             /* string value */ 
-   struct eovS *eov_prev;        /* previous operand */ 
-   struct eovS *eov_next;        /* next operand */ 
- } eovT, *eovptrT; 
-   
- /* EPD operation type */ 
- typedef struct eopS { 
-   charptrT eop_opsym;           /* operation code symbol */ 
-   eovptrT eop_headeov;          /* head of operand value list */ 
-   eovptrT eop_taileov;          /* tail of operand value list */ 
-   struct eopS *eop_prev;        /* previous operation */ 
-   struct eopS *eop_next;        /* next operation */ 
- } eopT, *eopptrT; 
-   
- /* EPD record type */ 
- typedef struct epdS { 
-   nbvT epd_nbv;                 /* piece placement nybble board vector */ 
-   cT epd_actc;                  /* active color */ 
-   castT epd_cast;               /* castling availability */ 
-   sqT epd_epsq;                 /* en passant target square */ 
-   eopptrT epd_headeop;          /* head of operation list */ 
-   eopptrT epd_taileop;          /* tail of operation list */ 
- } epdT, *epdptrT; 
-   
- /* EPD standard operators */ 
- typedef siT epdsoT, *epdsoptrT; 
-   
- #    define epdsoL 51 
- #    define epdso_nil (-1) 
- #    define epdso_acd          0        /* analysis count: depth */ 
- #    define epdso_acn          1        /* analysis count: nodes */ 
- #    define epdso_acs          2        /* analysis count: seconds */ 
- #    define epdso_am           3        /* avoid move(s) */ 
- #    define epdso_bm           4        /* best move(s) */ 
- #    define epdso_c0           5        /* comment slot 0 */ 
- #    define epdso_c1           6        /* comment slot 1 */ 
- #    define epdso_c2           7        /* comment slot 2 */ 
- #    define epdso_c3           8        /* comment slot 3 */ 
- #    define epdso_c4           9        /* comment slot 4 */ 
- #    define epdso_c5          10        /* comment slot 5 */ 
- #    define epdso_c6          11        /* comment slot 6 */ 
- #    define epdso_c7          12        /* comment slot 7 */ 
- #    define epdso_c8          13        /* comment slot 8 */ 
- #    define epdso_c9          14        /* comment slot 9 */ 
- #    define epdso_cc          15        /* chess clock */ 
- #    define epdso_ce          16        /* centipawn evaluation */ 
- #    define epdso_dm          17        /* direct move count */ 
- #    define epdso_draw_accept 18        /* draw accept */ 
- #    define epdso_draw_claim  19        /* draw claim */ 
- #    define epdso_draw_offer  20        /* draw offer */ 
- #    define epdso_draw_reject 21        /* draw reject */ 
- #    define epdso_eco         22        /* ECO code */ 
- #    define epdso_fmvn        23        /* fullmove number */ 
- #    define epdso_hmvc        24        /* halfmove clock */ 
- #    define epdso_id          25        /* position identification */ 
- #    define epdso_nic         26        /* NIC code */ 
- #    define epdso_noop        27        /* no operation */ 
- #    define epdso_pm          28        /* predicted move */ 
- #    define epdso_ptp         29        /* PGN tag pair(s) */ 
- #    define epdso_pv          30        /* predicted variation */ 
- #    define epdso_rc          31        /* repetition count */ 
- #    define epdso_refcom      32        /* referee command */ 
- #    define epdso_refreq      33        /* referee request */ 
- #    define epdso_resign      34        /* resign */ 
- #    define epdso_sm          35        /* supplied move */ 
- #    define epdso_sv          36        /* supplied variation */ 
- #    define epdso_tcgs        37        /* telecommunications: game selector */ 
- #    define epdso_tcri        38        /* telecommunications: receiver identification */ 
- #    define epdso_tcsi        39        /* telecommunications: sender identification */ 
- #    define epdso_ts          40        /* timestamp */ 
- #    define epdso_v0          41        /* variation slot 0 */ 
- #    define epdso_v1          42        /* variation slot 1 */ 
- #    define epdso_v2          43        /* variation slot 2 */ 
- #    define epdso_v3          44        /* variation slot 3 */ 
- #    define epdso_v4          45        /* variation slot 4 */ 
- #    define epdso_v5          46        /* variation slot 5 */ 
- #    define epdso_v6          47        /* variation slot 6 */ 
- #    define epdso_v7          48        /* variation slot 7 */ 
- #    define epdso_v8          49        /* variation slot 8 */ 
- #    define epdso_v9          50        /* variation slot 9 */ 
- /* referee commands */ 
- typedef siT refcomT, *refcomptrT; 
-   
- #    define refcomL 7 
- #    define refcom_nil (-1) 
- #    define refcom_conclude   0 
- #    define refcom_disconnect 1 
- #    define refcom_execute    2 
- #    define refcom_fault      3 
- #    define refcom_inform     4 
- #    define refcom_respond    5 
- #    define refcom_reset      6 
- /* referee requests */ 
- typedef siT refreqT, *refreqptrT; 
-   
- #    define refreqL 4 
- #    define refreq_nil (-1) 
- #    define refreq_fault    0 
- #    define refreq_reply    1 
- #    define refreq_sign_on  2 
- #    define refreq_sign_off 3 
- /* referee interface procedure type */ 
- typedef epdptrT(*refintptrT) (epdptrT epdptr, siptrT flagptr); 
-   
- /* PGN Seven Tag Roster names */ 
- typedef siT pgnstrT, *pgnstrptrT; 
-   
- #    define pgnstrL 7 
- #    define pgnstr_nil (-1) 
- #    define pgnstr_event  0 
- #    define pgnstr_site   1 
- #    define pgnstr_date   2 
- #    define pgnstr_round  3 
- #    define pgnstr_white  4 
- #    define pgnstr_black  5 
- #    define pgnstr_result 6 
- /* benchmark score structure */ 
- typedef struct bmsS { 
-   siT bms_acdflag;              /* ACD (depth) data valid flag */ 
-   siT bms_acnflag;              /* ACN (nodes) data valid flag */ 
-   siT bms_acsflag;              /* ACS (seconds) data valid flag */ 
-   liT bms_total;                /* total record count */ 
-   liT bms_solve;                /* solved record count */ 
-   liT bms_unsol;                /* unsolved record count */ 
-   liT bms_total_acd;            /* ACD used, all records */ 
-   liT bms_solve_acd;            /* ACD used, solved records */ 
-   liT bms_unsol_acd;            /* ACD used, unsolved records */ 
-   liT bms_total_acn;            /* ACN used, all records */ 
-   liT bms_solve_acn;            /* ACN used, solved records */ 
-   liT bms_unsol_acn;            /* ACN used, unsolved records */ 
-   liT bms_total_acs;            /* ACS used, all records */ 
-   liT bms_solve_acs;            /* ACS used, solved records */ 
-   liT bms_unsol_acs;            /* ACS used, unsolved records */ 
- } bmsT, *bmsptrT; 
-   
- /* environment stack entry record type */ 
- typedef struct eseS { 
-   cT ese_actc;                  /* active color */ 
-   castT ese_cast;               /* castling availability */ 
-   sqT ese_epsq;                 /* en passant target square */ 
-   siT ese_hmvc;                 /* halfmove clock */ 
-   siT ese_fmvn;                 /* fullmove number */ 
-   sqT ese_ksqv[rcL];            /* king square locations */ 
- } eseT, *eseptrT; 
-   
- /* game played move record type (entries are prior to move) */ 
- typedef struct gpmS { 
-   mT gpm_m;                     /* the move to be played */ 
-   eseT gpm_ese;                 /* environment statck entry storage */ 
-   nbvT gpm_nbv;                 /* nybble board vector */ 
-   struct gpmS *gpm_prev;        /* previous played move record */ 
-   struct gpmS *gpm_next;        /* next played move record */ 
- } gpmT, *gpmptrT; 
-   
- /* game record type */ 
- typedef struct gamS { 
-   charptrT gam_strv[pgnstrL];   /* PGN STR tag values */ 
-   gtimT gam_gtim;               /* game termination indicator */ 
-   gpmptrT gam_headgpm;          /* head of game played move list */ 
-   gpmptrT gam_tailgpm;          /* tail of game played move list */ 
-   struct gamS *gam_prev;        /* previous game */ 
-   struct gamS *gam_next;        /* next game */ 
- } gamT, *gamptrT; 
-   
- /* statndard disply output column limit */ 
- #    define columnL 80 
- /* inclusion telltale closure */ 
- #  endif 
- /* *INDENT-ON* */ 
- #endif 
- /*<<< epddefs.h: EOF */ 
-