Drop non-curses support from Curses_ElapsedTime.
[gnushogi.git] / gnushogi / rawdsp.c
index 4225f32..6c8e654 100644 (file)
@@ -60,9 +60,8 @@ Raw_ClearScreen(void)
 }
 
 
-/* FIXME: change to ShowPrompt? */
 void
-PromptForMove(void)
+Raw_ShowPrompt(void)
 {
     if (!barebones && !XSHOGI)
     {
@@ -124,6 +123,17 @@ Raw_ShowMessage(char *s)
 
 
 void
+Raw_AlwaysShowMessage(const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    vprintf(format, ap);
+    va_end(ap);
+    printf("\n");
+}
+
+
+void
 Raw_Printf(const char *format, ...)
 {
     va_list ap;
@@ -132,6 +142,7 @@ Raw_Printf(const char *format, ...)
     va_end(ap);
 }
 
+
 void
 Raw_doRequestInputString(const char* fmt, char* buffer)
 {
@@ -139,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)
 {
@@ -192,7 +215,6 @@ Raw_ShowStage(void)
  * End of trivial output routines.
  ****************************************/
 
-
 void
 Raw_Initialize(void)
 {
@@ -220,7 +242,6 @@ Raw_Initialize(void)
 }
 
 
-
 void
 Raw_ExitShogi(void)
 {
@@ -247,7 +268,6 @@ Raw_Die(int sig)
 }
 
 
-
 void
 Raw_TerminateSearch(int sig)
 {
@@ -262,7 +282,6 @@ Raw_TerminateSearch(int sig)
 }
 
 
-
 void
 Raw_help(void)
 {
@@ -343,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)
 {
@@ -449,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;
@@ -520,7 +534,6 @@ Raw_SearchStartStuff(short side)
 }
 
 
-
 void
 Raw_OutputMove(void)
 {
@@ -679,7 +692,6 @@ Raw_UpdateDisplay(short f, short t, short redraw, short isspec)
 }
 
 
-
 void
 Raw_ChangeAlphaWindow(void)
 {
@@ -690,7 +702,6 @@ Raw_ChangeAlphaWindow(void)
 }
 
 
-
 void
 Raw_ChangeBetaWindow(void)
 {
@@ -701,7 +712,6 @@ Raw_ChangeBetaWindow(void)
 }
 
 
-
 void
 Raw_GiveHint(void)
 {
@@ -715,7 +725,6 @@ Raw_GiveHint(void)
 }
 
 
-
 void
 Raw_SelectLevel(char *sx)
 {
@@ -798,8 +807,6 @@ Raw_SelectLevel(char *sx)
 }
 
 
-
-
 void
 Raw_ChangeSearchDepth(void)
 {
@@ -809,8 +816,6 @@ Raw_ChangeSearchDepth(void)
 }
 
 
-
-
 void
 Raw_ChangeHashDepth(void)
 {
@@ -821,7 +826,6 @@ Raw_ChangeHashDepth(void)
 }
 
 
-
 void
 Raw_SetContempt(void)
 {
@@ -830,7 +834,6 @@ Raw_SetContempt(void)
 }
 
 
-
 void
 Raw_ChangeXwindow(void)
 {
@@ -843,7 +846,6 @@ Raw_ChangeXwindow(void)
  * Raw_ShowPostnValue(short sq)
  * must have called ExaminePosition() first
  */
-
 void
 Raw_ShowPostnValue(short sq)
 {
@@ -865,7 +867,6 @@ Raw_ShowPostnValue(short sq)
 }
 
 
-
 void
 Raw_DoDebug(void)
 {
@@ -944,7 +945,6 @@ Raw_DoDebug(void)
 }
 
 
-
 void
 Raw_DoTable(short table[NO_SQUARES])
 {
@@ -964,7 +964,6 @@ Raw_DoTable(short table[NO_SQUARES])
 }
 
 
-
 void
 Raw_ShowPostnValues(void)
 {
@@ -988,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;
+        }
+    }
+}