HP-41CV
| Company type | Product line |
|---|---|
| Industry | Electronics, Calculators |
| Founded | 1979 |
| Defunct | 1990 |
| Headquarters | Palo Alto , United States |
| Products | Programmable handheld calculators (HP-41C, HP-41CV, HP-41CX) |
| Parent | Hewlett-Packard |
The HP-41C lineup consists of programmable, expandable handheld calculators featuring continuous memory and utilizing RPN, manufactured by Hewlett-Packard between 1979 and 1990. The initial HP-41C model was groundbreaking as the first handheld calculator to incorporate an alphanumeric display. Later variants, the HP-41CV and HP-41CX, introduced greater memory capacity along with additional advanced capabilities.
The alphanumeric "revolution"
The introduction of an alphanumeric liquid crystal display on the HP-41C marked a significant advancement in pocket calculator technology by improving user interaction and expandability. It was capable of presenting clear textual prompts such as "ENTER RADIUS" and informative error messages like "DATA ERROR", offering a more intuitive experience compared to earlier devices that relied solely on numeric codes or flashing zeros.
Earlier calculators demanded numerous keys or complicated shift-key combinations to access various functions. For instance, the HP-67 utilized three separate shift keys, while competitors like Texas Instruments’ TI-59 featured close to 50 keys with multi-key sequences that often required memorizing function codes. The HP-41C simplified this complexity by employing a compact keyboard with a single shift key and enabling access to hundreds of commands through the ("execute") key by typing out function names (e.g., FACT for factorial).
Users could personalize their experience through a customizable user mode that allowed reassignment of functions to specific keys, supported by blank keyboard overlays for custom labeling. Hewlett-Packard even produced a version with entirely unmarked keys—internally dubbed "Blanknut"—aimed at users who focused on tailored applications.
The alphanumeric display also made program editing more straightforward by showing function names instead of numeric codes, which eased the learning process for beginners and helped reduce programming mistakes.
This display employed a fourteen-segment LCD capable of rendering uppercase letters, digits, and selected punctuation marks (known as the FOCAL character set). This design choice offered lower power consumption compared to the LED displays prevalent at that time. Although some characters required segment twisting for better distinction—such as differentiating 'S' from '5'—lowercase letters were generally limited to a few exceptions. Competitors like Sharp introduced dot-matrix displays with 5×7 dot grids that allowed clearer character representation, a technology Hewlett-Packard later adopted in devices like the HP-71B handheld computer.
The HP-41CV and CX
Many users maximized all four available memory expansion ports, leaving no room for additional modules. To address this limitation, HP introduced the Quad Memory Module, which quadrupled memory capacity while freeing up three slots. The HP-41CV (with "V" signifying 5) integrated this module directly onto the main circuit board, delivering five times the memory of the original HP-41C along with four open expansion slots.
Due to constraints in the internal system architecture, further direct memory expansion was not feasible. Consequently, HP developed an extended memory module that operated as secondary storage. Although data stored there could not be accessed directly, it could be transferred back and forth from main memory, functioning similarly to file management on contemporary personal computers.
The last model in the series, the HP-41CX, released in 1983 and discontinued in 1990, combined extended memory capabilities with a built-in time module and offered an expanded set of functions.
Programming
The HP-41C features keystroke programmable capabilities, allowing users to capture and run sequences of keystrokes tailored to specific tasks. Its programming supports both conditional and unconditional branching, as well as loops, facilitating repetitive procedures and decision-based logic.
With support for indirect addressing (computed goto), the device can simulate a Universal Turing machine, rendering its programming framework Turing complete. This extensive flexibility often led to the creation of intricate spaghetti code structures.
Program instructions are numbered starting at 1, though these numbers can shift when modifications occur. The LBL command defines labels that serve either as entry points for program execution or as destinations for GTO (goto) and XEQ (execute) commands.
Programming example
The following example demonstrates a program that computes the factorial of an integer ranging from 1 to 69, constrained by the calculator’s exponent limits. The input value is placed in the X register. This routine occupies approximately two registers (~14 bytes).
Step Op-code Description
01 LBL'Fac Defines a global label accessible via 'XEQ Fac' 02 STO 00 Saves the input value into register 00 03 1 Loads the constant 1 into X to initialize the stack 04 LBL 00 Sets a local loop label 05 RCL 00 Retrieves the value from register 00 into X 06 * Multiplies the current X and Y values 07 DSE 00 Decrements register 00 and skips next step if zero 08 GTO 00 Returns to label 00 to continue looping 09 END Terminates program; final result remains in X
FOCAL
The HP-41 series implemented an evolved form of keystroke programming derived from earlier HP calculators. Enhanced features such as keyboard overlays, completely reassignable keys, input/output capabilities for program exchange, and alphanumeric display support motivated users to suggest renaming it "FOCAL" (Forty One Calculator Language). Despite this term being previously used by Digital Equipment Corporation, HP never officially adopted this designation.
Synthetic programming
The HP-41C cultivated a vibrant user community that pioneered novel programming techniques, developed software—including games like codebreaking and Hunt the Wumpus—and created expansion modules along with overclocking strategies. These initiatives were organized by the PPC club under Richard J. Nelson’s leadership, which published the PPC Journal and released the PPC ROM containing optimized low-level routines.
Enthusiasts uncovered that certain FOCAL commands occupied multiple bytes, enabling exploitation of a flaw in the program editor to assign unconventional functions to keys. This approach, known as synthetic programming, allowed partial stepping through instructions and editing beyond normal constraints.
Through synthetic programming, users gained access to memory areas and system flags typically reserved for the operating system, unlocking capabilities such as custom audio effects, unsupported animations, and sophisticated Boolean logic shortcuts. Although HP did not officially endorse synthetic programming, it tolerated its practice and eventually shared internal documentation with user groups.
Reception
In December 1980, BYTE magazine described the HP-41C as "the most versatile machine ever," commending HP’s documentation quality and noting it was "considerably easier to program and debug" compared to rivals like the TI-59. The alphanumeric display significantly improved user interaction, positioning the calculator close to computer-level functionality.
A later review praised its dependability, straightforward card reader design, and compatibility with HP-67/97 software but pointed out calculation errors stemming from limited guard digits—restricting precision to about seven or eight decimal places. HP acknowledged these constraints as inherent limitations of finite-precision arithmetic systems.
Use aboard the Space Shuttle
An HP-41C calculator, which participated in nine of the initial Space Shuttle flights, is exhibited at the National Air and Space Museum in Washington, D.C. This unit was adapted with Velcro attachments, an early version of a timekeeping module, an enhanced beeper for louder alerts, and removal of components susceptible to outgassing. It carried out vital computations such as adjusting the center of gravity as fuel levels changed. Additionally, it was programmed to manage crucial operations like ignition timing during re-entry if the primary computer failed.
Expandability
The HP-41 featured four module slots located on its top surface, enabling users to increase memory or install pre-loaded solution packs covering disciplines such as engineering, surveying, physics, mathematics, and finance. This modular design allowed tailoring the calculator to particular user requirements. Available hardware add-ons included a thermal printer, a magnetic card reader compatible with HP-67 cards via an adapter, and a barcode scanner.
Modules also introduced new instruction sets. The base 41-series did not support functions like integration, root finding, matrix calculations, or complex numbers—capabilities that became accessible through expansion modules.
The Interface Loop module facilitated connection to external devices including larger printers, microcassette tape drives, 3-inch floppy disk drives, RS-232 communication ports, and video displays. This interface worked seamlessly with other HP computers such as the HP-71B, HP-75, and HP-110.
HP-41 expansion modules enhanced the calculator’s capabilities by accommodating up to four modules at the rear. Compared to contemporaries like the TI-58 and TI-59, these modules provided superior flexibility.
Memory modules (exclusive to HP-41C)
Memory expansion modules increased RAM capacity to allow for more extensive programming steps and additional data registers. The original HP-41C came equipped with 63 registers of 7 bytes each; these could store numeric values, six-character strings, or up to seven FOCAL programming steps per register.
Each memory module contributed 64 extra registers; users could install up to four for a combined total of 319 registers (approximately 2 KB). To maximize slot efficiency, dual memory chips were paired per module. Later on, HP introduced the Quad Memory Module, which consolidated all four memory expansions into a single slot. The subsequent HP-41CV model incorporated this quad memory internally.
Application pacs
Read-only memory application 'pac' modules provided up to 4 KB of ROM each (some units contained two separate 4 KB modules totaling 8 KB). These ROM modules housed numerous programs developed in the HP-41C’s FOCAL language.
Programs stored in ROM could be executed from user routines via the XEQ command; within code, invoking a ROM program appeared as "XROM".
82104A card reader
The card reader/writer operated with small plastic cards embedded with two magnetic strips, enabling backup of memory contents and data exchange. Despite the HP-41C’s built-in non-volatile memory, this device offered an optional form of permanent storage.
Each card held two strips containing 112 bytes each, capable of storing either 16 data registers or up to 112 program steps. Typical programs spanned five or more cards; a complete backup of all 319 registers plus internal data required 11 cards (each needing two passes).
This reader supported HP-67 magnetic cards by converting HP-67 programs into compatible HP-41C instructions due to their shared architecture. Some instructions unique to the HP-67 were emulated through additional commands within the reader.
Cards could be write-protected and designated as private to prevent source code visibility upon loading—allowing secure distribution of programs. However, the card reader’s motor consumed substantial battery power, and blank cards represented a notable expense for users.
82182A time module
This accessory incorporated a real-time clock featuring programmable alarms capable of activating user programs and powering on the calculator. It allowed for scheduled task execution without continuous energy draw, making it particularly suitable for laboratory data logging at predetermined intervals—thereby optimizing battery longevity.
The HP-41CX model came equipped with this time module as a standard component.
82143A thermal printer/plotter
Using paper rolls, this thermal printer produced lines containing up to 24 characters with bluish-toned printouts that could gradually fade or change color when exposed to heat. Although its graphical abilities were limited, it supported custom character creation and pixel-level manipulation; however, the restricted buffer memory prevented full-line graphics or flexible line spacing adjustments.
Despite these constraints, the device included tools for vertical graphing of functions on its narrow paper strip, broadening output options for both business and technical applications.
82242A infrared printer interface
This module enabled wireless connectivity between a thermal printer and the calculator via infrared communication, specifically compatible with the HP 82240A and HP 82240B models. Wireless printing was facilitated, although the printer itself required battery power.
82153A optical wand
The optical wand functioned as a pen-shaped barcode scanner designed to read HP-standard barcodes directly into the calculator’s memory. These barcodes, typically found in HP solution manuals, contained programs, constants, or sequences of keystrokes—allowing operation without using the keyboard and proving useful in troubleshooting keyboard malfunctions.
82180A extended functions module
This expansion provided highly sought-after capabilities such as customizable key assignments and memory reorganization. Crucially, it enabled management of memory beyond the HP-41C’s primary 319 registers by implementing bank switching to access up to 1024 registers. Extended memory was organized into named files containing programs or data that could be transferred into main memory for execution.
Additionally, it supported ASCII file handling with a simple text editor. The module included 124 extended memory registers; further capacity required supplementary Extended Memory modules. This module was standard in the HP-41CX model.
82181A extended memory module
Designed to increase extended memory capacity on the HP-41C, these modules necessitated either the Extended Functions module or an HP-41CX. Each unit added 238 registers; installing two provided up to 600 extended registers. Alongside the 319 main registers, this utilized nearly all of the calculator’s 1024 addressable registers—amounting to a total of 919 registers or 6,433 bytes.
HP82160A HP interface loop (HP-IL) module
Refer to the dedicated article on HP-IL for detailed information.
DM41 series
The lasting appeal of the HP-41CX inspired SwissMicros to introduce the DM41 in 2015—a compact calculator approximately credit-card sized (88×59×7 mm). It operates on original HP-41CX firmware enhanced with expanded memory and a real-time clock, powered by an ARM Cortex-M0-based NXP LPC1115 processor. Differing from the original design, it adopts a landscape orientation reminiscent of Hewlett-Packard's HP Voyager series, features a dot-matrix display, adjustable CPU speeds, and includes a USB Mini-B serial port managed by a Silicon Labs CP2102 chip for data transfer, backups, PC interfacing, and firmware upgrades.
In December 2015, SwissMicros launched the DM41L, maintaining a size comparable to Voyager calculators and equipped with USB connectivity. Since September 2020, their successor model DM41X offers improved functionality and closely mirrors the classic HP-41CX appearance.
HP41CL
Distinct from software-based HP-41 emulators, the HP41CL is a tangible hardware replica of the HP-41 series' CPU board, engineered by Monte Dalrymple at Systemyde. This device represents a full redesign of the original HP-41 CPU board, realized on an FPGA platform and described using Verilog RTL. The HP41CL functions as a direct hardware substitute compatible with existing HP-41 CPU boards.
This advanced model features over 600 extended memory registers and supports more than 320 plug-in module images, made possible through over 1024 pages of 4K-word flash memory—of which more than 500 pages come preloaded with HP-41 software—and 128 RAM pages accessible via a specialized MMU. Its "NEWT" CPU architecture includes a "turbo" mode that boosts processing speed by roughly fifty times. Full backward compatibility with the HP-41 bus is preserved, allowing use with most original plug-in modules.
Systemyde also offers an HP-41-compatible timer module clone and a GPS interface module. Furthermore, an optional RS-232 full-duplex serial port (utilizing a 2.5mm stereo jack) can be installed in an available module slot.
Emulators
Although production ceased in 1989, the HP-41 series continues to enjoy a devoted following more than three decades later. Emulator software is accessible across numerous platforms, including Windows, Mac OS, various Unix systems, Pocket PC, Palm OS, Apple iOS, and Android devices.
See also
Further reading
- HP-41C Operating Manual - A Guide for the Experienced User, Hewlett-Packard Company, June 1980
- Ken Emery, HP-41 MCode for Beginners, Synthetix, 1985
- Włodzimierz Mier-Jędrzejowicz, Extend Your HP-41, Synthetix, 1986
- Burkhard Oerttel et al., Eine Programmsammlung für den HP-41 (A Program Collection for the HP-41), Heldermann Verlag, 2014 (originally 1989, German)
- William C. Wickes, Synthetic Programming on the HP-41C, Larken Publications, 1980
External links
- SwissMicros DM41X and DM41L – contemporary calculators inspired by the HP-41
- HP-41CL – enhanced modified version featuring 50x speed and integrated support for 120 modules
- The Museum of HP Calculators' overview of the HP-41 series
- hp41.org – dedicated site focused on the HP-41 calculator line
- HP41 Forum – user community discussions related to HP-41 calculators
- i41CX+ – emulator for iPhone and iPod touch replicating the HP-41CX
- a41CV – Android-based simulator for the HP-41CV model
- HP-41C, HP-41CV, and HP-41CX on MyCalcDB – vintage calculator database
- Page of an HP-41CX user – includes images, documentation, and information on printer and card reader peripherals
- C++ Source-code project – Linux/Qt simulator derived from nsim NUT Core by Eric Smith
- clonix41.org – website offering enhancements for the HP-41 series