The most recent Dolphin Emulator post referenced a bug they had where memory cards were written to too quickly under the emulator (and even on actual hardware if you had memory cards that were sufficiently fast) which caused some games problems because they did not expect save files to be written so quickly. Imagine things like that, but where the worst case isn't having Wind Waker hang while saving, but planes crashing.
Anyway, a long time ago, in a physic lab class, we had a custom spectrometer device that was controlled using the printer port. (Probably a light, a detector, a diffraction grid and a steppers motor, and perhaps some weird card as an interface to the computer.) It was controlled by a custom Pascal program in the DOS command line.
It was connected to a Win 95 computer that died and we had to replace it with a Win 2000 one. The problem is that anyone can read/write the printer port in Win 95 but that's not possible in Win 2000. [1] We had to make some magic, probably rewrite the program and use some weird device driver to write to the printer port (IIRC again). And multitasking messed the timing. At the end it worked, but upgrading the computer was not easy.
[1] If that makes no sense, replace that with a Win 3.1 to Win 95 transition, but I think it was not that old.
When the pysical computer gave out, I replaced it with a reasonably new one but instead of using a modern OS I installed MS-DOS in order to get it up and running as reliably and quickly as possible.
If I were doing the same today, I'd likely get a new computer and install FreeDOS.
Of course, nothing can prevent poorly designed code and hardware.
Emulation is likely possible, probably for many of the systems involved, but this is not a field where bugs, especially ones introduced due to emulation, would be easily acceptable.
> Of course, nothing can prevent poorly designed code and hardware.
Agreed, but the reality is that here, trying to fix things and ending up breaking them can and probably will kill people.
I am only aware of a single modern-ish motherboard with ISA, the MS-98A9, and it only supports Intel 3rd Gen Core series CPUs.
That said, if it was a large enough project, reverse engineering and re-implementing using modern components would likely be feasible. Turning each of these into network services handled by something more akin to a RaspberryPi could modernize the data sources while providing a sustainable and modular replacement strategy. The problem is that its not "sexy" enough to get a major government project, and it would not grease the correct palms that a multi-billion dollar next-gen complex proprietary replacement would.
For example, I've looked into emulating DOS, because I don't like the existing emulators. But I don't need to emulate floppy disk drives, or their drivers, or their hardware cards. I just write some software that can fake a disk drive and hook it to the I/O interrupts. That would be a simple project.
There's nothing sophisticated about DOS.
In hindsight, I'm baffled that it took many many years for people to develop clones of DOS.
For example, EDLIN. A trivial program. I'd write it in a high level language like D, get it to work, then hand-translate it to asm. The executable loader is absurdly simple. And so on.