It is a matter that Microsoft does not care that its changes to the OS will cause this equipment to malfunction. Microsoft does what Microsoft wants to do.
That's right on. The cause of a lot of problems with Windows and across versions of Windows is that Microsoft maintains very relaxed standards (by "standards" I mean actual specifications for their APIs and the OS's exact behavior) and versions of Windows can often vary a lot within those relaxed margins. And to make matters worse, Microsoft often decides to redo their APIs or parts of them, and effectively deprecating the older ones, which they drag around half-heartedly to keep some backward compatibility, which is often leaves a lot to be desired.
If you write very specialized software, you simply cannot write it "correctly" according to Windows' APIs, because their specifications are too vague and leave too much uncertainty. The only option is to assume the most likely behavior, test it to confirm your assumptions on specific versions of Windows, and cross your fingers. If people use your software on a slightly different version of Windows, it probably will work alright most of the time, but it could invalidate your assumptions, and break your software. This is the bane of all Windows software developers and maintainers.
When DOS was replaced by Windows, almost all of the old real-time hardware was rendered obsolete.
DOS was an acceptable substitute for a hard real-time system, but only by virtue of its …