diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 871ad4a66c7..0b1f1ecb0e1 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -4557,6 +4557,7 @@ files { MAME_DIR .. "src/mame/drivers/grfd2301.cpp", MAME_DIR .. "src/mame/drivers/hazeltin.cpp", MAME_DIR .. "src/mame/drivers/hazl1420.cpp", + MAME_DIR .. "src/mame/drivers/hohnadam.cpp", MAME_DIR .. "src/mame/drivers/hp3478a.cpp", MAME_DIR .. "src/mame/drivers/hprot1.cpp", MAME_DIR .. "src/mame/drivers/hpz80unk.cpp", diff --git a/src/mame/drivers/hohnadam.cpp b/src/mame/drivers/hohnadam.cpp new file mode 100644 index 00000000000..cac17f5af01 --- /dev/null +++ b/src/mame/drivers/hohnadam.cpp @@ -0,0 +1,126 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/**************************************************************************** + + Skeleton driver for Hohner ADAM keyboard synthesizer. + +****************************************************************************/ + +#include "emu.h" +#include "cpu/m68000/m68000.h" +#include "cpu/mcs51/mcs51.h" +#include "machine/nvram.h" + +namespace { + +class hohnadam_state : public driver_device +{ +public: + hohnadam_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_panelcpu(*this, "panelcpu") + { + } + + void hohnadam(machine_config &config); + +private: + u8 c005fb_r(); + void d00000_w(offs_t offset, u8 data); + void d40000_w(offs_t offset, u8 data); + void d80000_w(offs_t offset, u8 data); + + void main_map(address_map &map); + void panel_map(address_map &map); + void panel_ext_map(address_map &map); + + required_device m_maincpu; + required_device m_panelcpu; +}; + +u8 hohnadam_state::c005fb_r() +{ + return 0x20; +} + +void hohnadam_state::d00000_w(offs_t offset, u8 data) +{ +} + +void hohnadam_state::d40000_w(offs_t offset, u8 data) +{ +} + +void hohnadam_state::d80000_w(offs_t offset, u8 data) +{ +} + +void hohnadam_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom().region("program", 0); + map(0x400000, 0x5fffff).ram(); + map(0x800000, 0x80ffff).ram().share("nvram"); + map(0xc004f2, 0xc004f3).nopr(); + map(0xc005fb, 0xc005fb).r(FUNC(hohnadam_state::c005fb_r)); + map(0xc007e4, 0xc007e5).nopw(); + map(0xc007e8, 0xc007e9).nopr(); + map(0xc007f2, 0xc007f3).noprw(); + map(0xd00000, 0xd00007).w(FUNC(hohnadam_state::d00000_w)).umask16(0x00ff); + map(0xd40000, 0xd40009).w(FUNC(hohnadam_state::d40000_w)).umask16(0x00ff); + map(0xd80000, 0xd80009).w(FUNC(hohnadam_state::d80000_w)).umask16(0x00ff); +} + +void hohnadam_state::panel_map(address_map &map) +{ + map(0x0000, 0xffff).rom().region("panel", 0); +} + +void hohnadam_state::panel_ext_map(address_map &map) +{ + map(0x001d, 0x001d).noprw(); +} + +static INPUT_PORTS_START(hohnadam) +INPUT_PORTS_END + +void hohnadam_state::hohnadam(machine_config &config) +{ + M68000(config, m_maincpu, 12000000); // MC68000FN12, unknown clock + m_maincpu->set_addrmap(AS_PROGRAM, &hohnadam_state::main_map); + + I8032(config, m_panelcpu, 12000000); // unknown type and clock + m_panelcpu->set_addrmap(AS_PROGRAM, &hohnadam_state::panel_map); + m_panelcpu->set_addrmap(AS_IO, &hohnadam_state::panel_ext_map); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 2x HY62256ALJ-70 + CR2032 battery + + //F82C721(config, "io", 24000000); + + // TODO: LCD, everything else +} + +ROM_START(hohnadam) + ROM_REGION16_BE(0x100000, "program", 0) + ROM_LOAD16_BYTE("adam u33_2 version 1.1.bin", 0x00000, 0x80000, CRC(e5d60622) SHA1(9e105ed6d403ecf6713cd4c6643fab9586f25217)) // TMS27C040-10 + ROM_LOAD16_BYTE("adam u32_2 version 1.1.bin", 0x00001, 0x80000, CRC(7c52d112) SHA1(34b1f88ae4a2a575a41e542ab41159b25cb6fc6e)) // TMS27C040-10 + + ROM_REGION(0x20000, "panel", 0) + ROM_LOAD("adam panel version 1.1.bin", 0x00000, 0x20000, CRC(69c45992) SHA1(91c278defdf790ecdd3ff6df90e29d0bf508ba44)) // TMS27C010A-10 + + ROM_REGION16_BE(0x300000, "waveroms", 0) + ROM_LOAD16_BYTE("adam u36 1.bin", 0x000001, 0x080000, CRC(879b0acb) SHA1(7b86069e0939608ea2863fc56a91c344c8360add)) // Am27C040-150DC + ROM_LOAD16_BYTE("adam u37_2.bin", 0x100001, 0x080000, CRC(dadc8167) SHA1(e37c46651868bb89dc9c768d46de34f1aedfbac9)) // Am27C040-150DC + ROM_LOAD16_BYTE("adam u38_2.bin", 0x200001, 0x080000, CRC(d522acb3) SHA1(e4941163d4232a7ed119848e900c4848bef181f9)) // Am27C040-150DC + ROM_LOAD16_BYTE("adam u39_2.bin", 0x000000, 0x080000, CRC(70990980) SHA1(7773d2e184b11cd83ac9682699bb7790d4455e6b)) // Am27C040-150DC + ROM_LOAD16_BYTE("adam u40 1.bin", 0x100000, 0x080000, CRC(6cfa9a26) SHA1(3d07b3d3c2934dd8c917da6115a9786da64ba98f)) // Am27C040-150DC + ROM_LOAD16_BYTE("adam u41_2.bin", 0x200000, 0x080000, CRC(46af2b27) SHA1(bb8d75afd65d25678797ee4b34cce3bcb7f13e5b)) // Am27C040-150DC + + ROM_REGION(0x400000, "maskroms", 0) + ROM_LOAD("dream-gms931600n.u47", 0x000000, 0x200000, NO_DUMP) + ROM_LOAD("dream-gms931601n.u48", 0x200000, 0x200000, NO_DUMP) +ROM_END + +} // anonymous namespace + +SYST(1994, hohnadam, 0, 0, hohnadam, hohnadam, hohnadam_state, empty_init, "Hohner", "ADAM Advanced Digital/Analog Musical Instrument", MACHINE_IS_SKELETON) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f2ef211ab2e..e852713a822 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16575,6 +16575,9 @@ xrally // 003 1998/05/13 Xtreme Rally / Off Beat Racer! @source:hobbyplay.cpp unkhpslt // +@source:hohnadam.cpp +hohnadam // + @source:holeland.cpp crzrally // (c) 1985 Tecfri crzrallya // (c) 1985 Tecfri diff --git a/src/mame/mess.flt b/src/mame/mess.flt index babfebc8e37..87504178fd7 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -401,6 +401,7 @@ hh_sm510.cpp hh_tms1k.cpp hh_ucom4.cpp hk68v10.cpp +hohnadam.cpp homelab.cpp homez80.cpp horizon.cpp