A standard HP-12C as designed and manufactured by Hewlett-Packard provides up to 99 program steps, and up to 20 user data registers, but not the maximum of those both simultaneously. If you enter a program of more than 8 steps, you start losing one data register for every seven program steps. This is because the original HP-12C had only 40 hardware data registers (hardware addresses 0x00..0x07 and 0xe0..0xff), which had to include the user program, user data registers, financial registers, stack, LastX, and internal working registers.
On simulators, or on modern hardware that uses an ARM microcontroller to simulate the original HP Nut processor, it's possible to use additional memory that was not provided by the original hardware. The patch presented below uses this capability, with hardware registers at addresses 0xd0 through 0xdc, to eliminate the tradeoff between program steps and data registers. With this patch, 20 data registers are always available, regardless of the number of program steps used.
This patch works with the stock HP 12C Nut microcode. It is unknown whether it will work with any other patched 12C microcode, which might be present in modern physical calculators or simulators.
The patched 12C firmware can be identified by the keyboard test; at the end of the test, when the calculator model number is displayed, the display will read "12E" rather than "12".
The patch is being provided for testing. It may contain errors which could cause loss of data.
This patch is the copyrighted property of Eric Smith, and is not licensed for commercial use. For commercial use, please contact the author to negotiate a license.
Copyright 2025 Eric Smith <spacewar@gmail.com>
SPDX-License-Identifier: CC-BY-NC-SA-4.0
License: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
Patch version 1, 2025-03-13:
address | original data | new data |
---|---|---|
0d81 | 01c | 05c |
0d82 | 102 | 090 |
0d83 | 190 | 010 |
0d84 | 21a | 000 |
0d85 | 23a | 000 |
0e22 | 162 | 1a2 |
0e23 | 3b8 | 03b |
0e24 | 3c6 | 050 |
0e25 | 276 | 090 |
0e26 | 3c6 | 390 |
0e27 | 30a | 3e0 |
1361 | 11c | 25c |
1362 | 050 | 091 |
1363 | 090 | 038 |
13a4 | 361 | 0f5 |
13a5 | 03c | 058 |
163a | 361 | 0f5 |
163b | 03c | 058 |
163c | 359 | 053 |
163d | 040 | 361 |
163e | 3c6 | 03c |
163f | 276 | 130 |
1640 | 3c6 | 0d0 |
1641 | 01b | 37d |
1642 | 229 | 03e |
1644 | 262 | 000 |
1645 | 3eb | 000 |
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Copyright 2025 Eric Smith <spacewar@gmail.com>
Last updated 2025-03-13