The Classic HP 16C Programmer’s Calculator

In the early 1980’s I purchased an HP 16C Programmer’s Calculator:

As a programmer of an HP3000 mini computer, I found myself needing to use this calculator constantly. It had all the bit operations I ever needed: AND, OR, NOT, Shifts, Rotates, complements, etc.

It was also programmable. Which turned out to be very useful when dealing with the HP3000. The HP3000 used octal for displaying bits and all of the docs were written using octal.

Octal made sense on machines that had a word size that was a multiple of 3 bits such as the Dec-10 (36 bits).  On those machines, instead of 8 bit ASCII, characters were often represented as sixbit. In the Dec-10’s COBOL,  sixbit (display-6) was super efficient, allowing 6 characters per word and was the default USAGE for displayed data:

Using octal on machines using 8 bit bytes is just a pain in the butt! On a ‘modern’ 16 bit machine, we would use Hex to represent the contents of a word. Each Hex digit is 4 bits of the word. A memory location of hex 0x4142 which represents the character string ‘AB’.  You can easily see 0x4 is the ‘A’ and ox42 is the ‘B’.

Because the HP3000 used octal, instead of seeing 0x4142 you would see 040502 (a leading zero is the C standard for octal literals). You cannot just look at 040502 and know what is in each byte.

Here is the ASCII Character Set from the HP3000’s MPE Software Pocket Guide. There is no reference of Hex at all:

If you look at the second page, for the letter ‘A’ in the first byte, its Octal value is 040400. The letter ‘B’ in the second byte is 0101. Added together that is 040502. Using this table was how you were expected to read an ASCII string out of an octal dump. Ugh!

So I had a program in the HP 16C that would take the octal value 040502 as input and then show the octal bytes of 0101 and 0102.

Towards the end of the HP3000’s lifespan, when it started supporting POSIX, HP started making it easier to use HEX, but I was in the networking world by then.

Texas Instruments had a calculator called the TI Programmer which competed against the HP 16C. It was less expensive but had nowhere near the same capabilities.

Sadly, after the short HP 16C run, HP never made another programmer’s calculator.

Once I moved off into networking my HP 16C was put in a drawer to almost never be seen again. For networking, and most of my programming  needs while networking, the Window’s calculator’s programmer mode was all I really ever needed. So my HP 16C has sat in a safe and clean location for 30 years. Except for a small ding at the top, it is still perfect.

I find nice versions of it are going for $300 on ebay! Although I rarely use this calculator I am not ready to sell it – once in a blue moon it is still useful to me. Plus I have almost nothing left from the 80’s.

While thinking about this calculator, I wondered if someone might have created a phone app emulation of it. I know I looked for a Windows version years ago but didn’t find anything I liked.

Sure enough there is a very nice android phone emulation:

I played around with this for an evening and it seems to do everything though I didn’t try writing a program for it. I don’t need to mess with octal these days!

You can find more information about this emulation at

https://jrpn.jovial.com/

The author even has a web version of it.

If you are interested in playing with this, the original manual for the HP 16C can be found at

https://archive.org/details/hp-16c_handbook

If you find yourself needing to do a lot of bit manipulation, I heartily recommend having a look at this emulation. It is much more enjoyable to use then the Microsoft Calc program.

This entry was posted in c-Misc and tagged . Bookmark the permalink.

1 Response to The Classic HP 16C Programmer’s Calculator

  1. Pingback: The HP 15C Scientific Calculator (Collectors Edition) | Big Dan the Blogging Man

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.