XBoard: teach about xboard move notation.
[gnushogi.git] / gnushogi / gnushogi.h
index bbefe5f..e5142f5 100644 (file)
@@ -6,6 +6,7 @@
  * ----------------------------------------------------------------------
  * Copyright (c) 1993, 1994, 1995 Matthias Mutz
  * Copyright (c) 1999 Michael Vanier and the Free Software Foundation
+ * Copyright (c) 2008, 2013, 2014 Yann Dirson and the Free Software Foundation
  *
  * GNU SHOGI is based on GNU CHESS
  *
@@ -59,15 +60,13 @@ typedef enum {
 extern display_t display_type;
 
 #define XSHOGI     (display_type == DISPLAY_X)
-#define NOT_CURSES ((display_type == DISPLAY_X) \
-  || (display_type == DISPLAY_RAW))
 
 
 /* Miscellaneous globals. */
 
 extern short hard_time_limit; /* If you exceed time limit, you lose.   */
-extern short barebones;       /* Don't print of stats for x interface. */
 extern short nolist;          /* Don't list game after exit.           */
+extern short xboard;          /* Use XBoard instead of xShogi protocol */
 
 
 /*
@@ -172,17 +171,22 @@ extern void movealgbr(short m, char *s);
 #define NO_PTYPE_PIECES 11
 #define NO_COLS          5
 #define NO_ROWS          5
+#define NO_CAMP_ROWS     1
 #else
 #define NO_PIECES       15
 #define MAX_CAPTURED    19
 #define NO_PTYPE_PIECES 15
 #define NO_COLS          9
 #define NO_ROWS          9
+#define NO_CAMP_ROWS     3
 #endif
 #define NO_SQUARES      (NO_COLS*NO_ROWS)
 
-#define ROW_NAME(n) ('a' + NO_ROWS - 1 - n)
-#define COL_NAME(n) ('1' + NO_COLS - 1 - n)
+#define ROW_NAME(n) ( xboard ? '1' + n : ('a' + NO_ROWS - 1 - n) )
+#define COL_NAME(n) ( xboard ? 'a' + n : ('1' + NO_COLS - 1 - n) )
+#define ROW_NUM(c) ( xboard ? c - '1' : ('a' + NO_ROWS - 1 - c) )
+#define COL_NUM(c) ( xboard ? c - 'a' : ('1' + NO_COLS - 1 - c) )
 
 #if defined HASHFILE || defined CACHE
 #  define PTBLBDSIZE (NO_SQUARES + NO_PIECES)
@@ -230,13 +234,8 @@ extern void movealgbr(short m, char *s);
 
 
 /* board properties */
-#ifndef MINISHOGI
-#define InBlackCamp(sq) ((sq) < 27)
-#define InWhiteCamp(sq) ((sq) > 53)
-#else
-#define InBlackCamp(sq) ((sq) < 5)
-#define InWhiteCamp(sq) ((sq) > 19)
-#endif
+#define InBlackCamp(sq) ((sq) < (NO_COLS * NO_CAMP_ROWS))
+#define InWhiteCamp(sq) ((sq) >= (NO_COLS * (NO_ROWS - NO_CAMP_ROWS)))
 #define InPromotionZone(side, sq) \
 (((side) == black) ? InWhiteCamp(sq) : InBlackCamp(sq))
 
@@ -331,13 +330,9 @@ enum {
 #ifndef MINISHOGI
 #define pxx (" PLNSGBRPLNSBRK ")
 #define qxx (" plnsgbrplnsbrk ")
-#define rxx ("ihgfedcba")
-#define cxx ("987654321")
 #else
 #define pxx (" PSGBRPSBRK ")
 #define qxx (" psgbrpsbrk ")
-#define rxx ("edcba")
-#define cxx ("54321")
 #endif
 
 /***************** Table limits ********************************************/
@@ -684,8 +679,6 @@ extern long znodes;
 extern char ColorStr[2][10];
 
 extern char mvstr[4][6];
-extern unsigned short MV[MAXDEPTH];
-extern int MSCORE;
 extern int mycnt1, mycnt2;
 extern short ahead;
 extern struct leaf rootnode;
@@ -1130,7 +1123,7 @@ struct display
     void (*ChangeAlphaWindow)(void);
     void (*ChangeBetaWindow)(void);
     void (*ChangeHashDepth)(void);
-    void (*ChangeSearchDepth)(void);
+    void (*ChangeSearchDepth)(char *sx);
     void (*ChangeXwindow)(void);
     void (*ClearScreen)(void);
     void (*DoDebug)(void);