summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-09-23 11:34:14 -0400
committer AJR <ajrhacker@users.noreply.github.com>2017-09-23 11:36:32 -0400
commit3bb8d60ddddd4c17ca36018e489e2c7378a1ea0d (patch)
tree22f63da878634c51758048949e3c970d7d6ba887
parent1a0b4577a2c797d254262f6e538d5731935034c7 (diff)
rs232: Add 9615 baud rate actually used by a number of systems
-rw-r--r--src/devices/bus/rs232/rs232.h8
-rw-r--r--src/mame/drivers/codata.cpp8
-rw-r--r--src/mame/drivers/pm68k.cpp8
-rw-r--r--src/mame/drivers/sun1.cpp10
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))