HP 49/50 series

The HP 49/50 series are Hewlett-Packard (HP) manufactured graphing calculators. They are the successors of the popular 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.
HP 49G.
Released in August 1999, the HP 49G (F1633A, F1896A) calculator was the first HP unit to break from the more traditional subdued coloration. In addition to having a metallic blue color, the keyboard material was rubber and did not have the traditional HP calculator hinged keyboard feel. In addition, it lacked a large key which was seen by many as the defining characteristic of an HP calculator. These changes were disliked by many traditional HP calculator users.
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.
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. Instead of the rubber keyboard found on the HP 49G, this calculator's keyboard had plastic hinges intended to return the feel of older HP calculators, and also included a pouch to protect the unit, similar to those included with older HP models. 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. 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. 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. A blue and white color scheme variant specifically tailored for high-contrast is available as well (NW240AA).
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.3V 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).
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.
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.