First post, by superfury
Exactly what effect does having the KEY(as it's documented using ports 3BF(value 3 or 1) and 3B8/3D8 setting bits 3&5 or not setting both bits to enable/disable the KEY have on writing and reading the extended CRTC registers?
It's documented that writes to extended CRTC registers other than 0x33(Implemented in Dosbox, which is half wrong) and 0x35(blocked in Dosbox, always allowed according to documentation, with only some bits write-protected bits by index 07h bit 7(the usual CRTC write protection)) are not done by the chips.
But what is the real effect of this KEY being not set(or being cleared, whatever you want to call it) on the reading of said registers? Will the reads of extended registers(past 0x18) succeed? Will they always read 0? Or will they float the bus and always read 0xFF?
I see different emulators doing different things on this:
PCem doesn't seem to protect or apply the KEY at all (all writes and reads, except to the VGA-documented register 07h bit 7 write-protected VGA(Not ET4000 ones) bits are just written to their respective registers! That's obviously against documentation?
Dosbox simply blocks any writes and reads to any extended register other than 0x33(so it's against documentation in blocking both writes and reads to register 0x35 completely for even the writable bits when the KEY isn't set). 0x35 is supposed to be writable, other than the protected bits by register 07h bit 7(CRTC Write-Protect bit).
I'm trying to get it correct in UniPCemu right now. Writes to other extended CRTC registers than 0x33/0x35 are blocked(0x35 has some bits write-protected by index 07h bit 7). Reads from extended CRTC registers are always allowed atm.
Anyone knows the exact behaviour on ET4000 and ET4000/W32, ET4000/W32i and ET4000/W32p chips?
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io