What can I do that is moderately interesting with freedos? I've downloaded it a couple of times, but I never found anything useful to do with it. I'm sure I could play some games, or something. I really want to actually learn it.
I legitimately needed to use freeDOS a few months ago in order to downgrade the firmware on my BluRay drive, so I'd be able to rip 4K discs. It could only be done from DOS.
Wait...I have a legitimate question (was about to post some snarky comment but now I'm wondering).
WHY did you need DOS??? Use an XP VM? Some sort of Linux emulator? Flashing the firmware on a device manufactured long after the existence of DOS had been forgotten for most major hardware producers...
There’s a lot of firmware flashing stuff that runs on DOS, because it’s easier to have direct access to hardware without the OS trying to access that hardware simultaneously.
The alternative is correctly disabling the device under Windows/Linux/whatever, flashing the firmware, and re-enabling it, which is a process likely to have bugs and potentially result in bricking the device. Modern operating systems are big and constantly doing things in the background that may interfere with the firmware flashing process.
Not entirely true -- this is the case if the drive is configured as "Enhanced" or "RAID" or "AHCI" in the BIOS/EFI. There's typically a "Legacy" mode which will make the device visible to DOS (and indistinguishable from any other ATA controller).
I remember using FreeDOS for learning assembly through the `debug` command. Looking at the BIOS data was fun for me at the time. I've also tried DOSBox but since it's emulated the BIOS data wasn't "real".
I have not yet found an equivalent of the `debug` command for Linux. Ppl told me `gdb` could do the same but I found debug easier to use.
You can do more or less the same with e.g. objdump, but the root difference is that DOS COM binaries are very simple: basically a tiny header then the whole program in a big chunk.
More modern formats (be it PE, ELF, Mach-o, ...) are far more complex, with many different segments, running in a more complex CPU mode, generally dynamically linked, and all the other bell and whistles. So even if you had an identical debug.exe for Linux, it would still be much harder to make sense of.
> basically a tiny header then the whole program in a big chunk.
This is inaccurate. A DOS .com executable has no header whatsoever. It is literally just the program code and data with absolutely no metadata at all. It is loaded at memory address 0x100 and then execution begins, also at 0x100.
It is possible to have a 0 byte .com executable and it will perform a useful function. 0 bytes are loaded to 0x100 and then execution begins at 0x100, effectively re-running the last program run. Commonly such a file was named "go.com".
One common use is to drive hardware directly, either to learn how it works (prior to e.g. writing a linux device driver) or just for performance reasons. Reading and writing bits to a parallel port takes about 1us or so; there's no latency involved (no USB polling for instance), and no hoops to jump through (e.g. iopl()/mmap ) to access the hardware.
Unless you want to work specifically with FreeDOS, you might look at DOSBox instead. It's a MS-DOS emulator that runs in user space, rather than running as the OS, thus a lower barrier to entry.
The utilities provided by FreeDOS are generally more complete than those provided by DOSBox. You can copy them into your DOSBox installation for the best of both worlds.
Depends on your needs... if you can use dosemu+freedos, it's usually faster than dosbox's overhead. DOSBox is great for when you have a DOS gui, but if you don't need it, it's more overhead. Also dosemu+freedos can work headless.
Aside: most of my interest here is classic BBS software and doors.
You can compute like a PC user in the 1980s. There are various word processors, database utilities, and programming languages available. There are even old school networking tools for newsreading, IRC, telnet, and gopher.
I remember "DOS for Dummies" (the seminal Dummies book) being helpful when I was starting out; you can probably find a used copy for the cost of shipping at this point.
To illustrate how unnecessarily complicated and slow modern computing has become? You can still perform many of the computing tasks you do today on 50GB monstrosity OSs that take 3 seconds+ to start an application from and SSD.
FWIW DR-DOS is also free, IIRC it was released as open source some years ago (i think OpenDOS is based on it) and it is a bit more compatible with MS-DOS than FreeDOS.
DOSBox is a better option, if you have any interest in playing really old DOS games (Captain Comic, Commander Keen, Descent, etc) on a modern system. As far as running FreeDOS...it's a cool exercise in preserving compatibility for historical systems, but for the average PC enthusiast....doesn't offer much beyond that.
Shouldn't it say GNU roots? I expected to read they borrowed code from Linux for their kernel and was curious what exactly the similarities would be between Linux and FreeDOS's kernel given that DOS doesn't even do multi-tasking, but the article only talks about them reimplementing GNU.
One of the comments on the article proper makes me so sad. It basically says "What a monumental waste of effort. You should have spent your time improving Linux and not recreating DOS."
It's fine if you don't get the allure of this project. But to presume to tell someone how they should spend their own time is ridiculous to me. The creator of FreeDOS set out to do something, succeeded, and enjoyed their time doing it. And this person is telling them they're wrong.
How does freedos handle newer hardware? I remember giving up on my super DOS boot disc about a decade+ ago when it wouldn't boot anymore. If memory serves it was around the end of IDE drives, but I could be wrong. Maybe it had to do with EFI.
FreeDOS, like MSDOS, relies on BIOS calls to control the hardware. Most PCs aren't pure EFI-only and can still boot with some BIOS compatibility, but of course not all of the BIOS implementations are bug-free.
When legacy BIOS compatibility is truly dead, I guess DOS will die with it.
I would assume...(guess?) that FreeDOS will continue to exist in VM's to support extremely old industrial control systems (for example, one of the major dairy plants in my hometown of Phoenix, which still uses [last I checked, 2016] software running in a VM on actual DOS). Beyond that however, maybe outside of educational scenarios, I can't see it sticking around much longer as the move to pure EFI continues full steam.
I suspect that when we get computers that are pure EFI and completely free of legacy BIOS, it will be possible to use something like SeaBIOS to continue to add back BIOS compatibility for use with tools like FreeDOS.
I've tried booting FreeDOS on my Chromebook with SeaBIOS installed, and it just does not handle it well. The system will completely lock up when running most programs or even just by hitting the Tab key. FreeDOS doesn't even boot unless I have it skip loading AUTOEXEC.BAT and CONFIG.SYS on startup.
Weird that your decade old computer wouldn't boot DOS, I've booted MS-DOS on my previous i7 4770K computer from an external floppy disk drive. I tried some CGA games i wrote and they kinda worked with the exception of BIOS not supporting text in CGA mode.
But to answer the question, FreeDOS like MS-DOS and DR-DOS has drivers in the form of TSRs and DEVICE=blah.sys files. The only drivers it needs itself is for disk and basic video output, which are provided by the BIOS.
This website is such a blast from the past. I remember using DJGPP in highschool in 1998 and it still looks just the same. Glad to hear that it's still being used and updated; maybe I'll give it another try for old time's sake.
I think LLVM is adding 16 bit support of some kind. It's not something that's "self-hosted" on DOS itself like some of the other solutions are, but the flip side is that this gives you a lot of flexibility. You could even develop in Rust.
You know, the fact that their tools were originally Linux explains why the tools are so bloated and slow compared to the MS-DOS utilities I still use like EDIT, TREE, and MORE. It also explains why FreeDOS won't install on PCs I have which install and run DR-DOS and MS-DOS just fine.
Thats linux. Not UNIX. I think tool suites from companies now dead made tiny-c and the like, and had tractably small memory model, split i+d stuff in the c compiler toolchain. Not much work on them. Why not?
Well.. targeting 8086, 80286 was somehow off the radar for a bunch of people. I think because a lot of flight ready milspec stuff ran on 6502 or 6800, and especially the latter was a classic gordon-moore model simple register==memory model, a lot more ports went into 6800(x)
Interesting to think if IBM had selected a motorola CPU like this instead of an Intel, or if Intel had been in a mood to adopt a PDP11 instruction set... what the world would be like.
As a DEC-10 and PDP11 and Vax person, I used CP/M, it was ok. I could survive. MS-DOS blind-sided me. I had no idea what was coming down the pipe. talk about walking into a room of razors with closed eyes.