HP 49 Series Calculator Software 


[Homepage] [Musikwissenschaft] [Musikinformatik]

The Hewlett-Packard 49 series calculators, which at the time of this writing comprises the HP 49G, 49G+ and 50G, are handheld computing devices with astonishing capabilities. Besides the usual scientific calculator functionality, they provide a hierarchical file system and a file manager, interactive 2D and 3D plotting on the 131x64 pixel display (131x80 on the 49G+/50G), and an abundance of functions for numeric and symbolic problem solving, including a CAS (calculator algebra system). On the command line they support both HP's RPN (reverse polish notation) and an algebraic operating mode, and the calculators can be programmed in RPL (Reverse Polish Lisp), an RPN-based functional programming language. A serial interface (as well as USB and IrDA on the 49G+/50G) lets you communicate with other calculators, PCs and lab equipment, and the SD card reader of the 49G+/50G provides external storage and allows you to exchange files with PCs in a convenient fashion.

There's an onboard development library for "system" RPL and Saturn assembler language programming which makes these calculators extendable, and a PC-based development environment is also available. The HP 49G+ and 50G can also be programmed using HPGCC, a version of the GNU C compiler which directly targets the ARM processor on which these latest models are based. In contrast, the original 49G runs on real (and much slower) Saturn hardware which is being emulated in the 49G+ and 50G models.

The HP 49 series calculators are descendants of the popular HP 48 series introduced in the 1990s. The 49 series devices have more on-board memory (2.5 MB) and an improved, upgradable OS, and are a lot faster than the HP 48 (especially the 49G+ and 50G). This entire line of calculators has a lot of dedicated followers with their own newsgroup, comp.sys.hp48, and a wealth of add-on software is available from the www.hpcalc.org site. Also make sure that you take a look at the new HP 50G wiki which provides information for newbies and a guide to the available documentation and other relevant Internet resources.

Below you find HP 49 series calculator software which I have written or contributed to, and which is currently maintained by me.

GraphWriter - A Graph Editor for HP 49G/49G+/50G

While the 49 series calculators are not nearly as fast as a modern PC, the tight integration of graphical, numerical, symbolic and programming capabilities makes this device an ideal "scratchpad" for trying out algorithmic solutions and solving smaller scientific problems. Being a big fan of graph theory since my student days, I had the idea to develop a program for the HP 49G which, to my knowledge, does not yet exist on any calculator: a graph editor.

GRW screenshotSo here it is. It is called "GraphWriter" (in analogy to the "EquationWriter" and "MatrixWriter" applications built into the calculator), and it is a full-featured graph editor for the HP 49 series calculators. The whole library is written 100% in System RPL, and thus the editor is reasonably fast. Graphs are implemented as (asymmetric) adjacency lists with support for multigraphs, 2D node embeddings and arbitrary node and edge labels. The editor allows you to create and edit these structures in a graphical environment, using the calculators' graphics screen for display. A collection of  functions for creating, inspecting and manipulating graphs from the command line or through RPL programs is also provided.

Download: grw-3.1.zip. As of May 5 2015, the latest and greatest release is GraphWriter 3.1 (see the README file for a list of changes). The present version should work with all calculators of the HP 49 series (49G, 49G+, 50G). The package includes the library (Lib 557, ~35 KB), System RPL sources and documentation. To install, transfer the GRW.hp library file to your calc, move the resulting variable to any port (e.g., using the filer), press ON+C to reboot and you should be set. A sample implementation of Dijkstra's shortest path algorithm (in User RPL) is also included, along with a sample graph ready to be used with that program. These are plain text files which you can transfer to your calc in ASCII mode as usual

IMPORTANT NOTE: This is BETA SOFTWARE, so MAKE SURE TO BACKUP YOUR CALCULATOR'S MEMORY BEFORE TRYING OUT THIS PROGRAM.

This software is provided AS IS, and is distributed under the GNU Public License, see COPYING for details. Please make sure that you read the installation instructions in the README file. For your browsing pleasure, the manual in PDF format is also available online: GRW.pdf. (You need some PDF viewer to read this document, e.g., Acrobat Reader from Adobe which is freely available here.)

GoferLists - Advanced List Operations

This is a library of useful list operations mostly borrowed from the Haskell programming language. The library was named after Mark P. Jones' popular Haskell interpreter Gofer (now named Hugs). GoferLists was originally written by Jarno Peschier and ported to SysRPL by Luis Morales Boisset. I have fixed a couple of minor bugs in the SysRPL version and added a bunch of additional functions, see the README file for details.

RPL's built-in list processing facilities such as DOLIST and STREAM are quite powerful, but can be awkward to work with because they do not treat the corner cases such as empty input lists in a consistent fashion. GoferLists attempts to fix that by providing user-friendly frontends to the built-in operations, in the form of an elaborate collection of generic list processing functions which are fairly standard in modern functional languages and have proven their utility in countless applications.

Download: GoferLists-1.0.zip. For the 49G series calculators (49G/49G+/50G) only. The package includes the library (Lib 1652, ~5KB) and documentation. Installation instructions and a description of the functions in the library can be found in the included README file.


Albert Graef (ag@muwiinfa.geschichte.uni-mainz.de)
Department of Music Informatics
Johannes Gutenberg-University Mainz
Germany