From 326eef577054dd8996ec5d16c3db58a4d5fe8948 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Tue, 8 Jul 2014 20:51:21 +0200 Subject: improved console and pit (timer) interrupt handler --- kernel/console.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'kernel/console.c') diff --git a/kernel/console.c b/kernel/console.c index 4c52e81..70076d5 100644 --- a/kernel/console.c +++ b/kernel/console.c @@ -7,7 +7,7 @@ static int posy=0; void print_char_col(int x, int y, char c, char col) { - char* video_mem=(char *)SCR_VIDEOMEM+(x+y*SCR_WIDTH)*2; + char* video_mem=(char *)SCR_VIDEOMEM+(x+y*SCR_REAL_WIDTH)*2; video_mem[0]=c; video_mem[1]=col; } @@ -22,6 +22,7 @@ void print_single_hex(int i) if(i<10)print_char_col(posx,posy,'0'+i,SCR_GREEN); else if(i<16)print_char_col(posx,posy,'A'+i-10,SCR_GREEN); posx++; + if(posx>=SCR_WIDTH)scr_nextline(); } @@ -50,7 +51,7 @@ void scr_clear() for(x=0;x=SCR_WIDTH)scr_nextline(); +} + void scr_put_hex(uint16_t val) { int i; - print_char_col(posx,posy,'0',SCR_WHITE); - posx++; - print_char_col(posx,posy,'x',SCR_WHITE); - posx++; + scr_put_string("0x"); for(i=0;i<4;i++) { @@ -113,7 +118,7 @@ void scr_put_string(char *str) { while(*str!=0) { - print_char(posx++,posy,*(str++)); + scr_put_char(*(str++),SCR_WHITE); } } -- cgit v1.2.3