mirror of
https://github.com/holub/mame
synced 2025-06-23 04:48:37 +03:00
replaced read rx/cts/dcd callbacks in I8251 with write handlers, which allows multiple chips to be connected together without using glue methods. [smf]
This commit is contained in:
parent
b4c7b67ff9
commit
6c3f17c595
@ -99,9 +99,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -277,6 +275,8 @@ static MACHINE_CONFIG_FRAGMENT( softbox )
|
||||
MCFG_HARDDISK_ADD("harddisk3")
|
||||
MCFG_HARDDISK_ADD("harddisk4")
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
GLOBAL VARIABLES
|
||||
***************************************************************************/
|
||||
|
||||
const i8251_interface default_i8251_interface = { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL };
|
||||
const i8251_interface default_i8251_interface = { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL };
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@ -80,9 +80,7 @@ void i8251_device::device_config_complete()
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
memset(&m_in_rxd_cb, 0, sizeof(m_in_rxd_cb));
|
||||
memset(&m_out_txd_cb, 0, sizeof(m_out_txd_cb));
|
||||
memset(&m_in_dsr_cb, 0, sizeof(m_in_dsr_cb));
|
||||
memset(&m_out_dtr_cb, 0, sizeof(m_out_dtr_cb));
|
||||
memset(&m_out_rts_cb, 0, sizeof(m_out_rts_cb));
|
||||
memset(&m_out_rxrdy_cb, 0, sizeof(m_out_rxrdy_cb));
|
||||
@ -99,9 +97,7 @@ void i8251_device::device_config_complete()
|
||||
void i8251_device::device_start()
|
||||
{
|
||||
// resolve callbacks
|
||||
m_in_rxd_func.resolve(m_in_rxd_cb,*this);
|
||||
m_out_txd_func.resolve(m_out_txd_cb,*this);
|
||||
m_in_dsr_func.resolve(m_in_dsr_cb,*this);
|
||||
m_out_rxrdy_func.resolve(m_out_rxrdy_cb, *this);
|
||||
m_out_txrdy_func.resolve(m_out_txrdy_cb, *this);
|
||||
m_out_txempty_func.resolve(m_out_txempty_cb, *this);
|
||||
@ -151,10 +147,7 @@ void i8251_device::receive_clock()
|
||||
{
|
||||
//logerror("I8251\n");
|
||||
/* get bit received from other side and update receive register */
|
||||
if(m_in_rxd_func.isnull())
|
||||
receive_register_update_bit(get_in_data_bit());
|
||||
else
|
||||
receive_register_update_bit(m_in_rxd_func());
|
||||
receive_register_update_bit(get_in_data_bit());
|
||||
|
||||
if (is_receive_register_full())
|
||||
{
|
||||
@ -674,7 +667,7 @@ WRITE8_MEMBER(i8251_device::control_w)
|
||||
|
||||
READ8_MEMBER(i8251_device::status_r)
|
||||
{
|
||||
UINT8 dsr = !(m_in_dsr_func.isnull() ? 0 : m_in_dsr_func() != 0);
|
||||
UINT8 dsr = !((m_input_state & DSR) != 0);
|
||||
UINT8 status = (dsr << 7) | m_status;
|
||||
|
||||
LOG(("status: %02x\n", status));
|
||||
@ -747,3 +740,28 @@ void i8251_device::device_timer(emu_timer &timer, device_timer_id id, int param,
|
||||
{
|
||||
device_serial_interface::device_timer(timer, id, param, ptr);
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(i8251_device::write_rx)
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
input_callback(m_input_state | RX);
|
||||
}
|
||||
else
|
||||
{
|
||||
input_callback(m_input_state & ~RX);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(i8251_device::write_dsr)
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
input_callback(m_input_state | DSR);
|
||||
}
|
||||
else
|
||||
{
|
||||
input_callback(m_input_state & ~DSR);
|
||||
}
|
||||
}
|
||||
|
@ -43,9 +43,7 @@
|
||||
|
||||
struct i8251_interface
|
||||
{
|
||||
devcb_read_line m_in_rxd_cb;
|
||||
devcb_write_line m_out_txd_cb;
|
||||
devcb_read_line m_in_dsr_cb;
|
||||
devcb_write_line m_out_dtr_cb;
|
||||
devcb_write_line m_out_rts_cb;
|
||||
devcb_write_line m_out_rxrdy_cb;
|
||||
@ -85,6 +83,9 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER( txc_w ) { if (state) transmit_clock(); }
|
||||
DECLARE_WRITE_LINE_MEMBER( rxc_w ) { if (state) receive_clock(); }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( write_rx );
|
||||
DECLARE_WRITE_LINE_MEMBER( write_dsr );
|
||||
|
||||
void receive_character(UINT8 ch);
|
||||
|
||||
virtual void input_callback(UINT8 state);
|
||||
@ -99,9 +100,7 @@ protected:
|
||||
void update_tx_ready();
|
||||
void update_tx_empty();
|
||||
private:
|
||||
devcb_resolved_read_line m_in_rxd_func;
|
||||
devcb_resolved_write_line m_out_txd_func;
|
||||
devcb_resolved_read_line m_in_dsr_func;
|
||||
devcb_resolved_write_line m_out_dtr_func;
|
||||
devcb_resolved_write_line m_out_rts_func;
|
||||
devcb_resolved_write_line m_out_rxrdy_func;
|
||||
|
@ -97,9 +97,6 @@ public:
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(ecoinfr_reel2_opto_r);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(ecoinfr_reel3_opto_r);
|
||||
|
||||
DECLARE_READ8_MEMBER(i8251_in_rxd_cb);
|
||||
|
||||
|
||||
DECLARE_DRIVER_INIT(ecoinfrbr);
|
||||
DECLARE_DRIVER_INIT(ecoinfr);
|
||||
DECLARE_DRIVER_INIT(ecoinfrmab);
|
||||
@ -775,16 +772,9 @@ MACHINE_START_MEMBER(ecoinfr_state,ecoinfr)
|
||||
}
|
||||
}
|
||||
|
||||
READ8_MEMBER(ecoinfr_state::i8251_in_rxd_cb)
|
||||
{
|
||||
return 0x06;
|
||||
}
|
||||
|
||||
static const i8251_interface i8251_intf =
|
||||
{
|
||||
DEVCB_DRIVER_MEMBER(ecoinfr_state,i8251_in_rxd_cb), // in_rxd_cb
|
||||
DEVCB_NULL, // out_txd_cb
|
||||
DEVCB_NULL, // in_dsr_cb
|
||||
DEVCB_NULL, // out_dtr_cb
|
||||
DEVCB_NULL, // out_rts_cb
|
||||
DEVCB_NULL, // out_rxrdy_cb
|
||||
|
@ -67,7 +67,6 @@ public:
|
||||
DECLARE_READ8_MEMBER(port10_r);
|
||||
DECLARE_WRITE8_MEMBER(port10_w);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(alphatro_break);
|
||||
DECLARE_READ_LINE_MEMBER(rxdata_callback);
|
||||
DECLARE_WRITE_LINE_MEMBER(txdata_callback);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(alphatro_c);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(alphatro_p);
|
||||
@ -140,11 +139,6 @@ void alphatro_state::device_timer(emu_timer &timer, device_timer_id id, int para
|
||||
}
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( alphatro_state::rxdata_callback )
|
||||
{
|
||||
return (bool)m_cass_data[2];
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( alphatro_state::txdata_callback )
|
||||
{
|
||||
m_cass_state = state;
|
||||
@ -379,7 +373,7 @@ void alphatro_state::machine_reset()
|
||||
m_cass_state = 1;
|
||||
m_cass_data[0] = 0;
|
||||
m_cass_data[1] = 0;
|
||||
m_cass_data[2] = 0;
|
||||
m_usart->write_rx(0);
|
||||
m_cass_data[3] = 0;
|
||||
m_beep->set_state(0);
|
||||
m_beep->set_frequency(950); /* piezo-device needs to be measured */
|
||||
@ -417,14 +411,11 @@ static MC6845_INTERFACE( alphatro_crtc6845_interface )
|
||||
|
||||
static const i8251_interface alphatro_usart_interface =
|
||||
{
|
||||
DEVCB_DRIVER_LINE_MEMBER(alphatro_state,rxdata_callback), //rxd_cb
|
||||
DEVCB_DRIVER_LINE_MEMBER(alphatro_state,txdata_callback), //txd_cb
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
@ -447,7 +438,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(alphatro_state::alphatro_p)
|
||||
if (cass_ws != m_cass_data[0])
|
||||
{
|
||||
m_cass_data[0] = cass_ws;
|
||||
m_cass_data[2] = ((m_cass_data[1] < 12) ? 1 : 0);
|
||||
m_usart->write_rx((m_cass_data[1] < 12) ? 1 : 0);
|
||||
m_cass_data[1] = 0;
|
||||
}
|
||||
}
|
||||
|
@ -550,9 +550,7 @@ static const struct pit8253_interface pit_intf =
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -660,7 +658,10 @@ static MACHINE_CONFIG_START( bw2, bw2_state )
|
||||
MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", bw2_floppies, "35dd", bw2_state::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", bw2_floppies, NULL, bw2_state::floppy_formats)
|
||||
MCFG_BW2_EXPANSION_SLOT_ADD(BW2_EXPANSION_SLOT_TAG, XTAL_16MHz, bw2_expansion_cards, NULL)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
|
||||
|
||||
// software list
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list","bw2")
|
||||
|
@ -353,8 +353,6 @@ static const i8251_interface rs232_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
@ -370,8 +368,6 @@ static const i8251_interface rs449_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -544,11 +544,9 @@ static const struct pit8253_interface pit_intf =
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, so_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(COMPIS_KEYBOARD_TAG, compis_keyboard_device, si_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DEVICE_LINE_MEMBER(I80130_TAG, i80130_device, ir2_w),
|
||||
DEVCB_NULL, //DEVCB_DEVICE_LINE_MEMBER(I80186_TAG, i80186_cpu_device, int1_w),
|
||||
DEVCB_NULL,
|
||||
@ -781,7 +779,9 @@ static MACHINE_CONFIG_START( compis, compis_state )
|
||||
MCFG_ISBX_SLOT_MINTR0_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir6_w))
|
||||
MCFG_ISBX_SLOT_MINTR1_CALLBACK(DEVWRITELINE(I80130_TAG, i80130_device, ir5_w))
|
||||
MCFG_ISBX_SLOT_MDRQT_CALLBACK(DEVWRITELINE(I80186_TAG, i80186_cpu_device, drq1_w))
|
||||
MCFG_COMPIS_KEYBOARD_ADD(NULL)
|
||||
|
||||
MCFG_DEVICE_ADD(COMPIS_KEYBOARD_TAG, COMPIS_KEYBOARD, 0)
|
||||
MCFG_COMPIS_KEYBOARD_OUT_TX_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_rx))
|
||||
|
||||
// software lists
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "compis")
|
||||
|
@ -71,7 +71,6 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(portf1_w);
|
||||
DECLARE_WRITE8_MEMBER(h8_status_callback);
|
||||
DECLARE_WRITE_LINE_MEMBER(h8_inte_callback);
|
||||
DECLARE_READ_LINE_MEMBER(rxdata_callback);
|
||||
DECLARE_WRITE_LINE_MEMBER(txdata_callback);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(h8_irq_pulse);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(h8_c);
|
||||
@ -219,7 +218,7 @@ void h8_state::machine_reset()
|
||||
m_cass_state = 1;
|
||||
m_cass_data[0] = 0;
|
||||
m_cass_data[1] = 0;
|
||||
m_cass_data[2] = 0;
|
||||
m_uart->write_rx(0);
|
||||
m_cass_data[3] = 0;
|
||||
m_ff_b = 1;
|
||||
}
|
||||
@ -262,11 +261,6 @@ But, all of this can only occur if bit 5 of port F0 is low. */
|
||||
output_set_value("run_led", state);
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( h8_state::rxdata_callback )
|
||||
{//printf("%X",m_cass_data[2]);
|
||||
return (bool)m_cass_data[2];
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( h8_state::txdata_callback )
|
||||
{
|
||||
m_cass_state = state;
|
||||
@ -274,14 +268,12 @@ WRITE_LINE_MEMBER( h8_state::txdata_callback )
|
||||
|
||||
static const i8251_interface uart_intf =
|
||||
{
|
||||
DEVCB_DRIVER_LINE_MEMBER(h8_state,rxdata_callback), //rxd_cb
|
||||
DEVCB_DRIVER_LINE_MEMBER(h8_state,txdata_callback), //txd_cb
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
@ -306,7 +298,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(h8_state::h8_p)
|
||||
if (cass_ws != m_cass_data[0])
|
||||
{
|
||||
m_cass_data[0] = cass_ws;
|
||||
m_cass_data[2] = (m_cass_data[1] < 12) ? 1 : 0;
|
||||
m_uart->write_rx((m_cass_data[1] < 12) ? 1 : 0);
|
||||
m_cass_data[1] = 0;
|
||||
}
|
||||
}
|
||||
|
@ -103,9 +103,7 @@ INPUT_PORTS_END
|
||||
|
||||
static const i8251_interface usart_l_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -121,9 +119,7 @@ static const i8251_interface usart_l_intf =
|
||||
|
||||
static const i8251_interface usart_r_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -192,9 +188,15 @@ static MACHINE_CONFIG_START( horizon, horizon_state )
|
||||
// devices
|
||||
MCFG_I8251_ADD(I8251_L_TAG, usart_l_intf)
|
||||
MCFG_I8251_ADD(I8251_R_TAG, usart_r_intf)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal")
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_L_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_L_TAG, i8251_device, write_rx))
|
||||
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_R_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_R_TAG, i8251_device, write_rx))
|
||||
|
||||
// S-100
|
||||
MCFG_S100_BUS_ADD(s100_intf)
|
||||
|
@ -105,8 +105,6 @@ static const i8251_interface uart_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -132,7 +132,7 @@ DEVICE_INPUT_DEFAULTS_END
|
||||
|
||||
static const serial_terminal_interface terminal_intf =
|
||||
{
|
||||
DEVCB_NULL
|
||||
DEVCB_DEVICE_LINE_MEMBER("uart8251", i8251_device, write_rx)
|
||||
};
|
||||
|
||||
static const struct pit8253_interface isbc86_pit_config =
|
||||
@ -245,11 +245,9 @@ static I8274_INTERFACE(isbc_uart8274_interface)
|
||||
|
||||
static const i8251_interface isbc_uart8251_interface =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, tx_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER("terminal", serial_terminal_device, rx_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DEVICE_LINE_MEMBER("pic_0", pic8259_device, ir6_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
|
@ -91,8 +91,6 @@ static const i8251_interface uart_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -1188,9 +1188,7 @@ static IM6402_INTERFACE( uart_intf )
|
||||
|
||||
static const i8251_interface tandy200_uart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -1532,7 +1530,11 @@ static MACHINE_CONFIG_START( tandy200, tandy200_state )
|
||||
MCFG_I8155_ADD(I8155_TAG, XTAL_4_9152MHz/2, tandy200_8155_intf)
|
||||
MCFG_RP5C01_ADD(RP5C01A_TAG, XTAL_32_768kHz, tandy200_rtc_intf)
|
||||
MCFG_I8251_ADD(I8251_TAG, /*XTAL_4_9152MHz/2,*/ tandy200_uart_intf)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
|
||||
|
||||
// MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz)
|
||||
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
|
||||
MCFG_CASSETTE_ADD("cassette", kc85_cassette_interface)
|
||||
|
@ -87,7 +87,6 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(tty_clock_tick_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(kbd_clock_tick_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(timer_tick_w);
|
||||
DECLARE_READ_LINE_MEMBER(kbd_rx);
|
||||
DECLARE_WRITE_LINE_MEMBER(kbd_tx);
|
||||
DECLARE_WRITE8_MEMBER(kbd_put);
|
||||
|
||||
@ -148,12 +147,7 @@ UINT32 m20_state::screen_update_m20(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
return 0;
|
||||
}
|
||||
|
||||
// these two i8251 callbacks will ask for/send 1 bit at a time.
|
||||
READ_LINE_MEMBER(m20_state::kbd_rx)
|
||||
{
|
||||
/* TODO: correct hookup for keyboard, keyboard uses 8048 */
|
||||
return 0x00;
|
||||
}
|
||||
/* TODO: correct hookup for keyboard, keyboard uses 8048 */
|
||||
|
||||
WRITE_LINE_MEMBER(m20_state::kbd_tx)
|
||||
{
|
||||
@ -869,9 +863,7 @@ void m20_state::fdc_intrq_w(bool state)
|
||||
|
||||
static const i8251_interface kbd_i8251_intf =
|
||||
{
|
||||
DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rx),
|
||||
DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_tx),
|
||||
DEVCB_NULL, // dsr
|
||||
DEVCB_NULL, // dtr
|
||||
DEVCB_NULL, // rts
|
||||
DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rxrdy_int), // rx ready
|
||||
@ -882,9 +874,7 @@ static const i8251_interface kbd_i8251_intf =
|
||||
|
||||
static const i8251_interface tty_i8251_intf =
|
||||
{
|
||||
DEVCB_NULL, // rxd in
|
||||
DEVCB_NULL, // txd out
|
||||
DEVCB_NULL, // dsr
|
||||
DEVCB_NULL, // dtr
|
||||
DEVCB_NULL, // rts
|
||||
DEVCB_NULL, // rx ready
|
||||
|
@ -814,8 +814,6 @@ static RP5C01_INTERFACE( rtc_intf )
|
||||
|
||||
static const i8251_interface nc100_uart_interface =
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
@ -1161,8 +1159,6 @@ WRITE_LINE_MEMBER(nc_state::nc200_rxrdy_callback)
|
||||
|
||||
static const i8251_interface nc200_uart_interface=
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
|
@ -1926,8 +1926,6 @@ static const i8251_interface pc6001_usart_interface=
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -411,8 +411,6 @@ static const i8251_interface uart_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -571,9 +571,7 @@ static I8255A_INTERFACE( ppi_intf )
|
||||
|
||||
static const i8251_interface uart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -597,7 +595,10 @@ static MACHINE_CONFIG_START( pc8401a, pc8401a_state )
|
||||
MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
|
||||
MCFG_I8255A_ADD(I8255A_TAG, ppi_intf)
|
||||
MCFG_I8251_ADD(I8251_TAG, uart_intf)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
|
||||
|
||||
/* video hardware */
|
||||
MCFG_FRAGMENT_ADD(pc8401a_video)
|
||||
|
@ -447,9 +447,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(upd765_tc_r);
|
||||
DECLARE_WRITE8_MEMBER(fdc_irq_vector_w);
|
||||
DECLARE_WRITE8_MEMBER(fdc_drive_mode_w);
|
||||
DECLARE_READ_LINE_MEMBER(rxdata_callback);
|
||||
DECLARE_WRITE_LINE_MEMBER(txdata_callback);
|
||||
DECLARE_READ_LINE_MEMBER(dsr_r);
|
||||
DECLARE_WRITE_LINE_MEMBER(rxrdy_w);
|
||||
DECLARE_READ8_MEMBER(pc8801_sound_board_r);
|
||||
DECLARE_WRITE8_MEMBER(pc8801_sound_board_w);
|
||||
@ -2606,16 +2604,6 @@ static const ay8910_interface single_ay8910_config =
|
||||
};
|
||||
|
||||
/* Cassette Configuration */
|
||||
READ_LINE_MEMBER( pc8801_state::rxdata_callback )
|
||||
{
|
||||
return 0;
|
||||
//return (m_cass->input() > -0.1) ? 1 : 0;
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( pc8801_state::dsr_r )
|
||||
{
|
||||
return 0; // bit 7 status
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( pc8801_state::txdata_callback )
|
||||
{
|
||||
@ -2629,9 +2617,7 @@ WRITE_LINE_MEMBER( pc8801_state::rxrdy_w )
|
||||
|
||||
static const i8251_interface uart_intf =
|
||||
{
|
||||
DEVCB_DRIVER_LINE_MEMBER(pc8801_state,rxdata_callback), //rxd_cb
|
||||
DEVCB_DRIVER_LINE_MEMBER(pc8801_state,txdata_callback), //txd_cb
|
||||
DEVCB_DRIVER_LINE_MEMBER(pc8801_state,dsr_r),
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_LINE_MEMBER(pc8801_state,rxrdy_w),
|
||||
DEVCB_NULL,
|
||||
|
@ -3418,8 +3418,6 @@ static const i8251_interface pc9801_uart_interface =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -734,8 +734,6 @@ static const i8251_interface i8251_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -272,9 +272,6 @@ public:
|
||||
|
||||
DECLARE_READ8_MEMBER(system_parameter_r);
|
||||
|
||||
DECLARE_READ_LINE_MEMBER(dsr_r);
|
||||
|
||||
DECLARE_READ_LINE_MEMBER(kbd_rx);
|
||||
DECLARE_WRITE_LINE_MEMBER(kbd_tx);
|
||||
DECLARE_WRITE_LINE_MEMBER(kbd_rxready_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(kbd_txready_w);
|
||||
@ -510,6 +507,7 @@ static INPUT_PORTS_START( rainbow100b_in )
|
||||
PORT_DIPNAME( 0x02, 0x02, "W13 (FACTORY TEST A, LEAVE OFF)") PORT_TOGGLE
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("W14")
|
||||
PORT_DIPNAME( 0x04, 0x04, "W14 (FACTORY TEST B, LEAVE OFF)") PORT_TOGGLE
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
@ -523,6 +521,7 @@ static INPUT_PORTS_START( rainbow100b_in )
|
||||
PORT_DIPNAME( 0x01, 0x00, "W18 (FACTORY TEST D, LEAVE OFF) (8251A: DSR)") PORT_TOGGLE
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_WRITE_LINE_DEVICE_MEMBER("kbdser", i8251_device, write_dsr)
|
||||
|
||||
// J17 jumper on FDC controller board shifts drive select (experimental) -
|
||||
PORT_START("FLOPPY CONTROLLER")
|
||||
@ -1119,11 +1118,6 @@ WRITE8_MEMBER( rainbow_state::diagnostic_w )
|
||||
}
|
||||
|
||||
|
||||
READ_LINE_MEMBER(rainbow_state::dsr_r)
|
||||
{
|
||||
return m_inp4->read(); // W18 (1/0)
|
||||
}
|
||||
|
||||
// KEYBOARD
|
||||
void rainbow_state::update_kbd_irq()
|
||||
{
|
||||
@ -1138,12 +1132,6 @@ void rainbow_state::update_kbd_irq()
|
||||
}
|
||||
|
||||
|
||||
READ_LINE_MEMBER(rainbow_state::kbd_rx)
|
||||
{
|
||||
// printf("read keyboard\n");
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(rainbow_state::kbd_tx)
|
||||
{
|
||||
// printf("%02x to keyboard\n", state);
|
||||
@ -1246,9 +1234,7 @@ static const floppy_interface floppy_intf =
|
||||
|
||||
static const i8251_interface i8251_intf =
|
||||
{
|
||||
DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_rx), // rxd in
|
||||
DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_tx), // txd out
|
||||
DEVCB_DRIVER_LINE_MEMBER(rainbow_state, dsr_r), // dsr
|
||||
DEVCB_NULL, // dtr
|
||||
DEVCB_NULL, // rts
|
||||
DEVCB_DRIVER_LINE_MEMBER(rainbow_state, kbd_rxready_w),
|
||||
|
@ -427,9 +427,7 @@ static const struct pit8253_interface pit1_intf =
|
||||
|
||||
static const i8251_interface usart0_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_CPU_INPUT_LINE(M68000_TAG, M68K_IRQ_5),
|
||||
@ -445,9 +443,7 @@ static const i8251_interface usart0_intf =
|
||||
|
||||
static const i8251_interface usart1_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(I8259_TAG, pic8259_device, ir1_w),
|
||||
@ -555,9 +551,15 @@ static MACHINE_CONFIG_START( sage2, sage2_state )
|
||||
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", sage2_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_IEEE488_BUS_ADD()
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal")
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_0_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_0_TAG, i8251_device, write_dsr))
|
||||
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_1_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_1_TAG, i8251_device, write_dsr))
|
||||
|
||||
// internal ram
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
|
@ -277,8 +277,6 @@ static const i8251_interface u0_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
@ -290,8 +288,6 @@ static const i8251_interface u1_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -138,9 +138,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( sdk86_state::serial_tick )
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_NULL, // connected to CTS
|
||||
DEVCB_NULL,
|
||||
@ -177,7 +175,11 @@ static MACHINE_CONFIG_START( sdk86, sdk86_state )
|
||||
/* Devices */
|
||||
MCFG_I8251_ADD(I8251_TAG, usart_intf)
|
||||
MCFG_I8279_ADD("i8279", 2500000, sdk86_intf) // based on divider
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, "serial_terminal")
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
|
||||
|
||||
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("serial", sdk86_state, serial_tick, attotime::from_hz(307200))
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -650,9 +650,7 @@ static I8255_INTERFACE( sf7000_ppi_intf )
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -889,7 +887,10 @@ static MACHINE_CONFIG_START( sf7000, sf7000_state )
|
||||
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats)
|
||||
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
|
||||
MCFG_CASSETTE_ADD("cassette", sc3000_cassette_interface)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(UPD8251_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(UPD8251_TAG, i8251_device, write_dsr))
|
||||
|
||||
/* software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list","sf7000")
|
||||
|
@ -178,9 +178,7 @@ INPUT_PORTS_END
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -418,7 +416,11 @@ static MACHINE_CONFIG_START( softbox, softbox_state )
|
||||
MCFG_HARDDISK_ADD("harddisk2")
|
||||
MCFG_HARDDISK_ADD("harddisk3")
|
||||
MCFG_HARDDISK_ADD("harddisk4")
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, "serial_terminal")
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
|
||||
|
||||
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
|
||||
MCFG_IMI5000H_ADD("corvus1")
|
||||
|
||||
|
@ -408,9 +408,7 @@ WRITE_LINE_MEMBER( tandy2k_state::txrdy_w )
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_DRIVER_LINE_MEMBER(tandy2k_state, rxrdy_w),
|
||||
@ -699,7 +697,11 @@ static MACHINE_CONFIG_START( tandy2k, tandy2k_state )
|
||||
MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":1", tandy2k_floppies, "525qd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251A_TAG, i8251_device, write_dsr))
|
||||
|
||||
MCFG_TANDY2K_KEYBOARD_ADD(WRITELINE(tandy2k_state, kbdclk_w), WRITELINE(tandy2k_state, kbddat_w))
|
||||
|
||||
// software lists
|
||||
|
@ -164,11 +164,10 @@ WRITE_LINE_MEMBER(tsispch_state::i8251_txrdy_int)
|
||||
machine().device<pic8259_device>("pic8259")->ir3_w(state);
|
||||
}
|
||||
|
||||
// (todo: proper hookup, currently using hack w/i8251_receive_character())
|
||||
const i8251_interface i8251_config =
|
||||
{
|
||||
DEVCB_NULL, // in rxd, serial (todo: proper hookup, currently using hack w/i8251_receive_character())
|
||||
DEVCB_NULL, // out txd, serial
|
||||
DEVCB_NULL, // in dsr
|
||||
DEVCB_NULL, // out dtr
|
||||
DEVCB_NULL, // out rts
|
||||
DEVCB_DRIVER_LINE_MEMBER(tsispch_state,i8251_rxrdy_int), // out rxrdy
|
||||
|
@ -932,11 +932,9 @@ WRITE_LINE_MEMBER( v1050_state::kb_rxrdy_w )
|
||||
|
||||
static const i8251_interface kb_8251_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(V1050_KEYBOARD_TAG, v1050_keyboard_device, so_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(V1050_KEYBOARD_TAG, v1050_keyboard_device, si_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_LINE_MEMBER(v1050_state, kb_rxrdy_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
@ -967,9 +965,7 @@ WRITE_LINE_MEMBER( v1050_state::sio_txrdy_w )
|
||||
|
||||
static const i8251_interface sio_8251_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_DRIVER_LINE_MEMBER(v1050_state, sio_rxrdy_w),
|
||||
@ -1137,7 +1133,10 @@ static MACHINE_CONFIG_START( v1050, v1050_state )
|
||||
MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":3", v1050_floppies, NULL, floppy_image_device::default_floppy_formats)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_KB_TAG, v1050_state, kb_8251_tick, attotime::from_hz((double)XTAL_16MHz/4/13/8))
|
||||
MCFG_TIMER_DRIVER_ADD(TIMER_SIO_TAG, v1050_state, sio_8251_tick)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251A_SIO_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251A_SIO_TAG, i8251_device, write_dsr))
|
||||
|
||||
// SASI bus
|
||||
MCFG_SCSIBUS_ADD(SASIBUS_TAG)
|
||||
@ -1149,7 +1148,8 @@ static MACHINE_CONFIG_START( v1050, v1050_state )
|
||||
MCFG_TIMER_DRIVER_ADD(TIMER_RST_TAG, v1050_state, sasi_rst_tick)
|
||||
|
||||
// keyboard
|
||||
MCFG_V1050_KEYBOARD_ADD()
|
||||
MCFG_DEVICE_ADD(V1050_KEYBOARD_TAG, V1050_KEYBOARD, 0)
|
||||
MCFG_V1050_KEYBOARD_OUT_TX_HANDLER(DEVWRITELINE(I8251A_KB_TAG, i8251_device, write_rx))
|
||||
|
||||
// software lists
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "v1050_flop")
|
||||
|
@ -670,9 +670,7 @@ WRITE_LINE_MEMBER( vixen_state::txrdy_w )
|
||||
|
||||
static const i8251_interface usart_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_DRIVER_LINE_MEMBER(vixen_state, rxrdy_w),
|
||||
@ -818,7 +816,10 @@ static MACHINE_CONFIG_START( vixen, vixen_state )
|
||||
MCFG_IEEE488_BUS_ADD()
|
||||
MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(vixen_state, srq_w))
|
||||
MCFG_IEEE488_ATN_CALLBACK(WRITELINE(vixen_state, atn_w))
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(P8251A_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(P8251A_TAG, i8251_device, write_dsr))
|
||||
|
||||
/* software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("disk_list", "vixen")
|
||||
|
@ -1009,9 +1009,7 @@ static MC6845_INTERFACE( mc6845_intf )
|
||||
|
||||
static const i8251_interface i8251_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
//DEVCB_DRIVER_LINE_MEMBER(vk100_state, i8251_rts), // out_rts_cb
|
||||
@ -1036,7 +1034,11 @@ static MACHINE_CONFIG_START( vk100, vk100_state )
|
||||
|
||||
/* i8251 uart */
|
||||
MCFG_I8251_ADD("i8251", i8251_intf)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("i8251", i8251_device, write_dsr))
|
||||
|
||||
MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT( layout_vk100 )
|
||||
|
@ -193,9 +193,7 @@ IRQ_CALLBACK_MEMBER( votrpss_state::irq_ack )
|
||||
|
||||
static const i8251_interface uart_intf =
|
||||
{
|
||||
//DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
|
||||
//DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
|
||||
//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dsr_r),
|
||||
//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, dtr_w),
|
||||
//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -204,8 +202,6 @@ static const i8251_interface uart_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
@ -342,6 +338,8 @@ static MACHINE_CONFIG_START( votrpss, votrpss_state )
|
||||
/* Serial components - comment out if not needed */
|
||||
//MCFG_TIMER_DRIVER_ADD_PERIODIC("serial", votrpss_state, serial_tick, attotime::from_hz(153600))
|
||||
//MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal")
|
||||
//MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("uart", i8251_device, write_rx))
|
||||
//MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("uart", i8251_device, write_dsr))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -407,9 +407,7 @@ GFXDECODE_END
|
||||
|
||||
static const i8251_interface i8251_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL, // out_rxrdy_cb
|
||||
@ -442,10 +440,12 @@ static MACHINE_CONFIG_START( vt100, vt100_state )
|
||||
|
||||
MCFG_VT100_VIDEO_ADD("vt100_video", vt100_video_interface)
|
||||
|
||||
|
||||
/* i8251 uart */
|
||||
MCFG_I8251_ADD("i8251", i8251_intf)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("i8251", i8251_device, write_dsr))
|
||||
|
||||
MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w))
|
||||
|
||||
|
||||
|
@ -374,9 +374,7 @@ WRITE_LINE_MEMBER( xor100_state::com5016_ft_w )
|
||||
|
||||
static const i8251_interface printer_8251_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -389,9 +387,7 @@ static const i8251_interface printer_8251_intf =
|
||||
|
||||
static const i8251_interface terminal_8251_intf =
|
||||
{
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
|
||||
DEVCB_NULL,
|
||||
@ -579,8 +575,15 @@ static MACHINE_CONFIG_START( xor100, xor100_state )
|
||||
MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":2", xor100_floppies, NULL, floppy_image_device::default_floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":3", xor100_floppies, NULL, floppy_image_device::default_floppy_formats)
|
||||
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, xor100_centronics_intf)
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_A_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_A_TAG, i8251_device, write_dsr))
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, "serial_terminal")
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(I8251_B_TAG, i8251_device, write_rx))
|
||||
MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE(I8251_B_TAG, i8251_device, write_dsr))
|
||||
|
||||
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal)
|
||||
|
||||
// S-100
|
||||
|
@ -234,8 +234,6 @@ static const i8251_interface u0_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
@ -248,8 +246,6 @@ static const i8251_interface u1_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
@ -262,8 +258,6 @@ static const i8251_interface u2_intf =
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -46,6 +46,7 @@
|
||||
#define ISBX_0_TAG "isbx0"
|
||||
#define ISBX_1_TAG "isbx1"
|
||||
#define SCREEN_TAG "screen"
|
||||
#define COMPIS_KEYBOARD_TAG "compiskb"
|
||||
|
||||
class compis_state : public driver_device
|
||||
{
|
||||
|
@ -46,6 +46,7 @@
|
||||
#define TIMER_RST_TAG "timer_rst"
|
||||
#define SASIBUS_TAG "sasi"
|
||||
#define RS232_TAG "rs232"
|
||||
#define V1050_KEYBOARD_TAG "v1050kb"
|
||||
|
||||
#define V1050_VIDEORAM_SIZE 0x8000
|
||||
#define V1050_VIDEORAM_MASK 0x7fff
|
||||
|
@ -18,6 +18,7 @@
|
||||
//**************************************************************************
|
||||
|
||||
#define I8748_TAG "i8748"
|
||||
#define SPEAKER_TAG "speaker"
|
||||
|
||||
|
||||
|
||||
@ -239,7 +240,6 @@ ioport_constructor compis_keyboard_device::device_input_ports() const
|
||||
|
||||
compis_keyboard_device::compis_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, COMPIS_KEYBOARD, "Compis Keyboard", tag, owner, clock, "compiskb", __FILE__),
|
||||
m_write_irq(*this),
|
||||
m_maincpu(*this, I8748_TAG),
|
||||
m_speaker(*this, SPEAKER_TAG),
|
||||
m_y1(*this, "Y1"),
|
||||
@ -252,7 +252,7 @@ compis_keyboard_device::compis_keyboard_device(const machine_config &mconfig, co
|
||||
m_y8(*this, "Y8"),
|
||||
m_y9(*this, "Y9"),
|
||||
m_special(*this, "SPECIAL"),
|
||||
m_so(1),
|
||||
m_out_tx_handler(*this),
|
||||
m_bus(0xff),
|
||||
m_keylatch(0)
|
||||
{
|
||||
@ -266,17 +266,8 @@ compis_keyboard_device::compis_keyboard_device(const machine_config &mconfig, co
|
||||
void compis_keyboard_device::device_start()
|
||||
{
|
||||
// resolve callbacks
|
||||
m_write_irq.resolve_safe();
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// so_r - serial output read
|
||||
//-------------------------------------------------
|
||||
|
||||
READ_LINE_MEMBER( compis_keyboard_device::so_r )
|
||||
{
|
||||
return m_so;
|
||||
m_out_tx_handler.resolve_safe();
|
||||
m_out_tx_handler(1);
|
||||
}
|
||||
|
||||
|
||||
@ -334,7 +325,7 @@ WRITE8_MEMBER( compis_keyboard_device::bus_w )
|
||||
output_set_led_value(LED_CAPS, BIT(data, 6));
|
||||
|
||||
// serial data out
|
||||
m_so = BIT(data, 7);
|
||||
m_out_tx_handler(BIT(data, 7));
|
||||
}
|
||||
|
||||
|
||||
|
@ -20,22 +20,13 @@
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACROS / CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define COMPIS_KEYBOARD_TAG "compiskb"
|
||||
#define SPEAKER_TAG "speaker"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_COMPIS_KEYBOARD_ADD(_irq) \
|
||||
MCFG_DEVICE_ADD(COMPIS_KEYBOARD_TAG, COMPIS_KEYBOARD, 0) \
|
||||
downcast<compis_keyboard_device *>(device)->set_irq_callback(DEVCB2_##_irq);
|
||||
#define MCFG_COMPIS_KEYBOARD_OUT_TX_HANDLER(_devcb) \
|
||||
devcb = &compis_keyboard_device::set_out_tx_handler(*device, DEVCB2_##_devcb);
|
||||
|
||||
|
||||
|
||||
|
||||
@ -51,14 +42,13 @@ public:
|
||||
// construction/destruction
|
||||
compis_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); }
|
||||
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); }
|
||||
|
||||
// optional information overrides
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
virtual ioport_constructor device_input_ports() const;
|
||||
|
||||
DECLARE_READ_LINE_MEMBER( so_r );
|
||||
DECLARE_WRITE_LINE_MEMBER( si_w );
|
||||
|
||||
DECLARE_READ8_MEMBER( bus_r );
|
||||
@ -76,8 +66,6 @@ private:
|
||||
LED_CAPS
|
||||
};
|
||||
|
||||
devcb2_write_line m_write_irq;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_ioport m_y1;
|
||||
@ -90,8 +78,7 @@ private:
|
||||
required_ioport m_y8;
|
||||
required_ioport m_y9;
|
||||
required_ioport m_special;
|
||||
|
||||
int m_so;
|
||||
devcb2_write_line m_out_tx_handler;
|
||||
|
||||
UINT8 m_bus;
|
||||
UINT8 m_keylatch;
|
||||
|
@ -295,11 +295,6 @@ static const struct pit8253_interface d8253_intf =
|
||||
// uPD71051 USART
|
||||
//-------------------------------------------------
|
||||
|
||||
READ_LINE_MEMBER( isa8_ibm_mfc_device::d70151_dsr_r )
|
||||
{
|
||||
return (m_tcr & TCR_EXT8) ? 1 : 0;
|
||||
}
|
||||
|
||||
void isa8_ibm_mfc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
m_d71051->transmit_clock();
|
||||
@ -310,8 +305,6 @@ static const i8251_interface d71051_intf =
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ibm_mfc_device, d70151_dsr_r),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
@ -426,6 +419,8 @@ WRITE8_MEMBER( isa8_ibm_mfc_device::ibm_mfc_w )
|
||||
if (~m_tcr & TCR_TBC)
|
||||
set_pc_interrupt(PC_IRQ_TIMERB, 0);
|
||||
|
||||
m_d71051->write_dsr((m_tcr & TCR_EXT8) ? 1 : 0);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -526,6 +521,7 @@ void isa8_ibm_mfc_device::device_start()
|
||||
void isa8_ibm_mfc_device::device_reset()
|
||||
{
|
||||
m_tcr = 0;
|
||||
m_d71051->write_dsr(0);
|
||||
m_pc_irq_state = 0;
|
||||
m_z80_irq_state = 0;
|
||||
}
|
||||
|
@ -49,8 +49,6 @@ public:
|
||||
DECLARE_READ8_MEMBER( ibm_mfc_r );
|
||||
DECLARE_WRITE8_MEMBER( ibm_mfc_w );
|
||||
|
||||
DECLARE_READ_LINE_MEMBER( d70151_dsr_r );
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( d8253_clk0_out );
|
||||
DECLARE_WRITE_LINE_MEMBER( d8253_clk1_out );
|
||||
DECLARE_WRITE_LINE_MEMBER( d8253_clk2_out );
|
||||
|
@ -284,8 +284,6 @@ TIMER_CALLBACK_MEMBER(mbc55x_state::keyscan_callback)
|
||||
|
||||
const i8251_interface mbc55x_i8251a_interface =
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
|
@ -425,8 +425,7 @@ const struct pit8253_interface pcjr_pit8253_config =
|
||||
|
||||
const i8251_interface mc1502_i8251_interface =
|
||||
{
|
||||
DEVCB_NULL, /* XXX RxD data are accessible via PPI port C, bit 7 */
|
||||
DEVCB_NULL,
|
||||
/* XXX RxD data are accessible via PPI port C, bit 7 */
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
|
@ -252,8 +252,6 @@ WRITE_LINE_MEMBER(poly88_state::poly88_usart_rxready)
|
||||
|
||||
const i8251_interface poly88_usart_interface=
|
||||
{
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
|
@ -232,9 +232,7 @@ I8255A_INTERFACE( pp01_ppi8255_interface )
|
||||
// when rts and dtr are both high, the uart is being used for cassette operations
|
||||
const i8251_interface pp01_uart_intf =
|
||||
{
|
||||
DEVCB_NULL, // in rxd
|
||||
DEVCB_NULL, // out txd
|
||||
DEVCB_NULL, // in dsr
|
||||
DEVCB_NULL, // out dtr
|
||||
DEVCB_NULL, // out rts
|
||||
DEVCB_NULL, // out rxrdy
|
||||
|
@ -320,8 +320,8 @@ v1050_keyboard_device::v1050_keyboard_device(const machine_config &mconfig, cons
|
||||
m_y9(*this, "Y9"),
|
||||
m_ya(*this, "YA"),
|
||||
m_yb(*this, "YB"),
|
||||
m_y(0),
|
||||
m_so(1)
|
||||
m_out_tx_handler(*this),
|
||||
m_y(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -334,7 +334,6 @@ void v1050_keyboard_device::device_start()
|
||||
{
|
||||
// state saving
|
||||
save_item(NAME(m_y));
|
||||
save_item(NAME(m_so));
|
||||
}
|
||||
|
||||
|
||||
@ -344,6 +343,8 @@ void v1050_keyboard_device::device_start()
|
||||
|
||||
void v1050_keyboard_device::device_reset()
|
||||
{
|
||||
m_out_tx_handler.resolve_safe();
|
||||
m_out_tx_handler(1);
|
||||
}
|
||||
|
||||
|
||||
@ -357,16 +358,6 @@ WRITE_LINE_MEMBER( v1050_keyboard_device::si_w )
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// so_r -
|
||||
//-------------------------------------------------
|
||||
|
||||
READ_LINE_MEMBER( v1050_keyboard_device::so_r )
|
||||
{
|
||||
return m_so;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// kb_p1_r -
|
||||
//-------------------------------------------------
|
||||
@ -433,5 +424,5 @@ WRITE8_MEMBER( v1050_keyboard_device::kb_p2_w )
|
||||
discrete_sound_w(m_discrete, space, NODE_01, BIT(data, 6));
|
||||
|
||||
// serial output
|
||||
m_so = BIT(data, 7);
|
||||
m_out_tx_handler(BIT(data, 7));
|
||||
}
|
||||
|
@ -20,20 +20,12 @@
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACROS / CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define V1050_KEYBOARD_TAG "v1050kb"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_V1050_KEYBOARD_ADD() \
|
||||
MCFG_DEVICE_ADD(V1050_KEYBOARD_TAG, V1050_KEYBOARD, 0)
|
||||
#define MCFG_V1050_KEYBOARD_OUT_TX_HANDLER(_devcb) \
|
||||
devcb = &v1050_keyboard_device::set_out_tx_handler(*device, DEVCB2_##_devcb);
|
||||
|
||||
|
||||
|
||||
@ -49,13 +41,14 @@ public:
|
||||
// construction/destruction
|
||||
v1050_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
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); }
|
||||
|
||||
// optional information overrides
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
virtual ioport_constructor device_input_ports() const;
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( si_w );
|
||||
DECLARE_READ_LINE_MEMBER( so_r );
|
||||
|
||||
// not really public
|
||||
DECLARE_READ8_MEMBER( kb_p1_r );
|
||||
@ -82,9 +75,9 @@ private:
|
||||
required_ioport m_y9;
|
||||
required_ioport m_ya;
|
||||
required_ioport m_yb;
|
||||
devcb2_write_line m_out_tx_handler;
|
||||
|
||||
UINT8 m_y;
|
||||
int m_so;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user