From bfa5d8f54612811d306d1453b7d2da549bbc60ee Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 13 Feb 2014 02:27:49 +0100 Subject: Add --font-width option to force 8/9 pixel font width This permits to choose between 720x400 or 640x400 textmode without changing the font. * console-client/vga-hw.h (VGA_ATTR_MODE_ADDR, VGA_ATTR_MODE_LGE, VGA_ATTR_ENABLE_ADDR): New macros. * console-client/vga-support.c (vga_state): Add `attr_mode' field. (vga_init): Save attribute mode subregister content. Re-enable the screen after that. (vga_fini): Restore attribute mode subregister content. Re-enable the screen after that. (vga_set_font_width): When the font width is set to 9, enable VGA LGE to properly handle box-drawing unicode characters. Re-nable the screen after that. (vga_exchange_palette_attributes): Use VGA_ATTR_ENABLE_ADDR macro instead of harcoded 0x20. * console-client/vga-dynafont.h (dynafont_new): Add `width' parameter. * console-client/vga-dynafont.c (dynafont): Add `width' field. (dynafont_new): Add `width' parameter, stored in `width' field of `df', but using the font bbox as default value. Use it to decide whether to use VGA LGE or not. (dynafont_activate): Use `width' field of `df' instead of the font bbox to configure the VGA glyph width. * console-client/vga.c (vga_display_font_width): New variable. (vga_display): New `df_width' field. (argp_option): New `font-width' option. (parse_opt): Handle `font-width' option. (vga_display_init): Copy `vga_display_font_width' to `disp'. (vga_display_start): Pass `df_width' to `dynafont_new'. --- console-client/vga-hw.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'console-client/vga-hw.h') diff --git a/console-client/vga-hw.h b/console-client/vga-hw.h index 7275b03e..b4212e62 100644 --- a/console-client/vga-hw.h +++ b/console-client/vga-hw.h @@ -132,6 +132,11 @@ #define VGA_ATTR_ADDR_DATA_REG 0x3c0 #define VGA_ATTR_DATA_READ_REG 0x3c1 +/* The Attribute Mode Control subregister. */ +#define VGA_ATTR_MODE_ADDR 0x10 +#define VGA_ATTR_MODE_LGE 0x04 + +#define VGA_ATTR_ENABLE_ADDR 0x20 /* Other junk. */ #define VGA_INPUT_STATUS_1_REG 0x3da -- cgit v1.2.3