diff options
-rw-r--r-- | src/kernel/main.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/kernel/main.c b/src/kernel/main.c index ec18738..c1c6ab6 100644 --- a/src/kernel/main.c +++ b/src/kernel/main.c @@ -5,20 +5,44 @@ void vga_graphics_write(char); void vga_graphics_write_with_attr(char, char); void vga_graphics_write_str(char*); +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_write_with_attr('a', 1); vga_graphics_write_with_attr('/', 2); vga_graphics_write_with_attr('b', 3); - char foo[] = "hello how are you"; vga_graphics_write_str(foo); + vga_graphics_write(':'); + vga_graphics_write(' '); + 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(*str++); + vga_graphics_write_with_attr(*str++, 7); } } @@ -32,6 +56,13 @@ void vga_graphics_write(char value) { 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" |