trunk/src/mess/drivers/elekscmp.c
| r20507 | r20508 | |
| 31 | 31 | { |
| 32 | 32 | public: |
| 33 | 33 | elekscmp_state(const machine_config &mconfig, device_type type, const char *tag) |
| 34 | | : driver_device(mconfig, type, tag) { } |
| 34 | : driver_device(mconfig, type, tag) |
| 35 | , m_maincpu(*this, "maincpu") |
| 36 | , m_x0(*this, "X0") |
| 37 | , m_x1(*this, "X1") |
| 38 | , m_x2(*this, "X2") |
| 39 | , m_x3(*this, "X3") |
| 40 | { } |
| 35 | 41 | |
| 36 | 42 | DECLARE_READ8_MEMBER(keyboard_r); |
| 37 | 43 | DECLARE_WRITE8_MEMBER(hex_display_w); |
| 38 | 44 | UINT8 convert_key(UINT8 data); |
| 45 | |
| 46 | protected: |
| 47 | required_device<cpu_device> m_maincpu; |
| 48 | required_ioport m_x0; |
| 49 | required_ioport m_x1; |
| 50 | required_ioport m_x2; |
| 51 | required_ioport m_x3; |
| 39 | 52 | }; |
| 40 | 53 | |
| 41 | 54 | |
| r20507 | r20508 | |
| 58 | 71 | { |
| 59 | 72 | UINT8 data; |
| 60 | 73 | |
| 61 | | data = ioport("X0")->read(); |
| 74 | data = m_x0->read(); |
| 62 | 75 | |
| 63 | 76 | if (data) |
| 64 | 77 | return 0x80 | convert_key(data); |
| 65 | 78 | |
| 66 | | data = ioport("X1")->read(); |
| 79 | data = m_x1->read(); |
| 67 | 80 | |
| 68 | 81 | if (data) |
| 69 | 82 | return 0x88 | convert_key(data); |
| 70 | 83 | |
| 71 | | data = ioport("X2")->read(); |
| 84 | data = m_x2->read(); |
| 72 | 85 | |
| 73 | 86 | if (data) |
| 74 | 87 | return 0x80 | (convert_key(data) << 4); |
| 75 | 88 | |
| 76 | | data = ioport("X3")->read(); |
| 89 | data = m_x3->read(); |
| 77 | 90 | |
| 78 | 91 | if (data) |
| 79 | | machine().device("maincpu")->reset(); |
| 92 | m_maincpu->reset(); |
| 80 | 93 | |
| 81 | 94 | return 0; |
| 82 | 95 | } |