Oddly enough, using the EPC testsuite after fixing some issues with the test emulator (which is basically a stripped version of the normal emulator without any additional hardware, just CPU and RAM installed), there's a handful of tests going wrong now (mostly flags being weird somehow?):
- shifts
- bcdcnv
- jmpmov
- mul
Though that might be due to it using 808x logic or universal logic (386 testsuite-tested) for those instructions?
Though jmpmov's test failing is weird, as it's not supposed to be able to, unless going very wrong (it contains just jmp instructions, mov instructions and a single out instruction (don't now why though)).
Edit: Fixed jmpmov's test. There was an issue with juggling multiple CPU cores (in this case their lock behaviour, which is required for XCHG instructions and LOCK prefixes to behave properly without hanging the CPU). Those were leaving the test core on an invalid CPU core (out of valid range (buffer overflow) or on a CPU (structure) that's not actively emulated).
So that just leaves those shifts, bcdcnv and mul that are going wrong with the newly (hacked special case FLAGS register) 'NEC V30' emulation (actually a plain 80186 implementation).
Edit: Just tried the Generic Super PC/Turbo XT BIOS 3.1 again. On a XT with NEC V30 CPU it detects a 'V20 CPU', while erroring out somehow with "System error: 02" on VGA. On CGA it somehow managed to get itself into a loop waiting for the video base port +6 (the input status register to detect retrace), but instead managed to use base port of 0, thus reading the DMA controller's register which isn't setup at all, always reading 0 while waiting for it to set (and the wrong port of course) on using the CGA BIOS provided by the BIOS itself.
It's obvious there's something going very wrong there somehow.
System error 02 apparently means bad RAM?