Designing a Scientific Pocket Calculator in 1,465 Easy Steps
Posted: February 12, 2016 Filed under: Uncategorized Leave a commentAs a certifiable nerd, I have always had a fascination with pocket calculators. My first love was the “Bowmar Brain” calculator, which my parents gave to me for Christmas in 1975. I still remember my absolute amazement at entering “12345.6 x 7.89 =” and watching the glowing red display instantly flash the answer in eight glorious digits. How on earth could a tiny hand-held device contain so much magic! The Bowmar was only a “four-banger” in that it could only add, subtract, multiply and divide. However also during the ’70s Hewlett Packard had introduced the first true scientific pocket calculator — the venerable HP-35. Not only could this incredible pocket-sized machine do basic math, but it could actually compute high level scientific functions such as trigonometry, logarithms, and square roots! As unbelievable as it seemed, this little miracle was capable of these amazing mathematical feats from the palm of your hand, running for hours on three AA batteries. My family couldn’t afford the $400 it took to buy one of these in the 1970’s (the equivalent of $2,500 today!), but nevertheless I was hooked for life. This was the stuff of science fiction, and I wanted to be a part of it. What I did not understand at the time is that the innovation necessary to create these miracles would lead to the entire microprocessor revolution, ultimately laying the groundwork for every single PC, laptop and tablet computer in existence today, and not coincidentally, setting the stage for my entire career.
The key concept which made all of this possible is now known as “microcoding.” Instead of fixed, hard-wired logic which was pervasive at that time, microcoding enabled engineers to tell the machine what to do through simple logical instructions instead of physically connecting logic devices together. And these instructions could be changed relatively easily, essentially giving the hardware a new personality with each new program. This technique is very well-known now, but in the 1970’s it was an incredibly innovative breakthrough which enabled not only the creation of pocket calculators, but virtually every digital device in our lives today. Which brings us full-circle to my fascination with early calculators!
After studying some of the techniques used to create these pioneer calculators, I decided to re-create some of the magic myself. I wanted to personally experience what it may have been like to have been in that room in Palo Alto in 1970, when Bill Hewle
tt turned to one of his young engineers, pointed to a massive desktop calculating machine, and said, “I want one of these things that will fit in my shirt pocket,” with no idea of how to accomplish it. I wanted to feel the joy of seeing my microcode causing red LED digits flicker to life; and watching the entry of decimal numbers as I tap buttons and watch them scan across the display; and more importantly, the struggle to coax advanced transcendental math functions out of tiny amounts of memory and computing power. To me, this seemed tantamount to building the Great Pyramid of Giza! So at the beginning of February I began dedicating a few weekends and several late nights to accomplishing this challenge — and what I learned was remarkable.
Over the next few weeks I will blog about this experience, from start to end. I will begin with an overall design, touching on both the high-level organization of the microcode,
and strategies related to the hardware upon which the microcode depends. In the next installment I will share what I learned about the “user interface”: reliably reading keypresses and number entry, managing the LED display, and the surprising complexity associated with adapting the binary numbers used by the processor chip into a display readable by humans. And in the final installment, I will share my experiences learning how to perform high-level advanced math using estimation techniques developed in 1716!
(check out our personal website here: curd.net)