From 91f886d371caecbc8dbbdf697bf7dcdb4bf0e1b9 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Wed, 25 May 2022 19:18:29 +0700 Subject: labtam: rename 3232 device --- scripts/src/bus.lua | 4 +- src/devices/bus/multibus/labtam3232.cpp | 116 ------------------------------- src/devices/bus/multibus/labtam3232.h | 52 -------------- src/devices/bus/multibus/labtam_3232.cpp | 116 +++++++++++++++++++++++++++++++ src/devices/bus/multibus/labtam_3232.h | 51 ++++++++++++++ 5 files changed, 169 insertions(+), 170 deletions(-) delete mode 100644 src/devices/bus/multibus/labtam3232.cpp delete mode 100644 src/devices/bus/multibus/labtam3232.h create mode 100644 src/devices/bus/multibus/labtam_3232.cpp create mode 100644 src/devices/bus/multibus/labtam_3232.h diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 4d65e662d14..9dd4e26d168 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -4722,8 +4722,8 @@ if (BUSES["MULTIBUS"]~=null) then MAME_DIR .. "src/devices/bus/multibus/cpuap.h", MAME_DIR .. "src/devices/bus/multibus/serad.cpp", MAME_DIR .. "src/devices/bus/multibus/serad.h", - MAME_DIR .. "src/devices/bus/multibus/labtam3232.cpp", - MAME_DIR .. "src/devices/bus/multibus/labtam3232.h", + MAME_DIR .. "src/devices/bus/multibus/labtam_3232.cpp", + MAME_DIR .. "src/devices/bus/multibus/labtam_3232.h", } end diff --git a/src/devices/bus/multibus/labtam3232.cpp b/src/devices/bus/multibus/labtam3232.cpp deleted file mode 100644 index 3dcb79640f4..00000000000 --- a/src/devices/bus/multibus/labtam3232.cpp +++ /dev/null @@ -1,116 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Patrick Mackinlay - -/* - * Labtam 3000 3232 (V32?) processor board. - * - * Sources: - * - http://www.cpu-ns32k.net/Multi.html - * - https://arvutimuuseum.ut.ee/index.php?m=eksponaadid&id=223 - * - * TODO: - * - skeleton only - */ - -#include "emu.h" -#include "labtam3232.h" - -#define VERBOSE 0 -#include "logmacro.h" - -DEFINE_DEVICE_TYPE(LABTAM3232, labtam3232_device, "labtam3232", "Labtam 3232") - -labtam3232_device::labtam3232_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) - : device_t(mconfig, LABTAM3232, tag, owner, clock) - , device_multibus_interface(mconfig, *this) - , m_cpu(*this, "cpu") - , m_fpu(*this, "fpu") - , m_mmu(*this, "mmu") - , m_icu(*this, "icu") - , m_boot(*this, "boot") - , m_installed(false) -{ -} - -ROM_START(labtam3232) - ROM_REGION32_LE(0x10000, "eprom", 0) - ROM_LOAD32_BYTE("sash_0__g87.bin", 0x0000, 0x4000, CRC(31132de0) SHA1(39f7c1f146346a53c253284ba3437b5f9217f439)) - ROM_LOAD32_BYTE("sash_1__g87.bin", 0x0001, 0x4000, CRC(09b4e8ba) SHA1(b722386fc6e4a634472d5a0501eb41e12d89f7dc)) - ROM_LOAD32_BYTE("sash_2__g87.bin", 0x0002, 0x4000, CRC(d76457b0) SHA1(efd18e0347b0181a0d2aa80098bd4fdb60a82788)) - ROM_LOAD32_BYTE("sash_3__g87.bin", 0x0003, 0x4000, CRC(7817d1b8) SHA1(032df47e1ba34653b5837f68eefa3ecaac17a483)) -ROM_END - -static INPUT_PORTS_START(labtam3232) -INPUT_PORTS_END - -const tiny_rom_entry *labtam3232_device::device_rom_region() const -{ - return ROM_NAME(labtam3232); -} - -ioport_constructor labtam3232_device::device_input_ports() const -{ - return INPUT_PORTS_NAME(labtam3232); -} - -void labtam3232_device::device_start() -{ -} - -void labtam3232_device::device_reset() -{ - if (!m_installed) - { - // TODO: what's exposed to the Multibus? -#if 0 - m_bus->int_callback<0>().set(m_icu, FUNC(ns32202_device::ir_w<0>)); - m_bus->int_callback<1>().set(m_icu, FUNC(ns32202_device::ir_w<1>)); - m_bus->int_callback<2>().set(m_icu, FUNC(ns32202_device::ir_w<3>)); - m_bus->int_callback<3>().set(m_icu, FUNC(ns32202_device::ir_w<4>)); - m_bus->int_callback<4>().set(m_icu, FUNC(ns32202_device::ir_w<6>)); - m_bus->int_callback<5>().set(m_icu, FUNC(ns32202_device::ir_w<7>)); - m_bus->int_callback<6>().set(m_icu, FUNC(ns32202_device::ir_w<8>)); - m_bus->int_callback<7>().set([this](int state) { m_s8->read() ? m_cpu->set_input_line(INPUT_LINE_NMI, !state) : m_icu->ir_w<11>(state); }); -#endif - m_installed = true; - } - - m_boot.select(0); -} - -void labtam3232_device::device_add_mconfig(machine_config &config) -{ - NS32032(config, m_cpu, 20_MHz_XTAL / 2); - m_cpu->set_addrmap(0, &labtam3232_device::cpu_map<0>); - m_cpu->set_addrmap(4, &labtam3232_device::cpu_map<4>); - - NS32081(config, m_fpu, 20_MHz_XTAL / 2); - m_cpu->set_fpu(m_fpu); - - NS32082(config, m_mmu, 20_MHz_XTAL / 2); - m_cpu->set_mmu(m_mmu); - - NS32202(config, m_icu, 20_MHz_XTAL / 2); - m_icu->out_int().set_inputline(m_cpu, INPUT_LINE_IRQ0).invert(); -} - -template void labtam3232_device::cpu_map(address_map &map) -{ - if (ST == 0) - { - map(0x00000000, 0x007fffff).view(m_boot); - - m_boot[0](0x00000000, 0x0000ffff).rom().region("eprom", 0); - m_boot[1](0x00000000, 0x001fffff).ram(); // 2M on-board RAM with parity (up to 8M possible?) - - // 0xd00000 - maybe multibus memory or i/o? - map(0x00d00413, 0x00d00413).lr8([]() { return 0x18; }, "unknown_r8"); - map(0x00d00500, 0x00d00503).lr16([]() { return 0x0003; }, "unknown_r16"); - - map(0x00f80000, 0x00f8ffff).rom().region("eprom", 0); - - map(0x00fff914, 0x00fff914).lw8([this](u8 data) { m_boot.select(1); }, "men_w"); // ram enable? - } - - map(0xfffe00, 0xfffeff).m(m_icu, FUNC(ns32202_device::map)).umask32(0x000000ff); -} diff --git a/src/devices/bus/multibus/labtam3232.h b/src/devices/bus/multibus/labtam3232.h deleted file mode 100644 index 5e1fa556af5..00000000000 --- a/src/devices/bus/multibus/labtam3232.h +++ /dev/null @@ -1,52 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Patrick Mackinlay - -#ifndef MAME_BUS_MULTIBUS_LABTAM3232_H -#define MAME_BUS_MULTIBUS_LABTAM3232_H - -#pragma once - -#include "multibus.h" - -#include "cpu/ns32000/ns32000.h" -#include "machine/ns32081.h" -#include "machine/ns32082.h" -#include "machine/ns32202.h" - - -class labtam3232_device - : public device_t - , public device_multibus_interface -{ -public: - labtam3232_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); - -protected: - // device_t overrides - virtual const tiny_rom_entry *device_rom_region() const override; - virtual void device_add_mconfig(machine_config &config) override; - virtual ioport_constructor device_input_ports() const override; - virtual void device_start() override; - virtual void device_reset() override; - -private: - template void cpu_map(address_map &map); - - //void bus_mem_w(offs_t offset, u16 data, u16 mem_mask) { m_bus->space(AS_PROGRAM).write_word(0xe00000 | offset << 1, data, mem_mask); } - //u16 bus_mem_r(offs_t offset, u16 mem_mask) { return m_bus->space(AS_PROGRAM).read_word(0xe00000 | offset << 1, mem_mask); } - //void bus_pio_w(offs_t offset, u16 data, u16 mem_mask) { m_bus->space(AS_IO).write_word(offset << 1, data, mem_mask); } - //u16 bus_pio_r(offs_t offset, u16 mem_mask) { return m_bus->space(AS_IO).read_word(offset << 1, mem_mask); } - - required_device m_cpu; - required_device m_fpu; - required_device m_mmu; - required_device m_icu; - - memory_view m_boot; - - bool m_installed; -}; - -DECLARE_DEVICE_TYPE(LABTAM3232, labtam3232_device) - -#endif // MAME_BUS_MULTIBUS_LABTAM3232_H diff --git a/src/devices/bus/multibus/labtam_3232.cpp b/src/devices/bus/multibus/labtam_3232.cpp new file mode 100644 index 00000000000..35181ea4a78 --- /dev/null +++ b/src/devices/bus/multibus/labtam_3232.cpp @@ -0,0 +1,116 @@ +// license:BSD-3-Clause +// copyright-holders:Patrick Mackinlay + +/* + * Labtam 3000 3232 (V32?) processor board. + * + * Sources: + * - http://www.cpu-ns32k.net/Multi.html + * - https://arvutimuuseum.ut.ee/index.php?m=eksponaadid&id=223 + * + * TODO: + * - skeleton only + */ + +#include "emu.h" +#include "labtam_3232.h" + +#define VERBOSE 0 +#include "logmacro.h" + +DEFINE_DEVICE_TYPE(LABTAM_3232, labtam_3232_device, "labtam_3232", "Labtam 3232") + +labtam_3232_device::labtam_3232_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) + : device_t(mconfig, LABTAM_3232, tag, owner, clock) + , device_multibus_interface(mconfig, *this) + , m_cpu(*this, "cpu") + , m_fpu(*this, "fpu") + , m_mmu(*this, "mmu") + , m_icu(*this, "icu") + , m_boot(*this, "boot") + , m_installed(false) +{ +} + +ROM_START(labtam_3232) + ROM_REGION32_LE(0x10000, "eprom", 0) + ROM_LOAD32_BYTE("sash_0__g87.bin", 0x0000, 0x4000, CRC(31132de0) SHA1(39f7c1f146346a53c253284ba3437b5f9217f439)) + ROM_LOAD32_BYTE("sash_1__g87.bin", 0x0001, 0x4000, CRC(09b4e8ba) SHA1(b722386fc6e4a634472d5a0501eb41e12d89f7dc)) + ROM_LOAD32_BYTE("sash_2__g87.bin", 0x0002, 0x4000, CRC(d76457b0) SHA1(efd18e0347b0181a0d2aa80098bd4fdb60a82788)) + ROM_LOAD32_BYTE("sash_3__g87.bin", 0x0003, 0x4000, CRC(7817d1b8) SHA1(032df47e1ba34653b5837f68eefa3ecaac17a483)) +ROM_END + +static INPUT_PORTS_START(labtam_3232) +INPUT_PORTS_END + +const tiny_rom_entry *labtam_3232_device::device_rom_region() const +{ + return ROM_NAME(labtam_3232); +} + +ioport_constructor labtam_3232_device::device_input_ports() const +{ + return INPUT_PORTS_NAME(labtam_3232); +} + +void labtam_3232_device::device_start() +{ +} + +void labtam_3232_device::device_reset() +{ + if (!m_installed) + { + // TODO: what's exposed to the Multibus? +#if 0 + m_bus->int_callback<0>().set(m_icu, FUNC(ns32202_device::ir_w<0>)); + m_bus->int_callback<1>().set(m_icu, FUNC(ns32202_device::ir_w<1>)); + m_bus->int_callback<2>().set(m_icu, FUNC(ns32202_device::ir_w<3>)); + m_bus->int_callback<3>().set(m_icu, FUNC(ns32202_device::ir_w<4>)); + m_bus->int_callback<4>().set(m_icu, FUNC(ns32202_device::ir_w<6>)); + m_bus->int_callback<5>().set(m_icu, FUNC(ns32202_device::ir_w<7>)); + m_bus->int_callback<6>().set(m_icu, FUNC(ns32202_device::ir_w<8>)); + m_bus->int_callback<7>().set([this](int state) { m_s8->read() ? m_cpu->set_input_line(INPUT_LINE_NMI, !state) : m_icu->ir_w<11>(state); }); +#endif + m_installed = true; + } + + m_boot.select(0); +} + +void labtam_3232_device::device_add_mconfig(machine_config &config) +{ + NS32032(config, m_cpu, 20_MHz_XTAL / 2); + m_cpu->set_addrmap(0, &labtam_3232_device::cpu_map<0>); + m_cpu->set_addrmap(4, &labtam_3232_device::cpu_map<4>); + + NS32081(config, m_fpu, 20_MHz_XTAL / 2); + m_cpu->set_fpu(m_fpu); + + NS32082(config, m_mmu, 20_MHz_XTAL / 2); + m_cpu->set_mmu(m_mmu); + + NS32202(config, m_icu, 20_MHz_XTAL / 2); + m_icu->out_int().set_inputline(m_cpu, INPUT_LINE_IRQ0).invert(); +} + +template void labtam_3232_device::cpu_map(address_map &map) +{ + if (ST == 0) + { + map(0x00000000, 0x007fffff).view(m_boot); + + m_boot[0](0x00000000, 0x0000ffff).rom().region("eprom", 0); + m_boot[1](0x00000000, 0x001fffff).ram(); // 2M on-board RAM with parity (up to 8M possible?) + + // 0xd00000 - maybe multibus memory or i/o? + map(0x00d00413, 0x00d00413).lr8([]() { return 0x18; }, "unknown_r8"); + map(0x00d00500, 0x00d00503).lr16([]() { return 0x0003; }, "unknown_r16"); + + map(0x00f80000, 0x00f8ffff).rom().region("eprom", 0); + + map(0x00fff914, 0x00fff914).lw8([this](u8 data) { m_boot.select(1); }, "men_w"); // ram enable? + } + + map(0xfffe00, 0xfffeff).m(m_icu, FUNC(ns32202_device::map)).umask32(0x000000ff); +} diff --git a/src/devices/bus/multibus/labtam_3232.h b/src/devices/bus/multibus/labtam_3232.h new file mode 100644 index 00000000000..4cd89999778 --- /dev/null +++ b/src/devices/bus/multibus/labtam_3232.h @@ -0,0 +1,51 @@ +// license:BSD-3-Clause +// copyright-holders:Patrick Mackinlay + +#ifndef MAME_BUS_MULTIBUS_LABTAM_3232_H +#define MAME_BUS_MULTIBUS_LABTAM_3232_H + +#pragma once + +#include "multibus.h" + +#include "cpu/ns32000/ns32000.h" +#include "machine/ns32081.h" +#include "machine/ns32082.h" +#include "machine/ns32202.h" + +class labtam_3232_device + : public device_t + , public device_multibus_interface +{ +public: + labtam_3232_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); + +protected: + // device_t overrides + virtual const tiny_rom_entry *device_rom_region() const override; + virtual void device_add_mconfig(machine_config &config) override; + virtual ioport_constructor device_input_ports() const override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + template void cpu_map(address_map &map); + + //void bus_mem_w(offs_t offset, u16 data, u16 mem_mask) { m_bus->space(AS_PROGRAM).write_word(0xe00000 | offset << 1, data, mem_mask); } + //u16 bus_mem_r(offs_t offset, u16 mem_mask) { return m_bus->space(AS_PROGRAM).read_word(0xe00000 | offset << 1, mem_mask); } + //void bus_pio_w(offs_t offset, u16 data, u16 mem_mask) { m_bus->space(AS_IO).write_word(offset << 1, data, mem_mask); } + //u16 bus_pio_r(offs_t offset, u16 mem_mask) { return m_bus->space(AS_IO).read_word(offset << 1, mem_mask); } + + required_device m_cpu; + required_device m_fpu; + required_device m_mmu; + required_device m_icu; + + memory_view m_boot; + + bool m_installed; +}; + +DECLARE_DEVICE_TYPE(LABTAM_3232, labtam_3232_device) + +#endif // MAME_BUS_MULTIBUS_LABTAM_3232_H -- cgit v1.2.3