From 8a3d22030123d9f3a6e8f14ac219a202404f2705 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sat, 11 Nov 2017 03:12:18 +1100 Subject: (nw) qtsbc : added devices ; dialog80 : added notes. --- src/mame/drivers/ampex.cpp | 4 ++ src/mame/drivers/qtsbc.cpp | 94 +++++++++++++++++++++++++++------------------- 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 m_maincpu; - required_device m_terminal; - DECLARE_READ8_MEMBER( qtsbc_06_r ); DECLARE_READ8_MEMBER( qtsbc_43_r ); - void kbd_put(u8 data); - required_shared_ptr m_p_ram; - uint8_t m_term_data; + +private: virtual void machine_reset() override; + required_device m_maincpu; + required_shared_ptr 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 ) -- cgit v1.2.3