1. 8
Source URL considered unavailable as of 1 month ago, click for cached text - also see archive links above

All story content copyright of its respective owner.

Introduction section

Welcome to the pages of Snowdrop OS, my homebrew operating system project.

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, BASIC interpreter, x86 assembler and debugger. 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.

Source code browser

Some interesting areas in the source code are:

Boot loader is crammed into 512 bytes; it locates and loads the kernel

Snowdrop OS's kernel provides fundamental services and abstractions to applications

Graphics and GUI framework are the foundations needed to create graphical, mouse-driven applications

Snowdrop's x86 assembler can be used to create low-level applications directly inside Snowdrop OS

BASIC interpreter is great for creating high-level applications quickly

The x86 debugger can be used in conjunction with the assembler

Dynamic data structure libraries for working with linked lists, trees, BSTs, etc.

All applications games, text editor, file manager, tools, test applications

Versions

v1 - initial version, single tasking, shell, aSMtris

v2 - PS/2 mouse driver and mouse test apps

v3 - basic multi-tasking support and virtual display support

v4 - FAT12 driver write/delete, file manager, text editor

v5 - serial port driver, formatting utilities, file copy support

v6 - multiplayer snake game (over serial port)

v7 - slide show presentation app

v8 - "keep memory" task lifetime mode, for custom services

v9 - parallel port driver, BMP image support, sprites

v10 - system timer frequency change

v11 - animated sprites, sound driver (internal speaker)

v12 - keyboard driver

v13 - more sprites functionality, Storks game

v14 - kernel config, program arguments, file utilities

v15 - 16x2 LCD controller app, text editor fixes

v16 - GUI framework

v17 - Snowmine (Minesweeper-like game)

v18 - BASIC interpreter and linker

v19 - install to hard disk

v20 - BASIC and text editor improvements

v21 - integration of BASIC and GUI framework

v22 - x86 assembler, multi-disk support, file view utilities

v23 - x86 debugger

v24 - service loading

v25 - dynamic memory and data structures

v26 - installer improvements, pseudo-mouse driver

v27 - kernel and inter-task messaging

v28 - GUI higher resolution, draw application, desktop application

v29 - data compression, Hangman game

v30 - pseudo-mouse driver improvements

v31 - runtime libraries (RTL), BASIC interpreter RTL

  1.