Previous 199869 Revisions Next

r26687 Sunday 22nd December, 2013 at 16:27:05 UTC by smf
replaced read rx/cts/dcd callbacks in I8251 with write handlers, which allows multiple chips to be connected together without using glue methods. [smf]
[src/emu/bus/ieee488]softbox.c
[src/emu/machine]i8251.c i8251.h
[src/mame/drivers]ecoinfr.c
[src/mess/drivers]alphatro.c bw2.c cgc7900.c compis.c h8.c horizon.c imsai.c isbc.c jade.c kyocera.c m20.c nc.c pc6001.c pc8001.c pc8401a.c pc8801.c pc9801.c px8.c rainbow.c sage2.c sbrain.c sdk86.c sg1000.c softbox.c tandy2k.c tsispch.c v1050.c vixen.c vk100.c votrpss.c vt100.c xor100.c zorba.c
[src/mess/includes]compis.h v1050.h
[src/mess/machine]compiskb.c compiskb.h isa_ibm_mfc.c isa_ibm_mfc.h mbc55x.c pc.c poly88.c pp01.c v1050kb.c v1050kb.h

trunk/src/emu/machine/i8251.c
r26686r26687
2222    GLOBAL VARIABLES
2323***************************************************************************/
2424
25const i8251_interface default_i8251_interface = { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL };
25const i8251_interface default_i8251_interface = { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL };
2626
2727
2828/***************************************************************************
r26686r26687
8080   // or initialize to defaults if none provided
8181   else
8282   {
83      memset(&m_in_rxd_cb, 0, sizeof(m_in_rxd_cb));
8483      memset(&m_out_txd_cb, 0, sizeof(m_out_txd_cb));
85      memset(&m_in_dsr_cb, 0, sizeof(m_in_dsr_cb));
8684      memset(&m_out_dtr_cb, 0, sizeof(m_out_dtr_cb));
8785      memset(&m_out_rts_cb, 0, sizeof(m_out_rts_cb));
8886      memset(&m_out_rxrdy_cb, 0, sizeof(m_out_rxrdy_cb));
r26686r26687
9997void i8251_device::device_start()
10098{
10199   // resolve callbacks
102   m_in_rxd_func.resolve(m_in_rxd_cb,*this);
103100   m_out_txd_func.resolve(m_out_txd_cb,*this);
104   m_in_dsr_func.resolve(m_in_dsr_cb,*this);
105101   m_out_rxrdy_func.resolve(m_out_rxrdy_cb, *this);
106102   m_out_txrdy_func.resolve(m_out_txrdy_cb, *this);
107103   m_out_txempty_func.resolve(m_out_txempty_cb, *this);
r26686r26687
151147   {
152148      //logerror("I8251\n");
153149      /* get bit received from other side and update receive register */
154      if(m_in_rxd_func.isnull())
155         receive_register_update_bit(get_in_data_bit());
156      else
157         receive_register_update_bit(m_in_rxd_func());
150      receive_register_update_bit(get_in_data_bit());
158151
159152      if (is_receive_register_full())
160153      {
r26686r26687
674667
675668READ8_MEMBER(i8251_device::status_r)
676669{
677   UINT8 dsr = !(m_in_dsr_func.isnull() ? 0 : m_in_dsr_func() != 0);
670   UINT8 dsr = !((m_input_state & DSR) != 0);
678671   UINT8 status = (dsr << 7) | m_status;
679672
680673   LOG(("status: %02x\n", status));
r26686r26687
747740{
748741   device_serial_interface::device_timer(timer, id, param, ptr);
749742}
743
744
745WRITE_LINE_MEMBER(i8251_device::write_rx)
746{
747   if (state)
748   {
749      input_callback(m_input_state | RX);
750   }
751   else
752   {
753      input_callback(m_input_state & ~RX);
754   }
755}
756
757WRITE_LINE_MEMBER(i8251_device::write_dsr)
758{
759   if (state)
760   {
761      input_callback(m_input_state | DSR);
762   }
763   else
764   {
765      input_callback(m_input_state & ~DSR);
766   }
767}
trunk/src/emu/machine/i8251.h
r26686r26687
4343
4444struct i8251_interface
4545{
46   devcb_read_line     m_in_rxd_cb;
4746   devcb_write_line    m_out_txd_cb;
48   devcb_read_line     m_in_dsr_cb;
4947   devcb_write_line    m_out_dtr_cb;
5048   devcb_write_line    m_out_rts_cb;
5149   devcb_write_line    m_out_rxrdy_cb;
r26686r26687
8583   DECLARE_WRITE_LINE_MEMBER( txc_w ) { if (state) transmit_clock(); }
8684   DECLARE_WRITE_LINE_MEMBER( rxc_w ) { if (state) receive_clock(); }
8785
86   DECLARE_WRITE_LINE_MEMBER( write_rx );
87   DECLARE_WRITE_LINE_MEMBER( write_dsr );
88
8889   void receive_character(UINT8 ch);
8990
9091   virtual void input_callback(UINT8 state);
r26686r26687
99100   void update_tx_ready();
100101   void update_tx_empty();
101102private:
102   devcb_resolved_read_line    m_in_rxd_func;
103103   devcb_resolved_write_line   m_out_txd_func;
104   devcb_resolved_read_line    m_in_dsr_func;
105104   devcb_resolved_write_line   m_out_dtr_func;
106105   devcb_resolved_write_line   m_out_rts_func;
107106   devcb_resolved_write_line   m_out_rxrdy_func;
trunk/src/emu/bus/ieee488/softbox.c
r26686r26687
9999
100100static const i8251_interface usart_intf =
101101{
102   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
103102   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
104   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
105103   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
106104   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
107105   DEVCB_NULL,
r26686r26687
277275   MCFG_HARDDISK_ADD("harddisk3")
278276   MCFG_HARDDISK_ADD("harddisk4")
279277   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
278   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
279   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
280280MACHINE_CONFIG_END
281281
282282
trunk/src/mess/machine/pp01.c
r26686r26687
232232// when rts and dtr are both high, the uart is being used for cassette operations
233233const i8251_interface pp01_uart_intf =
234234{
235   DEVCB_NULL, // in rxd
236235   DEVCB_NULL, // out txd
237   DEVCB_NULL, // in dsr
238236   DEVCB_NULL, // out dtr
239237   DEVCB_NULL, // out rts
240238   DEVCB_NULL, // out rxrdy
trunk/src/mess/machine/v1050kb.c
r26686r26687
320320      m_y9(*this, "Y9"),
321321      m_ya(*this, "YA"),
322322      m_yb(*this, "YB"),
323      m_y(0),
324      m_so(1)
323      m_out_tx_handler(*this),
324      m_y(0)
325325{
326326}
327327
r26686r26687
334334{
335335   // state saving
336336   save_item(NAME(m_y));
337   save_item(NAME(m_so));
338337}
339338
340339
r26686r26687
344343
345344void v1050_keyboard_device::device_reset()
346345{
346   m_out_tx_handler.resolve_safe();
347   m_out_tx_handler(1);
347348}
348349
349350
r26686r26687
358359
359360
360361//-------------------------------------------------
361//  so_r -
362//-------------------------------------------------
363
364READ_LINE_MEMBER( v1050_keyboard_device::so_r )
365{
366   return m_so;
367}
368
369
370//-------------------------------------------------
371362//  kb_p1_r -
372363//-------------------------------------------------
373364
r26686r26687
433424   discrete_sound_w(m_discrete, space, NODE_01, BIT(data, 6));
434425
435426   // serial output
436   m_so = BIT(data, 7);
427   m_out_tx_handler(BIT(data, 7));
437428}
trunk/src/mess/machine/v1050kb.h
r26686r26687
2121
2222
2323//**************************************************************************
24//  MACROS / CONSTANTS
25//**************************************************************************
26
27#define V1050_KEYBOARD_TAG  "v1050kb"
28
29
30
31//**************************************************************************
3224//  INTERFACE CONFIGURATION MACROS
3325//**************************************************************************
3426
35#define MCFG_V1050_KEYBOARD_ADD() \
36   MCFG_DEVICE_ADD(V1050_KEYBOARD_TAG, V1050_KEYBOARD, 0)
27#define MCFG_V1050_KEYBOARD_OUT_TX_HANDLER(_devcb) \
28   devcb = &v1050_keyboard_device::set_out_tx_handler(*device, DEVCB2_##_devcb);
3729
3830
3931
r26686r26687
4941   // construction/destruction
5042   v1050_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
5143
44   template<class _Object> static devcb2_base &set_out_tx_handler(device_t &device, _Object object) { return downcast<v1050_keyboard_device &>(device).m_out_tx_handler.set_callback(object); }
45
5246   // optional information overrides
5347   virtual const rom_entry *device_rom_region() const;
5448   virtual machine_config_constructor device_mconfig_additions() const;
5549   virtual ioport_constructor device_input_ports() const;
5650
5751   DECLARE_WRITE_LINE_MEMBER( si_w );
58   DECLARE_READ_LINE_MEMBER( so_r );
5952
6053   // not really public
6154   DECLARE_READ8_MEMBER( kb_p1_r );
r26686r26687
8275   required_ioport m_y9;
8376   required_ioport m_ya;
8477   required_ioport m_yb;
78   devcb2_write_line   m_out_tx_handler;
8579
8680   UINT8 m_y;
87   int m_so;
8881};
8982
9083
trunk/src/mess/machine/mbc55x.c
r26686r26687
287287   DEVCB_NULL,
288288   DEVCB_NULL,
289289   DEVCB_NULL,
290   DEVCB_NULL,
291   DEVCB_NULL,
292290   DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir3_w),
293291   DEVCB_NULL,
294292   DEVCB_NULL,
trunk/src/mess/machine/compiskb.c
r26686r26687
1818//**************************************************************************
1919
2020#define I8748_TAG       "i8748"
21#define SPEAKER_TAG     "speaker"
2122
2223
2324
r26686r26687
239240
240241compis_keyboard_device::compis_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
241242   : device_t(mconfig, COMPIS_KEYBOARD, "Compis Keyboard", tag, owner, clock, "compiskb", __FILE__),
242      m_write_irq(*this),
243243      m_maincpu(*this, I8748_TAG),
244244      m_speaker(*this, SPEAKER_TAG),
245245      m_y1(*this, "Y1"),
r26686r26687
252252      m_y8(*this, "Y8"),
253253      m_y9(*this, "Y9"),
254254      m_special(*this, "SPECIAL"),
255      m_so(1),
255      m_out_tx_handler(*this),
256256      m_bus(0xff),
257257      m_keylatch(0)
258258{
r26686r26687
266266void compis_keyboard_device::device_start()
267267{
268268   // resolve callbacks
269   m_write_irq.resolve_safe();
269   m_out_tx_handler.resolve_safe();
270   m_out_tx_handler(1);
270271}
271272
272273
273274//-------------------------------------------------
274//  so_r - serial output read
275//-------------------------------------------------
276
277READ_LINE_MEMBER( compis_keyboard_device::so_r )
278{
279   return m_so;
280}
281
282
283//-------------------------------------------------
284275//  si_w - serial input write
285276//-------------------------------------------------
286277
r26686r26687
334325   output_set_led_value(LED_CAPS, BIT(data, 6));
335326
336327   // serial data out
337   m_so = BIT(data, 7);
328   m_out_tx_handler(BIT(data, 7));
338329}
339330
340331
trunk/src/mess/machine/compiskb.h
r26686r26687
2121
2222
2323//**************************************************************************
24//  MACROS / CONSTANTS
25//**************************************************************************
26
27#define COMPIS_KEYBOARD_TAG "compiskb"
28#define SPEAKER_TAG         "speaker"
29
30
31
32//**************************************************************************
3324//  INTERFACE CONFIGURATION MACROS
3425//**************************************************************************
3526
36#define MCFG_COMPIS_KEYBOARD_ADD(_irq) \
37   MCFG_DEVICE_ADD(COMPIS_KEYBOARD_TAG, COMPIS_KEYBOARD, 0) \
38   downcast<compis_keyboard_device *>(device)->set_irq_callback(DEVCB2_##_irq);
27#define MCFG_COMPIS_KEYBOARD_OUT_TX_HANDLER(_devcb) \
28   devcb = &compis_keyboard_device::set_out_tx_handler(*device, DEVCB2_##_devcb);
3929
4030
4131
32
4233//**************************************************************************
4334//  TYPE DEFINITIONS
4435//**************************************************************************
r26686r26687
5142   // construction/destruction
5243   compis_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
5344
54   template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); }
45   template<class _Object> static devcb2_base &set_out_tx_handler(device_t &device, _Object object) { return downcast<compis_keyboard_device &>(device).m_out_tx_handler.set_callback(object); }
5546
5647   // optional information overrides
5748   virtual const rom_entry *device_rom_region() const;
5849   virtual machine_config_constructor device_mconfig_additions() const;
5950   virtual ioport_constructor device_input_ports() const;
6051
61   DECLARE_READ_LINE_MEMBER( so_r );
6252   DECLARE_WRITE_LINE_MEMBER( si_w );
6353
6454   DECLARE_READ8_MEMBER( bus_r );
r26686r26687
7666      LED_CAPS
7767   };
7868
79   devcb2_write_line   m_write_irq;
80
8169   required_device<cpu_device> m_maincpu;
8270   required_device<speaker_sound_device> m_speaker;
8371   required_ioport m_y1;
r26686r26687
9078   required_ioport m_y8;
9179   required_ioport m_y9;
9280   required_ioport m_special;
81   devcb2_write_line   m_out_tx_handler;
9382
94   int m_so;
95
9683   UINT8 m_bus;
9784   UINT8 m_keylatch;
9885};
trunk/src/mess/machine/pc.c
r26686r26687
425425
426426const i8251_interface mc1502_i8251_interface =
427427{
428   DEVCB_NULL, /* XXX RxD data are accessible via PPI port C, bit 7 */
428   /* XXX RxD data are accessible via PPI port C, bit 7 */
429429   DEVCB_NULL,
430430   DEVCB_NULL,
431431   DEVCB_NULL,
432   DEVCB_NULL,
433432   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir7_w), /* default handler does nothing */
434433   DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir7_w),
435434   DEVCB_NULL,
trunk/src/mess/machine/poly88.c
r26686r26687
255255   DEVCB_NULL,
256256   DEVCB_NULL,
257257   DEVCB_NULL,
258   DEVCB_NULL,
259   DEVCB_NULL,
260258   DEVCB_DRIVER_LINE_MEMBER(poly88_state,poly88_usart_rxready),
261259   DEVCB_NULL,
262260   DEVCB_NULL,
trunk/src/mess/machine/isa_ibm_mfc.c
r26686r26687
295295//  uPD71051 USART
296296//-------------------------------------------------
297297
298READ_LINE_MEMBER( isa8_ibm_mfc_device::d70151_dsr_r )
299{
300   return (m_tcr & TCR_EXT8) ? 1 : 0;
301}
302
303298void isa8_ibm_mfc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
304299{
305300   m_d71051->transmit_clock();
r26686r26687
310305{
311306   DEVCB_NULL,
312307   DEVCB_NULL,
313   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ibm_mfc_device, d70151_dsr_r),
314308   DEVCB_NULL,
315309   DEVCB_NULL,
316310   DEVCB_NULL,
317311   DEVCB_NULL,
318   DEVCB_NULL,
319312   DEVCB_NULL
320313};
321314
r26686r26687
426419         if (~m_tcr & TCR_TBC)
427420            set_pc_interrupt(PC_IRQ_TIMERB, 0);
428421
422         m_d71051->write_dsr((m_tcr & TCR_EXT8) ? 1 : 0);
423
429424         break;
430425      }
431426
r26686r26687
526521void isa8_ibm_mfc_device::device_reset()
527522{
528523   m_tcr = 0;
524   m_d71051->write_dsr(0);
529525   m_pc_irq_state = 0;
530526   m_z80_irq_state = 0;
531527}
trunk/src/mess/machine/isa_ibm_mfc.h
r26686r26687
4949      DECLARE_READ8_MEMBER( ibm_mfc_r );
5050      DECLARE_WRITE8_MEMBER( ibm_mfc_w );
5151
52      DECLARE_READ_LINE_MEMBER( d70151_dsr_r );
53
5452      DECLARE_WRITE_LINE_MEMBER( d8253_clk0_out );
5553      DECLARE_WRITE_LINE_MEMBER( d8253_clk1_out );
5654      DECLARE_WRITE_LINE_MEMBER( d8253_clk2_out );
trunk/src/mess/includes/compis.h
r26686r26687
4646#define ISBX_0_TAG      "isbx0"
4747#define ISBX_1_TAG      "isbx1"
4848#define SCREEN_TAG      "screen"
49#define COMPIS_KEYBOARD_TAG "compiskb"
4950
5051class compis_state : public driver_device
5152{
trunk/src/mess/includes/v1050.h
r26686r26687
4646#define TIMER_RST_TAG           "timer_rst"
4747#define SASIBUS_TAG             "sasi"
4848#define RS232_TAG               "rs232"
49#define V1050_KEYBOARD_TAG      "v1050kb"
4950
5051#define V1050_VIDEORAM_SIZE     0x8000
5152#define V1050_VIDEORAM_MASK     0x7fff
trunk/src/mess/drivers/sage2.c
r26686r26687
427427
428428static const i8251_interface usart0_intf =
429429{
430   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
431430   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
432   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
433431   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
434432   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
435433   DEVCB_CPU_INPUT_LINE(M68000_TAG, M68K_IRQ_5),
r26686r26687
445443
446444static const i8251_interface usart1_intf =
447445{
448   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
449446   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
450   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
451447   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
452448   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
453449   DEVCB_DEVICE_LINE_MEMBER(I8259_TAG, pic8259_device, ir1_w),
r26686r26687
555551   MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats)
556552   MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats)
557553   MCFG_IEEE488_BUS_ADD()
554
558555   MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal")
556   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_0_TAG, i8251_device, write_rx))
557   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_0_TAG, i8251_device, write_dsr))
559558   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
559
560560   MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
561   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_1_TAG, i8251_device, write_rx))
562   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_1_TAG, i8251_device, write_dsr))
561563
562564   // internal ram
563565   MCFG_RAM_ADD(RAM_TAG)
trunk/src/mess/drivers/tandy2k.c
r26686r26687
408408
409409static const i8251_interface usart_intf =
410410{
411   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
412411   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
413   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
414412   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
415413   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
416414   DEVCB_DRIVER_LINE_MEMBER(tandy2k_state, rxrdy_w),
r26686r26687
699697   MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats)
700698   MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":1", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats)
701699   MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
700
702701   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
702   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_rx))
703   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_dsr))
704
703705   MCFG_TANDY2K_KEYBOARD_ADD(WRITELINE(tandy2k_state, kbdclk_w), WRITELINE(tandy2k_state, kbddat_w))
704706
705707   // software lists
trunk/src/mess/drivers/compis.c
r26686r26687
544544
545545static const i8251_interface usart_intf =
546546{
547   DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, so_r),
548547   DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, si_w),
549548   DEVCB_NULL,
550549   DEVCB_NULL,
551   DEVCB_NULL,
552550   DEVCB_DEVICE_LINE_MEMBER(I80130_TAG, i80130_device, ir2_w),
553551   DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int1_w),
554552   DEVCB_NULL,
r26686r26687
781779   MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir6_w))
782780   MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir5_w))
783781   MCFG_ISBX_SLOT_MDRQT_CALLBACK(DEVWRITELINE(I80186_TAG, i80186_cpu_device, drq1_w))
784   MCFG_COMPIS_KEYBOARD_ADD(NULL)
785782
783   MCFG_DEVICE_ADD(COMPIS_KEYBOARD_TAG, COMPIS_KEYBOARD, 0)
784   MCFG_COMPIS_KEYBOARD_OUT_TX_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_rx))
785
786786   // software lists
787787   MCFG_SOFTWARE_LIST_ADD("flop_list", "compis")
788788
trunk/src/mess/drivers/bw2.c
r26686r26687
550550
551551static const i8251_interface usart_intf =
552552{
553   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
554553   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
555   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
556554   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
557555   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
558556   DEVCB_NULL,
r26686r26687
660658   MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", bw2_floppies, "35dd", bw2_state::floppy_formats)
661659   MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", bw2_floppies, NULL,   bw2_state::floppy_formats)
662660   MCFG_BW2_EXPANSION_SLOT_ADD(BW2_EXPANSION_SLOT_TAG, XTAL_16MHz, bw2_expansion_cards, NULL)
661
663662   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
663   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
664   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
664665
665666   // software list
666667   MCFG_SOFTWARE_LIST_ADD("flop_list","bw2")
trunk/src/mess/drivers/vk100.c
r26686r26687
10091009
10101010static const i8251_interface i8251_intf =
10111011{
1012   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
10131012   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
1014   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
10151013   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
10161014   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
10171015   //DEVCB_DRIVER_LINE_MEMBER(vk100_state, i8251_rts), // out_rts_cb
r26686r26687
10361034
10371035   /* i8251 uart */
10381036   MCFG_I8251_ADD("i8251", i8251_intf)
1037
10391038   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
1039   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rx))
1040   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("i8251", i8251_device, write_dsr))
1041
10401042   MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w))
10411043
10421044   MCFG_DEFAULT_LAYOUT( layout_vk100 )
trunk/src/mess/drivers/alphatro.c
r26686r26687
6767   DECLARE_READ8_MEMBER(port10_r);
6868   DECLARE_WRITE8_MEMBER(port10_w);
6969   DECLARE_INPUT_CHANGED_MEMBER(alphatro_break);
70   DECLARE_READ_LINE_MEMBER(rxdata_callback);
7170   DECLARE_WRITE_LINE_MEMBER(txdata_callback);
7271   TIMER_DEVICE_CALLBACK_MEMBER(alphatro_c);
7372   TIMER_DEVICE_CALLBACK_MEMBER(alphatro_p);
r26686r26687
140139   }
141140}
142141
143READ_LINE_MEMBER( alphatro_state::rxdata_callback )
144{
145   return (bool)m_cass_data[2];
146}
147
148142WRITE_LINE_MEMBER( alphatro_state::txdata_callback )
149143{
150144   m_cass_state = state;
r26686r26687
379373   m_cass_state = 1;
380374   m_cass_data[0] = 0;
381375   m_cass_data[1] = 0;
382   m_cass_data[2] = 0;
376   m_usart->write_rx(0);
383377   m_cass_data[3] = 0;
384378   m_beep->set_state(0);
385379   m_beep->set_frequency(950);    /* piezo-device needs to be measured */
r26686r26687
417411
418412static const i8251_interface alphatro_usart_interface =
419413{
420   DEVCB_DRIVER_LINE_MEMBER(alphatro_state,rxdata_callback), //rxd_cb
421414   DEVCB_DRIVER_LINE_MEMBER(alphatro_state,txdata_callback), //txd_cb
422415   DEVCB_NULL,
423416   DEVCB_NULL,
424417   DEVCB_NULL,
425418   DEVCB_NULL,
426   DEVCB_NULL,
427   DEVCB_NULL,
428419   DEVCB_NULL
429420};
430421
r26686r26687
447438   if (cass_ws != m_cass_data[0])
448439   {
449440      m_cass_data[0] = cass_ws;
450      m_cass_data[2] = ((m_cass_data[1] < 12) ? 1 : 0);
441      m_usart->write_rx((m_cass_data[1] < 12) ? 1 : 0);
451442      m_cass_data[1] = 0;
452443   }
453444}
trunk/src/mess/drivers/h8.c
r26686r26687
7171   DECLARE_WRITE8_MEMBER(portf1_w);
7272   DECLARE_WRITE8_MEMBER(h8_status_callback);
7373   DECLARE_WRITE_LINE_MEMBER(h8_inte_callback);
74   DECLARE_READ_LINE_MEMBER(rxdata_callback);
7574   DECLARE_WRITE_LINE_MEMBER(txdata_callback);
7675   TIMER_DEVICE_CALLBACK_MEMBER(h8_irq_pulse);
7776   TIMER_DEVICE_CALLBACK_MEMBER(h8_c);
r26686r26687
219218   m_cass_state = 1;
220219   m_cass_data[0] = 0;
221220   m_cass_data[1] = 0;
222   m_cass_data[2] = 0;
221   m_uart->write_rx(0);
223222   m_cass_data[3] = 0;
224223   m_ff_b = 1;
225224}
r26686r26687
262261   output_set_value("run_led", state);
263262}
264263
265READ_LINE_MEMBER( h8_state::rxdata_callback )
266{//printf("%X",m_cass_data[2]);
267   return (bool)m_cass_data[2];
268}
269
270264WRITE_LINE_MEMBER( h8_state::txdata_callback )
271265{
272266   m_cass_state = state;
r26686r26687
274268
275269static const i8251_interface uart_intf =
276270{
277   DEVCB_DRIVER_LINE_MEMBER(h8_state,rxdata_callback), //rxd_cb
278271   DEVCB_DRIVER_LINE_MEMBER(h8_state,txdata_callback), //txd_cb
279272   DEVCB_NULL,
280273   DEVCB_NULL,
281274   DEVCB_NULL,
282275   DEVCB_NULL,
283276   DEVCB_NULL,
284   DEVCB_NULL,
285277   DEVCB_NULL
286278};
287279
r26686r26687
306298   if (cass_ws != m_cass_data[0])
307299   {
308300      m_cass_data[0] = cass_ws;
309      m_cass_data[2] = (m_cass_data[1] < 12) ? 1 : 0;
301      m_uart->write_rx((m_cass_data[1] < 12) ? 1 : 0);
310302      m_cass_data[1] = 0;
311303   }
312304}
trunk/src/mess/drivers/pc6001.c
r26686r26687
19261926   DEVCB_NULL,
19271927   DEVCB_NULL,
19281928   DEVCB_NULL,
1929   DEVCB_NULL,
1930   DEVCB_NULL,
19311929   DEVCB_NULL
19321930};
19331931
trunk/src/mess/drivers/px8.c
r26686r26687
734734   DEVCB_NULL,
735735   DEVCB_NULL,
736736   DEVCB_NULL,
737   DEVCB_NULL,
738   DEVCB_NULL,
739737   DEVCB_NULL
740738};
741739
trunk/src/mess/drivers/v1050.c
r26686r26687
932932
933933static const i8251_interface kb_8251_intf =
934934{
935   DEVCB_DEVICE_LINE_MEMBER(V1050_KEYBOARD_TAG, v1050_keyboard_device, so_r),
936935   DEVCB_DEVICE_LINE_MEMBER(V1050_KEYBOARD_TAG, v1050_keyboard_device, si_w),
937936   DEVCB_NULL,
938937   DEVCB_NULL,
939   DEVCB_NULL,
940938   DEVCB_DRIVER_LINE_MEMBER(v1050_state, kb_rxrdy_w),
941939   DEVCB_NULL,
942940   DEVCB_NULL,
r26686r26687
967965
968966static const i8251_interface sio_8251_intf =
969967{
970   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
971968   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
972   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
973969   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
974970   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
975971   DEVCB_DRIVER_LINE_MEMBER(v1050_state, sio_rxrdy_w),
r26686r26687
11371133   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":3", v1050_floppies, NULL,    floppy_image_device::default_floppy_formats)
11381134   MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_KB_TAG, v1050_state, kb_8251_tick, attotime::from_hz((double)XTAL_16MHz/4/13/8))
11391135   MCFG_TIMER_DRIVER_ADD(TIMER_SIO_TAG, v1050_state, sio_8251_tick)
1136
11401137   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
1138   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251A_SIO_TAG, i8251_device, write_rx))
1139   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251A_SIO_TAG, i8251_device, write_dsr))
11411140
11421141   // SASI bus
11431142   MCFG_SCSIBUS_ADD(SASIBUS_TAG)
r26686r26687
11491148   MCFG_TIMER_DRIVER_ADD(TIMER_RST_TAG, v1050_state, sasi_rst_tick)
11501149
11511150   // keyboard
1152   MCFG_V1050_KEYBOARD_ADD()
1151   MCFG_DEVICE_ADD(V1050_KEYBOARD_TAG, V1050_KEYBOARD, 0)
1152   MCFG_V1050_KEYBOARD_OUT_TX_HANDLER(DEVWRITELINE(I8251A_KB_TAG, i8251_device, write_rx))
11531153
11541154   // software lists
11551155   MCFG_SOFTWARE_LIST_ADD("flop_list", "v1050_flop")
trunk/src/mess/drivers/isbc.c
r26686r26687
132132
133133static const serial_terminal_interface terminal_intf =
134134{
135   DEVCB_NULL
135   DEVCB_DEVICE_LINE_MEMBER("uart8251", i8251_device, write_rx)
136136};
137137
138138static const struct pit8253_interface isbc86_pit_config =
r26686r26687
245245
246246static const i8251_interface isbc_uart8251_interface =
247247{
248   DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, tx_r),
249248   DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, rx_w),
250249   DEVCB_NULL,
251250   DEVCB_NULL,
252   DEVCB_NULL,
253251   DEVCB_DEVICE_LINE_MEMBER("pic_0", pic8259_device, ir6_w),
254252   DEVCB_NULL,
255253   DEVCB_NULL,
trunk/src/mess/drivers/votrpss.c
r26686r26687
193193
194194static const i8251_interface uart_intf =
195195{
196   //DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
197196   //DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
198   //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dsr_r),
199197   //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dtr_w),
200198   //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
201199   DEVCB_NULL,
r26686r26687
204202   DEVCB_NULL,
205203   DEVCB_NULL,
206204   DEVCB_NULL,
207   DEVCB_NULL,
208   DEVCB_NULL,
209205   DEVCB_NULL
210206};
211207
r26686r26687
342338   /* Serial components - comment out if not needed */
343339   //MCFG_TIMER_DRIVER_ADD_PERIODIC("serial", votrpss_state, serial_tick, attotime::from_hz(153600))
344340   //MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal")
341   //MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart", i8251_device, write_rx))
342   //MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart", i8251_device, write_dsr))
345343MACHINE_CONFIG_END
346344
347345
trunk/src/mess/drivers/softbox.c
r26686r26687
178178
179179static const i8251_interface usart_intf =
180180{
181   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
182181   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
183   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
184182   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
185183   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
186184   DEVCB_NULL,
r26686r26687
418416   MCFG_HARDDISK_ADD("harddisk2")
419417   MCFG_HARDDISK_ADD("harddisk3")
420418   MCFG_HARDDISK_ADD("harddisk4")
419
421420   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, "serial_terminal")
421   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
422   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
423
422424   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
423425   MCFG_IMI5000H_ADD("corvus1")
424426
trunk/src/mess/drivers/nc.c
r26686r26687
817817   DEVCB_NULL,
818818   DEVCB_NULL,
819819   DEVCB_NULL,
820   DEVCB_NULL,
821   DEVCB_NULL,
822820   DEVCB_DRIVER_LINE_MEMBER(nc_state,nc100_rxrdy_callback),
823821   DEVCB_DRIVER_LINE_MEMBER(nc_state,nc100_txrdy_callback),
824822   DEVCB_NULL,
r26686r26687
11641162   DEVCB_NULL,
11651163   DEVCB_NULL,
11661164   DEVCB_NULL,
1167   DEVCB_NULL,
1168   DEVCB_NULL,
11691165   DEVCB_DRIVER_LINE_MEMBER(nc_state,nc200_rxrdy_callback),
11701166   DEVCB_DRIVER_LINE_MEMBER(nc_state,nc200_txrdy_callback),
11711167   DEVCB_NULL,
trunk/src/mess/drivers/vt100.c
r26686r26687
407407
408408static const i8251_interface i8251_intf =
409409{
410   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
411410   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
412   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
413411   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
414412   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
415413   DEVCB_NULL, // out_rxrdy_cb
r26686r26687
442440
443441   MCFG_VT100_VIDEO_ADD("vt100_video", vt100_video_interface)
444442
443   MCFG_I8251_ADD("i8251", i8251_intf)
445444
446   /* i8251 uart */
447   MCFG_I8251_ADD("i8251", i8251_intf)
448445   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
446   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rx))
447   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("i8251", i8251_device, write_dsr))
448
449449   MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w))
450450
451451
trunk/src/mess/drivers/zorba.c
r26686r26687
234234   DEVCB_NULL,
235235   DEVCB_NULL,
236236   DEVCB_NULL,
237   DEVCB_NULL,
238   DEVCB_NULL,
239237   DEVCB_NULL
240238};
241239
r26686r26687
248246   DEVCB_NULL,
249247   DEVCB_NULL,
250248   DEVCB_NULL,
251   DEVCB_NULL,
252   DEVCB_NULL,
253249   DEVCB_NULL
254250};
255251
r26686r26687
262258   DEVCB_NULL,
263259   DEVCB_NULL,
264260   DEVCB_NULL,
265   DEVCB_NULL,
266   DEVCB_NULL,
267261   DEVCB_NULL
268262};
269263
trunk/src/mess/drivers/imsai.c
r26686r26687
105105   DEVCB_NULL,
106106   DEVCB_NULL,
107107   DEVCB_NULL,
108   DEVCB_NULL,
109   DEVCB_NULL,
110108   DEVCB_NULL
111109};
112110
trunk/src/mess/drivers/jade.c
r26686r26687
9191   DEVCB_NULL,
9292   DEVCB_NULL,
9393   DEVCB_NULL,
94   DEVCB_NULL,
95   DEVCB_NULL,
9694   DEVCB_NULL
9795};
9896
trunk/src/mess/drivers/pc8001.c
r26686r26687
411411   DEVCB_NULL,
412412   DEVCB_NULL,
413413   DEVCB_NULL,
414   DEVCB_NULL,
415   DEVCB_NULL,
416414   DEVCB_NULL
417415};
418416
trunk/src/mess/drivers/pc8801.c
r26686r26687
447447   DECLARE_READ8_MEMBER(upd765_tc_r);
448448   DECLARE_WRITE8_MEMBER(fdc_irq_vector_w);
449449   DECLARE_WRITE8_MEMBER(fdc_drive_mode_w);
450   DECLARE_READ_LINE_MEMBER(rxdata_callback);
451450   DECLARE_WRITE_LINE_MEMBER(txdata_callback);
452   DECLARE_READ_LINE_MEMBER(dsr_r);
453451   DECLARE_WRITE_LINE_MEMBER(rxrdy_w);
454452   DECLARE_READ8_MEMBER(pc8801_sound_board_r);
455453   DECLARE_WRITE8_MEMBER(pc8801_sound_board_w);
r26686r26687
26062604};
26072605
26082606/* Cassette Configuration */
2609READ_LINE_MEMBER( pc8801_state::rxdata_callback )
2610{
2611   return 0;
2612   //return (m_cass->input() > -0.1) ? 1 : 0;
2613}
26142607
2615READ_LINE_MEMBER( pc8801_state::dsr_r )
2616{
2617   return 0; // bit 7 status
2618}
2619
26202608WRITE_LINE_MEMBER( pc8801_state::txdata_callback )
26212609{
26222610   //m_cass->output( (state) ? 0.8 : -0.8);
r26686r26687
26292617
26302618static const i8251_interface uart_intf =
26312619{
2632   DEVCB_DRIVER_LINE_MEMBER(pc8801_state,rxdata_callback), //rxd_cb
26332620   DEVCB_DRIVER_LINE_MEMBER(pc8801_state,txdata_callback), //txd_cb
2634   DEVCB_DRIVER_LINE_MEMBER(pc8801_state,dsr_r),
26352621   DEVCB_NULL,
26362622   DEVCB_DRIVER_LINE_MEMBER(pc8801_state,rxrdy_w),
26372623   DEVCB_NULL,
trunk/src/mess/drivers/sbrain.c
r26686r26687
277277   DEVCB_NULL,
278278   DEVCB_NULL,
279279   DEVCB_NULL,
280   DEVCB_NULL,
281   DEVCB_NULL,
282280   DEVCB_NULL
283281};
284282
r26686r26687
290288   DEVCB_NULL,
291289   DEVCB_NULL,
292290   DEVCB_NULL,
293   DEVCB_NULL,
294   DEVCB_NULL,
295291   DEVCB_NULL
296292};
297293
trunk/src/mess/drivers/tsispch.c
r26686r26687
164164   machine().device<pic8259_device>("pic8259")->ir3_w(state);
165165}
166166
167// (todo: proper hookup, currently using hack w/i8251_receive_character())
167168const i8251_interface i8251_config =
168169{
169   DEVCB_NULL, // in rxd, serial (todo: proper hookup, currently using hack w/i8251_receive_character())
170170   DEVCB_NULL, // out txd, serial
171   DEVCB_NULL, // in dsr
172171   DEVCB_NULL, // out dtr
173172   DEVCB_NULL, // out rts
174173   DEVCB_DRIVER_LINE_MEMBER(tsispch_state,i8251_rxrdy_int), // out rxrdy
trunk/src/mess/drivers/horizon.c
r26686r26687
103103
104104static const i8251_interface usart_l_intf =
105105{
106   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
107106   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
108   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
109107   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
110108   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
111109   DEVCB_NULL,
r26686r26687
121119
122120static const i8251_interface usart_r_intf =
123121{
124   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
125122   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
126   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
127123   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
128124   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
129125   DEVCB_NULL,
r26686r26687
192188   // devices
193189   MCFG_I8251_ADD(I8251_L_TAG, usart_l_intf)
194190   MCFG_I8251_ADD(I8251_R_TAG, usart_r_intf)
191
195192   MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal")
193   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_L_TAG, i8251_device, write_rx))
194   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_L_TAG, i8251_device, write_rx))
196195   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
196
197197   MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
198   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_R_TAG, i8251_device, write_rx))
199   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_R_TAG, i8251_device, write_rx))
198200
199201   // S-100
200202   MCFG_S100_BUS_ADD(s100_intf)
trunk/src/mess/drivers/vixen.c
r26686r26687
670670
671671static const i8251_interface usart_intf =
672672{
673   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
674673   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
675   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
676674   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
677675   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
678676   DEVCB_DRIVER_LINE_MEMBER(vixen_state, rxrdy_w),
r26686r26687
818816   MCFG_IEEE488_BUS_ADD()
819817   MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(vixen_state, srq_w))
820818   MCFG_IEEE488_ATN_CALLBACK(WRITELINE(vixen_state, atn_w))
819
821820   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
821   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(P8251A_TAG, i8251_device, write_rx))
822   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(P8251A_TAG, i8251_device, write_dsr))
822823
823824   /* software lists */
824825   MCFG_SOFTWARE_LIST_ADD("disk_list", "vixen")
trunk/src/mess/drivers/rainbow.c
r26686r26687
272272
273273   DECLARE_READ8_MEMBER(system_parameter_r);
274274
275   DECLARE_READ_LINE_MEMBER(dsr_r);
276
277   DECLARE_READ_LINE_MEMBER(kbd_rx);
278275   DECLARE_WRITE_LINE_MEMBER(kbd_tx);
279276   DECLARE_WRITE_LINE_MEMBER(kbd_rxready_w);
280277   DECLARE_WRITE_LINE_MEMBER(kbd_txready_w);
r26686r26687
510507      PORT_DIPNAME( 0x02, 0x02, "W13 (FACTORY TEST A, LEAVE OFF)") PORT_TOGGLE
511508      PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
512509      PORT_DIPSETTING(    0x00, DEF_STR( On ) )
510
513511   PORT_START("W14")
514512      PORT_DIPNAME( 0x04, 0x04, "W14 (FACTORY TEST B, LEAVE OFF)") PORT_TOGGLE
515513      PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
r26686r26687
523521      PORT_DIPNAME( 0x01, 0x00, "W18 (FACTORY TEST D, LEAVE OFF) (8251A: DSR)") PORT_TOGGLE
524522      PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
525523      PORT_DIPSETTING(    0x01, DEF_STR( On ) )
524      PORT_WRITE_LINE_DEVICE_MEMBER("kbdser", i8251_device, write_dsr)
526525
527526    // J17 jumper on FDC controller board shifts drive select (experimental) -
528527   PORT_START("FLOPPY CONTROLLER")
r26686r26687
11191118}
11201119
11211120
1122READ_LINE_MEMBER(rainbow_state::dsr_r)
1123{
1124   return m_inp4->read(); // W18 (1/0)
1125}
1126
11271121// KEYBOARD
11281122void rainbow_state::update_kbd_irq()
11291123{
r26686r26687
11381132}
11391133
11401134
1141READ_LINE_MEMBER(rainbow_state::kbd_rx)
1142{
1143//    printf("read keyboard\n");
1144   return 0x00;
1145}
1146
11471135WRITE_LINE_MEMBER(rainbow_state::kbd_tx)
11481136{
11491137//    printf("%02x to keyboard\n", state);
r26686r26687
12461234
12471235static const i8251_interface i8251_intf =
12481236{
1249   DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_rx),         // rxd in
12501237   DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_tx),         // txd out
1251   DEVCB_DRIVER_LINE_MEMBER(rainbow_state, dsr_r),       // dsr
12521238   DEVCB_NULL,         // dtr
12531239   DEVCB_NULL,         // rts
12541240   DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_rxready_w),
trunk/src/mess/drivers/pc8401a.c
r26686r26687
571571
572572static const i8251_interface uart_intf =
573573{
574   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
575574   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
576   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
577575   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
578576   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
579577   DEVCB_NULL,
r26686r26687
597595   MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
598596   MCFG_I8255A_ADD(I8255A_TAG, ppi_intf)
599597   MCFG_I8251_ADD(I8251_TAG, uart_intf)
598
600599   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
600   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
601   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
601602
602603   /* video hardware */
603604   MCFG_FRAGMENT_ADD(pc8401a_video)
trunk/src/mess/drivers/pc9801.c
r26686r26687
34183418   DEVCB_NULL,
34193419   DEVCB_NULL,
34203420   DEVCB_NULL,
3421   DEVCB_NULL,
3422   DEVCB_NULL,
34233421   DEVCB_NULL
34243422};
34253423
trunk/src/mess/drivers/xor100.c
r26686r26687
374374
375375static const i8251_interface printer_8251_intf =
376376{
377   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
378377   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
379   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
380378   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
381379   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
382380   DEVCB_NULL,
r26686r26687
389387
390388static const i8251_interface terminal_8251_intf =
391389{
392   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
393390   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
394   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
395391   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
396392   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
397393   DEVCB_NULL,
r26686r26687
579575   MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":2", xor100_floppies, NULL,    floppy_image_device::default_floppy_formats)
580576   MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":3", xor100_floppies, NULL,    floppy_image_device::default_floppy_formats)
581577   MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, xor100_centronics_intf)
578
582579   MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL)
580   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_A_TAG, i8251_device, write_rx))
581   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_A_TAG, i8251_device, write_dsr))
582
583583   MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, "serial_terminal")
584   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_B_TAG, i8251_device, write_rx))
585   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_B_TAG, i8251_device, write_dsr))
586
584587   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
585588
586589   // S-100
trunk/src/mess/drivers/m20.c
r26686r26687
8787   DECLARE_WRITE_LINE_MEMBER(tty_clock_tick_w);
8888   DECLARE_WRITE_LINE_MEMBER(kbd_clock_tick_w);
8989   DECLARE_WRITE_LINE_MEMBER(timer_tick_w);
90   DECLARE_READ_LINE_MEMBER(kbd_rx);
9190   DECLARE_WRITE_LINE_MEMBER(kbd_tx);
9291   DECLARE_WRITE8_MEMBER(kbd_put);
9392
r26686r26687
148147   return 0;
149148}
150149
151// these two i8251 callbacks will ask for/send 1 bit at a time.
152READ_LINE_MEMBER(m20_state::kbd_rx)
153{
154   /* TODO: correct hookup for keyboard, keyboard uses 8048 */
155   return 0x00;
156}
150/* TODO: correct hookup for keyboard, keyboard uses 8048 */
157151
158152WRITE_LINE_MEMBER(m20_state::kbd_tx)
159153{
r26686r26687
869863
870864static const i8251_interface kbd_i8251_intf =
871865{
872   DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rx),
873866   DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_tx),
874   DEVCB_NULL,         // dsr
875867   DEVCB_NULL,         // dtr
876868   DEVCB_NULL,         // rts
877869   DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rxrdy_int),  // rx ready
r26686r26687
882874
883875static const i8251_interface tty_i8251_intf =
884876{
885   DEVCB_NULL,         // rxd in
886877   DEVCB_NULL,         // txd out
887   DEVCB_NULL,         // dsr
888878   DEVCB_NULL,         // dtr
889879   DEVCB_NULL,         // rts
890880   DEVCB_NULL,         // rx ready
trunk/src/mess/drivers/sg1000.c
r26686r26687
650650
651651static const i8251_interface usart_intf =
652652{
653   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
654653   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
655   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
656654   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
657655   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
658656   DEVCB_NULL,
r26686r26687
889887   MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats)
890888   MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
891889   MCFG_CASSETTE_ADD("cassette", sc3000_cassette_interface)
890
892891   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
892   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD8251_TAG, i8251_device, write_rx))
893   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(UPD8251_TAG, i8251_device, write_dsr))
893894
894895   /* software lists */
895896   MCFG_SOFTWARE_LIST_ADD("flop_list","sf7000")
trunk/src/mess/drivers/cgc7900.c
r26686r26687
353353   DEVCB_NULL,
354354   DEVCB_NULL,
355355   DEVCB_NULL,
356   DEVCB_NULL,
357   DEVCB_NULL,
358356   DEVCB_NULL
359357};
360358
r26686r26687
370368   DEVCB_NULL,
371369   DEVCB_NULL,
372370   DEVCB_NULL,
373   DEVCB_NULL,
374   DEVCB_NULL,
375371   DEVCB_NULL
376372};
377373
trunk/src/mess/drivers/kyocera.c
r26686r26687
11881188
11891189static const i8251_interface tandy200_uart_intf =
11901190{
1191   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
11921191   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
1193   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
11941192   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
11951193   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
11961194   DEVCB_NULL,
r26686r26687
15321530   MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, tandy200_8155_intf)
15331531   MCFG_RP5C01_ADD(RP5C01A_TAG, XTAL_32_768kHz, tandy200_rtc_intf)
15341532   MCFG_I8251_ADD(I8251_TAG, /*XTAL_4_9152MHz/2,*/ tandy200_uart_intf)
1533
15351534   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
1535   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
1536   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
1537
15361538//  MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz)
15371539   MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
15381540   MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface)
trunk/src/mess/drivers/sdk86.c
r26686r26687
138138
139139static const i8251_interface usart_intf =
140140{
141   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
142141   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
143   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
144142   DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
145143   DEVCB_NULL, // connected to CTS
146144   DEVCB_NULL,
r26686r26687
177175   /* Devices */
178176   MCFG_I8251_ADD(I8251_TAG, usart_intf)
179177   MCFG_I8279_ADD("i8279", 2500000, sdk86_intf) // based on divider
178
180179   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, "serial_terminal")
180   MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
181   MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
182
181183   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
182184   MCFG_TIMER_DRIVER_ADD_PERIODIC("serial", sdk86_state, serial_tick, attotime::from_hz(307200))
183185MACHINE_CONFIG_END
trunk/src/mame/drivers/ecoinfr.c
r26686r26687
9797   DECLARE_CUSTOM_INPUT_MEMBER(ecoinfr_reel2_opto_r);
9898   DECLARE_CUSTOM_INPUT_MEMBER(ecoinfr_reel3_opto_r);
9999
100   DECLARE_READ8_MEMBER(i8251_in_rxd_cb);
101
102
103100   DECLARE_DRIVER_INIT(ecoinfrbr);
104101   DECLARE_DRIVER_INIT(ecoinfr);
105102   DECLARE_DRIVER_INIT(ecoinfrmab);
r26686r26687
775772   }
776773}
777774
778READ8_MEMBER(ecoinfr_state::i8251_in_rxd_cb)
779{
780   return 0x06;
781}
782
783775static const i8251_interface i8251_intf =
784776{
785   DEVCB_DRIVER_MEMBER(ecoinfr_state,i8251_in_rxd_cb), // in_rxd_cb
786777   DEVCB_NULL, // out_txd_cb
787   DEVCB_NULL, // in_dsr_cb
788778   DEVCB_NULL, // out_dtr_cb
789779   DEVCB_NULL, // out_rts_cb
790780   DEVCB_NULL, // out_rxrdy_cb

Previous 199869 Revisions Next


© 1997-2024 The MAME Team