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