From 8ccfa3762caaa99292391a8523f6ea53788a3f47 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 15 Jan 2021 17:00:19 +0700 Subject: New machines marked as NOT_WORKING --- NEC EWS4800/310 [Plamen Mihaylov, Patrick Mackinlay] --- scripts/target/mame/mess.lua | 1 + src/mame/drivers/ews4800.cpp | 184 +++++++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 + 3 files changed, 188 insertions(+) create mode 100644 src/mame/drivers/ews4800.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 0669f3c1dac..51161745726 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3021,6 +3021,7 @@ files { createMESSProjects(_target, _subtarget, "nec") files { MAME_DIR .. "src/mame/drivers/apc.cpp", + MAME_DIR .. "src/mame/drivers/ews4800.cpp", MAME_DIR .. "src/mame/drivers/hh_ucom4.cpp", MAME_DIR .. "src/mame/drivers/pce.cpp", MAME_DIR .. "src/mame/includes/pce.h", diff --git a/src/mame/drivers/ews4800.cpp b/src/mame/drivers/ews4800.cpp new file mode 100644 index 00000000000..4a5cf010fee --- /dev/null +++ b/src/mame/drivers/ews4800.cpp @@ -0,0 +1,184 @@ +// license:BSD-3-Clause +// copyright-holders:Patrick Mackinlay + +/* + * NEC EWS4800 systems. + * + * Sources: + * - http://www.jira-net.or.jp/vm/data/1993090101/1993090101knr/4-1-14.pdf + * - http://wiki.netbsd.org/ports/ews4800mips/ + * + * TODO: + * - everything + */ + +#include "emu.h" + +// processors and memory +#include "cpu/mips/r4000.h" +#include "machine/ram.h" + +// i/o devices +#include "machine/z80scc.h" +#include "machine/am79c90.h" +#include "machine/timekpr.h" +#include "machine/ncr5390.h" + +// busses and connectors +#include "machine/nscsi_bus.h" +#include "bus/nscsi/cd.h" +#include "bus/nscsi/hd.h" +#include "bus/rs232/rs232.h" + +#include "debugger.h" + +#define LOG_GENERAL (1U << 0) + +#define VERBOSE 0 +#include "logmacro.h" + +namespace { + +class ews4800_state : public driver_device +{ +public: + ews4800_state(machine_config const &mconfig, device_type type, char const *tag) + : driver_device(mconfig, type, tag) + , m_cpu(*this, "cpu") + , m_ram(*this, "ram") + , m_rtc(*this, "rtc") + , m_scc(*this, "scc%u", 0U) + , m_scsibus(*this, "scsi") + , m_scsi(*this, "scsi:7:ncr53c96") + , m_net(*this, "net") + { + } + + // machine config + void ews4800_310(machine_config &config); + + void init(); + +protected: + // driver_device overrides + virtual void machine_start() override; + virtual void machine_reset() override; + + // address maps + void cpu_map(address_map &map); + + u16 lance_r(offs_t offset, u16 mem_mask = 0xffff); + void lance_w(offs_t offset, u16 data, u16 mem_mask = 0xffff); + +private: + // processors and memory + required_device m_cpu; + required_device m_ram; + + // i/o devices + required_device m_rtc; + required_device_array m_scc; + required_device m_scsibus; + required_device m_scsi; + required_device m_net; +}; + +void ews4800_state::machine_start() +{ +} + +void ews4800_state::machine_reset() +{ +} + +void ews4800_state::init() +{ + // map the configured ram + m_cpu->space(0).install_ram(0x00000000, m_ram->mask(), m_ram->pointer()); +} + + +void ews4800_state::cpu_map(address_map &map) +{ + map(0x1fc00000, 0x1fcfffff).rom().region("eprom", 0); +} + +u16 ews4800_state::lance_r(offs_t offset, u16 mem_mask) +{ + return 0; +} + +void ews4800_state::lance_w(offs_t offset, u16 data, u16 mem_mask) +{ +} + +static void ews4800_scsi_devices(device_slot_interface &device) +{ + device.option_add("harddisk", NSCSI_HARDDISK); + device.option_add("cdrom", NSCSI_CDROM); +} + +/* + * irq function + * 1 fdd, printer + * 2 ethernet, scsi + * 3 vme? + * 4 serial + * 5 clock + */ +void ews4800_state::ews4800_310(machine_config &config) +{ + R4000(config, m_cpu, 40_MHz_XTAL); + m_cpu->set_addrmap(AS_PROGRAM, &ews4800_state::cpu_map); + + // 8 SIMM slots + RAM(config, m_ram); + m_ram->set_default_size("16M"); + m_ram->set_extra_options("80M,144M"); + m_ram->set_default_value(0); + + // scsi bus and devices + NSCSI_BUS(config, m_scsibus); + NSCSI_CONNECTOR(config, "scsi:0", ews4800_scsi_devices, "harddisk"); + NSCSI_CONNECTOR(config, "scsi:1", ews4800_scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsi:2", ews4800_scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsi:3", ews4800_scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsi:4", ews4800_scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsi:5", ews4800_scsi_devices, nullptr); + NSCSI_CONNECTOR(config, "scsi:6", ews4800_scsi_devices, nullptr); + + // scsi host adapter (NCR53C96) + NSCSI_CONNECTOR(config, "scsi:7").option_set("ncr53c96", NCR53C94).clock(24_MHz_XTAL).machine_config( + [this](device_t *device) + { + ncr53c94_device &adapter = downcast(*device); + + adapter.set_busmd(ncr53c94_device::busmd_t::BUSMD_1); + //adapter.irq_handler_cb() + //adapter.drq_handler_cb() + }); + + // ethernet + AM7990(config, m_net); + //m_net->intr_out() + m_net->dma_in().set(FUNC(ews4800_state::lance_r)); + m_net->dma_out().set(FUNC(ews4800_state::lance_w)); + + // mouse on channel A, keyboard on channel B? + SCC85230(config, m_scc[0], 4.915200_MHz_XTAL); // TODO: clock unconfirmed + SCC85230(config, m_scc[1], 4.915200_MHz_XTAL); // TODO: clock unconfirmed + + M48T02(config, m_rtc); +} + +ROM_START(ews4800_310) + ROM_REGION64_BE(0x100000, "eprom", 0) + ROM_SYSTEM_BIOS(0, "ews4800_310", "ews4800_310") + ROMX_LOAD("g8ppg__0100.a01f2", 0x00000, 0x80000, CRC(a1e25ce7) SHA1(cfc5e2b203bf6018b04980deeee43afa202dea7c), ROM_BIOS(0)) + ROMX_LOAD("g8ppg__0200.a01f", 0x80000, 0x80000, CRC(d610f20d) SHA1(f8476bf91111b8023ff7984e5e9a8575e48ed5df), ROM_BIOS(0)) +ROM_END + +} // anonymous namespace + +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP(1993, ews4800_310, 0, 0, ews4800_310, 0, ews4800_state, init, "NEC", "EWS4800/310", MACHINE_IS_SKELETON) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f5aefdef7b8..2d0757f993c 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -13353,6 +13353,9 @@ eva24 // @source:evmbug.cpp evmbug // +@source:ews4800.cpp +ews4800_310 // NEC EWS4800/310 + @source:excali64.cpp excali64 // -- cgit v1.2.3