FreeDOS

I never used a IBM-compatible PC (hereafter known derogatorily as "peecee") until I started working, since the TI was quite enough for what I needed at home. Actually, computers were not that much in use in the mid-80s, outside of doing spreadsheets in the Lotus 1-2-3 DOS program. So I used DOS. DOS was still a pretty good embedded platform when we were doing TOW missile launcher instrumentation systems and a factory automation project for the Post Office. So I got to like DOS.

One of the things I like best about DOS (and the FAT filesystem) is, you turn it on, it loads, and away you go. No lengthy boot process. When you're done, you just turn it off. No shutdown or filesystem cleanup. This is great for embedded systems (for which DOS still finds considerable use). One of the stupidest things about DOS is that it uses the segmented "real" (or is it "protected"? I can never remember...) memory model of the earliest processors. But for 386 and better (pretty much all you can run across anymore), you can switch to the full flat memory model and not even think about it.

There is still a considerable interest in the DOS environment, and a wealth of DOS programs out there. I'm particularly interested in the djgpp C compiler and various graphical environments (OpenGEM, Allegro, etc.). The "holy grail" here is to find a setup to build and run FLTK GUI applications, which would then be cross-platform. WxWidgets is also a possibility.

DOS started out (well, after it's CP/M roots) as MS-DOS, but Microsoft has dropped support for DOS, and the Open Source world has produced an excellent clean-room version called FreeDOS, which is running on all my peecee machines.

Anti-Microsoft Position:

There are other DOS flavours out there also, including a very good one by Digital Research (originators of GEM - small world). There are other compilers, too; my workgroup usually selected Borland. Borland was an excellent compiler - fast tools, small binaries, good libraries, ran circles around the Microsoft compiler. When Windows came out, Microsoft put hooks in it where it would only load out of MS-DOS, in an obvious attempt to freeze DR-DOS out of the market. Additionally, they put "magic numbers" in Windows, without which a program would run poorly or not at all. Of course, their compiler knew about the "magic numbers", but Borland (and all other compilers) did not. These evil tactics by Microsoft to eliminate the competition by market power rather than technical excellence so turned me off from them that to this day I will not willingly use Microsoft products. Hence FreeDOS (and of course, Linux).


PROJECTS:

  • Sudoku puzzle solver: Solves those Sudoku number puzzles in the newspaper
  • Dump: Dump binary files to hex in a nice format. Nicer than "od". Also includes undump, which converts the output of dump back into the original file (there's a story here, but I'd get in trouble if I told it!). C source only, compiles under GCC, but others ought to work as well.
  • despace: Spaces in long filenames are a real pain, especially in DOS or Windows, but also in Unix. Batch files or globbing just doesn't work well when some of the filenames have embedded spaces. This program replaces spaces with underscores. It also recurses into subdirectories. Build with GCC under DJGPP for DOS, or MinGW for Windows or GCC for Linux.
  • PARPORT: Hardware/software project. The hardware is easy; put some switches, LEDs, seven-segment displays, and a rotary encoder on a perfboard and connect it to a parallel port. The software is a bit more involved to control all those devices and update a CURSES control screen.
  • HOWTO Install MinGW: As the DJGPP compiler and ported Unix tools are to DOS, so is the MinGW compiler and MSYS Unix tools to Windows. Since I have to use Windows at work, I've done what I could to create a similar environment there. If you are already connected to the Internet and can use the MinGW Install Tool, then that's probably good; if you're like me and your machine is not connected to a fast link or behind a firewall, here's an alternative.