summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2022-03-31 14:06:29 -0400
committer AJR <ajrhacker@users.noreply.github.com>2022-03-31 14:06:29 -0400
commitf5d61ddcbe778ad5444fb57524d49325c2a862f8 (patch)
tree5fc6b5c21426012c2cab9902615b7d1377b2ad7f
parent334120cd95504f490a1c2908452bca8827c6debe (diff)
New machines market as NOT_WORKING
---------------------------------- Waldorf Electronics MiniWorks 4-Pole [DBWBP]
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.cpp50
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.h13
-rw-r--r--src/mame/drivers/mw4pole.cpp53
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
6 files changed, 121 insertions, 0 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 7d63641a546..6238cf5cd81 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -4713,6 +4713,7 @@ files {
MAME_DIR .. "src/mame/drivers/mstation.cpp",
MAME_DIR .. "src/mame/drivers/mt735.cpp",
MAME_DIR .. "src/mame/drivers/mtd1256.cpp",
+ MAME_DIR .. "src/mame/drivers/mw4pole.cpp",
MAME_DIR .. "src/mame/drivers/mx2178.cpp",
MAME_DIR .. "src/mame/drivers/mycom.cpp",
MAME_DIR .. "src/mame/drivers/myvision.cpp",
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.cpp b/src/devices/cpu/mc68hc11/mc68hc11.cpp
index c4768d25765..7c6503fb13d 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.cpp
+++ b/src/devices/cpu/mc68hc11/mc68hc11.cpp
@@ -47,6 +47,7 @@ static const int div_tab[4] = { 1, 4, 8, 16 };
DEFINE_DEVICE_TYPE(MC68HC11A1, mc68hc11a1_device, "mc68hc11a1", "Motorola MC68HC11A1")
DEFINE_DEVICE_TYPE(MC68HC11D0, mc68hc11d0_device, "mc68hc11d0", "Motorola MC68HC11D0")
+DEFINE_DEVICE_TYPE(MC68HC11E1, mc68hc11e1_device, "mc68hc11e1", "Motorola MC68HC11E1")
DEFINE_DEVICE_TYPE(MC68HC811E2, mc68hc811e2_device, "mc68hc811e2", "Motorola MC68HC811E2")
DEFINE_DEVICE_TYPE(MC68HC11F1, mc68hc11f1_device, "mc68hc11f1", "Motorola MC68HC11F1")
DEFINE_DEVICE_TYPE(MC68HC11K1, mc68hc11k1_device, "mc68hc11k1", "Motorola MC68HC11K1")
@@ -107,6 +108,11 @@ mc68hc11d0_device::mc68hc11d0_device(const machine_config &mconfig, const char *
{
}
+mc68hc11e1_device::mc68hc11e1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : mc68hc11_cpu_device(mconfig, MC68HC11E1, tag, owner, clock, 512, 64, 0, 512, 0x01, 0x0f, 0xfb)
+{
+}
+
mc68hc811e2_device::mc68hc811e2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: mc68hc11_cpu_device(mconfig, MC68HC811E2, tag, owner, clock, 256, 64, 0, 2048, 0x01, 0xf5, 0xfb)
{
@@ -511,6 +517,40 @@ void mc68hc11d0_device::mc68hc11_reg_map(memory_view::memory_view_entry &block,
block(base + 0x3f, base + 0x3f).rw(FUNC(mc68hc11d0_device::config_r), FUNC(mc68hc11d0_device::config_w)); // CONFIG
}
+void mc68hc11e1_device::mc68hc11_reg_map(memory_view::memory_view_entry &block, offs_t base)
+{
+ block(base + 0x00, base + 0x00).rw(FUNC(mc68hc11e1_device::port_r<0>), FUNC(mc68hc11e1_device::port_w<0>)); // PORTA
+ block(base + 0x02, base + 0x02).r(FUNC(mc68hc11e1_device::pioc_r)); // PIOC
+ block(base + 0x03, base + 0x03).rw(FUNC(mc68hc11e1_device::port_r<2>), FUNC(mc68hc11e1_device::port_w<2>)); // PORTC
+ block(base + 0x04, base + 0x04).rw(FUNC(mc68hc11e1_device::port_r<1>), FUNC(mc68hc11e1_device::port_w<1>)); // PORTB
+ block(base + 0x05, base + 0x05).nopw(); // PORTCL
+ block(base + 0x07, base + 0x07).rw(FUNC(mc68hc11e1_device::ddr_r<2>), FUNC(mc68hc11e1_device::ddr_w<2>)); // DDRC
+ block(base + 0x08, base + 0x08).rw(FUNC(mc68hc11e1_device::port_r<3>), FUNC(mc68hc11e1_device::port_w<3>)); // PORTD
+ block(base + 0x09, base + 0x09).rw(FUNC(mc68hc11e1_device::ddr_r<3>), FUNC(mc68hc11e1_device::ddr_w<3>)); // DDRD
+ block(base + 0x0a, base + 0x0a).r(FUNC(mc68hc11e1_device::port_r<4>)); // PORTE
+ block(base + 0x0e, base + 0x0f).rw(FUNC(mc68hc11e1_device::tcnt_r), FUNC(mc68hc11e1_device::tcnt_w)); // TCNT
+ block(base + 0x16, base + 0x1f).rw(FUNC(mc68hc11e1_device::toc_r), FUNC(mc68hc11e1_device::toc_w)); // TOC1-TOC4, TI4/O5
+ block(base + 0x20, base + 0x20).rw(FUNC(mc68hc11e1_device::tctl1_r), FUNC(mc68hc11e1_device::tctl1_w)); // TCTL1
+ block(base + 0x21, base + 0x21).rw(FUNC(mc68hc11e1_device::tctl2_r), FUNC(mc68hc11e1_device::tctl2_w)); // TCTL2
+ block(base + 0x22, base + 0x22).rw(FUNC(mc68hc11e1_device::tmsk1_r), FUNC(mc68hc11e1_device::tmsk1_w)); // TMSK1
+ block(base + 0x23, base + 0x23).rw(FUNC(mc68hc11e1_device::tflg1_r), FUNC(mc68hc11e1_device::tflg1_w)); // TFLG1
+ block(base + 0x24, base + 0x24).rw(FUNC(mc68hc11e1_device::tmsk2_r), FUNC(mc68hc11e1_device::tmsk2_w)); // TMSK2
+ block(base + 0x25, base + 0x25).rw(FUNC(mc68hc11e1_device::tflg2_r), FUNC(mc68hc11e1_device::tflg2_w)); // TFLG2
+ block(base + 0x26, base + 0x26).rw(FUNC(mc68hc11e1_device::pactl_ddra_r), FUNC(mc68hc11e1_device::pactl_ddra_w)); // PACTL
+ block(base + 0x28, base + 0x28).r(FUNC(mc68hc11e1_device::spcr_r<0>)).nopw(); // SPCR
+ block(base + 0x29, base + 0x29).r(FUNC(mc68hc11e1_device::spsr_r<0>)).nopw(); // SPSR
+ block(base + 0x2a, base + 0x2a).rw(FUNC(mc68hc11e1_device::spdr_r<0>), FUNC(mc68hc11e1_device::spdr_w<0>)); // SPDR
+ block(base + 0x2c, base + 0x2c).r(FUNC(mc68hc11e1_device::sccr1_r)).nopw(); // SCCR1
+ block(base + 0x2d, base + 0x2d).r(FUNC(mc68hc11e1_device::sccr2_r)).nopw(); // SCCR2
+ block(base + 0x30, base + 0x30).rw(FUNC(mc68hc11e1_device::adctl_r), FUNC(mc68hc11e1_device::adctl_w)); // ADCTL
+ block(base + 0x31, base + 0x34).r(FUNC(mc68hc11e1_device::adr_r)); // ADR1-ADR4
+ block(base + 0x39, base + 0x39).rw(FUNC(mc68hc11e1_device::option_r), FUNC(mc68hc11e1_device::option_w)); // OPTION
+ block(base + 0x3a, base + 0x3a).nopw(); // COPRST (watchdog)
+ block(base + 0x3b, base + 0x3b).nopw(); // PPROG (EEPROM programming)
+ block(base + 0x3d, base + 0x3d).rw(FUNC(mc68hc11e1_device::init_r), FUNC(mc68hc11e1_device::init_w)); // INIT
+ block(base + 0x3f, base + 0x3f).rw(FUNC(mc68hc11e1_device::config_r), FUNC(mc68hc11e1_device::config_w)); // CONFIG
+}
+
void mc68hc811e2_device::mc68hc11_reg_map(memory_view::memory_view_entry &block, offs_t base)
{
block(base + 0x00, base + 0x00).rw(FUNC(mc68hc811e2_device::port_r<0>), FUNC(mc68hc811e2_device::port_w<0>)); // PORTA
@@ -893,6 +933,16 @@ void mc68hc11d0_device::device_reset()
m_config = 0x00;
}
+void mc68hc11e1_device::device_reset()
+{
+ mc68hc11_cpu_device::device_reset();
+
+ m_port_data[0] &= 0x8f;
+ m_port_data[1] = 0x00;
+ ddr_w<0>(0x70);
+ ddr_w<1>(0xff);
+}
+
void mc68hc811e2_device::device_reset()
{
mc68hc11_cpu_device::device_reset();
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h
index da3d7477daf..9ad9a84492d 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.h
+++ b/src/devices/cpu/mc68hc11/mc68hc11.h
@@ -14,6 +14,7 @@ enum {
DECLARE_DEVICE_TYPE(MC68HC11A1, mc68hc11a1_device)
DECLARE_DEVICE_TYPE(MC68HC11D0, mc68hc11d0_device)
+DECLARE_DEVICE_TYPE(MC68HC11E1, mc68hc11e1_device)
DECLARE_DEVICE_TYPE(MC68HC811E2, mc68hc811e2_device)
DECLARE_DEVICE_TYPE(MC68HC11F1, mc68hc11f1_device)
DECLARE_DEVICE_TYPE(MC68HC11K1, mc68hc11k1_device)
@@ -573,6 +574,18 @@ private:
uint8_t reg01_r();
};
+class mc68hc11e1_device : public mc68hc11_cpu_device
+{
+public:
+ // construction/destruction
+ mc68hc11e1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual void device_reset() override;
+
+ virtual void mc68hc11_reg_map(memory_view::memory_view_entry &block, offs_t base) override;
+};
+
class mc68hc811e2_device : public mc68hc11_cpu_device
{
public:
diff --git a/src/mame/drivers/mw4pole.cpp b/src/mame/drivers/mw4pole.cpp
new file mode 100644
index 00000000000..64e8d3a1243
--- /dev/null
+++ b/src/mame/drivers/mw4pole.cpp
@@ -0,0 +1,53 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/****************************************************************************
+
+ Skeleton driver for Waldorf MiniWorks 4-Pole analog filter module.
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/mc68hc11/mc68hc11.h"
+
+namespace {
+
+class mw4pole_state : public driver_device
+{
+public:
+ mw4pole_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ {
+ }
+
+ void mw4pole(machine_config &config);
+
+private:
+ void mem_map(address_map &map);
+
+ required_device<mc68hc11_cpu_device> m_maincpu;
+};
+
+
+void mw4pole_state::mem_map(address_map &map)
+{
+ map(0x8000, 0xffff).rom().region("eprom", 0);
+}
+
+static INPUT_PORTS_START(mw4pole)
+INPUT_PORTS_END
+
+void mw4pole_state::mw4pole(machine_config &config)
+{
+ MC68HC11E1(config, m_maincpu, 8_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mw4pole_state::mem_map);
+}
+
+ROM_START(mw4pole)
+ ROM_REGION(0x8000, "eprom", 0)
+ ROM_LOAD("4-pole v1.48 001eaf32.bin", 0x0000, 0x8000, CRC(51be6962) SHA1(20e793573a49002c854b012280aed13058ba0b63)) // TMS27C256
+ROM_END
+
+} // anonymous namespace
+
+SYST(1995, mw4pole, 0, 0, mw4pole, mw4pole, mw4pole_state, empty_init, "Waldorf Electronics", "MiniWorks 4-Pole", MACHINE_IS_SKELETON)
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index fb9d1e51ff6..caf4a9eaa71 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -31736,6 +31736,9 @@ mvme162 // (c) 1993 Motorola
18w // 653 (c) 1979 Midway
18w2 // 653 (c) 1979 Midway
+@source:mw4pole.cpp
+mw4pole // (c) 1995 Waldorf Electronics GmbH Germany
+
@source:mw8080bw.cpp
280zzzap // 610 [1976]
blueshrk // 742 [1978]
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 89d2c8f69eb..c76fc98cc39 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -691,6 +691,7 @@ multi8.cpp
mupid2.cpp
mvme147.cpp
mvme162.cpp
+mw4pole.cpp
mx2178.cpp
myb3k.cpp
mycom.cpp