s220, s550: Add BU3905 skeleton (nw)

This commit is contained in:
AJR 2020-05-25 09:19:32 -04:00
parent 2a755734ef
commit 31ccd34584
5 changed files with 110 additions and 3 deletions

View File

@ -3323,6 +3323,8 @@ files {
MAME_DIR .. "src/mame/drivers/roland_tr606.cpp",
MAME_DIR .. "src/mame/drivers/roland_tr707.cpp",
MAME_DIR .. "src/mame/drivers/roland_u20.cpp",
MAME_DIR .. "src/mame/audio/bu3905.cpp",
MAME_DIR .. "src/mame/audio/bu3905.h",
MAME_DIR .. "src/mame/audio/jx8p_synth.cpp",
MAME_DIR .. "src/mame/audio/jx8p_synth.h",
MAME_DIR .. "src/mame/machine/mb62h195.cpp",

31
src/mame/audio/bu3905.cpp Normal file
View File

@ -0,0 +1,31 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/****************************************************************************
Skeleton device for Roland BU3905 output assigner gate array.
This 42-pin IC has Roland part number 15229873. Most of its outputs
are used to control analog switches. The CE0 and XRST inputs are
normally tied to Vcc.
****************************************************************************/
#include "emu.h"
#include "bu3905.h"
// device type definition
DEFINE_DEVICE_TYPE(BU3905, bu3905_device, "bu3905", "Roland BU3905S R11-0006 Output Assigner")
bu3905_device::bu3905_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, BU3905, tag, owner, clock)
{
}
void bu3905_device::device_start()
{
}
void bu3905_device::write(offs_t offset, u8 data)
{
logerror("%s: Writing %02X to offset %X\n", machine().describe_context(), data, offset & 0xf);
}

56
src/mame/audio/bu3905.h Normal file
View File

@ -0,0 +1,56 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/****************************************************************************
_____ _____
XCE2 1 |* \_/ | 42 VDD
XCE1 2 | | 41 Q7
CE0 3 | | 40 Q6
D7 4 | | 39 Q5
D6 5 | | 38 Q4
D5 6 | | 37 Q3
D4 7 | | 36 Q2
D3 8 | | 35 Q1
D2 9 | | 34 Q0
D1 10 | | 33 XQ7
NC 11 | BU3905S | 32 NC
D0 12 | | 31 XQ6
A3 13 | | 30 XQ5
A2 14 | | 29 XQ4
A1 15 | | 28 XQ3
A0 16 | | 27 XQ2
CH0 17 | | 26 XQ1
CH1 18 | | 25 XQ0
CH2 19 | | 24 AXO
XEN 20 | | 23 AXI
GND 21 |_____________| 22 XRST
****************************************************************************/
#ifndef MAME_AUDIO_BU3905_H
#define MAME_AUDIO_BU3905_H
#pragma once
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> bu3905_device
class bu3905_device : public device_t
{
public: // construction/destruction
bu3905_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
void write(offs_t offset, u8 data);
protected:
// device-level overrides
virtual void device_start() override;
};
// device type declaration
DECLARE_DEVICE_TYPE(BU3905, bu3905_device)
#endif // MAME_AUDIO_BU3905_H

View File

@ -11,6 +11,7 @@
****************************************************************************/
#include "emu.h"
#include "audio/bu3905.h"
//#include "bus/midi/midi.h"
#include "cpu/mcs51/mcs51.h"
#include "machine/i8251.h"
@ -66,6 +67,7 @@ class roland_s220_state : public roland_s10_state
public:
roland_s220_state(const machine_config &mconfig, device_type type, const char *tag)
: roland_s10_state(mconfig, type, tag)
, m_outctrl(*this, "outctrl")
{
}
@ -80,6 +82,8 @@ private:
void led_latch2_w(u8 data);
void s220_ext_map(address_map &map);
required_device<bu3905_device> m_outctrl;
};
@ -136,6 +140,7 @@ void roland_s10_state::led_latch_w(u8 data)
void roland_s220_state::output_control_w(offs_t offset, u8 data)
{
m_outctrl->write(offset, data & 0x0f);
}
void roland_s220_state::vca_cv_w(offs_t offset, u8 data)
@ -276,6 +281,8 @@ void roland_s220_state::s220(machine_config &config)
subdevice<screen_device>("screen")->set_size(6*16, 8*2);
subdevice<screen_device>("screen")->set_visarea_full();
m_lcdc->set_pixel_update_cb(FUNC(roland_s220_state::lcd_pixel_update));
BU3905(config, m_outctrl);
}

View File

@ -7,6 +7,7 @@
****************************************************************************/
#include "emu.h"
#include "audio/bu3905.h"
//#include "bus/midi/midi.h"
#include "cpu/mcs96/i8x9x.h"
#include "imagedev/floppy.h"
@ -199,6 +200,9 @@ void roland_s50_state::s550_io_map(address_map &map)
map(0x1000, 0x1000).r(m_vdp, FUNC(tms3556_device::vram_r));
map(0x1002, 0x1002).rw(m_vdp, FUNC(tms3556_device::initptr_r), FUNC(tms3556_device::vram_w));
map(0x1004, 0x1004).rw(m_vdp, FUNC(tms3556_device::reg_r), FUNC(tms3556_device::reg_w));
//map(0x1800, 0x181f).rw(m_tvf, FUNC(mb654419u_device::read), FUNC(mb654419u_device::write)).umask16(0x00ff);
map(0x2800, 0x281f).w("outas", FUNC(bu3905_device::write)).umask16(0x00ff);
//map(0x3800, 0x381f).rw(m_scsic, FUNC(mb89352_device::read), FUNC(mb89352_device::write)).umask16(0x00ff);
//map(0x0000, 0x3fff).rw(m_wave, FUNC(rf5c16_device::read), FUNC(rf5c16_device::write)).umask16(0xff00);
}
@ -212,7 +216,7 @@ void roland_w30_state::w30_mem_map(address_map &map)
map(0xc600, 0xc600).rw(FUNC(roland_w30_state::psram_bank_r), FUNC(roland_w30_state::psram_bank_w));
map(0xc800, 0xc807).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff);
map(0xd806, 0xd806).r(FUNC(roland_w30_state::unknown_status_r));
//map(0xe000, 0xe01f).rw("scsic", FUNC(mb89352_device::read), FUNC(mb89352_device::write)).umask16(0x00ff);
//map(0xe000, 0xe01f).rw(m_scsic, FUNC(mb89352_device::read), FUNC(mb89352_device::write)).umask16(0x00ff);
map(0xe400, 0xe403).rw("lcd", FUNC(lm24014h_device::read), FUNC(lm24014h_device::write)).umask16(0x00ff);
//map(0xe800, 0xe83f).w("output", FUNC(upd65006gf_376_3b8_device::write)).umask16(0x00ff);
//map(0xf000, 0xf01f).rw(m_tvf, FUNC(mb654419u_device::read), FUNC(mb654419u_device::write)).umask16(0x00ff);
@ -336,6 +340,13 @@ void roland_s50_state::s550(machine_config &config)
//UPD7537(config.device_replace(), "fipcpu", 400_kHz_XTAL);
config.device_remove("keyscan");
//MB89352(config, m_scsic, 8_MHz_XTAL); // on Option Board
//m_scsic->intr_callback().set_inputline(m_maincpu, i8x9x_device::EXTINT_LINE);
BU3905(config, "outas");
//MB654419U(config, m_tvf, 20_MHz_XTAL);
}
void roland_w30_state::w30(machine_config &config)
@ -365,7 +376,7 @@ void roland_w30_state::w30(machine_config &config)
// Floppy unit: FX-354 (307F1JC)
FLOPPY_CONNECTOR(config, m_floppy, s50_floppies, "35dd", floppy_image_device::default_floppy_formats).enable_sound(true);
//MB89352(config, "scsic", 8_MHz_XTAL); // by option
//MB89352(config, m_scsic, 8_MHz_XTAL); // by option
LM24014H(config, "lcd"); // LCD unit: LM240142
@ -423,7 +434,7 @@ void roland_w30_state::s330(machine_config &config)
//R15229874(config, m_wave, 26.88_MHz_XTAL);
//m_wave->int_callback().set_inputline(m_maincpu, i8x9x_device::HSI0_LINE);
//BU3905S(config, "output");
BU3905(config, "outas");
//MB654419U(config, m_tvf, 20_MHz_XTAL);
}