FX-870P emulator
The program emulates the HD61700 microprocessor and uses the ROM dump from the original calculator, therefore it should function almost exactly like the real one.
It works on PC-compatible machines with Microsoft Windows operating system.
Program version 12, updated 2023/12/15
fx870_es.zip - Delphi 5 sources
fx870_em.zip - compiled executable
Usage: extract the files into an empty directory, then run the program fx870.exe
fx870_fa.zip - alternative face image, contributed by Mahmoud Yassine
Usage: Replace the file face.bmp in the directory where the program was installed.
- Following files contain the memory images, and are loaded when the program is started:
rom0.bin - processor's internal 6kB ROM
rom1.bin - external 128kB ROM
charset.bin - LCD controller's internal character ROM of size 1.5kB
ram0.bin - 64kB RAM
register.bin - processor's internal register file
- The updated files
ram0.bin
and register.bin
are saved when the program is terminated.
If they weren't found, they will be created.
In such case the memory has to be initialised with the ALL RESET button.
- The emulator can be operated with the mouse or the keyboard.
Special function keys:
Cursor keys: corresponding arrow keys
Page Up: red S
Page Down: CAPS
Esc: BRK
Insert: INS
Delete: DEL
Backspace: BS
Enter: EXE
F3: suspends the code execution and opens the debugger window
F4: invokes the communication utility
F9: Reset
Disassembly box
- On entry, the starting address matches the Program Counter, but it can be modified by clicking on the address in the first line.
New value must be confirmed with Enter.
- After clicking on a disassembled instruction, a new instruction can be typed.
As with the starting address, pressing Enter accepts the changes.
Only changes in the RAM area will be saved upon program termination, all ROM modifications will be lost.
Characteristics:
- labels and expressions aren't supported
- accepted are hexadecimal (with the prefix &H) and decimal numbers
- destination of relative jumps can be only specified as absolute address, not as displacement
Hex Editor box
- The HEX box allows viewing/changing the RAM contents only.
- It is possible to modify the starting address and the RAM contents by clicking on them.
Enter accepts the changes.
Registers box
- The contents of the registers can be modified by clicking on them.
Enter accepts the changes.
- The top line in the register box shows the state of the upper four bits of the Flag register.
They can be modified as well.
Main register file box
- The contents of the registers can be modified by clicking on them.
Enter accepts the changes.
Program execution control
- Closing the debugger windows resumes the program execution without tracing.
- Pressing the button [Run] in the Single step group box executes a single machine code instruction without servicing of the interrupts.
- To execute a specified number of machine code instructions type the required value to the field in the Number of steps group box, then press the associated [Run] button.
- The Breakpoint group box allows to specify condition that determine when the program execution should be interrupted.
Currently it only compares the Breakpoint Address typed in the field with the Program Counter.
When they match, the program execution is stopped and the debugger window reappears.
Some parameters of the emulator can be customised by editing the fx870.ini file with any text editor.
Description of the contents of this file:
OscFreq = 921
- This setting specifies the emulated CPU clock frequency in kHz.
Option2 = 0
- This setting specifies the state of the port P4 (language version): 0 for the English FX-870P, 1 for the Japanese VX-4.
To uninstall the emulator, simply delete the directory where it was installed.
The program doesn't modify anything outside its installation directory.
- The program includes a freeware component ThreadedTimer developed by Carlos Barbosa.
- The sound isn't supported.
- The scrolling function of the LCD controller command $8 isn't supported.
- Bugs may still lurk in the
rom0.bin
memory image.
FMEM is a RAM image editing tool.
It can display the usage status of ram0.bin and write/delete text files in the F0-F9 areas.
It is also possible to load machine language files into FBF/VX-MENU with the attached Pbf2FM.b
tool.