summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2013-12-22 12:00:26 +0000
committer smf- <smf-@users.noreply.github.com>2013-12-22 12:00:26 +0000
commitb4c7b67ff9a1b12dd414502864cee66628b3bd19 (patch)
treed056e8e53b0778cde38a817def2c19eded32c18d
parent8b0c23f055c9d6869f3a909072941f5c9025bb50 (diff)
replaced read rx/cts/dcd callbacks in ACIA6850 write write handlers, which allows multiple chips to be connected together without using glue methods. [smf]
-rw-r--r--src/emu/bus/a2bus/a2midi.c27
-rw-r--r--src/emu/bus/a2bus/a2midi.h4
-rw-r--r--src/emu/bus/c64/midi_maplin.c24
-rw-r--r--src/emu/bus/c64/midi_maplin.h5
-rw-r--r--src/emu/bus/c64/midi_namesoft.c25
-rw-r--r--src/emu/bus/c64/midi_namesoft.h6
-rw-r--r--src/emu/bus/c64/midi_passport.c24
-rw-r--r--src/emu/bus/c64/midi_passport.h4
-rw-r--r--src/emu/bus/c64/midi_sci.c24
-rw-r--r--src/emu/bus/c64/midi_sci.h5
-rw-r--r--src/emu/bus/c64/midi_siel.c24
-rw-r--r--src/emu/bus/c64/midi_siel.h5
-rw-r--r--src/emu/bus/cbmiec/interpod.c3
-rw-r--r--src/emu/machine/6850acia.c55
-rw-r--r--src/emu/machine/6850acia.h15
-rw-r--r--src/mame/drivers/bfcobra.c53
-rw-r--r--src/mame/drivers/bfmsys85.c8
-rw-r--r--src/mame/drivers/calomega.c8
-rw-r--r--src/mame/drivers/jpmsys5.c55
-rw-r--r--src/mame/drivers/mpu4vid.c84
-rw-r--r--src/mame/includes/calomega.h2
-rw-r--r--src/mame/includes/jpmsys5.h14
-rw-r--r--src/mess/drivers/68ksbc.c6
-rw-r--r--src/mess/drivers/atarist.c36
-rw-r--r--src/mess/drivers/bbc.c9
-rw-r--r--src/mess/drivers/bml3.c24
-rw-r--r--src/mess/drivers/cat.c4
-rw-r--r--src/mess/drivers/ec65.c3
-rw-r--r--src/mess/drivers/mekd2.c13
-rw-r--r--src/mess/drivers/mirage.c3
-rw-r--r--src/mess/drivers/newbrain.c8
-rw-r--r--src/mess/drivers/ob68k1a.c14
-rw-r--r--src/mess/drivers/osi.c19
-rw-r--r--src/mess/drivers/poly.c3
-rw-r--r--src/mess/drivers/tavernie.c7
-rw-r--r--src/mess/drivers/tek405x.c3
-rw-r--r--src/mess/drivers/v6809.c3
-rw-r--r--src/mess/drivers/votrtnt.c6
-rw-r--r--src/mess/includes/atarist.h12
-rw-r--r--src/mess/includes/bbc.h12
-rw-r--r--src/mess/includes/newbrain.h2
-rw-r--r--src/mess/includes/osi.h5
-rw-r--r--src/mess/includes/thomson.h2
-rw-r--r--src/mess/machine/bbc.c36
-rw-r--r--src/mess/machine/isa_gus.c23
-rw-r--r--src/mess/machine/isa_gus.h4
-rw-r--r--src/mess/machine/thomson.c11
47 files changed, 166 insertions, 576 deletions
diff --git a/src/emu/bus/a2bus/a2midi.c b/src/emu/bus/a2bus/a2midi.c
index cbd5cc3f63e..eddf833895a 100644
--- a/src/emu/bus/a2bus/a2midi.c
+++ b/src/emu/bus/a2bus/a2midi.c
@@ -32,15 +32,12 @@ static struct ptm6840_interface ptm_interface =
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, a2bus_midi_device, ptm_irq_w)
};
-static struct acia6850_interface acia_interface =
+static ACIA6850_INTERFACE( acia_interface )
{
31250*16, // tx clock
0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, a2bus_midi_device, rx_in), // rx in
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, a2bus_midi_device, tx_out), // tx out
- DEVCB_NULL, // cts in
+ DEVCB_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx), // tx out
DEVCB_NULL, // rts out
- DEVCB_NULL, // dcd in
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, a2bus_midi_device, acia_irq_w)
};
@@ -80,8 +77,7 @@ a2bus_midi_device::a2bus_midi_device(const machine_config &mconfig, const char *
device_t(mconfig, A2BUS_MIDI, "6850 MIDI card", tag, owner, clock, "a2midi", __FILE__),
device_a2bus_card_interface(mconfig, *this),
m_ptm(*this, MIDI_PTM_TAG),
- m_acia(*this, MIDI_ACIA_TAG),
- m_mdout(*this, "mdout")
+ m_acia(*this, MIDI_ACIA_TAG)
{
}
@@ -89,8 +85,7 @@ a2bus_midi_device::a2bus_midi_device(const machine_config &mconfig, device_type
device_t(mconfig, type, name, tag, owner, clock, shortname, source),
device_a2bus_card_interface(mconfig, *this),
m_ptm(*this, MIDI_PTM_TAG),
- m_acia(*this, MIDI_ACIA_TAG),
- m_mdout(*this, "mdout")
+ m_acia(*this, MIDI_ACIA_TAG)
{
}
@@ -107,7 +102,6 @@ void a2bus_midi_device::device_start()
void a2bus_midi_device::device_reset()
{
m_acia_irq = m_ptm_irq = false;
- m_rx_state = 0;
}
/*-------------------------------------------------
@@ -192,19 +186,10 @@ WRITE_LINE_MEMBER( a2bus_midi_device::ptm_irq_w )
WRITE_LINE_MEMBER( a2bus_midi_device::midi_rx_w )
{
- m_rx_state = state;
+ m_acia->write_rx(state);
+
for (int i = 0; i < 16; i++) // divider is set to 16
{
m_acia->rx_clock_in();
}
}
-
-READ_LINE_MEMBER( a2bus_midi_device::rx_in )
-{
- return m_rx_state;
-}
-
-WRITE_LINE_MEMBER( a2bus_midi_device::tx_out )
-{
- m_mdout->tx(state);
-}
diff --git a/src/emu/bus/a2bus/a2midi.h b/src/emu/bus/a2bus/a2midi.h
index f06c4f86630..1cd1c447c75 100644
--- a/src/emu/bus/a2bus/a2midi.h
+++ b/src/emu/bus/a2bus/a2midi.h
@@ -36,8 +36,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
DECLARE_WRITE_LINE_MEMBER( ptm_irq_w );
DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
- DECLARE_READ_LINE_MEMBER( rx_in );
- DECLARE_WRITE_LINE_MEMBER( tx_out );
protected:
virtual void device_start();
@@ -48,11 +46,9 @@ protected:
required_device<ptm6840_device> m_ptm;
required_device<acia6850_device> m_acia;
- required_device<serial_port_device> m_mdout;
private:
bool m_acia_irq, m_ptm_irq;
- int m_rx_state;
};
// device type definition
diff --git a/src/emu/bus/c64/midi_maplin.c b/src/emu/bus/c64/midi_maplin.c
index 22bf507114d..4300d2b95e2 100644
--- a/src/emu/bus/c64/midi_maplin.c
+++ b/src/emu/bus/c64/midi_maplin.c
@@ -37,24 +37,11 @@ WRITE_LINE_MEMBER( c64_maplin_midi_cartridge_device::acia_irq_w )
m_slot->irq_w(state);
}
-READ_LINE_MEMBER( c64_maplin_midi_cartridge_device::rx_in )
-{
- return m_rx_state;
-}
-
-WRITE_LINE_MEMBER( c64_maplin_midi_cartridge_device::tx_out )
-{
- m_mdout->tx(state);
-}
-
static ACIA6850_INTERFACE( acia_intf )
{
500000,
0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_maplin_midi_cartridge_device, rx_in),
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_maplin_midi_cartridge_device, tx_out),
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx),
DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_maplin_midi_cartridge_device, acia_irq_w)
};
@@ -70,7 +57,7 @@ SLOT_INTERFACE_END
WRITE_LINE_MEMBER( c64_maplin_midi_cartridge_device::midi_rx_w )
{
- m_rx_state = state;
+ m_acia->write_rx(state);
for (int i = 0; i < 16; i++) // divider is set to 64
{
@@ -125,9 +112,7 @@ machine_config_constructor c64_maplin_midi_cartridge_device::device_mconfig_addi
c64_maplin_midi_cartridge_device::c64_maplin_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, C64_MIDI_MAPLIN, "C64 Maplin MIDI", tag, owner, clock, "c64_midimap", __FILE__),
device_c64_expansion_card_interface(mconfig, *this),
- m_acia(*this, MC6850_TAG),
- m_mdout(*this, "mdout"),
- m_rx_state(0)
+ m_acia(*this, MC6850_TAG)
{
}
@@ -139,7 +124,6 @@ c64_maplin_midi_cartridge_device::c64_maplin_midi_cartridge_device(const machine
void c64_maplin_midi_cartridge_device::device_start()
{
// state saving
- save_item(NAME(m_rx_state));
}
@@ -150,8 +134,6 @@ void c64_maplin_midi_cartridge_device::device_start()
void c64_maplin_midi_cartridge_device::device_reset()
{
m_acia->reset();
-
- m_rx_state = 0;
}
diff --git a/src/emu/bus/c64/midi_maplin.h b/src/emu/bus/c64/midi_maplin.h
index a7fa955e957..94faa9a5c20 100644
--- a/src/emu/bus/c64/midi_maplin.h
+++ b/src/emu/bus/c64/midi_maplin.h
@@ -41,8 +41,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
- DECLARE_READ_LINE_MEMBER( rx_in );
- DECLARE_WRITE_LINE_MEMBER( tx_out );
protected:
// device-level overrides
@@ -55,9 +53,6 @@ protected:
private:
required_device<acia6850_device> m_acia;
- required_device<serial_port_device> m_mdout;
-
- int m_rx_state;
};
diff --git a/src/emu/bus/c64/midi_namesoft.c b/src/emu/bus/c64/midi_namesoft.c
index 8e27fd63601..dcee8205f1c 100644
--- a/src/emu/bus/c64/midi_namesoft.c
+++ b/src/emu/bus/c64/midi_namesoft.c
@@ -37,24 +37,11 @@ WRITE_LINE_MEMBER( c64_namesoft_midi_cartridge_device::acia_irq_w )
m_slot->nmi_w(state);
}
-READ_LINE_MEMBER( c64_namesoft_midi_cartridge_device::rx_in )
-{
- return m_rx_state;
-}
-
-WRITE_LINE_MEMBER( c64_namesoft_midi_cartridge_device::tx_out )
-{
- m_mdout->tx(state);
-}
-
static ACIA6850_INTERFACE( acia_intf )
{
500000,
0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_namesoft_midi_cartridge_device, rx_in),
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_namesoft_midi_cartridge_device, tx_out),
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx),
DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_namesoft_midi_cartridge_device, acia_irq_w)
};
@@ -70,7 +57,7 @@ SLOT_INTERFACE_END
WRITE_LINE_MEMBER( c64_namesoft_midi_cartridge_device::midi_rx_w )
{
- m_rx_state = state;
+ m_acia->write_rx(state);
for (int i = 0; i < 16; i++) // divider is set to 16
{
@@ -125,9 +112,7 @@ machine_config_constructor c64_namesoft_midi_cartridge_device::device_mconfig_ad
c64_namesoft_midi_cartridge_device::c64_namesoft_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, C64_MIDI_NAMESOFT, "C64 Namesoft MIDI", tag, owner, clock, "c64_midins", __FILE__),
device_c64_expansion_card_interface(mconfig, *this),
- m_acia(*this, MC6850_TAG),
- m_mdout(*this, "mdout"),
- m_rx_state(0)
+ m_acia(*this, MC6850_TAG)
{
}
@@ -138,8 +123,6 @@ c64_namesoft_midi_cartridge_device::c64_namesoft_midi_cartridge_device(const mac
void c64_namesoft_midi_cartridge_device::device_start()
{
- // state saving
- save_item(NAME(m_rx_state));
}
//-------------------------------------------------
@@ -149,8 +132,6 @@ void c64_namesoft_midi_cartridge_device::device_start()
void c64_namesoft_midi_cartridge_device::device_reset()
{
m_acia->reset();
-
- m_rx_state = 0;
}
diff --git a/src/emu/bus/c64/midi_namesoft.h b/src/emu/bus/c64/midi_namesoft.h
index 8a22d84c39d..f5d54f6337f 100644
--- a/src/emu/bus/c64/midi_namesoft.h
+++ b/src/emu/bus/c64/midi_namesoft.h
@@ -41,9 +41,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
- DECLARE_READ_LINE_MEMBER( rx_in );
- DECLARE_WRITE_LINE_MEMBER( tx_out );
-
protected:
// device-level overrides
virtual void device_start();
@@ -55,9 +52,6 @@ protected:
private:
required_device<acia6850_device> m_acia;
- required_device<serial_port_device> m_mdout;
-
- int m_rx_state;
};
diff --git a/src/emu/bus/c64/midi_passport.c b/src/emu/bus/c64/midi_passport.c
index 6c25fce3c2a..3c4a1d092b0 100644
--- a/src/emu/bus/c64/midi_passport.c
+++ b/src/emu/bus/c64/midi_passport.c
@@ -60,24 +60,11 @@ WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::acia_irq_w )
m_slot->irq_w(m_ptm_irq || m_acia_irq);
}
-READ_LINE_MEMBER( c64_passport_midi_cartridge_device::rx_in )
-{
- return m_rx_state;
-}
-
-WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::tx_out )
-{
- m_mdout->tx(state);
-}
-
static ACIA6850_INTERFACE( acia_intf )
{
500000,
0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_passport_midi_cartridge_device, rx_in),
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_passport_midi_cartridge_device, tx_out),
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx),
DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_passport_midi_cartridge_device, acia_irq_w)
};
@@ -93,7 +80,7 @@ SLOT_INTERFACE_END
WRITE_LINE_MEMBER( c64_passport_midi_cartridge_device::midi_rx_w )
{
- m_rx_state = state;
+ m_acia->write_rx(state);
for (int i = 0; i < 16; i++) // divider is set to 16
{
@@ -151,10 +138,8 @@ c64_passport_midi_cartridge_device::c64_passport_midi_cartridge_device(const mac
device_c64_expansion_card_interface(mconfig, *this),
m_acia(*this, MC6850_TAG),
m_ptm(*this, MC6840_TAG),
- m_mdout(*this, "mdout"),
m_ptm_irq(CLEAR_LINE),
- m_acia_irq(CLEAR_LINE),
- m_rx_state(0)
+ m_acia_irq(CLEAR_LINE)
{
}
@@ -168,7 +153,6 @@ void c64_passport_midi_cartridge_device::device_start()
// state saving
save_item(NAME(m_ptm_irq));
save_item(NAME(m_acia_irq));
- save_item(NAME(m_rx_state));
}
@@ -180,8 +164,6 @@ void c64_passport_midi_cartridge_device::device_reset()
{
m_acia->reset();
m_ptm->reset();
-
- m_rx_state = 0;
}
diff --git a/src/emu/bus/c64/midi_passport.h b/src/emu/bus/c64/midi_passport.h
index 2ca08538506..fe02d5fef52 100644
--- a/src/emu/bus/c64/midi_passport.h
+++ b/src/emu/bus/c64/midi_passport.h
@@ -43,8 +43,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( ptm_irq_w );
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
- DECLARE_READ_LINE_MEMBER( rx_in );
- DECLARE_WRITE_LINE_MEMBER( tx_out );
protected:
// device-level overrides
@@ -58,11 +56,9 @@ protected:
private:
required_device<acia6850_device> m_acia;
required_device<ptm6840_device> m_ptm;
- required_device<serial_port_device> m_mdout;
int m_ptm_irq;
int m_acia_irq;
- int m_rx_state;
};
diff --git a/src/emu/bus/c64/midi_sci.c b/src/emu/bus/c64/midi_sci.c
index c62815ceaef..144e1510299 100644
--- a/src/emu/bus/c64/midi_sci.c
+++ b/src/emu/bus/c64/midi_sci.c
@@ -37,24 +37,11 @@ WRITE_LINE_MEMBER( c64_sequential_midi_cartridge_device::acia_irq_w )
m_slot->irq_w(state);
}
-READ_LINE_MEMBER( c64_sequential_midi_cartridge_device::rx_in )
-{
- return m_rx_state;
-}
-
-WRITE_LINE_MEMBER( c64_sequential_midi_cartridge_device::tx_out )
-{
- m_mdout->tx(state);
-}
-
static ACIA6850_INTERFACE( acia_intf )
{
500000,
0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sequential_midi_cartridge_device, rx_in),
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sequential_midi_cartridge_device, tx_out),
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx),
DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sequential_midi_cartridge_device, acia_irq_w)
};
@@ -70,7 +57,7 @@ SLOT_INTERFACE_END
WRITE_LINE_MEMBER( c64_sequential_midi_cartridge_device::midi_rx_w )
{
- m_rx_state = state;
+ m_acia->write_rx(state);
for (int i = 0; i < 16; i++) // divider is set to 16
{
@@ -125,9 +112,7 @@ machine_config_constructor c64_sequential_midi_cartridge_device::device_mconfig_
c64_sequential_midi_cartridge_device::c64_sequential_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, C64_MIDI_SCI, "C64 Sequential Circuits MIDI", tag, owner, clock, "c64_midisci", __FILE__),
device_c64_expansion_card_interface(mconfig, *this),
- m_acia(*this, MC6850_TAG),
- m_mdout(*this, "mdout"),
- m_rx_state(0)
+ m_acia(*this, MC6850_TAG)
{
}
@@ -139,7 +124,6 @@ c64_sequential_midi_cartridge_device::c64_sequential_midi_cartridge_device(const
void c64_sequential_midi_cartridge_device::device_start()
{
// state saving
- save_item(NAME(m_rx_state));
}
//-------------------------------------------------
@@ -149,8 +133,6 @@ void c64_sequential_midi_cartridge_device::device_start()
void c64_sequential_midi_cartridge_device::device_reset()
{
m_acia->reset();
-
- m_rx_state = 0;
}
diff --git a/src/emu/bus/c64/midi_sci.h b/src/emu/bus/c64/midi_sci.h
index 2ad263e5efc..c1ff88cdcb8 100644
--- a/src/emu/bus/c64/midi_sci.h
+++ b/src/emu/bus/c64/midi_sci.h
@@ -41,8 +41,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
- DECLARE_READ_LINE_MEMBER( rx_in );
- DECLARE_WRITE_LINE_MEMBER( tx_out );
protected:
// device-level overrides
@@ -55,9 +53,6 @@ protected:
private:
required_device<acia6850_device> m_acia;
- required_device<serial_port_device> m_mdout;
-
- int m_rx_state;
};
diff --git a/src/emu/bus/c64/midi_siel.c b/src/emu/bus/c64/midi_siel.c
index 825a071d2df..8f2e4160365 100644
--- a/src/emu/bus/c64/midi_siel.c
+++ b/src/emu/bus/c64/midi_siel.c
@@ -37,24 +37,11 @@ WRITE_LINE_MEMBER( c64_siel_midi_cartridge_device::acia_irq_w )
m_slot->irq_w(state);
}
-READ_LINE_MEMBER( c64_siel_midi_cartridge_device::rx_in )
-{
- return m_rx_state;
-}
-
-WRITE_LINE_MEMBER( c64_siel_midi_cartridge_device::tx_out )
-{
- m_mdout->tx(state);
-}
-
static ACIA6850_INTERFACE( acia_intf )
{
XTAL_2MHz,
0, // rx clock (we manually clock rx)
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_siel_midi_cartridge_device, rx_in),
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_siel_midi_cartridge_device, tx_out),
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx),
DEVCB_NULL,
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_siel_midi_cartridge_device, acia_irq_w)
};
@@ -70,7 +57,7 @@ SLOT_INTERFACE_END
WRITE_LINE_MEMBER( c64_siel_midi_cartridge_device::midi_rx_w )
{
- m_rx_state = state;
+ m_acia->write_rx(state);
for (int i = 0; i < 64; i++) // divider is set to 64
{
@@ -125,9 +112,7 @@ machine_config_constructor c64_siel_midi_cartridge_device::device_mconfig_additi
c64_siel_midi_cartridge_device::c64_siel_midi_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, C64_MIDI_SIEL, "C64 Siel MIDI", tag, owner, clock, "c64_midisiel", __FILE__),
device_c64_expansion_card_interface(mconfig, *this),
- m_acia(*this, MC6850_TAG),
- m_mdout(*this, "mdout"),
- m_rx_state(0)
+ m_acia(*this, MC6850_TAG)
{
}
@@ -139,7 +124,6 @@ c64_siel_midi_cartridge_device::c64_siel_midi_cartridge_device(const machine_con
void c64_siel_midi_cartridge_device::device_start()
{
// state saving
- save_item(NAME(m_rx_state));
}
@@ -150,8 +134,6 @@ void c64_siel_midi_cartridge_device::device_start()
void c64_siel_midi_cartridge_device::device_reset()
{
m_acia->reset();
-
- m_rx_state = 0;
}
diff --git a/src/emu/bus/c64/midi_siel.h b/src/emu/bus/c64/midi_siel.h
index deb5ee01a6b..80a94d25f7a 100644
--- a/src/emu/bus/c64/midi_siel.h
+++ b/src/emu/bus/c64/midi_siel.h
@@ -41,8 +41,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
- DECLARE_READ_LINE_MEMBER( rx_in );
- DECLARE_WRITE_LINE_MEMBER( tx_out );
protected:
// device-level overrides
@@ -55,9 +53,6 @@ protected:
private:
required_device<acia6850_device> m_acia;
- required_device<serial_port_device> m_mdout;
-
- int m_rx_state;
};
diff --git a/src/emu/bus/cbmiec/interpod.c b/src/emu/bus/cbmiec/interpod.c
index 302b7967295..6876edadeb4 100644
--- a/src/emu/bus/cbmiec/interpod.c
+++ b/src/emu/bus/cbmiec/interpod.c
@@ -169,9 +169,6 @@ static ACIA6850_INTERFACE( acia_intf )
0,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/emu/machine/6850acia.c b/src/emu/machine/6850acia.c
index 0e9b2641311..fb1291857f0 100644
--- a/src/emu/machine/6850acia.c
+++ b/src/emu/machine/6850acia.c
@@ -84,11 +84,8 @@ void acia6850_device::static_set_interface(device_t &device, const acia6850_inte
void acia6850_device::device_start()
{
// resolve callbacks
- m_in_rx_func.resolve(m_in_rx_cb, *this);
m_out_tx_func.resolve(m_out_tx_cb, *this);
- m_in_cts_func.resolve(m_in_cts_cb, *this);
m_out_rts_func.resolve(m_out_rts_cb, *this);
- m_in_dcd_func.resolve(m_in_dcd_cb, *this);
m_out_irq_func.resolve(m_out_irq_cb, *this);
m_tx_counter = 0;
@@ -124,6 +121,9 @@ void acia6850_device::device_start()
save_item(NAME(m_first_reset));
save_item(NAME(m_rts));
save_item(NAME(m_brk));
+ save_item(NAME(m_rxd));
+ save_item(NAME(m_dcd));
+ save_item(NAME(m_cts));
save_item(NAME(m_status_read));
save_item(NAME(m_dcd_triggered));
}
@@ -135,10 +135,7 @@ void acia6850_device::device_start()
void acia6850_device::device_reset()
{
- int cts = m_in_cts_func();
- int dcd = m_in_dcd_func();
-
- m_status = (cts << 3) | (dcd << 2) | ACIA6850_STATUS_TDRE;
+ m_status = (m_cts << 3) | (m_dcd << 2) | ACIA6850_STATUS_TDRE;
m_tdr = 0;
m_rdr = 0;
m_tx_shift = 0;
@@ -178,6 +175,20 @@ void acia6850_device::device_reset()
}
}
+DECLARE_WRITE_LINE_MEMBER( acia6850_device::write_rx )
+{
+ m_rts = state;
+}
+
+DECLARE_WRITE_LINE_MEMBER( acia6850_device::write_dcd )
+{
+ m_dcd = state;
+}
+
+DECLARE_WRITE_LINE_MEMBER( acia6850_device::write_cts )
+{
+ m_cts = state;
+}
//-------------------------------------------------
// device_timer - handle timer callbacks
@@ -226,9 +237,7 @@ READ8_MEMBER( acia6850_device::status_read )
void acia6850_device::check_dcd_input()
{
- int dcd = m_in_dcd_func();
-
- if (dcd)
+ if (m_dcd)
{
// IRQ from DCD is edge triggered
if ( ! ( m_status & ACIA6850_STATUS_DCD ) )
@@ -438,9 +447,7 @@ void acia6850_device::tx_tick()
}
else
{
- int _cts = m_in_cts_func();
-
- if (_cts)
+ if (m_cts)
{
m_status |= ACIA6850_STATUS_CTS;
}
@@ -542,9 +549,7 @@ void acia6850_device::tx_tick()
void acia6850_device::tx_clock_in()
{
- int _cts = m_in_cts_func();
-
- if (_cts)
+ if (m_cts)
{
m_status |= ACIA6850_STATUS_CTS;
}
@@ -578,13 +583,11 @@ void acia6850_device::rx_tick()
}
else
{
- int rxd = m_in_rx_func();
-
switch (m_rx_state)
{
case START:
{
- if (rxd == 0)
+ if (m_rxd == 0)
{
if (LOG) logerror("MC6850 '%s': RX START BIT\n", tag());
m_rx_shift = 0;
@@ -596,9 +599,9 @@ void acia6850_device::rx_tick()
}
case DATA:
{
- if (LOG) logerror("MC6850 '%s': RX DATA BIT %x\n", tag(), rxd);
- m_rx_shift |= rxd ? 0x80 : 0;
- m_rx_parity ^= rxd;
+ if (LOG) logerror("MC6850 '%s': RX DATA BIT %x\n", tag(), m_rxd);
+ m_rx_shift |= m_rxd ? 0x80 : 0;
+ m_rx_parity ^= m_rxd;
if (--m_rx_bits == 0)
{
@@ -618,8 +621,8 @@ void acia6850_device::rx_tick()
}
case PARITY:
{
- if (LOG) logerror("MC6850 '%s': RX PARITY BIT %x\n", tag(), rxd);
- m_rx_parity ^= rxd;
+ if (LOG) logerror("MC6850 '%s': RX PARITY BIT %x\n", tag(), m_rxd);
+ m_rx_parity ^= m_rxd;
if (m_parity == EVEN)
{
@@ -641,7 +644,7 @@ void acia6850_device::rx_tick()
}
case STOP:
{
- if (rxd == 1)
+ if (m_rxd == 1)
{
if (LOG) logerror("MC6850 '%s': RX STOP BIT\n", tag());
if (m_stopbits == 1)
@@ -672,7 +675,7 @@ void acia6850_device::rx_tick()
}
case STOP2:
{
- if (rxd == 1)
+ if (m_rxd == 1)
{
if (LOG) logerror("MC6850 '%s': RX STOP BIT\n", tag());
m_status &= ~ACIA6850_STATUS_FE;
diff --git a/src/emu/machine/6850acia.h b/src/emu/machine/6850acia.h
index 2f188b1e11b..07853c13972 100644
--- a/src/emu/machine/6850acia.h
+++ b/src/emu/machine/6850acia.h
@@ -54,13 +54,8 @@ struct acia6850_interface
int m_tx_clock;
int m_rx_clock;
- devcb_read_line m_in_rx_cb;
devcb_write_line m_out_tx_cb;
-
- devcb_read_line m_in_cts_cb;
devcb_write_line m_out_rts_cb;
- devcb_read_line m_in_dcd_cb;
-
devcb_write_line m_out_irq_cb;
};
@@ -83,6 +78,10 @@ public:
DECLARE_WRITE8_MEMBER( data_write );
DECLARE_READ8_MEMBER( data_read );
+ DECLARE_WRITE_LINE_MEMBER( write_rx );
+ DECLARE_WRITE_LINE_MEMBER( write_dcd );
+ DECLARE_WRITE_LINE_MEMBER( write_cts );
+
void tx_clock_in();
void rx_clock_in();
@@ -131,11 +130,8 @@ private:
EVEN
};
- devcb_resolved_read_line m_in_rx_func;
devcb_resolved_write_line m_out_tx_func;
- devcb_resolved_read_line m_in_cts_func;
devcb_resolved_write_line m_out_rts_func;
- devcb_resolved_read_line m_in_dcd_func;
devcb_resolved_write_line m_out_irq_func;
UINT8 m_ctrl;
@@ -174,6 +170,9 @@ private:
serial_state m_tx_state;
int m_irq;
bool m_dcd_triggered;
+ int m_rxd;
+ int m_dcd;
+ int m_cts;
emu_timer *m_rx_timer;
emu_timer *m_tx_timer;
diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c
index a2752015a11..c7909edd06d 100644
--- a/src/mame/drivers/bfcobra.c
+++ b/src/mame/drivers/bfcobra.c
@@ -238,6 +238,7 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
+ m_acia6850_2(*this, "acia6850_2"),
m_upd7759(*this, "upd") { }
UINT8 m_bank_data[4];
@@ -248,8 +249,6 @@ public:
UINT8 m_flip_8;
UINT8 m_flip_22;
UINT8 m_videomode;
- UINT8 m_z80_m6809_line;
- UINT8 m_m6809_z80_line;
UINT8 m_data_r;
UINT8 m_data_t;
int m_irq_state;
@@ -286,13 +285,8 @@ public:
DECLARE_WRITE8_MEMBER(fd_ctrl_w);
DECLARE_READ8_MEMBER(upd_r);
DECLARE_WRITE8_MEMBER(upd_w);
- DECLARE_READ_LINE_MEMBER(z80_acia_rx_r);
- DECLARE_WRITE_LINE_MEMBER(z80_acia_tx_w);
DECLARE_WRITE_LINE_MEMBER(z80_acia_irq);
- DECLARE_READ_LINE_MEMBER(m6809_acia_rx_r);
- DECLARE_WRITE_LINE_MEMBER(m6809_acia_tx_w);
DECLARE_WRITE_LINE_MEMBER(m6809_data_irq);
- DECLARE_READ_LINE_MEMBER(data_acia_rx_r);
DECLARE_WRITE_LINE_MEMBER(data_acia_tx_w);
DECLARE_DRIVER_INIT(bfcobra);
virtual void machine_reset();
@@ -312,6 +306,7 @@ public:
UINT8 results_phase(void);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
+ required_device<acia6850_device> m_acia6850_2;
required_device<upd7759_device> m_upd7759;
};
@@ -1618,16 +1613,6 @@ void bfcobra_state::init_ram()
What are the correct ACIA clocks ?
*/
-READ_LINE_MEMBER(bfcobra_state::z80_acia_rx_r)
-{
- return m_m6809_z80_line;
-}
-
-WRITE_LINE_MEMBER(bfcobra_state::z80_acia_tx_w)
-{
- m_z80_m6809_line = state;
-}
-
WRITE_LINE_MEMBER(bfcobra_state::z80_acia_irq)
{
m_acia_irq = state;
@@ -1638,24 +1623,11 @@ static ACIA6850_INTERFACE( z80_acia_if )
{
500000,
500000,
- DEVCB_DRIVER_LINE_MEMBER(bfcobra_state,z80_acia_rx_r), /*&m6809_z80_line,*/
- DEVCB_DRIVER_LINE_MEMBER(bfcobra_state,z80_acia_tx_w), /*&z80_m6809_line,*/
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("acia6850_1", acia6850_device, write_rx),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(bfcobra_state,z80_acia_irq)
};
-READ_LINE_MEMBER(bfcobra_state::m6809_acia_rx_r)
-{
- return m_z80_m6809_line;
-}
-
-WRITE_LINE_MEMBER(bfcobra_state::m6809_acia_tx_w)
-{
- m_m6809_z80_line = state;
-}
-
WRITE_LINE_MEMBER(bfcobra_state::m6809_data_irq)
{
m_audiocpu->set_input_line(M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
@@ -1665,22 +1637,14 @@ static ACIA6850_INTERFACE( m6809_acia_if )
{
500000,
500000,
- DEVCB_DRIVER_LINE_MEMBER(bfcobra_state,m6809_acia_rx_r),/*&z80_m6809_line,*/
- DEVCB_DRIVER_LINE_MEMBER(bfcobra_state,m6809_acia_tx_w),/*&m6809_z80_line,*/
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("acia6850_0", acia6850_device, write_rx),
DEVCB_NULL,
DEVCB_NULL
};
-READ_LINE_MEMBER(bfcobra_state::data_acia_rx_r)
-{
- return m_data_r;
-}
-
WRITE_LINE_MEMBER(bfcobra_state::data_acia_tx_w)
{
- m_data_t = state;
+ m_data_t = state;
}
@@ -1688,11 +1652,8 @@ static ACIA6850_INTERFACE( data_acia_if )
{
500000,
500000,
- DEVCB_DRIVER_LINE_MEMBER(bfcobra_state,data_acia_rx_r),/*data_r,*/
DEVCB_DRIVER_LINE_MEMBER(bfcobra_state,data_acia_tx_w),/*data_t,*/
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(bfcobra_state,m6809_data_irq)
};
@@ -1744,11 +1705,9 @@ DRIVER_INIT_MEMBER(bfcobra_state,bfcobra)
membank("bank4")->set_base(memregion("user1")->base());
/* TODO: Properly sort out the data ACIA */
- m_data_r = 1;
+ m_acia6850_2->write_rx(1);
/* Finish this */
- save_item(NAME(m_z80_m6809_line));
- save_item(NAME(m_m6809_z80_line));
save_item(NAME(m_data_r));
save_item(NAME(m_data_t));
save_item(NAME(m_h_scroll));
diff --git a/src/mame/drivers/bfmsys85.c b/src/mame/drivers/bfmsys85.c
index d5fc2c096db..d28a88d26ed 100644
--- a/src/mame/drivers/bfmsys85.c
+++ b/src/mame/drivers/bfmsys85.c
@@ -90,7 +90,6 @@ public:
int m_mux_input;
UINT8 m_Inputs[64];
UINT8 m_codec_data[256];
- UINT8 m_sys85_data_line_r;
UINT8 m_sys85_data_line_t;
DECLARE_WRITE8_MEMBER(watchdog_w);
DECLARE_READ8_MEMBER(irqlatch_r);
@@ -124,11 +123,6 @@ public:
///////////////////////////////////////////////////////////////////////////
-READ_LINE_MEMBER(bfmsys85_state::sys85_data_r)
-{
- return m_sys85_data_line_r;
-}
-
WRITE_LINE_MEMBER(bfmsys85_state::sys85_data_w)
{
m_sys85_data_line_t = state;
@@ -138,8 +132,8 @@ static ACIA6850_INTERFACE( m6809_acia_if )
{
500000,
500000,
- DEVCB_DRIVER_LINE_MEMBER(bfmsys85_state,sys85_data_r),
DEVCB_DRIVER_LINE_MEMBER(bfmsys85_state,sys85_data_w),
+ DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mame/drivers/calomega.c b/src/mame/drivers/calomega.c
index 1053b3c3645..5779b85cf3b 100644
--- a/src/mame/drivers/calomega.c
+++ b/src/mame/drivers/calomega.c
@@ -2652,11 +2652,6 @@ static const pia6821_interface sys906_pia1_intf =
* ACIA Interface *
*************************************************/
-READ_LINE_MEMBER(calomega_state::acia_rx_r)
-{
- return m_rx_line;
-}
-
WRITE_LINE_MEMBER(calomega_state::acia_tx_w)
{
m_tx_line = state;
@@ -2666,11 +2661,8 @@ static ACIA6850_INTERFACE( acia6850_intf )
{
UART_CLOCK,
UART_CLOCK,
- DEVCB_DRIVER_LINE_MEMBER(calomega_state,acia_rx_r), /*&rx_line,*/
DEVCB_DRIVER_LINE_MEMBER(calomega_state,acia_tx_w), /*&tx_line,*/
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(calomega_state,tx_rx_clk)
};
diff --git a/src/mame/drivers/jpmsys5.c b/src/mame/drivers/jpmsys5.c
index 115ef7d110c..404c1ca681d 100644
--- a/src/mame/drivers/jpmsys5.c
+++ b/src/mame/drivers/jpmsys5.c
@@ -352,13 +352,13 @@ TIMER_CALLBACK_MEMBER(jpmsys5_state::touch_cb)
case START:
{
m_touch_shift_cnt = 0;
- m_a2_data_in = 0;
+ acia6850_2->write_rx(0);
m_touch_state = DATA;
break;
}
case DATA:
{
- m_a2_data_in = (m_touch_data[m_touch_data_count] >> (m_touch_shift_cnt)) & 1;
+ acia6850_2->write_rx((m_touch_data[m_touch_data_count] >> (m_touch_shift_cnt)) & 1);
if (++m_touch_shift_cnt == 8)
m_touch_state = STOP1;
@@ -367,13 +367,13 @@ TIMER_CALLBACK_MEMBER(jpmsys5_state::touch_cb)
}
case STOP1:
{
- m_a2_data_in = 1;
+ acia6850_2->write_rx(1);
m_touch_state = STOP2;
break;
}
case STOP2:
{
- m_a2_data_in = 1;
+ acia6850_2->write_rx(1);
if (++m_touch_data_count == 3)
{
@@ -596,84 +596,45 @@ WRITE_LINE_MEMBER(jpmsys5_state::acia_irq)
/* Clocks are incorrect */
-READ_LINE_MEMBER(jpmsys5_state::a0_rx_r)
-{
- return m_a0_data_in;
-}
-
WRITE_LINE_MEMBER(jpmsys5_state::a0_tx_w)
{
m_a0_data_out = state;
}
-READ_LINE_MEMBER(jpmsys5_state::a0_dcd_r)
-{
- return m_a0_acia_dcd;
-}
-
static ACIA6850_INTERFACE( acia0_if )
{
10000,
10000,
- DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a0_rx_r), /*&a0_data_in,*/
DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a0_tx_w), /*&a0_data_out,*/
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a0_dcd_r), /*&a0_acia_dcd,*/
DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,acia_irq)
};
-READ_LINE_MEMBER(jpmsys5_state::a1_rx_r)
-{
- return m_a1_data_in;
-}
-
WRITE_LINE_MEMBER(jpmsys5_state::a1_tx_w)
{
m_a1_data_out = state;
}
-READ_LINE_MEMBER(jpmsys5_state::a1_dcd_r)
-{
- return m_a1_acia_dcd;
-}
-
static ACIA6850_INTERFACE( acia1_if )
{
10000,
10000,
- DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a1_rx_r), /*&state->m_a1_data_in,*/
DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a1_tx_w), /*&state->m_a1_data_out,*/
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a1_dcd_r), /*&state->m_a1_acia_dcd,*/
DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,acia_irq)
};
-READ_LINE_MEMBER(jpmsys5_state::a2_rx_r)
-{
- return m_a2_data_in;
-}
-
WRITE_LINE_MEMBER(jpmsys5_state::a2_tx_w)
{
m_a2_data_out = state;
}
-READ_LINE_MEMBER(jpmsys5_state::a2_dcd_r)
-{
- return m_a2_acia_dcd;
-}
-
static ACIA6850_INTERFACE( acia2_if )
{
10000,
10000,
- DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a2_rx_r), /*&state->m_a2_data_in,*/
DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a2_tx_w), /*&state->m_a2_data_out,*/
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,a2_dcd_r), /*&state->m_a2_acia_dcd,*/
DEVCB_DRIVER_LINE_MEMBER(jpmsys5_state,acia_irq)
};
@@ -694,8 +655,8 @@ MACHINE_RESET_MEMBER(jpmsys5_state,jpmsys5v)
{
m_touch_timer->reset();
m_touch_state = IDLE;
- m_a2_data_in = 1;
- m_a2_acia_dcd = 0;
+ acia6850_2->write_rx(1);
+ acia6850_2->write_dcd(0);
m_vfd->reset();
}
@@ -892,8 +853,8 @@ MACHINE_START_MEMBER(jpmsys5_state,jpmsys5)
MACHINE_RESET_MEMBER(jpmsys5_state,jpmsys5)
{
- m_a2_data_in = 1;
- m_a2_acia_dcd = 0;
+ acia6850_2->write_rx(1);
+ acia6850_2->write_dcd(0);
m_vfd->reset();
}
diff --git a/src/mame/drivers/mpu4vid.c b/src/mame/drivers/mpu4vid.c
index 2538f85650d..39e16a6137f 100644
--- a/src/mame/drivers/mpu4vid.c
+++ b/src/mame/drivers/mpu4vid.c
@@ -247,12 +247,6 @@ public:
//Video
UINT8 m_m6840_irq_state;
UINT8 m_m6850_irq_state;
- UINT8 m_m68k_m6809_line;
- UINT8 m_m6809_m68k_line;
- UINT8 m_m68k_acia_cts;
- UINT8 m_m6809_acia_cts;
- UINT8 m_m6809_acia_rts;
- UINT8 m_m6809_acia_dcd;
int m_gfx_index;
INT8 m_cur[2];
@@ -282,17 +276,7 @@ public:
DECLARE_VIDEO_START(mpu4_vid);
UINT32 screen_update_mpu4_vid(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer_callback);
- DECLARE_READ_LINE_MEMBER(m6809_acia_rx_r);
- DECLARE_WRITE_LINE_MEMBER(m6809_acia_tx_w);
- DECLARE_READ_LINE_MEMBER(m6809_acia_cts_r);
- DECLARE_WRITE_LINE_MEMBER(m6809_acia_rts_w);
- DECLARE_READ_LINE_MEMBER(m6809_acia_dcd_r);
DECLARE_WRITE_LINE_MEMBER(m6809_acia_irq);
- DECLARE_READ_LINE_MEMBER(m68k_acia_rx_r);
- DECLARE_WRITE_LINE_MEMBER(m68k_acia_tx_w);
- DECLARE_READ_LINE_MEMBER(m68k_acia_cts_r);
- DECLARE_WRITE_LINE_MEMBER(m68k_acia_rts_w);
- DECLARE_READ_LINE_MEMBER(m68k_acia_dcd_r);
DECLARE_WRITE_LINE_MEMBER(m68k_acia_irq);
DECLARE_WRITE_LINE_MEMBER(cpu1_ptm_irq);
DECLARE_WRITE8_MEMBER(vid_o1_callback);
@@ -343,34 +327,9 @@ WRITE_LINE_MEMBER(mpu4vid_state::update_mpu68_interrupts)
/* Communications with 6809 board */
-READ_LINE_MEMBER(mpu4vid_state::m6809_acia_rx_r)
-{
- return m_m68k_m6809_line;
-}
-
-WRITE_LINE_MEMBER(mpu4vid_state::m6809_acia_tx_w)
-{
- m_m6809_m68k_line = state;
-}
-
-READ_LINE_MEMBER(mpu4vid_state::m6809_acia_cts_r)
-{
- return m_m6809_acia_cts;
-}
-
-WRITE_LINE_MEMBER(mpu4vid_state::m6809_acia_rts_w)
-{
- m_m6809_acia_rts = state;
-}
-
-READ_LINE_MEMBER(mpu4vid_state::m6809_acia_dcd_r)
-{
- return m_m6809_acia_dcd;
-}
-
WRITE_LINE_MEMBER(mpu4vid_state::m6809_acia_irq)
{
- m_m68k_acia_cts = state;
+ m_acia_1->write_cts(state);
m_maincpu->set_input_line(M6809_IRQ_LINE, state);
}
@@ -378,42 +337,14 @@ static ACIA6850_INTERFACE( m6809_acia_if )
{
0,
0,
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_rx_r),
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_tx_w),
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_cts_r),
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_rts_w),
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_dcd_r),
+ DEVCB_DEVICE_LINE_MEMBER("acia6850_1", acia6850_device, write_rx),
+ DEVCB_DEVICE_LINE_MEMBER("acia6850_1", acia6850_device, write_dcd),
DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_irq)
};
-READ_LINE_MEMBER(mpu4vid_state::m68k_acia_rx_r)
-{
- return m_m6809_m68k_line;
-}
-
-WRITE_LINE_MEMBER(mpu4vid_state::m68k_acia_tx_w)
-{
- m_m68k_m6809_line = state;
-}
-
-READ_LINE_MEMBER(mpu4vid_state::m68k_acia_cts_r)
-{
- return m_m68k_acia_cts;
-}
-
-WRITE_LINE_MEMBER(mpu4vid_state::m68k_acia_rts_w)
-{
- m_m6809_acia_dcd = state;
-}
-
-READ_LINE_MEMBER(mpu4vid_state::m68k_acia_dcd_r)
-{
- return m_m6809_acia_rts;
-}
-
WRITE_LINE_MEMBER(mpu4vid_state::m68k_acia_irq)
{
- m_m6809_acia_cts = state;
+ m_acia_0->write_cts(state);
m_m6850_irq_state = state;
update_mpu68_interrupts(1);
}
@@ -422,11 +353,8 @@ static ACIA6850_INTERFACE( m68k_acia_if )
{
0,
0,
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_rx_r),
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_tx_w),
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_cts_r),
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_rts_w),
- DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_dcd_r),
+ DEVCB_DEVICE_LINE_MEMBER("acia6850_0", acia6850_device, write_rx),
+ DEVCB_DEVICE_LINE_MEMBER("acia6850_0", acia6850_device, write_dcd),
DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_irq)
};
diff --git a/src/mame/includes/calomega.h b/src/mame/includes/calomega.h
index 5d44ea21d45..1a0c6be4b6e 100644
--- a/src/mame/includes/calomega.h
+++ b/src/mame/includes/calomega.h
@@ -8,7 +8,6 @@ public:
m_maincpu(*this, "maincpu") { }
UINT8 m_tx_line;
- UINT8 m_rx_line;
int m_s903_mux_data;
int m_s905_mux_data;
required_shared_ptr<UINT8> m_videoram;
@@ -35,7 +34,6 @@ public:
DECLARE_WRITE8_MEMBER(lamps_903a_w);
DECLARE_WRITE8_MEMBER(lamps_903b_w);
DECLARE_WRITE8_MEMBER(lamps_905_w);
- DECLARE_READ_LINE_MEMBER(acia_rx_r);
DECLARE_WRITE_LINE_MEMBER(acia_tx_w);
DECLARE_DRIVER_INIT(elgrande);
DECLARE_DRIVER_INIT(standard);
diff --git a/src/mame/includes/jpmsys5.h b/src/mame/includes/jpmsys5.h
index 93a72f4838d..04da2f55f6e 100644
--- a/src/mame/includes/jpmsys5.h
+++ b/src/mame/includes/jpmsys5.h
@@ -18,12 +18,14 @@ public:
jpmsys5_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ acia6850_2(*this, "acia6850_2"),
m_upd7759(*this, "upd7759"),
m_tms34061(*this, "tms34061"),
m_vfd(*this, "vfd"),
m_direct_port(*this, "DIRECT") { }
required_device<cpu_device> m_maincpu;
+ required_device<acia6850_device> acia6850_2;
required_device<upd7759_device> m_upd7759;
optional_device<tms34061_device> m_tms34061;
optional_device<roc10937_t> m_vfd;
@@ -42,15 +44,9 @@ public:
int m_muxram[255];
int m_alpha_clock;
int m_chop;
- UINT8 m_a0_acia_dcd;
UINT8 m_a0_data_out;
- UINT8 m_a0_data_in;
- UINT8 m_a1_acia_dcd;
UINT8 m_a1_data_out;
- UINT8 m_a1_data_in;
- UINT8 m_a2_acia_dcd;
UINT8 m_a2_data_out;
- UINT8 m_a2_data_in;
DECLARE_WRITE16_MEMBER(sys5_tms34061_w);
DECLARE_READ16_MEMBER(sys5_tms34061_r);
DECLARE_WRITE16_MEMBER(ramdac_w);
@@ -71,15 +67,9 @@ public:
DECLARE_WRITE_LINE_MEMBER(u29_ca2_w);
DECLARE_WRITE_LINE_MEMBER(u29_cb2_w);
DECLARE_WRITE_LINE_MEMBER(acia_irq);
- DECLARE_READ_LINE_MEMBER(a0_rx_r);
DECLARE_WRITE_LINE_MEMBER(a0_tx_w);
- DECLARE_READ_LINE_MEMBER(a0_dcd_r);
- DECLARE_READ_LINE_MEMBER(a1_rx_r);
DECLARE_WRITE_LINE_MEMBER(a1_tx_w);
- DECLARE_READ_LINE_MEMBER(a1_dcd_r);
- DECLARE_READ_LINE_MEMBER(a2_rx_r);
DECLARE_WRITE_LINE_MEMBER(a2_tx_w);
- DECLARE_READ_LINE_MEMBER(a2_dcd_r);
DECLARE_READ16_MEMBER(mux_awp_r);
DECLARE_READ16_MEMBER(coins_awp_r);
void sys5_draw_lamps();
diff --git a/src/mess/drivers/68ksbc.c b/src/mess/drivers/68ksbc.c
index ded54f5648d..f9a17899cde 100644
--- a/src/mess/drivers/68ksbc.c
+++ b/src/mess/drivers/68ksbc.c
@@ -66,11 +66,8 @@ static ACIA6850_INTERFACE( acia_intf )
{
153600,
153600,
- DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, cts_r),
DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
- DEVCB_NULL,
DEVCB_NULL
};
@@ -80,7 +77,10 @@ static MACHINE_CONFIG_START( c68ksbc, c68ksbc_state )
MCFG_CPU_PROGRAM_MAP(c68ksbc_mem)
MCFG_ACIA6850_ADD("acia", acia_intf)
+
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rx))
+ MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts))
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mess/drivers/atarist.c b/src/mess/drivers/atarist.c
index b2365c76a1d..1149df400a4 100644
--- a/src/mess/drivers/atarist.c
+++ b/src/mess/drivers/atarist.c
@@ -594,7 +594,7 @@ WRITE8_MEMBER( st_state::ikbd_port2_w )
m_ikbd_joy = BIT(data, 0);
// serial transmit
- m_ikbd_rx = BIT(data, 4);
+ m_acia0->write_rx(BIT(data, 4));
}
@@ -1822,11 +1822,6 @@ static const ay8910_interface stbook_psg_intf =
// ACIA6850_INTERFACE( acia_ikbd_intf )
//-------------------------------------------------
-READ_LINE_MEMBER( st_state::ikbd_rx_r )
-{
- return m_ikbd_rx;
-}
-
WRITE_LINE_MEMBER( st_state::ikbd_tx_w )
{
m_ikbd_tx = state;
@@ -1843,11 +1838,8 @@ static ACIA6850_INTERFACE( acia_ikbd_intf )
{
Y2/64,
Y2/64,
- DEVCB_DRIVER_LINE_MEMBER(st_state, ikbd_rx_r),
DEVCB_DRIVER_LINE_MEMBER(st_state, ikbd_tx_w),
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(st_state, acia_ikbd_irq_w)
};
@@ -1860,11 +1852,8 @@ static ACIA6850_INTERFACE( stbook_acia_ikbd_intf )
{
U517/2/16, // 500kHz
U517/2/2, // 1MHZ
- DEVCB_DRIVER_LINE_MEMBER(st_state, ikbd_rx_r),
DEVCB_DRIVER_LINE_MEMBER(st_state, ikbd_tx_w),
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(st_state, acia_ikbd_irq_w)
};
@@ -1873,16 +1862,6 @@ static ACIA6850_INTERFACE( stbook_acia_ikbd_intf )
// ACIA6850_INTERFACE( acia_midi_intf )
//-------------------------------------------------
-READ_LINE_MEMBER( st_state::midi_rx_in )
-{
- return m_midi_rx_state;
-}
-
-WRITE_LINE_MEMBER( st_state::midi_tx_out )
-{
- m_mdout->tx(state);
-}
-
WRITE_LINE_MEMBER( st_state::acia_midi_irq_w )
{
m_acia_midi_irq = state;
@@ -1894,10 +1873,7 @@ static ACIA6850_INTERFACE( acia_midi_intf )
{
Y2/64,
0, // rx clock (we manually clock rx)
- DEVCB_DRIVER_LINE_MEMBER(st_state, midi_rx_in),
- DEVCB_DRIVER_LINE_MEMBER(st_state, midi_tx_out),
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx),
DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(st_state, acia_midi_irq_w)
};
@@ -2152,7 +2128,7 @@ SLOT_INTERFACE_END
WRITE_LINE_MEMBER( st_state::midi_rx_w )
{
- m_midi_rx_state = state;
+ m_acia1->write_rx(state);
for (int i = 0; i < 64; i++) // divider is set to 64
{
@@ -2239,10 +2215,8 @@ void st_state::state_save()
save_item(NAME(m_ikbd_mouse_px));
save_item(NAME(m_ikbd_mouse_py));
save_item(NAME(m_ikbd_mouse_pc));
- save_item(NAME(m_ikbd_rx));
save_item(NAME(m_ikbd_tx));
save_item(NAME(m_ikbd_joy));
- save_item(NAME(m_midi_rx));
save_item(NAME(m_midi_tx));
save_item(NAME(m_acia_ikbd_irq));
save_item(NAME(m_acia_midi_irq));
@@ -2618,10 +2592,10 @@ static MACHINE_CONFIG_START( stbook, stbook_state )
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf)
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL, NULL)
- MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin", NULL)
+ MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(st_state, midi_rx_w))
- MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout", NULL)
+ MCFG_SERIAL_PORT_ADD("mdout", midiout_slot, "midiout")
// cartridge
MCFG_CARTSLOT_ADD("cart")
diff --git a/src/mess/drivers/bbc.c b/src/mess/drivers/bbc.c
index 537df17240c..3f4b113e86b 100644
--- a/src/mess/drivers/bbc.c
+++ b/src/mess/drivers/bbc.c
@@ -555,11 +555,8 @@ static ACIA6850_INTERFACE( bbc_acia6850_interface )
{
0,
0,
- DEVCB_DRIVER_LINE_MEMBER(bbc_state,bbc_rxd_r),
DEVCB_DRIVER_LINE_MEMBER(bbc_state,bbc_txd_w),
- DEVCB_DRIVER_LINE_MEMBER(bbc_state,bbc_cts_r),
DEVCB_DRIVER_LINE_MEMBER(bbc_state,bbc_rts_w),
- DEVCB_DRIVER_LINE_MEMBER(bbc_state,bbc_dcd_r),
DEVCB_DRIVER_LINE_MEMBER(bbc_state,bbcb_acia6850_irq_w)
};
@@ -697,6 +694,9 @@ static MACHINE_CONFIG_START( bbca, bbc_state )
/* acia */
MCFG_ACIA6850_ADD("acia6850", bbc_acia6850_interface)
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(bbc_state, write_rxd_serial))
+ MCFG_RS232_OUT_DCD_HANDLER(WRITELINE(bbc_state, write_dcd_serial))
+ MCFG_RS232_OUT_CTS_HANDLER(WRITELINE(bbc_state, write_cts_serial))
/* devices */
MCFG_VIA6522_ADD("via6522_0", 1000000, bbcb_system_via)
@@ -884,6 +884,9 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
/* acia */
MCFG_ACIA6850_ADD("acia6850", bbc_acia6850_interface)
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(WRITELINE(bbc_state, write_rxd_serial))
+ MCFG_RS232_OUT_DCD_HANDLER(WRITELINE(bbc_state, write_dcd_serial))
+ MCFG_RS232_OUT_CTS_HANDLER(WRITELINE(bbc_state, write_cts_serial))
/* devices */
MCFG_UPD7002_ADD("upd7002", bbc_uPD7002)
diff --git a/src/mess/drivers/bml3.c b/src/mess/drivers/bml3.c
index aeea26f8e24..ab6a58cfc42 100644
--- a/src/mess/drivers/bml3.c
+++ b/src/mess/drivers/bml3.c
@@ -105,11 +105,8 @@ public:
DECLARE_WRITE8_MEMBER(bml3bus_irq_w);
DECLARE_WRITE8_MEMBER(bml3bus_firq_w);
- DECLARE_READ_LINE_MEMBER( bml3_acia_rx_r );
DECLARE_WRITE_LINE_MEMBER( bml3_acia_tx_w );
- DECLARE_READ_LINE_MEMBER( bml3_acia_dts_r );
DECLARE_WRITE_LINE_MEMBER( bml3_acia_rts_w );
- DECLARE_READ_LINE_MEMBER(bml3_acia_dcd_r);
DECLARE_WRITE_LINE_MEMBER(bml3_acia_irq_w);
DECLARE_READ8_MEMBER(bml3_a000_r); DECLARE_WRITE8_MEMBER(bml3_a000_w);
@@ -925,35 +922,17 @@ static const pia6821_interface bml3_pia_config =
};
-READ_LINE_MEMBER( bml3_state::bml3_acia_rx_r )
-{
- logerror("TAPE R\n");
- return 1;
-}
-
WRITE_LINE_MEMBER( bml3_state::bml3_acia_tx_w )
{
logerror("%02x TAPE\n",state);
}
-READ_LINE_MEMBER( bml3_state::bml3_acia_dts_r )
-{
- logerror("TAPE R DTS\n");
- return 1;
-}
-
WRITE_LINE_MEMBER( bml3_state::bml3_acia_rts_w )
{
logerror("%02x TAPE RTS\n",state);
}
-READ_LINE_MEMBER( bml3_state::bml3_acia_dcd_r )
-{
- logerror("TAPE R DCD\n");
- return 1;
-}
-
WRITE_LINE_MEMBER( bml3_state::bml3_acia_irq_w )
{
logerror("%02x TAPE IRQ\n",state);
@@ -964,11 +943,8 @@ static ACIA6850_INTERFACE( bml3_acia_if )
{
600,
600,
- DEVCB_DRIVER_LINE_MEMBER(bml3_state, bml3_acia_rx_r),
DEVCB_DRIVER_LINE_MEMBER(bml3_state, bml3_acia_tx_w),
- DEVCB_DRIVER_LINE_MEMBER(bml3_state, bml3_acia_dts_r),
DEVCB_DRIVER_LINE_MEMBER(bml3_state, bml3_acia_rts_w),
- DEVCB_DRIVER_LINE_MEMBER(bml3_state, bml3_acia_dcd_r),
DEVCB_DRIVER_LINE_MEMBER(bml3_state, bml3_acia_irq_w)
};
diff --git a/src/mess/drivers/cat.c b/src/mess/drivers/cat.c
index 6f879f1d6de..b56742619a4 100644
--- a/src/mess/drivers/cat.c
+++ b/src/mess/drivers/cat.c
@@ -1308,9 +1308,7 @@ static const acia6850_interface swyft_acia_config =
3579545, // guess
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_NULL
};
static const via6522_interface swyft_via0_config =
diff --git a/src/mess/drivers/ec65.c b/src/mess/drivers/ec65.c
index e85c285b4c0..99f38dd6163 100644
--- a/src/mess/drivers/ec65.c
+++ b/src/mess/drivers/ec65.c
@@ -92,9 +92,6 @@ static ACIA6850_INTERFACE( ec65_acia_intf )
0,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/mekd2.c b/src/mess/drivers/mekd2.c
index 351b02b5093..172e3a6b84e 100644
--- a/src/mess/drivers/mekd2.c
+++ b/src/mess/drivers/mekd2.c
@@ -106,7 +106,6 @@ public:
DECLARE_WRITE8_MEMBER(mekd2_digit_w);
DECLARE_WRITE8_MEMBER(mekd2_segment_w);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(mekd2_cart);
- DECLARE_READ_LINE_MEMBER(cass_r);
DECLARE_WRITE_LINE_MEMBER(cass_w);
TIMER_DEVICE_CALLBACK_MEMBER(mekd2_c);
TIMER_DEVICE_CALLBACK_MEMBER(mekd2_p);
@@ -327,11 +326,6 @@ static const pia6821_interface mekd2_u_mc6821_intf =
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB output */
};
-READ_LINE_MEMBER( mekd2_state::cass_r )
-{
- return (bool)m_cass_data[2];
-}
-
WRITE_LINE_MEMBER( mekd2_state::cass_w )
{
m_cass_state = state;
@@ -341,11 +335,8 @@ static ACIA6850_INTERFACE( mekd2_acia_intf )
{
XTAL_MEKD2 / 256, /* tx clock 4800Hz */
300, /* rx clock line, toggled by cassette circuit */
- DEVCB_DRIVER_LINE_MEMBER(mekd2_state, cass_r), /* in rxd func */
DEVCB_DRIVER_LINE_MEMBER(mekd2_state, cass_w), /* out txd func */
- DEVCB_NULL, /* in cts func */
- DEVCB_NULL, /* out rts func */
- DEVCB_NULL, /* in dcd func */
+ DEVCB_NULL, // cts
DEVCB_NULL /* out irq func NOT USED */
};
@@ -393,7 +384,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mekd2_state::mekd2_p)
if (cass_ws != m_cass_data[0])
{
m_cass_data[0] = cass_ws;
- m_cass_data[2] = ((m_cass_data[1] < 12) ? 1 : 0);
+ m_acia->write_rx((m_cass_data[1] < 12) ? 1 : 0);
m_cass_data[1] = 0;
}
}
diff --git a/src/mess/drivers/mirage.c b/src/mess/drivers/mirage.c
index 8072d223682..25f395860fb 100644
--- a/src/mess/drivers/mirage.c
+++ b/src/mess/drivers/mirage.c
@@ -284,11 +284,8 @@ static ACIA6850_INTERFACE( mirage_acia6850_interface )
{
0, // tx clock
0, // rx clock
- DEVCB_NULL, // rx in
DEVCB_NULL, // rx out
- DEVCB_NULL, // cts in
DEVCB_NULL, // rts out
- DEVCB_NULL, // dcd in
DEVCB_DRIVER_LINE_MEMBER(mirage_state, acia_irq_w)
};
diff --git a/src/mess/drivers/newbrain.c b/src/mess/drivers/newbrain.c
index 3e714ab9231..cafc29733ed 100644
--- a/src/mess/drivers/newbrain.c
+++ b/src/mess/drivers/newbrain.c
@@ -1153,11 +1153,6 @@ INPUT_PORTS_END
/* Machine Initialization */
-READ_LINE_MEMBER( newbrain_eim_state::acia_rx )
-{
- return m_acia_rxd;
-}
-
WRITE_LINE_MEMBER( newbrain_eim_state::acia_tx )
{
m_acia_txd = state;
@@ -1172,11 +1167,8 @@ static ACIA6850_INTERFACE( acia_intf )
{
0,
0,
- DEVCB_DRIVER_LINE_MEMBER(newbrain_eim_state, acia_rx),
DEVCB_DRIVER_LINE_MEMBER(newbrain_eim_state, acia_tx),
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(newbrain_eim_state, acia_interrupt)
};
diff --git a/src/mess/drivers/ob68k1a.c b/src/mess/drivers/ob68k1a.c
index 79d2a75fdbb..8a06008f0f9 100644
--- a/src/mess/drivers/ob68k1a.c
+++ b/src/mess/drivers/ob68k1a.c
@@ -215,11 +215,8 @@ static ACIA6850_INTERFACE( acia0_intf )
{
0,
0,
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, cts_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
- DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dcd_r),
DEVCB_NULL
};
@@ -232,11 +229,8 @@ static ACIA6850_INTERFACE( acia1_intf )
{
0,
0,
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, cts_r),
DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
- DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dcd_r),
DEVCB_NULL,
};
@@ -318,8 +312,16 @@ static MACHINE_CONFIG_START( ob68k1a, ob68k1a_state )
MCFG_ACIA6850_ADD(MC6850_0_TAG, acia0_intf)
MCFG_ACIA6850_ADD(MC6850_1_TAG, acia1_intf)
MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, WRITELINE(ob68k1a_state, rx_tx_0_w), WRITELINE(ob68k1a_state, rx_tx_1_w))
+
MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MC6850_0_TAG, acia6850_device, write_rx))
+ MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MC6850_0_TAG, acia6850_device, write_dcd))
+ MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MC6850_0_TAG, acia6850_device, write_cts))
+
MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(MC6850_1_TAG, acia6850_device, write_rx))
+ MCFG_RS232_OUT_DCD_HANDLER(DEVWRITELINE(MC6850_1_TAG, acia6850_device, write_dcd))
+ MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE(MC6850_1_TAG, acia6850_device, write_cts))
// internal ram
MCFG_RAM_ADD(RAM_TAG)
diff --git a/src/mess/drivers/osi.c b/src/mess/drivers/osi.c
index 859c5ebc0e5..77e2a157baf 100644
--- a/src/mess/drivers/osi.c
+++ b/src/mess/drivers/osi.c
@@ -644,11 +644,6 @@ INPUT_PORTS_END
/* Machine Start */
-READ_LINE_MEMBER( sb2m600_state::cassette_rx )
-{
- return ((m_cassette)->input() > 0.0) ? 1 : 0;
-}
-
WRITE_LINE_MEMBER( sb2m600_state::cassette_tx )
{
m_cassette->output(state ? +1.0 : -1.0);
@@ -658,11 +653,8 @@ static ACIA6850_INTERFACE( osi600_acia_intf )
{
X1/32,
X1/32,
- DEVCB_DRIVER_LINE_MEMBER(sb2m600_state, cassette_rx),
DEVCB_DRIVER_LINE_MEMBER(sb2m600_state, cassette_tx),
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -670,11 +662,8 @@ static ACIA6850_INTERFACE( uk101_acia_intf )
{
500000, //
500000, //
- DEVCB_DRIVER_LINE_MEMBER(sb2m600_state, cassette_rx),
DEVCB_DRIVER_LINE_MEMBER(sb2m600_state, cassette_tx),
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -684,9 +673,6 @@ static ACIA6850_INTERFACE( osi470_acia_intf )
XTAL_4MHz/8, // 250 kHz
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
@@ -935,6 +921,9 @@ void sb2m600_state::device_timer(emu_timer &timer, device_timer_id id, int param
{
switch (id)
{
+ case TIMER_CASSETTE:
+ m_acia_0->write_rx(((m_cassette)->input() > 0.0) ? 1 : 0);
+ break;
case TIMER_SETUP_BEEP:
m_beeper->set_state(0);
m_beeper->set_frequency(300);
@@ -947,6 +936,8 @@ void sb2m600_state::device_timer(emu_timer &timer, device_timer_id id, int param
DRIVER_INIT_MEMBER(c1p_state,c1p)
{
timer_set(attotime::zero, TIMER_SETUP_BEEP);
+ m_cassette_timer = timer_alloc(TIMER_CASSETTE);
+ m_cassette_timer->adjust(attotime::from_hz(44100), 0, attotime::from_hz(44100));
}
diff --git a/src/mess/drivers/poly.c b/src/mess/drivers/poly.c
index 93538913a9f..1878eee9552 100644
--- a/src/mess/drivers/poly.c
+++ b/src/mess/drivers/poly.c
@@ -161,11 +161,8 @@ static ACIA6850_INTERFACE( acia_intf )
{
1,
1,
- DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
- DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, cts_r),
DEVCB_NULL,//DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/tavernie.c b/src/mess/drivers/tavernie.c
index 02340ec8465..9d7331c18dc 100644
--- a/src/mess/drivers/tavernie.c
+++ b/src/mess/drivers/tavernie.c
@@ -334,11 +334,8 @@ static ACIA6850_INTERFACE( mc6850_intf )
{
153600,
153600,
- DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, cts_r),
DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
- DEVCB_NULL,
DEVCB_NULL
};
@@ -367,7 +364,11 @@ static MACHINE_CONFIG_START( cpu09, tavernie_state )
/* Devices */
MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
+
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rx))
+ MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts))
+
MCFG_PIA6821_ADD("pia", mc6821_intf)
MCFG_PTM6840_ADD("ptm", mc6840_intf)
MCFG_ACIA6850_ADD("acia", mc6850_intf)
diff --git a/src/mess/drivers/tek405x.c b/src/mess/drivers/tek405x.c
index 00aa1e5adec..ffec5ffdb81 100644
--- a/src/mess/drivers/tek405x.c
+++ b/src/mess/drivers/tek405x.c
@@ -1114,9 +1114,6 @@ static ACIA6850_INTERFACE( acia_intf )
0,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_LINE_GND,
- DEVCB_NULL,
- DEVCB_LINE_GND,
DEVCB_DRIVER_LINE_MEMBER(tek4051_state, acia_irq_w)
};
diff --git a/src/mess/drivers/v6809.c b/src/mess/drivers/v6809.c
index 454aedbd85a..4417e1bd9a2 100644
--- a/src/mess/drivers/v6809.c
+++ b/src/mess/drivers/v6809.c
@@ -337,9 +337,6 @@ static ACIA6850_INTERFACE( mc6850_intf )
10,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_NULL
};
diff --git a/src/mess/drivers/votrtnt.c b/src/mess/drivers/votrtnt.c
index 5e213467c04..a54a6684643 100644
--- a/src/mess/drivers/votrtnt.c
+++ b/src/mess/drivers/votrtnt.c
@@ -93,11 +93,8 @@ static ACIA6850_INTERFACE( acia_intf )
{
153600,
153600,
- DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
- DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, cts_r),
DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
- DEVCB_NULL,
DEVCB_NULL
};
@@ -120,7 +117,10 @@ static MACHINE_CONFIG_START( votrtnt, votrtnt_state )
/* serial hardware */
MCFG_ACIA6850_ADD("acia", acia_intf)
+
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "serial_terminal")
+ MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rx))
+ MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/includes/atarist.h b/src/mess/includes/atarist.h
index e264a0508bb..12698948f44 100644
--- a/src/mess/includes/atarist.h
+++ b/src/mess/includes/atarist.h
@@ -87,11 +87,11 @@ public:
m_maincpu(*this, M68000_TAG),
m_fdc(*this, WD1772_TAG),
m_mfp(*this, MC68901_TAG),
+ m_acia0(*this, MC6850_0_TAG),
m_acia1(*this, MC6850_1_TAG),
m_centronics(*this, CENTRONICS_TAG),
m_ram(*this, RAM_TAG),
m_rs232(*this, RS232_TAG),
- m_mdout(*this, "mdout"),
m_p31(*this, "P31"),
m_p32(*this, "P32"),
m_p33(*this, "P33"),
@@ -125,11 +125,11 @@ public:
required_device<cpu_device> m_maincpu;
required_device<wd1772_t> m_fdc;
required_device<mc68901_device> m_mfp;
+ required_device<acia6850_device> m_acia0;
required_device<acia6850_device> m_acia1;
required_device<centronics_device> m_centronics;
required_device<ram_device> m_ram;
required_device<rs232_port_device> m_rs232;
- required_device<serial_port_device> m_mdout;
required_ioport m_p31;
required_ioport m_p32;
required_ioport m_p33;
@@ -231,11 +231,8 @@ public:
DECLARE_WRITE8_MEMBER( psg_pa_w );
- DECLARE_READ_LINE_MEMBER( ikbd_rx_r );
DECLARE_WRITE_LINE_MEMBER( ikbd_tx_w );
DECLARE_WRITE_LINE_MEMBER( acia_ikbd_irq_w );
- DECLARE_READ_LINE_MEMBER( midi_rx_in );
- DECLARE_WRITE_LINE_MEMBER( midi_tx_out );
DECLARE_WRITE_LINE_MEMBER( acia_midi_irq_w );
DECLARE_READ8_MEMBER( mfp_gpio_r );
@@ -254,9 +251,6 @@ public:
/* memory state */
UINT8 m_mmu;
- // MIDI state
- int m_midi_rx_state;
-
/* keyboard state */
int m_acia_ikbd_irq;
int m_acia_midi_irq;
@@ -267,10 +261,8 @@ public:
UINT8 m_ikbd_mouse_px;
UINT8 m_ikbd_mouse_py;
UINT8 m_ikbd_mouse_pc;
- int m_ikbd_rx;
int m_ikbd_tx;
int m_ikbd_joy;
- int m_midi_rx;
int m_midi_tx;
/* floppy state */
diff --git a/src/mess/includes/bbc.h b/src/mess/includes/bbc.h
index 00e7a5d65e5..1031d71ed3e 100644
--- a/src/mess/includes/bbc.h
+++ b/src/mess/includes/bbc.h
@@ -175,6 +175,9 @@ public:
int m_len3;
int m_mc6850_clock;
UINT8 m_serproc_data;
+ int m_rxd_serial;
+ int m_dcd_serial;
+ int m_cts_serial;
int m_dcd_cass;
int m_rxd_cass;
int m_cass_out_enabled;
@@ -340,11 +343,14 @@ public:
DECLARE_WRITE_LINE_MEMBER(bbc_wd177x_intrq_w);
DECLARE_WRITE_LINE_MEMBER(bbc_wd177x_drq_w);
DECLARE_WRITE_LINE_MEMBER(bbc_vsync);
- DECLARE_READ_LINE_MEMBER(bbc_rxd_r);
- DECLARE_READ_LINE_MEMBER(bbc_dcd_r);
- DECLARE_READ_LINE_MEMBER(bbc_cts_r);
+ void update_acia_rxd();
+ void update_acia_dcd();
+ void update_acia_cts();
DECLARE_WRITE_LINE_MEMBER(bbc_rts_w);
DECLARE_WRITE_LINE_MEMBER(bbc_txd_w);
+ DECLARE_WRITE_LINE_MEMBER(write_rxd_serial);
+ DECLARE_WRITE_LINE_MEMBER(write_dcd_serial);
+ DECLARE_WRITE_LINE_MEMBER(write_cts_serial);
DECLARE_INPUT_CHANGED_MEMBER( trigger_reset );
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( bbcb_cart );
diff --git a/src/mess/includes/newbrain.h b/src/mess/includes/newbrain.h
index ab45c392fb3..0a9906baf86 100644
--- a/src/mess/includes/newbrain.h
+++ b/src/mess/includes/newbrain.h
@@ -164,7 +164,6 @@ public:
int m_bee; // identity
UINT8 m_enrg1; // enable register 1
UINT8 m_enrg2; // enable register 2
- int m_acia_rxd; // ACIA receive
int m_acia_txd; // ACIA transmit
// COP420 state
@@ -239,7 +238,6 @@ public:
DECLARE_READ8_MEMBER( usbs_r );
DECLARE_WRITE8_MEMBER( usbs_w );
DECLARE_WRITE8_MEMBER( paging_w );
- DECLARE_READ_LINE_MEMBER( acia_rx );
DECLARE_WRITE_LINE_MEMBER( acia_tx );
DECLARE_WRITE_LINE_MEMBER( acia_interrupt );
DECLARE_WRITE_LINE_MEMBER( fdc_interrupt );
diff --git a/src/mess/includes/osi.h b/src/mess/includes/osi.h
index 04a16a44836..d56dec945cb 100644
--- a/src/mess/includes/osi.h
+++ b/src/mess/includes/osi.h
@@ -30,12 +30,14 @@ class sb2m600_state : public driver_device
public:
enum
{
+ TIMER_CASSETTE,
TIMER_SETUP_BEEP
};
sb2m600_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, M6502_TAG),
+ m_acia_0(*this, "acia_0"),
m_cassette(*this, "cassette"),
m_discrete(*this, DISCRETE_TAG),
m_ram(*this, RAM_TAG),
@@ -60,7 +62,6 @@ public:
DECLARE_READ8_MEMBER( keyboard_r );
DECLARE_WRITE8_MEMBER( keyboard_w );
DECLARE_WRITE8_MEMBER( ctrl_w );
- DECLARE_READ_LINE_MEMBER( cassette_rx );
DECLARE_WRITE_LINE_MEMBER( cassette_tx );
/* keyboard state */
@@ -78,6 +79,7 @@ public:
DECLARE_PALETTE_INIT(osi630);
required_device<cpu_device> m_maincpu;
+ required_device<acia6850_device> m_acia_0;
required_device<cassette_image_device> m_cassette;
optional_device<discrete_sound_device> m_discrete;
required_device<ram_device> m_ram;
@@ -94,6 +96,7 @@ public:
required_ioport m_io_sound;
required_ioport m_io_reset;
optional_device<beep_device> m_beeper;
+ emu_timer *m_cassette_timer;
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
diff --git a/src/mess/includes/thomson.h b/src/mess/includes/thomson.h
index b9d14a0c301..60fc32e162c 100644
--- a/src/mess/includes/thomson.h
+++ b/src/mess/includes/thomson.h
@@ -137,7 +137,6 @@ public:
DECLARE_WRITE8_MEMBER( to7_io_portb_out );
DECLARE_WRITE8_MEMBER( to7_io_cb2_out );
DECLARE_WRITE_LINE_MEMBER( to7_modem_cb );
- DECLARE_READ_LINE_MEMBER( to7_modem_rx_r );
DECLARE_WRITE_LINE_MEMBER( to7_modem_tx_w );
DECLARE_READ8_MEMBER( to7_modem_mea8000_r );
DECLARE_WRITE8_MEMBER( to7_modem_mea8000_w );
@@ -339,7 +338,6 @@ protected:
UINT8 m_thom_cart_bank; /* current bank */
UINT8 m_to7_lightpen_step;
UINT8 m_to7_lightpen;
- UINT8 m_to7_modem_rx;
UINT8 m_to7_modem_tx;
/* calls to7_game_update_cb periodically */
emu_timer* m_to7_game_timer;
diff --git a/src/mess/machine/bbc.c b/src/mess/machine/bbc.c
index 1d10857b366..d78be75bced 100644
--- a/src/mess/machine/bbc.c
+++ b/src/mess/machine/bbc.c
@@ -1297,6 +1297,7 @@ const uPD7002_interface bbc_uPD7002 =
void bbc_state::MC6850_Receive_Clock(int new_clock)
{
m_rxd_cass = new_clock;
+ update_acia_rxd();
//
// Somehow the "serial processor" generates 16 clock signals towards
@@ -1366,6 +1367,7 @@ TIMER_CALLBACK_MEMBER(bbc_state::bbc_tape_timer_cb)
logerror ("Cassette length %d\n",m_wav_len);
m_nr_high_tones = 0;
m_dcd_cass = 0;
+ update_acia_dcd();
m_len0=0;
m_len1=0;
m_len2=0;
@@ -1387,6 +1389,7 @@ TIMER_CALLBACK_MEMBER(bbc_state::bbc_tape_timer_cb)
logerror("Serial value 0\n");
m_nr_high_tones = 0;
m_dcd_cass = 0;
+ update_acia_dcd();
MC6850_Receive_Clock(0);
m_len0=0;
m_len1=0;
@@ -1402,6 +1405,7 @@ TIMER_CALLBACK_MEMBER(bbc_state::bbc_tape_timer_cb)
if ( m_nr_high_tones > 100 )
{
m_dcd_cass = 1;
+ update_acia_dcd();
}
MC6850_Receive_Clock(1);
m_len0=0;
@@ -1416,22 +1420,39 @@ TIMER_CALLBACK_MEMBER(bbc_state::bbc_tape_timer_cb)
}
}
+WRITE_LINE_MEMBER( bbc_state::write_rxd_serial )
+{
+ m_rxd_serial = state;
+ update_acia_rxd();
+}
-READ_LINE_MEMBER( bbc_state::bbc_rxd_r )
+void bbc_state::update_acia_rxd()
{
- return ( m_serproc_data & 0x40 ) ? m_rs232->rx() : m_rxd_cass;
+ m_acia->write_rx(( m_serproc_data & 0x40 ) ? m_rxd_serial : m_rxd_cass);
}
-READ_LINE_MEMBER( bbc_state::bbc_dcd_r )
+WRITE_LINE_MEMBER( bbc_state::write_dcd_serial )
+{
+ m_dcd_serial = state;
+ update_acia_dcd();
+}
+
+void bbc_state::update_acia_dcd()
{
- return ( m_serproc_data & 0x40 ) ? m_rs232->dcd_r() : m_dcd_cass;
+ m_acia->write_dcd(( m_serproc_data & 0x40 ) ? m_dcd_serial : m_dcd_cass);
}
-READ_LINE_MEMBER( bbc_state::bbc_cts_r )
+WRITE_LINE_MEMBER( bbc_state::write_cts_serial )
+{
+ m_cts_serial = state;
+ update_acia_cts();
+}
+
+void bbc_state::update_acia_cts()
{
- return ( m_serproc_data & 0x40 ) ? m_rs232->cts_r() : 0;
+ m_acia->write_cts(( m_serproc_data & 0x40 ) ? m_cts_serial : 0);
}
@@ -1516,6 +1537,9 @@ WRITE8_MEMBER(bbc_state::bbc_SerialULA_w)
};
m_serproc_data = data;
+ update_acia_rxd();
+ update_acia_dcd();
+ update_acia_cts();
BBC_Cassette_motor(m_serproc_data & 0x80);
// Set transmit clock rate
diff --git a/src/mess/machine/isa_gus.c b/src/mess/machine/isa_gus.c
index 3af65916336..6963f074d54 100644
--- a/src/mess/machine/isa_gus.c
+++ b/src/mess/machine/isa_gus.c
@@ -1200,18 +1200,12 @@ void gf1_device::eop_w(int state)
/* 16-bit ISA card device implementation */
-static const acia6850_interface gus_midi_interface =
+static ACIA6850_INTERFACE(gus_midi_interface)
{
31250 * 16,
0,
-
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa16_gus_device, rx_in), // rx in
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa16_gus_device, tx_out), // tx out
-
- DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx),
DEVCB_NULL,
- DEVCB_NULL,
-
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,midi_irq)
};
@@ -1290,7 +1284,6 @@ void isa16_gus_device::device_start()
{
m_gf1 = subdevice<gf1_device>("gf1");
m_midi = subdevice<acia6850_device>("midi");
- m_mdout = subdevice<serial_port_device>("mdout");
set_isa_device();
m_isa->install_device(0x0200, 0x0201, 0, 0, read8_delegate(FUNC(isa16_gus_device::joy_r),this), write8_delegate(FUNC(isa16_gus_device::joy_w),this) );
m_isa->install_device(0x0220, 0x022f, 0, 0, read8_delegate(FUNC(isa16_gus_device::board_r),this), write8_delegate(FUNC(isa16_gus_device::board_w),this) );
@@ -1712,23 +1705,13 @@ WRITE_LINE_MEMBER( isa16_gus_device::midi_irq )
WRITE_LINE_MEMBER( isa16_gus_device::midi_rx_w )
{
- m_rx_state = state;
+ m_midi->write_rx(state);
for (int i = 0; i < 16; i++) // divider is set to 16
{
m_midi->rx_clock_in();
}
}
-READ_LINE_MEMBER( isa16_gus_device::rx_in )
-{
- return m_rx_state;
-}
-
-WRITE_LINE_MEMBER( isa16_gus_device::tx_out )
-{
- m_mdout->tx(state);
-}
-
WRITE_LINE_MEMBER( isa16_gus_device::nmi_w)
{
m_irq_status |= IRQ_SB;
diff --git a/src/mess/machine/isa_gus.h b/src/mess/machine/isa_gus.h
index 1027eeaa5c5..106d66ee9da 100644
--- a/src/mess/machine/isa_gus.h
+++ b/src/mess/machine/isa_gus.h
@@ -255,8 +255,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(drq2_w);
DECLARE_WRITE_LINE_MEMBER(nmi_w);
DECLARE_WRITE_LINE_MEMBER( midi_rx_w );
- DECLARE_READ_LINE_MEMBER( rx_in );
- DECLARE_WRITE_LINE_MEMBER( tx_out );
// DMA overrides
virtual UINT8 dack_r(int line);
@@ -274,11 +272,9 @@ protected:
private:
gf1_device* m_gf1;
acia6850_device* m_midi;
- serial_port_device* m_mdout;
UINT8 m_irq_status;
attotime m_joy_time;
- int m_rx_state;
};
// device type definition
diff --git a/src/mess/machine/thomson.c b/src/mess/machine/thomson.c
index 734a1bcfe9e..c865d3678ab 100644
--- a/src/mess/machine/thomson.c
+++ b/src/mess/machine/thomson.c
@@ -826,11 +826,6 @@ const pia6821_interface to7_pia6821_modem =
DEVCB_NULL
};
-READ_LINE_MEMBER( thomson_state::to7_modem_rx_r )
-{
- return m_to7_modem_rx;
-}
-
WRITE_LINE_MEMBER( thomson_state::to7_modem_tx_w )
{
m_to7_modem_tx = state;
@@ -840,11 +835,8 @@ ACIA6850_INTERFACE( to7_modem )
{
1200,
1200, /* 1200 bauds, might be divided by 16 */
- DEVCB_DRIVER_LINE_MEMBER(thomson_state, to7_modem_rx_r), /*&to7_modem_rx,*/
DEVCB_DRIVER_LINE_MEMBER(thomson_state, to7_modem_tx_w), /*&to7_modem_tx,*/
DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
DEVCB_DRIVER_LINE_MEMBER(thomson_state, to7_modem_cb)
};
@@ -853,7 +845,7 @@ ACIA6850_INTERFACE( to7_modem )
void thomson_state::to7_modem_reset()
{
LOG (( "to7_modem_reset called\n" ));
- m_to7_modem_rx = 0;
+ m_acia->write_rx(0);
m_to7_modem_tx = 0;
/* pia_reset() is called in machine_reset */
/* acia_6850 has no reset (?) */
@@ -864,7 +856,6 @@ void thomson_state::to7_modem_reset()
void thomson_state::to7_modem_init()
{
LOG (( "to7_modem_init: MODEM not implemented!\n" ));
- save_item(NAME(m_to7_modem_rx));
save_item(NAME(m_to7_modem_tx));
}