mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
replaced read rx/cts/dcd callbacks in ACIA6850 write write handlers, which allows multiple chips to be connected together without using glue methods. [smf]
This commit is contained in:
parent
8b0c23f055
commit
b4c7b67ff9
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -169,9 +169,6 @@ static ACIA6850_INTERFACE( acia_intf )
|
||||
0,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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)
|
||||
};
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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 */
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
};
|
||||
|
||||
|
@ -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 =
|
||||
|
@ -92,9 +92,6 @@ static ACIA6850_INTERFACE( ec65_acia_intf )
|
||||
0,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
};
|
||||
|
||||
|
@ -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)
|
||||
};
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
};
|
||||
|
||||
|
@ -337,9 +337,6 @@ static ACIA6850_INTERFACE( mc6850_intf )
|
||||
10,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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 */
|
||||
|
@ -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 );
|
||||
|
@ -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 );
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
READ_LINE_MEMBER( bbc_state::bbc_rxd_r )
|
||||
WRITE_LINE_MEMBER( bbc_state::write_rxd_serial )
|
||||
{
|
||||
return ( m_serproc_data & 0x40 ) ? m_rs232->rx() : m_rxd_cass;
|
||||
m_rxd_serial = state;
|
||||
update_acia_rxd();
|
||||
}
|
||||
|
||||
void bbc_state::update_acia_rxd()
|
||||
{
|
||||
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 )
|
||||
{
|
||||
return ( m_serproc_data & 0x40 ) ? m_rs232->dcd_r() : m_dcd_cass;
|
||||
m_dcd_serial = state;
|
||||
update_acia_dcd();
|
||||
}
|
||||
|
||||
void bbc_state::update_acia_dcd()
|
||||
{
|
||||
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 )
|
||||
{
|
||||
return ( m_serproc_data & 0x40 ) ? m_rs232->cts_r() : 0;
|
||||
m_cts_serial = state;
|
||||
update_acia_cts();
|
||||
}
|
||||
|
||||
void bbc_state::update_acia_cts()
|
||||
{
|
||||
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
|
||||
|
@ -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_DEVICE_LINE_MEMBER("mdout", serial_port_device, tx),
|
||||
DEVCB_NULL,
|
||||
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;
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user