X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fsearch.c;h=1c4bbf7b994ccedac77b212f99074f7beb3fc49f;hb=HEAD;hp=c1d8fd99eb062b75ac93ff394ca43e71164fe118;hpb=fe6e10662390b3ad9642d6f5466e61c3a4faebc2;p=gnushogi.git diff --git a/gnushogi/search.c b/gnushogi/search.c index c1d8fd9..1c4bbf7 100644 --- a/gnushogi/search.c +++ b/gnushogi/search.c @@ -4,6 +4,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 * @@ -30,8 +31,6 @@ */ #include "gnushogi.h" -#include -#include short background = 0; static short DepthBeyond; @@ -182,7 +181,7 @@ SelectMove(short side, SelectMove_mode iop) #ifdef QUIETBACKGROUND if (!background) #endif /* QUIETBACKGROUND */ - ShowResponseTime(); + dsp->ShowResponseTime(); ExtraTime = 0; @@ -191,12 +190,12 @@ SelectMove(short side, SelectMove_mode iop) #ifdef QUIETBACKGROUND if (!background) #endif /* QUIETBACKGROUND */ - ShowSidetoMove(); + dsp->ShowSidetoMove(); #ifdef QUIETBACKGROUND if (!background) #endif /* QUIETBACKGROUND */ - SearchStartStuff(side); + dsp->SearchStartStuff(side); #ifdef HISTORY array_zero(history, sizeof_history); @@ -260,7 +259,7 @@ SelectMove(short side, SelectMove_mode iop) if (flag.regularstart && Book) { - flag.timeout = bookflag = OpeningBook(&hint, side); + flag.timeout = bookflag = OpeningBook(&hint); if (TCflag) ResponseTime += ResponseTime; @@ -306,7 +305,7 @@ SelectMove(short side, SelectMove_mode iop) # ifdef QUIETBACKGROUND if (!background) #endif /* QUIETBACKGROUND */ - ShowDepth(' '); + dsp->ShowDepth(' '); /* search at this level returns score of PV */ score = search(side, 1, Sdepth, alpha, beta, PrVar, &rpt); @@ -322,7 +321,7 @@ SelectMove(short side, SelectMove_mode iop) #ifdef QUIETBACKGROUND if (!background) #endif /* QUIETBACKGROUND */ - ShowDepth('-'); + dsp->ShowDepth('-'); if (TCflag && TCcount < MAXTCCOUNTR) { @@ -344,7 +343,7 @@ SelectMove(short side, SelectMove_mode iop) #ifdef QUIETBACKGROUND if (!background) #endif /* QUIETBACKGROUND */ - ShowDepth('+'); + dsp->ShowDepth('+'); score = search(side, 1, Sdepth, -(SCORE_LIMIT + 999), (SCORE_LIMIT + 999), PrVar, &rpt); @@ -397,7 +396,7 @@ SelectMove(short side, SelectMove_mode iop) #ifdef QUIETBACKGROUND if (!background) #endif /* QUIETBACKGROUND */ - ShowResults(score, PrVar, '.'); + dsp->ShowResults(score, PrVar, '.'); } /********************** end of main loop ***************************/ @@ -409,7 +408,7 @@ SelectMove(short side, SelectMove_mode iop) if (rpt >= 3) { root->flags |= draw; - DRAW = CP[101]; /* Repetition */ + DRAW = DRAW_REPETITION; } else { @@ -421,7 +420,7 @@ SelectMove(short side, SelectMove_mode iop) if (GameCnt == MAXMOVES) { root->flags |= draw; - DRAW = CP[80]; /* Max Moves */ + DRAW = DRAW_MAXMOVES; } } @@ -454,7 +453,7 @@ SelectMove(short side, SelectMove_mode iop) ElapsedTime(COMPUTE_AND_INIT_MODE); /* update time control info */ - OutputMove(); + dsp->OutputMove(); /* if mate set flag */ if ((score == -(SCORE_LIMIT + 999) || score == (SCORE_LIMIT + 998))) @@ -528,8 +527,6 @@ search(short side, short best = -(SCORE_LIMIT + 3000); short bestwidth = 0; short mustcut; - static struct pollfd pollfds[1] = { /* [0] = */ { /* .fd = */ STDIN_FILENO, - /* .events = */ POLLIN } }; #ifdef NULLMOVE short PVsave; @@ -547,19 +544,6 @@ search(short side, { ElapsedTime(COMPUTE_MODE); - if(background) { - int cnt = poll(pollfds, sizeof(pollfds)/sizeof(pollfds[0]), 0); - if (cnt < 0) { - perror("polling standard input"); - ExitShogi(); - } - if (cnt) { /* if anything to read, or error occured */ - if (!flag.timeout) - flag.back = true; /* previous: flag.timeout = true; */ - flag.bothsides = false; - } - } - if (flag.back) { flag.back = false; @@ -597,7 +581,7 @@ search(short side, #ifdef QUIETBACKGROUND if (!background) #endif - ShowResponseTime(); + dsp->ShowResponseTime(); } else if (!TCflag && flag.musttimeout && Sdepth > MINDEPTH) { @@ -727,7 +711,7 @@ search(short side, && (ProbeFTable(side, depth, ply, &alpha, &beta, &score) == true)) { - PutInTTable(side, score, depth, ply, alpha, beta, PV); + PutInTTable(side, score, depth, ply, beta, PV); bstline[ply] = PV; bstline[ply + 1] = 0; @@ -878,7 +862,6 @@ search(short side, nxtline[ply + 1] = 0; /* if at top level */ -#if !defined NOPOST if (ply == 1) { /* at the top update search status */ @@ -887,10 +870,9 @@ search(short side, #ifdef QUIETBACKGROUND if (!background) #endif /* QUIETBACKGROUND */ - ShowCurrentMove(pnt, node->f, node->t); + dsp->ShowCurrentMove(pnt, node->f, node->t); } } -#endif if (!(node->flags & exact)) { @@ -928,7 +910,7 @@ search(short side, && !ChkFlag[ply]))) { node->flags |= (draw | exact); - DRAW = CP[58]; /* Draw */ + DRAW = DRAW_JUSTDRAW; node->score = ((side == computer) ? contempt : -contempt); } @@ -1001,15 +983,15 @@ search(short side, { if (best > beta) { - ShowResults(best, bstline, '+'); + dsp->ShowResults(best, bstline, '+'); } else if (best < alpha) { - ShowResults(best, bstline, '-'); + dsp->ShowResults(best, bstline, '-'); } else { - ShowResults (best, bstline, '&'); + dsp->ShowResults(best, bstline, '&'); } } #ifdef QUIETBACKGROUND @@ -1042,13 +1024,13 @@ search(short side, { # ifdef HASHFILE /* MCV: warning: this confuses the formatter. */ if (use_ttable - && PutInTTable(side, best, depth, ply, alpha, beta, mv) + && PutInTTable(side, best, depth, ply, beta, mv) && hashfile && (depth > HashDepth) && (GameCnt < HashMoveLimit)) # else if (use_ttable - && PutInTTable(side, best, depth, ply, alpha, beta, mv)) + && PutInTTable(side, best, depth, ply, beta, mv)) # endif { PutInFTable(side, best, depth, ply, @@ -1133,8 +1115,8 @@ UpdatePieceList(short side, short sq, UpdatePieceList_mode iop) /* Make or Unmake drop move. */ -void -drop(short side, short piece, short f, short t, short iop) +static void +drop(short side, short piece, short t, short iop) { if (iop == 1) { @@ -1302,7 +1284,7 @@ MakeMove(short side, *tempst = svalue[t]; #endif - (void)drop(side, g->fpiece, f, t, 1); + (void)drop(side, g->fpiece, t, 1); } else { @@ -1430,7 +1412,7 @@ UnmakeMove(short side, if (node->flags & dropmask) { - (void)drop(side, (node->flags & pmask), f, t, 2); + (void)drop(side, (node->flags & pmask), t, 2); #if !defined SAVE_SVALUE svalue[t] = *tempst;