mirror of
https://github.com/holub/mame
synced 2025-04-26 10:13:37 +03:00
New machines marked as NOT_WORKING
---------------------------------- Roland Juno-6 (JU-6) Polyphonic Synthesizer [DBWBP]
This commit is contained in:
parent
89d4403dcb
commit
2ca1e6fe12
@ -3238,6 +3238,7 @@ files {
|
||||
createMESSProjects(_target, _subtarget, "roland")
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/alphajuno.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/juno6.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_cm32p.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_d10.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_d50.cpp",
|
||||
|
129
src/mame/drivers/juno6.cpp
Normal file
129
src/mame/drivers/juno6.cpp
Normal file
@ -0,0 +1,129 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/****************************************************************************
|
||||
|
||||
Skeleton driver for Roland Juno-6 analog synthesizer.
|
||||
|
||||
The original JU-6 had no MIDI support, but this feature could be and was
|
||||
added through retrofits since the same 8049 program supports MIDI on the
|
||||
Juno-60.
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/mcs48/mcs48.h"
|
||||
#include "machine/74259.h"
|
||||
#include "machine/clock.h"
|
||||
#include "machine/i8251.h"
|
||||
#include "machine/pit8253.h"
|
||||
|
||||
class juno6_state : public driver_device
|
||||
{
|
||||
public:
|
||||
juno6_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_pit(*this, "pit%u", 1U)
|
||||
, m_latch(*this, "latch")
|
||||
, m_usart(*this, "usart")
|
||||
{
|
||||
}
|
||||
|
||||
void juno6(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
u8 keyboard_r();
|
||||
u8 db_r();
|
||||
void db_w(u8 data);
|
||||
void p2_w(u8 data);
|
||||
|
||||
void ext_map(address_map &map);
|
||||
|
||||
required_device<mcs48_cpu_device> m_maincpu;
|
||||
required_device_array<pit8253_device, 2> m_pit;
|
||||
required_device<cd4099_device> m_latch;
|
||||
required_device<i8251_device> m_usart;
|
||||
|
||||
u8 m_db;
|
||||
};
|
||||
|
||||
void juno6_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_db));
|
||||
}
|
||||
|
||||
|
||||
u8 juno6_state::keyboard_r()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 juno6_state::db_r()
|
||||
{
|
||||
u8 p2 = m_maincpu->p2_r();
|
||||
|
||||
if (!BIT(p2, 3))
|
||||
return m_usart->read(p2 & 0x01);
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
void juno6_state::db_w(u8 data)
|
||||
{
|
||||
u8 p2 = m_maincpu->p2_r();
|
||||
|
||||
if (!BIT(p2, 3))
|
||||
m_usart->write(p2 & 0x01, data);
|
||||
if (!BIT(p2, 4))
|
||||
m_pit[0]->write(p2 & 0x03, data);
|
||||
if (!BIT(p2, 5))
|
||||
m_pit[1]->write(p2 & 0x03, data);
|
||||
|
||||
m_db = data;
|
||||
}
|
||||
|
||||
void juno6_state::p2_w(u8 data)
|
||||
{
|
||||
if (!BIT(data, 7))
|
||||
m_latch->write_bit(data & 0x07, BIT(m_db, 7));
|
||||
}
|
||||
|
||||
void juno6_state::ext_map(address_map &map)
|
||||
{
|
||||
map(0x00, 0x00).mirror(0xff).r(FUNC(juno6_state::db_r));
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START(juno6)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void juno6_state::juno6(machine_config &config)
|
||||
{
|
||||
I8049(config, m_maincpu, 11_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_IO, &juno6_state::ext_map);
|
||||
m_maincpu->p1_in_cb().set(FUNC(juno6_state::keyboard_r));
|
||||
m_maincpu->bus_out_cb().set(FUNC(juno6_state::db_w));
|
||||
m_maincpu->p2_out_cb().set(FUNC(juno6_state::p2_w));
|
||||
|
||||
PIT8253(config, m_pit[0]);
|
||||
PIT8253(config, m_pit[1]);
|
||||
|
||||
CD4099(config, m_latch);
|
||||
|
||||
I8251(config, m_usart, 4_MHz_XTAL / 2);
|
||||
m_usart->rts_handler().set(m_usart, FUNC(i8251_device::write_cts));
|
||||
|
||||
clock_device &midiclock(CLOCK(config, "midiclock", 4_MHz_XTAL / 8));
|
||||
midiclock.signal_handler().set(m_usart, FUNC(i8251_device::write_txc));
|
||||
midiclock.signal_handler().append(m_usart, FUNC(i8251_device::write_txc));
|
||||
}
|
||||
|
||||
ROM_START(juno6)
|
||||
ROM_REGION(0x800, "maincpu", 0)
|
||||
ROM_LOAD("upd8049c-238.ic56", 0x000, 0x800, CRC(18fa7cc5) SHA1(eebda5bbe6c3153a5549de1853e69da403811df3))
|
||||
ROM_END
|
||||
|
||||
SYST(1982, juno6, 0, 0, juno6, juno6, juno6_state, empty_init, "Roland", "Juno-6 (JU-6) Polyphonic Synthesizer", MACHINE_IS_SKELETON)
|
@ -18389,6 +18389,9 @@ jungleyo
|
||||
@source:junior.cpp
|
||||
junior //
|
||||
|
||||
@source:juno6.cpp
|
||||
juno6 //
|
||||
|
||||
@source:junofrst.cpp
|
||||
junofrst // GX310 (c) 1983 Konami
|
||||
junofrstg // GX310 (c) 1983 Konami + Gottlieb license
|
||||
|
@ -429,6 +429,7 @@ jtc.cpp
|
||||
juicebox.cpp
|
||||
juku.cpp
|
||||
junior.cpp
|
||||
juno6.cpp
|
||||
jupace.cpp
|
||||
jupiter.cpp
|
||||
k1003.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user