diff options
author | 2016-12-29 14:34:59 -0800 | |
---|---|---|
committer | 2016-12-29 14:34:59 -0800 | |
commit | 1fafe7706cbfcfc6e39c23c3c713fbb102557cbe (patch) | |
tree | e717407aa8f98f192a2095f28909c89f3af3a8e5 /src/devices/machine/z80dart.cpp | |
parent | f7a98c4a969478fca51faf30f588d59631394bd9 (diff) | |
parent | 2b74e4c0be91b86b408fca518af7518c1ea994c9 (diff) |
Merge https://github.com/mamedev/mame
Diffstat (limited to 'src/devices/machine/z80dart.cpp')
-rw-r--r-- | src/devices/machine/z80dart.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/devices/machine/z80dart.cpp b/src/devices/machine/z80dart.cpp index a2604e38fd6..a5ff95a4793 100644 --- a/src/devices/machine/z80dart.cpp +++ b/src/devices/machine/z80dart.cpp @@ -814,6 +814,7 @@ uint8_t z80dart_channel::control_read() void z80dart_channel::control_write(uint8_t data) { int reg = m_wr[0] & WR0_REGISTER_MASK; + uint8_t prev = m_wr[reg]; LOG(("Z80DART \"%s\" Channel %c : Control Register Write '%02x'\n", m_owner->tag(), 'A' + m_index, data)); @@ -944,7 +945,8 @@ void z80dart_channel::control_write(uint8_t data) LOG(("Z80DART \"%s\" Channel %c : Auto Enables %u\n", m_owner->tag(), 'A' + m_index, (data & WR3_AUTO_ENABLES) ? 1 : 0)); LOG(("Z80DART \"%s\" Channel %c : Receiver Bits/Character %u\n", m_owner->tag(), 'A' + m_index, get_rx_word_length())); - update_serial(); + if (data != prev) + update_serial(); break; case 4: @@ -953,7 +955,8 @@ void z80dart_channel::control_write(uint8_t data) LOG(("Z80DART \"%s\" Channel %c : Stop Bits %s\n", m_owner->tag(), 'A' + m_index, stop_bits_tostring(get_stop_bits()))); LOG(("Z80DART \"%s\" Channel %c : Clock Mode %uX\n", m_owner->tag(), 'A' + m_index, get_clock_mode())); - update_serial(); + if (data != prev) + update_serial(); break; case 5: @@ -963,7 +966,8 @@ void z80dart_channel::control_write(uint8_t data) LOG(("Z80DART \"%s\" Channel %c : Request to Send %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_RTS) ? 1 : 0)); LOG(("Z80DART \"%s\" Channel %c : Data Terminal Ready %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_DTR) ? 1 : 0)); - update_serial(); + if (data != prev) + update_serial(); if (data & WR5_RTS) { |