diff options
| author | 2012-02-26 13:42:03 +0000 | |
|---|---|---|
| committer | 2012-02-26 13:42:03 +0000 | |
| commit | de8965097c611f45a245d65ad0b2ffa91767fad1 (patch) | |
| tree | 9f6a88e3a830b9d1daa5f6698762e642303ae202 | |
| parent | 5409b54206fcb09e72ee79a73721dd7530ab9bee (diff) | |
Fixed order of timer init and save state by Sandro Ronco (no whatsnew)
| -rw-r--r-- | src/emu/diserial.c | 17 | ||||
| -rw-r--r-- | src/emu/diserial.h | 3 |
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); |
