VGA defined the extended ASCII set based on CP437, but the function vga_write_text() accepts a signed char array. This will cause unnecessary confusion that if we want to print u with umlaut (code=129 in CP437), we need to explicitly cast it to -127 in signed char. Since we still want to leverage the built-in string utilities which only accepts const char*, we still need to cast it to signed char while processing, and cast it back to unsigned once we write into the frame buffer. BRANCH=brya BUG=b:264666392 TEST=emerge-brya coreboot chromeos-bootimage Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org> Change-Id: If555bbc05f40ce3f02339c0468afff6dda8b7ded Reviewed-on: https://review.coreboot.org/c/coreboot/+/73099 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tarun Tuli <taruntuli@google.com>
40 lines
963 B
C
40 lines
963 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#ifndef VGA_H
|
|
#define VGA_H
|
|
|
|
#define VGA_FB 0xB8000
|
|
#define VGA_FB_SIZE 0x4000 /* char + attr = word sized so 0x8000 / 2 */
|
|
#define VGA_COLUMNS 80
|
|
#define VGA_LINES 25
|
|
|
|
#define VGA_TEXT_HORIZONTAL_TOP 0
|
|
#define VGA_TEXT_HORIZONTAL_MIDDLE (VGA_LINES / 2)
|
|
|
|
enum VGA_TEXT_ALIGNMENT {
|
|
VGA_TEXT_LEFT,
|
|
VGA_TEXT_CENTER,
|
|
VGA_TEXT_RIGHT,
|
|
};
|
|
|
|
void vga_io_init(void);
|
|
|
|
void vga_textmode_init(void);
|
|
|
|
void vga_cursor_enable(int enable);
|
|
void vga_cursor_reset(void);
|
|
void vga_cursor_set(unsigned int line, unsigned int character);
|
|
|
|
void vga_frame_set(unsigned int line, unsigned int character);
|
|
|
|
void vga_line_write(unsigned int line, const char *string);
|
|
|
|
/*
|
|
* vga_write_text() writes a line of text aligned left/center/right
|
|
* horizontally on the screen (i.e. enum VGA_TEXT_ALIGNMENT)
|
|
*/
|
|
void vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line,
|
|
const unsigned char *ustring);
|
|
|
|
#endif /* VGA_H */
|