SlaveResize(dualOptions+3);
 }
 
+static char clockMsg[2][MSG_SIZ];
+
 void
 DisplayWhiteClock (long timeRemaining, int highlight)
 {
+    int m = (clockMsg[0][0] != 0); // printing message prevails over printing color:time
     if(appData.noGUI) return;
     if(twoBoards && partnerUp) {
        DisplayTimerLabel(&dualOptions[0], _("White"), timeRemaining, highlight);
        return;
     }
-    DisplayTimerLabel(&mainOptions[W_WHITE], _("White"), timeRemaining, highlight);
+    DisplayTimerLabel(&mainOptions[W_WHITE], m ? clockMsg[0] : _("White"), timeRemaining, highlight + 2*m);
     if(highlight) SetClockIcon(0);
 }
 
 void
 DisplayBlackClock (long timeRemaining, int highlight)
 {
+    int m = (clockMsg[1][0] != 0);
     if(appData.noGUI) return;
     if(twoBoards && partnerUp) {
        DisplayTimerLabel(&dualOptions[1], _("Black"), timeRemaining, highlight);
        return;
     }
-    DisplayTimerLabel(&mainOptions[W_BLACK], _("Black"), timeRemaining, highlight);
+    DisplayTimerLabel(&mainOptions[W_BLACK], m ? clockMsg[1] : _("Black"), timeRemaining, highlight + 2*m);
     if(highlight) SetClockIcon(1);
 }
 
+void
+SetClockMessage (int n, char *msg)
+{
+    safeStrCpy(clockMsg[n], msg, MSG_SIZ);
+}
 
 //---------------------------------------------
 
 
 void StartClockTimer P((long millisec));
 void DisplayWhiteClock P((long timeRemaining, int highlight));
 void DisplayBlackClock P((long timeRemaining, int highlight));
+void SetClockMessage P((int color, char *msg));
 void UpdateLogos P((int display));
 
 int LoadGameTimerRunning P((void));
 
     char bgcolor[10];
     char fgcolor[10];
 
+    if(highlight > 1) { // kludge to force message printing
+        highlight &= 1;
+        snprintf(buf, MSG_SIZ, " %s", color);
+    } else if (appData.clockMode) {
+        snprintf(buf, MSG_SIZ, "%s:_%s", color, TimeString(timer));
+    } else {
+        snprintf(buf, MSG_SIZ, "%s  ", color);
+    }
+
     if (highlight) {
        strcpy(bgcolor, "black");
         strcpy(fgcolor, "white");
     gdk_color_parse( bgcolor, &col );
     gtk_widget_modify_bg(gtk_widget_get_parent(opt->handle), GTK_STATE_NORMAL, &col);
 
-    if (appData.clockMode) {
-        snprintf(buf, MSG_SIZ, "%s:_%s", color, TimeString(timer));
-    } else {
-        snprintf(buf, MSG_SIZ, "%s  ", color);
-    }
     p = strchr(buf, '_'); if(p) *p = (two ? '\n' : ' ');
     markup = g_markup_printf_escaped("<span font=\"%s\" background=\"%s\" foreground=\"%s\">%s</span>", appData.clockFont,
                                         bgcolor, fgcolor, buf);
 
     case WhiteLance:\r
 \r
 \r
+\r
         return PM_WL;\r
     case WhiteFalcon:\r
         return PM_WV;\r
        appData.icsActive = FALSE;\r
       } else {\r
        MessageBox(hDlg, _("Choose an option, or cancel to exit"),\r
+\r
                   _("Option Error"), MB_OK|MB_ICONEXCLAMATION);\r
        return TRUE;\r
       }\r
 LoadIcsTextMenu(IcsTextMenuEntry *e)\r
 {\r
   HMENU hmenu, h;\r
+\r
   int i = 0;\r
   hmenu = LoadMenu(hInst, "TextMenu");\r
   h = GetSubMenu(hmenu, 0);\r
   HFONT oldFont;\r
 \r
   if (twoBoards && partnerUp) return;\r
-  if (appData.clockMode) {\r
+  if (appData.clockMode && highlight < 2) { // highlight used as kludge to force printing of message\r
     if (tinyLayout == 2)\r
       snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%c %s %s", color[0], TimeString(timeRemaining), flagFell);\r
     else\r
       snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%s:_%s %s", color, TimeString(timeRemaining), flagFell);\r
     str = buf;\r
   } else {\r
+    highlight &= 1;\r
     str = color;\r
   }\r
   p = strchr(str, '_');\r
                             (UINT) millisec, NULL);\r
 }\r
 \r
+static char clockMsg[2][MSG_SIZ];\r
+\r
 void\r
 DisplayWhiteClock(long timeRemaining, int highlight)\r
 {\r
   HDC hdc;\r
-  char *flag = whiteFlag && gameMode == TwoMachinesPlay ? "(!)" : "";\r
+  char *msg, *flag = whiteFlag && gameMode == TwoMachinesPlay ? "(!)" : "";\r
 \r
   if(appData.noGUI) return;\r
   hdc = GetDC(hwndMain);\r
   if (!IsIconic(hwndMain)) {\r
-    DisplayAClock(hdc, timeRemaining, highlight, \r
-                       flipClock ? &blackRect : &whiteRect, _("White"), flag);\r
+    int m = (clockMsg[0][0] != 0); \r
+    DisplayAClock(hdc, timeRemaining, highlight + 2*m, \r
+                       flipClock ? &blackRect : &whiteRect, m ? clockMsg[0] : _("White"), flag);\r
   }\r
   if (highlight && iconCurrent == iconBlack) {\r
     iconCurrent = iconWhite;\r
   if(appData.noGUI) return;\r
   hdc = GetDC(hwndMain);\r
   if (!IsIconic(hwndMain)) {\r
-    DisplayAClock(hdc, timeRemaining, highlight, \r
-                       flipClock ? &whiteRect : &blackRect, _("Black"), flag);\r
+    int m = (clockMsg[1][0] != 0); \r
+    DisplayAClock(hdc, timeRemaining, highlight + 2*m, \r
+                       flipClock ? &whiteRect : &blackRect, m ? clockMsg[1] : _("Black"), flag);\r
   }\r
   if (highlight && iconCurrent == iconWhite) {\r
     iconCurrent = iconBlack;\r
     PostMessage(hwndConsole, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent);\r
 }\r
 \r
+void\r
+SetClockMessage (int color, char *msg)\r
+{\r
+  safeStrCpy(clockMsg[n], msg, MSG_SIZ);\r
+}\r
 \r
 int\r
 LoadGameTimerRunning()\r
 
         (timer / 1000) < appData.icsAlarmTime)
       foregroundOrWarningColor = lowTimeWarningColor;
 
-    if (appData.clockMode) {
+    if(highlight > 1) {
+      highlight &= 1;
+      snprintf(buf, MSG_SIZ, "%s", color);
+    } else if (appData.clockMode) {
       snprintf(buf, MSG_SIZ, "%s:_%s", color, TimeString(timer));
     } else {
       snprintf(buf, MSG_SIZ, "%s  ", color);