summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/8042kbdc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/8042kbdc.h')
-rw-r--r--src/devices/machine/8042kbdc.h21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/devices/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h
index d28c17c9cf8..80e855018a4 100644
--- a/src/devices/machine/8042kbdc.h
+++ b/src/devices/machine/8042kbdc.h
@@ -39,6 +39,8 @@ public:
// construction/destruction
kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+ template <typename T> void set_keyboard_tag(T &&tag) { m_keyboard_dev.set_tag(std::forward<T>(tag)); }
+
void set_keyboard_type(kbdc8042_type_t keybtype) { m_keybtype = keybtype; }
void set_interrupt_type(kbdc8042_interrupt_type_t interrupttype) { m_interrupttype = interrupttype; }
auto system_reset_callback() { return m_system_reset_cb.bind(); }
@@ -51,7 +53,12 @@ public:
uint8_t data_r(offs_t offset);
void data_w(offs_t offset, uint8_t data);
- DECLARE_WRITE_LINE_MEMBER( write_out2 );
+ uint8_t port60_r(offs_t offset) { return data_r(0); }
+ void port60_w(offs_t offset, uint8_t data) { data_w(0, data); }
+ uint8_t port64_r(offs_t offset) { return data_r(4); }
+ void port64_w(offs_t offset, uint8_t data) { data_w(4, data); }
+
+ void write_out2(int state);
void at_8042_set_outport(uint8_t data, int initial);
void at_8042_receive(uint8_t data, bool mouse = false);
@@ -59,17 +66,17 @@ public:
void at_8042_check_mouse();
void at_8042_clear_keyboard_received();
+ void keyboard_w(int state);
+
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual ioport_constructor device_input_ports() const override;
- void mouse_enqueue(uint8_t value);
+ TIMER_CALLBACK_MEMBER(update_timer);
- static const device_timer_id TIMER_UPDATE = 0;
+ void mouse_enqueue(uint8_t value);
private:
uint8_t m_inport;
@@ -108,7 +115,7 @@ private:
int m_poll_delay;
- required_device<at_keyboard_device> m_keyboard_dev;
+ optional_device<at_keyboard_device> m_keyboard_dev;
optional_ioport m_mousex_port;
optional_ioport m_mousey_port;
optional_ioport m_mousebtn_port;
@@ -129,8 +136,6 @@ private:
uint8_t m_mouse_btn;
emu_timer * m_update_timer;
-
- DECLARE_WRITE_LINE_MEMBER( keyboard_w );
};
// device type definition