Awesome history, Rick! Sellam
On Mon, Oct 10, 2022 at 9:35 AM Rick Bensene via cctalk < [email protected]> wrote: > > 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 > > > >
