The AARD Code

Some programs and drivers in some pre-release builds of Windows 3.1 include code that tests for execution on MS-DOS and displays a disingenuous error message if Windows is run on some other type of DOS. The message tells of a “Non-fatal error” and advises the user to “contact Windows 3.1 beta support”. Some programs in the released build include the code and the error message, and even execute the code, performing the same tests, but without acting on the result to display the error message.

The code in question has become known widely as the AARD code, named after initials that are found within. Although the AARD code dates from the start of the 1990s, it returned to controversy at the end of the 1990s due to its appearance in a suit at law between Caldera and Microsoft. Caldera was by then the owner, after Digital Research and Novell, of what had been DR DOS. The AARD code has ever since been treated as a smoking gun in analyses of anti-competitive practices by Microsoft.

It is not my intention here to comment on the rights or wrongs that I may or may not perceive in the AARD code’s existence. However, I must declare a financial interest: in 1999 when this note was first published, I was engaged indirectly by Caldera to assist with their understanding of MS-DOS and Microsoft Windows (but not of the AARD code) for the suit just mentioned.

What I do intend here is to put on the public record a few points of history.

Discovery and Publication

It is commonly said that the workings of the AARD code were uncovered in 1993, as if discovery had not long preceded the article Examining the Windows AARD Detection Code, written by Andrew Schulman and published in Dr. Dobb’s Journal, September 1993. This dating leaves roughly a year and a half between the AARD code’s first distribution in December 1991 and the first understanding by anyone outside Microsoft of what exactly the AARD code tests. This cannot stand as history.

The AARD code’s workings in HIMEM.SYS version 3.03 from a Windows 3.1 beta were known in full detail outside Microsoft at least by 17th April 1992 when I both noticed the code and deduced its workings. The very slightly different workings in WIN.COM from the released Windows 3.1 were described in detail in public by me on 8th June 1992.

Before Me

Of course, the AARD code’s effects will have first been seen outside Microsoft as early as December 1991 when users of something other than MS-DOS tested the pre-release Windows 3.1 and got the “Non-fatal error”. I cannot discount that some such user located the code and fully understood it not just independently of me but before I even had a Windows 3.1 beta from which to learn of the code’s existence. Given that the AARD code affected DR DOS specifically, the natural supposition is that studying the code would have been urgent work for some programmer of DR DOS at Digital Research.

Wikipedia articles on DR-DOS and the AARD code (today, 14th August 2021) would have it that Digital Research had not just investigated but succeeded, such that the AARD code was worked around for a “business update” of DR DOS 6.0 which was dated 7th April 1992 and was “on the streets within six weeks of the release of Windows 3.1.” If this is true, then Digital Research’s understanding of the AARD tests pre-dates mine. It would even pre-date my having a sample to have studied. But from Wikipedia’s own footnotes, from public records including Caldera’s court filings, and from inspection of a DR DOS 6.0 that’s dated 7th April 1992, I believe that Wikipedia is incorrect:

By Me

As for my part in the discovery and publication of what the AARD code tests, there’s no controversy about the history, just the earliest dates that anyone has yet supported with evidence:

Research Effort

It is also commonly said that the workings of the AARD code came to light only with great effort. I cannot (or don’t want to) speak for how others came to their respective understandings, but I do ask that commentators not exaggerate the complexity of the code or the effort involved in understanding exactly what it tests.

My own study of the AARD code in 1992 never was the sort that lasts long enough to leave much of a trail. I can find no record of my having treated the AARD code as something to study in and of itself—and I’m completely unsurprised. I came upon the code in a larger study and I treated it only as incidental. Reading the code to understand what it tested was evidently a very casual exercise—to count in hours, not days. How many hours exactly, I don’t know, but the work certainly did not run to a second day.

What record does exist is in e-mail with Andrew Schulman. On the morning of 17th April 1992 I had not yet looked at HIMEM.SYS version 3.03 even to notice the AARD code, but by the evening I understood the code’s encrypted test well enough to send a demonstration:


Though my research and public description in 1992 covers what the AARD code tests, it does not attempt any explanation of why these tests work for distinguishing MS-DOS from other operating systems. I never have offered an explanation in public but now I feel pushed to it by Wikipedia. To say mistakenly that DR DOS was easily changed to pass the AARD tests in 1992 is to beg that someone assess DR DOS for how it ever failed the tests before it could be changed to pass them, but it also exposes that the tests themselves are under-explained:

Now that I take up the question of what Digital Research knew when, I can’t easily side-step those questions of rights and wrongs about the AARD code and the particular non-Microsoft DOS that was evidently the intended target. My unsympathetic attitude to DR DOS for its owners’ presumption of equal treatment with MS-DOS has never been any secret, but I always tried to keep it out of my formally published writing about MS-DOS, including what little about MS-DOS is here at this website. I do still try to confine it to one separate page: