Homebrew An OS From Scratch? Snowdrop Shows How It’s Done

Ever wondered what it would take to roll your own OS? [Sebastian]’s Snowdrop OS might just provide you with some insight into that process, and maybe even some inspiration.

[Sebastian] created Snowdrop completely from scratch, using only x86 assembly language. It’s more than just bare-bones, and boasts a number of useful utilities and programs including a BASIC interpreter and linker (for creating standalone BASIC executables.) That’s not even touching on the useful essentials, like multitasking and a GUI framework. There are even a number of resources specifically for making game development easier. Because as [Sebastian] puts it, what’s a operating system without games?

Interested in giving Snowdrop a try, or peek at the source code? The binaries and sources section has all you need, and the other headings at the top of the page will send you to the various related goodies. If you have a few minutes, we recommend you watch a walkthrough of the various elements and features of Snowdrop in this video tour (embedded after the page break.)

Snowdrop is an ambitious project, but we’re not surprised that [Sebastian] has made it work; we’ve seen his low-level software skills before, with his fantastic efforts around the classic stand-up arcade game, Knights of the Round.

21 thoughts on “Homebrew An OS From Scratch? Snowdrop Shows How It’s Done

  1. You can test it with the following command but mouse input is not working out of the box, on a Linux host.
    qemu-system-x86_64 -boot d -cdrom ./snowdrop.iso -m 1024

    1. I have this idea in my head that OSes run on Microprocessors, not microcontrollers. The reason why many hobbyists want to work with Raspberry Pi’s, even when Adriuno boards or even Parallax Propellers would suit better. Good on you for going against the grain, but there’s still a little cognitive dissonance there for me.

      1. A lot of microcontrollers these days more than meet the processing power of early desktops or minicomputers, so it’s not that far-fetched to run an OS on them. (See 211BSD on PIC32s, for example)

        You’ve also got projects like uCLinux, FreeRTOS, and even full-size Linux has some microcontroller support now.

        I only really got into doing this because someone wasn’t impressed by my PDP-11 emulator on micros to run real UNIX, they wanted a native kernel, and I realised I was going to need to re-write so much of the arch-dependent kernel, that I would have to basically write my own from scratch.

        So I didn’t back down from the challenge! (Even if there’s a lot to do, and sometimes I feel like I’m drowning in curly brackets)

  2. Good job! OS development is interesting area. I did my own Brainf* OS a decade ago. It wasn’t booting properly on about 50% of PCs though for some reason. Compatibility proved to be quite a challenge.

  3. Nice job! I’m impressed by the amount that can be achieved in raw ASM! 27 years ago I did something similar (real mode x86 kernel & bootloader, inspired by VxWorks) aiming to write as much as possible in C (microsoft compiler v5.1), then bolted on an X11 API based GUI, and dabbled with 32-bit porting (using the venerable djgpp): https://github.com/phlash/litetask

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.