trunk/src/mess/machine/keyboard.c
| r20570 | r20571 | |
| 36 | 36 | |
| 37 | 37 | generic_keyboard_device::generic_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock) |
| 38 | 38 | : device_t(mconfig, type, name, tag, owner, clock) |
| 39 | , m_io_kbd0(*this, "TERM_LINE0") |
| 40 | , m_io_kbd1(*this, "TERM_LINE1") |
| 41 | , m_io_kbd2(*this, "TERM_LINE2") |
| 42 | , m_io_kbd3(*this, "TERM_LINE3") |
| 43 | , m_io_kbd4(*this, "TERM_LINE4") |
| 44 | , m_io_kbd5(*this, "TERM_LINE5") |
| 45 | , m_io_kbd6(*this, "TERM_LINE6") |
| 46 | , m_io_kbd7(*this, "TERM_LINE7") |
| 47 | , m_io_kbdc(*this, "TERM_LINEC") |
| 39 | 48 | { |
| 40 | 49 | } |
| 41 | 50 | |
| 42 | 51 | generic_keyboard_device::generic_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 43 | 52 | : device_t(mconfig, GENERIC_KEYBOARD, "Generic Keyboard", tag, owner, clock) |
| 53 | , m_io_kbd0(*this, "TERM_LINE0") |
| 54 | , m_io_kbd1(*this, "TERM_LINE1") |
| 55 | , m_io_kbd2(*this, "TERM_LINE2") |
| 56 | , m_io_kbd3(*this, "TERM_LINE3") |
| 57 | , m_io_kbd4(*this, "TERM_LINE4") |
| 58 | , m_io_kbd5(*this, "TERM_LINE5") |
| 59 | , m_io_kbd6(*this, "TERM_LINE6") |
| 60 | , m_io_kbd7(*this, "TERM_LINE7") |
| 61 | , m_io_kbdc(*this, "TERM_LINEC") |
| 44 | 62 | { |
| 45 | 63 | } |
| 46 | 64 | |
| r20570 | r20571 | |
| 60 | 78 | |
| 61 | 79 | UINT8 generic_keyboard_device::keyboard_handler(UINT8 last_code, UINT8 *scan_line) |
| 62 | 80 | { |
| 63 | | static const char *const keynames[] = { "TERM_LINE0", "TERM_LINE1", "TERM_LINE2", "TERM_LINE3", "TERM_LINE4", "TERM_LINE5", "TERM_LINE6", "TERM_LINE7" }; |
| 81 | static ioport_port *const keynames[] = { m_io_kbd0, m_io_kbd1, m_io_kbd2, m_io_kbd3, m_io_kbd4, m_io_kbd5, m_io_kbd6, m_io_kbd7 }; |
| 64 | 82 | int i; |
| 65 | 83 | UINT8 code; |
| 66 | 84 | UINT8 key_code = 0; |
| 67 | 85 | UINT8 retVal = 0; |
| 68 | | UINT8 shift = BIT(ioport("TERM_LINEC")->read(), 1); |
| 69 | | UINT8 caps = BIT(ioport("TERM_LINEC")->read(), 2); |
| 70 | | UINT8 ctrl = BIT(ioport("TERM_LINEC")->read(), 0); |
| 86 | UINT8 shift = BIT(m_io_kbdc->read(), 1); |
| 87 | UINT8 caps = BIT(m_io_kbdc->read(), 2); |
| 88 | UINT8 ctrl = BIT(m_io_kbdc->read(), 0); |
| 71 | 89 | i = *scan_line; |
| 72 | 90 | { |
| 73 | | code = ioport(keynames[i])->read(); |
| 91 | code = keynames[i]->read(); |
| 74 | 92 | if (code != 0) |
| 75 | 93 | { |
| 76 | 94 | if (i==0 && shift==0) { |
trunk/src/mess/machine/keyboard.h
| r20570 | r20571 | |
| 48 | 48 | virtual ioport_constructor device_input_ports() const; |
| 49 | 49 | virtual machine_config_constructor device_mconfig_additions() const; |
| 50 | 50 | protected: |
| 51 | required_ioport m_io_kbd0; |
| 52 | required_ioport m_io_kbd1; |
| 53 | required_ioport m_io_kbd2; |
| 54 | required_ioport m_io_kbd3; |
| 55 | required_ioport m_io_kbd4; |
| 56 | required_ioport m_io_kbd5; |
| 57 | required_ioport m_io_kbd6; |
| 58 | required_ioport m_io_kbd7; |
| 59 | required_ioport m_io_kbdc; |
| 51 | 60 | virtual void device_start(); |
| 52 | 61 | virtual void device_reset(); |
| 53 | 62 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |