> On Feb 26, 2018, at 12:06 PM, Doug Ingraham via cctalk
> <[email protected]> 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