upd7810.c: Modernized cpu core. [Wilbert Pol]

This commit is contained in:
Wilbert Pol 2014-02-21 22:43:53 +00:00
parent 48bce760ee
commit 9694b53c0a
15 changed files with 8848 additions and 8938 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -262,12 +262,6 @@ INTERRUPT_GEN_MEMBER(fitfight_state::snd_irq)
device.execute().set_input_line(UPD7810_INTF2, HOLD_LINE);
}
static const UPD7810_CONFIG sound_cpu_config =
{
TYPE_7810,
0
};
// #define PRIORITY_EASINESS_TO_PLAY
@ -736,7 +730,6 @@ static MACHINE_CONFIG_START( fitfight, fitfight_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", fitfight_state, irq2_line_hold)
MCFG_CPU_ADD("audiocpu", UPD7810, 12000000)
MCFG_CPU_CONFIG(sound_cpu_config)
MCFG_CPU_PROGRAM_MAP(snd_mem)
MCFG_CPU_IO_MAP(snd_io)
MCFG_CPU_VBLANK_INT_DRIVER("screen", fitfight_state, snd_irq)

View File

@ -1271,13 +1271,6 @@ static const ay8910_interface ay8910_config =
};
static const UPD7810_CONFIG upd_config =
{
TYPE_7810,
NULL /* io_callback */
};
static MACHINE_CONFIG_START( reikaids, homedata_state )
/* basic machine hardware */
@ -1286,7 +1279,6 @@ static MACHINE_CONFIG_START( reikaids, homedata_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", homedata_state, homedata_irq) /* also triggered by the blitter */
MCFG_CPU_ADD("audiocpu", UPD7807, 8000000) /* ??? MHz (max speed for the 7807 is 12MHz) */
MCFG_CPU_CONFIG(upd_config)
MCFG_CPU_PROGRAM_MAP(reikaids_upd7807_map)
MCFG_CPU_IO_MAP(reikaids_upd7807_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", homedata_state, upd7807_irq)
@ -1336,7 +1328,6 @@ static MACHINE_CONFIG_START( pteacher, homedata_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", homedata_state, homedata_irq) /* also triggered by the blitter */
MCFG_CPU_ADD("audiocpu", UPD7807, 9000000) /* 9MHz ? */
MCFG_CPU_CONFIG(upd_config)
MCFG_CPU_PROGRAM_MAP(pteacher_upd7807_map)
MCFG_CPU_IO_MAP(pteacher_upd7807_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", homedata_state, upd7807_irq)

View File

@ -265,24 +265,15 @@ WRITE_LINE_MEMBER(metro_state::ymf278b_interrupt)
***************************************************************************/
static int metro_io_callback( device_t *device, int ioline, int state )
READ_LINE_MEMBER(metro_state::metro_rxd_r)
{
metro_state *driver_state = device->machine().driver_data<metro_state>();
address_space &space = driver_state->m_maincpu->space(AS_PROGRAM);
UINT8 data = 0;
address_space &space = m_maincpu->space(AS_PROGRAM);
UINT8 data = soundlatch_byte_r(space, 0);
switch (ioline)
{
case UPD7810_RXD: /* read the RxD line */
data = driver_state->soundlatch_byte_r(space, 0);
state = data & 1;
driver_state->soundlatch_byte_w(space, 0, data >> 1);
break;
default:
logerror("upd7810 ioline %d not handled\n", ioline);
}
soundlatch_byte_w(space, 0, data >> 1);
return data & 1;
return state;
}
WRITE16_MEMBER(metro_state::metro_soundlatch_w)
@ -3559,12 +3550,6 @@ MACHINE_RESET_MEMBER(metro_state,metro)
}
static const UPD7810_CONFIG metro_cpu_config =
{
TYPE_7810,
metro_io_callback
};
static MACHINE_CONFIG_START( balcube, metro_state )
/* basic machine hardware */
@ -3738,7 +3723,7 @@ static MACHINE_CONFIG_START( daitorid, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_12MHz)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(daitorid_sound_io_map)
@ -3780,7 +3765,7 @@ static MACHINE_CONFIG_START( dharma, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
@ -3821,7 +3806,7 @@ static MACHINE_CONFIG_START( karatour, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
@ -3862,7 +3847,7 @@ static MACHINE_CONFIG_START( 3kokushi, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
@ -3903,7 +3888,7 @@ static MACHINE_CONFIG_START( lastfort, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
@ -3943,7 +3928,7 @@ static MACHINE_CONFIG_START( lastforg, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
@ -4125,7 +4110,7 @@ static MACHINE_CONFIG_START( pangpoms, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
@ -4166,7 +4151,7 @@ static MACHINE_CONFIG_START( poitto, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
@ -4207,7 +4192,7 @@ static MACHINE_CONFIG_START( pururun, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2) /* Not confiremd */
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(daitorid_sound_io_map)
@ -4249,7 +4234,7 @@ static MACHINE_CONFIG_START( skyalert, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)
@ -4290,7 +4275,7 @@ static MACHINE_CONFIG_START( toride2g, metro_state )
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ?
MCFG_CPU_ADD("audiocpu", UPD7810, XTAL_24MHz/2)
MCFG_CPU_CONFIG(metro_cpu_config)
MCFG_UPD7810_RXD(READLINE(metro_state,metro_rxd_r))
MCFG_CPU_PROGRAM_MAP(metro_sound_map)
MCFG_CPU_IO_MAP(metro_sound_io_map)

View File

@ -205,6 +205,7 @@ public:
int sx, int sy, int wx, int wy, int big, UINT16 *tilemapram, int layer );
DECLARE_WRITE_LINE_MEMBER(blzntrnd_irqhandler);
DECLARE_WRITE_LINE_MEMBER(ymf278b_interrupt);
DECLARE_READ_LINE_MEMBER(metro_rxd_r);
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);

View File

@ -430,19 +430,6 @@ INPUT_PORTS_END
/******************************************************************************
CPU config
******************************************************************************/
static const UPD7810_CONFIG ex800_cpu_config =
{
TYPE_7810,
0
};
/******************************************************************************
Machine Drivers
******************************************************************************/
@ -451,7 +438,6 @@ static const UPD7810_CONFIG ex800_cpu_config =
static MACHINE_CONFIG_START( ex800, ex800_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, 12000000) /* 12 MHz? */
MCFG_CPU_CONFIG(ex800_cpu_config)
MCFG_CPU_PROGRAM_MAP(ex800_mem)
MCFG_CPU_IO_MAP(ex800_io)

View File

@ -316,7 +316,6 @@ static GFXDECODE_START( fp1100 )
//GFXDECODE_ENTRY( "chargen", 0x0000, fp1100_chars_8x8, 0, 1 )
GFXDECODE_END
static const UPD7810_CONFIG fp1100_slave_cpu_config = { TYPE_7801, NULL };
//static const upd1771_interface scv_upd1771c_config = { DEVCB_LINE( scv_upd1771_ack_w ) };
@ -353,7 +352,6 @@ static MACHINE_CONFIG_START( fp1100, fp1100_state )
MCFG_CPU_ADD( "sub", UPD7801, MAIN_CLOCK/2 )
MCFG_CPU_PROGRAM_MAP( fp1100_slave_map )
MCFG_CPU_IO_MAP( fp1100_slave_io )
MCFG_CPU_CONFIG( fp1100_slave_cpu_config )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)

View File

@ -42,9 +42,6 @@ static INPUT_PORTS_START( gamepock )
INPUT_PORTS_END
static const UPD7810_CONFIG gamepock_cpu_config = { TYPE_78C06, gamepock_io_callback };
DEVICE_IMAGE_LOAD_MEMBER(gamepock_state,gamepock_cart) {
UINT8 *cart = memregion("user1" )->base();
@ -69,7 +66,7 @@ static MACHINE_CONFIG_START( gamepock, gamepock_state )
MCFG_CPU_ADD("maincpu", UPD78C06, XTAL_6MHz) /* uPD78C06AG */
MCFG_CPU_PROGRAM_MAP( gamepock_mem)
MCFG_CPU_IO_MAP( gamepock_io)
MCFG_CPU_CONFIG( gamepock_cpu_config )
MCFG_UPD7810_TO(WRITELINE(gamepock_state,gamepock_to_w))
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE( 60 )

View File

@ -244,12 +244,6 @@ INPUT_PORTS_END
MACHINE DRIVERS
***************************************************************************/
static const UPD7810_CONFIG lx800_cpu_config =
{
TYPE_7810,
0
};
static const e05a03_interface lx800_e05a03_intf =
{
DEVCB_DRIVER_MEMBER(lx800_state, lx800_centronics_data_r),
@ -262,7 +256,6 @@ static const e05a03_interface lx800_e05a03_intf =
static MACHINE_CONFIG_START( lx800, lx800_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", UPD7810, XTAL_14_7456MHz)
MCFG_CPU_CONFIG(lx800_cpu_config)
MCFG_CPU_PROGRAM_MAP(lx800_mem)
MCFG_CPU_IO_MAP(lx800_io)

View File

@ -815,7 +815,6 @@ static GFXDECODE_START( scv )
GFXDECODE_END
static const UPD7810_CONFIG scv_cpu_config = { TYPE_7801, NULL };
static const upd1771_interface scv_upd1771c_config = { DEVCB_DRIVER_LINE_MEMBER( scv_state, scv_upd1771_ack_w ) };
@ -824,7 +823,6 @@ static MACHINE_CONFIG_START( scv, scv_state )
MCFG_CPU_ADD( "maincpu", UPD7801, XTAL_4MHz )
MCFG_CPU_PROGRAM_MAP( scv_mem )
MCFG_CPU_IO_MAP( scv_io )
MCFG_CPU_CONFIG( scv_cpu_config )
/* Video chip is EPOCH TV-1 */

View File

@ -36,11 +36,8 @@ public:
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(gamepock_cart);
required_device<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
DECLARE_WRITE_LINE_MEMBER(gamepock_to_w);
};
/*----------- defined in machine/gamepock.c -----------*/
int gamepock_io_callback( device_t *device, int ioline, int state );
#endif

View File

@ -212,12 +212,7 @@ UINT32 gamepock_state::screen_update_gamepock(screen_device &screen, bitmap_ind1
}
/* This is called whenever the T0 pin switches state */
int gamepock_io_callback( device_t *device, int ioline, int state )
WRITE_LINE_MEMBER(gamepock_state::gamepock_to_w)
{
gamepock_state *driver_state = device->machine().driver_data<gamepock_state>();
if ( ioline == UPD7810_TO )
{
driver_state->m_speaker->level_w(state & 1);
}
return 0;
m_speaker->level_w(state & 1);
}