diff options
Diffstat (limited to 'src/emu/diserial.cpp')
-rw-r--r-- | src/emu/diserial.cpp | 64 |
1 files changed, 28 insertions, 36 deletions
diff --git a/src/emu/diserial.cpp b/src/emu/diserial.cpp index 76209dfb35a..b0a8e40ab6a 100644 --- a/src/emu/diserial.cpp +++ b/src/emu/diserial.cpp @@ -56,40 +56,40 @@ device_serial_interface::~device_serial_interface() { } -void device_serial_interface::register_save_state(save_manager &save, device_t *device) -{ - const char *module = device->name(); - const char *tag = device->tag(); - save.save_item(device, module, tag, 0, NAME(m_df_start_bit_count)); - save.save_item(device, module, tag, 0, NAME(m_df_word_length)); - save.save_item(device, module, tag, 0, NAME(m_df_parity)); - save.save_item(device, module, tag, 0, NAME(m_df_stop_bit_count)); - save.save_item(device, module, tag, 0, NAME(m_rcv_register_data)); - save.save_item(device, module, tag, 0, NAME(m_rcv_flags)); - save.save_item(device, module, tag, 0, NAME(m_rcv_bit_count_received)); - save.save_item(device, module, tag, 0, NAME(m_rcv_bit_count)); - save.save_item(device, module, tag, 0, NAME(m_rcv_byte_received)); - save.save_item(device, module, tag, 0, NAME(m_rcv_framing_error)); - save.save_item(device, module, tag, 0, NAME(m_rcv_parity_error)); - save.save_item(device, module, tag, 0, NAME(m_tra_register_data)); - save.save_item(device, module, tag, 0, NAME(m_tra_flags)); - save.save_item(device, module, tag, 0, NAME(m_tra_bit_count_transmitted)); - save.save_item(device, module, tag, 0, NAME(m_tra_bit_count)); - save.save_item(device, module, tag, 0, NAME(m_rcv_rate)); - save.save_item(device, module, tag, 0, NAME(m_tra_rate)); - save.save_item(device, module, tag, 0, NAME(m_rcv_line)); - save.save_item(device, module, tag, 0, NAME(m_tra_clock_state)); - save.save_item(device, module, tag, 0, NAME(m_rcv_clock_state)); -} - void device_serial_interface::interface_pre_start() { - m_rcv_clock = device().timer_alloc(RCV_TIMER_ID); - m_tra_clock = device().timer_alloc(TRA_TIMER_ID); + if (!m_rcv_clock) + m_rcv_clock = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_serial_interface::rcv_clock), this)); + if (!m_tra_clock) + m_tra_clock = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_serial_interface::tra_clock), this)); m_rcv_clock_state = false; m_tra_clock_state = false; } +void device_serial_interface::interface_post_start() +{ + device().save_item(NAME(m_df_start_bit_count)); + device().save_item(NAME(m_df_word_length)); + device().save_item(NAME(m_df_parity)); + device().save_item(NAME(m_df_stop_bit_count)); + device().save_item(NAME(m_rcv_register_data)); + device().save_item(NAME(m_rcv_flags)); + device().save_item(NAME(m_rcv_bit_count_received)); + device().save_item(NAME(m_rcv_bit_count)); + device().save_item(NAME(m_rcv_byte_received)); + device().save_item(NAME(m_rcv_framing_error)); + device().save_item(NAME(m_rcv_parity_error)); + device().save_item(NAME(m_tra_register_data)); + device().save_item(NAME(m_tra_flags)); + device().save_item(NAME(m_tra_bit_count_transmitted)); + device().save_item(NAME(m_tra_bit_count)); + device().save_item(NAME(m_rcv_rate)); + device().save_item(NAME(m_tra_rate)); + device().save_item(NAME(m_rcv_line)); + device().save_item(NAME(m_tra_clock_state)); + device().save_item(NAME(m_rcv_clock_state)); +} + void device_serial_interface::set_rcv_rate(const attotime &rate) { m_rcv_rate = rate/2; @@ -153,14 +153,6 @@ WRITE_LINE_MEMBER(device_serial_interface::clock_w) rx_clock_w(state); } -void device_serial_interface::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - switch(id) { - case TRA_TIMER_ID: tx_clock_w(!m_tra_clock_state); break; - case RCV_TIMER_ID: rx_clock_w(!m_rcv_clock_state); break; - } -} - void device_serial_interface::set_data_frame(int start_bit_count, int data_bit_count, parity_t parity, stop_bits_t stop_bits) { |