frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: A DOS-like hobby OS written in Rust and x86 assembly

https://github.com/krustowski/rou2exOS
207•krustowski•7mo ago
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

Comments

rollcat•7mo ago
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•7mo ago
Whoa there. Gotta run Doom and BASIC to compete with DOS. That is the officially recognized DOS-Kármán line.
krustowski•7mo ago
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•7mo ago
Doomgeneric has a very thin platform-specific layer: https://github.com/ozkl/doomgeneric?tab=readme-ov-file#porti...
jmspring•7mo ago
I want some TSRs and print spoolers...
rollcat•7mo ago
DOOM required DOS 5.0. rou2exOS is only the second take. Watch this area ;)
jdsully•7mo ago
Nobody cares about Lotus 1-2-3 support any longer :)
jmspring•7mo ago
What about Wordstar?
hans_castorp•7mo ago
WordPerfect was better anyway :) (SCNR)
RoyTyrell•7mo ago
The text editor JOE has a WordStar mode.
mycall•7mo ago
also, can't be a dos with the 'dir' command.
krustowski•7mo ago
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•7mo ago
CATALOG, DSPFLR, Get-ChildItem
onre•7mo ago
I would most likely end up with something like this:

  CAT          CATalogue - output the contents of current directory
  RM           to Raster Memory - load contents of named file in framebuffer
  MV           Make Virtual - map the file into memory and output the address
  LS           Load System - attempt to reboot using the named file as the kernel
  CD           Create Directory - self-explanatory
  SH           System Halt - immediately stop all processing
...and so on.
anyfoo•7mo ago
Very good design. Implements only the essential tasks an operator would need with concise and well-known mnemonics. I’m sure this will be immediately intuitive to anyone, with no potential for mistakes whatsoever.
OccamsMirror•7mo ago
I suggest:

    RM           Relocate me - you could also use the "-rf" flag to relative fuzzy matching, for instance `rm -rf tmp` to find any temp-like folder near your current location. Pretty standard stuff.
    CD           Clear data - `cd -L /temp` would "liquidate" the directory.
This would be a much simpler command interface.
koziserek•7mo ago
Love it.
GTP•7mo ago
To create a file, we should take inspiration from TOPS-10 and call the command `make` [0]. When issuing `make love`, it should ask for confirmation to the user: `not war?`.

[0] https://en.wikipedia.org/wiki/Easter_egg_(media)

stuaxo•7mo ago
CAT was on the Amstrad CPC.
pjmlp•7mo ago
As someone old enough to have started on MS-DOS 3.3, dir has been there all time.
guestbest•7mo ago
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

AndrewDavis•7mo ago
`dir` was also in CP/M. Though it didn't have a concept of a file hierarchy, so it listed all files on the disk (but did support supplying a pattern to filter against).
pjmlp•7mo ago
Borland languages and xBase ecosystem as well
MoonGhost•7mo ago
> Rust and x86 assembly

then

> Memory-safe language.

What's the point? Looks like today Rust is like 3D printing was. As if it makes something better. Printing was hyped and advertised by printers sellers and manufacturers. Finally they run out of money.

As for project, it's cool if compatible with old soft. Otherwise suitable mostly for education and masochism. Long way to become practical anyway even if it gets traction.

unchar1•7mo ago
You can write memory safe code in any language, but having a machine i.e. the Rust compiler check it for you is less error-prone than if a human does it.

Also if you look at the repo, only 3% of the codebase is in Assembly. IMO if >95% project is in Rust, you can definitely claim it's a Rust project.

PaulDavisThe1st•7mo ago
Finally, a positive comment about Rust that I can 100% agree with :)
whytevuhuni•7mo ago
The idea of Rust is not that it is 100% safe, but rather that it is able to encapsulate unsafety and divide the program in two parts:

- unsafe code plus modules that support it (the "trusted base")

- all the rest

Rust's promise is that there is no way to trigger any undefined behavior from bugs happening in "all the rest" of the code. If that code makes for more than 95% of the total, then that's a huge win compared to a completely unsafe language.

Also, Rust's support for inline assembly is in my opinion better than C's, it's much easier to specify and figure out the constraints on the boundary between Rust/assembly.

krustowski•7mo ago
Well, the point is to experiment with Rust no_std+no_main environment while trying to educate myself on how the things work under the hood. The project itself is part "just" a rewritten system (from C to Rust), and part an enhancement of such system furthermore. It lacks the external program execution though yet.
DrNosferatu•7mo ago
DOS-like but not DOS-compatible, correct?
krustowski•7mo ago
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•7mo ago
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•7mo ago
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•7mo ago
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.

snvzz•7mo ago
The 16bit one also looks fun[0] and would run on old PCs the new one does not. Have you considered open sourcing that one?

0. https://krusty.space/projects/rourexos/

krustowski•7mo ago
NGL, the codebase of the first iteration is pretty much a mess. It had been written in my mid-teenage years, so the C code is not very consistent across the project. There is a filesystem prototype written in Go as well... Also, it is quite complex to even compile RoureXOS: it needs Borland TCC and TASM (ca 1989 btw) to properly build a 16bit executable(s). It is feasible to compile it using DOSBox though. Maybe some day I could open source that one repository too.
DrNosferatu•7mo ago
...meaning MS-DOS compatible :)

I.e.: runs Alley Cat and Dune 2 - and Doom.

JdeBP•7mo ago
And prevents Lotus 1-2-3 from running? (-:
vardump•7mo ago
That's the litmus test. No version of DOS is complete until Lotus 1-2-3 no longer runs.
mixmastamyk•7mo ago
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•7mo ago
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•7mo ago
So MBR partitions? Or no partitions, like from a floppy? Or perhaps it doesn’t know because grub handles that part.
krustowski•7mo ago
For FAT12, it reads the first sector (0 or bootsector) of the floppy provided to gather information like bytes per sector, reserved sectors count, LBA of the root directory, etc.
OhNotAPaper•7mo ago
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?

anyfoo•7mo ago
I have not looked at this project, but my guess would be: x86 is a widely available platform that, because of its history and relentless compatibility, contains a lot of legacy interfaces that make implement a very simple, thin-layer and “DOS-like OS” without the need to parse device trees, set up MMUs, deal with complex busses like PCI(e) and so on.

It is much harder to bootstrap a simple OS in ARM, and it won’t stay very simple unless you accept significantly more limitations than you would under x86. (For example, you can’t do very much with the MMU off on ARM, and you also don’t have convenient BIOS interfaces that allow you to, say, read a sector, or wait for a keypress, with just a few lines of assembly).

krustowski•7mo ago
The x86 arch is used because this system iteration derives from the first one, which relies on BIOS interrupts and inline assembly in Turbo C. I am not trying to mimic (MS-)DOS exclusively, but both systems are highly inspired by it.

IMO multiple archs could be supported as Rust compiler allows the target arch specification, so one would build a specific target before the build itself.

mct•7mo ago
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 previously shipped with 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.

jmmv•7mo ago
I don’t understand: what makes this “DOS-like”? Not even the command names match DOS, except for dir and cls, and the architecture and feature set are completely different.
paulannesley•7mo ago
Single-user, single-task, VGA text-mode operating system with a basic filesystem (fat12), I guess.

Note the “guest” username in the prompt is a const, not multi-user: https://github.com/krustowski/rou2exOS/blob/6f85955dd339f09d...

klank•7mo ago
The original blog post has more details: https://krusty.space/projects/rourexos/

Ultimately, it's an eye of the beholder type thing, but it seems very fair to call it DOS-like to me. The DOS inspiration is pretty blatant all throughout it from its aesthetic, commands (more than just dir and cls is shared), booting from a 1.44 floppy, etc. And if you are coming from a primarily windows computing background, then "DOS-like" is entirely appropriate to me.

It looks like a fun project.

jmmv•7mo ago
Ah yes, the first version does indeed sound DOS-like. The second one diverges quite a bit though.

Fun project indeed.

krustowski•7mo ago
You are right, it goes way ahead the first iteration. I call it DOS-like because of its resemblance to the Text mode-only operating systems (and to MS-DOS especially). On the other hand, it shares very little as the architecture, command set, or hardware utilization approach are concerned when compared to MS-DOS.
90s_dev•7mo ago
Is this using a custom VGA driver from scratch in Rust??
90s_dev•7mo ago
src https://github.com/krustowski/rou2exOS/tree/master/src/vga
krustowski•7mo ago
Sort of, but IMO that module(s) is just a wrapper for video buffer.
m00dy•7mo ago
it needs event queue to support async runtimes.
krustowski•7mo ago
How about the event loop in its completeness?
pndy•7mo ago
Are you planning adding support for Czech diacritics?
krustowski•7mo ago
I am not at the moment. The goal is to keep this iteration in English for now. The first iteration was in Czech in the beginning though.
Toritori12•7mo ago
Good job OP, what a missed opportunity to say: "just a hobby, won't be big and professional like Linux" (:
ta12653421•7mo ago
Can it run Crysis??

:-))

Quantization-Aware Distillation for NVFP4 Inference Accuracy Recovery [pdf]

https://research.nvidia.com/labs/nemotron/files/NVFP4-QAD-Report.pdf
1•gmays•13s ago•0 comments

xAI Merger Poses Bigger Threat to OpenAI, Anthropic

https://www.bloomberg.com/news/newsletters/2026-02-03/musk-s-xai-merger-poses-bigger-threat-to-op...
1•andsoitis•21s ago•0 comments

Atlas Airborne (Boston Dynamics and RAI Institute) [video]

https://www.youtube.com/watch?v=UNorxwlZlFk
1•lysace•1m ago•0 comments

Zen Tools

http://postmake.io/zen-list
1•Malfunction92•3m ago•0 comments

Is the Detachment in the Room? – Agents, Cruelty, and Empathy

https://hailey.at/posts/3mear2n7v3k2r
1•carnevalem•4m ago•0 comments

The purpose of Continuous Integration is to fail

https://blog.nix-ci.com/post/2026-02-05_the-purpose-of-ci-is-to-fail
1•zdw•6m ago•0 comments

Apfelstrudel: Live coding music environment with AI agent chat

https://github.com/rcarmo/apfelstrudel
1•rcarmo•7m ago•0 comments

What Is Stoicism?

https://stoacentral.com/guides/what-is-stoicism
3•0xmattf•7m ago•0 comments

What happens when a neighborhood is built around a farm

https://grist.org/cities/what-happens-when-a-neighborhood-is-built-around-a-farm/
1•Brajeshwar•7m ago•0 comments

Every major galaxy is speeding away from the Milky Way, except one

https://www.livescience.com/space/cosmology/every-major-galaxy-is-speeding-away-from-the-milky-wa...
2•Brajeshwar•7m ago•0 comments

Extreme Inequality Presages the Revolt Against It

https://www.noemamag.com/extreme-inequality-presages-the-revolt-against-it/
2•Brajeshwar•8m ago•0 comments

There's no such thing as "tech" (Ten years later)

1•dtjb•8m ago•0 comments

What Really Killed Flash Player: A Six-Year Campaign of Deliberate Platform Work

https://medium.com/@aglaforge/what-really-killed-flash-player-a-six-year-campaign-of-deliberate-p...
1•jbegley•9m ago•0 comments

Ask HN: Anyone orchestrating multiple AI coding agents in parallel?

1•buildingwdavid•10m ago•0 comments

Show HN: Knowledge-Bank

https://github.com/gabrywu-public/knowledge-bank
1•gabrywu•16m ago•0 comments

Show HN: The Codeverse Hub Linux

https://github.com/TheCodeVerseHub/CodeVerseLinuxDistro
3•sinisterMage•17m ago•2 comments

Take a trip to Japan's Dododo Land, the most irritating place on Earth

https://soranews24.com/2026/02/07/take-a-trip-to-japans-dododo-land-the-most-irritating-place-on-...
2•zdw•17m ago•0 comments

British drivers over 70 to face eye tests every three years

https://www.bbc.com/news/articles/c205nxy0p31o
20•bookofjoe•17m ago•7 comments

BookTalk: A Reading Companion That Captures Your Voice

https://github.com/bramses/BookTalk
1•_bramses•18m ago•0 comments

Is AI "good" yet? – tracking HN's sentiment on AI coding

https://www.is-ai-good-yet.com/#home
3•ilyaizen•19m ago•1 comments

Show HN: Amdb – Tree-sitter based memory for AI agents (Rust)

https://github.com/BETAER-08/amdb
1•try_betaer•20m ago•0 comments

OpenClaw Partners with VirusTotal for Skill Security

https://openclaw.ai/blog/virustotal-partnership
2•anhxuan•20m ago•0 comments

Show HN: Seedance 2.0 Release

https://seedancy2.com/
2•funnycoding•21m ago•0 comments

Leisure Suit Larry's Al Lowe on model trains, funny deaths and Disney

https://spillhistorie.no/2026/02/06/interview-with-sierra-veteran-al-lowe/
1•thelok•21m ago•0 comments

Towards Self-Driving Codebases

https://cursor.com/blog/self-driving-codebases
1•edwinarbus•21m ago•0 comments

VCF West: Whirlwind Software Restoration – Guy Fedorkow [video]

https://www.youtube.com/watch?v=YLoXodz1N9A
1•stmw•22m ago•1 comments

Show HN: COGext – A minimalist, open-source system monitor for Chrome (<550KB)

https://github.com/tchoa91/cog-ext
1•tchoa91•23m ago•1 comments

FOSDEM 26 – My Hallway Track Takeaways

https://sluongng.substack.com/p/fosdem-26-my-hallway-track-takeaways
1•birdculture•23m ago•0 comments

Show HN: Env-shelf – Open-source desktop app to manage .env files

https://env-shelf.vercel.app/
1•ivanglpz•27m ago•0 comments

Show HN: Almostnode – Run Node.js, Next.js, and Express in the Browser

https://almostnode.dev/
1•PetrBrzyBrzek•27m ago•0 comments