Last summer I came up with the grand idea of mating my Verilog implementation of the Busicom 141-PF with a simulated keyboard and printer using the Verilog Procedural Interface (VPI) and the Icarus simulator. However, a quick experiment showed that the simulation would run far too slowly to be useful.
Today, while browsing through this blog it, occurred to me that there is a Verilog compiler called Verilator that converts synthesizable Verilog into multithreaded C++. The published benchmarks suggest the resulting program runs as much as 100 times faster than simulation, and can take advantage of multi-core CPUs. That's pretty much what I'd need to make this work.
Verilator supports the SystemVerilog Direct Programming Interface (DPI), and support for a very limited subset of VPI. I suspect I could implement the keyboard and printer interfaces using either.