Introduction
============

Despite being almost 40 years old, the classic HP-41 calculator is still
being used and loved.
While the actual user base today is small, some people still enjoy the
fun of this, way ahead of its time, amazing calculator.

.. index:: MCODE

The high level language of the HP-41 was named FOCAL, but that was an
unfortunate choice as that name was already used by another
language. The name *RPN* is used here as it is often used as a family
name for languages of this kind. RPN also goes well with the naming of
the language used by the successors of the HP-41, which is called
RPL. RPL is however quite different from RPN.

The native assembly language of the HP-41 is usually called MCODE and
it gives full control over the calculator. Due to the way memory
system on the HP-41 is constructed, MCODE programs can only be
executed from plug-in modules.

Hewlett-Packard and third parties produced many plug-in modules back in the
1980s. The majority were mask programmed by HP and typically required
large volumes to make sense, but there were also EPROMs used for low
volume modules. A small cottage industry existed at the time. Today
modules are developed as software images that can be loaded
into module simulators (re-programmable hardware) which offer higher
capacity than ever before.

Examples of such re-programmable custom hardware are the Clonix and
NoV series of modules. If you are the lucky owner of an HP-41CL, it
can hold all HP-41 module images known to mankind inside the
calculator!

If you use an emulator, it will most likely provide support for
loading module images.

The Calypsi tool chain aims to provide command line tools that makes
it easy to develop your own module images for the HP-41, both using
MCODE and RPN. In addition to this, there are tools to work with
module images and Clonix images. There is also a tool to generate
barcodes to allow RPN programs to be loaded into the RAM based program
memory of the calculator. You will need a postscript printer and an HP
82153A Wand to use this barcode feature.
