Okay.
What's that mean?
A little bit of explication.
That's a one-digit slice of Babbage's Difference
Engine number two and the code that corresponds
to it.
So I'm Michael Albaugh, and I'm here to talk
about emulation in the sense of a computer
emulating some other -- usually computer system.
And I'm about the same age as the stored program
electronic digital computer.
Yeah.
So I spent a lot of time at the Computer History
Museum in Mountain View.
Mostly as a volunteer.
Not an artifact.
So while I was doing that one day, someone
asked me...
Could the Analytical Engine emulate the Difference
Engine?
Now, that wasn't completely out of the blue.
Because I had been demonstrating the Difference
Engine and I had written an Analytical Engine
emulator for the IBM 1401 the Museum had,
to celebrate Ada Byron...
Ada Lovelace...
Whatever.
Read some Regency novels.
Everyone has a bunch of different names.
Her 200th birthday.
So these are different machines.
The Difference Engine is a stack of adding
machines hooked to a typesetter.
Its job was to produce mathematical tables
by doing successive values of 7th order polynomials
approximating whatever function you wanted.
And the Analytical Engine was much more complex,
more ambitious.
And in many ways, a precursor to the modern
digital computer, although supposedly Konrad
Zuse, who had built a mechanical computer
in 1936, had never heard of Babbage.
So it was in the hope of documenting the first
ever computer program by Ada that I had decided
to use the 1401, because I had it lying around.
I went a little overboard.
And so I emulated the Difference Engine on
the Analytical Engine, on the IBM 1401, on
an old Mac laptop, on a slightly newer Mac
laptop.
And that was mostly with code that I had just
laying around.
And which led me to ask...
Why do I have that laying around?
So...
Because I'm a hoarder!
Including software.
Because that compresses a lot better than
motorcycles.
And I've been doing emulation for quite a
while.
My first relatively large program after an
intro to computer programming class, one class,
I decided to emulate the IBM 1401 on an IBM
1130.
So the 1401 is an interesting machine.
It's my third computer I ever met.
And it's the elder brother of the first computer
I ever met.
And it is almost but not quite totally unlike
any computer you can think of today.
And it's also interesting because it was cheap,
reliable, had great print quality, and by
the way -- cheap, $2500 a month rental.
For the base unit you see there.
The totally tricked out ones we have at the
Computer History Museum were probably $16,000
a month rental.
And that's...
Those prices...
Relate that to -- you could buy a single family
home in Sunnyvale for about $25,000.
Anyway...
The 1130 was my first binary fixed word length
machine.
And having met both of those in close proximity
gave me a real appreciation for how different
computers can be.
From each other.
There's a lot less heterogeneity among computers
these days.
Anyway, so that emulation project was never
finished, and I lost that deck long ago.
But I've done a lot of other emulators since.
So that stack was actually more of a heap.
And I'm gonna visit three of these in this
talk.
Starting toward the bottom.
So one reason we emulate is a business case.
It's purely business.
You just got a new computer.
You've got some old software you're depending
on.
Oh my God, what am I gonna do?
Nowadays, you just keep the old computer.
But back in the day of $16,000...
You didn't do that.
And Apple did something similar when they
moved from PowerPC to Intel.
They let you briefly run PowerPC programs
on Intel Macs.
And a lot of other people did that long before.
So for instance, the 1401...
IBM, when they introduced the 360, they said...
Oh, well, we'll let you -- for a fee -- emulate
your 1401 code on it.
And that was enough to get people who might
have considered going to some other vendor,
which we will not mention -- this can be carried
too far.
I got a panicky phone call in 2000 from a
guy because the latest release of IBM's OS
for their 360 successor, the 4381, had dropped
IBM 1401 emulation!
28 years after the last 1401.
Okay.
So there's other reasons to emulate.
I assume at least some of you have a game
on your computer or phone or whatever.
The other thing is to get insight into old
computers.
And to study their designs.
How to understand what their users were doing
and what their designers were thinking of.
A friend of mine calls this computational
necromancy.
Pay no attention to the orange side.
It is a rabbit hole too far.
So even if the old machine exists, it can
be easier to use an emulator to prepare stuff
for running on it.
So instead of chilling with 2/3 of the IBM
1401 -- running IBM 1401s in the world, I
can code in the comfort of my own basement
using a keyboard that has a delete key.
And that's time travel in comfort.
But we can also travel forward.
To emulate a system that doesn't exist yet,
or may never exist.
Right?
So Lynn Conway and Carver Meade wrote this
book and inspired several of us to design
several chips.
And we wrote the Atari simplified architecture
processor.
That one drove us to seek professional help
in building it.
I wrote an ASAP emulator to evaluate design
trade-offs and retarget GCC.
And Jim Coker, the logic designer in Mississippi,
also wrote a different emulator.
And we traded test cases.
And some of the discrepancies were bugs in
the test code or the emulator.
Some were real ambiguities in the spec.
It helps.
It takes time and money to design a chip.
If you have to ask how much, you can't afford
it.
So we did have a few mistakes in the first
one.
But surprisingly few.
And I was able to lie to GCC to get around
that.
And it worked out really well.
And to give you an example of how important
that can be, so when I was trying to get Ada's
program running on my emulation, I had some
issues, and I asked Tim Robinson, our local
expert about it, and he says...
Oh yeah.
Ada ran across that.
And pointed me to some documentation about
that.
And it occurred to me that if they had had
an emulator, she could have showed Babbage
what she felt was wrong and how to fix it,
and instead of just blowing her off, they
might have fixed it!
So unfortunately there's this chicken and
egg situation.
It's a lot easier to build a computer when
you already have one.
Right?
So just a shoutout to some of the people there.
Sydney Padua was a big source of information
to me.
Everybody should buy her Thrilling Adventures
of Lovelace and Babbage.
And this was our mechanical computing expert.
And that's it.
Thanks, everyone!
