summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/devices/cpu/h8500/h8534.cpp32
-rw-r--r--src/devices/cpu/h8500/h8534.h24
-rw-r--r--src/devices/machine/intelfsh.cpp11
-rw-r--r--src/devices/machine/intelfsh.h8
-rw-r--r--src/mame/drivers/bvm.cpp88
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
8 files changed, 165 insertions, 3 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index cd6242983a0..879f722a883 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -3631,6 +3631,7 @@ files {
createMESSProjects(_target, _subtarget, "sony")
files {
+ MAME_DIR .. "src/mame/drivers/bvm.cpp",
MAME_DIR .. "src/mame/drivers/pockstat.cpp",
MAME_DIR .. "src/mame/drivers/psx.cpp",
MAME_DIR .. "src/mame/machine/psxcd.cpp",
diff --git a/src/devices/cpu/h8500/h8534.cpp b/src/devices/cpu/h8500/h8534.cpp
index 065d83adc5e..dd33af71128 100644
--- a/src/devices/cpu/h8500/h8534.cpp
+++ b/src/devices/cpu/h8500/h8534.cpp
@@ -2,7 +2,7 @@
// copyright-holders:AJR
/***************************************************************************
- Hitachi H8/534
+ Hitachi H8/534 & H8/536
***************************************************************************/
@@ -10,9 +10,15 @@
#include "h8534.h"
DEFINE_DEVICE_TYPE(HD6475348, hd6475348_device, "hd6475348", "Hitachi HD6475348 (H8/534)")
+DEFINE_DEVICE_TYPE(HD6435368, hd6435368_device, "hd6435368", "Hitachi HD6435368 (H8/536)")
+
+h8534_device::h8534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor map)
+ : h8500_device(mconfig, type, tag, owner, clock, 20, 8, 11, map)
+{
+}
h8534_device::h8534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
- : h8500_device(mconfig, type, tag, owner, clock, 20, 8, 11, address_map_constructor(FUNC(h8534_device::internal_map), this))
+ : h8534_device(mconfig, type, tag, owner, clock, address_map_constructor(FUNC(h8534_device::internal_map), this))
{
}
@@ -21,9 +27,31 @@ hd6475348_device::hd6475348_device(const machine_config &mconfig, const char *ta
{
}
+h8536_device::h8536_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : h8534_device(mconfig, type, tag, owner, clock, address_map_constructor(FUNC(h8536_device::internal_map), this))
+{
+}
+
+hd6435368_device::hd6435368_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : h8536_device(mconfig, HD6435368, tag, owner, clock)
+{
+}
+
void h8534_device::internal_map(address_map &map)
{
map(0x0000, 0x7fff).rom().region(DEVICE_SELF, 0); // modes 2, 4, 7
+ register_field_map(map);
+}
+
+void h8536_device::internal_map(address_map &map)
+{
+ //map(0x0000, 0xee7f).rom().region(DEVICE_SELF, 0); // mode 2?
+ //map(0x0000, 0xf67f).rom().region(DEVICE_SELF, 0); // modes 4, 7
+ register_field_map(map);
+}
+
+void h8534_device::register_field_map(address_map &map)
+{
#if 0
map(0xfe80, 0xfe80).w(FUNC(h8534_device::p1ddr_w));
map(0xfe81, 0xfe81).w(FUNC(h8534_device::p2ddr_w));
diff --git a/src/devices/cpu/h8500/h8534.h b/src/devices/cpu/h8500/h8534.h
index 7b375ba8351..8e5c357ff1b 100644
--- a/src/devices/cpu/h8500/h8534.h
+++ b/src/devices/cpu/h8500/h8534.h
@@ -11,8 +11,13 @@
class h8534_device : public h8500_device
{
protected:
+ // delegating constructor
h8534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+ h8534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor map);
+
+ void register_field_map(address_map &map);
+
private:
void internal_map(address_map &map);
};
@@ -24,6 +29,23 @@ public:
hd6475348_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
+class h8536_device : public h8534_device
+{
+protected:
+ h8536_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+private:
+ void internal_map(address_map &map);
+};
+
+class hd6435368_device : public h8536_device
+{
+public:
+ // device type constructor
+ hd6435368_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
DECLARE_DEVICE_TYPE(HD6475348, hd6475348_device)
+DECLARE_DEVICE_TYPE(HD6435368, hd6435368_device)
-#endif // MAME_CPU_H8500_H8532_H
+#endif // MAME_CPU_H8500_H8534_H
diff --git a/src/devices/machine/intelfsh.cpp b/src/devices/machine/intelfsh.cpp
index 77281819bdf..af8e50dc2d0 100644
--- a/src/devices/machine/intelfsh.cpp
+++ b/src/devices/machine/intelfsh.cpp
@@ -120,6 +120,8 @@ DEFINE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device, "sst_39v
DEFINE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device, "atmel_49f4096", "Atmel AT49F4096 Flash")
+DEFINE_DEVICE_TYPE(CAT28F020, cat28f020_device, "cat28f020", "CSI CAT28F020 Flash")
+
//**************************************************************************
@@ -226,6 +228,12 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
m_maker_id = MFG_AMD;
m_device_id = 0x3b;
break;
+ case FLASH_CAT28F020:
+ m_bits = 8;
+ m_size = 0x40000;
+ m_maker_id = MFG_CATALYST;
+ m_device_id = 0xbd;
+ break;
case FLASH_INTEL_28F320J3D:
m_bits = 16;
m_size = 0x400000;
@@ -450,6 +458,9 @@ amd_29f800b_16bit_device::amd_29f800b_16bit_device(const machine_config &mconfig
amd_29lv200t_device::amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: intelfsh8_device(mconfig, AMD_29LV200T, tag, owner, clock, FLASH_AMD_29LV200T) { }
+cat28f020_device::cat28f020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : intelfsh8_device(mconfig, CAT28F020, tag, owner, clock, FLASH_CAT28F020) { }
+
intel_e28f008sa_device::intel_e28f008sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: intelfsh8_device(mconfig, INTEL_E28F008SA, tag, owner, clock, FLASH_INTEL_E28F008SA) { }
diff --git a/src/devices/machine/intelfsh.h b/src/devices/machine/intelfsh.h
index bde0b0d4c61..8001b2fc5ce 100644
--- a/src/devices/machine/intelfsh.h
+++ b/src/devices/machine/intelfsh.h
@@ -30,6 +30,7 @@ public:
FLASH_AMD_29F800T,
FLASH_AMD_29F800B_16BIT,
FLASH_AMD_29LV200T,
+ FLASH_CAT28F020,
FLASH_SHARP_LH28F016S,
FLASH_SHARP_LH28F016S_16BIT,
FLASH_INTEL_E28F008SA,
@@ -365,6 +366,12 @@ public:
atmel_49f4096_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
+class cat28f020_device : public intelfsh8_device
+{
+public:
+ cat28f020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
// device type definition
DECLARE_DEVICE_TYPE(INTEL_28F016S5, intel_28f016s5_device)
@@ -406,5 +413,6 @@ DECLARE_DEVICE_TYPE(INTEL_28F320J3D, intel_28f320j3d_device)
DECLARE_DEVICE_TYPE(INTEL_28F320J5, intel_28f320j5_device)
DECLARE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device)
DECLARE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device)
+DECLARE_DEVICE_TYPE(CAT28F020, cat28f020_device)
#endif // MAME_MACHINE_INTELFSH_H
diff --git a/src/mame/drivers/bvm.cpp b/src/mame/drivers/bvm.cpp
new file mode 100644
index 00000000000..704f64c4129
--- /dev/null
+++ b/src/mame/drivers/bvm.cpp
@@ -0,0 +1,88 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/****************************************************************************
+
+ Skeleton driver for Sony BVM-{14|20}{E|F}1{E|U} series monitors.
+
+ List of major ICs:
+ - Hitachi HD6435368CP10 H8/536 [IC1]
+ or: Hitachi HD6475368CP10 C764
+ or: Hitachi HD6435368CP10 W51
+ near 20 MHz XTAL
+ - CSI CAT28F020P-15 2 Megabit CMOS Flash Memory [IC3]
+ - Sony CXK58257AP-10 [IC4]
+ or: Sanyo LC35256D-10
+ next to: Sony CR2025 3V Lithium Cell [BAT1]
+ - Sony CXD1095Q [IC5, IC6]
+ - NEC D6453GT-101 On-Screen Character Display [IC7]
+ - Sony CXA1727Q [IC102]
+ - Sony CXD2343S [IC105]
+ - Hitachi HN27C256AG-10 [IC107, IC108]
+ - Sony CXD1171M 8-Bit D/A Converter [IC109]
+ - Sony CXD1030M Sync Signal Generator [IC120]
+ - Zilog Z8622812PSC Line 21 Closed-Caption Controller [IC124]
+ - Sony CXD1132Q Time Code Generator/Reader [IC126]
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/h8500/h8534.h"
+#include "machine/cxd1095.h"
+#include "machine/intelfsh.h"
+#include "machine/nvram.h"
+
+class bvm_state : public driver_device
+{
+public:
+ bvm_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ {
+ }
+
+ void bvm(machine_config &config);
+
+private:
+ void mem_map(address_map &map);
+
+ required_device<h8536_device> m_maincpu;
+};
+
+
+void bvm_state::mem_map(address_map &map)
+{
+ // internal ROM not used here?
+ map(0x00000, 0x0f67f).rw("flash", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x10000, 0x17fff).ram().share("nvram");
+ map(0x18000, 0x18007).rw("cxdio0", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0x18020, 0x18027).rw("cxdio1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0x40000, 0x7ffff).rw("flash", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+}
+
+
+static INPUT_PORTS_START(bvm)
+INPUT_PORTS_END
+
+void bvm_state::bvm(machine_config &config)
+{
+ HD6435368(config, m_maincpu, 20_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &bvm_state::mem_map);
+
+ CAT28F020(config, "flash");
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+
+ CXD1095(config, "cxdio0");
+ CXD1095(config, "cxdio1");
+}
+
+ROM_START(bvm20f1e)
+ ROM_REGION(0x40000, "flash", 0)
+ ROM_LOAD("cat28f020p-15.ic3", 0x00000, 0x40000, CRC(43a1bdf8) SHA1(65cf61921ac86a8baa3a3da4ed0b3e61aa2f03b3))
+
+ ROM_REGION(0x10000, "eproms", 0)
+ ROM_LOAD("cd93-27c256.ic107", 0x0000, 0x8000, CRC(f8da1f2f) SHA1(b2f5a730d0f26f2a12fd62a111ee429da8426877))
+ ROM_LOAD("541d-27c256.ic108", 0x8000, 0x8000, CRC(9da347f9) SHA1(413096830bdcae6404e9d686abb56e60d58bdc2f))
+ROM_END
+
+SYST(1998, bvm20f1e, 0, 0, bvm, bvm, bvm_state, empty_init, "Sony", "Trinitron Color Video Monitor BVM-20F1E / BVM-20F1U", MACHINE_IS_SKELETON)
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 0bb1c9e7c31..9dceb4bfb43 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -9518,6 +9518,9 @@ busicom //
@source:buster.cpp
buster // (c) 1987 Marian Electronics Ltd.
+@source:bvm.cpp
+bvm20f1e //
+
@source:bw12.cpp
bw12 //
bw14 //
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 5bc0b7d10c1..8ab3ca34c44 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -128,6 +128,7 @@ br8641.cpp
braiplus.cpp
bullet.cpp
busicom.cpp
+bvm.cpp
bw12.cpp
bw2.cpp
c10.cpp