summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/bus/c64
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2014-02-21 09:51:59 +0000
committer smf- <smf-@users.noreply.github.com>2014-02-21 09:51:59 +0000
commitab02ed5e2d53f007be1ea38095760063cb0dc7eb (patch)
treef83594a869b72a2eeed070abb72b0b8cc56677ed /src/emu/bus/c64
parentc386707cc7c4e08d79dd7442968c7402ce58e818 (diff)
Rewritten 6850 based on datasheet using external CLOCK & removed MIDI clock hacks. Standardised COM8116 DEVCB2 callbacks. GUS gf1_device device derives from acia6850_device to gain access to the tx & rx irq state, rather than exposing it with a public method. [smf]
Diffstat (limited to 'src/emu/bus/c64')
-rw-r--r--src/emu/bus/c64/midi_maplin.c42
-rw-r--r--src/emu/bus/c64/midi_maplin.h4
-rw-r--r--src/emu/bus/c64/midi_namesoft.c42
-rw-r--r--src/emu/bus/c64/midi_namesoft.h5
-rw-r--r--src/emu/bus/c64/midi_passport.c43
-rw-r--r--src/emu/bus/c64/midi_passport.h4
-rw-r--r--src/emu/bus/c64/midi_sci.c42
-rw-r--r--src/emu/bus/c64/midi_sci.h4
-rw-r--r--src/emu/bus/c64/midi_siel.c42
-rw-r--r--src/emu/bus/c64/midi_siel.h4
10 files changed, 87 insertions, 145 deletions
diff --git a/src/emu/bus/c64/midi_maplin.c b/src/emu/bus/c64/midi_maplin.c
index df6830064c2..50887818c39 100644
--- a/src/emu/bus/c64/midi_maplin.c
+++ b/src/emu/bus/c64/midi_maplin.c
@@ -10,6 +10,7 @@
**********************************************************************/
#include "midi_maplin.h"
+#include "machine/clock.h"
#include "bus/midi/midi.h"
#include "bus/midi/midiinport.h"
#include "bus/midi/midioutport.h"
@@ -31,25 +32,11 @@
const device_type C64_MIDI_MAPLIN = &device_creator<c64_maplin_midi_cartridge_device>;
-//-------------------------------------------------
-// ACIA6850_INTERFACE( acia_intf )
-//-------------------------------------------------
-
WRITE_LINE_MEMBER( c64_maplin_midi_cartridge_device::acia_irq_w )
{
m_slot->irq_w(state);
}
-static ACIA6850_INTERFACE( acia_intf )
-{
- 500000,
- 0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER("mdout", midi_port_device, write_txd),
- DEVCB_NULL,
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_maplin_midi_cartridge_device, acia_irq_w)
-};
-
-
//-------------------------------------------------
// SLOT_INTERFACE( midiin_slot )
//-------------------------------------------------
@@ -58,14 +45,10 @@ static SLOT_INTERFACE_START( midiin_slot )
SLOT_INTERFACE("midiin", MIDIIN_PORT)
SLOT_INTERFACE_END
-WRITE_LINE_MEMBER( c64_maplin_midi_cartridge_device::midi_rx_w )
+WRITE_LINE_MEMBER( c64_maplin_midi_cartridge_device::write_acia_clock )
{
- m_acia->write_rx(state);
-
- for (int i = 0; i < 16; i++) // divider is set to 64
- {
- m_acia->rx_clock_in();
- }
+ m_acia->write_txc(state);
+ m_acia->write_rxc(state);
}
@@ -83,12 +66,17 @@ SLOT_INTERFACE_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c64_maplin_midi )
- MCFG_ACIA6850_ADD(MC6850_TAG, acia_intf)
+ MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
+ MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(c64_maplin_midi_cartridge_device, acia_irq_w))
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, c64_maplin_midi_cartridge_device, midi_rx_w))
+ MCFG_MIDI_RX_HANDLER(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxd))
MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
+
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(c64_maplin_midi_cartridge_device, write_acia_clock))
MACHINE_CONFIG_END
@@ -151,11 +139,11 @@ UINT8 c64_maplin_midi_cartridge_device::c64_cd_r(address_space &space, offs_t of
switch (offset & 0xff)
{
case 0:
- data = m_acia->status_read(space, 0);
+ data = m_acia->status_r(space, 0);
break;
case 1:
- data = m_acia->data_read(space, 0);
+ data = m_acia->data_r(space, 0);
break;
}
}
@@ -175,11 +163,11 @@ void c64_maplin_midi_cartridge_device::c64_cd_w(address_space &space, offs_t off
switch (offset & 0xff)
{
case 0:
- m_acia->control_write(space, 0, data);
+ m_acia->control_w(space, 0, data);
break;
case 1:
- m_acia->data_write(space, 0, data);
+ m_acia->data_w(space, 0, data);
break;
}
}
diff --git a/src/emu/bus/c64/midi_maplin.h b/src/emu/bus/c64/midi_maplin.h
index c9ddf94dbe4..27f7720e08e 100644
--- a/src/emu/bus/c64/midi_maplin.h
+++ b/src/emu/bus/c64/midi_maplin.h
@@ -26,7 +26,7 @@
// ======================> c64_maplin_midi_cartridge_device
class c64_maplin_midi_cartridge_device : public device_t,
- public device_c64_expansion_card_interface
+ public device_c64_expansion_card_interface
{
public:
// construction/destruction
@@ -36,7 +36,7 @@ public:
virtual machine_config_constructor device_mconfig_additions() const;
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
- DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
+ DECLARE_WRITE_LINE_MEMBER( write_acia_clock );
protected:
// device-level overrides
diff --git a/src/emu/bus/c64/midi_namesoft.c b/src/emu/bus/c64/midi_namesoft.c
index aea458cbd5a..f594a415882 100644
--- a/src/emu/bus/c64/midi_namesoft.c
+++ b/src/emu/bus/c64/midi_namesoft.c
@@ -10,6 +10,7 @@
**********************************************************************/
#include "midi_namesoft.h"
+#include "machine/clock.h"
#include "bus/midi/midi.h"
#include "bus/midi/midiinport.h"
#include "bus/midi/midioutport.h"
@@ -31,25 +32,11 @@
const device_type C64_MIDI_NAMESOFT = &device_creator<c64_namesoft_midi_cartridge_device>;
-//-------------------------------------------------
-// ACIA6850_INTERFACE( acia_intf )
-//-------------------------------------------------
-
WRITE_LINE_MEMBER( c64_namesoft_midi_cartridge_device::acia_irq_w )
{
m_slot->nmi_w(state);
}
-static ACIA6850_INTERFACE( acia_intf )
-{
- 500000,
- 0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER("mdout", midi_port_device, write_txd),
- DEVCB_NULL,
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_namesoft_midi_cartridge_device, acia_irq_w)
-};
-
-
//-------------------------------------------------
// SLOT_INTERFACE( midiin_slot )
//-------------------------------------------------
@@ -58,14 +45,10 @@ static SLOT_INTERFACE_START( midiin_slot )
SLOT_INTERFACE("midiin", MIDIIN_PORT)
SLOT_INTERFACE_END
-WRITE_LINE_MEMBER( c64_namesoft_midi_cartridge_device::midi_rx_w )
+WRITE_LINE_MEMBER( c64_namesoft_midi_cartridge_device::write_acia_clock )
{
- m_acia->write_rx(state);
-
- for (int i = 0; i < 16; i++) // divider is set to 16
- {
- m_acia->rx_clock_in();
- }
+ m_acia->write_txc(state);
+ m_acia->write_rxc(state);
}
@@ -83,12 +66,17 @@ SLOT_INTERFACE_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c64_passport_midi )
- MCFG_ACIA6850_ADD(MC6850_TAG, acia_intf)
+ MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
+ MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(c64_namesoft_midi_cartridge_device, acia_irq_w))
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, c64_namesoft_midi_cartridge_device, midi_rx_w))
+ MCFG_MIDI_RX_HANDLER(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxd))
MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
+
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(c64_namesoft_midi_cartridge_device, write_acia_clock))
MACHINE_CONFIG_END
@@ -149,11 +137,11 @@ UINT8 c64_namesoft_midi_cartridge_device::c64_cd_r(address_space &space, offs_t
switch (offset & 0xff)
{
case 2:
- data = m_acia->status_read(space, 0);
+ data = m_acia->status_r(space, 0);
break;
case 3:
- data = m_acia->data_read(space, 0);
+ data = m_acia->data_r(space, 0);
break;
}
}
@@ -173,11 +161,11 @@ void c64_namesoft_midi_cartridge_device::c64_cd_w(address_space &space, offs_t o
switch (offset & 0xff)
{
case 0:
- m_acia->control_write(space, 0, data);
+ m_acia->control_w(space, 0, data);
break;
case 1:
- m_acia->data_write(space, 0, data);
+ m_acia->data_w(space, 0, data);
break;
}
}
diff --git a/src/emu/bus/c64/midi_namesoft.h b/src/emu/bus/c64/midi_namesoft.h
index 547fee0140a..65c42385b9a 100644
--- a/src/emu/bus/c64/midi_namesoft.h
+++ b/src/emu/bus/c64/midi_namesoft.h
@@ -26,7 +26,7 @@
// ======================> c64_namesoft_midi_cartridge_device
class c64_namesoft_midi_cartridge_device : public device_t,
- public device_c64_expansion_card_interface
+ public device_c64_expansion_card_interface
{
public:
// construction/destruction
@@ -36,7 +36,8 @@ public:
virtual machine_config_constructor device_mconfig_additions() const;
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
- DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
+ DECLARE_WRITE_LINE_MEMBER( write_acia_clock );
+
protected:
// device-level overrides
virtual void device_start();
diff --git a/src/emu/bus/c64/midi_passport.c b/src/emu/bus/c64/midi_passport.c
index e28b0182553..e31203093d7 100644
--- a/src/emu/bus/c64/midi_passport.c
+++ b/src/emu/bus/c64/midi_passport.c
@@ -10,6 +10,7 @@
**********************************************************************/
#include "midi_passport.h"
+#include "machine/clock.h"
#include "bus/midi/midi.h"
#include "bus/midi/midiinport.h"
#include "bus/midi/midioutport.h"
@@ -52,10 +53,6 @@ static const ptm6840_interface ptm_intf =
};
-//-------------------------------------------------
-// ACIA6850_INTERFACE( acia_intf )
-//-------------------------------------------------
-
WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::acia_irq_w )
{
m_acia_irq = state;
@@ -63,16 +60,6 @@ WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::acia_irq_w )
m_slot->irq_w(m_ptm_irq || m_acia_irq);
}
-static ACIA6850_INTERFACE( acia_intf )
-{
- 500000,
- 0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER("mdout", midi_port_device, write_txd),
- DEVCB_NULL,
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_passport_midi_cartridge_device, acia_irq_w)
-};
-
-
//-------------------------------------------------
// SLOT_INTERFACE( midiin_slot )
//-------------------------------------------------
@@ -81,14 +68,10 @@ static SLOT_INTERFACE_START( midiin_slot )
SLOT_INTERFACE("midiin", MIDIIN_PORT)
SLOT_INTERFACE_END
-WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::midi_rx_w )
+WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::write_acia_clock )
{
- m_acia->write_rx(state);
-
- for (int i = 0; i < 16; i++) // divider is set to 16
- {
- m_acia->rx_clock_in();
- }
+ m_acia->write_txc(state);
+ m_acia->write_rxc(state);
}
@@ -106,13 +89,19 @@ SLOT_INTERFACE_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c64_passport_midi )
- MCFG_ACIA6850_ADD(MC6850_TAG, acia_intf)
+ MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
+ MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(c64_passport_midi_cartridge_device, acia_irq_w))
+
MCFG_PTM6840_ADD(MC6840_TAG, ptm_intf)
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, c64_passport_midi_cartridge_device, midi_rx_w))
+ MCFG_MIDI_RX_HANDLER(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxd))
MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
+
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16) /// TODO: work out if the clock should come from the 6840
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(c64_passport_midi_cartridge_device, write_acia_clock))
MACHINE_CONFIG_END
@@ -186,11 +175,11 @@ UINT8 c64_passport_midi_cartridge_device::c64_cd_r(address_space &space, offs_t
break;
case 8:
- data = m_acia->status_read(space, 0);
+ data = m_acia->status_r(space, 0);
break;
case 9:
- data = m_acia->data_read(space, 0);
+ data = m_acia->data_r(space, 0);
break;
}
}
@@ -215,11 +204,11 @@ void c64_passport_midi_cartridge_device::c64_cd_w(address_space &space, offs_t o
break;
case 8:
- m_acia->control_write(space, 0, data);
+ m_acia->control_w(space, 0, data);
break;
case 9:
- m_acia->data_write(space, 0, data);
+ m_acia->data_w(space, 0, data);
break;
case 0x30:
diff --git a/src/emu/bus/c64/midi_passport.h b/src/emu/bus/c64/midi_passport.h
index a126e97d56d..80dcc48d493 100644
--- a/src/emu/bus/c64/midi_passport.h
+++ b/src/emu/bus/c64/midi_passport.h
@@ -27,7 +27,7 @@
// ======================> c64_passport_midi_cartridge_device
class c64_passport_midi_cartridge_device : public device_t,
- public device_c64_expansion_card_interface
+ public device_c64_expansion_card_interface
{
public:
// construction/destruction
@@ -38,7 +38,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( ptm_irq_w );
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
- DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
+ DECLARE_WRITE_LINE_MEMBER( write_acia_clock );
protected:
// device-level overrides
diff --git a/src/emu/bus/c64/midi_sci.c b/src/emu/bus/c64/midi_sci.c
index ef39829bfb7..b1fc4021496 100644
--- a/src/emu/bus/c64/midi_sci.c
+++ b/src/emu/bus/c64/midi_sci.c
@@ -10,6 +10,7 @@
**********************************************************************/
#include "midi_sci.h"
+#include "machine/clock.h"
#include "bus/midi/midi.h"
#include "bus/midi/midiinport.h"
#include "bus/midi/midioutport.h"
@@ -31,25 +32,11 @@
const device_type C64_MIDI_SCI = &device_creator<c64_sequential_midi_cartridge_device>;
-//-------------------------------------------------
-// ACIA6850_INTERFACE( acia_intf )
-//-------------------------------------------------
-
WRITE_LINE_MEMBER( c64_sequential_midi_cartridge_device::acia_irq_w )
{
m_slot->irq_w(state);
}
-static ACIA6850_INTERFACE( acia_intf )
-{
- 500000,
- 0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER("mdout", midi_port_device, write_txd),
- DEVCB_NULL,
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sequential_midi_cartridge_device, acia_irq_w)
-};
-
-
//-------------------------------------------------
// SLOT_INTERFACE( midiin_slot )
//-------------------------------------------------
@@ -58,14 +45,10 @@ static SLOT_INTERFACE_START( midiin_slot )
SLOT_INTERFACE("midiin", MIDIIN_PORT)
SLOT_INTERFACE_END
-WRITE_LINE_MEMBER( c64_sequential_midi_cartridge_device::midi_rx_w )
+WRITE_LINE_MEMBER( c64_sequential_midi_cartridge_device::write_acia_clock )
{
- m_acia->write_rx(state);
-
- for (int i = 0; i < 16; i++) // divider is set to 16
- {
- m_acia->rx_clock_in();
- }
+ m_acia->write_txc(state);
+ m_acia->write_rxc(state);
}
@@ -83,12 +66,17 @@ SLOT_INTERFACE_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c64_sequential_midi )
- MCFG_ACIA6850_ADD(MC6850_TAG, acia_intf)
+ MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
+ MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(c64_sequential_midi_cartridge_device, acia_irq_w))
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, c64_sequential_midi_cartridge_device, midi_rx_w))
+ MCFG_MIDI_RX_HANDLER(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxd))
MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
+
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(c64_sequential_midi_cartridge_device, write_acia_clock))
MACHINE_CONFIG_END
@@ -150,11 +138,11 @@ UINT8 c64_sequential_midi_cartridge_device::c64_cd_r(address_space &space, offs_
switch (offset & 0xff)
{
case 2:
- data = m_acia->status_read(space, 0);
+ data = m_acia->status_r(space, 0);
break;
case 3:
- data = m_acia->data_read(space, 0);
+ data = m_acia->data_r(space, 0);
break;
}
}
@@ -174,11 +162,11 @@ void c64_sequential_midi_cartridge_device::c64_cd_w(address_space &space, offs_t
switch (offset & 0xff)
{
case 0:
- m_acia->control_write(space, 0, data);
+ m_acia->control_w(space, 0, data);
break;
case 1:
- m_acia->data_write(space, 0, data);
+ m_acia->data_w(space, 0, data);
break;
}
}
diff --git a/src/emu/bus/c64/midi_sci.h b/src/emu/bus/c64/midi_sci.h
index 1f5010ff3c6..e284cf61097 100644
--- a/src/emu/bus/c64/midi_sci.h
+++ b/src/emu/bus/c64/midi_sci.h
@@ -26,7 +26,7 @@
// ======================> c64_sequential_midi_cartridge_device
class c64_sequential_midi_cartridge_device : public device_t,
- public device_c64_expansion_card_interface
+ public device_c64_expansion_card_interface
{
public:
// construction/destruction
@@ -36,7 +36,7 @@ public:
virtual machine_config_constructor device_mconfig_additions() const;
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
- DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
+ DECLARE_WRITE_LINE_MEMBER( write_acia_clock );
protected:
// device-level overrides
diff --git a/src/emu/bus/c64/midi_siel.c b/src/emu/bus/c64/midi_siel.c
index 7acda555651..61af7677ded 100644
--- a/src/emu/bus/c64/midi_siel.c
+++ b/src/emu/bus/c64/midi_siel.c
@@ -10,6 +10,7 @@
**********************************************************************/
#include "midi_siel.h"
+#include "machine/clock.h"
#include "bus/midi/midi.h"
#include "bus/midi/midiinport.h"
#include "bus/midi/midioutport.h"
@@ -31,25 +32,11 @@
const device_type C64_MIDI_SIEL = &device_creator<c64_siel_midi_cartridge_device>;
-//-------------------------------------------------
-// ACIA6850_INTERFACE( acia_intf )
-//-------------------------------------------------
-
WRITE_LINE_MEMBER( c64_siel_midi_cartridge_device::acia_irq_w )
{
m_slot->irq_w(state);
}
-static ACIA6850_INTERFACE( acia_intf )
-{
- XTAL_2MHz,
- 0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER("mdout", midi_port_device, write_txd),
- DEVCB_NULL,
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_siel_midi_cartridge_device, acia_irq_w)
-};
-
-
//-------------------------------------------------
// SLOT_INTERFACE( midiin_slot )
//-------------------------------------------------
@@ -58,14 +45,10 @@ static SLOT_INTERFACE_START( midiin_slot )
SLOT_INTERFACE("midiin", MIDIIN_PORT)
SLOT_INTERFACE_END
-WRITE_LINE_MEMBER( c64_siel_midi_cartridge_device::midi_rx_w )
+WRITE_LINE_MEMBER( c64_siel_midi_cartridge_device::write_acia_clock )
{
- m_acia->write_rx(state);
-
- for (int i = 0; i < 64; i++) // divider is set to 64
- {
- m_acia->rx_clock_in();
- }
+ m_acia->write_txc(state);
+ m_acia->write_rxc(state);
}
@@ -83,12 +66,17 @@ SLOT_INTERFACE_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c64_siel_midi )
- MCFG_ACIA6850_ADD(MC6850_TAG, acia_intf)
+ MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
+ MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(c64_siel_midi_cartridge_device, acia_irq_w))
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
- MCFG_MIDI_RX_HANDLER(DEVWRITELINE(DEVICE_SELF, c64_siel_midi_cartridge_device, midi_rx_w))
+ MCFG_MIDI_RX_HANDLER(DEVWRITELINE(MC6850_TAG, acia6850_device, write_rxd))
MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
+
+ MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(c64_siel_midi_cartridge_device, write_acia_clock))
MACHINE_CONFIG_END
@@ -151,11 +139,11 @@ UINT8 c64_siel_midi_cartridge_device::c64_cd_r(address_space &space, offs_t offs
switch (offset & 0xff)
{
case 6:
- data = m_acia->status_read(space, 0);
+ data = m_acia->status_r(space, 0);
break;
case 7:
- data = m_acia->data_read(space, 0);
+ data = m_acia->data_r(space, 0);
break;
}
}
@@ -175,11 +163,11 @@ void c64_siel_midi_cartridge_device::c64_cd_w(address_space &space, offs_t offse
switch (offset & 0xff)
{
case 4:
- m_acia->control_write(space, 0, data);
+ m_acia->control_w(space, 0, data);
break;
case 5:
- m_acia->data_write(space, 0, data);
+ m_acia->data_w(space, 0, data);
break;
}
}
diff --git a/src/emu/bus/c64/midi_siel.h b/src/emu/bus/c64/midi_siel.h
index a4682c488b9..fde6c048afd 100644
--- a/src/emu/bus/c64/midi_siel.h
+++ b/src/emu/bus/c64/midi_siel.h
@@ -26,7 +26,7 @@
// ======================> c64_siel_midi_cartridge_device
class c64_siel_midi_cartridge_device : public device_t,
- public device_c64_expansion_card_interface
+ public device_c64_expansion_card_interface
{
public:
// construction/destruction
@@ -36,7 +36,7 @@ public:
virtual machine_config_constructor device_mconfig_additions() const;
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
- DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
+ DECLARE_WRITE_LINE_MEMBER( write_acia_clock );
protected:
// device-level overrides