summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-01-26 01:43:10 -0500
committer AJR <ajrhacker@users.noreply.github.com>2019-01-26 01:43:10 -0500
commit79b6956563d2449a2e724c17097611cc69b96b74 (patch)
treeaa6cccb2a61506a35facfa459fa44eece756c4ec /src
parent35c6f44849dad89150d8f590e721ac34a08e17ea (diff)
New skeleton ISA16 device: Everex EV-346 disk controller [modem7, minuszerodegrees.net]
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/isa/cl_sh260.cpp93
-rw-r--r--src/devices/bus/isa/cl_sh260.h64
-rw-r--r--src/devices/bus/isa/isa_cards.cpp3
-rw-r--r--src/devices/bus/isa/jc1310.cpp55
-rw-r--r--src/devices/bus/isa/jc1310.h38
5 files changed, 159 insertions, 94 deletions
diff --git a/src/devices/bus/isa/cl_sh260.cpp b/src/devices/bus/isa/cl_sh260.cpp
new file mode 100644
index 00000000000..f8fb39249f5
--- /dev/null
+++ b/src/devices/bus/isa/cl_sh260.cpp
@@ -0,0 +1,93 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/***************************************************************************
+
+ ISA 16-bit disk controllers based on the Cirrus Logic CL-SH260-15PC-D
+ * Everex EV-346
+ * Joincom Electronic JC-1310
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cl_sh260.h"
+
+#include "cpu/mcs51/mcs51.h"
+
+DEFINE_DEVICE_TYPE(EV346, isa16_ev346_device, "ev346", "Everex EV-346 disk controller")
+DEFINE_DEVICE_TYPE(JC1310, isa16_jc1310_device, "jc1310", "Joincom JC-1310 disk controller")
+
+isa16_cl_sh260_device::isa16_cl_sh260_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_isa16_card_interface(mconfig, *this)
+ , m_fdc(*this, "fdc")
+{
+}
+
+isa16_ev346_device::isa16_ev346_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : isa16_cl_sh260_device(mconfig, EV346, tag, owner, clock)
+{
+}
+
+isa16_jc1310_device::isa16_jc1310_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : isa16_cl_sh260_device(mconfig, JC1310, tag, owner, clock)
+{
+}
+
+void isa16_cl_sh260_device::device_start()
+{
+}
+
+void isa16_cl_sh260_device::i8031_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("mcu", 0);
+}
+
+void isa16_ev346_device::ext_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0xff).noprw(); // CL-SH260 interface
+}
+
+void isa16_jc1310_device::ext_map(address_map &map)
+{
+ map(0xc000, 0xc0ff).noprw(); // CL-SH260 interface
+}
+
+void isa16_ev346_device::device_add_mconfig(machine_config &config)
+{
+ i8031_device &mcu(I8031(config, "mcu", 12_MHz_XTAL)); // SCN8031HCCN40
+ mcu.set_addrmap(AS_PROGRAM, &isa16_ev346_device::i8031_map);
+ mcu.set_addrmap(AS_IO, &isa16_ev346_device::ext_map);
+
+ DP8473(config, m_fdc, 24_MHz_XTAL);
+}
+
+void isa16_jc1310_device::device_add_mconfig(machine_config &config)
+{
+ i8031_device &mcu(I8031(config, "mcu", 10_MHz_XTAL)); // P8031AH
+ mcu.set_addrmap(AS_PROGRAM, &isa16_jc1310_device::i8031_map);
+ mcu.set_addrmap(AS_IO, &isa16_jc1310_device::ext_map);
+
+ WD37C65C(config, m_fdc, 16_MHz_XTAL); // WD37C65B-PL
+ //m_fdc->set_clock2(9.6_MHz_XTAL);
+}
+
+ROM_START(ev346)
+ ROM_REGION(0x2000, "mcu", 0)
+ ROM_LOAD("everex_ev346_vers_3.2.bin", 0x0000, 0x2000, CRC(49b10ca7) SHA1(ef31b62f5ac38db7cacfc4d30e203a4cc1414913))
+ROM_END
+
+ROM_START(jc1310)
+ ROM_REGION(0x2000, "mcu", 0) // "(C) COPYRIGHT JOINCOM ELECTRONIC CORP. 9/16/1988 JC1310"
+ ROM_LOAD("jc-1310 - apr-c 89.u3", 0x0000, 0x2000, CRC(e044f5e1) SHA1(5a32d2001bb1a489657f9488136b5d621f803703)) // TMS 2764-20JL
+ROM_END
+
+const tiny_rom_entry *isa16_ev346_device::device_rom_region() const
+{
+ return ROM_NAME(ev346);
+}
+
+const tiny_rom_entry *isa16_jc1310_device::device_rom_region() const
+{
+ return ROM_NAME(jc1310);
+}
diff --git a/src/devices/bus/isa/cl_sh260.h b/src/devices/bus/isa/cl_sh260.h
new file mode 100644
index 00000000000..18612ab6456
--- /dev/null
+++ b/src/devices/bus/isa/cl_sh260.h
@@ -0,0 +1,64 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/***************************************************************************
+
+ ISA 16-bit disk controllers based on the Cirrus Logic CL-SH260-15PC-D
+ * Everex EV-346
+ * Joincom Electronic JC-1310
+
+***************************************************************************/
+
+#ifndef MAME_BUS_ISA_CL_SH260_H
+#define MAME_BUS_ISA_CL_SH260_H
+
+#pragma once
+
+#include "isa.h"
+#include "machine/upd765.h"
+
+class isa16_cl_sh260_device : public device_t, public device_isa16_card_interface
+{
+protected:
+ isa16_cl_sh260_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+ virtual void device_start() override;
+
+ void i8031_map(address_map &map);
+
+ required_device<upd765_family_device> m_fdc;
+};
+
+class isa16_ev346_device : public isa16_cl_sh260_device
+{
+public:
+ isa16_ev346_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ static constexpr feature_type unemulated_features() { return feature::DISK; }
+
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+private:
+ void ext_map(address_map &map);
+};
+
+class isa16_jc1310_device : public isa16_cl_sh260_device
+{
+public:
+ isa16_jc1310_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ static constexpr feature_type unemulated_features() { return feature::DISK; }
+
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
+
+private:
+ void ext_map(address_map &map);
+};
+
+DECLARE_DEVICE_TYPE(EV346, isa16_ev346_device)
+DECLARE_DEVICE_TYPE(JC1310, isa16_jc1310_device)
+
+#endif // MAME_BUS_ISA_CL_SH260_H
diff --git a/src/devices/bus/isa/isa_cards.cpp b/src/devices/bus/isa/isa_cards.cpp
index 5f214d3616c..0e6893b12d7 100644
--- a/src/devices/bus/isa/isa_cards.cpp
+++ b/src/devices/bus/isa/isa_cards.cpp
@@ -36,7 +36,7 @@
#include "wd1007a.h"
#include "mcd.h"
#include "lbaenhancer.h"
-#include "jc1310.h"
+#include "cl_sh260.h"
// sound
#include "adlib.h"
@@ -169,5 +169,6 @@ void pc_isa16_cards(device_slot_interface &device)
device.option_add("mcd", ISA16_MCD);
device.option_add("sad8852", ISA16_SAD8852);
device.option_add("wd1007a", WD1007A);
+ device.option_add("ev346", EV346);
device.option_add("jc1310", JC1310);
}
diff --git a/src/devices/bus/isa/jc1310.cpp b/src/devices/bus/isa/jc1310.cpp
deleted file mode 100644
index 4f11ff2f6ee..00000000000
--- a/src/devices/bus/isa/jc1310.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/***************************************************************************
-
- Joincom Electronic JC-1310 MFM floppy disk controller
-
-***************************************************************************/
-
-#include "emu.h"
-#include "jc1310.h"
-
-#include "cpu/mcs51/mcs51.h"
-
-DEFINE_DEVICE_TYPE(JC1310, isa16_jc1310_device, "jc1310", "Joincom JC-1310 FDC")
-
-isa16_jc1310_device::isa16_jc1310_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : device_t(mconfig, JC1310, tag, owner, clock)
- , device_isa16_card_interface(mconfig, *this)
- , m_fdc(*this, "fdc")
-{
-}
-
-void isa16_jc1310_device::device_start()
-{
-}
-
-void isa16_jc1310_device::prog_map(address_map &map)
-{
- map(0x0000, 0x1fff).rom().region("mcu", 0);
-}
-
-void isa16_jc1310_device::ext_map(address_map &map)
-{
- map(0xc000, 0xc7ff).ram(); // CXK5816PN-10L
-}
-
-void isa16_jc1310_device::device_add_mconfig(machine_config &config)
-{
- i8031_device &mcu(I8031(config, "mcu", 10_MHz_XTAL)); // P8031AH
- mcu.set_addrmap(AS_PROGRAM, &isa16_jc1310_device::prog_map);
- mcu.set_addrmap(AS_IO, &isa16_jc1310_device::ext_map);
-
- WD37C65C(config, m_fdc, 16_MHz_XTAL); // WD37C65B-PL
- //m_fdc->set_clock2(9.6_MHz_XTAL);
-}
-
-ROM_START(jc1310)
- ROM_REGION(0x2000, "mcu", 0) // "(C) COPYRIGHT JOINCOM ELECTRONIC CORP. 9/16/1988 JC1310"
- ROM_LOAD("jc-1310 - apr-c 89.u3", 0x0000, 0x2000, CRC(e044f5e1) SHA1(5a32d2001bb1a489657f9488136b5d621f803703)) // TMS 2764-20JL
-ROM_END
-
-const tiny_rom_entry *isa16_jc1310_device::device_rom_region() const
-{
- return ROM_NAME(jc1310);
-}
diff --git a/src/devices/bus/isa/jc1310.h b/src/devices/bus/isa/jc1310.h
deleted file mode 100644
index 2ddd1c6a232..00000000000
--- a/src/devices/bus/isa/jc1310.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/***************************************************************************
-
- Joincom Electronic JC-1310 MFM floppy disk controller
-
-***************************************************************************/
-
-#ifndef MAME_BUS_ISA_JC1310_H
-#define MAME_BUS_ISA_JC1310_H
-
-#pragma once
-
-#include "isa.h"
-#include "machine/upd765.h"
-
-class isa16_jc1310_device : public device_t, public device_isa16_card_interface
-{
-public:
- isa16_jc1310_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
-
- static constexpr feature_type unemulated_features() { return feature::DISK; }
-
-protected:
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_start() override;
-
-private:
- void prog_map(address_map &map);
- void ext_map(address_map &map);
-
- required_device<wd37c65c_device> m_fdc;
-};
-
-DECLARE_DEVICE_TYPE(JC1310, isa16_jc1310_device)
-
-#endif // MAME_BUS_ISA_JC1310_FDC_H