diff --git a/build/OwOS.bin b/build/OwOS.bin index dab5835..58298a4 100755 Binary files a/build/OwOS.bin and b/build/OwOS.bin differ diff --git a/build/OwOS.iso b/build/OwOS.iso index 73405fd..a9e4e2c 100644 Binary files a/build/OwOS.iso and b/build/OwOS.iso differ diff --git a/iso/boot/OwOS.bin b/iso/boot/OwOS.bin index dab5835..58298a4 100644 Binary files a/iso/boot/OwOS.bin and b/iso/boot/OwOS.bin differ diff --git a/kernel.cpp b/kernel.cpp index 4eb5ab8..3a66cee 100644 --- a/kernel.cpp +++ b/kernel.cpp @@ -7,43 +7,7 @@ int kernel_main() { cls(); showCursor(); - // putchar('P'); - // putchar('E'); - // putchar('N'); - // setFGColour(VGA_BLACK); - // setBGColour(VGA_BRIGHT_MAGENTA); - // putchar('I'); - // putchar('S'); - // putchar('\n'); - // putchar('L'); - // putchar('m'); - // putchar('a'); - // putchar('o'); - - // write("HAHHAHAHAHAHAHAHHAHAHAHAHHAHAHAHAHAHAHHAHAHAHHAHAHAHHAAHAHAHHAHAHAHAHAHAHAHAHAHHAAHHAHA Penis!"); - - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); - // writeln("LMAO I WANT TO DIE"); + writeln("Okay, this is pretty epic"); for (;;) asm("hlt"); diff --git a/kernel/drivers/terminal/terminal.cpp b/kernel/drivers/terminal/terminal.cpp index 0642b36..b2f2981 100644 --- a/kernel/drivers/terminal/terminal.cpp +++ b/kernel/drivers/terminal/terminal.cpp @@ -16,26 +16,26 @@ Cursor cursor; void cls() { for (uint8_t x = 0; x < TERMINAL_WIDTH; x++) for (uint8_t y = 0; y < TERMINAL_HEIGHT; y++) - putchar(x, y, ' ', fgColour, clearColour); + puts(x, y, ' ', fgColour, clearColour); cursor.x = 0; cursor.y = 0; updateCursor(cursor); } -void putchar(char input) { +void puts(char input) { if (cursor.x + 1 > TERMINAL_WIDTH) { nline(); } if (input == '\n') { nline(); } else { - putchar(cursor.x, cursor.y, input, fgColour, bgColour); + puts(cursor.x, cursor.y, input, fgColour, bgColour); cursor.x++; } updateCursor(cursor); } -void putchar(int x, int y, char c, char foreground, char background) { +void puts(int x, int y, char c, char foreground, char background) { frameBuffer[(y * TERMINAL_WIDTH) + x].c = c; frameBuffer[(y * TERMINAL_WIDTH) + x].foreground = foreground; frameBuffer[(y * TERMINAL_WIDTH) + x].background = background; @@ -49,7 +49,7 @@ void write(char* input) { if (input[i] == '\n') { nline(); } else { - putchar(cursor.x, cursor.y, input[i], fgColour, bgColour); + puts(cursor.x, cursor.y, input[i], fgColour, bgColour); cursor.x++; } } diff --git a/kernel/drivers/terminal/terminal.h b/kernel/drivers/terminal/terminal.h index 1f15a8a..165e8d6 100644 --- a/kernel/drivers/terminal/terminal.h +++ b/kernel/drivers/terminal/terminal.h @@ -33,8 +33,8 @@ struct Cursor { void cls(); -void putchar(char input); -void putchar(int x, int y, char c, char foreground, char background); +void puts(char input); +void puts(int x, int y, char c, char foreground, char background); void write(char* input); void writeln(char* input); diff --git a/lib/std/memory.cpp b/lib/std/memory.cpp index e69de29..2765995 100644 --- a/lib/std/memory.cpp +++ b/lib/std/memory.cpp @@ -0,0 +1,41 @@ +#include "memory.h" + +bool memcmp(const void* a, const void* b, uint32_t size) { + const unsigned char* aptr = (const unsigned char*)a; + const unsigned char* bptr = (const unsigned char*)b; + for (uint32_t i = 0; i > size; i++) { + if (aptr[i] > bptr[i]) + return false; + else if (bptr[i] > aptr[i]) + return false; + } + return true; +} + +void* memcpy(void* dst, const void* src, uint32_t size) { + unsigned char* d = (unsigned char*) dst; + const unsigned char* s = (const unsigned char*) src; + for (uint32_t i = 0; i < size; i++) + d[i] = s[i]; + return dst; +} + +void* memmove(void* dst, const void* src, uint32_t size) { + unsigned char* d = (unsigned char*) dst; + const unsigned char* s = (const unsigned char*) src; + if (d < s) + for (uint32_t i = 0; i < size; i++) + d[i] = s[i]; + else + for (uint32_t i = size; i--; ) + d[i-1] = s[i-1]; + return dst; +} + +void* memset(void* ptr, int val, uint32_t size) { + unsigned char* buf = (unsigned char*) ptr; + unsigned char value = (unsigned char ) val; + for (uint32_t i = 0; i < size; i++) + buf[i] = value; + return ptr; +} diff --git a/lib/std/memory.h b/lib/std/memory.h index bb86781..ca0e1e8 100644 --- a/lib/std/memory.h +++ b/lib/std/memory.h @@ -1,6 +1,6 @@ #include -int memcmp(const void* a, const void* b, uint32_t sze); -void* memcpy(const void* dst, const void* src, uint32_t sze); -void* memmove(void* dst, const void* src, uint32_t sze); -void* memset(void* ptr, int val, uint32_t sze); +bool memcmp(const void* a, const void* b, uint32_t size); +void* memcpy(void* dst, const void* src, uint32_t size); +void* memmove(void* dst, const void* src, uint32_t size); +void* memset(void* ptr, int val, uint32_t size);