Thanks for jumping in. Just
activate the keyboard workaround, as follows:
#define FORCE_RAINBOW_B_LOGO
#define KEYBOARD_WORKAROUND
#define KBD_DELAY 8 // (debounce delay, increase if necessary)
Necessary header files (important):https://dl.dropboxusercontent.com/u...W-100_KEYBOARD_WORKAROUND_2016_05_30.zipWithout 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:
https://dl.dropboxusercontent.com/u/37819653/BANNISTER/nvram_832.zipPlease 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.
https://dl.dropboxusercontent.com/u/37819653/BANNISTER/rx50diag.td0- 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) -
https://dl.dropboxusercontent.com/u/37819653/BANNISTER/rainbow.cppOf 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
https://github.com/shattered/retro-bios/tree/master/dec-rainbow100bAsk me anytime if you need more details
P.S.: help with untangling the monolithic driver would be very welcome