(MESS) msx.c: Added MIDI ports to the NMS1205 music module; haven't been able to test them yet. (nw)

This commit is contained in:
Wilbert Pol 2014-05-24 19:31:28 +00:00
parent bd38d76c55
commit c6395e985d
2 changed files with 28 additions and 1 deletions

View File

@ -32,7 +32,7 @@ The keyboards:
TODO:
- Implement MIDI in/out/through
- Test MIDI in/out/through
- Sample RAM
- Implement NMS-1160 keyboard
- HX-MU901: ENTER/SELECT keys and multi sensors
@ -112,6 +112,8 @@ msx_cart_msx_audio_nms1205::msx_cart_msx_audio_nms1205(const machine_config &mco
, msx_cart_interface(mconfig, *this)
, m_y8950(*this, "y8950")
, m_acia6850(*this, "acia6850")
, m_mdout(*this, "mdout")
, m_mdthru(*this, "mdthru")
{
}
@ -128,6 +130,14 @@ static MACHINE_CONFIG_FRAGMENT( msx_audio_nms1205 )
// There is a 2 MHz crystal on the PCB, the 6850 TX and RX clocks are derived from it
MCFG_DEVICE_ADD("acia6850", ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_MIDI_RX_HANDLER(WRITELINE(msx_cart_msx_audio_nms1205, midi_in))
MCFG_MIDI_PORT_ADD("mdthru", midiout_slot, "midiout")
MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
MACHINE_CONFIG_END
@ -148,12 +158,24 @@ const rom_entry *msx_cart_msx_audio_nms1205::device_rom_region() const
}
WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205::midi_in)
{
// MIDI in signals is sent to both the 6850 and the MIDI thru output port
m_acia6850->write_rxd(state);
m_mdthru->write_txd(state);
}
void msx_cart_msx_audio_nms1205::device_start()
{
// Install IO read/write handlers
address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO);
space.install_write_handler(0xc0, 0xc1, write8_delegate(FUNC(y8950_device::write), m_y8950.target()));
space.install_read_handler(0xc0, 0xc1, read8_delegate(FUNC(y8950_device::read), m_y8950.target()));
space.install_write_handler(0x00, 0x00, write8_delegate(FUNC(acia6850_device::control_w), m_acia6850.target()));
space.install_write_handler(0x01, 0x01, write8_delegate(FUNC(acia6850_device::data_w), m_acia6850.target()));
space.install_read_handler(0x04,0x04, read8_delegate(FUNC(acia6850_device::status_r), m_acia6850.target()));
space.install_read_handler(0x05,0x05, read8_delegate(FUNC(acia6850_device::data_r), m_acia6850.target()));
}

View File

@ -4,6 +4,7 @@
#include "bus/msx_cart/cartridge.h"
#include "sound/8950intf.h"
#include "machine/6850acia.h"
#include "bus/midi/midi.h"
extern const device_type MSX_CART_MSX_AUDIO_NMS1205;
@ -45,9 +46,13 @@ public:
virtual DECLARE_READ8_MEMBER(read_cart);
DECLARE_WRITE_LINE_MEMBER(midi_in);
private:
required_device<y8950_device> m_y8950;
required_device<acia6850_device> m_acia6850;
required_device<midi_port_device> m_mdout;
required_device<midi_port_device> m_mdthru;
};