1. General
Emu71 is based on the sources of Emu48 and is an emulator for the Hewlett Packard Titan calculator HP-71B hardware. This calculator emulation is based on the 1LK7 Saturn CPU, the 1LF3 display driver, the 1LG7 ROM and 1LG8 RAM chips. The calculator emulation can be expanded by the emulation of additional RAM and ROM modules and by simulations of the HP-IL module inside the ports 0 to 5.
2. Acknowledgements
A big thank to Jean-François Garnier for his technical assistance and his code simulating the HP-IL I/O processor. Also thanks to Sebastien Carlier for his Emu48 v1.0, without him this emulator would never have been created. And finally I want to thank all the people making the IDS documents available.
3. ROM Images
You need ROM images. The ROM images are copyrighted by Hewlett Packard and I have no license to distribute them. Please don't ask me, I will not send you mine.
This is a ROM dump program from Jean-François Garnier reading the HP-71B ROM content and sending the data to a HP-IL printer device. In this case I prefer using his PIL-Box with ILPer for capturing the data in the ILPer Printer area.
10 DIM A$[64]
20 A=HTD("0") ! start address of ROM to transfer
30 FOR I=0 TO 64*32-1 ! length of ROM (here for 64Kb)
40 A$=PEEK$(DTH$(A+I*64),64)
50 OUTPUT :1 ;A$
60 NEXT I
The output format is a memory dump file like used by Derek S. Nickel's Voyager program. With the program Dmp2rom.exe from the file tool package the memory dump file can be converted to the necessary ROM file format.
ROM images are valid in a packed (even address lower nibble, odd address higher nibble) or unpacked (one nibble per byte with even address first) form. Files in the packed form have the same format like the files used in Emu71 for DOS from Jean-François Garnier. They can be validated with the TITANCHK.EXE command line utility. To do that, start a Command Prompt while running Windows, and type:
Titanchk <image-file>
where <image-file> is the ROM image you want to test. As result you will get a report of the ROM checksums.
4. Installation
To install Emu71, just unzip the emulator and the required emulator skins into an empty directory. Finally copy your ROM images into this directory and adjust the ROM image name to the name used in the corresponding KML script. When you first run Emu71, it will detect the directory in which you installed it, and will write the configuration to the registry at HKCU\Software\Emu71.
5. How to Start
When Emu71 is installed and you have put the valid ROM image into your Emu71 installation directory, you can start Emu71. You'll see a "Choose Your KML Script" box.
KML scripts in fact define the visual aspect of Emu71, the behavior of the buttons, of the keyboard, ... It's a GREAT way to customize your copy of Emu71.
Check that the path in the "Emu71 Directory" text area is correct. Modify it if the directory in which you installed Emu71 is not the directory displayed. Click the refresh button ("V") after modifying it to update the list box or use the ("...") button to start the directory browser.
Choose a KML script in the list box for your calculator ROM you put into Emu71's directory.
Available scripts from the author at the moment are:
- Christoph's Real HP71B for 800x600
- Christoph's Real HP71B for 1024x768
These scripts use "HP71B.ROM" as Name for the ROM image file.
If you are interested in writing new scripts, get the KML 2.0 documentation from the authors Emu48 page.
Once you have selected a script, press OK to start the emulator. In most cases, when Emu71 crash after pressing the OK button, you are using an invalid ROM image. While it's running, you can use the View/Change KML Script... command to change the visual aspect of Emu71.
6. Command Line
The command line syntax is "Emu71 [file]". The parameter sets the filename for the emulation data independent from the "LastDocument" setting. The argument is optional.
7. Virtual Keyboard
There are two ways to use the virtual keyboard on the emulated calculator:
The easiest way to use the emulated calculator is using the mouse. The KML script define buttons with an area where mouse input is active. The mouse cursor change from an arrow to a hand cursor in these areas. The state of the virtual key follow the state of your left mouse button. When the mouse cursor leaves the virtual key area the virtual button automatically release. In some cases you need to press more than one key on the emulator. For these cases press the virtual key with the right mouse button. When you release the mouse button or leave the area of the virtual key, the key is still hold. To release all hold virtual buttons, just use the left mouse botton again. A single release of a hold virtual key isn't possible.
Another convenient way is using the PC keyboard. The KML script language support a large variety of commands to implement this feature. So keyboard usage depends on your used KML script and not on the emulator. Because of this it's impossible to say what's happen when you press a key on the PC keyboard. For further details read the KML 2.0 documentation mentioned before please.
8. File Menu
8.1 New...
Creates a new emulation session. You're asked for a new KML script where you can select the calculator type and skin to emulate.
8.2 Open...
Opens an existing emulation session. The emulation continues at the same position where the loaded session was aborted.
8.3 Save
Saves the current running session with the actual name.
8.4 Save As...
Saves the current running session with a new name. You're also get in this dialog when you Exit a new session without a state file name.
8.5 Close
Closes the current session without closing the emulator.
8.6 Settings
This calls the Settings dialog. This dialog has three sections: General, Disassembler and Sound.
8.6.1 General section
- Authentic Calculator Speed
When this option is checked, the emulation speed will be similar to the real calculator.
- Always On Top
When this option is checked, the emulator windows will always be the topmost one.
- Activation Follows Mouse
This option enables a X-Mouse style windows activation. When the mouse is moved over the emulator window, the emulator is getting the focus and popping up into foreground.
- Single Instance
When this option is checked, the program is only allowed to run in a single instance. If another running instance is detected, the detected instance is set into foreground as active window and the current instance is terminated.
- Automatically Save Files
When this option is checked, the current state file will be saved automatically when you change to another state file, but not when you close the emulator program.
- Automatically Save Files On Exit
When this option is checked, the current state file will be saved automatically at the end when the emulator program is closed.
- Always Show KML Compilation Result
When this option is checked, you see the results of the KML (Keyboard Macro Language) interpreter at every emulator startup.
8.6.2 Disassembler section
Choosing the assembler syntax:
- HP Mnemonics
This is the standard syntax used by HP.
- Class Mnemonics
Class (Clarke assembler) was written by Lutz Vieweg in 1991, at a time when HP had not published their own development tools. The syntax is very similar to the AG and STAR mnemonics used at this time.
8.6.3 Sound section
Choosing the sound engine:
- Speaker
Using the internal PC speaker.
- Wave
Using the sound card with speakers for beeper output. The output volume can be selected with the Volume slider.
8.7 Exit
Quit emulation. The default actions at finishing are defined in the Settings dialog. If the current session is "Untitled" you are asked for a session file name using the Save As... dialog. If you quit the emulator without a given filename, you're asked for choosing a KML script at next startup.
9. Edit Menu
9.1 Port Configuration...
With the port configuration dialog you can add a large variety of different modules from various manufactures to your HP-71B emulation. At the moment Emu71 can emulate RAM and ROM modules and simulate the HP-IL Interface HP 82401A or the combination of the Dual HP-IL Adapter HP 82402A with two HP-IL Interface HP 82401A modules. The HP-IL Interface simulation only support a few I/O processor commands which are necessary to access display, printer and mass storage devices. A check of the HP-IL Interface module simulation with the Diagnostic ROM fails on every I/O processor dependent test.
To allow to emulate or simulate most of the modules published by manufactures like HP (Hewlett Packard), HHP (Handheld Products) and CMT (Corvallis Microtechnology Inc) the port configuration interface is very flexible but not easy to understand.
Therefore we have to learn something about the memory design of the HP-71B. In the HP-71B syntax, a PORT is a memory device of a specified size. A module or better say a housing in a PORT slot can contain more than one PORT. A good example for understanding are the internal 16KB Port0 memory. The memory is divided into four chunks of 4KB accessible with PORT(0), PORT(0.01), PORT(0.02) and PORT(0.03). A HHP 96KB module for the Port5 slot is normally shown as three ports (5, 5.01, 5.02) of 32KB each. In the HP-71B literature the name "port" is used in two contexts. First, like used above, as memory device and second as name of a physical port slot. Don't mix them up please. A memory port itself can be RAM or ROM. Memory Mapped I/O parts aren't shown by the operating system in this context. ROM ports can be hard or soft configured. An example for a hard configured ROM is the ROM of the operating system. ROM in modules are normally soft configured like RAM modules. The two exceptions are the FORTH module (HP 82441A) and the HP-41 translator module (HP 82490A) which have a soft and a hard configured ROM inside.
What's the difference between soft and hard configured ROM's?
A hard configured ROM has a fixed base address programmed by the manufacturer of the ROM, whereas, at a soft configured ROM, the base address is chosen by the operating system at runtime. Soft configured modules responds with an ID telling their type (RAM/ROM), the size and if they are the last chip in a multiple chip queue.
- ROM
HP designed the 1LG7 ROM chip for this purpose. The chip has a size of 16KB. To implement a larger ROM you can combine multiple ROM chips to a logically one. The last chip responds an ID being the last chip in the queue.
- RAM
HP designed the 1LG8 RAM chip for this purpose. The chip has a size of 1KB. This chip is used to build the internally 16KB of the Port 0 RAM or used in 4KB memory module 82420A. In literature you find sometimes the synonym "Hybrid chip". The chips in a hybrid RAM are linked together by the Daisy chain DOUT / DIN pins and on the last chip the ID pin is set to high that the chip responds an ID being the last chip in the queue. Internally still each chip has to be configured by the OS but the "last chip marker" tells the OS that these chips should be treat as single chip for the user.
What does this mean in practise? Each chip in a hybrid RAM/ROM must have a size which is a result of a power of 2 operation (1, 2, 4, 8, 16, 32, ...) and can only be located on a base address which is a multiple of it's own size.
Companies, especially HHP and CMT, made 3rd party RAM modules with 32KB or larger around the 1LQ4 interface chip. With one 1LQ4 interface chip normally 32KB (4 * 8KB or 1 * 32KB Static RAM) can be built and these interface chips can be combined to single Ports showing as 5, 5.01, 5.02, ... or to hybrid chips larger than 32KB. Nevertheless, all RAM modules belong to the Main RAM after plugging. They can separately freed to Independent RAM.
The port configuration and the data is saved in the Document file. Because the content of most ROM images is copyrighted, only a link to the image file is saved. I suggest to place ROM images of modules in the same directory like the KML files. In this case only a relative path in the document is saved. This let you use the document files on other PC's with a different directory structure or drive letters without path change to the ROM image files at document loading. The content of RAM data is saved as image in the document file.
9.1.1 Overview
9.1.1.1 Group Box "Port"
9.1.1.1.1 Port selection
Inside the group box you see on right hand the current port slot selection. Default is "Port1" at startup. Available ports are Port0, Port1, Port2, Port3, Port4 and Port5. Port0 drive the internal RAM and the port slot at backside of the calculator housing. This slot is normally reserved for the HP-IL (HP 82401A) or Dual HP-IL (HP 82402A) module. The Port1 to Port4 slots are at the front and Port5 is the card reader slot. From software aspect, there's no difference between these port slots. From the hardware aspect, it was impossible in the 80ties to put a 160KB RAM module, because of it's size, in a Port1 - Port4 slot. But here we are on an emulator, and the virtual 160KB RAM module is mechanically not really larger than the virtual standard 4KB module.
9.1.1.1.2 Port list box
On left hand is a list box showing the ports in the current port slot.
Explanation of such a port line:
- RAM, 4K (4)
Type: RAM, Size: 4K Byte, No. of Chips: 4
- RAM, 32K (1)
Type: RAM, Size: 32K Byte, No. of Chips: 1
- ROM, 16K (1), "FORTHROM.BIN"
Type: ROM, Size: 16K Byte, No. of Chips: 1, Filename: FORTHROM.BIN
- HRD, E0000, 32K (2), "HRDFORTH.BIN"
Type: HRD, Hard Wired Address: E0000, Size: 32K Byte, No. of Chips: 2, Filename: HRDFORTH.BIN
- HPIL, 16K (1), "HPILPROM.BIN", "localhost",
60001, 60000
Type: HPIL, Size of ROM: 16K Byte, No. of Chips: 1, Filename: FORTHROM.BIN, IP-Address of next device in virtual IL: localhost, IP-Port of next device in virtual IL: 60001, my IP-Port for virtual IL data listening: 60000
9.1.1.1.3 Data manipulation of independent RAM
In the list box you're able to select a single port definition. Calling the context menu (right mouse button) for the selection of a memory port you get a menu with the two entries:
- "Load Memory Data..."
- "Save Memory Data..."
The items of the context menu are grayed when you selected a ROM or HRD module type or a RAM configured as MAIN memory. Only in the case that the selected RAM module is configured as independent RAM, the menu entries are enabled. Independent RAM has the signature #B3DDDDDE at the beginning of the port.
With "Save Memory Data..." you can write the independent RAM module data to a file. With "Load Memory Data..." you directly overwrite the current independent RAM module data with file data (when you leave the "Port Configuration" dialog with the "Cancel" button the change is persistent). In this case the module size has to match. The file format is compatible with independent RAM files from "Emu71 for DOS".
9.1.1.1.4 Changing HP-IL TCP/IP settings
When you call the context menu (right mouse button) on a HP-IL module type you get a menu with the entry:
- "Change TCP/IP Settings..."
With "Change TCP/IP Settings..." you get a dialog where you can change the IP-Address of the next device ("Out TCP/IP Address"), the IP-Port of the next device ("Out Port (49152 - 65535)") and my IP-Port ("In Port (49152 - 65535)") for data listening in the virtual IL. The changes are persistent, even if you leave the "Port Configuration" dialog with the "Cancel" button.
9.1.1.1.5 Button "Add"
This button allows you to add a single port to the port slot. If there's no port selected in the "Port list box", the port will be appended at the end. If a port is selected, the new port will be inserted before the selection. If the "Add" button is disabled, you are already in the port configuration mode.
9.1.1.1.6 Button "Delete" / "Abort"
This button has two meanings, dependent on the current mode:
- Delete
If there's no port selected in the "Port list box" you delete the complete port slot content. If a port is selected, only the selected port is deleted.
- Abort
You are in the port configuration mode. Press "Abort" to leave the port configuration mode without applying the settings.
9.1.1.1.7 Button "Apply"
This button transfer the data in the Configuration group box to the list box.
9.1.1.2 Group Box "Configuration"
The fields in the "Configuration" group box are enabled when you press the "Add" button.
9.1.1.2.1 Combo box "Module Type"
In this field you can choose the module type. Available are "RAM", "ROM", "HRD" and "HPIL".
- RAM
This selects a soft configured RAM port. The RAM content is filled with zero at startup.
- ROM
This selects a soft configured ROM port. This enables the edit field "Filename" for the ROM image filename. The ROM image file must be in a packed (even address lower nibble, odd address higher nibble) or unpacked (one nibble per byte with even address first) form. Files in the packed form have the same format like the files used in Emu71 for DOS from Jean-François Garnier.
- HRD
This selects a hard configured ROM port. This enables the edit field "Filename" for the ROM image filename and the "Hard Wired Address" combo box. The ROM image file format must be equal to the format described in the ROM section above. In the "Hard Wired Address" combo box you can select the address "00000" or "E0000". If you choose address "00000" and this is a module in the Port1 slot, the internal ROM is deactivated over the OD pin simulation. This is normally to attach the HP-71B diagnostic ROM. Address "E0000" is the address used for the hard wired port in the FORTH and in the HP-41 translator modules.
- HPIL
This selects the HP-IL Interface HP 82401A module. A HP-IL Interface internally consists of two ports, an invisible I/O port with a size of eight bytes and a standard ROM port. So this enables the edit field "Filename" for the ROM image filename and a "Configure" button for adjusting the TCP/IP settings for the virtual IL.
With "Configure" you get the dialog "HP-IL Interface Setup" where you can change the IP-Address of the next device ("Out TCP/IP Address"), the IP-Port of the next device ("Out Port (49152 - 65535)") and my IP-Port ("In Port (49152 - 65535)") for data listening in the virtual IL.
9.1.1.2.2 Combo box "Size"
This field is only relevant for "RAM" ports. A "ROM" port get it's size information from the image file size. Available are different sizes from 512 bytes up to 160 KB. Be aware that this size is the overall size of a single RAM port and not the overall size of the RAM module in the port slot! So the HHP 96KB module from above consists of three 32KB ports.
A special case is the "Datafile" selection. Some of the larger 3rd party RAM modules have a backup battery allowing to remove the RAM module without memory loss for the case that all ports in the module are configured as independent RAM. To "plug" such a RAM module into the emulator session you must have a file image of the RAM content. When you select "Datafile" the edit field "Filename" is enabled. Here you can enter the RAM image filename. At port configuration dialog exit, the RAM content is filled with the data from the RAM image file. The original RAM image file will be untouched. The file format of independent RAM ports is compatible with the port RAM files of the "Emu71 for DOS" emulator.
9.1.1.2.3 Combo box "No. of Chips"
As I mentioned before a memory chip has always a size created by power of 2 operation. So a chip of 96KB size isn't possible, it must be a hybrid chip of 3 or a multiple of 3 chips (3*32KB, 6*16KB, ...). Furthermore I mentioned that a chip can only be located on a base address which is a multiple of it's own size. For a non existing 256KB chip this would be the addresses #00000 and #80000 in the Saturn address area.
When we go back to the mid of the 80ties the number of memory chip for the Saturn bus was very limited. We had the 1LG7 ROM chip with a size of 16KB, the 1LG8 RAM chip with a size of 1KB and the 1LQ4 interface chip for multi purpose use. Many 3rd party manufactures build there 32KB modules with one 1LQ4 chip and 4 * 8KB static RAM chips. A single 32KB instead of 4 * 8KB chips would be even smaller, but was more expensive then 4 8KB chips. A 48KB ROM normally consists of 3 * 16KB 1LG7 ROM chips.
Many people don't really know what they have to choose, so this combo box has also an "Auto" selection which is default. "Auto" choose automatically a reasonable settings depending on the "Module Type" and "Size".
- Auto selection for a RAM port
If the overall module size is a multiple of "32KB" then the "No. of Chips" is calculated by "overall module size" / "32KB". This is because most manufactures used a 1LQ4 interface chip with 4x 8KB static RAM to create a 32KB RAM unit. If the overall module size is not a multiple of "32KB" then the "No. of Chips" is calculated by "overall module size" / "1KB". For the HP 4K RAM module HP82420A (4x 1LG8) then you get the correct "No. of Chips" setting of "4".
- Auto selection for a ROM port
ROM's normally build out of a multiple of 1LG7 chips (16KB), so if the overall module size is a multiple of "16KB" then the "No. of Chips" is calculated by "overall module size" / "16KB". In all other cases a single chip is selected. The automatic setting is wrong when you simulate the EEPROM part of a EEPROM/RAM module.
9.1.1.3 Button "OK"
Apply all configuration changes and quit the Port Configuration dialog.
9.1.1.4 Button "Cancel"
Discard all configuration changes (with the exception of direct independent RAM data overwriting) and quit the Port Configuration dialog.
9.1.2 Module examples
All examples also work with "No. of Chips" Auto setting. The image file names for the ROM modules may differ to your image copy.
9.1.2.1 HP 82420A 4KB memory module in Port2 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port2"
- Delete Port2 content if necessary
- Press "Add" Type: RAM, Size: 4K Byte, No. of Chips: 4
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.2 CMT or HPP 32KB memory module in Port3 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port3"
- Delete Port3 content if necessary
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.3 CMT or HPP 64KB memory module (2x 32KB ports) in Port5 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port5"
- Delete Port5 content if necessary
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.4 HPP 96KB memory module (3x 32KB ports) in Port5 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port5"
- Delete Port5 content if necessary
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.5 HPP 96KB memory module (1x 32KB, 1x 64KB ports) in Port5 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port5"
- Delete Port5 content if necessary
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "Add" Type: RAM, Size: 64K Byte, No. of Chips: 2
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.6 HPP 160KB memory module (5x 32KB ports) in Port5 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port5"
- Delete Port5 content if necessary
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "Add" Type: RAM, Size: 32K Byte, No. of Chips: 1
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.7 HP 82480A Math Pac module in Port2 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port2"
- Delete Port2 content if necessary
- Press "Add" Type: ROM, No. of Chips: 2, Filename: MATHROM.BIN
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.8 HP 82441A FORTH module in Port3 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port3"
- Delete Port3 content if necessary
- Press "Add" Type: ROM, No. of Chips: 1, Filename: FORTHROM.BIN
- Press "Apply"
- Press "Add" Type: HRD, No. of Chips: 2, Filename: HRDFORTH.BIN, Hard Wired Address: E0000
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.9 HP-71B Diagnostic ROM module in Port1 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port1"
- Delete Port1 content if necessary
- Press "Add" Type: HRD, No. of Chips: 1, Filename: DIAG71.ROM, Hard Wired Address: 00000
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.10 HP 82401A HP-IL module in Port0 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port0"
- Delete Port0 content if necessary
- Press "Add" Type: HPIL, No. of Chips: 1, Filename: HPILROM.BIN
- Press "Configure" to open the "HP-IL Interface Setup" dialog and enter the virtual HP-IL parameters
- Press "OK" to quit the "HP-IL Interface Setup" dialog
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.1.2.11 HP 82402A Dual HP-IL module in Port0 slot
- Switch off calculator
- Open the "Port Configuration" dialog
- Select "Port0"
- Delete Port0 content if necessary
- Press "Add" Type: HPIL, No. of Chips: 1, Filename: HPILROM.BIN
- Press "Configure" to open the "HP-IL Interface Setup" dialog and enter the virtual HP-IL parameters for the 1st loop
- Press "OK" to quit the "HP-IL Interface Setup" dialog
- Press "Apply"
- Press "Add" Type: HPIL, No. of Chips: 1, Filename: HPILROM.BIN
- Press "Configure" to open the "HP-IL Interface Setup" dialog and enter the virtual HP-IL parameters for the 2nd loop
- Press "OK" to quit the "HP-IL Interface Setup" dialog
- Press "Apply"
- Press "OK" to quit the "Port Configuration" dialog
- Switch on calculator
9.2 Copy Screen
Copy the screen content to the clipboard.
9.3 Copy Stack
This is work in CMD and in CALC mode.
Copy the display content as "String" to the clipboard.
9.4 Paste Stack
This only work in CMD mode.
Paste the text field content of the clipboard to the command buffer of the calculator.
9.5 Reset Calculator
This emulates the Reset pin of the internal CPU.
9.6 Backup
- Backup Save
This saves the current emulator status into a backup slot. If the backup slot already contain data, it will be overwritten.
- Backup Restore
This restores a previous saved emulator status without request. If you changed the calculator model meanwhile, the emulator will switch back to the old model.
- Backup Delete
This deletes the data in the backup slot.
10. View Menu
10.1 Change KML Script...
This allows you to change the skin of the current emulated calculator. In opposite to the New... command you see only scripts emulating the same calculator.
11. Tools Menu
11.1 Disassembler...
This is a simple disassembler.
Enter the address to disassemble in hexadecimal into the "Address (HEX)" field and press <Return>. With the "Next Address" button the next opcode is disassembled. With the "Copy Data" button you can copy all selected lines inside the list box to the clipboard.
11.2 Debugger...
The assembler code debugger of the emulator. For more details refer to the extra documentation of the debugger please.
11.3 Macro
The keyboard macro recorder unit.
11.3.1 Macro Record...
Prompts a dialog to enter the macro file for the data to record. After accepting the confirm message, every key event is recorded into the macro file with it's time information.
11.3.2 Macro Play...
Prompts a dialog box to ask for the keyboard macro file to play. The replay starts immediately after selecting the file.
11.3.3 Macro Stop
Stops recording or replaying a keyboard macro file.
11.3.4 Macro Settings...
Settings for the Macro Replay mode
- Real
Replay macro with the original recording speed.
- Manual
Replay macro with the speed set by the speed slider.
12. Help Menu
12.1 Help Topics
Call this document.
12.2 About Emu71...
The version, copyright and license message...
13. Virtual HP-IL
The HP-IL (Hewlett Packard Interface Loop) is an interface system designed for connecting handheld devices with peripheral hardware. Therefore the devices are connected over a simple 2-wire cable in a loop. This allows to produce low-cost and lightweight peripherals.
Today we are simulating the handheld devices and also the peripherals. It makes for example no sense to save data on a 3½ inch floppy disk any more. The data is much safer on a hard disk, flash memory or on an optical media. Also printers with a HP-IL interface are quite old and rare.
Jean-François Garnier published his PIL-Box project in 2009 to combine real HP-IL hardware with virtual devices on a PC. He called his "HP-IL Peripheral emulator" ILPer. ILPer simulates a printer and a mass storage device on a PC connected over the PIL-Box hardware with the real HP-IL world.
With Emu71 and ILPer we have now completely virtualized hardware devices. So in consequence we have to virtualize also the HP-IL system. I chose TCP/IP as transport protocol for the single data frames. Choosing TCP/IP as transport protocol gives the advantage of communicating with (virtualized) HP-IL devices around the world. Each virtual HP-IL device contain a TCP/IP server listening for data frames on the specified port number and a TCP/IP client sending the data frames to a port of the next virtual device. A HP-IL data frame is normally 11 bits long, but TCP/IP is a byte oriented protocol, so each data frame on TCP/IP is 16 bits (2 bytes) long. The remainder upper five bits are filled with zero. The two bytes of a frame are transferred in network byte order. ILPer since v1.4 supports the virtual HP-IL mode.
14. License
Emu71 - A HP-71B Emulator
Copyright (C) 2012 Christoph Gießelink
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA