b5ae1b6
Index: extras/lcd/examples/README
b5ae1b6
===================================================================
b5ae1b6
--- extras/lcd/examples/README	(revision 2626)
b5ae1b6
+++ extras/lcd/examples/README	(revision 2627)
b5ae1b6
@@ -9,10 +9,10 @@
b5ae1b6
 Building
b5ae1b6
 
b5ae1b6
 The Makefile in this directory is for the top level packager. So
b5ae1b6
-to "build" the project, do this:
b5ae1b6
+to "build" lcd_mod.cod`, do this:
b5ae1b6
 
b5ae1b6
 
b5ae1b6
-$ gpasm lcd_mod.asm
b5ae1b6
+$ make -f makefile 
b5ae1b6
 
b5ae1b6
 This should assemble with no errors.
b5ae1b6
 
b5ae1b6
Index: extras/lcd/examples/makefile
b5ae1b6
===================================================================
b5ae1b6
--- extras/lcd/examples/makefile	(nonexistent)
b5ae1b6
+++ extras/lcd/examples/makefile	(revision 2627)
b5ae1b6
@@ -0,0 +1,16 @@
b5ae1b6
+
b5ae1b6
+all :  lcd_mod.cod
b5ae1b6
+
b5ae1b6
+ifdef EXTENDED_INSTRUCTIONS
b5ae1b6
+  ASM_FLAGS = -c --extended
b5ae1b6
+else
b5ae1b6
+  ASM_FLAGS = -c
b5ae1b6
+endif
b5ae1b6
+
b5ae1b6
+
b5ae1b6
+%.o : %.asm
b5ae1b6
+	gpasm $(ASM_FLAGS) $<
b5ae1b6
+
b5ae1b6
+%.cod : %.o
b5ae1b6
+	gplink --map  -q -o $@ $<
b5ae1b6
+
b5ae1b6
Index: extras/lcd/lcd.h
b5ae1b6
===================================================================
b5ae1b6
--- extras/lcd/lcd.h	(revision 2626)
b5ae1b6
+++ extras/lcd/lcd.h	(revision 2627)
b5ae1b6
@@ -60,6 +60,7 @@
b5ae1b6
 
b5ae1b6
 typedef char _5X7 [7][6];
b5ae1b6
 typedef char _5X8 [8][6];
b5ae1b6
+struct raw_font { _5X8 C_5X8;};
b5ae1b6
 
b5ae1b6
 class LcdFont {
b5ae1b6
 public:
b5ae1b6
Index: extras/lcd/lcdfont.h
b5ae1b6
===================================================================
b5ae1b6
--- extras/lcd/lcdfont.h	(revision 2626)
b5ae1b6
+++ extras/lcd/lcdfont.h	(revision 2627)
b5ae1b6
@@ -1,5 +1,5 @@
b5ae1b6
 #define FONT_LEN 256
b5ae1b6
-_5X8 test[FONT_LEN] = {
b5ae1b6
+raw_font font_list[FONT_LEN] = {
b5ae1b6
  { /* 0 */
b5ae1b6
   "     ",
b5ae1b6
   "     ",
b5ae1b6
Index: extras/lcd/lcdgui.cc
b5ae1b6
===================================================================
b5ae1b6
--- extras/lcd/lcdgui.cc	(revision 2626)
b5ae1b6
+++ extras/lcd/lcdgui.cc	(revision 2627)
b5ae1b6
@@ -31,29 +31,32 @@
b5ae1b6
 
b5ae1b6
 cairo_surface_t *LcdFont::create_image(LcdDisplay *lcdP, _5X8 *ch)
b5ae1b6
 {
b5ae1b6
-  int rows = 6 + lcdP->dots.y * lcdP->pixels.y;
b5ae1b6
-  int cols = 1 + lcdP->dots.x * lcdP->pixels.x;
b5ae1b6
-  cairo_surface_t *image = gdk_window_create_similar_surface(mywindow,
b5ae1b6
-                           CAIRO_CONTENT_COLOR_ALPHA, cols, rows);
b5ae1b6
-  cairo_t *cr = cairo_create(image);
b5ae1b6
-  cairo_set_line_width(cr, 0.5);
b5ae1b6
+    int rows = 6 + lcdP->dots.y * lcdP->pixels.y;
b5ae1b6
+    int cols = 1 + lcdP->dots.x * lcdP->pixels.x;
b5ae1b6
+    cairo_surface_t *image = gdk_window_create_similar_surface(mywindow,
b5ae1b6
+                             CAIRO_CONTENT_COLOR_ALPHA, cols, rows);
b5ae1b6
+    cairo_t *cr = cairo_create(image);
b5ae1b6
+    cairo_set_line_width(cr, 0.5);
b5ae1b6
 
b5ae1b6
-  for (int j = 0; j < lcdP->dots.y; j++) {
b5ae1b6
-    for (int i = 0; i < lcdP->dots.x; i++) {
b5ae1b6
-      if (ch[0][j][i] == '.') {
b5ae1b6
-        double y = 5 + lcdP->pixels.y * j;
b5ae1b6
-        double x = i * lcdP->pixels.x;
b5ae1b6
-        cairo_set_source_rgb(cr, double(0x11) / 255, double(0x33) / 255, double(0x11) / 255);
b5ae1b6
-        cairo_rectangle(cr, x, y, lcdP->pixels.x, lcdP->pixels.y);
b5ae1b6
-        cairo_fill_preserve(cr);
b5ae1b6
-        cairo_set_source_rgb(cr, double(0x66) / 255, double(0x88) / 255, double(0x66) / 255);
b5ae1b6
-        cairo_stroke(cr);
b5ae1b6
-      }
b5ae1b6
+    for (int j = 0; j < lcdP->dots.y; j++)
b5ae1b6
+    {
b5ae1b6
+        for (int i = 0; i < lcdP->dots.x; i++)
b5ae1b6
+        {
b5ae1b6
+            if (ch[0][j][i] == '.')
b5ae1b6
+            {
b5ae1b6
+                double y = 5 + lcdP->pixels.y * j;
b5ae1b6
+                double x = i * lcdP->pixels.x;
b5ae1b6
+                cairo_set_source_rgb(cr, double(0x11) / 255, double(0x33) / 255, double(0x11) / 255);
b5ae1b6
+                cairo_rectangle(cr, x, y, lcdP->pixels.x, lcdP->pixels.y);
b5ae1b6
+                cairo_fill_preserve(cr);
b5ae1b6
+                cairo_set_source_rgb(cr, double(0x66) / 255, double(0x88) / 255, double(0x66) / 255);
b5ae1b6
+                cairo_stroke(cr);
b5ae1b6
+            }
b5ae1b6
+        }
b5ae1b6
     }
b5ae1b6
-  }
b5ae1b6
 
b5ae1b6
-  cairo_destroy(cr);
b5ae1b6
-  return image;
b5ae1b6
+    cairo_destroy(cr);
b5ae1b6
+    return image;
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
@@ -66,147 +69,169 @@
b5ae1b6
 
b5ae1b6
 LcdFont::LcdFont(gint characters, GtkWidget *parent_window, LcdDisplay *lcdP)
b5ae1b6
 {
b5ae1b6
-  pixmaps.reserve(characters);
b5ae1b6
-  mywindow = gtk_widget_get_window(parent_window);
b5ae1b6
+    pixmaps.reserve(characters);
b5ae1b6
+    mywindow = gtk_widget_get_window(parent_window);
b5ae1b6
 
b5ae1b6
-  for (gint i = 0; i < characters; i++) {
b5ae1b6
-    if (strlen(test[i][0]) < 5) {
b5ae1b6
-      pixmaps.push_back(nullptr);
b5ae1b6
+    for (gint i = 0; i < characters; i++)
b5ae1b6
+    {
b5ae1b6
+        if (strlen(font_list[i].C_5X8[0]) < 5)
b5ae1b6
+        {
b5ae1b6
+            pixmaps.push_back(nullptr);
b5ae1b6
 
b5ae1b6
-    } else {
b5ae1b6
-      pixmaps.push_back(create_image(lcdP, &test[i]));
b5ae1b6
+        }
b5ae1b6
+        else
b5ae1b6
+        {
b5ae1b6
+            pixmaps.push_back(create_image(lcdP, &font_list[i].C_5X8));
b5ae1b6
+        }
b5ae1b6
     }
b5ae1b6
-  }
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
 LcdFont::~LcdFont()
b5ae1b6
 {
b5ae1b6
-  for (size_t i = 0; i < pixmaps.size(); ++i) {
b5ae1b6
-    if (pixmaps[i]) {
b5ae1b6
-      cairo_surface_destroy(pixmaps[i]);
b5ae1b6
+    for (size_t i = 0; i < pixmaps.size(); ++i)
b5ae1b6
+    {
b5ae1b6
+        if (pixmaps[i])
b5ae1b6
+        {
b5ae1b6
+            cairo_surface_destroy(pixmaps[i]);
b5ae1b6
+        }
b5ae1b6
     }
b5ae1b6
-  }
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
 void LcdFont::update_pixmap(int pos, _5X8 *tempchar, LcdDisplay *lcdP)
b5ae1b6
 {
b5ae1b6
-  if (pixmaps[pos]) {
b5ae1b6
-    cairo_surface_destroy(pixmaps[pos]);
b5ae1b6
-    pixmaps[pos] = nullptr;
b5ae1b6
-  }
b5ae1b6
+    if (pixmaps[pos])
b5ae1b6
+    {
b5ae1b6
+        cairo_surface_destroy(pixmaps[pos]);
b5ae1b6
+        pixmaps[pos] = nullptr;
b5ae1b6
+    }
b5ae1b6
 
b5ae1b6
-  pixmaps[pos] = create_image(lcdP, tempchar);
b5ae1b6
+    pixmaps[pos] = create_image(lcdP, tempchar);
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
 cairo_surface_t *LcdFont::getPixMap(unsigned int index)
b5ae1b6
 {
b5ae1b6
-  return ((index < pixmaps.size()) && pixmaps[index]) ? pixmaps[index] : pixmaps[0];
b5ae1b6
+    return ((index < pixmaps.size()) && pixmaps[index]) ? pixmaps[index] : pixmaps[0];
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
 void LcdDisplay::update_cgram_pixmaps()
b5ae1b6
 {
b5ae1b6
-  int i, j, k;
b5ae1b6
-  _5X8 tempchar;
b5ae1b6
+    int i, j, k;
b5ae1b6
+    _5X8 tempchar;
b5ae1b6
 
b5ae1b6
-  if (fontP == nullptr) {
b5ae1b6
-    return;
b5ae1b6
-  }
b5ae1b6
+    if (fontP == nullptr)
b5ae1b6
+    {
b5ae1b6
+        return;
b5ae1b6
+    }
b5ae1b6
 
b5ae1b6
-  for (i = 0; i < CGRAM_SIZE / 8; i++) {
b5ae1b6
-    for (j = 0; j < 8; j++) {
b5ae1b6
-      for (k = 0; k < 5; k++) {
b5ae1b6
-        if (m_hd44780->getCGRam(8 * i + j) & (1 << (4 - k))) {
b5ae1b6
-          tempchar[j][k] = '.';
b5ae1b6
+    for (i = 0; i < CGRAM_SIZE / 8; i++)
b5ae1b6
+    {
b5ae1b6
+        for (j = 0; j < 8; j++)
b5ae1b6
+        {
b5ae1b6
+            for (k = 0; k < 5; k++)
b5ae1b6
+            {
b5ae1b6
+                if (m_hd44780->getCGRam(8 * i + j) & (1 << (4 - k)))
b5ae1b6
+                {
b5ae1b6
+                    tempchar[j][k] = '.';
b5ae1b6
 
b5ae1b6
-        } else {
b5ae1b6
-          tempchar[j][k] = ' ';
b5ae1b6
+                }
b5ae1b6
+                else
b5ae1b6
+                {
b5ae1b6
+                    tempchar[j][k] = ' ';
b5ae1b6
+                }
b5ae1b6
+            }
b5ae1b6
+
b5ae1b6
+            tempchar[j][5] = 0;
b5ae1b6
         }
b5ae1b6
-      }
b5ae1b6
 
b5ae1b6
-      tempchar[j][5] = 0;
b5ae1b6
+        fontP->update_pixmap(i, &tempchar, this);
b5ae1b6
+        fontP->update_pixmap(i + 8, &tempchar, this);
b5ae1b6
     }
b5ae1b6
 
b5ae1b6
-    fontP->update_pixmap(i, &tempchar, this);
b5ae1b6
-    fontP->update_pixmap(i + 8, &tempchar, this);
b5ae1b6
-  }
b5ae1b6
-
b5ae1b6
-  m_hd44780->setCGRamupdate(false);
b5ae1b6
+    m_hd44780->setCGRamupdate(false);
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
 cairo_surface_t *LcdDisplay::get_pixmap(gint row, gint col)
b5ae1b6
 {
b5ae1b6
-  if (m_hd44780->CGRamupdate()) {
b5ae1b6
-    update_cgram_pixmaps();
b5ae1b6
-  }
b5ae1b6
+    if (m_hd44780->CGRamupdate())
b5ae1b6
+    {
b5ae1b6
+        update_cgram_pixmaps();
b5ae1b6
+    }
b5ae1b6
 
b5ae1b6
-  return fontP ? fontP->getPixMap(m_hd44780->getDDRam(row, col)) : nullptr;
b5ae1b6
+    return fontP ? fontP->getPixMap(m_hd44780->getDDRam(row, col)) : nullptr;
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
-static gboolean lcd_expose_event(GtkWidget *widget, GdkEvent * , gpointer user_data)
b5ae1b6
+static gboolean lcd_expose_event(GtkWidget *widget, GdkEvent *, gpointer user_data)
b5ae1b6
 {
b5ae1b6
-  LcdDisplay *lcdP = static_cast<LcdDisplay *>(user_data);
b5ae1b6
-  // If there is no font, then go create it.
b5ae1b6
+    LcdDisplay *lcdP = static_cast<LcdDisplay *>(user_data);
b5ae1b6
+    // If there is no font, then go create it.
b5ae1b6
 
b5ae1b6
-  if (!lcdP->fontP) {
b5ae1b6
-    lcdP->fontP = new LcdFont(FONT_LEN, widget, lcdP);
b5ae1b6
-  }
b5ae1b6
+    if (!lcdP->fontP)
b5ae1b6
+    {
b5ae1b6
+        lcdP->fontP = new LcdFont(FONT_LEN, widget, lcdP);
b5ae1b6
+    }
b5ae1b6
 
b5ae1b6
-  GtkAllocation allocation;
b5ae1b6
-  gtk_widget_get_allocation(widget, &allocation);
b5ae1b6
-  lcdP->w_width = allocation.width;
b5ae1b6
-  lcdP->w_height = allocation.height;
b5ae1b6
-  cairo_t *cr = gdk_cairo_create(gtk_widget_get_window(widget));
b5ae1b6
-  lcdP->update(cr);
b5ae1b6
-  cairo_destroy(cr);
b5ae1b6
-  return FALSE;
b5ae1b6
+    GtkAllocation allocation;
b5ae1b6
+    gtk_widget_get_allocation(widget, &allocation);
b5ae1b6
+    lcdP->w_width = allocation.width;
b5ae1b6
+    lcdP->w_height = allocation.height;
b5ae1b6
+    cairo_t *cr = gdk_cairo_create(gtk_widget_get_window(widget));
b5ae1b6
+    lcdP->update(cr);
b5ae1b6
+    cairo_destroy(cr);
b5ae1b6
+    return FALSE;
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
 void LcdDisplay::update(cairo_t *cr)
b5ae1b6
 {
b5ae1b6
-  guint i, j;
b5ae1b6
-  cairo_set_source_rgb(cr,
b5ae1b6
-                       double(0x78) / 255, double(0xa8) / 255, double(0x78) / 255);
b5ae1b6
-  cairo_rectangle(cr, 0.0, 0.0, w_width, w_height);
b5ae1b6
-  cairo_fill(cr);
b5ae1b6
-  gint cw = get_char_width();
b5ae1b6
-  gint ch = get_char_height();
b5ae1b6
-  gint border = get_border();
b5ae1b6
+    guint i, j;
b5ae1b6
+    cairo_set_source_rgb(cr,
b5ae1b6
+                         double(0x78) / 255, double(0xa8) / 255, double(0x78) / 255);
b5ae1b6
+    cairo_rectangle(cr, 0.0, 0.0, w_width, w_height);
b5ae1b6
+    cairo_fill(cr);
b5ae1b6
+    gint cw = get_char_width();
b5ae1b6
+    gint ch = get_char_height();
b5ae1b6
+    gint border = get_border();
b5ae1b6
 
b5ae1b6
-  if (!(disp_type & TWO_ROWS_IN_ONE)) {
b5ae1b6
-    for (j = 0; j < rows; j++)
b5ae1b6
-      for (i = 0; i < cols; i++) {
b5ae1b6
-        cairo_set_source_surface(cr, get_pixmap(j, i), border + i * cw, border + j * (ch));
b5ae1b6
-        cairo_paint(cr);
b5ae1b6
-      }
b5ae1b6
+    if (!(disp_type & TWO_ROWS_IN_ONE))
b5ae1b6
+    {
b5ae1b6
+        for (j = 0; j < rows; j++)
b5ae1b6
+            for (i = 0; i < cols; i++)
b5ae1b6
+            {
b5ae1b6
+                cairo_set_source_surface(cr, get_pixmap(j, i), border + i * cw, border + j * (ch));
b5ae1b6
+                cairo_paint(cr);
b5ae1b6
+            }
b5ae1b6
 
b5ae1b6
-  } else {
b5ae1b6
-    guint pos;
b5ae1b6
+    }
b5ae1b6
+    else
b5ae1b6
+    {
b5ae1b6
+        guint pos;
b5ae1b6
 
b5ae1b6
-    for (pos = 0, j = 0; j < rows; j++)
b5ae1b6
-      for (i = 0; i < cols; pos++, i++) {
b5ae1b6
-        cairo_set_source_surface(cr, get_pixmap(j, i), border + pos * cw, border);
b5ae1b6
-        cairo_paint(cr);
b5ae1b6
-      }
b5ae1b6
-  }
b5ae1b6
+        for (pos = 0, j = 0; j < rows; j++)
b5ae1b6
+            for (i = 0; i < cols; pos++, i++)
b5ae1b6
+            {
b5ae1b6
+                cairo_set_source_surface(cr, get_pixmap(j, i), border + pos * cw, border);
b5ae1b6
+                cairo_paint(cr);
b5ae1b6
+            }
b5ae1b6
+    }
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
-static gint cursor_event(GtkWidget * , GdkEvent *event, gpointer  * )
b5ae1b6
+static gint cursor_event(GtkWidget *, GdkEvent *event, gpointer  * )
b5ae1b6
 {
b5ae1b6
-  if ((event->type == GDK_BUTTON_PRESS) &&
b5ae1b6
-      ((event->button.button == 1) ||
b5ae1b6
-       (event->button.button == 3))) {
b5ae1b6
-    return TRUE;
b5ae1b6
-  }
b5ae1b6
+    if ((event->type == GDK_BUTTON_PRESS) &&
b5ae1b6
+            ((event->button.button == 1) ||
b5ae1b6
+             (event->button.button == 3)))
b5ae1b6
+    {
b5ae1b6
+        return TRUE;
b5ae1b6
+    }
b5ae1b6
 
b5ae1b6
-  return FALSE;
b5ae1b6
+    return FALSE;
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 
b5ae1b6
@@ -217,63 +242,68 @@
b5ae1b6
 
b5ae1b6
 void LcdDisplay::CreateGraphics()
b5ae1b6
 {
b5ae1b6
-  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
b5ae1b6
+    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
b5ae1b6
 
b5ae1b6
-  if (window) {
b5ae1b6
-    char title[128];
b5ae1b6
-    g_snprintf(title, sizeof(title), "%d X %d", rows, cols);
b5ae1b6
+    if (window)
b5ae1b6
+    {
b5ae1b6
+        char title[128];
b5ae1b6
+        g_snprintf(title, sizeof(title), "%d X %d", rows, cols);
b5ae1b6
 
b5ae1b6
-    if (disp_type & TWO_ROWS_IN_ONE) {
b5ae1b6
-      g_strlcat(title, " (in one row)", sizeof(title));
b5ae1b6
-    }
b5ae1b6
+        if (disp_type & TWO_ROWS_IN_ONE)
b5ae1b6
+        {
b5ae1b6
+            g_strlcat(title, " (in one row)", sizeof(title));
b5ae1b6
+        }
b5ae1b6
 
b5ae1b6
-    gtk_widget_realize(window);
b5ae1b6
-    gtk_window_set_title(GTK_WINDOW(window), "LCD");
b5ae1b6
-    GtkWidget *main_vbox = gtk_vbox_new(FALSE, 5);
b5ae1b6
-    gtk_container_set_border_width(GTK_CONTAINER(main_vbox), 0);
b5ae1b6
-    gtk_container_add(GTK_CONTAINER(window), main_vbox);
b5ae1b6
-    GtkWidget *vbox =
b5ae1b6
-      gtk_widget_new(gtk_vbox_get_type(),
b5ae1b6
-                     "GtkBox::homogeneous", FALSE,
b5ae1b6
-                     //"GtkBox::spacing", 5,
b5ae1b6
-                     //"GtkContainer::border_width", 10,
b5ae1b6
-                     "GtkWidget::parent", main_vbox,
b5ae1b6
-                     "GtkWidget::visible", TRUE,
b5ae1b6
-                     nullptr);
b5ae1b6
-    GtkWidget *frame =
b5ae1b6
-      gtk_widget_new(gtk_frame_get_type(),
b5ae1b6
-                     "GtkFrame::shadow", GTK_SHADOW_ETCHED_IN,
b5ae1b6
-                     "GtkFrame::label_xalign", 0.5,
b5ae1b6
-                     "GtkFrame::label", title,
b5ae1b6
-                     //"GtkContainer::border_width", 10,
b5ae1b6
-                     "GtkWidget::parent", vbox,
b5ae1b6
-                     "GtkWidget::visible", TRUE,
b5ae1b6
-                     nullptr);
b5ae1b6
-    darea = gtk_drawing_area_new();
b5ae1b6
+        gtk_widget_realize(window);
b5ae1b6
+        gtk_window_set_title(GTK_WINDOW(window), "LCD");
b5ae1b6
+        GtkWidget *main_vbox = gtk_vbox_new(FALSE, 5);
b5ae1b6
+        gtk_container_set_border_width(GTK_CONTAINER(main_vbox), 0);
b5ae1b6
+        gtk_container_add(GTK_CONTAINER(window), main_vbox);
b5ae1b6
+        GtkWidget *vbox =
b5ae1b6
+            gtk_widget_new(gtk_vbox_get_type(),
b5ae1b6
+                           "GtkBox::homogeneous", FALSE,
b5ae1b6
+                           //"GtkBox::spacing", 5,
b5ae1b6
+                           //"GtkContainer::border_width", 10,
b5ae1b6
+                           "GtkWidget::parent", main_vbox,
b5ae1b6
+                           "GtkWidget::visible", TRUE,
b5ae1b6
+                           nullptr);
b5ae1b6
+        GtkWidget *frame =
b5ae1b6
+            gtk_widget_new(gtk_frame_get_type(),
b5ae1b6
+                           "GtkFrame::shadow", GTK_SHADOW_ETCHED_IN,
b5ae1b6
+                           "GtkFrame::label_xalign", 0.5,
b5ae1b6
+                           "GtkFrame::label", title,
b5ae1b6
+                           //"GtkContainer::border_width", 10,
b5ae1b6
+                           "GtkWidget::parent", vbox,
b5ae1b6
+                           "GtkWidget::visible", TRUE,
b5ae1b6
+                           nullptr);
b5ae1b6
+        darea = gtk_drawing_area_new();
b5ae1b6
 
b5ae1b6
-    if (!(disp_type & TWO_ROWS_IN_ONE)) {
b5ae1b6
-      gtk_widget_set_size_request(darea,
b5ae1b6
-                                  cols * get_char_width() + 2 * get_border(),
b5ae1b6
-                                  rows * (get_char_height() + get_border()) + get_border());
b5ae1b6
+        if (!(disp_type & TWO_ROWS_IN_ONE))
b5ae1b6
+        {
b5ae1b6
+            gtk_widget_set_size_request(darea,
b5ae1b6
+                                        cols * get_char_width() + 2 * get_border(),
b5ae1b6
+                                        rows * (get_char_height() + get_border()) + get_border());
b5ae1b6
 
b5ae1b6
-    } else {
b5ae1b6
-      gtk_widget_set_size_request(darea,
b5ae1b6
-                                  rows * cols * get_char_width() + 2 * get_border(),
b5ae1b6
-                                  get_char_height() + 2 * get_border());
b5ae1b6
+        }
b5ae1b6
+        else
b5ae1b6
+        {
b5ae1b6
+            gtk_widget_set_size_request(darea,
b5ae1b6
+                                        rows * cols * get_char_width() + 2 * get_border(),
b5ae1b6
+                                        get_char_height() + 2 * get_border());
b5ae1b6
+        }
b5ae1b6
+
b5ae1b6
+        gtk_container_add(GTK_CONTAINER(frame), darea);
b5ae1b6
+        g_signal_connect(darea,
b5ae1b6
+                         "expose_event",
b5ae1b6
+                         G_CALLBACK(lcd_expose_event),
b5ae1b6
+                         this);
b5ae1b6
+        gtk_widget_add_events(darea, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK);
b5ae1b6
+        g_signal_connect(darea,
b5ae1b6
+                         "button_press_event",
b5ae1b6
+                         G_CALLBACK(cursor_event),
b5ae1b6
+                         nullptr);
b5ae1b6
+        gtk_widget_show_all(window);
b5ae1b6
     }
b5ae1b6
-
b5ae1b6
-    gtk_container_add(GTK_CONTAINER(frame), darea);
b5ae1b6
-    g_signal_connect(darea,
b5ae1b6
-                     "expose_event",
b5ae1b6
-                     G_CALLBACK(lcd_expose_event),
b5ae1b6
-                     this);
b5ae1b6
-    gtk_widget_add_events(darea, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK);
b5ae1b6
-    g_signal_connect(darea,
b5ae1b6
-                     "button_press_event",
b5ae1b6
-                     G_CALLBACK(cursor_event),
b5ae1b6
-                     nullptr);
b5ae1b6
-    gtk_widget_show_all(window);
b5ae1b6
-  }
b5ae1b6
 }
b5ae1b6
 
b5ae1b6
 #endif //HAVE_GUI