summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/saitek_osa
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-05-15 13:37:40 +0200
committer hap <happppp@users.noreply.github.com>2021-05-15 13:37:52 +0200
commit8ba12dd6da5cddb606707bfcda79f75171290f0a (patch)
treef2939b0c257aa91fc05eae34dbab132f781e77ad /src/devices/bus/saitek_osa
parentb5b5d370ded50db29e276c6644edfe39c4230761 (diff)
saitek_osa: add skeleton device for Sparc module [hap, Berger]
Diffstat (limited to 'src/devices/bus/saitek_osa')
-rw-r--r--src/devices/bus/saitek_osa/maestroa.cpp13
-rw-r--r--src/devices/bus/saitek_osa/maestroa.h2
-rw-r--r--src/devices/bus/saitek_osa/modules.cpp2
-rw-r--r--src/devices/bus/saitek_osa/sparc.cpp99
-rw-r--r--src/devices/bus/saitek_osa/sparc.h43
5 files changed, 157 insertions, 2 deletions
diff --git a/src/devices/bus/saitek_osa/maestroa.cpp b/src/devices/bus/saitek_osa/maestroa.cpp
index b3245c1e1aa..0eef1426dd3 100644
--- a/src/devices/bus/saitek_osa/maestroa.cpp
+++ b/src/devices/bus/saitek_osa/maestroa.cpp
@@ -3,7 +3,18 @@
// thanks-to:Berger
/***************************************************************************
-Saitek OSA Module: Maestro A
+Saitek OSA Module: Kasparov Maestro A (SciSys, 1986)
+
+The chess engine revision is in-between Kaplan's Stratos and Turbostar.
+
+Hardware notes:
+- PCB label: M6L-PE-012 REV.2
+- R65C02P4 @ 4MHz / 5.67MHz / 6MHz
+- 32KB ROM (D27C256)
+- 8KB RAM (HM6264LP-15)
+- 3 more sockets, one for KSO expansion ROM, 2 unused
+
+The PCB is not compatible for upgrading to newer Maestro versions.
TODO:
- does not work if cpu speed is 4MHz
diff --git a/src/devices/bus/saitek_osa/maestroa.h b/src/devices/bus/saitek_osa/maestroa.h
index 3ef210e153a..f214c4a7fb3 100644
--- a/src/devices/bus/saitek_osa/maestroa.h
+++ b/src/devices/bus/saitek_osa/maestroa.h
@@ -2,7 +2,7 @@
// copyright-holders:hap
/***************************************************************************
- Saitek OSA Module: Maestro A
+ Saitek OSA Module: Kasparov Maestro A
***************************************************************************/
diff --git a/src/devices/bus/saitek_osa/modules.cpp b/src/devices/bus/saitek_osa/modules.cpp
index e220b59f6aa..7cdbe1524fa 100644
--- a/src/devices/bus/saitek_osa/modules.cpp
+++ b/src/devices/bus/saitek_osa/modules.cpp
@@ -10,8 +10,10 @@
#include "modules.h"
#include "maestroa.h"
+#include "sparc.h"
void saitekosa_expansion_modules(device_slot_interface &device)
{
device.option_add("maestroa", OSA_MAESTROA);
+ device.option_add("sparc", OSA_SPARC);
}
diff --git a/src/devices/bus/saitek_osa/sparc.cpp b/src/devices/bus/saitek_osa/sparc.cpp
new file mode 100644
index 00000000000..7620197dffa
--- /dev/null
+++ b/src/devices/bus/saitek_osa/sparc.cpp
@@ -0,0 +1,99 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:Berger
+/***************************************************************************
+
+Saitek OSA Module: Kasparov Sparc (1993)
+
+The chess engine is by the Spracklen's. Their last, and also their strongest.
+
+Hardware notes:
+- Fujitsu MB86930 SPARClite @ 20MHz (fan cooled)
+- 256KB ROM (4*AMD AM27C512)
+- 1MB DRAM (8*NEC 424256-60), expandable to 4MB
+
+TODO:
+- skeleton device, missing SPARClite emulation, maybe only needs the MMU?
+
+***************************************************************************/
+
+#include "emu.h"
+#include "sparc.h"
+
+
+DEFINE_DEVICE_TYPE(OSA_SPARC, saitekosa_sparc_device, "osa_sparc", "Sparc")
+
+
+//-------------------------------------------------
+// initialization
+//-------------------------------------------------
+
+saitekosa_sparc_device::saitekosa_sparc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ device_t(mconfig, OSA_SPARC, tag, owner, clock),
+ device_saitekosa_expansion_interface(mconfig, *this),
+ m_maincpu(*this, "maincpu")
+{ }
+
+void saitekosa_sparc_device::device_start()
+{
+}
+
+void saitekosa_sparc_device::device_reset()
+{
+}
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+ROM_START( sparc )
+ ROM_REGION32_BE(0x40000, "maincpu", 0)
+ ROM_LOAD32_BYTE("sm16b_512.u5", 0x000000, 0x10000, CRC(96bca59d) SHA1(2c7e693d0cdf69b6e566c6dd03bd24d39e32aa82) )
+ ROM_LOAD32_BYTE("sm16b_512.u4", 0x000001, 0x10000, CRC(15dd621d) SHA1(e8f7404e84fe027b086fcb918fbcaf2ce4203567) )
+ ROM_LOAD32_BYTE("sm16b_512.u3", 0x000002, 0x10000, CRC(3201c6e4) SHA1(9a209219a0ab4b4f874381a16773bf33f8f7ba25) )
+ ROM_LOAD32_BYTE("sm16b_512a.u2", 0x000003, 0x10000, CRC(56dedec7) SHA1(4f9d37e0ca639f892a574aa10a3fb42bba9b82c6) )
+
+ ROM_REGION(0x1000, "pals", 0)
+ ROM_LOAD("palce16v8h.u23.jed", 0x0000, 0x0c25, CRC(de79fabc) SHA1(27e01ec405e261109dbe10c254b7127eda0f1886) )
+ ROM_LOAD("palce16v8h.u32.jed", 0x0000, 0x0c25, CRC(422b66c8) SHA1(44b3394e0586c126ee95129c65e6692ffc01fa8e) )
+ROM_END
+
+const tiny_rom_entry *saitekosa_sparc_device::device_rom_region() const
+{
+ return ROM_NAME(sparc);
+}
+
+
+//-------------------------------------------------
+// device_add_mconfig - add device configuration
+//-------------------------------------------------
+
+void saitekosa_sparc_device::device_add_mconfig(machine_config &config)
+{
+ // basic machine hardware
+#if 0
+ SPARCV8(config, m_maincpu, 20_MHz_XTAL);
+ m_maincpu->set_addrmap(0, &saitekosa_sparc_device::main_map);
+ m_maincpu->set_mmu(nullptr);
+#endif
+}
+
+
+//-------------------------------------------------
+// internal i/o
+//-------------------------------------------------
+
+void saitekosa_sparc_device::main_map(address_map &map)
+{
+}
+
+
+//-------------------------------------------------
+// host i/o
+//-------------------------------------------------
+
+u8 saitekosa_sparc_device::data_r()
+{
+ return 0xff;
+}
diff --git a/src/devices/bus/saitek_osa/sparc.h b/src/devices/bus/saitek_osa/sparc.h
new file mode 100644
index 00000000000..64db94562f5
--- /dev/null
+++ b/src/devices/bus/saitek_osa/sparc.h
@@ -0,0 +1,43 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/***************************************************************************
+
+ Saitek OSA Module: Kasparov Sparc
+
+***************************************************************************/
+
+#ifndef MAME_BUS_SAITEKOSA_SPARC_H
+#define MAME_BUS_SAITEKOSA_SPARC_H
+
+#pragma once
+
+#include "expansion.h"
+
+#include "cpu/sparc/sparc.h"
+
+
+class saitekosa_sparc_device : public device_t, public device_saitekosa_expansion_interface
+{
+public:
+ // construction/destruction
+ saitekosa_sparc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ // from host
+ virtual u8 data_r() override;
+
+protected:
+ virtual const tiny_rom_entry *device_rom_region() const override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+private:
+ optional_device<sparcv8_device> m_maincpu;
+
+ void main_map(address_map &map);
+};
+
+
+DECLARE_DEVICE_TYPE(OSA_SPARC, saitekosa_sparc_device)
+
+#endif // MAME_BUS_SAITEKOSA_SPARC_H