Implement pondering on position / analysis
authorH.G. Muller <h.g.muller@hccnet.nl>
Sat, 1 Jun 2013 08:07:21 +0000 (10:07 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Mon, 21 Oct 2013 08:40:25 +0000 (10:40 +0200)
Pondering is indicated by setting abortFlag to -1. This suppresses testing
on time, both in TerminalCheck() and at the end of an iteration.

hachu.c

diff --git a/hachu.c b/hachu.c
index ff5cc8f..0b06fbb 100644 (file)
--- a/hachu.c
+++ b/hachu.c
@@ -1853,7 +1853,7 @@ if(PATH) printf("%d:%2d:%d %3d %6x %-10s %6d %6d\n", level, depth, iterDep, curM
        printf("\n");\r
         fflush(stdout);\r
       }\r
-      if(GetTickCount() - startTime > tlim1) break; // do not start iteration we can (most likely) not finish\r
+      if(!(abortFlag & 1) && GetTickCount() - startTime > tlim1) break; // do not start iteration we can (most likely) not finish\r
     }\r
     replyDep = iterDep;\r
 #ifdef HASH\r
@@ -2261,6 +2261,9 @@ MapFromScratch(attacks);
 void\r
 PonderUntilInput (int stm)\r
 {\r
+MapFromScratch(attacks);\r
+  repCnt = 0; abortFlag = -1;\r
+  Search(-INF-1, INF+1, rootEval, maxDepth, sup1, sup2);\r
 }\r
  \r
     int TakeBack(int n)\r
@@ -2297,6 +2300,7 @@ printf("# setup done");fflush(stdout);
         if(!strcmp(command, "put"))     { ReadSquare(inBuf+4, &lastPut); continue; }  // ditto\r
         if(!strcmp(command, "."))       { inBuf[0] = 0; return; } // ignore for now\r
         if(!strcmp(command, "lift"))    { inBuf[0] = 0; Highlight(inBuf+5); return; } // treat here\r
+        abortFlag = 1;\r
         return;\r
       }\r
     }\r
@@ -2304,7 +2308,11 @@ printf("# setup done");fflush(stdout);
     void\r
     TerminationCheck()\r
     {\r
+      if(abortFlag < 0) { // check for input\r
+        if(InputWaiting()) GetLine(0); // read & examine input command\r
+      } else {        // check for time\r
         if(GetTickCount() - startTime > tlim3) abortFlag = 2;\r
+      }\r
     }\r
 \r
     main()\r