# HP 49/50 series

The HP 49/50 series are Hewlett-Packard (HP) manufactured graphing calculators. They are the successors of the HP 48 series.
There are five calculators in the 49/50 series of HP graphing calculators. These calculators have both algebraic and RPN entry modes, and can perform numeric and symbolic calculations using the built-in Computer Algebra System (CAS), which is an improved ALG48 and Erable combination from the HP 48 series.
Along with the HP 15C and the HP 48, it is widely considered the greatest calculator ever designed for engineers, scientists, and surveyors. It has advanced functions suitable for applications in mathematics, linear algebra, physics, statistical analysis, numerical analysis, computer science, and others. Although out of production, its popularity has led to high prices on the used market.

## HP 49G

The HP 49G (F1633A, F1896A), was released in August 1999.
The 49G incorporated many of the most powerful interface and mathematics tools available on the HP 48 series into the firmware of the new 49G, including the ability to easily decompile and compile both SysRPL and Saturn assembly code on the unit.
The 49G was the first HP calculator to use flash memory and have an upgradable firmware. In addition, it had a hard sliding case as opposed to the soft pouches supplied with the HP 48 series. Almost the same hardware is also used by the HP 39G and HP 40G.
The last officially supported firmware update for the 49G calculator was 1.18, but several unofficial firmware versions were released by the developers. The final firmware version was 1.19-6. Several firmware versions for the successor hp 49g+ and HP 50g calculators have also been released in builds intended for PC emulation software that lacked full utilization of the successors' ARM CPU. Until at least firmware version 2.09, those emulator builds could be installed on the original HP 49G as well.
In 2003, the CAS source code of the 49G firmware was released under the LGPL. In addition, this release included an interactive geometry program and some commands to allow compatibility with certain programs written for the newer 49g+ calculator. Due to licensing restrictions, the recompiled firmware cannot be redistributed.

## hp 49g+

In August 2003, Hewlett-Packard released the hp 49g+ (F2228A). This unit had metallic gold coloration and was backward compatible with the HP 49G.It was designed and manufactured by Kinpo Electronics for HP.
This calculator featured an entirely new processor architecture, USB (Mini-B) and IrDA (IrCOMM) infrared communication, memory expansion via an SD (SDSC/MMC) card, and a slightly larger screen, as well as other improvements over the previous model.
The calculator system did not run directly on the new ARM processor, but rather on an emulation layer for the older Saturn processors found in previous HP calculators. In principle, the firmware for the calculator is identical to that for the 49G, but it gets automatically patched in the course of development to replace some code sequences by special virtual "Saturn+" instructions which bypass the emulation and run natively on the underlying ARM processor in order to improve the calculator's speed. This allowed the 49g+ to maintain binary-level compatibility with most of the programs written for the HP 49G calculator, as well as source code-level compatibility with many written for the HP 48 series.
Despite the emulation, the 49g+ was still much faster than any older model of HP calculator. The speed increase over the HP 49G is around 3–7 times depending on the task. It is even possible to run programs written for the ARM processor thus bypassing the emulation layer completely. A port of the GNU C compiler is also available (see HPGCC below).

## hp 48gII

The hp 48gII (F2226A), which was announced on 20 October 2003, was not a replacement for the HP 48 series as its name suggested. Rather it was a 49g+, also with an ARM processor (unlike the HP 48G), but with reduced memory, no expansion via an SD memory card, lower clock speed, a smaller screen, and a non-flashable firmware. This calculator seems to target users that desire mathematical capability, but have no desire to install many programs. The original 2003 version had 128 KB RAM and ran on 3 AAA batteries, whereas the second 2007 version (based on the Apple V2 platform) needs four AAA batteries and comes with 256 KB RAM, added a USB (Mini-B) port and features a better keyboard.

## HP 50g

The HP 50g (F2229A) is the latest calculator in the 49/50 series, introduced in 2006. The most apparent change is a revised color scheme, returning the unit to a more traditional HP calculator appearance. Using black plastic for the entire body, white, orange and yellow are used for function shift keys. The back shell is textured more deeply than the 49g+ to provide a more secure grip.
In 2009/2010, a blue and white color scheme variant (NW240AA) specifically tailored for high-contrast was introduced as well. It was also designed to aid color-blind users. In 2011/2012, a slightly different blue and white color scheme was introduced.
The form and size of the calculator shell is identical to the 49g+ series, but four AAA batteries are used as opposed to three in previous models. In addition to all the features of the 49g+, the 50g also includes the full equation library found in the HP 48G series (also available for the 49g+ with firmware 2.06 and above), as well as the periodic table library originally available as a plug-in card for the 48S series, as of firmware 2.15/ 2.16 (the latest, as of 2015), and has a 3.3 V TTL-level asynchronous serial port in addition to IrDA and USB Mini-B ports of the 49g+. Like the 49g+, the range of the infrared port has been limited to about 10 cm (4 inches). Like for the 49g+, the firmware is in principle identical to that for the 49G, but gets automatically patched in the course of development.
The asynchronous serial port is not a true RS-232 port as it uses different voltage levels and a non-standard connector. An external converter/adapter is required to interface with RS-232 equipment.
The keyboard, the most often criticized feature of the 49g+ calculators, uses the new design introduced on the very last 49g+ calculators (hinged keys) to eliminate previous problems.
A worldwide announcement regarding the availability of this calculator was made by HP in September 2006, and official details were available on the HP calculators webpage. The calculator was officially discontinued in 2015. It was HP's last calculator to support RPL, later calculators like the HP Prime support RPN only, although in a variant named Advanced RPN.

## Programming

The HP 49/50 series of calculators support both algebraic and a stack-based programming language named RPL, a combination of Reverse Polish Notation (RPN) and Lisp. RPL adds the concepts of lists and functions to stack-based programming, allowing the programmer to pass unevaluated code as arguments to functions, or return unevaluated code from a function by leaving it on the stack.
The highest level language is User RPL, consisting of sequences of built-in postfix operations, optionally including loops and conditionals. Every User RPL command checks the stack for its particular arguments and returns an error if they are incorrect or not present.
Below User RPL is System RPL (SysRPL). Most System RPL commands lack argument checking and are defined only for specific argument types (e.g. short integer vs. long integer), making System RPL programs run dramatically faster than equivalent User RPL ones. In addition, System RPL includes many advanced functions that are not available in User RPL. System RPL programs can be created without the use of PC software (although it is available), thanks to the calculator's built-in compiler, MASD. MASD also can compile Saturn assembly language and, with the latest firmware revision for the 49g+/50g, ARMv4T assembly language on the calculator itself. Many tools exist to assist programmers and make the calculator a powerful programming environment.
Saturn assembly, and, on the 49g+/50g, ARM assembly and C, are also programmable using desktop based compilers. See also the programs available for the HP 48 series.
No model of this series is programmable in HP PPL.

## HPGCC for the 49g+/50g

HPGCC is an implementation of the GCC compiler, released under the GNU GPL. It is now mainly targeted at the ARM-based 49g+/50g calculators. Previous versions of HPGCC supported the other ARM-based calculator models (the 48gII, and the hp 39g+/HP 39gs/HP 40gs), but this was removed due to lack of interest and compatibility issues. Formally, HPGCC is a cross-compiler; it compiles code for the ARM-based HP calculators, but runs on a PC rather than the target system.
The latest version of HPGCC offers many enhancements from earlier versions. Most notably, the compiled code is now in ARM Thumb mode by default, resulting in great reduction in code size with little performance hit. Besides implementing most of ANSI C, there are device-specific libraries that allow access to things like the calculator's RPN stack, memory and piezoelectric buzzer. The GCC compiler itself is the property of the Free Software Foundation, and they state that its use does not impose any particular licensing restrictions on any of its output. However, the libraries included with HPGCC, including routines necessary to actually invoke any HPGCC-compiled program on an actual calculator, are released under a modified GPL license, contrary to GCC on many other platforms which use a more permissive license for their libraries. Thus any programs that link against them can only be distributed if they are also released under the GPL (with an exception for "non-profit" software).
Linux, Windows, and Mac OS X versions are available for download. The Windows version also includes a version of Programmer's Notepad for a basic IDE.

## Emulators

There are several emulators available for the HP 49G calculator. A version of EMU48 is available in the Debug4x IDE that allows emulation of most of the features of the 49g+/50g, but will not execute any ARM-based code.
An ARM-based emulator, x49gp, has been released and allows the true emulation of the 49g+/50g ARM processor and successfully runs HPGCC 2 and 3 compiled programs. The emulator is only available for Linux and Mac OS X and must be compiled from the source. (See README.QUICKSTART for details.)
The commercial version of the application m48 also supports HP 49G. So far, there are no 49g+/50g emulators for smartphones with the exception of HP 50g for iPhone and iPad released in October 2012.
An emulator for Microsoft Windows Mobile (PPC, smartphones) is available.
Other 49G/49g+/50g emulators for Android (without ARM support).
In 2012, Hewlett-Packard released an emulator named HP 50g Virtual Calculator (version 3.1.29/3.1.30 with firmware 2.16 and support for the StreamSmart 410) for Windows.

## Firmware updates

The 49/50 series allows the user to update the firmware to gain enhanced features or bug fixes. Official firmware updates are released by Hewlett-Packard. Unsupported unofficial firmware updates are also available at sites such as hpcalc.org.