X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Frawdsp.c;h=6c8e654edb71fdf7abfbc39bd102ef7e6e5a4e08;hb=485ee905dd57ee67179c013ccd113935f5d6667f;hp=328d80dc32a3f910186757824a743ecd5c9750cf;hpb=3f589711eb3ecc7644378d6a0f2f29bc4b4c7db9;p=gnushogi.git diff --git a/gnushogi/rawdsp.c b/gnushogi/rawdsp.c index 328d80d..6c8e654 100644 --- a/gnushogi/rawdsp.c +++ b/gnushogi/rawdsp.c @@ -60,9 +60,8 @@ Raw_ClearScreen(void) } -/* FIXME: change to ShowPrompt? */ void -PromptForMove(void) +Raw_ShowPrompt(void) { if (!barebones && !XSHOGI) { @@ -122,6 +121,7 @@ Raw_ShowMessage(char *s) printf("%s\n", s); } + void Raw_AlwaysShowMessage(const char *format, ...) { @@ -132,6 +132,7 @@ Raw_AlwaysShowMessage(const char *format, ...) printf("\n"); } + void Raw_Printf(const char *format, ...) { @@ -141,6 +142,7 @@ Raw_Printf(const char *format, ...) va_end(ap); } + void Raw_doRequestInputString(const char* fmt, char* buffer) { @@ -148,6 +150,18 @@ Raw_doRequestInputString(const char* fmt, char* buffer) } +int +Raw_GetString(char* sx) +{ + int eof = 0; + sx[0] = '\0'; + + while(!eof && !sx[0]) + eof = (fgets(sx, 80, stdin) == NULL); + return eof; +} + + void Raw_ShowNodeCnt(long NodeCnt) { @@ -201,7 +215,6 @@ Raw_ShowStage(void) * End of trivial output routines. ****************************************/ - void Raw_Initialize(void) { @@ -229,7 +242,6 @@ Raw_Initialize(void) } - void Raw_ExitShogi(void) { @@ -256,7 +268,6 @@ Raw_Die(int sig) } - void Raw_TerminateSearch(int sig) { @@ -271,7 +282,6 @@ Raw_TerminateSearch(int sig) } - void Raw_help(void) { @@ -352,12 +362,10 @@ Raw_help(void) } - /* * Set up a board position. Pieces are entered by typing the piece followed * by the location. For example, Nf3 will place a knight on square f3. */ - void Raw_EditBoard(void) { @@ -458,16 +466,13 @@ Raw_EditBoard(void) } - - /* * Set up a board position. * Nine lines of nine characters are used to setup the board. 9a-1a is the * first line. White pieces are represented by uppercase characters. */ - void -SetupBoard(void) +Raw_SetupBoard(void) { short r, c, sq, i; char ch; @@ -529,7 +534,6 @@ Raw_SearchStartStuff(short side) } - void Raw_OutputMove(void) { @@ -688,7 +692,6 @@ Raw_UpdateDisplay(short f, short t, short redraw, short isspec) } - void Raw_ChangeAlphaWindow(void) { @@ -699,7 +702,6 @@ Raw_ChangeAlphaWindow(void) } - void Raw_ChangeBetaWindow(void) { @@ -710,7 +712,6 @@ Raw_ChangeBetaWindow(void) } - void Raw_GiveHint(void) { @@ -724,7 +725,6 @@ Raw_GiveHint(void) } - void Raw_SelectLevel(char *sx) { @@ -807,8 +807,6 @@ Raw_SelectLevel(char *sx) } - - void Raw_ChangeSearchDepth(void) { @@ -818,8 +816,6 @@ Raw_ChangeSearchDepth(void) } - - void Raw_ChangeHashDepth(void) { @@ -830,7 +826,6 @@ Raw_ChangeHashDepth(void) } - void Raw_SetContempt(void) { @@ -839,7 +834,6 @@ Raw_SetContempt(void) } - void Raw_ChangeXwindow(void) { @@ -852,7 +846,6 @@ Raw_ChangeXwindow(void) * Raw_ShowPostnValue(short sq) * must have called ExaminePosition() first */ - void Raw_ShowPostnValue(short sq) { @@ -874,7 +867,6 @@ Raw_ShowPostnValue(short sq) } - void Raw_DoDebug(void) { @@ -953,7 +945,6 @@ Raw_DoDebug(void) } - void Raw_DoTable(short table[NO_SQUARES]) { @@ -973,7 +964,6 @@ Raw_DoTable(short table[NO_SQUARES]) } - void Raw_ShowPostnValues(void) { @@ -997,3 +987,59 @@ Raw_ShowPostnValues(void) mtl[opponent], pscore[opponent], GameType[opponent]); printf("\nhung black %d hung white %d\n", hung[black], hung[white]); } + + +/* + * Determine the time that has passed since the search was started. If the + * elapsed time exceeds the target(ResponseTime + ExtraTime) then set timeout + * to true which will terminate the search. + * iop = COMPUTE_MODE calculate et, bump ETnodes + * iop = COMPUTE_AND_INIT_MODE calculate et, set timeout if time exceeded, + * set reference time + */ +void +Raw_ElapsedTime(ElapsedTime_mode iop) +{ + long current_time; +#ifdef HAVE_GETTIMEOFDAY + struct timeval tv; + gettimeofday(&tv, NULL); + current_time = tv.tv_sec*100 + (tv.tv_usec/10000); +#else + et = ((current_time = time((long *) 0)) - time0) * 100; +#endif + +#ifdef INTERRUPT_TEST + if (iop == INIT_INTERRUPT_MODE) + { + itime0 = current_time; + } + else if (iop == COMPUTE_INTERRUPT_MODE) + { + it = current_time - itime0; + } + else +#endif + { +#ifdef HAVE_GETTIMEOFDAY + et = current_time - time0; +#endif + ETnodes = NodeCnt + znodes; + + if (et < 0) + { +#ifdef INTERRUPT_TEST + printf("elapsed time %ld not positive\n", et); +#endif + et = 0; + } + + if (iop == COMPUTE_AND_INIT_MODE) + { + if ((et > (ResponseTime + ExtraTime)) && (Sdepth > MINDEPTH)) + flag.timeout = true; + + time0 = current_time; + } + } +}