project - novos

Github repository

novos is my ongoing toy operating system project, written in C++ and assembly. my end goal is to turn it into the sort of sci-fi stuff you'd see on the monitor of the computer system in a retro-futuristic spaceship in your average Alien film, or as the main game view in a game like Oolite. so this project is a sort of videogame/art project, but completely bootable with all my own libraries!


it's difficult to really show off what i've been doing with this project, since most of the achievements i've made are technical milestones which seem extremely mundane from a perspective of the user-space we're all used to when using computers, but a few of the key milestones i've reached so far:

  1. from-scratch bootloader, capable of loading into 32-bit mode and unpacking an ELF executable, written in assembly
  2. memory management, dynamic memory allocation (no pages yet)
  3. screen output and structured UI tree
  4. strings, dynamic arrays, linked-lists, and other fundamental data structures
  5. IDT control in C++ land, interrupt handling, interrupt remapping
  6. GDT control/configuration in C++ land
  7. fully functional keyboard driver supporting scan code set 2, interrupt driven
  8. text rendering using a simple custom bitmap font
  9. resource embedding as raw binary data, images and 3D models readable within the OS after boot
  10. full matrix and vector math library, enabling wireframe rendering of 3D models at a reasonable 50fps on a single CPU thread

it's come a long way, but there's still a long way to go. my next move (as of writing this) is implementing timer support using either APIC or PIC, which will enable multithreading, and starting work on file-system parsing to break up the OS from being one big binary file.

some graphical demos are above. i love my retro aesthetics and you may notice a certain similarity between the interface design and this website's design...


if any of this sounds cool at all, please do check out the Github repository linked above. the code is reasonably well-documented and understandable.