x49gp - The HP49g+ Emulator

The HP49g+ and HP50g emulator is available on x49gp.sourceforge.net. Please look there for updates and downloads.

A few weeks ago I started to look at my HP49g+ again, mainly because I read about HP-GCC and wanted to play with C Programs on the calculator. I owned the calculator for years, but it could never replace my HP48gx, due to the "algebraic" keyboard layout and the unusable keyboard mechanics. Having written an emulator for the HP48 series of calculators, I do not want to miss the ability to debug code on my workstation, with all the nice features like breakpoints, traces, and looking at internal registers...

Searching the internet showed some work being done on an HP49g+ emulator (see here), but the project seems dead since mid 2004.

2007/01/04 The sourceforge project is accepted. I am now waiting for my CVS repository to be installed on the sourceforge CVS server.

2007/01/03 A lot of things work... Except my time to really get this done. Today I finally got around requesting registration as a sourceforge project. This will soon be open to helping hands and for initial reviews.

The emulator now can completely safe it's internal state (ARM core and S3C2410 stuff) and recover from a saved state. Everything except the nifty keyboard colors also works when emulating the HP50g (Just need the boot image from start of FLASH and everything is set).

2006/07/17 More UI Button work... Replaced all text from the scanned image by own fonts to make it more readable. This will allow for custom labels everywhere one day.
Next I need to separate the UI handling and the actual emulation into two threads, after that I make this available as a test release.

2006/07/04 Timer reimplementation is done, timers run correctly synchronized to PCLK now. IrDA connectivity is resolved, the Tx LED is connected to both UART2 TxD and SPIMOSI0. The HP49g+ uses SPI to simulate the printer protocol, using two SPI byte transmits for every bit sent to the printer and the watchdog timer in interval timer mode for the timing. No DMA used here, this is real low tech. The more I discover about the internals, the more I get disapointed. There is no sign of descent engineering found inside. It's all chineese low tech. It stinks when you open it. Bill and Dave are turning over in their graves.

2006/06/22 Great news: The emulator just ran it's first gcc compiled program. This means a few things: Thumb instruction emulation works. The MMU page table walk works (Standard HP firmware only uses section address translation, which does not put to much pressure on the MMU). The saturn subsystem seems to be working very well, libraries and ports are fine, as I installed the ARMToolbox in port 2 and used that to run the above mentioned programm. Still need to do timer reimplementation, so this is next.

2006/06/19 Timers need reimplementation, the current timers only work correctly with respect to interrupts on timeout, but are not exact when polled. This seems to confuse the firmware somewhat. Now the good news: Power on after power off is working, the firmware sets bit 3 in CLKCON, this needs to go into power off and wake up with power on reset. FLASH erase and write is also working now, so the calculator passes the builtin FLASH write test.

2006/06/18 After implementing timers, RTC, interrupts, I/O ports (for the keyboard), basic LCD support, internal SRAM, external SRAM, read access to the external FLASH, and a basic GUI the calculator finally boots into user mode. There are still many issues to fix, currently it turns off after some time and loops somewhere with ARM interrupts disabled, so it wont turn on again. The GUI is very basic (as you can see). I use GTK+ 2.0 as toolkit, so the emulator can easily be ported to M$ Windows when development has stabilized. Anyway: first light!

2006/06/11 Well, why not do it from scratch. The code will be available under GPL, to emulate the ARM core I use the ARM simulator that comes with GNU gdb. Main work is emulating the many embedded modules in the HP49g+'s processor, a Samsung S3C2410. I also had to add an MMU to the simulator, as the ARM MMU is not standardized, but specific to the implementation of the chip.

Thanks go to the following people (in no particular order), who supported the project with information or provide information on the HP49g+ on the internet (please drop me a note, if you feel I have missed you on this list):

Cyrille de Brebisson,
Tim Wessman,
Jean-Yves Avenard,
Steve Sousa,
Al Borowski,
The HP-GCC Team.


x49gp running on my UltraSPARC.

I am not responsible for the content of any web pages linked to from this document which are not explicitly marked as being authored by me.
50°44'N   006°00'E
created with vi Valid HTML 4.01! 100% Micro$oft free
$Date: 2006/06/18 08:16:09 $