is a software emulator of the
HP-71B machine and HP-IL system.
It runs under DOS or in a command box under various 32-bit Windows (95,98,2000,NT,...).
It can run on 64-bit OS using a virtual DOS environment (see below).
Note: in all this document, Emu71 means “Emu71/DOS”.
Emu71 Documentation (pdf file)
Emu71 2.45 Freeware Package without ROM images – 20th Anniversary Edition ! Oct. 2016
Emu71 2.45 Source Files released under GNU Public Licence – Oct. 2016
Emu71 uses ROM images of HP-71B ROM and modules (Math, Forth, ...).
To help you, you will find here the necessary images of the HP-71B machine, as well as the Forth and HP-IL modules. Although I don't have a formal authorization from the Hewlett-Packard company, I considered that this is consistent with the publication by HP of the source listings of these ROM. If it happens that the Hewlett-Packard company should be opposed to this, I would immediately remove these files from my site. Don't ask me to provide other HP or third party ROM images.
Starting from version 2.44, Emu71 can manage large disc volumes up to 16 MB.
creates a 16 MB volume on HDRIVE1, and a standard 640 KB disc on HDRIVE2.
The volume size created by INITIALIZE is the only difference between HDRIVE1 and HDRIVE2, both drives can manage any disc image up to 16 MB.
When initializing HDRIVE1, I recommend to do INITIALIZE :HDRIVE1,2000 to limit the directory to 2000 entries (by default, INITIALIZE uses 1/32 of the disc size for the directory, that would be 16000 entries, consuming 512 KB).
maximum size of a data or text file that can be created by the HP-71B is 512
The example above shows the results of the MAXM (medium maximum size) and MEMM (medium available room) functions of the JPC ROM after creating 16 files of 512 KB.
Note that the JPC ROM revision F04 is needed for the MAXM, MAXD, MEMM and MEMD to work properly on volumes larger than 1 MB.
expand existing disc image files by using this small HP-71B piece of code LDISC, but the directory size will not be
It can be useful to expand the size of volume holding a small amount of large files such as ROM images.
runs fine in the Command box on 32-bit Windows system.
On some Windows OS versions, the keyboard localisation is no properly configured when running 16-bit DOS programs – for instance on my French Win7 machine, the keyboard is responding as QWERTY instead of AZERTY inside Emu71.
To solve this problem, use the kb16 command (present in the Windows System32 folder), for instance "kb16 fr" for my French keyboard. You can add the kb16 command in a batch file, or add it to the autoexec.nt file (also in the Windows System32 folder).
It may also be needed to switch to the EN keyboard layout (Shift-Alt) to have access to the Alt-Gr characters.
Running Emu71/DOS on 64-bit Windows systems
Since most bare 64-bit Windows OS versions don’t support 16-bit DOS applications anymore, a virtual environment must be used.
DOSBox version 0.74 has been successfully
used to run Emu71/DOS on a Win8-64 bit system.
A limitation is that the cut&paste operation is not supported in DOSBox.
This DOS Utility (author unknown) can be used to expand the DOSBox window from 25 lines to 50 lines (or 40/66 lines, at your option). Extract the 8x12_50.com (or other settings) and 8x12.fnt to your working folder.
I personally renamed the 8x12_50.com command to mode50.com for easy typing at each new DOSBox session.
includes a native support of the PIL-Box,
which works “reasonably” well on native DOS, Win98 or Win2K
These systems are now obsolete and Emu71/DOS has to run in a virtual DOS environment on modern 64-bit OS, making this native support no more effective.
recommend to use the ILPer software in
conjunction with the PIL-Box as a gateway between Emu71/DOS and a real HP-71B
for program/data exchange.
This is done by sharing the same virtual drive HDRIVE1.DAT in Emu71/DOS and ILPer.
Emu71/Win is a native Windows HP-71B emulator with a much more realistic GUI and was written independently by Christoph Giesselink.
Emu71/Win has no direct relation with Emu71/DOS, except from a small part of the code (related to the HP-IL) and from the fact that the authors know each other.
LIF archives can be found on the Web. Somes examples are included here:
To use an archive, unpack it to put the LIF file image (size should be about 630K) to some directory, and declare the path to this file in HDRIVE1 or HDRIVE2 declaration (Emu71.ini file). Example: HDRIVE2 swap\jpc01.lif
The JPC ROM is a great HP-71B system enhancement. It was made by the former PPC-Paris Club and involved a number of active members (including myself).
To install JPC ROM into Emu71, just add a line in your emu71.ini file like: " 1 ROM 32 jpcf05.bin "
Refer to my JPC ROM page for more ROM images and documentation.
of ID#52, also known as the User Library 1, is a collection of various keywords
that were widely used in many HP or user programs.
The most well-known keywords are KEYWAIT$, REV$, MSG$, TRIM$, RPT$, but there are also several less-known but powerful keywords like SYSTEM$, BREAK, MODIFY/LIST$, PRINT TO, IMAGE$ and others.
Although a few functions duplicate some JPC ROM equivalent features (LINKLEX, CMDSTK for instance), the User Library keyword collection (LEX ID#52) is a great complement to the HP-71B / JPC ROM system.
keywords come from HP or from the user community. They were originally
available as individual LEX files, see for instance a selection of these LEX
files on the Joe Horn’s
Using multiple LEX files not only uses more memory, but also slows down the HP-71B operation by adding multiple table lookup and poll handler overhead. Some attempts to merge several keywords in a single LEX file have been done in the past, for instance the USERLIBA and USERLIBC LEX files provide partial keyword compilation.
ULIB52 Lex, I merged the latest known versions of almost all the known keywords
from the LEX ID#52 in a single definitive file.
The re-built source files come from the disassembly of individual LEX files (done by me and others) and a manual merge of the internal tables and poll handler code with a unique version string (VER$=”ULIB:c” for this beta version).
A few original commented source files are known (thanks to Bob Prosperi):
There are several missing keywords in the sequential token numbering (see the documentation for details).
Some of these missing tokens are mentioned the HP71 System Assignment document (SAR$, RPTBIT$, EXTRBIT, STUFFBIT) but no LEX corresponding to these keywords is known. Any information is welcome!
Tokens inside the 2C-5D range do exist in a few known LEX files, but have not been officially allocated, they are not associated with defined keywords and the functions are depending on the particular LEX files.
The SUPERLEX is probably the most complete:
User Library original documentation (thanks to Dave Frederickson):
interested by any information on original source files of any LEX from the User
Symbolix is a large (20KB) program written by J.K. Horn to do symbolic calculations on the HP-71B. Wlodek Mier-Jedrzejowicz wrote in his guide that "most users considered it faster and better than the symbolic operations of the contemporary HP-28C". And it's even faster and powerful in Emu71!
To install it in Emu71, just add a line in your emu71.ini file like: " 1 ROM 32 symbolix.bin "
Forth is a special version of the HP-71B Forth kernel that runs in RAM and can
be burned into standard (soft addressed) ROM or EPROM modules. The purpose of
the Soft Forth was to allow third parties to distribute a Forth application
without the need for the customers to have the Forth module. But developing a
soft Forth application still requires the Forth module (and a 64KB RAM port to
hold the soft Forth kernel and application image). So Soft Forth is not a
substitute of the Forth module.
See also on page 2.2 of the documentation a problem related to the HP-71B ROM 1BBBB.
The C71 module is an example of a Forth application built with Soft-Forth (version SFTH:F), and actually the only known application of this type.
C71 implements a RPN calculator (note that g-ON is used to exit C71, see the partial documentation for more details).
is a classic board game. The HP-71B version below is an adaptation I made of a
HP-85 program around 1985, with minor changes for Emu71 done in 2003.
It runs great on my Emu71/DOS in a 43- or 50-line mode command box on my old Win2k system, or in DOSBox in 40-line mode (or better). The screen size is too small to run it in Emu71/DOS in a normal 25-line mode.
It is now possible to also run it in Emu71/Win using the ILvideo80 device (HP92198 emulation):
Reversi on Emu71/DOS Reversi on Emu71/Win with ILVideo
To load it into Emu71, use the DOSLink device. On Emu71/DOS, copy the reversi.b71 file to emu_in.dat. On Emu71/Win, just make the DOSLink infile point to reversi.b71. Then do COPY :DOSLINK in Emu71.
The original HP-85 game and documentation can be found here: http://www.series80.org/Programs/HP85-GamesPac/index.html
Pirate is a great adventure game written by Scott & Alexis Adams in the late '70s that was published in the BYTE magazine on December 1980. I found it so wonderful that I ported the original Basic program over the years on my Ohio Scientific system (1983), then on the HP71 (1985), and finally on the HP48 (1994) in system RPL (A HP48 version can still be found on hpcalc.org).
The original HP71 version needed a 32K RAM module and used a disc drive and a video display (both emulated by my ILPER system of the time).
The version below has been slightly modified for Emu71 and is provided as a 32K module (IRAM or ROM).
Pirate is much more fun and easy to play with Emu71 due to the faster response time.
More specific links about the HP-71B.
J-F Garnier, 2019