diff options
author | 2017-09-23 11:34:14 -0400 | |
---|---|---|
committer | 2017-09-23 11:36:32 -0400 | |
commit | 3bb8d60ddddd4c17ca36018e489e2c7378a1ea0d (patch) | |
tree | 22f63da878634c51758048949e3c970d7d6ba887 | |
parent | 1a0b4577a2c797d254262f6e538d5731935034c7 (diff) |
rs232: Add 9615 baud rate actually used by a number of systems
-rw-r--r-- | src/devices/bus/rs232/rs232.h | 8 | ||||
-rw-r--r-- | src/mame/drivers/codata.cpp | 8 | ||||
-rw-r--r-- | src/mame/drivers/pm68k.cpp | 8 | ||||
-rw-r--r-- | src/mame/drivers/sun1.cpp | 10 |
4 files changed, 29 insertions, 5 deletions
diff --git a/src/devices/bus/rs232/rs232.h b/src/devices/bus/rs232/rs232.h index b062d35ff5b..5621609f76f 100644 --- a/src/devices/bus/rs232/rs232.h +++ b/src/devices/bus/rs232/rs232.h @@ -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]; diff --git a/src/mame/drivers/codata.cpp b/src/mame/drivers/codata.cpp index da13cfd1723..934a6db514d 100644 --- a/src/mame/drivers/codata.cpp +++ b/src/mame/drivers/codata.cpp @@ -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)) diff --git a/src/mame/drivers/pm68k.cpp b/src/mame/drivers/pm68k.cpp index be471162a26..dbea0ee4bba 100644 --- a/src/mame/drivers/pm68k.cpp +++ b/src/mame/drivers/pm68k.cpp @@ -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)) diff --git a/src/mame/drivers/sun1.cpp b/src/mame/drivers/sun1.cpp index a43554c4cc0..5d6a108b95f 100644 --- a/src/mame/drivers/sun1.cpp +++ b/src/mame/drivers/sun1.cpp @@ -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)) |