summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2021-12-30 23:41:05 -0500
committer AJR <ajrhacker@users.noreply.github.com>2021-12-30 23:41:05 -0500
commitf98eb5a9f0eec892aff13d8460a41cffd205dce3 (patch)
treeb3f9d03487c0e0bb162f09af29de176bfc4244ff
parent9a40b302cc1fb7ee4bf391c3375b1fbf2ccd3837 (diff)
New machines marked as NOT_WORKING
---------------------------------- ADDS 2020 [Bitsavers]
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/adds2020.cpp124
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
4 files changed, 129 insertions, 0 deletions
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<mcs51_cpu_device> m_maincpu;
+ required_device<scn_pci_device> m_epci;
+ required_device<scn2674_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