summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/astrocde/ctrl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/astrocde/ctrl.h')
-rw-r--r--src/devices/bus/astrocde/ctrl.h57
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
***************************************************************************/