From f6323421e22c3585c58b54658a11e1e4706cc8fa Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Fri, 9 Apr 2021 10:29:23 +0200 Subject: Cleaning code and provide minimal libc --- src/utils/8042.c | 2 +- src/utils/8042.h | 42 ++++++++++++------------- src/utils/framebuffer.c | 58 +++++++++++++++++++++++++++++++++++ src/utils/framebuffer.h | 27 +++++++++++++++++ src/utils/gdt.c | 1 - src/utils/mem.h | 1 - src/utils/pic.c | 2 +- src/utils/print.c | 81 ------------------------------------------------- src/utils/print.h | 23 -------------- 9 files changed, 108 insertions(+), 129 deletions(-) create mode 100644 src/utils/framebuffer.c create mode 100644 src/utils/framebuffer.h delete mode 100644 src/utils/print.c delete mode 100644 src/utils/print.h (limited to 'src/utils') diff --git a/src/utils/8042.c b/src/utils/8042.c index d8a5ba0..1d22152 100644 --- a/src/utils/8042.c +++ b/src/utils/8042.c @@ -1,5 +1,5 @@ #include "8042.h" -#include "print.h" +#include "framebuffer.h" #include "asm.h" DEFINE_AZERTY; diff --git a/src/utils/8042.h b/src/utils/8042.h index 068a0ef..8efa8ce 100644 --- a/src/utils/8042.h +++ b/src/utils/8042.h @@ -6,22 +6,22 @@ void _8042_keypress(); #define DEFINE_AZERTY char AZERTY[]={\ - '?',\ - '?',\ - '?',\ - '?',\ - '?',\ - '?',\ - '?',\ - '?',\ - '?',\ - '?',/* 10 */\ - '?',\ - '?',\ - '?',\ - '?',\ - '?',\ - '?',\ + '\0',\ + '\0',\ + '&',\ + '\0',\ + '"',\ + '\'',\ + '(',\ + '-',\ + '\0',\ + '_',/* 10 */\ + '\0',\ + '\0',\ + ')',\ + '=',\ + '\0',\ + '\t',\ 'a',\ 'z',\ 'e',\ @@ -34,8 +34,8 @@ void _8042_keypress(); 'p',\ '^',\ '$',\ - '?',\ - '?',\ + '\0',\ + '\0',\ 'q',/* 0x1E (30) */\ 's',\ 'd',\ @@ -46,9 +46,9 @@ void _8042_keypress(); 'k',\ 'l',\ 'm',\ - '?',\ - '?',\ - '?',\ + '\0',\ + '\0',\ + '\0',\ '*',\ 'w',\ 'x',\ diff --git a/src/utils/framebuffer.c b/src/utils/framebuffer.c new file mode 100644 index 0000000..110dc73 --- /dev/null +++ b/src/utils/framebuffer.c @@ -0,0 +1,58 @@ +#include "framebuffer.h" + +#define MAX_COL 80 +#define MAX_LINE 25 + +VIDEO_STATE VS={ + (u8 *)0xB8000, + 0, + 0, + BLACK, + GRAY, +}; + +void putchar(char c){ + // Handle newline here + if(c=='\n'){ + VS.col=0; + VS.line+=1; + if(VS.line>=MAX_LINE){ + VS.line=MAX_LINE-1; + scrollup(); + } + return; + } + + // Print char + VS.mem[VS.col*2+MAX_COL*VS.line*2]=c; + VS.mem[VS.col*2+MAX_COL*VS.line*2+1]=VS.fg|VS.bg<<4; + + // Refresh location + VS.col+=1; + if(VS.col>= MAX_COL){ + VS.col=0; + VS.line+=1; + if(VS.line>=MAX_LINE){ + VS.line=MAX_LINE-1; + scrollup(); + } + } +} + +void clear(){ + for(char i=0;i=MAX_LINE){ - VS.line=MAX_LINE-1; - scrollup(); - } - return; - } - - // Print char - VS.mem[VS.col*2+MAX_COL*VS.line*2]=c; - VS.mem[VS.col*2+MAX_COL*VS.line*2+1]=VS.fg|VS.bg<<4; - - // Refresh location - VS.col+=1; - if(VS.col>= MAX_COL){ - VS.col=0; - VS.line+=1; - if(VS.line>=MAX_LINE){ - VS.line=MAX_LINE-1; - scrollup(); - } - } -} - -void print(char *str){ - int i=0; - while(str[i]!='\0'){ - putchar(str[i]); - i++; - } -} - -void printc(char* str,VIDEO_COLORS c){ - VIDEO_COLORS backup=VS.fg; - VS.fg=c; - print(str); - VS.fg=backup; -} - -void clear(){ - for(char i=0;i