diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-07-08 20:51:21 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-07-08 20:51:21 +0200 |
| commit | 326eef577054dd8996ec5d16c3db58a4d5fe8948 (patch) | |
| tree | 9cc7e32f566f3dc6ad0c96eb65aed1b3a00c2b8b /kernel/console.c | |
| parent | 9c928f4962e4c4f9a03104bb0d6bac82f2cfa628 (diff) | |
improved console and pit (timer) interrupt handler
Diffstat (limited to 'kernel/console.c')
| -rw-r--r-- | kernel/console.c | 23 |
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); } } |
