1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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<cpu_device> m_maincpu;
required_device<mcs51_cpu_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)
|