Skip to content

RobertWesnerPractice/osdev-floppy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OSDEV

About

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.

Building

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.

Progress

Standard C++ library

Yes, so far just C libraries...

Progress Library
67% cstddef
~30% cstdint
5% cstdio
6% cstdlib
22% cstring

Memory management

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.

Drivers

Progress Driver
~95% Video Memory Manipulation
~85% PS/2 Keyboard
0% File system drivers

Basic shell environment

see: Shell.cpp

So far, pretty useless, only lets you input test.

Will be expanded once more string manipulation is implemented.

Hall of shame

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.

Disclaimer

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.

License and contributing

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.

About

ignore this please, it's terrible

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published