From a4d167972377776f189bfd073dba60a8f69eba39 Mon Sep 17 00:00:00 2001 From: Xnoe Date: Thu, 2 Sep 2021 15:09:21 +0100 Subject: [PATCH] Added primitive printf implementation, can print decimal ints, hex ints and strings --- kernel32.c | 123 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 104 insertions(+), 19 deletions(-) diff --git a/kernel32.c b/kernel32.c index 5cad07c..8ad01c5 100644 --- a/kernel32.c +++ b/kernel32.c @@ -1,6 +1,7 @@ +#include #include "types.h" -uint8_t* VMEM_ADDR = (uint8_t*)0xb8000; +uint16_t* VMEM_ADDR = (uint16_t*)0xb8000; const int TERM_WIDTH = 80; const int TERM_HEIGHT = 25; @@ -16,7 +17,7 @@ uint8_t inb(uint16_t portnumber) { return result; } -uint16_t get_cursor_position() { +uint16_t get_curpos() { uint16_t cursor_position = 0; uint8_t* cursor_position_split = (uint8_t*)&cursor_position; outb(0x3D4, 0x0F); @@ -27,7 +28,7 @@ uint16_t get_cursor_position() { } void init_term() { - uint16_t cursor_position = get_cursor_position(); + uint16_t cursor_position = get_curpos(); cursor_y = cursor_position / TERM_WIDTH; cursor_x = cursor_position % TERM_WIDTH; @@ -35,43 +36,127 @@ void init_term() { void clear_screen() { for (int i=0; i