diff options
author | 2014-02-15 01:29:27 +0000 | |
---|---|---|
committer | 2014-02-15 01:29:27 +0000 | |
commit | b37d92de7246ff7da31a235b996e89db6f8c8d22 (patch) | |
tree | 616a8439278f4ff3331b677c9b841ed71657290a /src/emu/bus/rs232/keyboard.h | |
parent | 88bc8a4673a710bdcdd2640f39b3b33bc2b76ab0 (diff) |
created src\emu\bus\rs232 & src\emu\bus\midi directories and separated rs232 and midi devices, changed h89 to use an rs232 port to communicate with the serial terminal to instead of connecting it directly. [smf]
Diffstat (limited to 'src/emu/bus/rs232/keyboard.h')
-rw-r--r-- | src/emu/bus/rs232/keyboard.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/emu/bus/rs232/keyboard.h b/src/emu/bus/rs232/keyboard.h new file mode 100644 index 00000000000..8e0da84ea20 --- /dev/null +++ b/src/emu/bus/rs232/keyboard.h @@ -0,0 +1,64 @@ +#ifndef __RS232_KEYBOARD_H__ +#define __RS232_KEYBOARD_H__ + +#include "rs232.h" +#include "machine/keyboard.h" + +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ + +struct serial_keyboard_interface +{ + devcb_write_line m_out_tx_cb; +}; + +/*************************************************************************** + DEVICE CONFIGURATION MACROS +***************************************************************************/ + +#define MCFG_SERIAL_KEYBOARD_ADD(_tag, _intrf, _clock) \ + MCFG_DEVICE_ADD(_tag, SERIAL_KEYBOARD, _clock) \ + MCFG_DEVICE_CONFIG(_intrf) + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +class serial_keyboard_device : + public generic_keyboard_device, + public device_serial_interface, + public device_rs232_port_interface, + public serial_keyboard_interface +{ +public: + serial_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + serial_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + + virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) { device_serial_interface::rx_w(state); } + DECLARE_READ_LINE_MEMBER(tx_r); + + virtual ioport_constructor device_input_ports() const; + + DECLARE_INPUT_CHANGED_MEMBER(update_frame); + +protected: + virtual void device_start(); + virtual void device_config_complete(); + virtual void device_reset(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual void tra_callback(); + virtual void tra_complete(); + virtual void input_callback(UINT8 state) { m_input_state = state; } + virtual void send_key(UINT8 code); +private: + int m_rbit; + UINT8 m_curr_key; + bool m_key_valid; + devcb_resolved_write_line m_out_tx_func; + required_ioport m_io_term_frame; +}; + +extern const device_type SERIAL_KEYBOARD; + +#endif /* __RS232_KEYBOARD_H__ */ |