while(1) {\r
int i, difficult;\r
\r
- LaunchSearch(); // start a search if we need one\r
- nomove:\r
for(difficult=0; !difficult; ) { // read and handle commands that can (or must) be handled during thinking\r
fflush(toE); fflush(stdout);\r
if(!ReadLine(stdin, line)) printf("# EOF\n"), sprintf(line, "quit -1\n");\r
searching = 0; pause = 2; moveNr++; startTime = GetTickCount(); // clock starts running now\r
EPRINT((f, "# ponderhit%s\n", draw)) fflush(toE); fflush(stdout);\r
searching = 3; // request blocking input during thinking\r
- goto nomove;\r
+ continue;\r
}\r
StopPonder(1); searching = 0;\r
}\r
strcpy(move[moveNr++], command); // possibly overwrites ponder move\r
- continue;\r
- }\r
+ } else\r
if(!strcmp(command, "resume")) {\r
searching = 0;\r
if(suspended == 2) StartPonder(moveNr); // restart interrupted ponder search\r
- suspended = 0; continue; // causes thinking to start in normal way if on move or analyzing\r
- }\r
+ suspended = 0; // causes thinking to start in normal way if on move or analyzing\r
+ } else\r
+ {\r
if(searching == 3) { // command arrived during thinking; order abort for 'instant commands'\r
if(!strcmp(command, "?") || !strcmp(command, "quit") ||\r
!strcmp(command, "force") || !strcmp(command, "result")) { EPRINT((f, "# stop\n")); fflush(toE); }\r
}\r
if(qStart == qEnd) qStart = qEnd = queue;\r
p = line; while(qEnd < queue+10000 && (*qEnd++ = *p++) != '\n') {}\r
- if(DoCommand()) goto nomove;\r
+ if(DoCommand()) continue;\r
+ }\r
+\r
+ LaunchSearch(); // start a search if we need one\r
}\r
}\r
\r