Author Archives: Michal Necasek

From the Annals of Preprocessor Hackery

Over the last few days I’ve been slowly attacking the source code for 386MAX, trying to build the entire product. One of the many problems I ran into turned out to be quite interesting. There are several (16-bit) Windows components … Continue reading

Posted in 386MAX, C, Development, Microsoft | 25 Comments

VDS: Borne out of Necessity

In July 1990, Microsoft released a specification for Virtual DMA Services, or VDS. This happened soon after the release of Windows 3.0, one of the first (though not the first) providers of VDS. The VDS specification was designed for writers … Continue reading

Posted in 386, Documentation, Microsoft, PC history, Windows | 10 Comments

386MAX and EISA DMA

A few weeks back I was reminded that the source code to the 386MAX (later Qualitas MAX) memory manager was released in 2022 on github. Back in the 1990s I used primarily EMM386 and QEMM, but I have some experience … Continue reading

Posted in 386MAX, DOS, EISA, Source code | 11 Comments

Learn Something Old Every Day, Part IX: AHA-154xB and ASPI4DOS.SYS

The other day I had a pressing “need” to examine the behavior of Adaptec 154x and compatible SCSI HBAs and their DOS drivers. I found the hard way that the AHA-154xB does not work with Adaptec’s last DOS drivers from … Continue reading

Posted in Adaptec, Bugs, BusLogic, SCSI | 6 Comments

Learn Something Old Every Day, Part VIII: RTFM

In my quest to understand the intricacies of x87 behavior and especially floating-point exceptions, I pulled out my trusty old Alaris Cougar board. The system board had a 100 MHz Intel OverDrive 486 DX4 plugged in and worked quite well. … Continue reading

Posted in 486, Documentation, Intel, PC hardware, x87 | 9 Comments

This Code Smells of Desperation

A few weeks ago I had the questionable pleasure of diving into the math exception handler of WIN87EM.DLL, the Windows 3.1 math emulator and FPU support library. Actually WIN87EM.DLL appears to have been first shipped with Windows 3.0, and the … Continue reading

Posted in Bugs, Microsoft, PC architecture, x87 | 20 Comments

Retro-Porting to NT 3.1

In another useless project, I decided to find out why even trivial programs created with the Open Watcom compiler refuse to run on Windows NT 3.1. Attempting to start an executable failed with foo.exe is not a valid Windows NT … Continue reading

Posted in Development, Microsoft, NT, Watcom | 12 Comments

Retro-Porting to OS/2 1.0

A few weeks ago I embarked on a somewhat crazy side project: Make the Open Watcom debugger work on OS/2 1.0. This project was not entirely successful, but I learned a couple of things along the way. The Open Watcom … Continue reading

Posted in Development, IBM, Microsoft, OS/2, Watcom | 10 Comments

Failing to Fail

The other day I was going over various versions of the venerable DOS/16M DOS extender from Rational Systems (later Tenberry Software). The DOS/16M development kit comes with a utility called PMINFO.EXE which is meant to give the user some idea … Continue reading

Posted in Bugs, Intel, PC architecture, x87 | 11 Comments

Unintended Side Effects

I’ve been lately trying to understand and improve the idling behavior of DOS programs and one of my guinea pigs has been the Open Watcom vi editor. While the 16-bit real-mode DOS variant of the editor idles nicely, the 32-bit … Continue reading

Posted in Development, DOS Extenders | 1 Comment