void grub_console_gotoxy (grub_uint8_t x, grub_uint8_t y);
void grub_console_cls (void);
void grub_console_setcursor (int on);
+void grub_console_putchar (const struct grub_unicode_glyph *c);
/* Initialize the console system. */
void grub_console_init (void);
extern grub_uint8_t grub_console_cur_color;
-void
-grub_console_putchar (const struct grub_unicode_glyph *c);
-grub_ssize_t
-grub_console_getcharwidth (const struct grub_unicode_glyph *c);
grub_uint16_t grub_console_getwh (void);
void grub_console_setcolorstate (grub_term_color_state state);
void grub_console_setcolor (grub_uint8_t normal_color, grub_uint8_t highlight_color);
void grub_console_getcolor (grub_uint8_t *normal_color, grub_uint8_t *highlight_color);
-/* Implemented in both kern/i386/pc/startup.S and vga_text.c; this symbol
- is not exported, so there's no collision, but vga_common.c expects this
- prototype to be the same. */
-void grub_console_real_putchar (int c);
-
#endif /* ! GRUB_VGA_COMMON_CPU_HEADER */
/*
- * void grub_console_real_putchar (int c)
+ * void grub_console_putchar (const struct grub_unicode_glyph *c)
*
* Put the character C on the console. Because GRUB wants to write a
* character with an attribute, this implementation is a bit tricky.
* get the height of the screen, and the TELETYPE OUTPUT BIOS call doesn't
* support setting a background attribute.
*/
-FUNCTION(grub_console_real_putchar)
- movl %eax, %edx
+FUNCTION(grub_console_putchar)
+ /* Retrieve the base character. */
+ movl 0(%eax), %edx
pusha
movb EXT_C(grub_console_cur_color), %bl
grub_curr_x++;
}
-void
-grub_console_real_putchar (int c)
+static void
+grub_vga_text_putchar (const struct grub_unicode_glyph *c)
{
- switch (c)
+ switch (c->base)
{
case '\b':
if (grub_curr_x != 0)
grub_curr_x = 0;
break;
default:
- screen_write_char (grub_curr_x,
- grub_curr_y, c | (grub_console_cur_color << 8));
+ screen_write_char (grub_curr_x, grub_curr_y,
+ c->base | (grub_console_cur_color << 8));
inc_x ();
}
.name = "vga_text",
.init = grub_vga_text_init_fini,
.fini = grub_vga_text_init_fini,
- .putchar = grub_console_putchar,
+ .putchar = grub_vga_text_putchar,
.getwh = grub_console_getwh,
.getxy = grub_vga_text_getxy,
.gotoxy = grub_vga_text_gotoxy,
static grub_uint8_t grub_console_normal_color = 0x7;
static grub_uint8_t grub_console_highlight_color = 0x70;
-void
-grub_console_putchar (const struct grub_unicode_glyph *c)
-{
- grub_console_real_putchar (c->base);
-}
-
grub_uint16_t
grub_console_getwh (void)
{