That was because the software was written to suit the MS command codes provided by MS in the first place, the ones that weren't industry standard.
If I can find the article again, I will post it.
It doesn't mention names, but points out some of the known bugs that were used by programmers to speed up their code. M$ advised that they were bugs. It was known they were bugs, not intentional code paths. But people used them, and then got upset when M$ eventually moved away from 16bit to 32 & then 64bit OSs.
The only reason M$ didn't move away from the DOS based Windows sooner was the use of those bugs in proprietary code for several extremely large companies.
Apple with the advantage of their closed system were able to drop their existing OS & hardware and move to the UNIX/BSD based OSX. Even prior to that major OS upgrades dropped support for older software & hardware. While that also occurred with Windows, it wasn't nearly on the same scale and certain software was supported for much longer.
The interesting aspect of that issue is the companies that wrote their software to also work on Unix and Linux using the Industry Standard Commands have not had to change any of the old commands, but add new ones for new hardware capabilities.
The advantage of writing for a tightly controlled hardware base. Then when LINUX was developed, based on UNIX, it was written from the ground up to support the current (and anticipated at the time) future hardware.
They didn't have to support exiting programmes based on an even older & different OS. Such is what happened with the development of Windows based on DOS, and then Widows as a stand alone OS.
MS changed the command codes a number of times, which is why you need different drivers for different versions of Windows. It's a MS caused issue.
Windows was just an overlay for DOS up to and including Win3.x and even after that with Win 95/98/ME it still had solid DOS underpinnings. Win2k/XP saw a truly stand alone OS, but it still had solid support for DOS.
It wasn't until Vista that they moved away from the old DOS/Win9x era software support. And DOS was very much based on CP/M- so there was core support for many legacy programmes from the mid 70's to 2007.
M$ didn't just change command codes, they developed completely new driver models, particularly for system I/O & even more so, Graphics when going from Win9x to XP, and then XP to Vista. Even going from Win Vista/7/8 to Win10 they've made very significant changes to the display driver model. Yet it's still possible to use older video cards to their full capabilities with the new OS- if the manufacturer is prepared to support them.
There is plenty of crap thrown at M$ that is more than deserved. However that isn't the case here IMHO.