mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
Add DEC 12-15336-00 RS232 loopback connector type (required for VT102 modem control self-test)
rs232: Add speed select output (nw)
This commit is contained in:
parent
4d497308ce
commit
556312c031
@ -42,3 +42,55 @@ WRITE_LINE_MEMBER( rs232_loopback_device::input_dtr )
|
||||
output_dcd(state);
|
||||
}
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(DEC_RS232_LOOPBACK, dec_rs232_loopback_device, "dec_rs232_loopback", "RS232 Loopback (DEC 12-15336-00)")
|
||||
|
||||
dec_rs232_loopback_device::dec_rs232_loopback_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, DEC_RS232_LOOPBACK, tag, owner, clock)
|
||||
, device_rs232_port_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
|
||||
void dec_rs232_loopback_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( dec_rs232_loopback_device::input_txd )
|
||||
{
|
||||
// Pin 2 (Transmitted Data) connected to Pin 3 (Received Data) and Pin 15 (Transmission Clock)
|
||||
if (started())
|
||||
{
|
||||
output_rxd(state);
|
||||
output_txc(state);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( dec_rs232_loopback_device::input_rts )
|
||||
{
|
||||
// Pin 4 (Request to Send) connected to Pin 5 (Clear to Send) and Pin 8 (Carrier Detect)
|
||||
if (started())
|
||||
{
|
||||
output_cts(state);
|
||||
output_dcd(state);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( dec_rs232_loopback_device::input_dtr )
|
||||
{
|
||||
// Pin 20 (Data Terminal Ready) connected to Pin 6 (Data Set Ready) and 22 (Ring Indicator)
|
||||
if (started())
|
||||
{
|
||||
output_dsr(state);
|
||||
output_ri(state);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( dec_rs232_loopback_device::input_spds )
|
||||
{
|
||||
// Pin 19 (Speed Select) connected to Pin 12 (Speed Indicator) and 17 (Receive Clock)
|
||||
if (started())
|
||||
{
|
||||
output_si(state);
|
||||
output_rxc(state);
|
||||
}
|
||||
}
|
||||
|
@ -22,6 +22,22 @@ protected:
|
||||
virtual void device_start() override;
|
||||
};
|
||||
|
||||
class dec_rs232_loopback_device : public device_t,
|
||||
public device_rs232_port_interface
|
||||
{
|
||||
public:
|
||||
dec_rs232_loopback_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
virtual WRITE_LINE_MEMBER( input_txd ) override;
|
||||
virtual WRITE_LINE_MEMBER( input_rts ) override;
|
||||
virtual WRITE_LINE_MEMBER( input_dtr ) override;
|
||||
virtual WRITE_LINE_MEMBER( input_spds ) override;
|
||||
|
||||
protected:
|
||||
virtual void device_start() override;
|
||||
};
|
||||
|
||||
extern const device_type RS232_LOOPBACK;
|
||||
extern const device_type DEC_RS232_LOOPBACK;
|
||||
|
||||
#endif // MAME_BUS_RS232_LOOPBACK_H
|
||||
|
@ -143,6 +143,12 @@ WRITE_LINE_MEMBER( rs232_port_device::write_etc )
|
||||
m_dev->input_etc(state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( rs232_port_device::write_spds )
|
||||
{
|
||||
if (m_dev)
|
||||
m_dev->input_spds(state);
|
||||
}
|
||||
|
||||
device_rs232_port_interface::device_rs232_port_interface(const machine_config &mconfig, device_t &device) :
|
||||
device_slot_card_interface(mconfig, device)
|
||||
{
|
||||
@ -165,6 +171,7 @@ device_rs232_port_interface::~device_rs232_port_interface()
|
||||
SLOT_INTERFACE_START( default_rs232_devices )
|
||||
SLOT_INTERFACE("keyboard", SERIAL_KEYBOARD)
|
||||
SLOT_INTERFACE("loopback", RS232_LOOPBACK)
|
||||
SLOT_INTERFACE("dec_loopback", DEC_RS232_LOOPBACK)
|
||||
SLOT_INTERFACE("null_modem", NULL_MODEM)
|
||||
SLOT_INTERFACE("printer", SERIAL_PRINTER)
|
||||
SLOT_INTERFACE("terminal", SERIAL_TERMINAL)
|
||||
|
@ -142,6 +142,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER( write_dtr );
|
||||
DECLARE_WRITE_LINE_MEMBER( write_rts );
|
||||
DECLARE_WRITE_LINE_MEMBER( write_etc );
|
||||
DECLARE_WRITE_LINE_MEMBER( write_spds );
|
||||
|
||||
DECLARE_READ_LINE_MEMBER( rxd_r ) { return m_rxd; }
|
||||
DECLARE_READ_LINE_MEMBER( dcd_r ) { return m_dcd; }
|
||||
@ -192,6 +193,7 @@ public:
|
||||
virtual DECLARE_WRITE_LINE_MEMBER( input_dtr ) { }
|
||||
virtual DECLARE_WRITE_LINE_MEMBER( input_rts ) { }
|
||||
virtual DECLARE_WRITE_LINE_MEMBER( input_etc ) { }
|
||||
virtual DECLARE_WRITE_LINE_MEMBER( input_spds ) { }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( output_rxd ) { m_port->m_rxd = state; m_port->m_rxd_handler(state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( output_dcd ) { m_port->m_dcd = state; m_port->m_dcd_handler(state); }
|
||||
|
@ -916,7 +916,7 @@ MACHINE_CONFIG_START(ccs_state::ccs2810)
|
||||
MCFG_INS8250_OUT_TX_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
|
||||
MCFG_INS8250_OUT_DTR_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
|
||||
MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
|
||||
MCFG_INS8250_OUT_OUT1_CB(DEVWRITELINE("rs232", rs232_port_device, write_etc)) // RLSD
|
||||
MCFG_INS8250_OUT_OUT1_CB(DEVWRITELINE("rs232", rs232_port_device, write_spds)) // RLSD
|
||||
|
||||
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal")
|
||||
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("ins8250", ins8250_device, rx_w))
|
||||
|
@ -7,7 +7,6 @@
|
||||
29/04/2009 Preliminary driver.
|
||||
|
||||
TODO: some video attributes are not fully supported yet
|
||||
TODO: VT102 modem control loopback test needs different connections
|
||||
TODO: support for the on-AVO character set roms
|
||||
TODO: finish support for the on-cpu board alternate character set rom
|
||||
TODO: STP (standard terminal port) bus for VT1XX-AC and VT125
|
||||
@ -189,6 +188,9 @@ WRITE8_MEMBER(vt100_state::nvr_latch_w)
|
||||
|
||||
// C2 is used to disable pullup on data line
|
||||
m_nvr->data_w(BIT(data, 2) ? 0 : !BIT(data, 0));
|
||||
|
||||
// SPDS present on pins 11, 19 and 23 of EIA connector
|
||||
m_rs232->write_spds(BIT(data, 5));
|
||||
}
|
||||
|
||||
void vt100_state::vt100_io(address_map &map)
|
||||
|
Loading…
Reference in New Issue
Block a user