Previous 199869 Revisions Next

r26705 Monday 23rd December, 2013 at 10:34:34 UTC by smf
replaced read rx callback in IM6402 with a write handler, which allows multiple chips to be connected together without using glue methods. [smf]
[src/emu/machine]im6402.c im6402.h
[src/mess/drivers]kyocera.c wangpc.c wicat.c

trunk/src/emu/machine/im6402.c
r26704r26705
103103   // or initialize to defaults if none provided
104104   else
105105   {
106      memset(&m_in_rri_cb, 0, sizeof(m_in_rri_cb));
107106      memset(&m_out_tro_cb, 0, sizeof(m_out_tro_cb));
108107      memset(&m_out_dr_cb, 0, sizeof(m_out_dr_cb));
109108      memset(&m_out_tbre_cb, 0, sizeof(m_out_tbre_cb));
r26704r26705
119118void im6402_device::device_start()
120119{
121120   // resolve callbacks
122   m_in_rri_func.resolve(m_in_rri_cb, *this);
123121   m_out_tro_func.resolve(m_out_tro_cb, *this);
124122   m_out_dr_func.resolve(m_out_dr_cb, *this);
125123   m_out_tbre_func.resolve(m_out_tbre_cb, *this);
r26704r26705
224222
225223void im6402_device::rcv_callback()
226224{
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());
231226}
232227
233228
r26704r26705
443438
444439   m_epe = state;
445440}
441
442WRITE_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
r26704r26705
7373   int m_rrc;
7474   int m_trc;
7575
76   devcb_read_line     m_in_rri_cb;
7776   devcb_write_line    m_out_tro_cb;
7877   devcb_write_line    m_out_dr_cb;
7978   devcb_write_line    m_out_tbre_cb;
r26704r26705
101100   DECLARE_READ_LINE_MEMBER( fe_r ) { return m_fe; }
102101   DECLARE_READ_LINE_MEMBER( oe_r ) { return m_oe; }
103102
103   DECLARE_WRITE_LINE_MEMBER( write_rx );
104104   DECLARE_WRITE_LINE_MEMBER( rrc_w );
105105   DECLARE_WRITE_LINE_MEMBER( trc_w );
106106   DECLARE_WRITE_LINE_MEMBER( rrd_w );
r26704r26705
133133   inline void set_tbre(int state);
134134   inline void set_tre(int state);
135135
136   devcb_resolved_read_line    m_in_rri_func;
137136   devcb_resolved_write_line   m_out_tro_func;
138137   devcb_resolved_write_line   m_out_dr_func;
139138   devcb_resolved_write_line   m_out_tbre_func;
trunk/src/mess/drivers/wangpc.c
r26704r26705
943943   0, // HACK should be 62500*16
944944   62500*16,
945945   DEVCB_NULL,
946   DEVCB_NULL,
947946   DEVCB_DRIVER_LINE_MEMBER(wangpc_state, uart_dr_w),
948947   DEVCB_DRIVER_LINE_MEMBER(wangpc_state, uart_tbre_w),
949948   DEVCB_NULL
trunk/src/mess/drivers/kyocera.c
r26704r26705
11771177{
11781178   0,
11791179   0,
1180   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
11811180   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
11821181   DEVCB_NULL,
11831182   DEVCB_NULL,
r26704r26705
13901389   MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, kc85_8155_intf)
13911390   MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, INPUTLINE(I8085_TAG, I8085_RST75_LINE))
13921391   MCFG_IM6402_ADD(IM6402_TAG, uart_intf)
1392
13931393   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
1394   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(IM6402_TAG, im6402_device, write_rx))
1395
13941396   MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
13951397   MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface)
13961398
trunk/src/mess/drivers/wicat.c
r26704r26705
574574   0,  // RRC
575575   0,  // TRC
576576
577   DEVCB_NULL, //m_in_rri_cb;
578577   DEVCB_NULL, //m_out_tro_cb;
579578   DEVCB_NULL, //m_out_dr_cb;
580579   DEVCB_NULL, //m_out_tbre_cb;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team