HP-41CX with magnetic card reader and thermal printer
|Display type||LCD fourteen-segment display|
|Programming language(s)||RPN key stroke (fully merged, Turing complete)|
|Memory register||63 .. 319|
|Program steps||441 .. 2233|
|Ports||four vendor specific|
floppy disk via:
PC via one of:
|Power supply||four size N batteries|
The HP-41C series are programmable, expandable, continuous memory handheld RPN calculators made by Hewlett-Packard from 1979 to 1990. The original model, HP-41C, was the first of its kind to offer alphanumeric display capabilities. Later came the HP-41CV and HP-41CX, offering more memory and functionality.
The alphanumeric "revolution"
The alphanumeric LCD screen of the HP-41C revolutionized the way a calculator could be used, providing user friendliness (for its time) and expandability (keyboard-unassigned functions could be spelled out alphabetically). By using an alphanumeric display, the calculator could tell the user what was going on: it could display meaningful error messages ("ZERO DIVIDE") instead of simply a blinking zero; it could also specifically prompt the user for arguments ("ENTER RADIUS") instead of just displaying a question mark.
Earlier calculators needed a key, or key combination, for every available function. The HP-67 had three shift keys; the competing Texas Instruments calculators had two (2nd and INV) and close to 50 keys (the TI-59 had 45). Hewlett-Packard were constrained by their one byte only instruction format. The more flexible storage format for programs in the TI-59 allowed combining more keys into one instruction. The longest instruction required eleven keypresses, re-using the shift keys four times. The TI-59 also made use of the Op key, followed by two digits, to access another 40 different functions. But the user had to remember the codes for them. Clearly, a more convenient and flexible method of executing the calculator's instructions was urgently needed. The HP-41C had a relatively small keyboard, and only one shift key, but provided hundreds of functions. Every function that was not assigned to a key could be invoked through the XEQ key (pronounced EXEQTE — "execute") and spelled out in full, e.g. XEQ FACT for the factorial function.
The calculator had a special user mode where the user could assign any function to any key if the default assignments provided by HP were not suited to a specific application. For this mode, the HP-41C came with blank keyboard templates; i.e. plastic covers with holes for the keys, so the user could annotate customized keys. Hewlett-Packard even sold a version of the calculator where hardly any keys had function names printed on them, meant for users who would be using the HP-41C for custom calculations only (thus not needing the standard key layout at all); this version of the calculator was colloquially known, within HP's Corvallis calculator team, as a "Blanknut" (because the development code name for the HP-41c's processor was known as the "coconut").
Alphanumeric display also greatly eased editing programs, as functions were spelled out in full. Numeric-only calculators displayed programming steps as a list of numbers, each number generally mapped to a key on the keyboard, often via row and column coordinates. Encoding functions to the corresponding numeric codes, and vice versa, was left to the user, having to look up the function–code combinations in a reference guide. The busy programmer quickly learned most of the codes, but having to learn the codes intimidated the beginners. In addition to this, the user had to mentally keep function codes separate from numeric constants in the program listing.
The HP-41C displayed each character in a block consisting of 14 segments that could be turned on or off; a so-called fourteen segment display (similar to the much more common seven segment displays, which can be used to display digits only). The HP-41C used a liquid-crystal display instead of the ubiquitous LED displays of the era, to reduce power consumption.
While this allowed the display of uppercase letters, digits, and a few punctuation characters, some designs needed to be twisted arbitrarily (e.g. to distinguish S from 5) and lowercase letters were unreadable (HP only provided display of lowercase letters a through e). HP's competitor Sharp, when introducing the PC-1211, used a dot matrix of 5×7 dots and displayed the characters in principle as we see them today on computer screens (and, in fact, many LCD screens on various embedded systems); this was later used by HP with the HP-71B handheld computer.
The functions of the calculator could be expanded by adding modules at the top of the machine. Four slots were available to add more memory, pre-programmed solution packs containing programs covering engineering, surveying, physics, math, finance, games, etc. As such, an HP-41 could in fact be tailored to the personal needs of the user. Hardware extensions included a thermal printer, a magnetic card reader (HP-67 compatible via converter software), and a barcode "wand" (reader).
Extension modules could also add new instructions to the machine. The standard set of mathematical functions of the 41-series was somewhat limited when compared to the functionality of some contemporary HP calculators (notably the HP-34C and the HP-15C). Among others, the standard function set offered no integration or root-finding capabilities and lacked support of matrices and complex numbers, which could be added by an extension module.
Another module, known as the Interface Loop allowed for connection of more peripherals: larger printers, microcassette tape recorders, 3½" floppy disk drives, RS-232 communication interfaces, video display interfaces, etc. The Interface Loop could also be used with the HP-71B, HP-75 and HP-110 computers.
The HP-41CV and CX
Many users had used all four ports for memory expansion, leaving no room for other modules. HP designed the Quad Memory Module with four times the amount of memory, providing the maximum available memory and leaving three empty ports available. The HP-41CV (V being the Roman numeral for 5) included this memory module on the main board, thus providing five times the memory of the HP-41C, and four available slots.
The internal architecture prohibited the addition of more memory, so HP designed an extended memory module that could be seen as secondary storage. You could not access the data directly, but you could transfer it to and from main memory. To the calculator (and the user), data located in the extended memory looked like files on a modern hard disk do for a PC (user).
The final HP-41 model, the HP-41CX, included extended memory, a built-in time module, and extended functions. It was introduced in 1983 and discontinued in 1990.
The HP-41C is keystroke programmable, meaning that it can remember and later execute sequences of keystrokes to solve particular problems of interest to the user. These keystroke programs, in addition to performing any operation normally available on the keyboard, can also make use of conditional and unconditional branching and looping instructions, allowing programs to perform repetitive operations and make decisions.
Here is a sample program that computes the factorial of an integer number between 1 and 69 (70! needing an exponent greater than 99, the calculator's maximum), that integer being passed as a parameter via the X register. The program takes up 2 registers which is ≈14 bytes.
Step Op-code Comment 01 LBL'Fac ALPHA label makes program callable by 'XEQ Fac' 02 STO 00 Store X=the parameter in register 0 03 1 Enter 1 in X, "lifting" the stack; Y=parameter X=1 04 LBL 00 Label for goto 05 RCL 00 Recall register 0 into X, lifting stack; Z=parameter (no longer used) Y=1 or interim or final factorial X=parameter or N-I decrement 06 * Multiply X and Y, "dropping" the stack; Y=parameter (no longer used) X=interim or final factorial 07 DSE 00 Decrement register 0 and skip next command when 0 08 GTO 00 Go to label 0 09 END End program - result displayed in X
The HP-41C community and Synthetic programming
A large users' community was built around the HP-41C. Enthusiasts around the world found new ways of programming, created their own software (such as a version of Hunt the Wumpus) and expansion modules, and sped up the clock (see overclocking). Most of these activities were coordinated by the PPC club and its president, Richard J. Nelson. The PPC club published the PPC Journal and produced the PPC ROM, a collection of highly optimized low-level programs for the HP-41C.
One of the discoveries of the community was that it was possible to exploit a bug in the program editor to assign strange functions to keys. The most important function was known as the byte jumper, a way to step partially through programming instructions and edit them in ways that were not otherwise allowed. The use of the resulting instructions was called synthetic programming.
Through synthetic instructions, a user could access memory and special status flags reserved for the operating system, and do very strange things, including completely locking the machine. It was possible to create sounds or display characters, and create animations not officially supported by the operating system. The system flags were also accessed as low-level shortcuts to boolean programming techniques. Hewlett-Packard did not officially support synthetic programming, but neither did it do anything to prevent it, and eventually even provided internal documentation to the user groups.
BYTE wrote that "The HP-41C ... is among the programmable calculators that lie closest to the computer borderline. It comes close enough for the jargon of computers to be useful in describing it", and praised the simplicity and reliability of the card reader and compatibility with HP-67 and HP-97 software. The review criticized the inaccuracies in calculations from the lack of guard digits; "There is something absurd about the world's fanciest calculator not being able to give results accurate to more than seven or eight decimal places". Hewlett-Packard responded that the alleged imprecision was inherent to arithmetic on any computer with finite precision.
Use on the Space Shuttle
A HP-41C that flew on nine early Space Shuttle missions is on display in the Smithsonian Air and Space Museum in Washington, D.C. HP-41Cs with some special hardware configurations (the addition of Velcro strips, pre-production time module, and louder beeper, as well as the removal of parts whose outgassing could cause contamination) were carried on early Shuttle missions for the purpose of performing mundane but necessary calculations, such as calculating the change to the center of gravity due to fuel consumption. The HP-41C was also programmed to handle calculations usually performed by the main on-board computer, such as determining ignition times for re-entry, in the case of a main computer failure.
The continued popularity of the HP-41CX among users prompted SwissMicros to produce a miniature calculator approximating the size of a ID-1 credit card (88 mm × 59 mm × 7 mm) in 2015. Named DM-41, it runs the original HP-41CX firmware with extended memory and realtime clock in an emulator on a ARM Cortex-M0-based NXP LPC1115 processor. Deviating from the original, it comes in a landscape form factor (as known from Hewlett-Packard's Voyager series) with rearranged keys, it features a dot-matrix display, switchable clock speeds, and comes with an USB serial interface to exchange data with a PC etc. for backup purposes, to possibly communicate with applications (like PC-based emulators), or to update the firmware.
- HP documentation released to the HP-41c hobbyist community in the early 1980s; available at HP-41 Internal Documentation.
- Librach, Hank (February 1981). "Hunt the Wumpus with Your HP-41C". BYTE. pp. 230, 232. Retrieved 18 October 2013.
- Hayes, Brian P (January 1981). "The HP-41C: A Literate Calculator?". BYTE. p. 118. Retrieved 18 October 2013.
- Abell, Steve (April 1981). "Well-Rounded Machine". BYTE. pp. 16–17. Retrieved 18 October 2013.
- "Hewlett-Packard HP-41C Calculator". Smithsonian National Air and Space Museum. August 18, 1999. Archived from the original on December 10, 2000. Retrieved November 3, 2015.
- Jarett, Keith (October–November 1984). "HP 41 in Orbit". Professional Computing (John Wiley & Sons) 1 (4): 50–54.
- "SwissMicros.com". Retrieved 2015-11-02.
- Emery, Ken (1985). HP-41 MCode for Beginners. Berkeley: Synthetix. ISBN 0-9612174-7-2.
- Mier-Jędrzejowicz, W.A.C. (1986). Extend Your HP-41. Berkeley: Synthetix. ISBN 0-9510733-0-3.
- Wickes, William C. (1980). Synthetic Programming on the HP-41C. Corvallis: Larken Publications. ISBN 978-0962525803.
- HP-41CL a moded version with 50x speed 120 module integrated
- The Museum of HP Calculators' article on the HP-41 series
- hp41.org – A website (and domain) dedicated to the HP-41
- HP41 Forum
- i41CX+ HP-41CX Emulator for the iPhone and iPod touch
- a41CV A HP41CV simulator for the Android platform
- HP-41C, HP-41CV and HP-41CX on MyCalcDB (bilingual) (database about 1970s and 1980s pocket calculators)
- Page of a HP-41CX user with photos, documents for download, printer, card reader...
- C++ (linux, QT) Source-code project. Simulator HP41CX in a nearly natural look. Based on nsim-0.61 NUT Core by Eric Smith.