summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/pc_joy/pc_joy_sw.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/pc_joy/pc_joy_sw.h')
-rw-r--r--src/devices/bus/pc_joy/pc_joy_sw.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/devices/bus/pc_joy/pc_joy_sw.h b/src/devices/bus/pc_joy/pc_joy_sw.h
new file mode 100644
index 00000000000..12506ef1f1b
--- /dev/null
+++ b/src/devices/bus/pc_joy/pc_joy_sw.h
@@ -0,0 +1,38 @@
+// license:BSD-3-Clause
+// copyright-holders:Carl
+#ifndef PC_JOY_SW_H_
+#define PC_JOY_SW_H_
+
+#include "pc_joy.h"
+
+class pc_mssw_pad_device : public device_t,
+ public device_pc_joy_interface
+{
+public:
+ pc_mssw_pad_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual ioport_constructor device_input_ports() const;
+
+ virtual UINT8 btn() { return m_state; }
+ // timing is guessed, calibrated for at486
+ virtual void port_write() { if(!m_active) { m_timer->adjust(attotime::from_usec(50), 0, attotime::from_usec(5)); m_active = true; } }
+
+protected:
+ virtual void device_start();
+ virtual void device_timer(emu_timer &timer, device_timer_id tid, int param, void *ptr);
+ virtual void device_reset();
+
+private:
+ required_ioport m_btn1;
+ required_ioport m_btn2;
+ required_ioport m_btn3;
+ required_ioport m_btn4;
+ required_ioport m_conf;
+ emu_timer *m_timer;
+ int m_count;
+ UINT8 m_state;
+ bool m_active;
+};
+
+extern const device_type PC_MSSW_PAD;
+
+#endif /* PC_JOY_SW_H_ */