Building NovaOS: A 16-bit Operating System from Scratch (in Assembly and C)
Introduction
Hi everyone! I'm Daniel, an 11-year-old developer from Iran. I've been working on a hobby project called NovaOS – a 16-bit operating system written in Assembly and C, inspired by MikeOS.
In this post, I'll share my journey, the challenges I faced, and what I've learned so far.
What is NovaOS?
NovaOS is a 16-bit real-mode operating system that boots from a floppy disk image and runs in QEMU. It currently includes:
- A Command-Line Interface (CLI) with commands like
DIR,CAT,COPY,DEL,HELP, andSYSINFO - A BASIC interpreter for writing and running simple programs
- A simple text editor (NovaPad)
- FAT12 filesystem support
- A basic graphical launcher (still in development)
Why did I build this?
I've always been fascinated by how computers work at a low level. When I discovered MikeOS, I thought: "Why not build my own?" So I started reading the source code, learning Assembly, and slowly building my own kernel.
It's been a long journey, but I've learned so much about CPU architecture, memory management, and system calls.
What I've Learned So Far
- Assembly is hard, but rewarding. Writing in Assembly forces you to understand exactly what the CPU is doing.
-
Debugging without a debugger is painful. Most of my debugging was done with
printf-style logging and a lot of patience. - The OSDev community is amazing. People on OSDev.org and Reddit have been incredibly helpful.
How to Run NovaOS
- Download the ISO from GitHub Releases
- Run it in QEMU: qemu-system-x86_64 -cdrom NovaOS.iso
- Explore the CLI, try BASIC programs, and test the built-in tools.
What's Next?
· 32-bit Protected Mode: I want to move from 16-bit real mode to 32-bit protected mode to access more memory.
· Better GUI: A proper graphical interface with window management.
· More programs: A file manager, a chess game, or even a simple web browser.
Contributing
If you're interested in Assembly, OS development, or just want to help, I'd love your support! Even 1 hour per week can make a difference.
The code is open and available on GitHub: github.com/danieldevir/NovaOS
Final Thoughts
Building an operating system from scratch is one of the most challenging and rewarding things I've ever done. If you're thinking about starting your own OS project, my advice is: just start. You'll learn more than you can imagine.
Thanks for reading! Feedback and suggestions are always welcome.
Daniel Baradaran (11 years old)
· GitHub: github.com/danieldevir
· Blog: danialcodes.zya.me
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.