summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2019-06-08 16:43:11 +0200
committer Olivier Galibert <galibert@pobox.com>2019-06-08 16:43:45 +0200
commit63080baef6c54a996cdb363ff82d76115ff49ac2 (patch)
treee14dfd6f57e7acb81ff5e184f684f847f82e46e5
parent2afe25ddb70a5eb21e477a3390d7e5e6d603828f (diff)
mindset: Show a little something [O. Galibert]
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/mindset.cpp112
-rw-r--r--src/mame/mame.lst3
3 files changed, 116 insertions, 0 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 6acbb7c32ee..6b159c0099e 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -4047,6 +4047,7 @@ files {
MAME_DIR .. "src/mame/machine/nl_tp1985.cpp",
MAME_DIR .. "src/mame/drivers/palestra.cpp",
MAME_DIR .. "src/mame/machine/nl_palestra.cpp",
+ MAME_DIR .. "src/mame/drivers/mindset.cpp",
}
end
diff --git a/src/mame/drivers/mindset.cpp b/src/mame/drivers/mindset.cpp
new file mode 100644
index 00000000000..eae34379647
--- /dev/null
+++ b/src/mame/drivers/mindset.cpp
@@ -0,0 +1,112 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert
+
+#include "emu.h"
+#include "cpu/i86/i186.h"
+#include "cpu/mcs48/mcs48.h"
+#include "imagedev/floppy.h"
+#include "machine/upd765.h"
+
+#include "screen.h"
+#include "speaker.h"
+
+class mindset_state: public driver_device
+{
+public:
+ mindset_state(const machine_config &mconfig, device_type type, const char *tag);
+ virtual ~mindset_state() = default;
+
+ void mindset(machine_config &config);
+
+protected:
+ required_device<i80186_cpu_device> m_maincpu;
+ required_device<i8042_device> m_syscpu, m_soundcpu;
+ required_device<screen_device> m_screen;
+ required_shared_ptr<u16> m_vram;
+
+ void maincpu_mem(address_map &map);
+ void maincpu_io(address_map &map);
+
+ u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+};
+
+mindset_state::mindset_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_syscpu(*this, "syscpu"),
+ m_soundcpu(*this, "soundcpu"),
+ m_screen(*this, "screen"),
+ m_vram(*this, "vram")
+{
+}
+
+u32 mindset_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ static const u32 pal[4] = { 0x000000, 0x555555, 0xaaaaaa, 0xffffff };
+
+ for(u32 y=0; y<200; y++) {
+ // Interleaved
+ const u16 *src = m_vram + 40*(y >> 1) + 4096*(y & 1);
+ u32 *dest = &bitmap.pix32(y);
+ for(u32 x=0; x<320; x+=8) {
+ u16 sv = *src++;
+ *dest++ = pal[(sv >> 6) & 3];
+ *dest++ = pal[(sv >> 4) & 3];
+ *dest++ = pal[(sv >> 2) & 3];
+ *dest++ = pal[(sv >> 0) & 3];
+ *dest++ = pal[(sv >> 14) & 3];
+ *dest++ = pal[(sv >> 12) & 3];
+ *dest++ = pal[(sv >> 10) & 3];
+ *dest++ = pal[(sv >> 8) & 3];
+ }
+ }
+ return 0;
+}
+
+
+void mindset_state::maincpu_mem(address_map &map)
+{
+ map(0x00000, 0x07fff).ram();
+ map(0xb8000, 0xbffff).ram().share("vram");
+ map(0xf8000, 0xfffff).rom().region("maincpu", 0);
+}
+
+void mindset_state::maincpu_io(address_map &map)
+{
+}
+
+void mindset_state::mindset(machine_config &config)
+{
+ I80186(config, m_maincpu, 6000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mindset_state::maincpu_mem);
+ m_maincpu->set_addrmap(AS_IO, &mindset_state::maincpu_io);
+
+ I8042(config, m_syscpu, 6000000);
+
+ I8042(config, m_soundcpu, 6000000);
+
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(320, 200);
+ m_screen->set_visarea(0, 319, 0, 199);
+ m_screen->set_screen_update(FUNC(mindset_state::screen_update));
+}
+
+static INPUT_PORTS_START(mindset)
+INPUT_PORTS_END
+
+ROM_START(mindset)
+ ROM_REGION(0x8000, "maincpu", 0)
+ ROM_LOAD16_BYTE("1.7_lo.u60", 0, 0x4000, CRC(00474dc1) SHA1(676f30f170c14174dbff3b5cbf98d0f23472b7c4))
+ ROM_LOAD16_BYTE("1.7_hi.u59", 1, 0x4000, CRC(1434af10) SHA1(39105eacdd7ddc13e449e2c32743e828bef33595))
+
+ ROM_REGION(0x0800, "syscpu", 0)
+ ROM_LOAD("253002-001.u17", 0, 0x800, CRC(69da82c9) SHA1(2f0bf5b134dc703cbc72e0c6df5b7beda1b39e70))
+
+ ROM_REGION(0x0800, "soundcpu", 0)
+ ROM_LOAD("253006-001.u16", 0, 0x800, CRC(7bea5edd) SHA1(30cdc0dedaa5246f4952df452a99ca22e3cd0636))
+ROM_END
+
+COMP( 1984, mindset, 0, 0, mindset, mindset, mindset_state, empty_init, "Mindset Corporation", "Mindset Video Production System", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 1e0cb3344db..e207619afa0 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -21757,6 +21757,9 @@ milton // 1980 Milton Bradley
@source:milwaukee.cpp
mc1200 //
+@source:mindset.cpp
+mindset // (c) 1984
+
@source:mini2440.cpp
mini2440 //