HP Calculator Memory Sizes

In 1972, Hewlett-Packard introduced the HP-35, the world's first handheld scientific calculator, designed by the Advanced Products Division in Cupertino, California. Since then, advances in technology have made scientific calculators commonplace. Yet anyone studying the design of the HP-35 will be awed by the extraordinary accomplishment of its creators.

Because of Moore's Law, most of today's engineers do not have to concern themselves over carefully minimizing the number of transistors in a new chip design, or the amount of memory consumed by software. But in 1972, HP engineers knew that the customer was going to have to pay for every transistor and every bit of memory in the product, and did an incredible job of conserving both. By developing a specialized processor architecture designed specifically for calculators, they were able to pack the firmware implementing all of the functions of the HP-35, including logarithmic, exponential, and trigonometric functions, into only 7680 bits of ROM.

Over the following ten years, many more calculators were designed by APD and Corvallis Division based on essentially the same architecture originally embodied in the HP-35. Incremental improvements in the architecture were made to enhance the capabilites they could provide, most notably in the HP-41C family.

This document gives the memory sizes for the first four generations of HP handheld calculators, related desktop calculators, and a watch. Other desktop calculators were designed by Loveland Division, but are not included here as they are based on entirely different processor architectures.

Most memory size information on this page was determined by the author through reverse-engineering. The listed ROM sizes for the HP-01, HP-10, HP-19C, HP-27, HP-80, HP-91, and HP-92 are from the article "Microcode: Electronic Building Blocks For Calculators" from the Hewlett Packard Personal Calculator Digest, Vol. 3, pp. 4-6, 1977. An online copy of that article may be found on Rick Furr's The Calculator Reference web site.

The ROM sizes are counts of Kwords (10-bit ROM words), except for the Saturn-based models, for which it is listed in KBytes.

The RAM sizes are counts of 56-bit RAM registers, except for the Saturn-based models, for which it is listed in Bytes or KBytes. These sizes do not include the registers built into the CPU chip. Note that some of the registers are used for internal operation, so the count does not necessarily exactly match the register count given in user documentation. Some models such as the HP-32E, HP-33C, and HP-37E have hardware with many more registers than are actually used.

For more model-specific information, please refer to the Museum of HP Calculators.

Generation Series Model ROM size
(Kwords, 10 bit words)
RAM size
(56-bit registers)
First Classic HP-35 0.75 0
HP-45 2 10
HP-55 3 30
HP-65 3 10
HP-70 2 10
HP-80 1.75 or 2 [1] 0
Classic
(desktop printing)
HP-46 2.25 10
HP-81 6 20
HP-9805 20 [2]
1.5 Cricket HP-01 2
Second Woodstock HP-21 1 0
HP-22 2 16
HP-25 2 16
HP-25C 2 16
HP-27 3 16
HP-29C 4 48
HP-67 5 64
handheld printing HP-10 1.5 0
HP-19C 5 48
Topcat
(desktop printing)
HP-91 3 16
HP-92 6 48
HP-95C 5 48
HP-97 6 64
Third Spice HP-31E 2
HP-32E 3.5 32
HP-33E 4 32
HP-33C 4 32
HP-34C 7 [3] 64
HP-37E 2.5 48
HP-38E 5 [4]
HP-38C 5 [4]
Fourth (Nut) Coconut HP-41C 12 80 [5] [6] [7]
HP-41CV 12 336 [6] [7]
HP-41CX 24 [8] 463 [7]
Voyager HP-10C 6 (4 used) 40 (17 used)
HP-11C 6 40
HP-12C 6 40
HP-15C 12 [9] 82
HP-16C 6 40
Fifth (Saturn) Clamshell I (1LK7) HP-18C 64KB 2KB
HP-28C 128KB 2KB
Clamshell II (two Lewis) HP-19B 128KB 8KB
HP-19BII 128KB 8KB
HP-28S 128KB 32KB
Pioneer seven-segment (Bert) HP-10B 10KB 256B
HP-20S 10KB 256B
HP-21S 10KB 256B
Pioneer character (Sacajawea) HP-14B 16KB 512B
HP-22S 16KB 512B
HP-32S 16KB 512B
HP-32SII 16KB 512B
Pioneer dot matrix (Lewis) HP-17B English 64KB 8KB
HP-17B International 96KB 8KB
HP-17BII English 64KB 8KB
HP-17BII International 96KB 8KB
HP-27S 64KB 8KB
HP-42S 64KB 8KB (can be expanded to 32KB)
graphing (Clarke) HP-48S 256KB 32KB
HP-48SX 256KB 32KB
graphing (Yorke) HP 38G 512KB 32KB
HP 39G 1024KB 256KB
HP 40G 1024KB 256KB
HP 48G 512KB 32KB
HP 48G+ 512KB 128KB
HP 48GX 512KB 128KB
HP 49G 2MB flash 512KB
Sixth (ARM) Apple HP 39g+
HP 39gs
HP 40gs
HP 48gII
HP 49g+ 2MB flash 512KB
HP 50g
Misc HP 6S
HP 6S Solar
HP 9G OEM'd Kinpo SG1/Citizen SRP325P, Sunplus SPLB30A microcontroller
HP 9S OEM'd Kinpo SG2/Citizen SRP400G, KI1724A microcontroller, 22KB ROM, 128 bytes RAM
HP 10BII Hitachi H8 microcontroller
HP 12C Platinum Sunplus SPLB20D microcontroller
HP 17BII+ Sunplus microcontroller
HP 30S Sunplus microcontroller
HP 33S Sunplus SPLB31A microcontroller
Atmel AT91SAM7L128
ARM microcontroller
HP-10bII+ 128KB
can be flashed using OLD 6-pin USB-to-serial pogo cable
2KB (additional 4KB not battery-backed)
HP-12C (2008-2015)
HP-15C LE
HP 20b
HP 30b
Atmel ATSAM4LC2CA
ARM microcontroller
HP-10bII+ 128KB
can be flashed using NEW 6-pin USB-only pogo cable
32KB
HP-12C (2015-)
HP-15C CE

Footnotes:

[1]: The ROM size of the HP-80 was listed as 1.75K in the article "A Pocket-Sized Answer Machine for Business and Finance" in the Hewlett-Packard Journal, May 1973. It was listed as 2K in the article "Microcode: Electronic Building Blocks For Calculators" from Hewlett Packard Personal Calculator Digest, Vol. 3, pp. 4-6, 1977. U.S. Patent 3,863,060 contains a ROM source code listing that is only 1.75K. However, the listing in the patent is probably not the final ROM code.

Mark Sims reports that late production HP-80 units contain two of the quad ROMs (1818-0076, 1818-0077) rather than the seven-chip hybrid (1813-0024). This would be 2K of ROM. He also says that there were bugs fixed in later units, although he does not know whether this was coincident with the switch to quad ROMs. It is possible that bug fixes would have increased the code size to more than 1.75K.

[2]: The expanded statistics option for the HP-9805 adds an additional 30 RAM registers, for a total of 50.

[3]: The HP-34C has two ROM banks in each of the address ranges 1K to 2K, 2K to 3K, and 3K to 4K.

[4]: The HP-38E and HP-38C have two ROM banks in the address range 1K through 2K.

[5]: HP 82106A Memory Modules can be used to add additional RAM registers to the HP-41C. Each HP 82106A provides 64 registers. Alternatively, the HP 82170A Quad Memory Module provides 256 additional registers. Only one Quad Memory module may be used, and it may not be used in combination with the HP 82106A.

[6]: The HP 82180A Extended Function Module adds 127 RAM registers to the HP-41C or HP-41CV. These registers are normally only accessible by the use of the extended functions in the module. The equivalent of the Extended Function Module is built into the HP-41CX.

[7]: One or two HP 82181A Extended Memory Modules may be used on the HP-41C, HP-41CV, or HP-41CX. Each Extended Memory Module adds 239 registers which are accessible using the extended functions.

[8]: The HP-41CX contains 24K of ROM. However, 8K is bankswitched, so only 20K is mapped at any given time. The address ranges are 0K through 12K, 16K through 20K (time module functions), and 20K through 24K (two banks, extended functions and extended time).

[9]: The HP-15C contains two "R2D2" (ROM/RAM/Display Driver) chips each containing 6K*10 of ROM. However, each is addressed as the first 6K words of an 8K region. Thus the address ranges used are 0K through 6K and 8K through 14K.


Last updated November 23, 2023

Copyright 2004-2023 Eric Smith

spacewar@gmail.com

hacker emblem
Best Viewed With Any Browser Valid HTML 4.01! Valid CSS!

check now

check now