diff options
author | 2016-11-27 20:09:34 -0600 | |
---|---|---|
committer | 2016-11-27 20:16:00 -0600 | |
commit | 36ea0c92564c39656f78c79fc7196129d51efbce (patch) | |
tree | 9082eb75d0783b0398aab6936dc7dd013bdcc45b /src/devices/machine/z80dart.cpp | |
parent | c54c53b1c5e22fbd86a0782333d08a42fa183148 (diff) |
z80dart: set the vector status bits to 1 at eoi (nw)
Diffstat (limited to 'src/devices/machine/z80dart.cpp')
-rw-r--r-- | src/devices/machine/z80dart.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/devices/machine/z80dart.cpp b/src/devices/machine/z80dart.cpp index 4a3db5ca229..a2604e38fd6 100644 --- a/src/devices/machine/z80dart.cpp +++ b/src/devices/machine/z80dart.cpp @@ -882,6 +882,16 @@ void z80dart_channel::control_write(uint8_t data) // return from interrupt LOG(("Z80DART \"%s\" Channel %c : Return from Interrupt\n", m_owner->tag(), 'A' + m_index)); m_uart->z80daisy_irq_reti(); + if((m_uart->m_variant == z80dart_device::TYPE_I8274) || (m_uart->m_variant == z80dart_device::TYPE_UPD7201)) + { + if (m_uart->m_chanB->m_wr[1] & z80dart_channel::WR1_STATUS_VECTOR) + { + if((m_uart->m_chanA->m_wr[1] & 0x18) == z80dart_channel::WR2_MODE_8086_8088) + m_uart->m_chanB->m_rr[2] = (m_uart->m_chanB->m_wr[2] & 0xf8) | 0x07; + else + m_uart->m_chanB->m_rr[2] = (m_uart->m_chanB->m_wr[2] & 0xe3) | 0x1c; + } + } break; } break; |