trunk/src/emu/machine/i8251.c
| r26686 | r26687 | |
| 22 | 22 | GLOBAL VARIABLES |
| 23 | 23 | ***************************************************************************/ |
| 24 | 24 | |
| 25 | | const i8251_interface default_i8251_interface = { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }; |
| 25 | const i8251_interface default_i8251_interface = { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }; |
| 26 | 26 | |
| 27 | 27 | |
| 28 | 28 | /*************************************************************************** |
| r26686 | r26687 | |
| 80 | 80 | // or initialize to defaults if none provided |
| 81 | 81 | else |
| 82 | 82 | { |
| 83 | | memset(&m_in_rxd_cb, 0, sizeof(m_in_rxd_cb)); |
| 84 | 83 | memset(&m_out_txd_cb, 0, sizeof(m_out_txd_cb)); |
| 85 | | memset(&m_in_dsr_cb, 0, sizeof(m_in_dsr_cb)); |
| 86 | 84 | memset(&m_out_dtr_cb, 0, sizeof(m_out_dtr_cb)); |
| 87 | 85 | memset(&m_out_rts_cb, 0, sizeof(m_out_rts_cb)); |
| 88 | 86 | memset(&m_out_rxrdy_cb, 0, sizeof(m_out_rxrdy_cb)); |
| r26686 | r26687 | |
| 99 | 97 | void i8251_device::device_start() |
| 100 | 98 | { |
| 101 | 99 | // resolve callbacks |
| 102 | | m_in_rxd_func.resolve(m_in_rxd_cb,*this); |
| 103 | 100 | m_out_txd_func.resolve(m_out_txd_cb,*this); |
| 104 | | m_in_dsr_func.resolve(m_in_dsr_cb,*this); |
| 105 | 101 | m_out_rxrdy_func.resolve(m_out_rxrdy_cb, *this); |
| 106 | 102 | m_out_txrdy_func.resolve(m_out_txrdy_cb, *this); |
| 107 | 103 | m_out_txempty_func.resolve(m_out_txempty_cb, *this); |
| r26686 | r26687 | |
| 151 | 147 | { |
| 152 | 148 | //logerror("I8251\n"); |
| 153 | 149 | /* 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()); |
| 158 | 151 | |
| 159 | 152 | if (is_receive_register_full()) |
| 160 | 153 | { |
| r26686 | r26687 | |
| 674 | 667 | |
| 675 | 668 | READ8_MEMBER(i8251_device::status_r) |
| 676 | 669 | { |
| 677 | | UINT8 dsr = !(m_in_dsr_func.isnull() ? 0 : m_in_dsr_func() != 0); |
| 670 | UINT8 dsr = !((m_input_state & DSR) != 0); |
| 678 | 671 | UINT8 status = (dsr << 7) | m_status; |
| 679 | 672 | |
| 680 | 673 | LOG(("status: %02x\n", status)); |
| r26686 | r26687 | |
| 747 | 740 | { |
| 748 | 741 | device_serial_interface::device_timer(timer, id, param, ptr); |
| 749 | 742 | } |
| 743 | |
| 744 | |
| 745 | WRITE_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 | |
| 757 | WRITE_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
| r26686 | r26687 | |
| 43 | 43 | |
| 44 | 44 | struct i8251_interface |
| 45 | 45 | { |
| 46 | | devcb_read_line m_in_rxd_cb; |
| 47 | 46 | devcb_write_line m_out_txd_cb; |
| 48 | | devcb_read_line m_in_dsr_cb; |
| 49 | 47 | devcb_write_line m_out_dtr_cb; |
| 50 | 48 | devcb_write_line m_out_rts_cb; |
| 51 | 49 | devcb_write_line m_out_rxrdy_cb; |
| r26686 | r26687 | |
| 85 | 83 | DECLARE_WRITE_LINE_MEMBER( txc_w ) { if (state) transmit_clock(); } |
| 86 | 84 | DECLARE_WRITE_LINE_MEMBER( rxc_w ) { if (state) receive_clock(); } |
| 87 | 85 | |
| 86 | DECLARE_WRITE_LINE_MEMBER( write_rx ); |
| 87 | DECLARE_WRITE_LINE_MEMBER( write_dsr ); |
| 88 | |
| 88 | 89 | void receive_character(UINT8 ch); |
| 89 | 90 | |
| 90 | 91 | virtual void input_callback(UINT8 state); |
| r26686 | r26687 | |
| 99 | 100 | void update_tx_ready(); |
| 100 | 101 | void update_tx_empty(); |
| 101 | 102 | private: |
| 102 | | devcb_resolved_read_line m_in_rxd_func; |
| 103 | 103 | devcb_resolved_write_line m_out_txd_func; |
| 104 | | devcb_resolved_read_line m_in_dsr_func; |
| 105 | 104 | devcb_resolved_write_line m_out_dtr_func; |
| 106 | 105 | devcb_resolved_write_line m_out_rts_func; |
| 107 | 106 | devcb_resolved_write_line m_out_rxrdy_func; |
trunk/src/emu/bus/ieee488/softbox.c
| r26686 | r26687 | |
| 99 | 99 | |
| 100 | 100 | static const i8251_interface usart_intf = |
| 101 | 101 | { |
| 102 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 103 | 102 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 104 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 105 | 103 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 106 | 104 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 107 | 105 | DEVCB_NULL, |
| r26686 | r26687 | |
| 277 | 275 | MCFG_HARDDISK_ADD("harddisk3") |
| 278 | 276 | MCFG_HARDDISK_ADD("harddisk4") |
| 279 | 277 | 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)) |
| 280 | 280 | MACHINE_CONFIG_END |
| 281 | 281 | |
| 282 | 282 | |
trunk/src/mess/machine/v1050kb.c
| r26686 | r26687 | |
| 320 | 320 | m_y9(*this, "Y9"), |
| 321 | 321 | m_ya(*this, "YA"), |
| 322 | 322 | m_yb(*this, "YB"), |
| 323 | | m_y(0), |
| 324 | | m_so(1) |
| 323 | m_out_tx_handler(*this), |
| 324 | m_y(0) |
| 325 | 325 | { |
| 326 | 326 | } |
| 327 | 327 | |
| r26686 | r26687 | |
| 334 | 334 | { |
| 335 | 335 | // state saving |
| 336 | 336 | save_item(NAME(m_y)); |
| 337 | | save_item(NAME(m_so)); |
| 338 | 337 | } |
| 339 | 338 | |
| 340 | 339 | |
| r26686 | r26687 | |
| 344 | 343 | |
| 345 | 344 | void v1050_keyboard_device::device_reset() |
| 346 | 345 | { |
| 346 | m_out_tx_handler.resolve_safe(); |
| 347 | m_out_tx_handler(1); |
| 347 | 348 | } |
| 348 | 349 | |
| 349 | 350 | |
| r26686 | r26687 | |
| 358 | 359 | |
| 359 | 360 | |
| 360 | 361 | //------------------------------------------------- |
| 361 | | // so_r - |
| 362 | | //------------------------------------------------- |
| 363 | | |
| 364 | | READ_LINE_MEMBER( v1050_keyboard_device::so_r ) |
| 365 | | { |
| 366 | | return m_so; |
| 367 | | } |
| 368 | | |
| 369 | | |
| 370 | | //------------------------------------------------- |
| 371 | 362 | // kb_p1_r - |
| 372 | 363 | //------------------------------------------------- |
| 373 | 364 | |
| r26686 | r26687 | |
| 433 | 424 | discrete_sound_w(m_discrete, space, NODE_01, BIT(data, 6)); |
| 434 | 425 | |
| 435 | 426 | // serial output |
| 436 | | m_so = BIT(data, 7); |
| 427 | m_out_tx_handler(BIT(data, 7)); |
| 437 | 428 | } |
trunk/src/mess/machine/v1050kb.h
| r26686 | r26687 | |
| 21 | 21 | |
| 22 | 22 | |
| 23 | 23 | //************************************************************************** |
| 24 | | // MACROS / CONSTANTS |
| 25 | | //************************************************************************** |
| 26 | | |
| 27 | | #define V1050_KEYBOARD_TAG "v1050kb" |
| 28 | | |
| 29 | | |
| 30 | | |
| 31 | | //************************************************************************** |
| 32 | 24 | // INTERFACE CONFIGURATION MACROS |
| 33 | 25 | //************************************************************************** |
| 34 | 26 | |
| 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); |
| 37 | 29 | |
| 38 | 30 | |
| 39 | 31 | |
| r26686 | r26687 | |
| 49 | 41 | // construction/destruction |
| 50 | 42 | v1050_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 51 | 43 | |
| 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 | |
| 52 | 46 | // optional information overrides |
| 53 | 47 | virtual const rom_entry *device_rom_region() const; |
| 54 | 48 | virtual machine_config_constructor device_mconfig_additions() const; |
| 55 | 49 | virtual ioport_constructor device_input_ports() const; |
| 56 | 50 | |
| 57 | 51 | DECLARE_WRITE_LINE_MEMBER( si_w ); |
| 58 | | DECLARE_READ_LINE_MEMBER( so_r ); |
| 59 | 52 | |
| 60 | 53 | // not really public |
| 61 | 54 | DECLARE_READ8_MEMBER( kb_p1_r ); |
| r26686 | r26687 | |
| 82 | 75 | required_ioport m_y9; |
| 83 | 76 | required_ioport m_ya; |
| 84 | 77 | required_ioport m_yb; |
| 78 | devcb2_write_line m_out_tx_handler; |
| 85 | 79 | |
| 86 | 80 | UINT8 m_y; |
| 87 | | int m_so; |
| 88 | 81 | }; |
| 89 | 82 | |
| 90 | 83 | |
trunk/src/mess/machine/compiskb.c
| r26686 | r26687 | |
| 18 | 18 | //************************************************************************** |
| 19 | 19 | |
| 20 | 20 | #define I8748_TAG "i8748" |
| 21 | #define SPEAKER_TAG "speaker" |
| 21 | 22 | |
| 22 | 23 | |
| 23 | 24 | |
| r26686 | r26687 | |
| 239 | 240 | |
| 240 | 241 | compis_keyboard_device::compis_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 241 | 242 | : device_t(mconfig, COMPIS_KEYBOARD, "Compis Keyboard", tag, owner, clock, "compiskb", __FILE__), |
| 242 | | m_write_irq(*this), |
| 243 | 243 | m_maincpu(*this, I8748_TAG), |
| 244 | 244 | m_speaker(*this, SPEAKER_TAG), |
| 245 | 245 | m_y1(*this, "Y1"), |
| r26686 | r26687 | |
| 252 | 252 | m_y8(*this, "Y8"), |
| 253 | 253 | m_y9(*this, "Y9"), |
| 254 | 254 | m_special(*this, "SPECIAL"), |
| 255 | | m_so(1), |
| 255 | m_out_tx_handler(*this), |
| 256 | 256 | m_bus(0xff), |
| 257 | 257 | m_keylatch(0) |
| 258 | 258 | { |
| r26686 | r26687 | |
| 266 | 266 | void compis_keyboard_device::device_start() |
| 267 | 267 | { |
| 268 | 268 | // resolve callbacks |
| 269 | | m_write_irq.resolve_safe(); |
| 269 | m_out_tx_handler.resolve_safe(); |
| 270 | m_out_tx_handler(1); |
| 270 | 271 | } |
| 271 | 272 | |
| 272 | 273 | |
| 273 | 274 | //------------------------------------------------- |
| 274 | | // so_r - serial output read |
| 275 | | //------------------------------------------------- |
| 276 | | |
| 277 | | READ_LINE_MEMBER( compis_keyboard_device::so_r ) |
| 278 | | { |
| 279 | | return m_so; |
| 280 | | } |
| 281 | | |
| 282 | | |
| 283 | | //------------------------------------------------- |
| 284 | 275 | // si_w - serial input write |
| 285 | 276 | //------------------------------------------------- |
| 286 | 277 | |
| r26686 | r26687 | |
| 334 | 325 | output_set_led_value(LED_CAPS, BIT(data, 6)); |
| 335 | 326 | |
| 336 | 327 | // serial data out |
| 337 | | m_so = BIT(data, 7); |
| 328 | m_out_tx_handler(BIT(data, 7)); |
| 338 | 329 | } |
| 339 | 330 | |
| 340 | 331 | |
trunk/src/mess/machine/compiskb.h
| r26686 | r26687 | |
| 21 | 21 | |
| 22 | 22 | |
| 23 | 23 | //************************************************************************** |
| 24 | | // MACROS / CONSTANTS |
| 25 | | //************************************************************************** |
| 26 | | |
| 27 | | #define COMPIS_KEYBOARD_TAG "compiskb" |
| 28 | | #define SPEAKER_TAG "speaker" |
| 29 | | |
| 30 | | |
| 31 | | |
| 32 | | //************************************************************************** |
| 33 | 24 | // INTERFACE CONFIGURATION MACROS |
| 34 | 25 | //************************************************************************** |
| 35 | 26 | |
| 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); |
| 39 | 29 | |
| 40 | 30 | |
| 41 | 31 | |
| 32 | |
| 42 | 33 | //************************************************************************** |
| 43 | 34 | // TYPE DEFINITIONS |
| 44 | 35 | //************************************************************************** |
| r26686 | r26687 | |
| 51 | 42 | // construction/destruction |
| 52 | 43 | compis_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 53 | 44 | |
| 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); } |
| 55 | 46 | |
| 56 | 47 | // optional information overrides |
| 57 | 48 | virtual const rom_entry *device_rom_region() const; |
| 58 | 49 | virtual machine_config_constructor device_mconfig_additions() const; |
| 59 | 50 | virtual ioport_constructor device_input_ports() const; |
| 60 | 51 | |
| 61 | | DECLARE_READ_LINE_MEMBER( so_r ); |
| 62 | 52 | DECLARE_WRITE_LINE_MEMBER( si_w ); |
| 63 | 53 | |
| 64 | 54 | DECLARE_READ8_MEMBER( bus_r ); |
| r26686 | r26687 | |
| 76 | 66 | LED_CAPS |
| 77 | 67 | }; |
| 78 | 68 | |
| 79 | | devcb2_write_line m_write_irq; |
| 80 | | |
| 81 | 69 | required_device<cpu_device> m_maincpu; |
| 82 | 70 | required_device<speaker_sound_device> m_speaker; |
| 83 | 71 | required_ioport m_y1; |
| r26686 | r26687 | |
| 90 | 78 | required_ioport m_y8; |
| 91 | 79 | required_ioport m_y9; |
| 92 | 80 | required_ioport m_special; |
| 81 | devcb2_write_line m_out_tx_handler; |
| 93 | 82 | |
| 94 | | int m_so; |
| 95 | | |
| 96 | 83 | UINT8 m_bus; |
| 97 | 84 | UINT8 m_keylatch; |
| 98 | 85 | }; |
trunk/src/mess/machine/isa_ibm_mfc.c
| r26686 | r26687 | |
| 295 | 295 | // uPD71051 USART |
| 296 | 296 | //------------------------------------------------- |
| 297 | 297 | |
| 298 | | READ_LINE_MEMBER( isa8_ibm_mfc_device::d70151_dsr_r ) |
| 299 | | { |
| 300 | | return (m_tcr & TCR_EXT8) ? 1 : 0; |
| 301 | | } |
| 302 | | |
| 303 | 298 | void isa8_ibm_mfc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) |
| 304 | 299 | { |
| 305 | 300 | m_d71051->transmit_clock(); |
| r26686 | r26687 | |
| 310 | 305 | { |
| 311 | 306 | DEVCB_NULL, |
| 312 | 307 | DEVCB_NULL, |
| 313 | | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ibm_mfc_device, d70151_dsr_r), |
| 314 | 308 | DEVCB_NULL, |
| 315 | 309 | DEVCB_NULL, |
| 316 | 310 | DEVCB_NULL, |
| 317 | 311 | DEVCB_NULL, |
| 318 | | DEVCB_NULL, |
| 319 | 312 | DEVCB_NULL |
| 320 | 313 | }; |
| 321 | 314 | |
| r26686 | r26687 | |
| 426 | 419 | if (~m_tcr & TCR_TBC) |
| 427 | 420 | set_pc_interrupt(PC_IRQ_TIMERB, 0); |
| 428 | 421 | |
| 422 | m_d71051->write_dsr((m_tcr & TCR_EXT8) ? 1 : 0); |
| 423 | |
| 429 | 424 | break; |
| 430 | 425 | } |
| 431 | 426 | |
| r26686 | r26687 | |
| 526 | 521 | void isa8_ibm_mfc_device::device_reset() |
| 527 | 522 | { |
| 528 | 523 | m_tcr = 0; |
| 524 | m_d71051->write_dsr(0); |
| 529 | 525 | m_pc_irq_state = 0; |
| 530 | 526 | m_z80_irq_state = 0; |
| 531 | 527 | } |
trunk/src/mess/drivers/sage2.c
| r26686 | r26687 | |
| 427 | 427 | |
| 428 | 428 | static const i8251_interface usart0_intf = |
| 429 | 429 | { |
| 430 | | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), |
| 431 | 430 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), |
| 432 | | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r), |
| 433 | 431 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), |
| 434 | 432 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), |
| 435 | 433 | DEVCB_CPU_INPUT_LINE(M68000_TAG, M68K_IRQ_5), |
| r26686 | r26687 | |
| 445 | 443 | |
| 446 | 444 | static const i8251_interface usart1_intf = |
| 447 | 445 | { |
| 448 | | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), |
| 449 | 446 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), |
| 450 | | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r), |
| 451 | 447 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), |
| 452 | 448 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), |
| 453 | 449 | DEVCB_DEVICE_LINE_MEMBER(I8259_TAG, pic8259_device, ir1_w), |
| r26686 | r26687 | |
| 555 | 551 | MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats) |
| 556 | 552 | MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats) |
| 557 | 553 | MCFG_IEEE488_BUS_ADD() |
| 554 | |
| 558 | 555 | 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)) |
| 559 | 558 | MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) |
| 559 | |
| 560 | 560 | 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)) |
| 561 | 563 | |
| 562 | 564 | // internal ram |
| 563 | 565 | MCFG_RAM_ADD(RAM_TAG) |
trunk/src/mess/drivers/tandy2k.c
| r26686 | r26687 | |
| 408 | 408 | |
| 409 | 409 | static const i8251_interface usart_intf = |
| 410 | 410 | { |
| 411 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 412 | 411 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 413 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 414 | 412 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 415 | 413 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 416 | 414 | DEVCB_DRIVER_LINE_MEMBER(tandy2k_state, rxrdy_w), |
| r26686 | r26687 | |
| 699 | 697 | MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats) |
| 700 | 698 | MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":1", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats) |
| 701 | 699 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
| 700 | |
| 702 | 701 | 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 | |
| 703 | 705 | MCFG_TANDY2K_KEYBOARD_ADD(WRITELINE(tandy2k_state, kbdclk_w), WRITELINE(tandy2k_state, kbddat_w)) |
| 704 | 706 | |
| 705 | 707 | // software lists |
trunk/src/mess/drivers/compis.c
| r26686 | r26687 | |
| 544 | 544 | |
| 545 | 545 | static const i8251_interface usart_intf = |
| 546 | 546 | { |
| 547 | | DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, so_r), |
| 548 | 547 | DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, si_w), |
| 549 | 548 | DEVCB_NULL, |
| 550 | 549 | DEVCB_NULL, |
| 551 | | DEVCB_NULL, |
| 552 | 550 | DEVCB_DEVICE_LINE_MEMBER(I80130_TAG, i80130_device, ir2_w), |
| 553 | 551 | DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int1_w), |
| 554 | 552 | DEVCB_NULL, |
| r26686 | r26687 | |
| 781 | 779 | MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir6_w)) |
| 782 | 780 | MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir5_w)) |
| 783 | 781 | MCFG_ISBX_SLOT_MDRQT_CALLBACK(DEVWRITELINE(I80186_TAG, i80186_cpu_device, drq1_w)) |
| 784 | | MCFG_COMPIS_KEYBOARD_ADD(NULL) |
| 785 | 782 | |
| 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 | |
| 786 | 786 | // software lists |
| 787 | 787 | MCFG_SOFTWARE_LIST_ADD("flop_list", "compis") |
| 788 | 788 | |
trunk/src/mess/drivers/bw2.c
| r26686 | r26687 | |
| 550 | 550 | |
| 551 | 551 | static const i8251_interface usart_intf = |
| 552 | 552 | { |
| 553 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 554 | 553 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 555 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 556 | 554 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 557 | 555 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 558 | 556 | DEVCB_NULL, |
| r26686 | r26687 | |
| 660 | 658 | MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", bw2_floppies, "35dd", bw2_state::floppy_formats) |
| 661 | 659 | MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", bw2_floppies, NULL, bw2_state::floppy_formats) |
| 662 | 660 | MCFG_BW2_EXPANSION_SLOT_ADD(BW2_EXPANSION_SLOT_TAG, XTAL_16MHz, bw2_expansion_cards, NULL) |
| 661 | |
| 663 | 662 | 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)) |
| 664 | 665 | |
| 665 | 666 | // software list |
| 666 | 667 | MCFG_SOFTWARE_LIST_ADD("flop_list","bw2") |
trunk/src/mess/drivers/vk100.c
| r26686 | r26687 | |
| 1009 | 1009 | |
| 1010 | 1010 | static const i8251_interface i8251_intf = |
| 1011 | 1011 | { |
| 1012 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 1013 | 1012 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 1014 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 1015 | 1013 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 1016 | 1014 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 1017 | 1015 | //DEVCB_DRIVER_LINE_MEMBER(vk100_state, i8251_rts), // out_rts_cb |
| r26686 | r26687 | |
| 1036 | 1034 | |
| 1037 | 1035 | /* i8251 uart */ |
| 1038 | 1036 | MCFG_I8251_ADD("i8251", i8251_intf) |
| 1037 | |
| 1039 | 1038 | 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 | |
| 1040 | 1042 | MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w)) |
| 1041 | 1043 | |
| 1042 | 1044 | MCFG_DEFAULT_LAYOUT( layout_vk100 ) |
trunk/src/mess/drivers/alphatro.c
| r26686 | r26687 | |
| 67 | 67 | DECLARE_READ8_MEMBER(port10_r); |
| 68 | 68 | DECLARE_WRITE8_MEMBER(port10_w); |
| 69 | 69 | DECLARE_INPUT_CHANGED_MEMBER(alphatro_break); |
| 70 | | DECLARE_READ_LINE_MEMBER(rxdata_callback); |
| 71 | 70 | DECLARE_WRITE_LINE_MEMBER(txdata_callback); |
| 72 | 71 | TIMER_DEVICE_CALLBACK_MEMBER(alphatro_c); |
| 73 | 72 | TIMER_DEVICE_CALLBACK_MEMBER(alphatro_p); |
| r26686 | r26687 | |
| 140 | 139 | } |
| 141 | 140 | } |
| 142 | 141 | |
| 143 | | READ_LINE_MEMBER( alphatro_state::rxdata_callback ) |
| 144 | | { |
| 145 | | return (bool)m_cass_data[2]; |
| 146 | | } |
| 147 | | |
| 148 | 142 | WRITE_LINE_MEMBER( alphatro_state::txdata_callback ) |
| 149 | 143 | { |
| 150 | 144 | m_cass_state = state; |
| r26686 | r26687 | |
| 379 | 373 | m_cass_state = 1; |
| 380 | 374 | m_cass_data[0] = 0; |
| 381 | 375 | m_cass_data[1] = 0; |
| 382 | | m_cass_data[2] = 0; |
| 376 | m_usart->write_rx(0); |
| 383 | 377 | m_cass_data[3] = 0; |
| 384 | 378 | m_beep->set_state(0); |
| 385 | 379 | m_beep->set_frequency(950); /* piezo-device needs to be measured */ |
| r26686 | r26687 | |
| 417 | 411 | |
| 418 | 412 | static const i8251_interface alphatro_usart_interface = |
| 419 | 413 | { |
| 420 | | DEVCB_DRIVER_LINE_MEMBER(alphatro_state,rxdata_callback), //rxd_cb |
| 421 | 414 | DEVCB_DRIVER_LINE_MEMBER(alphatro_state,txdata_callback), //txd_cb |
| 422 | 415 | DEVCB_NULL, |
| 423 | 416 | DEVCB_NULL, |
| 424 | 417 | DEVCB_NULL, |
| 425 | 418 | DEVCB_NULL, |
| 426 | | DEVCB_NULL, |
| 427 | | DEVCB_NULL, |
| 428 | 419 | DEVCB_NULL |
| 429 | 420 | }; |
| 430 | 421 | |
| r26686 | r26687 | |
| 447 | 438 | if (cass_ws != m_cass_data[0]) |
| 448 | 439 | { |
| 449 | 440 | 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); |
| 451 | 442 | m_cass_data[1] = 0; |
| 452 | 443 | } |
| 453 | 444 | } |
trunk/src/mess/drivers/h8.c
| r26686 | r26687 | |
| 71 | 71 | DECLARE_WRITE8_MEMBER(portf1_w); |
| 72 | 72 | DECLARE_WRITE8_MEMBER(h8_status_callback); |
| 73 | 73 | DECLARE_WRITE_LINE_MEMBER(h8_inte_callback); |
| 74 | | DECLARE_READ_LINE_MEMBER(rxdata_callback); |
| 75 | 74 | DECLARE_WRITE_LINE_MEMBER(txdata_callback); |
| 76 | 75 | TIMER_DEVICE_CALLBACK_MEMBER(h8_irq_pulse); |
| 77 | 76 | TIMER_DEVICE_CALLBACK_MEMBER(h8_c); |
| r26686 | r26687 | |
| 219 | 218 | m_cass_state = 1; |
| 220 | 219 | m_cass_data[0] = 0; |
| 221 | 220 | m_cass_data[1] = 0; |
| 222 | | m_cass_data[2] = 0; |
| 221 | m_uart->write_rx(0); |
| 223 | 222 | m_cass_data[3] = 0; |
| 224 | 223 | m_ff_b = 1; |
| 225 | 224 | } |
| r26686 | r26687 | |
| 262 | 261 | output_set_value("run_led", state); |
| 263 | 262 | } |
| 264 | 263 | |
| 265 | | READ_LINE_MEMBER( h8_state::rxdata_callback ) |
| 266 | | {//printf("%X",m_cass_data[2]); |
| 267 | | return (bool)m_cass_data[2]; |
| 268 | | } |
| 269 | | |
| 270 | 264 | WRITE_LINE_MEMBER( h8_state::txdata_callback ) |
| 271 | 265 | { |
| 272 | 266 | m_cass_state = state; |
| r26686 | r26687 | |
| 274 | 268 | |
| 275 | 269 | static const i8251_interface uart_intf = |
| 276 | 270 | { |
| 277 | | DEVCB_DRIVER_LINE_MEMBER(h8_state,rxdata_callback), //rxd_cb |
| 278 | 271 | DEVCB_DRIVER_LINE_MEMBER(h8_state,txdata_callback), //txd_cb |
| 279 | 272 | DEVCB_NULL, |
| 280 | 273 | DEVCB_NULL, |
| 281 | 274 | DEVCB_NULL, |
| 282 | 275 | DEVCB_NULL, |
| 283 | 276 | DEVCB_NULL, |
| 284 | | DEVCB_NULL, |
| 285 | 277 | DEVCB_NULL |
| 286 | 278 | }; |
| 287 | 279 | |
| r26686 | r26687 | |
| 306 | 298 | if (cass_ws != m_cass_data[0]) |
| 307 | 299 | { |
| 308 | 300 | 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); |
| 310 | 302 | m_cass_data[1] = 0; |
| 311 | 303 | } |
| 312 | 304 | } |
trunk/src/mess/drivers/v1050.c
| r26686 | r26687 | |
| 932 | 932 | |
| 933 | 933 | static const i8251_interface kb_8251_intf = |
| 934 | 934 | { |
| 935 | | DEVCB_DEVICE_LINE_MEMBER(V1050_KEYBOARD_TAG, v1050_keyboard_device, so_r), |
| 936 | 935 | DEVCB_DEVICE_LINE_MEMBER(V1050_KEYBOARD_TAG, v1050_keyboard_device, si_w), |
| 937 | 936 | DEVCB_NULL, |
| 938 | 937 | DEVCB_NULL, |
| 939 | | DEVCB_NULL, |
| 940 | 938 | DEVCB_DRIVER_LINE_MEMBER(v1050_state, kb_rxrdy_w), |
| 941 | 939 | DEVCB_NULL, |
| 942 | 940 | DEVCB_NULL, |
| r26686 | r26687 | |
| 967 | 965 | |
| 968 | 966 | static const i8251_interface sio_8251_intf = |
| 969 | 967 | { |
| 970 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 971 | 968 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 972 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 973 | 969 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 974 | 970 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 975 | 971 | DEVCB_DRIVER_LINE_MEMBER(v1050_state, sio_rxrdy_w), |
| r26686 | r26687 | |
| 1137 | 1133 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":3", v1050_floppies, NULL, floppy_image_device::default_floppy_formats) |
| 1138 | 1134 | MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_KB_TAG, v1050_state, kb_8251_tick, attotime::from_hz((double)XTAL_16MHz/4/13/8)) |
| 1139 | 1135 | MCFG_TIMER_DRIVER_ADD(TIMER_SIO_TAG, v1050_state, sio_8251_tick) |
| 1136 | |
| 1140 | 1137 | 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)) |
| 1141 | 1140 | |
| 1142 | 1141 | // SASI bus |
| 1143 | 1142 | MCFG_SCSIBUS_ADD(SASIBUS_TAG) |
| r26686 | r26687 | |
| 1149 | 1148 | MCFG_TIMER_DRIVER_ADD(TIMER_RST_TAG, v1050_state, sasi_rst_tick) |
| 1150 | 1149 | |
| 1151 | 1150 | // 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)) |
| 1153 | 1153 | |
| 1154 | 1154 | // software lists |
| 1155 | 1155 | MCFG_SOFTWARE_LIST_ADD("flop_list", "v1050_flop") |
trunk/src/mess/drivers/isbc.c
| r26686 | r26687 | |
| 132 | 132 | |
| 133 | 133 | static const serial_terminal_interface terminal_intf = |
| 134 | 134 | { |
| 135 | | DEVCB_NULL |
| 135 | DEVCB_DEVICE_LINE_MEMBER("uart8251", i8251_device, write_rx) |
| 136 | 136 | }; |
| 137 | 137 | |
| 138 | 138 | static const struct pit8253_interface isbc86_pit_config = |
| r26686 | r26687 | |
| 245 | 245 | |
| 246 | 246 | static const i8251_interface isbc_uart8251_interface = |
| 247 | 247 | { |
| 248 | | DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, tx_r), |
| 249 | 248 | DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, rx_w), |
| 250 | 249 | DEVCB_NULL, |
| 251 | 250 | DEVCB_NULL, |
| 252 | | DEVCB_NULL, |
| 253 | 251 | DEVCB_DEVICE_LINE_MEMBER("pic_0", pic8259_device, ir6_w), |
| 254 | 252 | DEVCB_NULL, |
| 255 | 253 | DEVCB_NULL, |
trunk/src/mess/drivers/votrpss.c
| r26686 | r26687 | |
| 193 | 193 | |
| 194 | 194 | static const i8251_interface uart_intf = |
| 195 | 195 | { |
| 196 | | //DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx), |
| 197 | 196 | //DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx), |
| 198 | | //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dsr_r), |
| 199 | 197 | //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dtr_w), |
| 200 | 198 | //DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w), |
| 201 | 199 | DEVCB_NULL, |
| r26686 | r26687 | |
| 204 | 202 | DEVCB_NULL, |
| 205 | 203 | DEVCB_NULL, |
| 206 | 204 | DEVCB_NULL, |
| 207 | | DEVCB_NULL, |
| 208 | | DEVCB_NULL, |
| 209 | 205 | DEVCB_NULL |
| 210 | 206 | }; |
| 211 | 207 | |
| r26686 | r26687 | |
| 342 | 338 | /* Serial components - comment out if not needed */ |
| 343 | 339 | //MCFG_TIMER_DRIVER_ADD_PERIODIC("serial", votrpss_state, serial_tick, attotime::from_hz(153600)) |
| 344 | 340 | //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)) |
| 345 | 343 | MACHINE_CONFIG_END |
| 346 | 344 | |
| 347 | 345 | |
trunk/src/mess/drivers/softbox.c
| r26686 | r26687 | |
| 178 | 178 | |
| 179 | 179 | static const i8251_interface usart_intf = |
| 180 | 180 | { |
| 181 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 182 | 181 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 183 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 184 | 182 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 185 | 183 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 186 | 184 | DEVCB_NULL, |
| r26686 | r26687 | |
| 418 | 416 | MCFG_HARDDISK_ADD("harddisk2") |
| 419 | 417 | MCFG_HARDDISK_ADD("harddisk3") |
| 420 | 418 | MCFG_HARDDISK_ADD("harddisk4") |
| 419 | |
| 421 | 420 | 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 | |
| 422 | 424 | MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) |
| 423 | 425 | MCFG_IMI5000H_ADD("corvus1") |
| 424 | 426 | |
trunk/src/mess/drivers/vt100.c
| r26686 | r26687 | |
| 407 | 407 | |
| 408 | 408 | static const i8251_interface i8251_intf = |
| 409 | 409 | { |
| 410 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 411 | 410 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 412 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 413 | 411 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 414 | 412 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 415 | 413 | DEVCB_NULL, // out_rxrdy_cb |
| r26686 | r26687 | |
| 442 | 440 | |
| 443 | 441 | MCFG_VT100_VIDEO_ADD("vt100_video", vt100_video_interface) |
| 444 | 442 | |
| 443 | MCFG_I8251_ADD("i8251", i8251_intf) |
| 445 | 444 | |
| 446 | | /* i8251 uart */ |
| 447 | | MCFG_I8251_ADD("i8251", i8251_intf) |
| 448 | 445 | 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 | |
| 449 | 449 | MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w)) |
| 450 | 450 | |
| 451 | 451 | |
trunk/src/mess/drivers/pc8801.c
| r26686 | r26687 | |
| 447 | 447 | DECLARE_READ8_MEMBER(upd765_tc_r); |
| 448 | 448 | DECLARE_WRITE8_MEMBER(fdc_irq_vector_w); |
| 449 | 449 | DECLARE_WRITE8_MEMBER(fdc_drive_mode_w); |
| 450 | | DECLARE_READ_LINE_MEMBER(rxdata_callback); |
| 451 | 450 | DECLARE_WRITE_LINE_MEMBER(txdata_callback); |
| 452 | | DECLARE_READ_LINE_MEMBER(dsr_r); |
| 453 | 451 | DECLARE_WRITE_LINE_MEMBER(rxrdy_w); |
| 454 | 452 | DECLARE_READ8_MEMBER(pc8801_sound_board_r); |
| 455 | 453 | DECLARE_WRITE8_MEMBER(pc8801_sound_board_w); |
| r26686 | r26687 | |
| 2606 | 2604 | }; |
| 2607 | 2605 | |
| 2608 | 2606 | /* Cassette Configuration */ |
| 2609 | | READ_LINE_MEMBER( pc8801_state::rxdata_callback ) |
| 2610 | | { |
| 2611 | | return 0; |
| 2612 | | //return (m_cass->input() > -0.1) ? 1 : 0; |
| 2613 | | } |
| 2614 | 2607 | |
| 2615 | | READ_LINE_MEMBER( pc8801_state::dsr_r ) |
| 2616 | | { |
| 2617 | | return 0; // bit 7 status |
| 2618 | | } |
| 2619 | | |
| 2620 | 2608 | WRITE_LINE_MEMBER( pc8801_state::txdata_callback ) |
| 2621 | 2609 | { |
| 2622 | 2610 | //m_cass->output( (state) ? 0.8 : -0.8); |
| r26686 | r26687 | |
| 2629 | 2617 | |
| 2630 | 2618 | static const i8251_interface uart_intf = |
| 2631 | 2619 | { |
| 2632 | | DEVCB_DRIVER_LINE_MEMBER(pc8801_state,rxdata_callback), //rxd_cb |
| 2633 | 2620 | DEVCB_DRIVER_LINE_MEMBER(pc8801_state,txdata_callback), //txd_cb |
| 2634 | | DEVCB_DRIVER_LINE_MEMBER(pc8801_state,dsr_r), |
| 2635 | 2621 | DEVCB_NULL, |
| 2636 | 2622 | DEVCB_DRIVER_LINE_MEMBER(pc8801_state,rxrdy_w), |
| 2637 | 2623 | DEVCB_NULL, |
trunk/src/mess/drivers/horizon.c
| r26686 | r26687 | |
| 103 | 103 | |
| 104 | 104 | static const i8251_interface usart_l_intf = |
| 105 | 105 | { |
| 106 | | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), |
| 107 | 106 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), |
| 108 | | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r), |
| 109 | 107 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), |
| 110 | 108 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), |
| 111 | 109 | DEVCB_NULL, |
| r26686 | r26687 | |
| 121 | 119 | |
| 122 | 120 | static const i8251_interface usart_r_intf = |
| 123 | 121 | { |
| 124 | | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), |
| 125 | 122 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), |
| 126 | | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r), |
| 127 | 123 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), |
| 128 | 124 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), |
| 129 | 125 | DEVCB_NULL, |
| r26686 | r26687 | |
| 192 | 188 | // devices |
| 193 | 189 | MCFG_I8251_ADD(I8251_L_TAG, usart_l_intf) |
| 194 | 190 | MCFG_I8251_ADD(I8251_R_TAG, usart_r_intf) |
| 191 | |
| 195 | 192 | 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)) |
| 196 | 195 | MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) |
| 196 | |
| 197 | 197 | 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)) |
| 198 | 200 | |
| 199 | 201 | // S-100 |
| 200 | 202 | MCFG_S100_BUS_ADD(s100_intf) |
trunk/src/mess/drivers/vixen.c
| r26686 | r26687 | |
| 670 | 670 | |
| 671 | 671 | static const i8251_interface usart_intf = |
| 672 | 672 | { |
| 673 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 674 | 673 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 675 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 676 | 674 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 677 | 675 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 678 | 676 | DEVCB_DRIVER_LINE_MEMBER(vixen_state, rxrdy_w), |
| r26686 | r26687 | |
| 818 | 816 | MCFG_IEEE488_BUS_ADD() |
| 819 | 817 | MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(vixen_state, srq_w)) |
| 820 | 818 | MCFG_IEEE488_ATN_CALLBACK(WRITELINE(vixen_state, atn_w)) |
| 819 | |
| 821 | 820 | 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)) |
| 822 | 823 | |
| 823 | 824 | /* software lists */ |
| 824 | 825 | MCFG_SOFTWARE_LIST_ADD("disk_list", "vixen") |
trunk/src/mess/drivers/rainbow.c
| r26686 | r26687 | |
| 272 | 272 | |
| 273 | 273 | DECLARE_READ8_MEMBER(system_parameter_r); |
| 274 | 274 | |
| 275 | | DECLARE_READ_LINE_MEMBER(dsr_r); |
| 276 | | |
| 277 | | DECLARE_READ_LINE_MEMBER(kbd_rx); |
| 278 | 275 | DECLARE_WRITE_LINE_MEMBER(kbd_tx); |
| 279 | 276 | DECLARE_WRITE_LINE_MEMBER(kbd_rxready_w); |
| 280 | 277 | DECLARE_WRITE_LINE_MEMBER(kbd_txready_w); |
| r26686 | r26687 | |
| 510 | 507 | PORT_DIPNAME( 0x02, 0x02, "W13 (FACTORY TEST A, LEAVE OFF)") PORT_TOGGLE |
| 511 | 508 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 512 | 509 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 510 | |
| 513 | 511 | PORT_START("W14") |
| 514 | 512 | PORT_DIPNAME( 0x04, 0x04, "W14 (FACTORY TEST B, LEAVE OFF)") PORT_TOGGLE |
| 515 | 513 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| r26686 | r26687 | |
| 523 | 521 | PORT_DIPNAME( 0x01, 0x00, "W18 (FACTORY TEST D, LEAVE OFF) (8251A: DSR)") PORT_TOGGLE |
| 524 | 522 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 525 | 523 | PORT_DIPSETTING( 0x01, DEF_STR( On ) ) |
| 524 | PORT_WRITE_LINE_DEVICE_MEMBER("kbdser", i8251_device, write_dsr) |
| 526 | 525 | |
| 527 | 526 | // J17 jumper on FDC controller board shifts drive select (experimental) - |
| 528 | 527 | PORT_START("FLOPPY CONTROLLER") |
| r26686 | r26687 | |
| 1119 | 1118 | } |
| 1120 | 1119 | |
| 1121 | 1120 | |
| 1122 | | READ_LINE_MEMBER(rainbow_state::dsr_r) |
| 1123 | | { |
| 1124 | | return m_inp4->read(); // W18 (1/0) |
| 1125 | | } |
| 1126 | | |
| 1127 | 1121 | // KEYBOARD |
| 1128 | 1122 | void rainbow_state::update_kbd_irq() |
| 1129 | 1123 | { |
| r26686 | r26687 | |
| 1138 | 1132 | } |
| 1139 | 1133 | |
| 1140 | 1134 | |
| 1141 | | READ_LINE_MEMBER(rainbow_state::kbd_rx) |
| 1142 | | { |
| 1143 | | // printf("read keyboard\n"); |
| 1144 | | return 0x00; |
| 1145 | | } |
| 1146 | | |
| 1147 | 1135 | WRITE_LINE_MEMBER(rainbow_state::kbd_tx) |
| 1148 | 1136 | { |
| 1149 | 1137 | // printf("%02x to keyboard\n", state); |
| r26686 | r26687 | |
| 1246 | 1234 | |
| 1247 | 1235 | static const i8251_interface i8251_intf = |
| 1248 | 1236 | { |
| 1249 | | DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_rx), // rxd in |
| 1250 | 1237 | DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_tx), // txd out |
| 1251 | | DEVCB_DRIVER_LINE_MEMBER(rainbow_state, dsr_r), // dsr |
| 1252 | 1238 | DEVCB_NULL, // dtr |
| 1253 | 1239 | DEVCB_NULL, // rts |
| 1254 | 1240 | DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_rxready_w), |
trunk/src/mess/drivers/pc8401a.c
| r26686 | r26687 | |
| 571 | 571 | |
| 572 | 572 | static const i8251_interface uart_intf = |
| 573 | 573 | { |
| 574 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 575 | 574 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 576 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 577 | 575 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 578 | 576 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 579 | 577 | DEVCB_NULL, |
| r26686 | r26687 | |
| 597 | 595 | MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL) |
| 598 | 596 | MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) |
| 599 | 597 | MCFG_I8251_ADD(I8251_TAG, uart_intf) |
| 598 | |
| 600 | 599 | 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)) |
| 601 | 602 | |
| 602 | 603 | /* video hardware */ |
| 603 | 604 | MCFG_FRAGMENT_ADD(pc8401a_video) |
trunk/src/mess/drivers/xor100.c
| r26686 | r26687 | |
| 374 | 374 | |
| 375 | 375 | static const i8251_interface printer_8251_intf = |
| 376 | 376 | { |
| 377 | | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx), |
| 378 | 377 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx), |
| 379 | | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r), |
| 380 | 378 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w), |
| 381 | 379 | DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w), |
| 382 | 380 | DEVCB_NULL, |
| r26686 | r26687 | |
| 389 | 387 | |
| 390 | 388 | static const i8251_interface terminal_8251_intf = |
| 391 | 389 | { |
| 392 | | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx), |
| 393 | 390 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx), |
| 394 | | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r), |
| 395 | 391 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w), |
| 396 | 392 | DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w), |
| 397 | 393 | DEVCB_NULL, |
| r26686 | r26687 | |
| 579 | 575 | MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":2", xor100_floppies, NULL, floppy_image_device::default_floppy_formats) |
| 580 | 576 | MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":3", xor100_floppies, NULL, floppy_image_device::default_floppy_formats) |
| 581 | 577 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, xor100_centronics_intf) |
| 578 | |
| 582 | 579 | 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 | |
| 583 | 583 | 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 | |
| 584 | 587 | MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) |
| 585 | 588 | |
| 586 | 589 | // S-100 |
trunk/src/mess/drivers/m20.c
| r26686 | r26687 | |
| 87 | 87 | DECLARE_WRITE_LINE_MEMBER(tty_clock_tick_w); |
| 88 | 88 | DECLARE_WRITE_LINE_MEMBER(kbd_clock_tick_w); |
| 89 | 89 | DECLARE_WRITE_LINE_MEMBER(timer_tick_w); |
| 90 | | DECLARE_READ_LINE_MEMBER(kbd_rx); |
| 91 | 90 | DECLARE_WRITE_LINE_MEMBER(kbd_tx); |
| 92 | 91 | DECLARE_WRITE8_MEMBER(kbd_put); |
| 93 | 92 | |
| r26686 | r26687 | |
| 148 | 147 | return 0; |
| 149 | 148 | } |
| 150 | 149 | |
| 151 | | // these two i8251 callbacks will ask for/send 1 bit at a time. |
| 152 | | READ_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 */ |
| 157 | 151 | |
| 158 | 152 | WRITE_LINE_MEMBER(m20_state::kbd_tx) |
| 159 | 153 | { |
| r26686 | r26687 | |
| 869 | 863 | |
| 870 | 864 | static const i8251_interface kbd_i8251_intf = |
| 871 | 865 | { |
| 872 | | DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rx), |
| 873 | 866 | DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_tx), |
| 874 | | DEVCB_NULL, // dsr |
| 875 | 867 | DEVCB_NULL, // dtr |
| 876 | 868 | DEVCB_NULL, // rts |
| 877 | 869 | DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rxrdy_int), // rx ready |
| r26686 | r26687 | |
| 882 | 874 | |
| 883 | 875 | static const i8251_interface tty_i8251_intf = |
| 884 | 876 | { |
| 885 | | DEVCB_NULL, // rxd in |
| 886 | 877 | DEVCB_NULL, // txd out |
| 887 | | DEVCB_NULL, // dsr |
| 888 | 878 | DEVCB_NULL, // dtr |
| 889 | 879 | DEVCB_NULL, // rts |
| 890 | 880 | DEVCB_NULL, // rx ready |
trunk/src/mess/drivers/sg1000.c
| r26686 | r26687 | |
| 650 | 650 | |
| 651 | 651 | static const i8251_interface usart_intf = |
| 652 | 652 | { |
| 653 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 654 | 653 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 655 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 656 | 654 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 657 | 655 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 658 | 656 | DEVCB_NULL, |
| r26686 | r26687 | |
| 889 | 887 | MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats) |
| 890 | 888 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
| 891 | 889 | MCFG_CASSETTE_ADD("cassette", sc3000_cassette_interface) |
| 890 | |
| 892 | 891 | 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)) |
| 893 | 894 | |
| 894 | 895 | /* software lists */ |
| 895 | 896 | MCFG_SOFTWARE_LIST_ADD("flop_list","sf7000") |
trunk/src/mess/drivers/kyocera.c
| r26686 | r26687 | |
| 1188 | 1188 | |
| 1189 | 1189 | static const i8251_interface tandy200_uart_intf = |
| 1190 | 1190 | { |
| 1191 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 1192 | 1191 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 1193 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 1194 | 1192 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 1195 | 1193 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w), |
| 1196 | 1194 | DEVCB_NULL, |
| r26686 | r26687 | |
| 1532 | 1530 | MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, tandy200_8155_intf) |
| 1533 | 1531 | MCFG_RP5C01_ADD(RP5C01A_TAG, XTAL_32_768kHz, tandy200_rtc_intf) |
| 1534 | 1532 | MCFG_I8251_ADD(I8251_TAG, /*XTAL_4_9152MHz/2,*/ tandy200_uart_intf) |
| 1533 | |
| 1535 | 1534 | 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 | |
| 1536 | 1538 | // MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz) |
| 1537 | 1539 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
| 1538 | 1540 | MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface) |
trunk/src/mess/drivers/sdk86.c
| r26686 | r26687 | |
| 138 | 138 | |
| 139 | 139 | static const i8251_interface usart_intf = |
| 140 | 140 | { |
| 141 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx), |
| 142 | 141 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx), |
| 143 | | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r), |
| 144 | 142 | DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w), |
| 145 | 143 | DEVCB_NULL, // connected to CTS |
| 146 | 144 | DEVCB_NULL, |
| r26686 | r26687 | |
| 177 | 175 | /* Devices */ |
| 178 | 176 | MCFG_I8251_ADD(I8251_TAG, usart_intf) |
| 179 | 177 | MCFG_I8279_ADD("i8279", 2500000, sdk86_intf) // based on divider |
| 178 | |
| 180 | 179 | 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 | |
| 181 | 183 | MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) |
| 182 | 184 | MCFG_TIMER_DRIVER_ADD_PERIODIC("serial", sdk86_state, serial_tick, attotime::from_hz(307200)) |
| 183 | 185 | MACHINE_CONFIG_END |
trunk/src/mame/drivers/ecoinfr.c
| r26686 | r26687 | |
| 97 | 97 | DECLARE_CUSTOM_INPUT_MEMBER(ecoinfr_reel2_opto_r); |
| 98 | 98 | DECLARE_CUSTOM_INPUT_MEMBER(ecoinfr_reel3_opto_r); |
| 99 | 99 | |
| 100 | | DECLARE_READ8_MEMBER(i8251_in_rxd_cb); |
| 101 | | |
| 102 | | |
| 103 | 100 | DECLARE_DRIVER_INIT(ecoinfrbr); |
| 104 | 101 | DECLARE_DRIVER_INIT(ecoinfr); |
| 105 | 102 | DECLARE_DRIVER_INIT(ecoinfrmab); |
| r26686 | r26687 | |
| 775 | 772 | } |
| 776 | 773 | } |
| 777 | 774 | |
| 778 | | READ8_MEMBER(ecoinfr_state::i8251_in_rxd_cb) |
| 779 | | { |
| 780 | | return 0x06; |
| 781 | | } |
| 782 | | |
| 783 | 775 | static const i8251_interface i8251_intf = |
| 784 | 776 | { |
| 785 | | DEVCB_DRIVER_MEMBER(ecoinfr_state,i8251_in_rxd_cb), // in_rxd_cb |
| 786 | 777 | DEVCB_NULL, // out_txd_cb |
| 787 | | DEVCB_NULL, // in_dsr_cb |
| 788 | 778 | DEVCB_NULL, // out_dtr_cb |
| 789 | 779 | DEVCB_NULL, // out_rts_cb |
| 790 | 780 | DEVCB_NULL, // out_rxrdy_cb |