diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 6a01f9d593a..6551182823e 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1183,6 +1183,7 @@ function linkProjects_mame_mess(_target, _subtarget) "intv", "isc", "jazz", + "kawai", "kaypro", "koei", "kontron", @@ -2605,6 +2606,12 @@ files { MAME_DIR .. "src/mame/machine/mct_adr.h", } +createMESSProjects(_target, _subtarget, "kawai") +files { + MAME_DIR .. "src/mame/drivers/kawai_k1.cpp", + MAME_DIR .. "src/mame/drivers/kawai_k5.cpp", +} + createMESSProjects(_target, _subtarget, "kaypro") files { MAME_DIR .. "src/mame/drivers/kaypro.cpp", diff --git a/src/devices/cpu/upd78k/upd78k3.cpp b/src/devices/cpu/upd78k/upd78k3.cpp index c22fd2ee674..f2831c543b2 100644 --- a/src/devices/cpu/upd78k/upd78k3.cpp +++ b/src/devices/cpu/upd78k/upd78k3.cpp @@ -12,7 +12,8 @@ #include "upd78k3.h" #include "upd78k3d.h" -// device type definition +// device type definitions +DEFINE_DEVICE_TYPE(UPD78310, upd78310_device, "upd78310", "NEC uPD78310") DEFINE_DEVICE_TYPE(UPD78312, upd78312_device, "upd78312", "NEC uPD78312") //************************************************************************** @@ -268,13 +269,27 @@ void upd78k3_device::state_string_export(const device_state_entry &entry, std::s //------------------------------------------------- upd78312_device::upd78312_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : upd78k3_device(mconfig, UPD78312, tag, owner, clock, - address_map_constructor(FUNC(upd78312_device::mem_map), this), + : upd78312_device(mconfig, UPD78312, tag, owner, clock, address_map_constructor(FUNC(upd78312_device::mem_map), this)) +{ +} + +upd78312_device::upd78312_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor map) + : upd78k3_device(mconfig, type, tag, owner, clock, map, address_map_constructor(FUNC(upd78312_device::sfr_map), this)) { } +//------------------------------------------------- +// upd78310_device - constructor +//------------------------------------------------- + +upd78310_device::upd78310_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : upd78312_device(mconfig, UPD78310, tag, owner, clock, address_map_constructor()) +{ +} + + //------------------------------------------------- // create_disassembler - //------------------------------------------------- diff --git a/src/devices/cpu/upd78k/upd78k3.h b/src/devices/cpu/upd78k/upd78k3.h index 1b7d9d663d5..07fcb49534a 100644 --- a/src/devices/cpu/upd78k/upd78k3.h +++ b/src/devices/cpu/upd78k/upd78k3.h @@ -98,6 +98,8 @@ public: upd78312_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); protected: + upd78312_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor map); + // device_disasm_interface overrides virtual std::unique_ptr create_disassembler() override; @@ -113,7 +115,17 @@ private: void sfr_map(address_map &map); }; -// device type declaration +// ======================> upd78310_device + +class upd78310_device : public upd78312_device +{ +public: + // device type constructor + upd78310_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); +}; + +// device type declarations +DECLARE_DEVICE_TYPE(UPD78310, upd78310_device) DECLARE_DEVICE_TYPE(UPD78312, upd78312_device) #endif // MAME_CPU_UPD78K_UPD7832_H diff --git a/src/mame/drivers/kawai_k1.cpp b/src/mame/drivers/kawai_k1.cpp new file mode 100644 index 00000000000..b348da67b36 --- /dev/null +++ b/src/mame/drivers/kawai_k1.cpp @@ -0,0 +1,94 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/*************************************************************************** + + Skeleton driver for Kawai K1 synthesizer. + +***************************************************************************/ + +#include "emu.h" +#include "cpu/upd78k/upd78k3.h" +#include "machine/nvram.h" + +class kawai_k1_state : public driver_device +{ +public: + kawai_k1_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_mpu(*this, "mpu") + { + } + + void k1(machine_config &config); + +private: + void mem_map(address_map &map); + + required_device m_mpu; +}; + + +void kawai_k1_state::mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("coderom", 0); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xbfff).ram().share("toneram"); +} + + +static INPUT_PORTS_START(k1) +INPUT_PORTS_END + +void kawai_k1_state::k1(machine_config &config) +{ + UPD78310(config, m_mpu, 12_MHz_XTAL); // µPD78310G-36 + m_mpu->set_addrmap(AS_PROGRAM, &kawai_k1_state::mem_map); + + NVRAM(config, "toneram", nvram_device::DEFAULT_ALL_0); // LC3564PL-12 + battery +} + +ROM_START(k1) + ROM_REGION(0x8000, "coderom", 0) + //ROM_SYSTEM_BIOS(0, "v1.3", "Version 1.3") + ROM_LOAD("p104c_e4dp.u20", 0x0000, 0x8000, CRC(5d266846) SHA1(42a2820873817ca05dd085dfb728e8bcadb1342a)) // TC54256AP + + ROM_REGION(0x80000, "waverom", 0) + ROM_LOAD("p106-m8dw.u8", 0x00000, 0x80000, CRC(b411b848) SHA1(1ea7ca6270b5c128f4e24fa540d205411982e4c1)) // MN234002KAD +ROM_END + +ROM_START(k1m) + ROM_REGION(0x8000, "coderom", 0) + ROM_SYSTEM_BIOS(0, "v1.5", "Version 1.5") + ROMX_LOAD("p105e.ic7", 0x0000, 0x8000, CRC(ff560060) SHA1(28d55ec30acbbc1c41d09b7704725f226d1f682c), ROM_BIOS(0)) + ROM_SYSTEM_BIOS(1, "v1.1", "Version 1.1") + ROMX_LOAD("p105a.ic7", 0x0000, 0x8000, CRC(957e8f55) SHA1(b5db5e619acc0a4af3b85a450ad51ce7f2a21900), ROM_BIOS(1)) + + ROM_REGION(0x80000, "waverom", 0) + ROM_LOAD("waverom_p106-m8dw.ic16", 0x00000, 0x80000, CRC(b411b848) SHA1(1ea7ca6270b5c128f4e24fa540d205411982e4c1)) +ROM_END + +ROM_START(k1r) + ROM_REGION(0x8000, "coderom", 0) + ROM_SYSTEM_BIOS(0, "v1.4", "Version 1.4") + ROMX_LOAD("p163a.ic7", 0x0000, 0x8000, CRC(5c0e5b4b) SHA1(2348989ddf9398d66cfdff4675dc8e56a5a20d93), ROM_BIOS(0)) + ROM_SYSTEM_BIOS(1, "v1.3", "Version 1.3") + ROMX_LOAD("k1r_v1.3.ic7", 0x0000, 0x8000, CRC(25b395b0) SHA1(1e0e1735b7f2c8cb1c9946048c5a7b8e848db2ea), ROM_BIOS(1)) + + ROM_REGION(0x80000, "waverom", 0) + ROM_LOAD("waverom_p106-m8dw.ic16", 0x00000, 0x80000, CRC(b411b848) SHA1(1ea7ca6270b5c128f4e24fa540d205411982e4c1)) +ROM_END + +ROM_START(k1rii) + ROM_REGION(0x8000, "coderom", 0) + //ROM_SYSTEM_BIOS(0, "v1.0", "Version 1.0") + ROM_LOAD("p205_e4dp.bin", 0x0000, 0x8000, CRC(be15cf1f) SHA1(07a2b7d55cc1f5c49a73e8bc2f50d2f6f0d6c4a8)) + + ROM_REGION(0x80000, "waverom", 0) + ROM_LOAD("p106.bin", 0x00000, 0x80000, NO_DUMP) +ROM_END + +SYST(1988, k1, 0, 0, k1, k1, kawai_k1_state, empty_init, "Kawai Musical Instrument Manufacturing", "K1 Digital Multi-Dimensional Synthesizer", MACHINE_IS_SKELETON) +SYST(1988, k1m, k1, 0, k1, k1, kawai_k1_state, empty_init, "Kawai Musical Instrument Manufacturing", "K1m Digital Multi-Dimensional Synthesizer Module", MACHINE_IS_SKELETON) +SYST(1988, k1r, k1, 0, k1, k1, kawai_k1_state, empty_init, "Kawai Musical Instrument Manufacturing", "K1r Digital Multi-Dimensional Synthesizer Module", MACHINE_IS_SKELETON) + +SYST(1989, k1rii, 0, 0, k1, k1, kawai_k1_state, empty_init, "Kawai Musical Instrument Manufacturing", "K1rII Digital Multi-Dimensional Synthesizer Module", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/kawai_k5.cpp b/src/mame/drivers/kawai_k5.cpp new file mode 100644 index 00000000000..e3f55b91921 --- /dev/null +++ b/src/mame/drivers/kawai_k5.cpp @@ -0,0 +1,61 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/*************************************************************************** + + Skeleton driver for Kawai K5 synthesizer. + +***************************************************************************/ + +#include "emu.h" +#include "cpu/nec/v5x.h" + +class kawai_k5_state : public driver_device +{ +public: + kawai_k5_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + { + } + + void k5(machine_config &config); + +private: + void mem_map(address_map &map); + + required_device m_maincpu; +}; + + +void kawai_k5_state::mem_map(address_map &map) +{ + map(0x00000, 0x0ffff).rom().region("coderom", 0); + map(0x14000, 0x142ff).ram(); + map(0x18000, 0x1ffff).ram(); + map(0xf0000, 0xfffff).rom().region("coderom", 0); +} + + +static INPUT_PORTS_START(k5) +INPUT_PORTS_END + +void kawai_k5_state::k5(machine_config &config) +{ + V40(config, m_maincpu, 16'000'000); // XTAL unknown + m_maincpu->set_addrmap(AS_PROGRAM, &kawai_k5_state::mem_map); +} + +ROM_START(k5) + ROM_REGION(0x10000, "coderom", 0) + //ROM_SYSTEM_BIOS(0, "v1.3", "Version 1.3") + ROM_LOAD("k5_1.3.bin", 0x00000, 0x10000, CRC(cbefe520) SHA1(8c53867ebc403d24320a57a5ff2d37ab6c1fc994)) +ROM_END + +ROM_START(k5m) + ROM_REGION(0x10000, "coderom", 0) + //ROM_SYSTEM_BIOS(0, "v1.2", "Version 1.2") + ROM_LOAD("k5m_1.2.bin", 0x00000, 0x10000, CRC(d2ab0fac) SHA1(34f0c2685b39e459a915ed5effa5b7a4cd2a1f8a)) +ROM_END + +SYST(1987, k5, 0, 0, k5, k5, kawai_k5_state, empty_init, "Kawai Musical Instrument Manufacturing", "K5 Digital Multi-Dimensional Synthesizer", MACHINE_IS_SKELETON) +SYST(1987, k5m, k5, 0, k5, k5, kawai_k5_state, empty_init, "Kawai Musical Instrument Manufacturing", "K5m Digital Multi-Dimensional Synthesizer Module", MACHINE_IS_SKELETON) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 79af63303ab..dc5cb9f9f69 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -18463,6 +18463,16 @@ wndrplnt // (c) 1987 Data East Corporation (Japan) @source:kas89.cpp kas89 // 1989, SFC S.R.L. +@source:kawai_k1.cpp +k1 // +k1m // +k1r // +k1rii // + +@source:kawai_k5.cpp +k5 // +k5m // + @source:kaypro.cpp kaypro1 // Kaypro 1 kaypro10 // Kaypro 10/83 diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 3461d9b5f0f..472e2d886e8 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -433,6 +433,8 @@ jupiter.cpp k1003.cpp k28.cpp k8915.cpp +kawai_k1.cpp +kawai_k5.cpp kaypro.cpp kc.cpp kdt6.cpp