trunk/src/emu/machine/im6402.c
r26704 | r26705 | |
103 | 103 | // or initialize to defaults if none provided |
104 | 104 | else |
105 | 105 | { |
106 | | memset(&m_in_rri_cb, 0, sizeof(m_in_rri_cb)); |
107 | 106 | memset(&m_out_tro_cb, 0, sizeof(m_out_tro_cb)); |
108 | 107 | memset(&m_out_dr_cb, 0, sizeof(m_out_dr_cb)); |
109 | 108 | memset(&m_out_tbre_cb, 0, sizeof(m_out_tbre_cb)); |
r26704 | r26705 | |
119 | 118 | void im6402_device::device_start() |
120 | 119 | { |
121 | 120 | // resolve callbacks |
122 | | m_in_rri_func.resolve(m_in_rri_cb, *this); |
123 | 121 | m_out_tro_func.resolve(m_out_tro_cb, *this); |
124 | 122 | m_out_dr_func.resolve(m_out_dr_cb, *this); |
125 | 123 | m_out_tbre_func.resolve(m_out_tbre_cb, *this); |
r26704 | r26705 | |
224 | 222 | |
225 | 223 | void im6402_device::rcv_callback() |
226 | 224 | { |
227 | | if (m_in_rri_func.isnull()) |
228 | | receive_register_update_bit(get_in_data_bit()); |
229 | | else |
230 | | receive_register_update_bit(m_in_rri_func()); |
| 225 | receive_register_update_bit(get_in_data_bit()); |
231 | 226 | } |
232 | 227 | |
233 | 228 | |
r26704 | r26705 | |
443 | 438 | |
444 | 439 | m_epe = state; |
445 | 440 | } |
| 441 | |
| 442 | WRITE_LINE_MEMBER(im6402_device::write_rx) |
| 443 | { |
| 444 | if (state) |
| 445 | { |
| 446 | input_callback(m_input_state | RX); |
| 447 | } |
| 448 | else |
| 449 | { |
| 450 | input_callback(m_input_state & ~RX); |
| 451 | } |
| 452 | } |
trunk/src/emu/machine/im6402.h
r26704 | r26705 | |
73 | 73 | int m_rrc; |
74 | 74 | int m_trc; |
75 | 75 | |
76 | | devcb_read_line m_in_rri_cb; |
77 | 76 | devcb_write_line m_out_tro_cb; |
78 | 77 | devcb_write_line m_out_dr_cb; |
79 | 78 | devcb_write_line m_out_tbre_cb; |
r26704 | r26705 | |
101 | 100 | DECLARE_READ_LINE_MEMBER( fe_r ) { return m_fe; } |
102 | 101 | DECLARE_READ_LINE_MEMBER( oe_r ) { return m_oe; } |
103 | 102 | |
| 103 | DECLARE_WRITE_LINE_MEMBER( write_rx ); |
104 | 104 | DECLARE_WRITE_LINE_MEMBER( rrc_w ); |
105 | 105 | DECLARE_WRITE_LINE_MEMBER( trc_w ); |
106 | 106 | DECLARE_WRITE_LINE_MEMBER( rrd_w ); |
r26704 | r26705 | |
133 | 133 | inline void set_tbre(int state); |
134 | 134 | inline void set_tre(int state); |
135 | 135 | |
136 | | devcb_resolved_read_line m_in_rri_func; |
137 | 136 | devcb_resolved_write_line m_out_tro_func; |
138 | 137 | devcb_resolved_write_line m_out_dr_func; |
139 | 138 | devcb_resolved_write_line m_out_tbre_func; |
trunk/src/mess/drivers/kyocera.c
r26704 | r26705 | |
1177 | 1177 | { |
1178 | 1178 | 0, |
1179 | 1179 | 0, |
1180 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
1181 | 1180 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
1182 | 1181 | DEVCB_NULL, |
1183 | 1182 | DEVCB_NULL, |
r26704 | r26705 | |
1390 | 1389 | MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf) |
1391 | 1390 | MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, INPUTLINE(I8085_TAG, I8085_RST75_LINE)) |
1392 | 1391 | MCFG_IM6402_ADD(IM6402_TAG, uart_intf) |
| 1392 | |
1393 | 1393 | MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) |
| 1394 | MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(IM6402_TAG, im6402_device, write_rx)) |
| 1395 | |
1394 | 1396 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
1395 | 1397 | MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface) |
1396 | 1398 | |