diff --git a/src/emu/machine/mos6551.c b/src/emu/machine/mos6551.c index 3818f19071e..e50cf53c420 100644 --- a/src/emu/machine/mos6551.c +++ b/src/emu/machine/mos6551.c @@ -202,6 +202,18 @@ void mos6551_device::update_serial() { int brg = m_ctrl & CTRL_BRG_MASK; + int num_data_bits = 8; + int stop_bit_count = 1; + int parity_code = PARITY_NONE; + + switch (m_ctrl & CTRL_WL_MASK) + { + case CTRL_WL_8: num_data_bits = 8; break; + case CTRL_WL_7: num_data_bits = 7; break; + case CTRL_WL_6: num_data_bits = 6; break; + case CTRL_WL_5: num_data_bits = 5; break; + } + set_data_frame(num_data_bits, stop_bit_count, parity_code, false); if (brg == CTRL_BRG_16X_EXTCLK) @@ -223,18 +235,6 @@ void mos6551_device::update_serial() { set_rcv_rate(m_ext_rxc / 16); } - - int num_data_bits = 8; - int stop_bit_count = 1; - int parity_code = PARITY_NONE; - - switch (m_ctrl & CTRL_WL_MASK) - { - case CTRL_WL_8: num_data_bits = 8; break; - case CTRL_WL_7: num_data_bits = 7; break; - case CTRL_WL_6: num_data_bits = 6; break; - case CTRL_WL_5: num_data_bits = 5; break; - } } if (m_cmd & CMD_DTR) diff --git a/src/emu/machine/z80dart.c b/src/emu/machine/z80dart.c index fe36bb6152a..4dcd79289e3 100644 --- a/src/emu/machine/z80dart.c +++ b/src/emu/machine/z80dart.c @@ -1303,20 +1303,6 @@ WRITE_LINE_MEMBER( z80dart_channel::txc_w ) void z80dart_channel::update_serial() { - int clocks = get_clock_mode(); - - set_data_frame(num_data_bits, stop_bit_count, parity_code, false); - - if (m_rxc > 0) - { - set_rcv_rate(m_rxc / clocks); - } - - if (m_txc > 0) - { - set_tra_rate(m_txc / clocks); - } - int num_data_bits = get_rx_word_length(); int stop_bit_count = get_stop_bits(); int parity_code = PARITY_NONE; @@ -1328,6 +1314,20 @@ void z80dart_channel::update_serial() else parity_code = PARITY_ODD; } + + set_data_frame(num_data_bits, stop_bit_count, parity_code, false); + + int clocks = get_clock_mode(); + + if (m_rxc > 0) + { + set_rcv_rate(m_rxc / clocks); + } + + if (m_txc > 0) + { + set_tra_rate(m_txc / clocks); + } }