Hacker News new | past | comments | ask | show | jobs | submit login
The AARD Code and DR DOS (2021) (geoffchappell.com)
223 points by lproven on May 23, 2023 | hide | past | favorite | 139 comments



Heh, I remember finding shreds of these news groups threads and news letters posted to Geocities and such in the mid-90's when I was coming of age. "The MUF List" - Microsoft's Undocumented Features, etc. I still have my DOS programming books but I never really did much myself, other than some assembly programs written in debug. The list of dirty things MS did to other companies is extensive. The DriveSpace debacle was the one I remember most. If memory serves, they tricked the company that made a compressed filesystem driver for DOS/Windows to "license" the feature to MS, then MS just forgot to ever pay them. The company was so cash starved they couldn't outlast a lengthy lawsuit to recoup what they were legally owed. MS did every dirty trick they could. Bill Gates is one seriously dirty MFer.


> The company was so cash starved they couldn't outlast a lengthy lawsuit to recoup what they were legally owed.

They were actually paid $120M by Microsoft [1]:

> A Los Angeles jury Wednesday ordered Microsoft Corp. to pay $120 million for infringing a software patent held by Stac Electronics Co., a much smaller software firm based in Carlsbad, Calif.

[1] https://www.latimes.com/archives/la-xpm-1994-02-24-fi-26671-...


Stac sued MS and won. But, Microsoft counter-sued Stac for reverse engineering MS software-- Microsoft's claim was that the features used to implement Stacker were undocumented by Microsoft, and only used internally by Microsoft. Microsoft won this suit. And, ultimately "invested in" Stac and paid some royalties as the ultimate settlement.

The "funny" thing was that Microsoft was claiming that it documented everything and that competitors could make equivalent competing products to their own on their platforms to the court in the anti-trust case that was around the same time.

MS management and their company were and are sleazy and ruthless to a fault.


> MS [..] were and are sleazy and ruthless to a fault.

Point me at the good companies? The ones not self interestedly trying to maximise both market share and profits.

"For Profit" companies have clear incentives. This behaviour is common and feels like a feature not a bug?


The topic of the thread was _Microsoft_ doing sleazy things, specifically displaying fake error messages when it sensed a competitor's product being used (using obfuscated xor encrypted self-modifying code to hide their activities). Microsoft and their execs, as illustrated by this and the countless other examples _are_ sleazy, ruthless, cheats, who did/do not believe they had/have a superior product that could/can win on its own, so had/have to resort to sleaze like this, and other sleaze like forbidding vendors from selling any other OS, or the vendor would have to pay much more to MS. Some of their actions were illegal, but escaped consequences (in the US) due to stepping their use of campaign contributions (legalized bribery) and lobbying after the anti-trust case was brought against them.

But, even factoring horrible companies/executives like those in the tobacco and petroleum industry, Microsoft is still pretty high up in the list. E.g., without a logarithmic scale, you wouldn't be able to even see the data points for most grocery store companies when plotted on the same sleaziness graph as Microsoft while Microsoft/their execs would probably still show up on a graph that included fossil fuel and tobacco companies/execs.

As for, "feature not a bug", the ongoing human caused collapse of every ecosystem on the planet and the resulting mass extinction shows that maximizing profits at all costs is a bug. The existence of favelas walking distance to private estates show that the way this system concentrates wealth is a bug. Even on the level of Microsoft stealing from and killing off competitors, we lose. Many Microsoft competitors had better products and were far more innovative (hence Microsoft needing to steal from them / eliminate them)-- only Microsoft gained by their demise.


Justice delayed is justice denied.

I wonder if we can say the same for timely payments especially when maintaining proper cashflow is critical for small businesses.


Somehow it seems like "paid" is the wrong word when you're forced by a court to do it. Almost like stealing a car and then claiming you "donated" it to the true owner upon arrest.


Winning a settlement doesn't automatically get you the money. It just gives you legal rights when trying to collect -- you still have to actually collect, which can be difficult and time-consuming.

Do we know if MS actually paid this settlement, and if so, on what schedule?


The way I understood the story back then was that they wanted a license deal with MSFT just like MSFT had with the hardware companies. MSFT wanted to just buy them out. Lawsuits, court, and so on finally forced the sale of the company to MSFT for the amount in the settlement.


That's not the story on Wikipedia.

Microsoft entered into negotiations with Stac Electronics to licence Stacker, but the deal fell though (allegedly, Stac claim that Microsoft didn't offer any money, just the right to sell enhancement products).

So Microsoft instead licensed a competing product called DoubleDisk from Vertisoft. So of course MS didn't pay anything to Stac Electronics, but presumably Vertisoft was compensated (hopefully fairly, we haven't heard otherwise... But this is Microsoft)

Stac later successfully sued MS for patient infringement, which is where the story about Microsoft alleged "no cash licensing" offer came from.


>Bill Gates is one seriously dirty MFer. Agreed. Completely agreed. Just watched the death of OS/2 video, and it confirms it.


Unfortunately, MS is even worse these days.


Is it? How so? I'm not saying they're angels, but I don't know if I'd consider the MSFT of today "worse" than in the 90s and early 2000s. It's certainly a more complicated beast than it was then.


I don't think they're worse. I also don't think they're much better. Microsoft remains Microsoft.


They went from sneaky tactics to normalising and encouraging mass surveillance.


True. They are waiting for the days of subscription only. as soon as they can.


Someday this is going to be in an engineering ethics class.

Microsoft literally broke every anti trust law, but the DOJ was too incompetent to prosecute them properly due to the lack of education.

A lot of these decisions remind me of SV companies: if it’s not specifically, illegal it’s fine; Ex: Goog/Fb invasive Tracking users across the web, even if the user requests not to be. I hope every person that works for these companies is someday ashamed of their time there.


Ashamed? The opposite, usually they’re proud.

“It Is Difficult to Get a Man to Understand Something When His Salary Depends Upon His Not Understanding It.”

Also see current AI doom debates. See Yann LeCun tweets. He has some the silliest metaphors, like comparing AI development to aviation development. As if the two are similar in order of magnitude of downside risk.


Salary and income are one of the most powerful decision making and ethics shaping factors. The flow of money literally defines everything for 95% of people, including their ideological and political preferences.

Sad but true.


When was the last time you took a political stance that cost you your income (ie. flow of money)? For the majority of people, money is a fair proxy for quality-of-life; it makes sense that it permeates their ideology and politics.


Money is the indicator to us that what we're doing is valuable to someone else. That seems useful.


The auto complete black box is just soooo dangerous haha you better regulate all the risky other ones, mine's cool though d/w chief

> “It Is Difficult to Get a Man to Understand Something When His Salary Depends Upon His Not Understanding It.”

see also: cloud


Yes, incompetent, and not due to as of yet unknown payoffs to key officials. With that much money at stake, in a far less transparent world than we live in today, briefcases full of cash worked a lot better. How would you even deposit that today without some sort of money laundering scheme?


Briefcase cash is so gauche - you just hire them when they “retire” from public service. Much more proper and you don’t even need to explicitly offer - everyone knows how the bread is buttered.


Also, speaking fees are, funnily enough, not campaign contributions.


There's also great laundering fun to be had with your book, too!


> you don’t even need to explicitly offer

Which has the added benefit of plausible deniability.


Defense contractors seem to have this down to a science.


Tell your parents to sell their house, but the contract includes lifetime tenancy and guaranteed maintenance and renovations. Surely that's not bribery.

It's not bribery if you just happen to visit a new friend's mansion in Hawaii any time you want a vacation.

Perhaps your spouse would be a good choice to be VP of Something Boring at this non-political non-profit charity. Isn't it nice that the employees of TotallyNotCorruptCo always make sure to donate so much money each year? Did we mention that the VP job comes with a car and driver? And can be done from home except for the fund-raiser galas. Totally not a bribe.


Microsoft didn't need to bribe anyone in the 80s and 90s because our country was still snorting that "woo hoo free markets fix everything" pixie dust. We weren't allowed to interfere with big business anymore. Clearly they knew what was best for us.


Plus when Bush took over, looks like he had the DOJ drop the case. At least under Clinton they were trying, though incompetently as you said.


IIRC the ruling was under Clinton, but the 'punishment' under Bush was that Microsoft gave free copies of Windows to schools (which were a Apple bastion at the time).


The two primary parties any country generally votes for:

1. Corrupt over there and incompetent everywhere else

2. Incompetent over there and corrupt everywhere else


My father was a staunch Democrat, former union (UAW) guy. He always said "both parties are going to steal from you, the only difference is that Democrats believe you have to have something to steal first." I think that's a largely true observation even today.

The older I get the less optimism I have that it's possible for any system to avoid corruption and a class system of haves and have nots where the haves just amass power to keep gathering more and more...


Finally, a reasonable definition of the left/right dichotomy!


Except the left are green.


The DOJ competently prosecuted Microsoft for its illegal monopolistic practices: https://en.wikipedia.org/wiki/United_States_v._Microsoft_Cor....

But then Bush took over as president and ordered DOJ to effectively drop the case. Microsoft got away with a slap on the wrist. https://www.latimes.com/archives/la-xpm-2001-sep-07-mn-43010...


I hope the people who make these kind of decisions will get prison time. It's much easier saying sorry than asking for permission and some people exploit it on the back of the society, no less


> DOJ was too incompetent to prosecute them properly due to the lack of education.

It was not the lack of education. It was a political policy choice that tied DOJ's hands.

Reagan era changed US antitrust into so called Borkism. Robert Bork's "The Antitrust Paradox" (1978) criticized the US United States antitrust law and solidified the thinking of University of Chicago school of economists.

Borkism has very narrow view into monopolies. It has created monopolies in ever sector of the economy.


That microtracking made a lot of tiny and very cool niche consumer packaged goods brands a lot of money in the early 2010s. They can't afford to use untargeted TV advertising like the mega brans unfortunately, but Facebook did a great job helping them connect with their niche. It's much harder for new brands to get started these days.


Which anti-trust law says you harm consumers by giving them free stuff?


Keep in mind that this isn't an isolated case: Microsoft used this as a tactic with Quicktime amongst others. Their tactics were numerous, either bringing spurious error messages, stealing associations to bring error messages/dodge the invocation of the competitor software or simply altering windows code to produce legitimate errors in competitor software.

That's on top of plain old threatening other companies if they dared use technology that they were trying to suffocate.


>Keep in mind that this isn't an isolated case

True, this is one case that isn't mentioned much, but this gave Excel and Word its massive market share.

When Windows 95 was being developed, MS kept telling Lotus (and maybe Word Perfect) that OS/2 was the real future, so Lotus was focusing on a GUI version of their main product for OS/2. And Notes was originally developed on OS/2.

So Lotus had a nice version of 123 for OS/2 about to go, but the had to shift gears to Windows when W95 was released. Also there were rumors that MS was keeping some APIs secret to make it appear their products were faster than competitors.

When W95 came out, by magic, MS had a GUI version of Excel and Word, thus eventually killing those companies. Lotus had to shift gears and may have lost a couple of years to MS.


I used to work on Wine and don't recall encountering any APIs that made things magically faster. That was a popular rumour on Slashdot in the early 2000s because at the time, most devs were unaware of how IE could start so much faster than Mozilla, and how MS Office could start so much faster than OpenOffice. Cheating via pre-loading was assumed. It was eventually proven that this couldn't be the case when these apps started faster than their competitors even on Wine on Linux. The actual cause was that MS cared about and heavily optimized startup time. No magic.

The OS/2 history isn't quite how I remember it. The fact there'd be a new version of Windows surprised nobody. Chicago development wasn't exactly a secret that caught anyone unawares. Also OS/2 Warp came out before Windows 95 did.


No offense, but I don't think you looked too hard. There are lots of calls that could be used to do things in a more performant way, or to make things possible that were not possible using documented APIs. [0]

Generally speaking though, what you say is true. There are certainly no "magically faster" API calls.

There are thousands of undocumented calls that, if you were aligned with the internal team at Microsoft that wrote them, allowed you to write better performing code than if you were a third party. And as a major developer inside Microsoft, you had the power to get API calls created for your needs, while third parties didn't. That is the crux of the matter.

Here's one straight from the site we're discussing today, the IOwnerDataCallback interface [0] makes it possible to do grouping on a virtual ListView. Windows Explorer uses it to great effect, everyone else can't use it. [2]

[0] http://undocumented.ntinternals.net/

[1] https://www.geoffchappell.com/studies/windows/shell/comctl32...

[2] https://www.codeproject.com/Articles/35197/Undocumented-List...


Of course there are internal APIs, every OS has those. I don't know of any that would make the difference between an app being competitive and not, certainly not in that timeframe.

Grouping on a virtual list view was added in Vista which is after I stopped working on Wine, but again, that is hardly the sort of thing that makes or breaks apps. Most competing office suites and browsers don't even use comctl32 at all, preferring to roll their own widgets for portability reasons.

The reasons IE and Office were so fast to start was due entirely to heavy optimization. In particular Microsoft were very good at doing profile guided re-ordering of code pages to minimize HDD head movements, which was critical in an era when hard disks were the only storage medium and also much slower. The Linux toolchains didn't have anything like that and the technique wasn't even well known outside of Microsoft back then, so to GNU hackers the results appeared to be almost magic. OpenOffice or Mozilla would take like 30 seconds to start and Word/IE could start in 3.

So what thousands of calls are you thinking of? To give MS such a huge competitive advantage that other companies get wiped out they'd need to have done stuff like kept a new DirectX back only for themselves. Back then they didn't even have the technology to do that. Even your link where you say people "can't do that" is about how to use that private API you named. Blocking that sort of thing requires pervasive code signing, package identity and for that to be propagated robustly through IPC. Even today Windows is kinda ropey in that regard (vs macOS/iOS where robustly enforced Apple only APIs are widespread and critical, e.g. mmap +x is an Apple-private API on macOS).


> No offense, but I don't think you looked too hard. There are lots of calls that could be used to do things in a more performant way,

Undocumented API calls were rumored to be a big deal even back in the Windows 3.x days. I remember reading through this at the time looking for the 'smoking gun'.

https://www.amazon.com/Undocumented-Windows-Programmers-Micr...

There were some cute and offensive names, and a few interesting details about the internal implementation of Windows, but nothing that would've been hugely beneficial.

Things might well have changed since then. (Both at Microsoft and at Apple, where their software is definitely allowed to do things that third party software is not.)


So much stuff thrown within this submission comments. One can wonder how much of this is misinformation, because someone once said something and the other one echoes it back...


> When Windows 95 was being developed, MS kept telling Lotus (and maybe Word Perfect) that OS/2 was the real future, so Lotus was focusing on a GUI version of their main product for OS/2. And Notes was originally developed on OS/2.

This story doesn’t make sense to me. IBM and Microsoft’s falling out was public knowledge by July 1991 - there was an article about it in the New York Times. [0] Windows 95 wasn’t released until July/August 1995 - 4 years later. Everyone who was paying attention knew by mid-1991 that Microsoft’s future was Windows not OS/2.

[0] https://www.nytimes.com/1991/07/27/business/microsoft-widens...


> When Windows 95 was being developed, MS kept telling Lotus (and maybe Word Perfect) that OS/2 was the real future, so

Microsoft's committment to OS/2 ended with Windows 3.0. But until 3.0, they themselves believed OS/2 was the (imperfect) future.

Windows 3.0's ability to use protected mode on a 286 changed it all.

https://www.landley.net/history/mirror/ms/davidweise.html

> Lotus was focusing on a GUI version of their main product for OS/2.

Lotus and Wordperfect both spent a lot developing for almost every platform other than Windows. It always surprised me that they never had even a fallback for Windows for their main products, given how dependent they each were on a single product.


GUI Excel 2.2 was released for Windows 2.0 in 1989, 3 major releases before Office for Windows 95. Essentially same for Word.

WordPerfect had a perfectly working GUI version for Windows by 1994, it just couldn't compete with Word. Same for Lotus123, they were out of fashion long before Windows 95.


You have the timeline all messed up.

Excel and Word both ran on Windows 2.0 (released Dec 1987). I supported Excel on Windows 2 in production.

In the late 1980s, yes, Microsoft and IBM told the industry that OS/2 was the future, because they both thought it was.

OS/2 1.0 was released the same month as Win 2.0) had no GUI, because it wasn't ready.

OS/2 1.1 had in, released nearly a year later in Nov '88. This was what Lotus and others needed. 1.1 was not good and barely worked. For example, OS/2 1.1 still had the Windows 2 MS-DOS executive style user interface.

OS/2 1.2 was nearly another year: Oct '89.

Now, it worked, it included advanced features such as the HPFS filesystem, meaning long filename support, it had a revamped and improved user interface, and the performance was OK... but also the 80386 had been out for 2 years and 386 PCs were becoming mainstream. OS/2 1.X was limited to the 286. That meant a maximum of 16 MB of RAM, that meant no ability to multitask DOS applications, and other serious limitations. The high end PC market was visibly accelerating away from the new operating system.

It also had formidable hardware requirements. For example it wanted 8 MB of RAM minimum.

Somewhere around the timeframe of OS/2 1.1 or OS/2 1.2 is when Microsoft realised that this project was running late, it had high hardware requirements, and yet it still couldn't fully exploit the hardware of new PCs shipping in the late 1980s, and it was becoming apparent that the future was not OS/2 after all.

So it's somewhere around the 1988 to 1989 that Microsoft realised that's unless it was willing to sacrifice the PC operating system market, it needed a fallback plan, it needed some kind of alternative: something that could run on high-end mainstream commodity PCs, which means a 386 with 2 to 4 MB of RAM, that offers more compatibility with DOS, DOS device drivers, and DOS applications than OS/2.

That's roughly the time that the school choir project within Microsoft started to turn into Windows 3. Windows 3.0 was released in 1990, it had the new user interface from OS/2 1.2, it could support and use the new facilities of 386 chips… but it could also run in just 1 MB RAM, ran quite well in standard mode in 2 MB of RAM, and ran really well with 4 MB of RAM in 386 enhanced mode with multitasking of DOS applications. In other words, in half the RAM requirement of OS/2 1.2, they could actually do more than that operating system could do, in terms of important things that MS-DOS users actually wanted and needed.

So yes in the very late 1980s, Microsoft did lie to large software vendors, promising them that OS/2 was the future, while it was working on something that would ultimately destroy OS/2. But even now I am no admirer of Microsoft, I have to admit that it was very far from a certainty that Windows 3 was going to be a hit. In the time frame that Microsoft was developing Windows 3, Word for Windows and Excel were already shipping products.

Yes Lotus and WordPerfect believed the lies. Yes it's true, Lotus and WordPerfect could've targeted Windows 2, but Windows 2 was pretty terrible and was a commercial flop. So if they had targeted Windows 2 it would cost a lot of money and the products would never have made it back. Yes they made a mistake, and yes later on Microsoft encouraged them to continue investing in that mistake, knowing that there was a gamble that might make it all a huge waste of money. But what they did probably looked like the sensible prudent decision the time.

And more to the point, relevant to your comment, this all occurred in the late 1980s, long before the industry went 32-bit and long before anybody even dreamed of Windows 4 which would eventually become Windows 95. That stuff happened in the 1990s, when frankly the OS/2 war was already long over.


P.S. my apologies for the various typing and spelling errors in that. I have a broken arm and I'm using dictation software to enter these responses.

"School choir" should have been "skunkworks".


Thank you for writing all of this out.

Just one confusion I have: wasn't NT Win 4.0? The first NT release IIRC was 3.5, which had the same UI style as 3.0-3.2, but with the new kernel. This of course muddles the waters, having two parallel OSs with almost the same APIs but different kernel being sold at the same time with easy to confuse versioning (all the way up to Me and 2000 and until XP finally finished merging the lineages).


> Just one confusion I have: wasn't NT Win 4.0?

NT's first version released as 3.1, to align with the traditional Windows 3.1. Windows NT 3.5 (Code name 'Daytona') was a performance and stability improvement release. You can think of NT 3.1 as the "1.0" release and 3.5 as the "1.1" release.

Windows NT was natively 32-bit, but this was also the same time that the traditional Windows kernel was developing its own story for running 32-bit code. Windows/386 introduced the 386-specific 32-bit underpinnings and Windows 3.1 added something called Win32s. Win32s was an extension to the Windows executable loader and a set of 32-bit libraries that mapped a subset of Win32 calls to the underling Win16 API. Win32s made it possible to take the same 32-bit binary and run it unmodified on both Windows NT and on Windows 3.1. The caveat (and it was a big one) was that you only had access to a very restrictive subset of the Win32 API.

For Windows 95, Microsoft's strategy was mainly to build out more of Win32s. This built on the Windows 3.1/Win32s ability to run 32-bit binaries and added more of the API's that Win32 developers would've been used to from NT.

> The first NT release IIRC was 3.5, which had the same UI style as 3.0-3.2, but with the new kernel.

It's Windows NT 4 that unified the new UI from Windows 95 and the NT kernel. Even then, the system requirements and compatability issues were demanding enough that it took a few releases to make the NT kernel suitable for the mainstream.


Small correction if I may: Windows 3.1 did not add Win32S.

Win32S was an optional extra: a separate download and was never included with any version of Windows 3.x.

Win32S came along sometime later -- I think approximately in the time frame of Windows for Workgroups 3.11.

There were two purposes for Win32S: an official public one, and a secret one.

The official one was that it allowed developers to experiment with the new Win32 API, develop applications for Windows NT but which could be deployed onto Windows 3.1.

The secret reason behind Win32S was that it didn't work very well if Windows 3 was being hosted on top of a different 32-bit operating system. In other words, to be specific, it gave IBM a really hard time supporting Win32S in WinOS2 on top of 32-bit OS/2. So these new Win32S applications wouldn't run on top of IBM's OS/2 2.x. IBM kept finding ways to implement the additional Apis in Win32S, and Microsoft get changing them and putting out new point revisions of Win32S which broke those Apis again on OS/2.

Eventually the final version did this so effectively that as for as I know IBM never managed to get it entirely working.

By the way Win32S is still out there and you can still download it. There are not many reasons that you would want to do that, but there is one: it includes the original demonstration app for Win32S -- Microsoft Freecell.

This 30-year-old binary runs perfectly on Windows 10 64-bit and Windows 11. You can download Win32S, unpack the zip file, and just copy the files called `freecell.*` to wherever you want. Bingo: the original tiny Freecell Game, in place of the bloated advertisement filled one on the Windows store, for nothing. Enjoy.


> Small correction if I may: Windows 3.1 did not add Win32S. > > Win32S was an optional extra: a separate download and was never included with any version of Windows 3.x.

Andrew Schulman (in Unauthorized Windows 95) and Matt Pietrek (in Windows Internals) both describe the Windows 3.1 EXE loader as shipping with special case code for detecting PE executables. Win32s was an add on to Windows 3.1, but Windows 3.1 shipped out of the box with the necessary hook.

Whether or not that qualifies as Windows 3.1 _adding_ Win32s is a matter of packaging. (But it is why I used the wording I did.)

> IBM a really hard time supporting Win32S in WinOS2 on top of 32-bit OS/2.

Interesting, I never imagined Win32s working on OS/2 at all. I didn't use it much, but I always envisioned the Windows on OS/2 2.x as being closer to Standard mode (286) windows, since the Windows VMM probably didn't run on OS/2. But like I said... I didn't use it much.

Related to this: do you happen to remember Microsoft's earlier solution for 32-bit code on Windows? Predating Win32s, I remember there being a library that allowed allocation of 32-bit memory and jumping to 32-bit code. This code wasn't like Win32s code that had API access (it didn't), but it was a rudimentary way to access 32-bit offsets.


You wrote "Windows 3.1" twice there so I'm not sure exactly what you meant.

I deployed and supported 3.0, 3.1, WfWg 3.1, WfWg 3.11 and Win 3.11.

AFAICR after some 30y, none of them included Win32S as standard.

And no, I don't recall any earlier 32-bit binary or API support.

I think there were some dozen versions; 10 are listed here: https://www.classicdosgames.com/utilities/win9x.html

... and that does not include 1.0.


There's a bit of nuance in what I was saying.... I agree (and agreed) that Windows 3.1 didn't include Win32s. What it _did_ include, though, is direct support for Win32s in the form of PE executable detection and a hook for the (separately installable) Win32s PE loader.


The first Windows NT was actually 3.1.

Windows 95, 98 and Me are all 4.x internally. Windows NT 4.0 is also version 4 internally...


No, Windows NT was not Windows 4.0.

Windows 4.0 was the original planned name for the product code-named Chicago, which was eventually released as Windows 95.

The first-ever version of Windows NT was called version 3.1. The public reason that it was called 3.1 is is to keep it parity with the then current version of 16-bit Windows which was at that time Windows version 3.1.

Industry rumour at the time was that the real reason it was called Version 3.1 was that Microsoft had a contract in place with Novell which gave them some confidential internal details of how the Novell NetWare IPX/SPX network protocol and the NetWare network client worked.

At the time that NT was in beta, Novell still did not have a client for the new operating system. Microsoft had to write its own client so that the new NT operating system would be able to connect to Novell NetWare servers over Novell's own network protocol. So the first several versions of Windows NT what bundle with a Microsoft written Novell network client, and subsequently a third-party client became available from Novell itself which implemented additional functionality such as support for the Novell NDS directory system.

The licensing agreement between Microsoft and Novell only covered up to and including Windows version 3.1. Therefore in order to use that information, that was the version number that Microsoft had to use for the new product.

I also add to that that you include another red herring that Microsoft's marketing department put out in your comment. The Windows 9X and Windows NT product lines were never merged.

Windows 2000 internally was Windows NT version 5.0. It changed to using plug and play device enumeration so that it could boot on p&p systems designed for Windows 9X. It was able to cope with not knowing the IRQ or DMA channels in use for its boot hard disk for example.

So what that means is that Windows 2000 was the version that incorporated support for the key technology that enabled Windows 9X but which could prevent NT 4 from running effectively on such machines.

Windows 2000 was meant to be the first consumer-focused version of the Windows NT product family... But Microsoft got cold feet, was afraid that it wasn't quite ready, and pushed out one more iteration of the 9X product line: Windows ME. Then it gave a bit of cosmetic facelift to Windows NT 5, added theming to the GUI, substantially increased the speed of boot up and suspend and resume, called it Windows NT 5.1, the marketing department branded it as "Windows XP", and the rest is history. But it doesn't actually include any technology from Windows 9X.

As I understand it some people from the DOS-based Windows product development team were moved over to the Windows NT development team, and the rest were laid off. Not many people were transferred and no technology whatsoever -- there never was a merger.


I don't think that qualifying XP as merely 2000 with a facelift is not entirely fair. XP benefited from having drivers produced for 2000 by the time it came out, but it also had additional compatibility shims to allow almost every Windows application in existence to work (in 32bits). 2000 was a great OS, that I liked, but it wasn't ready for consumers (not dissimilar to the Vista/7 situation). I believe that waiting until XP for the NT kernel big push was the right one, even if it gave us Me which was likely the worst release of the OS.


5.0 -> 5.1. Doesn't sound like a big deal to me.

OTOH, there was more difference than between Windows Vista and Windows 7… And everyone hated the former and loved the latter...

But I'm not inclined to argue about this! It's not a big deal either way. :-)


Lotus was at a crossroads. They could continue with DOS, port to Windows, or port to OS/2. Which path should a cash-rich company with one product pick?

All three.

I have little sympathy for Lotus. They need to own their decisions. Blaming their competitor for misdirection is eye rolling.


You don't have to spread old lies to make microsoft look bad, they do just fine at being terrible on their own.


> stealing associations to bring error messages/dodge the invocation of the competitor software

So... just like what they're doing with browsers these days then


I think they still introduce small problems for people who run software they don't like. For example, if you run Linux on your desktop, and want to use a Windows VM for work, you can't run WSL2 or Hyper-V in the KVM/Qemu guest, even if nested virtualization is enabled and working with other operating systems. It used to work, but now it doesn't, and no know knows exactly why.

These situations are murky. I don't know that they broke it deliberately. Maybe it broke on its own and the problem affects so few people that they just don't care about it.

And you can't really demand that they spend their developer resources on things that they think won't help them. But on one hand, they wrote their own Wayland server for Windows 11, but on the other hand, they say, we can't make Teams work on Wayland.

They do lots of odd stuff. It's pretty easy, and pleasant, to run a headless linux server on Hyper-V, but setting up a proper desktop system on your own is hard. They don't actually create a wall you can't get around, but they create obstacles that make it easier to do the things they want you to do.

It's not fair or reasonable to get mad at them about this stuff. It's more that we should be clear about where they're coming from.


If it helps, I'm currently running a Windows kvm guest that runs WSL2, but I had to change my processor type.

Ubuntu 22.04 Host, virt-manager/ qemu/ kvm hypervisor Win10x64 Guest, CPU model is set to "Broadwell-noTSX-IBRS"

It's definitely not as performant with this setting, but it gets the job done so I can run WSL2 and Docker Desktop in my Windows vm.

YMMV.


Thanks, I'll definitely give that a try.


A while back, my Ubuntu LTS system kept badgering me to upgrade to a new Ubuntu. I finally relented, and installed the latest. It installed without any errors, but the display was all messed up.

After much fiddling and googling about, I deduced that apparently didn't support the graphics card anymore. It never said "don't install me, cuz it won't work with the card I used to work with." It just died on it. I wound up reinstalling the older Ubuntu.

I don't believe there was any conspiracy by the Ubuntu developers. No conspiracy is necessary - it's really hard to not break things. I knew some people who worked in appcompat at MS, and they had a lot of stories to tell about how hard they had to work to not break things. A lot of software misused Windows APIs making it hard for MS to improve things.

> I think they still introduce small problems for people who run software they don't like.

This is completely unfounded speculation.


How old is the graphics card? My work machine has a GPU that's quite niche and about 14 years old, still rock solid at 4k etc etc


> It's not fair or reasonable to get mad at them about this stuff. It's more that we should be clear about where they're coming from.

You're describing a wild animal: "It's not fair to get mad at the wolf for biting you - that is its nature"

Perhaps then we should also treat them as the wild, hostile animal they are.


Linux, FreeBSD and Apple OSX operating systems routinely break without warning older software. I've had the fewest breakages with Windows operating systems.

Just in the last few months, I had to buy a new iphone because Waze, Twitter, and my banking app simply ceased working on it. No warning, no nothing. Those apps upgraded themselves, and just stopped. No check for compatibility with an older iphone.

Bought a new iphone, transferred the apps over, and they magically started working again.


Sorry I thought we were talking about deliberate and illegal anticompetitive business practices, not how well MS treats compliant consumers that spend money on it and help further its network effects by using Windows.


I remember somebody at Microsoft arguing that AARD had a sort of legitimate purpose -- Windows reached deep into DOS in ways that in modern times would be anathema, and did stuff that one couldn't expect to necessarily work properly on a DOS clone, since it wasn't part of the public API.

Still, that idea could have been better executed.

Aha, here:

https://learn.microsoft.com/en-us/archive/blogs/larryosterma...

> As a simple example, when Windows started up, it increased the size of MS-DOS’s internal file table (the SFT, that’s the table that was created by the FILES= line in config.sys). It did that to allow more than 20 files to be opened on the windows system (a highly desirable goal for a multi-tasking operating system). But it did that by using an undocumented API call, which returned a pointer to a set of “interesting” pointers in MS-DOS.

[...]

> But the problem was that the MS-DOS 4.0 SFT was 2 bytes larger than the MS-DOS 3.1 SFT. In order to get Windows to work, I had to change the DOS loader to detect when win.com was being loaded, and if it was being loaded, I looked at the code at an offset relative to the base code segment, and if it was a “MOV” instruction, and the amount being moved was the old size of the SFT, I patched the instruction in memory to reflect the new size of the SFT! Yup, MS-DOS 4.0 patched the running windows binary to make sure Windows would still continue to work.

So yeah, by modern standards the way old DOS software worked was all kinds of screwy.


It was later revealed exactly what the purpose was, when internal mail discussions came out in court.

"What the guy is supposed to do is feel uncomfortable, and when he has bugs, suspect that the problem is dr-dos and then go out to buy ms-dos. or decide to not take the risk for the other machines he has to buy for in the office."

-- Brad Silverberg, Microsoft, 1991, as quoted at https://www.theregister.com/1999/11/05/how_ms_played_the_inc... and in many other reports of the court case that one can still find.

That was the purpose.


Would it be legal to create similar incompatibilities if there is both a legal business justification (that particular solution can be implemented in X developer time and would cost us Y money which wins against a proper implementation) and an engineering justification (that particular solution would use X less bytes of disk/RAM and would run better on Y% of our customer's machines) for an implementation which heavily depends on undocumented internals of another product?


Or "Gaslighting" in modern idiom.


No, "gaslighting" is a term for specifically making somebody doubt their own sanity by sabotaging their perception of their own actions.

It's not simply lying or creating fear, it's something a lot more insidious, and I don't think it can be really done on a non-specific target.

Eg, an example would be intentionally hiding somebody's keys to convince them they can't keep track of anything, or scheduling an appointment the person is supposed to go to, never telling them about it, then arguing they were told several times, they're just dumb and forgot.


> sanity by sabotaging their perception of their own actions.

I don't think "of their own actions" belongs in the definition. Perception of others actions, as well as basic facts, can be under attack as well.



Interesting! I stand corrected, though I think the MS explanation does sound plausible for the times.

Can this "Windows poked around in the guts of DOS" and "DOS 4.0 patched Windows" sort of mechanic be verified elsewhere?


Sorry, you bought Microsoft lies hook, line, and sinker. No shame! Everybody did. That's why DR-Dos isn't with us any more.

What they said it's entirely plausible is the problem, and that's why people bought it. Even if it was true, it's on Microsoft for doing that, not DR-Dos for being incompatible. It's like how you needed to be using IE6 to browse the web, or using Microsoft Word from Microsoft Office to edit your documents.

What's really sad is how much things have shifted against Microsoft. Now it's Apple's turn on top, and people are buying that same line just as naively. iMessage this and iCloud that.


I didn't originally, I used MS-DOS, PC-DOS, DR-DOS and even I think PTS-DOS at some point. I liked trying weird stuff.

This is well past the point where any of this actually mattered. It's just plausible to me that there was more than one reason for it. Eg, that Windows poked in DOS brains and did weird stuff is a very convenient thing to the higher ups who wanted an excuse to have less competition, so both things can be true at the same time -- that Microsoft was unethical, but there was a technical reason as well.

Arguably of course all of that should have been documented and have a proper API for it


> It's just plausible to me that there was more than one reason for it.

The code that put up the fake error messages (in the Windows beta versions) when running drdos was xor encrypted in an apparent effort to obfuscate / hide the code. What possible reason would there be for MS to try to escape detection if there was any legitimate reason for the error messages?

These BS error messages have a more modern equivalent by MS-- MS added open document support to MS office natively, having already supported odt with a plugin in their earlier version in order to do business in places that mandated open data formats. The native odt support would convert all formulas in a spreadsheet to the static values they calculated to the first time the spreadsheet was opened by MS Office. Destroying people's work to annoy them to using their proprietary formats. The old plugin did not have this issue (so MS did know how to implement proper support, and had to expend effort re-writing existing code in order to get the 'destroy document' feature to work).


Not connected to the AARD code, but the abominations that MS did to boot floppies in Win9x with volume tracker (or IHC code) is worth a mention:

https://www.os2museum.com/wp/the-ihc-damage/

https://jeffpar.github.io/kbarchive/kb/148/Q148637/

jdebp touches the matter on the page on (previous) messing up with bootsectors by MS-DOS:

http://jdebp.info/FGA/volume-boot-block-oem-name-field.html

(but those DOS ones were only about not trusting the BPB fields, not about corrupting the OEM field)


> Even if it was true, it's on Microsoft for doing that, not DR-Dos for being incompatible.

Why should Microsoft have gone out of their way to make windows compatible with some operating system it was never designed to run on?


I think the implication is that MS went out of its way to make windows not compatible with others (or just appear to be by throwing bogus messages from xor encrypted obfuscated code).

E.g., MS windows 3.1 running in a window under Desqview ran faster than Windows 3.1 running natively. This was presumably embarrassing for Microsoft. Microsoft removed the operating mode that windows ran in that was supported by Desqview in Windows 3.11. Perhaps there were legitimate reasons for this feature removal, but breaking compatibility with a competitor's product would only be seen as a benefit by MS management, and is plausibly the exclusive reason for removing the feature.


Microsoft has done many questionable things but the AARD code was never enabled on a shipping version of DOS so it doesn't seem quite fair to blame them for that.

I also find the whole argument silly because it was obvious even during the Windows 3.0 days that Windows was going to be the whole OS and no one would be buying two operating systems, one to use as a bootloader and compatibility layer for legacy apps and the other to be the GUI OS.

The whole idea never made any sense and all the sturm & drang about Dr DOS proposes an impossible future where a niche for a paid text-mode PC DOS OS was going to continue existing period. It wasn't and it didn't. It's like complaining about Microsoft hijacking the market for TCP/IP drivers. Even if the conspiracy theory was true it was never going to matter.


> Microsoft has done many questionable things but the AARD code was never enabled on a shipping version of DOS so it doesn't seem quite fair to blame them for that.

Here’s how a Microsoft executive described it at the time: “What the guy is supposed to do is feel uncomfortable, and when he has bugs, suspect that the problem is DR-DOS and then go out to buy MS-DOS"

https://www.wired.com/1999/05/caldera-ms-cheated-in-dos-war/

It’s certainly true that DOS’s time was limited but people were still buying it for years after he said that in 1992. Far more importantly, however, you have to think about the situation with OEMs. Microsoft was absolutely cutthroat on licensing with PC manufacturers to prevent alternative operating systems – entire product lines had to be Microsoft-only, they demanded DOS & later Windows licenses be purchased even if the buyer didn’t want them, volume discounts depended on exclusivity or bundling other apps, etc. The hardware companies put up with that because they didn’t have much choice: there were too many business apps and games which their customers wanted to refuse Microsoft’s terms. DR-DOS offered a way out of that: everything ran, often better due to its superior memory management, and the last thing Microsoft wanted was someone doing something like selling systems with, say, OS/2 or GeoWorks Ensemble (a quite decent desktop app suite at the time) and relying on DR-DOS as the operating system choice for customers who wanted DOS compatibility to avoid Microsoft’s exclusivity requirements for that particular model. I don’t know that this would have fared better than, say, System 76 is doing now but they were keenly aware of just how much leverage they’d lose if an alternative got enough marketshare to let OEMs do more than acquiesce to Microsoft’s standard terms.


I understand the quote and 100% believe that some people within MS wanted it purely to prevent competition. But clearly someone with a cooler head looked at it and made the call not to enable it. That's the only thing that actually matters.

I get what you are saying about Dr DOS and the OEMs but it was a battle already lost - Windows 3.x was a massive blockbuster for MS. I suspect that was part of the internal argument for not shipping the AARD code: it was a liability for a battle already won. Windows 95 started development in 1992 and was intended from the start to be a single OS without requiring a separate DOS.

Not to say Microsoft didn't do bad things. The OEM licensing terms were abusive in my opinion... why not focus on that instead of some AARD code that was never enabled and wouldn't have mattered even if it was?


"DOS isn't done until Lotus won't run" ... not the first time for Microsoft



To Microsoft, by my reckoning, DR DOS was an imitator of MS-DOS. In assessing Microsoft’s reaction to DR DOS, I must think what would be own reaction if I had designed and implemented something, and someone copied my design into a distinct implementation of their own. I would have to accept that copyright law gives me no protection and I might console myself with the proverb about imitation being flattery, but I would think it outrageously unjust if some law would somehow have me owe anything to the imitator.

I'm sorry I have to strongly disagree with this view. MS-DOS was developed in 6 weeks and was a clone of another popular OS of the era called CP/M created in 1974 by Digital Research. The same company that created DR-DOS. If there were laws regulating common and fundamental designs and implementations as we do copyrighted works Microsoft wouldn't exist. Digital Research would have sued Microsoft in '81 and that would have been the end of Microsoft.


I believe you're correct about QDOS (which was bought to become MS-DOS) being a quick knockoff of DR's CP/M.

So I didn't understand the author's comment about DR-DOS being the imitator, at least not without acknowledging the prior history.


The section "Common Ancestry" acknowledges the prior history. Though it feels a bit odd. "MS-DOS is there said to be variously a copy or clone of an operating system named CP/M" seems to gloss over the details by sticking specifically to Caldera's Consolidated Statement of Facts, and not mentioning QDOS/86-DOS.

But the author really assert that "DOS" is a very specific term:

> To me, DOS meant MS-DOS and its licensed variants such as PC DOS. DR DOS was no more a brand of these than juices pressed from soy beans, almonds or cashews are brands of milk. This is not to say they have no merit—some of those juices are more enjoyable than is most American milk—but they’re not different brands of the same thing. To me, DR DOS could not even be a candidate for consideration as another brand if it would always, as seemed likely, need special accommodation in anyone’s DOS programming.

so the idea of a "DOS market" doesn't make sense.

Further, the author probably places you into this camp:

> The preceding question seems to have got conflicted in the early 1990s—and may be still in the apparently growing community of retro-computing enthusiasts, some of whom are vigorously revising history, at least as recorded by Wikipedia, to favour DR DOS. The conflict I mean is that celebration of DR DOS as a compatible alternative to MS-DOS for running MS-DOS programs often coincided with requests that MS-DOS programmers should keep in mind what different writing may be needed for DR DOS.


This part in the article didn't make sense to me:

> DOS meant MS-DOS and its licensed variants such as PC DOS

Because I know that Apple had Apple DOS since 1978, and I thought DOS was a general term in that time period


The author appears to have a specific interpretation in mind, yes, and it doesn't match my understanding from the wet-behind-the-ears me at the time.

However, to be more clear, Apple DOS almost certainly was not part of the "DOS market" that the lawsuit concerned. You would have to care far more than I to resolve the underlying issues. I just know the linked-to text doesn't seem to have the ring of truth.


I remember testing a protocol called DDE back in the Windows 3.1 days, and we couldn't figure out what Excel behaved so much faster than Lotus 123. Then we dug into the code and found that Windows 3.1 would free up all available memory as it launched Excel. A sneaky trick which I guess meant that users would find Excel much more responsive that 123 and ultimately help Microsoft get Office domination that it has today.


Someone else in this thread who worked on Wine said there was no evidence for such a thing since the faster launch times also occurred in Wine. What forensics did you use to determine this?


I don't believe the context of the Wine related comment was Win 3.1. OpenOffice wasn't around to compare launch times. Internet Explorer was around, a bit, but was competing with Netscape, not Mozilla.


The idea of introducing bugs to users that doesn’t conform 100% to intended use of your software is not good idea, what will happen is that your software will be perceived as buggy in general.


> what will happen is that your software

Not your software, a competitor's software. The intent here was to inject bugs to make DRDOS look bad. And it worked.

Later Microsoft would have to spend many long years dealing with how many extension points they'd put in Windows which were opportunities for third parties to inject crashes accidentally into Microsoft executables. That's why there's an entire subsystem to allow video drivers to crash and restart.


You are literally commenting under an article of a company having a 2billion market cap, built also from such underhanded tactics.

While it's immoral, it doesn't seem to produce the result that you hope it's be producing.


Microsoft's software is definitely perceived as buggy (And I never said anything about revenue).


Those users would have been running DR-DOS, meaning they would assume THAT software is buggy.

Which was the entire point and intention, as we saw in an email chain that came out during court.


Most people will tolerate the bugs until they absolutely cannot use whatever software they're running though.


Depends on whether it's common or not. If a smaller competitor has bugs, the default is something else, and folks will go yo the default and look askance at the ones sticking with the odd duck software. Source: Linux user since the 90s, LibreOffice/OpenOffice/StarOffice since early '00s.


When they reach that unusability limit, most people will call their IT department and have the offending buggy software reinstalled as a fix. IT won’t remove your buggy copy of Microsoft Word and Teams and replace it with WordPerfect and Slack.


But Word has competitors like GSuite so it cannot be completely complacent. People are making these buying decisions constantly.


It's had competitors forever. The lockin is from UI, file formats, compatibility generally (e.g. functions), scripting / existing infra around it, and its utter dominance in the market ("nobody got fired for buying Microsoft")


I should have said "people and organizations" because that's what I meant.

The mechanism with organizations works like you said yes. They'll just develop processes to work around the bugs until it becomes completely impossible.


In case you're wondering what AARD means (I did): "The name was derived from Microsoft programmer Aaron R. Reynolds (1955–2008), who used "AARD" to sign his work; "AARD" was found in the machine code of the installer" (from Wikipedia).


If the QDOS/86DOS angle interests you check out a talk that Tim Paterson, of Seattle Computer Products and later Microsoft, gave at VCF West 2019. He describes the history of 86-DOS (licensed to become PC-DOS and MS-DOS). API compatibility with CP/M, was the intention but no code was taken from CP/M.

CP/M was an Intel 8080-based OS. The 8086 was mostly source compatible (but not binary compatible) with the 8080 (i.e. 8080 assembler programs could be assembled targeting the 8086 with only minor changes) and QDOS/86DOS supporting CP/M APIs was to help it fit into this re-assembly workflow.

https://www.youtube.com/watch?v=R2Qh0O3Dt10


Memories of seeing my Dad’s boxed copy of “Doctor DOS” sitting on the bookshelf next to his 286 PC are forever burned into my brain. Using DR DOS and XTree on that computer was my first taste of PC usage. Prior to that I’d only been allowed to use the family Atari 800. Years later, when Wolf3D hit the scene, I finally managed to convince him to let me upgrade it to MS-DOS 6, install a VGA card, and upgrade to 4MB of RAM.


Has anybody implemented this in the open source world ?

It's far enough in the future, it would be good to see a reproducable demo of Win95 on DrDOS (or even freedos) - it seems like something someone on the virtuallyfun site might do eventually.


Apparently there was some work inside Caldera to do exactly that.

https://news.ycombinator.com/item?id=28358828


Wow, DR DOS. That's a memory I forgot I had.


MEMMAX. XDIR. XDEL. DISKMAX.

Getting flashbacks yet? (-:


I don't remember the first and last but the middle two is vaguely familiar, reminded me of XCOPY.

Remember ARJ?


Yes. But unlike all of those four it wasn't a DR-DOS command.

Whereas EDITOR was. (-:


This article is about the AARD code, which was present in a beta release of Windows but was never shipped.


Actually it was shipped. “Microsoft disabled the AARD code for the final release of Windows 3.1, but did not remove it, so that it could have become reactivated later by the change of a single byte in an installed system.” [1]

[1] Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [November 1993]. Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (2 ed.). Addison Wesley. ISBN 0-201-63287-X.


Is it shipped if it cannot execute under any conditions? Philosophical question I'm afraid.


The code? Yes

The feature? No


The company that makes GTA was sued for content that was not accessible in the game.


Anybody can sue anyone for anything. I could sue Rockstar for not having enough nudity in GTA; that does not imply guilt or lawbreaking on their part.

The suit you mentioned was settled out of court for a tiny amount, basically nuisance value, with no finding or admission of wrongdoing.


They probably shouldn't have?


> could have become reactivated later by the change of a single byte in an installed system.

Is that not a condition under which it could be executed?


Only if the application has code to change that byte. “It could be changed by a patch” doesn’t count as a condition under which it could be executed, because a patch can make any change it wants to. You wouldn’t say “there’s a condition under which Windows will wipe your hard drive and every visible network share” just because someone can write code to do that.


As documented in the excellent book "Undocumented DOS", whose red cover I can still picture. (Noted in the article, but it was a good book that I still recall fondly.)


I can touch my copy without moving from the chair that I am sitting in. (-:


Is it now your monitor's support?


No. It's on the bookshelf next to Petzold, and below the other Petzold book, that I suspect far fewer have read, on the shelf above. On the other side of the Lower Petzold is Undocumented Windows.

If you deduced from this that the shelves were divided into Windows and OS/2, the sad truth is that the lower shelf is slightly too high, and the books are divided by height differences that amount to millimetres in some cases. Lower Petzold fits; Upper Petzold does not. (-:


Thanks for the recommendation! Just bought a copy off eBay for $4 for my collection.


However it was present in the release shipped to reviewers, who wrote their reviews which including saying how windows worked better on ms-dos


IIRC, the author of "Undocumented DOS" discovered and disclosed this feature during the beta, before release.

It seems at least plausible, if not probable, that Microsoft disabled the xor encrypted bogus error message generating code in the release version as a result of this disclosure.


> In assessing Microsoft’s reaction to DR DOS, I must think what would be own reaction if I had designed and implemented something, and someone copied my design into a distinct implementation of their own.

"MS-DOS was a renamed form of 86-DOS – owned by Seattle Computer Products, written by Tim Paterson." - https://en.wikipedia.org/wiki/MS-DOS?useskin=vector


I mean yeah, but it’s not like they just copied it from him.

> Microsoft, which needed an operating system for the IBM Personal Computer,[8][9] hired Tim Paterson in May 1981 and bought 86-DOS 1.10 for US$75,000 in July of the same year. Microsoft kept the version number, but renamed it MS-DOS.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: