From c8d7056b48c60a8ec79f6c7aee45649ff7f6c26d Mon Sep 17 00:00:00 2001 From: Wilbert Pol Date: Sun, 26 Dec 2010 08:19:09 +0000 Subject: [PATCH] z80dart.c: - The channel B modified interrupt vector can be read immediately after setting it. - Reading from a read register other than 0 also masks out the register index. [Wilbert Pol] --- src/emu/machine/z80dart.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/emu/machine/z80dart.c b/src/emu/machine/z80dart.c index f916d15631a..36b52a6cd59 100644 --- a/src/emu/machine/z80dart.c +++ b/src/emu/machine/z80dart.c @@ -995,6 +995,12 @@ UINT8 z80dart_device::dart_channel::control_read() int reg = m_wr[0] & WR0_REGISTER_MASK; + if (reg != 0) + { + // mask out register index + m_wr[0] &= ~WR0_REGISTER_MASK; + } + switch (reg) { case 0: @@ -1125,6 +1131,9 @@ void z80dart_device::dart_channel::control_write(UINT8 data) case 2: // interrupt vector + if (m_index == CHANNEL_B) + m_rr[2] = ( m_rr[2] & 0x0e ) | ( m_wr[2] & 0xF1);; + m_device->check_interrupts(); LOG(("Z80DART \"%s\" Channel %c : Interrupt Vector %02x\n", m_device->tag(), 'A' + m_index, data)); break;