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.
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.
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.
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.
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?
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).
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.
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?
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.
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?
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.
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.
rollcat|8 months ago
pvg|8 months ago
MoonGhost|8 months ago
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.
mct|8 months ago
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.
OhNotAPaper|8 months ago
> 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|8 months ago
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|8 months ago
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.
mixmastamyk|8 months ago
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|8 months ago
Toritori12|8 months ago
pndy|8 months ago
krustowski|8 months ago
90s_dev|8 months ago
90s_dev|8 months ago
krustowski|8 months ago
DrNosferatu|8 months ago
krustowski|8 months ago
DrNosferatu|8 months ago
I.e.: runs Alley Cat and Dune 2 - and Doom.
m00dy|8 months ago
krustowski|8 months ago
ta12653421|8 months ago
:-))
jmmv|8 months ago
klank|8 months ago
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.
paulannesley|8 months ago
Note the “guest” username in the prompt is a const, not multi-user: https://github.com/krustowski/rou2exOS/blob/6f85955dd339f09d...
unknown|8 months ago
[deleted]