j12bates / House-DOS

A real-mode x86 operating system
BSD 3-Clause "New" or "Revised" License
6 stars 0 forks source link
osdev x86-nasm

House-DOS

A real-mode x86 Disk Operating System that is, and forever will be, mostly useless. It's written completely in x86 assembler.


This was originally created as a summer project during the 2020 pandemic. I've been having lots of fun creating it, and hope to continue to take this project further.


Special thanks to:

Instructions for Use:

You will need the Netwide Assembler (NASM).

  1. Create a disk image by running BUILD.SH as root.
  2. Virtualize as an HDD in QEMU, or write to a storage medium greater than 32M and boot to it.

Creating Programs & Commands:

House-DOS commands are written in real-mode x86 assembly. There are many different system calls available for many specific tasks; here are a few examples:

A full and complete reference can be found in docs/SYSCALL.TXT. System calls are always being added.

Features Coming Soon:

Here are some features planned for the next release (v0.1.2), which is in the works:

What I've Learned:

Over the course of creating this project, I've encountered lots and lots of segmentation errors. Basically, since I like to use different 64K segments for different things, I have to change around the segment registers quite a lot... And it ends up reading to or writing from the wrong memory segment.

The answer? Either don't use segments, or push them.

Another thing that helps solve the issue is by making subroutines out of code that is reused in some form.


Other things I've learned: