diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..900f09f --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,17 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**", + "${workspaceFolder}/include/" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "gnu17", + "cppStandard": "gnu++17", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/build-cross-compiler.sh b/build-cross-compiler.sh deleted file mode 100755 index ba28f1a..0000000 --- a/build-cross-compiler.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -mkdir /tmp/src -cd /tmp/src -curl -O http://ftp.gnu.org/gnu/binutils/binutils-2.39.tar.gz -tar xf binutils-2.39.tar.gz -mkdir binutils-build -cd binutils-build -../binutils-2.39/configure --target=$TARGET --enable-interwork --enable-multilib --disable-nls --disable-werror --prefix=$PREFIX 2>&1 | tee configure.log -sudo make all install 2>&1 | tee make.log -cd /tmp/src -curl -O https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz -tar xf gcc-12.2.0.tar.gz -mkdir gcc-build -cd gcc-build -../gcc-12.2.0/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --disable-libssp --enable-languages=c --without-headers -sudo make all-gcc -sudo make all-target-libgcc -sudo make install-gcc -sudo make install-target-libgcc diff --git a/build.sh b/build.sh deleted file mode 100755 index 4cd64b8..0000000 --- a/build.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# Compile the kernel and its drivers -i386-elf-gcc -ffreestanding -I src/ -c src/kernel/main.c -o obj/kernel.o -i386-elf-gcc -ffreestanding -I src/ -c src/kernel/drivers/vga/screen.c -o obj/screen.o -i386-elf-gcc -ffreestanding -I src/ -c src/kernel/drivers/ports/ports.c -o obj/ports.o -# Compile the assembly entry point and the MBR -nasm -f elf src/entrypoint.s -o obj/entry.o -nasm -f bin src/boot/mbr.s -o build/mbr.bin -# Link everything together -i386-elf-ld -o build/kernel.bin -Ttext 0x1000 entry.o kernel.o ports.o screen.o --oformat binary -# Produce a bootable image -cat build/mbr.bin build/kernel.bin > build/os.img diff --git a/build/.gitkeep b/build/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/env.sh b/env.sh deleted file mode 100755 index 7fe3332..0000000 --- a/env.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -export CC=/usr/bin/gcc -export LD=/usr/bin/gcc -export PREFIX="/usr/local/i386elfgcc" -export TARGET=i386-elf -export PATH=$PATH:$PREFIX/bin diff --git a/src/kernel/drivers/ports/ports.h b/include/kernel/drivers/ports/ports.h similarity index 100% rename from src/kernel/drivers/ports/ports.h rename to include/kernel/drivers/ports/ports.h diff --git a/src/kernel/drivers/vga/screen.h b/include/kernel/drivers/vga/screen.h similarity index 85% rename from src/kernel/drivers/vga/screen.h rename to include/kernel/drivers/vga/screen.h index d38534c..b8f2767 100644 --- a/src/kernel/drivers/vga/screen.h +++ b/include/kernel/drivers/vga/screen.h @@ -4,6 +4,7 @@ #include "kernel/ktypes.h" #include "kernel/drivers/ports/ports.h" + #define VMEM_ADDRESS 0xb8000 #define VMEM_BUF ((byte*)VMEM_ADDRESS) #define MAX_ROWS 25 @@ -21,8 +22,8 @@ // Public API void clearScreen(void); -void kprintAt(byte* message, i32 col, i32 row); -void kprint(byte* message); +void kprintAt(char* message, i32 col, i32 row); +void kprint(char* message); #endif \ No newline at end of file diff --git a/src/kernel/ktypes.h b/include/kernel/ktypes.h similarity index 100% rename from src/kernel/ktypes.h rename to include/kernel/ktypes.h diff --git a/obj/.gitkeep b/obj/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/run.sh b/run.sh deleted file mode 100755 index b507bd6..0000000 --- a/run.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -qemu-system-x86_64 -drive format=raw,file=build/os.bin,index=0,media=disk diff --git a/src/kernel/drivers/ports/ports.c b/src/kernel/drivers/ports/ports.c index bed4101..ea57735 100644 --- a/src/kernel/drivers/ports/ports.c +++ b/src/kernel/drivers/ports/ports.c @@ -1,6 +1,6 @@ // Utilities for writing to and reading from I/O ports -#include "ports.h" +#include "kernel/drivers/ports/ports.h" // Note: We use the volatile modifier everywhere because diff --git a/src/kernel/drivers/vga/screen.c b/src/kernel/drivers/vga/screen.c index e3dc448..5998821 100644 --- a/src/kernel/drivers/vga/screen.c +++ b/src/kernel/drivers/vga/screen.c @@ -1,5 +1,5 @@ // Implementation of a simple text-only VGA driver -#include "screen.h" +#include "kernel/drivers/vga/screen.h" #include "kernel/ktypes.h" @@ -13,7 +13,7 @@ i32 getColumn(i32 offset); // Public API below -void kprintAt(byte* message, i32 col, i32 row) { +void kprintAt(char* message, i32 col, i32 row) { /* Prints a null-terminated string to the VGA text buffer at the specified row and column. @@ -42,7 +42,7 @@ void kprintAt(byte* message, i32 col, i32 row) { } -void kprint(byte* message) { +void kprint(char* message) { /* Prints a null-terminated string to the VGA text buffer