Operating Systems on ao486 : Episode 1 - Snowdrop OS
Hello community,
On this first episode (see Series notes in the end), for me it seems fitting to start with a lesser known 16-bit OS for x86 architecture created by the Romanian programmer Sebastian Mihai (see his site: http://sebastianmihai.com/) called Snowdrop OS v31 http://sebastianmihai.com/snowdrop/
He also have a lot of other homebrew games/apps for different systems/consoles (Speccy, WonderSwan, Atari Jaguar, 3DO to name just a few) as well as some H/W projects, so I highly encourage you to check his page/projects
*Preliminary notes:
As mentioned, this unique OS is the work of a single programmer and nothing can explain it better than his own words from the link above:
"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."
*Requirements:
- floppy or CD ISO image from http://sebastianmihai.com/snowdrop/bina ... urces.html
You can run it just from the floppy, however if you want it installed on a VHD, here's a small how-to:
*Installation on VHD
- Get Snowdrop OS bootable floppy image (CD iso image is the same, just different media) and transfer it to MiSTer in a folder of convenience
Alternatively, you can simply F9/SSH into Linux and issue:Code: Select all
cd /media/fat/games/ao486 wget http://sebastianmihai.com/downloads/snowdrop/snowdrop.img
- Create a VHD raw file
Example:
F9/SSH into Linux and issue:Code: Select all
cd /media/fat/games/ao486 dd if=/dev/zero of=10MB_SnowdropOS.vhd status=progress bs=1M count=10
- From OSD , mount the Snowdrop OS floppy image plus the newly created VHD image on IDE-0:0 then Reboot & Apply (make sure boot sequence is set to floppy/hard-disk)
- Setup is pretty much straight forward, it will autodetect the VHD, hit Enter when prompted
- Use 1 for boot sector choice (Generic MBR)
- Type "do it!" (without quotes) when prompted to format/copy the OS into the VHD
- Unmount the floppy image and Reboot
*Personal impressions/notes/screenshots
It is a novelty OS, more like a proof-of-concept, other than the apps/games written by author, you can also use it for x86 assembly programming and learning platform, maybe expand it, so feel free to explore and experiment !
You have at your disposal the BASIC interpreter, x86 assembler, debugger, hex viewer and text editor available in the package.
The sources are also available (http://sebastianmihai.com/downloads/sno ... op_src.zip), as well with OS architecture and way much more details on his main page.
After booting, you will be presented with a CLI, main commands being "apps" to list the available Snowdrop application, and "desktop" (an app itself) to present the GUI.
It has a customizable GUI as well with mouse support, sounds can be produced via the PC Speaker, some graphic and even serial (albeit simple functions) support is present too. Mouse is a bit slow, but it works.
Even has a multiplayer game of Snake that can be played over serial null-modem on real H/W at least, one machine being the server and the other the client.
The games/apps included contain aSMtris (a Tetris clone made in assembly language), Storks (graphical matching game), Hangman, Snowmine (Minesweeper clone), a File Manager and some more:
*Final notes:
I enjoyed playing around with this OS and its apps/games. It is of course blazing fast on ao486, no surprise here.
No, it won't play Doom (unless someone ports it, probably porting the Doom83/zDoom one would be more feasible).
What makes it special is being the work of a single programmer learning his way in the new electronic world that was evolving around him as teen.
This OS captures perfectly the spirit of an era of countless curious minds exploring and creating the new digital habitat, sometimes alone in their bedrooms, sometimes inter-connected via the emerging networks, exchanging thoughts and ideas on an unprecedent scale and rate, growing exponentially from single islands to the vast ecosystem we have today.
What started as a novelty OS discovery, proved to have a very nostalgia hit and made me reflect a bit more on things we now get for granted and sometimes forget how all these started.
And for that, I could not thank enough to Sebastian Mihai for this gem and to the MiSTerFPGA devs and community for making this piece of history (and waaay much more) accessible again !
Series notes:
I am starting a more consolidated series of forum posts/how-to's covering different Operating Systems that can run on different MiSTer FPGA computer cores. Each "episode" (post) will cover one OS per core in no particular order, but at least at beginning will tend more to exotic/undocumented OSes/cores.
That means I will focus on stuff like QNX, OS/2, other Unix, Linux etc based OS for ao486, Human68K, SX-Windows, Ko-Windows for X68000, Unix-likes for C64, MSX etc rather than more used ones like MS-DOS/Win 95/98/NT or AmigaOS as these tend to be already well covered throughout the forum/Discord/internet.
For each post, the intended purpose is to provide you a DIY install guide of the respective OS, starting with FD/HD image generation/conversion to
OS installation/configuration as well as minimal file manipulation/apps/games installation/use/tips depending on the situation.
I am aiming also to use MiSTer as much as possible (be it ARM or core(s) sides) to do the involved tasks, thus relying on external PCs and software emulators to a minimum.
As for series episode naming convention/posts locations, it will be "Operating Systems on CORE_NAME : Episode XYZ - OS_Name" and each will be located under respective core main topic.
I will add as well as much of the official sources/manuals/links I can, but please note I am not an expert or had much previous knowledge on most of these OSes/computers (grew up with x86 and MS-DOS/Windows/some Unix/Linux), so feel free to read/test/correct and improve this.
As a last note, I am also hoping to spread awareness/curiosity towards the computer cores/OSes, as well as possibly identifying core(s) issues/points of improvement.
Thank you for your patience and have fun with the MiSTerFPGA cores and supported OSes !