From f98eb5a9f0eec892aff13d8460a41cffd205dce3 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 30 Dec 2021 23:41:05 -0500 Subject: New machines marked as NOT_WORKING ---------------------------------- ADDS 2020 [Bitsavers] --- scripts/target/mame/mess.lua | 1 + src/mame/drivers/adds2020.cpp | 124 ++++++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 + src/mame/mess.flt | 1 + 4 files changed, 129 insertions(+) create mode 100644 src/mame/drivers/adds2020.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 66e11808b98..ed67c12d482 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -4514,6 +4514,7 @@ files { MAME_DIR .. "src/mame/drivers/acd.cpp", MAME_DIR .. "src/mame/drivers/aceex.cpp", MAME_DIR .. "src/mame/drivers/adacp150.cpp", + MAME_DIR .. "src/mame/drivers/adds2020.cpp", MAME_DIR .. "src/mame/drivers/aid80f.cpp", MAME_DIR .. "src/mame/drivers/airbase99.cpp", MAME_DIR .. "src/mame/drivers/alcat7100.cpp", diff --git a/src/mame/drivers/adds2020.cpp b/src/mame/drivers/adds2020.cpp new file mode 100644 index 00000000000..5c9ac194896 --- /dev/null +++ b/src/mame/drivers/adds2020.cpp @@ -0,0 +1,124 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/*********************************************************************************************************************************** + + Skeleton driver for ADDS 2020 terminal. + +***********************************************************************************************************************************/ + +#include "emu.h" +//#include "bus/rs232/rs232.h" +#include "cpu/mcs51/mcs51.h" +#include "machine/input_merger.h" +#include "machine/nvram.h" +#include "machine/scn_pci.h" +#include "video/scn2674.h" +#include "screen.h" + +namespace { + +class adds2020_state : public driver_device +{ +public: + adds2020_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_epci(*this, "epci") + , m_avdc(*this, "avdc") + { + } + + void adds2020(machine_config &config); + +private: + SCN2674_DRAW_CHARACTER_MEMBER(draw_character); + + void unknown_0000_w(u8 data); + void unknown_9800_w(offs_t offset, u8 data); + + void prog_map(address_map &map); + void ext_map(address_map &map); + void char_map(address_map &map); + + required_device m_maincpu; + required_device m_epci; + required_device m_avdc; +}; + +SCN2674_DRAW_CHARACTER_MEMBER(adds2020_state::draw_character) +{ +} + +void adds2020_state::unknown_0000_w(u8 data) +{ + logerror("%s: Writing %02Xh to 0000h\n", machine().describe_context(), data); +} + +void adds2020_state::unknown_9800_w(offs_t offset, u8 data) +{ + logerror("%s: Writing %02Xh to %04Xh\n", machine().describe_context(), data, offset + 0x9800); +} + +void adds2020_state::prog_map(address_map &map) +{ + map(0x0000, 0xbfff).rom().region("firmware", 0); +} + +void adds2020_state::ext_map(address_map &map) +{ + map(0x0000, 0x0000).w(FUNC(adds2020_state::unknown_0000_w)); + map(0x4000, 0x5fff).ram().share("nvram"); + map(0x6000, 0x7fff).ram(); + map(0x8000, 0x8000).select(6).lr8([this](offs_t offset) { return m_epci->read(offset >> 1); }, "epci_r"); + map(0x8001, 0x8001).select(6).lw8([this](offs_t offset, u8 data) { m_epci->write(offset >> 1, data); }, "epci_w"); + map(0x8800, 0x8807).rw(m_avdc, FUNC(scn2674_device::read), FUNC(scn2674_device::write)); + map(0x9800, 0x9801).w(FUNC(adds2020_state::unknown_9800_w)); +} + +void adds2020_state::char_map(address_map &map) +{ + map(0x0000, 0x1fff).nopr(); // TODO +} + +static INPUT_PORTS_START(adds2020) +INPUT_PORTS_END + +void adds2020_state::adds2020(machine_config &config) +{ + I8031(config, m_maincpu, 10.92_MHz_XTAL); // P8031AH + m_maincpu->set_addrmap(AS_PROGRAM, &adds2020_state::prog_map); + m_maincpu->set_addrmap(AS_IO, &adds2020_state::ext_map); + + INPUT_MERGER_ANY_HIGH(config, "mainint").output_handler().set_inputline(m_maincpu, MCS51_INT1_LINE); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); // NEC D4464C-15L + 3.5V battery (only first 3K is actually saved) + + SCN2661B(config, m_epci, 4.9152_MHz_XTAL); + m_epci->rxrdy_handler().set("mainint", FUNC(input_merger_device::in_w<0>)); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + //screen.set_raw(24_MHz_XTAL, 960, 0, 800, 361, 0, 338); + screen.set_raw(36_MHz_XTAL, 1440, 0, 1188, 361, 0, 338); + screen.set_screen_update(m_avdc, FUNC(scn2674_device::screen_update)); + + SCN2674(config, m_avdc, 36_MHz_XTAL / 9); // SCN2674B + m_avdc->set_character_width(9); // cell width guessed (10 in 80-column mode?) + m_avdc->set_screen("screen"); + m_avdc->set_addrmap(0, &adds2020_state::char_map); + m_avdc->set_display_callback(FUNC(adds2020_state::draw_character)); + m_avdc->breq_callback().set_inputline(m_maincpu, MCS51_T0_LINE); + m_avdc->intr_callback().set("mainint", FUNC(input_merger_device::in_w<1>)); + + // TODO: speaker +} + +ROM_START(adds2020) + ROM_REGION(0xc000, "firmware", ROMREGION_ERASEFF) + ROM_LOAD("2020_v2.5_ua5.bin", 0x0000, 0x4000, CRC(2d9e3397) SHA1(9aec8fdfe064618c20b4ba85dd8b71a44e29bbd3)) + ROM_LOAD("2020_v2.5_ua6.bin", 0x4000, 0x2000, CRC(f4cbda6f) SHA1(efe03a15d7eab4038de1e8118c6891d2078166fd)) + ROM_LOAD("2020_v2.5_ua8.bin", 0x8000, 0x4000, CRC(4a8ac850) SHA1(ce02a0e904ed07930a891360f1e5779fbee8eaac)) +ROM_END + +} // anonymous namespace + +COMP(1986, adds2020, 0, 0, adds2020, adds2020, adds2020_state, empty_init, "Applied Digital Data Systems", "ADDS 2020", MACHINE_IS_SKELETON) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a688742eebf..9a1ed06f562 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -950,6 +950,9 @@ adacp150p // @source:adam.cpp adam // Coleco Adam +@source:adds2020.cpp +adds2020 // + @source:adm11.cpp adm12 // diff --git a/src/mame/mess.flt b/src/mame/mess.flt index c59b5e517bf..98534c5f647 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -26,6 +26,7 @@ actions_atj2279b.cpp acvirus.cpp adacp150.cpp adam.cpp +adds2020.cpp adm11.cpp adm23.cpp adm31.cpp -- cgit v1.2.3