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) |