From 1e7f6dd22e006abca9f224ed3cbf2fc840b13011 Mon Sep 17 00:00:00 2001 From: Nocturn9x Date: Wed, 16 Nov 2022 15:37:01 +0100 Subject: [PATCH] Added missing scripts and C kernel --- build.sh | 5 +++++ env.sh | 6 ++++++ run.sh | 2 ++ src/kernel/main.c | 16 ++++++++++++++++ 4 files changed, 29 insertions(+) create mode 100755 build.sh create mode 100755 env.sh create mode 100755 run.sh create mode 100644 src/kernel/main.c diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..127e7fe --- /dev/null +++ b/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash +i386-elf-gcc -ffreestanding -c src/kernel/main.c -o main.o +nasm -f elf src/entrypoint.s -o entrypoint.o +i386-elf-ld -o kernel.bin -Ttext 0x1000 entrypoint.o main.o --oformat binary +cat mbr.bin kernel.bin > os.bin diff --git a/env.sh b/env.sh new file mode 100755 index 0000000..54a708f --- /dev/null +++ b/env.sh @@ -0,0 +1,6 @@ +#!/bin/bash +export CC=/usr/bin/gcc +export LD=/usr/bin/gcc +export PREFIX="/usr/local/i386elfgcc" +export TARGET=i386-elf +export PATH="$PREFIX/bin:$PATH" diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..eb7ca5f --- /dev/null +++ b/run.sh @@ -0,0 +1,2 @@ +#!/bin/bash +qemu-system-x86_64 -drive format=raw,file=os.bin,index=0,media=disk diff --git a/src/kernel/main.c b/src/kernel/main.c new file mode 100644 index 0000000..76e3163 --- /dev/null +++ b/src/kernel/main.c @@ -0,0 +1,16 @@ +// C entry point of our kernel +#define VMEM_ADDR 0xb8000 + +void dummy_test_entrypoint(void) { +} + + +void kmain(void) { + char* vbuf = (char*)VMEM_ADDR; + vbuf += 480; // We skip the log messages before us + char *s = "Hello from the TSOS kernel!"; + for (int i = 0; s[i] != '\0'; i++) { + *vbuf = s[i]; + vbuf += 2; + } +} \ No newline at end of file