Vladimir Fedorov

Github Toptal LinkedIn

Farewell, my dear operating system

21 DEC 2023

About twenty years ago, while studying at the university, I started developing my own operating system. Today, 20 years later, digging through the layers of old code on my computer, I decided to get its documentation in order — and I am finally ready to say farewell to this small project of mine.

I started developing my operating system in 2003, beginning from a floppy disk bootloader and eventually reaching multitasking when, with much horror, I noticed that I was spending all my weeknights and weekends on it. I spent about four years on that journey, and it was incredibly hard to write off that much time invested into the operating system. Unable to recover the days I already spent, I decided to save my future time at least, and abandoned the project. (There was another reason to drop it: my new laptop didn’t have a floppy disk drive, and my operating system couldn’t start from HDD.)

OS development is indeed a malady without a proper cure — one needs to struggle through the illness before getting rid of it forever. I stopped working on it many years ago and didn’t change a single line of code in that time. Still, I kept the code around and later published it on Github.

It is available here: mgcbean OS and bootsectors for the system.

MGCBEAN.DOS

This one is the most finished "operating system" of the three. It looks a bit like DOS with a reduced set of commands:

It runs simple .com files, just make sure they don't depend on DOS libraries or interrupt calls.

The system itself is compiled as a .com file, meaning you can run it in an older version of Windows.

DOS-like version of mgcbean - System command set

DOS-like version of mgcbean - Running a .com program

DOS-like version of mgcbean - Viewing a file

MGCBEAN.CLI

It became a 32-bit version of the system with multitasking.

Command line interface of 32-bit mgcbean - A progress bar

Command line interface of 32-bit mgcbean - System command set

Command line interface of 32-bit mgcbean - There are two tasks running: the main task (the CLI interface on screen) and "Task 2", that prints "I'm task 2!" when receives a message.

Command line interface of 32-bit mgcbean - Memory viewer

MGCBEAN.GFX

Grafical interface of 32-bit mgcbean

Well, I think it’s time to end the story. Farewell, my old friend. It has been a wonderful journey.