diff options
author | iximeow <me@iximeow.net> | 2015-09-28 02:39:47 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2015-09-28 03:36:28 -0700 |
commit | 00d5836c010e82463fff1db14e588be881cdac4e (patch) | |
tree | 40bca3ce8cd2c74a2b4d604020512f0b85d6c8d1 /src/kernel | |
parent | afeac47a0192e0124006e13d6a098668903589fb (diff) |
refactor to multi-file build
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/main.c | 59 |
1 files changed, 2 insertions, 57 deletions
diff --git a/src/kernel/main.c b/src/kernel/main.c index c1c6ab6..4e9a580 100644 --- a/src/kernel/main.c +++ b/src/kernel/main.c @@ -1,23 +1,11 @@ __asm__(".code16gcc\n"); -void vga_graphics_write_at_offset(char, short); -void vga_graphics_write(char); -void vga_graphics_write_with_attr(char, char); -void vga_graphics_write_str(char*); +#include "../output/vga_character.h" -void vga_graphics_byte_hex(char); -//void vga_graphics_short_hex(short); -//void vga_graphics_int_hex(int); -//void vga_graphics_long_hex(long); - -void clear(); - -static short CURSOR_LOC = 0; -static char* HEX_CHARS = "0123456789abcdef"; char foo[] = "hello how are you"; void _start() { - clear(); + vga_graphics_clear(); vga_graphics_write_with_attr('a', 1); vga_graphics_write_with_attr('/', 2); vga_graphics_write_with_attr('b', 3); @@ -27,46 +15,3 @@ void _start() { vga_graphics_byte_hex(0x40); while(1) { } } - -void clear() { - int TERM_WIDTH = 80; - int TERM_HEIGHT = 25; - - int i = 0; - while(i < TERM_WIDTH * TERM_HEIGHT) { - vga_graphics_write_with_attr(' ', 7); - i++; - } - CURSOR_LOC = 0; -} - -void vga_graphics_write_str(char* str) { - while(*str) { - vga_graphics_write_with_attr(*str++, 7); - } -} - -void vga_graphics_write_with_attr(char value, char attr) { - vga_graphics_write_at_offset(value, CURSOR_LOC++); - vga_graphics_write_at_offset(attr, CURSOR_LOC++); -} - -void vga_graphics_write(char value) { - vga_graphics_write_at_offset(value, CURSOR_LOC); - CURSOR_LOC += 2; -} - -void vga_graphics_byte_hex(char value) { - char low = value & 0x0f; - char high = (value & 0xf0) >> 4; - vga_graphics_write(HEX_CHARS[high]); - vga_graphics_write(HEX_CHARS[low]); -} - -void vga_graphics_write_at_offset(char value, short offset) { - __asm__( - "mov %0, %%al \n" - "mov %1, %%di \n" - "mov %%al, %%gs:(%%di) \n" - : :"r"(value), "r"(offset) : "%ax", "%di"); -} |