A full HP 41 CX emulator for android.

  • Full memory and X memory.
  • Timer functionnal, but accuracy not well tested (AF is not emulated).
  • Automatic save and load of state.
  • Manage States, Raws, Modules, Overlays, Xmems
  • exchange with 'import/export' with the 'Download' directory of your SD card.
  • Use MOD modules format and RAW programs format.
  • 'ON' only active on 'longtouch' to avoid mistakes.
  • Master clear supported (use 'press back' menu when calculator is off then press 'ON', then press 'back' to release it).
  • helios printer support
  • hepax support
  • 41CX or CV (time and x-functions possible)
  • from x1 up to 'max' speed (around x50 with a 700 MHz phone)
  • added partial card reader support (only 67 compatibility functions 7... see http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/archv006.cgi?read=10774)
There is a major bug with android 4.4.2: see 

It seems that google changed some behavior related to a REAL external SD card plugged in a device.
Now a non google app can not write on it (so the bug you see)
On My nexus 7 as the 'external SD' is in fact a part of the internal flash, the apps still works.
I don't have any 4.4.2 device with a real sd slot to test. So all you can do is :
1 - root your device to gain back the previous behavior.
2 - see if you can redirect the goxx apps on the 'internal' sd ??
3 - avoid upgrading to 4.4.2 if you can.

I need to rethink the WHOLE behavior of import/export an a majority of goXX apps.
I am sorry for this problems, but they are related to google decisions ??
I will try to find a new way to do import/export ... DONE 

For 1.6.4 release I made the following changes :
On kitkat device, import/export directory is now /Android/data/o2s.emul.hp41cx/files/... instead of /go41cx/... on the sdcard. 
For android older then kitkat, nothing change.

You can download modules from Warren Furlow's site (modules and manuals).
then put .MOD file in your 'download' directory on your external storage area in your device.

For a quick test, download the 'MATH.MOD' below then use 'Import modules', then choose a port and choose the module. It must appear in 'CAT 2' function.

If you have difficulties to use this emulator, please tell me which device you have and which resolution is your screen.

If the lcd stay 'blank' and you have an android 4 device, please try to deactivate 'hardware acceleration' for the display (see in your preferences/development on your device).

You can try the go41c to test your device (and screen size).

If you have trouble, try to stop the application from 'parameters/application' adroid menu and restart it.

In last ressort, try to 'remove data' from 'Application management' tool.

Raws examples : http://www.hp41.org/raw
Modules : http://www.hp41.org/mod

Manuals for HEPAX, CCD & others modules : http://www.hp41.org/ or buy the manuals on CD/DVD at http://www.hpmuseum.org/cd/cddesc.htm

Sixth release: v1.5.7

- rom patched for lowercase lcd display (see : MoHPC article from J.F Garnier)
- library#4 from A. Martin support (see: search for Library #4)

- all import/export now use '/go41cx/...' directory instead of '/Download'.
- haptic feedback added (activate it in your device).
- short manual to explain all the behaviour (see at the bottom).
- new basic skin (like the first release).
- some interface changes (new really hard reset).
- to conclude, read the manual ....
- added partial card reader support (only hp67 functions)

Fifth release:

- save state file format changed again, if possible, save your Xmem and Raw before upgrade.
- sound support for TONE and BEEP (even synthetic).
- text overlay came back, file named 'xxx_o.txt', one line per key, use them either with opt001 skin or 'black_o' graphic overlay.
- ADV printer key now working.
- Inline help added (back pictures, flags, base functions, cx extended
functions, printer functions, hepax functions, ccd/osx functions): tap on left side of display then use the buttons on the bottom.

New version of skin&overlay files at the bottom of the page.

Just for fun, I use an old PPC program to compute PI (1160 decimals in 15,5h)
Using this program from hepax memory, I just finished 1560 decimals of pi in 22 minutes (max speed on a slow motorola defy) see files PJ.raw for the program, pivalue.png for output of the program and pilist.png for the listing. 1160 decimals takes 13 minutes (and with the printer active...)

Fourth release:

- save state file format changed again, if possible, save your Xmem and Raw before upgrade.
- full graphic skins (normal and opt-001 given), see files on bottom to create new ones. Choose 'skins' in main menu to change. You can't import your own skins actually, I'll add them if I receive them.
- full graphic overlays (see files on bottom of page to build your own) displayed in 'USER' mode. Press between 'USER' and 'PRGM' as shortcut to 'LOAD Overlay'. Overlays are 'xxx_o.png' files
- added top status line (tap it to switch between 'stack', 'alpha' or 'version' display
- bank switching corrected (hepax should be ok now)
- faster printer switch (anyway be carefull, PRT and ADV are as all HP key, they 'NULL' is pressed more than 1 sec). Printer files are now 'xxx_p.png'

Third release:

- save state file format changed, if possible, save your Xmem and Raw before upgrade.
- fullnut charset added (see it with sandbox module)
- better key input at fast speed (PSE and CAT not patched)
- added a more usefull 'About' display with allocated pages
- helios printer support added (tap on left or right part of display, leave it with 'back')
  • On/Off: turn the printer on/off (reset png save counter to zero)
  • Size: set the length of the paper (default 150 lines, max ... depend of device, around 2000)
  • Refresh: refresh the scrolling part of paper displayed
  • TRACE/NORM/MANUAL: printer mode
  • PRT: PRT key, press briefly (pressed too long, do nothing ??)
  • ADV: ADV key, press briefly (pressed too long, do nothing ??)
  • Save: save paper as png
  • New: remove current paper, put a new one
Printed paper is not saved with state, so when android destroy the application, paper disappear.

- hepax rom/ram support added (up to 4 x 8KW module)
- some change in config tool (tap on middle of the display)

Top line: special modules, does not occupy a port (but still uses some pages)

  • Printer: insert/remove a printer in page 6 but doesn't use a port.
  • Time: insert/remove a time module in page 5 for 41CV mode
  • Hepax: insert/remove a ROM part only Hepax module in page 8 (turn off calc before, rom will be relocated at next turn on)
  • Xfuns: insert/remove a X-function module in a free page for 41CV mode. (Xmem regs are always there)
  • CcdOX: insert/remove a CCD-OSX module in a free page (3 to 7 then 15 downto 8)
Port: now include .hpx files : 8KW image of hepax memory module (16 KB file), still use 'Empty' to remove a module
  • Register view: add a reset option :
    • soft, just halt cpu, press a key to restart.
    • hard, halt cpu, remove ALL modules except system.
  • Hepax view: deals with hepax memory modules
    • Import/export: copy all .hpx file from/to 'Download'.
    • Delete, rename: as usual.
    • New: creta a new empty 8KW module.
  • Xmem: nothing changed.
  • Print: new printer files.
    • Show:  display a saved printer paper.
    • Export/Rename/Delete: as usual.
  • State: nothing new
  • Modules: added a change 41CV <> 41CX (turn off calculator before)
  • Raw: include now the prgram view with 'Save as' menu
    • 'Save as': list programs in memory to save as .raw
    • Infos: display infos (labels & end) of a raw file
  • Overlays: nothing changed

Second release: v1.1

- timer bugs corrected
- new config view (tap on display), press putton to choose then menu to do stuff
  • Access to expansion ports, choose 'Empty' to remove a module.
    • go back to calculator to and came back to refresh state if you want to save the new modules config as a state.
  • Registers view: display internal registers (0x000 to 0x3FF)
    • data: display data regs (0x1FF downto ...)
    • system: show status register in hexadecimal (0x000 to 0x00F)
    • buffers: show registers used as buffer (0x0C0 to ...)
    • program: show registers used as program (from ... to ...)
    • xmem0: show registers in xfunction module (0x040 to 0x0BF)
    • xmem0: show registers in xmemory module 1 (0x201 to 0x2EF)
    • xmem0: show registers in xmemory module 2 (0x301 to 0x3EF)
  • State view: deals with full state saves of go41cx
    • save as: copy the current state (auto.41cx) to a new file
    • export/import copy all .41cx files from/to 'Download' to/from 'internal'.
    • delete an internal state file.
    • rename an internal state file.
  • Module view:
    • import/export copy all .41cx files from/to 'Download' to/from 'internal'.
    • infos gives informations about a module.
    • delete a module file.
  • Raw view:
    • load a raw file into program memory (pack mem before and after load to be safe).
    • import/export copy all .raw files from/to 'Download' to/from 'internal'
    • infos gives informations about a raw file.
    • delete a raw file.
    • rename a raw file.
  • Overlay view: deals with overlays (text files of 70 lines max, each line is a label for a key, 1st line for top left key primary label, 2nd line for its shifted label, ... row after row, 'null' text means keep original label, see example FINANCE.ovl), only active in USER mode. Such files can be edited with 'jorte' android editor.
    • load an overlay file, choose 'Empty' to clean overlay.
    • import/export copy all .ovl files from/to 'Download' to/from 'internal'
    • delete an ovl file.
    • rename an ovl file.
  • Program view: list all program into calculator memory
    • save a program into a raw file.
    • info not done.
  • Xmem view: deals with x-memory
    • save as: copy the current x-memory contents to a new one file
    • export/import copy all .xmem files from/to 'Download' to/from 'internal'.
    • delete an internal xmem file.
    • rename an internal xmem file.

First release: v1.0
  • sound not supported.
  • speed greater than 1 are not patched for 'PAUSE' ...
  • should work with at teast 600x480 screen.
  • only applications modules supported.

Emulator loosely based on Non-Pareil from Eric Smith, font by Luiz C. Vieira.

Some files:
- HR.raw : High Roller game (with score on xmem, create a file 'HRs' of 2 regs with CRFLD)
- MATH.MOD: Math module
- Math01.ovl & Math02.ovl: overlays for MATH module (from Alexander Oestert)

Olivier De Smet,
Feb 7, 2012, 1:40 PM
Olivier De Smet,
Jan 17, 2012, 12:09 AM
Olivier De Smet,
Feb 15, 2012, 1:07 PM
Skins Overlays.zip
Olivier De Smet,
Feb 21, 2012, 1:14 PM
Olivier De Smet,
Jun 3, 2014, 11:22 PM
Olivier De Smet,
Feb 29, 2012, 1:24 PM
Olivier De Smet,
Feb 15, 2012, 1:21 PM
Olivier De Smet,
Feb 12, 2012, 9:18 AM
Olivier De Smet,
Feb 12, 2012, 9:19 AM
Olivier De Smet,
Feb 15, 2012, 1:07 PM
Olivier De Smet,
Feb 15, 2012, 1:07 PM
Olivier De Smet,
Feb 12, 2012, 9:35 AM
Olivier De Smet,
Feb 12, 2012, 9:35 AM