diff options
Diffstat (limited to 'src/devices/bus/amiga/keyboard/mitsumi.cpp')
-rw-r--r-- | src/devices/bus/amiga/keyboard/mitsumi.cpp | 108 |
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); } }; |