summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/vsmile/pad.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/vsmile/pad.h')
-rw-r--r--src/devices/bus/vsmile/pad.h38
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;
};