blob: db4b47fd8e94bbf3a26b6770002f57c20b0291ba (
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/i386/tty/vga.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 tty_scroll() {
for (size_t i = 0; i < vga_len - 80; i++)
vga[i] = vga[i + 80];
vga_pos -= 80;
}
void tty_putchar(char c) {
if (vga_pos >= vga_len - 80)
tty_scroll();
vga[vga_pos++].c = c;
}
void tty_write(const char *buf, size_t len) {
for (size_t i = 0; i < len; i++)
tty_putchar(buf[i]);
}
void tty_clear() {
for (size_t i = 0; i < vga_len; i++)
vga[i].c = ' ';
vga_pos = 0;
}
|