This is just a small project, writing an "operating system" from scratch with NASM and C++.
Everything from booting to memory management, handling devices, reading the file system, etc. is custom-made.
It is 32bit for now. Will most likely be rewritten for 64bit once I am further educated in this field.
Clarification:
This boots off floppy disk and has no CD drivers.
As of now the run.sh file builds, links, and runs the project.
Building and linking requires nasm, g++ and ld.
The binary is booted inside qemu-system-x86_64 through BIOS, no UEFI yet.
Yes, so far just C libraries...
| Progress | Library |
|---|---|
67% |
cstddef |
~30% |
cstdint |
5% |
cstdio |
6% |
cstdlib |
22% |
cstring |
Homemade, suboptimally.
see: MemoryManager.h
Memory Management allocates "pools" of memory to be divided into smaller fixed size sections.
Allocating more than 65536 bytes currently leads to memory that cannot be freed.
All other allocations can be freed easily.
| Progress | Driver |
|---|---|
~95% |
Video Memory Manipulation |
~85% |
PS/2 Keyboard |
0% |
File system drivers |
see: Shell.cpp
So far, pretty useless, only lets you input test.
Will be expanded once more string manipulation is implemented.
Admittedly I did copy a few basics from the osdev Wiki without writing them myself:
I will refactor that later (once I have fully understood the related information) into "better" - or just my own - code.
Word of warning, the source code does not follow any guidelines at all.
I am not the best C++ dev on this planet, by a long shot.
The .cpp and .h files are all over the place.
This is a learning experience.
As of now this is just practice for me, visible for curious onlookers but not Licensed for use in any form.
Warning
Please, for the love of all bits and bytes, do not use this anywhere.
In case anyone wants to correct or refactor or contribute, please don't, for now at least.
This is me learning a new skill. It will be subpar for the foreseeable future. That is in fact how learning works.
