Thanks for jumping in. Just activate the keyboard workaround, as follows:

#define KBD_DELAY 8    // (debounce delay, increase if necessary)
Necessary header files (important):

Without it, emulation stops with fatal ERROR 13 (keyboard stuck). R.Belmont already has spent considerable time on this one, and might know more.

Note that the workaround patches the BIOS heavily. It is the only way to get the machine going (for now).

- because the workaround disables standard BIOS procedures, you will also need a proper NVRAM file for 832 K:

Please set max. RAM accordingly in DIP settings (RAM = 832K; important).

- The RX50DIAG image is very valueable when testing. Especially READ and WRITE tests (available under INDIVIDUAL TESTS, with key 3, then 4 for FLOPPY TESTS) and also SYSTEM INTERACTION - because it hangs emulation.

- Force interrupt ($D0 or $D4) kicks in sooner or later, and SEEK_WITH_VERIFY or SCAN_ID fails (see RX50DIAG, again).

I suspect the Z80 runs too fast now (as I-O and MEMORY WAIT states aren't properly implemented; compare diagrams above).

There is an option to STALL_ON_WAIT for the Z80 and i experimented with it, without success...

- Work in progress (no guarantees) -

Of course, it could also be a silly bug i overlooked for years (e.g. interrupt handling and arbitration in update_8088_irqs @ rainbow.cpp changed at some point, and it is unclear if it is presently correct).

- To help with emulation, i have disassembled most parts of the Rainbow BIOS and put it on Github, available under

Ask me anytime if you need more details smile

P.S.: help with untangling the monolithic driver would be very welcome

Last edited by Bavarese; 05/30/16 09:49 AM.