diff --git a/src/kernel.c b/src/kernel.c index b4a3ac0..8629a26 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -2,5 +2,9 @@ void main() { // Do kernel stuff - println("C-Printing test!", 16); + char* vidmem = (char*)0xb8000; + *vidmem = 'X'; + for( int i = 0; i < 16; i++ ) { + println("C-Printing test!", 16); + } } diff --git a/src/lib/vga.c b/src/lib/vga.c index 7a65b68..d951031 100644 --- a/src/lib/vga.c +++ b/src/lib/vga.c @@ -4,14 +4,16 @@ // Charpos = 0xb8000 + 2(row*80 + col) #define VIDEO_MEM (char*)0xb8000 +#define GET_INDEX(s, c) (int)(c-s) static int cursor_y = 0; -char* get_cursor_pos(unsigned int row, unsigned int col) { return (char*)(VIDEO_MEM + 2*(row*80 + col)); } +char* get_cursor_pos(unsigned int col, unsigned int row) { + return (char*)(VIDEO_MEM + 2*((row*80) + col)); +} void print(char* str, unsigned int str_len) { - for( unsigned int i = 0; i < str_len; i++ ) { - *get_cursor_pos(cursor_y, i) = 'X'; // write to video memory - } + for( char* c = str; *c != '\0'; c++ ) + *get_cursor_pos( GET_INDEX(str, c), cursor_y ) = 'Y'; } void println(char* str, unsigned int str_len) {