From fb1da55354b873474be042e2b4e234d8a115244f Mon Sep 17 00:00:00 2001 From: "E. Almqvist" Date: Sun, 29 Aug 2021 19:15:52 +0200 Subject: [PATCH 1/6] Cleanup --- drivers/vga.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/vga.c b/drivers/vga.c index 959b491..48dfa60 100644 --- a/drivers/vga.c +++ b/drivers/vga.c @@ -73,5 +73,3 @@ void printalign(char* str, int attribute_byte, enum align alignment) { print(str, attribute_byte); } - - From 4c80e0a3503d46ed007d5d0949795bf9e043be99 Mon Sep 17 00:00:00 2001 From: "E. Almqvist" Date: Fri, 3 Sep 2021 13:07:06 +0200 Subject: [PATCH 2/6] Stuff --- kernel/memory.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/kernel/memory.c b/kernel/memory.c index b31569d..8986d54 100644 --- a/kernel/memory.c +++ b/kernel/memory.c @@ -1 +1,9 @@ #include "memory.h" + +char* malloc(unsigned int size) { + return " "; +} + +void mfree(char* p) { + +} From 774a08ed999efe09772b7f20661f0e0d42b42c17 Mon Sep 17 00:00:00 2001 From: "E. Almqvist" Date: Wed, 8 Sep 2021 10:32:20 +0200 Subject: [PATCH 3/6] Include --- kernel/kernel.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/kernel.c b/kernel/kernel.c index ad32614..db926f0 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -1,3 +1,4 @@ +#include "memory.h" #include "../drivers/vga.h" #include "../lib/str.h" #include "../lib/strf.h" From d89e3f60b3c372f5337fe56a732dded358090cec Mon Sep 17 00:00:00 2001 From: "E. Almqvist" Date: Fri, 10 Sep 2021 17:34:14 +0200 Subject: [PATCH 4/6] Logo & stuff --- logo.png | Bin 0 -> 46700 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 logo.png diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d401a9d8734c2cc3e1acf4b47c8fd90132ba9e71 GIT binary patch literal 46700 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 LmQuBX`RD%wk(>1S literal 0 HcmV?d00001 From da08c9d79216ebd2524fcab7aefc45c7897db37d Mon Sep 17 00:00:00 2001 From: Elias Almqvist Date: Fri, 10 Sep 2021 17:36:08 +0200 Subject: [PATCH 5/6] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 79cda0f..1966aae 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@

e-Operting System

+

A simple x86 operating system. Maybe 64bit in the future.

From ef36923999bcbd2cdd7fa288bd44f3a494308356 Mon Sep 17 00:00:00 2001 From: Elias Almqvist Date: Fri, 10 Sep 2021 17:51:11 +0200 Subject: [PATCH 6/6] Update README.md --- README.md | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 1966aae..900269e 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,34 @@ -

e-Operting System

-

-

A simple x86 operating system. Maybe 64bit in the future.

-

+

+

A simple & lightweight x86 operating system

+ ### Building & Running Use the `Makefile` in order to build the binaries/objects et cetera- with make.
-Example: `$ make os-image` +**To build the OS image run**: `$ make os-image` +
+**To build the OS image (WITH GRUB) run**: `$ make grub`

-In order to run you can launch the OS with qemu. You can also launch qemu via make by doing: `$ make run`. +#### Emulation +You can launch eOS with a VM like qemu. You can also launch *qemu* via *make* by running: `$ make run`. $ make (option) run : Runs the OS with qemu drun : Recompiles the OS and runs it with qemu clean : Remove all object/binary/image files -### Features - - 32bit - - VGA - - And more to come! - ### Planned Features Read `TODO.md` for planned features. +
+
+
+
+ ### Resources -#### Books +These are the most common resources I used in order to build eOS. I highly recommend them. +##### Books - [Operating Systems: From 0 to 1](https://tuhdo.github.io/os01/) (Open-Source, unfinished) - [Writing a Simple Operating System - from Scratch](https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf) +##### Wikis + - [OSDev.org](https://wiki.osdev.org/Expanded_Main_Page)