Epson HX-20 Emulator
This software attempts to emulate the Epson HX-20 portable computer in a Linux terminal.
Features:
- Auto-loading and running of BASIC program text files through automatic key input.
- Dual HD6301 CPU setup supporting almost all instructions.
- LCD panel emulated as '#' pixels using curses in a large 120x32 terminal window.
- Optional LCD panel emulation with ASCII characters in a smaller 20x4 window.
- All 8 international character sets selectable: US, FR, DE, GB, DK, SE, IT, ES
- Most of the keyboard keys are supported, check source code for mapping.
- Selection between 16K (default) or 32K (expansion) RAM possible.
- RTC provided by actual system host clock, so no need to set it.
- Using "Ctrl/@" is not needed because the emulator already initializes the necessary data.
- Debugger with CPU trace and other memory dumping facilities available.
- RS-232 load (of a file) is possible at 1200 baud through debugger.
- RS-232 save (of a file) is possible at 4800 baud through debugger.
- Piezo speaker (audio) support through SDL2.
- External cassette emulation by reading or writing (Mono 8-bit 44100Hz) WAV files.
- Needs the 1.0 or 1.1 system ROM set for the master CPU and the ROM for the slave CPU to run.
- CRC32 check on system ROM files is performed on startup to ensure correct setup.
- Loading of a option ROM at address 0x6000 is also possible.
- Loading of S-records into the MONITOR to set memory through automatic key input.
- Redirect of "high speed" 38400 baud serial line to real TTY on host.
- Micro-printer emulation by printing dots to a specified file.
Known issues and missing features:
- No TF-20 floppy emulation.
- No micro-cassette emulation.
- DAA, SWI and WAI CPU instructions are not implemented.
- RS-232 does not emulate handshaking signals and RX is hardcoded to 1200 baud.
Tips:
- Use Ctrl+C to enter the debugger, then enter the 'q' command to quit the emulator.
- F9 is mapped to the "BREAK" key, used to break running BASIC programs.
- F8 is mapped to the "MENU" key, to get back to the HX-20 main menu.
Screenshot of the 120x32 pixel LCD emulation:
### ##### #### # ### ### # # # ## #
# # # # # # # # # # # #
# # # # # # # ### # #### ## ##### ## #### # ## ##### ###
# # #### # # # # # # # # # # # # # # # # #
# # # # # # # ### # # # # # # #### # # # #####
# # # # # # # # # # # # # # # # # # # #
### # # # ##### ### ### # # ### ## ### #### ### ### ##### ####
# # # ### # # ### ##### ### ####
## ## ## # # # # # # # # # #
# # # # # # ## # # # # # # #
# # # # # # # # # # # # # ####
# # # # # # ## # # # # # #
# # # # # # # # # # # # #
### # # ### # # ### # ### # #
### #### # ### ### ###
# # # # # # # # # # #
# # # # # # # #
# #### # # ### # #
# # # ##### # # #
# # # # # # # # # #
##### #### # # ### ### ###
ROM information and checksums:
Filename | Version | CRC32 | MD5 |
---|---|---|---|
basic1.rom | 1.0 | 33fbb1ab | 6b7541f35820ce50cc375e1fda39dfd9 |
basic2.rom | 1.0 | 27d743ed | ee29f72df2b55f21cfe8dd7fcc4e2e92 |
monitor.rom | 1.0 | ed7482c6 | a110e9d42af302fa36fbb2c2edb5fe88 |
utility.rom | 1.0 | f5cc8868 | 2e8a5acce5208341f7200277c8d398a5 |
basic1.rom | 1.1 | 4de0b4b6 | 0853e1c34c1183b6c8e0be63a6ed189e |
basic2.rom | 1.1 | 10d6ae76 | 3e1a2d2db6e41f15cb1f65b475f7c05c |
monitor.rom | 1.1 | 101cb3e8 | cd18aca262fdb4fa1f5d145e6039c141 |
utility.rom | 1.1 | 26c203a1 | 3d46c1cd4bc95ebf3d486499aadfd009 |
slave.rom | N/A | b36f5b99 | 51053c9c726edeef95d2debba8649f0c |
Information on my blog:
- Epson HX-20 Emulator
- Epson HX-20 Emulator Sound Support
- Epson HX-20 Emulator External Cassette Support
- Epson HX-20 Video Player
- Epson HX-20 Emulator MinGW Build
YouTube videos: