Paul wrote:
> modify a lot of the software. Timing dependencies
aside, G-15
instructions
> didn't have addresses -- they had "timing
numbers" that effectively
told the
> hardware how long to wait before reading or
writing a word on the
drum.
To which Christian replied:
Oh really, that is then similar to the addressing
scheme of the Diehl
Combitron (a marvelous design by Stanley Frankel).
Indeed, the old drum computers generally had timing information in the
instruction set that gave the optimal
sector on the drum for the operand address, and the next instruction
address.
We had an old computer at our high school computer lab (1974-ish) that
was designed in the mid-1960's by 3M (the scotch tape company) that was
originally a real-time monitor and data reduction system for a natural
gas distribution system and was donated to the school when it was
retired.
The machine had two CPUs that ran in tandem with the ability to detect a
fault in one, and switch to the other.
The CPUs had 24-bit words, and each had 8K words of magnetic drum
memory. They were discrete transistor-based machines and were
bit-serial in architecture. An instruction like ADD that operated on
an operand to add to the accumulator would have information in the
instruction set reference that said "for optimal programming,
operand=N+3, next instruction=N+6".
The assembler (which was slow!), called SOAP, tried to optimize, but for
a lot of things like list processing and such, it really couldn't do
much to help. Tables and lists had to be scattered all over the drum
for the best speed, and that got kind of difficult because the operand
address only had room for a sector number. If the reference was on a
different track, you had to prefix the instruction with a modifier
instruction that would specify the block and track for the operand (and
next instruction if needed). There were no index registers, so the
only way to do calculated data fetches or branches was to load the
instruction base into the accumulator, then modify it using math
operations to calculate the correct sector, then store the accumulator
at the address specified by the next instruction address to execute it.
It was crazy fun learning it, but in practice, even trying really hard
to optimize the code, it could barely drive a Teletype 33ASR to full 10
character-per-second maximum speed. It had a bunch of I/O stuff,
including a Parabam transistorized real-time clock that could be read by
the computer, a bank of thumbwheel switches that could be read in BCD
form, and a whole rack full of A/D (discrete transistor) converters,
digital counters, analog outputs, and digital relay outputs that were
used for the original data acquisition I/O, but the cables going into
them were just chopped off, and I never played with any of that other
than to write code to click the relays in pseudo-random patterns to make
a noise like the machine was "calculating".
Speaking of the Diehl Combitron, it was indeed an amazing transistorized
(with only something like ~130 transistors in total) calculator designed
by the genius of Stan Frankel (who also designed the transistorized
Smith-Corona/Marchant (SCM) Cogito 240/240SR calculator (which was way
too slow due to SCM requiring the use of cheap slow-switching diodes),
the Royal McBee/Librascope/General Precision LGP-30 vacuum-tube drum
computer, as well as consulted in the design of the delay line-based
Packard Bell PB-250.
The Combitron was an amazing microcoded bit-serial processor designed in
around '63-'64 by Frankel. It was user-programmable (but not user
microprogrammable, unless...). ROM for storing the microcode was a
difficult thing back then, generally taking quite a bit of space (not
really practical for a desktop calculator) and were labor-intensive and
expensive to build.
How did Frankel store the microcode for the Combitron?
On a punched stainless steel tape that was optically read a bit at a
time at power-up into a delay line. Once the microcode was loaded, the
tape would rewind and the microcode engine would start up reading its
instructions out of the delay line. Hence the addressing scheme in the
microcode to make it as fast as possible. The addressing scheme
accounted for the delay time for processing a microcode function such
that the next micro-instruction would be right at the output tap of the
delay line when it was needed.
It takes about a minute for the microcode to load when the machine is
powered up. The tape has two channels, one for the clock, and another
for the microcode bits.
By the way, an end-user could presumably write custom microcode for the
calculator if they had the microcode documentation and a way to punch
the stainless steel tape. Possible, but not terribly practical.
Loading the microcode from a reel of punched metal tape made firmware
updates possible by replacing the tape. I do not know if there were
different versions of the microcode for the Combitron to fix bugs, but
it certainly was a possibility that was enabled by this microcode
loading mechanism. The tape is relatively easy to replace, and could be
done in the field by a service tech if needed. Stainless steel was used
for longevity of the tape, given that it had to be read every time the
machine was powered on.
I have one of these machines in the Old Calculator Museum's collection
that is fully operational. The tape transport mechanism required work
to get it running properly. The printer has a couple of columns that
print very lightly, which I haven't been able to figure out how to fix
yet. The printing mechanism is an exquisite work of art in itself,
the creation of some brilliant German mechanical engineers, probably
adapted from one of Diehl's earlier mechanical printing calculators.
I haven't yet written the exhibit for the machine yet...among the many
things I have on my to-do list, but it's quite a great story how the
machine was developed.
Frankel built the original prototype for the machine in his kitchen in a
relay rack as an exercise to test out his theories. He had to use as few
transistors as possible, because they were expensive and he built the
prototype using his own funds, resulting in an extremely efficient
design. He had two telephone dials that were used to enter the
microcode instructions, one dial for the number of sequential zeroes and
another for the number of sequential ones that would be loaded into the
microcode delay line (essentially run-length encoding). The old
pulse-style dialers were perfect for injecting the pulses into the delay
line to represent the microcode words Needless to say, it took a while
to load the microcode this way. One mistake, and you'd have to start
over.
The prototype design worked well, so he decided to try to market it, and
Diehl in West Germany bought the rights to it. Frankel went to their
factory to assist with the actual calculator design and trained the
engineering and manufacturing folks on how it worked and how to build
it, as well as assisting in writing all of the documentation for
end-users as well as service techs. A number of follow-on calculators
were marketed by Diehl using the architecture Frankel created, including
some advanced machines with scientific and statistical functions.
Rick Bensene
The Old Calculator Museum
https://www.oldcalculatormuseum.com