[HN Gopher] Show HN: A DOS-like hobby OS written in Rust and x86...
___________________________________________________________________
Show HN: A DOS-like hobby OS written in Rust and x86 assembly
To try it out, simply build the project yourself from source, or
use attached bootable ISO image of the system (in Releases on
Github) and run it in QEMU. https://blog.vxn.dev/rou2exos-rusted-
edition
Author : krustowski
Score : 130 points
Date : 2025-06-19 13:38 UTC (9 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| rollcat wrote:
| Memory-safe language. x86_64, with Arm on the roadmap. Networking
| stack. Boots from a CD and via multiboot. Your hobby project
| wipes the floor with DOS.
| pvg wrote:
| Whoa there. Gotta run Doom and BASIC to compete with DOS. That
| is the officially recognized DOS-Karman line.
| krustowski wrote:
| What a challenge! Need to implement some interrupts it seems
| then, to provide an API for filesystem and so... Thank you
| for such idea
| rzzzt wrote:
| Doomgeneric has a very thin platform-specific layer:
| https://github.com/ozkl/doomgeneric?tab=readme-ov-
| file#porti...
| jmspring wrote:
| I want some TSRs and print spoolers...
| rollcat wrote:
| DOOM required DOS 5.0. rou2exOS is only the second take.
| Watch this area ;)
| jdsully wrote:
| Nobody cares about Lotus 1-2-3 support any longer :)
| jmspring wrote:
| What about Wordstar?
| mycall wrote:
| also, can't be a dos with the 'dir' command.
| krustowski wrote:
| Afaik there is a 'DIR' command in MS-DOS. Anyway, what
| would be a better command to list a directory? I could
| think of 'ls' maybe
| rzzzt wrote:
| CATALOG, DSPFLR, Get-ChildItem
| guestbest wrote:
| It would seem to logically follow that a Disk Operating
| System would have a directory list utility for disks like
| 'dir'. It was there in the first version called 86 DOS.
|
| https://en.m.wikipedia.org/wiki/86-DOS
| DrNosferatu wrote:
| DOS-like but not DOS-compatible, correct?
| krustowski wrote:
| You are right. The first iteration however is 16bit and is very
| close to MS-DOS in terms of compatibility. Moreover, any OS
| that can handle simple disk I/O ops could be considered a DOS
| system too, innit?
| leeter wrote:
| Correct, there is a difference between MS-DOS and IBM-PC
| compatible and a DOS (ex: all the DOSes that existed for
| Amiga/Apple II/Commodore etc). There are many DOSes (and even
| MSDOSes, because yay early PC era incompatibilities!), but
| there is a very dubious list of things needed to be MS-DOS
| and IBM-PC compatible. You can probably do it if you're
| willing to setup a hypervisor and emulate some hardware.
|
| NGL one of my long term projects was/is something exactly
| like this but UEFI and secure boot. The idea being to use the
| VM extensions to create IBM-PC and DOS compatible
| environments. For anything using DPMI[1] I'd probably do the
| same trick as Win95 did and just replace it with my own
| implementation so it's not too overburdened with layers.
|
| [1]
| https://en.wikipedia.org/wiki/DOS_Protected_Mode_Interface
| JdeBP wrote:
| A version of (say) FreeDOS that was layered on top of the
| EFI API instead of PC98 firmware interrupts would be quite
| interesting. That would be a major architectural change to
| most of the programs, of course. But one would have
| provided the EFI Shell with essentially a complete suite of
| MS-DOS (albeit not PC-DOS or DR-DOS) commands. That could
| probably be quite easily ported to (say) ARM whereas the
| original still has x86isms.
|
| On the other hand, did you see
| https://github.com/FlyGoat/csmwrap when it came up a few
| weeks ago?
|
| * https://news.ycombinator.com/item?id=44101828
|
| There are already projects to provide replacements for the
| vanished Compatibility Support Module.
| leeter wrote:
| I did see that and for people that need that specific
| functionality it seemed like a good solution.
|
| My goal was more "What if DOS hadn't ended and but kept
| up support for modern hardware" along with emulation of
| common things in DOS gaming. So for example you would be
| able to set up a PIV that mapped certain resources
| directly or emulated them depending on the need.
|
| Could I use DOSBox for this... yes, but this is a "why
| not" sort of thing. I figured it would be a good excuse
| to learn OS dev. But life has kept me busy for now.
| DrNosferatu wrote:
| ...meaning MS-DOS compatible :)
|
| I.e.: runs Alley Cat and Dune 2 - and Doom.
| JdeBP wrote:
| And prevents Lotus 1-2-3 from running? (-:
| vardump wrote:
| That's the litmus test. No version of DOS is complete until
| Lotus 1-2-3 no longer runs.
| mixmastamyk wrote:
| I would have preferred something like this to the current UEFI
| environment and shell, a FLOSS 64-bit DOS-like. A cool retro boot
| manager and diagnostic env perhaps.
|
| Could this run from an efi system partition? Seems to support
| fat12, what about gpt?
|
| Does it poke video hardware like DOS, or have a terminal like
| output?
| krustowski wrote:
| Booting from an EFI system partition has not been tested yet.
| FAT12 is the only filesystem (ok, there is a memdisk
| implementation, but it won't work now) supported, so GPT is not
| supported at the moment too (yet). Kinda aiming for FAT32
| implementation to be the very next implemented (flash disks are
| usually FAT32 iirc). Not sure about the last question: the OS
| utilizes/directly writes to the VGA buffer in memory, the
| provided resolution is 80x25 by GRUB.
| mixmastamyk wrote:
| So MBR partitions? Or no partitions, like from a floppy? Or
| perhaps it doesn't know because grub handles that part.
| OhNotAPaper wrote:
| Out of curiosity, why x86? Is it the preponderance of resources?
| The weird instruction format? The complexity of the boot
| sequence? Are you specifically trying to mimic DOS?
|
| > A support for the ARM architecture (aarch) is coming soon too.
|
| Wow! How do you support a DOS-like OS across multiple
| architectures when DOS itself is tightly tied to interactions
| among the program, the system code, and the architecture?
| mct wrote:
| I love that the networking stack uses SLIP and slattach(1)!
|
| I was playing with a toy TCP/IP stack, and decided using SLIP
| over a pty on Linux was a great way to interface with the kernel.
| Unfortunately it looks like macOS used to include slattach(1) a
| very long time ago, but no longer does.
|
| I'm curios if other people have used SLIP on macOS to get a dead-
| simple, cross-platform API to the networking stack?
|
| The alternative would be to use tun/tap on Linux and utun on
| macOS, but SLIP would be so much nicer.
___________________________________________________________________
(page generated 2025-06-19 23:00 UTC)