HP-41CX
| Industry | Electronics, Computer hardware, Calculators |
|---|---|
| Founded | January 1, 1939 |
| Founder | Bill Hewlett, Dave Packard |
| Headquarters | Palo Alto, California , United States |
| Products | HP-41C series calculators |
The HP-41C series 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 the first handheld calculator to offer an alphanumeric display. Later versions, the HP-41CV and HP-41CX, enhanced both memory capacity and capabilities to address evolving user requirements.
The alphanumeric "revolution"
The introduction of the HP-41C's alphanumeric liquid crystal display marked a significant shift in user experience by allowing detailed error notifications (such as "DATA ERROR") and clear prompts (like "ENTER RADIUS"), greatly improving interaction compared to calculators limited to numeric displays.
Earlier devices demanded complex key sequences for accessing functions; for instance, the HP-67 utilized three separate shift keys, while competitors such as Texas Instruments implemented multiple shift keys combined with intricate code systems. The HP-41C simplified this approach by employing a compact keyboard with a single shift key, enabling access to hundreds of functions through the ("execute") key by fully spelling out commands (e.g., FACT for factorial).
Users could personalize key assignments via a dedicated user mode, supported by blank keyboard overlays for easy labeling. Hewlett-Packard even offered a special edition with minimal printed labels—internally called "Blanknut"—aimed at users who preferred custom programming.
Alphanumeric displays also made programming more intuitive by showing function names instead of numeric codes, thereby lowering the barrier to learning and easing program editing compared to prior models where memorization of function codes was necessary.
The HP-41C utilized a fourteen-segment LCD capable of displaying uppercase letters, numbers, and selected punctuation while consuming minimal power, differing from the common LED displays of the time. Although some characters required compromises in design—such as differentiating S from 5—this represented a notable improvement in calculator interfaces. Subsequently, competitors like Sharp adopted dot matrix technology for clearer character rendering, which HP later incorporated into devices like the HP-71B handheld computer.
The HP-41CV and CX
Many users occupied all four available expansion ports with memory modules, leaving no slots for additional add-ons. To resolve this, HP introduced the Quad Memory Module, which quadrupled memory capacity and freed up three expansion slots. The HP-41CV (with "V" signifying 5) integrated this module onto the motherboard, providing five times the memory of the original HP-41C along with four available ports.
Due to internal design constraints preventing further direct memory expansion, HP developed an extended memory module serving as secondary storage. This secondary memory was not directly accessible but allowed data transfer between it and main memory, functioning similarly to file management on contemporary personal computers.
The last model in the series, the HP-41CX, debuted in 1983 and remained in production until 1990. It combined extended memory capabilities with a built-in time module and offered advanced functionalities.
Programming
The HP-41C supports keystroke programmable functionality, enabling users to record sequences of keystrokes for solving specific tasks. Its programming features include conditional and unconditional branching as well as looping constructs to handle repetitive operations and decision-making processes.
With support for indirect addressing (computed goto), the HP-41C’s programming environment is Turing complete, allowing sophisticated logic implementations but often resulting in complex and tangled code structures commonly known as spaghetti code.
Program instructions are numbered starting at 1; however, these numbers adjust dynamically as commands are inserted or deleted. A unique LBL instruction defines labels used either to call programs or serve as destinations for GTO (goto) or XEQ (execute) commands.
Sample program
This example calculates the factorial of an integer ranging from 1 to 69, constrained by the calculator's maximum exponent limit of 99. The input value is held in the X register. The routine uses two registers, occupying roughly 14 bytes.
Step Instruction Explanation
01 LBL'Fac Defines a global label accessible via 'XEQ Fac' 02 STO 00 Saves the input number into register 00 03 1 Places the value 1 into the X register; Y retains input but remains unused 04 LBL 00 Sets a local label to mark the loop start 05 RCL 00 Retrieves the value from register 00 back into X, adjusting the stack accordingly 06 * Multiplies X by Y, updating the factorial calculation 07 DSE 00 Decrements register 00 and skips the next instruction if zero 08 GTO 00 Jumps back to local label to continue looping 09 END Program termination; final factorial result appears in X
FOCAL language
The HP-41 series incorporated an iteration of the keystroke programming language from earlier Hewlett-Packard calculators. However, its enhanced capabilities—including keyboard overlays, fully programmable keys, input/output for program transfer, and alphanumeric display support—prompted users to suggest a new designation: "FOCAL" (Forty One Calculator Language). Since Digital Equipment Corporation already used this term, HP never officially adopted it.
Synthetic programming
A dedicated user base emerged around the HP-41C, creating software such as codebreaking games and a version of Hunt the Wumpus, developing expansion hardware modules, and exploring processor overclocking. The PPC club, led by Richard J. Nelson, organized these activities, publishing the PPC Journal and assembling the PPC ROM—a set of finely tuned low-level routines.
Users uncovered that certain FOCAL commands were stored using multiple bytes, allowing them to exploit a flaw in the program editor to assign unconventional operations to keys. This technique, known as synthetic programming, enabled partial modification of instructions through utilities like the byte jumper or byte grabber.
Synthetic programming unlocked access to memory regions and system flags typically reserved for the operating system, permitting advanced features such as sound generation, custom character creation, and animations beyond official capabilities. It also offered streamlined low-level Boolean logic programming options. Although Hewlett-Packard did not officially endorse synthetic programming, it tolerated the practice and eventually provided internal documentation to user groups.
Critical response
In its December 1980 issue, BYTE described the HP-41C as "the most versatile machine ever," commending Hewlett-Packard's documentation as "among the best in the industry" and emphasizing that it was "much easier to program and debug" compared to rivals like the TI-59. The alphanumeric display significantly improved user interaction, elevating it close to pocket computer functionality.
The magazine’s subsequent issue noted its near-computer programmability and lauded its dependable card reader along with compatibility with HP-67 and HP-97 software titles. Nevertheless, it pointed out calculation errors stemming from limited precision—specifically, the absence of guard digits—resulting in accuracy limited to seven or eight decimal digits. Hewlett-Packard explained this was an inherent constraint of finite-precision arithmetic in computing devices.
Use on the Space Shuttle
An HP-41C calculator that participated in nine initial Space Shuttle flights is exhibited at the National Air and Space Museum in Washington, D.C. Adaptations included Velcro attachments, an early version of a timekeeping module, an enhanced beeper for louder alerts, and the removal of components susceptible to outgassing. These devices were vital for computations such as recalculating the center of gravity as fuel was consumed. Additionally, they were programmed to manage critical procedures like ignition timing during re-entry if the primary computer failed.
Expandability
The HP-41 offered expandable functionality through up to four modules mounted on top, encompassing memory enhancements and pre-installed solution packs tailored for disciplines like engineering, surveying, physics, mathematics, finance, and gaming. This modular design enabled customization aligned with professional requirements. Hardware add-ons included a thermal printer, a magnetic card reader compatible with the HP-67 (via an adapter), and a barcode scanner.
Expansion modules introduced new instructions that addressed gaps in the default feature set—such as capabilities for integration, root-finding, matrix operations, and complex number calculations—accessible through these additional units.
The Interface Loop module facilitated peripheral connections including larger printers, microcassette recorders, 3-inch floppy disk drives, RS-232 interfaces, and video output devices. It also supported compatibility with HP’s HP-71B, HP-75, and HP-110 computer models.
HP-41 expansion modules enabled users to broaden the calculator’s functionality by installing up to four modules at the rear. Although other calculators like the TI-58 and TI-59 had pluggable ROM modules, the HP-41’s system was recognized for its superior flexibility.
Memory modules (HP-41C only)
Memory expansion modules boosted RAM capacity to accommodate more programming instructions and data registers. The initial HP-41C model contained 63 registers of 7 bytes each—capable of storing a number, a six-character string, or up to seven program steps written in the FOCAL language.
Each expansion added 64 registers; filling all four slots increased total memory to 319 registers (approximately 2 KB). To maximize slot efficiency, certain user groups combined two memory chips within one module. Subsequently, HP released the Quad Memory Module, which integrated four expansions into a single slot; this configuration was standard on the later HP-41CV variant.
Application pacs
ROM-based application 'pac' modules provided up to 4 kilobytes of read-only memory—some units contained two independent 4K ROMs totaling 8 kilobytes. These modules typically housed dozens of programs developed in the HP-41C's FOCAL programming language.
Programs stored in ROM modules could be executed from user-written programs via the XEQ command; within code, these calls appeared as "XROM" when invoking ROM-based routines.
82104A card reader
The card reader accessory allowed reading from and writing to small plastic cards embedded with two magnetic strips. This enabled users to transfer memory contents onto cards for backup or restoration purposes.
Given that the HP-41C featured non-volatile memory—retaining programs and data without power—the card reader was optional. Each card contained two strips of 112 bytes each, capable of storing 16 data registers or up to 112 program steps. Typical applications required five or more cards; backing up all 319 memory registers plus internal data demanded 11 cards (each needing to be swiped twice).
The reader was also compatible with magnetic cards from the earlier HP-67 model. Since both calculators shared a similar programming model and stack operations, HP-67 programs were translated into HP-41C instructions. Some unique HP-67 commands were emulated through additional instructions provided by the reader.
Cards could be write-protected and designated as private to prevent source code visibility upon loading—facilitating secure program distribution. However, operation of the reader’s electric motor significantly drained battery life, and the cost of blank cards represented a considerable expense for users.
82182A Time Module
The time module incorporated a real-time clock, allowing programs to utilize actual time values. Users could program alarms to activate specific routines or even power on the calculator itself, facilitating timed program execution while conserving energy through standby intervals.
Primarily employed in laboratory data acquisition, it enabled automatic measurements at predetermined moments without requiring constant power. The HP-41CX model came equipped with this time module as a standard feature.
82143A Thermal Printer/Plotter
This printer utilized thermal paper rolls capable of producing lines containing up to 24 characters. The printed output exhibited a bluish tint but was prone to fading or color changes when exposed to excessive heat.
It offered basic graphic functionality, including the ability to create custom characters and manipulate individual pixels. However, limitations in buffer memory prevented full-line graphic printing and variable line spacing, restricting continuous horizontal graphics. Nonetheless, it provided utilities for vertical graph plotting on its narrow paper medium.
82242A Infrared Printer Interface
Designed to connect thermal printers wirelessly via infrared communication, this interface supports models such as the HP 82240A and HP 82240B. While enabling cordless printing, the associated printer requires battery power to operate.
82153A Optical Wand
The optical wand is a pen-shaped barcode scanner intended for reading HP-standard barcodes directly into calculator memory. These barcodes, typically found in HP solution manuals, could encode programs, constants, or sequences of keystrokes—allowing calculator operation without manual keyboard input and assisting in diagnosing keyboard issues.
82180A Extended Functions Module
This module introduced much-requested features including programmable key mapping and flexible memory allocation. Its principal advancement was the management of extended memory: although the HP-41C could address up to 1024 registers, its primary memory was limited to 319 registers. The module allowed additional memory banks to be handled as named files for programs or data, which could be swapped between extended and main memory for accessibility.
It also supported ASCII file handling and incorporated a simple text editor. Containing 124 registers of extended memory internally, further expansion was possible through additional Extended Memory modules. The HP-41CX model included this module by default.
82181A Extended Memory Module
These modules provided further memory expansion but required either the extended functions module or an HP-41CX calculator to function. Each module added 238 registers; up to two could be installed simultaneously, yielding a total of approximately 600 extended registers alongside the 319 main memory registers—almost fully utilizing the device’s maximum of 1024 addressable registers (equivalent to 6433 bytes).
HP82160A HP Interface Loop (HP-IL) Module
Refer to the primary article on HP-IL for detailed information.
DM41 Series
Responding to ongoing interest in the HP-41CX, SwissMicros released the compact DM41 in 2015—measuring approximately 88 mm × 59 mm × 7 mm, comparable in size to a credit card. It emulates the original firmware with added extended memory and real-time clock functionality on an ARM Cortex-M0 NXP LPC1115 processor. Unlike the classic model, it features a landscape-oriented layout reminiscent of Hewlett-Packard's HP Voyager series, a dot-matrix display, selectable processor speeds, and a USB Mini-B serial interface (powered by a Silicon Labs CP2102 chip) for PC connectivity supporting data transfer, backups, application interaction, and firmware upgrades.
In December 2015, SwissMicros introduced the DM41L, which shares dimensions similar to Voyager series calculators while maintaining USB connectivity. Since September 2020, the DM41X has been available with enhanced capabilities and a traditional design closely resembling the original HP-41CX.
HP41CL
The HP41CL represents a hardware clone and CPU upgrade board designed for the HP-41 series, created by Monte Dalrymple of Systemyde. This upgrade involves a complete reengineering of the original HP-41 CPU board, utilizing an FPGA configured through Verilog at the RTL. It serves as a direct replacement compatible with existing HP-41 CPU boards.
This enhanced board delivers substantial improvements in both speed and memory capacity, providing access to over 600 extended memory registers and support for more than 320 plug-in module images. It contains upwards of 1024 pages of 4K-word flash memory, with 500 pages pre-installed with HP-41 software, alongside 128 RAM pages managed via a proprietary MMU. The innovative "NEWT" CPU architecture introduces a "turbo" mode that accelerates computation speeds by roughly fiftyfold.
Full compatibility with the HP-41 bus is preserved, ensuring that the majority of original plug-in modules remain functional. Systemyde also offers compatible peripherals such as a timer module replica and a GPS receiver interface. Additionally, an optional RS-232 full-duplex serial port is available, utilizing a 2.5mm stereo jack and occupying one module slot.
Emulators
Although production ceased in 1989, the HP-41 series continues to enjoy a passionate user community more than three decades later. As a result, emulator applications have been developed for various platforms including Windows, Mac OS, different Unix systems, Pocket PC, Palm OS, Apple iOS, and Android.
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 "Włodek" Anthony Christopher 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, Berlin, 2014 (originally 1989, in German)
- William C. Wickes, Synthetic Programming on the HP-41C, Larken Publications, 1980
External links
- SwissMicros DM41X and DM41L – contemporary calculators compatible with the HP-41
- HP-41CL – advanced modification offering 50 times faster processing and integrated modules
- The Museum of HP Calculators' article on the HP-41 series
- hp41.org – specialized website dedicated to the HP-41
- HP41 Forum
- i41CX+ – iPhone and iPod touch emulator for the HP-41CX
- a41CV – Android-based HP-41CV simulator
- HP-41C, HP-41CV, HP-41CX on MyCalcDB – vintage calculator database
- Page of an HP-41CX user – includes photos, documentation, printer and card reader details
- C++ Source-code project – Linux/Qt simulator based on nsim NUT Core technology
- clonix41.org – site offering enhancements for the HP-41 series