Microcode .vs. Hardware (Was: hardware multiply/divide functionality in CPUs)
cc at informatik.uni-stuttgart.de
Thu Mar 10 04:17:46 CST 2011
On Wed, 9 Mar 2011, Rick Bensene wrote:
> I thought that the Combitron was largely a microcoded machine, with the
> microcode read into a delay line from a punched metal tape at startup.
I am just in the process of analyzing a Combitron. With the help from
Klemens, who read out the steel tape with his LAB8/e, I was able to
disassemble the firmware of the machine.
The CPU itself is hardwired and has 32 opcodes (5 bits called syllable).
Eleven syllables make up a word.
The contents of the steel tape is nothing but the program that implements
the calculator. Here is an example, it's the contents of (R delay line)
word 95 that implements the idle loop (waiting for a key press). The
three-digit numbers are octal, the left one is a P word syllable, the
right on a P_ (= not P) one. The P_ word of the I phase represents the
Word 95 (P / P_):
000 023 c 97 clear I_P
000 005 - 99 substract word 1
000 024 C 2 negative -> jump to 4
000 001 T1 6 test keyboard line 1
000 010 T2 8 test keyboard line 2
000 024 C 10 key pressed -> jump to word 12
000 030 W1 14 wait
000 000 (cnt) 16
000 031 W0 47 wait
000 013 (cnt) 49
000 025 F 93 jump to word 95 (loop)
> The Combitron was designed by Stanley Frankel, who also designed the
> LGP-30, the SCM/Marchant Cogito calculator, and a number of other small
Yes, and that makes the machine *very* interesting. It is even more
minimalistic than the LGP-30.
> in their home. Based on what Allan explained to me, the operation of
> the machine was controlled pretty much entirely by the "firmware" loaded
> in at power-up when the tape is read in. The low count of flip flops
True, and according to the service manual there existed test tapes to
check out the machine with the help of an oscilloscope.
> would follow in such a design, as a small number of flip flops are only
> needed to store state information, and a few for holding temporary
> microcode operation code information, and a few more for buffering data
> circulating through the delay line(s).
I've counted the number of FFs: twelve for data processing and nine for
clock and timing signals. The twelve FFs are the VZ register (i.e. V, W,
X, Y and Z) that hold an opcode during execution; M, R and Q in line with
the delay lines; A, B, C used for miscellaneous purposes during
arithmetic operations; and E indicating a double or long order.
All documents for the Diehl that I could get my hand on are on our FTP
server (ftp.informatik.uni-stuttgart.de/pub/cm/diehl). Page 182 of the PDF
document Diehl.pdf lists the opcodes of the machine, they are basically
the same as those printed in Frankel's patent (also on the server). The
difference between Frankel's and Diehl's design is mainly the increased
word length of 55 instead of 40 bits.
More information about the cctalk