Hacker News new | past | comments | ask | show | jobs | submit login
FreeDOS's Linux Roots (linuxjournal.com)
109 points by dbennett on June 27, 2019 | hide | past | favorite | 56 comments



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...

so many questions!


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.


Even DOS doesn't work for most modern hardware. Can't have direct blueray drive access if there is no way to initialize the SATA controller...


The BIOS does it for you.


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).


Well, all I can tell you is that it worked.


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".


I thought you could stuff some metadata aboce the org 100h directive, but my bad if it is not the case.


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.


https://github.com/microsoft/ms-dos may also be interesting


You can even configure DOSBox to boot FreeDOS instead of using its built in "DOS" environment.


Might lead to more practical possibilities, too. Like in this unexpected story:

https://www.networkworld.com/article/2223927/why-this-linux-...


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.


"butwhy.gif"


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.


Little or no overhead (almost bare-metal).


Run a DOS OS legally without having to use a Microsoft product. That's one.

It has a package repository which is cool.

But DOS is DOS, it is limited. If you don't think it's cool, I guess you're outside of its scope :).


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.

Proceed with the pitchforks and stake burning.


Used it after restoring some win95 backup tape:

- old dos games

- turbo pascal 7 coding sessions


This is exactly what I did. That stark blue TP7 editor is a thing of beauty.


oh yeah

600kB of pure joy

taught me one thing though, having a hard coded IDE hurts. I missed emacs so damn much..


Unfortunately, at that point in my life, Vim/Emacs were completely unknown to me. When I hit my 20's and got stuck in Vim, everything changed.


In Linux, I prefer using Dosemu instead of DOSBox to run old DOS software.

Dosemu requires you provide the OS so I use FreeDOS.


Program in the old BASICS, such as BASICA or QBASIC. Very fun.


You can learn to code like it's 1980s!


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.


Thanks for posting that. Sounds like SeaBIOS or FreeDOS.


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.


Curious. How exactly does one build embedded applications for FreeDOS? What languages/compiles can I use?



Rexx! Loved that on OS/2, pretty happy to see that it has a home on FreeDOS.


FreePascal & Lua! Thanks


One can use the free Open Watcom or DJGPP to code in C or C++.


Is DJGPP still maintained? All I could seem to find are very old versions, unless the project has moved somewhere that I couldn't find.


http://www.delorie.com/djgpp/

Considering it has GCC 9.1.0, I'd say it's still maintained.


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.


Check Open Watcom v2[1], which is still actively developed. Also the JWasm[2] - FOSS alternative to MASM.

[1] https://github.com/open-watcom/open-watcom-v2

[2] https://GitHub.com/JWasm/JWasm


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.


I thought freedos was written in fasm


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.


The tools weren't "originally Linux", some of the functionality was inspired by similar Linux tools. I thought that was explained pretty clearly, tbh.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: