aboutsummaryrefslogtreecommitdiff
path: root/src/include/pc80/vga.h
blob: ec012f5bdf22b27d42d4a46fc3c3ef96e39077f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/* 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 char *string);

#endif /* VGA_H */