Move segahang to newer i8255.

This commit is contained in:
Aaron Giles 2012-08-08 06:52:03 +00:00
parent e70d43e3cb
commit 81d89c59b0
2 changed files with 35 additions and 35 deletions

View File

@ -89,24 +89,24 @@ static READ8_DEVICE_HANDLER( adc_status_r );
* *
*************************************/ *************************************/
static const ppi8255_interface hangon_ppi_intf[2] = static I8255_INTERFACE(hangon_ppi_intf_0)
{ {
{ DEVCB_NULL,
DEVCB_NULL, DEVCB_HANDLER(sound_latch_w),
DEVCB_NULL, DEVCB_NULL,
DEVCB_NULL, DEVCB_HANDLER(video_lamps_w),
DEVCB_HANDLER(sound_latch_w), DEVCB_NULL,
DEVCB_HANDLER(video_lamps_w), DEVCB_HANDLER(tilemap_sound_w)
DEVCB_HANDLER(tilemap_sound_w) };
},
{ static I8255_INTERFACE(hangon_ppi_intf_1)
DEVCB_NULL, {
DEVCB_NULL, DEVCB_NULL,
DEVCB_HANDLER(adc_status_r), DEVCB_HANDLER(sub_control_adc_w),
DEVCB_HANDLER(sub_control_adc_w), DEVCB_NULL,
DEVCB_NULL, DEVCB_NULL,
DEVCB_NULL DEVCB_HANDLER(adc_status_r),
} DEVCB_NULL
}; };
@ -179,10 +179,10 @@ static TIMER_DEVICE_CALLBACK( hangon_irq )
* *
*************************************/ *************************************/
static TIMER_CALLBACK( delayed_ppi8255_w ) static TIMER_CALLBACK( delayed_i8255_w )
{ {
segahang_state *state = machine.driver_data<segahang_state>(); segahang_state *state = machine.driver_data<segahang_state>();
state->m_ppi8255_1->write(*state->m_maincpu->space(AS_PROGRAM), param >> 8, param & 0xff); state->m_i8255_1->write(*state->m_maincpu->space(AS_PROGRAM), param >> 8, param & 0xff);
} }
@ -193,7 +193,7 @@ static READ16_HANDLER( hangon_io_r )
switch (offset & 0x3020/2) switch (offset & 0x3020/2)
{ {
case 0x0000/2: /* PPI @ 4B */ case 0x0000/2: /* PPI @ 4B */
return state->m_ppi8255_1->read(*state->m_maincpu->space(AS_PROGRAM), offset & 3); return state->m_i8255_1->read(*state->m_maincpu->space(AS_PROGRAM), offset & 3);
case 0x1000/2: /* Input ports and DIP switches */ case 0x1000/2: /* Input ports and DIP switches */
{ {
@ -202,7 +202,7 @@ static READ16_HANDLER( hangon_io_r )
} }
case 0x3000/2: /* PPI @ 4C */ case 0x3000/2: /* PPI @ 4C */
return state->m_ppi8255_2->read(*state->m_maincpu->space(AS_PROGRAM), offset & 3); return state->m_i8255_2->read(*state->m_maincpu->space(AS_PROGRAM), offset & 3);
case 0x3020/2: /* ADC0804 data output */ case 0x3020/2: /* ADC0804 data output */
{ {
@ -226,11 +226,11 @@ static WRITE16_HANDLER( hangon_io_w )
case 0x0000/2: /* PPI @ 4B */ case 0x0000/2: /* PPI @ 4B */
/* the port C handshaking signals control the Z80 NMI, */ /* the port C handshaking signals control the Z80 NMI, */
/* so we have to sync whenever we access this PPI */ /* so we have to sync whenever we access this PPI */
space->machine().scheduler().synchronize(FUNC(delayed_ppi8255_w), ((offset & 3) << 8) | (data & 0xff)); space->machine().scheduler().synchronize(FUNC(delayed_i8255_w), ((offset & 3) << 8) | (data & 0xff));
return; return;
case 0x3000/2: /* PPI @ 4C */ case 0x3000/2: /* PPI @ 4C */
state->m_ppi8255_2->write(*state->m_maincpu->space(AS_PROGRAM), offset & 3, data & 0xff); state->m_i8255_2->write(*state->m_maincpu->space(AS_PROGRAM), offset & 3, data & 0xff);
return; return;
case 0x3020/2: /* ADC0804 */ case 0x3020/2: /* ADC0804 */
@ -248,7 +248,7 @@ static READ16_HANDLER( sharrier_io_r )
switch (offset & 0x0030/2) switch (offset & 0x0030/2)
{ {
case 0x0000/2: case 0x0000/2:
return state->m_ppi8255_1->read(*state->m_maincpu->space(AS_PROGRAM), offset & 3); return state->m_i8255_1->read(*state->m_maincpu->space(AS_PROGRAM), offset & 3);
case 0x0010/2: /* Input ports and DIP switches */ case 0x0010/2: /* Input ports and DIP switches */
{ {
@ -258,7 +258,7 @@ static READ16_HANDLER( sharrier_io_r )
case 0x0020/2: /* PPI @ 4C */ case 0x0020/2: /* PPI @ 4C */
if (offset == 2) return 0; if (offset == 2) return 0;
return state->m_ppi8255_2->read(*state->m_maincpu->space(AS_PROGRAM), offset & 3); return state->m_i8255_2->read(*state->m_maincpu->space(AS_PROGRAM), offset & 3);
case 0x0030/2: /* ADC0804 data output */ case 0x0030/2: /* ADC0804 data output */
{ {
@ -282,11 +282,11 @@ static WRITE16_HANDLER( sharrier_io_w )
case 0x0000/2: case 0x0000/2:
/* the port C handshaking signals control the Z80 NMI, */ /* the port C handshaking signals control the Z80 NMI, */
/* so we have to sync whenever we access this PPI */ /* so we have to sync whenever we access this PPI */
space->machine().scheduler().synchronize(FUNC(delayed_ppi8255_w), ((offset & 3) << 8) | (data & 0xff)); space->machine().scheduler().synchronize(FUNC(delayed_i8255_w), ((offset & 3) << 8) | (data & 0xff));
return; return;
case 0x0020/2: /* PPI @ 4C */ case 0x0020/2: /* PPI @ 4C */
state->m_ppi8255_2->write(*state->m_maincpu->space(AS_PROGRAM), offset & 3, data & 0xff); state->m_i8255_2->write(*state->m_maincpu->space(AS_PROGRAM), offset & 3, data & 0xff);
return; return;
case 0x0030/2: /* ADC0804 */ case 0x0030/2: /* ADC0804 */
@ -428,7 +428,7 @@ static READ8_HANDLER( sound_data_r )
segahang_state *state = space->machine().driver_data<segahang_state>(); segahang_state *state = space->machine().driver_data<segahang_state>();
/* assert ACK */ /* assert ACK */
state->m_ppi8255_1->set_port_c(0x00); state->m_i8255_1->pc6_w(CLEAR_LINE);
return state->soundlatch_byte_r(*space, offset); return state->soundlatch_byte_r(*space, offset);
} }
@ -844,8 +844,8 @@ static MACHINE_CONFIG_START( hangon_base, segahang_state )
MCFG_MACHINE_RESET(hangon) MCFG_MACHINE_RESET(hangon)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_PPI8255_ADD( "ppi8255_1", hangon_ppi_intf[0] ) MCFG_I8255_ADD( "i8255_1", hangon_ppi_intf_0 )
MCFG_PPI8255_ADD( "ppi8255_2", hangon_ppi_intf[1] ) MCFG_I8255_ADD( "i8255_2", hangon_ppi_intf_1 )
/* video hardware */ /* video hardware */
MCFG_GFXDECODE(segahang) MCFG_GFXDECODE(segahang)

View File

@ -38,7 +38,7 @@
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "cpu/mcs51/mcs51.h" #include "cpu/mcs51/mcs51.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/8255ppi.h" #include "machine/i8255.h"
#include "machine/segaic16.h" #include "machine/segaic16.h"
#include "video/segaic16.h" #include "video/segaic16.h"
@ -55,8 +55,8 @@ public:
m_subcpu(*this, "subcpu"), m_subcpu(*this, "subcpu"),
m_soundcpu(*this, "soundcpu"), m_soundcpu(*this, "soundcpu"),
m_mcu(*this, "mcu"), m_mcu(*this, "mcu"),
m_ppi8255_1(*this, "ppi8255_1"), m_i8255_1(*this, "i8255_1"),
m_ppi8255_2(*this, "ppi8255_2"), m_i8255_2(*this, "i8255_2"),
m_i8751_vblank_hook(NULL), m_i8751_vblank_hook(NULL),
m_adc_select(0) m_adc_select(0)
{ } { }
@ -67,8 +67,8 @@ public:
required_device<m68000_device> m_subcpu; required_device<m68000_device> m_subcpu;
required_device<z80_device> m_soundcpu; required_device<z80_device> m_soundcpu;
optional_device<i8751_device> m_mcu; optional_device<i8751_device> m_mcu;
required_device<ppi8255_device> m_ppi8255_1; required_device<i8255_device> m_i8255_1;
required_device<ppi8255_device> m_ppi8255_2; required_device<i8255_device> m_i8255_2;
// configuration // configuration
void (*m_i8751_vblank_hook)(running_machine &machine); void (*m_i8751_vblank_hook)(running_machine &machine);