Thursday, June 29, 2017

Guest post: My FreeDOS journey

Longtime FreeDOS contributor Rugxulo tells his history with computers, and how he came to use FreeDOS. As you'll see, Rugxulo has worked on a lot of different projects, including an unofficial FreeDOS distribution.

In 1994, I got my first ‘486SX-25 with 4MB RAM running MS-DOS 6.0 and Windows 3.1. Obviously it was very under-powered compared to now. But it still had a lot of good, irreplaceable software, mostly games like King's Quest 6, which utilized VGA, CD-ROM, SoundBlaster 16, and mouse to great effect.

For a few years I was calling lots of BBSes via dial-up, but most software was shareware (or worse, nagware; remember NoNags?). It was very frustrating. Eventually I decided to learn programming just to avoid all the b.s. Luckily, even back then, there were some good open source development tools like NASM and DJGPP. I also found my favorite editor, TDE, which unfortunately was hacked/ripped off by some opportunist trying to grab money from suckers. Later I found the original version (public domain with sources). Gotta love greed (not).

In 1998, I was tired of the slow ‘486, so I got a used Pentium 166Mhz with 32MB RAM running Windows 95. I never did write much fancy software, but one wimpy NASM-assembled util (public domain) was uploaded to Simtel. I was only superficially aware of FreeDOS and DR-DOS, and they definitely inspired me (as did quasi-open projects like MAME), but didn't know the details and didn't try them (yet). Eventually Windows 95 hosed itself, so I gave up for a while.

In 2002, I got a Pentium 4, 2.52Ghz with 512MB RAM, running Windows XP. While NTVDM had some bugs and wasn't perfect (esp. for graphics and sound, e.g. old games), at least things like DJGPP were able to workaround most of the issues. But for those years I was still focused more on learning assembly. And I resurrected the old Pentium but chose DR-DOS 7.03 instead of FreeDOS. (Not exactly sure why, and I didn't fully understand the short-lived OpenDOS fork. Eventually I dual-booted both DR-DOS and FreeDOS on one computer.) DR-DOS was very good, but it had many hard-coded limits, plus most of its tools and drivers were limited. I ended up replacing half the utils and drivers with freeware (or free software). Several years later, FreeDOS did everything I wanted, so I weaned myself off DR-DOS. (How far we've come from FreeDOS Beta 8, which I still have on physical floppies! Can you believe that was before OpenWatcom even existed?)

In 2004, I manually (but sloppily) converted PSR Invaders from TASM to NASM. Later in 2005, I learned sed (stream editor), which I found immensely useful. With that simple scripting, I was able to convert some of my own code "on the fly" between various assemblers (for comparison, since I disliked being stuck to one tool).

Around 2006 I got more active in online forums, mostly about DOS programming. So I read and posted a lot to FASM, BTTR, FBC, and DJGPP. Since I was still using my old computers, I was interested in the various x86 CPU families (and CPUID). I also made a lot of floppies, including a single-floppy DJGPP install, as well as an unofficial FreeDOS mini-distribution (three disks) called RUFFIDEA. I made a simple Geocities website that hosted it with lots of links to other "new" stuff. (Eventually I migrated to Google Pages, which became Google Sites.) So I was heavily invested in keeping track of all the "new" DOS software developments. Since I was still using floppies and old machines, I was also interested in compression, hence my work on Paq8o8z (CPUID, FTW!).

But my 2007-era 32-bit Windows Vista laptop (Turion64x2, 1.7Ghz, 1GB RAM) was worse than Windows XP regarding NTVDM (silly DPMI limit). And it had many other issues. In fact, by 2010 it (and most of my other old hardware) had failed. I don't want to say I gave up on assembly, but I certainly lost some interest in that (and compression, floppies, etc).

By 2011, I was using a new Lenovo Core i5, 3.2Ghz, 6GB RAM (Nehalem Westmere). Again, Windows hosed itself. It was probably a blessing in disguise, because now I was triple-booting FreeDOS, Lucid Puppy Linux, and Windows 7 (64-bit). Plus, that machine has VT-X (EPT) and "unrestricted guest mode", which is dozens of times faster than my (2009-ish) Dell laptop (Pentium Dual Core, 2.2Ghz, 4GB RAM) running Windows 7 (also 64-bit, ugh).

Around this time I also started learning Pascal and derivatives. Truly, portable code is just easier to adapt to new architectures and OSes. (Don't think AMD64 will live forever!) FPC 3.0.2 even has an "i8086-msdos" target nowadays, so it's better than ever. (Heck, FPC supports inline assembly.)

By this time I also started using bootable USBs, thanks to great tools like RUFUS. And of course I went back to floppies (almost!) by making a minimal virtual image (MetaDOS) for networking under VMs with FreeDOS. Sure, I had bought a USB floppy drive years ago, but I don't need it these days. So it's easy to install, deploy, upgrade old (and new!) machines with FreeDOS. We've come a long way, baby!


No comments:

Post a Comment