Ray Arachelian wrote:
Roger Holmes wrote:
It would be even more fun if the emulator was done at logic gate level
and even more so if mated to an interactive 3D model of the hardware
where you could open the cover, insert emulated scope probes and look
at the signals. You could even emulate random logic failures for
educational reasons, though to do so as a game would probably be a
step too far for me, though programming the emulator to do it WOULD be
fun.
Right, a logic simulator could be used to model this, and later you
could change the emulator around to match the proposed change. Gate
level emulation is very difficult. Not so much difficult to write, but
its going to require a lot of processing power, and the timing aspects
will be very hard to get right.
It has been done in the past, mainly to help designers test out their
designs, but they typically run several thousand times slower than the
actual machine.
I found a very practical reason to create gate-level logic simulations of
some old hardware (discrete and SSI calculators from the 60's, although
similar motivations could apply to early computers), in support of the
preservation of the hardware.
Tracking down subtle faults in these machines can be difficult due to
limited accessibility, the nature of the circuitry, limited real-time control,
etc. Unsoldering components or tack-soldering probe wires is a recipe for
creating more problems (heat-cycling early circuit boards, etc.) and making a
mess of the original. (Can't say I've never done it but I don't like doing
it.)
With a gate-level logic simulation one can do the hacking on the simulation
('breaking connections', forcing gates to some state, etc.). The
hypothesize-a-fault,test-it-in-the-real-world cycle becomes
hypothesize-a-fault,test-it-in-the-simulator, until the simulation exhibits
the same problem behaviour as the original.
It has been very useful in a few instances, and an interesting exercise,
although a lot of work to get the simulation going.
The emulation
page of the CCS web site seems to have disappeared so I
can't check. As Colossus, like early US machines was not a stored
program computer, I'm not sure at what level you want the emulation to
run. I think there was an emulator for Baby, the first stored program
computer on the web site.
I remember there was something, possibly Java or such on that page, but
it's long gone now. Unfortunately it wasn't something one could
download. That's one of the things that utterly sucks about the web.
You can archive it, but things that depend on a back end server can't be
replicated without having what runs there (or a simulation thereof.)
It's sad that it wasn't released publicly.
Most of Colossus was just circuitry, not much to program there, but you
could code simulations of those circuits and provide code that does
similar enough things. (At least what little I know if it comes from
the book.)
I'd like to create simulations of Colussus and the Bombes, along with sims
for the Lorenz and Enigma, to show the code-breaking processes involved.
The encoders are relatively easy, I haven't researched or seen an in-depth
explanation of the code-breaking machines though.