|ROM revision 2.09 on 49G|
Message #6 Posted by James M. Prange (Michigan) on 14 Dec 2006, 9:43 p.m.,
in response to message #5 by bill platt
what is the advantage to doing this?
For me, the principal advantage is simply that several bugs have
been fixed from ROM revision 1.19-6 to revision 2.09. For
Bugzilla and the
"readme" files included with some of the "unofficial" revisions.
My guess is that there have been various undocumented bug fixes as
Another possible advantage is that, if I recall correctly, ROM
revision 1.19-6 has the equation library built-in, with the
library using "unsupported" revision-dependent code, and requiring
one user flash bank. Starting with revision 2.08 (the 50g's
initial revision), the equation library and periodic table are
optional external libraries using only "supported" entry points
and work with all ROM revisions back to at least 1.18. If you want
these libraries, you can install them, but if you don't want them,
you don't have to install them, thus saving some room in your
ports. These libraries are available at
http://www.hydrix.com/Download/Hp/4950Libraries/, file name:
EquationLibrary.zip. To "install" them, simply move a copy of
EqnData.lib and EquLib.lib (for the equation library), or
PerTbl.lib (for the Periodic table library), to port 0, 1, or 2.
The only "glitch" that I've found with using revision 2.09 on a
49G is with the VERSION command. The 2.09 VERSION first uses
IsBigApple_ to check whether the hardware is a "BigApple" (49g+ or
50g), and if so, then uses IsAppleV2_ to check whether it's a 50g.
If it's not a "BigApple", then it "must" be running on a 48gII
(since revision 2.09 was never intended to be used on the 49G).
But the 49G isn't a "BigApple", so VERSION returns "Version HP48-C
Revision #2.09" where we might expect to see "Version HP49-C
Revision #2.09". I consider this to be a very minor and harmless
Of course we can't really expect anyone to support using revision
2.09 with a 49G, but it ought to work the same on a real 49G as it
does in the PC-based emulator.
But given how easy it is to get the current 49g+/50g ROM to run on
the 49G, I'd think that it wouldn't be all that difficult for HP
to support an updated ROM for the 49G, if any corporate red tape
could be worked around. After all, I'd expect that there are quite
a few 49Gs out there that work as good as when they were new.
And how do you tweek a ROM?
I don't; I prefer to leave such matters to those who know what
But the general idea is that the "ROM" code is, after all, just
software; as such it can be, at least partially, decompiled to
source code, although it may be that some stretches are left as
machine language, and perhaps no one really understands just how
and why some machine language and assembly language code actually
works. For the "ARM-based" models, some pieces of legacy "hardware
Saturn" code have been replaced by faster-running "Saturn+" code.
Okay, the "tweaking" that I wrote about would be replacing such
new Saturn+ code with the original hardware Saturn code, so that
it can run on the emulated Saturn (not Saturn+) in Emu48.
If anyone cares to upgrade their 49G to ROM revision 2.09, first
download, unzip, and install the latest version of Debug4x
(currently Version 2.2, Build 104) from
http://www.debug4x.com/ (about a 7.5MB download).
Now pick a 49G .kml file to use; I used: C:\Program
Files\Hewlett-Packard\Debug4x\Emu\R49G1024.kml, but adjust the
path and file name as appropriate. Make a copy of the .kml file
and rename the copy; for example, I renamed the copy to
R49G1024r209.kml. Open the renamed .kml file with a text editor.
Mine starts out with:
Title "HP49G 1024*768 (256 colors) for Emu48"
Author "Hewlett Packard, Eric Rechlin and Christoph Giesselink"
with the leading spaces being actually a physical tab character
(ASCII 009) (leaving it out or changing it to any "whitespace"
should be okay).
Edit this to:
# Title "HP49G 1024*768 (256 colors) for Emu48"
Title "HP49G special 2.09 ROM 1024*768 (256 colors) for Emu48"
Author "Hewlett Packard, Eric Rechlin and Christoph Giesselink"
# Rom "ROM.49G"
# Patch "BEEP.49G"
That is, remark out the old "Title", "Patch", and "Rom" lines, and
insert a new title and the 49g+/50g ROM file name, and save the
Now open EMU-49 (it should be in your Start menu as
Start\programs\HP 49 & 48 Development Kit\EMU-49). If needed, in
the View menu, click on "Change KML script...", and choose your
modified .kml file. Enter the VERSION command and verify that it
really is "Version HP48-C Revision #2.09".
Now it's just a matter of transferring the ROM from the emulator
to the physical 49G, much like transferring a ROM from one 49G to
another, and not too different from using a .flash file to upgrade
the ROM from a PC. Of course, it's best to start with a fresh
battery in the 49G.
To cancel out of any test mode, hold down ON, press and release C
(F3), and release ON to force a warmstart. In case a warmstart
can't be forced from the keyboard, insert a partially straightened
small paper-clip (or something similar) straight into the hardware
reset hole in the back of the 49G. I suppose that you could force
a warmstart while a ROM download is in progress, but in that case,
the calculator would be rather useless until you completed a ROM
In the emulator's "File" menu, choose "Settings...", and then
under "Serial Ports", change the "Wire:" setting to whatever COM
port you normally use for connecting your 49G, and click OK.
Physically connect the 49G to the COM port, then enter ROMUPLOAD
on the emulator; you should have some instructions displayed on
the emulator. On the 49G, hold down ON, press and release D (F4),
and release ON; you should now have a "Tests" menu. Hold down
ENTER and the + key, press and release ON, and release ENTER and
+; you should now have the "No System or +/ENTER pressed" menu.
Press 4 (Terminal Mode) on the 49G, and then press any key on the
emulator. The emulator should now be at "Xmodem Server Waiting for
command" and the 49G at the "Download" menu. Press 1 (Download
System) to commence the download; the emulator should display
"Xmodem Server" with various messages showing the progress, and
the 49G should show various messages showing the progress. The
download should take about 20-25 minutes.... Eventually the
emulator will display "Xmodem Server Waiting for command" and the
49G will display "The system may not be installed. Please go to
'Download Pack' Menu"; at this point press any key on the 49G,
which should get you to the "Download" menu, and then press 2
(Download Packs). After a few seconds, the 49G should display
"System present Press Q twice to reboot". The first press of Q
takes you back to the "Download" menu, and the second press
reboots the 49G with the new ROM. On the emulator, press CANCEL to
exit Xmodem Server mode, and close the emulator.
Run some tests on the 49G to verify correct operation. In
particular, with the HoldDown ON and D tests, run 5 (FastROM), 6
(FastRAM), 7 (FullROM), 8 (FullRAM), and 9 (FROM Format), and run
the HoldDown ON and E repeating test. All tests should pass.
Edited: 14 Dec 2006, 10:04 p.m.