summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/z80dart.cpp
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2016-11-27 20:09:34 -0600
committer cracyc <cracyc@users.noreply.github.com>2016-11-27 20:16:00 -0600
commit36ea0c92564c39656f78c79fc7196129d51efbce (patch)
tree9082eb75d0783b0398aab6936dc7dd013bdcc45b /src/devices/machine/z80dart.cpp
parentc54c53b1c5e22fbd86a0782333d08a42fa183148 (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.cpp10
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;