rs232: Add speed indicator to modem control (nw)

This commit is contained in:
AJR 2018-03-19 12:52:13 -04:00
parent ae54391340
commit f4afe913fb
5 changed files with 21 additions and 1 deletions

View File

@ -29,6 +29,7 @@ WRITE_LINE_MEMBER( rs232_loopback_device::input_rts )
if (started()) if (started())
{ {
output_ri(state); output_ri(state);
output_si(state);
output_cts(state); output_cts(state);
} }
} }

View File

@ -21,6 +21,7 @@
DCE 21 CG 110 Signal Quality Detector DCE 21 CG 110 Signal Quality Detector
DTE 23 CH 111 Data Signal Rate Selector DTE 23 CH 111 Data Signal Rate Selector
DCE 23 CI 112 Data Signal Rate Selector [Signaling Rate Indicator] DCE 23 CI 112 Data Signal Rate Selector [Signaling Rate Indicator]
DCE 12 High Speed Indicator (Bell 212A)
DTE 24 DA 113 Transmitter Signal Element Timing [External Tx Clock] DTE 24 DA 113 Transmitter Signal Element Timing [External Tx Clock]
DCE 15 DB 114 Transmitter Signal Element Timing DCE 15 DB 114 Transmitter Signal Element Timing
DCE 17 DD 115 Receiver Signal Element Timing DCE 17 DD 115 Receiver Signal Element Timing
@ -55,6 +56,7 @@ rs232_port_device::rs232_port_device(const machine_config &mconfig, device_type
m_dcd(0), m_dcd(0),
m_dsr(0), m_dsr(0),
m_ri(0), m_ri(0),
m_si(0),
m_cts(0), m_cts(0),
m_dce_rxc(0), m_dce_rxc(0),
m_dce_txc(0), m_dce_txc(0),
@ -62,6 +64,7 @@ rs232_port_device::rs232_port_device(const machine_config &mconfig, device_type
m_dcd_handler(*this), m_dcd_handler(*this),
m_dsr_handler(*this), m_dsr_handler(*this),
m_ri_handler(*this), m_ri_handler(*this),
m_si_handler(*this),
m_cts_handler(*this), m_cts_handler(*this),
m_rxc_handler(*this), m_rxc_handler(*this),
m_txc_handler(*this), m_txc_handler(*this),
@ -84,6 +87,7 @@ void rs232_port_device::device_resolve_objects()
m_dcd_handler.resolve_safe(); m_dcd_handler.resolve_safe();
m_dsr_handler.resolve_safe(); m_dsr_handler.resolve_safe();
m_ri_handler.resolve_safe(); m_ri_handler.resolve_safe();
m_si_handler.resolve_safe();
m_cts_handler.resolve_safe(); m_cts_handler.resolve_safe();
m_rxc_handler.resolve_safe(); m_rxc_handler.resolve_safe();
m_txc_handler.resolve_safe(); m_txc_handler.resolve_safe();
@ -95,6 +99,7 @@ void rs232_port_device::device_start()
save_item(NAME(m_dcd)); save_item(NAME(m_dcd));
save_item(NAME(m_dsr)); save_item(NAME(m_dsr));
save_item(NAME(m_ri)); save_item(NAME(m_ri));
save_item(NAME(m_si));
save_item(NAME(m_cts)); save_item(NAME(m_cts));
save_item(NAME(m_dce_rxc)); save_item(NAME(m_dce_rxc));
save_item(NAME(m_dce_txc)); save_item(NAME(m_dce_txc));
@ -103,12 +108,14 @@ void rs232_port_device::device_start()
m_dcd = 1; m_dcd = 1;
m_dsr = 1; m_dsr = 1;
m_ri = 1; m_ri = 1;
m_si = 1;
m_cts = 1; m_cts = 1;
m_rxd_handler(1); m_rxd_handler(1);
m_dcd_handler(1); m_dcd_handler(1);
m_dsr_handler(1); m_dsr_handler(1);
m_ri_handler(1); m_ri_handler(1);
m_si_handler(1);
m_cts_handler(1); m_cts_handler(1);
} }

View File

@ -22,6 +22,9 @@
#define MCFG_RS232_RI_HANDLER(_devcb) \ #define MCFG_RS232_RI_HANDLER(_devcb) \
devcb = &downcast<rs232_port_device &>(*device).set_ri_handler(DEVCB_##_devcb); devcb = &downcast<rs232_port_device &>(*device).set_ri_handler(DEVCB_##_devcb);
#define MCFG_RS232_SI_HANDLER(_devcb) \
devcb = &downcast<rs232_port_device &>(*device).set_si_handler(DEVCB_##_devcb);
#define MCFG_RS232_CTS_HANDLER(_devcb) \ #define MCFG_RS232_CTS_HANDLER(_devcb) \
devcb = &downcast<rs232_port_device &>(*device).set_cts_handler(DEVCB_##_devcb); devcb = &downcast<rs232_port_device &>(*device).set_cts_handler(DEVCB_##_devcb);
@ -130,6 +133,7 @@ public:
template <class Object> devcb_base &set_dcd_handler(Object &&cb) { return m_dcd_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_dcd_handler(Object &&cb) { return m_dcd_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_dsr_handler(Object &&cb) { return m_dsr_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_dsr_handler(Object &&cb) { return m_dsr_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_ri_handler(Object &&cb) { return m_ri_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_ri_handler(Object &&cb) { return m_ri_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_si_handler(Object &&cb) { return m_si_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_cts_handler(Object &&cb) { return m_cts_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_cts_handler(Object &&cb) { return m_cts_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_rxc_handler(Object &&cb) { return m_rxc_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_rxc_handler(Object &&cb) { return m_rxc_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_txc_handler(Object &&cb) { return m_txc_handler.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_txc_handler(Object &&cb) { return m_txc_handler.set_callback(std::forward<Object>(cb)); }
@ -143,6 +147,7 @@ public:
DECLARE_READ_LINE_MEMBER( dcd_r ) { return m_dcd; } DECLARE_READ_LINE_MEMBER( dcd_r ) { return m_dcd; }
DECLARE_READ_LINE_MEMBER( dsr_r ) { return m_dsr; } DECLARE_READ_LINE_MEMBER( dsr_r ) { return m_dsr; }
DECLARE_READ_LINE_MEMBER( ri_r ) { return m_ri; } DECLARE_READ_LINE_MEMBER( ri_r ) { return m_ri; }
DECLARE_READ_LINE_MEMBER( si_r ) { return m_si; }
DECLARE_READ_LINE_MEMBER( cts_r ) { return m_cts; } DECLARE_READ_LINE_MEMBER( cts_r ) { return m_cts; }
DECLARE_READ_LINE_MEMBER( rxc_r ) { return m_dce_rxc; } DECLARE_READ_LINE_MEMBER( rxc_r ) { return m_dce_rxc; }
DECLARE_READ_LINE_MEMBER( txc_r ) { return m_dce_txc; } DECLARE_READ_LINE_MEMBER( txc_r ) { return m_dce_txc; }
@ -158,6 +163,7 @@ protected:
int m_dcd; int m_dcd;
int m_dsr; int m_dsr;
int m_ri; int m_ri;
int m_si;
int m_cts; int m_cts;
int m_dce_rxc; int m_dce_rxc;
int m_dce_txc; int m_dce_txc;
@ -166,6 +172,7 @@ protected:
devcb_write_line m_dcd_handler; devcb_write_line m_dcd_handler;
devcb_write_line m_dsr_handler; devcb_write_line m_dsr_handler;
devcb_write_line m_ri_handler; devcb_write_line m_ri_handler;
devcb_write_line m_si_handler;
devcb_write_line m_cts_handler; devcb_write_line m_cts_handler;
devcb_write_line m_rxc_handler; devcb_write_line m_rxc_handler;
devcb_write_line m_txc_handler; devcb_write_line m_txc_handler;
@ -190,6 +197,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( output_dcd ) { m_port->m_dcd = state; m_port->m_dcd_handler(state); } DECLARE_WRITE_LINE_MEMBER( output_dcd ) { m_port->m_dcd = state; m_port->m_dcd_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_dsr ) { m_port->m_dsr = state; m_port->m_dsr_handler(state); } DECLARE_WRITE_LINE_MEMBER( output_dsr ) { m_port->m_dsr = state; m_port->m_dsr_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_ri ) { m_port->m_ri = state; m_port->m_ri_handler(state); } DECLARE_WRITE_LINE_MEMBER( output_ri ) { m_port->m_ri = state; m_port->m_ri_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_si ) { m_port->m_si = state; m_port->m_si_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_cts ) { m_port->m_cts = state; m_port->m_cts_handler(state); } DECLARE_WRITE_LINE_MEMBER( output_cts ) { m_port->m_cts = state; m_port->m_cts_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_rxc ) { m_port->m_dce_rxc = state; m_port->m_rxc_handler(state); } DECLARE_WRITE_LINE_MEMBER( output_rxc ) { m_port->m_dce_rxc = state; m_port->m_rxc_handler(state); }
DECLARE_WRITE_LINE_MEMBER( output_txc ) { m_port->m_dce_txc = state; m_port->m_txc_handler(state); } DECLARE_WRITE_LINE_MEMBER( output_txc ) { m_port->m_dce_txc = state; m_port->m_txc_handler(state); }

View File

@ -200,6 +200,10 @@ MACHINE_CONFIG_START(cit101_state::cit101)
MCFG_I8255_OUT_PORTA_CB(WRITE8(cit101_state, nvr_address_w)) MCFG_I8255_OUT_PORTA_CB(WRITE8(cit101_state, nvr_address_w))
MCFG_I8255_IN_PORTB_CB(READ8(cit101_state, nvr_data_r)) MCFG_I8255_IN_PORTB_CB(READ8(cit101_state, nvr_data_r))
MCFG_I8255_OUT_PORTB_CB(WRITE8(cit101_state, nvr_data_w)) MCFG_I8255_OUT_PORTB_CB(WRITE8(cit101_state, nvr_data_w))
MCFG_I8255_IN_PORTC_CB(DEVREADLINE("comm", rs232_port_device, cts_r)) MCFG_DEVCB_BIT(0)
MCFG_DEVCB_CHAIN_INPUT(DEVREADLINE("comm", rs232_port_device, dcd_r)) MCFG_DEVCB_BIT(1) // tied to DSR for loopback test
MCFG_DEVCB_CHAIN_INPUT(DEVREADLINE("comm", rs232_port_device, ri_r)) MCFG_DEVCB_BIT(2) // tied to CTS for loopback test
MCFG_DEVCB_CHAIN_INPUT(DEVREADLINE("comm", rs232_port_device, si_r)) MCFG_DEVCB_BIT(3) // tied to CTS for loopback test
MCFG_I8255_OUT_PORTC_CB(WRITE8(cit101_state, nvr_control_w)) MCFG_I8255_OUT_PORTC_CB(WRITE8(cit101_state, nvr_control_w))
MCFG_DEVICE_ADD("nvr", ER2055, 0) MCFG_DEVICE_ADD("nvr", ER2055, 0)

View File

@ -173,7 +173,7 @@ READ8_MEMBER(vt100_state::modem_r)
uint8_t ret = 0x0f; uint8_t ret = 0x0f;
ret |= m_rs232->cts_r() << 7; ret |= m_rs232->cts_r() << 7;
ret |= 1 /* m_rs232->spdi_r() */ << 6; ret |= m_rs232->si_r() << 6;
ret |= m_rs232->ri_r() << 5; ret |= m_rs232->ri_r() << 5;
ret |= m_rs232->dcd_r() << 4; ret |= m_rs232->dcd_r() << 4;