Around the time of the HP-67, an article in the Hewlett-Packard Journal, stated that electronic technology was no longer the only limitation of pocket calculator progress. The human interface was becoming an even greater barrier to adding more functionality. The HP-67 was an excellent example of the problem. It had three shift keys and most of its other keys had four functions. HP was running out of keyboard space for new functions, and many users found it difficult write and use numeric-only programs.
The HP-41C overcame these limitations by adding alphanumeric capabilities to both the display and keyboard. The keyboard had an « Alpha » key that toggled the keyboard between alpha and the normal calculator mode. (The alpha characters were printed on the slanted faces of the keys.) If the user needed a function not printed on a key, the name of the function could be typed in and executed. (About half of the HP-41Cs functions were preassigned to keys.)
Because typing out the name of a function could be cumbersome, the HP-41C added another toggle key called « user ». The user could assign any built-in function or user program to any key. Once the keyboard was placed in user mode, any assignments made by the user overrode the label on the key. (With the gold shift key, this allowed two user functions per key.) The user toggle state remained set even when the calculator was turned off allowing true keyboard customization.
To make it easy to remember keyboard assignments, HP provided keyboard overlays along with preprinted labels for all built-in functions and blank labels for user functions. In addition, whenever a key was held down, its function name was displayed. If it was the wrong key, the user could continue to hold it until the display showed « NULL » when meant the function was canceled.
Of course, HP didn’t just improve the human interface. The HP-41C had more memory (now non-volatile) than its predecessor, more functions, improved programming, and could be expanded with both RAM and ROM modules.
From The Introduction:
« The HP-41C represents a totally new concept in the design of Hewlett-Packard calculators. In fact, because of the advanced capabilities of the HP-41C, it can even be called a personal computing system. The HP-41C is the first Hewlett-Packard handheld calculator offering an exciting array of alphanumeric capabilities.With so many different kinds of calculator uses and applications in the world, we at Hewlett-Packard decided we could provide a significant contribution by designing and building you aquality calculator with expandable and flexible capability. The alphanumeric HP-41C is just the calculator. »
The HP-41C used a low power LCD display with 7 more segments than previous calculators. This allowed a full range of alphabetic characters. The characters were not as fully formed as a dot matrix display, but they had better contrast.
There was a special register on the HP-41C called the Alpha Register. It allowed up to 24 characters. This register was separate from the stack and the other storage registers. Alpha strings could be stored in normal registers or the stack but they were truncated to 6 characters when this was done. A function that shifted strings by 6 characters was included to make it easy to store long strings in multiple registers.
The HP-41C came with 63 « registers » of memory. Memory could be dynamically reassigned between storage registers and program memory. (63 registers was equal to 200-400 fully merged lines of program memory.)
Four ports at the top end of the machine allowed the user to plug in 4 more RAM modules which would increase the maximum register space to 319 or allow 1000-2000 lines of program space. (Or any compromise between those.) Later, the entire register space could be provided via a single « Quad Memory » module and Extended Memory was added to allow even more space..
The Optional Card Reader/Writer (82104A)
Because the HP-41C had continuous memory and because its application pacs came on ROM modules, a card reader was omitted. However, one could be plugged into the top end. (In less time then it takes to read this sentence.) The HP-41C was obviously not code compatible HP-67, however, a sophisticated translator was built into the card reader which translated programs to HP-41C code on the fly.
Optical wand 82153A
|Module holder 82151A |
Overlay kit 82152A
50 blank overlays 82172A
Printer (non-HP-IL) 82143A
Plotter module 82184A
Extended I/O module 82183A
HP-IL module 82160A
40 Magnetic cards 00097-13141
120 Magnetic cards 00097-13143
1000 Magnetic cards 00097-13146
3 Card holders 00097-13142
Other ROM Modules
|Advantage module |
Auto Start/Duplication ROM
Clinical Lab/Nuclear Med.
|Home Management |
HP-IL Development module
Thermal & Transport Sci.
By plugging in an HP-IL module, the HP-41C could be connected to multiple devices simultaneously. This allowed it to control and communicate with lab devices, tape drives, printers, other computers etc. HP-IL options included:
|Digital cassette drive 82161A |
Disc drive 9114A
Thermal printer/plotter 82162A
Thinkjet printer 2225B
Impact printer 82905B
32 column video interface 82163A
80 column video interface 92198A
Modem (Acoustic coupler) 82168A
|HP-IL/RS-232 interface 82164A |
HP-IL/GPIO interface 82165A
HP-IL/GPIO interface kit
HP-IL/HP-IB interface 82169A
HP-IL/Series 80 interface 92938A
Cables in .5, 1, 3, & 5m lengths
|Easy Course in Programming |
Electrical Circuits for Students
Statics for Students
Fluid Dynamics & Hydraulics
|Heating, Ventilating & Air Cond. |
High Level Math
Home Construction Estimating
Lending, Savings & Leasing
Optometry I (General)
Optometry II (Contact lens)
Structural Design (cassette based)
Time Module Solutions I
Alphanumerics brought new programming capabilities. Programs could have descriptive names, could prompt the user for input, and could label output. Prompting and labeling were done by building the desired string in the alpha register and displaying it. Strings, like numbers could be compared. Possibly the greatest programming advantage to an alphanumeric calculator was that the programs displayed as readable commands rather than numeric keycodes.
The HP-41C contained many other programming advances. Indirect operations were expanded and could now use any register as an indirect register. The stack and last X could all be directly addressed by STO and RCL. Increment and decrement loops could now specify the start value, stop value and increment/decrement size. Subroutines could now be nested 6 deep and there were now many more flags and more flag operations. Many of the new flags controlled specific calculator features. For example flag 11 was the automatic execution flag. If set, the calculator started executing the current program when turned on. (See the programming page for more information.)
Program Memory Management
On HP’s previous programmable handhelds, program memory was essentially a single space. The user could pack multiple programs in only with great care and planning. (Such as keeping track of which labels were already used by other programs.)
In the HP-41C, the programs were edited in their own spaces with local line numbers and local labels for branches and subroutines. Programs could also make calls or branches to global labels (i.e. other programs.) An individual program could be deleted with a single command.
All built-in functions, ROM add-in functions, and user programs were listed in catalogs. (There was one catalog for each of the three categories mentioned.) The calculator could display each catalog in rapid succession, or the user could stop at any point in the listing and move backwards and forwards one entry at a time.
No discussion of the HP-41C would be complete without a discussion of synthetic programming. The HP-41C had RPN instruction sequences of one to three (or more) bytes. Some of the possible codes were not documented and couldn’t be entered from the keyboard but some clever users found ways around these limitations. Writing programs using these codes was called Synthetic Programming.
A variety of programs were written to support synthetic programming. To use the simplest, the user exploited a bug in the HP-41C to enter a small program that extracted the next byte in memory from the instruction that followed. (The extracted byte could then be deleted as a separate instruction.) The HP-41C would then interpret the next byte of the instruction as the first byte of some other instruction. The instruction(s) that followed might be interpreted as part of a multi-byte sequence. Obviously, programming in this way, took some forethought and care.
Synthetic instructions made possible:
- Faster and/or smaller programs. For example, looping could be sped up by directly manipulating the program counter.
- Use of internal registers by user programs.
- Recalling and storing the flags register.
- Displaying additional characters.
- Additional string capabilities.
- Additional sound capabilities.
- Renumbering registers. This allowed programs to manufacture local variables that weren’t supported under « normal » HP-41C programming techniques.
See below for links to synthetic and non-synthetic programming.
Updating the Architecture
Because the HP-41 series was on the market for a long time, HP added modules to keep it up-to-date such as the following:
Some calculators introduced after the HP-41 had additional features. For example, the HP-15C had matrix math and the HP-16C had computer scientist features. To keep the HP-41 clearly at the top-of-the-line, HP released the Advantage Module which added improved mathematical functions including matrix support, computer science functions (bases, conversions etc.), and financial functions.
The HP-41C memory space which was generous at first, started to seem more limiting in time. To work around the architectural limits of the HP-41C, HP introduced the Extended Functions / Extended Memory module. This module provided extended memory and operations to access it. It was possible to add one Extended Functions / Extended Memory module with 124 registers, plus two Extended Memory modules with 238 registers each for a total of 600 extended memory registers. Memory in extended memory was organized as named files containing ASCII data, numeric data or programs. Files (or portions) needed to be read into main memory for processing or execution. Some of the features were:
- Ability to list the directory of files in extended memory.
- Creation and deletion files.
- Saving and reading programs or subroutines to/from files.
- Saving or reading blocks of registers to/from files.
- Seeking within files.
- Operations on ASCII files and the ALPHA register.
- Operations to move files between extended memory and HP-IL mass storage devices such as the cassette tape drive.
In addition, this module provided some other new features such as:
- A programmable size operation. This allowed programs to assure that they had enough registers without requiring the user to set the SIZE appropriately.
- A programmable assign operation allowed programs to assign keys.
- Register move and swap functions allowed moving or swapping large blocks of registers efficiently.
- New flag functions made it easy for a program to save the state of the flags before running and restore them when exiting.
- Several ALPHA functions including string length, searching, shifting and rotating.
Extended I/O Module
This module provided new operations that gave the HP-41C additional control over HP-IL devices. Functions included:
- Copying files and entire media.
- Verifying media.
- Getting directory listings.
- Character manipulation.
- HP-IL control functions including loop configuration, device control and data transfer.
Differences between the C, CV, CX and Option 001
The HP-41CV was the same as the HP-41C except that it had four memory modules built in for a total of 319 registers. (With the four ports still available to add other modules.) The HP-41CX was the same as the HP-41CV but added the Time module (stopwatch plus clock with alarms), an Extended Functions / Extended Memory module, a text editor, and some additional functions. The Option 001 version of the HP-41C had no labels on the upper rows of keys or on the surrounding keypad. This version was meant to be heavily customized by the buyer.
Richard Nelson orchestrated the production of the PPC ROM which included a huge number of routines. Features included more math functions, integration, curve fitting, complex math, date functions, I/O routines, block data functions and synthetic programming aids. The phonebook-sized manual dwarfed the calculator, let alone the tiny ROM.
Other Third Party Modules
Other modules for the HP-41C included the CCD module, HEPAX module, ZENROM module, and many specialized modules such as the C-9B P-S APAC Weight and Balance module (aircraft balance) and OB CALC SYS ROM created by GE for use with ultrasound devices in obstetrics.
From The End Of The Manual
« You have just completed the HP-41C Owners Handbook and Programming Guide. You have certainly noticed that programming the HP-41C is simple, and even fun. Yet the capability of the system is astounding. Your programming expertise will increase as you continue to use your HP-41C. And you will find it an easy matter to completely customize your HP-41C. »
Front view of an HP-41CV (~68K)
Three quarter view of an HP-41CV (~94K)
Front view of an HP-41C Opt 001 (Blanknut) (~70K)
Three quarter view of an HP-41C Opt 001 (Blanknut) (~74K)
Picture including card reader, ROM module & overlay (~39K)
Picture of top end with two port covers removed (~9K)
Picture of the back label (~53K)
Picture of HP-41CV interior showing keypad/display board, CPU board and port bus. (~130K)
Picture of HP-41CV and HP-41CX with two HP-IL disk drives and the HP-41C to HP-IL adapter. The HP-IL adapter is to the right. Leaning up against the disks on the left is one of the removable rechargeable batteries for the disk drives. (~24K)
Picture of an 82161A digital cassette drive (~74K)
Picture of an 82162A printer (~74K)
Picture of an 82143A printer and an 82161A digital cassette drive (~110K)
Picture of an 82153A wand (~28K)
HP-41C Price at introduction: $295 HP-41CV Price at introduction: $325 HP-41CX Price at introduction: $325
HP-41C Introduction-Discontinuation: 1979-85 HP-41CV Introduction-Discontinuation: 1980-1990 HP-41CX Introduction-Discontinuation: 1983-1990
If you’re desperate for an HP-41C and a don’t need pocketability, consider this simulation for Microsoft Windows.