HP25c Calculator Emulator for the BlackBerry Storm


HP25 Screenshot
There is a very nice Java simulation of the Hewlett-Packard HP25 calculator at the online Museum of HP Calculators. Doug Braun did an excellent job porting it to the BlackBerry Storm, but sadly got a new cell phone – a Droid X – so he is no longer planning any more Blackberry software development. I decided to take it over, because, like him, it seemed like a fun thing to do ... and let's face it, the calculator that comes with the Storm is horrible.

Click on the screen shot to download the application directly to your Storm.

The changes that have been incorporated so far are:

  • Continuous Memory:  The calculator retains the stack data, register data, program memory, angle mode and display format between application invocations (making it an HP25C).
  • New User Interface:  A more realistic looking bitmap is used to create the calculator keyboard, replacing the "drawn" keyboard of Doug Braun's original HP25 Blackberry application.
  • Prefix Key Highlighting:  When either the f or g prefix key is pressed, a highlight is applied to indicate that the prefix is active.
  • Floating Point Display:  The decimal point () will select floating point display precision when used with the FIX / SCI / ENG display formatting commands.
  • Added Functionality:  The factorial function x ! replaces the "extra" NOP function of (gΣ+).
  • Program Step Insertion/Deletion:  Program instructions can be inserted and deleted via the INS (gSST) and DEL (gBST) keys. When an instruction is inserted or deleted, all GTO targets are automatically adjusted (incremented or decremented).
  • Increased Memory Space:  Since memory is a bit cheaper than it was in 1975, the number of data registers has been increased from 8 to 20 and the maximum number of program steps has been increased from 49 to 99. Registers R0–R9 are arithmetic registers that support full math storage operations with the four arithmetic operator prefixes (+/−/×/÷). Registers R.0–R.9 are scratchpad registers that only provide the basic STO  n or RCL  n operations.
  • Register/Program Data Display:  In RUN mode, the menu item Display register data will display the stack and register values; in PRGM mode, the menu item List program will display the program opcodes and disassembled code. The program listing filters ranges of GTO 00 (program fill) statements for better readability.
  • Application Exit:  Setting the power switch to the OFF position closes the application.

Possible changes in future versions:

  • Program Library:  Add the ability to save or recall the programming memory, so the user can create a library of stored programs.
  • Linear Regression:  Add the ability to perform linear regression and compute the correlation coefficient, like the HP32E. There are some compatability issues with the HP25C if this feature were to be added. For example, the HP25C computes n, Σx, Σx², Σy, and Σxy when Σ+ is pressed; the computation for Σy² would need to be added to compute the correlation coefficient. It would therefore make sense to move the statistical summations from registers R3–R7 to the scratchpad registers R.0–R.5 to provide a clean split between the statistic and "normal" registers and accomodate the extra register needed for the additional summation (again, like the HP32E and the HP29C).

Notes:

  • The original calculator photo used to display the HP25 keyboard is currently disabled. It probably will not be re-enabled, since the new bitmap keyboard is much easier to read.
  • A quick reference guide for the calculator is available here.

Screen Captures:

HP25c screenshot

Prefix Key Highlighting

HP25c screenshot

Register Data Display

HP25c screenshot

Program Listing and Disassembly

Release History:

Date Feature (see above)
12-17-2010
  • Continuous Memory
  • New User Interface
  • Prefix Key Highlighting
  • Program Step Insertion/Deletion
  • Increased Memory Space (10 registers, 99 program steps)
  • Register/Program Data Display
  • Application Exit
12-24-2010
  • Floating Point Display
  • Added Functionality
01-10-2011
  • Increased Memory Space (increased to 20 registers)
  • Continuous Memory (new internal saved data format)