From 52500ae864f96360bb76011c251cf1e6a5d2b234 Mon Sep 17 00:00:00 2001 From: Nigel Barnes Date: Fri, 9 Aug 2024 18:54:05 +0100 Subject: New working systems ------------------- MCG-85 [Nigel Barnes] --- src/mame/mame.lst | 3 ++ src/mame/trainer/mcg85.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 src/mame/trainer/mcg85.cpp diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 40dcc085313..35ecd106f48 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45053,6 +45053,9 @@ emma2 // 1979 L.J.Technical Systems @source:trainer/instruct.cpp instruct // +@source:trainer/mcg85.cpp +mcg85 // + @source:trainer/mk14.cpp mk14 // mk14vdu // diff --git a/src/mame/trainer/mcg85.cpp b/src/mame/trainer/mcg85.cpp new file mode 100644 index 00000000000..f3273101249 --- /dev/null +++ b/src/mame/trainer/mcg85.cpp @@ -0,0 +1,85 @@ +// license:BSD-3-Clause +// copyright-holders:Nigel Barnes +/****************************************************************************** + + Atlantis Computers MCG-85 + + After RESET press SPACE on terminal for Expeditor to detect baud rate (50-19.2K). + +******************************************************************************/ + +#include "emu.h" + +#include "bus/rs232/rs232.h" +#include "cpu/i8085/i8085.h" +#include "machine/i8155.h" + + +namespace { + +class mcg85_state : public driver_device +{ +public: + mcg85_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + { } + + void mcg85(machine_config &config); + +private: + required_device m_maincpu; + + void mem_map(address_map &map); + void io_map(address_map &map); +}; + + +void mcg85_state::mem_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x1fff).ram(); // optional RAM + map(0x2000, 0x20ff).mirror(0x700).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); +} + +void mcg85_state::io_map(address_map &map) +{ + map(0x20, 0x27).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); +} + + +static DEVICE_INPUT_DEFAULTS_START( terminal ) + DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 ) + DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 ) + 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 + + +void mcg85_state::mcg85(machine_config &config) +{ + I8085A(config, m_maincpu, 6.144_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &mcg85_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &mcg85_state::io_map); + m_maincpu->in_sid_func().set("rs232", FUNC(rs232_port_device::rxd_r)); + m_maincpu->out_sod_func().set("rs232", FUNC(rs232_port_device::write_txd)); + + I8155(config, "i8155", 6.144_MHz_XTAL / 2); + + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); + rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); +} + + +ROM_START( mcg85 ) + ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00) + ROM_SYSTEM_BIOS( 0, "24", "Expeditor Monitor V2.4" ) + ROMX_LOAD("expdr_monitor_2.4.bin", 0x0000, 0x0800, CRC(54a75a26) SHA1(f19294599e8b89a7036ffd1b7a97026d71837c5a), ROM_BIOS(0)) +ROM_END + +} // anonymous namespace + + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, mcg85, 0, 0, mcg85, 0, mcg85_state, empty_init, "Atlantis Computers", "MCG-85", MACHINE_NO_SOUND_HW ) -- cgit v1.2.3