StartStatusScreenshotsChangelogResources

HXEmu - Epson HX-20 Emulator

HXEmu is a open-source Epson HX-20 emulator written in C++ for Windows and Linux.
It's not available for download since it's not yet functional, but it's getting close!

This project is also a documentation project for the HX-20. I want everything to be available!
Including a software archive, so if you've got ROMs, source code, dumps or anything else that could be of interest, please contact me.
Got microcassettes and a player? Use hxtape (PHP) to dump them using your PC.

The schematics that I've found on the internet has been lacking in quality, so I dug up the schematics in the original documentation I have and did some scans of my own. However they must be cleaned up and assembled before they can be made available for download.

IRC channel for this project is #HXEmu on Freenode.
If you like this project, please donate:

2012-02-19

I haven't worked on HXEmu for quite some time but now I'm back again! The goal is still getting keyboard input to work properly and in the process I'm cleaning up a lot in the 6301 implementation, finishing up everything that's left and making things more portable.
This includes proper handling of operating modes and ports/pins, while keeping stuff like the simplified memory bus and serial implementation.
In the end I can hopefully run the slave CPU in single-chip mode with the mask ROM as well instead of using a faked CPU, although that's a way later project since it's not really necessary.

2011-09-23

So the biggest problem I had was not being able to properly test code on both the real and the emulated hardware, however I recently bought an mbed (ARM development board) to play with and realized that it's fast enough (96MHz CPU, 24MHz I/O) to directly push data from a ROM image onto the memory bus of the HX-20. So I hooked it up, wrote some code and it works!
This results in testing being a lot easier and I've already fixed some bugs as I'm writing and running the testing ROM. The ROM is copied to the mbed's flash storage via USB and loaded by resetting the mbed.


More pictures: #1, #2

2011-06-28

Fixing some opcodes got the cursor to disappear from the menu. The trap was caused by the keyboard interrupt occuring too fast, which was possible because the code cleared the interrupt CCR bit, so eventually the stack overwrote the interrupt vector addresses.
However, it still doesn't respond to keyboard input. It reads the pressed key(s), but doesn't seem to do anything with them.

2011-06-27

There haven't been any updates in a while because I've been quite busy. However, I've worked some on the keyboard, but when I trigger an interrupt with the keyboard input interrupt flag set, this happens...

Also it sends invalid commands to the slave CPU. I'm guessing it's because of an opcode not being properly implemented, so we'll see what happens after I go through the remaining ones. Also the cursor is visible in the main menu, which it really shouldn't be.

2011-05-11

We have a menu!

2011-05-07

Everything is working like it should (or at least how it used to work) in the C++ version now. I've also found a microcassette player and the full command reference for the PD7227 LCD controller/driver IC.

2011-04-05

The software archive is now available, although it's just a listing at the moment.
It will be possible to download software and dumps from it later on, even directly from HXEmu.

Also, after moving HXEmu over to C++ I've run into various bugs which are taking some time to find, which is the reason for the lack of updates recently. I'm hoping to get these fixed soon so I can continue from where I left the old version.

2011-02-25

All opcodes are now implemented in the master CPU! This means that one of the four goals for version 0.2 is now complete.