diff --git a/build/kernel.o b/build/kernel.o new file mode 100644 index 0000000..cc28f29 Binary files /dev/null and b/build/kernel.o differ diff --git a/build/kernel_entry.o b/build/kernel_entry.o new file mode 100644 index 0000000..6dd6b74 Binary files /dev/null and b/build/kernel_entry.o differ diff --git a/makefile b/makefile index 78c3f6c..ebd01ee 100644 --- a/makefile +++ b/makefile @@ -1,13 +1,26 @@ -build: src/boot.bin src/kernel_entry.bin +build: build/os.bin + @echo "Build succeded" -src/boot.bin: src/boot.asm - nasm -o src/boot.bin src/boot.asm +build/boot.bin: src/boot.asm + nasm -f bin -o build/boot.bin src/boot.asm -src/kernel_entry.bin: src/kernel_entry.asm - nasm -felf -o src/kernel_entry.bin src/kernel_entry.asm +build/kernel_entry.o: src/kernel_entry.asm + nasm -f elf -o build/kernel_entry.o src/kernel_entry.asm -run: src/boot.bin - qemu-system-x86_64 -drive file=src/boot.bin,format=raw,index=0,media=disk +build/kernel.o: src/kernel.c + i386-elf-gcc -ffreestanding -m32 -c -o build/kernel.o src/kernel.c + +build/kernel.bin:build/kernel.o build/kernel_entry.o + i386-elf-ld -o build/kernel.bin -Ttext 0x1000 build/kernel_entry.o build/kernel.o --oformat binary + +build/zeroes.bin: + dd if=/dev/zero of=build/zeroes.bin bs=1 count=10240 + +build/os.bin: build/boot.bin build/kernel.bin build/zeroes.bin + cat build/boot.bin build/kernel.bin build/zeroes.bin > build/os.bin + +run: build/os.bin + qemu-system-x86_64 -drive file=build/os.bin,format=raw,index=0,media=disk clean: - rm src/boot.bin \ No newline at end of file + @rm build/* 2>/dev/null || true diff --git a/src/kernel.c b/src/kernel.c index 9b6317e..c60b5b2 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -1,5 +1,6 @@ int main(void) { *(char*)0xb8000 = 'A'; + *(char*)0xb8001 = 'B'; return 0; } \ No newline at end of file