diff options
Diffstat (limited to 'src/mame/drivers/ptcsol.cpp')
-rw-r--r-- | src/mame/drivers/ptcsol.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/mame/drivers/ptcsol.cpp b/src/mame/drivers/ptcsol.cpp index 381e6361a31..750a85a6842 100644 --- a/src/mame/drivers/ptcsol.cpp +++ b/src/mame/drivers/ptcsol.cpp @@ -121,6 +121,7 @@ //#include "bus/s100/s100.h" #include "imagedev/cassette.h" #include "machine/ay31015.h" +#include "machine/clock.h" #include "machine/keyboard.h" #include "sound/spkrdev.h" #include "sound/wave.h" @@ -157,6 +158,8 @@ public: , m_cass2(*this, "cassette2") , m_uart(*this, "uart") , m_uart_s(*this, "uart_s") + , m_uart_clock(*this, "uart_clock") + , m_uart_s_clock(*this, "uart_s_clock") , m_rs232(*this, "rs232") , m_p_videoram(*this, "videoram") , m_p_chargen(*this, "chargen") @@ -211,6 +214,8 @@ private: required_device<cassette_image_device> m_cass2; required_device<ay31015_device> m_uart; required_device<ay31015_device> m_uart_s; + required_device<clock_device> m_uart_clock; + required_device<clock_device> m_uart_s_clock; required_device<rs232_port_device> m_rs232; required_shared_ptr<uint8_t> m_p_videoram; required_region_ptr<u8> m_p_chargen; @@ -420,8 +425,7 @@ WRITE8_MEMBER( sol20_state::sol20_fa_w ) m_cassette_timer->adjust(attotime::zero); // bit 5 baud rate */ - m_uart->set_receiver_clock((BIT(data, 5)) ? 4800.0 : 19200.0); - m_uart->set_transmitter_clock((BIT(data, 5)) ? 4800.0 : 19200.0); + m_uart_clock->set_unscaled_clock(BIT(data, 5) ? 4800 : 19200); } WRITE8_MEMBER( sol20_state::sol20_fd_w ) @@ -613,8 +617,7 @@ void sol20_state::machine_reset() s_clock = s_bauds[s_count] << 4; // these lines could be commented out for now if you want better performance - m_uart_s->set_receiver_clock(s_clock); - m_uart_s->set_transmitter_clock(s_clock); + m_uart_s_clock->set_unscaled_clock(s_clock); // boot-bank membank("boot")->set_entry(1); @@ -769,19 +772,23 @@ void sol20_state::sol20(machine_config &config) m_cass2->set_interface("sol20_cass"); AY51013(config, m_uart); // TMS6011NC - m_uart->set_tx_clock(4800.0); - m_uart->set_rx_clock(4800.0); m_uart->set_auto_rdav(true); // ROD (pin 4) tied to RDD (pin 18) + CLOCK(config, m_uart_clock, 4800); + m_uart_clock->signal_handler().set(m_uart, FUNC(ay51013_device::write_rcp)); + m_uart_clock->signal_handler().append(m_uart, FUNC(ay51013_device::write_tcp)); + RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); AY51013(config, m_uart_s); // TMS6011NC m_uart_s->read_si_callback().set(m_rs232, FUNC(rs232_port_device::rxd_r)); m_uart_s->write_so_callback().set(m_rs232, FUNC(rs232_port_device::write_txd)); - m_uart_s->set_tx_clock(4800.0); - m_uart_s->set_rx_clock(4800.0); m_uart_s->set_auto_rdav(true); // ROD (pin 4) tied to RDD (pin 18) + CLOCK(config, m_uart_s_clock, 4800); + m_uart_s_clock->signal_handler().set(m_uart_s, FUNC(ay51013_device::write_rcp)); + m_uart_s_clock->signal_handler().append(m_uart_s, FUNC(ay51013_device::write_tcp)); + generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0)); keyboard.set_keyboard_callback(FUNC(sol20_state::kbd_put)); |