   // Scale from ~0->4000 to tft.width using the calibration #'s
   *x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
   *y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
-  Serial.print("New x="); Serial.print(*x);
-  Serial.print(", y="); Serial.println(*y);
 
   return true;
 }
 
 //-----------------------------------------------
 // Draw the frequency byte buffer to the screen.
+//     select  index of digit to highlight
 // Updates all digits on the screen.  Skips leading zeros.
 //-----------------------------------------------
 
-void display_frequency(void)
+void display_frequency(int select=-1)
 {
   bool leading_space = true;
 
   for (int i = 0; i < NUM_F_CHAR; ++i)
   {
-    tft.fillRect(freq_display[i]-1, FREQ_OFFSET_Y-CHAR_HEIGHT-1,
-                 CHAR_WIDTH+2, CHAR_HEIGHT+2, FREQ_BG);
+    if (i == select)
+      tft.fillRect(char_x_offset[i], 2, CHAR_WIDTH+2, DEPTH_FREQ_DISPLAY-4, FREQ_SEL_BG);
+    else
+      tft.fillRect(char_x_offset[i], 2, CHAR_WIDTH+2, DEPTH_FREQ_DISPLAY-4, FREQ_BG);
+                   
     if ((freq_display[i] != '0') || !leading_space)
     {
       tft.drawChar(char_x_offset[i], FREQ_OFFSET_Y, freq_display[i], FREQ_FG, FREQ_BG, 1);

  ts.begin();
  ts_setRotation(1);
  
//  tft.fillScreen(ILI9341_BLACK);
  // draw the basic screen
  draw_screen();
  
  // draw the 'thousands' markers
  draw_thousands();
  
  // draw the 'edge of digits' markers
  for (int i = 0; i < NUM_F_CHAR; ++i)
  { 
    uint16_t x = char_x_offset[i];
    
    tft.drawFastVLine(x, 44, 6, ILI9341_RED);
  }
  
  // show the frequency
  display_frequency();
}

// The XPT2046 uses hardware SPI, #4 is CS with #3 for interrupts
#define TS_CS       4
#define TS_IRQ      3
//XPT2046_Touchscreen ts(TS_CS, TS_IRQ);
XPT2046_Touchscreen ts(TS_CS);

// The display also uses hardware SPI, plus #9 & #10
#define TFT_RST     8
