summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/diserial.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/diserial.cpp')
-rw-r--r--src/emu/diserial.cpp64
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)
{