Could the IBM 1620 decimal computer (1950) been implemented as chip set around the time of the
4004?
Ted Hoff and I had an IBM 1620; he had done at Stanford,
and I had one at Fairchild. The 1620 was one of the few
CPU’s designed and built at IBM in San Jose, CA.
I had a chance to visit that IBM group one time.
The IBM 1620 had 2 models during its lifetime,
and the model #2 came a few years later and
was superior.
We joked the model #1 was a CADET, means
‘can’t add doesn’t even try’
now in BCD addition you only need 4 bit adder;
and adder is built of 2 half-adders, and a
half-adder is just an XOR gate, however
for BCD you need a binary adder and a correction
if the result is over binary 9. So it is
just a dozen gates. However for IBM
that was too much hardware, so the 1620
had no adder, but used a table look up for
addition in main memory — to wit memory
(core) location 324 contained the digit 6,
as that was the location for 2 + 4.
If you failed to have the memory table
than addition wouldn’t work.
the model #2 1620 had a real adder (maybe).
When Ted an I designed the 4004 we put in
2 instructions: add and decimal correct.
to do decimal aithemetic on 2 BCD digits it
took 2 steps, correspondingly. So if you
study the 4004 CPU instructions you will
notice both of these op codes.
stan mazor, age 83
Now both early IBM computers 1401 and 1620 did multi-digit
addition using 2 main memory addresses, and the add
operated on a string of successive muti-digit decimal BCD numbers
each occupying several and successive memory addresses,
and generally one of the addends became the sum,
so it was destructive as in a = a + b;.
Now that required some memory addressing operations
to complete the string decimal arithmetic. That would
be too complicated for our first CPU LSI chip, but
we could code the operation in about 6 4004
operations, something like, approx…
LD A move A from register A to the ACC
ADD B add the BCD digit in register B to the ACC
DEC Adju adjust the ACC to correct for BCD
Stor C Save the ACC in register C
now we have a sum of 2 BCD digits and stored in a register;
now you need to get the next 2 digits from memory
into the registers and do this again, and
count if you are done, etc.
stan
we just added 2 BCD digits from 2 registers