summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2012-02-26 13:42:03 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2012-02-26 13:42:03 +0000
commitde8965097c611f45a245d65ad0b2ffa91767fad1 (patch)
tree9f6a88e3a830b9d1daa5f6698762e642303ae202
parent5409b54206fcb09e72ee79a73721dd7530ab9bee (diff)
Fixed order of timer init and save state by Sandro Ronco (no whatsnew)
-rw-r--r--src/emu/diserial.c17
-rw-r--r--src/emu/diserial.h3
2 files changed, 14 insertions, 6 deletions
diff --git a/src/emu/diserial.c b/src/emu/diserial.c
index 99accd149ac..28e09bc846f 100644
--- a/src/emu/diserial.c
+++ b/src/emu/diserial.c
@@ -45,11 +45,19 @@ device_serial_interface::~device_serial_interface()
{
}
-void device_serial_interface::set_rcv_rate(int baud)
+//-------------------------------------------------
+// interface_pre_start - work to be done prior to
+// actually starting a device
+//-------------------------------------------------
+
+void device_serial_interface::interface_pre_start()
{
- if(!m_rcv_clock)
- m_rcv_clock = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_serial_interface::rcv_timer), this));
+ m_rcv_clock = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_serial_interface::rcv_timer), this));
+ m_tra_clock = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_serial_interface::tra_timer), this));
+}
+void device_serial_interface::set_rcv_rate(int baud)
+{
m_rcv_baud = baud;
receive_register_reset();
m_rcv_clock->adjust(attotime::never);
@@ -57,9 +65,6 @@ void device_serial_interface::set_rcv_rate(int baud)
void device_serial_interface::set_tra_rate(int baud)
{
- if(!m_tra_clock)
- m_tra_clock = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_serial_interface::tra_timer), this));
-
m_tra_baud = baud;
transmit_register_reset();
m_tra_clock->adjust(attotime::never);
diff --git a/src/emu/diserial.h b/src/emu/diserial.h
index c54e06a08bd..32c70d10bba 100644
--- a/src/emu/diserial.h
+++ b/src/emu/diserial.h
@@ -123,6 +123,9 @@ protected:
virtual void rcv_callback() { receive_register_update_bit(m_rcv_line); }
virtual void tra_complete() { }
virtual void rcv_complete() { }
+
+ // interface-level overrides
+ virtual void interface_pre_start();
private:
void tra_timer(void *ptr, int param);
void rcv_timer(void *ptr, int param);