trunk/src/mess/machine/victor9kb.c
| r26860 | r26861 | |
| 253 | 253 | m_ya(*this, "YA"), |
| 254 | 254 | m_yb(*this, "YB"), |
| 255 | 255 | m_yc(*this, "YC"), |
| 256 | | m_write_kbrdy(*this), |
| 256 | m_kbrdy_handler(*this), |
| 257 | m_kbdata_handler(*this), |
| 257 | 258 | m_y(0), |
| 258 | 259 | m_kbrdy(1), |
| 259 | 260 | m_kbdata(1), |
| r26860 | r26861 | |
| 269 | 270 | void victor9k_keyboard_device::device_start() |
| 270 | 271 | { |
| 271 | 272 | // resolve callbacks |
| 272 | | m_write_kbrdy.resolve_safe(); |
| 273 | m_kbrdy_handler.resolve_safe(); |
| 274 | m_kbdata_handler.resolve_safe(); |
| 273 | 275 | |
| 274 | 276 | // state saving |
| 275 | 277 | save_item(NAME(m_y)); |
| r26860 | r26861 | |
| 384 | 386 | if (m_kbrdy != kbrdy) |
| 385 | 387 | { |
| 386 | 388 | m_kbrdy = kbrdy; |
| 387 | | m_write_kbrdy(m_kbrdy); |
| 389 | m_kbrdy_handler(m_kbrdy); |
| 388 | 390 | } |
| 389 | 391 | |
| 390 | | m_kbdata = BIT(data, 3); |
| 392 | int kbdata = BIT(data, 3); |
| 391 | 393 | |
| 394 | if (m_kbdata != kbdata) |
| 395 | { |
| 396 | m_kbdata = kbdata; |
| 397 | m_kbdata_handler(m_kbdata); |
| 398 | } |
| 399 | |
| 392 | 400 | logerror("P2 %01x\n", data & 0x0f); |
| 393 | 401 | } |
| 394 | 402 | |
trunk/src/mess/machine/victor9kb.h
| r26860 | r26861 | |
| 21 | 21 | |
| 22 | 22 | |
| 23 | 23 | //************************************************************************** |
| 24 | | // MACROS / CONSTANTS |
| 24 | // INTERFACE CONFIGURATION MACROS |
| 25 | 25 | //************************************************************************** |
| 26 | 26 | |
| 27 | | #define VICTOR9K_KEYBOARD_TAG "victor9kb" |
| 27 | #define MCFG_VICTOR9K_KBRDY_HANDLER(_devcb) \ |
| 28 | devcb = &victor9k_keyboard_device::set_kbrdy_handler(*device, DEVCB2_##_devcb); |
| 28 | 29 | |
| 30 | #define MCFG_VICTOR9K_KBDATA_HANDLER(_devcb) \ |
| 31 | devcb = &victor9k_keyboard_device::set_kbdata_handler(*device, DEVCB2_##_devcb); |
| 29 | 32 | |
| 30 | 33 | |
| 31 | 34 | //************************************************************************** |
| 32 | | // INTERFACE CONFIGURATION MACROS |
| 33 | | //************************************************************************** |
| 34 | | |
| 35 | | #define MCFG_VICTOR9K_KEYBOARD_ADD(_kbrdy) \ |
| 36 | | MCFG_DEVICE_ADD(VICTOR9K_KEYBOARD_TAG, VICTOR9K_KEYBOARD, 0) \ |
| 37 | | downcast<victor9k_keyboard_device *>(device)->set_kbrdy_callback(DEVCB2_##_kbrdy); |
| 38 | | |
| 39 | | |
| 40 | | //************************************************************************** |
| 41 | 35 | // TYPE DEFINITIONS |
| 42 | 36 | //************************************************************************** |
| 43 | 37 | |
| r26860 | r26861 | |
| 49 | 43 | // construction/destruction |
| 50 | 44 | victor9k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 51 | 45 | |
| 52 | | template<class _kbrdy> void set_kbrdy_callback(_kbrdy kbrdy) { m_write_kbrdy.set_callback(kbrdy); } |
| 46 | template<class _Object> static devcb2_base &set_kbrdy_handler(device_t &device, _Object object) { return downcast<victor9k_keyboard_device &>(device).m_kbrdy_handler.set_callback(object); } |
| 47 | template<class _Object> static devcb2_base &set_kbdata_handler(device_t &device, _Object object) { return downcast<victor9k_keyboard_device &>(device).m_kbdata_handler.set_callback(object); } |
| 53 | 48 | |
| 54 | 49 | // optional information overrides |
| 55 | 50 | virtual const rom_entry *device_rom_region() const; |
| r26860 | r26861 | |
| 87 | 82 | required_ioport m_yb; |
| 88 | 83 | required_ioport m_yc; |
| 89 | 84 | |
| 90 | | devcb2_write_line m_write_kbrdy; |
| 85 | devcb2_write_line m_kbrdy_handler; |
| 86 | devcb2_write_line m_kbdata_handler; |
| 91 | 87 | |
| 92 | 88 | UINT8 m_y; |
| 93 | 89 | int m_kbrdy; |
trunk/src/mess/drivers/victor9k.c
| r26860 | r26861 | |
| 1114 | 1114 | |
| 1115 | 1115 | MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, XTAL_30MHz/30) |
| 1116 | 1116 | MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via2_pa_r)) |
| 1117 | | MCFG_VIA6522_READCB1_HANDLER(DEVREADLINE(VICTOR9K_KEYBOARD_TAG, victor9k_keyboard_device, kbrdy_r)) |
| 1118 | | MCFG_VIA6522_READCB2_HANDLER(DEVREADLINE(VICTOR9K_KEYBOARD_TAG, victor9k_keyboard_device, kbdata_r)) |
| 1119 | 1117 | MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via2_pa_w)) |
| 1120 | 1118 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via2_pb_w)) |
| 1121 | 1119 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via2_irq_w)) |
| r26860 | r26861 | |
| 1172 | 1170 | MCFG_RS232_OUT_RI_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rib_w)) |
| 1173 | 1171 | MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, ctsb_w)) |
| 1174 | 1172 | |
| 1175 | | MCFG_VICTOR9K_KEYBOARD_ADD(WRITELINE(victor9k_state, kbrdy_w)) |
| 1173 | MCFG_DEVICE_ADD(VICTOR9K_KEYBOARD_TAG, VICTOR9K_KEYBOARD, 0) |
| 1174 | MCFG_VICTOR9K_KBRDY_HANDLER(WRITELINE(victor9k_state, kbrdy_w)) |
| 1175 | MCFG_VICTOR9K_KBDATA_HANDLER(DEVWRITELINE(M6522_2_TAG, via6522_device, write_cb2)) |
| 1176 | 1176 | |
| 1177 | 1177 | // internal ram |
| 1178 | 1178 | MCFG_RAM_ADD(RAM_TAG) |