Updated maygayv1 to use the n68681 device. (nw)

This commit is contained in:
Ivan Vangelista 2013-11-23 12:28:55 +00:00
parent 8b17b14e74
commit c06fb77b68

View File

@ -129,7 +129,7 @@ Find lamps/reels after UPD changes.
#include "video/awpvid.h" #include "video/awpvid.h"
#include "cpu/mcs51/mcs51.h" #include "cpu/mcs51/mcs51.h"
#include "machine/6821pia.h" #include "machine/6821pia.h"
#include "machine/68681.h" #include "machine/n68681.h"
#include "sound/2413intf.h" #include "sound/2413intf.h"
#include "sound/upd7759.h" #include "sound/upd7759.h"
#include "machine/nvram.h" #include "machine/nvram.h"
@ -220,13 +220,18 @@ public:
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"), m_soundcpu(*this, "soundcpu"),
m_upd7759(*this, "upd") { } m_upd7759(*this, "upd"),
m_duart68681(*this, "duart68681") { }
required_device<cpu_device> m_maincpu;
required_device<i8052_device> m_soundcpu;
required_device<upd7759_device> m_upd7759;
required_device<duartn68681_device> m_duart68681;
int m_vsync_latch_preset; int m_vsync_latch_preset;
UINT8 m_p1; UINT8 m_p1;
UINT8 m_p3; UINT8 m_p3;
int m_d68681_val; int m_d68681_val;
device_t *m_duart68681;
i82716_t m_i82716; i82716_t m_i82716;
i8279_t m_i8279; i8279_t m_i8279;
DECLARE_WRITE16_MEMBER(i82716_w); DECLARE_WRITE16_MEMBER(i82716_w);
@ -249,9 +254,8 @@ public:
INTERRUPT_GEN_MEMBER(vsync_interrupt); INTERRUPT_GEN_MEMBER(vsync_interrupt);
DECLARE_WRITE8_MEMBER(data_from_i8031); DECLARE_WRITE8_MEMBER(data_from_i8031);
DECLARE_READ8_MEMBER(data_to_i8031); DECLARE_READ8_MEMBER(data_to_i8031);
required_device<cpu_device> m_maincpu; DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
required_device<i8052_device> m_soundcpu; DECLARE_WRITE_LINE_MEMBER(duart_txa);
required_device<upd7759_device> m_upd7759;
}; };
@ -697,7 +701,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, maygayv1_state )
AM_RANGE(0x860000, 0x86000d) AM_READWRITE(read_odd, write_odd) AM_RANGE(0x860000, 0x86000d) AM_READWRITE(read_odd, write_odd)
AM_RANGE(0x86000e, 0x86000f) AM_WRITE(vsync_int_ctrl) AM_RANGE(0x86000e, 0x86000f) AM_WRITE(vsync_int_ctrl)
AM_RANGE(0x880000, 0x89ffff) AM_READWRITE(i82716_r, i82716_w) AM_RANGE(0x880000, 0x89ffff) AM_READWRITE(i82716_r, i82716_w)
AM_RANGE(0x8a0000, 0x8a001f) AM_DEVREADWRITE8_LEGACY("duart68681", duart68681_r, duart68681_w, 0xff) AM_RANGE(0x8a0000, 0x8a001f) AM_DEVREADWRITE8("duart68681", duartn68681_device, read, write, 0xff)
AM_RANGE(0x8c0000, 0x8c000f) AM_DEVREADWRITE8("pia", pia6821_device, read, write, 0xff) AM_RANGE(0x8c0000, 0x8c000f) AM_DEVREADWRITE8("pia", pia6821_device, read, write, 0xff)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -940,31 +944,26 @@ INPUT_PORTS_END
***************************************************************************/ ***************************************************************************/
static void duart_irq_handler(device_t *device, int state, UINT8 vector) WRITE_LINE_MEMBER(maygayv1_state::duart_irq_handler)
{ {
maygayv1_state *drvstate = device->machine().driver_data<maygayv1_state>(); m_maincpu->set_input_line_and_vector(5, state, m_duart68681->get_irq_vector());
drvstate->m_maincpu->set_input_line_and_vector(5, state, vector); // m_maincpu->set_input_line(5, state ? ASSERT_LINE : CLEAR_LINE);
// drvstate->m_maincpu->set_input_line(5, state ? ASSERT_LINE : CLEAR_LINE);
}; };
static void duart_tx(device_t *device, int channel, UINT8 data) WRITE_LINE_MEMBER(maygayv1_state::duart_txa)
{ {
maygayv1_state *state = device->machine().driver_data<maygayv1_state>(); m_d68681_val = state;
if (channel == 0) m_soundcpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); // ?
{
state->m_d68681_val = data;
state->m_soundcpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); // ?
}
}; };
static const duart68681_config maygayv1_duart68681_config = static const duartn68681_config maygayv1_duart68681_config =
{ {
duart_irq_handler, DEVCB_DRIVER_LINE_MEMBER(maygayv1_state, duart_irq_handler),
duart_tx, DEVCB_DRIVER_LINE_MEMBER(maygayv1_state, duart_txa),
NULL, DEVCB_NULL,
NULL DEVCB_NULL,
DEVCB_NULL
}; };
@ -975,7 +974,7 @@ READ8_MEMBER(maygayv1_state::data_to_i8031)
WRITE8_MEMBER(maygayv1_state::data_from_i8031) WRITE8_MEMBER(maygayv1_state::data_from_i8031)
{ {
duart68681_rx_data(m_duart68681, 0, data); m_duart68681->rx_a_w(data);
} }
READ8_MEMBER(maygayv1_state::b_read) READ8_MEMBER(maygayv1_state::b_read)
@ -1016,8 +1015,6 @@ void maygayv1_state::machine_start()
save_pointer(NAME(i82716.dram), 0x40000); save_pointer(NAME(i82716.dram), 0x40000);
// duart_68681_init(DUART_CLOCK, duart_irq_handler, duart_tx);
m_soundcpu->i8051_set_serial_tx_callback(write8_delegate(FUNC(maygayv1_state::data_from_i8031),this)); m_soundcpu->i8051_set_serial_tx_callback(write8_delegate(FUNC(maygayv1_state::data_from_i8031),this));
m_soundcpu->i8051_set_serial_rx_callback(read8_delegate(FUNC(maygayv1_state::data_to_i8031),this)); m_soundcpu->i8051_set_serial_rx_callback(read8_delegate(FUNC(maygayv1_state::data_to_i8031),this));
} }
@ -1026,7 +1023,6 @@ void maygayv1_state::machine_reset()
{ {
i82716_t &i82716 = m_i82716; i82716_t &i82716 = m_i82716;
// ? // ?
m_duart68681 = machine().device( "duart68681" );
memset(i82716.dram, 0, 0x40000); memset(i82716.dram, 0, 0x40000);
i82716.r[RWBA] = 0x0200; i82716.r[RWBA] = 0x0200;
} }
@ -1065,7 +1061,7 @@ static MACHINE_CONFIG_START( maygayv1, maygayv1_state )
MCFG_PALETTE_LENGTH(16) MCFG_PALETTE_LENGTH(16)
MCFG_DUART68681_ADD("duart68681", DUART_CLOCK, maygayv1_duart68681_config) MCFG_DUARTN68681_ADD("duart68681", DUART_CLOCK, maygayv1_duart68681_config)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")