, 36 tweets, 10 min read
My Authors
Read all threads
Some fun computer history in the Open Watcom PDF docs. The "Open Watcom Developer's Guide", under "internal documentation", has some history. Watcom started out in 1965 as a FORTRAN compiler called WATFOR written by a team of undergrads at U. of Waterloo. github.com/open-watcom/op…
"The early compilers were written in a portable language called WSL or Watcom Systems Language. In late 1980s the developers rewrote the existing code in C and from then on all new developments were done on C, later with traces of C++ here and there."
"In parallel to the FORTRAN compilers Watcom developed optimizing C compilers. When the first PC version (Watcom C 6.0) was introduced in 1987, it immediately attracted attention by producing faster code than other compilers available at that time."
"In 1988 work started on an advanced highly optimizing code generator that supported both the C language and FORTRAN and was portable across multiple platforms. Generation of tight code, availability on multiple platforms (DOS, Windows, OS/2 and Windows NT in one package)…
…and the ability to cross-compile made Watcom C and C++ compilers quite popular in mid-1990s. Around 1993-1996, nearly all DOS games were developed with Watcom C, including famous titles such as DOOM, Descent or Duke Nukem 3D." #OpenWatcom #DOS
Watcom was acquired by PowerSoft, makers of GUI RAD tools for Windows, who had merged with Sybase in 1994. Sybase decided to EOL the Watcom compilers in 2000 because they couldn't compete with Microsoft. But many customers didn't want to give up the Watcom compilers.
"One of these customers was Kendall Bennett of SciTech Software, Inc. SciTech entered into negotiations with Sybase and in an unprecedented move, Sybase agreed upon open sourcing the Watcom compilers and tools. One of the reasons why this was possible at all was the fact that…
…Watcom had very little reliance on third-party tools and source code and had developed practically everything in-house, from YACC to IDE. … in the first half of 2002, the source was finally made available under the Sybase Open Watcom Public License version 1.0."
That's an interesting history. Many other commercial compilers rely on components that they don't have the right to open source, such as the very popular Edison Design Group C/C++ frontend. By writing everything themselves, Watcom was very open-sourceable. en.wikipedia.org/wiki/Edison_De…
I bought the SAS C/C++ compiler for Amiga back in the day. SAS Institute is a company that sells analytics software who had built their own C compiler in-house for some reason, and sold it as a side business. It used to be called Lattice C. en.wikipedia.org/wiki/Lattice_C
Here's a page with more info on the Amiga version of the SAS C compiler. It came with very nice printed documentation, like Watcom and other commercial compilers of the era. pjhutchison.org/tutorial/sas_c…
I tried the latest alpha of #ReactOS to see how good its Win32 emulation has become. It still looks like Windows Server 2003. Very plain. The app manager let me install Firefox 48, but the newer versions of Firefox don't launch. The kernel doesn't seem to support SMP either?
I tried to run the Open Watcom v2 installer on it, and it immediately pops up a dialog asking me if I want to quit the installation. I press no, and it opens a new dialog asking the same question. I'm having a similar problem with the DOS installer crashing in FreeDOS.
The installer worked perfectly in DOSBox, which emulates all the MS-DOS int 21h calls. (21h == 0x21)
I found this package of DOS benchmarks, and they're interesting to run in various emulators. One problem is that PCs are so fast now that the benchmarks finish too quickly and return nonsensical results or crash with divide-by-zero errors. philscomputerlab.com/dos-benchmark-…
Another oddity is that the DOOM benchmark runs extremely slowly (~12 fps) in VirtualBox compared to DOSBox (~184 fps). There must be something about VirtualBox's video card emulation that's inefficient for that game. Quake is much faster. Happens in FreeDOS or Windows 98 SE DOS.
One reason I've taken an interest in MS-DOS recently is that I see people keeping the old DOS programs alive, and DOSBox is very useful, but not a suitable replacement because it can't run on bare hardware. Yet FreeDOS still seems buggy, despite the DOS API not being very large.
And I think a big part of the problem is that Microsoft wanted MS-DOS to be quirky and proprietary to them. They didn't want other companies to clone it, and they even inserted code to make a beta version of Windows 3.1 crash when running on DR-DOS. en.wikipedia.org/wiki/AARD_code
Microsoft ended up having to pay $280 million to the owner of DR-DOS for their anticompetitive behavior in scaring people away from their product through underhanded tactics.

I remember people used to use Microsoft Flight Simulator to test how compatible "PC compatibles" were.
That was because Flight Simulator made a lot of calls directly to the BIOS and to hardware registers and so it didn't work with computers that weren't quite IBM-compatible but could run modified versions of MS-DOS. In Japan, NEC's PC-98 was very popular. en.wikipedia.org/wiki/PC-9800_s…
In Japan, the PC-98 was popular enough that other computer makers made clones of it, not the IBM PC. But NEC's proprietary architecture eventually ran out of steam compared to IBM PC-compatibles, and they discontinued the PC-98 series in 2003.
But I digress. I had to take a class in assembly language in college, and I had a choice between VAX and x86. I thought that x86 would be more practical, but I ended up hating the class because I had a real chip on my shoulder about 16-bit segmented memory and x86 being too ugly.
I would have been happier writing x86 assembly in Linux, but we had to use a 16-bit MS-DOS toolchain, either MASM (en.wikipedia.org/wiki/Microsoft…) or TASM (en.wikipedia.org/wiki/Turbo_Ass…), from Microsoft and Borland respectively, for the class.

So it's interesting to see a free DOS toolchain.
I know nasm and yasm can generate 16-bit code, but what you got with something like Turbo Pascal or Watcom C/C++ was a set of tools, debuggers, and libraries that work in and for DOS. The reason Watcom was especially popular was the free license for DOS/4GW to run in 32-bit mode.
I thought MS-DOS was a ridiculous thing for Microsoft to be proud of selling, considering how primitive it was compared to my beloved AmigaOS, UNIX, or VMS that ran on the two big VAXen that we could log into from terminals around the campus. Single-tasking, 16-bit, very limited.
But that very same simplicity and limited nature makes it intriguing to me to mess around with now, in emulation, as a hobby project. If Microsoft would release the source code to the real thing, that would be very cool, but I predict that won't happen for 20 more years, if ever.
One idea that I think would be fun to pursue would be to write a preemptive multitasking version of the FreeDOS kernel, like DESQview, which was popular for running DOS BBS's on, but little known outside of that. Runs multiple DOS VMs in text mode windows. en.wikipedia.org/wiki/DESQview
I remember seeing the ads for DESQview in all the PC computer magazines, and being particularly amused by the DESQview/X version that ran an X Window System on top. It was quite expensive, and all it could do is multitask DOS programs (like instances of a BBS application).
If you had a BBS with more than 1 line, you could run one copy of the BBS software for each line inside of DESQview, and somehow they coordinated with each other. Or, even if you only had 1 phone line, you could use your PC to run other programs while the BBS was running.
Nowadays, almost every CPU has at least two cores, so a 32-bit SMP-aware preemptive multitasking 16/32-bit MS-DOS compatible kernel would have some value to people for their retro gaming PCs even today. With FreeDOS supporting TCP/IP, I really feel multitasking would add value.
The other multitasking MS-DOS compatible OS that I've mentioned before is FlexOS 286, aka Digital Research Concurrent DOS 286, which IBM licensed to turn into 4690 OS, used on their cash registers from 1993 to today (IBM sold the POS division to Toshiba). en.wikipedia.org/wiki/4690_Oper…
The real reason I think FreeDOS is interesting is that Microsoft has a monopoly on their operating systems, and they just abandon their older ones and don't release the source code. That's irresponsible of them, especially since they're not likely making big bucks licensing DOS.
Part of the problem with a clone of a closed-source product is maintaining "bug compatibility" with undefined broken behaviors of MS-DOS, or having to implement the same types of runtime patches in the executable loader that MS-DOS does to fix broken apps. en.wikipedia.org/wiki/Bug_compa…
"Microsoft Excel has always had a deliberate leap year bug, which falsely treats February 29, 1900 as an actual date, to ensure backward compatibility with Lotus 1-2-3." docs.microsoft.com/en-us/office/t…
Googling around for references to the main MS-DOS (and BIOS) interrupts, I found chapter 13 of the 16-bit DOS edition of "The Art of Assembly Language", which answered my questions. Here's the link to where you can read the whole book. plantation-productions.com/Webster/www.ar…
My next step in exploring the world of FreeDOS and Open Watcom is to figure out exactly which subset of the DOS interrupts the Open Watcom libraries (and particularly the installer that's crashing when I run it) actually use. The rest are irrelevant to me. freedos.org
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Jake Hamby

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!