Introducing Emu71 for Windows


I'm proud to announce a new emulator for the HP-71B calculator "Emu71 for Windows" (Emu71/Win) on my web page at The emulation core is independent from Jean-Francois Garnier's Emu71 (Emu71/DOS), the HPIL IO-processor simulation is a ported version base on the IO-processor simulation of Emu71/DOS. A big thank to Jean-Francois allowing me to use his source code.

Emu71/Win base on the sources of Emu28 and so on the source code base introduced with Emu48. So Emu71/Win inherited all advantages and also the disadvantages of the Emu48 family emulators.

Main differences to Emu71/DOS

  • pure Win32 program / sources could be compiled for pure x64 program
  • skins for different appearance (two included)
  • multi instance / multi session ability, each session is saved in an own document
  • slower than Emu71/DOS but of course a lot faster than the real calculator at calculations
  • simulated graphic display with possibilty of contrast, blinking and row driver programming, but limited to the regular 22 characters
  • display output is much slower than Emu71/DOS because scrolling and other relevant display output timings are controlled by the calculator firmware and so have the same speed than the original calculator
  • exact simulation of the original memory layout (16KB build with 16*1KB chips)
  • no limitations in RAM / ROM configuration
  • diagnostic ROM works
  • allowing multiple HP 82401A HP-IL Interface modules (HP 82402A Dual HP-IL Interface simulation, but not limited to only two interfaces)
  • no integration of HP-IL devices, all devices must be connected over Virtual HP-IL (TCP/IP)

Hope you will enjoy this new emulator.

Christoph Giesselink, July 2011


Dumb question #1: The older 71 emulator expects the rom to be in a .bin format, rom71.bin.

The new windows script is looking for file HP71B.ROM

Same format? Different?

I've probably missed where this is explained, but it seems different than the DOS version?


Dumb question #1: The older 71 emulator expects the rom to be in a .bin format, rom71.bin.

The new windows script is looking for file HP71B.ROM

Same format? Different?

I've probably missed where this is explained, but it seems different than the DOS version?

There's a short description about the ROM image format at

Emu71/Win accept two formats: packed and unpacked images, so the images from Emu71/DOS are ok. Simple rename it to HP71B.ROM at put it into the Emu71/Win installation directory.




at last a 32 bit version! Also, i compiled the code and it works.

i'm going to have to have a hack about with this.

thanks very much all those involved.

-- hugh.


Main differences to Emu71/DOS

  • Open Source
slower than Emu71/DOS but of course a lot faster than the real calculator at calculations



slower than Emu71/DOS but of course a lot faster than the real calculator at calculations


The Saturn CPU core implementation of Emu71/DOS is completely written in 86 assembler and highly optimized to run on old and slow DOS machines, whereas the Saturn CPU core of Emu71/Win is written in C highly optimized to simulate the Saturn CPU with all it's hardware bugs as realistic as possible.




I cannot say thank you enough times. Running the old EMU71 has become complicated with Windows 7. I had to resort to virtual machines running Window XP. Your Windows version is a dream and I love it!!!!



I was able to install the MATH and JPCROMX ROM modules in the 71B emulator. Your software is awesome!!!




Whoo hoo! I figured you might be up to something like that! Does it talk to the PIL-Box?


Yes, it does work with the PIL-Box, using Christoph's HP-IL over TCP/IP. This an instant hit in my apartment!


I'm very happy that Christoph released this Emu71 for Windows version. I regularly received requests to port my Emu71/DOS to Windows but was not able to do it due to 1) lack of knowledge on Windows GUI development 2) lack of time.

As usual with Christoph's emulators, the simulation is almost perfect and much closer to the original than Emu71/DOS. When I started Emu71 in 1995, my PC was using a 386 CPU, and my first targets were emulation efficiency to get a speed improvement vs the original and support for large memory modules, to have a powerful Emu71 environment so I didn't try to reproduce every low-level details especially for display/keyboard management and original memory layout.



Christoph, is there ready QWERTY kmi keyboard mapping file? I see only QWERTZ files.

[EDIT] Actually, they seems to be QWERTY, but i have problems with keybindings on my notebook. No way to differ + and = keys, misplaced braces etc. Where can I find info on editing KML keyboard mappings, especially SHIFTED keys?

Edited: 20 July 2011, 5:59 a.m.


For those which have a QWERTY keyboard, the sequence

Scancode 89			# Y
Map 89 106

Scancode 90 # Z
Map 90 301

in the file KEYB71.KMI must be changed to
Scancode 89			# Y
Map 89 301

Scancode 90 # Z
Map 90 106

A full description of the KML language script is available at



Cristoph, actually
Scancode 89 # Y
Map 89 106

Scancode 90 # Z
Map 90 301

are CORRECT for QWERTY, no need to change them. But braces (including curly), + and = keys are misplaced.

Thanks for link to KML docs.


Congratulation Christoph!

All Saturn-based calculaters I know are now covered by your emulators. Reason to open a bottle!

Hope you will enjoy this new emulator.

Yes I do enjoy it like all the other emulators (not simulations) too. As your HP71 comes with virtual HPIL I hope that simulated IL perpherals will show up some time, like HP2225B, Video Interface, and more.

Currently I try to do a 7470 HPGL plotter in ooREXX: virtual HPIL done, HPIL interface almost done (listener works), display of graphic pending. For testing my HPIL interface I would need (in addition to Christoph's HP71) an HP41 with virtual HPIL. Alas with no knowledge of C I am not able to modifiy Nonpareil.

Once more thank you.



Who could send me the roms (2CDCCCC). I do not have the "71B" to extract the ROMs.


Have a look at JFG's site.

Hope this helps.



Christoph, please consult.

If I write

Scancode 49
IfFlag 1
Map 49 403
Map 49 311
Map 49 311

KMI compiler says:
63: Too many parameters for IfFlag (1 expected).
Fatal Error at line 63.

Documentation says:


So, should I use some delimiter for COMMANDS or only one command is actually allowed? I have no errors reported, if only one command is used.

Edited: 20 July 2011, 9:04 a.m.


Maybe this would work?

Scancode 49
IfFlag 1
Map 49 403
Map 49 311


I install the windows version of Emu71 into the default folder structure it suggests.

Before running the emulator, I copy ROM71.BIN to the folder that Emu71 was just installed to and rename it to HP71B.ROM.

At that point, I double-click Emu71 and it opens a dialog box asking me to choose my KML script. It defaults to Christoph's Real HP71B for 1024x768 and the Emu71 directory location it shows is the one it just installed Emu71 into.

When I click OK, I get the following result:

Title: Christoph's Real HP71B for 1024x768

Author: Christoph Giesselink

Hardware Platform: Saturn

Calculator Model : T

Cannot open Rom HP71B.ROM.

Bitmap REAL71BL.BMP loaded.

Debug Off

This KML Script doesn't specify the ROM to use, or the ROM could not be loaded.

Press Cancel to Abort.


By the way, even though I renamed the ROM71.BIN file to HP71B.ROM, Windows still shows the file type as a VLC Media File (.bin).

So, it thinks it is a movie file I think, but knows that it is a binary. Why would that matter to Emu71?

Edited: 20 July 2011, 10:34 a.m.


I don't know what's really happen, but I think you created something like HP71B.ROM.BIN.

Windows with default settings normally hide the extention of a filename. Renaming files in such a configuration may cause unpredictable results.

Sorry I don't know the original English text, so I use translations of my German version

  1. Open the Windows-Explorer
  2. Enable the menu if neccessary (Win Vista + 7)
  3. goto "Extras" "Folder Options..."
  4. press tab "View"
  5. in "Extended settings" disable checkbox "Hide extentions at known file types"
  6. then press "ok"

Now you should see all file names with their real extention.



Thank you, that fixed it.

The file was a .ROM.BIN


I'm sorry I'm not able to give you a solution but I can provide the following: I installed the package on two different machines under XP each, one EeePC and a desktop PC. On the netbook, everything works flawlessly, math ROM included. On the PC I get the same result as you do. On both machines I can see all file extensions.

EDIT: I now installed it a second time on the desktop PC, copied the bin files in the folder and now renamed the 71 ROM by copying the string from the post above: HP71B.ROM Before I had typed it myself. What can I say - it now works!

Edited: 20 July 2011, 11:28 a.m.


It would not help for

Scancode 49
IfFlag 1
Map 49 403
Map 49 117
Map 49 118

The problem was in caching (?) KMI files. I redefined file name in KML file, everything is OK now. many COMMANDS work, but why and who cached old KMI file is out of my understanding. I think it is some problem with Windows 7 security settings. I am not familiar with this OS, so it is my fault only. Waiting for Linux version!

I think i'll get suitable keymap in half an hour.



If I have an HP-71B source code listing in a Windows text files. How can the emulator read that file?



If I have an HP-71B source code listing in a Windows text files. How can the emulator read that file?

The only way is using the keyboard macro recorder in "Tools/Macro/Play...".

Therefore you have to convert a Windows text file into keyboard macro file first. Therefore use the command line tool "ASC71MAC.EXE" delivered with the installer version or available as separate tool. But the "Keyboard Macro Play" process is very very slow, and sometimes on some PC hardware Emu71/Win misses keystrokes, especially when a HPIL module is installed.

A more convenient way I suggest for larger files, import them as usual in Emu71/DOS and save the file into a floppy disk LIF image file. Then load this file with the combination of Emu71/Win and ILPer to the memory of Emu71/Win.

Another way inserting all programs saved in an independent port of Emu71/DOS is including the Emu71/DOS port file into Emu71:


  1. shut off the emulated calculator
  2. call "Edit/Port Configuration..."
  3. "Add"
  4. Module Type: RAM, Size: Datafile
  5. enter the filename of the independent port file
  6. press "Apply"
  7. in the case your selected file is an independent port file, you see it in the window above
  8. finally press "OK"

The difference to a ROM file is, that you really make a copy of the data in the emulator RAM, and not only a link to the original data file.



Hi, Namir.

I have an extremely geeky way to get files onto my 71B using my LIFlab software. You need Perl for Windows, such as the Active Perl Community Edition Then you can grab my LIFlab software here.

This software is a bit rough, but the following process will get a 71B BASIC program in a DOS/Unix text file into a LIF image suitable for use with ILper and EMU71.

# First we create an empty LIF volume
hbo@quirk|501> ./ -v TEST.dat

# Yup, it's empty
hbo@quirk|502> ./ -v TEST.dat

filename type size date/time
0 sectors used; 2382 sectors available; 2382 sectors free

# Here is our test file - a 71B basic program in a text file
hbo@quirk|503> cat BASTEST.txt

0010 ! * Trivial 71B BASIC program for testing
0100 DISP "I'm trivial. Pleased to meet you"
0200 END

# Now we encode this file as a 71/41 TEXT file.
hbo@quirk|504> ./ BASTEST.txt >BASTEST.t71

# The program requires us to give the LIF type when we add a file
# to a LIF volume. Here's how to get a list of types LIFlab supports:

hbo@quirk|505> ./ -T


# The one we want is TEXT
hbo@quirk|506> ./ -t TEXT -f BASTEST.t71 -v TEST.dat
filename type size date/time
1 sectors used; 2382 sectors available; 2381 sectors free

Now that you have your LIF image, you can get at it from a real 71B, ore EMU71 using ILper. (In the former case, you would need the PIL-box, but in the latter you wouldn't .)

Here's how the configuration of ILper would look to support EMU71:

And here's how the EMU71 tcp/ip setup should look:

Note that the IN/OUT port numbers are swapped between the two.

Finally, here's the proof of the pudding: we TRANSFORM our test program from text on the virtual drive to BASIC on EMU71 and run it:

I am totally in debt to Tony Duell and his lifutils package for Linux. He distilled knowledge of LIF from several sources into succinct and readable code. My software is a bit rough, but usable. Any bugs are no doubt my fault. That leads me to warn you to make backups of your LIF image files if they have anything in them you want to save.




I've made special KML and KMI files for this new Emu71B (so far only for the 1024x768 layout):

In the KML file I've included code for all shifted functions (as I've done it with my HP-50g emulator 2 weeks ago), so now you can directly access all shifted (yellow and blue) functions by clicking on their labels.

If you don't like this for the blue functions (because you have to click quite exactly on the lower half of the button), then just remove the first block of "Button 1xxx" (with a number higher than 1000) upto "Button 101".

The KMI file I've made is for US keyboards, and I've added a few special key combinations (just look into the file to see them).

One change I've made is that I have swapped the 2 following keys (which I believe is more comfortable):

the Shift-button is yellow [f] and the Ctrl-button is blue [g]

There are still 2 keys (~ and \) on US-keyboards which have no corresponding keys on the HP71B, so I've commented out these 2 keys (the are at the end of the KMI file) - make your own shortcuts for them if you want.

Here's the link for this file:


PS, I forgot to say: many thanks to Christoph for this fantastic Emu71 program - this is really a great gift for all emulator fans like me! :-)

Edited: 20 July 2011, 1:56 p.m.

Possibly Related Threads...
Thread Author Replies Views Last Post
  Update of Emu71 to v1.05 Christoph Giesselink 0 729 09-24-2013, 04:22 PM
Last Post: Christoph Giesselink
  EMU71 on a web page! hugh steers 13 2,809 07-14-2013, 12:47 PM
Last Post: Namir
  EMU71 to go71b--is there a way? Les Wright 12 2,702 06-25-2013, 07:08 AM
Last Post: Mike (Stgt)
  Update of Emu71 to v1.04 Christoph Giesselink 8 1,970 04-18-2013, 04:11 AM
Last Post: Mike (Stgt)
  Update of Emu71 to v1.03 Christoph Giesselink 6 1,729 02-24-2013, 09:12 PM
Last Post: Gerson W. Barbosa
  Installing Conn4x on Windows 8 Jerry Raia 2 818 01-04-2013, 10:28 AM
Last Post: Jerry Raia
  Only slightly OT: HOW TO Setup SVN+SSH on Windows® Marcus von Cube, Germany 3 1,206 12-24-2012, 04:53 AM
Last Post: Walter B
  Update of Emu71/Win to v1.02 Christoph Giesselink 5 1,350 09-20-2012, 04:27 AM
Last Post: Mike (Stgt)
  wp34s - Windows ... necessary or not? Glenn Becker 1 813 06-22-2012, 09:40 AM
Last Post: rgray
  How to: EMU71 on an Android Tablet Guenter Schink 56 10,046 06-15-2012, 08:50 AM
Last Post: Valentin Albillo

Forum Jump: