summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/amiga/keyboard/mitsumi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/amiga/keyboard/mitsumi.cpp')
-rw-r--r--src/devices/bus/amiga/keyboard/mitsumi.cpp108
1 files changed, 89 insertions, 19 deletions
diff --git a/src/devices/bus/amiga/keyboard/mitsumi.cpp b/src/devices/bus/amiga/keyboard/mitsumi.cpp
index 36837410cc4..f35ca018736 100644
--- a/src/devices/bus/amiga/keyboard/mitsumi.cpp
+++ b/src/devices/bus/amiga/keyboard/mitsumi.cpp
@@ -106,18 +106,18 @@ ROM_END
class mitsumi_keyboard_base : public device_t, public device_amiga_keyboard_interface
{
public:
- virtual WRITE_LINE_MEMBER(kdat_w) override
+ virtual void kdat_w(int state) override
{
m_kdat_in = state ? 0x01U : 0x00U;
- m_mcu->pa_w(machine().dummy_space(), 0, m_meta->read());
+ m_mcu->pa_w(m_meta->read());
}
- READ_LINE_MEMBER(kdat_r)
+ int kdat_r()
{
return m_kdat_in ^ 0x01U;
}
- CUSTOM_INPUT_MEMBER(cols_r)
+ ioport_value cols_r()
{
ioport_value result(0xffU);
for (unsigned i = 0U; m_rows.size() > i; ++i)
@@ -128,7 +128,7 @@ public:
return (result >> 2) ^ 0x3fU;
}
- READ_LINE_MEMBER(reset_r)
+ int reset_r()
{
return m_ctrl_a_a;
}
@@ -209,8 +209,8 @@ protected:
{
mitsumi_keyboard_base::device_start();
- m_wd_timeout = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mitsumi_watchdog_keyboard_base::wd_timeout), this));
- m_wd_pulse = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mitsumi_watchdog_keyboard_base::wd_pulse), this));
+ m_wd_timeout = timer_alloc(FUNC(mitsumi_watchdog_keyboard_base::wd_timeout), this);
+ m_wd_pulse = timer_alloc(FUNC(mitsumi_watchdog_keyboard_base::wd_pulse), this);
m_pd7 = 0x01U;
@@ -230,7 +230,7 @@ protected:
}
private:
- WRITE_LINE_MEMBER(pd7_w)
+ void pd7_w(int state)
{
if (bool(state) != bool(m_pd7))
{
@@ -284,7 +284,7 @@ protected:
{
mitsumi_watchdog_keyboard_base::device_start();
- m_reset_pulse = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(a500_keyboard_base::reset_pulse), this));
+ m_reset_pulse = timer_alloc(FUNC(a500_keyboard_base::reset_pulse), this);
m_reset_active = 0U;
@@ -344,7 +344,7 @@ protected:
{
mitsumi_keyboard_base::device_start();
- m_reset_pulse = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(a600_keyboard_base::reset_pulse), this));
+ m_reset_pulse = timer_alloc(FUNC(a600_keyboard_base::reset_pulse), this);
m_reset_trigger = 0U;
m_reset_active = 0U;
@@ -366,7 +366,7 @@ protected:
}
private:
- WRITE_LINE_MEMBER(reset_trigger)
+ void reset_trigger(int state)
{
if (bool(state) != bool(m_reset_trigger))
{
@@ -414,27 +414,27 @@ protected:
INPUT_PORTS_START(fullsize_cols)
PORT_START("COLS")
- PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(mitsumi_keyboard_base, cols_r)
+ PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(FUNC(mitsumi_keyboard_base::cols_r))
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_MEMBER(mitsumi_keyboard_base, kdat_r)
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_MEMBER(FUNC(mitsumi_keyboard_base::kdat_r))
INPUT_PORTS_END
INPUT_PORTS_START(compact_cols)
PORT_START("COLS")
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_MEMBER(mitsumi_keyboard_base, reset_r)
- PORT_BIT(0x7c, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(mitsumi_keyboard_base, cols_r)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_MEMBER(FUNC(mitsumi_keyboard_base::reset_r))
+ PORT_BIT(0x7c, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(FUNC(mitsumi_keyboard_base::cols_r))
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_MEMBER(mitsumi_keyboard_base, kdat_r)
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_MEMBER(FUNC(mitsumi_keyboard_base::kdat_r))
INPUT_PORTS_END
INPUT_PORTS_START(mitsumi_meta)
PORT_START("META")
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LWIN) PORT_CHAR(UCHAR_MAMEKEY(LWIN)) PORT_NAME("Left Amiga") PORT_CHANGED_MEMBER(DEVICE_SELF, mitsumi_keyboard_base, check_ctrl_a_a, 0)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LWIN) PORT_CHAR(UCHAR_MAMEKEY(LWIN)) PORT_NAME("Left Amiga") PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(mitsumi_keyboard_base::check_ctrl_a_a), 0)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_NAME("Left Alt")
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("Left Shift")
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_NAME("Ctrl") PORT_CHANGED_MEMBER(DEVICE_SELF, mitsumi_keyboard_base, check_ctrl_a_a, 0)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RWIN) PORT_CHAR(UCHAR_MAMEKEY(RWIN)) PORT_NAME("Right Amiga") PORT_CHANGED_MEMBER(DEVICE_SELF, mitsumi_keyboard_base, check_ctrl_a_a, 0)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_NAME("Ctrl") PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(mitsumi_keyboard_base::check_ctrl_a_a), 0)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RWIN) PORT_CHAR(UCHAR_MAMEKEY(RWIN)) PORT_NAME("Right Amiga") PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(mitsumi_keyboard_base::check_ctrl_a_a), 0)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_SHIFT_2) PORT_NAME("Right Alt")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_MAMEKEY(RSHIFT)) PORT_NAME("Right Shift")
INPUT_PORTS_END
@@ -665,6 +665,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_US, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_us); }
};
@@ -676,6 +678,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_DE, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_de); }
};
@@ -687,6 +691,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_FR, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_fr); }
};
@@ -698,6 +704,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_IT, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_it); }
};
@@ -709,6 +717,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_SE, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_se); }
};
@@ -720,6 +730,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_ES, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_es); }
};
@@ -731,6 +743,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_DK, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_dk); }
};
@@ -742,6 +756,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_CH, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_ch); }
};
@@ -753,6 +769,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_NO, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_no); }
};
@@ -764,6 +782,8 @@ public:
: a500_keyboard_base(mconfig, A500_KBD_GB, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_gb); }
};
@@ -780,6 +800,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_US, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_us); }
};
@@ -791,6 +813,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_DE, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_de); }
};
@@ -802,6 +826,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_FR, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_fr); }
};
@@ -813,6 +839,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_IT, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_it); }
};
@@ -824,6 +852,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_SE, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_se); }
};
@@ -835,6 +865,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_ES, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_es); }
};
@@ -846,6 +878,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_DK, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_dk); }
};
@@ -857,6 +891,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_CH, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_ch); }
};
@@ -868,6 +904,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_NO, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_no); }
};
@@ -879,6 +917,8 @@ public:
: a600_keyboard_base(mconfig, A600_KBD_GB, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(compact_gb); }
};
@@ -906,6 +946,8 @@ public:
: a1000_keyboard_base(mconfig, A1000_KBD_DE, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A1000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(a1000_de); }
};
@@ -917,6 +959,8 @@ public:
: a1000_keyboard_base(mconfig, A1000_KBD_FR, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A1000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(a1000_fr); }
};
@@ -928,6 +972,8 @@ public:
: a1000_keyboard_base(mconfig, A1000_KBD_IT, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A1000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(a1000_it); }
};
@@ -939,6 +985,8 @@ public:
: a1000_keyboard_base(mconfig, A1000_KBD_SE, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A1000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(a1000_se); }
};
@@ -950,6 +998,8 @@ public:
: a1000_keyboard_base(mconfig, A1000_KBD_DK, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A1000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(a1000_dk); }
};
@@ -961,6 +1011,8 @@ public:
: a1000_keyboard_base(mconfig, A1000_KBD_GB, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A1000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(a1000_gb); }
};
@@ -988,6 +1040,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_DE, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_de); }
};
@@ -999,6 +1053,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_FR, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_fr); }
};
@@ -1010,6 +1066,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_IT, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_it); }
};
@@ -1021,6 +1079,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_SE, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_se); }
};
@@ -1032,6 +1092,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_ES, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_es); }
};
@@ -1043,6 +1105,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_DK, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_dk); }
};
@@ -1054,6 +1118,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_CH, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_ch); }
};
@@ -1065,6 +1131,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_NO, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_no); }
};
@@ -1076,6 +1144,8 @@ public:
: mitsumi_watchdog_keyboard_base(mconfig, A2000_KBD_GB, tag, owner, clock)
{ }
+ static auto parent_rom_device_type() { return &A2000_KBD_US; }
+
protected:
virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(fullsize_gb); }
};