diff options
Diffstat (limited to 'src/devices/bus/astrocde/ctrl.h')
-rw-r--r-- | src/devices/bus/astrocde/ctrl.h | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/src/devices/bus/astrocde/ctrl.h b/src/devices/bus/astrocde/ctrl.h index 7ff8acbde52..0cc34ea4dcc 100644 --- a/src/devices/bus/astrocde/ctrl.h +++ b/src/devices/bus/astrocde/ctrl.h @@ -10,37 +10,13 @@ FORWARD DECLARATIONS ***************************************************************************/ -class astrocade_ctrl_port_device; +class device_astrocade_ctrl_interface; /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ -// ======================> device_astrocade_ctrl_interface - -class device_astrocade_ctrl_interface : public device_slot_card_interface -{ -public: - virtual ~device_astrocade_ctrl_interface(); - - virtual uint8_t read_handle() { return 0; } - virtual uint8_t read_knob() { return 0; } - -protected: - device_astrocade_ctrl_interface(machine_config const &mconfig, device_t &device); - - // device_interface implementation - virtual void interface_validity_check(validity_checker &valid) const override ATTR_COLD; - virtual void interface_pre_start() override; - -private: - astrocade_ctrl_port_device *const m_port; - - friend class astrocade_ctrl_port_device; -}; - - // ======================> astrocade_ctrl_port_device class astrocade_ctrl_port_device : public device_t, public device_slot_interface @@ -59,6 +35,8 @@ public: astrocade_ctrl_port_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock = 0U); virtual ~astrocade_ctrl_port_device(); + auto ltpen_handler() { return m_ltpen_handler.bind(); } + uint8_t read_handle(); uint8_t read_knob(); @@ -68,6 +46,9 @@ protected: virtual void device_resolve_objects() override; virtual void device_start() override; + int m_ltpen; + devcb_write_line m_ltpen_handler; + private: device_astrocade_ctrl_interface *m_device; @@ -75,6 +56,32 @@ private: }; +// ======================> device_astrocade_ctrl_interface + +class device_astrocade_ctrl_interface : public device_slot_card_interface +{ +public: + virtual ~device_astrocade_ctrl_interface(); + + virtual uint8_t read_handle() { return 0; } + virtual uint8_t read_knob() { return 0; } + + DECLARE_WRITE_LINE_MEMBER( write_ltpen ) { m_port->m_ltpen = state; m_port->m_ltpen_handler(state); } + +protected: + device_astrocade_ctrl_interface(machine_config const &mconfig, device_t &device); + + // device_interface implementation + virtual void interface_validity_check(validity_checker &valid) const override ATTR_COLD; + virtual void interface_pre_start() override; + +private: + astrocade_ctrl_port_device *const m_port; + + friend class astrocade_ctrl_port_device; +}; + + /*************************************************************************** FUNCTIONS ***************************************************************************/ |