diff options
Diffstat (limited to 'src/devices/bus/vsmile/pad.h')
-rw-r--r-- | src/devices/bus/vsmile/pad.h | 38 |
1 files changed, 9 insertions, 29 deletions
diff --git a/src/devices/bus/vsmile/pad.h b/src/devices/bus/vsmile/pad.h index 1cf68a3fda2..e2773a238f0 100644 --- a/src/devices/bus/vsmile/pad.h +++ b/src/devices/bus/vsmile/pad.h @@ -13,7 +13,7 @@ // ======================> vsmile_pad_device -class vsmile_pad_device : public device_t, public device_vsmile_ctrl_interface +class vsmile_pad_device : public vsmile_ctrl_device_base { public: // construction/destruction @@ -26,46 +26,26 @@ public: protected: // device_t implementation - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - - // optional information overrides virtual ioport_constructor device_input_ports() const override; + virtual void device_start() override; - // device_vsmile_ctrl_interface implementation - virtual void cts_w(int state) override; - virtual void data_w(uint8_t data) override; + // vsmile_ctrl_device_base implementation + virtual void tx_complete() override; + virtual void rx_complete(uint8_t data, bool cts) override; private: - static const device_timer_id TIMER_UART_TX = 0; - static const device_timer_id TIMER_PAD = 1; - - enum - { - XMIT_STATE_IDLE = 0, - XMIT_STATE_RTS = 1, - XMIT_STATE_CTS = 2 - }; - void uart_tx_fifo_push(uint8_t data); - void handle_uart_tx(); + + TIMER_CALLBACK_MEMBER(handle_idle); required_ioport m_io_joy; required_ioport m_io_colors; required_ioport m_io_buttons; - bool m_ctrl_cts; + emu_timer *m_idle_timer; + uint8_t m_ctrl_probe_history[2]; uint8_t m_ctrl_probe_count; - uint8_t m_uart_tx_fifo[32]; // arbitrary size - uint8_t m_uart_tx_fifo_start; - uint8_t m_uart_tx_fifo_end; - uint8_t m_uart_tx_fifo_count; - emu_timer *m_uart_tx_timer; - int m_uart_tx_state; - - emu_timer *m_pad_timer; }; |