blob: e5f2274c40129365640c8ff46981126584b1dd4f (
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
|
#include <kernel/arch/amd64/tty/tty.h>
struct vga_cell {
unsigned char c;
unsigned char style;
} __attribute__((__packed__));
static const size_t vga_len = 80 * 25;
static struct vga_cell *vga = (void*) 0xB8000;
static size_t vga_pos = 0;
static void vga_scroll(void) {
for (size_t i = 0; i < vga_len - 80; i++)
vga[i] = vga[i + 80];
vga_pos -= 80;
}
static void vga_putchar(char c) {
if (vga_pos >= vga_len - 80)
vga_scroll();
vga[vga_pos++].c = c;
}
void vga_write(const char *buf, size_t len) {
for (size_t i = 0; i < len; i++)
vga_putchar(buf[i]);
}
void vga_clear(void) {
for (size_t i = 0; i < vga_len; i++)
vga[i].c = ' ';
vga_pos = 0;
}
|