rs232: Add 9615 baud rate actually used by a number of systems

This commit is contained in:
AJR 2017-09-23 11:34:14 -04:00
parent 1a0b4577a2
commit 3bb8d60ddd
4 changed files with 29 additions and 5 deletions

View File

@ -40,6 +40,10 @@
#define RS232_BAUD_57600 (0x0c)
#define RS232_BAUD_115200 (0x0d)
// Some systems may not include a dedicated XTAL capable of producing standard baud rates for the UART.
// These slightly deviant rates, which might lie within tolerance limits of actual hardware, have been found in use.
#define RS232_BAUD_9615 (0x0e)
#define MCFG_RS232_BAUD(_tag, _default_baud, _description, _class, _write_line) \
PORT_START(_tag) \
PORT_CONFNAME(0xff, _default_baud, _description) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, _class, _write_line) \
@ -51,6 +55,7 @@
PORT_CONFSETTING( RS232_BAUD_2400, "2400") \
PORT_CONFSETTING( RS232_BAUD_4800, "4800") \
PORT_CONFSETTING( RS232_BAUD_9600, "9600") \
PORT_CONFSETTING( RS232_BAUD_9615, "9615") \
PORT_CONFSETTING( RS232_BAUD_14400, "14400") \
PORT_CONFSETTING( RS232_BAUD_19200, "19200") \
PORT_CONFSETTING( RS232_BAUD_28800, "28800") \
@ -199,7 +204,8 @@ protected:
28800,
38400,
57600,
115200
115200,
9615
};
return values[baud];

View File

@ -60,6 +60,11 @@ void codata_state::machine_reset()
m_maincpu->reset();
}
static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS_END
static MACHINE_CONFIG_START( codata )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",M68000, XTAL_16MHz / 2)
@ -72,7 +77,7 @@ static MACHINE_CONFIG_START( codata )
MCFG_Z80SIO_OUT_TXDB_CB(DEVWRITELINE("rs423b", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", M68K_IRQ_5))
MCFG_DEVICE_ADD("timer", AM9513A, 3993600) // actually XTAL_16MHz / 4, which produces 9615 baud when divided
MCFG_DEVICE_ADD("timer", AM9513A, XTAL_16MHz / 4)
MCFG_AM9513_OUT1_CALLBACK(NOOP) // Timer 1 = "Abort/Reset" (watchdog)
MCFG_AM9513_OUT2_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_6)) // Timer 2
MCFG_AM9513_OUT3_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_7)) // Refresh
@ -85,6 +90,7 @@ static MACHINE_CONFIG_START( codata )
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart", upd7201_new_device, rxa_w))
MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart", upd7201_new_device, dcda_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart", upd7201_new_device, ctsa_w))
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_RS232_PORT_ADD("rs423b", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart", upd7201_new_device, rxb_w))

View File

@ -55,6 +55,11 @@ void pm68k_state::machine_reset()
m_maincpu->reset();
}
static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS_END
static MACHINE_CONFIG_START( pm68k )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, 8000000)
@ -68,7 +73,7 @@ static MACHINE_CONFIG_START( pm68k )
MCFG_Z80SIO_OUT_DTRB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_dtr))
MCFG_Z80SIO_OUT_RTSB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_rts))
MCFG_DEVICE_ADD("stc", AM9513, 3993600)
MCFG_DEVICE_ADD("stc", AM9513, 4000000)
MCFG_AM9513_OUT4_CALLBACK(DEVWRITELINE("mpsc", i8274_new_device, rxca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("mpsc", i8274_new_device, txca_w))
MCFG_AM9513_OUT5_CALLBACK(DEVWRITELINE("mpsc", i8274_new_device, rxcb_w))
@ -78,6 +83,7 @@ static MACHINE_CONFIG_START( pm68k )
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("mpsc", i8274_new_device, rxa_w))
MCFG_RS232_DSR_HANDLER(DEVWRITELINE("mpsc", i8274_new_device, dcda_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("mpsc", i8274_new_device, ctsa_w))
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("mpsc", i8274_new_device, rxb_w))

View File

@ -102,16 +102,21 @@ void sun1_state::machine_reset()
}
static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9615 )
DEVICE_INPUT_DEFAULTS_END
static MACHINE_CONFIG_START( sun1 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
MCFG_CPU_PROGRAM_MAP(sun1_mem)
MCFG_DEVICE_ADD("timer", AM9513, 3993600) // actually XTAL_10MHz / 2
MCFG_DEVICE_ADD("timer", AM9513, 4000000) // supposedly XTAL_10MHz / 2, but that produces blatantly incorrect output rates
MCFG_AM9513_FOUT_CALLBACK(DEVWRITELINE("timer", am9513_device, gate1_w))
MCFG_AM9513_OUT1_CALLBACK(NOOP) // Watchdog; generates BERR/Reset
MCFG_AM9513_OUT2_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_6)) // User timer
MCFG_AM9513_OUT3_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_7)) // Refresh timer
MCFG_AM9513_OUT3_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_7)) // Refresh timer (2 ms)
MCFG_AM9513_OUT4_CALLBACK(DEVWRITELINE("iouart", upd7201_new_device, rxca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("iouart", upd7201_new_device, txca_w))
MCFG_AM9513_OUT5_CALLBACK(DEVWRITELINE("iouart", upd7201_new_device, rxcb_w))
@ -129,6 +134,7 @@ static MACHINE_CONFIG_START( sun1 )
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, rxa_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, ctsa_w))
MCFG_RS232_DCD_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, dcda_w))
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("iouart", upd7201_new_device, rxb_w))