diff --git a/iso/boot/kernel.elf b/iso/boot/kernel.elf index 5717819..5a127df 100755 Binary files a/iso/boot/kernel.elf and b/iso/boot/kernel.elf differ diff --git a/os.iso b/os.iso index 62255ed..2f222c7 100644 Binary files a/os.iso and b/os.iso differ diff --git a/src/kernel/shell.c b/src/kernel/shell.c index 16a4915..ef5036a 100644 --- a/src/kernel/shell.c +++ b/src/kernel/shell.c @@ -14,8 +14,11 @@ void shell_install() printf("\n"); // Childish shell - - if (strcmp(input_buffer, "help") == 0) + if (strcmp(input_buffer, "") == 0) + { + continue; + } + else if (strcmp(input_buffer, "help") == 0) { printf("This is the Blank Operating System\ndesigned for fun by xamidev\n\nCommand help:\n\n\thelp - shows this message\n\tpanic - makes the kernel panic\n"); } @@ -23,6 +26,8 @@ void shell_install() { printf("%d", 4/0); } - + else { + puts("Unknown command\n"); + } } } diff --git a/src/libc/crypto.c b/src/libc/crypto.c new file mode 100644 index 0000000..e69de29 diff --git a/src/libc/stdio.c b/src/libc/stdio.c index 87c0e57..5749432 100644 --- a/src/libc/stdio.c +++ b/src/libc/stdio.c @@ -57,12 +57,14 @@ unsigned int getcolor(int x, int y) void scroll(int lines) { - for (unsigned int y = lines; y < VGA_HEIGHT; y++) + if (lines <= 0 || (unsigned int)lines >= VGA_HEIGHT) return; + + for (unsigned int y = 0; y < VGA_HEIGHT-lines; y++) { for (unsigned int x = 0; x < VGA_WIDTH; x++) { - putchar(x, y-lines, getchar(x, y)); - putcolor(x, y-lines, getcolor(x, y)); + putchar(x, y, getchar(x, y+lines)); + putcolor(x, y, getcolor(x, y+lines)); } } @@ -70,10 +72,15 @@ void scroll(int lines) { for (unsigned int x = 0; x < VGA_WIDTH; x++) { - putchar(x, y, '\0'); + putchar(x, y, ' '); putcolor(x, y, COLOR); } } + + VGA_Y -= lines; + if ((int)VGA_Y < 0) { + VGA_Y = 0; + } } void putc(char c) @@ -89,6 +96,10 @@ void putc(char c) break; case '\t': VGA_X += 4; + if (VGA_X >= VGA_WIDTH) { + VGA_X -= VGA_WIDTH; + VGA_Y++; + } break; default: putchar(VGA_X, VGA_Y, c); @@ -361,4 +372,4 @@ void get_input(char *buffer, int size) { putc(c); } buffer[index] = '\0'; -} \ No newline at end of file +}