From fd5bb3152b3c65d395cde3e72c499ea94bf88b54 Mon Sep 17 00:00:00 2001 From: mrbesen Date: Sun, 14 Oct 2018 13:42:25 +0200 Subject: [PATCH] initial --- .gitignore | 2 + Compile.sh | 23 ++ _.sh | 16 + build | 1 + makefile | 7 + notes.txt | 35 ++ ...fwerksabbild von fd0 (2017-02-20 1800).img | Bin 0 -> 1474560 bytes ...werksabbild von fd0 (2017-02-20 1800)_.img | Bin 0 -> 1474561 bytes out/os.img | Bin 0 -> 2560 bytes run.sh | 2 + src/boot.asm | 77 +++++ src/ckernel.c | 55 +++ src/ckernel.o | Bin 0 -> 2512 bytes src/kernel.ld | 8 + src/kernel.o | Bin 0 -> 2338 bytes src/main.asm | 323 ++++++++++++++++++ 16 files changed, 549 insertions(+) create mode 100644 .gitignore create mode 100755 Compile.sh create mode 100755 _.sh create mode 100755 build create mode 100755 makefile create mode 100755 notes.txt create mode 100644 out/Laufwerksabbild von fd0 (2017-02-20 1800).img create mode 100644 out/Laufwerksabbild von fd0 (2017-02-20 1800)_.img create mode 100755 out/os.img create mode 100755 run.sh create mode 100755 src/boot.asm create mode 100755 src/ckernel.c create mode 100755 src/ckernel.o create mode 100755 src/kernel.ld create mode 100755 src/kernel.o create mode 100755 src/main.asm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..855a998 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.project +tmp/ diff --git a/Compile.sh b/Compile.sh new file mode 100755 index 0000000..0050de7 --- /dev/null +++ b/Compile.sh @@ -0,0 +1,23 @@ +#!/bin/bash +#add build-nr +build=$(cat build) +sed "s/######/${build}/g" src/main.asm > tmp/main.asm +build=$((build+1)) +echo $build > build +echo "Build-Nummer aktualisiert."; +#compile +echo "Wandle boot.asm in boot.bin um..."; +nasm src/boot.asm -o tmp/boot.bin +echo "Fertig."; +echo "Wandle main.asm in main.bin um..."; +nasm tmp/main.asm -o tmp/main.bin +echo "Fertig."; + + +#connect +echo "Erstelle .img Image..."; +cat tmp/boot.bin tmp/main.bin > out/os.img + +echo "Vorgang beendet"; +virtualbox --startvm own + diff --git a/_.sh b/_.sh new file mode 100755 index 0000000..0146a71 --- /dev/null +++ b/_.sh @@ -0,0 +1,16 @@ +#!/bin/bash +#add build-nr +build=$(cat build) +sed "s/######/${build}/g" src/main.asm > tmp/main.asm +build=$((build+1)) +echo $build > build + + +#compile +nasm src/boot.asm -o tmp/boot.bin +nasm tmp/main.asm -o tmp/main.bin + +#connect +cat tmp/boot.bin tmp/main.bin > out/os.img + +sh run.sh diff --git a/build b/build new file mode 100755 index 0000000..137b833 --- /dev/null +++ b/build @@ -0,0 +1 @@ +530 diff --git a/makefile b/makefile new file mode 100755 index 0000000..59def45 --- /dev/null +++ b/makefile @@ -0,0 +1,7 @@ +all: + build=$(cat build) + sed 's/######/${build}/g' src/main.asm > tmp/main.asm + nasm src/boot.asm -o tmp/boot.bin + nasm tmp/main.asm -o tmp/main.bin + cat tmp/boot.bin tmp/main.bin > out/os.img + virtualbox --startvm own diff --git a/notes.txt b/notes.txt new file mode 100755 index 0000000..b920d78 --- /dev/null +++ b/notes.txt @@ -0,0 +1,35 @@ +Notes: + + +------------------------- + Ziele: + + + + + + + + + + + + + + + + + + + + + +-------------------------- + Nachrichten: +-------------------------- +An Besen: + + +-------------------------- +An Thiesyy: +-------------------------- diff --git a/out/Laufwerksabbild von fd0 (2017-02-20 1800).img b/out/Laufwerksabbild von fd0 (2017-02-20 1800).img new file mode 100644 index 0000000000000000000000000000000000000000..228a3c5cb6a62fdd7b4ea946a749016b95d1a956 GIT binary patch literal 1474560 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 z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UATXvt<%<9T0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ T009C72oNAZfB*pk1A+e!u%I00 literal 0 HcmV?d00001 diff --git a/out/Laufwerksabbild von fd0 (2017-02-20 1800)_.img b/out/Laufwerksabbild von fd0 (2017-02-20 1800)_.img new file mode 100644 index 0000000000000000000000000000000000000000..9c78141811210c29ea6557f1812f0f5e3ea65ea7 GIT binary patch literal 1474561 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 zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyKwwOP;EMnO0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ T009C72oNAZfB*pk1A+e!8Tk6U literal 0 HcmV?d00001 diff --git a/out/os.img b/out/os.img new file mode 100755 index 0000000000000000000000000000000000000000..f3c83c28f7cac9ee5fa7aa140c4c00fe4550cd84 GIT binary patch literal 2560 zcmeHIU1$_n6h2pHvSDD%VyeYb>D>n(gc?mHVA9Y^6#s%mOoGs+gpGS?7B@S~?v1dp zw0UYnDA70j*yqrPC~MrrGDa3GK?Zyhp-_-Wy>Scmp@Jb`Jm=n--8C^& zy5QXS_!gA61@W7_%!0W8K}r3&x!49vNBhb@1iNNXt8+PM&p)g{e0I6>4@%5CH{trW z1){a*pH}~UKi-8aFg!BS>}TqbEl(0W%G5qv9w&H?sgG>gPq3S*Hd~%1ILwq~%M%2@Vrt!z2|vNq zFIMfEUt;QKt9HeoX6mX{`_aG8)U>ts-6r+)y|p&E>3_o1Wos?7>1Uamu!22)k||+f z_dh-O4W3tGgSQzhZiir31zI{+mIgk&6$|2uL3IIcKzO&dT#wQHTCFe$4hM+~B6HE3 z5L|kEXgn`bEvCzY_9%c`G!67fkJWs;K zyhx>G0mjoXE;2b76Cwu%=^;vHvmy_Jh;#Tf;ZxKB=QSycPKn~D{A@CtK*>f2933Z; z*;Jv&b;i^9Ls{1eeO!kOzP@n!+&8XcT5uh*Ly6beaL!uxNjuq=Cr_*Qi zeWD<=B_B0|;~3pC(F&z-#h@_O*=9`ZrYtIsh;=G=ol?jvabChtIE`wA0tEO$ZG~t= ze-BdT4g5xcb=sMj4XW#4q#ewWl&OMRL}Yr!1S;z>f)2*WSVdS{g@I9s=7_q*37a7Y z#9(_85=q|Q8f;7GMK3N zT)gdQ-un)%lp)yN+bVbVx^n;2`j_$_+7;(s-L3sKwGQ&}z&#sYt(14nw+8Wfjz2us z?$5&+d(jcVRpHKljjA function "reset" + int 0x13 + jc load_kernel ; trouble? try again + +load_kernel1: + mov ax, 0x1000 + mov es, ax ; ES:BX = 0x10000 + xor bx, bx ; mov bx, 0 + + ; set parameters for reading function + ; 8-Bit-wise for better overview + mov dl,[bootdrive] ; select boot drive + mov al,10 ; read 10 sectors + mov ch, 0 ; cylinder = 0 + mov cl, 2 ; sector = 2 + mov dh, 0 ; head = 0 + mov ah, 2 ; function "read" + int 0x13 + jc load_kernel1 ; trouble? try again + ret + + times 510-($-$$) hlt + db 0x55 + db 0xAA \ No newline at end of file diff --git a/src/ckernel.c b/src/ckernel.c new file mode 100755 index 0000000..8ba827c --- /dev/null +++ b/src/ckernel.c @@ -0,0 +1,55 @@ +void k_clear_screen() { + char* vidmem = (char*) 0xb8000; + unsigned int i=0; + while(i<(80*2*25)) { + vidmem[i] = ' '; + ++i; + vidmem[i] = 0x07; + ++i; + }; +}; + +unsigned int k_printf(char* message, unsigned int line) { + char* vidmem = (char*) 0xb8000; + unsigned int i = line*80*2; + + while(*message!=0) { + if(*message==0x2F) { + *message++; + if(*message==0x6e) { + line++; + i=(line*80*2); + *message++; + if(*message==0){return(1);}; + }; + }; + vidmem[i]=*message; + *message++; + ++i; + vidmem[i]=0x7; + ++i; + }; + return 1; +}; + +inline void outportb(unsigned int port,unsigned char value) { + asm volatile ("outb %%al,%%dx"::"d" (port), "a" (value)); +}; + +void update_cursor(int row, int col) { + unsigned short position=(row*80) + col; + // cursor LOW port to vga INDEX register + outportb(0x3D4, 0x0F); + outportb(0x3D5, (unsigned char)(position&0xFF)); + // cursor HIGH port to vga INDEX register + outportb(0x3D4, 0x0E); + outportb(0x3D5, (unsigned char)((position>>8)&0xFF)); +}; + +int _main() { + k_clear_screen(); + k_printf("Welcome to ThiesyyOS.", 0); + k_printf("The C kernel has been loaded.", 2); + update_cursor(3, 0); + return 0; +}; diff --git a/src/ckernel.o b/src/ckernel.o new file mode 100755 index 0000000000000000000000000000000000000000..d5f33c0d67bb01e0a821e35f3bab95b6b165fa23 GIT binary patch literal 2512 zcmbtVO=uKJ6n;GuP5d2|MP!wwabZ!=Hqkk#h|DIm&Vsn>&!7io?3q-UkogJyvm}eN zt3)O3Ts$tz!tP-&o`vWse?o${APOEmL>MuM!W?o4#`mhLl1kaRxDUGOz3+YR)$4lI z)qmLM&Lj*2q!@4-RxODF{Fz+UGhEHUHrNcgZ1^TSYcImBEih}h$n$Q0BiG6{?8U4x zHv{H~-7-|5oq*f*);}qLUteB-$}@!ZW*E%NM2*~hI5+h=Vc@VKv|DdSF)e0nrpDmZ zk>Dp%vm=v6HpE%L)!^ueJ&!A`4UM7RnGD*W&^x}%uGBRx(u^k5fY{On^Uh@IZvXP~ zGS3vfMOa@7KaARojoead%wBvi-fd)IPgq|FgJ#2C2&Y$GtSy|z(v7*k(Ec=zdjS(K zaF3g)KHnD0Z)|%W)jpbw>cKzuU zRxZ{m%=ByK<{grm&RApMCcP9Xm^!clh9ApI9s<8Km<;?f}fiONd+--M&Ytq+zr zT=AU(&b}MXC8@cr>{vb<^1P9)bTLaOK+I zo?UbVV?pab)7g=_%5(LC zgj45U5%D^GNC5m}RT9hnm(WF2;`(=WQ^Xh&MCu>K%6QqoorvjsPa&NGbjVOdub*ta zcA~!$2l5vYuoW>XNnf9^xb+VRVg~)H=d|XyBsV8GQMs>thLU`N`6TU&F zTr(%3eT^-R;KgZQ0@7@c3@e!T=wfT&w764 literal 0 HcmV?d00001 diff --git a/src/kernel.ld b/src/kernel.ld new file mode 100755 index 0000000..216caed --- /dev/null +++ b/src/kernel.ld @@ -0,0 +1,8 @@ +OUTPUT_FORMAT("binary") +ENTRY(RealMode) +SECTIONS +{ + .text 0x8000 : { *(.text) } + .data : { *(.data) } + .bss : { *(.bss) } +} diff --git a/src/kernel.o b/src/kernel.o new file mode 100755 index 0000000000000000000000000000000000000000..d38574bcebb43b81de59436d5b2f3a729ef6bd82 GIT binary patch literal 2338 zcmb`IU1%It6vyw)#%x^Ky0lcSD9++T{c57rij>8#Nd2H8)>MOvj=MAW?yjAk8E0k< z3#9}FAA*#K6-r;~gIWlMq_Q?iTesDvhE)cng0@&Nf*)5lU_}bXhpgw`Ih(96El4g5 z|KI=I@4M_dacYvFo2;}&8sP#)_$*27KfnKsxEVTlP45za#w3hTArzFU_))3Wap@ulGf+7F)DTe{$6UeTD-PE#ej6Wa*I@KlWv!C{as?SbOXxmqhgbE z+mt&;#dYAqO}uuN3IZsffxq(&KSeI_+4wL&NeQ2ek#M8r z4^u+EV*NPzgv^j?SD5;==UBW-!&IHmQW9oD$OlN84Q}GQU!(3=OBXT)AkO z8o6DyWP-%WfKzhI0rNCJTk*GRwgb^E4{5|>ImZcz;W4uq_@q!I1!lP<$Cyj}z;TJ? zWKCla^K533VFi|6h*wo(X!Y>%vs?a{b;$m4r8BdV}?u zWN`P`(!;?YvS)Jn^X9K(OC!y3d)U*a4XtOa*CLxprn}EMUe!M$B ze(Qth%L&L4z5EHjqq+EZeW^Y%aXp+9GDX)-sA<%@P`9FHP-N_Iz-k*#BkK>p!@C5Qc z;6un`z#kzW06vO*5O@apFmN6D2=G_Plfd61PXS*w$-nHvqqayb;(&?gxGgc_;9D$S(pP z>fn!&ZHOO7c7eYD)=Sx<4GCFgWykGg! zFlKkd@_fUCir}-raLS(Vcm%NQ4mxF@kFE05qTU5vfk(hDfxL_9Z>= ', 0 + +cmd_reboot db 'reboot', 0 +cmd_credits db 'credits', 0 +cmd_hi db 'hi', 0 +cmd_help db 'help', 0 +cmd_beep db 'beep', 0 +cmd_halt db 'stop', 0 +cmd_banner db 'banner', 0 + +msg_halt db 'Stopping....', 0 +msg_reboot db 'Rebooting....',0 +msg_helloworld db 'Hey, Man!', 0x0D, 0x0A, 0 +msg_help db 'ThiesyyyOS Commands:', 0x0D, 0x0A ,'hi', 0x0D,0x0A,'help', 0x0D, 0x0A,'credits', 0x0D,0x0A,'beep[WIP]',0x0D,0x0A,'reboot',0x0D,0x0A,'stop', 0x0D, 0x0A, 0 +msg_credits db 'Developed and Tested by Thiesyyy and MrBesen!', 0x0D, 0x0A, 0 + +;logo db ' _______ _ _ _ _____ ____ ___ __ ___ __ ___ __ ______ ____ ',0x0D,0x0A, '|__ __| | | | | |_| | ____| / ____| \ \ / / \ \ / / \ \ / / | ___ | / ____| ',0x0D,0x0A, ' | | | |__| | _ | |___ | / \ \/ / \ \/ / \ \/ / | | | | | / ',0x0D,0x0A, ' | | | __ | | | | ___| \ \ \ / \ / \ / | | | | \ \ ',0x0D,0x0A, ' | | | | | | | | | | \ \ \ / \ / \ / | | | | \ \ ',0x0D,0x0A, ' | | | | | | | | | |___ _\ \ | | | | | | | |___| | _\ \ ',0x0D,0x0A, ' |_| |_| |_| |_| |_____| |_____/ |_| |_| |_| |_______| |_____/ ',0x0D,0x0A, 0 +logo db ' ____________________________________________________________________', 0x0d, 0x0A, '| |', 0x0D, 0x0A, '| ThiesyyyOS |',0x0D,0x0A,'| |', 0x0D, 0x0A, '|____________________________________________________________________|',0x0D,0x0A,0 + +buffer times 64 db 0 +; _ +; |_| +; + +;_|_|_|_|_| _| _| +; _| _|_|_| | _|_| _|_|_| _| _| _| _| _|_| _|_|_| +; _| _| _| _| _|_|_|_| _|_| _| _| _| _| _| _| _|_| +; _| _| _| _| _| _|_| _| _| _| _| _| _| _|_| +; _| _| _| _| _|_|_| _|_|_| _|_|_| _|_|_| _|_| _|_|_| +; _| _| +; _|_| _|_| +; +; +; + +; ================ +; calls start here +; ================ + +print_string: + lodsb ; grab a byte from SI + + or al, al ; logical or AL by itself + jz .done ; if the result is zero, get out + + mov ah, 0x0E + int 0x10 ; otherwise, print out the character! + + jmp print_string + +.done: + ret + +get_string: + xor cl, cl + +.loop: + mov ah, 0 + int 0x16 ; wait for keypress + + cmp al, 0x08 ; backspace pressed? + je .backspace ; yes, handle it + + cmp al, 0x0D ; enter pressed? + je .done ; yes, we're done + + cmp cl, 0x3F ; 63 chars inputted? + je .loop ; yes, only let in backspace and enter + + mov ah, 0x0E + int 0x10 ; print out character + + stosb ; put character in buffer + inc cl + jmp .loop + +.backspace: + cmp cl, 0 ; beginning of string? + je .loop ; yes, ignore the key + + dec di + mov byte [di], 0 ; delete character + dec cl ; decrement counter as well + + mov ah, 0x0E + mov al, 0x08 + int 10h ; backspace on the screen + + mov al, ' ' + int 10h ; blank character out + + mov al, 0x08 + int 10h ; backspace again + + jmp .loop ; go to the main loop + +.done: + mov al, 0 ; null terminator + stosb + + mov ah, 0x0E + mov al, 0x0D + int 0x10 + mov al, 0x0A + int 0x10 ; newline + + ret + +strcmp: +.loop: + mov al, [si] ; grab a byte from SI + mov bl, [di] ; grab a byte from DI + cmp al, bl ; are they equal? + jne .notequal ; nope, we're done. + + cmp al, 0 ; are both bytes (they were equal before) null? + je .done ; yes, we're done. + + inc di ; increment DI + inc si ; increment SI + jmp .loop ; loop! + +.notequal: + clc ; not equal, clear the carry flag + ret + +.done: + stc ; equal, set the carry flag + ret + +;fill file with zeros + times 2025-($-$$) hlt + db 'By MrBesen and Thiesyyy';23