summaryrefslogtreecommitdiff
path: root/kernel/console.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/console.c')
-rw-r--r--kernel/console.c23
1 files changed, 14 insertions, 9 deletions
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;x++)
for(y=0;y<SCR_HEIGHT;y++)
{
- print_char_col(x,y,' ',SCR_BLACK);
+ print_char_col(x,y,'@',SCR_BLUE);
}
@@ -78,8 +79,8 @@ void scr_nextline()
for(x=1;x<SCR_WIDTH;x++)
{
- char* video_mem=(char *)SCR_VIDEOMEM+((x)+(i-1)*SCR_WIDTH)*2;
- char* video_mem2=(char *)SCR_VIDEOMEM+((x)+i*SCR_WIDTH)*2;
+ char* video_mem=(char *)SCR_VIDEOMEM+((x)+(i-1)*SCR_REAL_WIDTH)*2;
+ char* video_mem2=(char *)SCR_VIDEOMEM+((x)+i*SCR_REAL_WIDTH)*2;
*video_mem=*video_mem2;
*(video_mem+1)=*(video_mem2+1);
}
@@ -89,15 +90,19 @@ void scr_nextline()
}
}
+void scr_put_char(char ch,char col)
+{
+ print_char_col(posx,posy,ch,SCR_WHITE);
+ posx++;
+ if(posx>=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);
}
}