[back to main site]
Snowdrop OS - a homebrew operating system from scratch, in assembly language

Applications section

Snowdrop OS contains several apps that vary in purpose from a simple text editor, file manager, driver test apps, as well as a Tetris clone. Most screenshots on this page are of the apps running in Bochs, a virtual machine I used as the test environment while developing Snowdrop OS.

This list is not comprehensive. Snowdrop OS includes other apps, with new ones created occasionally.


The Desktop application is meant to become an entry point into the graphical application ecosystem of Snowdrop OS. Icons can be added or removed via the file DESKTOP.CFG.


The draw application was written for two reasons: the first was to make the visual application environment more fun. The second was to serve as a test bench for GUI framework extensions. Two extensions were written for it: colour picker and text box.


aSMtris is my Tetris clone which I wrote a while ago. It, too, was written in x86 assembly language, designed to run under MS-DOS. It made use of several functions of int 21h, the MS-DOS services interrupt.

Once Snowdrop OS was functional, I added kernel-offered services such as random number generation and delay. This allowed me to port aSMtris to Snowdrop OS, by removing the reliance on MS-DOS int 21h, and replacing those calls with calls to Snowdrop OS interrupts.


Snowmine is a Minesweeper-like game that I wrote to show how Snowdrop's GUI framework could be used to create a simple game.

guitests app

This application allows the testing of the GUI framework. It contains a screen for each supported UI component type (buttons, checkboxes, etc.)

Additionally, it can be used as reference for building new GUI framework applications, due to its breadth.

memtest app

The MEMTEST application presents an area of dynamic memory visually. It shows the user how memory chunks are allocated, deallocated, and reallocated.

bsttest app

The BSTTEST application lets the user interact with a binary search tree (BST). The user can create his own tree from scratch, or load a built-in, reasonably complex tree.

apps app

The apps app simply lists the apps available on disk, giving the user a quick way to see what he can run.

Sprites test app

The sprites test app generates sprites from a BMP image, and then moves them across a background. It relies on Snowdrop OS's software sprites library.

Parallel port driver test app

This app outputs bytes to the parallel port, to turn LEDs on and off. Each LED is connected to a parallel port data pin, with a 1,000 Ohm resistor in series.

BMP loading and rendering test app

This app demonstrates how to use Snowdrop OS's graphics routines to load a 256-colour BMP file, and then render it to the screen.

File Manager

Completing the read/write/delete set of workflows in the FAT12 driver has allowed me to create the File Manager app, which provides a UI for the user to list, copy, and delete files on the disk. The File Manager required integer-to-string routines for displaying 32bit numbers, which were interesting to implement.

Unlike many commercial operating systems, the File Manager also
shows the number of available file "slots" on disk.
This is useful because the disk can be considered "full" before
its data area has filled up, since on FAT12, the number of root
file entries on a disk is limited.

anisprt app

This very simple app shows how to animate a single sprite from a BMP frame strip.


Storks is a simple matching game; you control the titulary stork, trying to deliver the correct baby bundles to the forest tree inhabitants whose wishes are displayed as "wish bubbles" above their hollows.

I have developed Storks to showcase all capabilities of the game development infrastructure I added to Snowdrop OS: BMP support, sprites, sound, enhanced keyboard support, graphics mode text.


My version of the well-known word guessing game.

Text Editor

Similarly, support for file writing in the FAT12 driver has opened the door for the Text Editor. For the first time, files could be created on the disk from within Snowdrop OS!

Hex viewer

The hex viewer lets the user view either a memory section or a file from disk in both hex and ASCII

No Snakes!

Adding in the serial port driver inspired me to make a small multiplayer game.

No Snakes! is a two-player game, played over the serial port. It follows a client-server model, whereby it runs in server mode on one computer and in client mode on the other. In client mode, the game sends the direction chosen by the player, and receives the current positions of each snake, as well as whether the game is over.

In server mode, the game enforces game rules, updating snake positions and determining the winner and the loser.

This is my first multiplayer game, and my approach was to test client and server separately as much as possible. Both client and server were required for testing towards the end, which is when I switched to using two older laptops.


I had a guest lecture ahead of me, and decided to use Snowdrop OS to give my presentation. I thought that the students may find it more interesting that way, compared to seeing a run-of-the-mill PowerPoint slide show.

The Presenter app was relatively easy to create, using the text editor app as a starting point.

mousegui app

This 320x200 (mode X) graphical app tests the mouse driver. It initializes the mouse driver with a 320-wide and 200-tall bounding rectangle, which the driver uses to keep the pointer within the bounds of the screen automatically, moving it based on deltas (x and y) received from the PS/2 controller via hardware interrupt requests.

sndtest app

This app demonstrates how to interact with Snowdrop OS's sound driver, which produces sound over the IBM PC internal speaker.