The new HP-12c offers a number of ways to get into the embedded firmware of the calculator. Our project proposes to use these “back doors” to explore the calculator, modify the firmware and potentially use the base calculator as a launching platform for custom operational versions. In other words, we'd like to take the HP-12c and reprogram it to do other things, including, potentially, emulating other HP calculators. This calculator features the same Voyager shape and form factor as older HP-12c/15c/16c models, but with a dramatically faster ARM processor.
Last update: 27-Apr-2009
This project was initiated from discussions on the HP Museum Forums after several of the new ARM variant HP-12c's were spotted in the wild. Like the HP-20b Repurposing Project, we hope to extend the capabilities of this new option from Hewlett-Packard.
This wiki was created on 27-Apr-2009 as a way to organize an information repository to share information about this calculator.
Currently, the group is exploring the calculator hardware and documenting its internal operation.
Although the 12C+ uses the same chip as the HP-20b and HP-30b, the main board does not offer any interface options nor even a place to add a crystal. Here are pictures of the board and inside of the back of the calculator:
The serial cable, available from HP, connects easily to the serial port in the battery compartment and allows for re-flashing of memory but not downloading of the existing code as it is protected. The SDK as supplied by HP does not included a copy of the ROM image so unless you obtain a copy of the image from HP re-purposing the 12C+ is a one-way deal, you're going to lose the original functionality.
The SDK comes with an emulator written in C++ under Microsoft Visual Studio and requires at least the standard version of Visual Studio to run – the Express version does no contain certain needed DLL's. However you don't need the emulator to develop you can code in C++ IAR Embedded Workbench IDE which is available for free as the Kickstart version. This version has all the functionality needed for development but is limited to a 32K ROM space – more than enough for most projects I should think. You also need to download the free ATMEL SAM-BA version 2.6 program to interface your PC to the calculator via the serial cable. Without running the emulator you need to use the somewhat slow: code –> download –> test cycle but this really isn't too bad once you get the hang of it.
The SDK also comes with a toy 4-function integer calculator program that gives you a starting point to learn the C++ code needed to control the calculator. It's pretty straightforward but there isn't much in the way of documentation so it does take some time to get to know your way around code.
Since the functionality of the board is limited, you have 101 LCD segments (although the control code says there are 104 segments – I think 3 are non-existent) and 39 to play with. I think it's also possible to make use of the serial port but I haven't tried this.