[back to main site]
Snowdrop OS - a homebrew operating system from scratch, in assembly language
Welcome to the pages of Snowdrop OS, my homebrew operating system project.

-/++/: :+shhy/
+hNMMMMMmy: ---:://osyyyyhhoo/:- -+dNMMMMNNNy:
:+osshdhyyyyyhdNMMMMNNdo: :+yhddmmhyyyhhhhhho:
:ssss+ -:/+osyssydmddhssysys+yyy+yhhy+:::/::::::::
-sysssso: --:::/++++shhhs:/oss++o+syyo/:::::----:://-
/ssooosso+: --::-- ----:/osso+oossss+:----:::::::::::/:
/sooosssso+++: ---:::::::::::-://::--:::::::::::://+++++/

Snowdrop OS was born of my childhood curiosity around what happens when a PC is turned on, the mysteries of bootable disks, and the hidden aspects of operating systems. It is a 16-bit real mode operating system for the IBM PC architecture. I designed and developed this homebrew OS from scratch, using only x86 assembly language.

I have created and included a number of utilities, including a file manager, text editor, graphical applications, and a BASIC interpreter. I also ported one of my DOS games to it. After all, what kind of an operating system doesn't have games?

The Snowdrop OS and the apps are distributed as both a floppy disk (1.44Mb) image, as well as a CD-ROM image. The images contain the following, all programmed from scratch:
  • a boot loader which loads the kernel into memory
  • a kernel which sets up interrupt vectors to be used by user apps, and then loads the startup app
  • user apps, including a shell (command line interface), utilities, test apps, and aSMtris, my Tetris clone
Snowdrop OS can also be installed to a hard disk - prompting the user to do so during boot - if it detects one.

I hope that Snowdrop can serve other programmers who are looking to get a basic understanding of operating system functions. Like my other projects, the source code is fully available, without any restrictions on its usage and modification.


version 1 - initial version, single tasking, shell, aSMtris
version 2 - PS/2 mouse driver and mouse test apps
version 3 - basic multi-tasking support and virtual display support
version 4 - FAT12 driver write/delete, file manager, text editor
version 5 - serial port driver, formatting utilities, file copy support
version 6 - multiplayer snake game (over serial port)
version 7 - slide show presentation app
version 8 - "keep memory" task lifetime mode, for custom services
version 9 - parallel port driver, BMP image support, sprites
version 10 - system timer frequency change
version 11 - animated sprites, sound driver (internal speaker)
version 12 - keyboard driver
version 13 - more sprites functionality, Storks game
version 14 - kernel config, program arguments, file utilities
version 15 - 16x2 LCD controller app, text editor fixes
version 16 - GUI framework
version 17 - Snowmine (Minesweeper-like game)
version 18 - BASIC interpreter and linker
version 19 - install to hard disk
version 20 - BASIC and text editor improvements
version 21 - integration of BASIC and GUI framework