summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2017-11-11 03:12:18 +1100
committer Robbbert <Robbbert@users.noreply.github.com>2017-11-11 03:12:18 +1100
commit8a3d22030123d9f3a6e8f14ac219a202404f2705 (patch)
treed36aab23b161d6bbcbf2ecda0cb200e518c43784
parentec2685c66c1553be6835f06fc8f093261fb0a2c6 (diff)
(nw) qtsbc : added devices ; dialog80 : added notes.
-rw-r--r--src/mame/drivers/ampex.cpp4
-rw-r--r--src/mame/drivers/qtsbc.cpp94
2 files changed, 59 insertions, 39 deletions
diff --git a/src/mame/drivers/ampex.cpp b/src/mame/drivers/ampex.cpp
index d4d2b27544b..7e38fdde5c0 100644
--- a/src/mame/drivers/ampex.cpp
+++ b/src/mame/drivers/ampex.cpp
@@ -6,6 +6,10 @@
Ampex Dialogue 80 terminal
+Chips: CRT-5037, COM8017, MK3880N (Z80)
+Crystals: 4.9152, 23.814
+Other: Beeper, 5x 10sw-dips.
+
************************************************************************************************************************************/
#include "emu.h"
diff --git a/src/mame/drivers/qtsbc.cpp b/src/mame/drivers/qtsbc.cpp
index b1e64cb99e7..0fa5f249c4e 100644
--- a/src/mame/drivers/qtsbc.cpp
+++ b/src/mame/drivers/qtsbc.cpp
@@ -2,63 +2,62 @@
// copyright-holders:Robbbert
/***************************************************************************
- QT Computer Systems SBC +2/4
+QT Computer Systems SBC +2/4
- 11/12/2009 Skeleton driver.
+2009-12-11 Skeleton driver.
- It expects a rom or similar at E377-up, so currently it crashes.
+Currently it crashes. There's a memory move routine at 50A4, and after
+a few turns it is told to move E603 bytes which corrupts everything.
+
+Chips: P8251, D8253C, MK3880N-4 (Z80). 3x 6-sw dips. Unmarked crystal.
+ Doesn't appear to be any ram?
+
+There's a blue jumper marked 4M and 2M. Assumed to be selectable CPU clock.
+Also assumed this is what the "2/4" in the name refers to.
****************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/terminal.h"
+#include "machine/i8251.h"
+#include "machine/pit8253.h"
+#include "bus/rs232/rs232.h"
-#define TERMINAL_TAG "terminal"
class qtsbc_state : public driver_device
{
public:
qtsbc_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_terminal(*this, TERMINAL_TAG),
- m_p_ram(*this, "p_ram")
- {
- }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_p_ram(*this, "ram")
+ { }
- required_device<cpu_device> m_maincpu;
- required_device<generic_terminal_device> m_terminal;
- DECLARE_READ8_MEMBER( qtsbc_06_r );
DECLARE_READ8_MEMBER( qtsbc_43_r );
- void kbd_put(u8 data);
- required_shared_ptr<uint8_t> m_p_ram;
- uint8_t m_term_data;
+
+private:
virtual void machine_reset() override;
+ required_device<cpu_device> m_maincpu;
+ required_shared_ptr<u8> m_p_ram;
};
-READ8_MEMBER( qtsbc_state::qtsbc_06_r )
-{
- uint8_t ret = m_term_data;
- m_term_data = 0;
- return ret;
-}
-
READ8_MEMBER( qtsbc_state::qtsbc_43_r )
{
- return 0;
+ return 0; // this controls where the new ram program gets built at. 0 = 0xE000.
}
-static ADDRESS_MAP_START(qtsbc_mem, AS_PROGRAM, 8, qtsbc_state)
+static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, qtsbc_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE( 0x0000, 0xffff ) AM_RAM AM_SHARE("p_ram") AM_REGION("maincpu", 0)
+ AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("ram") AM_REGION("maincpu", 0)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( qtsbc_io, AS_IO, 8, qtsbc_state)
+static ADDRESS_MAP_START( io_map, AS_IO, 8, qtsbc_state )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x06, 0x06) AM_READ(qtsbc_06_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8253_device, read, write)
+ AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
+ AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
AM_RANGE(0x43, 0x43) AM_READ(qtsbc_43_r)
ADDRESS_MAP_END
@@ -73,29 +72,46 @@ void qtsbc_state::machine_reset()
memcpy(m_p_ram, bios, 0x800);
}
-void qtsbc_state::kbd_put(u8 data)
-{
- m_term_data = data;
-}
+static DEVICE_INPUT_DEFAULTS_START( terminal )
+ DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 )
+ DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 )
+ DEVICE_INPUT_DEFAULTS( "RS232_STARTBITS", 0xff, RS232_STARTBITS_1 )
+ DEVICE_INPUT_DEFAULTS( "RS232_DATABITS", 0xff, RS232_DATABITS_7 )
+ DEVICE_INPUT_DEFAULTS( "RS232_PARITY", 0xff, RS232_PARITY_EVEN )
+ DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
+DEVICE_INPUT_DEFAULTS_END
static MACHINE_CONFIG_START( qtsbc )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) // Mostek MK3880
- MCFG_CPU_PROGRAM_MAP(qtsbc_mem)
- MCFG_CPU_IO_MAP(qtsbc_io)
+ MCFG_CPU_PROGRAM_MAP(mem_map)
+ MCFG_CPU_IO_MAP(io_map)
/* video hardware */
- MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(qtsbc_state, kbd_put))
+ MCFG_DEVICE_ADD("pit", PIT8253, 0) // U9
+ MCFG_PIT8253_CLK0(XTAL_4MHz / 2) /* Timer 0: baud rate gen for 8251 */
+ MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("uart", i8251_device, write_txc))
+ MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", i8251_device, write_rxc))
+
+ MCFG_DEVICE_ADD("uart", I8251, 0) // U8
+ MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
+ MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
+ MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
+
+ MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "terminal")
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxd))
+ MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart", i8251_device, write_dsr))
+ MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart", i8251_device, write_cts))
+ MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal) // must be exactly here
MACHINE_CONFIG_END
/* ROM definition */
ROM_START( qtsbc )
ROM_REGION( 0x10800, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "qtsbc.bin", 0x10000, 0x0800, CRC(823fd942) SHA1(64c4f74dd069ae4d43d301f5e279185f32a1efa0))
+ ROM_LOAD( "qtsbc.u23", 0x10000, 0x0800, CRC(823fd942) SHA1(64c4f74dd069ae4d43d301f5e279185f32a1efa0))
ROM_END
/* Driver */
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
-COMP( 19??, qtsbc, 0, 0, qtsbc, qtsbc, qtsbc_state, 0, "Computer Systems Inc.", "QT SBC +2/4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 19??, qtsbc, 0, 0, qtsbc, qtsbc, qtsbc_state, 0, "QT Computer Systems Inc.", "SBC + 2/4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )