From 90ac82eebcd4465a52867cc2eb12d7d00fd84dfb Mon Sep 17 00:00:00 2001 From: Tom-on64 Date: Sun, 14 Apr 2024 18:27:53 +0200 Subject: [PATCH] Project restructure (no new code added) Moved all header files into include/ and removed their C counterparts -> code inside .h files Also added a kernel.ld linker file since we don't have many code files in src/ now, i removed src/kernel/ only real code change is that i moved memcopy() and memset() into string.h from system.h --- build.sh | 13 ++---- fs/test.txt | 1 - src/kernel/disk.c => include/disk.h | 7 ++- src/kernel/idt.c => include/idt.h | 16 ++++++- src/kernel/irq.c => include/irq.h | 51 ++++++++++++++------- src/kernel/isrs.c => include/isrs.h | 40 +++++++++++++++- src/kernel/keyboard.c => include/keyboard.h | 21 ++++++++- src/kernel/screen.c => include/screen.h | 43 +++++++++++------ src/kernel/bool.h => include/stdbool.h | 0 {src/kernel => include}/stdint.h | 0 src/kernel/string.c => include/string.h | 34 ++++++++++---- src/kernel/system.c => include/system.h | 20 +++----- src/kernel/timer.c => include/timer.h | 10 +++- kernel.ld | 14 ++++++ src/{kernel => }/entry.asm | 0 src/{kernel/main.c => kernel.c} | 0 src/kernel/disk.h | 11 ----- src/kernel/idt.h | 19 -------- src/kernel/irq.h | 29 ------------ src/kernel/isrs.h | 40 ---------------- src/kernel/keyboard.h | 25 ---------- src/kernel/screen.h | 32 ------------- src/kernel/string.h | 17 ------- src/kernel/system.h | 22 --------- src/kernel/timer.h | 12 ----- 25 files changed, 204 insertions(+), 273 deletions(-) delete mode 100644 fs/test.txt rename src/kernel/disk.c => include/disk.h (97%) rename src/kernel/idt.c => include/idt.h (70%) rename src/kernel/irq.c => include/irq.h (81%) rename src/kernel/isrs.c => include/isrs.h (78%) rename src/kernel/keyboard.c => include/keyboard.h (80%) rename src/kernel/screen.c => include/screen.h (90%) rename src/kernel/bool.h => include/stdbool.h (100%) rename {src/kernel => include}/stdint.h (100%) rename src/kernel/string.c => include/string.h (81%) rename src/kernel/system.c => include/system.h (65%) rename src/kernel/timer.c => include/timer.h (85%) create mode 100644 kernel.ld rename src/{kernel => }/entry.asm (100%) rename src/{kernel/main.c => kernel.c} (100%) delete mode 100644 src/kernel/disk.h delete mode 100644 src/kernel/idt.h delete mode 100644 src/kernel/irq.h delete mode 100644 src/kernel/isrs.h delete mode 100644 src/kernel/keyboard.h delete mode 100644 src/kernel/screen.h delete mode 100644 src/kernel/string.h delete mode 100644 src/kernel/system.h delete mode 100644 src/kernel/timer.h diff --git a/build.sh b/build.sh index 96cad86..dee6c99 100644 --- a/build.sh +++ b/build.sh @@ -9,25 +9,22 @@ echo "Assembling ./src/boot.asm..." nasm -fbin ./src/boot.asm -o ./build/boot.bin # Kernel -echo "Assembling ./src/kernel/entry.asm..." -nasm -felf32 ./src/kernel/entry.asm -o ./build/entry.o +echo "Assembling ./src/entry.asm..." +nasm -felf32 ./src/entry.asm -o ./build/entry.o -for file in ./src/kernel/*.c; do +for file in ./src/*.c; do filename=$(basename "$file" .c) echo "Compiling $file..." - i386-elf-gcc -ffreestanding -Wall -Wextra -m32 -c "$file" -o "./build/$filename.o" + i386-elf-gcc -ffreestanding -Wall -Wextra -m32 -Iinclude -c "$file" -o "./build/$filename.o" done -echo "Linking kernel object files..." -mv ./build/disk.o ./build/f_disk.o # Very temporary fix to issue with disk.o not linking or something weird -i386-elf-ld -o ./build/kernel.bin -Ttext 0x1000 --oformat binary ./build/*.o +i386-elf-ld -o ./build/kernel.bin -Tkernel.ld --oformat binary ./build/*.o # OS Image echo "Creating kern.iso disk image..." cat build/boot.bin build/kernel.bin > build/os.bin dd if=/dev/zero of=./kern.iso bs=512 count=2880 dd if=./build/os.bin of=./kern.iso conv=notrunc -dd if=./fs/test.txt of=./kern.iso bs=512 seek=21 conv=notrunc # We skip 21 (10.5kB) because that's the bootloader (0.5kB) and kernel (10kB) echo -e "\nDone!\n" diff --git a/fs/test.txt b/fs/test.txt deleted file mode 100644 index af27ff4..0000000 --- a/fs/test.txt +++ /dev/null @@ -1 +0,0 @@ -This is a test file. \ No newline at end of file diff --git a/src/kernel/disk.c b/include/disk.h similarity index 97% rename from src/kernel/disk.c rename to include/disk.h index 4659b25..7a38da2 100644 --- a/src/kernel/disk.c +++ b/include/disk.h @@ -1,4 +1,6 @@ -#include "disk.h" +#ifndef DRIVE_H +#define DRIVE_H + #include "stdint.h" #include "system.h" @@ -7,6 +9,8 @@ #define WRITE_COMMAND 0x30 #define CACHE_FLUSH 0xE7 +extern uint8_t driveNum; + void diskRead(uint32_t lbaAddress, uint8_t sectorCount, char* dst) { outb(PIO_PORT + 6, ((lbaAddress >> 24) & 0x0f) | 0xe0); // 6 - Use LBA; 4 - Drive number; 3-0 - Highest lba address nibble outb(PIO_PORT + 2, sectorCount); // Sector count register @@ -56,3 +60,4 @@ void diskWrite(uint32_t lbaAddress, uint8_t sectorCount, char* src) { while (inb(PIO_PORT + 7) & (1 << 7)); // Poll status register untill BSY bit is clear } +#endif diff --git a/src/kernel/idt.c b/include/idt.h similarity index 70% rename from src/kernel/idt.c rename to include/idt.h index da5ae64..521e42d 100644 --- a/src/kernel/idt.c +++ b/include/idt.h @@ -1,4 +1,6 @@ -#include "idt.h" +#ifndef IDT_H +#define IDT_H + #include "stdint.h" #include "system.h" @@ -18,6 +20,8 @@ struct idtPointer { struct idtEntry idt[256] = { 0 }; struct idtPointer idtp; +extern void idtLoad(); + void idtSetGate(uint8_t i, uint32_t offset, uint16_t selector, uint8_t typeAttr) { idt[i].offsetLow = (uint16_t)offset; idt[i].selector = selector; @@ -33,3 +37,13 @@ void setupIdt() { idtLoad(); } +// Contains values of registers and exception info from isrs +struct regs { + unsigned int gs, fs, es, ds; + unsigned int edi, esi, ebp, esp, ebx, edx, ecx, eax; + unsigned int intNo, errCode; + unsigned int eip, cs, eflags, useresp, ss; +}; + +#endif + diff --git a/src/kernel/irq.c b/include/irq.h similarity index 81% rename from src/kernel/irq.c rename to include/irq.h index 3a1a234..631f220 100644 --- a/src/kernel/irq.c +++ b/include/irq.h @@ -1,9 +1,28 @@ -#include "irq.h" +#ifndef IRQ_H +#define IRQ_H + #include "stdint.h" -#include "system.h" +#include "idt.h" void* irqRoutines[16] = { 0 }; +extern void irq0(); +extern void irq1(); +extern void irq2(); +extern void irq3(); +extern void irq4(); +extern void irq5(); +extern void irq6(); +extern void irq7(); +extern void irq8(); +extern void irq9(); +extern void irq10(); +extern void irq11(); +extern void irq12(); +extern void irq13(); +extern void irq14(); +extern void irq15(); + void installIrqHandler(uint32_t irq, void (*handler)(struct regs* r)) { irqRoutines[irq] = handler; } @@ -12,20 +31,6 @@ void uninstallIrqHandler(uint32_t irq) { irqRoutines[irq] = 0; } -// I have no clue how or what this does, but it makes everything work -void irqRemap(void) { - outb(0xa0, 0x11); - outb(0x20, 0x11); - outb(0x21, 0x20); - outb(0xa1, 0x28); - outb(0x21, 0x04); - outb(0xa1, 0x02); - outb(0x21, 0x01); - outb(0xa1, 0x01); - outb(0x21, 0x0); - outb(0xa1, 0x0); -} - void irqHandler(struct regs* r) { void (*handler)(struct regs* r); @@ -37,6 +42,19 @@ void irqHandler(struct regs* r) { outb(0x20, 0x20); } +void irqRemap(void) { + outb(0xa0, 0x11); + outb(0x20, 0x11); + outb(0x21, 0x20); + outb(0xa1, 0x28); + outb(0x21, 0x04); + outb(0xa1, 0x02); + outb(0x21, 0x01); + outb(0xa1, 0x01); + outb(0x21, 0x0); + outb(0xa1, 0x0); +} + void setupIrqs() { irqRemap(); @@ -59,3 +77,4 @@ void setupIrqs() { idtSetGate(47, (unsigned)irq15, 0x08, 0x8e); } +#endif diff --git a/src/kernel/isrs.c b/include/isrs.h similarity index 78% rename from src/kernel/isrs.c rename to include/isrs.h index 9c77870..e12a17e 100644 --- a/src/kernel/isrs.c +++ b/include/isrs.h @@ -1,4 +1,6 @@ -#include "isrs.h" +#ifndef ISRS_H +#define ISRS_H + #include "idt.h" #include "screen.h" #include "system.h" @@ -39,6 +41,41 @@ char* exceptionMessages[] = { "Reserved", }; + +// Repetative isr definitions +extern void isr0(); +extern void isr1(); +extern void isr2(); +extern void isr3(); +extern void isr4(); +extern void isr5(); +extern void isr6(); +extern void isr7(); +extern void isr8(); +extern void isr9(); +extern void isr10(); +extern void isr11(); +extern void isr12(); +extern void isr13(); +extern void isr14(); +extern void isr15(); +extern void isr16(); +extern void isr17(); +extern void isr18(); +extern void isr19(); +extern void isr20(); +extern void isr21(); +extern void isr22(); +extern void isr23(); +extern void isr24(); +extern void isr25(); +extern void isr26(); +extern void isr27(); +extern void isr28(); +extern void isr29(); +extern void isr30(); +extern void isr31(); + void setupIsrs() { idtSetGate(0, (unsigned)isr0, 0x08, 0x8e); idtSetGate(1, (unsigned)isr1, 0x08, 0x8e); @@ -88,3 +125,4 @@ void faultHandler(struct regs* r) { } } +#endif diff --git a/src/kernel/keyboard.c b/include/keyboard.h similarity index 80% rename from src/kernel/keyboard.c rename to include/keyboard.h index e141696..cad556a 100644 --- a/src/kernel/keyboard.c +++ b/include/keyboard.h @@ -1,4 +1,6 @@ -#include "keyboard.h" +#ifndef KEYBOARD_H +#define KEYBOARD_H + #include "irq.h" #include "idt.h" #include "system.h" @@ -6,6 +8,22 @@ #include "stdint.h" #include "stdbool.h" +// Keycodes +#define LEFT_SHIFT_PRESS 0x2a +#define LEFT_SHIFT_RELEASE (LEFT_SHIFT_PRESS | 0x80) +#define RIGHT_SHIFT_PRESS 0x36 +#define RIGHT_SHIFT_RELEASE (RIGHT_SHIFT_PRESS | 0x80) +#define LEFT_CTRL_PRESS 0x1D +#define LEFT_CTRL_RELEASE (LEFT_CTRL_PRESS | 0x80) +#define RIGHT_CTRL_PRESS 0x1D +#define RIGHT_CTRL_RELEASE (RIGHT_CTRL_PRESS | 0x80) +#define LEFT_ALT_PRESS 0x38 +#define LEFT_ALT_RELEASE (LEFT_ALT_PRESS | 0x80) +#define RIGHT_ALT_PRESS 0x38 +#define RIGHT_ALT_RELEASE (RIGHT_ALT_PRESS | 0x80) + +#define MAX_BUFFER_SIZE 256 + const char US_Keyboard[2][128] = { { 0, 27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\b', @@ -76,3 +94,4 @@ void setupKeyboard() { installIrqHandler(1, keyboardHandler); } +#endif diff --git a/src/kernel/screen.c b/include/screen.h similarity index 90% rename from src/kernel/screen.c rename to include/screen.h index 6b18b47..9e06a8d 100644 --- a/src/kernel/screen.c +++ b/include/screen.h @@ -1,6 +1,21 @@ +#ifndef SCREEN_H +#define SCREEN_H + #include "screen.h" #include "stdint.h" #include "system.h" +#include "string.h" + +#define VIDMEM 0xb8000 +#define CURSOR_HIGH 14 +#define CURSOR_LOW 15 +#define CTRLREG 0x3d4 +#define DATAREG 0x3d5 + +// 80x25 VGA Text mode +#define ROWS 25 +#define COLS 80 +#define CHARS (ROWS*COLS) uint32_t cursor = 0; @@ -12,6 +27,19 @@ void updateCursor() { outb(0x3d5, cursor >> 8); } +void setCursorPos(uint32_t offset) { + cursor = offset; + updateCursor(); +} + +uint32_t getCursorPos() { + return cursor; +} + +uint32_t calcOffset(uint8_t col, uint8_t row) { + return row * COLS + col; +} + void scroll() { if (cursor < COLS * ROWS) return; @@ -93,19 +121,6 @@ void clear(uint8_t attr) { updateCursor(); } -void setCursorPos(uint32_t offset) { - cursor = offset; - updateCursor(); -} - -uint32_t getCursorPos() { - return cursor; -} - -uint32_t calcOffset(uint8_t col, uint8_t row) { - return row * COLS + col; -} - void enableCursor(uint8_t start, uint8_t end) { outb(0x3d4, 0x0a); // Sending cursor start outb(0x3d5, (inb(0x3d5) & 0xc0) | start); @@ -119,3 +134,5 @@ void disableCursor() { outb(0x3d4, 0x0b); } + +#endif diff --git a/src/kernel/bool.h b/include/stdbool.h similarity index 100% rename from src/kernel/bool.h rename to include/stdbool.h diff --git a/src/kernel/stdint.h b/include/stdint.h similarity index 100% rename from src/kernel/stdint.h rename to include/stdint.h diff --git a/src/kernel/string.c b/include/string.h similarity index 81% rename from src/kernel/string.c rename to include/string.h index d05e182..e8c282c 100644 --- a/src/kernel/string.c +++ b/include/string.h @@ -1,4 +1,6 @@ -#include "string.h" +#ifndef STRING_H +#define STRING_H + #include "stdint.h" // Source: http://www.strudel.org.uk/itoa/ @@ -36,6 +38,13 @@ int isSpace(char c) { } // Some implementations taken from https://en.wikibooks.org/wiki/C_Programming/String_manipulation +char* strcpy(char* str1, const char* str2) { + char* dst = str1; + const char* src = str2; + while ((*dst++ = *src++) != '\0'); + return str1; +} + char* strcat(char* str1, const char* str2) { char* s = str1; while (*s != '\0') { s++; } @@ -61,16 +70,25 @@ int strcmp(const char* str1, const char* str2) { return ((c1 < c2) ? -1 : (c1 > c2)); } -char* strcpy(char* str1, const char* str2) { - char* dst = str1; - const char* src = str2; - while ((*dst++ = *src++) != '\0'); - return str1; -} - uint32_t strlen(const char* str) { const char* p = str; while (*++p != '\0'); return (uint32_t)(p - str); } +// Memory functions +char* memcopy(char* src, char* dst, uint16_t length) { + for (int i = 0; i < length; i++) { + *(dst + i) = *(src + i); + } + return dst; +} + +char* memset(char* dst, char value, uint16_t length) { + for (int i = 0; i < length; i++) { + *(dst + i) = value; + } + return dst; +} + +#endif diff --git a/src/kernel/system.c b/include/system.h similarity index 65% rename from src/kernel/system.c rename to include/system.h index e926f48..071a121 100644 --- a/src/kernel/system.c +++ b/include/system.h @@ -1,6 +1,9 @@ -#include "system.h" +#ifndef SYSTEM_H +#define SYSTEM_H + #include "stdint.h" +// Port functions uint8_t inb(uint16_t port) { uint8_t result; asm volatile("inb %1, %0" : "=a"(result) : "Nd"(port)); @@ -21,20 +24,8 @@ void outw(uint16_t port, uint16_t data) { asm volatile("outw %0, %1" :: "a"(data), "Nd"(port)); } -char* memcopy(char* src, char* dst, uint16_t length) { - for (int i = 0; i < length; i++) { - *(dst + i) = *(src + i); - } - return dst; -} - -char* memset(char* dst, char value, uint16_t length) { - for (int i = 0; i < length; i++) { - *(dst + i) = value; - } - return dst; -} +// Assembly stuff void cli() { asm volatile("cli"); } @@ -47,3 +38,4 @@ void hlt() { asm volatile("hlt"); } +#endif diff --git a/src/kernel/timer.c b/include/timer.h similarity index 85% rename from src/kernel/timer.c rename to include/timer.h index 12b9bd2..0e51377 100644 --- a/src/kernel/timer.c +++ b/include/timer.h @@ -1,9 +1,13 @@ -#include "timer.h" +#ifndef TIMER_H +#define TIMER_H + #include "stdint.h" #include "idt.h" #include "irq.h" #include "system.h" +#define INPUT_CLK 1193180 + uint32_t timerTicks = 0; void timerHandler() { @@ -20,7 +24,7 @@ void timerPhase(uint32_t hz) { outb(0x43, 0x36); // Tell PIT that we're setting channel 0 outb(0x40, div & 0xff); // Low byte - outb(0X40, div >> 8); // High byte + outb(0x40, div >> 8); // High byte } void sleep(uint32_t ticks) { @@ -29,3 +33,5 @@ void sleep(uint32_t ticks) { while (timerTicks != eticks); // Should avoid overflows unlike '<' } + +#endif diff --git a/kernel.ld b/kernel.ld new file mode 100644 index 0000000..b95856d --- /dev/null +++ b/kernel.ld @@ -0,0 +1,14 @@ +SECTIONS { + .text 0x1000 : { + *(.text*); + } + .data : { + *(.data*); + } + .rodata : { + *(.rodata*); + } + .bss : { + *(.bss*); + } +} diff --git a/src/kernel/entry.asm b/src/entry.asm similarity index 100% rename from src/kernel/entry.asm rename to src/entry.asm diff --git a/src/kernel/main.c b/src/kernel.c similarity index 100% rename from src/kernel/main.c rename to src/kernel.c diff --git a/src/kernel/disk.h b/src/kernel/disk.h deleted file mode 100644 index 5fd87b5..0000000 --- a/src/kernel/disk.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef DRIVE_H -#define DRIVE_H - -#include "stdint.h" - -extern uint8_t driveNum; - -void diskRead(uint32_t lbaAddress, uint8_t sectorCount, char* dst); -void diskWrite(uint32_t lbaAddress, uint8_t sectorCount, char* src); - -#endif diff --git a/src/kernel/idt.h b/src/kernel/idt.h deleted file mode 100644 index fa0ab7a..0000000 --- a/src/kernel/idt.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef IDT_H -#define IDT_H - -#include "stdint.h" - -void setupIdt(); -void idtSetGate(uint8_t i, uint32_t offset, uint16_t selector, uint8_t typeAttr); -extern void idtLoad(); - -// Contains values of registers and exception info from isrs -struct regs { - unsigned int gs, fs, es, ds; - unsigned int edi, esi, ebp, esp, ebx, edx, ecx, eax; - unsigned int intNo, errCode; - unsigned int eip, cs, eflags, useresp, ss; -}; - -#endif - diff --git a/src/kernel/irq.h b/src/kernel/irq.h deleted file mode 100644 index eed3916..0000000 --- a/src/kernel/irq.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef IRQ_H -#define IRQ_H - -#include "stdint.h" -#include "idt.h" - -void setupIrqs(); -void installIrqHandler(uint32_t irq, void (*handler)(struct regs* r)); -void uninstallIrqHandler(uint32_t irq); -void irqHandler(struct regs* r); - -extern void irq0(); -extern void irq1(); -extern void irq2(); -extern void irq3(); -extern void irq4(); -extern void irq5(); -extern void irq6(); -extern void irq7(); -extern void irq8(); -extern void irq9(); -extern void irq10(); -extern void irq11(); -extern void irq12(); -extern void irq13(); -extern void irq14(); -extern void irq15(); - -#endif diff --git a/src/kernel/isrs.h b/src/kernel/isrs.h deleted file mode 100644 index e1ea18c..0000000 --- a/src/kernel/isrs.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef ISRS_H -#define ISRS_H - -void setupIsrs(); - -// Repetative isr definitions -extern void isr0(); -extern void isr1(); -extern void isr2(); -extern void isr3(); -extern void isr4(); -extern void isr5(); -extern void isr6(); -extern void isr7(); -extern void isr8(); -extern void isr9(); -extern void isr10(); -extern void isr11(); -extern void isr12(); -extern void isr13(); -extern void isr14(); -extern void isr15(); -extern void isr16(); -extern void isr17(); -extern void isr18(); -extern void isr19(); -extern void isr20(); -extern void isr21(); -extern void isr22(); -extern void isr23(); -extern void isr24(); -extern void isr25(); -extern void isr26(); -extern void isr27(); -extern void isr28(); -extern void isr29(); -extern void isr30(); -extern void isr31(); - -#endif diff --git a/src/kernel/keyboard.h b/src/kernel/keyboard.h deleted file mode 100644 index 51eacae..0000000 --- a/src/kernel/keyboard.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef KEYBOARD_H -#define KEYBOARD_H - -#include "stdint.h" - -// Keycodes -#define LEFT_SHIFT_PRESS 0x2a -#define LEFT_SHIFT_RELEASE (LEFT_SHIFT_PRESS | 0x80) -#define RIGHT_SHIFT_PRESS 0x36 -#define RIGHT_SHIFT_RELEASE (RIGHT_SHIFT_PRESS | 0x80) -#define LEFT_CTRL_PRESS 0x1D -#define LEFT_CTRL_RELEASE (LEFT_CTRL_PRESS | 0x80) -#define RIGHT_CTRL_PRESS 0x1D -#define RIGHT_CTRL_RELEASE (RIGHT_CTRL_PRESS | 0x80) -#define LEFT_ALT_PRESS 0x38 -#define LEFT_ALT_RELEASE (LEFT_ALT_PRESS | 0x80) -#define RIGHT_ALT_PRESS 0x38 -#define RIGHT_ALT_RELEASE (RIGHT_ALT_PRESS | 0x80) - -#define MAX_BUFFER_SIZE 256 - -void setupKeyboard(); -char* read(char terminator, uint8_t attr); - -#endif diff --git a/src/kernel/screen.h b/src/kernel/screen.h deleted file mode 100644 index b34150e..0000000 --- a/src/kernel/screen.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef SCREEN_H -#define SCREEN_H - -#include "stdint.h" - -#define VIDMEM 0xb8000 -#define CURSOR_HIGH 14 -#define CURSOR_LOW 15 -#define CTRLREG 0x3d4 -#define DATAREG 0x3d5 - -// 80x25 VGA Text mode -#define ROWS 25 -#define COLS 80 -#define CHARS (ROWS*COLS) - -void putc(char c, uint8_t attr); -void print(char* s, uint8_t attr); -void putcAt(char c, uint8_t attr, uint8_t row, uint8_t col); -void printAt(char* s, uint8_t attr, uint8_t row, uint8_t col); -void clear(uint8_t attr); -void printHex(uint8_t d, uint8_t attr); - -void setCursorPos(uint32_t offset); -uint32_t getCursorPos(); -uint32_t calcOffset(uint8_t row, uint8_t col); -void scroll(); - -void enableCursor(uint8_t start, uint8_t end); -void disableCursor(); - -#endif diff --git a/src/kernel/string.h b/src/kernel/string.h deleted file mode 100644 index 557bcc3..0000000 --- a/src/kernel/string.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef STRING_H -#define STRING_H - -#include "stdint.h" - -char* itoa(uint32_t val, uint8_t base); -uint32_t atoi(const char* str); - -int isSpace(char c); - -char* strcat(char* str1, const char* str2); -char* strchr(const char* str, char c); -int strcmp(const char* str1, const char* str2); -char* strcpy(char* str1, const char* str2); -uint32_t strlen(const char* str); - -#endif diff --git a/src/kernel/system.h b/src/kernel/system.h deleted file mode 100644 index 78477d1..0000000 --- a/src/kernel/system.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SYSTEM_H -#define SYSTEM_H - -#include "stdint.h" - -// Port functions -uint8_t inb(uint16_t port); -void outb(uint16_t port, uint8_t data); - -uint16_t inw(uint16_t port); -void outw(uint16_t port, uint16_t data); - -// Memory functions -char* memcopy(char* src, char* dst, uint16_t length); -char* memset(char* dst, char data, uint16_t length); - -// Assembly stuff -void cli(); -void sti(); -void hlt(); - -#endif diff --git a/src/kernel/timer.h b/src/kernel/timer.h deleted file mode 100644 index 42f8391..0000000 --- a/src/kernel/timer.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef TIMER_H -#define TIMER_H - -#include "stdint.h" - -#define INPUT_CLK 1193180 - -void setupTimer(); -void sleep(uint32_t ticks); -void timerPhase(uint32_t hz); - -#endif