Programming the HP-41
=====================

Welcome to Calypsi, cross-platform development tools for the HP-41 calculator.

In order to make full use of Calypsi you need a working knowledge about:

* The HP-41 calculator.
* Using command line tools on the host operating system you are using.
* Either the HP-41 RPN language, or the Nut assembly language and architecture (MCODE), or both.


Using this guide
----------------
Unless you plan to jump ahead and read here and there, there are two suggested approaches to this guide.

To get started using the tools quickly, see :ref:`sec-installation`, then try the examples in the :ref:`sec-examples` chapter.

If you want to learn in more detail how to use the tools to make your own modules, just read ahead and skip any chapter that contains facilities you do not plan to use.


.. index:: VASM listings, references, books

Further reading
---------------
To familiarize yourself with programming the HP-41, or brush up your knowledge, here are some suggested starting points:

* The manuals supplied with the HP-41. [#manuals]_
* *Extend your HP-41*, W Mier-Jedrzejowicz, 1985.
* *HP-41 MCODE for Beginners*, Ken Emery, Synthetix 1985.
* HP-41 VASM listings. [#VASM]_
* http://www.hp41.org
* http://www.hpmuseum.org

.. rubric:: Footnotes
.. [#manuals] The later models came with a two volumes set and the earlier a thicker single manual.
.. [#VASM] These are original source code for the HP-41.


Document conventions
--------------------

When referring to a directory in the product installation, the path is
given relative to the installation directory, which is assumed.

Version numbers may not match exactly the tool version you are using.


.. table:: Typographic conventions
 :widths: 1 4
 :column-dividers: none single none

 +----------------+----------------------------------------------+
 |Style           |Used for                                      |
 +================+==============================================+
 |``nop``         | * source code examples                       |
 |                | * file paths                                 |
 |                | * command lines                              |
 |                | * commands                                   |
 |                | * output                                     |
 +----------------+----------------------------------------------+
 |``[option]``    | * optional part                              |
 +----------------+----------------------------------------------+
