On Feb 26, 2018, at 12:06 PM, Doug Ingraham via cctalk
<cctalk at classiccmp.org> wrote:
The purpose of an emulator is to accurately pretend to be the original
hardware. It doesn't matter that the original OS runs on a particular
emulator. If a program can be written that runs on the original hardware
but fails on the emulator then there is a flaw in that emulator.
That's true. But it is unfortunately also true that creating a bug for bug accurate
model of an existing machine is extremely hard. Building an OS-compatible version is not
nearly as hard, but still hard enough. Passing diagnostics is yet another hurdle; in some
cases that isn't feasible without an entirely different design. For example, in the
CDC 6600 there is the "exchange jump" test, which at some point depends on the
execution time of a divide instruction and the timing of exchange instructions. It is
very hard for an emulator to mimic that (and an utter waste of effort for every other bit
of software available for that machine).
Another example is the work pdp2011 had to do in order to make RSTS boot on that FPGA
based PDP-11 emulation, because RSTS was doing some CPU-specific hackery to test for an
obscure CPU (or FPU?) bug that had been corrected in some ECO that it wanted to require.
The only way to figure out how to do that is to reverse engineer that particular bit of
code, which isn't normally available in source form.
paul