New hobby project: Thor-OS, 64bit Operating System in C++

It's been a long time since I have posted on this blog about a project. A bit more than two months ago, I started a new project: thor-os

This project is a simple 64bit operating system, written in C++. After having written a compiler, I decided it could be fun to try with an operating system. And it is fun indeed :) It is a really exciting project and there are plenty of things to do in every directions.

I've also written the bootloader myself, but it is a very simple one. It just reads the kernel from the floppy. loads it in memory and then jumps to it and nothing else.


Right now, the project is fairly modest. Here are the features of the kernel:

  • Serial Text Console
  • Keyboard driver
  • Timer driver (PIT)
  • Dynamic Memory Allocation
  • ATA driver
  • FAT32 driver (Work In progress)
  • Draft of an ACPI support (only for shutdown)

All the commands are accessible with a simple shell integrated directly in the kernel.


All the testing is made in Bochs and Qemu. I don't have any other computer available to test in real right now but that is something I really want to do. But for now, my bootloader only supports floppy, so it will need to be improved to load the kernel from a disk, since it is not likely that I will have a floppy disk to test :D

Here is a screenshot of the OS in action:

Thor OS Screenshot


The next thing that I will improve is the FAT32 driver to have a complete implementation including creating and writing to files.

After that, I still don't know whether I will try to implement a simple Framebuffer or start implement user space.

As for all my projects, you can find the complete source code on Github:

Don't hesitate to comment if you have any question or suggestion for this project ;) I will try to write some posts about it on the future, again if you have idea of subject for these posts, don't hesitate. The first will probably be about the boot process.

Related articles

  • Thor OS: Boot Process
  • Update: Thor, Thesis and Publications
  • EDDIC 0.8 : 64bit generation
  • Switching to Gentoo Linux
  • EDDI : A new programming language project
  • Dynamic memory allocation in Intel Assembly on Linux
  • Comments

    Comments powered by Disqus